@outfoxx/sunday 2.0.0-beta.2 → 2.0.0-beta.21

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 (141) hide show
  1. package/README.md +346 -4
  2. package/build/authentication-adapter.d.ts +21 -0
  3. package/build/authentication-adapter.js +74 -0
  4. package/build/authentication-adapter.js.map +1 -0
  5. package/build/bearer-token-rejection-adapter.d.ts +6 -0
  6. package/build/bearer-token-rejection-adapter.js +25 -0
  7. package/build/bearer-token-rejection-adapter.js.map +1 -0
  8. package/build/client-settings.d.ts +22 -0
  9. package/build/client-settings.js +180 -0
  10. package/build/client-settings.js.map +1 -0
  11. package/build/credentials.d.ts +58 -0
  12. package/build/credentials.js +51 -0
  13. package/build/credentials.js.map +1 -0
  14. package/build/event-parser.d.ts +23 -8
  15. package/build/event-parser.js +93 -121
  16. package/build/event-parser.js.map +1 -1
  17. package/build/fetch-copy.d.ts +15 -0
  18. package/build/fetch-copy.js +71 -0
  19. package/build/fetch-copy.js.map +1 -0
  20. package/build/fetch-event-source.d.ts +18 -8
  21. package/build/fetch-event-source.js +241 -144
  22. package/build/fetch-event-source.js.map +1 -1
  23. package/build/fetch-oauth-token-provider.d.ts +28 -0
  24. package/build/fetch-oauth-token-provider.js +213 -0
  25. package/build/fetch-oauth-token-provider.js.map +1 -0
  26. package/build/fetch-transport.d.ts +15 -1
  27. package/build/fetch-transport.js +142 -132
  28. package/build/fetch-transport.js.map +1 -1
  29. package/build/fetch.js +24 -10
  30. package/build/fetch.js.map +1 -1
  31. package/build/header-token-adapters.d.ts +28 -0
  32. package/build/header-token-adapters.js +121 -0
  33. package/build/header-token-adapters.js.map +1 -0
  34. package/build/index.d.ts +23 -1
  35. package/build/index.js +22 -1
  36. package/build/index.js.map +1 -1
  37. package/build/media-type-codecs/binary-decoder.d.ts +1 -0
  38. package/build/media-type-codecs/binary-decoder.js +4 -11
  39. package/build/media-type-codecs/binary-decoder.js.map +1 -1
  40. package/build/media-type-codecs/cbor-encoder.d.ts +2 -2
  41. package/build/media-type-codecs/cbor-encoder.js +2 -2
  42. package/build/media-type-codecs/cbor-encoder.js.map +1 -1
  43. package/build/media-type-codecs/json-encoder.d.ts +3 -3
  44. package/build/media-type-codecs/json-encoder.js +4 -4
  45. package/build/media-type-codecs/json-encoder.js.map +1 -1
  46. package/build/media-type-codecs/media-type-encoder.d.ts +3 -3
  47. package/build/media-type-codecs/media-type-encoder.js.map +1 -1
  48. package/build/media-type-codecs/www-form-url-encoder.d.ts +2 -2
  49. package/build/media-type-codecs/www-form-url-encoder.js +2 -2
  50. package/build/media-type-codecs/www-form-url-encoder.js.map +1 -1
  51. package/build/model-construction.d.ts +5 -0
  52. package/build/model-construction.js +40 -0
  53. package/build/model-construction.js.map +1 -0
  54. package/build/model-schema.d.ts +9 -0
  55. package/build/model-schema.js +131 -0
  56. package/build/model-schema.js.map +1 -0
  57. package/build/oauth-wire.d.ts +33 -0
  58. package/build/oauth-wire.js +143 -0
  59. package/build/oauth-wire.js.map +1 -0
  60. package/build/operation.d.ts +3 -1
  61. package/build/problem.d.ts +39 -16
  62. package/build/problem.js +88 -32
  63. package/build/problem.js.map +1 -1
  64. package/build/request-adapter.d.ts +8 -0
  65. package/build/request-adapter.js +15 -0
  66. package/build/request-adapter.js.map +1 -0
  67. package/build/request-adapters-compat.d.ts +6 -0
  68. package/build/request-adapters-compat.js +19 -0
  69. package/build/request-adapters-compat.js.map +1 -0
  70. package/build/request-adapters.d.ts +13 -23
  71. package/build/request-adapters.js +40 -31
  72. package/build/request-adapters.js.map +1 -1
  73. package/build/request-body.d.ts +24 -0
  74. package/build/request-body.js +104 -0
  75. package/build/request-body.js.map +1 -0
  76. package/build/request-cancellation-error.d.ts +13 -0
  77. package/build/request-cancellation-error.js +43 -0
  78. package/build/request-cancellation-error.js.map +1 -0
  79. package/build/request-context.d.ts +4 -0
  80. package/build/request-context.js +29 -0
  81. package/build/request-context.js.map +1 -0
  82. package/build/request-execution.d.ts +13 -0
  83. package/build/request-execution.js +80 -0
  84. package/build/request-execution.js.map +1 -0
  85. package/build/request-security-bindings.d.ts +5 -0
  86. package/build/request-security-bindings.js +30 -0
  87. package/build/request-security-bindings.js.map +1 -0
  88. package/build/request-security.d.ts +20 -0
  89. package/build/request-security.js +223 -0
  90. package/build/request-security.js.map +1 -0
  91. package/build/request-validation-error.d.ts +4 -0
  92. package/build/request-validation-error.js +21 -0
  93. package/build/request-validation-error.js.map +1 -0
  94. package/build/response-adapter.d.ts +10 -0
  95. package/build/response-adapter.js +15 -0
  96. package/build/response-adapter.js.map +1 -0
  97. package/build/response-adapters.d.ts +13 -0
  98. package/build/response-adapters.js +75 -0
  99. package/build/response-adapters.js.map +1 -0
  100. package/build/schema-builtins.js +11 -21
  101. package/build/schema-builtins.js.map +1 -1
  102. package/build/schema-runtime.d.ts +8 -1
  103. package/build/schema-runtime.js +12 -3
  104. package/build/schema-runtime.js.map +1 -1
  105. package/build/security-binding.d.ts +22 -0
  106. package/build/security-binding.js +15 -0
  107. package/build/security-binding.js.map +1 -0
  108. package/build/standard-authentication-adapter.d.ts +18 -0
  109. package/build/standard-authentication-adapter.js +58 -0
  110. package/build/standard-authentication-adapter.js.map +1 -0
  111. package/build/token-manager.d.ts +42 -0
  112. package/build/token-manager.js +276 -0
  113. package/build/token-manager.js.map +1 -0
  114. package/build/token-provider.d.ts +52 -0
  115. package/build/token-provider.js +102 -0
  116. package/build/token-provider.js.map +1 -0
  117. package/build/transport.d.ts +10 -3
  118. package/build/unknown-variant.d.ts +12 -0
  119. package/build/unknown-variant.js +45 -0
  120. package/build/unknown-variant.js.map +1 -0
  121. package/build/url-template.d.ts +3 -0
  122. package/build/url-template.js +30 -2
  123. package/build/url-template.js.map +1 -1
  124. package/build/util/abort.d.ts +3 -0
  125. package/build/util/abort.js +42 -0
  126. package/build/util/abort.js.map +1 -0
  127. package/build/util/base64.d.ts +4 -0
  128. package/build/util/base64.js +46 -0
  129. package/build/util/base64.js.map +1 -0
  130. package/build/util/native-fetch.d.ts +2 -0
  131. package/build/util/native-fetch.js +39 -0
  132. package/build/util/native-fetch.js.map +1 -0
  133. package/build/util/nullify.js +12 -5
  134. package/build/util/nullify.js.map +1 -1
  135. package/build/util/owned-body.d.ts +12 -0
  136. package/build/util/owned-body.js +243 -0
  137. package/build/util/owned-body.js.map +1 -0
  138. package/build/util/status-title.d.ts +2 -0
  139. package/build/util/status-title.js +83 -0
  140. package/build/util/status-title.js.map +1 -0
  141. package/package.json +18 -6
@@ -0,0 +1,223 @@
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 { withAbort } from './util/abort.js';
15
+ import { prepareRequestBody } from './request-body.js';
16
+ import { copyRequest, copyResponse } from './fetch-copy.js';
17
+ import { RequestCancellationError } from './request-cancellation-error.js';
18
+ import { TokenProviderError, providerCredentials, } from './token-provider.js';
19
+ /** Adds all credentials atomically after every provider succeeds. */
20
+ export async function authorizeRequest(request, bindings, providers, maxBufferedRequestBytes) {
21
+ const url = new URL(request.url);
22
+ const headers = new Headers(request.headers);
23
+ validateTransports(bindings, url, headers);
24
+ // Resolve every binding before starting work, so setup failure cannot strand earlier promises.
25
+ const selected = bindings.map((binding) => {
26
+ const provider = Object.hasOwn(providers, binding.provider)
27
+ ? providers[binding.provider]
28
+ : undefined;
29
+ if (!provider)
30
+ throw new TokenProviderError();
31
+ return { binding, provider };
32
+ });
33
+ const acquisition = new AbortController();
34
+ const signal = AbortSignal.any([request.signal, acquisition.signal]);
35
+ let leases;
36
+ try {
37
+ leases = await withAbort(() => Promise.all(selected.map(({ binding, provider }) => providerCredentials(provider, binding, signal))), signal);
38
+ }
39
+ catch (error) {
40
+ // Promise.all is fail-fast, but siblings still need a cooperative stop signal.
41
+ acquisition.abort(error);
42
+ throw error;
43
+ }
44
+ request.signal.throwIfAborted();
45
+ bindings.forEach((binding, index) => applyCredential(binding, leases[index].tokens.accessToken, url, headers));
46
+ // Changing URL reconstructs Request from settings. Firefox does not expose Request.body,
47
+ // so retain its already-buffered native body through blob() instead of silently dropping it.
48
+ let body;
49
+ if (url.href !== request.url) {
50
+ if (request.body) {
51
+ body = await prepareRequestBody(request.body, {
52
+ signal: request.signal,
53
+ maxBytes: maxBufferedRequestBytes,
54
+ });
55
+ }
56
+ else if (request.body === undefined &&
57
+ !['GET', 'HEAD'].includes(request.method)) {
58
+ const buffered = await request.blob();
59
+ if (buffered.size)
60
+ body = buffered;
61
+ }
62
+ }
63
+ const authorized = copyRequest(request, {
64
+ ...(body !== undefined ? { body } : {}),
65
+ url,
66
+ headers,
67
+ redirect: 'manual',
68
+ credentials: 'omit',
69
+ });
70
+ return { request: authorized, bindings, leases };
71
+ }
72
+ /** Recognizes explicit rejection of the bearer credential sent on this request. */
73
+ export function isBearerTokenRejection(request, response) {
74
+ return (response.status === 401 &&
75
+ /^Bearer[ \t]+[^ \t]+$/i.test(request.headers.get('Authorization') ?? '') &&
76
+ hasInvalidBearerChallenge(response.headers.get('WWW-Authenticate') ?? ''));
77
+ }
78
+ /** Returns only bearer receipts rejected by an invalid-token challenge, preserving other conjuncts. */
79
+ export function rejectedBearerLeases(request) {
80
+ const token = /^Bearer[ \t]+([^ \t]+)$/i.exec(request.request.headers.get('Authorization') ?? '')?.[1];
81
+ return request.leases.filter((lease, index) => isBearerBinding(request.bindings[index]) &&
82
+ token === lease.tokens.accessToken);
83
+ }
84
+ function isBearerBinding(binding) {
85
+ return (binding.transport.location === 'header' &&
86
+ binding.transport.name.toLowerCase() === 'authorization' &&
87
+ binding.transport.prefix?.toLowerCase() === 'bearer');
88
+ }
89
+ /** Removes query credentials from responses before error translation or diagnostic rendering. */
90
+ export function redactSecurityResponse(response, bindings) {
91
+ const queryNames = bindings
92
+ .filter((binding) => binding.transport.location === 'query')
93
+ .map((binding) => binding.transport.name);
94
+ if (!queryNames.length || !response.url)
95
+ return response;
96
+ const url = new URL(response.url);
97
+ for (const name of queryNames)
98
+ if (url.searchParams.has(name))
99
+ replaceQueryCredential(url, name, '[redacted]');
100
+ if (url.href === response.url)
101
+ return response;
102
+ // Filtered responses cannot be reconstructed; preserve the native response and its hidden body.
103
+ const result = response.status === 0 ? response : copyResponse(response);
104
+ Object.defineProperty(result, 'url', { value: url.href, configurable: true });
105
+ return result;
106
+ }
107
+ export function hasInvalidBearerChallenge(header) {
108
+ const parts = splitChallenges(header);
109
+ if (!parts)
110
+ return false;
111
+ let bearer = false;
112
+ for (let part of parts) {
113
+ const challenge = /^([a-z][a-z0-9_-]*)\s+(?!\s*=)(.*)$/i.exec(part);
114
+ if (challenge) {
115
+ bearer = challenge[1].toLowerCase() === 'bearer';
116
+ part = challenge[2];
117
+ }
118
+ else if (/^[a-z][a-z0-9_-]*$/i.test(part))
119
+ bearer = false;
120
+ const error = /^error\s*=\s*(?:"([^"]*)"|([^"\s]+))$/i.exec(part);
121
+ if (bearer && (error?.[1] ?? error?.[2]) === 'invalid_token')
122
+ return true;
123
+ }
124
+ return false;
125
+ }
126
+ function cookieEntries(headers) {
127
+ return (headers.get('Cookie') ?? '').split(';').flatMap((entry) => {
128
+ const split = entry.indexOf('=');
129
+ return split < 0
130
+ ? []
131
+ : [[entry.slice(0, split).trim(), entry.slice(split + 1).trim()]];
132
+ });
133
+ }
134
+ // URLSearchParams re-encodes unrelated values, which can invalidate application-signed query parameters.
135
+ function replaceQueryCredential(url, name, credential) {
136
+ const fields = (url.search ? url.search.slice(1).split('&') : []).filter((field) => {
137
+ const key = field.split('=', 1)[0];
138
+ try {
139
+ return decodeURIComponent(key.replaceAll('+', ' ')) !== name;
140
+ }
141
+ catch {
142
+ return true;
143
+ }
144
+ });
145
+ fields.push(`${encodeURIComponent(name)}=${encodeURIComponent(credential)}`);
146
+ url.search = fields.join('&');
147
+ }
148
+ function validateTransports(bindings, url, headers) {
149
+ const names = new Set();
150
+ for (const binding of bindings) {
151
+ const transport = binding.transport;
152
+ const name = `${transport.location}:${transport.location === 'header' ? transport.name.toLowerCase() : transport.name}`;
153
+ if (names.has(name))
154
+ throw new TokenProviderError();
155
+ names.add(name);
156
+ if ((transport.location === 'header' && headers.has(transport.name)) ||
157
+ (transport.location === 'query' &&
158
+ url.searchParams.has(transport.name)) ||
159
+ (transport.location === 'cookie' &&
160
+ cookieEntries(headers).some(([name]) => name === transport.name)))
161
+ throw new TokenProviderError();
162
+ }
163
+ }
164
+ function applyCredential(binding, token, url, headers) {
165
+ const transport = binding.transport;
166
+ const credential = transport.prefix ? `${transport.prefix} ${token}` : token;
167
+ switch (transport.location) {
168
+ case 'header': {
169
+ if ([...credential].some((character) => character.codePointAt(0) < 32 || character.codePointAt(0) === 127))
170
+ throw new TokenProviderError();
171
+ headers.set(transport.name, credential);
172
+ break;
173
+ }
174
+ case 'query':
175
+ replaceQueryCredential(url, transport.name, credential);
176
+ break;
177
+ case 'cookie': {
178
+ const entries = cookieEntries(headers).filter(([name]) => name !== transport.name);
179
+ entries.push([transport.name, encodeURIComponent(credential)]);
180
+ headers.set('Cookie', entries.map(([name, value]) => `${name}=${value}`).join('; '));
181
+ break;
182
+ }
183
+ }
184
+ }
185
+ function splitChallenges(header) {
186
+ const parts = [];
187
+ let start = 0;
188
+ let quoted = false;
189
+ let escaped = false;
190
+ for (let index = 0; index < header.length; index++) {
191
+ const character = header[index];
192
+ if (escaped) {
193
+ escaped = false;
194
+ continue;
195
+ }
196
+ if (quoted && character === '\\') {
197
+ escaped = true;
198
+ continue;
199
+ }
200
+ if (character === '"')
201
+ quoted = !quoted;
202
+ if (!quoted && character === ',') {
203
+ parts.push(header.slice(start, index).trim());
204
+ start = index + 1;
205
+ }
206
+ }
207
+ if (quoted || escaped)
208
+ return undefined;
209
+ parts.push(header.slice(start).trim());
210
+ return parts;
211
+ }
212
+ /** Reports all matching rejections, including unsafe requests and exhausted recovery budgets. */
213
+ export async function rejectCredentials(request, response) {
214
+ if (response.status !== 401 ||
215
+ !hasInvalidBearerChallenge(response.headers.get('WWW-Authenticate') ?? ''))
216
+ return;
217
+ let recoverable = true;
218
+ for (const lease of rejectedBearerLeases(request))
219
+ recoverable = ((await lease.invalidate?.()) ?? false) && recoverable;
220
+ if (!recoverable)
221
+ throw new RequestCancellationError('The credential owner rejected authentication recovery');
222
+ }
223
+ //# 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,4 @@
1
+ /** A typed request parameter failed validation before wire encoding. */
2
+ export declare class RequestValidationError extends Error {
3
+ constructor(cause: unknown);
4
+ }
@@ -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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Adapts the response returned by Fetch before Sunday handling. Hidden native intermediate
3
+ * responses are unavailable. The request is the one submitted to Fetch, not a wire-level trace.
4
+ * Consumed resources must be replaced before returning; use request.signal for cancellation.
5
+ * Sunday cancels returned bodies on abort, including while decoding or validation owns their reader.
6
+ */
7
+ export interface ResponseAdapter {
8
+ /** Returns the adapted value; throwing stops the remaining adapters. */
9
+ adapt(response: Response, request: Request): Response | Promise<Response>;
10
+ }
@@ -0,0 +1,15 @@
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
+ export {};
15
+ //# sourceMappingURL=response-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-adapter.js","sourceRoot":"","sources":["../src/response-adapter.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"}
@@ -0,0 +1,13 @@
1
+ import { ResponseAdapter } from './response-adapter.js';
2
+ /** Explicit, flat, ordered composition of response adapters. No request capability is inferred. */
3
+ export declare class ResponseAdapters implements ResponseAdapter {
4
+ readonly adapters: readonly ResponseAdapter[];
5
+ constructor(...adapters: readonly ResponseAdapter[]);
6
+ /** Appends adapters without nesting execution pipelines. */
7
+ chainTo(...next: readonly ResponseAdapter[]): ResponseAdapters;
8
+ adapt(response: Response, request: Request): Promise<Response>;
9
+ }
10
+ /** Composes plain object adapters without inferring response capabilities from request adapters. */
11
+ export declare function chainResponseAdapters(...adapters: readonly ResponseAdapter[]): ResponseAdapters;
12
+ /** @internal Native Fetch bodies already own cancellation and must retain their byte-stream capabilities. */
13
+ export declare function adaptResponse(adapters: readonly ResponseAdapter[], response: Response, request: Request, native?: boolean): Promise<Response>;
@@ -0,0 +1,75 @@
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 { ownBody, bodyReads, sameBody } from './util/owned-body.js';
15
+ import { copyResponse } from './fetch-copy.js';
16
+ import { discardBody, withAbort } from './util/abort.js';
17
+ /** Explicit, flat, ordered composition of response adapters. No request capability is inferred. */
18
+ export class ResponseAdapters {
19
+ adapters;
20
+ constructor(...adapters) {
21
+ this.adapters = Object.freeze(adapters.flatMap((adapter) => adapter instanceof ResponseAdapters ? adapter.adapters : [adapter]));
22
+ }
23
+ /** Appends adapters without nesting execution pipelines. */
24
+ chainTo(...next) {
25
+ return new ResponseAdapters(this, ...next);
26
+ }
27
+ async adapt(response, request) {
28
+ return adaptResponse(this.adapters, response, request);
29
+ }
30
+ }
31
+ /** Composes plain object adapters without inferring response capabilities from request adapters. */
32
+ export function chainResponseAdapters(...adapters) {
33
+ return new ResponseAdapters(...adapters);
34
+ }
35
+ /** @internal Native Fetch bodies already own cancellation and must retain their byte-stream capabilities. */
36
+ export async function adaptResponse(adapters, response, request, native = false) {
37
+ if (!adapters.length) {
38
+ request.signal.throwIfAborted();
39
+ return response;
40
+ }
41
+ const cancellation = new AbortController();
42
+ const signal = AbortSignal.any([request.signal, cancellation.signal]);
43
+ let current = response;
44
+ const owned = (value) => {
45
+ if (!value.body || value.status === 0)
46
+ return value;
47
+ const body = ownBody(value.body, signal);
48
+ if (body !== value.body)
49
+ return copyResponse(value, { body });
50
+ bodyReads(value);
51
+ return value;
52
+ };
53
+ try {
54
+ signal.throwIfAborted();
55
+ if (!native)
56
+ current = owned(current);
57
+ for (const adapter of adapters) {
58
+ const adapted = await withAbort(() => adapter.adapt(current, request), signal, discardBody);
59
+ if (sameBody(adapted.body, current.body)) {
60
+ current = adapted;
61
+ bodyReads(current);
62
+ }
63
+ else
64
+ current = owned(adapted);
65
+ }
66
+ signal.throwIfAborted();
67
+ return current;
68
+ }
69
+ catch (error) {
70
+ cancellation.abort(error);
71
+ discardBody(current, error);
72
+ throw error;
73
+ }
74
+ }
75
+ //# sourceMappingURL=response-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-adapters.js","sourceRoot":"","sources":["../src/response-adapters.ts"],"names":[],"mappings":"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"}
@@ -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 options;
85
+ let alphabet;
85
86
  switch (encoding) {
86
87
  case ArrayBufferEncoding.BASE64:
87
- options = { alphabet: 'base64', lastChunkHandling: 'loose' };
88
+ alphabet = 'base64';
88
89
  break;
89
90
  case ArrayBufferEncoding.BASE64URL:
90
- options = { alphabet: 'base64url', lastChunkHandling: 'loose' };
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 options;
99
+ let alphabet;
104
100
  switch (encoding) {
105
101
  case ArrayBufferEncoding.BASE64:
106
- options = { alphabet: 'base64', omitPadding: true };
102
+ alphabet = 'base64';
107
103
  break;
108
104
  case ArrayBufferEncoding.BASE64URL:
109
- options = { alphabet: 'base64url', omitPadding: true };
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 Uint8Array
146
- .fromBase64(string, { alphabet: 'base64', lastChunkHandling: 'loose' })
147
- .buffer;
139
+ return decodeBase64(string, 'base64');
148
140
  case base64UrlTag:
149
- return Uint8Array
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":"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"}
1
+ {"version":3,"file":"schema-builtins.js","sourceRoot":"","sources":["../src/schema-builtins.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,15 @@ export declare function defineSchema<S extends AnySchema>(builder: (runtime: Sch
29
29
  id?: symbol;
30
30
  debugName?: string;
31
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. */
32
35
  export interface SchemaRuntime {
33
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;
34
40
  resolveSchema<S extends SchemaLike>(ref: S): ResolvedSchema<S>;
35
41
  }
36
- export declare function createSchemaRuntime(policy: SchemaPolicy): SchemaRuntime;
42
+ /** Creates a response-mode runtime by default for standalone model codecs. */
43
+ export declare function createSchemaRuntime(policy: SchemaPolicy, mode?: ModelMode): SchemaRuntime;
@@ -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
- export function createSchemaRuntime(policy) {
75
- return new DefaultSchemaRuntime(policy);
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":"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"}
1
+ {"version":3,"file":"schema-runtime.js","sourceRoot":"","sources":["../src/schema-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** Acquisition endpoints selected by generation; deployment overrides never select another profile. */
2
+ export interface SecurityEndpoints {
3
+ readonly discoveryUrl?: string;
4
+ readonly authorizationUrl?: string;
5
+ readonly tokenUrl?: string;
6
+ readonly refreshUrl?: string;
7
+ }
8
+ /** One logical scheme in the complete alternative selected for an operation. */
9
+ export interface SecurityBinding extends SecurityEndpoints {
10
+ readonly scheme: string;
11
+ readonly provider: string;
12
+ readonly profile?: string;
13
+ readonly flow: 'clientCredentials' | 'authorizationCode' | 'external' | 'static';
14
+ readonly scopes: readonly string[];
15
+ readonly audience?: string;
16
+ readonly resource?: string;
17
+ readonly transport: {
18
+ readonly location: 'header' | 'query' | 'cookie';
19
+ readonly name: string;
20
+ readonly prefix?: string;
21
+ };
22
+ }
@@ -0,0 +1,15 @@
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
+ export {};
15
+ //# sourceMappingURL=security-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-binding.js","sourceRoot":"","sources":["../src/security-binding.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"}
@@ -0,0 +1,18 @@
1
+ import { AuthenticationAdapter } from './authentication-adapter.js';
2
+ import type { ClientSettings } from './client-settings.js';
3
+ import { FetchTransport } from './fetch-transport.js';
4
+ import type { RequestAdapter } from './request-adapter.js';
5
+ import type { ResponseAdapter } from './response-adapter.js';
6
+ import type { TokenProvider } from './token-provider.js';
7
+ /** Opt-in attachment, rejection feedback, and terminal cancellation. Supplied providers are never cached or wrapped. */
8
+ export declare class StandardAuthenticationAdapter implements RequestAdapter, ResponseAdapter {
9
+ private readonly authentication;
10
+ private readonly responses;
11
+ /** Uses caller-owned providers; supply TokenManager explicitly for Sunday-managed caching and refresh. */
12
+ constructor(providers: Readonly<Record<string, TokenProvider>>, options?: ConstructorParameters<typeof AuthenticationAdapter>[1]);
13
+ /** Attaches selected credentials, or reports rejection before cancellation; never replays. */
14
+ adapt(request: Request): Promise<Request>;
15
+ adapt(response: Response, request: Request): Promise<Response>;
16
+ }
17
+ /** Explicit standard factory for generated clients. Additional adapters run after standard authentication. */
18
+ export declare function standardTransportFromSettings(settings: ClientSettings, options?: ConstructorParameters<typeof FetchTransport>[1]): FetchTransport;