@qlever-llc/trellis 0.8.4 → 0.9.0-rc.2
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/README.md +1 -1
- package/esm/auth/browser/login.d.ts.map +1 -1
- package/esm/auth/browser/login.js +46 -3
- package/esm/auth/browser/portal.d.ts.map +1 -1
- package/esm/auth/browser/portal.js +5 -1
- package/esm/auth/browser/session.d.ts +18 -7
- package/esm/auth/browser/session.d.ts.map +1 -1
- package/esm/auth/browser/session.js +47 -11
- package/esm/auth/browser/storage.d.ts +6 -1
- package/esm/auth/browser/storage.d.ts.map +1 -1
- package/esm/auth/browser/storage.js +15 -3
- package/esm/auth/browser.d.ts +2 -2
- package/esm/auth/browser.d.ts.map +1 -1
- package/esm/auth/browser.js +1 -1
- package/esm/auth/device_activation.d.ts +36 -33
- package/esm/auth/device_activation.d.ts.map +1 -1
- package/esm/auth/device_activation.js +26 -22
- package/esm/auth/mod.d.ts +4 -4
- package/esm/auth/mod.d.ts.map +1 -1
- package/esm/auth/mod.js +2 -2
- package/esm/auth/proof.d.ts +3 -1
- package/esm/auth/proof.d.ts.map +1 -1
- package/esm/auth/proof.js +21 -15
- package/esm/auth/protocol.d.ts +2457 -941
- package/esm/auth/protocol.d.ts.map +1 -1
- package/esm/auth/protocol.js +747 -375
- package/esm/auth/schemas.d.ts +25 -4
- package/esm/auth/schemas.d.ts.map +1 -1
- package/esm/auth/schemas.js +14 -4
- package/esm/auth/session_auth.d.ts +1 -1
- package/esm/auth/session_auth.d.ts.map +1 -1
- package/esm/auth/session_auth.js +7 -1
- package/esm/client_connect.d.ts +2 -0
- package/esm/client_connect.d.ts.map +1 -1
- package/esm/client_connect.js +76 -15
- package/esm/contract.d.ts +3 -0
- package/esm/contract.d.ts.map +1 -1
- package/esm/contract_support/mod.d.ts +422 -43
- package/esm/contract_support/mod.d.ts.map +1 -1
- package/esm/contract_support/mod.js +734 -33
- package/esm/contract_support/protocol.d.ts +20 -5
- package/esm/contract_support/protocol.d.ts.map +1 -1
- package/esm/contract_support/protocol.js +18 -10
- package/esm/contract_support/runtime.d.ts +11 -0
- package/esm/contract_support/runtime.d.ts.map +1 -1
- package/esm/contract_support/schema_pointers.d.ts.map +1 -1
- package/esm/contract_support/schema_pointers.js +32 -14
- package/esm/device.d.ts +2 -0
- package/esm/device.d.ts.map +1 -1
- package/esm/device.js +3 -0
- package/esm/errors/AuthError.d.ts +1 -1
- package/esm/errors/AuthError.d.ts.map +1 -1
- package/esm/errors/AuthError.js +5 -1
- package/esm/errors/index.d.ts +4 -4
- package/esm/generated-sdk/auth/api.d.ts +27 -9
- package/esm/generated-sdk/auth/api.d.ts.map +1 -1
- package/esm/generated-sdk/auth/api.js +16 -590
- package/esm/generated-sdk/auth/client.d.ts +91 -85
- package/esm/generated-sdk/auth/client.d.ts.map +1 -1
- package/esm/generated-sdk/auth/contract.d.ts +1 -1
- package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
- package/esm/generated-sdk/auth/contract.js +4 -2
- package/esm/generated-sdk/auth/mod.d.ts +1 -0
- package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
- package/esm/generated-sdk/auth/owned_api.d.ts +3 -0
- package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -0
- package/esm/generated-sdk/auth/owned_api.js +594 -0
- package/esm/generated-sdk/auth/schemas.d.ts +9959 -5160
- package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/auth/schemas.js +136 -137
- package/esm/generated-sdk/auth/types.d.ts +2418 -1557
- package/esm/generated-sdk/auth/types.d.ts.map +1 -1
- package/esm/generated-sdk/auth/types.js +1 -1
- package/esm/generated-sdk/health/api.d.ts +24 -9
- package/esm/generated-sdk/health/api.d.ts.map +1 -1
- package/esm/generated-sdk/health/api.js +12 -20
- package/esm/generated-sdk/health/client.d.ts +2 -1
- package/esm/generated-sdk/health/client.d.ts.map +1 -1
- package/esm/generated-sdk/health/contract.d.ts.map +1 -1
- package/esm/generated-sdk/health/contract.js +2 -0
- package/esm/generated-sdk/health/owned_api.d.ts +3 -0
- package/esm/generated-sdk/health/owned_api.d.ts.map +1 -0
- package/esm/generated-sdk/health/owned_api.js +16 -0
- package/esm/generated-sdk/health/types.d.ts +2 -0
- package/esm/generated-sdk/health/types.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/api.d.ts +33 -9
- package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/api.js +22 -87
- package/esm/generated-sdk/jobs/client.d.ts +9 -2
- package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/contract.d.ts +1 -1
- package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/contract.js +4 -2
- package/esm/generated-sdk/jobs/owned_api.d.ts +3 -0
- package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -0
- package/esm/generated-sdk/jobs/owned_api.js +118 -0
- package/esm/generated-sdk/jobs/schemas.d.ts +336 -123
- package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/schemas.js +17 -15
- package/esm/generated-sdk/jobs/types.d.ts +144 -34
- package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
- package/esm/generated-sdk/jobs/types.js +36 -1
- package/esm/generated-sdk/state/api.d.ts +27 -9
- package/esm/generated-sdk/state/api.d.ts.map +1 -1
- package/esm/generated-sdk/state/api.js +16 -71
- package/esm/generated-sdk/state/client.d.ts +4 -2
- package/esm/generated-sdk/state/client.d.ts.map +1 -1
- package/esm/generated-sdk/state/contract.d.ts +1 -1
- package/esm/generated-sdk/state/contract.d.ts.map +1 -1
- package/esm/generated-sdk/state/contract.js +4 -2
- package/esm/generated-sdk/state/owned_api.d.ts +3 -0
- package/esm/generated-sdk/state/owned_api.d.ts.map +1 -0
- package/esm/generated-sdk/state/owned_api.js +66 -0
- package/esm/generated-sdk/state/schemas.d.ts +264 -284
- package/esm/generated-sdk/state/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/state/schemas.js +6 -6
- package/esm/generated-sdk/state/types.d.ts +24 -23
- package/esm/generated-sdk/state/types.d.ts.map +1 -1
- package/esm/generated-sdk/state/types.js +1 -1
- package/esm/generated-sdk/trellis-core/api.d.ts +27 -9
- package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/api.js +16 -39
- package/esm/generated-sdk/trellis-core/client.d.ts +5 -2
- package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/contract.d.ts +1 -1
- package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/contract.js +4 -2
- package/esm/generated-sdk/trellis-core/owned_api.d.ts +3 -0
- package/esm/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
- package/esm/generated-sdk/trellis-core/owned_api.js +42 -0
- package/esm/generated-sdk/trellis-core/schemas.d.ts +259 -11
- package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/schemas.js +5 -3
- package/esm/generated-sdk/trellis-core/types.d.ts +56 -1
- package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
- package/esm/generated-sdk/trellis-core/types.js +1 -1
- package/esm/helpers.d.ts.map +1 -1
- package/esm/index.d.ts +4 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/jobs.d.ts +10 -1
- package/esm/jobs.d.ts.map +1 -1
- package/esm/jobs.js +16 -1
- package/esm/kv.d.ts.map +1 -1
- package/esm/kv.js +10 -4
- package/esm/models/auth/rpc/Logout.d.ts +4 -4
- package/esm/models/auth/rpc/Logout.d.ts.map +1 -1
- package/esm/models/auth/rpc/Logout.js +2 -2
- package/esm/models/trellis/Page.d.ts +2 -0
- package/esm/models/trellis/Page.d.ts.map +1 -0
- package/esm/models/trellis/Page.js +1 -0
- package/esm/models/trellis/State.d.ts +1 -0
- package/esm/models/trellis/State.d.ts.map +1 -1
- package/esm/models/trellis/State.js +1 -0
- package/esm/models/trellis/rpc/StateList.d.ts +9 -12
- package/esm/models/trellis/rpc/StateList.d.ts.map +1 -1
- package/esm/models/trellis/rpc/StateList.js +16 -18
- package/esm/npm/src/auth/browser/login.d.ts.map +1 -1
- package/esm/npm/src/auth/browser/login.js +46 -3
- package/esm/npm/src/auth/browser/portal.d.ts.map +1 -1
- package/esm/npm/src/auth/browser/portal.js +5 -1
- package/esm/npm/src/auth/browser/session.d.ts +18 -7
- package/esm/npm/src/auth/browser/session.d.ts.map +1 -1
- package/esm/npm/src/auth/browser/session.js +47 -11
- package/esm/npm/src/auth/browser/storage.d.ts +6 -1
- package/esm/npm/src/auth/browser/storage.d.ts.map +1 -1
- package/esm/npm/src/auth/browser/storage.js +15 -3
- package/esm/npm/src/auth/browser.d.ts +2 -2
- package/esm/npm/src/auth/browser.d.ts.map +1 -1
- package/esm/npm/src/auth/browser.js +1 -1
- package/esm/npm/src/auth/device_activation.d.ts +36 -33
- package/esm/npm/src/auth/device_activation.d.ts.map +1 -1
- package/esm/npm/src/auth/device_activation.js +26 -22
- package/esm/npm/src/auth/mod.d.ts +4 -4
- package/esm/npm/src/auth/mod.d.ts.map +1 -1
- package/esm/npm/src/auth/mod.js +2 -2
- package/esm/npm/src/auth/proof.d.ts +3 -1
- package/esm/npm/src/auth/proof.d.ts.map +1 -1
- package/esm/npm/src/auth/proof.js +21 -15
- package/esm/npm/src/auth/protocol.d.ts +2457 -941
- package/esm/npm/src/auth/protocol.d.ts.map +1 -1
- package/esm/npm/src/auth/protocol.js +747 -375
- package/esm/npm/src/auth/schemas.d.ts +25 -4
- package/esm/npm/src/auth/schemas.d.ts.map +1 -1
- package/esm/npm/src/auth/schemas.js +14 -4
- package/esm/npm/src/auth/session_auth.d.ts +1 -1
- package/esm/npm/src/auth/session_auth.d.ts.map +1 -1
- package/esm/npm/src/auth/session_auth.js +7 -1
- package/esm/npm/src/client_connect.d.ts +2 -0
- package/esm/npm/src/client_connect.d.ts.map +1 -1
- package/esm/npm/src/client_connect.js +76 -15
- package/esm/npm/src/contract.d.ts +3 -0
- package/esm/npm/src/contract.d.ts.map +1 -1
- package/esm/npm/src/contract_support/mod.d.ts +422 -43
- package/esm/npm/src/contract_support/mod.d.ts.map +1 -1
- package/esm/npm/src/contract_support/mod.js +734 -33
- package/esm/npm/src/contract_support/protocol.d.ts +20 -5
- package/esm/npm/src/contract_support/protocol.d.ts.map +1 -1
- package/esm/npm/src/contract_support/protocol.js +18 -10
- package/esm/npm/src/contract_support/runtime.d.ts +11 -0
- package/esm/npm/src/contract_support/runtime.d.ts.map +1 -1
- package/esm/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
- package/esm/npm/src/contract_support/schema_pointers.js +32 -14
- package/esm/npm/src/device/deno.d.ts.map +1 -1
- package/esm/npm/src/device/deno.js +6 -0
- package/esm/npm/src/device.d.ts +2 -0
- package/esm/npm/src/device.d.ts.map +1 -1
- package/esm/npm/src/device.js +3 -0
- package/esm/npm/src/errors/AuthError.d.ts +1 -1
- package/esm/npm/src/errors/AuthError.d.ts.map +1 -1
- package/esm/npm/src/errors/AuthError.js +5 -1
- package/esm/npm/src/errors/index.d.ts +4 -4
- package/esm/npm/src/generate.js +2 -19
- package/esm/npm/src/helpers.d.ts.map +1 -1
- package/esm/npm/src/index.d.ts +4 -3
- package/esm/npm/src/index.d.ts.map +1 -1
- package/esm/npm/src/index.js +1 -0
- package/esm/npm/src/jobs.d.ts +10 -1
- package/esm/npm/src/jobs.d.ts.map +1 -1
- package/esm/npm/src/jobs.js +16 -1
- package/esm/npm/src/kv.d.ts.map +1 -1
- package/esm/npm/src/kv.js +10 -4
- package/esm/npm/src/models/auth/rpc/Logout.d.ts +4 -4
- package/esm/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
- package/esm/npm/src/models/auth/rpc/Logout.js +2 -2
- package/esm/npm/src/models/trellis/Page.d.ts +2 -0
- package/esm/npm/src/models/trellis/Page.d.ts.map +1 -0
- package/esm/npm/src/models/trellis/Page.js +1 -0
- package/esm/npm/src/models/trellis/State.d.ts +1 -0
- package/esm/npm/src/models/trellis/State.d.ts.map +1 -1
- package/esm/npm/src/models/trellis/State.js +1 -0
- package/esm/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
- package/esm/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
- package/esm/npm/src/models/trellis/rpc/StateList.js +16 -18
- package/esm/npm/src/operations.d.ts +16 -7
- package/esm/npm/src/operations.d.ts.map +1 -1
- package/esm/npm/src/operations.js +84 -19
- package/esm/npm/src/runtime_transport.d.ts +2 -0
- package/esm/npm/src/runtime_transport.d.ts.map +1 -1
- package/esm/npm/src/runtime_transport.js +1 -0
- package/esm/npm/src/server/internal_jobs/active-job.d.ts +2 -1
- package/esm/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
- package/esm/npm/src/server/internal_jobs/active-job.js +3 -0
- package/esm/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
- package/esm/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
- package/esm/npm/src/server/internal_jobs/job-manager.js +61 -1
- package/esm/npm/src/server/internal_jobs/projection.js +1 -0
- package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
- package/esm/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
- package/esm/npm/src/server/internal_jobs/runtime-worker.js +73 -13
- package/esm/npm/src/server/internal_jobs/types.d.ts +19 -0
- package/esm/npm/src/server/internal_jobs/types.d.ts.map +1 -1
- package/esm/npm/src/server/internal_jobs/types.js +10 -0
- package/esm/npm/src/server/runtime.d.ts +1 -0
- package/esm/npm/src/server/runtime.d.ts.map +1 -1
- package/esm/npm/src/server/service.d.ts +10 -1
- package/esm/npm/src/server/service.d.ts.map +1 -1
- package/esm/npm/src/server/service.js +190 -64
- package/esm/npm/src/server/transfer.d.ts.map +1 -1
- package/esm/npm/src/server/transfer.js +4 -0
- package/esm/npm/src/server.d.ts.map +1 -1
- package/esm/npm/src/server.js +337 -34
- package/esm/npm/src/store.d.ts +8 -1
- package/esm/npm/src/store.d.ts.map +1 -1
- package/esm/npm/src/store.js +46 -8
- package/esm/npm/src/transfer.d.ts +3 -0
- package/esm/npm/src/transfer.d.ts.map +1 -1
- package/esm/npm/src/transfer.js +20 -30
- package/esm/npm/src/trellis.d.ts +85 -22
- package/esm/npm/src/trellis.d.ts.map +1 -1
- package/esm/npm/src/trellis.js +525 -61
- package/esm/operations.d.ts +16 -7
- package/esm/operations.d.ts.map +1 -1
- package/esm/operations.js +84 -19
- package/esm/runtime_transport.d.ts +2 -0
- package/esm/runtime_transport.d.ts.map +1 -1
- package/esm/runtime_transport.js +1 -0
- package/esm/store.d.ts +8 -1
- package/esm/store.d.ts.map +1 -1
- package/esm/store.js +46 -8
- package/esm/transfer.d.ts +3 -0
- package/esm/transfer.d.ts.map +1 -1
- package/esm/transfer.js +20 -30
- package/esm/trellis.d.ts +85 -22
- package/esm/trellis.d.ts.map +1 -1
- package/esm/trellis.js +525 -61
- package/package.json +6 -3
- package/script/auth/browser/login.d.ts.map +1 -1
- package/script/auth/browser/login.js +46 -3
- package/script/auth/browser/portal.d.ts.map +1 -1
- package/script/auth/browser/portal.js +5 -1
- package/script/auth/browser/session.d.ts +18 -7
- package/script/auth/browser/session.d.ts.map +1 -1
- package/script/auth/browser/session.js +47 -11
- package/script/auth/browser/storage.d.ts +6 -1
- package/script/auth/browser/storage.d.ts.map +1 -1
- package/script/auth/browser/storage.js +15 -3
- package/script/auth/browser.d.ts +2 -2
- package/script/auth/browser.d.ts.map +1 -1
- package/script/auth/browser.js +2 -1
- package/script/auth/device_activation.d.ts +36 -33
- package/script/auth/device_activation.d.ts.map +1 -1
- package/script/auth/device_activation.js +25 -21
- package/script/auth/mod.d.ts +4 -4
- package/script/auth/mod.d.ts.map +1 -1
- package/script/auth/mod.js +132 -137
- package/script/auth/proof.d.ts +3 -1
- package/script/auth/proof.d.ts.map +1 -1
- package/script/auth/proof.js +21 -15
- package/script/auth/protocol.d.ts +2457 -941
- package/script/auth/protocol.d.ts.map +1 -1
- package/script/auth/protocol.js +749 -377
- package/script/auth/schemas.d.ts +25 -4
- package/script/auth/schemas.d.ts.map +1 -1
- package/script/auth/schemas.js +16 -5
- package/script/auth/session_auth.d.ts +1 -1
- package/script/auth/session_auth.d.ts.map +1 -1
- package/script/auth/session_auth.js +7 -1
- package/script/client_connect.d.ts +2 -0
- package/script/client_connect.d.ts.map +1 -1
- package/script/client_connect.js +76 -15
- package/script/contract.d.ts +3 -0
- package/script/contract.d.ts.map +1 -1
- package/script/contract_support/mod.d.ts +422 -43
- package/script/contract_support/mod.d.ts.map +1 -1
- package/script/contract_support/mod.js +757 -51
- package/script/contract_support/protocol.d.ts +20 -5
- package/script/contract_support/protocol.d.ts.map +1 -1
- package/script/contract_support/protocol.js +20 -11
- package/script/contract_support/runtime.d.ts +11 -0
- package/script/contract_support/runtime.d.ts.map +1 -1
- package/script/contract_support/schema_pointers.d.ts.map +1 -1
- package/script/contract_support/schema_pointers.js +32 -14
- package/script/device.d.ts +2 -0
- package/script/device.d.ts.map +1 -1
- package/script/device.js +3 -0
- package/script/errors/AuthError.d.ts +1 -1
- package/script/errors/AuthError.d.ts.map +1 -1
- package/script/errors/AuthError.js +5 -1
- package/script/errors/index.d.ts +4 -4
- package/script/generated-sdk/auth/api.d.ts +27 -9
- package/script/generated-sdk/auth/api.d.ts.map +1 -1
- package/script/generated-sdk/auth/api.js +17 -591
- package/script/generated-sdk/auth/client.d.ts +91 -85
- package/script/generated-sdk/auth/client.d.ts.map +1 -1
- package/script/generated-sdk/auth/contract.d.ts +1 -1
- package/script/generated-sdk/auth/contract.d.ts.map +1 -1
- package/script/generated-sdk/auth/contract.js +4 -2
- package/script/generated-sdk/auth/mod.d.ts +1 -0
- package/script/generated-sdk/auth/mod.d.ts.map +1 -1
- package/script/generated-sdk/auth/owned_api.d.ts +3 -0
- package/script/generated-sdk/auth/owned_api.d.ts.map +1 -0
- package/script/generated-sdk/auth/owned_api.js +597 -0
- package/script/generated-sdk/auth/schemas.d.ts +9959 -5160
- package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
- package/script/generated-sdk/auth/schemas.js +139 -140
- package/script/generated-sdk/auth/types.d.ts +2418 -1557
- package/script/generated-sdk/auth/types.d.ts.map +1 -1
- package/script/generated-sdk/auth/types.js +1 -1
- package/script/generated-sdk/health/api.d.ts +24 -9
- package/script/generated-sdk/health/api.d.ts.map +1 -1
- package/script/generated-sdk/health/api.js +13 -21
- package/script/generated-sdk/health/client.d.ts +2 -1
- package/script/generated-sdk/health/client.d.ts.map +1 -1
- package/script/generated-sdk/health/contract.d.ts.map +1 -1
- package/script/generated-sdk/health/contract.js +2 -0
- package/script/generated-sdk/health/owned_api.d.ts +3 -0
- package/script/generated-sdk/health/owned_api.d.ts.map +1 -0
- package/script/generated-sdk/health/owned_api.js +19 -0
- package/script/generated-sdk/health/types.d.ts +2 -0
- package/script/generated-sdk/health/types.d.ts.map +1 -1
- package/script/generated-sdk/jobs/api.d.ts +33 -9
- package/script/generated-sdk/jobs/api.d.ts.map +1 -1
- package/script/generated-sdk/jobs/api.js +23 -88
- package/script/generated-sdk/jobs/client.d.ts +9 -2
- package/script/generated-sdk/jobs/client.d.ts.map +1 -1
- package/script/generated-sdk/jobs/contract.d.ts +1 -1
- package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
- package/script/generated-sdk/jobs/contract.js +4 -2
- package/script/generated-sdk/jobs/owned_api.d.ts +3 -0
- package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -0
- package/script/generated-sdk/jobs/owned_api.js +154 -0
- package/script/generated-sdk/jobs/schemas.d.ts +336 -123
- package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
- package/script/generated-sdk/jobs/schemas.js +18 -16
- package/script/generated-sdk/jobs/types.d.ts +144 -34
- package/script/generated-sdk/jobs/types.d.ts.map +1 -1
- package/script/generated-sdk/jobs/types.js +38 -2
- package/script/generated-sdk/state/api.d.ts +27 -9
- package/script/generated-sdk/state/api.d.ts.map +1 -1
- package/script/generated-sdk/state/api.js +17 -72
- package/script/generated-sdk/state/client.d.ts +4 -2
- package/script/generated-sdk/state/client.d.ts.map +1 -1
- package/script/generated-sdk/state/contract.d.ts +1 -1
- package/script/generated-sdk/state/contract.d.ts.map +1 -1
- package/script/generated-sdk/state/contract.js +4 -2
- package/script/generated-sdk/state/owned_api.d.ts +3 -0
- package/script/generated-sdk/state/owned_api.d.ts.map +1 -0
- package/script/generated-sdk/state/owned_api.js +69 -0
- package/script/generated-sdk/state/schemas.d.ts +264 -284
- package/script/generated-sdk/state/schemas.d.ts.map +1 -1
- package/script/generated-sdk/state/schemas.js +6 -6
- package/script/generated-sdk/state/types.d.ts +24 -23
- package/script/generated-sdk/state/types.d.ts.map +1 -1
- package/script/generated-sdk/state/types.js +1 -1
- package/script/generated-sdk/trellis-core/api.d.ts +27 -9
- package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/api.js +17 -40
- package/script/generated-sdk/trellis-core/client.d.ts +5 -2
- package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/contract.d.ts +1 -1
- package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/contract.js +4 -2
- package/script/generated-sdk/trellis-core/owned_api.d.ts +3 -0
- package/script/generated-sdk/trellis-core/owned_api.d.ts.map +1 -0
- package/script/generated-sdk/trellis-core/owned_api.js +45 -0
- package/script/generated-sdk/trellis-core/schemas.d.ts +259 -11
- package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/schemas.js +6 -4
- package/script/generated-sdk/trellis-core/types.d.ts +56 -1
- package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
- package/script/generated-sdk/trellis-core/types.js +1 -1
- package/script/helpers.d.ts.map +1 -1
- package/script/index.d.ts +4 -3
- package/script/index.d.ts.map +1 -1
- package/script/index.js +5 -2
- package/script/jobs.d.ts +10 -1
- package/script/jobs.d.ts.map +1 -1
- package/script/jobs.js +17 -2
- package/script/kv.d.ts.map +1 -1
- package/script/kv.js +10 -4
- package/script/models/auth/rpc/Logout.d.ts +4 -4
- package/script/models/auth/rpc/Logout.d.ts.map +1 -1
- package/script/models/auth/rpc/Logout.js +3 -3
- package/script/models/trellis/Page.d.ts +2 -0
- package/script/models/trellis/Page.d.ts.map +1 -0
- package/script/models/trellis/Page.js +6 -0
- package/script/models/trellis/State.d.ts +1 -0
- package/script/models/trellis/State.d.ts.map +1 -1
- package/script/models/trellis/State.js +1 -0
- package/script/models/trellis/rpc/StateList.d.ts +9 -12
- package/script/models/trellis/rpc/StateList.d.ts.map +1 -1
- package/script/models/trellis/rpc/StateList.js +16 -18
- package/script/npm/src/auth/browser/login.d.ts.map +1 -1
- package/script/npm/src/auth/browser/login.js +46 -3
- package/script/npm/src/auth/browser/portal.d.ts.map +1 -1
- package/script/npm/src/auth/browser/portal.js +5 -1
- package/script/npm/src/auth/browser/session.d.ts +18 -7
- package/script/npm/src/auth/browser/session.d.ts.map +1 -1
- package/script/npm/src/auth/browser/session.js +47 -11
- package/script/npm/src/auth/browser/storage.d.ts +6 -1
- package/script/npm/src/auth/browser/storage.d.ts.map +1 -1
- package/script/npm/src/auth/browser/storage.js +15 -3
- package/script/npm/src/auth/browser.d.ts +2 -2
- package/script/npm/src/auth/browser.d.ts.map +1 -1
- package/script/npm/src/auth/browser.js +2 -1
- package/script/npm/src/auth/device_activation.d.ts +36 -33
- package/script/npm/src/auth/device_activation.d.ts.map +1 -1
- package/script/npm/src/auth/device_activation.js +25 -21
- package/script/npm/src/auth/mod.d.ts +4 -4
- package/script/npm/src/auth/mod.d.ts.map +1 -1
- package/script/npm/src/auth/mod.js +132 -137
- package/script/npm/src/auth/proof.d.ts +3 -1
- package/script/npm/src/auth/proof.d.ts.map +1 -1
- package/script/npm/src/auth/proof.js +21 -15
- package/script/npm/src/auth/protocol.d.ts +2457 -941
- package/script/npm/src/auth/protocol.d.ts.map +1 -1
- package/script/npm/src/auth/protocol.js +749 -377
- package/script/npm/src/auth/schemas.d.ts +25 -4
- package/script/npm/src/auth/schemas.d.ts.map +1 -1
- package/script/npm/src/auth/schemas.js +16 -5
- package/script/npm/src/auth/session_auth.d.ts +1 -1
- package/script/npm/src/auth/session_auth.d.ts.map +1 -1
- package/script/npm/src/auth/session_auth.js +7 -1
- package/script/npm/src/client_connect.d.ts +2 -0
- package/script/npm/src/client_connect.d.ts.map +1 -1
- package/script/npm/src/client_connect.js +76 -15
- package/script/npm/src/contract.d.ts +3 -0
- package/script/npm/src/contract.d.ts.map +1 -1
- package/script/npm/src/contract_support/mod.d.ts +422 -43
- package/script/npm/src/contract_support/mod.d.ts.map +1 -1
- package/script/npm/src/contract_support/mod.js +757 -51
- package/script/npm/src/contract_support/protocol.d.ts +20 -5
- package/script/npm/src/contract_support/protocol.d.ts.map +1 -1
- package/script/npm/src/contract_support/protocol.js +20 -11
- package/script/npm/src/contract_support/runtime.d.ts +11 -0
- package/script/npm/src/contract_support/runtime.d.ts.map +1 -1
- package/script/npm/src/contract_support/schema_pointers.d.ts.map +1 -1
- package/script/npm/src/contract_support/schema_pointers.js +32 -14
- package/script/npm/src/device/deno.d.ts.map +1 -1
- package/script/npm/src/device/deno.js +6 -0
- package/script/npm/src/device.d.ts +2 -0
- package/script/npm/src/device.d.ts.map +1 -1
- package/script/npm/src/device.js +3 -0
- package/script/npm/src/errors/AuthError.d.ts +1 -1
- package/script/npm/src/errors/AuthError.d.ts.map +1 -1
- package/script/npm/src/errors/AuthError.js +5 -1
- package/script/npm/src/errors/index.d.ts +4 -4
- package/script/npm/src/generate.js +2 -19
- package/script/npm/src/helpers.d.ts.map +1 -1
- package/script/npm/src/index.d.ts +4 -3
- package/script/npm/src/index.d.ts.map +1 -1
- package/script/npm/src/index.js +5 -2
- package/script/npm/src/jobs.d.ts +10 -1
- package/script/npm/src/jobs.d.ts.map +1 -1
- package/script/npm/src/jobs.js +17 -2
- package/script/npm/src/kv.d.ts.map +1 -1
- package/script/npm/src/kv.js +10 -4
- package/script/npm/src/models/auth/rpc/Logout.d.ts +4 -4
- package/script/npm/src/models/auth/rpc/Logout.d.ts.map +1 -1
- package/script/npm/src/models/auth/rpc/Logout.js +3 -3
- package/script/npm/src/models/trellis/Page.d.ts +2 -0
- package/script/npm/src/models/trellis/Page.d.ts.map +1 -0
- package/script/npm/src/models/trellis/Page.js +6 -0
- package/script/npm/src/models/trellis/State.d.ts +1 -0
- package/script/npm/src/models/trellis/State.d.ts.map +1 -1
- package/script/npm/src/models/trellis/State.js +1 -0
- package/script/npm/src/models/trellis/rpc/StateList.d.ts +9 -12
- package/script/npm/src/models/trellis/rpc/StateList.d.ts.map +1 -1
- package/script/npm/src/models/trellis/rpc/StateList.js +16 -18
- package/script/npm/src/operations.d.ts +16 -7
- package/script/npm/src/operations.d.ts.map +1 -1
- package/script/npm/src/operations.js +84 -19
- package/script/npm/src/runtime_transport.d.ts +2 -0
- package/script/npm/src/runtime_transport.d.ts.map +1 -1
- package/script/npm/src/runtime_transport.js +2 -1
- package/script/npm/src/server/internal_jobs/active-job.d.ts +2 -1
- package/script/npm/src/server/internal_jobs/active-job.d.ts.map +1 -1
- package/script/npm/src/server/internal_jobs/active-job.js +3 -0
- package/script/npm/src/server/internal_jobs/job-manager.d.ts +4 -1
- package/script/npm/src/server/internal_jobs/job-manager.d.ts.map +1 -1
- package/script/npm/src/server/internal_jobs/job-manager.js +61 -1
- package/script/npm/src/server/internal_jobs/projection.js +1 -0
- package/script/npm/src/server/internal_jobs/runtime-worker.d.ts +13 -1
- package/script/npm/src/server/internal_jobs/runtime-worker.d.ts.map +1 -1
- package/script/npm/src/server/internal_jobs/runtime-worker.js +74 -13
- package/script/npm/src/server/internal_jobs/types.d.ts +19 -0
- package/script/npm/src/server/internal_jobs/types.d.ts.map +1 -1
- package/script/npm/src/server/internal_jobs/types.js +11 -1
- package/script/npm/src/server/runtime.d.ts +1 -0
- package/script/npm/src/server/runtime.d.ts.map +1 -1
- package/script/npm/src/server/service.d.ts +10 -1
- package/script/npm/src/server/service.d.ts.map +1 -1
- package/script/npm/src/server/service.js +188 -62
- package/script/npm/src/server/transfer.d.ts.map +1 -1
- package/script/npm/src/server/transfer.js +4 -0
- package/script/npm/src/server.d.ts.map +1 -1
- package/script/npm/src/server.js +336 -33
- package/script/npm/src/store.d.ts +8 -1
- package/script/npm/src/store.d.ts.map +1 -1
- package/script/npm/src/store.js +46 -8
- package/script/npm/src/transfer.d.ts +3 -0
- package/script/npm/src/transfer.d.ts.map +1 -1
- package/script/npm/src/transfer.js +19 -29
- package/script/npm/src/trellis.d.ts +85 -22
- package/script/npm/src/trellis.d.ts.map +1 -1
- package/script/npm/src/trellis.js +525 -61
- package/script/operations.d.ts +16 -7
- package/script/operations.d.ts.map +1 -1
- package/script/operations.js +84 -19
- package/script/runtime_transport.d.ts +2 -0
- package/script/runtime_transport.d.ts.map +1 -1
- package/script/runtime_transport.js +2 -1
- package/script/store.d.ts +8 -1
- package/script/store.d.ts.map +1 -1
- package/script/store.js +46 -8
- package/script/transfer.d.ts +3 -0
- package/script/transfer.d.ts.map +1 -1
- package/script/transfer.js +19 -29
- package/script/trellis.d.ts +85 -22
- package/script/trellis.d.ts.map +1 -1
- package/script/trellis.js +525 -61
- package/esm/models/trellis/Paginate.d.ts +0 -7
- package/esm/models/trellis/Paginate.d.ts.map +0 -1
- package/esm/models/trellis/Paginate.js +0 -5
- package/esm/npm/src/models/trellis/Paginate.d.ts +0 -7
- package/esm/npm/src/models/trellis/Paginate.d.ts.map +0 -1
- package/esm/npm/src/models/trellis/Paginate.js +0 -5
- package/script/models/trellis/Paginate.d.ts +0 -7
- package/script/models/trellis/Paginate.d.ts.map +0 -1
- package/script/models/trellis/Paginate.js +0 -11
- package/script/npm/src/models/trellis/Paginate.d.ts +0 -7
- package/script/npm/src/models/trellis/Paginate.d.ts.map +0 -1
- package/script/npm/src/models/trellis/Paginate.js +0 -11
package/esm/npm/src/server.js
CHANGED
|
@@ -9,14 +9,27 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _TrellisServiceRuntime_instances, _TrellisServiceRuntime_version, _TrellisServiceRuntime_log, _TrellisServiceRuntime_operations, _TrellisServiceRuntime_mountedOperationControls, _TrellisServiceRuntime_stopPromise, _TrellisServiceRuntime_transferSupport, _TrellisServiceRuntime_resolveOperation, _TrellisServiceRuntime_applyOperationUpdate, _TrellisServiceRuntime_makeAcceptedOperation, _TrellisServiceRuntime_acceptOperation, _TrellisServiceRuntime_authenticateOperationMessage, _TrellisServiceRuntime_ensureOperationControlLoop;
|
|
12
|
+
var _TrellisServiceRuntime_instances, _TrellisServiceRuntime_version, _TrellisServiceRuntime_log, _TrellisServiceRuntime_operations, _TrellisServiceRuntime_mountedOperationControls, _TrellisServiceRuntime_stopPromise, _TrellisServiceRuntime_transferSupport, _TrellisServiceRuntime_signals, _TrellisServiceRuntime_nextSignal, _TrellisServiceRuntime_nextSignalAfter, _TrellisServiceRuntime_resolveOperation, _TrellisServiceRuntime_applyOperationUpdate, _TrellisServiceRuntime_validateOperationValue, _TrellisServiceRuntime_applyControlledOperationUpdate, _TrellisServiceRuntime_controlOperation, _TrellisServiceRuntime_makeControlledOperation, _TrellisServiceRuntime_makeAcceptedOperation, _TrellisServiceRuntime_controlAuthContext, _TrellisServiceRuntime_terminalSignalError, _TrellisServiceRuntime_unsupportedCancelError, _TrellisServiceRuntime_rejectSignalWaiters, _TrellisServiceRuntime_acceptSignal, _TrellisServiceRuntime_acceptOperation, _TrellisServiceRuntime_authenticateOperationMessage, _TrellisServiceRuntime_ensureOperationControlLoop;
|
|
13
13
|
import { Pointer } from "typebox/value";
|
|
14
14
|
import { AsyncResult, err, isErr, ok, } from "@qlever-llc/result";
|
|
15
15
|
import { ulid } from "ulid";
|
|
16
16
|
import { parseSchema } from "./codec.js";
|
|
17
|
-
import { AuthError, TransferError, UnexpectedError, } from "./errors/index.js";
|
|
17
|
+
import { AuthError, TransferError, UnexpectedError, ValidationError, } from "./errors/index.js";
|
|
18
18
|
import { serverLogger } from "./server_logger.js";
|
|
19
19
|
import { base64urlDecode, base64urlEncode, buildProofInput, buildRuntimeOperationSnapshot, isOperationDeferred, isResultLike, isTerminalRuntimeOperationSnapshot, safeJson, sha256, toArrayBuffer, Trellis, } from "./trellis.js";
|
|
20
|
+
function isJsonValue(value) {
|
|
21
|
+
if (value === null || typeof value === "string" || typeof value === "number" ||
|
|
22
|
+
typeof value === "boolean") {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(value))
|
|
26
|
+
return value.every(isJsonValue);
|
|
27
|
+
if (typeof value !== "object")
|
|
28
|
+
return false;
|
|
29
|
+
if (Object.getPrototypeOf(value) !== Object.prototype)
|
|
30
|
+
return false;
|
|
31
|
+
return Object.values(value).every(isJsonValue);
|
|
32
|
+
}
|
|
20
33
|
function asStringPointerValue(operation, input, pointer, field) {
|
|
21
34
|
const value = Pointer.Get(input, pointer);
|
|
22
35
|
if (typeof value !== "string" || value.length === 0) {
|
|
@@ -113,6 +126,8 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
113
126
|
cancel: (operationId) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, operationId, "cancelled", {
|
|
114
127
|
event: { type: "cancelled" },
|
|
115
128
|
}),
|
|
129
|
+
signals: (operationId) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, operationId),
|
|
130
|
+
nextSignal: (operationId, name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, operationId, name),
|
|
116
131
|
};
|
|
117
132
|
}
|
|
118
133
|
mountRuntime(method, fn) {
|
|
@@ -128,6 +143,10 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
128
143
|
throw new Error(`Unknown operation '${operation.toString()}'. Did you forget to include its API module?`);
|
|
129
144
|
}
|
|
130
145
|
return {
|
|
146
|
+
control: (operationId) => {
|
|
147
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_ensureOperationControlLoop).call(this, String(operation), ctx);
|
|
148
|
+
return __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_controlOperation).call(this, String(operation), ctx, operationId);
|
|
149
|
+
},
|
|
131
150
|
accept: ({ sessionKey }) => {
|
|
132
151
|
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_ensureOperationControlLoop).call(this, String(operation), ctx);
|
|
133
152
|
if (ctx.transfer) {
|
|
@@ -135,7 +154,7 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
135
154
|
cause: new Error(`Operation '${String(operation)}' uses transfer-capable start semantics and cannot be accepted manually`),
|
|
136
155
|
}));
|
|
137
156
|
}
|
|
138
|
-
return AsyncResult.from(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptOperation).call(this, String(operation), sessionKey));
|
|
157
|
+
return AsyncResult.from(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptOperation).call(this, String(operation), ctx, sessionKey));
|
|
139
158
|
},
|
|
140
159
|
handle: async (handler) => {
|
|
141
160
|
const startSubject = ctx.subject;
|
|
@@ -219,6 +238,7 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
219
238
|
snapshot,
|
|
220
239
|
});
|
|
221
240
|
await flushWaiters(runtime);
|
|
241
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
|
|
222
242
|
return ok(snapshot);
|
|
223
243
|
})()),
|
|
224
244
|
fail: (error) => AsyncResult.from((async () => {
|
|
@@ -238,6 +258,7 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
238
258
|
snapshot,
|
|
239
259
|
});
|
|
240
260
|
await flushWaiters(runtime);
|
|
261
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
|
|
241
262
|
return ok(snapshot);
|
|
242
263
|
})()),
|
|
243
264
|
cancel: () => AsyncResult.from((async () => {
|
|
@@ -256,6 +277,7 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
256
277
|
snapshot,
|
|
257
278
|
});
|
|
258
279
|
await flushWaiters(runtime);
|
|
280
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
|
|
259
281
|
return ok(snapshot);
|
|
260
282
|
})()),
|
|
261
283
|
attach: (job) => AsyncResult.from((async () => {
|
|
@@ -272,6 +294,8 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
272
294
|
}
|
|
273
295
|
return ok(finalRuntime.snapshot);
|
|
274
296
|
})()),
|
|
297
|
+
signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
|
|
298
|
+
nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
|
|
275
299
|
defer: () => ({ kind: "deferred" }),
|
|
276
300
|
};
|
|
277
301
|
};
|
|
@@ -292,14 +316,20 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
292
316
|
}
|
|
293
317
|
const sessionKey = msg.headers?.get("session-key");
|
|
294
318
|
const proof = msg.headers?.get("proof");
|
|
319
|
+
const iatHeader = msg.headers?.get("iat");
|
|
320
|
+
const requestId = msg.headers?.get("request-id");
|
|
295
321
|
if (!sessionKey) {
|
|
296
322
|
return err(new AuthError({ reason: "missing_session_key" }));
|
|
297
323
|
}
|
|
298
324
|
if (!proof)
|
|
299
325
|
return err(new AuthError({ reason: "missing_proof" }));
|
|
326
|
+
const iat = Number(iatHeader);
|
|
327
|
+
if (!Number.isSafeInteger(iat) || !requestId) {
|
|
328
|
+
return err(new AuthError({ reason: "invalid_signature" }));
|
|
329
|
+
}
|
|
300
330
|
const payloadBytes = msg.data ?? new Uint8Array();
|
|
301
331
|
const payloadHash = await sha256(payloadBytes);
|
|
302
|
-
const proofInput = buildProofInput(sessionKey, msg.subject, payloadHash);
|
|
332
|
+
const proofInput = buildProofInput(sessionKey, msg.subject, payloadHash, iat, requestId);
|
|
303
333
|
const digest = await sha256(proofInput);
|
|
304
334
|
const verifyResult = await AsyncResult.try(async () => {
|
|
305
335
|
const publicKeyRaw = base64urlDecode(sessionKey);
|
|
@@ -319,6 +349,8 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
319
349
|
proof,
|
|
320
350
|
subject: msg.subject,
|
|
321
351
|
payloadHash: base64urlEncode(payloadHash),
|
|
352
|
+
iat,
|
|
353
|
+
requestId,
|
|
322
354
|
capabilities: ctx.callerCapabilities
|
|
323
355
|
? [...ctx.callerCapabilities]
|
|
324
356
|
: undefined,
|
|
@@ -420,9 +452,12 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
420
452
|
updatedAt: createdAt,
|
|
421
453
|
},
|
|
422
454
|
sequence: 0,
|
|
455
|
+
signalSequence: 0,
|
|
456
|
+
signals: [],
|
|
423
457
|
terminal: false,
|
|
424
458
|
watchers: new Set(),
|
|
425
459
|
waiters: new Set(),
|
|
460
|
+
signalWaiters: new Set(),
|
|
426
461
|
};
|
|
427
462
|
__classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
|
|
428
463
|
await this.saveOperationRecord(runtime);
|
|
@@ -516,7 +551,57 @@ export class TrellisServiceRuntime extends Trellis {
|
|
|
516
551
|
await __classPrivateFieldGet(this, _TrellisServiceRuntime_stopPromise, "f");
|
|
517
552
|
}
|
|
518
553
|
}
|
|
519
|
-
_TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new WeakMap(), _TrellisServiceRuntime_operations = new WeakMap(), _TrellisServiceRuntime_mountedOperationControls = new WeakMap(), _TrellisServiceRuntime_stopPromise = new WeakMap(), _TrellisServiceRuntime_transferSupport = new WeakMap(), _TrellisServiceRuntime_instances = new WeakSet(),
|
|
554
|
+
_TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new WeakMap(), _TrellisServiceRuntime_operations = new WeakMap(), _TrellisServiceRuntime_mountedOperationControls = new WeakMap(), _TrellisServiceRuntime_stopPromise = new WeakMap(), _TrellisServiceRuntime_transferSupport = new WeakMap(), _TrellisServiceRuntime_instances = new WeakSet(), _TrellisServiceRuntime_signals = async function* _TrellisServiceRuntime_signals(operationId) {
|
|
555
|
+
let cursor = 0;
|
|
556
|
+
while (true) {
|
|
557
|
+
const next = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignalAfter).call(this, operationId, cursor).take();
|
|
558
|
+
if (isErr(next)) {
|
|
559
|
+
throw next.error;
|
|
560
|
+
}
|
|
561
|
+
cursor = next.sequence;
|
|
562
|
+
yield next;
|
|
563
|
+
}
|
|
564
|
+
}, _TrellisServiceRuntime_nextSignal = function _TrellisServiceRuntime_nextSignal(operationId, name) {
|
|
565
|
+
return AsyncResult.from((async () => {
|
|
566
|
+
let cursor = 0;
|
|
567
|
+
while (true) {
|
|
568
|
+
const next = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignalAfter).call(this, operationId, cursor).take();
|
|
569
|
+
if (isErr(next))
|
|
570
|
+
return next;
|
|
571
|
+
cursor = next.sequence;
|
|
572
|
+
if (!name || next.signal === name)
|
|
573
|
+
return ok(next);
|
|
574
|
+
}
|
|
575
|
+
})());
|
|
576
|
+
}, _TrellisServiceRuntime_nextSignalAfter = function _TrellisServiceRuntime_nextSignalAfter(operationId, afterSequence) {
|
|
577
|
+
return AsyncResult.from((async () => {
|
|
578
|
+
const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, operationId);
|
|
579
|
+
if (!runtime) {
|
|
580
|
+
return err(new UnexpectedError({
|
|
581
|
+
cause: new Error(`Unknown operation '${operationId}'`),
|
|
582
|
+
}));
|
|
583
|
+
}
|
|
584
|
+
const queued = runtime.signals.find((signal) => signal.sequence > afterSequence);
|
|
585
|
+
if (queued)
|
|
586
|
+
return ok(queued);
|
|
587
|
+
if (runtime.terminal) {
|
|
588
|
+
return err(new UnexpectedError({
|
|
589
|
+
cause: new Error("operation already terminal"),
|
|
590
|
+
}));
|
|
591
|
+
}
|
|
592
|
+
return await new Promise((resolve) => {
|
|
593
|
+
const waiter = (result) => {
|
|
594
|
+
const value = result.take();
|
|
595
|
+
if (!isErr(value) && value.sequence <= afterSequence) {
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
runtime.signalWaiters.delete(waiter);
|
|
599
|
+
resolve(result);
|
|
600
|
+
};
|
|
601
|
+
runtime.signalWaiters.add(waiter);
|
|
602
|
+
});
|
|
603
|
+
})());
|
|
604
|
+
}, _TrellisServiceRuntime_resolveOperation = async function _TrellisServiceRuntime_resolveOperation(operationId) {
|
|
520
605
|
const existing = __classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").get(operationId);
|
|
521
606
|
if (existing)
|
|
522
607
|
return existing;
|
|
@@ -533,8 +618,11 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
533
618
|
terminal: durable.snapshot.state === "completed" ||
|
|
534
619
|
durable.snapshot.state === "failed" ||
|
|
535
620
|
durable.snapshot.state === "cancelled",
|
|
621
|
+
signalSequence: durable.signalSequence ?? 0,
|
|
622
|
+
signals: durable.signals ?? [],
|
|
536
623
|
watchers: new Set(),
|
|
537
624
|
waiters: new Set(),
|
|
625
|
+
signalWaiters: new Set(),
|
|
538
626
|
};
|
|
539
627
|
__classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
|
|
540
628
|
return runtime;
|
|
@@ -546,7 +634,7 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
546
634
|
cause: new Error(`Unknown operation '${operationId}'`),
|
|
547
635
|
}));
|
|
548
636
|
}
|
|
549
|
-
if (runtime.terminal
|
|
637
|
+
if (runtime.terminal) {
|
|
550
638
|
return err(new UnexpectedError({
|
|
551
639
|
cause: new Error("operation already terminal"),
|
|
552
640
|
}));
|
|
@@ -573,10 +661,110 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
573
661
|
await this.nats.publish(reply, JSON.stringify(terminalFrame));
|
|
574
662
|
}
|
|
575
663
|
runtime.waiters.clear();
|
|
664
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
|
|
576
665
|
}
|
|
577
666
|
return ok(runtime.snapshot);
|
|
578
667
|
})());
|
|
579
|
-
},
|
|
668
|
+
}, _TrellisServiceRuntime_validateOperationValue = function _TrellisServiceRuntime_validateOperationValue(ctx, kind, value) {
|
|
669
|
+
const schema = kind === "progress" ? ctx.progress : ctx.output;
|
|
670
|
+
if (schema === undefined)
|
|
671
|
+
return ok(value);
|
|
672
|
+
if (!isJsonValue(value)) {
|
|
673
|
+
return err(new ValidationError({
|
|
674
|
+
errors: [{
|
|
675
|
+
path: "/",
|
|
676
|
+
message: `Operation ${kind} must be JSON-serializable`,
|
|
677
|
+
}],
|
|
678
|
+
context: { kind },
|
|
679
|
+
}));
|
|
680
|
+
}
|
|
681
|
+
const parsed = parseSchema(schema, value).take();
|
|
682
|
+
if (isErr(parsed))
|
|
683
|
+
return err(parsed.error);
|
|
684
|
+
return ok(parsed);
|
|
685
|
+
}, _TrellisServiceRuntime_applyControlledOperationUpdate = function _TrellisServiceRuntime_applyControlledOperationUpdate(runtime, ctx, state, opts) {
|
|
686
|
+
return AsyncResult.from((async () => {
|
|
687
|
+
if (opts.patch?.progress !== undefined) {
|
|
688
|
+
const parsed = __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_validateOperationValue).call(this, ctx, "progress", opts.patch.progress).take();
|
|
689
|
+
if (isErr(parsed))
|
|
690
|
+
return parsed;
|
|
691
|
+
opts.patch.progress = parsed;
|
|
692
|
+
if ("progress" in opts.event)
|
|
693
|
+
opts.event.progress = parsed;
|
|
694
|
+
}
|
|
695
|
+
if (opts.patch?.output !== undefined) {
|
|
696
|
+
const parsed = __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_validateOperationValue).call(this, ctx, "output", opts.patch.output).take();
|
|
697
|
+
if (isErr(parsed))
|
|
698
|
+
return parsed;
|
|
699
|
+
opts.patch.output = parsed;
|
|
700
|
+
}
|
|
701
|
+
return await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyOperationUpdate).call(this, runtime.id, state, opts);
|
|
702
|
+
})());
|
|
703
|
+
}, _TrellisServiceRuntime_controlOperation = function _TrellisServiceRuntime_controlOperation(operation, ctx, operationId) {
|
|
704
|
+
return AsyncResult.from((async () => {
|
|
705
|
+
const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, operationId);
|
|
706
|
+
if (!runtime) {
|
|
707
|
+
return err(new UnexpectedError({
|
|
708
|
+
cause: new Error(`Unknown operation '${operationId}'`),
|
|
709
|
+
}));
|
|
710
|
+
}
|
|
711
|
+
if (runtime.service !== this.name) {
|
|
712
|
+
return err(new UnexpectedError({
|
|
713
|
+
cause: new Error(`Operation '${operationId}' belongs to service '${runtime.service}', not '${this.name}'`),
|
|
714
|
+
}));
|
|
715
|
+
}
|
|
716
|
+
if (runtime.operation !== operation) {
|
|
717
|
+
return err(new UnexpectedError({
|
|
718
|
+
cause: new Error(`Operation '${operationId}' is '${runtime.operation}', not '${operation}'`),
|
|
719
|
+
}));
|
|
720
|
+
}
|
|
721
|
+
return ok(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeControlledOperation).call(this, runtime, ctx));
|
|
722
|
+
})());
|
|
723
|
+
}, _TrellisServiceRuntime_makeControlledOperation = function _TrellisServiceRuntime_makeControlledOperation(runtime, ctx) {
|
|
724
|
+
return {
|
|
725
|
+
id: runtime.id,
|
|
726
|
+
started: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "running", {
|
|
727
|
+
event: { type: "started" },
|
|
728
|
+
}),
|
|
729
|
+
progress: (value) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "running", {
|
|
730
|
+
patch: { progress: value },
|
|
731
|
+
event: { type: "progress", progress: value },
|
|
732
|
+
}),
|
|
733
|
+
complete: (value) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "completed", {
|
|
734
|
+
patch: { output: value },
|
|
735
|
+
event: { type: "completed" },
|
|
736
|
+
}),
|
|
737
|
+
fail: (error) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "failed", {
|
|
738
|
+
patch: { error: { type: error.name, message: error.message } },
|
|
739
|
+
event: { type: "failed" },
|
|
740
|
+
}),
|
|
741
|
+
cancel: () => {
|
|
742
|
+
if (ctx.cancel !== true) {
|
|
743
|
+
return AsyncResult.err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, runtime.operation));
|
|
744
|
+
}
|
|
745
|
+
return __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_applyControlledOperationUpdate).call(this, runtime, ctx, "cancelled", {
|
|
746
|
+
event: { type: "cancelled" },
|
|
747
|
+
});
|
|
748
|
+
},
|
|
749
|
+
attach: (job) => AsyncResult.from((async () => {
|
|
750
|
+
const waited = await job.wait();
|
|
751
|
+
const waitedValue = waited.take();
|
|
752
|
+
if (isErr(waitedValue)) {
|
|
753
|
+
return err(new UnexpectedError({ cause: waitedValue.error }));
|
|
754
|
+
}
|
|
755
|
+
const finalRuntime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, runtime.id);
|
|
756
|
+
if (!finalRuntime || !finalRuntime.terminal) {
|
|
757
|
+
return err(new UnexpectedError({
|
|
758
|
+
cause: new Error("attached job completed without terminal operation state"),
|
|
759
|
+
}));
|
|
760
|
+
}
|
|
761
|
+
return ok(finalRuntime.snapshot);
|
|
762
|
+
})()),
|
|
763
|
+
signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
|
|
764
|
+
nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
|
|
765
|
+
defer: () => ({ kind: "deferred" }),
|
|
766
|
+
};
|
|
767
|
+
}, _TrellisServiceRuntime_makeAcceptedOperation = function _TrellisServiceRuntime_makeAcceptedOperation(runtime, ctx) {
|
|
580
768
|
return {
|
|
581
769
|
id: runtime.id,
|
|
582
770
|
ref: {
|
|
@@ -589,7 +777,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
589
777
|
progress: (value) => this.operations.progress(runtime.id, value),
|
|
590
778
|
complete: (value) => this.operations.complete(runtime.id, value),
|
|
591
779
|
fail: (error) => this.operations.fail(runtime.id, error),
|
|
592
|
-
cancel: () =>
|
|
780
|
+
cancel: () => {
|
|
781
|
+
if (ctx.cancel !== true) {
|
|
782
|
+
return AsyncResult.err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, runtime.operation));
|
|
783
|
+
}
|
|
784
|
+
return this.operations.cancel(runtime.id);
|
|
785
|
+
},
|
|
593
786
|
attach: (job) => AsyncResult.from((async () => {
|
|
594
787
|
const waited = await job.wait();
|
|
595
788
|
const waitedValue = waited.take();
|
|
@@ -604,9 +797,79 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
604
797
|
}
|
|
605
798
|
return ok(finalRuntime.snapshot);
|
|
606
799
|
})()),
|
|
800
|
+
signals: () => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_signals).call(this, runtime.id),
|
|
801
|
+
nextSignal: (name) => __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_nextSignal).call(this, runtime.id, name),
|
|
607
802
|
defer: () => ({ kind: "deferred" }),
|
|
608
803
|
};
|
|
609
|
-
},
|
|
804
|
+
}, _TrellisServiceRuntime_controlAuthContext = function _TrellisServiceRuntime_controlAuthContext(ctx, action) {
|
|
805
|
+
if (action === "signal" && ctx.controlCapabilities !== undefined) {
|
|
806
|
+
return { ...ctx, callerCapabilities: ctx.controlCapabilities };
|
|
807
|
+
}
|
|
808
|
+
if (action === "cancel" && ctx.cancelCapabilities !== undefined) {
|
|
809
|
+
return { ...ctx, callerCapabilities: ctx.cancelCapabilities };
|
|
810
|
+
}
|
|
811
|
+
return ctx;
|
|
812
|
+
}, _TrellisServiceRuntime_terminalSignalError = function _TrellisServiceRuntime_terminalSignalError() {
|
|
813
|
+
return new UnexpectedError({
|
|
814
|
+
cause: new Error("operation already terminal"),
|
|
815
|
+
});
|
|
816
|
+
}, _TrellisServiceRuntime_unsupportedCancelError = function _TrellisServiceRuntime_unsupportedCancelError(operation) {
|
|
817
|
+
return new ValidationError({
|
|
818
|
+
errors: [{
|
|
819
|
+
path: "/action",
|
|
820
|
+
message: `Operation '${operation}' does not support cancel`,
|
|
821
|
+
}],
|
|
822
|
+
context: { operation, action: "cancel" },
|
|
823
|
+
});
|
|
824
|
+
}, _TrellisServiceRuntime_rejectSignalWaiters = function _TrellisServiceRuntime_rejectSignalWaiters(runtime) {
|
|
825
|
+
const result = err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
|
|
826
|
+
for (const waiter of runtime.signalWaiters) {
|
|
827
|
+
waiter(result);
|
|
828
|
+
}
|
|
829
|
+
runtime.signalWaiters.clear();
|
|
830
|
+
}, _TrellisServiceRuntime_acceptSignal = async function _TrellisServiceRuntime_acceptSignal(runtime, ctx, control) {
|
|
831
|
+
if (runtime.terminal) {
|
|
832
|
+
return err(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
|
|
833
|
+
}
|
|
834
|
+
const descriptor = ctx.signals?.[control.signal];
|
|
835
|
+
if (!descriptor) {
|
|
836
|
+
return err(new ValidationError({
|
|
837
|
+
errors: [{
|
|
838
|
+
path: "/signal",
|
|
839
|
+
message: `Unknown operation signal '${control.signal}'`,
|
|
840
|
+
}],
|
|
841
|
+
context: { operation: runtime.operation, signal: control.signal },
|
|
842
|
+
}));
|
|
843
|
+
}
|
|
844
|
+
const input = control.input;
|
|
845
|
+
const parsed = parseSchema(descriptor.input, input).take();
|
|
846
|
+
if (isErr(parsed)) {
|
|
847
|
+
return err(parsed.error);
|
|
848
|
+
}
|
|
849
|
+
runtime.signalSequence += 1;
|
|
850
|
+
const acceptedAt = new Date().toISOString();
|
|
851
|
+
const signal = {
|
|
852
|
+
operationId: runtime.id,
|
|
853
|
+
sequence: runtime.signalSequence,
|
|
854
|
+
signal: control.signal,
|
|
855
|
+
...(control.input !== undefined ? { input: control.input } : {}),
|
|
856
|
+
acceptedAt,
|
|
857
|
+
};
|
|
858
|
+
runtime.signals.push(signal);
|
|
859
|
+
await this.saveOperationRecord(runtime);
|
|
860
|
+
const result = ok(signal);
|
|
861
|
+
for (const waiter of runtime.signalWaiters) {
|
|
862
|
+
waiter(result);
|
|
863
|
+
}
|
|
864
|
+
return ok({
|
|
865
|
+
kind: "signal-accepted",
|
|
866
|
+
operationId: runtime.id,
|
|
867
|
+
signal: signal.signal,
|
|
868
|
+
signalSequence: signal.sequence,
|
|
869
|
+
acceptedAt,
|
|
870
|
+
snapshot: runtime.snapshot,
|
|
871
|
+
});
|
|
872
|
+
}, _TrellisServiceRuntime_acceptOperation = async function _TrellisServiceRuntime_acceptOperation(operation, ctx, sessionKey) {
|
|
610
873
|
const createdAt = new Date().toISOString();
|
|
611
874
|
const operationId = ulid();
|
|
612
875
|
const runtime = {
|
|
@@ -624,13 +887,16 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
624
887
|
updatedAt: createdAt,
|
|
625
888
|
},
|
|
626
889
|
sequence: 0,
|
|
890
|
+
signalSequence: 0,
|
|
891
|
+
signals: [],
|
|
627
892
|
terminal: false,
|
|
628
893
|
watchers: new Set(),
|
|
629
894
|
waiters: new Set(),
|
|
895
|
+
signalWaiters: new Set(),
|
|
630
896
|
};
|
|
631
897
|
__classPrivateFieldGet(this, _TrellisServiceRuntime_operations, "f").set(operationId, runtime);
|
|
632
898
|
await this.saveOperationRecord(runtime);
|
|
633
|
-
return ok(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeAcceptedOperation).call(this, runtime));
|
|
899
|
+
return ok(__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_makeAcceptedOperation).call(this, runtime, ctx));
|
|
634
900
|
}, _TrellisServiceRuntime_authenticateOperationMessage = async function _TrellisServiceRuntime_authenticateOperationMessage(msg, ctx, parseInput) {
|
|
635
901
|
const jsonData = safeJson(msg).take();
|
|
636
902
|
if (isErr(jsonData))
|
|
@@ -648,14 +914,20 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
648
914
|
}
|
|
649
915
|
const sessionKey = msg.headers?.get("session-key");
|
|
650
916
|
const proof = msg.headers?.get("proof");
|
|
917
|
+
const iatHeader = msg.headers?.get("iat");
|
|
918
|
+
const requestId = msg.headers?.get("request-id");
|
|
651
919
|
if (!sessionKey) {
|
|
652
920
|
return err(new AuthError({ reason: "missing_session_key" }));
|
|
653
921
|
}
|
|
654
922
|
if (!proof)
|
|
655
923
|
return err(new AuthError({ reason: "missing_proof" }));
|
|
924
|
+
const iat = Number(iatHeader);
|
|
925
|
+
if (!Number.isSafeInteger(iat) || !requestId) {
|
|
926
|
+
return err(new AuthError({ reason: "invalid_signature" }));
|
|
927
|
+
}
|
|
656
928
|
const payloadBytes = msg.data ?? new Uint8Array();
|
|
657
929
|
const payloadHash = await sha256(payloadBytes);
|
|
658
|
-
const proofInput = buildProofInput(sessionKey, msg.subject, payloadHash);
|
|
930
|
+
const proofInput = buildProofInput(sessionKey, msg.subject, payloadHash, iat, requestId);
|
|
659
931
|
const digest = await sha256(proofInput);
|
|
660
932
|
const verifyResult = await AsyncResult.try(async () => {
|
|
661
933
|
const publicKeyRaw = base64urlDecode(sessionKey);
|
|
@@ -675,6 +947,8 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
675
947
|
proof,
|
|
676
948
|
subject: msg.subject,
|
|
677
949
|
payloadHash: base64urlEncode(payloadHash),
|
|
950
|
+
iat,
|
|
951
|
+
requestId,
|
|
678
952
|
capabilities: ctx.callerCapabilities
|
|
679
953
|
? [...ctx.callerCapabilities]
|
|
680
954
|
: undefined,
|
|
@@ -716,18 +990,18 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
716
990
|
const publishSnapshot = async (reply, snapshot) => {
|
|
717
991
|
await publishFrame(reply, { kind: "snapshot", snapshot });
|
|
718
992
|
};
|
|
993
|
+
const respondControlError = (msg, error) => {
|
|
994
|
+
msg.respond(JSON.stringify({
|
|
995
|
+
kind: "error",
|
|
996
|
+
error: { type: error.name, message: error.message },
|
|
997
|
+
}));
|
|
998
|
+
};
|
|
719
999
|
const controlSub = this.nats.subscribe(controlSubject);
|
|
720
1000
|
void (async () => {
|
|
721
1001
|
for await (const msg of controlSub) {
|
|
722
|
-
const validated = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_authenticateOperationMessage).call(this, msg, ctx, false);
|
|
723
|
-
const value = validated.take();
|
|
724
|
-
if (isErr(value)) {
|
|
725
|
-
this.respondWithError(msg, value.error);
|
|
726
|
-
continue;
|
|
727
|
-
}
|
|
728
1002
|
const request = safeJson(msg).take();
|
|
729
1003
|
if (isErr(request)) {
|
|
730
|
-
|
|
1004
|
+
respondControlError(msg, request.error);
|
|
731
1005
|
continue;
|
|
732
1006
|
}
|
|
733
1007
|
if (!request ||
|
|
@@ -736,27 +1010,35 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
736
1010
|
"string" ||
|
|
737
1011
|
typeof request.operationId !==
|
|
738
1012
|
"string") {
|
|
739
|
-
|
|
1013
|
+
respondControlError(msg, new UnexpectedError({
|
|
740
1014
|
cause: new Error("Invalid operation control request"),
|
|
741
1015
|
}));
|
|
742
1016
|
continue;
|
|
743
1017
|
}
|
|
744
1018
|
const control = request;
|
|
745
|
-
const
|
|
746
|
-
const
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
1019
|
+
const validated = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_authenticateOperationMessage).call(this, msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_controlAuthContext).call(this, ctx, control.action), false);
|
|
1020
|
+
const value = validated.take();
|
|
1021
|
+
if (isErr(value)) {
|
|
1022
|
+
respondControlError(msg, value.error);
|
|
1023
|
+
continue;
|
|
1024
|
+
}
|
|
1025
|
+
const runtime = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_resolveOperation).call(this, control.operationId);
|
|
1026
|
+
if (!runtime) {
|
|
1027
|
+
respondControlError(msg, new UnexpectedError({
|
|
751
1028
|
cause: new Error(`Unknown operation '${control.operationId}'`),
|
|
752
1029
|
}));
|
|
753
1030
|
continue;
|
|
754
1031
|
}
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
1032
|
+
if (runtime.service !== this.name || runtime.operation !== operation) {
|
|
1033
|
+
respondControlError(msg, new UnexpectedError({
|
|
1034
|
+
cause: new Error(`Operation '${control.operationId}' belongs to service '${runtime.service}' operation '${runtime.operation}', not service '${this.name}' operation '${operation}'`),
|
|
1035
|
+
}));
|
|
1036
|
+
continue;
|
|
1037
|
+
}
|
|
1038
|
+
const snapshot = runtime.snapshot;
|
|
1039
|
+
const ownerSessionKey = runtime.ownerSessionKey;
|
|
758
1040
|
if (ownerSessionKey !== value.sessionKey) {
|
|
759
|
-
|
|
1041
|
+
respondControlError(msg, new AuthError({
|
|
760
1042
|
reason: "forbidden",
|
|
761
1043
|
context: { ownerSessionKey },
|
|
762
1044
|
}));
|
|
@@ -780,12 +1062,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
780
1062
|
runtime.waiters.add(msg.reply);
|
|
781
1063
|
}
|
|
782
1064
|
else if (msg.reply) {
|
|
783
|
-
|
|
1065
|
+
respondControlError(msg, new UnexpectedError({
|
|
784
1066
|
cause: new Error("operation is not running in this process"),
|
|
785
1067
|
}));
|
|
786
1068
|
}
|
|
787
1069
|
else {
|
|
788
|
-
|
|
1070
|
+
respondControlError(msg, new UnexpectedError({
|
|
789
1071
|
cause: new Error("missing reply subject for wait request"),
|
|
790
1072
|
}));
|
|
791
1073
|
}
|
|
@@ -796,8 +1078,12 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
796
1078
|
continue;
|
|
797
1079
|
}
|
|
798
1080
|
if (control.action === "cancel") {
|
|
799
|
-
if (
|
|
800
|
-
msg
|
|
1081
|
+
if (ctx.cancel !== true) {
|
|
1082
|
+
respondControlError(msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_unsupportedCancelError).call(this, operation));
|
|
1083
|
+
continue;
|
|
1084
|
+
}
|
|
1085
|
+
if (runtime.terminal) {
|
|
1086
|
+
respondControlError(msg, __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_terminalSignalError).call(this));
|
|
801
1087
|
continue;
|
|
802
1088
|
}
|
|
803
1089
|
runtime.snapshot = {
|
|
@@ -825,10 +1111,27 @@ _TrellisServiceRuntime_version = new WeakMap(), _TrellisServiceRuntime_log = new
|
|
|
825
1111
|
await this.nats.publish(reply, JSON.stringify({ kind: "snapshot", snapshot: runtime.snapshot }));
|
|
826
1112
|
}
|
|
827
1113
|
runtime.waiters.clear();
|
|
1114
|
+
__classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_rejectSignalWaiters).call(this, runtime);
|
|
828
1115
|
msg.respond(JSON.stringify({ kind: "snapshot", snapshot: runtime.snapshot }));
|
|
829
1116
|
continue;
|
|
830
1117
|
}
|
|
831
|
-
|
|
1118
|
+
if (control.action === "signal") {
|
|
1119
|
+
if (!runtime) {
|
|
1120
|
+
respondControlError(msg, new UnexpectedError({
|
|
1121
|
+
cause: new Error("operation is not running in this process"),
|
|
1122
|
+
}));
|
|
1123
|
+
continue;
|
|
1124
|
+
}
|
|
1125
|
+
const accepted = await __classPrivateFieldGet(this, _TrellisServiceRuntime_instances, "m", _TrellisServiceRuntime_acceptSignal).call(this, runtime, ctx, control);
|
|
1126
|
+
const acceptedValue = accepted.take();
|
|
1127
|
+
if (isErr(acceptedValue)) {
|
|
1128
|
+
respondControlError(msg, acceptedValue.error);
|
|
1129
|
+
continue;
|
|
1130
|
+
}
|
|
1131
|
+
msg.respond(JSON.stringify(acceptedValue));
|
|
1132
|
+
continue;
|
|
1133
|
+
}
|
|
1134
|
+
respondControlError(msg, new UnexpectedError({
|
|
832
1135
|
cause: new Error(`Unknown operation control action '${control.action}' for '${operation}'`),
|
|
833
1136
|
}));
|
|
834
1137
|
}
|
package/esm/npm/src/store.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type ObjectStore } from "@nats-io/obj";
|
|
|
2
2
|
import type { NatsConnection } from "@nats-io/nats-core/internal";
|
|
3
3
|
import { AsyncResult } from "@qlever-llc/result";
|
|
4
4
|
import { StoreError } from "./errors/index.js";
|
|
5
|
+
import type { PageResponse } from "./models/trellis/Page.js";
|
|
5
6
|
export type StoreBody = Uint8Array | ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>;
|
|
6
7
|
export type StoreWaitOptions = {
|
|
7
8
|
timeoutMs?: number;
|
|
@@ -18,6 +19,12 @@ export type StorePutOptions = {
|
|
|
18
19
|
contentType?: string;
|
|
19
20
|
metadata?: Record<string, string>;
|
|
20
21
|
};
|
|
22
|
+
/** Explicit bounded query for listing object metadata in a typed store. */
|
|
23
|
+
export type StoreListOptions = {
|
|
24
|
+
prefix?: string;
|
|
25
|
+
offset?: number;
|
|
26
|
+
limit: number;
|
|
27
|
+
};
|
|
21
28
|
export type StoreInfo = {
|
|
22
29
|
key: string;
|
|
23
30
|
size: number;
|
|
@@ -45,7 +52,7 @@ export declare class TypedStore {
|
|
|
45
52
|
*/
|
|
46
53
|
waitFor(key: string, options?: StoreWaitOptions): AsyncResult<TypedStoreEntry, StoreError>;
|
|
47
54
|
delete(key: string): AsyncResult<void, StoreError>;
|
|
48
|
-
list(
|
|
55
|
+
list(opts: StoreListOptions): AsyncResult<PageResponse<StoreInfo>, StoreError>;
|
|
49
56
|
status(): AsyncResult<StoreStatus, StoreError>;
|
|
50
57
|
}
|
|
51
58
|
export declare class TypedStoreEntry {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,cAAc,CAAC,UAAU,CAAC,GAC1B,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA2OF,qBAAa,UAAU;;IAMrB,OAAO;IAcP,MAAM,CAAC,IAAI,CACT,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,gBAAqB,GAC7B,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;IAuBtC,MAAM,CACJ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;IAgBhC,GAAG,CACD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,eAAe,GACxB,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;IAIhC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC;IAS1D;;OAEG;IACH,OAAO,CACL,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,GAC7B,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC;IA6C3C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;IAalD,IAAI,CACF,IAAI,EAAE,gBAAgB,GACrB,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;IAiCnD,MAAM,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;CA4D/C;AAqBD,qBAAa,eAAe;;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;gBAGb,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IAM/C,MAAM,IAAI,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IA0B7D,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;CAwB7C;AA4BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC,CAErB"}
|