alchemy 0.50.0 → 0.51.1

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 (54) hide show
  1. package/lib/apply.js +10 -9
  2. package/lib/apply.js.map +1 -1
  3. package/lib/aws/control/types.d.ts +4 -4
  4. package/lib/cloudflare/api-gateway-operation.d.ts +141 -0
  5. package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -0
  6. package/lib/cloudflare/api-gateway-operation.js +153 -0
  7. package/lib/cloudflare/api-gateway-operation.js.map +1 -0
  8. package/lib/cloudflare/api-mitigation.d.ts +19 -0
  9. package/lib/cloudflare/api-mitigation.d.ts.map +1 -0
  10. package/lib/cloudflare/api-mitigation.js +1 -0
  11. package/lib/cloudflare/api-mitigation.js.map +1 -0
  12. package/lib/cloudflare/api-schema.d.ts +137 -0
  13. package/lib/cloudflare/api-schema.d.ts.map +1 -0
  14. package/lib/cloudflare/api-schema.js +197 -0
  15. package/lib/cloudflare/api-schema.js.map +1 -0
  16. package/lib/cloudflare/api-shield.d.ts +366 -0
  17. package/lib/cloudflare/api-shield.d.ts.map +1 -0
  18. package/lib/cloudflare/api-shield.js +427 -0
  19. package/lib/cloudflare/api-shield.js.map +1 -0
  20. package/lib/cloudflare/certificate-pack.d.ts +1 -1
  21. package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
  22. package/lib/cloudflare/certificate-pack.js +18 -88
  23. package/lib/cloudflare/certificate-pack.js.map +1 -1
  24. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  25. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  26. package/lib/cloudflare/index.d.ts +3 -0
  27. package/lib/cloudflare/index.d.ts.map +1 -1
  28. package/lib/cloudflare/index.js +3 -0
  29. package/lib/cloudflare/index.js.map +1 -1
  30. package/lib/cloudflare/zone.d.ts +12 -0
  31. package/lib/cloudflare/zone.d.ts.map +1 -1
  32. package/lib/cloudflare/zone.js +47 -0
  33. package/lib/cloudflare/zone.js.map +1 -1
  34. package/lib/destroy.d.ts.map +1 -1
  35. package/lib/destroy.js +26 -18
  36. package/lib/destroy.js.map +1 -1
  37. package/lib/scope.d.ts.map +1 -1
  38. package/lib/scope.js +2 -2
  39. package/lib/scope.js.map +1 -1
  40. package/package.json +2 -1
  41. package/src/apply.ts +11 -12
  42. package/src/aws/control/types.ts +4 -4
  43. package/src/cloudflare/api-gateway-operation.ts +340 -0
  44. package/src/cloudflare/api-mitigation.ts +22 -0
  45. package/src/cloudflare/api-schema.ts +364 -0
  46. package/src/cloudflare/api-shield.ts +676 -0
  47. package/src/cloudflare/certificate-pack.ts +28 -152
  48. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  49. package/src/cloudflare/index.ts +3 -0
  50. package/src/cloudflare/zone.ts +75 -0
  51. package/src/destroy.ts +26 -20
  52. package/src/scope.ts +3 -3
  53. package/templates/tanstack-start/package.json +3 -3
  54. package/templates/tanstack-start/vite.config.ts +2 -6
@@ -0,0 +1,427 @@
1
+ import fs from "node:fs/promises";
2
+ import * as yaml from "yaml";
3
+ import { Resource } from "../resource.js";
4
+ import { handleApiError } from "./api-error.js";
5
+ import { APIGatewayOperation } from "./api-gateway-operation.js";
6
+ import { APISchema } from "./api-schema.js";
7
+ import { createCloudflareApi, } from "./api.js";
8
+ import { findZoneForHostname } from "./zone.js";
9
+ /**
10
+ * Cloudflare Schema Validation protects your API endpoints by validating incoming requests
11
+ * against an OpenAPI v3 schema. It can log or block requests that don't match your schema,
12
+ * helping prevent malformed requests and potential security issues.
13
+ *
14
+ * @example
15
+ * ## Basic schema validation with inline YAML
16
+ *
17
+ * Enable schema validation with a simple OpenAPI schema as YAML string
18
+ *
19
+ * const apiSchema = await APISchema("my-schema", {
20
+ * zone: myZone,
21
+ * schema: `
22
+ * openapi: 3.0.0
23
+ * info:
24
+ * title: My API
25
+ * version: 1.0.0
26
+ * servers:
27
+ * - url: https://api.example.com
28
+ * paths:
29
+ * /users:
30
+ * get:
31
+ * operationId: getUsers
32
+ * responses:
33
+ * '200':
34
+ * description: Success
35
+ * /users/{id}:
36
+ * get:
37
+ * operationId: getUser
38
+ * parameters:
39
+ * - name: id
40
+ * in: path
41
+ * required: true
42
+ * schema:
43
+ * type: string
44
+ * `,
45
+ * });
46
+ *
47
+ * const shield = await APIShield("api-validation", {
48
+ * zone: myZone,
49
+ * schema: apiSchema,
50
+ * defaultAction: "none"
51
+ * });
52
+ *
53
+ * @example
54
+ * ## API Shield with typed OpenAPI object
55
+ *
56
+ * Use strongly-typed OpenAPI v3 objects for better IDE support
57
+ *
58
+ * import type { OpenAPIV3 } from "openapi-types";
59
+ *
60
+ * const apiSchema: OpenAPIV3.Document = {
61
+ * openapi: "3.0.0",
62
+ * info: {
63
+ * title: "My API",
64
+ * version: "1.0.0",
65
+ * },
66
+ * servers: [
67
+ * { url: "https://api.example.com" }
68
+ * ],
69
+ * paths: {
70
+ * "/users": {
71
+ * get: {
72
+ * operationId: "getUsers",
73
+ * responses: {
74
+ * "200": {
75
+ * description: "Success",
76
+ * content: {
77
+ * "application/json": {
78
+ * schema: {
79
+ * type: "array",
80
+ * items: {
81
+ * type: "object",
82
+ * properties: {
83
+ * id: { type: "string" },
84
+ * name: { type: "string" }
85
+ * }
86
+ * }
87
+ * }
88
+ * }
89
+ * }
90
+ * }
91
+ * }
92
+ * }
93
+ * }
94
+ * }
95
+ * };
96
+ *
97
+ * const schema = await APISchema("my-schema", {
98
+ * zone: myZone,
99
+ * schema: apiSchema,
100
+ * });
101
+ *
102
+ * const shield = await APIShield("api-validation", {
103
+ * zone: myZone,
104
+ * schema: schema,
105
+ * defaultAction: "none"
106
+ * });
107
+ *
108
+ * @example
109
+ * ## API Shield with file
110
+ *
111
+ * Load schema from an external file with custom settings
112
+ *
113
+ * const schema = await APISchema("my-schema", {
114
+ * zone: "example.com",
115
+ * schema: new URL("file:///path/to/openapi.yaml"),
116
+ * name: "production-api-v2",
117
+ * });
118
+ *
119
+ * const shield = await APIShield("api-validation", {
120
+ * zone: "example.com",
121
+ * schema: schema,
122
+ * defaultAction: "none",
123
+ * mitigations: {
124
+ * "/users": {
125
+ * get: "none", // No mitigation for read operations
126
+ * post: "log", // Log violations for writes (requires paid plan)
127
+ * },
128
+ * "/users/{id}": {
129
+ * delete: "block" // Block destructive operations (requires paid plan)
130
+ * }
131
+ * },
132
+ * unknownOperationAction: "none"
133
+ * });
134
+ *
135
+ * @example
136
+ * ## Monitor API traffic without impact
137
+ *
138
+ * Use validation in monitoring mode to understand traffic patterns
139
+ *
140
+ * const schema = await APISchema("my-schema", {
141
+ * zone: myZone,
142
+ * schema: new URL("file:///path/to/api-schema.json"),
143
+ * });
144
+ *
145
+ * const monitoring = await APIShield("api-monitoring", {
146
+ * zone: myZone,
147
+ * schema: schema,
148
+ * defaultAction: "none"
149
+ * });
150
+ *
151
+ * @example
152
+ * ## Log schema violations
153
+ *
154
+ * Track non-compliant requests without blocking (requires paid plan)
155
+ *
156
+ * const schema = await APISchema("my-schema", {
157
+ * zone: myZone,
158
+ * schema: new URL("file:///path/to/api-schema.json"),
159
+ * });
160
+ *
161
+ * const withLogging = await APIShield("api-logging", {
162
+ * zone: myZone,
163
+ * schema: schema,
164
+ * defaultAction: "log"
165
+ * });
166
+ *
167
+ * @example
168
+ * ## Protect critical endpoints with blanket mitigations
169
+ *
170
+ * Apply mitigations to entire paths or specific methods (requires paid plan)
171
+ *
172
+ * const schema = await APISchema("my-schema", {
173
+ * zone: myZone,
174
+ * schema: new URL("file:///path/to/api-schema.json"),
175
+ * });
176
+ *
177
+ * const protection = await APIShield("api-protection", {
178
+ * zone: myZone,
179
+ * schema: schema,
180
+ * defaultAction: "log",
181
+ * mitigations: {
182
+ * "/admin": "block", // Block all methods on admin endpoints
183
+ * "/payments": {
184
+ * post: "block", // Block payment creation
185
+ * put: "block" // Block payment updates
186
+ * },
187
+ * "/users/{id}": {
188
+ * delete: "block" // Block user deletion
189
+ * },
190
+ * "/public": "none", // Allow all methods on public endpoints
191
+ * "/products": "none" // Allow all methods on products
192
+ * }
193
+ * });
194
+ *
195
+ * @see https://developers.cloudflare.com/api-shield/security/schema-validation/
196
+ */
197
+ export async function APIShield(id, props) {
198
+ return (await _APIShield(id, {
199
+ ...props,
200
+ // resolve file URLs to documents prior to passing input to the resource
201
+ // so that updates to the schema trigger changes to the resource
202
+ schema: await loadSchemaContent(props.schema),
203
+ }));
204
+ }
205
+ const _APIShield = Resource("cloudflare::APIShield", {
206
+ // delete the api gateway operations in parallel
207
+ destroyStrategy: "parallel",
208
+ }, async function (id, props) {
209
+ const api = await createCloudflareApi(props);
210
+ // Resolve zone ID and name
211
+ const zoneId = typeof props.zone === "string"
212
+ ? (await findZoneForHostname(api, props.zone)).zoneId
213
+ : props.zone.id;
214
+ if (this.phase === "delete") {
215
+ // Reset settings to default
216
+ await updateGlobalSettings(api, zoneId, {
217
+ validation_default_mitigation_action: "none",
218
+ });
219
+ return this.destroy();
220
+ }
221
+ // Update global settings
222
+ const defaultAction = props.defaultMitigation || "none";
223
+ await updateGlobalSettings(api, zoneId, {
224
+ validation_default_mitigation_action: defaultAction,
225
+ validation_override_mitigation_action: props.unknownOperationMitigation,
226
+ });
227
+ const schema = await APISchema("schema", {
228
+ schema: props.schema,
229
+ zone: props.zone,
230
+ name: props.name ?? id,
231
+ enabled: props.enabled,
232
+ accountId: props.accountId,
233
+ apiKey: props.apiKey,
234
+ apiToken: props.apiToken,
235
+ baseUrl: props.baseUrl,
236
+ email: props.email,
237
+ });
238
+ return this({
239
+ zoneId,
240
+ schema,
241
+ operations: await Promise.all(parseSchemaOperations(schema.schema).map(async (parsedOp) => {
242
+ let operationAction = defaultAction;
243
+ const method = parsedOp.method.toLowerCase();
244
+ if (props.mitigations) {
245
+ const pathActions = props.mitigations[parsedOp.endpoint];
246
+ if (typeof pathActions === "string") {
247
+ // Blanket action for all methods on this path
248
+ operationAction = pathActions;
249
+ }
250
+ else if (pathActions && typeof pathActions === "object") {
251
+ // Per-method configuration
252
+ const methodAction = pathActions[method];
253
+ if (methodAction) {
254
+ operationAction = methodAction;
255
+ }
256
+ }
257
+ }
258
+ return APIGatewayOperation(
259
+ // Create a deterministic ID for the operation
260
+ `${id}-${method}-${parsedOp.endpoint.replace(/[^a-z0-9]/gi, "-")}`, {
261
+ zone: zoneId,
262
+ endpoint: parsedOp.endpoint,
263
+ host: parsedOp.host,
264
+ method: parsedOp.method,
265
+ mitigation: operationAction,
266
+ });
267
+ })),
268
+ });
269
+ });
270
+ // Helper functions for API calls
271
+ async function getGlobalSettings(api, zoneId) {
272
+ const response = await api.get(`/zones/${zoneId}/api_gateway/settings/schema_validation`);
273
+ if (!response.ok) {
274
+ await handleApiError(response, "getting", "global settings");
275
+ }
276
+ const data = (await response.json());
277
+ return data.result;
278
+ }
279
+ async function updateGlobalSettings(api, zoneId, params) {
280
+ const response = await api.put(`/zones/${zoneId}/api_gateway/settings/schema_validation`, params);
281
+ if (!response.ok) {
282
+ await handleApiError(response, "updating", "global settings");
283
+ }
284
+ }
285
+ /**
286
+ * Get global schema validation settings for a zone
287
+ */
288
+ export async function getGlobalSettingsForZone(api, zoneId) {
289
+ return getGlobalSettings(api, zoneId);
290
+ }
291
+ /**
292
+ * Extract operations from an OpenAPI schema
293
+ */
294
+ export function parseSchemaOperations(schema) {
295
+ const operations = [];
296
+ if (!schema?.paths) {
297
+ return operations;
298
+ }
299
+ // Determine the host from servers
300
+ const defaultHost = extractHostFromSchema(schema);
301
+ // Extract operations from each path
302
+ for (const [path, pathItem] of Object.entries(schema.paths)) {
303
+ if (!pathItem || typeof pathItem !== "object")
304
+ continue;
305
+ // Check each HTTP method
306
+ for (const method of [
307
+ "get",
308
+ "post",
309
+ "put",
310
+ "patch",
311
+ "delete",
312
+ "head",
313
+ "options",
314
+ "trace",
315
+ ]) {
316
+ const operation = pathItem[method];
317
+ if (operation &&
318
+ typeof operation === "object" &&
319
+ !Array.isArray(operation)) {
320
+ // Determine host for this operation (operation-level servers override global)
321
+ const operationHost = operation.servers?.[0]?.url
322
+ ? extractHostFromUrl(operation.servers[0].url)
323
+ : defaultHost;
324
+ operations.push({
325
+ method: method.toUpperCase(),
326
+ endpoint: path,
327
+ operationId: operation.operationId,
328
+ host: operationHost,
329
+ });
330
+ }
331
+ }
332
+ }
333
+ return operations;
334
+ }
335
+ /**
336
+ * Extract host from OpenAPI schema servers
337
+ */
338
+ function extractHostFromSchema(schema) {
339
+ if (schema.servers && schema.servers.length > 0) {
340
+ return extractHostFromUrl(schema.servers[0].url);
341
+ }
342
+ // Fallback to a default host
343
+ return "api.example.com";
344
+ }
345
+ /**
346
+ * Extract hostname from a URL
347
+ */
348
+ function extractHostFromUrl(url) {
349
+ try {
350
+ const urlObj = new URL(url);
351
+ return urlObj.hostname;
352
+ }
353
+ catch {
354
+ // If URL parsing fails, return the URL as-is (might be relative)
355
+ return url;
356
+ }
357
+ }
358
+ /**
359
+ * Helper function to load schema content from various sources
360
+ */
361
+ async function loadSchemaContent(schema) {
362
+ // Handle string content (YAML/JSON)
363
+ try {
364
+ if (typeof schema === "string") {
365
+ if (schema.startsWith("http://") || schema.startsWith("https://")) {
366
+ return loadSchemaContent(new URL(schema));
367
+ }
368
+ else if (schema.includes("\n")) {
369
+ // json or YAML
370
+ return tryParse(schema);
371
+ }
372
+ else {
373
+ try {
374
+ return tryParse(await fs.readFile(schema, "utf-8"));
375
+ }
376
+ catch {
377
+ // maybe minified JSON
378
+ return tryParse(schema);
379
+ }
380
+ }
381
+ }
382
+ else if (schema instanceof URL) {
383
+ return yaml.parse(await fetchUrl(schema));
384
+ }
385
+ else if (typeof schema === "object") {
386
+ return schema;
387
+ }
388
+ else {
389
+ // should be unreachable
390
+ throw SchemaError(new Error(`Unsupported schema type: ${typeof schema}`));
391
+ }
392
+ }
393
+ catch (err) {
394
+ throw SchemaError(err);
395
+ }
396
+ }
397
+ const SchemaError = (cause) => new Error(`Invalid OpenAPI schema. Please provide a:
398
+ 1. a string containing OpenAPI v3.0 schema (in YAML or JSON format)
399
+ 2. a string path to a file containing OpenAPI v3.0 schema (in YAML or JSON format)
400
+ 3. a file://, http:// or https:// URL pointing to an OpenAPI v3.0 schema (in YAML or JSON format)
401
+ 4. a literal OpenAPI v3.0 schema object`, { cause });
402
+ function tryParse(schema) {
403
+ try {
404
+ return yaml.parse(schema);
405
+ }
406
+ catch {
407
+ return JSON.parse(schema);
408
+ }
409
+ }
410
+ async function fetchUrl(url) {
411
+ if (url.protocol === "file:") {
412
+ // Read from local filesystem for file:// URLs
413
+ return await fs.readFile(url.pathname, "utf-8");
414
+ }
415
+ else if (url.protocol === "http:" || url.protocol === "https:") {
416
+ // Fetch from remote for http/https URLs
417
+ const response = await fetch(url.toString());
418
+ if (!response.ok) {
419
+ throw new Error(`Failed to fetch schema from URL: ${response.statusText}`);
420
+ }
421
+ return await response.text();
422
+ }
423
+ else {
424
+ throw new Error(`Unsupported URL protocol: ${url.protocol}. Only http:, https:, and file: are supported.`);
425
+ }
426
+ }
427
+ //# sourceMappingURL=api-shield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-shield.js","sourceRoot":"","sources":["../../src/cloudflare/api-shield.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import { Resource } from "../resource.ts";
3
3
  import { type CloudflareApi, type CloudflareApiOptions } from "./api.ts";
4
- import type { Zone } from "./zone.ts";
4
+ import { type Zone } from "./zone.ts";
5
5
  /**
6
6
  * Certificate Authority options for Advanced Certificate Packs
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"certificate-pack.d.ts","sourceRoot":"","sources":["../../src/cloudflare/certificate-pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,oBAAoB,GACpB,SAAS,GACT,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,SAAS,GACT,QAAQ,GACR,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,cAAc,GACd,UAAU,GACV,eAAe,GACf,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;;;;;;;OAQG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;;;OAOG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;;;;OAKG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eACf,SAAQ,QAAQ,CAAC,6BAA6B,CAAC;IAC/C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,eAAO,MAAM,eAAe,yFAGlB,OAAO,CAAC,eAAe,CAAC,OACzB,MAAM,SACJ,oBAAoB,KAC1B,OAAO,CAAC,eAAe,CAAC,CAoQ5B,CAAC;AAiBF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,MAAuB,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAuChC"}
1
+ {"version":3,"file":"certificate-pack.d.ts","sourceRoot":"","sources":["../../src/cloudflare/certificate-pack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAuB,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,oBAAoB,GACpB,SAAS,GACT,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,GACpB,SAAS,GACT,QAAQ,GACR,wBAAwB,GACxB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,cAAc,GACd,UAAU,GACV,eAAe,GACf,oBAAoB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;;;;;;;OAQG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;;;OAOG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;;;;OAKG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eACf,SAAQ,QAAQ,CAAC,6BAA6B,CAAC;IAC/C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,eAAO,MAAM,eAAe,yFAGlB,OAAO,CAAC,eAAe,CAAC,OACzB,MAAM,SACJ,oBAAoB,KAC1B,OAAO,CAAC,eAAe,CAAC,CAqL5B,CAAC;AAeF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,MAAuB,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAuChC"}
@@ -2,6 +2,7 @@ import { Resource } from "../resource.js";
2
2
  import { logger } from "../util/logger.js";
3
3
  import { handleApiError } from "./api-error.js";
4
4
  import { createCloudflareApi, } from "./api.js";
5
+ import { findZoneForHostname } from "./zone.js";
5
6
  /**
6
7
  * Creates and manages Cloudflare Advanced Certificate Packs.
7
8
  *
@@ -108,7 +109,12 @@ export const CertificatePack = Resource("cloudflare::CertificatePack", async fun
108
109
  if (this.phase === "delete") {
109
110
  if (this.output?.id && props.delete !== false) {
110
111
  const deleteResponse = await api.delete(`/zones/${zoneId}/ssl/certificate_packs/${this.output.id}`);
111
- if (!deleteResponse.ok && deleteResponse.status !== 404) {
112
+ const deleteResponseJson = (await deleteResponse.json());
113
+ const isCurrentlyDeleting = deleteResponse.status === 400 &&
114
+ deleteResponseJson.errors[0].code === 1406;
115
+ if (!deleteResponse.ok &&
116
+ deleteResponse.status !== 404 &&
117
+ !isCurrentlyDeleting) {
112
118
  await handleApiError(deleteResponse, "delete", "certificate pack", this.output.id);
113
119
  }
114
120
  }
@@ -118,53 +124,7 @@ export const CertificatePack = Resource("cloudflare::CertificatePack", async fun
118
124
  return this.destroy();
119
125
  }
120
126
  if (this.phase === "update" && this.output?.id) {
121
- // Validate immutable properties
122
- const currentPack = this.output;
123
- if (props.certificateAuthority !== currentPack.certificateAuthority) {
124
- throw new Error(`Cannot change certificateAuthority from '${currentPack.certificateAuthority}' to '${props.certificateAuthority}'. Certificate Authority is immutable after creation. You must delete and recreate the certificate pack.`);
125
- }
126
- if (JSON.stringify(props.hosts.sort()) !==
127
- JSON.stringify(currentPack.hosts.sort())) {
128
- throw new Error(`Cannot change hosts from [${currentPack.hosts.join(", ")}] to [${props.hosts.join(", ")}]. Hosts are immutable after creation. You must delete and recreate the certificate pack.`);
129
- }
130
- if (props.validationMethod !== currentPack.validationMethod) {
131
- throw new Error(`Cannot change validationMethod from '${currentPack.validationMethod}' to '${props.validationMethod}'. Validation method is immutable after creation. You must delete and recreate the certificate pack.`);
132
- }
133
- if (props.validityDays !== currentPack.validityDays) {
134
- throw new Error(`Cannot change validityDays from ${currentPack.validityDays} to ${props.validityDays}. Validity period is immutable after creation. You must delete and recreate the certificate pack.`);
135
- }
136
- const type = props.type || "advanced";
137
- if (type !== currentPack.type) {
138
- throw new Error(`Cannot change type from '${currentPack.type}' to '${type}'. Type is immutable after creation. You must delete and recreate the certificate pack.`);
139
- }
140
- // Only cloudflareBranding can be updated
141
- if (props.cloudflareBranding !== currentPack.cloudflareBranding) {
142
- logger.log(`Updating certificate pack cloudflare branding from ${currentPack.cloudflareBranding} to ${props.cloudflareBranding}`);
143
- const updateResponse = await api.patch(`/zones/${zoneId}/ssl/certificate_packs/${this.output.id}`, {
144
- cloudflare_branding: props.cloudflareBranding || false,
145
- });
146
- if (!updateResponse.ok) {
147
- await handleApiError(updateResponse, "update", "certificate pack", this.output.id);
148
- }
149
- }
150
- // Get updated certificate pack details
151
- const response = await api.get(`/zones/${zoneId}/ssl/certificate_packs/${this.output.id}`);
152
- if (!response.ok) {
153
- await handleApiError(response, "get", "certificate pack", this.output.id);
154
- }
155
- const updatedPack = (await response.json()).result;
156
- return this({
157
- id: updatedPack.id,
158
- certificateAuthority: updatedPack.certificate_authority,
159
- cloudflareBranding: updatedPack.cloudflare_branding,
160
- hosts: updatedPack.hosts,
161
- status: updatedPack.status,
162
- type: updatedPack.type,
163
- validationMethod: updatedPack.validation_method,
164
- validityDays: updatedPack.validity_days,
165
- zoneId: updatedPack.zone_id,
166
- zoneName: zoneName,
167
- });
127
+ this.replace();
168
128
  }
169
129
  // Create new certificate pack
170
130
  if (props.hosts.length === 0) {
@@ -186,13 +146,13 @@ export const CertificatePack = Resource("cloudflare::CertificatePack", async fun
186
146
  return this({
187
147
  id: existingPack.id,
188
148
  certificateAuthority: existingPack.certificate_authority,
189
- cloudflareBranding: existingPack.cloudflare_branding,
149
+ cloudflareBranding: props.cloudflareBranding ?? false,
190
150
  hosts: existingPack.hosts,
191
151
  status: existingPack.status,
192
152
  type: existingPack.type,
193
153
  validationMethod: existingPack.validation_method,
194
154
  validityDays: existingPack.validity_days,
195
- zoneId: existingPack.zone_id,
155
+ zoneId,
196
156
  zoneName: zoneName,
197
157
  });
198
158
  }
@@ -222,13 +182,13 @@ export const CertificatePack = Resource("cloudflare::CertificatePack", async fun
222
182
  return this({
223
183
  id: createdPack.id,
224
184
  certificateAuthority: createdPack.certificate_authority,
225
- cloudflareBranding: createdPack.cloudflare_branding,
185
+ cloudflareBranding: props.cloudflareBranding ?? false,
226
186
  hosts: createdPack.hosts,
227
187
  status: createdPack.status,
228
188
  type: createdPack.type,
229
189
  validationMethod: createdPack.validation_method,
230
190
  validityDays: createdPack.validity_days,
231
- zoneId: createdPack.zone_id,
191
+ zoneId,
232
192
  zoneName: zoneName,
233
193
  });
234
194
  });
@@ -275,41 +235,6 @@ export async function waitForCertificatePackActive(api, zoneId, certificatePackI
275
235
  }
276
236
  throw new Error(`Certificate pack did not become active within ${timeoutMs / 1000 / 60} minutes`);
277
237
  }
278
- /**
279
- * Helper function to find zone ID from a hostname
280
- * Searches for the zone that matches the hostname or its parent domains
281
- *
282
- * @param api CloudflareApi instance
283
- * @param hostname The hostname to find the zone for
284
- * @returns Promise resolving to the zone ID and zone name
285
- */
286
- async function findZoneForHostname(api, hostname) {
287
- // Remove wildcard prefix if present
288
- const cleanHostname = hostname.replace(/^\*\./, "");
289
- // Get all zones and find the best match
290
- const response = await api.get("/zones");
291
- if (!response.ok) {
292
- throw new Error(`Failed to list zones: ${response.statusText}`);
293
- }
294
- const zonesData = (await response.json());
295
- // Find the zone that best matches the hostname
296
- // We look for the longest matching zone name (most specific)
297
- let bestMatch = null;
298
- let longestMatch = 0;
299
- for (const zone of zonesData.result) {
300
- if (cleanHostname === zone.name ||
301
- cleanHostname.endsWith(`.${zone.name}`)) {
302
- if (zone.name.length > longestMatch) {
303
- longestMatch = zone.name.length;
304
- bestMatch = { zoneId: zone.id, zoneName: zone.name };
305
- }
306
- }
307
- }
308
- if (!bestMatch) {
309
- throw new Error(`Could not find zone for hostname '${hostname}'. Available zones: ${zonesData.result.map((z) => z.name).join(", ")}`);
310
- }
311
- return bestMatch;
312
- }
313
238
  /**
314
239
  * Helper function to find existing certificate packs that match the given configuration
315
240
  * Used to adopt existing certificates instead of creating duplicates
@@ -320,7 +245,7 @@ async function findZoneForHostname(api, hostname) {
320
245
  * @returns Promise resolving to matching certificate pack or null if none found
321
246
  */
322
247
  async function findMatchingCertificatePack(api, zoneId, props) {
323
- const response = await api.get(`/zones/${zoneId}/ssl/certificate_packs`);
248
+ const response = await api.get(`/zones/${zoneId}/ssl/certificate_packs?status=all`);
324
249
  if (!response.ok) {
325
250
  throw new Error(`Failed to list certificate packs: ${response.statusText}`);
326
251
  }
@@ -340,6 +265,11 @@ async function findMatchingCertificatePack(api, zoneId, props) {
340
265
  const packHosts = new Set(pack.hosts);
341
266
  const allHostsCovered = props.hosts.every((host) => packHosts.has(host));
342
267
  if (allHostsCovered) {
268
+ // If Cloudflare branding is enabled, ensure that the cert pack is cloudflare branded`
269
+ if (props.cloudflareBranding &&
270
+ !pack.hosts.some((host) => host.endsWith("sni.cloudflaressl.com"))) {
271
+ continue;
272
+ }
343
273
  logger.log(`Found existing certificate pack ${pack.id} that covers all requested hosts`);
344
274
  return pack;
345
275
  }
@@ -1 +1 @@
1
- {"version":3,"file":"certificate-pack.js","sourceRoot":"","sources":["../../src/cloudflare/certificate-pack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,mBAAmB,GAGpB,MAAM,UAAU,CAAC;AA8KlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CACrC,6BAA6B,EAC7B,KAAK,WAEH,GAAW,EACX,KAA2B;IAE3B,gEAAgE;IAChE,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAE7C,gCAAgC;IAChC,IAAI,MAAc,CAAC;IACnB,IAAI,QAAgB,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,yBAAyB;QACzB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;YACpB,0DAA0D;YAC1D,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;gBACvD,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAE1C,CAAC;oBACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,MAAM,CAAC,CAAC,iBAAiB;gBACtC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,MAAM,CAAC,CAAC,iBAAiB;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzB,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,uBAAuB,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC9C,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,CACrC,UAAU,MAAM,0BAA0B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAC3D,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxD,MAAM,cAAc,CAClB,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,IAAI,CAAC,MAAM,CAAC,EAAE,CACf,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/C,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAEhC,IAAI,KAAK,CAAC,oBAAoB,KAAK,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,4CAA4C,WAAW,CAAC,oBAAoB,SAAS,KAAK,CAAC,oBAAoB,0GAA0G,CAC1N,CAAC;QACJ,CAAC;QAED,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EACxC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,6BAA6B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2FAA2F,CACpL,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,WAAW,CAAC,gBAAgB,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,wCAAwC,WAAW,CAAC,gBAAgB,SAAS,KAAK,CAAC,gBAAgB,sGAAsG,CAC1M,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,mCAAmC,WAAW,CAAC,YAAY,OAAO,KAAK,CAAC,YAAY,mGAAmG,CACxL,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC;QACtC,IAAI,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,4BAA4B,WAAW,CAAC,IAAI,SAAS,IAAI,yFAAyF,CACnJ,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,KAAK,CAAC,kBAAkB,KAAK,WAAW,CAAC,kBAAkB,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,CACR,sDAAsD,WAAW,CAAC,kBAAkB,OAAO,KAAK,CAAC,kBAAkB,EAAE,CACtH,CAAC;YAEF,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,KAAK,CACpC,UAAU,MAAM,0BAA0B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAC1D;gBACE,mBAAmB,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK;aACvD,CACF,CAAC;YAEF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,cAAc,CAClB,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,IAAI,CAAC,MAAM,CAAC,EAAE,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAC5B,UAAU,MAAM,0BAA0B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAC3D,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,cAAc,CAClB,QAAQ,EACR,KAAK,EACL,kBAAkB,EAClB,IAAI,CAAC,MAAM,CAAC,EAAE,CACf,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GACf,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CACvB,CAAC,MAAM,CAAC;QAET,OAAO,IAAI,CAAC;YACV,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,oBAAoB,EAAE,WAAW,CAAC,qBAAqB;YACvD,kBAAkB,EAAE,WAAW,CAAC,mBAAmB;YACnD,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,gBAAgB,EAAE,WAAW,CAAC,iBAAiB;YAC/C,YAAY,EAAE,WAAW,CAAC,aAAa;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO;YAC3B,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,sCAAsC;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,CAC/D,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,cAAc,QAAQ,2EAA2E,CAClG,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,MAAM,YAAY,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAE3E,IAAI,YAAY,EAAE,CAAC;QACjB,sCAAsC;QACtC,MAAM,CAAC,GAAG,CACR,sCAAsC,YAAY,CAAC,EAAE,gCAAgC,CACtF,CAAC;QAEF,OAAO,IAAI,CAAC;YACV,EAAE,EAAE,YAAY,CAAC,EAAE;YACnB,oBAAoB,EAAE,YAAY,CAAC,qBAAqB;YACxD,kBAAkB,EAAE,YAAY,CAAC,mBAAmB;YACpD,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,gBAAgB,EAAE,YAAY,CAAC,iBAAiB;YAChD,YAAY,EAAE,YAAY,CAAC,aAAa;YACxC,MAAM,EAAE,YAAY,CAAC,OAAO;YAC5B,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAG,CACR,kCAAkC,KAAK,CAAC,KAAK,CAAC,MAAM,gBAAgB,KAAK,CAAC,oBAAoB,EAAE,CACjG,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,IAAI,CACnC,UAAU,MAAM,8BAA8B,EAC9C;QACE,qBAAqB,EAAE,KAAK,CAAC,oBAAoB;QACjD,mBAAmB,EAAE,KAAK,CAAC,kBAAkB,IAAI,KAAK;QACtD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,UAAU;QAC9B,iBAAiB,EAAE,KAAK,CAAC,gBAAgB;QACzC,aAAa,EAAE,KAAK,CAAC,YAAY;KAClC,CACF,CAAC;IAEF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAE9C,mDAAmD;QACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,0KAA0K,SAAS,EAAE,CACtL,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,4HAA4H,SAAS,EAAE,CACxI,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,MAAM,IAAI,KAAK,CACb,sCAAsC,cAAc,CAAC,UAAU,OAAO,SAAS,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GACf,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAC7B,CAAC,MAAM,CAAC;IAET,MAAM,CAAC,GAAG,CACR,oCAAoC,WAAW,CAAC,EAAE,aAAa,WAAW,CAAC,MAAM,6DAA6D,CAC/I,CAAC;IAEF,OAAO,IAAI,CAAC;QACV,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,oBAAoB,EAAE,WAAW,CAAC,qBAAqB;QACvD,kBAAkB,EAAE,WAAW,CAAC,mBAAmB;QACnD,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,gBAAgB,EAAE,WAAW,CAAC,iBAAiB;QAC/C,YAAY,EAAE,WAAW,CAAC,aAAa;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO;QAC3B,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAiBF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,GAAkB,EAClB,MAAc,EACd,iBAAyB,EACzB,YAAoB,EAAE,GAAG,EAAE,GAAG,IAAI;IAElC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wBAAwB;IAExD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAC5B,UAAU,MAAM,0BAA0B,iBAAiB,EAAE,CAC9D,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,CAAC,UAAU,EAAE,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GACR,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CACvB,CAAC,MAAM,CAAC;QAET,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,IACE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YACjC,IAAI,CAAC,MAAM,KAAK,SAAS;YACzB,IAAI,CAAC,MAAM,KAAK,SAAS,EACzB,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iDAAiD,SAAS,GAAG,IAAI,GAAG,EAAE,UAAU,CACjF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAChC,GAAkB,EAClB,QAAgB;IAEhB,oCAAoC;IACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEpD,wCAAwC;IACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAEvC,CAAC;IAEF,+CAA+C;IAC/C,6DAA6D;IAC7D,IAAI,SAAS,GAAgD,IAAI,CAAC;IAClE,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,IACE,aAAa,KAAK,IAAI,CAAC,IAAI;YAC3B,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EACvC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACpC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAChC,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,QAAQ,uBAAuB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAkB,EAClB,MAAc,EACd,KAA2B;IAE3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,MAAM,wBAAwB,CAAC,CAAC;IAEzE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAEvC,CAAC;IAEF,yDAAyD;IACzD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,IACE,IAAI,CAAC,qBAAqB,KAAK,KAAK,CAAC,oBAAoB;YACzD,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,gBAAgB;YACjD,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,YAAY;YACzC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EACxC,CAAC;YACD,oEAAoE;YACpE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzE,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,CACR,mCAAmC,IAAI,CAAC,EAAE,kCAAkC,CAC7E,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"certificate-pack.js","sourceRoot":"","sources":["../../src/cloudflare/certificate-pack.ts"],"names":[],"mappings":"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"}