@appport/sdk 1.0.1
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/LICENSE +126 -0
- package/README.md +39 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/node_modules/@appport/authorization/README.md +28 -0
- package/node_modules/@appport/authorization/dist/index.d.ts +94 -0
- package/node_modules/@appport/authorization/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/authorization/dist/index.js +131 -0
- package/node_modules/@appport/authorization/dist/index.js.map +1 -0
- package/node_modules/@appport/authorization/package.json +28 -0
- package/node_modules/@appport/client/README.md +35 -0
- package/node_modules/@appport/client/dist/channel.d.ts +14 -0
- package/node_modules/@appport/client/dist/channel.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/channel.js +58 -0
- package/node_modules/@appport/client/dist/channel.js.map +1 -0
- package/node_modules/@appport/client/dist/client.d.ts +61 -0
- package/node_modules/@appport/client/dist/client.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/client.js +214 -0
- package/node_modules/@appport/client/dist/client.js.map +1 -0
- package/node_modules/@appport/client/dist/contract.d.ts +55 -0
- package/node_modules/@appport/client/dist/contract.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/contract.js +12 -0
- package/node_modules/@appport/client/dist/contract.js.map +1 -0
- package/node_modules/@appport/client/dist/discovery.d.ts +17 -0
- package/node_modules/@appport/client/dist/discovery.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/discovery.js +56 -0
- package/node_modules/@appport/client/dist/discovery.js.map +1 -0
- package/node_modules/@appport/client/dist/duplex.d.ts +25 -0
- package/node_modules/@appport/client/dist/duplex.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/duplex.js +194 -0
- package/node_modules/@appport/client/dist/duplex.js.map +1 -0
- package/node_modules/@appport/client/dist/index.d.ts +13 -0
- package/node_modules/@appport/client/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/index.js +13 -0
- package/node_modules/@appport/client/dist/index.js.map +1 -0
- package/node_modules/@appport/client/dist/transport.d.ts +42 -0
- package/node_modules/@appport/client/dist/transport.d.ts.map +1 -0
- package/node_modules/@appport/client/dist/transport.js +2 -0
- package/node_modules/@appport/client/dist/transport.js.map +1 -0
- package/node_modules/@appport/client/package.json +32 -0
- package/node_modules/@appport/core/README.md +91 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts +80 -0
- package/node_modules/@appport/core/dist/appboundry-contract.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js +160 -0
- package/node_modules/@appport/core/dist/appboundry-contract.js.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts +125 -0
- package/node_modules/@appport/core/dist/application-implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-implementation.js +220 -0
- package/node_modules/@appport/core/dist/application-implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts +150 -0
- package/node_modules/@appport/core/dist/application-lifecycle.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js +70 -0
- package/node_modules/@appport/core/dist/application-lifecycle.js.map +1 -0
- package/node_modules/@appport/core/dist/application-source.d.ts +109 -0
- package/node_modules/@appport/core/dist/application-source.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application-source.js +186 -0
- package/node_modules/@appport/core/dist/application-source.js.map +1 -0
- package/node_modules/@appport/core/dist/application.d.ts +122 -0
- package/node_modules/@appport/core/dist/application.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/application.js +515 -0
- package/node_modules/@appport/core/dist/application.js.map +1 -0
- package/node_modules/@appport/core/dist/artifact.d.ts +395 -0
- package/node_modules/@appport/core/dist/artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/artifact.js +392 -0
- package/node_modules/@appport/core/dist/artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/assembly.d.ts +237 -0
- package/node_modules/@appport/core/dist/assembly.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/assembly.js +458 -0
- package/node_modules/@appport/core/dist/assembly.js.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts +34 -0
- package/node_modules/@appport/core/dist/authority-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authority-attestation.js +72 -0
- package/node_modules/@appport/core/dist/authority-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts +107 -0
- package/node_modules/@appport/core/dist/authorization-grant.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/authorization-grant.js +131 -0
- package/node_modules/@appport/core/dist/authorization-grant.js.map +1 -0
- package/node_modules/@appport/core/dist/binding.d.ts +294 -0
- package/node_modules/@appport/core/dist/binding.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/binding.js +263 -0
- package/node_modules/@appport/core/dist/binding.js.map +1 -0
- package/node_modules/@appport/core/dist/builtins.d.ts +18 -0
- package/node_modules/@appport/core/dist/builtins.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/builtins.js +38 -0
- package/node_modules/@appport/core/dist/builtins.js.map +1 -0
- package/node_modules/@appport/core/dist/capability.d.ts +94 -0
- package/node_modules/@appport/core/dist/capability.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/capability.js +85 -0
- package/node_modules/@appport/core/dist/capability.js.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts +16 -0
- package/node_modules/@appport/core/dist/concurrency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/concurrency.js +46 -0
- package/node_modules/@appport/core/dist/concurrency.js.map +1 -0
- package/node_modules/@appport/core/dist/context.d.ts +59 -0
- package/node_modules/@appport/core/dist/context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/context.js +14 -0
- package/node_modules/@appport/core/dist/context.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts +15 -0
- package/node_modules/@appport/core/dist/contract-artifact.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-artifact.js +152 -0
- package/node_modules/@appport/core/dist/contract-artifact.js.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts +68 -0
- package/node_modules/@appport/core/dist/contract-attestation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/contract-attestation.js +76 -0
- package/node_modules/@appport/core/dist/contract-attestation.js.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts +3 -0
- package/node_modules/@appport/core/dist/crash-injection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/crash-injection.js +8 -0
- package/node_modules/@appport/core/dist/crash-injection.js.map +1 -0
- package/node_modules/@appport/core/dist/events.d.ts +33 -0
- package/node_modules/@appport/core/dist/events.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/events.js +79 -0
- package/node_modules/@appport/core/dist/events.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts +13 -0
- package/node_modules/@appport/core/dist/execution-barrier.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-barrier.js +33 -0
- package/node_modules/@appport/core/dist/execution-barrier.js.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts +81 -0
- package/node_modules/@appport/core/dist/execution-ledger.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution-ledger.js +173 -0
- package/node_modules/@appport/core/dist/execution-ledger.js.map +1 -0
- package/node_modules/@appport/core/dist/execution.d.ts +387 -0
- package/node_modules/@appport/core/dist/execution.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/execution.js +165 -0
- package/node_modules/@appport/core/dist/execution.js.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts +36 -0
- package/node_modules/@appport/core/dist/idempotency.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/idempotency.js +36 -0
- package/node_modules/@appport/core/dist/idempotency.js.map +1 -0
- package/node_modules/@appport/core/dist/implementation.d.ts +110 -0
- package/node_modules/@appport/core/dist/implementation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/implementation.js +65 -0
- package/node_modules/@appport/core/dist/implementation.js.map +1 -0
- package/node_modules/@appport/core/dist/index.d.ts +44 -0
- package/node_modules/@appport/core/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/index.js +44 -0
- package/node_modules/@appport/core/dist/index.js.map +1 -0
- package/node_modules/@appport/core/dist/invocation.d.ts +253 -0
- package/node_modules/@appport/core/dist/invocation.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/invocation.js +258 -0
- package/node_modules/@appport/core/dist/invocation.js.map +1 -0
- package/node_modules/@appport/core/dist/manifest.d.ts +157 -0
- package/node_modules/@appport/core/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/manifest.js +255 -0
- package/node_modules/@appport/core/dist/manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts +19 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js +161 -0
- package/node_modules/@appport/core/dist/memory-application-data-store.js.map +1 -0
- package/node_modules/@appport/core/dist/operations.d.ts +61 -0
- package/node_modules/@appport/core/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/operations.js +210 -0
- package/node_modules/@appport/core/dist/operations.js.map +1 -0
- package/node_modules/@appport/core/dist/public.d.ts +19 -0
- package/node_modules/@appport/core/dist/public.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/public.js +18 -0
- package/node_modules/@appport/core/dist/public.js.map +1 -0
- package/node_modules/@appport/core/dist/registration.d.ts +165 -0
- package/node_modules/@appport/core/dist/registration.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registration.js +253 -0
- package/node_modules/@appport/core/dist/registration.js.map +1 -0
- package/node_modules/@appport/core/dist/registry.d.ts +29 -0
- package/node_modules/@appport/core/dist/registry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/registry.js +148 -0
- package/node_modules/@appport/core/dist/registry.js.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts +100 -0
- package/node_modules/@appport/core/dist/repository-connection.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/repository-connection.js +57 -0
- package/node_modules/@appport/core/dist/repository-connection.js.map +1 -0
- package/node_modules/@appport/core/dist/resolver.d.ts +130 -0
- package/node_modules/@appport/core/dist/resolver.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/resolver.js +252 -0
- package/node_modules/@appport/core/dist/resolver.js.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts +68 -0
- package/node_modules/@appport/core/dist/runtime-manifest.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js +84 -0
- package/node_modules/@appport/core/dist/runtime-manifest.js.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts +14 -0
- package/node_modules/@appport/core/dist/sanitize.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sanitize.js +49 -0
- package/node_modules/@appport/core/dist/sanitize.js.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts +5 -0
- package/node_modules/@appport/core/dist/server-internal.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/server-internal.js +4 -0
- package/node_modules/@appport/core/dist/server-internal.js.map +1 -0
- package/node_modules/@appport/core/dist/sessions.d.ts +29 -0
- package/node_modules/@appport/core/dist/sessions.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sessions.js +39 -0
- package/node_modules/@appport/core/dist/sessions.js.map +1 -0
- package/node_modules/@appport/core/dist/sha256.d.ts +3 -0
- package/node_modules/@appport/core/dist/sha256.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/sha256.js +46 -0
- package/node_modules/@appport/core/dist/sha256.js.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts +53 -0
- package/node_modules/@appport/core/dist/source-verification.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/source-verification.js +92 -0
- package/node_modules/@appport/core/dist/source-verification.js.map +1 -0
- package/node_modules/@appport/core/dist/state-context.d.ts +312 -0
- package/node_modules/@appport/core/dist/state-context.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state-context.js +100 -0
- package/node_modules/@appport/core/dist/state-context.js.map +1 -0
- package/node_modules/@appport/core/dist/state.d.ts +96 -0
- package/node_modules/@appport/core/dist/state.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/state.js +89 -0
- package/node_modules/@appport/core/dist/state.js.map +1 -0
- package/node_modules/@appport/core/dist/streams.d.ts +38 -0
- package/node_modules/@appport/core/dist/streams.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/streams.js +123 -0
- package/node_modules/@appport/core/dist/streams.js.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts +42 -0
- package/node_modules/@appport/core/dist/telemetry.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/telemetry.js +32 -0
- package/node_modules/@appport/core/dist/telemetry.js.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts +22 -0
- package/node_modules/@appport/core/dist/wasm-engine.d.ts.map +1 -0
- package/node_modules/@appport/core/dist/wasm-engine.js +367 -0
- package/node_modules/@appport/core/dist/wasm-engine.js.map +1 -0
- package/node_modules/@appport/core/package.json +58 -0
- package/node_modules/@appport/mobile/README.md +10 -0
- package/node_modules/@appport/mobile/dist/index.d.ts +66 -0
- package/node_modules/@appport/mobile/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/mobile/dist/index.js +182 -0
- package/node_modules/@appport/mobile/dist/index.js.map +1 -0
- package/node_modules/@appport/mobile/package.json +33 -0
- package/node_modules/@appport/protocol/README.md +41 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts +46 -0
- package/node_modules/@appport/protocol/dist/blob.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/blob.js +23 -0
- package/node_modules/@appport/protocol/dist/blob.js.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts +25 -0
- package/node_modules/@appport/protocol/dist/compatibility.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/compatibility.js +189 -0
- package/node_modules/@appport/protocol/dist/compatibility.js.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts +175 -0
- package/node_modules/@appport/protocol/dist/envelopes.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/envelopes.js +97 -0
- package/node_modules/@appport/protocol/dist/envelopes.js.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts +74 -0
- package/node_modules/@appport/protocol/dist/errors.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/errors.js +91 -0
- package/node_modules/@appport/protocol/dist/errors.js.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts +12 -0
- package/node_modules/@appport/protocol/dist/ids.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/ids.js +50 -0
- package/node_modules/@appport/protocol/dist/ids.js.map +1 -0
- package/node_modules/@appport/protocol/dist/index.d.ts +20 -0
- package/node_modules/@appport/protocol/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/index.js +20 -0
- package/node_modules/@appport/protocol/dist/index.js.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts +50 -0
- package/node_modules/@appport/protocol/dist/jsonschema.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js +6 -0
- package/node_modules/@appport/protocol/dist/jsonschema.js.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts +131 -0
- package/node_modules/@appport/protocol/dist/manifest.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/manifest.js +20 -0
- package/node_modules/@appport/protocol/dist/manifest.js.map +1 -0
- package/node_modules/@appport/protocol/dist/names.d.ts +26 -0
- package/node_modules/@appport/protocol/dist/names.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/names.js +85 -0
- package/node_modules/@appport/protocol/dist/names.js.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts +34 -0
- package/node_modules/@appport/protocol/dist/operations.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/operations.js +9 -0
- package/node_modules/@appport/protocol/dist/operations.js.map +1 -0
- package/node_modules/@appport/protocol/dist/session.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/session.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/session.js +7 -0
- package/node_modules/@appport/protocol/dist/session.js.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts +37 -0
- package/node_modules/@appport/protocol/dist/validate.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/validate.js +321 -0
- package/node_modules/@appport/protocol/dist/validate.js.map +1 -0
- package/node_modules/@appport/protocol/dist/version.d.ts +27 -0
- package/node_modules/@appport/protocol/dist/version.d.ts.map +1 -0
- package/node_modules/@appport/protocol/dist/version.js +26 -0
- package/node_modules/@appport/protocol/dist/version.js.map +1 -0
- package/node_modules/@appport/protocol/package.json +25 -0
- package/node_modules/@appport/schema/README.md +32 -0
- package/node_modules/@appport/schema/dist/builder.d.ts +85 -0
- package/node_modules/@appport/schema/dist/builder.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/builder.js +278 -0
- package/node_modules/@appport/schema/dist/builder.js.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts +12 -0
- package/node_modules/@appport/schema/dist/from-json-schema.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js +186 -0
- package/node_modules/@appport/schema/dist/from-json-schema.js.map +1 -0
- package/node_modules/@appport/schema/dist/index.d.ts +23 -0
- package/node_modules/@appport/schema/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/index.js +22 -0
- package/node_modules/@appport/schema/dist/index.js.map +1 -0
- package/node_modules/@appport/schema/dist/standard.d.ts +46 -0
- package/node_modules/@appport/schema/dist/standard.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/standard.js +42 -0
- package/node_modules/@appport/schema/dist/standard.js.map +1 -0
- package/node_modules/@appport/schema/dist/types.d.ts +40 -0
- package/node_modules/@appport/schema/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/schema/dist/types.js +19 -0
- package/node_modules/@appport/schema/dist/types.js.map +1 -0
- package/node_modules/@appport/schema/package.json +28 -0
- package/node_modules/@appport/server/README.md +39 -0
- package/node_modules/@appport/server/dist/connection.d.ts +45 -0
- package/node_modules/@appport/server/dist/connection.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/connection.js +217 -0
- package/node_modules/@appport/server/dist/connection.js.map +1 -0
- package/node_modules/@appport/server/dist/fetch.d.ts +10 -0
- package/node_modules/@appport/server/dist/fetch.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/fetch.js +50 -0
- package/node_modules/@appport/server/dist/fetch.js.map +1 -0
- package/node_modules/@appport/server/dist/http.d.ts +80 -0
- package/node_modules/@appport/server/dist/http.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/http.js +306 -0
- package/node_modules/@appport/server/dist/http.js.map +1 -0
- package/node_modules/@appport/server/dist/index.d.ts +11 -0
- package/node_modules/@appport/server/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/index.js +11 -0
- package/node_modules/@appport/server/dist/index.js.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts +4 -0
- package/node_modules/@appport/server/dist/node-entry.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node-entry.js +4 -0
- package/node_modules/@appport/server/dist/node-entry.js.map +1 -0
- package/node_modules/@appport/server/dist/node.d.ts +45 -0
- package/node_modules/@appport/server/dist/node.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/node.js +190 -0
- package/node_modules/@appport/server/dist/node.js.map +1 -0
- package/node_modules/@appport/server/dist/server.d.ts +83 -0
- package/node_modules/@appport/server/dist/server.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/server.js +114 -0
- package/node_modules/@appport/server/dist/server.js.map +1 -0
- package/node_modules/@appport/server/dist/websocket.d.ts +25 -0
- package/node_modules/@appport/server/dist/websocket.d.ts.map +1 -0
- package/node_modules/@appport/server/dist/websocket.js +221 -0
- package/node_modules/@appport/server/dist/websocket.js.map +1 -0
- package/node_modules/@appport/server/package.json +34 -0
- package/node_modules/@appport/transport-electron/README.md +56 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts +11 -0
- package/node_modules/@appport/transport-electron/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/index.js +11 -0
- package/node_modules/@appport/transport-electron/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts +31 -0
- package/node_modules/@appport/transport-electron/dist/main.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/main.js +61 -0
- package/node_modules/@appport/transport-electron/dist/main.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts +22 -0
- package/node_modules/@appport/transport-electron/dist/preload.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/preload.js +29 -0
- package/node_modules/@appport/transport-electron/dist/preload.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts +16 -0
- package/node_modules/@appport/transport-electron/dist/renderer.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js +36 -0
- package/node_modules/@appport/transport-electron/dist/renderer.js.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts +49 -0
- package/node_modules/@appport/transport-electron/dist/types.d.ts.map +1 -0
- package/node_modules/@appport/transport-electron/dist/types.js +5 -0
- package/node_modules/@appport/transport-electron/dist/types.js.map +1 -0
- package/node_modules/@appport/transport-electron/package.json +46 -0
- package/node_modules/@appport/transport-http/README.md +24 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts +18 -0
- package/node_modules/@appport/transport-http/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-http/dist/index.js +223 -0
- package/node_modules/@appport/transport-http/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-http/package.json +29 -0
- package/node_modules/@appport/transport-inprocess/README.md +24 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts +16 -0
- package/node_modules/@appport/transport-inprocess/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js +30 -0
- package/node_modules/@appport/transport-inprocess/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-inprocess/package.json +30 -0
- package/node_modules/@appport/transport-tauri/README.md +45 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts +23 -0
- package/node_modules/@appport/transport-tauri/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-tauri/dist/index.js +44 -0
- package/node_modules/@appport/transport-tauri/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-tauri/package.json +29 -0
- package/node_modules/@appport/transport-websocket/README.md +22 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts +26 -0
- package/node_modules/@appport/transport-websocket/dist/index.d.ts.map +1 -0
- package/node_modules/@appport/transport-websocket/dist/index.js +72 -0
- package/node_modules/@appport/transport-websocket/dist/index.js.map +1 -0
- package/node_modules/@appport/transport-websocket/package.json +29 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAuB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGlG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACtD,QAAQ,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGvE;AAmFD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGzE;AA6CD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,GAAG,mBAAmB,CAMrH;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB,CAyC5F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,GAAG,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAEzF"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Manifest (PR19)
|
|
3
|
+
*
|
|
4
|
+
* Canonical application identity and contract description.
|
|
5
|
+
*
|
|
6
|
+
* The manifest represents the externally meaningful boundary of an application:
|
|
7
|
+
* what it provides, what it requires, and the contract metadata.
|
|
8
|
+
*
|
|
9
|
+
* CRITICAL: The manifest contains NO implementation details:
|
|
10
|
+
* - No JavaScript functions
|
|
11
|
+
* - No handlers
|
|
12
|
+
* - No runtime closures
|
|
13
|
+
* - No filesystem paths
|
|
14
|
+
* - No process information
|
|
15
|
+
* - No secrets or credentials
|
|
16
|
+
* - No transport-specific bindings
|
|
17
|
+
*
|
|
18
|
+
* This allows the same application contract to be implemented in any language
|
|
19
|
+
* while maintaining an identical manifest, identity, and fingerprint.
|
|
20
|
+
*/
|
|
21
|
+
import { sha256 } from "./sha256.js";
|
|
22
|
+
/**
|
|
23
|
+
* Canonical manifest serialization.
|
|
24
|
+
*
|
|
25
|
+
* Deterministic JSON representation with:
|
|
26
|
+
* - Alphabetical property ordering
|
|
27
|
+
* - Sorted capability lists
|
|
28
|
+
* - Sorted requirement lists
|
|
29
|
+
* - Consistent formatting
|
|
30
|
+
*
|
|
31
|
+
* Equivalent manifests produce identical serializations.
|
|
32
|
+
*/
|
|
33
|
+
export function serializeManifest(manifest) {
|
|
34
|
+
const canonical = canonicalizeManifest(manifest);
|
|
35
|
+
return JSON.stringify(canonical);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Convert manifest to canonical form for serialization.
|
|
39
|
+
* Ensures deterministic property and array ordering.
|
|
40
|
+
*/
|
|
41
|
+
function canonicalizeManifest(manifest) {
|
|
42
|
+
return {
|
|
43
|
+
protocol: manifest.protocol,
|
|
44
|
+
application: {
|
|
45
|
+
id: manifest.application.id,
|
|
46
|
+
name: manifest.application.name,
|
|
47
|
+
version: manifest.application.version
|
|
48
|
+
},
|
|
49
|
+
...(manifest.metadata !== undefined ? { metadata: canonicalizeJson(manifest.metadata) } : {}),
|
|
50
|
+
provides: manifest.provides
|
|
51
|
+
.slice() // Copy to avoid mutation
|
|
52
|
+
.sort((a, b) => {
|
|
53
|
+
const nameComp = a.name.localeCompare(b.name);
|
|
54
|
+
return nameComp !== 0 ? nameComp : a.version - b.version;
|
|
55
|
+
})
|
|
56
|
+
.map(canonicalizeCapabilityManifest),
|
|
57
|
+
requires: manifest.requires
|
|
58
|
+
.slice() // Copy to avoid mutation
|
|
59
|
+
.sort((a, b) => {
|
|
60
|
+
const nameComp = a.name.localeCompare(b.name);
|
|
61
|
+
return nameComp !== 0 ? nameComp : a.version - b.version;
|
|
62
|
+
})
|
|
63
|
+
.map((r) => ({
|
|
64
|
+
name: r.name,
|
|
65
|
+
version: r.version,
|
|
66
|
+
...(r.versionConstraint !== undefined ? { versionConstraint: r.versionConstraint } : {}),
|
|
67
|
+
...(r.provider !== undefined ? { provider: r.provider } : {})
|
|
68
|
+
}))
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function canonicalizeJson(value) {
|
|
72
|
+
if (Array.isArray(value))
|
|
73
|
+
return value.map(canonicalizeJson);
|
|
74
|
+
if (value !== null && typeof value === "object") {
|
|
75
|
+
return Object.fromEntries(Object.keys(value).sort().map(key => [key, canonicalizeJson(value[key])]));
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Canonicalize a capability manifest entry.
|
|
81
|
+
*/
|
|
82
|
+
function canonicalizeCapabilityManifest(cap) {
|
|
83
|
+
const result = {
|
|
84
|
+
name: cap.name,
|
|
85
|
+
version: cap.version,
|
|
86
|
+
kind: cap.kind,
|
|
87
|
+
inputSchema: canonicalizeJson(cap.inputSchema),
|
|
88
|
+
outputSchema: canonicalizeJson(cap.outputSchema),
|
|
89
|
+
authorization: Array.from(cap.authorization).sort()
|
|
90
|
+
};
|
|
91
|
+
if (cap.description !== undefined) {
|
|
92
|
+
result.description = cap.description;
|
|
93
|
+
}
|
|
94
|
+
if (cap.idempotency !== undefined) {
|
|
95
|
+
result.idempotency = cap.idempotency;
|
|
96
|
+
}
|
|
97
|
+
if (cap.concurrency !== undefined) {
|
|
98
|
+
result.concurrency = {
|
|
99
|
+
mode: cap.concurrency.mode,
|
|
100
|
+
...(cap.concurrency.key !== undefined ? { key: cap.concurrency.key } : {})
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (cap.timeoutMs !== undefined) {
|
|
104
|
+
result.timeoutMs = cap.timeoutMs;
|
|
105
|
+
}
|
|
106
|
+
result.emits = Array.from(cap.emits).sort();
|
|
107
|
+
result.deprecated = cap.deprecated;
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Calculate deterministic fingerprint of a manifest.
|
|
112
|
+
*
|
|
113
|
+
* The fingerprint is a SHA256 hash of the canonical serialization.
|
|
114
|
+
* Identical application contracts produce identical fingerprints
|
|
115
|
+
* regardless of:
|
|
116
|
+
* - Implementation language
|
|
117
|
+
* - Declaration order
|
|
118
|
+
* - Implementation details
|
|
119
|
+
* - Runtime state
|
|
120
|
+
*
|
|
121
|
+
* The fingerprint CHANGES when:
|
|
122
|
+
* - Capability version changes
|
|
123
|
+
* - Authorization requirements change
|
|
124
|
+
* - Input/output schema changes
|
|
125
|
+
* - Concurrency policy changes
|
|
126
|
+
* - Timeouts change
|
|
127
|
+
* - Required capabilities change
|
|
128
|
+
* - Any contract metadata changes
|
|
129
|
+
*
|
|
130
|
+
* The fingerprint DOES NOT CHANGE when:
|
|
131
|
+
* - Implementation functions change
|
|
132
|
+
* - Handler logic changes
|
|
133
|
+
* - Declaration order changes
|
|
134
|
+
* - Only runtime state changes
|
|
135
|
+
*/
|
|
136
|
+
export function fingerprintManifest(manifest) {
|
|
137
|
+
const canonical = serializeManifest(manifest);
|
|
138
|
+
return sha256(canonical);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Convert a CapabilityDefinition to a CapabilityManifestEntry.
|
|
142
|
+
*
|
|
143
|
+
* Extracts contract information while excluding implementation details:
|
|
144
|
+
* - Excludes handler function
|
|
145
|
+
* - Excludes implementation binding
|
|
146
|
+
* - Preserves all contract metadata
|
|
147
|
+
*/
|
|
148
|
+
function capabilityToManifestEntry(capability) {
|
|
149
|
+
return {
|
|
150
|
+
name: capability.name,
|
|
151
|
+
version: capability.version,
|
|
152
|
+
kind: capability.kind,
|
|
153
|
+
...(capability.description ? { description: capability.description } : {}),
|
|
154
|
+
inputSchema: schemaToJsonValue(capability.input),
|
|
155
|
+
outputSchema: schemaToJsonValue(capability.output),
|
|
156
|
+
authorization: capability.authorization,
|
|
157
|
+
...(capability.idempotency ? { idempotency: capability.idempotency } : {}),
|
|
158
|
+
...(capability.concurrency ? { concurrency: capability.concurrency } : {}),
|
|
159
|
+
...(capability.timeoutMs ? { timeoutMs: capability.timeoutMs } : {}),
|
|
160
|
+
emits: capability.emits,
|
|
161
|
+
deprecated: capability.deprecated
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Convert a Schema to a JSON-serializable value.
|
|
166
|
+
* This is needed because Schema objects are not directly JSON-serializable.
|
|
167
|
+
*/
|
|
168
|
+
function schemaToJsonValue(schema) {
|
|
169
|
+
// Schemas have a toJSONSchema() method for serialization
|
|
170
|
+
if (typeof schema === "object" && schema !== null && "toJSONSchema" in schema) {
|
|
171
|
+
return schema.toJSONSchema();
|
|
172
|
+
}
|
|
173
|
+
// Fallback: convert to JSON string and parse (for direct JSON schemas)
|
|
174
|
+
if (typeof schema === "object" && schema !== null) {
|
|
175
|
+
return schema;
|
|
176
|
+
}
|
|
177
|
+
return schema;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Generate a canonical ApplicationManifest from a verified ApplicationAssembly.
|
|
181
|
+
*
|
|
182
|
+
* IMPORTANT: The assembly must be verified and ready before generating the manifest.
|
|
183
|
+
* A manifest should represent a coherent, ready-to-run application.
|
|
184
|
+
*
|
|
185
|
+
* If you need to generate a manifest from an invalid assembly for debugging,
|
|
186
|
+
* use generateManifestUnchecked() instead.
|
|
187
|
+
*/
|
|
188
|
+
export function generateManifest(assembly, verification) {
|
|
189
|
+
if (!verification.ready) {
|
|
190
|
+
throw new Error("Cannot generate manifest: application is not verified and ready. Call assembly.verify() first.");
|
|
191
|
+
}
|
|
192
|
+
return generateManifestUnchecked(assembly);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Generate an ApplicationManifest from an ApplicationAssembly without verification.
|
|
196
|
+
*
|
|
197
|
+
* WARNING: This generates a manifest even if the assembly is invalid.
|
|
198
|
+
* Only use this for debugging or testing invalid applications.
|
|
199
|
+
*
|
|
200
|
+
* For production code, use generateManifest() which requires verification.
|
|
201
|
+
*/
|
|
202
|
+
export function generateManifestUnchecked(assembly) {
|
|
203
|
+
const provides = [];
|
|
204
|
+
for (const capability of assembly.provides) {
|
|
205
|
+
provides.push(capabilityToManifestEntry(capability));
|
|
206
|
+
}
|
|
207
|
+
// Sort provides by name then version for determinism
|
|
208
|
+
provides.sort((a, b) => {
|
|
209
|
+
const nameComp = a.name.localeCompare(b.name);
|
|
210
|
+
return nameComp !== 0 ? nameComp : a.version - b.version;
|
|
211
|
+
});
|
|
212
|
+
const requires = [];
|
|
213
|
+
for (const required of assembly.requires) {
|
|
214
|
+
requires.push({
|
|
215
|
+
name: required.name,
|
|
216
|
+
version: required.version,
|
|
217
|
+
...(required.versionConstraint ? { versionConstraint: required.versionConstraint } : {}),
|
|
218
|
+
...(required.provider ? { provider: required.provider } : {})
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Sort requires by name then version for determinism
|
|
222
|
+
requires.sort((a, b) => {
|
|
223
|
+
const nameComp = a.name.localeCompare(b.name);
|
|
224
|
+
return nameComp !== 0 ? nameComp : a.version - b.version;
|
|
225
|
+
});
|
|
226
|
+
return {
|
|
227
|
+
protocol: "AppPort/1",
|
|
228
|
+
application: {
|
|
229
|
+
id: assembly.identity.id,
|
|
230
|
+
name: assembly.identity.name,
|
|
231
|
+
version: assembly.identity.version
|
|
232
|
+
},
|
|
233
|
+
...(assembly.metadata ? { metadata: assembly.metadata } : {}),
|
|
234
|
+
provides,
|
|
235
|
+
requires
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Convert a manifest to a JSON-compatible object suitable for serialization.
|
|
240
|
+
*
|
|
241
|
+
* This is equivalent to JSON.parse(serializeManifest(manifest)).
|
|
242
|
+
*/
|
|
243
|
+
export function manifestToJson(manifest) {
|
|
244
|
+
return JSON.parse(serializeManifest(manifest));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Verify that two manifests are semantically equivalent.
|
|
248
|
+
*
|
|
249
|
+
* Returns true if they describe the same application contract,
|
|
250
|
+
* regardless of declaration order or other non-semantic differences.
|
|
251
|
+
*/
|
|
252
|
+
export function manifestsAreEqual(a, b) {
|
|
253
|
+
return fingerprintManifest(a) === fingerprintManifest(b);
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Application Data Store (Testing)
|
|
3
|
+
*
|
|
4
|
+
* In-memory implementation of ApplicationDataStore for testing.
|
|
5
|
+
* Do NOT use in production.
|
|
6
|
+
*/
|
|
7
|
+
import type { ApplicationStateTransaction, ApplicationDataStore, CreateTransactionOptions } from "./state-context.js";
|
|
8
|
+
/**
|
|
9
|
+
* Memory-backed application data store for testing.
|
|
10
|
+
*
|
|
11
|
+
* Provides in-memory transaction management without persistence.
|
|
12
|
+
* Use only for testing and development.
|
|
13
|
+
*/
|
|
14
|
+
export declare class MemoryApplicationDataStore implements ApplicationDataStore {
|
|
15
|
+
#private;
|
|
16
|
+
createTransaction(options: CreateTransactionOptions): Promise<ApplicationStateTransaction>;
|
|
17
|
+
getTransaction(transactionId: string): Promise<ApplicationStateTransaction | undefined>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=memory-application-data-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-application-data-store.d.ts","sourceRoot":"","sources":["../src/memory-application-data-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,2BAA2B,EAE3B,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AAO5B;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;;IAI/D,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAa1F,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;CAG9F"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Application Data Store (Testing)
|
|
3
|
+
*
|
|
4
|
+
* In-memory implementation of ApplicationDataStore for testing.
|
|
5
|
+
* Do NOT use in production.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from "crypto";
|
|
8
|
+
import { ApplicationStateTransactionState as TransactionState, StateOperationError, TransactionStateError } from "./state-context.js";
|
|
9
|
+
/**
|
|
10
|
+
* Memory-backed application data store for testing.
|
|
11
|
+
*
|
|
12
|
+
* Provides in-memory transaction management without persistence.
|
|
13
|
+
* Use only for testing and development.
|
|
14
|
+
*/
|
|
15
|
+
export class MemoryApplicationDataStore {
|
|
16
|
+
#data = new Map();
|
|
17
|
+
#transactions = new Map();
|
|
18
|
+
async createTransaction(options) {
|
|
19
|
+
const transactionId = randomUUID();
|
|
20
|
+
const transaction = new MemoryStateTransaction(transactionId, options.applicationId, options.invocationId, this.#data, options.authorization);
|
|
21
|
+
this.#transactions.set(transactionId, transaction);
|
|
22
|
+
return transaction;
|
|
23
|
+
}
|
|
24
|
+
async getTransaction(transactionId) {
|
|
25
|
+
return this.#transactions.get(transactionId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Memory-backed state transaction.
|
|
30
|
+
*/
|
|
31
|
+
class MemoryStateTransaction {
|
|
32
|
+
#transactionId;
|
|
33
|
+
#applicationId;
|
|
34
|
+
#invocationId;
|
|
35
|
+
#appData;
|
|
36
|
+
#authorization;
|
|
37
|
+
#state = TransactionState.OPEN;
|
|
38
|
+
#writes = new Map();
|
|
39
|
+
#deletes = new Set();
|
|
40
|
+
constructor(transactionId, applicationId, invocationId, appData, authorization) {
|
|
41
|
+
this.#transactionId = transactionId;
|
|
42
|
+
this.#applicationId = applicationId;
|
|
43
|
+
this.#invocationId = invocationId;
|
|
44
|
+
this.#appData = appData;
|
|
45
|
+
this.#authorization = authorization;
|
|
46
|
+
}
|
|
47
|
+
get transactionId() {
|
|
48
|
+
return this.#transactionId;
|
|
49
|
+
}
|
|
50
|
+
get state() {
|
|
51
|
+
return this.#state;
|
|
52
|
+
}
|
|
53
|
+
get applicationId() {
|
|
54
|
+
return this.#applicationId;
|
|
55
|
+
}
|
|
56
|
+
get invocationId() {
|
|
57
|
+
return this.#invocationId;
|
|
58
|
+
}
|
|
59
|
+
async get(key) {
|
|
60
|
+
if (this.#state !== TransactionState.OPEN) {
|
|
61
|
+
throw new TransactionStateError(this.#state, "get");
|
|
62
|
+
}
|
|
63
|
+
if (!this.#authorization?.read) {
|
|
64
|
+
throw new StateOperationError("Read denied by authorization", "unauthorized");
|
|
65
|
+
}
|
|
66
|
+
if (this.#deletes.has(key)) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
if (this.#writes.has(key)) {
|
|
70
|
+
return this.#writes.get(key);
|
|
71
|
+
}
|
|
72
|
+
const appState = this.#appData.get(this.#applicationId);
|
|
73
|
+
return appState?.get(key);
|
|
74
|
+
}
|
|
75
|
+
async set(key, value) {
|
|
76
|
+
if (this.#state !== TransactionState.OPEN) {
|
|
77
|
+
throw new TransactionStateError(this.#state, "set");
|
|
78
|
+
}
|
|
79
|
+
if (!this.#authorization?.write) {
|
|
80
|
+
throw new StateOperationError("Write denied by authorization", "unauthorized");
|
|
81
|
+
}
|
|
82
|
+
if (typeof key !== "string" || !key) {
|
|
83
|
+
throw new StateOperationError("Key must be a non-empty string", "invalid_key");
|
|
84
|
+
}
|
|
85
|
+
this.#writes.set(key, value);
|
|
86
|
+
this.#deletes.delete(key);
|
|
87
|
+
}
|
|
88
|
+
async delete(key) {
|
|
89
|
+
if (this.#state !== TransactionState.OPEN) {
|
|
90
|
+
throw new TransactionStateError(this.#state, "delete");
|
|
91
|
+
}
|
|
92
|
+
if (!this.#authorization?.delete) {
|
|
93
|
+
throw new StateOperationError("Delete denied by authorization", "unauthorized");
|
|
94
|
+
}
|
|
95
|
+
if (typeof key !== "string" || !key) {
|
|
96
|
+
throw new StateOperationError("Key must be a non-empty string", "invalid_key");
|
|
97
|
+
}
|
|
98
|
+
this.#deletes.add(key);
|
|
99
|
+
this.#writes.delete(key);
|
|
100
|
+
}
|
|
101
|
+
async query(pattern, limit) {
|
|
102
|
+
if (this.#state !== TransactionState.OPEN) {
|
|
103
|
+
throw new TransactionStateError(this.#state, "query");
|
|
104
|
+
}
|
|
105
|
+
if (!(this.#authorization?.query || this.#authorization?.read)) {
|
|
106
|
+
throw new StateOperationError("Query denied by authorization", "unauthorized");
|
|
107
|
+
}
|
|
108
|
+
const results = [];
|
|
109
|
+
const appState = this.#appData.get(this.#applicationId) ?? new Map();
|
|
110
|
+
// From durable storage
|
|
111
|
+
for (const [key, value] of appState) {
|
|
112
|
+
if (key.startsWith(pattern) && !this.#deletes.has(key)) {
|
|
113
|
+
const displayValue = this.#writes.has(key) ? this.#writes.get(key) : value;
|
|
114
|
+
results.push({ key, value: displayValue });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Add new writes not yet in durable storage
|
|
118
|
+
for (const [key, value] of this.#writes) {
|
|
119
|
+
if (key.startsWith(pattern) && !appState.has(key) && !this.#deletes.has(key)) {
|
|
120
|
+
results.push({ key, value });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (limit) {
|
|
124
|
+
return results.slice(0, limit);
|
|
125
|
+
}
|
|
126
|
+
return results;
|
|
127
|
+
}
|
|
128
|
+
async commit() {
|
|
129
|
+
if (this.#state === TransactionState.COMMITTED) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (this.#state === TransactionState.ABORTED) {
|
|
133
|
+
throw new TransactionStateError(this.#state, "commit");
|
|
134
|
+
}
|
|
135
|
+
// Persist writes
|
|
136
|
+
let appState = this.#appData.get(this.#applicationId);
|
|
137
|
+
if (!appState) {
|
|
138
|
+
appState = new Map();
|
|
139
|
+
this.#appData.set(this.#applicationId, appState);
|
|
140
|
+
}
|
|
141
|
+
for (const [key, value] of this.#writes) {
|
|
142
|
+
appState.set(key, value);
|
|
143
|
+
}
|
|
144
|
+
for (const key of this.#deletes) {
|
|
145
|
+
appState.delete(key);
|
|
146
|
+
}
|
|
147
|
+
this.#state = TransactionState.COMMITTED;
|
|
148
|
+
}
|
|
149
|
+
async abort() {
|
|
150
|
+
if (this.#state === TransactionState.ABORTED) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (this.#state === TransactionState.COMMITTED) {
|
|
154
|
+
throw new TransactionStateError(this.#state, "abort");
|
|
155
|
+
}
|
|
156
|
+
this.#writes.clear();
|
|
157
|
+
this.#deletes.clear();
|
|
158
|
+
this.#state = TransactionState.ABORTED;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=memory-application-data-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-application-data-store.js","sourceRoot":"","sources":["../src/memory-application-data-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAQpC,OAAO,EACL,gCAAgC,IAAI,gBAAgB,EACpD,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAC5B,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAChD,aAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;IAEnE,KAAK,CAAC,iBAAiB,CAAC,OAAiC;QACvD,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAC5C,aAAa,EACb,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,YAAY,EACpB,IAAI,CAAC,KAAK,EACV,OAAO,CAAC,aAAa,CACtB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,sBAAsB;IACjB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,aAAa,CAAS;IACtB,QAAQ,CAAoC;IAC5C,cAAc,CAA2C;IAElE,MAAM,GAAqC,gBAAgB,CAAC,IAAI,CAAC;IACjE,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IACrC,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7B,YACE,aAAqB,EACrB,aAAqB,EACrB,YAAoB,EACpB,OAA0C,EAC1C,aAA4C;QAE5C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,OAAO,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc;QACnC,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,mBAAmB,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,EAAE,aAAa,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,EAAE,cAAc,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,EAAE,aAAa,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,KAAc;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,mBAAmB,CAAC,+BAA+B,EAAE,cAAc,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,OAAO,GAAsC,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAErE,uBAAuB;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7E,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QAED,iBAAiB;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type JsonValue, type OperationRecord, type OperationRef, type OperationStatus } from "@appport/protocol";
|
|
2
|
+
import { type AnyCapability } from "./capability.js";
|
|
3
|
+
/**
|
|
4
|
+
* Long-running operations (specification §47).
|
|
5
|
+
*
|
|
6
|
+
* A capability that cannot finish inside one request/response exchange returns
|
|
7
|
+
* an {@link OperationRef}; progress is then observed through the standard
|
|
8
|
+
* `operations.*` capabilities instead of by holding a transport open.
|
|
9
|
+
*/
|
|
10
|
+
export interface CreateOperationInput {
|
|
11
|
+
capability: string;
|
|
12
|
+
attributes?: Record<string, JsonValue>;
|
|
13
|
+
operationId?: string;
|
|
14
|
+
}
|
|
15
|
+
export type OperationPatch = Partial<Pick<OperationRecord, "status" | "progress" | "result" | "error" | "attributes">>;
|
|
16
|
+
export type OperationListener = (record: OperationRecord) => void;
|
|
17
|
+
export interface OperationStore {
|
|
18
|
+
create(input: CreateOperationInput): Promise<OperationRecord>;
|
|
19
|
+
get(operationId: string): Promise<OperationRecord | undefined>;
|
|
20
|
+
update(operationId: string, patch: OperationPatch): Promise<OperationRecord>;
|
|
21
|
+
list(): Promise<OperationRecord[]>;
|
|
22
|
+
/** Notifies on every state change; used by `operations.events`. */
|
|
23
|
+
subscribe(listener: OperationListener): () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare class MemoryOperationStore implements OperationStore {
|
|
26
|
+
#private;
|
|
27
|
+
create(input: CreateOperationInput): Promise<OperationRecord>;
|
|
28
|
+
get(operationId: string): Promise<OperationRecord | undefined>;
|
|
29
|
+
update(operationId: string, patch: OperationPatch): Promise<OperationRecord>;
|
|
30
|
+
list(): Promise<OperationRecord[]>;
|
|
31
|
+
subscribe(listener: OperationListener): () => void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Runs work in the background against an {@link OperationStore}, returning the
|
|
35
|
+
* reference a capability should answer with.
|
|
36
|
+
*/
|
|
37
|
+
export declare class OperationRunner {
|
|
38
|
+
#private;
|
|
39
|
+
constructor(store: OperationStore);
|
|
40
|
+
get store(): OperationStore;
|
|
41
|
+
start(capability: string, work: (context: {
|
|
42
|
+
operationId: string;
|
|
43
|
+
signal: AbortSignal;
|
|
44
|
+
progress: (value: number) => Promise<void>;
|
|
45
|
+
}) => Promise<JsonValue | void>, options?: {
|
|
46
|
+
attributes?: Record<string, JsonValue>;
|
|
47
|
+
}): Promise<OperationRef>;
|
|
48
|
+
/** Best-effort cancellation (§21). */
|
|
49
|
+
cancel(operationId: string): Promise<OperationStatus>;
|
|
50
|
+
}
|
|
51
|
+
export interface OperationCapabilityOptions {
|
|
52
|
+
/** Permission required to observe and cancel operations. */
|
|
53
|
+
authorization?: readonly string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The standard `operations.status`, `operations.cancel` and `operations.events`
|
|
57
|
+
* capabilities (§47). Registering them makes long-running work observable
|
|
58
|
+
* through the same protocol as everything else.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createOperationCapabilities(runner: OperationRunner, options?: OperationCapabilityOptions): AnyCapability[];
|
|
61
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../src/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAI/F;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AAEvH,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9D,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IAC/D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACnC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;CACpD;AAED,qBAAa,oBAAqB,YAAW,cAAc;;IAInD,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAe7D,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAI9D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAa5E,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIxC,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;CAcnD;AAED;;;GAGG;AACH,qBAAa,eAAe;;gBAId,KAAK,EAAE,cAAc;IAIjC,IAAI,KAAK,IAAI,cAAc,CAE1B;IAEK,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,EACtI,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;KAAO,GACvD,OAAO,CAAC,YAAY,CAAC;IAyCxB,sCAAsC;IAChC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAQ5D;AAqBD,MAAM,WAAW,0BAA0B;IACzC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,0BAA+B,GACvC,aAAa,EAAE,CAuEjB"}
|