@empire-builder-kit/runtime 1.0.0-beta.9 → 1.0.0-rc.2

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 (218) hide show
  1. package/NOTICE +6 -0
  2. package/package.json +93 -3
  3. package/src/api-contract/artifacts.d.ts +67 -0
  4. package/src/api-contract/artifacts.js +349 -0
  5. package/src/api-contract/artifacts.js.map +1 -0
  6. package/src/api-contract/client.d.ts +79 -0
  7. package/src/api-contract/client.js +561 -0
  8. package/src/api-contract/client.js.map +1 -0
  9. package/src/api-contract/errors.d.ts +7 -0
  10. package/src/api-contract/errors.js +11 -0
  11. package/src/api-contract/errors.js.map +1 -0
  12. package/src/api-contract/index.d.ts +9 -0
  13. package/src/api-contract/index.js +10 -0
  14. package/src/api-contract/index.js.map +1 -0
  15. package/src/api-contract/operation.d.ts +118 -0
  16. package/src/api-contract/operation.js +609 -0
  17. package/src/api-contract/operation.js.map +1 -0
  18. package/src/api-contract/schema.d.ts +81 -0
  19. package/src/api-contract/schema.js +313 -0
  20. package/src/api-contract/schema.js.map +1 -0
  21. package/src/api-contract/server.d.ts +77 -0
  22. package/src/api-contract/server.js +466 -0
  23. package/src/api-contract/server.js.map +1 -0
  24. package/src/async-work/contract.d.ts +17 -0
  25. package/src/async-work/contract.js +105 -0
  26. package/src/async-work/contract.js.map +1 -0
  27. package/src/async-work/idempotency.d.ts +123 -0
  28. package/src/async-work/idempotency.js +167 -0
  29. package/src/async-work/idempotency.js.map +1 -0
  30. package/src/async-work/index.d.ts +8 -0
  31. package/src/async-work/index.js +9 -0
  32. package/src/async-work/index.js.map +1 -0
  33. package/src/async-work/provider.d.ts +90 -0
  34. package/src/async-work/provider.js +155 -0
  35. package/src/async-work/provider.js.map +1 -0
  36. package/src/async-work/recovery.d.ts +103 -0
  37. package/src/async-work/recovery.js +291 -0
  38. package/src/async-work/recovery.js.map +1 -0
  39. package/src/async-work/schedule.d.ts +117 -0
  40. package/src/async-work/schedule.js +279 -0
  41. package/src/async-work/schedule.js.map +1 -0
  42. package/src/async-work/sqs.d.ts +133 -0
  43. package/src/async-work/sqs.js +280 -0
  44. package/src/async-work/sqs.js.map +1 -0
  45. package/src/async-work/webhook.d.ts +60 -0
  46. package/src/async-work/webhook.js +178 -0
  47. package/src/async-work/webhook.js.map +1 -0
  48. package/src/async-work/workflow.d.ts +98 -0
  49. package/src/async-work/workflow.js +225 -0
  50. package/src/async-work/workflow.js.map +1 -0
  51. package/src/auth-backend.d.ts +12 -2
  52. package/src/auth-backend.js +30 -18
  53. package/src/auth-backend.js.map +1 -1
  54. package/src/authorization/admission.d.ts +30 -0
  55. package/src/authorization/admission.js +87 -0
  56. package/src/authorization/admission.js.map +1 -0
  57. package/src/authorization/approval.d.ts +99 -0
  58. package/src/authorization/approval.js +249 -0
  59. package/src/authorization/approval.js.map +1 -0
  60. package/src/authorization/audit.d.ts +35 -0
  61. package/src/authorization/audit.js +35 -0
  62. package/src/authorization/audit.js.map +1 -0
  63. package/src/authorization/delegation.d.ts +149 -0
  64. package/src/authorization/delegation.js +401 -0
  65. package/src/authorization/delegation.js.map +1 -0
  66. package/src/authorization/errors.d.ts +32 -0
  67. package/src/authorization/errors.js +153 -0
  68. package/src/authorization/errors.js.map +1 -0
  69. package/src/authorization/evaluator.d.ts +39 -0
  70. package/src/authorization/evaluator.js +199 -0
  71. package/src/authorization/evaluator.js.map +1 -0
  72. package/src/authorization/index.d.ts +14 -0
  73. package/src/authorization/index.js +15 -0
  74. package/src/authorization/index.js.map +1 -0
  75. package/src/authorization/machine-token.d.ts +87 -0
  76. package/src/authorization/machine-token.js +201 -0
  77. package/src/authorization/machine-token.js.map +1 -0
  78. package/src/authorization/machine.d.ts +32 -0
  79. package/src/authorization/machine.js +41 -0
  80. package/src/authorization/machine.js.map +1 -0
  81. package/src/authorization/model.d.ts +112 -0
  82. package/src/authorization/model.js +112 -0
  83. package/src/authorization/model.js.map +1 -0
  84. package/src/canonical-json.cjs +157 -0
  85. package/src/canonical-json.d.cts +26 -0
  86. package/src/canonical-json.d.ts +18 -0
  87. package/src/canonical-json.js +125 -0
  88. package/src/canonical-json.js.map +1 -0
  89. package/src/configuration/contract.d.ts +107 -0
  90. package/src/configuration/contract.js +461 -0
  91. package/src/configuration/contract.js.map +1 -0
  92. package/src/configuration/index.d.ts +3 -0
  93. package/src/configuration/index.js +4 -0
  94. package/src/configuration/index.js.map +1 -0
  95. package/src/configuration/provider.d.ts +59 -0
  96. package/src/configuration/provider.js +198 -0
  97. package/src/configuration/provider.js.map +1 -0
  98. package/src/configuration/rollout-evaluator.cjs +54 -0
  99. package/src/configuration/rollout-evaluator.d.cts +26 -0
  100. package/src/configuration/rollout-evaluator.d.ts +18 -0
  101. package/src/configuration/rollout-evaluator.js +38 -0
  102. package/src/configuration/rollout-evaluator.js.map +1 -0
  103. package/src/configuration/rollout-key.cjs +38 -0
  104. package/src/configuration/rollout-key.d.cts +14 -0
  105. package/src/configuration/rollout-key.d.ts +10 -0
  106. package/src/configuration/rollout-key.js +26 -0
  107. package/src/configuration/rollout-key.js.map +1 -0
  108. package/src/configuration/rollout.d.ts +60 -0
  109. package/src/configuration/rollout.js +42 -0
  110. package/src/configuration/rollout.js.map +1 -0
  111. package/src/data-lifecycle/contract.d.ts +33 -0
  112. package/src/data-lifecycle/contract.js +118 -0
  113. package/src/data-lifecycle/contract.js.map +1 -0
  114. package/src/data-lifecycle/event.d.ts +28 -0
  115. package/src/data-lifecycle/event.js +76 -0
  116. package/src/data-lifecycle/event.js.map +1 -0
  117. package/src/data-lifecycle/evidence.d.ts +65 -0
  118. package/src/data-lifecycle/evidence.js +162 -0
  119. package/src/data-lifecycle/evidence.js.map +1 -0
  120. package/src/data-lifecycle/holds.d.ts +29 -0
  121. package/src/data-lifecycle/holds.js +124 -0
  122. package/src/data-lifecycle/holds.js.map +1 -0
  123. package/src/data-lifecycle/index.d.ts +8 -0
  124. package/src/data-lifecycle/index.js +9 -0
  125. package/src/data-lifecycle/index.js.map +1 -0
  126. package/src/data-lifecycle/policy.d.ts +16 -0
  127. package/src/data-lifecycle/policy.js +79 -0
  128. package/src/data-lifecycle/policy.js.map +1 -0
  129. package/src/data-lifecycle/restore.d.ts +90 -0
  130. package/src/data-lifecycle/restore.js +336 -0
  131. package/src/data-lifecycle/restore.js.map +1 -0
  132. package/src/data-lifecycle/retention.d.ts +57 -0
  133. package/src/data-lifecycle/retention.js +232 -0
  134. package/src/data-lifecycle/retention.js.map +1 -0
  135. package/src/data-lifecycle/rights.d.ts +171 -0
  136. package/src/data-lifecycle/rights.js +533 -0
  137. package/src/data-lifecycle/rights.js.map +1 -0
  138. package/src/database.d.ts +36 -0
  139. package/src/database.js +119 -0
  140. package/src/database.js.map +1 -0
  141. package/src/deterministic-order.cjs +16 -0
  142. package/src/deterministic-order.d.cts +9 -0
  143. package/src/deterministic-order.d.ts +7 -0
  144. package/src/deterministic-order.js +10 -0
  145. package/src/deterministic-order.js.map +1 -0
  146. package/src/events.d.ts +28 -19
  147. package/src/events.js +171 -66
  148. package/src/events.js.map +1 -1
  149. package/src/index.d.ts +7 -1
  150. package/src/index.js +24 -0
  151. package/src/index.js.map +1 -1
  152. package/src/lambda.d.ts +8 -2
  153. package/src/lambda.js +100 -39
  154. package/src/lambda.js.map +1 -1
  155. package/src/logging.d.ts +95 -36
  156. package/src/logging.js +460 -62
  157. package/src/logging.js.map +1 -1
  158. package/src/observability.d.ts +80 -18
  159. package/src/observability.js +252 -61
  160. package/src/observability.js.map +1 -1
  161. package/src/performance/index.d.ts +1 -0
  162. package/src/performance/index.js +2 -0
  163. package/src/performance/index.js.map +1 -0
  164. package/src/performance/protected-load-endpoint.d.ts +140 -0
  165. package/src/performance/protected-load-endpoint.js +462 -0
  166. package/src/performance/protected-load-endpoint.js.map +1 -0
  167. package/src/rds-global-ca-bundle.d.ts +1 -0
  168. package/src/rds-global-ca-bundle.js +2742 -0
  169. package/src/rds-global-ca-bundle.js.map +1 -0
  170. package/src/reliability/burn.d.ts +39 -0
  171. package/src/reliability/burn.js +102 -0
  172. package/src/reliability/burn.js.map +1 -0
  173. package/src/reliability/contract.d.ts +5 -0
  174. package/src/reliability/contract.js +317 -0
  175. package/src/reliability/contract.js.map +1 -0
  176. package/src/reliability/incident.d.ts +16 -0
  177. package/src/reliability/incident.js +562 -0
  178. package/src/reliability/incident.js.map +1 -0
  179. package/src/reliability/index.d.ts +5 -0
  180. package/src/reliability/index.js +6 -0
  181. package/src/reliability/index.js.map +1 -0
  182. package/src/reliability/model.d.ts +191 -0
  183. package/src/reliability/model.fixtures.d.ts +2 -0
  184. package/src/reliability/model.fixtures.js +57 -0
  185. package/src/reliability/model.fixtures.js.map +1 -0
  186. package/src/reliability/model.js +2 -0
  187. package/src/reliability/model.js.map +1 -0
  188. package/src/reliability/slo.d.ts +9 -0
  189. package/src/reliability/slo.js +74 -0
  190. package/src/reliability/slo.js.map +1 -0
  191. package/src/request-context.d.ts +57 -15
  192. package/src/request-context.js +116 -36
  193. package/src/request-context.js.map +1 -1
  194. package/src/safe-reference.cjs +57 -0
  195. package/src/safe-reference.d.cts +25 -0
  196. package/src/safe-reference.d.ts +11 -0
  197. package/src/safe-reference.js +46 -0
  198. package/src/safe-reference.js.map +1 -0
  199. package/src/secrets/contract.d.ts +99 -0
  200. package/src/secrets/contract.js +238 -0
  201. package/src/secrets/contract.js.map +1 -0
  202. package/src/secrets/index.d.ts +4 -0
  203. package/src/secrets/index.js +5 -0
  204. package/src/secrets/index.js.map +1 -0
  205. package/src/secrets/observability.d.ts +14 -0
  206. package/src/secrets/observability.js +100 -0
  207. package/src/secrets/observability.js.map +1 -0
  208. package/src/secrets/personal.d.ts +48 -0
  209. package/src/secrets/personal.js +332 -0
  210. package/src/secrets/personal.js.map +1 -0
  211. package/src/secrets/resolver.d.ts +125 -0
  212. package/src/secrets/resolver.js +602 -0
  213. package/src/secrets/resolver.js.map +1 -0
  214. package/src/secrets/sensitive-patterns.cjs +84 -0
  215. package/src/secrets/sensitive-patterns.d.cts +62 -0
  216. package/src/secrets/sensitive-patterns.d.ts +40 -0
  217. package/src/secrets/sensitive-patterns.js +60 -0
  218. package/src/secrets/sensitive-patterns.js.map +1 -0
@@ -0,0 +1,561 @@
1
+ import { __awaiter } from "tslib";
2
+ import { compareUtf16 } from '../deterministic-order.js';
3
+ import { ApiContractError } from './errors.js';
4
+ import { defineApiContract, defineApiOperation, } from './operation.js';
5
+ import { isCanonicalApiHttpHeaderValue } from './schema.js';
6
+ export const apiClientRuntime = {
7
+ exportPath: '@empire-builder-kit/runtime/api-client',
8
+ packageName: '@empire-builder-kit/runtime',
9
+ responseProfile: 'ebk-app-v1',
10
+ };
11
+ const propagationPattern = /^[A-Za-z0-9._:/-]{1,128}$/;
12
+ const traceParentPattern = /^00-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$/;
13
+ const strongEntityTagPattern = /^"[\x21\x23-\x7e]*"$/;
14
+ const forbiddenCredentialHeaders = new Set([
15
+ 'content-length',
16
+ 'content-type',
17
+ 'cookie',
18
+ 'host',
19
+ 'idempotency-key',
20
+ 'if-match',
21
+ 'proxy-authorization',
22
+ 'set-cookie',
23
+ 'traceparent',
24
+ 'tracestate',
25
+ 'x-causation-id',
26
+ 'x-correlation-id',
27
+ 'x-request-id',
28
+ ]);
29
+ const DEFAULT_API_RESPONSE_MAX_BYTES = 1024 * 1024;
30
+ const MAX_API_RESPONSE_MAX_BYTES = 10 * 1024 * 1024;
31
+ class InvalidApiResponseError extends Error {
32
+ }
33
+ class ApiClientAbortError extends Error {
34
+ }
35
+ function invalidResponse(message, response) {
36
+ var _a;
37
+ return {
38
+ error: {
39
+ code: 'invalid_response',
40
+ message,
41
+ retryable: false,
42
+ },
43
+ headers: response ? safeResponseHeaders(response.headers) : {},
44
+ kind: 'invalid-response',
45
+ ok: false,
46
+ status: (_a = response === null || response === void 0 ? void 0 : response.status) !== null && _a !== void 0 ? _a : 0,
47
+ };
48
+ }
49
+ function transportFailure(code, retryable) {
50
+ return {
51
+ error: {
52
+ code,
53
+ message: code === 'request_timeout'
54
+ ? 'The API request timed out.'
55
+ : code === 'request_cancelled'
56
+ ? 'The API request was cancelled.'
57
+ : 'The API request could not be completed.',
58
+ retryable,
59
+ },
60
+ headers: {},
61
+ kind: 'transport',
62
+ ok: false,
63
+ status: 0,
64
+ };
65
+ }
66
+ function requireBaseUrl(value) {
67
+ let parsed;
68
+ try {
69
+ parsed = new URL(value);
70
+ }
71
+ catch (error) {
72
+ throw new ApiContractError('api-contract-invalid', 'API client base URL must be an absolute URL.', { cause: error });
73
+ }
74
+ if (!['http:', 'https:'].includes(parsed.protocol) ||
75
+ parsed.username ||
76
+ parsed.password ||
77
+ parsed.search ||
78
+ parsed.hash) {
79
+ throw new ApiContractError('api-contract-invalid', 'API client base URL must contain no credentials, query, or fragment.');
80
+ }
81
+ if (parsed.protocol === 'http:' &&
82
+ parsed.hostname !== 'localhost' &&
83
+ !parsed.hostname.endsWith('.localhost') &&
84
+ !/^127(?:\.\d{1,3}){3}$/.test(parsed.hostname) &&
85
+ parsed.hostname !== '[::1]') {
86
+ throw new ApiContractError('api-contract-invalid', 'Plain HTTP is allowed only for credential-free loopback or .localhost development.');
87
+ }
88
+ return parsed;
89
+ }
90
+ function safeValue(value, pattern = propagationPattern) {
91
+ const normalized = value.trim();
92
+ if (normalized !== value || !pattern.test(normalized)) {
93
+ throw new ApiContractError('api-request-invalid', 'API client context contains an invalid propagation value.');
94
+ }
95
+ return normalized;
96
+ }
97
+ function propagationHeaders(context) {
98
+ if (!context)
99
+ return {};
100
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (context.causationId
101
+ ? { 'x-causation-id': safeValue(context.causationId) }
102
+ : {})), (context.correlationId
103
+ ? { 'x-correlation-id': safeValue(context.correlationId) }
104
+ : {})), (context.requestId
105
+ ? { 'x-request-id': safeValue(context.requestId) }
106
+ : {})), (context.traceParent
107
+ ? {
108
+ traceparent: safeValue(context.traceParent.toLowerCase(), traceParentPattern),
109
+ }
110
+ : {})), (context.traceState
111
+ ? {
112
+ tracestate: safeValue(context.traceState, /^[\x20-\x7e]{1,512}$/),
113
+ }
114
+ : {}));
115
+ }
116
+ function credentialHeaders(values) {
117
+ if (!values || typeof values !== 'object' || Array.isArray(values)) {
118
+ throw new ApiContractError('api-request-invalid', 'API credential provider must return a header record.');
119
+ }
120
+ const result = Object.create(null);
121
+ const names = new Set();
122
+ for (const [name, value] of Object.entries(values)) {
123
+ const normalizedName = name.toLowerCase();
124
+ if (names.has(normalizedName) ||
125
+ !/^[a-z0-9-]{1,64}$/.test(normalizedName) ||
126
+ forbiddenCredentialHeaders.has(normalizedName) ||
127
+ typeof value !== 'string' ||
128
+ !isCanonicalApiHttpHeaderValue(value)) {
129
+ throw new ApiContractError('api-request-invalid', 'API credential provider returned an unsafe or reserved header.');
130
+ }
131
+ names.add(normalizedName);
132
+ result[normalizedName] = value;
133
+ }
134
+ return result;
135
+ }
136
+ function requestRecord(value, label) {
137
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
138
+ throw new ApiContractError('api-request-invalid', `${label} must be an object.`);
139
+ }
140
+ return value;
141
+ }
142
+ function stringValue(value, label) {
143
+ if (!['boolean', 'number', 'string'].includes(typeof value) ||
144
+ (typeof value === 'number' && !Number.isFinite(value))) {
145
+ throw new ApiContractError('api-request-invalid', `${label} must contain only scalar values.`);
146
+ }
147
+ return String(value);
148
+ }
149
+ function requestHeaderValue(value, label) {
150
+ const normalized = stringValue(value, label);
151
+ if (!isCanonicalApiHttpHeaderValue(normalized)) {
152
+ throw new ApiContractError('api-request-invalid', `${label} is not a canonical HTTP header value.`);
153
+ }
154
+ return normalized;
155
+ }
156
+ function buildUrl(base, operation, request) {
157
+ let route = operation.path;
158
+ const path = request.path
159
+ ? requestRecord(request.path, 'API request path')
160
+ : {};
161
+ route = route.replace(/\{([a-z][A-Za-z0-9]*)\}/g, (_, name) => {
162
+ if (!Object.prototype.hasOwnProperty.call(path, name)) {
163
+ throw new ApiContractError('api-request-invalid', `API request path is missing ${name}.`);
164
+ }
165
+ const value = stringValue(path[name], `Path ${name}`);
166
+ if (value === '.' || value === '..') {
167
+ throw new ApiContractError('api-request-invalid', `Path ${name} cannot be a URL dot segment.`);
168
+ }
169
+ return encodeURIComponent(value);
170
+ });
171
+ const joinedPath = `${base.pathname.replace(/\/$/, '')}${route}`;
172
+ const url = new URL(base.toString());
173
+ url.pathname = joinedPath;
174
+ const query = request.query
175
+ ? requestRecord(request.query, 'API request query')
176
+ : {};
177
+ for (const [name, value] of Object.entries(query).sort(([left], [right]) => compareUtf16(left, right))) {
178
+ if (Array.isArray(value)) {
179
+ value.forEach((entry) => url.searchParams.append(name, stringValue(entry, `Query ${name}`)));
180
+ }
181
+ else {
182
+ url.searchParams.set(name, stringValue(value, `Query ${name}`));
183
+ }
184
+ }
185
+ return url;
186
+ }
187
+ function awaitWithAbort(factory, signal) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ if (signal.aborted)
190
+ throw new ApiClientAbortError();
191
+ return new Promise((resolve, reject) => {
192
+ const abort = () => {
193
+ reject(new ApiClientAbortError());
194
+ };
195
+ signal.addEventListener('abort', abort, { once: true });
196
+ Promise.resolve()
197
+ .then(() => {
198
+ if (signal.aborted)
199
+ throw new ApiClientAbortError();
200
+ return factory();
201
+ })
202
+ .then(resolve, reject)
203
+ .finally(() => signal.removeEventListener('abort', abort));
204
+ });
205
+ });
206
+ }
207
+ function boundedResponseText(response, maximumBytes) {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ var _a;
210
+ const contentLength = response.headers.get('content-length');
211
+ if (contentLength &&
212
+ /^[0-9]+$/.test(contentLength) &&
213
+ Number(contentLength) > maximumBytes) {
214
+ void ((_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel().catch(() => undefined));
215
+ throw new InvalidApiResponseError('The API response exceeds its configured byte bound.');
216
+ }
217
+ if (!response.body)
218
+ return '';
219
+ const reader = response.body.getReader();
220
+ const decoder = new TextDecoder('utf-8', { fatal: true });
221
+ let bytes = 0;
222
+ let text = '';
223
+ try {
224
+ for (;;) {
225
+ const chunk = yield reader.read();
226
+ if (chunk.done)
227
+ break;
228
+ bytes += chunk.value.byteLength;
229
+ if (bytes > maximumBytes) {
230
+ void reader.cancel().catch(() => undefined);
231
+ throw new InvalidApiResponseError('The API response exceeds its configured byte bound.');
232
+ }
233
+ try {
234
+ text += decoder.decode(chunk.value, { stream: true });
235
+ }
236
+ catch (_b) {
237
+ void reader.cancel().catch(() => undefined);
238
+ throw new InvalidApiResponseError('The API response does not use valid UTF-8.');
239
+ }
240
+ }
241
+ try {
242
+ text += decoder.decode();
243
+ }
244
+ catch (_c) {
245
+ void reader.cancel().catch(() => undefined);
246
+ throw new InvalidApiResponseError('The API response does not use valid UTF-8.');
247
+ }
248
+ return text;
249
+ }
250
+ finally {
251
+ reader.releaseLock();
252
+ }
253
+ });
254
+ }
255
+ function safeResponseHeaders(headers) {
256
+ const safe = (name) => {
257
+ const value = headers.get(name);
258
+ return value && value.length <= 512 && !/[\r\n]/.test(value)
259
+ ? value
260
+ : undefined;
261
+ };
262
+ const correlationId = safe('x-correlation-id');
263
+ const etag = safe('etag');
264
+ const requestId = safe('x-request-id');
265
+ const retryAfter = safe('retry-after');
266
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, (correlationId ? { correlationId } : {})), (etag ? { etag } : {})), (requestId ? { requestId } : {})), (retryAfter ? { retryAfter } : {}));
267
+ }
268
+ function isRecord(value) {
269
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
270
+ }
271
+ function hasOnlyKeys(value, allowed) {
272
+ const names = new Set(allowed);
273
+ return Object.keys(value).every((name) => names.has(name));
274
+ }
275
+ function responseMetadata(value) {
276
+ if (value === undefined)
277
+ return { valid: true };
278
+ if (!isRecord(value) ||
279
+ !hasOnlyKeys(value, ['correlationId', 'requestId', 'stage'])) {
280
+ return { valid: false };
281
+ }
282
+ const meta = {};
283
+ for (const name of ['correlationId', 'requestId', 'stage']) {
284
+ const entry = value[name];
285
+ if (entry === undefined)
286
+ continue;
287
+ if (typeof entry !== 'string' ||
288
+ entry.length > 128 ||
289
+ !propagationPattern.test(entry)) {
290
+ return { valid: false };
291
+ }
292
+ meta[name] = entry;
293
+ }
294
+ return Object.keys(meta).length > 0 ? { meta, valid: true } : { valid: true };
295
+ }
296
+ function decodeResponse(operation, response, value) {
297
+ if (!isRecord(value) ||
298
+ typeof value['ok'] !== 'boolean' ||
299
+ !Number.isSafeInteger(value['status']) ||
300
+ value['status'] !== response.status) {
301
+ return invalidResponse('The API returned an invalid response envelope.', response);
302
+ }
303
+ const envelopeKeys = value['ok']
304
+ ? ['data', 'meta', 'ok', 'status']
305
+ : ['error', 'meta', 'ok', 'status'];
306
+ if (!hasOnlyKeys(value, envelopeKeys)) {
307
+ return invalidResponse('The API returned an invalid response envelope.', response);
308
+ }
309
+ const headers = safeResponseHeaders(response.headers);
310
+ const metadata = responseMetadata(value['meta']);
311
+ if (!metadata.valid) {
312
+ return invalidResponse('The API returned invalid response metadata.', response);
313
+ }
314
+ if (value['ok']) {
315
+ if (response.status !== operation.response.status ||
316
+ !Object.prototype.hasOwnProperty.call(value, 'data') ||
317
+ (operation.conditionalWrite !== undefined &&
318
+ (headers.etag === undefined ||
319
+ !strongEntityTagPattern.test(headers.etag)))) {
320
+ return invalidResponse('The API returned an undeclared successful response.', response);
321
+ }
322
+ try {
323
+ return Object.assign(Object.assign({ data: operation.response.body.parseResponse(value['data'], 'response.data'), headers, kind: 'success' }, (metadata.meta ? { meta: metadata.meta } : {})), { ok: true, status: response.status });
324
+ }
325
+ catch (_a) {
326
+ return invalidResponse('The API returned data outside the declared response contract.', response);
327
+ }
328
+ }
329
+ if (!isRecord(value['error']) ||
330
+ !hasOnlyKeys(value['error'], ['code', 'details', 'message', 'retryable'])) {
331
+ return invalidResponse('The API returned an invalid error response.', response);
332
+ }
333
+ const error = value['error'];
334
+ if (typeof error['code'] !== 'string' ||
335
+ typeof error['message'] !== 'string' ||
336
+ typeof error['retryable'] !== 'boolean') {
337
+ return invalidResponse('The API returned an invalid error shape.', response);
338
+ }
339
+ const problem = operation.problems.find(({ code }) => code === error['code']);
340
+ const frameworkError = {
341
+ internal_error: { retryable: false, status: 500 },
342
+ invalid_request: { retryable: false, status: 400 },
343
+ method_not_allowed: { retryable: false, status: 405 },
344
+ }[error['code']];
345
+ if ((!problem && !frameworkError) ||
346
+ (problem &&
347
+ (problem.status !== response.status ||
348
+ problem.retryable !== error['retryable'])) ||
349
+ (frameworkError &&
350
+ (frameworkError.status !== response.status ||
351
+ frameworkError.retryable !== error['retryable']))) {
352
+ return invalidResponse('The API returned an undeclared error response.', response);
353
+ }
354
+ if (error['message'].length > 256 ||
355
+ /[\r\n]/.test(error['message']) ||
356
+ (problem && error['message'] !== problem.message) ||
357
+ (error['code'] === 'internal_error' &&
358
+ error['message'] !== 'Internal server error')) {
359
+ return invalidResponse('The API returned an unsafe error message.', response);
360
+ }
361
+ let details;
362
+ if (error['details'] !== undefined) {
363
+ if (!(problem === null || problem === void 0 ? void 0 : problem.details)) {
364
+ return invalidResponse('The API returned undeclared error details.', response);
365
+ }
366
+ try {
367
+ details = problem.details.parseResponse(error['details'], 'response.error.details');
368
+ }
369
+ catch (_b) {
370
+ return invalidResponse('The API returned invalid error details.', response);
371
+ }
372
+ }
373
+ return Object.assign(Object.assign({ error: Object.assign(Object.assign(Object.assign({ code: error['code'] }, (details ? { details } : {})), { message: error['message'], retryable: error['retryable'] }), (problem ? { type: problem.type } : {})), headers, kind: 'api' }, (metadata.meta ? { meta: metadata.meta } : {})), { ok: false, status: response.status });
374
+ }
375
+ export function createApiClient(operationInput, options) {
376
+ var _a, _b, _c, _d, _e, _f;
377
+ const operation = defineApiOperation(operationInput);
378
+ const baseUrl = requireBaseUrl(options.baseUrl);
379
+ const insecureLocal = baseUrl.protocol === 'http:';
380
+ if (insecureLocal &&
381
+ (options.headers !== undefined ||
382
+ (options.credentials !== undefined && options.credentials !== 'omit'))) {
383
+ throw new ApiContractError('api-contract-invalid', 'Plain HTTP local development clients cannot use credentials or credential headers.');
384
+ }
385
+ const fetchImplementation = (_a = options.fetch) !== null && _a !== void 0 ? _a : globalThis.fetch;
386
+ if (typeof fetchImplementation !== 'function') {
387
+ throw new ApiContractError('api-contract-invalid', 'API client requires a Fetch-compatible implementation.');
388
+ }
389
+ const defaultTimeoutMs = (_b = options.timeoutMs) !== null && _b !== void 0 ? _b : 30000;
390
+ if (!Number.isSafeInteger(defaultTimeoutMs) ||
391
+ defaultTimeoutMs < 1 ||
392
+ defaultTimeoutMs > 5 * 60000) {
393
+ throw new ApiContractError('api-contract-invalid', 'API client timeout must be from 1ms through five minutes.');
394
+ }
395
+ const maxResponseBytes = (_c = options.maxResponseBytes) !== null && _c !== void 0 ? _c : DEFAULT_API_RESPONSE_MAX_BYTES;
396
+ if (!Number.isSafeInteger(maxResponseBytes) ||
397
+ maxResponseBytes < 1 ||
398
+ maxResponseBytes > MAX_API_RESPONSE_MAX_BYTES) {
399
+ throw new ApiContractError('api-contract-invalid', 'API client response bounds must be from 1 byte through ten MiB.');
400
+ }
401
+ const declaredRequestHeaderNames = new Set(Object.keys((_f = (_e = (_d = operation.request) === null || _d === void 0 ? void 0 : _d.headers) === null || _e === void 0 ? void 0 : _e.jsonSchema.properties) !== null && _f !== void 0 ? _f : {}).map((name) => name.toLowerCase()));
402
+ return Object.freeze({
403
+ operation,
404
+ invoke(input) {
405
+ return __awaiter(this, void 0, void 0, function* () {
406
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
407
+ let request;
408
+ try {
409
+ for (const location of ['body', 'headers', 'path', 'query']) {
410
+ if (!((_a = operation.request) === null || _a === void 0 ? void 0 : _a[location]) &&
411
+ input.request[location] !== undefined) {
412
+ throw new ApiContractError('api-request-invalid', `This operation does not declare request ${location}.`);
413
+ }
414
+ }
415
+ request = {
416
+ body: ((_b = operation.request) === null || _b === void 0 ? void 0 : _b.body)
417
+ ? operation.request.body.parse(input.request.body, 'request.body')
418
+ : undefined,
419
+ headers: ((_c = operation.request) === null || _c === void 0 ? void 0 : _c.headers)
420
+ ? operation.request.headers.parse(input.request.headers, 'request.headers')
421
+ : undefined,
422
+ path: ((_d = operation.request) === null || _d === void 0 ? void 0 : _d.path)
423
+ ? operation.request.path.parse(input.request.path, 'request.path')
424
+ : undefined,
425
+ query: ((_e = operation.request) === null || _e === void 0 ? void 0 : _e.query)
426
+ ? operation.request.query.parse(input.request.query, 'request.query')
427
+ : undefined,
428
+ };
429
+ }
430
+ catch (error) {
431
+ throw new ApiContractError('api-request-invalid', 'API client request does not satisfy the operation contract.', { cause: error });
432
+ }
433
+ if (input.idempotencyKey !== undefined) {
434
+ if (!operation.idempotency) {
435
+ throw new ApiContractError('api-request-invalid', 'This operation does not declare idempotency.');
436
+ }
437
+ if (input.idempotencyKey.length > operation.idempotency.maxKeyLength ||
438
+ !/^[A-Za-z0-9._:/-]+$/.test(input.idempotencyKey)) {
439
+ throw new ApiContractError('api-request-invalid', 'The idempotency key is invalid.');
440
+ }
441
+ }
442
+ if (((_f = operation.idempotency) === null || _f === void 0 ? void 0 : _f.required) &&
443
+ input.idempotencyKey === undefined) {
444
+ throw new ApiContractError('api-request-invalid', 'This operation requires an idempotency key.');
445
+ }
446
+ if (input.ifMatch !== undefined && !operation.conditionalWrite) {
447
+ throw new ApiContractError('api-request-invalid', 'This operation does not declare conditional writes.');
448
+ }
449
+ if (input.ifMatch !== undefined &&
450
+ (input.ifMatch.length > 512 ||
451
+ !/^"[\x21\x23-\x7e]*"$/.test(input.ifMatch))) {
452
+ throw new ApiContractError('api-request-invalid', 'The If-Match value is invalid.');
453
+ }
454
+ if (((_g = operation.conditionalWrite) === null || _g === void 0 ? void 0 : _g.required) && input.ifMatch === undefined) {
455
+ throw new ApiContractError('api-request-invalid', 'This operation requires an If-Match value.');
456
+ }
457
+ const timeoutMs = (_h = input.timeoutMs) !== null && _h !== void 0 ? _h : defaultTimeoutMs;
458
+ if (!Number.isSafeInteger(timeoutMs) ||
459
+ timeoutMs < 1 ||
460
+ timeoutMs > 5 * 60000) {
461
+ throw new ApiContractError('api-request-invalid', 'API invocation timeout must be from 1ms through five minutes.');
462
+ }
463
+ const controller = new AbortController();
464
+ const retryableTransport = ['DELETE', 'GET', 'PUT'].includes(operation.method) ||
465
+ Boolean(operation.idempotency && input.idempotencyKey);
466
+ let abortCause;
467
+ const abortWith = (cause) => {
468
+ if (abortCause)
469
+ return;
470
+ abortCause = cause;
471
+ controller.abort();
472
+ };
473
+ const timeout = setTimeout(() => {
474
+ abortWith('timeout');
475
+ }, timeoutMs);
476
+ const abort = () => abortWith('cancelled');
477
+ (_j = input.signal) === null || _j === void 0 ? void 0 : _j.addEventListener('abort', abort, { once: true });
478
+ if ((_k = input.signal) === null || _k === void 0 ? void 0 : _k.aborted)
479
+ abort();
480
+ try {
481
+ const declaredHeaders = request.headers
482
+ ? Object.fromEntries(Object.entries(requestRecord(request.headers, 'API request headers')).map(([name, value]) => [
483
+ name.toLowerCase(),
484
+ requestHeaderValue(value, `Header ${name}`),
485
+ ]))
486
+ : {};
487
+ const providedHeaders = options.headers
488
+ ? credentialHeaders(yield awaitWithAbort(options.headers, controller.signal))
489
+ : {};
490
+ if (Object.keys(providedHeaders).some((name) => declaredRequestHeaderNames.has(name))) {
491
+ throw new ApiContractError('api-request-invalid', 'API credential headers cannot replace an operation-declared request header.');
492
+ }
493
+ const headers = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, declaredHeaders), providedHeaders), propagationHeaders(input.context)), (((_l = operation.request) === null || _l === void 0 ? void 0 : _l.body)
494
+ ? { 'content-type': 'application/json' }
495
+ : {})), (input.idempotencyKey !== undefined
496
+ ? { 'idempotency-key': input.idempotencyKey }
497
+ : {})), (input.ifMatch !== undefined ? { 'if-match': input.ifMatch } : {}));
498
+ const serializedBody = ((_m = operation.request) === null || _m === void 0 ? void 0 : _m.body)
499
+ ? JSON.stringify(request.body)
500
+ : undefined;
501
+ if (serializedBody !== undefined &&
502
+ new TextEncoder().encode(serializedBody).byteLength >
503
+ ((_p = (_o = operation.request) === null || _o === void 0 ? void 0 : _o.maxBodyBytes) !== null && _p !== void 0 ? _p : 256 * 1024)) {
504
+ throw new ApiContractError('api-request-invalid', 'The API request body exceeds its declared bound.');
505
+ }
506
+ const response = yield fetchImplementation(buildUrl(baseUrl, operation, request), Object.assign(Object.assign({}, (serializedBody === undefined ? {} : { body: serializedBody })), { credentials: (_q = options.credentials) !== null && _q !== void 0 ? _q : (insecureLocal ? 'omit' : undefined), headers, method: operation.method, redirect: 'error', signal: controller.signal }));
507
+ const mediaType = (_s = (_r = response.headers
508
+ .get('content-type')) === null || _r === void 0 ? void 0 : _r.split(';', 1)[0]) === null || _s === void 0 ? void 0 : _s.trim().toLowerCase();
509
+ if (mediaType !== 'application/json') {
510
+ void ((_t = response.body) === null || _t === void 0 ? void 0 : _t.cancel().catch(() => undefined));
511
+ return invalidResponse('The API response does not use application/json.', response);
512
+ }
513
+ let responseText;
514
+ try {
515
+ responseText = yield boundedResponseText(response, maxResponseBytes);
516
+ }
517
+ catch (error) {
518
+ if (error instanceof InvalidApiResponseError) {
519
+ return invalidResponse(error.message, response);
520
+ }
521
+ throw error;
522
+ }
523
+ let value;
524
+ try {
525
+ value = JSON.parse(responseText);
526
+ }
527
+ catch (_v) {
528
+ return invalidResponse('The API response is not valid JSON.', response);
529
+ }
530
+ return decodeResponse(operation, response, value);
531
+ }
532
+ catch (error) {
533
+ if (error instanceof ApiContractError)
534
+ throw error;
535
+ if (controller.signal.aborted) {
536
+ return transportFailure(abortCause === 'timeout' ? 'request_timeout' : 'request_cancelled', retryableTransport);
537
+ }
538
+ return transportFailure('request_failed', retryableTransport);
539
+ }
540
+ finally {
541
+ clearTimeout(timeout);
542
+ (_u = input.signal) === null || _u === void 0 ? void 0 : _u.removeEventListener('abort', abort);
543
+ }
544
+ });
545
+ },
546
+ });
547
+ }
548
+ /**
549
+ * Builds a deterministic operation-ID keyed client directly from the
550
+ * authoritative contract. Adding an operation to the contract therefore adds
551
+ * it to the generated/client surface without another hand-maintained topology
552
+ * list.
553
+ */
554
+ export function createApiContractClient(contractInput, options) {
555
+ const contract = defineApiContract(contractInput);
556
+ return Object.freeze(Object.fromEntries(contract.operations.map((operation) => [
557
+ operation.operationId,
558
+ createApiClient(operation, options),
559
+ ])));
560
+ }
561
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/api-contract/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type ApiContractFailureClassification = 'api-authentication-required' | 'api-client-response-invalid' | 'api-client-transport-failed' | 'api-contract-invalid' | 'api-operation-identity-invalid' | 'api-request-invalid' | 'api-response-invalid' | 'api-schema-validation-failed';
2
+ export declare class ApiContractError extends Error {
3
+ readonly classification: ApiContractFailureClassification;
4
+ constructor(classification: ApiContractFailureClassification, message: string, options?: {
5
+ cause?: unknown;
6
+ });
7
+ }
@@ -0,0 +1,11 @@
1
+ export class ApiContractError extends Error {
2
+ constructor(classification, message, options = {}) {
3
+ super(message);
4
+ this.classification = classification;
5
+ this.name = 'ApiContractError';
6
+ if (options.cause !== undefined) {
7
+ this.cause = options.cause;
8
+ }
9
+ }
10
+ }
11
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/api-contract/errors.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACW,cAAgD,EACzD,OAAe,EACf,UAA+B,EAAE;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,mBAAc,GAAd,cAAc,CAAkC;QAKzD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAoC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export * from './artifacts.js';
2
+ export * from './errors.js';
3
+ export * from './operation.js';
4
+ export * from './schema.js';
5
+ export declare const apiContractRuntime: {
6
+ readonly exportPath: "@empire-builder-kit/runtime/api-contract";
7
+ readonly packageName: "@empire-builder-kit/runtime";
8
+ readonly schemaVersion: 1;
9
+ };
@@ -0,0 +1,10 @@
1
+ export * from './artifacts.js';
2
+ export * from './errors.js';
3
+ export * from './operation.js';
4
+ export * from './schema.js';
5
+ export const apiContractRuntime = {
6
+ exportPath: '@empire-builder-kit/runtime/api-contract',
7
+ packageName: '@empire-builder-kit/runtime',
8
+ schemaVersion: 1,
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/runtime/src/api-contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,EAAE,0CAA0C;IACtD,WAAW,EAAE,6BAA6B;IAC1C,aAAa,EAAE,CAAC;CACR,CAAC"}