@layervai/qurl 0.3.0 → 0.4.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 (75) hide show
  1. package/README.md +340 -23
  2. package/dist/cjs/client.d.ts +180 -13
  3. package/dist/cjs/client.js +1126 -96
  4. package/dist/cjs/errors.d.ts +15 -11
  5. package/dist/cjs/errors.js +30 -21
  6. package/dist/cjs/index.d.ts +3 -3
  7. package/dist/cjs/index.js +4 -1
  8. package/dist/cjs/internal.d.ts +4 -0
  9. package/dist/cjs/internal.js +16 -0
  10. package/dist/cjs/node/deployment.d.ts +44 -0
  11. package/dist/cjs/node/deployment.js +167 -0
  12. package/dist/cjs/node/native-udp.d.ts +37 -0
  13. package/dist/cjs/node/native-udp.js +294 -0
  14. package/dist/cjs/node/nhp-wire.d.ts +35 -0
  15. package/dist/cjs/node/nhp-wire.js +261 -0
  16. package/dist/cjs/node/portal-opener.d.ts +83 -0
  17. package/dist/cjs/node/portal-opener.js +767 -0
  18. package/dist/cjs/node/qv2.d.ts +38 -0
  19. package/dist/cjs/node/qv2.js +292 -0
  20. package/dist/cjs/node/strict-json.d.ts +12 -0
  21. package/dist/cjs/node/strict-json.js +174 -0
  22. package/dist/cjs/node.d.ts +3 -0
  23. package/dist/cjs/node.js +11 -0
  24. package/dist/cjs/types.d.ts +90 -18
  25. package/dist/cjs/version.d.ts +1 -1
  26. package/dist/cjs/version.js +1 -1
  27. package/dist/esm/client.d.ts +180 -13
  28. package/dist/esm/client.d.ts.map +1 -1
  29. package/dist/esm/client.js +1125 -96
  30. package/dist/esm/client.js.map +1 -1
  31. package/dist/esm/errors.d.ts +15 -11
  32. package/dist/esm/errors.d.ts.map +1 -1
  33. package/dist/esm/errors.js +29 -20
  34. package/dist/esm/errors.js.map +1 -1
  35. package/dist/esm/index.d.ts +3 -3
  36. package/dist/esm/index.d.ts.map +1 -1
  37. package/dist/esm/index.js +2 -2
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/esm/internal.d.ts +5 -0
  40. package/dist/esm/internal.d.ts.map +1 -0
  41. package/dist/esm/internal.js +14 -0
  42. package/dist/esm/internal.js.map +1 -0
  43. package/dist/esm/node/deployment.d.ts +45 -0
  44. package/dist/esm/node/deployment.d.ts.map +1 -0
  45. package/dist/esm/node/deployment.js +163 -0
  46. package/dist/esm/node/deployment.js.map +1 -0
  47. package/dist/esm/node/native-udp.d.ts +38 -0
  48. package/dist/esm/node/native-udp.d.ts.map +1 -0
  49. package/dist/esm/node/native-udp.js +291 -0
  50. package/dist/esm/node/native-udp.js.map +1 -0
  51. package/dist/esm/node/nhp-wire.d.ts +36 -0
  52. package/dist/esm/node/nhp-wire.d.ts.map +1 -0
  53. package/dist/esm/node/nhp-wire.js +257 -0
  54. package/dist/esm/node/nhp-wire.js.map +1 -0
  55. package/dist/esm/node/portal-opener.d.ts +84 -0
  56. package/dist/esm/node/portal-opener.d.ts.map +1 -0
  57. package/dist/esm/node/portal-opener.js +757 -0
  58. package/dist/esm/node/portal-opener.js.map +1 -0
  59. package/dist/esm/node/qv2.d.ts +39 -0
  60. package/dist/esm/node/qv2.d.ts.map +1 -0
  61. package/dist/esm/node/qv2.js +286 -0
  62. package/dist/esm/node/qv2.js.map +1 -0
  63. package/dist/esm/node/strict-json.d.ts +13 -0
  64. package/dist/esm/node/strict-json.d.ts.map +1 -0
  65. package/dist/esm/node/strict-json.js +171 -0
  66. package/dist/esm/node/strict-json.js.map +1 -0
  67. package/dist/esm/node.d.ts +4 -0
  68. package/dist/esm/node.d.ts.map +1 -0
  69. package/dist/esm/node.js +2 -0
  70. package/dist/esm/node.js.map +1 -0
  71. package/dist/esm/types.d.ts +90 -18
  72. package/dist/esm/types.d.ts.map +1 -1
  73. package/dist/esm/version.d.ts +1 -1
  74. package/dist/esm/version.js +1 -1
  75. package/package.json +25 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-opener.js","sourceRoot":"","sources":["../../../src/node/portal-opener.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { KeyObject } from "node:crypto";
2
+ export interface VerifiedQv2Link {
3
+ readonly claimsB64: string;
4
+ readonly signatureB64: string;
5
+ readonly claims: {
6
+ readonly kid: string;
7
+ readonly cellPublicKey: Uint8Array;
8
+ readonly resourcePublicKeyB64: string;
9
+ };
10
+ readonly devicePrivateKey: Uint8Array;
11
+ }
12
+ export declare function verifyQv2Link(qurl: string, issuers: ReadonlyMap<string, KeyObject>): VerifiedQv2Link;
13
+ export declare function issuerKeyFromSpki(spki: Uint8Array): KeyObject;
14
+ export declare function x25519PublicFromPrivate(raw: Uint8Array): Uint8Array;
15
+ export declare function strictBase64Url(value: string): Uint8Array;
16
+ declare function decodeTransport(value: string): string;
17
+ type ParsedClaims = {
18
+ kid: string;
19
+ cellPublicKeyB64: string;
20
+ resourcePublicKeyB64: string;
21
+ qurlUserPublicKeyB64: string;
22
+ };
23
+ declare function parseClaims(raw: Uint8Array): ParsedClaims;
24
+ declare function verifyIssuerClaims(claimsB64: string, signatureB64: string, issuers: ReadonlyMap<string, KeyObject>, parsedClaims?: ParsedClaims): ParsedClaims;
25
+ declare function parseSecret(raw: Uint8Array): {
26
+ qurlUserPrivateKeyB64: string;
27
+ };
28
+ declare function parseAndWipeSecret(raw: Uint8Array): {
29
+ qurlUserPrivateKeyB64: string;
30
+ };
31
+ export declare const qv2Testing: {
32
+ decodeTransport: typeof decodeTransport;
33
+ parseClaims: typeof parseClaims;
34
+ parseSecret: typeof parseSecret;
35
+ parseAndWipeSecret: typeof parseAndWipeSecret;
36
+ verifyIssuerClaims: typeof verifyIssuerClaims;
37
+ };
38
+ export {};
39
+ //# sourceMappingURL=qv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qv2.d.ts","sourceRoot":"","sources":["../../../src/node/qv2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA4B7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;QACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;KACvC,CAAC;IACF,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;CACvC;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GACtC,eAAe,CAqCjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAc7D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAanE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEzD;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgC9C;AA6BD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,iBAAS,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,CAqDlD;AAED,iBAAS,kBAAkB,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EACvC,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY,CAMd;AAoBD,iBAAS,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAgBvE;AAED,iBAAS,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAM9E;AAsBD,eAAO,MAAM,UAAU;;;;;;CAMtB,CAAC"}
@@ -0,0 +1,286 @@
1
+ import { createPublicKey, createPrivateKey, timingSafeEqual, verify } from "node:crypto";
2
+ import { isStrictJsonObject, parseStrictJson } from "./strict-json.js";
3
+ const TRANSPORT_PREFIX = "qv2t1";
4
+ const FRAGMENT_PREFIX = "qv2";
5
+ const TRANSPORT_MAX_LENGTH = 6_826;
6
+ const TRANSPORT_COMPONENT_MAX = 240;
7
+ const SIGNING_DOMAIN = Buffer.from("NHP-QURL-V2-ISSUER\0", "utf8");
8
+ const P256_ORDER = BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551");
9
+ const P256_HALF_ORDER = P256_ORDER >> 1n;
10
+ const X25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b656e04220420", "hex");
11
+ const CLAIM_KEYS = new Set([
12
+ "v",
13
+ "iss",
14
+ "kid",
15
+ "iat",
16
+ "nbf",
17
+ "exp",
18
+ "jti",
19
+ "cell_public_key_b64",
20
+ "cell_id",
21
+ "relay_url",
22
+ "resource_public_key_b64",
23
+ "qurl_user_public_key_b64",
24
+ ]);
25
+ const REQUIRED_CLAIM_KEYS = [...CLAIM_KEYS].filter((key) => key !== "cell_id");
26
+ export function verifyQv2Link(qurl, issuers) {
27
+ const hash = qurl.indexOf("#");
28
+ if (hash < 0)
29
+ throw new Error("qURL link has no credential fragment");
30
+ const canonical = decodeTransport(qurl.slice(hash + 1));
31
+ const parts = canonical.split(".");
32
+ if (parts.length !== 4 || parts[0] !== FRAGMENT_PREFIX || parts.slice(1).some((p) => p === "")) {
33
+ throw new Error("invalid qURL credential fragment");
34
+ }
35
+ const [, claimsB64, secretB64, signatureB64] = parts;
36
+ // Match Go ParseFragment -> Verify ordering: strict claims and secret parsing
37
+ // precede signature/trust errors for an otherwise valid outer transport.
38
+ const claims = parseClaims(decodeCanonicalBase64Url(claimsB64));
39
+ const secret = parseAndWipeSecret(decodeCanonicalBase64Url(secretB64));
40
+ verifyIssuerClaims(claimsB64, signatureB64, issuers, claims);
41
+ const privateKey = decodeCanonicalBase64Url(secret.qurlUserPrivateKeyB64);
42
+ let retainPrivateKey = false;
43
+ try {
44
+ if (privateKey.byteLength !== 32)
45
+ throw new Error("qURL private key has an invalid length");
46
+ const derivedPublicKey = x25519PublicFromPrivate(privateKey);
47
+ const signedPublicKey = decodeX25519(claims.qurlUserPublicKeyB64, "qURL public key");
48
+ if (!timingSafeEqual(derivedPublicKey, signedPublicKey)) {
49
+ throw new Error("qURL private key does not match its signed public key");
50
+ }
51
+ retainPrivateKey = true;
52
+ return {
53
+ claimsB64,
54
+ signatureB64,
55
+ claims: {
56
+ kid: claims.kid,
57
+ cellPublicKey: decodeX25519(claims.cellPublicKeyB64, "cell public key"),
58
+ resourcePublicKeyB64: claims.resourcePublicKeyB64,
59
+ },
60
+ devicePrivateKey: privateKey,
61
+ };
62
+ }
63
+ finally {
64
+ if (!retainPrivateKey)
65
+ privateKey.fill(0);
66
+ }
67
+ }
68
+ export function issuerKeyFromSpki(spki) {
69
+ const key = createPublicKey({ key: spki, format: "der", type: "spki" });
70
+ const canonical = key.export({ format: "der", type: "spki" });
71
+ const supplied = Buffer.from(spki.buffer, spki.byteOffset, spki.byteLength);
72
+ // Node accepts a valid SPKI followed by unrelated DER bytes. Go's
73
+ // x509.ParsePKIXPublicKey requires the complete input to contain one key, so
74
+ // require the same byte-exact consumption before this key becomes trust.
75
+ if (canonical.byteLength !== supplied.byteLength || !canonical.equals(supplied)) {
76
+ throw new Error("issuer key must contain exactly one canonical SPKI public key");
77
+ }
78
+ if (key.asymmetricKeyType !== "ec" || key.asymmetricKeyDetails?.namedCurve !== "prime256v1") {
79
+ throw new Error("issuer key must be a P-256 SPKI public key");
80
+ }
81
+ return key;
82
+ }
83
+ export function x25519PublicFromPrivate(raw) {
84
+ if (raw.byteLength !== 32)
85
+ throw new Error("X25519 private key must be 32 bytes");
86
+ const der = Buffer.alloc(X25519_PKCS8_PREFIX.byteLength + raw.byteLength);
87
+ X25519_PKCS8_PREFIX.copy(der);
88
+ der.set(raw, X25519_PKCS8_PREFIX.byteLength);
89
+ let privateKey;
90
+ try {
91
+ privateKey = createPrivateKey({ key: der, format: "der", type: "pkcs8" });
92
+ }
93
+ finally {
94
+ der.fill(0);
95
+ }
96
+ const spki = createPublicKey(privateKey).export({ format: "der", type: "spki" });
97
+ return new Uint8Array(spki.subarray(spki.byteLength - 32));
98
+ }
99
+ export function strictBase64Url(value) {
100
+ return decodeCanonicalBase64Url(value);
101
+ }
102
+ function decodeTransport(value) {
103
+ if (value.length > TRANSPORT_MAX_LENGTH)
104
+ throw new Error("qURL transport exceeds its size limit");
105
+ const parts = value.split(".");
106
+ if (parts.length < 4 || parts[0] !== TRANSPORT_PREFIX) {
107
+ throw new Error("qURL does not use the qv2t1 credential transport");
108
+ }
109
+ const counts = [parseCount(parts[1], 26), parseCount(parts[2], 3), parseCount(parts[3], 1)];
110
+ if (parts.length !== 4 + counts[0] + counts[1] + counts[2]) {
111
+ throw new Error("qURL transport part count does not match its declarations");
112
+ }
113
+ let offset = 4;
114
+ const limits = [6_144, 512, 128];
115
+ const fields = counts.map((count, index) => {
116
+ const chunks = parts.slice(offset, offset + count);
117
+ offset += count;
118
+ let total = 0;
119
+ for (let i = 0; i < chunks.length; i++) {
120
+ const chunk = chunks[i];
121
+ if (chunk.length === 0 ||
122
+ chunk.length > TRANSPORT_COMPONENT_MAX ||
123
+ (i < chunks.length - 1 && chunk.length !== TRANSPORT_COMPONENT_MAX) ||
124
+ !/^[A-Za-z0-9_-]+$/.test(chunk)) {
125
+ throw new Error("qURL transport has an invalid chunk");
126
+ }
127
+ total += chunk.length;
128
+ if (total > limits[index])
129
+ throw new Error("qURL transport field exceeds its size limit");
130
+ }
131
+ return chunks.join("");
132
+ });
133
+ return `${FRAGMENT_PREFIX}.${fields[0]}.${fields[1]}.${fields[2]}`;
134
+ }
135
+ function parseCount(value, maximum) {
136
+ if (!/^[1-9][0-9]*$/.test(value))
137
+ throw new Error("qURL transport count is not canonical");
138
+ const count = Number(value);
139
+ if (!Number.isSafeInteger(count) || count > maximum) {
140
+ throw new Error("qURL transport count exceeds its limit");
141
+ }
142
+ return count;
143
+ }
144
+ function decodeCanonicalBase64Url(value) {
145
+ if (value === "" || !/^[A-Za-z0-9_-]+$/.test(value) || value.length % 4 === 1) {
146
+ throw new Error("value is not canonical unpadded base64url");
147
+ }
148
+ const decoded = Buffer.from(value, "base64url");
149
+ if (decoded.toString("base64url") !== value) {
150
+ decoded.fill(0);
151
+ throw new Error("value is not canonical unpadded base64url");
152
+ }
153
+ return decoded;
154
+ }
155
+ function decodeX25519(value, name) {
156
+ const decoded = decodeCanonicalBase64Url(value);
157
+ if (decoded.byteLength !== 32)
158
+ throw new Error(`${name} has an invalid length`);
159
+ return decoded;
160
+ }
161
+ function parseClaims(raw) {
162
+ const value = parseStrictJson(raw, 4_608);
163
+ if (!isStrictJsonObject(value))
164
+ throw new Error("qURL claims must be one JSON object");
165
+ for (const key of Object.keys(value)) {
166
+ if (!CLAIM_KEYS.has(key))
167
+ throw new Error("qURL claims contain an unknown field");
168
+ if (value[key] === null)
169
+ throw new Error("qURL claims contain a null field");
170
+ }
171
+ for (const key of REQUIRED_CLAIM_KEYS) {
172
+ if (!(key in value))
173
+ throw new Error("qURL claims are missing a required field");
174
+ }
175
+ if (value.v !== 2n || value.iss !== "qurl-service")
176
+ throw new Error("qURL claims version or issuer is invalid");
177
+ const times = {
178
+ iat: 0n,
179
+ nbf: 0n,
180
+ exp: 0n,
181
+ };
182
+ for (const key of ["iat", "nbf", "exp"]) {
183
+ const item = value[key];
184
+ if (typeof item !== "bigint" || item <= 0n || item > 9999999999n) {
185
+ throw new Error("qURL claims contain an invalid time");
186
+ }
187
+ times[key] = item;
188
+ }
189
+ if (times.iat > times.exp || times.nbf > times.exp) {
190
+ throw new Error("qURL claims contain an invalid time window");
191
+ }
192
+ const kid = requireNonEmptyString(value.kid, "issuer key id");
193
+ requireNonEmptyString(value.jti, "qURL id");
194
+ const cellPublicKeyB64 = requireNonEmptyString(value.cell_public_key_b64, "cell public key");
195
+ decodeX25519(cellPublicKeyB64, "cell public key");
196
+ const qurlPublic = requireNonEmptyString(value.qurl_user_public_key_b64, "qURL public key");
197
+ decodeX25519(qurlPublic, "qURL public key");
198
+ const resourcePublicKeyB64 = requireNonEmptyString(value.resource_public_key_b64, "resource public key");
199
+ const resourcePublic = decodeCanonicalBase64Url(resourcePublicKeyB64);
200
+ if (resourcePublic.byteLength < 80 || resourcePublic.byteLength > 160) {
201
+ throw new Error("resource public key has an invalid length");
202
+ }
203
+ requireNonEmptyString(value.relay_url, "relay URL");
204
+ // cell_id is descriptive deployment metadata, not a security identity. The
205
+ // signed 32-byte cell public key selects and then fully binds the UDP peer.
206
+ if ("cell_id" in value && typeof value.cell_id !== "string") {
207
+ throw new Error("qURL cell id must be a string");
208
+ }
209
+ return {
210
+ kid,
211
+ cellPublicKeyB64,
212
+ resourcePublicKeyB64,
213
+ qurlUserPublicKeyB64: qurlPublic,
214
+ };
215
+ }
216
+ function verifyIssuerClaims(claimsB64, signatureB64, issuers, parsedClaims) {
217
+ // Full-link verification supplies the claims it parsed before the secret so
218
+ // this shared verification path preserves Go's ParseFragment error order.
219
+ const claims = parsedClaims ?? parseClaims(decodeCanonicalBase64Url(claimsB64));
220
+ verifyParsedIssuerClaims(claims, claimsB64, signatureB64, issuers);
221
+ return claims;
222
+ }
223
+ function verifyParsedIssuerClaims(claims, claimsB64, signatureB64, issuers) {
224
+ const signature = decodeCanonicalBase64Url(signatureB64);
225
+ const issuer = issuers.get(claims.kid);
226
+ if (!issuer)
227
+ throw new Error("qURL uses an unknown issuer key id");
228
+ // Go resolves trust after base64 decoding but before raw signature shape
229
+ // validation. Preserve that error precedence for full-link verification.
230
+ validateRawP256Signature(signature);
231
+ const signingInput = Buffer.concat([SIGNING_DOMAIN, Buffer.from(claimsB64, "ascii")]);
232
+ if (!verify("sha256", signingInput, { key: issuer, dsaEncoding: "ieee-p1363" }, signature)) {
233
+ throw new Error("qURL issuer signature verification failed");
234
+ }
235
+ }
236
+ function parseSecret(raw) {
237
+ const value = parseStrictJson(raw, 1_024);
238
+ if (!isStrictJsonObject(value) || Object.keys(value).length !== 1) {
239
+ throw new Error("qURL secret has an invalid object shape");
240
+ }
241
+ const qurlUserPrivateKeyB64 = requireNonEmptyString(value.qurl_user_private_key_b64, "qURL private key");
242
+ const privateKey = decodeCanonicalBase64Url(qurlUserPrivateKeyB64);
243
+ try {
244
+ if (privateKey.byteLength !== 32)
245
+ throw new Error("qURL private key has an invalid length");
246
+ }
247
+ finally {
248
+ privateKey.fill(0);
249
+ }
250
+ return { qurlUserPrivateKeyB64 };
251
+ }
252
+ function parseAndWipeSecret(raw) {
253
+ try {
254
+ return parseSecret(raw);
255
+ }
256
+ finally {
257
+ raw.fill(0);
258
+ }
259
+ }
260
+ function requireNonEmptyString(value, name) {
261
+ if (typeof value !== "string" || value === "")
262
+ throw new Error(`${name} must be a non-empty string`);
263
+ return value;
264
+ }
265
+ function validateRawP256Signature(signature) {
266
+ if (signature.byteLength !== 64)
267
+ throw new Error("qURL signature must be 64 bytes");
268
+ const r = bytesToBigInt(signature.subarray(0, 32));
269
+ const s = bytesToBigInt(signature.subarray(32));
270
+ if (r <= 0n || r >= P256_ORDER || s <= 0n || s >= P256_ORDER) {
271
+ throw new Error("qURL signature scalar is outside the P-256 range");
272
+ }
273
+ if (s > P256_HALF_ORDER)
274
+ throw new Error("qURL signature is not low-S normalized");
275
+ }
276
+ function bytesToBigInt(value) {
277
+ return BigInt(`0x${Buffer.from(value).toString("hex")}`);
278
+ }
279
+ export const qv2Testing = {
280
+ decodeTransport,
281
+ parseClaims,
282
+ parseSecret,
283
+ parseAndWipeSecret,
284
+ verifyIssuerClaims,
285
+ };
286
+ //# sourceMappingURL=qv2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qv2.js","sourceRoot":"","sources":["../../../src/node/qv2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type StrictJsonValue = null | boolean | number | bigint | string | StrictJsonValue[] | {
2
+ [key: string]: StrictJsonValue;
3
+ };
4
+ /**
5
+ * Parse a bounded JSON value without JavaScript's duplicate-key or unsafe-
6
+ * integer ambiguity. NHP uses uint64 session identifiers, so integral values
7
+ * outside Number's safe range remain bigint instead of losing wire bytes.
8
+ */
9
+ export declare function parseStrictJson(input: Uint8Array, maxBytes: number): StrictJsonValue;
10
+ export declare function isStrictJsonObject(value: StrictJsonValue | undefined): value is {
11
+ [key: string]: StrictJsonValue;
12
+ };
13
+ //# sourceMappingURL=strict-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-json.d.ts","sourceRoot":"","sources":["../../../src/node/strict-json.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,eAAe,EAAE,GACjB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAQpF;AAsID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,KAAK,IAAI;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,CAE7C"}
@@ -0,0 +1,171 @@
1
+ const MAX_JSON_DEPTH = 32;
2
+ const JSON_NUMBER = /-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?/y;
3
+ /**
4
+ * Parse a bounded JSON value without JavaScript's duplicate-key or unsafe-
5
+ * integer ambiguity. NHP uses uint64 session identifiers, so integral values
6
+ * outside Number's safe range remain bigint instead of losing wire bytes.
7
+ */
8
+ export function parseStrictJson(input, maxBytes) {
9
+ if (input.byteLength > maxBytes)
10
+ throw new Error(`JSON exceeds ${maxBytes}-byte limit`);
11
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(input);
12
+ const parser = new StrictJsonParser(text);
13
+ const value = parser.parseValue(0);
14
+ parser.skipWhitespace();
15
+ if (!parser.done)
16
+ throw new Error("trailing data after JSON value");
17
+ return value;
18
+ }
19
+ class StrictJsonParser {
20
+ input;
21
+ #offset = 0;
22
+ constructor(input) {
23
+ this.input = input;
24
+ }
25
+ get done() {
26
+ return this.#offset === this.input.length;
27
+ }
28
+ skipWhitespace() {
29
+ while (this.#offset < this.input.length) {
30
+ const code = this.input.charCodeAt(this.#offset);
31
+ if (code !== 0x20 && code !== 0x09 && code !== 0x0a && code !== 0x0d)
32
+ break;
33
+ this.#offset++;
34
+ }
35
+ }
36
+ parseValue(depth) {
37
+ if (depth > MAX_JSON_DEPTH)
38
+ throw new Error("JSON nesting is too deep");
39
+ this.skipWhitespace();
40
+ const token = this.input[this.#offset];
41
+ if (token === '"')
42
+ return this.parseString();
43
+ if (token === "{")
44
+ return this.parseObject(depth + 1);
45
+ if (token === "[")
46
+ return this.parseArray(depth + 1);
47
+ if (token === "t")
48
+ return this.parseLiteral("true", true);
49
+ if (token === "f")
50
+ return this.parseLiteral("false", false);
51
+ if (token === "n")
52
+ return this.parseLiteral("null", null);
53
+ if (token === "-" || (token !== undefined && token >= "0" && token <= "9")) {
54
+ return this.parseNumber();
55
+ }
56
+ throw new Error("invalid JSON value");
57
+ }
58
+ parseObject(depth) {
59
+ this.#offset++;
60
+ const value = Object.create(null);
61
+ const keys = new Set();
62
+ this.skipWhitespace();
63
+ if (this.consume("}"))
64
+ return value;
65
+ while (true) {
66
+ this.skipWhitespace();
67
+ if (this.input[this.#offset] !== '"')
68
+ throw new Error("JSON object key must be a string");
69
+ const key = this.parseString();
70
+ if (keys.has(key))
71
+ throw new Error("duplicate JSON object key");
72
+ keys.add(key);
73
+ this.skipWhitespace();
74
+ if (!this.consume(":"))
75
+ throw new Error("JSON object key has no value");
76
+ value[key] = this.parseValue(depth);
77
+ this.skipWhitespace();
78
+ if (this.consume("}"))
79
+ return value;
80
+ if (!this.consume(","))
81
+ throw new Error("invalid JSON object separator");
82
+ }
83
+ }
84
+ parseArray(depth) {
85
+ this.#offset++;
86
+ const value = [];
87
+ this.skipWhitespace();
88
+ if (this.consume("]"))
89
+ return value;
90
+ while (true) {
91
+ value.push(this.parseValue(depth));
92
+ this.skipWhitespace();
93
+ if (this.consume("]"))
94
+ return value;
95
+ if (!this.consume(","))
96
+ throw new Error("invalid JSON array separator");
97
+ }
98
+ }
99
+ parseString() {
100
+ const start = this.#offset++;
101
+ while (this.#offset < this.input.length) {
102
+ const code = this.input.charCodeAt(this.#offset++);
103
+ if (code === 0x22) {
104
+ const encoded = this.input.slice(start, this.#offset);
105
+ const value = JSON.parse(encoded);
106
+ if (typeof value !== "string")
107
+ throw new Error("invalid JSON string");
108
+ return value;
109
+ }
110
+ if (code < 0x20)
111
+ throw new Error("unescaped control in JSON string");
112
+ if (code === 0x5c) {
113
+ if (this.#offset >= this.input.length)
114
+ throw new Error("unterminated JSON escape");
115
+ if (this.input[this.#offset] === "u") {
116
+ const hex = this.input.slice(this.#offset + 1, this.#offset + 5);
117
+ if (!/^[0-9a-fA-F]{4}$/.test(hex))
118
+ throw new Error("invalid JSON unicode escape");
119
+ this.#offset += 5;
120
+ }
121
+ else {
122
+ if (!'"\\/bfnrt'.includes(this.input[this.#offset])) {
123
+ throw new Error("invalid JSON escape");
124
+ }
125
+ this.#offset++;
126
+ }
127
+ }
128
+ }
129
+ throw new Error("unterminated JSON string");
130
+ }
131
+ parseNumber() {
132
+ // A sticky expression scans at the current offset without copying the
133
+ // remaining document for every number in a large deployment file.
134
+ JSON_NUMBER.lastIndex = this.#offset;
135
+ const match = JSON_NUMBER.exec(this.input);
136
+ if (!match)
137
+ throw new Error("invalid JSON number");
138
+ const encoded = match[0];
139
+ this.#offset = JSON_NUMBER.lastIndex;
140
+ // Keep every syntactic JSON integer distinct from fractional or exponent
141
+ // notation. NHP integer fields reject 1.0 and 1e0 even when Number would
142
+ // reduce them to the same mathematical value as 1.
143
+ if (!encoded.includes(".") && !/[eE]/.test(encoded)) {
144
+ // BigInt("-0") becomes 0n and loses the wire sign. Keep negative zero as
145
+ // a number so unsigned integer fields reject this noncanonical syntax.
146
+ if (encoded === "-0")
147
+ return -0;
148
+ return BigInt(encoded);
149
+ }
150
+ const value = Number(encoded);
151
+ if (!Number.isFinite(value))
152
+ throw new Error("JSON number is outside the finite range");
153
+ return value;
154
+ }
155
+ parseLiteral(literal, value) {
156
+ if (!this.input.startsWith(literal, this.#offset))
157
+ throw new Error("invalid JSON literal");
158
+ this.#offset += literal.length;
159
+ return value;
160
+ }
161
+ consume(value) {
162
+ if (this.input[this.#offset] !== value)
163
+ return false;
164
+ this.#offset++;
165
+ return true;
166
+ }
167
+ }
168
+ export function isStrictJsonObject(value) {
169
+ return typeof value === "object" && value !== null && !Array.isArray(value);
170
+ }
171
+ //# sourceMappingURL=strict-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-json.js","sourceRoot":"","sources":["../../../src/node/strict-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { createPortalOpener, PortalBusyError, PortalConfigurationError, PortalDenyError, PortalInvalidReplyError, PortalStateError, PortalVerificationError, } from "./node/portal-opener.js";
2
+ export type { CreatePortalOpenerOptions, PortalFetchOptions, PortalOpener, PortalRenewalFailure, PortalRequestBuilder, PortalSessionHealth, PortalStartOptions, } from "./node/portal-opener.js";
3
+ export type { PortalDeployment, PortalDeploymentCell, PortalDeploymentIssuer, } from "./node/deployment.js";
4
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createPortalOpener, PortalBusyError, PortalConfigurationError, PortalDenyError, PortalInvalidReplyError, PortalStateError, PortalVerificationError, } from "./node/portal-opener.js";
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}