@cotal-ai/core 0.16.0 → 0.18.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.
Files changed (145) hide show
  1. package/dist/acls.d.ts +21 -0
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +44 -1
  4. package/dist/acls.js.map +1 -1
  5. package/dist/artifact.d.ts +45 -0
  6. package/dist/artifact.d.ts.map +1 -0
  7. package/dist/artifact.js +82 -0
  8. package/dist/artifact.js.map +1 -0
  9. package/dist/backup-config.d.ts +9 -2
  10. package/dist/backup-config.d.ts.map +1 -1
  11. package/dist/backup-config.js +6 -2
  12. package/dist/backup-config.js.map +1 -1
  13. package/dist/broker-tls.d.ts +70 -0
  14. package/dist/broker-tls.d.ts.map +1 -0
  15. package/dist/broker-tls.js +195 -0
  16. package/dist/broker-tls.js.map +1 -0
  17. package/dist/canonical.d.ts +14 -1
  18. package/dist/canonical.d.ts.map +1 -1
  19. package/dist/canonical.js +21 -1
  20. package/dist/canonical.js.map +1 -1
  21. package/dist/channels.js +4 -4
  22. package/dist/channels.js.map +1 -1
  23. package/dist/endpoint-action.d.ts +108 -3
  24. package/dist/endpoint-action.d.ts.map +1 -1
  25. package/dist/endpoint-action.js +209 -20
  26. package/dist/endpoint-action.js.map +1 -1
  27. package/dist/endpoint-binding.d.ts +138 -8
  28. package/dist/endpoint-binding.d.ts.map +1 -1
  29. package/dist/endpoint-binding.js +233 -26
  30. package/dist/endpoint-binding.js.map +1 -1
  31. package/dist/endpoint-contract-store.d.ts +30 -1
  32. package/dist/endpoint-contract-store.d.ts.map +1 -1
  33. package/dist/endpoint-contract-store.js +100 -29
  34. package/dist/endpoint-contract-store.js.map +1 -1
  35. package/dist/endpoint-envelope.d.ts +15 -37
  36. package/dist/endpoint-envelope.d.ts.map +1 -1
  37. package/dist/endpoint-envelope.js +93 -44
  38. package/dist/endpoint-envelope.js.map +1 -1
  39. package/dist/endpoint-error.d.ts +33 -0
  40. package/dist/endpoint-error.d.ts.map +1 -0
  41. package/dist/endpoint-error.js +34 -0
  42. package/dist/endpoint-error.js.map +1 -0
  43. package/dist/endpoint-grants.d.ts +63 -7
  44. package/dist/endpoint-grants.d.ts.map +1 -1
  45. package/dist/endpoint-grants.js +118 -9
  46. package/dist/endpoint-grants.js.map +1 -1
  47. package/dist/endpoint-invoke.d.ts +138 -0
  48. package/dist/endpoint-invoke.d.ts.map +1 -0
  49. package/dist/endpoint-invoke.js +393 -0
  50. package/dist/endpoint-invoke.js.map +1 -0
  51. package/dist/endpoint-records.d.ts.map +1 -1
  52. package/dist/endpoint-records.js +17 -0
  53. package/dist/endpoint-records.js.map +1 -1
  54. package/dist/endpoint-serve-kv.d.ts +97 -0
  55. package/dist/endpoint-serve-kv.d.ts.map +1 -0
  56. package/dist/endpoint-serve-kv.js +336 -0
  57. package/dist/endpoint-serve-kv.js.map +1 -0
  58. package/dist/endpoint-serve.d.ts.map +1 -1
  59. package/dist/endpoint-serve.js +21 -1
  60. package/dist/endpoint-serve.js.map +1 -1
  61. package/dist/endpoint-service.d.ts +1 -1
  62. package/dist/endpoint-service.d.ts.map +1 -1
  63. package/dist/endpoint-service.js +34 -10
  64. package/dist/endpoint-service.js.map +1 -1
  65. package/dist/endpoint-session-rail.d.ts +127 -0
  66. package/dist/endpoint-session-rail.d.ts.map +1 -0
  67. package/dist/endpoint-session-rail.js +325 -0
  68. package/dist/endpoint-session-rail.js.map +1 -0
  69. package/dist/endpoint-session.d.ts +1 -115
  70. package/dist/endpoint-session.d.ts.map +1 -1
  71. package/dist/endpoint-session.js +4 -316
  72. package/dist/endpoint-session.js.map +1 -1
  73. package/dist/endpoint-subjects.d.ts +20 -1
  74. package/dist/endpoint-subjects.d.ts.map +1 -1
  75. package/dist/endpoint-subjects.js +20 -1
  76. package/dist/endpoint-subjects.js.map +1 -1
  77. package/dist/endpoint-verbs.d.ts +1 -2
  78. package/dist/endpoint-verbs.d.ts.map +1 -1
  79. package/dist/endpoint-verbs.js +6 -6
  80. package/dist/endpoint-verbs.js.map +1 -1
  81. package/dist/endpoint.d.ts +157 -11
  82. package/dist/endpoint.d.ts.map +1 -1
  83. package/dist/endpoint.js +471 -47
  84. package/dist/endpoint.js.map +1 -1
  85. package/dist/evict.d.ts +47 -0
  86. package/dist/evict.d.ts.map +1 -1
  87. package/dist/evict.js +191 -59
  88. package/dist/evict.js.map +1 -1
  89. package/dist/identity.d.ts +34 -0
  90. package/dist/identity.d.ts.map +1 -1
  91. package/dist/identity.js +46 -0
  92. package/dist/identity.js.map +1 -1
  93. package/dist/index.d.ts +8 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +8 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/kv-scan.d.ts +8 -0
  98. package/dist/kv-scan.d.ts.map +1 -1
  99. package/dist/kv-scan.js +8 -0
  100. package/dist/kv-scan.js.map +1 -1
  101. package/dist/lease.d.ts +12 -5
  102. package/dist/lease.d.ts.map +1 -1
  103. package/dist/lease.js.map +1 -1
  104. package/dist/lifecycle-saga.d.ts +174 -0
  105. package/dist/lifecycle-saga.d.ts.map +1 -0
  106. package/dist/lifecycle-saga.js +418 -0
  107. package/dist/lifecycle-saga.js.map +1 -0
  108. package/dist/lifecycle-state.d.ts +202 -0
  109. package/dist/lifecycle-state.d.ts.map +1 -0
  110. package/dist/lifecycle-state.js +347 -0
  111. package/dist/lifecycle-state.js.map +1 -0
  112. package/dist/parts.d.ts +13 -0
  113. package/dist/parts.d.ts.map +1 -0
  114. package/dist/parts.js +17 -0
  115. package/dist/parts.js.map +1 -0
  116. package/dist/provision.d.ts +124 -15
  117. package/dist/provision.d.ts.map +1 -1
  118. package/dist/provision.js +578 -121
  119. package/dist/provision.js.map +1 -1
  120. package/dist/schema-profile.d.ts +3 -2
  121. package/dist/schema-profile.d.ts.map +1 -1
  122. package/dist/schema-profile.js +242 -18
  123. package/dist/schema-profile.js.map +1 -1
  124. package/dist/session-browser.d.ts +15 -0
  125. package/dist/session-browser.d.ts.map +1 -0
  126. package/dist/session-browser.js +14 -0
  127. package/dist/session-browser.js.map +1 -0
  128. package/dist/session-terminal-frames.d.ts +36 -0
  129. package/dist/session-terminal-frames.d.ts.map +1 -0
  130. package/dist/session-terminal-frames.js +149 -0
  131. package/dist/session-terminal-frames.js.map +1 -0
  132. package/dist/spaces.d.ts.map +1 -1
  133. package/dist/spaces.js +6 -1
  134. package/dist/spaces.js.map +1 -1
  135. package/dist/streams.d.ts +168 -1
  136. package/dist/streams.d.ts.map +1 -1
  137. package/dist/streams.js +299 -21
  138. package/dist/streams.js.map +1 -1
  139. package/dist/subjects.d.ts +34 -36
  140. package/dist/subjects.d.ts.map +1 -1
  141. package/dist/subjects.js +46 -35
  142. package/dist/subjects.js.map +1 -1
  143. package/dist/types.d.ts +27 -1
  144. package/dist/types.d.ts.map +1 -1
  145. package/package.json +6 -1
package/dist/acls.d.ts CHANGED
@@ -59,6 +59,27 @@ export declare function readAclForAlias(kv: KV, principal: string): Promise<{
59
59
  * effect: writing the same `allowSubscribe` is harmless. Use `allowSubscribe: []` to revoke all reads
60
60
  * (the reader then DROPS the owner's entries) — distinct from {@link deleteAcl}, which removes the row.
61
61
  */
62
+ /**
63
+ * Raise the mint-time history ceiling (`issuedAllowSubscribe`) to match `allowSubscribe`.
64
+ *
65
+ * CALL PATH: only {@link provisionAgent} (and tests of that path). Ordinary registry writers use
66
+ * {@link commitAcl}, which cannot raise the ceiling — a boolean flag on commitAcl would let any
67
+ * DurableProvisioner holder re-open the ACL-authority hole. Separate function = separate call path.
68
+ *
69
+ * PROCESS DISCIPLINE, NOT CRYPTO BINDING: this write does not verify that a broader JWT was minted.
70
+ * A caller who can reach `reissueAcl` can raise the ceiling while leaving the live credential
71
+ * narrow, and mediated history will then serve channels `channelHistory` still broker-denies.
72
+ * That is accepted residual: whoever holds the provisioner can already mint arbitrary JWTs. The
73
+ * obligation is that `reissueAcl` may ONLY ride the same act that bakes `allowSubscribe` into the
74
+ * user JWT (provision/remint). Do not call it from revoke, repair, or any path that does not also
75
+ * remint. Docs must not claim the ceiling is bound to credential bytes.
76
+ */
77
+ export declare function reissueAcl(kv: KV, owner: string, lifecycleUid: string, allowSubscribe: string[]): Promise<AclRecord>;
78
+ /**
79
+ * Write the live read ACL. Never raises the mint-time ceiling: create sets ceiling = allow;
80
+ * updates that exceed the ceiling throw. For a legitimate broaden that also remints the JWT, use
81
+ * {@link reissueAcl} from the provisioning path only.
82
+ */
62
83
  export declare function commitAcl(kv: KV, owner: string, lifecycleUid: string, allowSubscribe: string[]): Promise<AclRecord>;
63
84
  /** Permanently remove one LIFECYCLE's ACL row (GC / footprint deletion — revocation deletes the
64
85
  * footprint AFTER invalidating creds). Lifecycle-exact by construction: a replayed delete for a
@@ -1 +1 @@
1
- {"version":3,"file":"acls.d.ts","sourceRoot":"","sources":["../src/acls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;mGACmG;AACnG,wBAAsB,eAAe,CACnC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAU9D;AAED;;wFAEwF;AACxF,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE;gBADvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE;CAOnC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA6BpF;AA8BD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CA+CzH;AAED;;;;uCAIuC;AACvC,wBAAsB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F"}
1
+ {"version":3,"file":"acls.d.ts","sourceRoot":"","sources":["../src/acls.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;mGACmG;AACnG,wBAAsB,eAAe,CACnC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAU9D;AAED;;wFAEwF;AACxF,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE;gBADvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE;CAOnC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA6BpF;AA8BD;;;;;;GAMG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,SAAS,CAAC,CAEpB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,SAAS,CAAC,CAEpB;AA2ED;;;;uCAIuC;AACvC,wBAAsB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F"}
package/dist/acls.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * record (a genuinely-unknown owner — the reader DEFERS, never drops).
15
15
  */
16
16
  import { Kvm } from "@nats-io/kv";
17
- import { aclBucket, aclKey, aclAliasFilter, parseLifecycleSubjectKey } from "./subjects.js";
17
+ import { aclBucket, aclKey, aclAliasFilter, parseLifecycleSubjectKey, patternInAllow } from "./subjects.js";
18
18
  import { liveKvEntries } from "./kv-scan.js";
19
19
  /** Open the ACL registry bucket. Auth mode OPENs the bucket pre-created at `cotal up`; a privileged
20
20
  * caller may pass `{ create: true }` to lazily CREATE it. Mirrors {@link openMembersRegistry}. */
@@ -135,13 +135,56 @@ async function enumerateLiveAclRows(kv, principal) {
135
135
  * effect: writing the same `allowSubscribe` is harmless. Use `allowSubscribe: []` to revoke all reads
136
136
  * (the reader then DROPS the owner's entries) — distinct from {@link deleteAcl}, which removes the row.
137
137
  */
138
+ /**
139
+ * Raise the mint-time history ceiling (`issuedAllowSubscribe`) to match `allowSubscribe`.
140
+ *
141
+ * CALL PATH: only {@link provisionAgent} (and tests of that path). Ordinary registry writers use
142
+ * {@link commitAcl}, which cannot raise the ceiling — a boolean flag on commitAcl would let any
143
+ * DurableProvisioner holder re-open the ACL-authority hole. Separate function = separate call path.
144
+ *
145
+ * PROCESS DISCIPLINE, NOT CRYPTO BINDING: this write does not verify that a broader JWT was minted.
146
+ * A caller who can reach `reissueAcl` can raise the ceiling while leaving the live credential
147
+ * narrow, and mediated history will then serve channels `channelHistory` still broker-denies.
148
+ * That is accepted residual: whoever holds the provisioner can already mint arbitrary JWTs. The
149
+ * obligation is that `reissueAcl` may ONLY ride the same act that bakes `allowSubscribe` into the
150
+ * user JWT (provision/remint). Do not call it from revoke, repair, or any path that does not also
151
+ * remint. Docs must not claim the ceiling is bound to credential bytes.
152
+ */
153
+ export async function reissueAcl(kv, owner, lifecycleUid, allowSubscribe) {
154
+ return writeAcl(kv, owner, lifecycleUid, allowSubscribe, { reissue: true });
155
+ }
156
+ /**
157
+ * Write the live read ACL. Never raises the mint-time ceiling: create sets ceiling = allow;
158
+ * updates that exceed the ceiling throw. For a legitimate broaden that also remints the JWT, use
159
+ * {@link reissueAcl} from the provisioning path only.
160
+ */
138
161
  export async function commitAcl(kv, owner, lifecycleUid, allowSubscribe) {
162
+ return writeAcl(kv, owner, lifecycleUid, allowSubscribe, { reissue: false });
163
+ }
164
+ async function writeAcl(kv, owner, lifecycleUid, allowSubscribe, opts) {
139
165
  const key = aclKey(owner, lifecycleUid);
140
166
  let lastErr;
141
167
  for (let attempt = 0; attempt < 5; attempt++) {
142
168
  const cur = await readAcl(kv, owner, lifecycleUid);
169
+ // Ceiling is writable ONLY by create and by reissueAcl (provision/remint). Plain commitAcl
170
+ // MUST NOT raise it. Legacy rows missing the field treat their then-current allowSubscribe
171
+ // as the ceiling.
172
+ let issued;
173
+ if (opts.reissue || !cur) {
174
+ issued = [...allowSubscribe];
175
+ }
176
+ else {
177
+ issued = [...(cur.record.issuedAllowSubscribe ?? cur.record.allowSubscribe)];
178
+ const excess = allowSubscribe.filter((a) => !patternInAllow(issued, a));
179
+ if (excess.length > 0) {
180
+ throw new Error(`commitAcl: cannot raise ACL above mint-time ceiling without reissue ` +
181
+ `(entries [${excess.join(", ")}] not within ceiling [${issued.join(", ")}]); ` +
182
+ `use reissueAcl from the provisioning path that also remints the JWT`);
183
+ }
184
+ }
143
185
  const next = {
144
186
  allowSubscribe: [...allowSubscribe],
187
+ issuedAllowSubscribe: issued,
145
188
  revision: (cur?.record.revision ?? 0) + 1,
146
189
  updatedAt: Date.now(),
147
190
  };
package/dist/acls.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"acls.js","sourceRoot":"","sources":["../src/acls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acls.js","sourceRoot":"","sources":["../src/acls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /** The core part kind. Bare (not reverse-DNS) because this is Cotal's own reserved primitive, not
2
+ * a wrapped external vocabulary — SPEC §5's reserved slot, now defined. */
3
+ export declare const ARTIFACT_PART_KIND: "artifact";
4
+ /**
5
+ * Convert an object-store digest header to Cotal's `sha256:<hex>` identity form.
6
+ *
7
+ * CONVERT BY DECODING. NEVER BY RE-ENCODING. The obvious implementation — hash the bytes, encode
8
+ * the hash, compare the strings — is wrong, and wrong in a way that passes its first test:
9
+ * measured over 2000 digests, re-encoding to standard base64 mismatches **1490 of 2000** (every
10
+ * digest whose bytes land on `+` or `/`), and re-encoding to base64url mismatches **2000 of 2000**
11
+ * (Node strips the padding the store emits). Decoding to hex matched 2000 of 2000. The failure is
12
+ * in the digest CONTENT, not on a branch a smoke would naturally reach, so a re-encoding
13
+ * comparison looks correct until roughly three quarters of real artifacts fail to verify.
14
+ *
15
+ * The base64 form never escapes this function: everything above it speaks `sha256:<hex>`.
16
+ */
17
+ export declare function fromObjectStoreDigest(osDigest: string): string;
18
+ /**
19
+ * A reference to bytes in the space's artifact store (SPEC §5).
20
+ *
21
+ * There is deliberately no location field. The digest IS the identity: content-addressed, so a
22
+ * re-put of identical bytes is idempotent, and resolution can move from a JetStream Object Store
23
+ * to anything else without a message-shape change.
24
+ */
25
+ export interface ArtifactPart {
26
+ kind: typeof ARTIFACT_PART_KIND;
27
+ /** Human name, e.g. `coverage-report.html`. A publisher's claim (see the module doc). */
28
+ name: string;
29
+ /** MIME type. A publisher's claim. */
30
+ mediaType: string;
31
+ /** `sha256:<hex>` over the RAW bytes — the artifact's identity. Self-verifying. */
32
+ digest: string;
33
+ /** Size in bytes. A publisher's claim: never preallocate from it. */
34
+ size: number;
35
+ }
36
+ /**
37
+ * Structural guard for an `artifact` part.
38
+ *
39
+ * It validates the digest FORM, not just the field's type, because a malformed digest is not a
40
+ * reference to anything — it is a lookup that can only ever fail, and admitting it here would push
41
+ * the refusal to a fetch that reads as "missing artifact" instead of "malformed message". Same
42
+ * reason `size` must be a non-negative safe integer: `-1`, `NaN`, and `1e30` are all "a number".
43
+ */
44
+ export declare function isArtifactPart(value: unknown): value is ArtifactPart;
45
+ //# sourceMappingURL=artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAmBA;4EAC4E;AAC5E,eAAO,MAAM,kBAAkB,EAAG,UAAmB,CAAC;AAmBtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa9D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,kBAAkB,CAAC;IAChC,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAQpE"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * The `artifact` reference part and the object-store digest boundary (SPEC §5).
3
+ *
4
+ * An artifact is bytes that do not fit in a message. The message carries a REFERENCE — identity
5
+ * and size, never a location — so the backing store can change without touching a single message
6
+ * shape. Resolution is the reader's job.
7
+ *
8
+ * THE PART IS A CLAIM, NOT A FACT. `name`, `mediaType`, and `size` are whatever the publisher
9
+ * wrote. Only `digest` is self-verifying, because the bytes either hash to it or they do not. A
10
+ * receiver that preallocates from the part's `size`, or trusts its `mediaType` to decide how to
11
+ * handle the bytes, has taken a hostile publisher's word for it; the store's commit-time metadata
12
+ * is the one that was checked.
13
+ *
14
+ * This module deliberately holds the store boundary and NOT the digest primitives: `rawDigest` /
15
+ * `verifyRawBytes` live in `canonical.ts`, which knows nothing about any store and must stay that
16
+ * way.
17
+ */
18
+ import { DIGEST_PREFIX, isContractDigest } from "./canonical.js";
19
+ /** The core part kind. Bare (not reverse-DNS) because this is Cotal's own reserved primitive, not
20
+ * a wrapped external vocabulary — SPEC §5's reserved slot, now defined. */
21
+ export const ARTIFACT_PART_KIND = "artifact";
22
+ /**
23
+ * The object-store digest header form, MEASURED rather than assumed (nats-server 2.14.4,
24
+ * `@nats-io/obj` 3.4.0): `SHA-256=` followed by the **base64url alphabet WITH `=` padding** —
25
+ * e.g. `SHA-256=vSqOx0BLVInPlO4PJ1RvMKaI4Y5g1Uhfr-Jthge1elc=`. Over 200 blobs, `-` and `_`
26
+ * appeared and `+` and `/` never did.
27
+ *
28
+ * That form is neither of the two things Node's `createHash(...).digest()` produces, which is the
29
+ * whole reason this function exists. See {@link fromObjectStoreDigest}.
30
+ */
31
+ const OS_DIGEST_PREFIX = "SHA-256=";
32
+ /** 32 bytes of SHA-256 is 43 significant base64 characters plus one optional `=` pad. The
33
+ * alphabet is deliberately BOTH spellings (`-_` and `+/`): they decode to the same bytes, so
34
+ * accepting both is correct parsing of an unambiguous superset, not a fallback. Anything else —
35
+ * wrong length, stray character, no prefix — is refused loudly. */
36
+ const OS_DIGEST_BODY_RE = /^[A-Za-z0-9_-]{43}=?$|^[A-Za-z0-9+/]{43}=?$/;
37
+ /**
38
+ * Convert an object-store digest header to Cotal's `sha256:<hex>` identity form.
39
+ *
40
+ * CONVERT BY DECODING. NEVER BY RE-ENCODING. The obvious implementation — hash the bytes, encode
41
+ * the hash, compare the strings — is wrong, and wrong in a way that passes its first test:
42
+ * measured over 2000 digests, re-encoding to standard base64 mismatches **1490 of 2000** (every
43
+ * digest whose bytes land on `+` or `/`), and re-encoding to base64url mismatches **2000 of 2000**
44
+ * (Node strips the padding the store emits). Decoding to hex matched 2000 of 2000. The failure is
45
+ * in the digest CONTENT, not on a branch a smoke would naturally reach, so a re-encoding
46
+ * comparison looks correct until roughly three quarters of real artifacts fail to verify.
47
+ *
48
+ * The base64 form never escapes this function: everything above it speaks `sha256:<hex>`.
49
+ */
50
+ export function fromObjectStoreDigest(osDigest) {
51
+ if (typeof osDigest !== "string" || !osDigest.startsWith(OS_DIGEST_PREFIX))
52
+ throw new Error(`fromObjectStoreDigest: expected a ${JSON.stringify(OS_DIGEST_PREFIX)}-prefixed digest, got ${JSON.stringify(osDigest)}`);
53
+ const body = osDigest.slice(OS_DIGEST_PREFIX.length);
54
+ // Validate BEFORE decoding: Node's base64 decoder silently skips characters it does not
55
+ // recognize, so garbage can decode to a plausible 32 bytes. The shape check is what makes the
56
+ // length assertion below meaningful rather than decorative.
57
+ if (!OS_DIGEST_BODY_RE.test(body))
58
+ throw new Error(`fromObjectStoreDigest: ${JSON.stringify(osDigest)} is not 32 bytes of base64 SHA-256 (expected 43 characters plus optional padding)`);
59
+ const bytes = Buffer.from(body, "base64url");
60
+ if (bytes.length !== 32)
61
+ throw new Error(`fromObjectStoreDigest: ${JSON.stringify(osDigest)} decoded to ${bytes.length} bytes, not 32`);
62
+ return DIGEST_PREFIX + bytes.toString("hex");
63
+ }
64
+ /**
65
+ * Structural guard for an `artifact` part.
66
+ *
67
+ * It validates the digest FORM, not just the field's type, because a malformed digest is not a
68
+ * reference to anything — it is a lookup that can only ever fail, and admitting it here would push
69
+ * the refusal to a fetch that reads as "missing artifact" instead of "malformed message". Same
70
+ * reason `size` must be a non-negative safe integer: `-1`, `NaN`, and `1e30` are all "a number".
71
+ */
72
+ export function isArtifactPart(value) {
73
+ if (!value || typeof value !== "object")
74
+ return false;
75
+ const p = value;
76
+ return p.kind === ARTIFACT_PART_KIND &&
77
+ typeof p.name === "string" && p.name.length > 0 &&
78
+ typeof p.mediaType === "string" && p.mediaType.length > 0 &&
79
+ typeof p.digest === "string" && isContractDigest(p.digest) &&
80
+ typeof p.size === "number" && Number.isSafeInteger(p.size) && p.size >= 0;
81
+ }
82
+ //# sourceMappingURL=artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjE;4EAC4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAmB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC;;;oEAGoE;AACpE,MAAM,iBAAiB,GAAG,6CAA6C,CAAC;AAExE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5I,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrD,wFAAwF;IACxF,8FAA8F;IAC9F,4DAA4D;IAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mFAAmF,CAAC,CAAC;IACzJ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACjH,OAAO,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAqBD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CAAC,CAAC,IAAI,KAAK,kBAAkB;QAClC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAC/C,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QACzD,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC9E,CAAC"}
@@ -1,7 +1,11 @@
1
1
  import { StoreCompression, type StreamConfig } from "@nats-io/jetstream";
2
2
  export type SpaceBackupSelection = "full" | "registry";
3
3
  export type SpaceBackupStreamClass = "messages" | "registry" | "authorization";
4
- export type SpaceBackupExcludedClass = "transient" | "derived" | "lease";
4
+ /** Why a stream is outside the backup artifact. `artifact` is its own class deliberately: object
5
+ * bytes are neither transient (they outlive a session), derived (nothing can recompute them),
6
+ * nor a lease. Excluding them is a RETENTION decision — pin extends lifetime, not durability —
7
+ * and giving it an honest name keeps a later reader from reading it as "derived, so recoverable".*/
8
+ export type SpaceBackupExcludedClass = "transient" | "derived" | "lease" | "artifact";
5
9
  export interface SpaceBackupStream {
6
10
  name: string;
7
11
  class: SpaceBackupStreamClass;
@@ -17,7 +21,10 @@ export interface SpaceBackupInventory {
17
21
  registry: readonly string[];
18
22
  }
19
23
  /** The complete Cotal stream inventory at a stable backup cut. Only the eight `backedUp` streams
20
- * enter a full artifact; the four excluded streams are transient, derived, or leases. */
24
+ * enter a full artifact; the five excluded streams are transient, derived, leases, or the artifact
25
+ * object store. EVERY stream a space owns must appear in one list or the other:
26
+ * {@link validateSpaceBackupInventory} is exact set-equality, so an unenumerated stream fails
27
+ * validation for the WHOLE space, and a missing one fails it the same way. */
21
28
  export declare function spaceBackupInventory(space: string): SpaceBackupInventory;
22
29
  /** Reject a missing, foreign, or additional stream before selecting artifact components. */
23
30
  export declare function validateSpaceBackupInventory(space: string, actualNames: readonly string[]): SpaceBackupInventory;
@@ -1 +1 @@
1
- {"version":3,"file":"backup-config.d.ts","sourceRoot":"","sources":["../src/backup-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,EAChB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAkB5B,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAC/E,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,sBAAsB,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED;yFACyF;AACzF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAwBxE;AAED,4FAA4F;AAC5F,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,oBAAoB,CAgBhH;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,2FAA2F;AAC3F,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,YAAY,EACV,MAAM,GACN,UAAU,GACV,WAAW,GACX,SAAS,GACT,eAAe,GACf,UAAU,GACV,WAAW,GACX,SAAS,GACT,sBAAsB,GACtB,cAAc,GACd,SAAS,GACT,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,eAAe,GACf,yBAAyB,GACzB,mBAAmB,GACnB,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,iBAAiB,CACpB,GAAG;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAC3C,CAAC;AAGF,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,6BAA6B,QAAqB,CAAC;AA+BhE;kEACkE;AAClE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,2BAA2B,CAuCtG;AAiCD;wGACwG;AACxG,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,2BAA2B,CA8B7B;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,CA4DrG"}
1
+ {"version":3,"file":"backup-config.d.ts","sourceRoot":"","sources":["../src/backup-config.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { DiscardPolicy, RetentionPolicy, StorageType, StoreCompression, } from "@nats-io/jetstream";
2
2
  import { nanos } from "@nats-io/transport-node";
3
- import { aclBucket, channelBucket, chatStream, deliveryBucket, dlvStream, dmStream, inboxStream, managerBucket, membersBucket, membershipBucket, presenceBucket, spacePrefix, taskStream, } from "./subjects.js";
3
+ import { aclBucket, channelBucket, chatStream, deliveryBucket, dlvStream, dmStream, inboxStream, managerBucket, membersBucket, membershipBucket, presenceBucket, spacePrefix, taskStream, artifactBucket, objectStoreStream, } from "./subjects.js";
4
4
  /** The complete Cotal stream inventory at a stable backup cut. Only the eight `backedUp` streams
5
- * enter a full artifact; the four excluded streams are transient, derived, or leases. */
5
+ * enter a full artifact; the five excluded streams are transient, derived, leases, or the artifact
6
+ * object store. EVERY stream a space owns must appear in one list or the other:
7
+ * {@link validateSpaceBackupInventory} is exact set-equality, so an unenumerated stream fails
8
+ * validation for the WHOLE space, and a missing one fails it the same way. */
6
9
  export function spaceBackupInventory(space) {
7
10
  const registry = `KV_${channelBucket(space)}`;
8
11
  const backedUp = [
@@ -20,6 +23,7 @@ export function spaceBackupInventory(space) {
20
23
  { name: `KV_${membershipBucket(space)}`, class: "derived" },
21
24
  { name: `KV_${deliveryBucket(space)}`, class: "lease" },
22
25
  { name: `KV_${managerBucket(space)}`, class: "lease" },
26
+ { name: objectStoreStream(artifactBucket(space)), class: "artifact" },
23
27
  ];
24
28
  return {
25
29
  backedUp,
@@ -1 +1 @@
1
- {"version":3,"file":"backup-config.js","sourceRoot":"","sources":["../src/backup-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,UAAU,GACX,MAAM,eAAe,CAAC;AAuBvB;yFACyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAwB;QACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;QACrC,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;QAC9C,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;QAC5C,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;QAC9C,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;QAC/C,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;QAC7C,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;QAC1D,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;KAC/D,CAAC;IACF,MAAM,QAAQ,GAAgC;QAC5C,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3D,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QACvD,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;KACvD,CAAC;IACF,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,4BAA4B,CAAC,KAAa,EAAE,WAA8B;IACxF,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QACxC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1G,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA8CD,MAAM,wBAAwB,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChE,MAAM,uBAAuB,GAAG,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAErE,SAAS,UAAU,CAAC,IAAY,EAAE,QAAkB;IAClD,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,SAAS,EAAE,eAAe,CAAC,MAAM;QACjC,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,aAAa,EAAE,CAAC,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC;QACZ,SAAS,EAAE,CAAC,CAAC;QACb,OAAO,EAAE,CAAC;QACV,oBAAoB,EAAE,CAAC,CAAC;QACxB,YAAY,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,aAAa,CAAC,GAAG;QAC1B,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,KAAK;QACb,gBAAgB,EAAE,wBAAwB;QAC1C,WAAW,EAAE,gBAAgB,CAAC,IAAI;QAClC,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;QACpB,uBAAuB,EAAE,KAAK;QAC9B,iBAAiB,EAAE,KAAK;QACxB,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED;kEACkE;AAClE,MAAM,UAAU,2BAA2B,CAAC,KAAa,EAAE,MAAc;IACvE,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtC,oBAAoB,EAAE,2BAA2B;YACjD,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,IAAI,MAAM,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxC,oBAAoB,EAAE,2BAA2B;YACjD,gBAAgB,EAAE,uBAAuB;SAC1C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,oBAAoB,EAAE,2BAA2B;YACjD,gBAAgB,EAAE,uBAAuB;SAC1C,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,MAAM,KAAK,MAAM,MAAM,EAAE,EAAE,CAAC;YAC9B,OAAO;gBACL,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,MAAM,IAAI,CAAC,CAAC;gBAC1C,oBAAoB,EAAE,CAAC;gBACvB,OAAO,EAAE,aAAa,CAAC,GAAG;gBAC1B,YAAY,EAAE,IAAI;gBAClB,iBAAiB,EAAE,IAAI;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,qBAAqB,GAA4B;IACrD,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,EAAE;IAClB,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,iBAAiB,EAAE,IAAI;IACvB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,KAAK;IACpB,yBAAyB,EAAE,CAAC;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;wGACwG;AACxG,MAAM,UAAU,mCAAmC,CACjD,KAAa,EACb,MAAc,EACd,MAAyC;IAEzC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,mCAAmC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE7G,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzD,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5E,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;IACpG,CAAC;IACD,2FAA2F;IAC3F,+FAA+F;IAC/F,IACE,UAAU,CAAC,QAAQ;QACnB,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ;QACvC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAmC,CAAC;aAC3D,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACjF,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC3B,MAAM,MAAM,GAA4B,EAAE,GAAG,QAAQ,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAClF,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAC/F,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,6BAA6B,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAwC;IAChF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS;QACrF,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM;KAC7D,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzG,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,CAAU,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,sCAAsC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAkB,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,SAAmB,CAAC;IAChD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAkB,CAAC;IAC9C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,aAAa,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC,gBAAgB,IAAI,aAAa,KAAK,YAAY,GAAG,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;YACxB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACvF,CAAC;SAAM,CAAC;QACN,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,YAAY;YACnD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,IAAI,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,MAAM,GAAG,IAAK,KAAK,CAAC,OAAiC,IAAI,EAAE;QAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAK,GAAc,GAAG,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAU,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,sCAAsC,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAU,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAmC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,GAAG,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,CAAC;QACzF,IAAI,WAAW,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAK,IAAI,CAAC,KAAgB,GAAG,CAAC,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC7F,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,KAAqC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"backup-config.js","sourceRoot":"","sources":["../src/backup-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /** How the broker serves its client port. Every `serverConfig` render must state one explicitly. */
2
+ export type BrokerTransport = {
3
+ readonly kind: "plaintext";
4
+ } | {
5
+ readonly kind: "tls-required";
6
+ readonly certFile: string;
7
+ readonly keyFile: string;
8
+ };
9
+ export type TlsRequired = Extract<BrokerTransport, {
10
+ kind: "tls-required";
11
+ }>;
12
+ /** What a validated cert/key pair turned out to be. Returned so callers can log or compare it —
13
+ * notably the rotation path, which must prove the SERVED leaf matches the file on disk. */
14
+ export interface TlsMaterial {
15
+ readonly notBefore: Date;
16
+ readonly notAfter: Date;
17
+ /** Colon-separated uppercase SHA-256 of the DER, exactly as `X509Certificate.fingerprint256`
18
+ * and `tls.PeerCertificate.fingerprint256` render it, so the two are directly comparable. */
19
+ readonly fingerprint256: string;
20
+ readonly subject: string;
21
+ }
22
+ /** Thrown for every rejected cert/key pair. A distinct type so callers can surface a
23
+ * CERTIFICATE cause to the operator rather than a generic "broker unreachable" — a TLS failure
24
+ * reported as unreachability invites exactly the wrong remedy. */
25
+ export declare class TlsMaterialError extends Error {
26
+ constructor(message: string);
27
+ }
28
+ export declare function validateTlsMaterial(t: TlsRequired, opts?: {
29
+ dialHost?: string;
30
+ now?: Date;
31
+ }): TlsMaterial;
32
+ /** What the broker is actually serving right now, read off the wire. */
33
+ export interface ServedCert {
34
+ readonly fingerprint256: string;
35
+ readonly validTo: string;
36
+ readonly subject: string;
37
+ }
38
+ /**
39
+ * Open a real NATS STARTTLS connection and report the leaf certificate the broker is SERVING.
40
+ *
41
+ * This is the only honest proof that a rotation took effect. Renewing the files on disk does not
42
+ * reload nats-server: the reference deployment renews its Let's Encrypt material on a timer and
43
+ * the broker process has gone on serving the previous certificate for weeks, because nothing
44
+ * signalled it. Comparing file mtimes, or trusting that a reload command exited zero, would both
45
+ * have reported success there. Only reading back what the listener presents catches it.
46
+ *
47
+ * `rejectUnauthorized` is false on purpose: this call answers "which certificate is being served",
48
+ * not "do I trust it". The caller compares the returned fingerprint to the file it intended to
49
+ * install, which is a stronger and more specific check than chain validation.
50
+ */
51
+ export declare function probeServedCert(opts: {
52
+ host: string;
53
+ port: number;
54
+ /** SNI/verification name, when it differs from the dial host. */
55
+ servername?: string;
56
+ timeoutMs?: number;
57
+ }): Promise<ServedCert>;
58
+ /**
59
+ * Assert that the broker is serving exactly the certificate in `expected`. This is the rotation
60
+ * gate: validate the new pair, install it, signal the broker, then call this. A mismatch means the
61
+ * reload did not take, and the caller must fail loud and leave the previous listener in place —
62
+ * never fall back to plaintext.
63
+ */
64
+ export declare function assertServedCertMatches(expected: TlsMaterial, where: {
65
+ host: string;
66
+ port: number;
67
+ servername?: string;
68
+ timeoutMs?: number;
69
+ }): Promise<ServedCert>;
70
+ //# sourceMappingURL=broker-tls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker-tls.d.ts","sourceRoot":"","sources":["../src/broker-tls.ts"],"names":[],"mappings":"AAeA,oGAAoG;AACpG,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC;AAE7E;4FAC4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB;kGAC8F;IAC9F,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;mEAEmE;AACnE,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAwBD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAO,GAAG,WAAW,CA+E7G;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyDtB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC,UAAU,CAAC,CASrB"}