@outfoxx/sunday 2.0.0-beta.1 → 2.0.0-beta.11

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 (85) hide show
  1. package/README.md +94 -0
  2. package/build/client-settings.d.ts +23 -0
  3. package/build/client-settings.js +150 -0
  4. package/build/client-settings.js.map +1 -0
  5. package/build/credentials.d.ts +58 -0
  6. package/build/credentials.js +51 -0
  7. package/build/credentials.js.map +1 -0
  8. package/build/event-parser.d.ts +2 -0
  9. package/build/event-parser.js.map +1 -1
  10. package/build/fetch-event-source.d.ts +14 -5
  11. package/build/fetch-event-source.js +109 -44
  12. package/build/fetch-event-source.js.map +1 -1
  13. package/build/fetch-oauth-token-provider.d.ts +28 -0
  14. package/build/fetch-oauth-token-provider.js +171 -0
  15. package/build/fetch-oauth-token-provider.js.map +1 -0
  16. package/build/fetch-transport.d.ts +8 -0
  17. package/build/fetch-transport.js +84 -15
  18. package/build/fetch-transport.js.map +1 -1
  19. package/build/fetch.js +3 -2
  20. package/build/fetch.js.map +1 -1
  21. package/build/index.d.ts +12 -0
  22. package/build/index.js +12 -0
  23. package/build/index.js.map +1 -1
  24. package/build/media-type-codecs/cbor-encoder.d.ts +2 -2
  25. package/build/media-type-codecs/cbor-encoder.js +2 -2
  26. package/build/media-type-codecs/cbor-encoder.js.map +1 -1
  27. package/build/media-type-codecs/json-encoder.d.ts +3 -3
  28. package/build/media-type-codecs/json-encoder.js +4 -4
  29. package/build/media-type-codecs/json-encoder.js.map +1 -1
  30. package/build/media-type-codecs/media-type-encoder.d.ts +3 -3
  31. package/build/media-type-codecs/media-type-encoder.js.map +1 -1
  32. package/build/media-type-codecs/www-form-url-encoder.d.ts +2 -2
  33. package/build/media-type-codecs/www-form-url-encoder.js +2 -2
  34. package/build/media-type-codecs/www-form-url-encoder.js.map +1 -1
  35. package/build/model-construction.d.ts +5 -0
  36. package/build/model-construction.js +40 -0
  37. package/build/model-construction.js.map +1 -0
  38. package/build/model-schema.d.ts +9 -0
  39. package/build/model-schema.js +131 -0
  40. package/build/model-schema.js.map +1 -0
  41. package/build/oauth-wire.d.ts +33 -0
  42. package/build/oauth-wire.js +143 -0
  43. package/build/oauth-wire.js.map +1 -0
  44. package/build/operation.d.ts +11 -1
  45. package/build/operation.js +3 -0
  46. package/build/operation.js.map +1 -1
  47. package/build/problem.js +2 -1
  48. package/build/problem.js.map +1 -1
  49. package/build/request-security.d.ts +16 -0
  50. package/build/request-security.js +167 -0
  51. package/build/request-security.js.map +1 -0
  52. package/build/request-validation-error.d.ts +4 -0
  53. package/build/request-validation-error.js +21 -0
  54. package/build/request-validation-error.js.map +1 -0
  55. package/build/schema-builtins.js +11 -21
  56. package/build/schema-builtins.js.map +1 -1
  57. package/build/schema-runtime.d.ts +8 -1
  58. package/build/schema-runtime.js +12 -3
  59. package/build/schema-runtime.js.map +1 -1
  60. package/build/security-binding.d.ts +22 -0
  61. package/build/security-binding.js +15 -0
  62. package/build/security-binding.js.map +1 -0
  63. package/build/streaming-body.d.ts +21 -0
  64. package/build/streaming-body.js +65 -0
  65. package/build/streaming-body.js.map +1 -0
  66. package/build/token-manager-factory.d.ts +9 -0
  67. package/build/token-manager-factory.js +15 -0
  68. package/build/token-manager-factory.js.map +1 -0
  69. package/build/token-manager.d.ts +33 -0
  70. package/build/token-manager.js +199 -0
  71. package/build/token-manager.js.map +1 -0
  72. package/build/token-provider.d.ts +44 -0
  73. package/build/token-provider.js +31 -0
  74. package/build/token-provider.js.map +1 -0
  75. package/build/transport.d.ts +5 -0
  76. package/build/unknown-variant.d.ts +12 -0
  77. package/build/unknown-variant.js +45 -0
  78. package/build/unknown-variant.js.map +1 -0
  79. package/build/url-template.d.ts +3 -0
  80. package/build/url-template.js +30 -2
  81. package/build/url-template.js.map +1 -1
  82. package/build/util/base64.d.ts +4 -0
  83. package/build/util/base64.js +46 -0
  84. package/build/util/base64.js.map +1 -0
  85. package/package.json +6 -2
@@ -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"}
@@ -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":"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;AAOnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,MAAM,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,0BAA0B,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7D,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5C,0BAA0B;IAC1B,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;AAE1D,SAAS,SAAS,CAAC,KAAa,EAAE,GAAiB;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,CAAC;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;YACE,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,mBAAmB;SAC7B,CACF,CAAC;QACF,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,iBAAiB,EAAE;IAC5D,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE;IAClG,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,2FAA2F;QAC3F,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7C,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChC,CAAC;iBACI,CAAC;gBACJ,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;oBACE,IAAI,EAAE,eAAe;oBACrB,MAAM,EAAE,CAAC,MAAM,CAAC;oBAChB,KAAK,EAAE,KAAK,CAAC,GAAG;oBAChB,OAAO,EAAE,qBAAqB;iBAC/B,CACF,CAAC;gBACF,OAAO,CAAC,CAAC,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;aACI,CAAC;YACJ,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChB,iFAAiF;QACjF,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,QAA6B;IAClD,IAAI,OAAyE,CAAC;IAC9E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,mBAAmB,CAAC,MAAM;YAC7B,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;YAC7D,MAAM;QACR,KAAK,mBAAmB,CAAC,SAAS;YAChC,OAAO,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;YAChE,MAAM;QACR;YACE,MAAM,IAAI,SAAS,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,KAAK;aACT,MAAM;aACN,KAAK,EAAE,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAA6B;IAClD,IAAI,OAAgE,CAAC;IACrE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,mBAAmB,CAAC,MAAM;YAC7B,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM;QACR,KAAK,mBAAmB,CAAC,SAAS;YAChC,OAAO,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACvD,MAAM;QACR;YACE,MAAM,IAAI,SAAS,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAoB;IACnD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,0BAA0B,EAAE;gBACrD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACjD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC;aAClD,CAAC,CAAC;QACL,KAAK,MAAM;YACT,IAAI,MAAM,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,SAAS,EAAE,CAAC;gBAChE,OAAO,CAAC,CAAC,KAAK,CAAC,6BAA6B,EAAE,0BAA0B,EAAE;oBACxE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACb,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;wBACnB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;wBAC3D,CAAC,CAAC,CAAC,CACN;oBACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;gBACrG,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE;oBAC3F,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;wBACrB,6GAA6G;wBAC7G,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;4BACjC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BAC9C,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gCAClB,KAAK,SAAS;oCACZ,OAAO,UAAU;yCACd,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;yCACtE,MAAM,CAAC;gCACZ,KAAK,YAAY;oCACf,OAAO,UAAU;yCACd,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;yCACzE,MAAM,CAAC;gCACZ;oCACE,GAAG,CAAC,MAAM,CAAC,IAAI,CACb;wCACE,IAAI,EAAE,eAAe;wCACrB,MAAM,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;wCACjC,KAAK,EAAE,KAAK,CAAC,GAAG;qCACjB,CACF,CAAC;oCACF,OAAO,CAAC,CAAC,KAAK,CAAA;4BAClB,CAAC;wBACH,CAAC;wBAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;wBAChB,iFAAiF;wBACjF,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpD,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc;QACrE,iBAAiB,EAAE,uBAAuB,CAAC,MAAM,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACrC,OAAO;QACL,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE;KACtC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAoB;IAC1D,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CACnC,CAAC,OAAO,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAC9D;IACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAC3C,SAAS,EAAE,WAAW;CACvB,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAC3C,CAAC,OAAO,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,EACtE;IACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC;IACnD,SAAS,EAAE,mBAAmB;CAC/B,CACF,CAAC"}
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,21 @@
1
+ /** Binary chunk values supported by streaming request bodies. */
2
+ export type StreamingBodyChunk = ArrayBuffer | Uint8Array;
3
+ /** Creates a fresh async byte sequence for a streaming request body. */
4
+ export type StreamingBodyBytesFactory = () => AsyncIterable<StreamingBodyChunk>;
5
+ /** Creates a fresh web readable stream for a streaming request body. */
6
+ export type StreamingBodyStreamFactory = () => ReadableStream<Uint8Array>;
7
+ /** A lazily-created request body for streaming uploads. */
8
+ export declare class StreamingBody {
9
+ private readonly createBody;
10
+ private constructor();
11
+ /** Creates a streaming body from a reusable web platform `Blob`. */
12
+ static blob(blob: Blob): StreamingBody;
13
+ /** Creates a streaming body from a fresh web `ReadableStream` factory. */
14
+ static stream(factory: StreamingBodyStreamFactory): StreamingBody;
15
+ /** Creates a streaming body from a fresh async byte iterable factory. */
16
+ static bytes(factory: StreamingBodyBytesFactory): StreamingBody;
17
+ /** Creates the web platform body value consumed by `fetch`. */
18
+ toBodyInit(): BodyInit;
19
+ }
20
+ /** Returns true when a value is a Sunday streaming request body. */
21
+ export declare function isStreamingBody(value: unknown): value is StreamingBody;
@@ -0,0 +1,65 @@
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 lazily-created request body for streaming uploads. */
15
+ export class StreamingBody {
16
+ createBody;
17
+ constructor(createBody) {
18
+ this.createBody = createBody;
19
+ }
20
+ /** Creates a streaming body from a reusable web platform `Blob`. */
21
+ static blob(blob) {
22
+ return new StreamingBody(() => blob);
23
+ }
24
+ /** Creates a streaming body from a fresh web `ReadableStream` factory. */
25
+ static stream(factory) {
26
+ return new StreamingBody(factory);
27
+ }
28
+ /** Creates a streaming body from a fresh async byte iterable factory. */
29
+ static bytes(factory) {
30
+ return new StreamingBody(() => asyncBytesToReadableStream(factory()));
31
+ }
32
+ /** Creates the web platform body value consumed by `fetch`. */
33
+ toBodyInit() {
34
+ return this.createBody();
35
+ }
36
+ }
37
+ /** Returns true when a value is a Sunday streaming request body. */
38
+ export function isStreamingBody(value) {
39
+ return value instanceof StreamingBody;
40
+ }
41
+ function asyncBytesToReadableStream(bytes) {
42
+ const iterator = bytes[Symbol.asyncIterator]();
43
+ return new ReadableStream({
44
+ async pull(controller) {
45
+ try {
46
+ const next = await iterator.next();
47
+ if (next.done === true) {
48
+ controller.close();
49
+ return;
50
+ }
51
+ controller.enqueue(toUint8Array(next.value));
52
+ }
53
+ catch (error) {
54
+ controller.error(error);
55
+ }
56
+ },
57
+ async cancel(reason) {
58
+ await iterator.return?.(reason);
59
+ },
60
+ });
61
+ }
62
+ function toUint8Array(chunk) {
63
+ return chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
64
+ }
65
+ //# sourceMappingURL=streaming-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-body.js","sourceRoot":"","sources":["../src/streaming-body.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;AAWjC,2DAA2D;AAC3D,MAAM,OAAO,aAAa;IAEL;IADnB,YACmB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAE7C,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,IAAI,CAAC,IAAU;QACpB,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,MAAM,CAAC,OAAmC;QAC/C,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,KAAK,CAAC,OAAkC;QAC7C,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,+DAA+D;IAC/D,UAAU;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,aAAa,CAAC;AACxC,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAwC;IAExC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAE/C,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACb,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAM;YACjB,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TokenManager } from './token-manager.js';
2
+ import { TokenProvider } from './token-provider.js';
3
+ /**
4
+ * Creates a manager from resolved providers without token acquisition or storage I/O.
5
+ * Supply the native manager's store, expirySkewMs and now options here.
6
+ * Called once for secured settings and never when there are no selected providers.
7
+ * The application owns the returned manager and its store/session lifecycle.
8
+ */
9
+ export type TokenManagerFactory = (providers: Readonly<Record<string, TokenProvider>>) => TokenManager;
@@ -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=token-manager-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-manager-factory.js","sourceRoot":"","sources":["../src/token-manager-factory.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,33 @@
1
+ import { SecurityBinding } from './security-binding.js';
2
+ import { TokenProvider, TokenSet, TokenStore } from './token-provider.js';
3
+ /** A credential receipt used for conditional invalidation after an invalid-token response. */
4
+ export interface TokenLease {
5
+ readonly key: string;
6
+ readonly tokens: TokenSet;
7
+ }
8
+ /**
9
+ * Shared token lifecycle with one renewal per cache key. Canceling one caller leaves other waiters
10
+ * running; canceling the last waiter signals the provider. A failed renewal is never cached.
11
+ */
12
+ export declare class TokenManager {
13
+ private readonly providers;
14
+ private readonly store;
15
+ private readonly renewals;
16
+ private readonly authorizationAttempts;
17
+ private readonly locks;
18
+ private readonly now;
19
+ private readonly skew;
20
+ constructor(providers: Readonly<Record<string, TokenProvider>>, options?: {
21
+ store?: TokenStore;
22
+ expirySkewMs?: number;
23
+ now?: () => number;
24
+ });
25
+ /** Acquires current credentials without invoking authorization twice for an expired interactive session. */
26
+ credentials(binding: SecurityBinding, signal?: AbortSignal): Promise<TokenLease>;
27
+ /** Invalidates only the credential that failed, preserving a token already renewed by another caller. */
28
+ invalidate(lease: TokenLease): Promise<void>;
29
+ private exclusive;
30
+ private renew;
31
+ private acquireOrRefresh;
32
+ private join;
33
+ }
@@ -0,0 +1,199 @@
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 { AuthorizationRequiredError, TokenProviderError, } from './token-provider.js';
15
+ /**
16
+ * Shared token lifecycle with one renewal per cache key. Canceling one caller leaves other waiters
17
+ * running; canceling the last waiter signals the provider. A failed renewal is never cached.
18
+ */
19
+ export class TokenManager {
20
+ providers;
21
+ store;
22
+ renewals = new Map();
23
+ authorizationAttempts = new Set();
24
+ locks = new Map();
25
+ now;
26
+ skew;
27
+ constructor(providers, options = {}) {
28
+ this.providers = new Map(Object.entries(providers));
29
+ this.store = options.store ?? new MemoryTokenStore();
30
+ this.now = options.now ?? Date.now;
31
+ this.skew = options.expirySkewMs ?? 30_000;
32
+ if (!Number.isFinite(this.skew) || this.skew < 0)
33
+ throw new RangeError('Invalid token expiry skew');
34
+ }
35
+ /** Acquires current credentials without invoking authorization twice for an expired interactive session. */
36
+ async credentials(binding, signal) {
37
+ signal?.throwIfAborted();
38
+ const provider = this.providers.get(binding.provider);
39
+ if (!provider)
40
+ throw new TokenProviderError();
41
+ let configuration;
42
+ try {
43
+ configuration = provider.configure(binding);
44
+ }
45
+ catch {
46
+ throw new TokenProviderError();
47
+ }
48
+ if (!provider.identity.trim() || !configuration.clientIdentity.trim() ||
49
+ (binding.flow === 'authorizationCode' && !configuration.grantIdentity?.trim()))
50
+ throw new TokenProviderError();
51
+ const request = Object.freeze({
52
+ ...binding,
53
+ discoveryUrl: configuration.endpoints?.discoveryUrl ?? binding.discoveryUrl,
54
+ authorizationUrl: configuration.endpoints?.authorizationUrl ?? binding.authorizationUrl,
55
+ tokenUrl: configuration.endpoints?.tokenUrl ?? binding.tokenUrl,
56
+ refreshUrl: configuration.endpoints?.refreshUrl ?? binding.refreshUrl,
57
+ clientIdentity: configuration.clientIdentity,
58
+ grantIdentity: configuration.grantIdentity,
59
+ scopes: Object.freeze([...new Set(binding.scopes)].sort(compareScopes)),
60
+ transport: Object.freeze({ ...binding.transport }),
61
+ });
62
+ const key = JSON.stringify([
63
+ request.scheme, binding.provider, provider.identity, request.clientIdentity, request.grantIdentity,
64
+ request.profile, request.flow, request.discoveryUrl, request.authorizationUrl, request.tokenUrl,
65
+ request.refreshUrl, request.scopes, request.audience, request.resource,
66
+ ]);
67
+ let renewal = this.renewals.get(key);
68
+ if (!renewal || renewal.controller.signal.aborted) {
69
+ const controller = new AbortController();
70
+ const created = {
71
+ controller, waiters: 0, settled: false, committing: false,
72
+ promise: this.exclusive(key, () => this.renew(key, provider, request, controller.signal)),
73
+ };
74
+ this.renewals.set(key, created);
75
+ void created.promise.finally(() => {
76
+ created.settled = true;
77
+ if (this.renewals.get(key) === created)
78
+ this.renewals.delete(key);
79
+ }).catch(() => undefined);
80
+ renewal = created;
81
+ }
82
+ return this.join(renewal, signal);
83
+ }
84
+ /** Invalidates only the credential that failed, preserving a token already renewed by another caller. */
85
+ async invalidate(lease) {
86
+ try {
87
+ await this.exclusive(lease.key, async () => {
88
+ const current = await this.store.load(lease.key);
89
+ if (current?.accessToken === lease.tokens.accessToken) {
90
+ await this.store.save(lease.key, Object.freeze({ ...current, expiresAt: 0 }));
91
+ }
92
+ });
93
+ }
94
+ catch {
95
+ throw new TokenProviderError();
96
+ }
97
+ }
98
+ exclusive(key, action) {
99
+ const prior = this.locks.get(key) ?? Promise.resolve();
100
+ const next = prior.catch(() => undefined).then(action);
101
+ this.locks.set(key, next);
102
+ void next.finally(() => {
103
+ if (this.locks.get(key) === next)
104
+ this.locks.delete(key);
105
+ }).catch(() => undefined);
106
+ return next;
107
+ }
108
+ async renew(key, provider, request, signal) {
109
+ try {
110
+ signal.throwIfAborted();
111
+ const stored = await this.store.load(key);
112
+ signal.throwIfAborted();
113
+ if (stored && (stored.expiresAt === undefined || stored.expiresAt > this.now() + this.skew)) {
114
+ return { key, tokens: Object.freeze({ ...stored }) };
115
+ }
116
+ const tokens = await this.acquireOrRefresh(key, stored, provider, request, signal);
117
+ if (!tokens.accessToken || (tokens.expiresAt !== undefined &&
118
+ (!Number.isFinite(tokens.expiresAt) || tokens.expiresAt <= this.now())))
119
+ throw new TokenProviderError();
120
+ const snapshot = Object.freeze({ ...tokens });
121
+ signal.throwIfAborted();
122
+ const renewal = this.renewals.get(key);
123
+ if (renewal?.controller.signal !== signal)
124
+ throw new DOMException('Renewal expired', 'AbortError');
125
+ // Once persistence begins, cancellation must not discard a rotated refresh token.
126
+ renewal.committing = true;
127
+ await this.store.save(key, snapshot);
128
+ return { key, tokens: snapshot };
129
+ }
130
+ catch (error) {
131
+ if (signal.aborted)
132
+ throw signal.reason;
133
+ if (error instanceof AuthorizationRequiredError || error instanceof TokenProviderError)
134
+ throw error;
135
+ throw new TokenProviderError();
136
+ }
137
+ }
138
+ async acquireOrRefresh(key, stored, provider, request, signal) {
139
+ if (stored?.refreshToken && provider.refresh) {
140
+ try {
141
+ const refreshed = await provider.refresh(request, stored.refreshToken, signal);
142
+ return { ...refreshed, refreshToken: refreshed.refreshToken ?? stored.refreshToken };
143
+ }
144
+ catch (error) {
145
+ if (!(error instanceof TokenProviderError) || error.reason !== 'invalidGrant' || request.flow !== 'clientCredentials')
146
+ throw error;
147
+ signal.throwIfAborted();
148
+ await this.store.remove(key);
149
+ return provider.acquire(request, signal);
150
+ }
151
+ }
152
+ else if (request.flow === 'authorizationCode' && (stored || this.authorizationAttempts.has(key))) {
153
+ throw new AuthorizationRequiredError();
154
+ }
155
+ else {
156
+ if (request.flow === 'authorizationCode')
157
+ this.authorizationAttempts.add(key);
158
+ return provider.acquire(request, signal);
159
+ }
160
+ }
161
+ join(renewal, signal) {
162
+ renewal.waiters++;
163
+ return new Promise((resolve, reject) => {
164
+ let completed = false;
165
+ const finish = (value, error) => {
166
+ if (completed)
167
+ return;
168
+ completed = true;
169
+ signal?.removeEventListener('abort', abort);
170
+ renewal.waiters--;
171
+ if (renewal.waiters === 0 && !renewal.settled && !renewal.committing)
172
+ renewal.controller.abort();
173
+ if (value)
174
+ resolve(value);
175
+ else
176
+ reject(error);
177
+ };
178
+ const abort = () => finish(undefined, signal?.reason);
179
+ signal?.addEventListener('abort', abort, { once: true });
180
+ if (signal?.aborted)
181
+ abort();
182
+ renewal.promise.then(value => finish(value), error => finish(undefined, error));
183
+ });
184
+ }
185
+ }
186
+ class MemoryTokenStore {
187
+ tokens = new Map();
188
+ load(key) { return Promise.resolve(this.tokens.get(key)); }
189
+ save(key, tokens) { this.tokens.set(key, tokens); return Promise.resolve(); }
190
+ remove(key) { this.tokens.delete(key); return Promise.resolve(); }
191
+ }
192
+ function compareScopes(left, right) {
193
+ if (left < right)
194
+ return -1;
195
+ if (left > right)
196
+ return 1;
197
+ return 0;
198
+ }
199
+ //# sourceMappingURL=token-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-manager.js","sourceRoot":"","sources":["../src/token-manager.ts"],"names":[],"mappings":"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"}