@layervai/qurl 0.4.0 → 0.5.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/README.md +126 -56
- package/dist/cjs/client.d.ts +5 -2
- package/dist/cjs/client.js +26 -4
- package/dist/cjs/node/deployment.d.ts +1 -1
- package/dist/cjs/node/deployment.js +2 -2
- package/dist/cjs/node/native-udp.d.ts +2 -4
- package/dist/cjs/node/native-udp.js +8 -8
- package/dist/cjs/node/portal-opener.d.ts +54 -23
- package/dist/cjs/node/portal-opener.js +643 -340
- package/dist/cjs/node.d.ts +2 -2
- package/dist/cjs/node.js +8 -1
- package/dist/cjs/types.d.ts +10 -2
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client.d.ts +5 -2
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +26 -4
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/node/deployment.d.ts +1 -1
- package/dist/esm/node/deployment.d.ts.map +1 -1
- package/dist/esm/node/deployment.js +2 -2
- package/dist/esm/node/deployment.js.map +1 -1
- package/dist/esm/node/native-udp.d.ts +2 -4
- package/dist/esm/node/native-udp.d.ts.map +1 -1
- package/dist/esm/node/native-udp.js +5 -5
- package/dist/esm/node/native-udp.js.map +1 -1
- package/dist/esm/node/portal-opener.d.ts +54 -23
- package/dist/esm/node/portal-opener.d.ts.map +1 -1
- package/dist/esm/node/portal-opener.js +636 -340
- package/dist/esm/node/portal-opener.js.map +1 -1
- package/dist/esm/node.d.ts +2 -2
- package/dist/esm/node.d.ts.map +1 -1
- package/dist/esm/node.js +1 -1
- package/dist/esm/node.js.map +1 -1
- package/dist/esm/types.d.ts +10 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +4 -4
package/dist/cjs/node.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createPortalOpener, PortalBusyError, PortalConfigurationError, PortalDenyError, PortalInvalidReplyError, PortalStateError, PortalVerificationError, } from "./node/portal-opener.js";
|
|
2
|
-
export type { CreatePortalOpenerOptions, PortalFetchOptions, PortalOpener,
|
|
1
|
+
export { createPortalOpener, PortalBusyError, PortalConfigurationError, PortalDenyError, PortalInvalidReplyError, PortalOpenerClosedError, PortalOpenerNotReadyError, PortalOpenerNotStartedError, PortalOpenTimeoutError, PortalRedirectError, PortalStateError, PortalTargetChangedError, PortalTooManyRedirectsError, PortalVerificationError, } from "./node/portal-opener.js";
|
|
2
|
+
export type { CreatePortalOpenerOptions, PortalFetchOptions, PortalOpener, PortalOpenerFailureClass, PortalOpenerHealth, PortalOpenerState, PortalRequestBuilder, PortalStartOptions, } from "./node/portal-opener.js";
|
|
3
3
|
export type { PortalDeployment, PortalDeploymentCell, PortalDeploymentIssuer, } from "./node/deployment.js";
|
package/dist/cjs/node.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PortalVerificationError = exports.PortalStateError = exports.PortalInvalidReplyError = exports.PortalDenyError = exports.PortalConfigurationError = exports.PortalBusyError = exports.createPortalOpener = void 0;
|
|
3
|
+
exports.PortalVerificationError = exports.PortalTooManyRedirectsError = exports.PortalTargetChangedError = exports.PortalStateError = exports.PortalRedirectError = exports.PortalOpenTimeoutError = exports.PortalOpenerNotStartedError = exports.PortalOpenerNotReadyError = exports.PortalOpenerClosedError = exports.PortalInvalidReplyError = exports.PortalDenyError = exports.PortalConfigurationError = exports.PortalBusyError = exports.createPortalOpener = void 0;
|
|
4
4
|
var portal_opener_js_1 = require("./node/portal-opener.js");
|
|
5
5
|
Object.defineProperty(exports, "createPortalOpener", { enumerable: true, get: function () { return portal_opener_js_1.createPortalOpener; } });
|
|
6
6
|
Object.defineProperty(exports, "PortalBusyError", { enumerable: true, get: function () { return portal_opener_js_1.PortalBusyError; } });
|
|
7
7
|
Object.defineProperty(exports, "PortalConfigurationError", { enumerable: true, get: function () { return portal_opener_js_1.PortalConfigurationError; } });
|
|
8
8
|
Object.defineProperty(exports, "PortalDenyError", { enumerable: true, get: function () { return portal_opener_js_1.PortalDenyError; } });
|
|
9
9
|
Object.defineProperty(exports, "PortalInvalidReplyError", { enumerable: true, get: function () { return portal_opener_js_1.PortalInvalidReplyError; } });
|
|
10
|
+
Object.defineProperty(exports, "PortalOpenerClosedError", { enumerable: true, get: function () { return portal_opener_js_1.PortalOpenerClosedError; } });
|
|
11
|
+
Object.defineProperty(exports, "PortalOpenerNotReadyError", { enumerable: true, get: function () { return portal_opener_js_1.PortalOpenerNotReadyError; } });
|
|
12
|
+
Object.defineProperty(exports, "PortalOpenerNotStartedError", { enumerable: true, get: function () { return portal_opener_js_1.PortalOpenerNotStartedError; } });
|
|
13
|
+
Object.defineProperty(exports, "PortalOpenTimeoutError", { enumerable: true, get: function () { return portal_opener_js_1.PortalOpenTimeoutError; } });
|
|
14
|
+
Object.defineProperty(exports, "PortalRedirectError", { enumerable: true, get: function () { return portal_opener_js_1.PortalRedirectError; } });
|
|
10
15
|
Object.defineProperty(exports, "PortalStateError", { enumerable: true, get: function () { return portal_opener_js_1.PortalStateError; } });
|
|
16
|
+
Object.defineProperty(exports, "PortalTargetChangedError", { enumerable: true, get: function () { return portal_opener_js_1.PortalTargetChangedError; } });
|
|
17
|
+
Object.defineProperty(exports, "PortalTooManyRedirectsError", { enumerable: true, get: function () { return portal_opener_js_1.PortalTooManyRedirectsError; } });
|
|
11
18
|
Object.defineProperty(exports, "PortalVerificationError", { enumerable: true, get: function () { return portal_opener_js_1.PortalVerificationError; } });
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -272,6 +272,13 @@ export interface CreatePortalOptions {
|
|
|
272
272
|
* server default; zero is rejected rather than treated as default.
|
|
273
273
|
*/
|
|
274
274
|
sessionDuration?: string | number;
|
|
275
|
+
/**
|
|
276
|
+
* Scope a qURL for an existing tunnel resource to one path and its
|
|
277
|
+
* descendants. The SDK rejects only empty values and values over 2048 UTF-8
|
|
278
|
+
* bytes; the API remains authoritative for the path grammar and resource
|
|
279
|
+
* type. This option is invalid with `createPortalForUrl`.
|
|
280
|
+
*/
|
|
281
|
+
targetPath?: string;
|
|
275
282
|
}
|
|
276
283
|
/**
|
|
277
284
|
* A qURL link minted for a protected resource.
|
|
@@ -459,8 +466,9 @@ export type CreateQurlForResourceInput = Omit<CreateInput, "target_url" | "custo
|
|
|
459
466
|
* Path this resource qURL resolves to (e.g. "/api/detect").
|
|
460
467
|
*
|
|
461
468
|
* Creation-only and valid only for tunnel resources. The SDK rejects empty
|
|
462
|
-
*
|
|
463
|
-
* invalid path grammar, including paths missing a
|
|
469
|
+
* values and values over 2048 UTF-8 bytes before sending a request; server
|
|
470
|
+
* validation rejects invalid path grammar, including paths missing a
|
|
471
|
+
* leading "/".
|
|
464
472
|
*/
|
|
465
473
|
target_path?: string;
|
|
466
474
|
};
|
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.5.0";
|
package/dist/cjs/version.js
CHANGED
package/dist/esm/client.d.ts
CHANGED
|
@@ -123,7 +123,8 @@ export declare class QURLClient {
|
|
|
123
123
|
* number of milliseconds with qurl-go's client-side guardrails: whole
|
|
124
124
|
* seconds only, at least one minute for `validFor` and one second for
|
|
125
125
|
* `sessionDuration`. `maxSessions: 0` is sent explicitly and means
|
|
126
|
-
* unlimited; blank labels are rejected.
|
|
126
|
+
* unlimited; blank labels are rejected. `targetPath` is valid only for an
|
|
127
|
+
* existing resource. The API owns its full grammar and tunnel-only gate.
|
|
127
128
|
*/
|
|
128
129
|
createPortal(resource: ProtectedResource | string, opts?: CreatePortalOptions, requestOptions?: RequestOptions): Promise<Portal>;
|
|
129
130
|
/**
|
|
@@ -135,7 +136,9 @@ export declare class QURLClient {
|
|
|
135
136
|
* {@link protectUrl} when you need the full server-populated resource
|
|
136
137
|
* metadata. Portal options match {@link createPortal}; `targetUrl` gets
|
|
137
138
|
* the same malformed-URL and embedded-credentials rejection as
|
|
138
|
-
* {@link protectUrl}.
|
|
139
|
+
* {@link protectUrl}. `targetPath` is rejected because this call creates a
|
|
140
|
+
* URL resource instead of addressing an existing resource. REST-shaped
|
|
141
|
+
* equivalent: {@link create}.
|
|
139
142
|
*/
|
|
140
143
|
createPortalForUrl(targetUrl: string, opts?: CreatePortalOptions, requestOptions?: RequestOptions): Promise<{
|
|
141
144
|
portal: Portal;
|
package/dist/esm/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAIV,oBAAoB,EAEpB,MAAM,EACN,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,+BAA+B,EAC/B,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,IAAI,EAEJ,WAAW,EACX,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,OAAO,EACP,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAIV,oBAAoB,EAEpB,MAAM,EACN,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,+BAA+B,EAC/B,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,IAAI,EAEJ,WAAW,EACX,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,OAAO,EACP,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAsmDpB;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,QAA6C,CAAC;AAqP7E,uBAAuB;AACvB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0E;IAElG,YAAY,OAAO,EAAE,aAAa,EA0EjC;IAED,kEAAkE;IAClE,MAAM;QACK,OAAO;QAAgB,MAAM;MACvC;IAOD,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,GAAG;IAMX;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAqCrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,2BAA2B;YAgGpB,WAAW;IA8C1B;;;;;;;;;;;;;;;;;OAiBG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,iBAAsB,EAC5B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;IAED;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAG1C;IAED;;;;;;;;;;;;;;;OAeG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6BvE;IAED;;;;;;;;;;;;;;;;OAgBG;IACG,YAAY,CAChB,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EACpC,IAAI,GAAE,mBAAwB,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,MAAM,CAAC,CAuBjB;IAED;;;;;;;;;;;;OAYG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,mBAAwB,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAY1D;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAa5F;IAID;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAGhF;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACG,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6F/F;IAED;;;;;OAKG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnC;IAED;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBrD;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,KAAK,GAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAQpF;IAED;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCtC;IAED;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAapF;IAED;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpF;IAED;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAoD3F;IAED;;;;;;;;;;OAUG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB5F;IAED,uCAAuC;IACjC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAE/B;IAED,mDAAmD;IAC7C,aAAa,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW9E;IAED;;;;;OAKG;IACH,gBAAgB,CACd,KAAK,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAM,GAC5C,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAY3C;IAED;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAY5F;IAED,sDAAsD;IAChD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAGrD;IAED,gCAAgC;IAC1B,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAyBnB;IAED,8CAA8C;IACxC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9C;IAED;;;;OAIG;IACG,qBAAqB,CACzB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,YAAY,CAAC,CAmBvB;IAED,kDAAkD;IAC5C,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlE;IAED,kDAAkD;IAC5C,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,CAqBtB;IAED;;;;;;OAMG;IACG,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkBjE;IAED,gFAAgF;IAC1E,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkB9E;IAED,6CAA6C;IACvC,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;IAED,oCAAoC;IAC9B,0BAA0B,CAC9B,KAAK,GAAE,+BAAoC,GAC1C,OAAO,CAAC,+BAA+B,CAAC,CAW1C;IAED;;;;;OAKG;IACH,6BAA6B,CAC3B,KAAK,GAAE,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAM,GAC1D,cAAc,CAAC,qBAAqB,EAAE,IAAI,EAAE,SAAS,CAAC,CAgBxD;IAED,gCAAgC;IAC1B,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEzD;IAED,8CAA8C;IACxC,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAEzC;IAED,gCAAgC;IAC1B,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,CAErC;IAED,gCAAgC;IAC1B,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoB5F;IAED,wCAAwC;IAClC,qBAAqB,CACzB,KAAK,EAAE,0BAA0B,EACjC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,eAAe,CAAC,CAU1B;IAED,8CAA8C;IACxC,mBAAmB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAE1E;IAED,6BAA6B;IACvB,mBAAmB,CACvB,KAAK,GAAE,wBAA6B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAanC;IAED;;;;;OAKG;IACH,sBAAsB,CACpB,KAAK,GAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAM,GACnD,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAY1C;IAED,gCAAgC;IAC1B,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F;IAED,2BAA2B;IACrB,WAAW,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWzE;IAED;;;;;OAKG;IACH,cAAc,CACZ,KAAK,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC3C,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAYzC;IAED,gCAAgC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG/C;IAED,8BAA8B;IACxB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhD;IAED,oDAAoD;IAC9C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQxF;IAED,8CAA8C;IACxC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrF;IAED,qBAAqB;IACf,YAAY,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAW5E;IAED;;;;;OAKG;IACH,eAAe,CACb,KAAK,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAM,GAC5C,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAY1C;IAED,wBAAwB;IAClB,aAAa,CACjB,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAa5B;IAED,0CAA0C;IACpC,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAE7D;IAED,qBAAqB;IACf,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7C;IAED,wBAAwB;IAClB,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CAoBlB;IAED,wBAAwB;IAClB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7C;IAED,2CAA2C;IACrC,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQ9F;IAED,4CAA4C;IACtC,qBAAqB,CACzB,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,0BAA+B,GACrC,OAAO,CAAC,yBAAyB,CAAC,CAYpC;IAED;;;;;OAKG;IACH,wBAAwB,CACtB,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAM,GACrD,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAalD;IAED,4BAA4B;IACtB,YAAY,CAChB,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAa7B;IAED,qBAAqB;IACf,WAAW,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWzE;IAED;;;;;OAKG;IACH,cAAc,CACZ,KAAK,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC3C,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAYzC;IAED,yBAAyB;IACnB,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAoBjB;IAED,yBAAyB;IACnB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/C;IAED,6BAA6B;IACvB,gBAAgB,CACpB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,sBAAsB,CAAC,CAejC;IAED,6BAA6B;IACvB,gBAAgB,CACpB,KAAK,EAAE,qBAAqB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,sBAAsB,CAAC,CAUjC;IAED;;;;;;OAMG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAcrD;IAED,6BAA6B;IACvB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhD;YAIa,OAAO;IAmBrB;;;;OAIG;YACW,gBAAgB;IAe9B;;;;;;;;OAQG;YACW,UAAU;IAyTxB,OAAO,CAAC,UAAU;IAiElB,OAAO,CAAC,eAAe;IAyCvB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,yBAAyB;CA+BlC;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAiB;;IAK5B,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAE5B,YAAY,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAKjF;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEzE;IAED;;;OAGG;IACG,YAAY,CAChB,IAAI,GAAE,mBAAwB,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,MAAM,CAAC,CAEjB;CACF"}
|
package/dist/esm/client.js
CHANGED
|
@@ -193,6 +193,7 @@ const CREATE_PORTAL_OPTION_KEYS = [
|
|
|
193
193
|
"oneTimeUse",
|
|
194
194
|
"maxSessions",
|
|
195
195
|
"sessionDuration",
|
|
196
|
+
"targetPath",
|
|
196
197
|
];
|
|
197
198
|
assertExhaustive(true);
|
|
198
199
|
const UPDATE_RESOURCE_QURL_FIELD_KEYS = [
|
|
@@ -738,6 +739,17 @@ function requireMaxLength(value, field, max) {
|
|
|
738
739
|
throw clientValidationError(`${field}: must be ${max} characters or fewer (got ${value.length})`);
|
|
739
740
|
}
|
|
740
741
|
}
|
|
742
|
+
function requireMaxUtf8Bytes(value, field, max) {
|
|
743
|
+
if (value === undefined)
|
|
744
|
+
return;
|
|
745
|
+
if (typeof value !== "string") {
|
|
746
|
+
throw clientValidationError(`${field}: must be a string (got ${value === null ? "null" : typeof value})`);
|
|
747
|
+
}
|
|
748
|
+
const bytes = TEXT_ENCODER.encode(value).byteLength;
|
|
749
|
+
if (bytes > max) {
|
|
750
|
+
throw clientValidationError(`${field}: must be ${max} UTF-8 bytes or fewer (got ${bytes})`);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
741
753
|
function requireNonEmptyIfPresent(value, field) {
|
|
742
754
|
// Reject `""` so uninitialized form state doesn't reach the wire.
|
|
743
755
|
if (value === "") {
|
|
@@ -1035,7 +1047,7 @@ function validateQurlTokenOptions(input) {
|
|
|
1035
1047
|
// gate server-authoritative (`invalid_target_path`); a client-side regex
|
|
1036
1048
|
// would create a drift surface. Keep max-before-empty consistent with label;
|
|
1037
1049
|
// empty strings pass the length check and are rejected by the next guard.
|
|
1038
|
-
|
|
1050
|
+
requireMaxUtf8Bytes(input.target_path, "target_path", MAX_TARGET_PATH);
|
|
1039
1051
|
requireNonEmptyIfPresent(input.target_path, "target_path");
|
|
1040
1052
|
requireBooleanIfPresent(input.one_time_use, "one_time_use");
|
|
1041
1053
|
requireMaxSessionsInRange(input.max_sessions);
|
|
@@ -1421,7 +1433,7 @@ function buildCreatePortalBody(opts, method) {
|
|
|
1421
1433
|
requireObjectInput(opts, method);
|
|
1422
1434
|
requireNoUnknownFields(opts, CREATE_PORTAL_OPTION_KEYS, method);
|
|
1423
1435
|
// null → omitted, via the SDK-wide normalizePatchFields convention.
|
|
1424
|
-
const { validFor, label, oneTimeUse, maxSessions, sessionDuration } = normalizePatchFields(opts, CREATE_PORTAL_OPTION_KEYS);
|
|
1436
|
+
const { validFor, label, oneTimeUse, maxSessions, sessionDuration, targetPath } = normalizePatchFields(opts, CREATE_PORTAL_OPTION_KEYS);
|
|
1425
1437
|
if (label !== undefined) {
|
|
1426
1438
|
requireMaxLength(label, "label", MAX_LABEL);
|
|
1427
1439
|
// qurl-go's WithLabel rejects blank labels; the REST-shaped mintLink
|
|
@@ -1432,6 +1444,11 @@ function buildCreatePortalBody(opts, method) {
|
|
|
1432
1444
|
}
|
|
1433
1445
|
requireBooleanIfPresent(oneTimeUse, "oneTimeUse");
|
|
1434
1446
|
requireMaxSessionsInRange(maxSessions, "maxSessions");
|
|
1447
|
+
requireMaxUtf8Bytes(targetPath, "targetPath", MAX_TARGET_PATH);
|
|
1448
|
+
requireNonEmptyIfPresent(targetPath, "targetPath");
|
|
1449
|
+
if (targetPath !== undefined && method === "createPortalForUrl") {
|
|
1450
|
+
throw clientValidationError("targetPath: requires an existing resource");
|
|
1451
|
+
}
|
|
1435
1452
|
const body = {};
|
|
1436
1453
|
const expiresIn = serializeApiDuration(validFor, "validFor", MIN_PORTAL_VALID_FOR_SECONDS);
|
|
1437
1454
|
if (expiresIn !== undefined)
|
|
@@ -1446,6 +1463,8 @@ function buildCreatePortalBody(opts, method) {
|
|
|
1446
1463
|
const wireSessionDuration = serializeApiDuration(sessionDuration, "sessionDuration", MIN_SESSION_DURATION_SECONDS);
|
|
1447
1464
|
if (wireSessionDuration !== undefined)
|
|
1448
1465
|
body.session_duration = wireSessionDuration;
|
|
1466
|
+
if (targetPath !== undefined)
|
|
1467
|
+
body.target_path = targetPath;
|
|
1449
1468
|
return Object.keys(body).length > 0 ? body : undefined;
|
|
1450
1469
|
}
|
|
1451
1470
|
/** qURL API client. */
|
|
@@ -1827,7 +1846,8 @@ export class QURLClient {
|
|
|
1827
1846
|
* number of milliseconds with qurl-go's client-side guardrails: whole
|
|
1828
1847
|
* seconds only, at least one minute for `validFor` and one second for
|
|
1829
1848
|
* `sessionDuration`. `maxSessions: 0` is sent explicitly and means
|
|
1830
|
-
* unlimited; blank labels are rejected.
|
|
1849
|
+
* unlimited; blank labels are rejected. `targetPath` is valid only for an
|
|
1850
|
+
* existing resource. The API owns its full grammar and tunnel-only gate.
|
|
1831
1851
|
*/
|
|
1832
1852
|
async createPortal(resource, opts = {}, requestOptions) {
|
|
1833
1853
|
let resourceId;
|
|
@@ -1857,7 +1877,9 @@ export class QURLClient {
|
|
|
1857
1877
|
* {@link protectUrl} when you need the full server-populated resource
|
|
1858
1878
|
* metadata. Portal options match {@link createPortal}; `targetUrl` gets
|
|
1859
1879
|
* the same malformed-URL and embedded-credentials rejection as
|
|
1860
|
-
* {@link protectUrl}.
|
|
1880
|
+
* {@link protectUrl}. `targetPath` is rejected because this call creates a
|
|
1881
|
+
* URL resource instead of addressing an existing resource. REST-shaped
|
|
1882
|
+
* equivalent: {@link create}.
|
|
1861
1883
|
*/
|
|
1862
1884
|
async createPortalForUrl(targetUrl, opts = {}, requestOptions) {
|
|
1863
1885
|
requirePortalTargetUrl(targetUrl);
|