Website | Documentation | Issues | Contributing |
This repository is a work in progress to port the Featurevisor JavaScript SDK to Swift.
We are not ready yet. Please come back later.
With SPM, add the package under dependencies
in Package.swift
file:
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "ExampleApp",
dependencies: [
// add the repo with desired semver as a dependency here
.package(url: "[email protected]:featurevisor/featurevisor-swift.git", .exact("X.Y.Z"))
],
.target(
name: "ExampleApp",
dependencies: [
// add the name of module from the dependency in your desired targets
"FeaturevisorSDK"
]
)
)
Building your application will fetch and install everything locally:
$ swift build
@TODO: ...
We wish to reach feature parity with the existing JavaScript SDK: https://featurevisor.com/docs/sdks/
We are breaking down the various parts that we need to migrate to Swift in the sections below:
(Table below requires review to get accurate status)
Section | Task | Status |
---|---|---|
Files | @featurevisor/types ➡️ FeaturevisorTypes |
✅ |
SDK's bucket.ts ➡️ bucket.swift |
✅ | |
SDK's conditions.ts ➡️ conditions.swift |
✅ | |
SDK's datafileReader.ts ➡️ DatafileReader.swift |
✅ | |
SDK's emitter.ts ➡️ Emitter.swift |
✅ | |
SDK's feature.ts ➡️ Emitter.swift |
||
SDK's instance.ts ➡️ Instance.swift |
||
SDK's logger.ts ➡️ Logger.swift |
✅ | |
SDK's segments.ts ➡️ segments.swift |
✅ | |
Constructor options | bucketKeySeparator |
✅ |
configureBucketKey |
✅ | |
configureBucketValue |
✅ | |
datafile |
✅ | |
datafileUrl |
✅ | |
handleDatafileFetch |
✅ | |
initialFeatures |
✅ | |
interceptContext |
✅ | |
logger |
✅ | |
onActivation |
✅ | |
onReady |
✅ | |
onRefresh |
✅ | |
onUpdate |
✅ | |
refreshInternal |
✅ | |
stickyFeatures |
✅ | |
Instance methods | constructor |
✅ |
setDatafile removed to workaround init issues |
✅ | |
setStickyFeatures |
✅ | |
getRevision |
✅ | |
getFeature |
✅ | |
getBucketKey |
✅ | |
getBucketValue |
✅ | |
isReady |
✅ | |
refresh |
✅ | |
startRefreshing |
✅ | |
stopRefreshing |
✅ | |
evaluateFlag |
✅ | |
isEnabled |
✅ | |
evaluateVariation |
✅ | |
getVariation |
✅ | |
activate |
✅ | |
evaluateVariable |
✅ | |
getVariable |
✅ | |
getVariableBoolean |
✅ | |
getVariableString |
✅ | |
getVariableInteger |
✅ | |
getVariableDouble |
✅ | |
getVariableArray |
✅ | |
getVariableObject |
✅ | |
getVariableJSON |
✅ | |
Functions | createInstance missing proper error handling |
|
fetchDatafileContent |
✅ | |
getValueByType |
We should also have an executable as an output of this repository that can be used to run the test specs against the Swift SDK: https://featurevisor.com/docs/testing/
Example command:
$ cd path/to/featurevisor-project-with-yamls
$ featurevisor-swift test