Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
589bd86
Update SDK function signatures
EmilianoSanchez Jan 17, 2025
3ac2777
Support keyword list as options for the Split supervisor and raise a …
EmilianoSanchez Jan 20, 2025
c1e981e
Add default for socket_path
EmilianoSanchez Jan 20, 2025
3877b5d
Fix fallback for split_names operation
EmilianoSanchez Jan 21, 2025
5c11051
Merge branch 'update_sdk_function_signatures' into support_keyword_li…
EmilianoSanchez Jan 21, 2025
c3866b5
Merge branch 'release_v0.1.0' into update_sdk_function_signatures
EmilianoSanchez Jan 29, 2025
1a79e7b
Add get_treatment_by_flag_set methods
EmilianoSanchez Jan 29, 2025
53e2543
Added CHANGES.txt and LICENSE files
EmilianoSanchez Feb 3, 2025
46df7ed
Add CONTRIBUTORS-GUIDE.md file
EmilianoSanchez Feb 3, 2025
4d48e0f
Update README.md following the format of our public SDK repositories
EmilianoSanchez Feb 4, 2025
23bb090
Merge pull request #24 from splitio/metadata_for_public_repo
EmilianoSanchez Feb 4, 2025
4e00f94
Add Split.split_key type and update the spec of Split track and getTr…
EmilianoSanchez Feb 4, 2025
2f2794f
Rename argument user_key to key
EmilianoSanchez Feb 4, 2025
5a2b9d3
Update changelog entry
EmilianoSanchez Feb 4, 2025
12bb8f5
Update split/1 spec to allow nil return value
EmilianoSanchez Feb 5, 2025
624175b
Remove fallback_enabled option and error tuple from return values
EmilianoSanchez Feb 5, 2025
0acac18
Update changelog entry
EmilianoSanchez Feb 5, 2025
a6741ae
Update changelog entry
EmilianoSanchez Feb 5, 2025
c3dbc24
Merge branch 'remove_fallback_enabled_option' into update_return_types
EmilianoSanchez Feb 5, 2025
168eb62
Update return types of get_treatment and get_treatments functions to …
EmilianoSanchez Feb 5, 2025
2291bf3
Remove treatment_with_config module and associated mapping functions
EmilianoSanchez Feb 5, 2025
9c0d0d2
Update changelog entry
EmilianoSanchez Feb 5, 2025
c74037b
Moved the Split struct into the new Split.SplitView module.
EmilianoSanchez Feb 5, 2025
66b85cb
Fix parse_response
EmilianoSanchez Feb 6, 2025
23d3fe1
Merge branch 'rename_modules' into add_flag_set_methods
EmilianoSanchez Feb 6, 2025
1d53ec7
Fixing tests
EmilianoSanchez Feb 6, 2025
9d70f2d
Update changelog entry
EmilianoSanchez Feb 6, 2025
b5ebd69
Merge branch 'update_key_argument' into misc
EmilianoSanchez Feb 6, 2025
ca99a9e
Update .gitignore and improve CONTRIBUTORS-GUIDE and README links
EmilianoSanchez Feb 6, 2025
a5a25e8
Polish tests
EmilianoSanchez Feb 6, 2025
c00aa72
Merge pull request #25 from splitio/update_key_argument
EmilianoSanchez Feb 6, 2025
84af3e6
Remove Split.Treatment module, added Split.TreatmentWithConfig and up…
EmilianoSanchez Feb 6, 2025
b9e7d39
Merge branch 'development' into remove_fallback_enabled_option
EmilianoSanchez Feb 6, 2025
b950be1
Merge pull request #26 from splitio/remove_fallback_enabled_option
EmilianoSanchez Feb 6, 2025
bbf98a4
Merge branch 'development' into update_sdk_function_signatures
EmilianoSanchez Feb 6, 2025
81bc4f2
Merge branch 'update_sdk_function_signatures' into rename_modules
EmilianoSanchez Feb 6, 2025
adc1f69
Merge branch 'rename_modules' into add_flag_set_methods
EmilianoSanchez Feb 6, 2025
a20692e
Merge branch 'add_flag_set_methods' into update_impression
EmilianoSanchez Feb 6, 2025
4434391
Update changelog entry
EmilianoSanchez Feb 6, 2025
d0ff953
Merge pull request #18 from splitio/update_sdk_function_signatures
EmilianoSanchez Feb 6, 2025
b659d27
Merge pull request #27 from splitio/rename_modules
EmilianoSanchez Feb 6, 2025
efddbf7
Merge pull request #23 from splitio/add_flag_set_methods
EmilianoSanchez Feb 7, 2025
855ffbb
Merge branch 'development' into update_impression
EmilianoSanchez Feb 7, 2025
215cc35
Polishing
EmilianoSanchez Feb 7, 2025
744c289
mix format
EmilianoSanchez Feb 7, 2025
a340bfa
Update CI
EmilianoSanchez Feb 7, 2025
8ca4d64
rc
EmilianoSanchez Feb 7, 2025
00f26f6
Merge branch 'update_impression' into misc
EmilianoSanchez Feb 7, 2025
44738a1
Fix split_key type
EmilianoSanchez Feb 7, 2025
a24de6a
Fix CI
EmilianoSanchez Feb 7, 2025
a5b73f0
Refactor code snippet formatting (Example https://github.com/elixir-l…
EmilianoSanchez Feb 10, 2025
c172ca0
Enhance documentation for Split SDK modules and functions
EmilianoSanchez Feb 11, 2025
2287c1a
Update and test Elixir version compatibility
EmilianoSanchez Feb 11, 2025
2943111
Fix tests for Elixit v1.18
EmilianoSanchez Feb 11, 2025
ecc68d8
Update README
EmilianoSanchez Feb 12, 2025
e2165ce
Specialize map type for attributes and properties
EmilianoSanchez Feb 13, 2025
0193d1a
Doc comments fixes
EmilianoSanchez Feb 13, 2025
0d9ee59
Merge pull request #28 from splitio/update_impression
EmilianoSanchez Feb 14, 2025
ba14958
stable version
EmilianoSanchez Feb 14, 2025
d412418
Merge branch 'development' into misc
EmilianoSanchez Feb 14, 2025
990b044
Merge pull request #29 from splitio/misc
EmilianoSanchez Feb 14, 2025
c3ad66d
Merge branch 'development' into support_keyword_list_on_start
EmilianoSanchez Feb 14, 2025
e236483
refactor: simplify start_link function by removing map clause
EmilianoSanchez Feb 14, 2025
facd45e
Update CHANGELOG entry
EmilianoSanchez Feb 14, 2025
02ad93c
Update start_link function
EmilianoSanchez Feb 14, 2025
e59bed4
Fix optional arguments in method specs
EmilianoSanchez Feb 14, 2025
f451ffd
rc
EmilianoSanchez Feb 14, 2025
09a1456
stable version
EmilianoSanchez Feb 14, 2025
853bae4
Merge pull request #20 from splitio/support_keyword_list_on_start
EmilianoSanchez Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Elixir thin client SDK

## What did you accomplish?

## How do we test the changes introduced in this PR?

## Extra Notes
11 changes: 6 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@ on: push
jobs:
test:
runs-on: ubuntu-20.04
name: OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
name: OTP ${{matrix.versions.otp}} / Elixir ${{matrix.versions.elixir}}
strategy:
matrix:
otp: ['26.2.5']
elixir: ['1.17.0']
# Minimum and maximum supported versions
versions: [{ elixir: '1.14.0', otp: '25' }, { elixir: '1.18.0', otp: '26.2.5' }]
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
elixir-version: ${{matrix.elixir}}
otp-version: ${{matrix.versions.otp}}
elixir-version: ${{matrix.versions.elixir}}
- run: mix deps.unlock --all # compiles and runs tests against latest versions of dependencies
- run: mix deps.get
- run: mix test
- run: mix dialyzer --format github
45 changes: 45 additions & 0 deletions .github/workflows/update-license-year.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Update License Year

on:
schedule:
- cron: "0 3 1 1 *" # 03:00 AM on January 1

permissions:
contents: write
pull-requests: write

jobs:
test:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set Current year
run: "echo CURRENT=$(date +%Y) >> $GITHUB_ENV"

- name: Set Previous Year
run: "echo PREVIOUS=$(($CURRENT-1)) >> $GITHUB_ENV"

- name: Update LICENSE
uses: jacobtomlinson/gha-find-replace@v3
with:
find: ${{ env.PREVIOUS }}
replace: ${{ env.CURRENT }}
include: "LICENSE"
regex: false

- name: Commit files
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git commit -m "Updated License Year" -a

- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
title: Update License Year
branch: update-license
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ split_thin_elixir-*.tar
splitd
# Ignore the splitd configuration file
support/splitd.yaml

# IDE files
/.vscode/
17 changes: 17 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
0.2.0 (February 14, 2025):
- Added new variations of the get treatment functions to support evaluating flags in given flag set/s: `Split.get_treatments_by_flag_set/3`, `Split.get_treatments_by_flag_sets/3`, `Split.get_treatments_with_config_by_flag_set/3`, and `Split.get_treatments_with_config_by_flag_sets/3`.
- Updated the `:socket_path` option for `Split.Supervisor.start_link/1` to be optional, defaulting to `"/var/run/splitd.sock"`.
- BREAKING CHANGES:
- Removed the `fallback_enabled` option from `Split.Supervisor.start_link/1`. Fallback behavior is now always enabled, so `Split` functions no longer return `{:error, _}` tuples but instead use the fallback value when an error occurs.
- Renamed the `Split.Treatment` struct to `Split.TreatmentWithConfig` and removed the `label`, `change_number`, and `timestamp` fields.
- Moved the `Split` struct to the new `Split.SplitView` module and updated some fields: renamed `configurations` to `configs`, `flag_sets` to `sets`, and added the `impressions_disabled` field.
- Updated the return types of `Split.get_treatment/3` and `Split.get_treatments/3` to return a treatment string and a map of treatment strings, respectively.
- Updated all `get_treatment` function signatures: removed the third argument (`bucketing_key`) and expanded the first argument (`key`) to accept a union, allowing either a string or a map with a key and optional bucketing key (`%{required(:matchingKey) => String.t(), optional(:bucketingKey) => String.t() | nil}`).

0.1.0 (January 27, 2025):
- BREAKING CHANGES:
- Renamed `Split.Socket.Supervisor` module to `Split.Supervisor`, and updated the project structure to use a Context which is more in line to how Elixir libraries are structured (By @codeadict in https://github.com/splitio/elixir-thin-client/pull/17).
- Refactored the options passed to the Split.Supervisor.start_link function to use Keywords instead of Maps to be more in line with other Elixir libraries and common practices (By @codeadict in https://github.com/splitio/elixir-thin-client/pull/17).

0.0.0 (January 21, 2025):
- Initial public release.
23 changes: 23 additions & 0 deletions CONTRIBUTORS-GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Contributing to the Split Elixir thin client SDK

Split SDK is an open source project and we welcome feedback and contribution. The information below describes how to build the project with your changes, run the tests, and send the Pull Request(PR).

## Development process

1. Fork the repository and create a topic branch from `development` branch. Please use a descriptive name for your branch.
2. Run `mix deps.get` to have the dependencies up to date.
3. While developing, use descriptive messages in your commits. Avoid short or meaningless sentences like: "fix bug".
4. Make sure to add tests for both positive and negative cases.
5. If your changes have any impact on the public API, make sure you update the type specification and documentation attributes (`@spec`, `@doc`, `@moduledoc`), as well as it's related test file.
6. Run the code formatter (`mix format`) and verify that all files are properly formatted.
7. Run the build script (`mix compile`) and the static type analysis (`mix dialyzer`) and make sure it runs with no errors.
8. Run tests (`mix test`) and make sure there are no failures.
9. `git push` your changes to GitHub within your topic branch.
10. Open a Pull Request(PR) from your forked repo and into the `development` branch of the original repository.
11. When creating your PR, please fill out all the fields of the PR template, as applicable, for the project.
12. Check for conflicts once the pull request is created to make sure your PR can be merged cleanly into `development`.
13. Keep an eye out for any feedback or comments from Split's SDK team.

# Contact

If you have any other questions or need to contact us directly in a private manner send us a note at sdks@split.io
208 changes: 10 additions & 198 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,201 +1,13 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Copyright © 2025 Split Software, Inc.

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

1. Definitions.
http://www.apache.org/licenses/LICENSE-2.0

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading
Loading