@propulsionworks/cfn-resource-schemas 0.1.0

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.
@@ -0,0 +1,6 @@
1
+ import type { ResourceTypeSchemaWithMeta } from "./types.ts";
2
+ /**
3
+ * Load the AWS schemas from the bundle.
4
+ */
5
+ export declare function loadSchemas(): AsyncIterable<ResourceTypeSchemaWithMeta, void, void>;
6
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAoC7D;;GAEG;AACH,wBAAgB,WAAW,IAAI,aAAa,CAC1C,0BAA0B,EAC1B,IAAI,EACJ,IAAI,CACL,CAIA"}
package/out/schemas.js ADDED
@@ -0,0 +1,39 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { Transform } from "node:stream";
4
+ import { StringDecoder } from "node:string_decoder";
5
+ import { createGunzip } from "node:zlib";
6
+ /**
7
+ * Stream transform to convert the input into a stream of JSON objects.
8
+ */
9
+ class NdJsonTransform extends Transform {
10
+ #decoder = new StringDecoder();
11
+ #last = "";
12
+ constructor() {
13
+ super({
14
+ readableObjectMode: true,
15
+ });
16
+ }
17
+ _transform(chunk, encoding, callback) {
18
+ const current = this.#last + this.#decoder.write(chunk);
19
+ const lines = current.split(`\n`);
20
+ this.#last = lines.pop() ?? "";
21
+ for (const line of lines) {
22
+ this.push(JSON.parse(line));
23
+ }
24
+ callback();
25
+ }
26
+ _flush(callback) {
27
+ const current = this.#last + this.#decoder.end();
28
+ callback(undefined, current ? JSON.parse(current) : undefined);
29
+ }
30
+ }
31
+ /**
32
+ * Load the AWS schemas from the bundle.
33
+ */
34
+ export function loadSchemas() {
35
+ return createReadStream(join(import.meta.dirname, "../schemas.ndjson.gz"))
36
+ .pipe(createGunzip())
37
+ .pipe(new NdJsonTransform());
38
+ }
39
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC;;GAEG;AACH,MAAM,eAAgB,SAAQ,SAAS;IAC5B,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACxC,KAAK,GAAG,EAAE,CAAC;IAEX;QACE,KAAK,CAAC;YACJ,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;IAEe,UAAU,CACxB,KAAsB,EACtB,QAAwB,EACxB,QAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAEe,MAAM,CAAC,QAA2B;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IAKzB,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;SACvE,IAAI,CAAC,YAAY,EAAE,CAAC;SACpB,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;AACjC,CAAC"}
package/out/types.d.ts ADDED
@@ -0,0 +1,408 @@
1
+ export type JsonValue = boolean | null | number | string | JsonValue[] | {
2
+ [key: string]: JsonValue;
3
+ };
4
+ export type JsonSchemaDefinition = JsonSchema | boolean;
5
+ export type ResourceTypeSchemaWithMeta = {
6
+ $id: string;
7
+ $integrity: string;
8
+ } & ResourceTypeSchema;
9
+ export type JsonSchema = {
10
+ $comment?: string | undefined;
11
+ $id?: string | undefined;
12
+ $ref?: string | undefined;
13
+ $schema?: string | undefined;
14
+ additionalItems?: JsonSchemaDefinition | undefined;
15
+ additionalProperties?: JsonSchemaDefinition | undefined;
16
+ allOf?: JsonSchemaDefinition[] | undefined;
17
+ anyOf?: JsonSchemaDefinition[] | undefined;
18
+ const?: JsonValue;
19
+ contains?: JsonSchemaDefinition | undefined;
20
+ contentEncoding?: string | undefined;
21
+ contentMediaType?: string | undefined;
22
+ default?: JsonValue;
23
+ /**
24
+ * @default {}
25
+ */
26
+ definitions?: Record<string, JsonSchemaDefinition> | undefined;
27
+ dependencies?: Record<string, JsonSchemaDefinition | string[]> | undefined;
28
+ description?: string | undefined;
29
+ else?: JsonSchemaDefinition | undefined;
30
+ enum?: JsonValue[] | undefined;
31
+ examples?: JsonValue[] | undefined;
32
+ exclusiveMaximum?: number | undefined;
33
+ exclusiveMinimum?: number | undefined;
34
+ format?: string | undefined;
35
+ if?: JsonSchemaDefinition | undefined;
36
+ /**
37
+ * @default true
38
+ */
39
+ items?: JsonSchemaDefinition | JsonSchemaDefinition[] | undefined;
40
+ maximum?: number | undefined;
41
+ /**
42
+ * @min 0
43
+ */
44
+ maxItems?: number | undefined;
45
+ /**
46
+ * @min 0
47
+ */
48
+ maxLength?: number | undefined;
49
+ /**
50
+ * @min 0
51
+ */
52
+ maxProperties?: number | undefined;
53
+ minimum?: number | undefined;
54
+ /**
55
+ * @min 0
56
+ * @default 0
57
+ */
58
+ minItems?: number | undefined;
59
+ /**
60
+ * @min 0
61
+ * @default 0
62
+ */
63
+ minLength?: number | undefined;
64
+ /**
65
+ * @min 0
66
+ * @default 0
67
+ */
68
+ minProperties?: number | undefined;
69
+ multipleOf?: number | undefined;
70
+ not?: JsonSchemaDefinition | undefined;
71
+ oneOf?: JsonSchemaDefinition[] | undefined;
72
+ pattern?: string | undefined;
73
+ /**
74
+ * @default {}
75
+ */
76
+ patternProperties?: Record<string, JsonSchemaDefinition> | undefined;
77
+ /**
78
+ * @default {}
79
+ */
80
+ properties?: Record<string, JsonSchemaDefinition> | undefined;
81
+ propertyNames?: JsonSchemaDefinition | undefined;
82
+ /**
83
+ * @default false
84
+ */
85
+ readOnly?: boolean | undefined;
86
+ /**
87
+ * @default []
88
+ */
89
+ required?: string[] | undefined;
90
+ then?: JsonSchemaDefinition | undefined;
91
+ title?: string | undefined;
92
+ type?: ("array" | "boolean" | "integer" | "null" | "number" | "object" | "string") | ("array" | "boolean" | "integer" | "null" | "number" | "object" | "string")[] | undefined;
93
+ /**
94
+ * @default false
95
+ */
96
+ uniqueItems?: boolean | undefined;
97
+ /**
98
+ * @default false
99
+ */
100
+ writeOnly?: boolean | undefined;
101
+ };
102
+ /**
103
+ * This schema validates a CloudFormation resource provider definition.
104
+ */
105
+ export type ResourceTypeSchema = {
106
+ $comment?: string | undefined;
107
+ $schema?: string | undefined;
108
+ /**
109
+ * An optional list of supplementary identifiers, each of which uniquely identifies an instance of this resource type. An identifier is a non-zero-length list of JSON pointers to properties that form a single key. An identifier can be a single or multiple properties to support composite-key identifiers.
110
+ */
111
+ additionalIdentifiers?: string[][] | undefined;
112
+ additionalProperties: false;
113
+ allOf?: PropertySchema[] | undefined;
114
+ anyOf?: PropertySchema[] | undefined;
115
+ /**
116
+ * A list of JSON pointers for properties that can only be updated under certain conditions. For example, you can upgrade the engine version of an RDS DBInstance but you cannot downgrade it. When updating this property for a resource in a CloudFormation stack, the resource will be replaced if it cannot be updated.
117
+ */
118
+ conditionalCreateOnlyProperties?: string[] | undefined;
119
+ /**
120
+ * A list of JSON pointers to properties that are only able to be specified by the customer when creating a resource. Conversely, any property *not* in this list can be applied to an Update request.
121
+ */
122
+ createOnlyProperties?: string[] | undefined;
123
+ definitions?: Record<string, PropertySchema> | undefined;
124
+ /**
125
+ * A list of JSON pointers to properties that have been deprecated by the underlying service provider. These properties are still accepted in create & update operations, however they may be ignored, or converted to a consistent model on application. Deprecated properties are not guaranteed to be present in read paths.
126
+ */
127
+ deprecatedProperties?: string[] | undefined;
128
+ description: string;
129
+ /**
130
+ * @maxLength 4096
131
+ * @pattern ^https://[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$
132
+ */
133
+ documentationUrl?: string | undefined;
134
+ /**
135
+ * Defines the provisioning operations which can be performed on this resource type
136
+ */
137
+ handlers?: ResourceHandlers | undefined;
138
+ /**
139
+ * A list of JSON pointers for definitions that are hidden. These definitions will still be used but will not be visible
140
+ */
141
+ nonPublicDefinitions?: string[] | undefined;
142
+ /**
143
+ * A list of JSON pointers for properties that are hidden. These properties will still be used but will not be visible
144
+ */
145
+ nonPublicProperties?: string[] | undefined;
146
+ oneOf?: PropertySchema[] | undefined;
147
+ /**
148
+ * A required identifier which uniquely identifies an instance of this resource type. An identifier is a non-zero-length list of JSON pointers to properties that form a single key. An identifier can be a single or multiple properties to support composite-key identifiers.
149
+ */
150
+ primaryIdentifier: string[];
151
+ properties: Record<string, PropertySchema>;
152
+ /**
153
+ * A map which allows resource owners to define a function for a property with possible transformation. This property helps ensure the input to the model is equal to output
154
+ */
155
+ propertyTransform?: Record<string, string> | undefined;
156
+ /**
157
+ * A list of JSON pointers to properties that are able to be found in a Read request but unable to be specified by the customer
158
+ */
159
+ readOnlyProperties?: string[] | undefined;
160
+ /**
161
+ * Reserved for CloudFormation use. A namespace to inline remote schemas.
162
+ */
163
+ remote?: Record<string, RemoteSchema> | undefined;
164
+ /**
165
+ * The valid replacement strategies are [create_then_delete] and [delete_then_create]. All other inputs are invalid.
166
+ * @default create_then_delete
167
+ */
168
+ replacementStrategy?: "create_then_delete" | "delete_then_create" | undefined;
169
+ /**
170
+ * @default []
171
+ */
172
+ required?: string[] | undefined;
173
+ /**
174
+ * A template-able link to a resource instance. AWS-internal service links must be relative to the AWS console domain. External service links must be absolute, HTTPS URIs.
175
+ */
176
+ resourceLink?: ResourceLink | undefined;
177
+ /**
178
+ * @maxLength 4096
179
+ * @pattern ^https://[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$
180
+ */
181
+ sourceUrl?: string | undefined;
182
+ /**
183
+ * (Deprecated, please use new metadata attribute tagging) A boolean flag indicating whether this resource type supports tagging.
184
+ * @default true
185
+ */
186
+ taggable?: boolean | undefined;
187
+ tagging?: ResourceTagging | undefined;
188
+ title?: string | undefined;
189
+ type?: "RESOURCE" | undefined;
190
+ /**
191
+ * TypeConfiguration to set the configuration data for registry types. This configuration data is not passed through the resource properties in template. One of the possible use cases is configuring auth keys for 3P resource providers.
192
+ */
193
+ typeConfiguration?: TypeConfiguration | undefined;
194
+ /**
195
+ * @pattern ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
196
+ */
197
+ typeName: string;
198
+ /**
199
+ * A list of JSON pointers to properties (typically sensitive) that are able to be specified by the customer but unable to be returned in a Read request
200
+ */
201
+ writeOnlyProperties?: string[] | undefined;
202
+ };
203
+ /**
204
+ * Defines the provisioning operations which can be performed on this resource type
205
+ */
206
+ export type ResourceHandlers = {
207
+ create?: HandlerDefinition | undefined;
208
+ delete?: HandlerDefinition | undefined;
209
+ list?: HandlerDefinitionWithSchemaOverride | undefined;
210
+ read?: HandlerDefinition | undefined;
211
+ update?: HandlerDefinition | undefined;
212
+ };
213
+ export type ResourceTagging = {
214
+ /**
215
+ * A boolean flag indicating whether this resource type supports CloudFormation system tags.
216
+ * @default true
217
+ */
218
+ cloudFormationSystemTags?: boolean | undefined;
219
+ permissions?: string[] | undefined;
220
+ /**
221
+ * A boolean flag indicating whether this resource type supports tagging.
222
+ * @default true
223
+ */
224
+ taggable: boolean;
225
+ /**
226
+ * A boolean flag indicating whether this resource type supports tagging resources upon creation.
227
+ * @default true
228
+ */
229
+ tagOnCreate?: boolean | undefined;
230
+ /**
231
+ * A reference to the Tags property in the schema.
232
+ * @default /properties/Tags
233
+ */
234
+ tagProperty?: string | undefined;
235
+ /**
236
+ * A boolean flag indicating whether this resource type supports updatable tagging.
237
+ * @default true
238
+ */
239
+ tagUpdatable?: boolean | undefined;
240
+ };
241
+ /**
242
+ * Reserved for CloudFormation use. A inlined remote schema.
243
+ */
244
+ export type RemoteSchema = {
245
+ $comment?: string | undefined;
246
+ definitions?: Record<string, PropertySchema> | undefined;
247
+ properties?: Record<string, PropertySchema> | undefined;
248
+ };
249
+ export type PropertySchema = {
250
+ $comment?: string | undefined;
251
+ $ref?: string | undefined;
252
+ additionalProperties?: false | undefined;
253
+ allOf?: PropertySchema[] | undefined;
254
+ anyOf?: PropertySchema[] | undefined;
255
+ /**
256
+ * When set to AttributeList, it indicates that the array is of nested type objects, and when set to Standard it indicates that the array consists of primitive types
257
+ * @default Standard
258
+ */
259
+ arrayType?: "Standard" | "AttributeList" | undefined;
260
+ const?: JsonSchema["const"] | undefined;
261
+ contains?: JsonSchemaDefinition | undefined;
262
+ default?: JsonSchema["default"] | undefined;
263
+ dependencies?: Record<string, PropertySchema | string[]> | undefined;
264
+ description?: string | undefined;
265
+ enum?: JsonValue[] | undefined;
266
+ examples?: JsonValue[] | undefined;
267
+ exclusiveMaximum?: number | undefined;
268
+ exclusiveMinimum?: number | undefined;
269
+ format?: string | undefined;
270
+ /**
271
+ * When set to true, this flag indicates that the order of insertion of the array will be honored, and that changing the order of the array would indicate a diff
272
+ * @default true
273
+ */
274
+ insertionOrder?: boolean | undefined;
275
+ /**
276
+ * @default {}
277
+ */
278
+ items?: PropertySchema | undefined;
279
+ maximum?: number | undefined;
280
+ /**
281
+ * @min 0
282
+ */
283
+ maxItems?: number | undefined;
284
+ /**
285
+ * @min 0
286
+ */
287
+ maxLength?: number | undefined;
288
+ /**
289
+ * @min 0
290
+ */
291
+ maxProperties?: number | undefined;
292
+ minimum?: number | undefined;
293
+ /**
294
+ * @min 0
295
+ * @default 0
296
+ */
297
+ minItems?: number | undefined;
298
+ /**
299
+ * @min 0
300
+ * @default 0
301
+ */
302
+ minLength?: number | undefined;
303
+ /**
304
+ * @min 0
305
+ * @default 0
306
+ */
307
+ minProperties?: number | undefined;
308
+ multipleOf?: number | undefined;
309
+ oneOf?: PropertySchema[] | undefined;
310
+ pattern?: string | undefined;
311
+ patternProperties?: Record<string, JsonValue> | undefined;
312
+ properties?: Record<string, PropertySchema> | undefined;
313
+ relationshipRef?: RelationshipRef | undefined;
314
+ /**
315
+ * @default []
316
+ */
317
+ required?: string[] | undefined;
318
+ title?: string | undefined;
319
+ type?: JsonSchema["type"] | undefined;
320
+ /**
321
+ * @default false
322
+ */
323
+ uniqueItems?: boolean | undefined;
324
+ };
325
+ export type RelationshipRef = {
326
+ /**
327
+ * @min 1
328
+ * @max 10000
329
+ */
330
+ majorVersion?: number | undefined;
331
+ /**
332
+ * @pattern ^(/properties/)[A-Za-z0-9]*$
333
+ */
334
+ propertyPath: string;
335
+ /**
336
+ * @pattern [0-9a-zA-Z]{12,40}
337
+ */
338
+ publisherId?: string | undefined;
339
+ /**
340
+ * @pattern ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
341
+ */
342
+ typeName: string;
343
+ };
344
+ /**
345
+ * This schema validates a CloudFormation type provider configuration definition.
346
+ */
347
+ export type TypeConfiguration = {
348
+ additionalProperties: false;
349
+ allOf?: PropertySchema[] | undefined;
350
+ anyOf?: PropertySchema[] | undefined;
351
+ /**
352
+ * A list of JSON pointers to properties that have been deprecated by the underlying service provider. These properties are still accepted in create & update operations, however they may be ignored, or converted to a consistent model on application. Deprecated properties are not guaranteed to be present in read paths.
353
+ */
354
+ deprecatedProperties?: string[] | undefined;
355
+ description?: string | undefined;
356
+ oneOf?: PropertySchema[] | undefined;
357
+ properties: Record<string, PropertySchema>;
358
+ /**
359
+ * @default []
360
+ */
361
+ required?: string[] | undefined;
362
+ };
363
+ export type ResourceLink = {
364
+ $comment?: string | undefined;
365
+ mappings: Record<string, string>;
366
+ /**
367
+ * @pattern ^(/|https:)
368
+ */
369
+ templateUri: string;
370
+ };
371
+ /**
372
+ * Defines any execution operations which can be performed on this resource provider
373
+ */
374
+ export type HandlerDefinition = {
375
+ permissions: string[];
376
+ /**
377
+ * Defines the timeout for the entire operation to be interpreted by the invoker of the handler. The default is 120 (2 hours).
378
+ * @min 2
379
+ * @max 2160
380
+ * @default 120
381
+ */
382
+ timeoutInMinutes?: number | undefined;
383
+ };
384
+ /**
385
+ * Defines any execution operations which can be performed on this resource provider
386
+ */
387
+ export type HandlerDefinitionWithSchemaOverride = {
388
+ handlerSchema?: HandlerSchema | undefined;
389
+ permissions: string[];
390
+ /**
391
+ * Defines the timeout for the entire operation to be interpreted by the invoker of the handler. The default is 120 (2 hours).
392
+ * @min 2
393
+ * @max 2160
394
+ * @default 120
395
+ */
396
+ timeoutInMinutes?: number | undefined;
397
+ };
398
+ export type HandlerSchema = {
399
+ allOf?: PropertySchema[] | undefined;
400
+ anyOf?: PropertySchema[] | undefined;
401
+ oneOf?: PropertySchema[] | undefined;
402
+ properties: Record<string, PropertySchema>;
403
+ /**
404
+ * @default []
405
+ */
406
+ required?: string[] | undefined;
407
+ };
408
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/out/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@propulsionworks/cfn-resource-schemas",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "engines": {
6
+ "node": ">=20"
7
+ },
8
+ "exports": {
9
+ ".": {
10
+ "default": "./out/schemas.js",
11
+ "types": "./out/schemas.d.ts"
12
+ },
13
+ "./types": {
14
+ "default": "./out/types.js",
15
+ "types": "./out/types.d.ts"
16
+ }
17
+ },
18
+ "files": [
19
+ "src/",
20
+ "out/",
21
+ "schemas.ndjson.gz"
22
+ ],
23
+ "scripts": {
24
+ "build": "npm run clean && npm run compile",
25
+ "bundle": "node --experimental-strip-types ./bundle.ts",
26
+ "clean": "rimraf out/ *.tsbuildinfo",
27
+ "compile": "tsc -p tsconfig.lib.json",
28
+ "download": "node --experimental-strip-types ./download.ts",
29
+ "test": "node --enable-source-maps --experimental-strip-types ./test.ts"
30
+ },
31
+ "devDependencies": {
32
+ "@propulsionworks/eslint-config": "^0.4.1",
33
+ "@types/node": "^22.13.13",
34
+ "@types/ssri": "^7.1.5",
35
+ "canonicalize": "^2.1.0",
36
+ "eslint": "^9.23.0",
37
+ "prettier": "^3.5.3",
38
+ "rimraf": "^6.0.1",
39
+ "ssri": "^12.0.0",
40
+ "typescript": "^5.8.2",
41
+ "zip24": "^0.1.6"
42
+ }
43
+ }
Binary file
package/src/schemas.ts ADDED
@@ -0,0 +1,53 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { type TransformCallback, Transform } from "node:stream";
4
+ import { StringDecoder } from "node:string_decoder";
5
+ import { createGunzip } from "node:zlib";
6
+ import type { ResourceTypeSchemaWithMeta } from "./types.ts";
7
+
8
+ /**
9
+ * Stream transform to convert the input into a stream of JSON objects.
10
+ */
11
+ class NdJsonTransform extends Transform {
12
+ readonly #decoder = new StringDecoder();
13
+ #last = "";
14
+
15
+ public constructor() {
16
+ super({
17
+ readableObjectMode: true,
18
+ });
19
+ }
20
+
21
+ public override _transform(
22
+ chunk: string | Buffer,
23
+ encoding: BufferEncoding,
24
+ callback: TransformCallback
25
+ ): void {
26
+ const current = this.#last + this.#decoder.write(chunk);
27
+ const lines = current.split(`\n`);
28
+ this.#last = lines.pop() ?? "";
29
+
30
+ for (const line of lines) {
31
+ this.push(JSON.parse(line));
32
+ }
33
+ callback();
34
+ }
35
+
36
+ public override _flush(callback: TransformCallback): void {
37
+ const current = this.#last + this.#decoder.end();
38
+ callback(undefined, current ? JSON.parse(current) : undefined);
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Load the AWS schemas from the bundle.
44
+ */
45
+ export function loadSchemas(): AsyncIterable<
46
+ ResourceTypeSchemaWithMeta,
47
+ void,
48
+ void
49
+ > {
50
+ return createReadStream(join(import.meta.dirname, "../schemas.ndjson.gz"))
51
+ .pipe(createGunzip())
52
+ .pipe(new NdJsonTransform());
53
+ }
package/src/types.ts ADDED
@@ -0,0 +1,434 @@
1
+ export type JsonValue =
2
+ | boolean
3
+ | null
4
+ | number
5
+ | string
6
+ | JsonValue[]
7
+ | { [key: string]: JsonValue };
8
+
9
+ export type JsonSchemaDefinition = JsonSchema | boolean;
10
+
11
+ export type ResourceTypeSchemaWithMeta = {
12
+ $id: string;
13
+ $integrity: string;
14
+ } & ResourceTypeSchema;
15
+
16
+ /// GENERATED CODE BELOW ///
17
+ export type JsonSchema = {
18
+ $comment?: string | undefined;
19
+ $id?: string | undefined;
20
+ $ref?: string | undefined;
21
+ $schema?: string | undefined;
22
+ additionalItems?: JsonSchemaDefinition | undefined;
23
+ additionalProperties?: JsonSchemaDefinition | undefined;
24
+ allOf?: JsonSchemaDefinition[] | undefined;
25
+ anyOf?: JsonSchemaDefinition[] | undefined;
26
+ const?: JsonValue;
27
+ contains?: JsonSchemaDefinition | undefined;
28
+ contentEncoding?: string | undefined;
29
+ contentMediaType?: string | undefined;
30
+ default?: JsonValue;
31
+ /**
32
+ * @default {}
33
+ */
34
+ definitions?: Record<string, JsonSchemaDefinition> | undefined;
35
+ dependencies?: Record<string, JsonSchemaDefinition | string[]> | undefined;
36
+ description?: string | undefined;
37
+ else?: JsonSchemaDefinition | undefined;
38
+ enum?: JsonValue[] | undefined;
39
+ examples?: JsonValue[] | undefined;
40
+ exclusiveMaximum?: number | undefined;
41
+ exclusiveMinimum?: number | undefined;
42
+ format?: string | undefined;
43
+ if?: JsonSchemaDefinition | undefined;
44
+ /**
45
+ * @default true
46
+ */
47
+ items?: JsonSchemaDefinition | JsonSchemaDefinition[] | undefined;
48
+ maximum?: number | undefined;
49
+ /**
50
+ * @min 0
51
+ */
52
+ maxItems?: number | undefined;
53
+ /**
54
+ * @min 0
55
+ */
56
+ maxLength?: number | undefined;
57
+ /**
58
+ * @min 0
59
+ */
60
+ maxProperties?: number | undefined;
61
+ minimum?: number | undefined;
62
+ /**
63
+ * @min 0
64
+ * @default 0
65
+ */
66
+ minItems?: number | undefined;
67
+ /**
68
+ * @min 0
69
+ * @default 0
70
+ */
71
+ minLength?: number | undefined;
72
+ /**
73
+ * @min 0
74
+ * @default 0
75
+ */
76
+ minProperties?: number | undefined;
77
+ multipleOf?: number | undefined;
78
+ not?: JsonSchemaDefinition | undefined;
79
+ oneOf?: JsonSchemaDefinition[] | undefined;
80
+ pattern?: string | undefined;
81
+ /**
82
+ * @default {}
83
+ */
84
+ patternProperties?: Record<string, JsonSchemaDefinition> | undefined;
85
+ /**
86
+ * @default {}
87
+ */
88
+ properties?: Record<string, JsonSchemaDefinition> | undefined;
89
+ propertyNames?: JsonSchemaDefinition | undefined;
90
+ /**
91
+ * @default false
92
+ */
93
+ readOnly?: boolean | undefined;
94
+ /**
95
+ * @default []
96
+ */
97
+ required?: string[] | undefined;
98
+ then?: JsonSchemaDefinition | undefined;
99
+ title?: string | undefined;
100
+ type?:
101
+ | (
102
+ | "array"
103
+ | "boolean"
104
+ | "integer"
105
+ | "null"
106
+ | "number"
107
+ | "object"
108
+ | "string"
109
+ )
110
+ | (
111
+ | "array"
112
+ | "boolean"
113
+ | "integer"
114
+ | "null"
115
+ | "number"
116
+ | "object"
117
+ | "string"
118
+ )[]
119
+ | undefined;
120
+ /**
121
+ * @default false
122
+ */
123
+ uniqueItems?: boolean | undefined;
124
+ /**
125
+ * @default false
126
+ */
127
+ writeOnly?: boolean | undefined;
128
+ };
129
+ /**
130
+ * This schema validates a CloudFormation resource provider definition.
131
+ */
132
+ export type ResourceTypeSchema = {
133
+ $comment?: string | undefined;
134
+ $schema?: string | undefined;
135
+ /**
136
+ * An optional list of supplementary identifiers, each of which uniquely identifies an instance of this resource type. An identifier is a non-zero-length list of JSON pointers to properties that form a single key. An identifier can be a single or multiple properties to support composite-key identifiers.
137
+ */
138
+ additionalIdentifiers?: string[][] | undefined;
139
+ additionalProperties: false;
140
+ allOf?: PropertySchema[] | undefined;
141
+ anyOf?: PropertySchema[] | undefined;
142
+ /**
143
+ * A list of JSON pointers for properties that can only be updated under certain conditions. For example, you can upgrade the engine version of an RDS DBInstance but you cannot downgrade it. When updating this property for a resource in a CloudFormation stack, the resource will be replaced if it cannot be updated.
144
+ */
145
+ conditionalCreateOnlyProperties?: string[] | undefined;
146
+ /**
147
+ * A list of JSON pointers to properties that are only able to be specified by the customer when creating a resource. Conversely, any property *not* in this list can be applied to an Update request.
148
+ */
149
+ createOnlyProperties?: string[] | undefined;
150
+ definitions?: Record<string, PropertySchema> | undefined;
151
+ /**
152
+ * A list of JSON pointers to properties that have been deprecated by the underlying service provider. These properties are still accepted in create & update operations, however they may be ignored, or converted to a consistent model on application. Deprecated properties are not guaranteed to be present in read paths.
153
+ */
154
+ deprecatedProperties?: string[] | undefined;
155
+ description: string;
156
+ /**
157
+ * @maxLength 4096
158
+ * @pattern ^https://[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$
159
+ */
160
+ documentationUrl?: string | undefined;
161
+ /**
162
+ * Defines the provisioning operations which can be performed on this resource type
163
+ */
164
+ handlers?: ResourceHandlers | undefined;
165
+ /**
166
+ * A list of JSON pointers for definitions that are hidden. These definitions will still be used but will not be visible
167
+ */
168
+ nonPublicDefinitions?: string[] | undefined;
169
+ /**
170
+ * A list of JSON pointers for properties that are hidden. These properties will still be used but will not be visible
171
+ */
172
+ nonPublicProperties?: string[] | undefined;
173
+ oneOf?: PropertySchema[] | undefined;
174
+ /**
175
+ * A required identifier which uniquely identifies an instance of this resource type. An identifier is a non-zero-length list of JSON pointers to properties that form a single key. An identifier can be a single or multiple properties to support composite-key identifiers.
176
+ */
177
+ primaryIdentifier: string[];
178
+ properties: Record<string, PropertySchema>;
179
+ /**
180
+ * A map which allows resource owners to define a function for a property with possible transformation. This property helps ensure the input to the model is equal to output
181
+ */
182
+ propertyTransform?: Record<string, string> | undefined;
183
+ /**
184
+ * A list of JSON pointers to properties that are able to be found in a Read request but unable to be specified by the customer
185
+ */
186
+ readOnlyProperties?: string[] | undefined;
187
+ /**
188
+ * Reserved for CloudFormation use. A namespace to inline remote schemas.
189
+ */
190
+ remote?: Record<string, RemoteSchema> | undefined;
191
+ /**
192
+ * The valid replacement strategies are [create_then_delete] and [delete_then_create]. All other inputs are invalid.
193
+ * @default create_then_delete
194
+ */
195
+ replacementStrategy?: "create_then_delete" | "delete_then_create" | undefined;
196
+ /**
197
+ * @default []
198
+ */
199
+ required?: string[] | undefined;
200
+ /**
201
+ * A template-able link to a resource instance. AWS-internal service links must be relative to the AWS console domain. External service links must be absolute, HTTPS URIs.
202
+ */
203
+ resourceLink?: ResourceLink | undefined;
204
+ /**
205
+ * @maxLength 4096
206
+ * @pattern ^https://[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$
207
+ */
208
+ sourceUrl?: string | undefined;
209
+ /**
210
+ * (Deprecated, please use new metadata attribute tagging) A boolean flag indicating whether this resource type supports tagging.
211
+ * @default true
212
+ */
213
+ taggable?: boolean | undefined;
214
+ tagging?: ResourceTagging | undefined;
215
+ title?: string | undefined;
216
+ type?: "RESOURCE" | undefined;
217
+ /**
218
+ * TypeConfiguration to set the configuration data for registry types. This configuration data is not passed through the resource properties in template. One of the possible use cases is configuring auth keys for 3P resource providers.
219
+ */
220
+ typeConfiguration?: TypeConfiguration | undefined;
221
+ /**
222
+ * @pattern ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
223
+ */
224
+ typeName: string;
225
+ /**
226
+ * A list of JSON pointers to properties (typically sensitive) that are able to be specified by the customer but unable to be returned in a Read request
227
+ */
228
+ writeOnlyProperties?: string[] | undefined;
229
+ };
230
+ /**
231
+ * Defines the provisioning operations which can be performed on this resource type
232
+ */
233
+ export type ResourceHandlers = {
234
+ create?: HandlerDefinition | undefined;
235
+ delete?: HandlerDefinition | undefined;
236
+ list?: HandlerDefinitionWithSchemaOverride | undefined;
237
+ read?: HandlerDefinition | undefined;
238
+ update?: HandlerDefinition | undefined;
239
+ };
240
+ export type ResourceTagging = {
241
+ /**
242
+ * A boolean flag indicating whether this resource type supports CloudFormation system tags.
243
+ * @default true
244
+ */
245
+ cloudFormationSystemTags?: boolean | undefined;
246
+ permissions?: string[] | undefined;
247
+ /**
248
+ * A boolean flag indicating whether this resource type supports tagging.
249
+ * @default true
250
+ */
251
+ taggable: boolean;
252
+ /**
253
+ * A boolean flag indicating whether this resource type supports tagging resources upon creation.
254
+ * @default true
255
+ */
256
+ tagOnCreate?: boolean | undefined;
257
+ /**
258
+ * A reference to the Tags property in the schema.
259
+ * @default /properties/Tags
260
+ */
261
+ tagProperty?: string | undefined;
262
+ /**
263
+ * A boolean flag indicating whether this resource type supports updatable tagging.
264
+ * @default true
265
+ */
266
+ tagUpdatable?: boolean | undefined;
267
+ };
268
+ /**
269
+ * Reserved for CloudFormation use. A inlined remote schema.
270
+ */
271
+ export type RemoteSchema = {
272
+ $comment?: string | undefined;
273
+ definitions?: Record<string, PropertySchema> | undefined;
274
+ properties?: Record<string, PropertySchema> | undefined;
275
+ };
276
+ export type PropertySchema = {
277
+ $comment?: string | undefined;
278
+ $ref?: string | undefined;
279
+ additionalProperties?: false | undefined;
280
+ allOf?: PropertySchema[] | undefined;
281
+ anyOf?: PropertySchema[] | undefined;
282
+ /**
283
+ * When set to AttributeList, it indicates that the array is of nested type objects, and when set to Standard it indicates that the array consists of primitive types
284
+ * @default Standard
285
+ */
286
+ arrayType?: "Standard" | "AttributeList" | undefined;
287
+ const?: JsonSchema["const"] | undefined;
288
+ contains?: JsonSchemaDefinition | undefined;
289
+ default?: JsonSchema["default"] | undefined;
290
+ dependencies?: Record<string, PropertySchema | string[]> | undefined;
291
+ description?: string | undefined;
292
+ enum?: JsonValue[] | undefined;
293
+ examples?: JsonValue[] | undefined;
294
+ exclusiveMaximum?: number | undefined;
295
+ exclusiveMinimum?: number | undefined;
296
+ format?: string | undefined;
297
+ /**
298
+ * When set to true, this flag indicates that the order of insertion of the array will be honored, and that changing the order of the array would indicate a diff
299
+ * @default true
300
+ */
301
+ insertionOrder?: boolean | undefined;
302
+ /**
303
+ * @default {}
304
+ */
305
+ items?: PropertySchema | undefined;
306
+ maximum?: number | undefined;
307
+ /**
308
+ * @min 0
309
+ */
310
+ maxItems?: number | undefined;
311
+ /**
312
+ * @min 0
313
+ */
314
+ maxLength?: number | undefined;
315
+ /**
316
+ * @min 0
317
+ */
318
+ maxProperties?: number | undefined;
319
+ minimum?: number | undefined;
320
+ /**
321
+ * @min 0
322
+ * @default 0
323
+ */
324
+ minItems?: number | undefined;
325
+ /**
326
+ * @min 0
327
+ * @default 0
328
+ */
329
+ minLength?: number | undefined;
330
+ /**
331
+ * @min 0
332
+ * @default 0
333
+ */
334
+ minProperties?: number | undefined;
335
+ multipleOf?: number | undefined;
336
+ oneOf?: PropertySchema[] | undefined;
337
+ pattern?: string | undefined;
338
+ patternProperties?: Record<string, JsonValue> | undefined;
339
+ properties?: Record<string, PropertySchema> | undefined;
340
+ relationshipRef?: RelationshipRef | undefined;
341
+ /**
342
+ * @default []
343
+ */
344
+ required?: string[] | undefined;
345
+ title?: string | undefined;
346
+ type?: JsonSchema["type"] | undefined;
347
+ /**
348
+ * @default false
349
+ */
350
+ uniqueItems?: boolean | undefined;
351
+ };
352
+ export type RelationshipRef = {
353
+ /**
354
+ * @min 1
355
+ * @max 10000
356
+ */
357
+ majorVersion?: number | undefined;
358
+ /**
359
+ * @pattern ^(/properties/)[A-Za-z0-9]*$
360
+ */
361
+ propertyPath: string;
362
+ /**
363
+ * @pattern [0-9a-zA-Z]{12,40}
364
+ */
365
+ publisherId?: string | undefined;
366
+ /**
367
+ * @pattern ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
368
+ */
369
+ typeName: string;
370
+ };
371
+ /**
372
+ * This schema validates a CloudFormation type provider configuration definition.
373
+ */
374
+ export type TypeConfiguration = {
375
+ additionalProperties: false;
376
+ allOf?: PropertySchema[] | undefined;
377
+ anyOf?: PropertySchema[] | undefined;
378
+ /**
379
+ * A list of JSON pointers to properties that have been deprecated by the underlying service provider. These properties are still accepted in create & update operations, however they may be ignored, or converted to a consistent model on application. Deprecated properties are not guaranteed to be present in read paths.
380
+ */
381
+ deprecatedProperties?: string[] | undefined;
382
+ description?: string | undefined;
383
+ oneOf?: PropertySchema[] | undefined;
384
+ properties: Record<string, PropertySchema>;
385
+ /**
386
+ * @default []
387
+ */
388
+ required?: string[] | undefined;
389
+ };
390
+ export type ResourceLink = {
391
+ $comment?: string | undefined;
392
+ mappings: Record<string, string>;
393
+ /**
394
+ * @pattern ^(/|https:)
395
+ */
396
+ templateUri: string;
397
+ };
398
+ /**
399
+ * Defines any execution operations which can be performed on this resource provider
400
+ */
401
+ export type HandlerDefinition = {
402
+ permissions: string[];
403
+ /**
404
+ * Defines the timeout for the entire operation to be interpreted by the invoker of the handler. The default is 120 (2 hours).
405
+ * @min 2
406
+ * @max 2160
407
+ * @default 120
408
+ */
409
+ timeoutInMinutes?: number | undefined;
410
+ };
411
+ /**
412
+ * Defines any execution operations which can be performed on this resource provider
413
+ */
414
+ export type HandlerDefinitionWithSchemaOverride = {
415
+ handlerSchema?: HandlerSchema | undefined;
416
+ permissions: string[];
417
+ /**
418
+ * Defines the timeout for the entire operation to be interpreted by the invoker of the handler. The default is 120 (2 hours).
419
+ * @min 2
420
+ * @max 2160
421
+ * @default 120
422
+ */
423
+ timeoutInMinutes?: number | undefined;
424
+ };
425
+ export type HandlerSchema = {
426
+ allOf?: PropertySchema[] | undefined;
427
+ anyOf?: PropertySchema[] | undefined;
428
+ oneOf?: PropertySchema[] | undefined;
429
+ properties: Record<string, PropertySchema>;
430
+ /**
431
+ * @default []
432
+ */
433
+ required?: string[] | undefined;
434
+ };