@opendatalabs/personal-server-ts-core 0.0.1-canary.00328bf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.ts +408 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +1257 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/raw-envelope.d.ts +3 -0
- package/dist/api/raw-envelope.d.ts.map +1 -0
- package/dist/api/raw-envelope.js +215 -0
- package/dist/api/raw-envelope.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/request.d.ts +28 -0
- package/dist/auth/request.d.ts.map +1 -0
- package/dist/auth/request.js +106 -0
- package/dist/auth/request.js.map +1 -0
- package/dist/client.d.ts +233 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +243 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +12 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/contracts/access-logs.d.ts +8 -0
- package/dist/contracts/access-logs.d.ts.map +1 -0
- package/dist/contracts/access-logs.js +7 -0
- package/dist/contracts/access-logs.js.map +1 -0
- package/dist/contracts/auth-device.d.ts +70 -0
- package/dist/contracts/auth-device.d.ts.map +1 -0
- package/dist/contracts/auth-device.js +163 -0
- package/dist/contracts/auth-device.js.map +1 -0
- package/dist/contracts/binary.d.ts +66 -0
- package/dist/contracts/binary.d.ts.map +1 -0
- package/dist/contracts/binary.js +123 -0
- package/dist/contracts/binary.js.map +1 -0
- package/dist/contracts/config.d.ts +5 -0
- package/dist/contracts/config.d.ts.map +1 -0
- package/dist/contracts/config.js +30 -0
- package/dist/contracts/config.js.map +1 -0
- package/dist/contracts/data.d.ts +165 -0
- package/dist/contracts/data.d.ts.map +1 -0
- package/dist/contracts/data.js +371 -0
- package/dist/contracts/data.js.map +1 -0
- package/dist/contracts/grants.d.ts +45 -0
- package/dist/contracts/grants.d.ts.map +1 -0
- package/dist/contracts/grants.js +177 -0
- package/dist/contracts/grants.js.map +1 -0
- package/dist/contracts/http.d.ts +21 -0
- package/dist/contracts/http.d.ts.map +1 -0
- package/dist/contracts/http.js +49 -0
- package/dist/contracts/http.js.map +1 -0
- package/dist/contracts/index.d.ts +16 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +10 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/oauth.d.ts +38 -0
- package/dist/contracts/oauth.d.ts.map +1 -0
- package/dist/contracts/oauth.js +130 -0
- package/dist/contracts/oauth.js.map +1 -0
- package/dist/contracts/sync.d.ts +10 -0
- package/dist/contracts/sync.d.ts.map +1 -0
- package/dist/contracts/sync.js +35 -0
- package/dist/contracts/sync.js.map +1 -0
- package/dist/derivatives/answer-shape.d.ts +83 -0
- package/dist/derivatives/answer-shape.d.ts.map +1 -0
- package/dist/derivatives/answer-shape.js +320 -0
- package/dist/derivatives/answer-shape.js.map +1 -0
- package/dist/derivatives/api.d.ts +48 -0
- package/dist/derivatives/api.d.ts.map +1 -0
- package/dist/derivatives/api.js +374 -0
- package/dist/derivatives/api.js.map +1 -0
- package/dist/derivatives/compute.d.ts +112 -0
- package/dist/derivatives/compute.d.ts.map +1 -0
- package/dist/derivatives/compute.js +476 -0
- package/dist/derivatives/compute.js.map +1 -0
- package/dist/derivatives/e2ee/aad.d.ts +22 -0
- package/dist/derivatives/e2ee/aad.d.ts.map +1 -0
- package/dist/derivatives/e2ee/aad.js +32 -0
- package/dist/derivatives/e2ee/aad.js.map +1 -0
- package/dist/derivatives/e2ee/attestation.d.ts +134 -0
- package/dist/derivatives/e2ee/attestation.d.ts.map +1 -0
- package/dist/derivatives/e2ee/attestation.js +248 -0
- package/dist/derivatives/e2ee/attestation.js.map +1 -0
- package/dist/derivatives/e2ee/index.d.ts +6 -0
- package/dist/derivatives/e2ee/index.d.ts.map +1 -0
- package/dist/derivatives/e2ee/index.js +6 -0
- package/dist/derivatives/e2ee/index.js.map +1 -0
- package/dist/derivatives/e2ee/jcs.d.ts +17 -0
- package/dist/derivatives/e2ee/jcs.d.ts.map +1 -0
- package/dist/derivatives/e2ee/jcs.js +55 -0
- package/dist/derivatives/e2ee/jcs.js.map +1 -0
- package/dist/derivatives/e2ee/phala.d.ts +62 -0
- package/dist/derivatives/e2ee/phala.d.ts.map +1 -0
- package/dist/derivatives/e2ee/phala.js +168 -0
- package/dist/derivatives/e2ee/phala.js.map +1 -0
- package/dist/derivatives/e2ee/suite.d.ts +56 -0
- package/dist/derivatives/e2ee/suite.d.ts.map +1 -0
- package/dist/derivatives/e2ee/suite.js +164 -0
- package/dist/derivatives/e2ee/suite.js.map +1 -0
- package/dist/derivatives/index.d.ts +11 -0
- package/dist/derivatives/index.d.ts.map +1 -0
- package/dist/derivatives/index.js +11 -0
- package/dist/derivatives/index.js.map +1 -0
- package/dist/derivatives/inference.d.ts +151 -0
- package/dist/derivatives/inference.d.ts.map +1 -0
- package/dist/derivatives/inference.js +262 -0
- package/dist/derivatives/inference.js.map +1 -0
- package/dist/derivatives/prompt.d.ts +99 -0
- package/dist/derivatives/prompt.d.ts.map +1 -0
- package/dist/derivatives/prompt.js +281 -0
- package/dist/derivatives/prompt.js.map +1 -0
- package/dist/derivatives/registration.d.ts +56 -0
- package/dist/derivatives/registration.d.ts.map +1 -0
- package/dist/derivatives/registration.js +187 -0
- package/dist/derivatives/registration.js.map +1 -0
- package/dist/derivatives/scheduler.d.ts +114 -0
- package/dist/derivatives/scheduler.d.ts.map +1 -0
- package/dist/derivatives/scheduler.js +331 -0
- package/dist/derivatives/scheduler.js.map +1 -0
- package/dist/derivatives/store.d.ts +14 -0
- package/dist/derivatives/store.d.ts.map +1 -0
- package/dist/derivatives/store.js +79 -0
- package/dist/derivatives/store.js.map +1 -0
- package/dist/derivatives/types.d.ts +102 -0
- package/dist/derivatives/types.d.ts.map +1 -0
- package/dist/derivatives/types.js +29 -0
- package/dist/derivatives/types.js.map +1 -0
- package/dist/errors/catalog.d.ts +125 -0
- package/dist/errors/catalog.d.ts.map +1 -0
- package/dist/errors/catalog.js +198 -0
- package/dist/errors/catalog.js.map +1 -0
- package/dist/errors/pdpp-catalog.d.ts +36 -0
- package/dist/errors/pdpp-catalog.d.ts.map +1 -0
- package/dist/errors/pdpp-catalog.js +82 -0
- package/dist/errors/pdpp-catalog.js.map +1 -0
- package/dist/grants/index.d.ts +5 -0
- package/dist/grants/index.d.ts.map +1 -0
- package/dist/grants/index.js +6 -0
- package/dist/grants/index.js.map +1 -0
- package/dist/grants/pdpp-binding-store.d.ts +58 -0
- package/dist/grants/pdpp-binding-store.d.ts.map +1 -0
- package/dist/grants/pdpp-binding-store.js +97 -0
- package/dist/grants/pdpp-binding-store.js.map +1 -0
- package/dist/grants/pdpp-binding.d.ts +179 -0
- package/dist/grants/pdpp-binding.d.ts.map +1 -0
- package/dist/grants/pdpp-binding.js +214 -0
- package/dist/grants/pdpp-binding.js.map +1 -0
- package/dist/keys/index.d.ts +3 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +2 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/keys/public-only-account.d.ts +8 -0
- package/dist/keys/public-only-account.d.ts.map +1 -0
- package/dist/keys/public-only-account.js +21 -0
- package/dist/keys/public-only-account.js.map +1 -0
- package/dist/keys/server-account.d.ts +24 -0
- package/dist/keys/server-account.d.ts.map +1 -0
- package/dist/keys/server-account.js +2 -0
- package/dist/keys/server-account.js.map +1 -0
- package/dist/lineage/attestation.d.ts +42 -0
- package/dist/lineage/attestation.d.ts.map +1 -0
- package/dist/lineage/attestation.js +25 -0
- package/dist/lineage/attestation.js.map +1 -0
- package/dist/lineage/gateway.d.ts +105 -0
- package/dist/lineage/gateway.d.ts.map +1 -0
- package/dist/lineage/gateway.js +242 -0
- package/dist/lineage/gateway.js.map +1 -0
- package/dist/lineage/index.d.ts +5 -0
- package/dist/lineage/index.d.ts.map +1 -0
- package/dist/lineage/index.js +5 -0
- package/dist/lineage/index.js.map +1 -0
- package/dist/lineage/lineage.d.ts +141 -0
- package/dist/lineage/lineage.d.ts.map +1 -0
- package/dist/lineage/lineage.js +255 -0
- package/dist/lineage/lineage.js.map +1 -0
- package/dist/logger/index.d.ts +9 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +5 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logging/access-log.d.ts +23 -0
- package/dist/logging/access-log.d.ts.map +1 -0
- package/dist/logging/access-log.js +2 -0
- package/dist/logging/access-log.js.map +1 -0
- package/dist/logging/access-reader.d.ts +14 -0
- package/dist/logging/access-reader.d.ts.map +1 -0
- package/dist/logging/access-reader.js +2 -0
- package/dist/logging/access-reader.js.map +1 -0
- package/dist/mcp/activity.d.ts +68 -0
- package/dist/mcp/activity.d.ts.map +1 -0
- package/dist/mcp/activity.js +111 -0
- package/dist/mcp/activity.js.map +1 -0
- package/dist/mcp/builder-registration.d.ts +24 -0
- package/dist/mcp/builder-registration.d.ts.map +1 -0
- package/dist/mcp/builder-registration.js +89 -0
- package/dist/mcp/builder-registration.js.map +1 -0
- package/dist/mcp/connection-api.d.ts +201 -0
- package/dist/mcp/connection-api.d.ts.map +1 -0
- package/dist/mcp/connection-api.js +506 -0
- package/dist/mcp/connection-api.js.map +1 -0
- package/dist/mcp/grantee.d.ts +52 -0
- package/dist/mcp/grantee.d.ts.map +1 -0
- package/dist/mcp/grantee.js +91 -0
- package/dist/mcp/grantee.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +12 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/read-client.d.ts +176 -0
- package/dist/mcp/read-client.d.ts.map +1 -0
- package/dist/mcp/read-client.js +579 -0
- package/dist/mcp/read-client.js.map +1 -0
- package/dist/mcp/resources.d.ts +37 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +114 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/search/index.d.ts +34 -0
- package/dist/mcp/search/index.d.ts.map +1 -0
- package/dist/mcp/search/index.js +156 -0
- package/dist/mcp/search/index.js.map +1 -0
- package/dist/mcp/server.d.ts +72 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +447 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +160 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +243 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/store.d.ts +13 -0
- package/dist/mcp/store.d.ts.map +1 -0
- package/dist/mcp/store.js +119 -0
- package/dist/mcp/store.js.map +1 -0
- package/dist/mcp/token-expiry.d.ts +38 -0
- package/dist/mcp/token-expiry.d.ts.map +1 -0
- package/dist/mcp/token-expiry.js +55 -0
- package/dist/mcp/token-expiry.js.map +1 -0
- package/dist/mcp/tools.d.ts +95 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1381 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +135 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +24 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/payment/index.d.ts +2 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/index.js +2 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/payment/x402.d.ts +155 -0
- package/dist/payment/x402.d.ts.map +1 -0
- package/dist/payment/x402.js +402 -0
- package/dist/payment/x402.js.map +1 -0
- package/dist/pdpp/approval.d.ts +182 -0
- package/dist/pdpp/approval.d.ts.map +1 -0
- package/dist/pdpp/approval.js +337 -0
- package/dist/pdpp/approval.js.map +1 -0
- package/dist/pdpp/client-identity.d.ts +88 -0
- package/dist/pdpp/client-identity.d.ts.map +1 -0
- package/dist/pdpp/client-identity.js +183 -0
- package/dist/pdpp/client-identity.js.map +1 -0
- package/dist/pdpp/client-metadata.d.ts +95 -0
- package/dist/pdpp/client-metadata.d.ts.map +1 -0
- package/dist/pdpp/client-metadata.js +96 -0
- package/dist/pdpp/client-metadata.js.map +1 -0
- package/dist/pdpp/declaration.d.ts +118 -0
- package/dist/pdpp/declaration.d.ts.map +1 -0
- package/dist/pdpp/declaration.js +549 -0
- package/dist/pdpp/declaration.js.map +1 -0
- package/dist/pdpp/index.d.ts +35 -0
- package/dist/pdpp/index.d.ts.map +1 -0
- package/dist/pdpp/index.js +22 -0
- package/dist/pdpp/index.js.map +1 -0
- package/dist/pdpp/issuance.d.ts +91 -0
- package/dist/pdpp/issuance.d.ts.map +1 -0
- package/dist/pdpp/issuance.js +124 -0
- package/dist/pdpp/issuance.js.map +1 -0
- package/dist/pdpp/pkce.d.ts +53 -0
- package/dist/pdpp/pkce.d.ts.map +1 -0
- package/dist/pdpp/pkce.js +109 -0
- package/dist/pdpp/pkce.js.map +1 -0
- package/dist/pdpp/redirect.d.ts +60 -0
- package/dist/pdpp/redirect.d.ts.map +1 -0
- package/dist/pdpp/redirect.js +125 -0
- package/dist/pdpp/redirect.js.map +1 -0
- package/dist/pdpp/resolve.d.ts +53 -0
- package/dist/pdpp/resolve.d.ts.map +1 -0
- package/dist/pdpp/resolve.js +218 -0
- package/dist/pdpp/resolve.js.map +1 -0
- package/dist/pdpp/review.d.ts +155 -0
- package/dist/pdpp/review.d.ts.map +1 -0
- package/dist/pdpp/review.js +142 -0
- package/dist/pdpp/review.js.map +1 -0
- package/dist/pdpp/selection.d.ts +43 -0
- package/dist/pdpp/selection.d.ts.map +1 -0
- package/dist/pdpp/selection.js +211 -0
- package/dist/pdpp/selection.js.map +1 -0
- package/dist/pdpp/store.d.ts +204 -0
- package/dist/pdpp/store.d.ts.map +1 -0
- package/dist/pdpp/store.js +501 -0
- package/dist/pdpp/store.js.map +1 -0
- package/dist/pdpp/tokens.d.ts +149 -0
- package/dist/pdpp/tokens.d.ts.map +1 -0
- package/dist/pdpp/tokens.js +387 -0
- package/dist/pdpp/tokens.js.map +1 -0
- package/dist/pdpp/types.d.ts +258 -0
- package/dist/pdpp/types.d.ts.map +1 -0
- package/dist/pdpp/types.js +40 -0
- package/dist/pdpp/types.js.map +1 -0
- package/dist/pdpp-version.d.ts +28 -0
- package/dist/pdpp-version.d.ts.map +1 -0
- package/dist/pdpp-version.js +28 -0
- package/dist/pdpp-version.js.map +1 -0
- package/dist/policy/data-read.d.ts +56 -0
- package/dist/policy/data-read.d.ts.map +1 -0
- package/dist/policy/data-read.js +176 -0
- package/dist/policy/data-read.js.map +1 -0
- package/dist/policy/data-write.d.ts +69 -0
- package/dist/policy/data-write.d.ts.map +1 -0
- package/dist/policy/data-write.js +131 -0
- package/dist/policy/data-write.js.map +1 -0
- package/dist/policy/index.d.ts +4 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +4 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/signed-artifacts.d.ts +17 -0
- package/dist/policy/signed-artifacts.d.ts.map +1 -0
- package/dist/policy/signed-artifacts.js +110 -0
- package/dist/policy/signed-artifacts.js.map +1 -0
- package/dist/ports/index.d.ts +243 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +7 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/pdpp-auth.d.ts +103 -0
- package/dist/ports/pdpp-auth.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.js +37 -0
- package/dist/ports/pdpp-auth.js.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts +9 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.js +18 -0
- package/dist/ports/pdpp-auth.test-utils.js.map +1 -0
- package/dist/schemas/server-config.d.ts +190 -0
- package/dist/schemas/server-config.d.ts.map +1 -0
- package/dist/schemas/server-config.js +282 -0
- package/dist/schemas/server-config.js.map +1 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/index.js.map +1 -0
- package/dist/signing/request-signer.d.ts +20 -0
- package/dist/signing/request-signer.d.ts.map +1 -0
- package/dist/signing/request-signer.js +23 -0
- package/dist/signing/request-signer.js.map +1 -0
- package/dist/signing/signer.d.ts +40 -0
- package/dist/signing/signer.d.ts.map +1 -0
- package/dist/signing/signer.js +56 -0
- package/dist/signing/signer.js.map +1 -0
- package/dist/storage/adapters/index.d.ts +4 -0
- package/dist/storage/adapters/index.d.ts.map +1 -0
- package/dist/storage/adapters/index.js +3 -0
- package/dist/storage/adapters/index.js.map +1 -0
- package/dist/storage/adapters/interface.d.ts +57 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -0
- package/dist/storage/adapters/interface.js +2 -0
- package/dist/storage/adapters/interface.js.map +1 -0
- package/dist/storage/adapters/sdk.d.ts +23 -0
- package/dist/storage/adapters/sdk.d.ts.map +1 -0
- package/dist/storage/adapters/sdk.js +73 -0
- package/dist/storage/adapters/sdk.js.map +1 -0
- package/dist/storage/adapters/vana.d.ts +12 -0
- package/dist/storage/adapters/vana.d.ts.map +1 -0
- package/dist/storage/adapters/vana.js +111 -0
- package/dist/storage/adapters/vana.js.map +1 -0
- package/dist/storage/blocks/build.d.ts +20 -0
- package/dist/storage/blocks/build.d.ts.map +1 -0
- package/dist/storage/blocks/build.js +378 -0
- package/dist/storage/blocks/build.js.map +1 -0
- package/dist/storage/blocks/cursor.d.ts +33 -0
- package/dist/storage/blocks/cursor.d.ts.map +1 -0
- package/dist/storage/blocks/cursor.js +142 -0
- package/dist/storage/blocks/cursor.js.map +1 -0
- package/dist/storage/blocks/errors.d.ts +6 -0
- package/dist/storage/blocks/errors.d.ts.map +1 -0
- package/dist/storage/blocks/errors.js +9 -0
- package/dist/storage/blocks/errors.js.map +1 -0
- package/dist/storage/blocks/index.d.ts +6 -0
- package/dist/storage/blocks/index.d.ts.map +1 -0
- package/dist/storage/blocks/index.js +5 -0
- package/dist/storage/blocks/index.js.map +1 -0
- package/dist/storage/blocks/select.d.ts +29 -0
- package/dist/storage/blocks/select.d.ts.map +1 -0
- package/dist/storage/blocks/select.js +120 -0
- package/dist/storage/blocks/select.js.map +1 -0
- package/dist/storage/blocks/types.d.ts +56 -0
- package/dist/storage/blocks/types.d.ts.map +1 -0
- package/dist/storage/blocks/types.js +2 -0
- package/dist/storage/blocks/types.js.map +1 -0
- package/dist/storage/hierarchy/index.d.ts +3 -0
- package/dist/storage/hierarchy/index.d.ts.map +1 -0
- package/dist/storage/hierarchy/index.js +2 -0
- package/dist/storage/hierarchy/index.js.map +1 -0
- package/dist/storage/hierarchy/manager.d.ts +9 -0
- package/dist/storage/hierarchy/manager.d.ts.map +1 -0
- package/dist/storage/hierarchy/manager.js +2 -0
- package/dist/storage/hierarchy/manager.js.map +1 -0
- package/dist/storage/hierarchy/paths.d.ts +11 -0
- package/dist/storage/hierarchy/paths.d.ts.map +1 -0
- package/dist/storage/hierarchy/paths.js +43 -0
- package/dist/storage/hierarchy/paths.js.map +1 -0
- package/dist/storage/index/index.d.ts +3 -0
- package/dist/storage/index/index.d.ts.map +1 -0
- package/dist/storage/index/index.js +2 -0
- package/dist/storage/index/index.js.map +1 -0
- package/dist/storage/index/manager.d.ts +63 -0
- package/dist/storage/index/manager.d.ts.map +1 -0
- package/dist/storage/index/manager.js +2 -0
- package/dist/storage/index/manager.js.map +1 -0
- package/dist/storage/index/schema.d.ts +2 -0
- package/dist/storage/index/schema.d.ts.map +1 -0
- package/dist/storage/index/schema.js +2 -0
- package/dist/storage/index/schema.js.map +1 -0
- package/dist/storage/index/types.d.ts +37 -0
- package/dist/storage/index/types.d.ts.map +1 -0
- package/dist/storage/index/types.js +2 -0
- package/dist/storage/index/types.js.map +1 -0
- package/dist/storage/pdpp-records/cursor.d.ts +27 -0
- package/dist/storage/pdpp-records/cursor.d.ts.map +1 -0
- package/dist/storage/pdpp-records/cursor.js +49 -0
- package/dist/storage/pdpp-records/cursor.js.map +1 -0
- package/dist/storage/pdpp-records/enforcement.d.ts +37 -0
- package/dist/storage/pdpp-records/enforcement.d.ts.map +1 -0
- package/dist/storage/pdpp-records/enforcement.js +79 -0
- package/dist/storage/pdpp-records/enforcement.js.map +1 -0
- package/dist/storage/pdpp-records/index.d.ts +8 -0
- package/dist/storage/pdpp-records/index.d.ts.map +1 -0
- package/dist/storage/pdpp-records/index.js +8 -0
- package/dist/storage/pdpp-records/index.js.map +1 -0
- package/dist/storage/pdpp-records/interface.d.ts +49 -0
- package/dist/storage/pdpp-records/interface.d.ts.map +1 -0
- package/dist/storage/pdpp-records/interface.js +2 -0
- package/dist/storage/pdpp-records/interface.js.map +1 -0
- package/dist/storage/pdpp-records/memory-store.d.ts +9 -0
- package/dist/storage/pdpp-records/memory-store.d.ts.map +1 -0
- package/dist/storage/pdpp-records/memory-store.js +0 -0
- package/dist/storage/pdpp-records/memory-store.js.map +1 -0
- package/dist/storage/pdpp-records/record-key.d.ts +52 -0
- package/dist/storage/pdpp-records/record-key.d.ts.map +1 -0
- package/dist/storage/pdpp-records/record-key.js +97 -0
- package/dist/storage/pdpp-records/record-key.js.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts +43 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.js +17 -0
- package/dist/storage/pdpp-records/stream-declaration.js.map +1 -0
- package/dist/storage/pdpp-records/types.d.ts +93 -0
- package/dist/storage/pdpp-records/types.d.ts.map +1 -0
- package/dist/storage/pdpp-records/types.js +17 -0
- package/dist/storage/pdpp-records/types.js.map +1 -0
- package/dist/storage/preview.d.ts +12 -0
- package/dist/storage/preview.d.ts.map +1 -0
- package/dist/storage/preview.js +239 -0
- package/dist/storage/preview.js.map +1 -0
- package/dist/sync/cursor.d.ts +10 -0
- package/dist/sync/cursor.d.ts.map +1 -0
- package/dist/sync/cursor.js +2 -0
- package/dist/sync/cursor.js.map +1 -0
- package/dist/sync/data-point-feed.d.ts +35 -0
- package/dist/sync/data-point-feed.d.ts.map +1 -0
- package/dist/sync/data-point-feed.js +122 -0
- package/dist/sync/data-point-feed.js.map +1 -0
- package/dist/sync/data-point-id.d.ts +7 -0
- package/dist/sync/data-point-id.d.ts.map +1 -0
- package/dist/sync/data-point-id.js +16 -0
- package/dist/sync/data-point-id.js.map +1 -0
- package/dist/sync/delete-data-port.d.ts +50 -0
- package/dist/sync/delete-data-port.d.ts.map +1 -0
- package/dist/sync/delete-data-port.js +244 -0
- package/dist/sync/delete-data-port.js.map +1 -0
- package/dist/sync/engine/sync-manager.d.ts +58 -0
- package/dist/sync/engine/sync-manager.d.ts.map +1 -0
- package/dist/sync/engine/sync-manager.js +285 -0
- package/dist/sync/engine/sync-manager.js.map +1 -0
- package/dist/sync/index.d.ts +15 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +14 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/issues.d.ts +55 -0
- package/dist/sync/issues.d.ts.map +1 -0
- package/dist/sync/issues.js +168 -0
- package/dist/sync/issues.js.map +1 -0
- package/dist/sync/pdpp-import.d.ts +192 -0
- package/dist/sync/pdpp-import.d.ts.map +1 -0
- package/dist/sync/pdpp-import.js +422 -0
- package/dist/sync/pdpp-import.js.map +1 -0
- package/dist/sync/pending-blob-deletions.d.ts +29 -0
- package/dist/sync/pending-blob-deletions.d.ts.map +1 -0
- package/dist/sync/pending-blob-deletions.js +116 -0
- package/dist/sync/pending-blob-deletions.js.map +1 -0
- package/dist/sync/retry-memory.d.ts +33 -0
- package/dist/sync/retry-memory.d.ts.map +1 -0
- package/dist/sync/retry-memory.js +68 -0
- package/dist/sync/retry-memory.js.map +1 -0
- package/dist/sync/scope-deletions.d.ts +155 -0
- package/dist/sync/scope-deletions.d.ts.map +1 -0
- package/dist/sync/scope-deletions.js +225 -0
- package/dist/sync/scope-deletions.js.map +1 -0
- package/dist/sync/tombstone.d.ts +27 -0
- package/dist/sync/tombstone.d.ts.map +1 -0
- package/dist/sync/tombstone.js +28 -0
- package/dist/sync/tombstone.js.map +1 -0
- package/dist/sync/types.d.ts +27 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +2 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/sync/workers/delete.d.ts +163 -0
- package/dist/sync/workers/delete.d.ts.map +1 -0
- package/dist/sync/workers/delete.js +474 -0
- package/dist/sync/workers/delete.js.map +1 -0
- package/dist/sync/workers/download.d.ts +159 -0
- package/dist/sync/workers/download.d.ts.map +1 -0
- package/dist/sync/workers/download.js +731 -0
- package/dist/sync/workers/download.js.map +1 -0
- package/dist/sync/workers/upload.d.ts +98 -0
- package/dist/sync/workers/upload.d.ts.map +1 -0
- package/dist/sync/workers/upload.js +412 -0
- package/dist/sync/workers/upload.js.map +1 -0
- package/dist/test-utils/e2ee-fixtures.d.ts +94 -0
- package/dist/test-utils/e2ee-fixtures.d.ts.map +1 -0
- package/dist/test-utils/e2ee-fixtures.js +116 -0
- package/dist/test-utils/e2ee-fixtures.js.map +1 -0
- package/dist/test-utils/e2ee-gateway.d.ts +61 -0
- package/dist/test-utils/e2ee-gateway.d.ts.map +1 -0
- package/dist/test-utils/e2ee-gateway.js +248 -0
- package/dist/test-utils/e2ee-gateway.js.map +1 -0
- package/dist/test-utils/index.d.ts +5 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +5 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/memory-storage.d.ts +12 -0
- package/dist/test-utils/memory-storage.d.ts.map +1 -0
- package/dist/test-utils/memory-storage.js +146 -0
- package/dist/test-utils/memory-storage.js.map +1 -0
- package/dist/test-utils/wallet.d.ts +47 -0
- package/dist/test-utils/wallet.d.ts.map +1 -0
- package/dist/test-utils/wallet.js +98 -0
- package/dist/test-utils/wallet.js.map +1 -0
- package/dist/write/attribution.d.ts +185 -0
- package/dist/write/attribution.d.ts.map +1 -0
- package/dist/write/attribution.js +450 -0
- package/dist/write/attribution.js.map +1 -0
- package/dist/write/authorize.d.ts +77 -0
- package/dist/write/authorize.d.ts.map +1 -0
- package/dist/write/authorize.js +109 -0
- package/dist/write/authorize.js.map +1 -0
- package/dist/write/index.d.ts +5 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +5 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/route.d.ts +61 -0
- package/dist/write/route.d.ts.map +1 -0
- package/dist/write/route.js +132 -0
- package/dist/write/route.js.map +1 -0
- package/dist/write/session.d.ts +96 -0
- package/dist/write/session.d.ts.map +1 -0
- package/dist/write/session.js +136 -0
- package/dist/write/session.js.map +1 -0
- package/package.json +175 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { buildWeb3SignedHeader } from "@opendatalabs/vana-sdk/browser";
|
|
2
|
+
import { computeDataPointId } from "./data-point-id.js";
|
|
3
|
+
import { parseGatewayNextVersion } from "./workers/upload.js";
|
|
4
|
+
import { TOMBSTONE_DATA_HASH, TOMBSTONE_METADATA_HASH } from "./tombstone.js";
|
|
5
|
+
/**
|
|
6
|
+
* Remote deletion against the DPv2 gateway + vana-storage.
|
|
7
|
+
*
|
|
8
|
+
* Gateway (durable fact):
|
|
9
|
+
* DELETE {gateway}/v1/data/{dataPointId}
|
|
10
|
+
* Authorization: Web3Signed {signature}
|
|
11
|
+
* { ownerAddress, scope, expectedVersion, signature }
|
|
12
|
+
* where signature = EIP-712 AddData over
|
|
13
|
+
* { ownerAddress, scope, dataHash: TOMBSTONE_DATA_HASH,
|
|
14
|
+
* metadataHash: TOMBSTONE_METADATA_HASH, expectedVersion: current + 1 }
|
|
15
|
+
*
|
|
16
|
+
* Storage (one exact blob per version, never the scope prefix):
|
|
17
|
+
* DELETE {storage}/v1/chains/{chainId}/blobs/{owner}/{scope}/{version}
|
|
18
|
+
* authorization: Web3Signed (aud = storage endpoint, uri = that path)
|
|
19
|
+
* The path is the one the SDK's vana-storage provider uploads to: lowercased
|
|
20
|
+
* owner, every key segment URI-encoded; vana-storage resolves a three-segment
|
|
21
|
+
* path as a single-object delete and answers 404 when the object is absent.
|
|
22
|
+
*/
|
|
23
|
+
export function createGatewayDeleteDataPort(options) {
|
|
24
|
+
const gatewayBase = options.gatewayUrl.replace(/\/+$/, "");
|
|
25
|
+
const storageBase = options.storage.endpoint.replace(/\/+$/, "");
|
|
26
|
+
const fetchImpl = options.fetch ?? globalThis.fetch;
|
|
27
|
+
// The storage provider lowercases the owner in blob paths; match it or the
|
|
28
|
+
// exact DELETE keys would not be the ones PUT wrote.
|
|
29
|
+
const owner = options.serverOwner.toLowerCase();
|
|
30
|
+
async function sendTombstone(scope, dataPointId, version) {
|
|
31
|
+
const signature = await options.signer.signAddData({
|
|
32
|
+
ownerAddress: options.serverOwner,
|
|
33
|
+
scope,
|
|
34
|
+
dataHash: TOMBSTONE_DATA_HASH,
|
|
35
|
+
metadataHash: TOMBSTONE_METADATA_HASH,
|
|
36
|
+
expectedVersion: version,
|
|
37
|
+
});
|
|
38
|
+
return fetchImpl(`${gatewayBase}/v1/data/${dataPointId}`, {
|
|
39
|
+
method: "DELETE",
|
|
40
|
+
headers: {
|
|
41
|
+
"Content-Type": "application/json",
|
|
42
|
+
Authorization: `Web3Signed ${signature}`,
|
|
43
|
+
},
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
ownerAddress: options.serverOwner,
|
|
46
|
+
scope,
|
|
47
|
+
expectedVersion: String(version),
|
|
48
|
+
signature,
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
async tombstone(scope) {
|
|
54
|
+
const dataPointId = computeDataPointId(options.serverOwner, scope);
|
|
55
|
+
const current = await options.dataPointFeed.getDataPoint({
|
|
56
|
+
ownerAddress: options.serverOwner,
|
|
57
|
+
scope,
|
|
58
|
+
});
|
|
59
|
+
if (current === null) {
|
|
60
|
+
return { status: "not-registered", dataPointId };
|
|
61
|
+
}
|
|
62
|
+
if (current.deletedAt !== null) {
|
|
63
|
+
return {
|
|
64
|
+
status: "already-deleted",
|
|
65
|
+
dataPointId,
|
|
66
|
+
version: current.expectedVersion,
|
|
67
|
+
deletedAt: current.deletedAt,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
let version = BigInt(current.expectedVersion) + 1n;
|
|
71
|
+
let res = await sendTombstone(scope, dataPointId, version);
|
|
72
|
+
if (res.status === 409) {
|
|
73
|
+
// Another replica advanced the scope between our read and our
|
|
74
|
+
// write. The 409 body carries `currentExpectedVersion` (and the
|
|
75
|
+
// legacy message phrasing names the next valid version); re-sign
|
|
76
|
+
// once against it.
|
|
77
|
+
const body = await res.json().catch(() => null);
|
|
78
|
+
const conflict = unwrap(body);
|
|
79
|
+
// Gateway 409 body: `nextExpectedVersion` is the version to sign
|
|
80
|
+
// next; `currentExpectedVersion` is the version the gateway holds,
|
|
81
|
+
// so it needs +1. Prefer the explicit next, fall back to current+1,
|
|
82
|
+
// then to the legacy message phrasing.
|
|
83
|
+
const nextExplicit = integerField(conflict, "nextExpectedVersion") ??
|
|
84
|
+
integerField(body, "nextExpectedVersion");
|
|
85
|
+
const currentExpected = integerField(conflict, "currentExpectedVersion") ??
|
|
86
|
+
integerField(body, "currentExpectedVersion");
|
|
87
|
+
const legacyNext = parseGatewayNextVersion(detailFromBody(body, res.statusText));
|
|
88
|
+
const next = nextExplicit !== null
|
|
89
|
+
? nextExplicit
|
|
90
|
+
: currentExpected !== null
|
|
91
|
+
? currentExpected + 1n
|
|
92
|
+
: legacyNext !== null
|
|
93
|
+
? BigInt(legacyNext)
|
|
94
|
+
: null;
|
|
95
|
+
if (next === null) {
|
|
96
|
+
throw new Error(`Gateway error: 409 ${detailFromBody(body, res.statusText)}`);
|
|
97
|
+
}
|
|
98
|
+
version = next;
|
|
99
|
+
res = await sendTombstone(scope, dataPointId, version);
|
|
100
|
+
}
|
|
101
|
+
if (res.status === 404) {
|
|
102
|
+
// The registry lost the row between our read and our write (or the
|
|
103
|
+
// feed answered from a replica ahead of the writer): nothing to
|
|
104
|
+
// tombstone.
|
|
105
|
+
return { status: "not-registered", dataPointId };
|
|
106
|
+
}
|
|
107
|
+
if (res.status === 410) {
|
|
108
|
+
// Raced with a concurrent deletion: the point is already gone. The
|
|
109
|
+
// winning tombstone may sit above the version we attempted (another
|
|
110
|
+
// replica advanced the scope first), and its version bounds the
|
|
111
|
+
// ciphertext to delete, so take the gateway's word: the echoed row,
|
|
112
|
+
// else a re-read of the deletion-aware feed, else unknown.
|
|
113
|
+
const body = await res.json().catch(() => null);
|
|
114
|
+
const echoed = unwrap(body);
|
|
115
|
+
let winning = normalizeVersionString(stringField(echoed, "expectedVersion"));
|
|
116
|
+
let deletedAt = stringField(echoed, "deletedAt");
|
|
117
|
+
if (winning === null) {
|
|
118
|
+
const reread = await options.dataPointFeed
|
|
119
|
+
.getDataPoint({ ownerAddress: options.serverOwner, scope })
|
|
120
|
+
.catch(() => null);
|
|
121
|
+
if (reread && reread.deletedAt !== null) {
|
|
122
|
+
winning = normalizeVersionString(reread.expectedVersion);
|
|
123
|
+
deletedAt = deletedAt ?? reread.deletedAt;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
status: "already-deleted",
|
|
128
|
+
dataPointId,
|
|
129
|
+
version: winning,
|
|
130
|
+
deletedAt,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (!res.ok) {
|
|
134
|
+
throw new Error(`Gateway error: ${res.status} ${await errorDetail(res)}`);
|
|
135
|
+
}
|
|
136
|
+
const body = await res.json().catch(() => null);
|
|
137
|
+
const row = unwrap(body);
|
|
138
|
+
return {
|
|
139
|
+
status: "tombstoned",
|
|
140
|
+
dataPointId: stringField(row, "dataPointId") ?? dataPointId,
|
|
141
|
+
version: stringField(row, "expectedVersion") ?? String(version),
|
|
142
|
+
deletedAt: stringField(row, "deletedAt"),
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
async deleteBlobVersions(scope, versions) {
|
|
146
|
+
const outcome = {
|
|
147
|
+
deleted: [],
|
|
148
|
+
missing: [],
|
|
149
|
+
failed: [],
|
|
150
|
+
};
|
|
151
|
+
// Sequential on purpose: vana-storage rate-limits DELETE per owner
|
|
152
|
+
// and the caller already bounds the batch size per pass.
|
|
153
|
+
for (const version of versions) {
|
|
154
|
+
const path = `/v1/chains/${options.storage.chainId}/blobs/${owner}/${encodeURIComponent(scope)}/${encodeURIComponent(version)}`;
|
|
155
|
+
try {
|
|
156
|
+
const authorization = await buildWeb3SignedHeader({
|
|
157
|
+
signMessage: (message) => options.storage.signMessage(message),
|
|
158
|
+
aud: storageBase,
|
|
159
|
+
method: "DELETE",
|
|
160
|
+
uri: path,
|
|
161
|
+
});
|
|
162
|
+
const res = await fetchImpl(`${storageBase}${path}`, {
|
|
163
|
+
method: "DELETE",
|
|
164
|
+
headers: { authorization },
|
|
165
|
+
});
|
|
166
|
+
if (res.status === 404) {
|
|
167
|
+
// Idempotent: an absent object is a completed delete.
|
|
168
|
+
outcome.missing.push(version);
|
|
169
|
+
}
|
|
170
|
+
else if (res.ok) {
|
|
171
|
+
outcome.deleted.push(version);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
outcome.failed.push({
|
|
175
|
+
version,
|
|
176
|
+
error: `vana-storage delete failed: ${res.status} ${res.statusText}`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
outcome.failed.push({
|
|
182
|
+
version,
|
|
183
|
+
error: err instanceof Error ? err.message : String(err),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return outcome;
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
async function errorDetail(res) {
|
|
192
|
+
const body = await res.json().catch(() => null);
|
|
193
|
+
return detailFromBody(body, res.statusText);
|
|
194
|
+
}
|
|
195
|
+
function detailFromBody(body, fallback) {
|
|
196
|
+
if (typeof body === "object" && body !== null) {
|
|
197
|
+
const record = body;
|
|
198
|
+
if (typeof record.error === "string")
|
|
199
|
+
return record.error;
|
|
200
|
+
if (typeof record.message === "string")
|
|
201
|
+
return record.message;
|
|
202
|
+
if (typeof record.error === "object" && record.error !== null) {
|
|
203
|
+
const nested = record.error;
|
|
204
|
+
if (typeof nested.message === "string")
|
|
205
|
+
return nested.message;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return fallback;
|
|
209
|
+
}
|
|
210
|
+
// Versions are unbounded integers on the wire (decimal strings); parse them
|
|
211
|
+
// as bigint so a value past Number.MAX_SAFE_INTEGER cannot round.
|
|
212
|
+
// A registry version is a positive decimal integer; anything else (including
|
|
213
|
+
// the "0" a body-less 410 can synthesise) is "unknown".
|
|
214
|
+
function normalizeVersionString(value) {
|
|
215
|
+
if (value === null || !/^\d+$/.test(value))
|
|
216
|
+
return null;
|
|
217
|
+
const parsed = BigInt(value);
|
|
218
|
+
return parsed > 0n ? parsed.toString() : null;
|
|
219
|
+
}
|
|
220
|
+
function integerField(record, key) {
|
|
221
|
+
if (typeof record !== "object" || record === null)
|
|
222
|
+
return null;
|
|
223
|
+
const value = record[key];
|
|
224
|
+
if (typeof value === "number" && Number.isSafeInteger(value)) {
|
|
225
|
+
return BigInt(value);
|
|
226
|
+
}
|
|
227
|
+
if (typeof value === "string" && /^\d+$/.test(value))
|
|
228
|
+
return BigInt(value);
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
function unwrap(body) {
|
|
232
|
+
if (typeof body !== "object" || body === null)
|
|
233
|
+
return null;
|
|
234
|
+
const record = body;
|
|
235
|
+
if (typeof record.data === "object" && record.data !== null) {
|
|
236
|
+
return record.data;
|
|
237
|
+
}
|
|
238
|
+
return record;
|
|
239
|
+
}
|
|
240
|
+
function stringField(record, key) {
|
|
241
|
+
const value = record?.[key];
|
|
242
|
+
return typeof value === "string" ? value : null;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=delete-data-port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-data-port.js","sourceRoot":"","sources":["../../src/sync/delete-data-port.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { UploadWorkerDeps } from "../workers/upload.js";
|
|
2
|
+
import type { DownloadWorkerDeps } from "../workers/download.js";
|
|
3
|
+
import type { SyncStatus } from "../types.js";
|
|
4
|
+
import { type DeleteScopeResult } from "../workers/delete.js";
|
|
5
|
+
import type { DeleteDataPort, PendingBlobDeletionStore } from "../../ports/index.js";
|
|
6
|
+
export interface SyncManagerOptions {
|
|
7
|
+
/** Polling interval in milliseconds (default: 60_000 = 1 minute) */
|
|
8
|
+
pollInterval?: number;
|
|
9
|
+
/** Max upload batch size per cycle (default: 50) */
|
|
10
|
+
uploadBatchSize?: number;
|
|
11
|
+
/** Debounce for immediate sync after local ingest (default: 500ms) */
|
|
12
|
+
notifyDebounceMs?: number;
|
|
13
|
+
/** Optional runtime gate. Returning blocked skips upload/download without an error. */
|
|
14
|
+
canSync?: () => Promise<SyncCanRunResult> | SyncCanRunResult;
|
|
15
|
+
/**
|
|
16
|
+
* Remote deletion (gateway tombstone + storage blobs). Without it
|
|
17
|
+
* `deleteScope` is local-only and reports `durable: false`.
|
|
18
|
+
*/
|
|
19
|
+
deleteData?: DeleteDataPort | null;
|
|
20
|
+
/** Durable retry marker for blob deletions that failed after the tombstone. */
|
|
21
|
+
pendingBlobDeletions?: PendingBlobDeletionStore;
|
|
22
|
+
/** Select download-only operation for runtimes that cannot sign uploads. */
|
|
23
|
+
transferMode?: "upload-download" | "download-only";
|
|
24
|
+
/** Exact owner scopes to hydrate before the first full download cycle. */
|
|
25
|
+
hydrateScopes?: string[];
|
|
26
|
+
}
|
|
27
|
+
export type SyncCanRunResult = {
|
|
28
|
+
ok: true;
|
|
29
|
+
} | {
|
|
30
|
+
ok: false;
|
|
31
|
+
reason: string;
|
|
32
|
+
message: string;
|
|
33
|
+
};
|
|
34
|
+
export interface SyncManager {
|
|
35
|
+
/** Start the background sync loop */
|
|
36
|
+
start(): void;
|
|
37
|
+
/** Stop the background sync loop gracefully */
|
|
38
|
+
stop(): Promise<void>;
|
|
39
|
+
/** Trigger an immediate sync cycle (skips wait) */
|
|
40
|
+
trigger(): Promise<void>;
|
|
41
|
+
/** Get current sync status */
|
|
42
|
+
getStatus(): SyncStatus;
|
|
43
|
+
/** Download exact owner scopes without advancing the registry cursor. */
|
|
44
|
+
hydrateScopes(scopes: string[]): Promise<void>;
|
|
45
|
+
/** Signal that new data has been ingested (next cycle picks it up) */
|
|
46
|
+
notifyNewData(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Durable scope deletion: gateway tombstone, then storage blobs, then the
|
|
49
|
+
* local copy (see workers/delete.ts for why that order is the only safe
|
|
50
|
+
* one). Resolves with a per-step result; a gateway failure leaves the
|
|
51
|
+
* local copy in place and is reported as `steps.gateway.status = "failed"`.
|
|
52
|
+
*/
|
|
53
|
+
deleteScope(scope: string): Promise<DeleteScopeResult>;
|
|
54
|
+
/** Whether the sync manager is currently running */
|
|
55
|
+
readonly running: boolean;
|
|
56
|
+
}
|
|
57
|
+
export declare function createSyncManager(uploadDeps: UploadWorkerDeps, downloadDeps: DownloadWorkerDeps, options?: SyncManagerOptions): SyncManager;
|
|
58
|
+
//# sourceMappingURL=sync-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../src/sync/engine/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAgC,MAAM,aAAa,CAAC;AAG5E,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;IAC7D;;;OAGG;IACH,UAAU,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,+EAA+E;IAC/E,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACnD,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IAEd,+CAA+C;IAC/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,mDAAmD;IACnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,8BAA8B;IAC9B,SAAS,IAAI,UAAU,CAAC;IAExB,yEAAyE;IACzE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,sEAAsE;IACtE,aAAa,IAAI,IAAI,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvD,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,kBAAkB,EAChC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAqUb"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { uploadAll } from "../workers/upload.js";
|
|
2
|
+
import { downloadAll, downloadScopes } from "../workers/download.js";
|
|
3
|
+
import { deleteScope, retryPendingBlobDeletions, } from "../workers/delete.js";
|
|
4
|
+
import { createDownloadRetryMemory } from "../retry-memory.js";
|
|
5
|
+
const MAX_ERRORS = 10;
|
|
6
|
+
export function createSyncManager(uploadDeps, downloadDeps, options) {
|
|
7
|
+
const pollInterval = options?.pollInterval ?? 60_000;
|
|
8
|
+
const uploadBatchSize = options?.uploadBatchSize ?? 50;
|
|
9
|
+
const notifyDebounceMs = options?.notifyDebounceMs ?? 500;
|
|
10
|
+
const transferMode = options?.transferMode ?? "upload-download";
|
|
11
|
+
const startupHydrateScopes = [...new Set(options?.hydrateScopes ?? [])];
|
|
12
|
+
let intervalId = null;
|
|
13
|
+
let notifyTimerId = null;
|
|
14
|
+
let isRunning = false;
|
|
15
|
+
let lastSync = null;
|
|
16
|
+
let lastProcessedTimestamp = null;
|
|
17
|
+
let blocked = null;
|
|
18
|
+
let errors = [];
|
|
19
|
+
let cycleInFlight = null;
|
|
20
|
+
let rerunRequested = false;
|
|
21
|
+
let needsFullReconcile = true;
|
|
22
|
+
let needsStartupHydration = startupHydrateScopes.length > 0;
|
|
23
|
+
const hydratedScopes = new Set();
|
|
24
|
+
// One retry memory per manager (= per boot session): a blob that 404s is
|
|
25
|
+
// attempted once per session, not once per cycle; transient storage errors
|
|
26
|
+
// back off exponentially instead of re-firing on every cycle.
|
|
27
|
+
const downloadRetryMemory = createDownloadRetryMemory();
|
|
28
|
+
const dataPointFeed = downloadDeps.dataPointFeed ?? uploadDeps.dataPointFeed;
|
|
29
|
+
const scopeDeletions = uploadDeps.scopeDeletions ?? downloadDeps.scopeDeletions;
|
|
30
|
+
// The upload worker queues guarded cleanup for ciphertext it had to
|
|
31
|
+
// abandon mid-race; it shares the manager's marker store.
|
|
32
|
+
const workerUploadDeps = {
|
|
33
|
+
...uploadDeps,
|
|
34
|
+
pendingBlobDeletions: uploadDeps.pendingBlobDeletions ?? options?.pendingBlobDeletions,
|
|
35
|
+
};
|
|
36
|
+
const workerDownloadDeps = {
|
|
37
|
+
...downloadDeps,
|
|
38
|
+
pendingBlobDeletions: downloadDeps.pendingBlobDeletions ?? options?.pendingBlobDeletions,
|
|
39
|
+
};
|
|
40
|
+
// Sync cycles and durable deletes mutate the same local index and the same
|
|
41
|
+
// registry rows. Run them one at a time (FIFO): a delete cannot start while
|
|
42
|
+
// an upload of the same scope is between "blob uploaded" and "row marked
|
|
43
|
+
// synced", and a cycle cannot start until a delete has finished all three
|
|
44
|
+
// steps. A rejected operation never blocks the ones queued behind it.
|
|
45
|
+
let mutationQueue = Promise.resolve();
|
|
46
|
+
function exclusive(operation) {
|
|
47
|
+
const run = mutationQueue.then(operation, operation);
|
|
48
|
+
mutationQueue = run.catch(() => undefined);
|
|
49
|
+
return run;
|
|
50
|
+
}
|
|
51
|
+
async function hydrateScopesExclusive(scopes) {
|
|
52
|
+
// Resolve scopes individually so an earlier success remains observable if
|
|
53
|
+
// a later scope fails.
|
|
54
|
+
for (const scope of new Set(scopes)) {
|
|
55
|
+
await downloadScopes(workerDownloadDeps, [scope], {
|
|
56
|
+
retryMemory: downloadRetryMemory,
|
|
57
|
+
});
|
|
58
|
+
// "Hydrated" means the remote scope was resolved, including an absent
|
|
59
|
+
// data point or tombstone; it does not guarantee local bytes exist.
|
|
60
|
+
hydratedScopes.add(scope);
|
|
61
|
+
downloadDeps.logger.info({ scope }, "Hydrated requested scope");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function runCycle() {
|
|
65
|
+
// Prevent concurrent cycles
|
|
66
|
+
if (cycleInFlight) {
|
|
67
|
+
rerunRequested = true;
|
|
68
|
+
return cycleInFlight;
|
|
69
|
+
}
|
|
70
|
+
cycleInFlight = exclusive(async () => {
|
|
71
|
+
do {
|
|
72
|
+
rerunRequested = false;
|
|
73
|
+
const canRun = await (options?.canSync?.() ?? { ok: true });
|
|
74
|
+
if (!canRun.ok) {
|
|
75
|
+
blocked = { reason: canRun.reason, message: canRun.message };
|
|
76
|
+
uploadDeps.logger.warn(blocked, "Sync cycle blocked");
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
blocked = null;
|
|
80
|
+
if (needsStartupHydration) {
|
|
81
|
+
try {
|
|
82
|
+
await hydrateScopesExclusive(startupHydrateScopes);
|
|
83
|
+
needsStartupHydration = false;
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
downloadDeps.logger.warn({ error: err.message }, "Scope hydration failed; continuing with full sync");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Finish blob deletions whose tombstone landed but whose storage
|
|
90
|
+
// DELETE did not. Cheap when nothing is pending; never blocks sync.
|
|
91
|
+
if (transferMode === "upload-download") {
|
|
92
|
+
await runUploadCycle();
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
// Download new remote files
|
|
96
|
+
const fullReconcile = needsFullReconcile;
|
|
97
|
+
const downloadResults = await downloadAll(workerDownloadDeps, {
|
|
98
|
+
fullReconcile,
|
|
99
|
+
retryMemory: downloadRetryMemory,
|
|
100
|
+
});
|
|
101
|
+
needsFullReconcile = false;
|
|
102
|
+
downloadDeps.logger.debug({ downloaded: downloadResults.length, fullReconcile }, "Download cycle complete");
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
const syncError = {
|
|
106
|
+
fileId: null,
|
|
107
|
+
scope: null,
|
|
108
|
+
message: `Download cycle failed: ${err.message}`,
|
|
109
|
+
timestamp: new Date().toISOString(),
|
|
110
|
+
};
|
|
111
|
+
pushError(syncError);
|
|
112
|
+
downloadDeps.logger.error({ error: err.message }, "Download cycle failed");
|
|
113
|
+
}
|
|
114
|
+
// Update cached cursor value
|
|
115
|
+
try {
|
|
116
|
+
lastProcessedTimestamp = await downloadDeps.cursor.read();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Non-critical: status will show stale value
|
|
120
|
+
}
|
|
121
|
+
lastSync = new Date().toISOString();
|
|
122
|
+
} while (rerunRequested && isRunning);
|
|
123
|
+
});
|
|
124
|
+
try {
|
|
125
|
+
await cycleInFlight;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
cycleInFlight = null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function runUploadCycle() {
|
|
132
|
+
try {
|
|
133
|
+
await retryPendingBlobDeletions({
|
|
134
|
+
deleteData: options?.deleteData,
|
|
135
|
+
pendingBlobDeletions: options?.pendingBlobDeletions,
|
|
136
|
+
dataPointFeed,
|
|
137
|
+
serverOwner: uploadDeps.serverOwner,
|
|
138
|
+
storage: uploadDeps.storage,
|
|
139
|
+
logger: uploadDeps.logger,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
uploadDeps.logger.warn({ error: err.message }, "Pending blob deletion retry failed");
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const uploadResults = await uploadAll(workerUploadDeps, {
|
|
147
|
+
batchSize: uploadBatchSize,
|
|
148
|
+
onError(entry, error) {
|
|
149
|
+
pushError({
|
|
150
|
+
fileId: entry.fileId,
|
|
151
|
+
scope: entry.scope,
|
|
152
|
+
message: `Upload failed for ${entry.path}: ${error.message}`,
|
|
153
|
+
timestamp: new Date().toISOString(),
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
uploadDeps.logger.debug({ uploaded: uploadResults.length }, "Upload cycle complete");
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
const syncError = {
|
|
161
|
+
fileId: null,
|
|
162
|
+
scope: null,
|
|
163
|
+
message: `Upload cycle failed: ${err.message}`,
|
|
164
|
+
timestamp: new Date().toISOString(),
|
|
165
|
+
};
|
|
166
|
+
pushError(syncError);
|
|
167
|
+
uploadDeps.logger.error({ error: err.message }, "Upload cycle failed");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function scheduleNotifiedCycle() {
|
|
171
|
+
if (!isRunning || notifyTimerId !== null)
|
|
172
|
+
return;
|
|
173
|
+
notifyTimerId = setTimeout(() => {
|
|
174
|
+
notifyTimerId = null;
|
|
175
|
+
if (!isRunning)
|
|
176
|
+
return;
|
|
177
|
+
runCycle().catch(() => {
|
|
178
|
+
// Errors already captured in ring buffer
|
|
179
|
+
});
|
|
180
|
+
}, notifyDebounceMs);
|
|
181
|
+
}
|
|
182
|
+
function pushError(error) {
|
|
183
|
+
errors.push(error);
|
|
184
|
+
if (errors.length > MAX_ERRORS) {
|
|
185
|
+
errors = errors.slice(-MAX_ERRORS);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function startInterval() {
|
|
189
|
+
if (intervalId !== null)
|
|
190
|
+
return;
|
|
191
|
+
intervalId = setInterval(() => {
|
|
192
|
+
runCycle().catch(() => {
|
|
193
|
+
// Errors already captured in ring buffer
|
|
194
|
+
});
|
|
195
|
+
}, pollInterval);
|
|
196
|
+
}
|
|
197
|
+
function clearIntervalTimer() {
|
|
198
|
+
if (intervalId !== null) {
|
|
199
|
+
clearInterval(intervalId);
|
|
200
|
+
intervalId = null;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function clearNotifyTimer() {
|
|
204
|
+
if (notifyTimerId !== null) {
|
|
205
|
+
clearTimeout(notifyTimerId);
|
|
206
|
+
notifyTimerId = null;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const manager = {
|
|
210
|
+
get running() {
|
|
211
|
+
return isRunning;
|
|
212
|
+
},
|
|
213
|
+
start() {
|
|
214
|
+
if (isRunning)
|
|
215
|
+
return; // Idempotent
|
|
216
|
+
isRunning = true;
|
|
217
|
+
// Crash recovery: run one cycle immediately on start
|
|
218
|
+
runCycle().catch(() => {
|
|
219
|
+
// Errors already captured in ring buffer
|
|
220
|
+
});
|
|
221
|
+
startInterval();
|
|
222
|
+
},
|
|
223
|
+
async stop() {
|
|
224
|
+
clearIntervalTimer();
|
|
225
|
+
clearNotifyTimer();
|
|
226
|
+
isRunning = false;
|
|
227
|
+
// Wait for any in-flight cycle to complete
|
|
228
|
+
if (cycleInFlight) {
|
|
229
|
+
await cycleInFlight;
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
async trigger() {
|
|
233
|
+
// Clear existing timers, run immediately, restart interval
|
|
234
|
+
clearIntervalTimer();
|
|
235
|
+
clearNotifyTimer();
|
|
236
|
+
await runCycle();
|
|
237
|
+
if (isRunning) {
|
|
238
|
+
startInterval();
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
getStatus() {
|
|
242
|
+
const pendingFiles = uploadDeps.storage.findUnsynced().length;
|
|
243
|
+
return {
|
|
244
|
+
enabled: true,
|
|
245
|
+
running: isRunning,
|
|
246
|
+
syncing: cycleInFlight !== null,
|
|
247
|
+
blocked,
|
|
248
|
+
lastSync,
|
|
249
|
+
lastProcessedTimestamp,
|
|
250
|
+
pendingFiles,
|
|
251
|
+
hydratedScopes: [...hydratedScopes],
|
|
252
|
+
errors: [...errors],
|
|
253
|
+
};
|
|
254
|
+
},
|
|
255
|
+
hydrateScopes(scopes) {
|
|
256
|
+
return exclusive(async () => {
|
|
257
|
+
const canRun = await (options?.canSync?.() ?? { ok: true });
|
|
258
|
+
if (!canRun.ok) {
|
|
259
|
+
blocked = { reason: canRun.reason, message: canRun.message };
|
|
260
|
+
downloadDeps.logger.warn(blocked, "Scope hydration blocked");
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
blocked = null;
|
|
264
|
+
await hydrateScopesExclusive(scopes);
|
|
265
|
+
});
|
|
266
|
+
},
|
|
267
|
+
notifyNewData() {
|
|
268
|
+
uploadDeps.logger.debug("New data notification received");
|
|
269
|
+
scheduleNotifiedCycle();
|
|
270
|
+
},
|
|
271
|
+
deleteScope(scope) {
|
|
272
|
+
return exclusive(() => deleteScope({
|
|
273
|
+
storage: uploadDeps.storage,
|
|
274
|
+
serverOwner: uploadDeps.serverOwner,
|
|
275
|
+
deleteData: options?.deleteData,
|
|
276
|
+
pendingBlobDeletions: options?.pendingBlobDeletions,
|
|
277
|
+
scopeDeletions,
|
|
278
|
+
dataPointFeed,
|
|
279
|
+
logger: uploadDeps.logger,
|
|
280
|
+
}, scope));
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
return manager;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=sync-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../../src/sync/engine/sync-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { SyncStatus, SyncError } from "./types.js";
|
|
2
|
+
export type { SyncCursor } from "./cursor.js";
|
|
3
|
+
export { classifySyncFailure, inferPayloadKind, type ClassifiedSyncFailure, type ClassifySyncFailureInput, type SyncDownloadFailureTelemetryEvent, type SyncFailureDisposition, type SyncFailureStage, type SyncFileIssue, type SyncPayloadKind, } from "./issues.js";
|
|
4
|
+
export { createSyncManager, type SyncManager, type SyncManagerOptions, } from "./engine/sync-manager.js";
|
|
5
|
+
export type { DownloadDiagnosticsHook, DownloadWorkerDeps, } from "./workers/download.js";
|
|
6
|
+
export { downloadOne, type DownloadResult } from "./workers/download.js";
|
|
7
|
+
export { createPdppImporter, isPermanentRejection, normalizeDigest, PDPP_METADATA_KEY, SUPPORTED_PDPP_METADATA_VERSION, type ImportableEnvelope, type ImportStreamShape, type PdppImporter, type PdppImporterDeps, type PdppImportOutcome, type PdppImportRejection, type PdppImportRejectionCode, type RetainedDeclaration, } from "./pdpp-import.js";
|
|
8
|
+
export { BLOB_DELETE_BATCH_SIZE, deleteScope, planBlobDeletions, retryPendingBlobDeletions, type DeleteScopeDeps, type DeleteScopeResult, type DeleteScopeStep, type DeleteStepStatus, type RetryPendingBlobDeletionsResult, } from "./workers/delete.js";
|
|
9
|
+
export { createGatewayDataPointFeed, feedFromGatewayClient, type GatewayDataPointFeedOptions, } from "./data-point-feed.js";
|
|
10
|
+
export { createGatewayDeleteDataPort, type GatewayDeleteDataPortOptions, } from "./delete-data-port.js";
|
|
11
|
+
export { createMemoryPendingBlobDeletionStore, createPendingBlobDeletionStore, normalizePendingBlobDeletions, type PendingBlobDeletionKv, } from "./pending-blob-deletions.js";
|
|
12
|
+
export { computeDataPointId } from "./data-point-id.js";
|
|
13
|
+
export { createScopeDeletionTracker, deletionTimestamp, isEntryCoveredByTombstone, tombstoneVersion, DEFAULT_SCOPE_DELETION_GATEWAY_RETRY_MS, DEFAULT_SCOPE_DELETION_MAX_STALENESS_MS, type ScopeDeletionResolveOptions, type ScopeDeletionSource, type ScopeDeletionTracker, type ScopeDeletionTrackerOptions, type ScopeDeletionVerdict, type ScopeTombstone, } from "./scope-deletions.js";
|
|
14
|
+
export { TOMBSTONE_DATA_HASH, TOMBSTONE_METADATA_HASH, isTombstoneRecord, } from "./tombstone.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,GACrC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,2BAA2B,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oCAAoC,EACpC,8BAA8B,EAC9B,6BAA6B,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,uCAAuC,EACvC,uCAAuC,EACvC,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
|