@outfoxx/sunday 1.1.0 → 2.0.0-beta.10
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 +64 -0
- package/build/client-settings.d.ts +22 -0
- package/build/client-settings.js +147 -0
- package/build/client-settings.js.map +1 -0
- package/build/credentials.d.ts +58 -0
- package/build/credentials.js +51 -0
- package/build/credentials.js.map +1 -0
- package/build/event-parser.d.ts +2 -0
- package/build/event-parser.js.map +1 -1
- package/build/fetch-event-source.d.ts +15 -6
- package/build/fetch-event-source.js +109 -44
- package/build/fetch-event-source.js.map +1 -1
- package/build/fetch-oauth-token-provider.d.ts +28 -0
- package/build/fetch-oauth-token-provider.js +171 -0
- package/build/fetch-oauth-token-provider.js.map +1 -0
- package/build/{fetch-request-factory.d.ts → fetch-transport.d.ts} +15 -7
- package/build/{fetch-request-factory.js → fetch-transport.js} +95 -31
- package/build/fetch-transport.js.map +1 -0
- package/build/fetch.js +3 -2
- package/build/fetch.js.map +1 -1
- package/build/index.d.ts +15 -3
- package/build/index.js +15 -3
- package/build/index.js.map +1 -1
- package/build/media-type-codecs/cbor-encoder.d.ts +2 -2
- package/build/media-type-codecs/cbor-encoder.js +2 -2
- package/build/media-type-codecs/cbor-encoder.js.map +1 -1
- package/build/media-type-codecs/json-encoder.d.ts +3 -3
- package/build/media-type-codecs/json-encoder.js +4 -4
- package/build/media-type-codecs/json-encoder.js.map +1 -1
- package/build/media-type-codecs/media-type-encoder.d.ts +3 -3
- package/build/media-type-codecs/media-type-encoder.js.map +1 -1
- package/build/media-type-codecs/www-form-url-encoder.d.ts +2 -2
- package/build/media-type-codecs/www-form-url-encoder.js +2 -2
- package/build/media-type-codecs/www-form-url-encoder.js.map +1 -1
- package/build/model-construction.d.ts +5 -0
- package/build/model-construction.js +40 -0
- package/build/model-construction.js.map +1 -0
- package/build/model-schema.d.ts +9 -0
- package/build/model-schema.js +131 -0
- package/build/model-schema.js.map +1 -0
- package/build/oauth-wire.d.ts +33 -0
- package/build/oauth-wire.js +143 -0
- package/build/oauth-wire.js.map +1 -0
- package/build/operation-response.d.ts +33 -0
- package/build/operation-response.js +140 -0
- package/build/operation-response.js.map +1 -0
- package/build/operation.d.ts +64 -0
- package/build/operation.js +90 -0
- package/build/operation.js.map +1 -0
- package/build/problem.js +2 -1
- package/build/problem.js.map +1 -1
- package/build/request-adapters.d.ts +5 -5
- package/build/request-adapters.js +3 -3
- package/build/request-adapters.js.map +1 -1
- package/build/request-security.d.ts +16 -0
- package/build/request-security.js +167 -0
- package/build/request-security.js.map +1 -0
- package/build/request-validation-error.d.ts +4 -0
- package/build/request-validation-error.js +21 -0
- package/build/request-validation-error.js.map +1 -0
- package/build/schema-builtins.js +11 -21
- package/build/schema-builtins.js.map +1 -1
- package/build/schema-runtime.d.ts +21 -3
- package/build/schema-runtime.js +12 -3
- package/build/schema-runtime.js.map +1 -1
- package/build/security-binding.d.ts +22 -0
- package/build/{result-response.js → security-binding.js} +1 -1
- package/build/security-binding.js.map +1 -0
- package/build/streaming-body.d.ts +21 -0
- package/build/streaming-body.js +65 -0
- package/build/streaming-body.js.map +1 -0
- package/build/token-manager.d.ts +33 -0
- package/build/token-manager.js +199 -0
- package/build/token-manager.js.map +1 -0
- package/build/token-provider.d.ts +44 -0
- package/build/token-provider.js +31 -0
- package/build/token-provider.js.map +1 -0
- package/build/{request-factory.d.ts → transport.d.ts} +13 -8
- package/build/{request-factory.js → transport.js} +1 -1
- package/build/transport.js.map +1 -0
- package/build/unknown-variant.d.ts +12 -0
- package/build/unknown-variant.js +45 -0
- package/build/unknown-variant.js.map +1 -0
- package/build/url-template.d.ts +3 -0
- package/build/url-template.js +30 -2
- package/build/url-template.js.map +1 -1
- package/build/util/base64.d.ts +4 -0
- package/build/util/base64.js +46 -0
- package/build/util/base64.js.map +1 -0
- package/package.json +6 -2
- package/build/fetch-request-factory.js.map +0 -1
- package/build/request-factory.js.map +0 -1
- package/build/result-response.d.ts +0 -4
- package/build/result-response.js.map +0 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { nullifyProblem } from './util/nullify.js';
|
|
15
|
+
export function createOperation(transport, spec) {
|
|
16
|
+
return new TransportOperation(transport, spec);
|
|
17
|
+
}
|
|
18
|
+
export function createStreamingOperation(transport, spec) {
|
|
19
|
+
return new TransportOperation(transport, spec);
|
|
20
|
+
}
|
|
21
|
+
export function createNullableOperation(transport, spec, nullify) {
|
|
22
|
+
return new TransportNullableOperation(transport, spec, nullify);
|
|
23
|
+
}
|
|
24
|
+
class TransportOperation {
|
|
25
|
+
transport;
|
|
26
|
+
spec;
|
|
27
|
+
constructor(transport, spec) {
|
|
28
|
+
this.transport = transport;
|
|
29
|
+
this.spec = spec;
|
|
30
|
+
}
|
|
31
|
+
async execute(options) {
|
|
32
|
+
const request = requestWithOptions(this.spec.request, options);
|
|
33
|
+
if (this.spec.responseType) {
|
|
34
|
+
return this.transport.result(request, this.spec.responseType);
|
|
35
|
+
}
|
|
36
|
+
return this.transport.result(request);
|
|
37
|
+
}
|
|
38
|
+
async response(options) {
|
|
39
|
+
const request = requestWithOptions(this.spec.request, options);
|
|
40
|
+
if (this.spec.responseType) {
|
|
41
|
+
return this.transport.response(request, this.spec.responseType);
|
|
42
|
+
}
|
|
43
|
+
return this.transport.response(request);
|
|
44
|
+
}
|
|
45
|
+
async transportRequest(options) {
|
|
46
|
+
return this.transport.transportRequest(requestWithOptions(this.spec.request, options));
|
|
47
|
+
}
|
|
48
|
+
async transportResponse(options) {
|
|
49
|
+
const request = await this.transportRequest(options);
|
|
50
|
+
return this.transport.transportResponse(request);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
class TransportNullableOperation {
|
|
54
|
+
spec;
|
|
55
|
+
nullify;
|
|
56
|
+
operation;
|
|
57
|
+
constructor(transport, spec, nullify) {
|
|
58
|
+
this.spec = spec;
|
|
59
|
+
this.nullify = nullify;
|
|
60
|
+
this.operation = new TransportOperation(transport, spec);
|
|
61
|
+
}
|
|
62
|
+
async execute(options) {
|
|
63
|
+
return this.operation.execute(options);
|
|
64
|
+
}
|
|
65
|
+
async executeOrNull(options) {
|
|
66
|
+
return nullifyProblem(this.operation.execute(options), [...this.nullify.statuses], [...this.nullify.problemTypes]);
|
|
67
|
+
}
|
|
68
|
+
async responseOrNull(options) {
|
|
69
|
+
return nullifyProblem(this.operation.response(options), [...this.nullify.statuses], [...this.nullify.problemTypes]);
|
|
70
|
+
}
|
|
71
|
+
async response(options) {
|
|
72
|
+
return this.operation.response(options);
|
|
73
|
+
}
|
|
74
|
+
async transportRequest(options) {
|
|
75
|
+
return this.operation.transportRequest(options);
|
|
76
|
+
}
|
|
77
|
+
async transportResponse(options) {
|
|
78
|
+
return this.operation.transportResponse(options);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function requestWithOptions(request, options) {
|
|
82
|
+
if (options?.signal === undefined) {
|
|
83
|
+
return request;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
...request,
|
|
87
|
+
signal: options.signal,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../src/operation.ts"],"names":[],"mappings":"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"}
|
package/build/problem.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
+
import { constructValidatedModel } from './model-construction.js';
|
|
14
15
|
import { z } from 'zod';
|
|
15
16
|
import { ResponseExample } from './fetch.js';
|
|
16
17
|
import { defineSchema, } from './schema-runtime.js';
|
|
@@ -104,7 +105,7 @@ export class Problem extends Error {
|
|
|
104
105
|
}
|
|
105
106
|
export function createProblemCodec(problemType, wireSchema) {
|
|
106
107
|
return z.codec(wireSchema, z.instanceof(problemType), {
|
|
107
|
-
decode: (value) =>
|
|
108
|
+
decode: (value) => constructValidatedModel(problemType, value),
|
|
108
109
|
encode: (value) => ({
|
|
109
110
|
type: value.type?.toString() ?? Problem.BLANK_URL.toString(),
|
|
110
111
|
title: value.title,
|
package/build/problem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAY7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAIH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAEzB,MAAM,CAAU,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,CAAM;IAEV,KAAK,CAAS;IAEd,MAAM,CAAS;IAEf,MAAM,CAAU;IAEhB,QAAQ,CAAO;IAEL,WAAW,CAA2B;IAEvD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YAAY,IAAiB;QAC3B,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;QACtE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,mDAAmD;QAE5E,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAA+C,CAAC;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa;QAC7C,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAkB;QAC1C,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,MAAM,eAAe,CAAC,WAAW,CAC3D,QAAQ,EACR,GAAG,CACJ,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,KAAK,EAAE,QAAQ,CAAC,UAAU;YAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE;gBACP,GAAG,EAAE,QAAQ,CAAC,GAAG;aAClB;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,IAAI;gBACJ,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC;aACtD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,KAAc;QACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC;gBACL,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;;AAGH,MAAM,UAAU,kBAAkB,CAIhC,WAA0C,EAC1C,UAA4B;IAE5B,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QACpD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAY7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AAIH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAEzB,MAAM,CAAU,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,CAAM;IAEV,KAAK,CAAS;IAEd,MAAM,CAAS;IAEf,MAAM,CAAU;IAEhB,QAAQ,CAAO;IAEL,WAAW,CAA2B;IAEvD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YAAY,IAAiB;QAC3B,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAEhE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;QACtE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,mDAAmD;QAE5E,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAA+C,CAAC;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa;QAC7C,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAkB;QAC1C,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,MAAM,eAAe,CAAC,WAAW,CAC3D,QAAQ,EACR,GAAG,CACJ,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,KAAK,EAAE,QAAQ,CAAC,UAAU;YAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE;gBACP,GAAG,EAAE,QAAQ,CAAC,GAAG;aAClB;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,IAAI;gBACJ,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC;aACtD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,KAAc;QACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC;gBACL,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;;AAGH,MAAM,UAAU,kBAAkB,CAIhC,WAA0C,EAC1C,UAA4B;IAE5B,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QACpD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC;QAC9D,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACpC,GAAG,KAAK,CAAC,UAAU;SACpB,CAAU;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAwB,YAAY,CAC5D,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EACpD;IACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;IAC/C,SAAS,EAAE,eAAe;CAC3B,CACF,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { RequestAdapter,
|
|
1
|
+
import { RequestAdapter, Transport } from './transport.js';
|
|
2
2
|
export declare abstract class HeaderTokenAuthorizingAdapter implements RequestAdapter {
|
|
3
3
|
header: string;
|
|
4
4
|
tokenHeaderType: string;
|
|
5
5
|
applyToken(request: Request, accessToken: string): Request;
|
|
6
|
-
abstract adapt(
|
|
6
|
+
abstract adapt(transport: Transport, request: Request): Promise<Request>;
|
|
7
7
|
}
|
|
8
8
|
export declare class StaticHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
9
9
|
private readonly accessToken;
|
|
10
10
|
constructor(accessToken: string);
|
|
11
|
-
adapt(
|
|
11
|
+
adapt(_transport: Transport, request: Request): Promise<Request>;
|
|
12
12
|
}
|
|
13
13
|
export interface TokenAuthorization {
|
|
14
14
|
token: string;
|
|
@@ -17,7 +17,7 @@ export interface TokenAuthorization {
|
|
|
17
17
|
export declare class RefreshingHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
18
18
|
private readonly refresh;
|
|
19
19
|
private authorization?;
|
|
20
|
-
constructor(refresh: (
|
|
20
|
+
constructor(refresh: (transport: Transport) => Promise<TokenAuthorization>);
|
|
21
21
|
shouldRefresh(): boolean;
|
|
22
|
-
adapt(
|
|
22
|
+
adapt(transport: Transport, request: Request): Promise<Request>;
|
|
23
23
|
}
|
|
@@ -26,7 +26,7 @@ export class StaticHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingA
|
|
|
26
26
|
super();
|
|
27
27
|
this.accessToken = accessToken;
|
|
28
28
|
}
|
|
29
|
-
async adapt(
|
|
29
|
+
async adapt(_transport, request) {
|
|
30
30
|
return this.applyToken(request, this.accessToken);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -43,9 +43,9 @@ export class RefreshingHeaderTokenAuthorizingAdapter extends HeaderTokenAuthoriz
|
|
|
43
43
|
}
|
|
44
44
|
return this.authorization.expires.getTime() <= Date.now();
|
|
45
45
|
}
|
|
46
|
-
async adapt(
|
|
46
|
+
async adapt(transport, request) {
|
|
47
47
|
if (!this.authorization || this.shouldRefresh()) {
|
|
48
|
-
this.authorization = await this.refresh(
|
|
48
|
+
this.authorization = await this.refresh(transport);
|
|
49
49
|
}
|
|
50
50
|
return this.applyToken(request, this.authorization.token);
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-adapters.js","sourceRoot":"","sources":["../src/request-adapters.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,MAAM,OAAgB,6BAA6B;IACjD,MAAM,GAAG,eAAe,CAAC;IACzB,eAAe,GAAG,QAAQ,CAAC;IAE3B,UAAU,CAAC,OAAgB,EAAE,WAAmB;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,YAAY,CAAC,OAAO,CAAC,GAAG,CACtB,IAAI,CAAC,MAAM,EACX,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE,CACzC,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;CAMF;AAED,MAAM,OAAO,mCAAoC,SAAQ,6BAA6B;IACvD;IAA7B,YAA6B,WAAmB;QAC9C,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAQ;IAEhD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,
|
|
1
|
+
{"version":3,"file":"request-adapters.js","sourceRoot":"","sources":["../src/request-adapters.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,MAAM,OAAgB,6BAA6B;IACjD,MAAM,GAAG,eAAe,CAAC;IACzB,eAAe,GAAG,QAAQ,CAAC;IAE3B,UAAU,CAAC,OAAgB,EAAE,WAAmB;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,YAAY,CAAC,OAAO,CAAC,GAAG,CACtB,IAAI,CAAC,MAAM,EACX,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE,CACzC,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;CAMF;AAED,MAAM,OAAO,mCAAoC,SAAQ,6BAA6B;IACvD;IAA7B,YAA6B,WAAmB;QAC9C,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAQ;IAEhD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,UAAqB,EACrB,OAAgB;QAEhB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF;AAOD,MAAM,OAAO,uCAAwC,SAAQ,6BAA6B;IAIrE;IAHX,aAAa,CAAsB;IAE3C,YACmB,OAEe;QAEhC,KAAK,EAAE,CAAC;QAJS,YAAO,GAAP,OAAO,CAEQ;IAGlC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK,CACT,SAAoB,EACpB,OAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SecurityBinding } from './security-binding.js';
|
|
2
|
+
import { TokenLease, TokenManager } from './token-manager.js';
|
|
3
|
+
/** Per-request credentials, retained only for conditional invalidation and bounded recovery. */
|
|
4
|
+
export interface AuthorizedRequest {
|
|
5
|
+
readonly request: Request;
|
|
6
|
+
readonly bindings: readonly SecurityBinding[];
|
|
7
|
+
readonly leases: readonly TokenLease[];
|
|
8
|
+
}
|
|
9
|
+
/** Adds all credentials atomically after every provider succeeds. */
|
|
10
|
+
export declare function authorizeRequest(request: Request, bindings: readonly SecurityBinding[], manager: TokenManager | undefined, previous?: AuthorizedRequest): Promise<AuthorizedRequest>;
|
|
11
|
+
/** Requires a safe, replayable request and an explicit bearer invalid-token challenge. */
|
|
12
|
+
export declare function canRecoverAuthentication(request: AuthorizedRequest, response: Response): boolean;
|
|
13
|
+
/** Returns only bearer receipts rejected by an invalid-token challenge, preserving other conjuncts. */
|
|
14
|
+
export declare function rejectedBearerLeases(request: AuthorizedRequest): readonly TokenLease[];
|
|
15
|
+
/** Removes query credentials from responses before error translation or diagnostic rendering. */
|
|
16
|
+
export declare function redactSecurityResponse(response: Response, bindings: readonly SecurityBinding[]): Response;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { TokenProviderError } from './token-provider.js';
|
|
15
|
+
/** Adds all credentials atomically after every provider succeeds. */
|
|
16
|
+
export async function authorizeRequest(request, bindings, manager, previous) {
|
|
17
|
+
if (!manager)
|
|
18
|
+
throw new TokenProviderError();
|
|
19
|
+
const url = new URL(request.url);
|
|
20
|
+
const headers = new Headers(request.headers);
|
|
21
|
+
validateTransports(bindings, url, headers, !previous);
|
|
22
|
+
const leases = await Promise.all(bindings.map(binding => manager.credentials(binding, request.signal)));
|
|
23
|
+
request.signal.throwIfAborted();
|
|
24
|
+
bindings.forEach((binding, index) => applyCredential(binding, leases[index].tokens.accessToken, url, headers));
|
|
25
|
+
// Passing the body explicitly avoids Request's internal stream proxy, which can stall uploads in Bun.
|
|
26
|
+
// Manual redirects also protect custom API-key headers and cookies from crossing origins.
|
|
27
|
+
const authorized = url.toString() === request.url && request.redirect === 'manual' ? request :
|
|
28
|
+
new Request(url, {
|
|
29
|
+
method: request.method, headers, body: request.body, signal: request.signal,
|
|
30
|
+
cache: request.cache, credentials: request.credentials, integrity: request.integrity,
|
|
31
|
+
keepalive: request.keepalive, mode: request.mode, redirect: 'manual',
|
|
32
|
+
referrer: request.referrer, referrerPolicy: request.referrerPolicy,
|
|
33
|
+
...(request.body ? { duplex: 'half' } : {}),
|
|
34
|
+
});
|
|
35
|
+
for (const [name, value] of headers)
|
|
36
|
+
authorized.headers.set(name, value);
|
|
37
|
+
return { request: authorized, bindings, leases };
|
|
38
|
+
}
|
|
39
|
+
/** Requires a safe, replayable request and an explicit bearer invalid-token challenge. */
|
|
40
|
+
export function canRecoverAuthentication(request, response) {
|
|
41
|
+
return response.status === 401 && ['GET', 'HEAD', 'OPTIONS'].includes(request.request.method) &&
|
|
42
|
+
request.request.body === null && request.bindings.some(isBearerBinding) &&
|
|
43
|
+
hasInvalidBearerChallenge(response.headers.get('WWW-Authenticate') ?? '');
|
|
44
|
+
}
|
|
45
|
+
/** Returns only bearer receipts rejected by an invalid-token challenge, preserving other conjuncts. */
|
|
46
|
+
export function rejectedBearerLeases(request) {
|
|
47
|
+
return request.leases.filter((_, index) => isBearerBinding(request.bindings[index]));
|
|
48
|
+
}
|
|
49
|
+
function isBearerBinding(binding) {
|
|
50
|
+
return binding.transport.location === 'header' && binding.transport.name.toLowerCase() === 'authorization' &&
|
|
51
|
+
binding.transport.prefix?.toLowerCase() === 'bearer';
|
|
52
|
+
}
|
|
53
|
+
/** Removes query credentials from responses before error translation or diagnostic rendering. */
|
|
54
|
+
export function redactSecurityResponse(response, bindings) {
|
|
55
|
+
const queryNames = bindings.filter(binding => binding.transport.location === 'query').map(binding => binding.transport.name);
|
|
56
|
+
if (!queryNames.length || !response.url)
|
|
57
|
+
return response;
|
|
58
|
+
const url = new URL(response.url);
|
|
59
|
+
for (const name of queryNames)
|
|
60
|
+
if (url.searchParams.has(name))
|
|
61
|
+
replaceQueryCredential(url, name, '[redacted]');
|
|
62
|
+
const result = new Response(response.body, { status: response.status, statusText: response.statusText, headers: response.headers });
|
|
63
|
+
Object.defineProperty(result, 'url', { value: url.toString() });
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
function hasInvalidBearerChallenge(header) {
|
|
67
|
+
const parts = splitChallenges(header);
|
|
68
|
+
if (!parts)
|
|
69
|
+
return false;
|
|
70
|
+
let bearer = false;
|
|
71
|
+
for (let part of parts) {
|
|
72
|
+
const challenge = /^([a-z][a-z0-9_-]*)\s+(?!\s*=)(.*)$/i.exec(part);
|
|
73
|
+
if (challenge) {
|
|
74
|
+
bearer = challenge[1].toLowerCase() === 'bearer';
|
|
75
|
+
part = challenge[2];
|
|
76
|
+
}
|
|
77
|
+
else if (/^[a-z][a-z0-9_-]*$/i.test(part))
|
|
78
|
+
bearer = false;
|
|
79
|
+
const error = /^error\s*=\s*(?:"([^"]*)"|([^"\s]+))$/i.exec(part);
|
|
80
|
+
if (bearer && (error?.[1] ?? error?.[2]) === 'invalid_token')
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
function cookieEntries(headers) {
|
|
86
|
+
return (headers.get('Cookie') ?? '').split(';').flatMap(entry => {
|
|
87
|
+
const split = entry.indexOf('=');
|
|
88
|
+
return split < 0 ? [] : [[entry.slice(0, split).trim(), entry.slice(split + 1).trim()]];
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// URLSearchParams re-encodes unrelated values, which can invalidate application-signed query parameters.
|
|
92
|
+
function replaceQueryCredential(url, name, credential) {
|
|
93
|
+
const fields = (url.search ? url.search.slice(1).split('&') : []).filter(field => {
|
|
94
|
+
const key = field.split('=', 1)[0];
|
|
95
|
+
try {
|
|
96
|
+
return decodeURIComponent(key.replaceAll('+', ' ')) !== name;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
fields.push(`${encodeURIComponent(name)}=${encodeURIComponent(credential)}`);
|
|
103
|
+
url.search = fields.join('&');
|
|
104
|
+
}
|
|
105
|
+
function validateTransports(bindings, url, headers, checkExisting) {
|
|
106
|
+
const names = new Set();
|
|
107
|
+
for (const binding of bindings) {
|
|
108
|
+
const transport = binding.transport;
|
|
109
|
+
const name = `${transport.location}:${transport.location === 'header' ? transport.name.toLowerCase() : transport.name}`;
|
|
110
|
+
if (names.has(name))
|
|
111
|
+
throw new TokenProviderError();
|
|
112
|
+
names.add(name);
|
|
113
|
+
if (checkExisting && ((transport.location === 'header' && headers.has(transport.name)) ||
|
|
114
|
+
(transport.location === 'query' && url.searchParams.has(transport.name)) ||
|
|
115
|
+
(transport.location === 'cookie' && cookieEntries(headers).some(([name]) => name === transport.name))))
|
|
116
|
+
throw new TokenProviderError();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function applyCredential(binding, token, url, headers) {
|
|
120
|
+
const transport = binding.transport;
|
|
121
|
+
const credential = transport.prefix ? `${transport.prefix} ${token}` : token;
|
|
122
|
+
switch (transport.location) {
|
|
123
|
+
case 'header': {
|
|
124
|
+
if ([...credential].some(character => character.codePointAt(0) < 32 || character.codePointAt(0) === 127))
|
|
125
|
+
throw new TokenProviderError();
|
|
126
|
+
headers.set(transport.name, credential);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'query':
|
|
130
|
+
replaceQueryCredential(url, transport.name, credential);
|
|
131
|
+
break;
|
|
132
|
+
case 'cookie': {
|
|
133
|
+
const entries = cookieEntries(headers).filter(([name]) => name !== transport.name);
|
|
134
|
+
entries.push([transport.name, encodeURIComponent(credential)]);
|
|
135
|
+
headers.set('Cookie', entries.map(([name, value]) => `${name}=${value}`).join('; '));
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function splitChallenges(header) {
|
|
141
|
+
const parts = [];
|
|
142
|
+
let start = 0;
|
|
143
|
+
let quoted = false;
|
|
144
|
+
let escaped = false;
|
|
145
|
+
for (let index = 0; index < header.length; index++) {
|
|
146
|
+
const character = header[index];
|
|
147
|
+
if (escaped) {
|
|
148
|
+
escaped = false;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (quoted && character === '\\') {
|
|
152
|
+
escaped = true;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (character === '"')
|
|
156
|
+
quoted = !quoted;
|
|
157
|
+
if (!quoted && character === ',') {
|
|
158
|
+
parts.push(header.slice(start, index).trim());
|
|
159
|
+
start = index + 1;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (quoted || escaped)
|
|
163
|
+
return undefined;
|
|
164
|
+
parts.push(header.slice(start).trim());
|
|
165
|
+
return parts;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=request-security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-security.js","sourceRoot":"","sources":["../src/request-security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
/** A typed request parameter failed validation before wire encoding. */
|
|
15
|
+
export class RequestValidationError extends Error {
|
|
16
|
+
constructor(cause) {
|
|
17
|
+
super('Request parameter validation failed', { cause });
|
|
18
|
+
this.name = 'RequestValidationError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=request-validation-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-validation-error.js","sourceRoot":"","sources":["../src/request-validation-error.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,wEAAwE;AACxE,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,KAAc;QACxB,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
package/build/schema-builtins.js
CHANGED
|
@@ -16,6 +16,7 @@ import { z } from 'zod';
|
|
|
16
16
|
import { base64Tag, base64UrlTag, uriTag } from './media-type-codecs/cbor-tags.js';
|
|
17
17
|
import { ArrayBufferEncoding, } from './schema-policy.js';
|
|
18
18
|
import { defineSchema } from './schema-runtime.js';
|
|
19
|
+
import { decodeBase64, encodeBase64 } from './util/base64.js';
|
|
19
20
|
export const UNKNOWN_SCHEMA = z.unknown();
|
|
20
21
|
export const ANY_SCHEMA = UNKNOWN_SCHEMA;
|
|
21
22
|
export const NULL_SCHEMA = z.null();
|
|
@@ -81,39 +82,32 @@ const URL_CBOR_CODEC = z.codec(z.union([z.string(), z.instanceof(TaggedValue)]),
|
|
|
81
82
|
},
|
|
82
83
|
});
|
|
83
84
|
function base64Decoder(encoding) {
|
|
84
|
-
let
|
|
85
|
+
let alphabet;
|
|
85
86
|
switch (encoding) {
|
|
86
87
|
case ArrayBufferEncoding.BASE64:
|
|
87
|
-
|
|
88
|
+
alphabet = 'base64';
|
|
88
89
|
break;
|
|
89
90
|
case ArrayBufferEncoding.BASE64URL:
|
|
90
|
-
|
|
91
|
+
alphabet = 'base64url';
|
|
91
92
|
break;
|
|
92
93
|
default:
|
|
93
94
|
throw new TypeError(`Invalid ArrayBufferEncoding: ${encoding}`);
|
|
94
95
|
}
|
|
95
|
-
return (value) =>
|
|
96
|
-
const array = Uint8Array.fromBase64(value, options);
|
|
97
|
-
return array
|
|
98
|
-
.buffer
|
|
99
|
-
.slice();
|
|
100
|
-
};
|
|
96
|
+
return (value) => decodeBase64(value, alphabet);
|
|
101
97
|
}
|
|
102
98
|
function base64Encoder(encoding) {
|
|
103
|
-
let
|
|
99
|
+
let alphabet;
|
|
104
100
|
switch (encoding) {
|
|
105
101
|
case ArrayBufferEncoding.BASE64:
|
|
106
|
-
|
|
102
|
+
alphabet = 'base64';
|
|
107
103
|
break;
|
|
108
104
|
case ArrayBufferEncoding.BASE64URL:
|
|
109
|
-
|
|
105
|
+
alphabet = 'base64url';
|
|
110
106
|
break;
|
|
111
107
|
default:
|
|
112
108
|
throw new TypeError(`Invalid ArrayBufferEncoding: ${encoding}`);
|
|
113
109
|
}
|
|
114
|
-
return (value) =>
|
|
115
|
-
return new Uint8Array(value).toBase64(options);
|
|
116
|
-
};
|
|
110
|
+
return (value) => encodeBase64(new Uint8Array(value), alphabet);
|
|
117
111
|
}
|
|
118
112
|
function createArrayBufferSchema(policy) {
|
|
119
113
|
switch (policy.format) {
|
|
@@ -142,13 +136,9 @@ function createArrayBufferSchema(policy) {
|
|
|
142
136
|
const string = z.string().decode(value.value);
|
|
143
137
|
switch (value.tag) {
|
|
144
138
|
case base64Tag:
|
|
145
|
-
return
|
|
146
|
-
.fromBase64(string, { alphabet: 'base64', lastChunkHandling: 'loose' })
|
|
147
|
-
.buffer;
|
|
139
|
+
return decodeBase64(string, 'base64');
|
|
148
140
|
case base64UrlTag:
|
|
149
|
-
return
|
|
150
|
-
.fromBase64(string, { alphabet: 'base64url', lastChunkHandling: 'loose' })
|
|
151
|
-
.buffer;
|
|
141
|
+
return decodeBase64(string, 'base64url');
|
|
152
142
|
default:
|
|
153
143
|
ctx.issues.push({
|
|
154
144
|
code: 'invalid_value',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builtins.js","sourceRoot":"","sources":["../src/schema-builtins.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-builtins.js","sourceRoot":"","sources":["../src/schema-builtins.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,16 +10,34 @@ export type SchemaDef<S extends AnySchema = AnySchema> = {
|
|
|
10
10
|
readonly debugName?: string;
|
|
11
11
|
readonly [SchemaDefType]: true;
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* A concrete Zod schema or deferred schema definition.
|
|
15
|
+
*/
|
|
16
|
+
export type SchemaLike<Output = unknown, Input = unknown> = z.ZodType<Output, Input> | SchemaDef<z.ZodType<Output, Input>>;
|
|
17
|
+
export type ResolvedSchema<S> = S extends SchemaDef<infer TSchema> ? TSchema : S extends AnySchema ? S : never;
|
|
18
|
+
/**
|
|
19
|
+
* The wire/input type accepted by a schema during decoding.
|
|
20
|
+
*/
|
|
21
|
+
export type SchemaInput<S extends SchemaLike> = z.input<ResolvedSchema<S>>;
|
|
22
|
+
/**
|
|
23
|
+
* The decoded/application type produced by a schema.
|
|
24
|
+
*/
|
|
25
|
+
export type SchemaOutput<S extends SchemaLike> = z.output<ResolvedSchema<S>>;
|
|
15
26
|
export declare function isSchema(value: unknown): value is z.ZodType;
|
|
16
27
|
export declare function isSchemaDef(value: unknown): value is SchemaDef;
|
|
17
28
|
export declare function defineSchema<S extends AnySchema>(builder: (runtime: SchemaRuntime) => S, options?: {
|
|
18
29
|
id?: symbol;
|
|
19
30
|
debugName?: string;
|
|
20
31
|
}): SchemaDef<S>;
|
|
32
|
+
/** Payload direction, independent of whether this application is a client or server. */
|
|
33
|
+
export type ModelMode = 'request' | 'response';
|
|
34
|
+
/** Resolves the native Zod schema for a payload direction and wire policy. */
|
|
21
35
|
export interface SchemaRuntime {
|
|
22
36
|
readonly policy: SchemaPolicy;
|
|
37
|
+
readonly mode: ModelMode;
|
|
38
|
+
/** Reuses schema definitions in another direction without sharing direction-specific schemas. */
|
|
39
|
+
forMode(mode: ModelMode): SchemaRuntime;
|
|
23
40
|
resolveSchema<S extends SchemaLike>(ref: S): ResolvedSchema<S>;
|
|
24
41
|
}
|
|
25
|
-
|
|
42
|
+
/** Creates a response-mode runtime by default for standalone model codecs. */
|
|
43
|
+
export declare function createSchemaRuntime(policy: SchemaPolicy, mode?: ModelMode): SchemaRuntime;
|
package/build/schema-runtime.js
CHANGED
|
@@ -37,10 +37,18 @@ export function defineSchema(builder, options) {
|
|
|
37
37
|
}
|
|
38
38
|
class DefaultSchemaRuntime {
|
|
39
39
|
policy;
|
|
40
|
+
mode;
|
|
41
|
+
modes;
|
|
40
42
|
schemas = new Map();
|
|
41
43
|
resolving = new Set();
|
|
42
|
-
constructor(policy) {
|
|
44
|
+
constructor(policy, mode, modes = new Map()) {
|
|
43
45
|
this.policy = policy;
|
|
46
|
+
this.mode = mode;
|
|
47
|
+
this.modes = modes;
|
|
48
|
+
modes.set(mode, this);
|
|
49
|
+
}
|
|
50
|
+
forMode(mode) {
|
|
51
|
+
return this.modes.get(mode) ?? new DefaultSchemaRuntime(this.policy, mode, this.modes);
|
|
44
52
|
}
|
|
45
53
|
resolveSchema(ref) {
|
|
46
54
|
if (isSchema(ref)) {
|
|
@@ -71,7 +79,8 @@ class DefaultSchemaRuntime {
|
|
|
71
79
|
}
|
|
72
80
|
}
|
|
73
81
|
}
|
|
74
|
-
|
|
75
|
-
|
|
82
|
+
/** Creates a response-mode runtime by default for standalone model codecs. */
|
|
83
|
+
export function createSchemaRuntime(policy, mode = 'response') {
|
|
84
|
+
return new DefaultSchemaRuntime(policy, mode);
|
|
76
85
|
}
|
|
77
86
|
//# sourceMappingURL=schema-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-runtime.js","sourceRoot":"","sources":["../src/schema-runtime.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAOjC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-runtime.js","sourceRoot":"","sources":["../src/schema-runtime.ts"],"names":[],"mappings":"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"}
|