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.
- package/lib/apply.js +10 -9
- package/lib/apply.js.map +1 -1
- package/lib/aws/control/types.d.ts +4 -4
- package/lib/cloudflare/api-gateway-operation.d.ts +141 -0
- package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -0
- package/lib/cloudflare/api-gateway-operation.js +153 -0
- package/lib/cloudflare/api-gateway-operation.js.map +1 -0
- package/lib/cloudflare/api-mitigation.d.ts +19 -0
- package/lib/cloudflare/api-mitigation.d.ts.map +1 -0
- package/lib/cloudflare/api-mitigation.js +1 -0
- package/lib/cloudflare/api-mitigation.js.map +1 -0
- package/lib/cloudflare/api-schema.d.ts +137 -0
- package/lib/cloudflare/api-schema.d.ts.map +1 -0
- package/lib/cloudflare/api-schema.js +197 -0
- package/lib/cloudflare/api-schema.js.map +1 -0
- package/lib/cloudflare/api-shield.d.ts +366 -0
- package/lib/cloudflare/api-shield.d.ts.map +1 -0
- package/lib/cloudflare/api-shield.js +427 -0
- package/lib/cloudflare/api-shield.js.map +1 -0
- package/lib/cloudflare/certificate-pack.d.ts +1 -1
- package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
- package/lib/cloudflare/certificate-pack.js +18 -88
- package/lib/cloudflare/certificate-pack.js.map +1 -1
- package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
- package/lib/cloudflare/compatibility-date.gen.js +1 -1
- package/lib/cloudflare/index.d.ts +3 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +3 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/zone.d.ts +12 -0
- package/lib/cloudflare/zone.d.ts.map +1 -1
- package/lib/cloudflare/zone.js +47 -0
- package/lib/cloudflare/zone.js.map +1 -1
- package/lib/destroy.d.ts.map +1 -1
- package/lib/destroy.js +26 -18
- package/lib/destroy.js.map +1 -1
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +2 -2
- package/lib/scope.js.map +1 -1
- package/package.json +2 -1
- package/src/apply.ts +11 -12
- package/src/aws/control/types.ts +4 -4
- package/src/cloudflare/api-gateway-operation.ts +340 -0
- package/src/cloudflare/api-mitigation.ts +22 -0
- package/src/cloudflare/api-schema.ts +364 -0
- package/src/cloudflare/api-shield.ts +676 -0
- package/src/cloudflare/certificate-pack.ts +28 -152
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/index.ts +3 -0
- package/src/cloudflare/zone.ts +75 -0
- package/src/destroy.ts +26 -20
- package/src/scope.ts +3 -3
- package/templates/tanstack-start/package.json +3 -3
- 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
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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":"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;AAClB,OAAO,EAAE,mBAAmB,EAAa,MAAM,WAAW,CAAC;AA6K3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;YACF,MAAM,kBAAkB,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAEtD,CAAC;YACF,MAAM,mBAAmB,GACvB,cAAc,CAAC,MAAM,KAAK,GAAG;gBAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;YAE7C,IACE,CAAC,cAAc,CAAC,EAAE;gBAClB,cAAc,CAAC,MAAM,KAAK,GAAG;gBAC7B,CAAC,mBAAmB,EACpB,CAAC;gBACD,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,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,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,KAAK,CAAC,kBAAkB,IAAI,KAAK;YACrD,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;YACN,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,KAAK,CAAC,kBAAkB,IAAI,KAAK;QACrD,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;QACN,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAeF;;;;;;;;;;;;;;;;;;;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;;;;;;;;GAQG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAkB,EAClB,MAAc,EACd,KAA2B;IAE3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAC5B,UAAU,MAAM,mCAAmC,CACpD,CAAC;IAEF,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,sFAAsF;gBACtF,IACE,KAAK,CAAC,kBAAkB;oBACxB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,EAClE,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,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"}
|