@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.
Files changed (66) hide show
  1. package/build/__tests__/edge-provider-schema/builder.d.ts +9 -3
  2. package/build/__tests__/edge-provider-schema/builder.js +6 -3
  3. package/build/__tests__/edge-provider-schema/index.js +119 -1
  4. package/build/__tests__/provider.test.js +4 -1
  5. package/build/get/__tests__/generator/ephemeral-resources.test.d.ts +2 -0
  6. package/build/get/__tests__/generator/ephemeral-resources.test.js +49 -0
  7. package/build/get/__tests__/generator/provider-functions.test.d.ts +2 -0
  8. package/build/get/__tests__/generator/provider-functions.test.js +176 -0
  9. package/build/get/__tests__/generator/provider.test.js +9 -1
  10. package/build/get/__tests__/generator/write-only.test.d.ts +2 -0
  11. package/build/get/__tests__/generator/write-only.test.js +65 -0
  12. package/build/get/__tests__/target-versions.test.d.ts +2 -0
  13. package/build/get/__tests__/target-versions.test.js +171 -0
  14. package/build/get/constructs-maker.d.ts +8 -1
  15. package/build/get/constructs-maker.js +13 -4
  16. package/build/get/generator/emitter/attributes-emitter.d.ts +12 -2
  17. package/build/get/generator/emitter/attributes-emitter.js +47 -5
  18. package/build/get/generator/emitter/index.d.ts +1 -0
  19. package/build/get/generator/emitter/index.js +2 -1
  20. package/build/get/generator/emitter/provider-functions-emitter.d.ts +11 -0
  21. package/build/get/generator/emitter/provider-functions-emitter.js +94 -0
  22. package/build/get/generator/emitter/resource-emitter.d.ts +5 -1
  23. package/build/get/generator/emitter/resource-emitter.js +83 -7
  24. package/build/get/generator/models/attribute-model.d.ts +2 -0
  25. package/build/get/generator/models/attribute-model.js +2 -1
  26. package/build/get/generator/models/index.d.ts +1 -0
  27. package/build/get/generator/models/index.js +2 -1
  28. package/build/get/generator/models/provider-function-model.d.ts +102 -0
  29. package/build/get/generator/models/provider-function-model.js +667 -0
  30. package/build/get/generator/models/resource-model.d.ts +3 -0
  31. package/build/get/generator/models/resource-model.js +13 -4
  32. package/build/get/generator/models/struct.d.ts +2 -0
  33. package/build/get/generator/models/struct.js +6 -2
  34. package/build/get/generator/provider-generator.d.ts +2 -0
  35. package/build/get/generator/provider-generator.js +31 -3
  36. package/build/get/generator/resource-parser.js +3 -1
  37. package/package.json +5 -5
  38. package/src/__tests__/__snapshots__/edge-provider-schema.test.ts.snap +4 -0
  39. package/src/__tests__/edge-provider-schema/builder.ts +17 -1
  40. package/src/__tests__/edge-provider-schema/index.ts +124 -1
  41. package/src/__tests__/provider.test.ts +3 -0
  42. package/src/get/__tests__/generator/__snapshots__/ephemeral-resources.test.ts.snap +524 -0
  43. package/src/get/__tests__/generator/__snapshots__/provider-functions.test.ts.snap +444 -0
  44. package/src/get/__tests__/generator/__snapshots__/write-only.test.ts.snap +262 -0
  45. package/src/get/__tests__/generator/ephemeral-resources.test.ts +46 -0
  46. package/src/get/__tests__/generator/fixtures/ephemeral-resources.test.fixture.json +160 -0
  47. package/src/get/__tests__/generator/fixtures/provider-functions-collision.test.fixture.json +31 -0
  48. package/src/get/__tests__/generator/fixtures/provider-functions-synthetic.test.fixture.json +192 -0
  49. package/src/get/__tests__/generator/fixtures/provider-functions.test.fixture.json +170 -0
  50. package/src/get/__tests__/generator/fixtures/write-only.test.fixture.json +58 -0
  51. package/src/get/__tests__/generator/provider-functions.test.ts +262 -0
  52. package/src/get/__tests__/generator/provider.test.ts +8 -0
  53. package/src/get/__tests__/generator/write-only.test.ts +71 -0
  54. package/src/get/__tests__/target-versions.test.ts +206 -0
  55. package/src/get/constructs-maker.ts +43 -3
  56. package/src/get/generator/emitter/attributes-emitter.ts +61 -6
  57. package/src/get/generator/emitter/index.ts +1 -0
  58. package/src/get/generator/emitter/provider-functions-emitter.ts +117 -0
  59. package/src/get/generator/emitter/resource-emitter.ts +110 -6
  60. package/src/get/generator/models/attribute-model.ts +3 -0
  61. package/src/get/generator/models/index.ts +1 -0
  62. package/src/get/generator/models/provider-function-model.ts +872 -0
  63. package/src/get/generator/models/resource-model.ts +25 -3
  64. package/src/get/generator/models/struct.ts +9 -1
  65. package/src/get/generator/provider-generator.ts +70 -4
  66. 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