SK-3043 multi package refactoring segregate common flowvault and skyvault packages i os sdk - #325
Conversation
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
✅ Gitleaks Findings: No secrets detected. Safe to proceed! |
|
🔐 Gitleaks Findings: 33 issue(s) detected 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: ...and more. Only showing first 10 findings. |
|
🔐 Gitleaks Findings: 33 issue(s) detected 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: ...and more. Only showing first 10 findings. |
|
🔐 Gitleaks Findings: 33 issue(s) detected 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: ...and more. Only showing first 10 findings. |
|
🔐 Gitleaks Findings: 33 issue(s) detected 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: ...and more. Only showing first 10 findings. |
|
🔐 Gitleaks Findings: 33 issue(s) detected 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: 🔸 Rule: ...and more. Only showing first 10 findings. |
SK-3043: Multi-package refactor — split the iOS SDK into SkyflowCore + two products (legacy Skyflow, FlowVault)
Summary
This PR restructures the mono-repo to ship two SDKs from one codebase:
Skyflowimport SkyflowSkyflowFlowVaultimport SkyflowFlowVaultBoth pods compile a shared
SkyflowCoretarget (68 files: elements UI, container type system, validation rules, networking base, logging, errors) plus a thin per-SDK layer (~30 files each). Core is never published on its own — each podspec globsSkyflowCore/** + <SDK>/**into a single module.Architecture
packageaccess level (-package-name skyflow_ios_sdkin both podspecs) is the seam: all shared machinery is visible to our three targets, invisible to apps. There are zeroopenclasses — nothing in the public surface is subclassable.Clientclass in core; each SDK adds itsconvenience init(Configuration),container(), and contract operations via extensions in its own module. Legacy exposesinsert/detokenize/getById/get(public, v1); FlowVault hasinsert/detokenize(internal for now, v2).Configuration, element inputs/options, operation options) wrappackage-levelBase*structs in core, so either SDK can evolve its API without touching the other.Container<CollectContainer>etc.) stay in core; each SDK attaches its owncollect()/reveal()/create()via constrained extensions — an SDK's operations don't exist in the other SDK's module.APIClientLegacy+ 5 callbacks) and v2 (APIClientFlowVault+ 2 callbacks) are fully separate; core'sAPIClientonly owns the token lifecycle.Consistent folder structure (all three targets)
client/ · networking/ · collect/ · composable/ · reveal/ · models/ · validations/ · utils/ · errors/— models = public data surface, networking = everything owning a URLSession, validations =RequestValidators(pure checks; call sites deliver failures).Internal consolidations (behavior-preserving)
CollectRequestBuilder(collect/insert/update bodies) andRevealRequestBuilder(reveal/detokenize) replace five single-function classes.FlowVaultCollectAPICallback, with the test-injectableURLSessionseam).FlowVaultICOptionsdissolved — only.upsertwas consumed; it's now a plain parameter through the pipeline.RequestValidators(mirrored classes; upsert validation converted from deliver-itselfBoolto returnedErrorCodes?).CI / release
SkyflowFlowVault.podspecadded;internal_release.ymlbumps and pushes both podspecs (both in paths-ignore to prevent loops); workflows updated for the three-targetPackage.swift.Samples
Samples/split per SDK with a README; new FlowVault sample (UpdateDataUsingElements) demonstrates update-by-skyflowId and dual-install via:pathpods.Testing
VAULT_ID,VAULT_URL,TOKEN_ENDPOINT,DETOKENIZE_TEST_TOKEN,TEST_DATA,TEST_SKYFLOW_ID1..3.main-era HEAD):skyflow_iOS_get(ById)UtilTests.testHandleCallbacksSuccess— environment-sensitive, unrelated to this PR.Notes for reviewers
pod 'Skyflow'/import Skyflow/ all signatures intact — verified by compiling app-style code against built products).SkyflowFlowVaultIOS→SkyflowFlowVault(pod name unchanged).Client/Containertypes and may need module-qualified names; single-SDK apps are unaffected.