@tier0/sdk-v2 0.9.9 → 0.10.0
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/CHANGELOG.md +102 -0
- package/LICENSE +21 -21
- package/README.md +165 -27
- package/dist/cjs/client.d.ts +79 -3
- package/dist/cjs/client.js +4 -6
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/cloud-server.d.ts +33 -26
- package/dist/cjs/cloud-server.js +102 -100
- package/dist/cjs/cloud-server.js.map +1 -1
- package/dist/cjs/cloud-transport.d.ts +15 -20
- package/dist/cjs/cloud-transport.js +87 -68
- package/dist/cjs/cloud-transport.js.map +1 -1
- package/dist/cjs/connection-diagnostics.d.ts +2 -0
- package/dist/cjs/connection-diagnostics.js +20 -0
- package/dist/cjs/connection-diagnostics.js.map +1 -0
- package/dist/cjs/data/bootstrap.js +3 -4
- package/dist/cjs/data/bootstrap.js.map +1 -1
- package/dist/cjs/data/call.d.ts +1 -3
- package/dist/cjs/data/call.js +8 -12
- package/dist/cjs/data/call.js.map +1 -1
- package/dist/cjs/data/client.d.ts +8 -7
- package/dist/cjs/data/client.js +24 -11
- package/dist/cjs/data/client.js.map +1 -1
- package/dist/cjs/data/collection.d.ts +3 -5
- package/dist/cjs/data/collection.js +3 -4
- package/dist/cjs/data/collection.js.map +1 -1
- package/dist/cjs/data/context.d.ts +5 -11
- package/dist/cjs/data/context.js +21 -36
- package/dist/cjs/data/context.js.map +1 -1
- package/dist/cjs/data/error.d.ts +1 -1
- package/dist/cjs/data/error.js +3 -3
- package/dist/cjs/data/error.js.map +1 -1
- package/dist/cjs/data/index.d.ts +5 -3
- package/dist/cjs/data/index.js +5 -5
- package/dist/cjs/data/index.js.map +1 -1
- package/dist/cjs/data/relay.d.ts +51 -0
- package/dist/cjs/data/relay.js +371 -0
- package/dist/cjs/data/relay.js.map +1 -0
- package/dist/cjs/data/subscribe.d.ts +22 -38
- package/dist/cjs/data/subscribe.js +22 -28
- package/dist/cjs/data/subscribe.js.map +1 -1
- package/dist/cjs/event-stream.d.ts +28 -0
- package/dist/cjs/event-stream.js +222 -0
- package/dist/cjs/event-stream.js.map +1 -0
- package/dist/cjs/mq/client.d.ts +32 -1
- package/dist/cjs/mq/client.js +404 -69
- package/dist/cjs/mq/client.js.map +1 -1
- package/dist/cjs/mq/index.d.ts +1 -0
- package/dist/cjs/mq/index.js +3 -1
- package/dist/cjs/mq/index.js.map +1 -1
- package/dist/cjs/mq/topic.d.ts +29 -0
- package/dist/cjs/mq/topic.js +48 -0
- package/dist/cjs/mq/topic.js.map +1 -0
- package/dist/cjs/mq/types.d.ts +21 -1
- package/dist/cjs/mq/types.js.map +1 -1
- package/dist/cjs/openapi/api.generated.d.ts +20 -0
- package/dist/cjs/openapi/api.generated.js +11 -0
- package/dist/cjs/openapi/api.generated.js.map +1 -1
- package/dist/cjs/openapi/client.d.ts +46 -0
- package/dist/cjs/openapi/client.js +161 -12
- package/dist/cjs/openapi/client.js.map +1 -1
- package/dist/cjs/openapi/codecs.generated.d.ts +74 -0
- package/dist/cjs/openapi/codecs.generated.js +1 -1
- package/dist/cjs/openapi/codecs.generated.js.map +1 -1
- package/dist/cjs/openapi/types.generated.d.ts +205 -1
- package/dist/cjs/openapi/types.generated.js.map +1 -1
- package/dist/cjs/page-runtime.d.ts +48 -0
- package/dist/cjs/page-runtime.js +74 -0
- package/dist/cjs/page-runtime.js.map +1 -0
- package/dist/cjs/platform-proxy.d.ts +17 -0
- package/dist/cjs/platform-proxy.js +52 -0
- package/dist/cjs/platform-proxy.js.map +1 -0
- package/dist/cjs/runtime-context.d.ts +2 -1
- package/dist/cjs/runtime-context.js +6 -2
- package/dist/cjs/runtime-context.js.map +1 -1
- package/dist/cjs/runtime-env.js.map +1 -1
- package/dist/cjs/source.d.ts +19 -1
- package/dist/cjs/source.js +9 -3
- package/dist/cjs/source.js.map +1 -1
- package/dist/cjs/stream.js +3 -2
- package/dist/cjs/stream.js.map +1 -1
- package/dist/cjs/streams/contract.generated.d.ts +7 -1
- package/dist/cjs/streams/contract.generated.js.map +1 -1
- package/dist/cjs/streams/messages.js +1 -10
- package/dist/cjs/streams/messages.js.map +1 -1
- package/dist/cjs/streams/requests.d.ts +3 -0
- package/dist/cjs/streams/requests.js +5 -2
- package/dist/cjs/streams/requests.js.map +1 -1
- package/dist/cjs/streams/transport.d.ts +1 -13
- package/dist/cjs/streams/transport.js +2 -18
- package/dist/cjs/streams/transport.js.map +1 -1
- package/dist/cjs/uns-v2/client.d.ts +1 -6
- package/dist/cjs/uns-v2/client.js +33 -8
- package/dist/cjs/uns-v2/client.js.map +1 -1
- package/dist/cjs/uns-v2/data-client.d.ts +5 -2
- package/dist/cjs/uns-v2/data-client.js +7 -4
- package/dist/cjs/uns-v2/data-client.js.map +1 -1
- package/dist/cjs/uns-v2/generated.d.ts +6783 -4655
- package/dist/cjs/uns-v2/generated.js +221 -65
- package/dist/cjs/uns-v2/generated.js.map +1 -1
- package/dist/cjs/uns-v2/sse.d.ts +7 -1
- package/dist/cjs/uns-v2/sse.js +12 -2
- package/dist/cjs/uns-v2/sse.js.map +1 -1
- package/dist/esm/client.d.ts +79 -3
- package/dist/esm/client.js +5 -7
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/cloud-server.d.ts +33 -26
- package/dist/esm/cloud-server.js +99 -97
- package/dist/esm/cloud-server.js.map +1 -1
- package/dist/esm/cloud-transport.d.ts +15 -20
- package/dist/esm/cloud-transport.js +86 -67
- package/dist/esm/cloud-transport.js.map +1 -1
- package/dist/esm/connection-diagnostics.d.ts +2 -0
- package/dist/esm/connection-diagnostics.js +17 -0
- package/dist/esm/connection-diagnostics.js.map +1 -0
- package/dist/esm/data/bootstrap.js +3 -4
- package/dist/esm/data/bootstrap.js.map +1 -1
- package/dist/esm/data/call.d.ts +1 -3
- package/dist/esm/data/call.js +9 -13
- package/dist/esm/data/call.js.map +1 -1
- package/dist/esm/data/client.d.ts +8 -7
- package/dist/esm/data/client.js +22 -9
- package/dist/esm/data/client.js.map +1 -1
- package/dist/esm/data/collection.d.ts +3 -5
- package/dist/esm/data/collection.js +3 -4
- package/dist/esm/data/collection.js.map +1 -1
- package/dist/esm/data/context.d.ts +5 -11
- package/dist/esm/data/context.js +19 -33
- package/dist/esm/data/context.js.map +1 -1
- package/dist/esm/data/error.d.ts +1 -1
- package/dist/esm/data/error.js +3 -3
- package/dist/esm/data/error.js.map +1 -1
- package/dist/esm/data/index.d.ts +5 -3
- package/dist/esm/data/index.js +3 -2
- package/dist/esm/data/index.js.map +1 -1
- package/dist/esm/data/relay.d.ts +51 -0
- package/dist/esm/data/relay.js +368 -0
- package/dist/esm/data/relay.js.map +1 -0
- package/dist/esm/data/subscribe.d.ts +22 -38
- package/dist/esm/data/subscribe.js +22 -27
- package/dist/esm/data/subscribe.js.map +1 -1
- package/dist/esm/event-stream.d.ts +28 -0
- package/dist/esm/event-stream.js +217 -0
- package/dist/esm/event-stream.js.map +1 -0
- package/dist/esm/mq/client.d.ts +32 -1
- package/dist/esm/mq/client.js +404 -69
- package/dist/esm/mq/client.js.map +1 -1
- package/dist/esm/mq/index.d.ts +1 -0
- package/dist/esm/mq/index.js +1 -0
- package/dist/esm/mq/index.js.map +1 -1
- package/dist/esm/mq/topic.d.ts +29 -0
- package/dist/esm/mq/topic.js +44 -0
- package/dist/esm/mq/topic.js.map +1 -0
- package/dist/esm/mq/types.d.ts +21 -1
- package/dist/esm/mq/types.js.map +1 -1
- package/dist/esm/openapi/api.generated.d.ts +20 -0
- package/dist/esm/openapi/api.generated.js +11 -0
- package/dist/esm/openapi/api.generated.js.map +1 -1
- package/dist/esm/openapi/client.d.ts +46 -0
- package/dist/esm/openapi/client.js +160 -12
- package/dist/esm/openapi/client.js.map +1 -1
- package/dist/esm/openapi/codecs.generated.d.ts +74 -0
- package/dist/esm/openapi/codecs.generated.js +1 -1
- package/dist/esm/openapi/codecs.generated.js.map +1 -1
- package/dist/esm/openapi/types.generated.d.ts +205 -1
- package/dist/esm/openapi/types.generated.js.map +1 -1
- package/dist/esm/page-runtime.d.ts +48 -0
- package/dist/esm/page-runtime.js +65 -0
- package/dist/esm/page-runtime.js.map +1 -0
- package/dist/esm/platform-proxy.d.ts +17 -0
- package/dist/esm/platform-proxy.js +47 -0
- package/dist/esm/platform-proxy.js.map +1 -0
- package/dist/esm/runtime-context.d.ts +2 -1
- package/dist/esm/runtime-context.js +6 -2
- package/dist/esm/runtime-context.js.map +1 -1
- package/dist/esm/runtime-env.js.map +1 -1
- package/dist/esm/source.d.ts +19 -1
- package/dist/esm/source.js +10 -4
- package/dist/esm/source.js.map +1 -1
- package/dist/esm/stream.js +4 -3
- package/dist/esm/stream.js.map +1 -1
- package/dist/esm/streams/contract.generated.d.ts +7 -1
- package/dist/esm/streams/contract.generated.js.map +1 -1
- package/dist/esm/streams/messages.js +1 -10
- package/dist/esm/streams/messages.js.map +1 -1
- package/dist/esm/streams/requests.d.ts +3 -0
- package/dist/esm/streams/requests.js +5 -2
- package/dist/esm/streams/requests.js.map +1 -1
- package/dist/esm/streams/transport.d.ts +1 -13
- package/dist/esm/streams/transport.js +1 -17
- package/dist/esm/streams/transport.js.map +1 -1
- package/dist/esm/uns-v2/client.d.ts +1 -6
- package/dist/esm/uns-v2/client.js +33 -8
- package/dist/esm/uns-v2/client.js.map +1 -1
- package/dist/esm/uns-v2/data-client.d.ts +5 -2
- package/dist/esm/uns-v2/data-client.js +8 -5
- package/dist/esm/uns-v2/data-client.js.map +1 -1
- package/dist/esm/uns-v2/generated.d.ts +6783 -4655
- package/dist/esm/uns-v2/generated.js +221 -65
- package/dist/esm/uns-v2/generated.js.map +1 -1
- package/dist/esm/uns-v2/sse.d.ts +7 -1
- package/dist/esm/uns-v2/sse.js +12 -2
- package/dist/esm/uns-v2/sse.js.map +1 -1
- package/package.json +25 -12
- package/skills/tier0-sdk-v2/SKILL.md +13 -5
- package/skills/tier0-sdk-v2/references/integration.md +14 -24
- package/skills/tier0-sdk-v2/references/local-connection.md +61 -0
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/SKILL.md +11 -5
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/consistency.md +8 -12
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/errors.md +24 -5
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/modeling.md +3 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/read-write.md +46 -13
- package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/schema-evolution.md +2 -0
- package/skills/tier0-sdk-v2/tier0-sdk-v2-members/SKILL.md +2 -2
- package/skills/tier0-sdk-v2/tier0-sdk-v2-members/references/app-members.md +5 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-mq/SKILL.md +25 -0
- package/skills/tier0-sdk-v2/tier0-sdk-v2-mq/references/quickstart.md +1 -1
- package/skills/tier0-sdk-v2/tier0-sdk-v2-notifications/SKILL.md +3 -3
- package/skills/tier0-sdk-v2/tier0-sdk-v2-notifications/references/send.md +6 -6
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/SKILL.md +4 -4
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/changes.md +2 -2
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/create.md +26 -36
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/delete.md +9 -23
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/protocols.md +12 -29
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/read.md +4 -5
- package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/update.md +5 -5
- package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/SKILL.md +3 -3
- package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/create.md +23 -9
- package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/deploy.md +14 -12
- package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/http-server.md +4 -4
- package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/read.md +4 -3
- package/skills/tier0-sdk-v2/tier0-sdk-v2-streams/SKILL.md +12 -12
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/SKILL.md +3 -2
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/create.md +2 -2
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/delete.md +47 -20
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/namespace.md +3 -3
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/read.md +11 -6
- package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/restore.md +12 -13
- package/dist/cjs/app-identity-contract.generated.d.ts +0 -22
- package/dist/cjs/app-identity-contract.generated.js +0 -51
- package/dist/cjs/app-identity-contract.generated.js.map +0 -1
- package/dist/cjs/runtime.d.ts +0 -13
- package/dist/cjs/runtime.js +0 -51
- package/dist/cjs/runtime.js.map +0 -1
- package/dist/esm/app-identity-contract.generated.d.ts +0 -22
- package/dist/esm/app-identity-contract.generated.js +0 -48
- package/dist/esm/app-identity-contract.generated.js.map +0 -1
- package/dist/esm/runtime.d.ts +0 -13
- package/dist/esm/runtime.js +0 -46
- package/dist/esm/runtime.js.map +0 -1
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.APP_REQUEST_IDENTITY_CONTRACT = void 0;
|
|
4
|
-
// Generated from SWE gatewayheader/app-request-identity.v1.json; do not edit.
|
|
5
|
-
// Source SHA-256: ac5ec2efb882395e63a46c9ec479de16c09943b88fc0bd906dd77c7f9f4bfaa3
|
|
6
|
-
exports.APP_REQUEST_IDENTITY_CONTRACT = {
|
|
7
|
-
"version": "tier0.app-request-identity/v1",
|
|
8
|
-
"header": "X-Tier0-App-Identity",
|
|
9
|
-
"type": "tier0-app-request+jwt",
|
|
10
|
-
"algorithm": "EdDSA",
|
|
11
|
-
"issuer": "tier0-app-gateway",
|
|
12
|
-
"audience": "tier0-app-runtime",
|
|
13
|
-
"maxTokenBytes": 8192,
|
|
14
|
-
"maxBodyBytes": 65536,
|
|
15
|
-
"maxURIBytes": 8192,
|
|
16
|
-
"maxTTLSeconds": 30,
|
|
17
|
-
"clockSkewSeconds": 5,
|
|
18
|
-
"maxRoles": 32,
|
|
19
|
-
"maxRoleBytes": 128,
|
|
20
|
-
"maxKeys": 8,
|
|
21
|
-
"keyIDPattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$",
|
|
22
|
-
"appIDPattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
|
23
|
-
"requiredClaims": [
|
|
24
|
-
"ver",
|
|
25
|
-
"iss",
|
|
26
|
-
"aud",
|
|
27
|
-
"sub",
|
|
28
|
-
"workspaceID",
|
|
29
|
-
"appID",
|
|
30
|
-
"method",
|
|
31
|
-
"requestURI",
|
|
32
|
-
"bodySHA256",
|
|
33
|
-
"iat",
|
|
34
|
-
"exp",
|
|
35
|
-
"jti",
|
|
36
|
-
"roles"
|
|
37
|
-
],
|
|
38
|
-
"methodPattern": "^[A-Z]{1,16}$",
|
|
39
|
-
"requiredHeaderFields": [
|
|
40
|
-
"alg",
|
|
41
|
-
"typ",
|
|
42
|
-
"kid"
|
|
43
|
-
],
|
|
44
|
-
"publicKeyFields": [
|
|
45
|
-
"kty",
|
|
46
|
-
"crv",
|
|
47
|
-
"x",
|
|
48
|
-
"kid"
|
|
49
|
-
]
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=app-identity-contract.generated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-identity-contract.generated.js","sourceRoot":"","sources":["../../src/app-identity-contract.generated.ts"],"names":[],"mappings":";;;AAAA,8EAA8E;AAC9E,mFAAmF;AACtE,QAAA,6BAA6B,GAAG;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,uBAAuB;IAC/B,WAAW,EAAE,OAAO;IACpB,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,CAAC;IACrB,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,mCAAmC;IACnD,cAAc,EAAE,2EAA2E;IAC3F,gBAAgB,EAAE;QAChB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,aAAa;QACb,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,KAAK;QACL,KAAK;QACL,KAAK;QACL,OAAO;KACR;IACD,eAAe,EAAE,eAAe;IAChC,sBAAsB,EAAE;QACtB,KAAK;QACL,KAAK;QACL,KAAK;KACN;IACD,iBAAiB,EAAE;QACjB,KAAK;QACL,KAAK;QACL,GAAG;QACH,KAAK;KACN;CACO,CAAC","sourcesContent":["// Generated from SWE gatewayheader/app-request-identity.v1.json; do not edit.\n// Source SHA-256: ac5ec2efb882395e63a46c9ec479de16c09943b88fc0bd906dd77c7f9f4bfaa3\nexport const APP_REQUEST_IDENTITY_CONTRACT = {\n \"version\": \"tier0.app-request-identity/v1\",\n \"header\": \"X-Tier0-App-Identity\",\n \"type\": \"tier0-app-request+jwt\",\n \"algorithm\": \"EdDSA\",\n \"issuer\": \"tier0-app-gateway\",\n \"audience\": \"tier0-app-runtime\",\n \"maxTokenBytes\": 8192,\n \"maxBodyBytes\": 65536,\n \"maxURIBytes\": 8192,\n \"maxTTLSeconds\": 30,\n \"clockSkewSeconds\": 5,\n \"maxRoles\": 32,\n \"maxRoleBytes\": 128,\n \"maxKeys\": 8,\n \"keyIDPattern\": \"^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$\",\n \"appIDPattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\",\n \"requiredClaims\": [\n \"ver\",\n \"iss\",\n \"aud\",\n \"sub\",\n \"workspaceID\",\n \"appID\",\n \"method\",\n \"requestURI\",\n \"bodySHA256\",\n \"iat\",\n \"exp\",\n \"jti\",\n \"roles\"\n ],\n \"methodPattern\": \"^[A-Z]{1,16}$\",\n \"requiredHeaderFields\": [\n \"alg\",\n \"typ\",\n \"kid\"\n ],\n \"publicKeyFields\": [\n \"kty\",\n \"crv\",\n \"x\",\n \"kid\"\n ]\n} as const;\n"]}
|
package/dist/cjs/runtime.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Trusted host integration; application code uses client.streams without configuration. */
|
|
2
|
-
export interface AppRuntime {
|
|
3
|
-
readonly appId: string;
|
|
4
|
-
/** Authenticated host bridge. Never expose a service key to the browser. */
|
|
5
|
-
request(path: string, body: unknown, options: {
|
|
6
|
-
signal: AbortSignal;
|
|
7
|
-
}): Promise<Response>;
|
|
8
|
-
}
|
|
9
|
-
/** Internal lifecycle registration, shared across SDK copies in the host page. */
|
|
10
|
-
export declare function onAppRuntimeDispose(runtime: AppRuntime, callback: () => void): () => void;
|
|
11
|
-
export declare function getAppRuntime(): AppRuntime | undefined;
|
|
12
|
-
/** Install before loading App code; disposal removes only this installation. */
|
|
13
|
-
export declare function installAppRuntime(runtime: AppRuntime): () => void;
|
package/dist/cjs/runtime.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.onAppRuntimeDispose = onAppRuntimeDispose;
|
|
4
|
-
exports.getAppRuntime = getAppRuntime;
|
|
5
|
-
exports.installAppRuntime = installAppRuntime;
|
|
6
|
-
const runtimeKey = Symbol.for('tier0.sdk.app-runtime.v1');
|
|
7
|
-
const cleanupKey = Symbol.for('tier0.sdk.app-runtime-cleanup.v1');
|
|
8
|
-
/** Internal lifecycle registration, shared across SDK copies in the host page. */
|
|
9
|
-
function onAppRuntimeDispose(runtime, callback) {
|
|
10
|
-
const target = globalThis;
|
|
11
|
-
const callbacks = target[cleanupKey] ??= new Map();
|
|
12
|
-
const listeners = callbacks.get(runtime) ?? new Set();
|
|
13
|
-
callbacks.set(runtime, listeners);
|
|
14
|
-
listeners.add(callback);
|
|
15
|
-
return () => {
|
|
16
|
-
listeners.delete(callback);
|
|
17
|
-
if (!listeners.size)
|
|
18
|
-
callbacks.delete(runtime);
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function disposeRuntime(runtime) {
|
|
22
|
-
if (!runtime)
|
|
23
|
-
return;
|
|
24
|
-
const callbacks = globalThis[cleanupKey];
|
|
25
|
-
const listeners = callbacks?.get(runtime);
|
|
26
|
-
callbacks?.delete(runtime);
|
|
27
|
-
if (listeners)
|
|
28
|
-
for (const listener of listeners)
|
|
29
|
-
listener();
|
|
30
|
-
}
|
|
31
|
-
function getAppRuntime() {
|
|
32
|
-
return globalThis[runtimeKey];
|
|
33
|
-
}
|
|
34
|
-
/** Install before loading App code; disposal removes only this installation. */
|
|
35
|
-
function installAppRuntime(runtime) {
|
|
36
|
-
if (!runtime.appId?.trim() || typeof runtime.request !== 'function') {
|
|
37
|
-
throw new TypeError('Tier0 SDK: invalid trusted App runtime.');
|
|
38
|
-
}
|
|
39
|
-
const target = globalThis;
|
|
40
|
-
const previous = target[runtimeKey];
|
|
41
|
-
target[runtimeKey] = runtime;
|
|
42
|
-
if (previous !== runtime)
|
|
43
|
-
disposeRuntime(previous);
|
|
44
|
-
return () => {
|
|
45
|
-
if (target[runtimeKey] === runtime) {
|
|
46
|
-
delete target[runtimeKey];
|
|
47
|
-
disposeRuntime(runtime);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=runtime.js.map
|
package/dist/cjs/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":";;AAeA,kDAUC;AAUD,sCAEC;AAGD,8CAcC;AA/CD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAMlE,kFAAkF;AAClF,SAAgB,mBAAmB,CAAC,OAAmB,EAAE,QAAoB;IAC3E,MAAM,MAAM,GAAG,UAA2B,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAc,CAAC;IAClE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAA+B;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAI,UAA4B,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,SAAS;QAAE,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAQ,UAA4B,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,gFAAgF;AAChF,SAAgB,iBAAiB,CAAC,OAAmB;IACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,UAA2B,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC7B,IAAI,QAAQ,KAAK,OAAO;QAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,GAAG,EAAE;QACV,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/** Trusted host integration; application code uses client.streams without configuration. */\nexport interface AppRuntime {\n readonly appId: string;\n /** Authenticated host bridge. Never expose a service key to the browser. */\n request(path: string, body: unknown, options: { signal: AbortSignal }): Promise<Response>;\n}\n\nconst runtimeKey = Symbol.for('tier0.sdk.app-runtime.v1');\nconst cleanupKey = Symbol.for('tier0.sdk.app-runtime-cleanup.v1');\ntype RuntimeGlobal = typeof globalThis & {\n [runtimeKey]?: AppRuntime;\n [cleanupKey]?: Map<AppRuntime, Set<() => void>>;\n};\n\n/** Internal lifecycle registration, shared across SDK copies in the host page. */\nexport function onAppRuntimeDispose(runtime: AppRuntime, callback: () => void): () => void {\n const target = globalThis as RuntimeGlobal;\n const callbacks = target[cleanupKey] ??= new Map();\n const listeners = callbacks.get(runtime) ?? new Set<() => void>();\n callbacks.set(runtime, listeners);\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (!listeners.size) callbacks.delete(runtime);\n };\n}\n\nfunction disposeRuntime(runtime: AppRuntime | undefined): void {\n if (!runtime) return;\n const callbacks = (globalThis as RuntimeGlobal)[cleanupKey];\n const listeners = callbacks?.get(runtime);\n callbacks?.delete(runtime);\n if (listeners) for (const listener of listeners) listener();\n}\n\nexport function getAppRuntime(): AppRuntime | undefined {\n return (globalThis as RuntimeGlobal)[runtimeKey];\n}\n\n/** Install before loading App code; disposal removes only this installation. */\nexport function installAppRuntime(runtime: AppRuntime): () => void {\n if (!runtime.appId?.trim() || typeof runtime.request !== 'function') {\n throw new TypeError('Tier0 SDK: invalid trusted App runtime.');\n }\n const target = globalThis as RuntimeGlobal;\n const previous = target[runtimeKey];\n target[runtimeKey] = runtime;\n if (previous !== runtime) disposeRuntime(previous);\n return () => {\n if (target[runtimeKey] === runtime) {\n delete target[runtimeKey];\n disposeRuntime(runtime);\n }\n };\n}\n"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare const APP_REQUEST_IDENTITY_CONTRACT: {
|
|
2
|
-
readonly version: "tier0.app-request-identity/v1";
|
|
3
|
-
readonly header: "X-Tier0-App-Identity";
|
|
4
|
-
readonly type: "tier0-app-request+jwt";
|
|
5
|
-
readonly algorithm: "EdDSA";
|
|
6
|
-
readonly issuer: "tier0-app-gateway";
|
|
7
|
-
readonly audience: "tier0-app-runtime";
|
|
8
|
-
readonly maxTokenBytes: 8192;
|
|
9
|
-
readonly maxBodyBytes: 65536;
|
|
10
|
-
readonly maxURIBytes: 8192;
|
|
11
|
-
readonly maxTTLSeconds: 30;
|
|
12
|
-
readonly clockSkewSeconds: 5;
|
|
13
|
-
readonly maxRoles: 32;
|
|
14
|
-
readonly maxRoleBytes: 128;
|
|
15
|
-
readonly maxKeys: 8;
|
|
16
|
-
readonly keyIDPattern: "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$";
|
|
17
|
-
readonly appIDPattern: "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$";
|
|
18
|
-
readonly requiredClaims: readonly ["ver", "iss", "aud", "sub", "workspaceID", "appID", "method", "requestURI", "bodySHA256", "iat", "exp", "jti", "roles"];
|
|
19
|
-
readonly methodPattern: "^[A-Z]{1,16}$";
|
|
20
|
-
readonly requiredHeaderFields: readonly ["alg", "typ", "kid"];
|
|
21
|
-
readonly publicKeyFields: readonly ["kty", "crv", "x", "kid"];
|
|
22
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// Generated from SWE gatewayheader/app-request-identity.v1.json; do not edit.
|
|
2
|
-
// Source SHA-256: ac5ec2efb882395e63a46c9ec479de16c09943b88fc0bd906dd77c7f9f4bfaa3
|
|
3
|
-
export const APP_REQUEST_IDENTITY_CONTRACT = {
|
|
4
|
-
"version": "tier0.app-request-identity/v1",
|
|
5
|
-
"header": "X-Tier0-App-Identity",
|
|
6
|
-
"type": "tier0-app-request+jwt",
|
|
7
|
-
"algorithm": "EdDSA",
|
|
8
|
-
"issuer": "tier0-app-gateway",
|
|
9
|
-
"audience": "tier0-app-runtime",
|
|
10
|
-
"maxTokenBytes": 8192,
|
|
11
|
-
"maxBodyBytes": 65536,
|
|
12
|
-
"maxURIBytes": 8192,
|
|
13
|
-
"maxTTLSeconds": 30,
|
|
14
|
-
"clockSkewSeconds": 5,
|
|
15
|
-
"maxRoles": 32,
|
|
16
|
-
"maxRoleBytes": 128,
|
|
17
|
-
"maxKeys": 8,
|
|
18
|
-
"keyIDPattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$",
|
|
19
|
-
"appIDPattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
|
20
|
-
"requiredClaims": [
|
|
21
|
-
"ver",
|
|
22
|
-
"iss",
|
|
23
|
-
"aud",
|
|
24
|
-
"sub",
|
|
25
|
-
"workspaceID",
|
|
26
|
-
"appID",
|
|
27
|
-
"method",
|
|
28
|
-
"requestURI",
|
|
29
|
-
"bodySHA256",
|
|
30
|
-
"iat",
|
|
31
|
-
"exp",
|
|
32
|
-
"jti",
|
|
33
|
-
"roles"
|
|
34
|
-
],
|
|
35
|
-
"methodPattern": "^[A-Z]{1,16}$",
|
|
36
|
-
"requiredHeaderFields": [
|
|
37
|
-
"alg",
|
|
38
|
-
"typ",
|
|
39
|
-
"kid"
|
|
40
|
-
],
|
|
41
|
-
"publicKeyFields": [
|
|
42
|
-
"kty",
|
|
43
|
-
"crv",
|
|
44
|
-
"x",
|
|
45
|
-
"kid"
|
|
46
|
-
]
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=app-identity-contract.generated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-identity-contract.generated.js","sourceRoot":"","sources":["../../src/app-identity-contract.generated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mFAAmF;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,+BAA+B;IAC1C,QAAQ,EAAE,sBAAsB;IAChC,MAAM,EAAE,uBAAuB;IAC/B,WAAW,EAAE,OAAO;IACpB,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,CAAC;IACrB,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,GAAG;IACnB,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,mCAAmC;IACnD,cAAc,EAAE,2EAA2E;IAC3F,gBAAgB,EAAE;QAChB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,aAAa;QACb,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,KAAK;QACL,KAAK;QACL,KAAK;QACL,OAAO;KACR;IACD,eAAe,EAAE,eAAe;IAChC,sBAAsB,EAAE;QACtB,KAAK;QACL,KAAK;QACL,KAAK;KACN;IACD,iBAAiB,EAAE;QACjB,KAAK;QACL,KAAK;QACL,GAAG;QACH,KAAK;KACN;CACO,CAAC","sourcesContent":["// Generated from SWE gatewayheader/app-request-identity.v1.json; do not edit.\n// Source SHA-256: ac5ec2efb882395e63a46c9ec479de16c09943b88fc0bd906dd77c7f9f4bfaa3\nexport const APP_REQUEST_IDENTITY_CONTRACT = {\n \"version\": \"tier0.app-request-identity/v1\",\n \"header\": \"X-Tier0-App-Identity\",\n \"type\": \"tier0-app-request+jwt\",\n \"algorithm\": \"EdDSA\",\n \"issuer\": \"tier0-app-gateway\",\n \"audience\": \"tier0-app-runtime\",\n \"maxTokenBytes\": 8192,\n \"maxBodyBytes\": 65536,\n \"maxURIBytes\": 8192,\n \"maxTTLSeconds\": 30,\n \"clockSkewSeconds\": 5,\n \"maxRoles\": 32,\n \"maxRoleBytes\": 128,\n \"maxKeys\": 8,\n \"keyIDPattern\": \"^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$\",\n \"appIDPattern\": \"^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\",\n \"requiredClaims\": [\n \"ver\",\n \"iss\",\n \"aud\",\n \"sub\",\n \"workspaceID\",\n \"appID\",\n \"method\",\n \"requestURI\",\n \"bodySHA256\",\n \"iat\",\n \"exp\",\n \"jti\",\n \"roles\"\n ],\n \"methodPattern\": \"^[A-Z]{1,16}$\",\n \"requiredHeaderFields\": [\n \"alg\",\n \"typ\",\n \"kid\"\n ],\n \"publicKeyFields\": [\n \"kty\",\n \"crv\",\n \"x\",\n \"kid\"\n ]\n} as const;\n"]}
|
package/dist/esm/runtime.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Trusted host integration; application code uses client.streams without configuration. */
|
|
2
|
-
export interface AppRuntime {
|
|
3
|
-
readonly appId: string;
|
|
4
|
-
/** Authenticated host bridge. Never expose a service key to the browser. */
|
|
5
|
-
request(path: string, body: unknown, options: {
|
|
6
|
-
signal: AbortSignal;
|
|
7
|
-
}): Promise<Response>;
|
|
8
|
-
}
|
|
9
|
-
/** Internal lifecycle registration, shared across SDK copies in the host page. */
|
|
10
|
-
export declare function onAppRuntimeDispose(runtime: AppRuntime, callback: () => void): () => void;
|
|
11
|
-
export declare function getAppRuntime(): AppRuntime | undefined;
|
|
12
|
-
/** Install before loading App code; disposal removes only this installation. */
|
|
13
|
-
export declare function installAppRuntime(runtime: AppRuntime): () => void;
|
package/dist/esm/runtime.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
const runtimeKey = Symbol.for('tier0.sdk.app-runtime.v1');
|
|
2
|
-
const cleanupKey = Symbol.for('tier0.sdk.app-runtime-cleanup.v1');
|
|
3
|
-
/** Internal lifecycle registration, shared across SDK copies in the host page. */
|
|
4
|
-
export function onAppRuntimeDispose(runtime, callback) {
|
|
5
|
-
const target = globalThis;
|
|
6
|
-
const callbacks = target[cleanupKey] ??= new Map();
|
|
7
|
-
const listeners = callbacks.get(runtime) ?? new Set();
|
|
8
|
-
callbacks.set(runtime, listeners);
|
|
9
|
-
listeners.add(callback);
|
|
10
|
-
return () => {
|
|
11
|
-
listeners.delete(callback);
|
|
12
|
-
if (!listeners.size)
|
|
13
|
-
callbacks.delete(runtime);
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function disposeRuntime(runtime) {
|
|
17
|
-
if (!runtime)
|
|
18
|
-
return;
|
|
19
|
-
const callbacks = globalThis[cleanupKey];
|
|
20
|
-
const listeners = callbacks?.get(runtime);
|
|
21
|
-
callbacks?.delete(runtime);
|
|
22
|
-
if (listeners)
|
|
23
|
-
for (const listener of listeners)
|
|
24
|
-
listener();
|
|
25
|
-
}
|
|
26
|
-
export function getAppRuntime() {
|
|
27
|
-
return globalThis[runtimeKey];
|
|
28
|
-
}
|
|
29
|
-
/** Install before loading App code; disposal removes only this installation. */
|
|
30
|
-
export function installAppRuntime(runtime) {
|
|
31
|
-
if (!runtime.appId?.trim() || typeof runtime.request !== 'function') {
|
|
32
|
-
throw new TypeError('Tier0 SDK: invalid trusted App runtime.');
|
|
33
|
-
}
|
|
34
|
-
const target = globalThis;
|
|
35
|
-
const previous = target[runtimeKey];
|
|
36
|
-
target[runtimeKey] = runtime;
|
|
37
|
-
if (previous !== runtime)
|
|
38
|
-
disposeRuntime(previous);
|
|
39
|
-
return () => {
|
|
40
|
-
if (target[runtimeKey] === runtime) {
|
|
41
|
-
delete target[runtimeKey];
|
|
42
|
-
disposeRuntime(runtime);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=runtime.js.map
|
package/dist/esm/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAMlE,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,OAAmB,EAAE,QAAoB;IAC3E,MAAM,MAAM,GAAG,UAA2B,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAc,CAAC;IAClE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,OAA+B;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAI,UAA4B,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,SAAS;QAAE,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAQ,UAA4B,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,OAAmB;IACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,UAA2B,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC7B,IAAI,QAAQ,KAAK,OAAO;QAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,GAAG,EAAE;QACV,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;YAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/** Trusted host integration; application code uses client.streams without configuration. */\nexport interface AppRuntime {\n readonly appId: string;\n /** Authenticated host bridge. Never expose a service key to the browser. */\n request(path: string, body: unknown, options: { signal: AbortSignal }): Promise<Response>;\n}\n\nconst runtimeKey = Symbol.for('tier0.sdk.app-runtime.v1');\nconst cleanupKey = Symbol.for('tier0.sdk.app-runtime-cleanup.v1');\ntype RuntimeGlobal = typeof globalThis & {\n [runtimeKey]?: AppRuntime;\n [cleanupKey]?: Map<AppRuntime, Set<() => void>>;\n};\n\n/** Internal lifecycle registration, shared across SDK copies in the host page. */\nexport function onAppRuntimeDispose(runtime: AppRuntime, callback: () => void): () => void {\n const target = globalThis as RuntimeGlobal;\n const callbacks = target[cleanupKey] ??= new Map();\n const listeners = callbacks.get(runtime) ?? new Set<() => void>();\n callbacks.set(runtime, listeners);\n listeners.add(callback);\n return () => {\n listeners.delete(callback);\n if (!listeners.size) callbacks.delete(runtime);\n };\n}\n\nfunction disposeRuntime(runtime: AppRuntime | undefined): void {\n if (!runtime) return;\n const callbacks = (globalThis as RuntimeGlobal)[cleanupKey];\n const listeners = callbacks?.get(runtime);\n callbacks?.delete(runtime);\n if (listeners) for (const listener of listeners) listener();\n}\n\nexport function getAppRuntime(): AppRuntime | undefined {\n return (globalThis as RuntimeGlobal)[runtimeKey];\n}\n\n/** Install before loading App code; disposal removes only this installation. */\nexport function installAppRuntime(runtime: AppRuntime): () => void {\n if (!runtime.appId?.trim() || typeof runtime.request !== 'function') {\n throw new TypeError('Tier0 SDK: invalid trusted App runtime.');\n }\n const target = globalThis as RuntimeGlobal;\n const previous = target[runtimeKey];\n target[runtimeKey] = runtime;\n if (previous !== runtime) disposeRuntime(previous);\n return () => {\n if (target[runtimeKey] === runtime) {\n delete target[runtimeKey];\n disposeRuntime(runtime);\n }\n };\n}\n"]}
|