@cdktn/provider-generator 0.24.0-pre.87 → 0.24.0-pre.89
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/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
- package/build/__tests__/edge-provider-schema/builder.js +6 -3
- package/build/__tests__/edge-provider-schema/index.js +119 -1
- package/build/__tests__/provider.test.js +4 -1
- package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
- package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
- package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
- package/build/get/__tests__/generator/provider-functions.test.js +176 -0
- package/build/get/__tests__/generator/provider.test.js +9 -1
- package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
- package/build/get/__tests__/generator/write-only.test.js +65 -0
- package/build/get/__tests__/target-versions.test.d.ts +2 -0
- package/build/get/__tests__/target-versions.test.js +171 -0
- package/build/get/constructs-maker.d.ts +8 -1
- package/build/get/constructs-maker.js +13 -4
- package/build/get/generator/emitter/attributes-emitter.d.ts +12 -2
- package/build/get/generator/emitter/attributes-emitter.js +47 -5
- package/build/get/generator/emitter/index.d.ts +1 -0
- package/build/get/generator/emitter/index.js +2 -1
- package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
- package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
- package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
- package/build/get/generator/emitter/resource-emitter.js +83 -7
- package/build/get/generator/models/attribute-model.d.ts +2 -0
- package/build/get/generator/models/attribute-model.js +2 -1
- package/build/get/generator/models/index.d.ts +1 -0
- package/build/get/generator/models/index.js +2 -1
- package/build/get/generator/models/provider-function-model.d.ts +102 -0
- package/build/get/generator/models/provider-function-model.js +667 -0
- package/build/get/generator/models/resource-model.d.ts +3 -0
- package/build/get/generator/models/resource-model.js +13 -4
- package/build/get/generator/models/struct.d.ts +2 -0
- package/build/get/generator/models/struct.js +6 -2
- package/build/get/generator/provider-generator.d.ts +2 -0
- package/build/get/generator/provider-generator.js +31 -3
- package/build/get/generator/resource-parser.js +3 -1
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
- package/src/__tests__/edge-provider-schema/builder.ts +17 -1
- package/src/__tests__/edge-provider-schema/index.ts +124 -1
- package/src/__tests__/provider.test.ts +3 -0
- package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
- package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
- package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
- package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
- package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
- package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
- package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
- package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
- package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
- package/src/get/__tests__/generator/provider.test.ts +8 -0
- package/src/get/__tests__/generator/write-only.test.ts +71 -0
- package/src/get/__tests__/target-versions.test.ts +206 -0
- package/src/get/constructs-maker.ts +43 -3
- package/src/get/generator/emitter/attributes-emitter.ts +61 -6
- package/src/get/generator/emitter/index.ts +1 -0
- package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
- package/src/get/generator/emitter/resource-emitter.ts +110 -6
- package/src/get/generator/models/attribute-model.ts +3 -0
- package/src/get/generator/models/index.ts +1 -0
- package/src/get/generator/models/provider-function-model.ts +872 -0
- package/src/get/generator/models/resource-model.ts +25 -3
- package/src/get/generator/models/struct.ts +9 -1
- package/src/get/generator/provider-generator.ts +70 -4
- package/src/get/generator/resource-parser.ts +2 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { FunctionSignature } from "@cdktn/commons";
|
|
2
|
+
/**
|
|
3
|
+
* A provider-defined function parameter (positional or the trailing
|
|
4
|
+
* variadic one), mapped to the jsii-safe TypeScript type used in the
|
|
5
|
+
* generated method signature.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProviderFunctionParameterModel {
|
|
8
|
+
readonly terraformName: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly tsType: string;
|
|
11
|
+
/**
|
|
12
|
+
* The JSDoc type expression emitted inside the `@param {...}` braces.
|
|
13
|
+
* A pure type expression only - prose (Terraform list/set semantics,
|
|
14
|
+
* `cdktn.Token.nullValue()` guidance) belongs in `docstringNote`.
|
|
15
|
+
*/
|
|
16
|
+
readonly docstringType: string;
|
|
17
|
+
/**
|
|
18
|
+
* Prose appended after the parameter name (and `description`, if any) in
|
|
19
|
+
* the emitted `@param` line - e.g. set-ordering semantics or how to pass
|
|
20
|
+
* an explicit Terraform `null`. Official JSDoc places only the type
|
|
21
|
+
* expression inside the braces, so this must never be folded into
|
|
22
|
+
* `docstringType`.
|
|
23
|
+
*/
|
|
24
|
+
readonly docstringNote?: string;
|
|
25
|
+
readonly description?: string;
|
|
26
|
+
/**
|
|
27
|
+
* True when this (fixed, non-variadic) parameter is emitted as a
|
|
28
|
+
* jsii-optional TypeScript parameter (`name?: T`) - see the
|
|
29
|
+
* is_nullable/trailing-compatibility handling in `applyNullability`.
|
|
30
|
+
* Never set on the variadic parameter: an array parameter can't be `?`.
|
|
31
|
+
*/
|
|
32
|
+
readonly optional?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A single provider-defined function, mapped to a static method on the
|
|
36
|
+
* generated `<Provider>ProviderFunctions` class.
|
|
37
|
+
*/
|
|
38
|
+
export interface ProviderFunctionModel {
|
|
39
|
+
readonly terraformName: string;
|
|
40
|
+
readonly methodName: string;
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
readonly summary?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Terraform (>=1.8) deprecation message for the function, surfaced as an
|
|
45
|
+
* `@deprecated` JSDoc tag. OpenTofu never emits this field - see
|
|
46
|
+
* `FunctionSignature.deprecation_message`.
|
|
47
|
+
*/
|
|
48
|
+
readonly deprecationMessage?: string;
|
|
49
|
+
readonly returnTsType: string;
|
|
50
|
+
/**
|
|
51
|
+
* The `@returns {...}` JSDoc type, describing the conceptual/Terraform
|
|
52
|
+
* shape of the return value - see `mapReturnType`. This deliberately can
|
|
53
|
+
* differ from `returnTsType` (e.g. a `bool` return is declared
|
|
54
|
+
* `cdktn.IResolvable` but documented as `boolean | IResolvable`), the same
|
|
55
|
+
* way a parameter's `docstringType` can differ from its `tsType`.
|
|
56
|
+
*/
|
|
57
|
+
readonly returnDocstringType: string;
|
|
58
|
+
/**
|
|
59
|
+
* Prose appended after the `@returns {...}` braces (e.g. Terraform
|
|
60
|
+
* list/set semantics) - the return-side counterpart of a parameter's
|
|
61
|
+
* `docstringNote`.
|
|
62
|
+
*/
|
|
63
|
+
readonly returnDocstringNote?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Wraps the `cdktn.TerraformProviderFunction.invoke(...)` call expression
|
|
66
|
+
* into the method's `return` statement (e.g. wrapping it in
|
|
67
|
+
* `cdktn.Token.asString(...)`, or returning it unwrapped for `bool`).
|
|
68
|
+
*/
|
|
69
|
+
readonly wrapReturn: (invokeExpression: string) => string;
|
|
70
|
+
readonly parameters: ProviderFunctionParameterModel[];
|
|
71
|
+
readonly variadicParameter?: ProviderFunctionParameterModel;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* All provider-defined functions of a single provider, mapped to a single
|
|
75
|
+
* generated `providers/<provider>/provider-functions/index.ts` file.
|
|
76
|
+
*/
|
|
77
|
+
export interface ProviderFunctionsModel {
|
|
78
|
+
readonly providerName: string;
|
|
79
|
+
readonly className: string;
|
|
80
|
+
readonly functions: ProviderFunctionModel[];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Throws if the provider's own config schema declares an attribute whose
|
|
84
|
+
* generated property name (see `AttributeModel.name` /
|
|
85
|
+
* `escapeAttributeName`) is exactly "functions", while the provider also
|
|
86
|
+
* declares provider-defined functions. That combination would collide with
|
|
87
|
+
* the memoized `functions` getter `ResourceEmitter` emits on the provider
|
|
88
|
+
* class (see `resource-emitter.ts`'s `emitFunctionsGetter`) - one would
|
|
89
|
+
* silently shadow the other. Same loud-failure convention as
|
|
90
|
+
* `assertNoMethodNameCollisions`/`assertNoParameterNameCollisions` above:
|
|
91
|
+
* generation is aborted rather than silently picking a winner.
|
|
92
|
+
*/
|
|
93
|
+
export declare function assertNoFunctionsGetterCollision(providerName: string, attributeNames: string[]): void;
|
|
94
|
+
/**
|
|
95
|
+
* Builds the model for a provider's `provider-functions/index.ts` file from
|
|
96
|
+
* its provider schema `functions` map. Returns `undefined` when the provider
|
|
97
|
+
* declares no functions - callers should skip emitting the file entirely.
|
|
98
|
+
*/
|
|
99
|
+
export declare function buildProviderFunctionsModel(providerName: string, functions: {
|
|
100
|
+
[name: string]: FunctionSignature;
|
|
101
|
+
} | undefined): ProviderFunctionsModel | undefined;
|
|
102
|
+
//# sourceMappingURL=provider-function-model.d.ts.map
|