Skip to content

PatrykPiwowarczyk/featurevisor-swift

 
 

Repository files navigation

Featurevisor

Feature management for developers

Manage your feature flags and experiments declaratively from the comfort of your Git workflow.


featurevisor-swift

This repository is a work in progress to port the Featurevisor JavaScript SDK to Swift.

We are not ready yet. Please come back later.

Installation

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

Usage

@TODO: ...

Development

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:

SDK API

(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

Test runner

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

License

MIT

About

Swift SDK for Featurevisor (in progress)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 99.8%
  • Makefile 0.2%