@typespec/compiler 0.66.0-dev.2 → 0.66.0-dev.22

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 (172) hide show
  1. package/dist/generated-defs/TypeSpec.d.ts +61 -6
  2. package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/core/checker.d.ts +1 -1
  5. package/dist/src/core/checker.d.ts.map +1 -1
  6. package/dist/src/core/checker.js +124 -50
  7. package/dist/src/core/checker.js.map +1 -1
  8. package/dist/src/core/cli/actions/compile/compile.d.ts.map +1 -1
  9. package/dist/src/core/cli/actions/compile/compile.js +3 -0
  10. package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
  11. package/dist/src/core/cli/actions/info.js +2 -2
  12. package/dist/src/core/cli/actions/info.js.map +1 -1
  13. package/dist/src/core/cli/cli.js +2 -3
  14. package/dist/src/core/cli/cli.js.map +1 -1
  15. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts +6 -0
  16. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts.map +1 -0
  17. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js +15 -0
  18. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js.map +1 -0
  19. package/dist/src/core/compiler-code-fixes/remove-unused-template-parameter.codefix.d.ts +6 -0
  20. package/dist/src/core/compiler-code-fixes/remove-unused-template-parameter.codefix.d.ts.map +1 -0
  21. package/dist/src/core/compiler-code-fixes/remove-unused-template-parameter.codefix.js +45 -0
  22. package/dist/src/core/compiler-code-fixes/remove-unused-template-parameter.codefix.js.map +1 -0
  23. package/dist/src/core/decorator-utils.d.ts.map +1 -1
  24. package/dist/src/core/decorator-utils.js +6 -0
  25. package/dist/src/core/decorator-utils.js.map +1 -1
  26. package/dist/src/core/helpers/discriminator-utils.d.ts +16 -2
  27. package/dist/src/core/helpers/discriminator-utils.d.ts.map +1 -1
  28. package/dist/src/core/helpers/discriminator-utils.js +80 -10
  29. package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
  30. package/dist/src/core/helpers/index.d.ts +1 -1
  31. package/dist/src/core/helpers/index.d.ts.map +1 -1
  32. package/dist/src/core/helpers/index.js +1 -1
  33. package/dist/src/core/helpers/index.js.map +1 -1
  34. package/dist/src/core/install.d.ts +1 -1
  35. package/dist/src/core/install.d.ts.map +1 -1
  36. package/dist/src/core/install.js +22 -6
  37. package/dist/src/core/install.js.map +1 -1
  38. package/dist/src/core/intrinsic-type-state.d.ts +2 -0
  39. package/dist/src/core/intrinsic-type-state.d.ts.map +1 -1
  40. package/dist/src/core/intrinsic-type-state.js +2 -0
  41. package/dist/src/core/intrinsic-type-state.js.map +1 -1
  42. package/dist/src/core/linter-rules/unused-template-parameter.rule.d.ts +2 -0
  43. package/dist/src/core/linter-rules/unused-template-parameter.rule.d.ts.map +1 -0
  44. package/dist/src/core/linter-rules/unused-template-parameter.rule.js +36 -0
  45. package/dist/src/core/linter-rules/unused-template-parameter.rule.js.map +1 -0
  46. package/dist/src/core/linter-rules/unused-using.rule.d.ts +2 -0
  47. package/dist/src/core/linter-rules/unused-using.rule.d.ts.map +1 -0
  48. package/dist/src/core/linter-rules/unused-using.rule.js +38 -0
  49. package/dist/src/core/linter-rules/unused-using.rule.js.map +1 -0
  50. package/dist/src/core/linter.d.ts +10 -2
  51. package/dist/src/core/linter.d.ts.map +1 -1
  52. package/dist/src/core/linter.js +18 -2
  53. package/dist/src/core/linter.js.map +1 -1
  54. package/dist/src/core/messages.d.ts +30 -5
  55. package/dist/src/core/messages.d.ts.map +1 -1
  56. package/dist/src/core/messages.js +6 -1
  57. package/dist/src/core/messages.js.map +1 -1
  58. package/dist/src/core/name-resolver.d.ts +3 -1
  59. package/dist/src/core/name-resolver.d.ts.map +1 -1
  60. package/dist/src/core/name-resolver.js +40 -1
  61. package/dist/src/core/name-resolver.js.map +1 -1
  62. package/dist/src/core/program.d.ts.map +1 -1
  63. package/dist/src/core/program.js +4 -3
  64. package/dist/src/core/program.js.map +1 -1
  65. package/dist/src/experimental/typekit/define-kit.d.ts +1 -0
  66. package/dist/src/experimental/typekit/define-kit.d.ts.map +1 -1
  67. package/dist/src/experimental/typekit/define-kit.js +14 -1
  68. package/dist/src/experimental/typekit/define-kit.js.map +1 -1
  69. package/dist/src/experimental/typekit/index.d.ts.map +1 -1
  70. package/dist/src/experimental/typekit/index.js +9 -3
  71. package/dist/src/experimental/typekit/index.js.map +1 -1
  72. package/dist/src/experimental/typekit/kits/array.d.ts +28 -0
  73. package/dist/src/experimental/typekit/kits/array.d.ts.map +1 -0
  74. package/dist/src/experimental/typekit/kits/array.js +26 -0
  75. package/dist/src/experimental/typekit/kits/array.js.map +1 -0
  76. package/dist/src/experimental/typekit/kits/builtin.d.ts +117 -0
  77. package/dist/src/experimental/typekit/kits/builtin.d.ts.map +1 -0
  78. package/dist/src/experimental/typekit/kits/builtin.js +81 -0
  79. package/dist/src/experimental/typekit/kits/builtin.js.map +1 -0
  80. package/dist/src/experimental/typekit/kits/enum-member.d.ts +52 -0
  81. package/dist/src/experimental/typekit/kits/enum-member.d.ts.map +1 -0
  82. package/dist/src/experimental/typekit/kits/enum-member.js +22 -0
  83. package/dist/src/experimental/typekit/kits/enum-member.js.map +1 -0
  84. package/dist/src/experimental/typekit/kits/enum.d.ts +54 -0
  85. package/dist/src/experimental/typekit/kits/enum.d.ts.map +1 -0
  86. package/dist/src/experimental/typekit/kits/enum.js +47 -0
  87. package/dist/src/experimental/typekit/kits/enum.js.map +1 -0
  88. package/dist/src/experimental/typekit/kits/index.d.ts +7 -0
  89. package/dist/src/experimental/typekit/kits/index.d.ts.map +1 -1
  90. package/dist/src/experimental/typekit/kits/index.js +7 -0
  91. package/dist/src/experimental/typekit/kits/index.js.map +1 -1
  92. package/dist/src/experimental/typekit/kits/model-property.d.ts +29 -1
  93. package/dist/src/experimental/typekit/kits/model-property.d.ts.map +1 -1
  94. package/dist/src/experimental/typekit/kits/model-property.js +11 -0
  95. package/dist/src/experimental/typekit/kits/model-property.js.map +1 -1
  96. package/dist/src/experimental/typekit/kits/model.d.ts +29 -4
  97. package/dist/src/experimental/typekit/kits/model.d.ts.map +1 -1
  98. package/dist/src/experimental/typekit/kits/model.js +49 -2
  99. package/dist/src/experimental/typekit/kits/model.js.map +1 -1
  100. package/dist/src/experimental/typekit/kits/operation.d.ts +49 -0
  101. package/dist/src/experimental/typekit/kits/operation.d.ts.map +1 -0
  102. package/dist/src/experimental/typekit/kits/operation.js +28 -0
  103. package/dist/src/experimental/typekit/kits/operation.js.map +1 -0
  104. package/dist/src/experimental/typekit/kits/record.d.ts +33 -0
  105. package/dist/src/experimental/typekit/kits/record.d.ts.map +1 -0
  106. package/dist/src/experimental/typekit/kits/record.js +26 -0
  107. package/dist/src/experimental/typekit/kits/record.js.map +1 -0
  108. package/dist/src/experimental/typekit/kits/type.d.ts +94 -1
  109. package/dist/src/experimental/typekit/kits/type.d.ts.map +1 -1
  110. package/dist/src/experimental/typekit/kits/type.js +59 -0
  111. package/dist/src/experimental/typekit/kits/type.js.map +1 -1
  112. package/dist/src/experimental/typekit/kits/union-variant.d.ts +5 -1
  113. package/dist/src/experimental/typekit/kits/union-variant.d.ts.map +1 -1
  114. package/dist/src/experimental/typekit/kits/union-variant.js.map +1 -1
  115. package/dist/src/experimental/typekit/kits/union.d.ts +15 -1
  116. package/dist/src/experimental/typekit/kits/union.d.ts.map +1 -1
  117. package/dist/src/experimental/typekit/kits/union.js +7 -0
  118. package/dist/src/experimental/typekit/kits/union.js.map +1 -1
  119. package/dist/src/experimental/typekit/kits/value.d.ts +84 -0
  120. package/dist/src/experimental/typekit/kits/value.d.ts.map +1 -0
  121. package/dist/src/experimental/typekit/kits/value.js +81 -0
  122. package/dist/src/experimental/typekit/kits/value.js.map +1 -0
  123. package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts +7 -0
  124. package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts.map +1 -0
  125. package/dist/src/experimental/typekit/utils/get-plausible-name.js +17 -0
  126. package/dist/src/experimental/typekit/utils/get-plausible-name.js.map +1 -0
  127. package/dist/src/experimental/typekit/utils/index.d.ts +2 -0
  128. package/dist/src/experimental/typekit/utils/index.d.ts.map +1 -0
  129. package/dist/src/experimental/typekit/utils/index.js +2 -0
  130. package/dist/src/experimental/typekit/utils/index.js.map +1 -0
  131. package/dist/src/init/file-templating.d.ts +2 -0
  132. package/dist/src/init/file-templating.d.ts.map +1 -1
  133. package/dist/src/init/file-templating.js +3 -0
  134. package/dist/src/init/file-templating.js.map +1 -1
  135. package/dist/src/init/init-template.d.ts +2 -0
  136. package/dist/src/init/init-template.d.ts.map +1 -1
  137. package/dist/src/init/init-template.js +1 -0
  138. package/dist/src/init/init-template.js.map +1 -1
  139. package/dist/src/init/init.d.ts +5 -2
  140. package/dist/src/init/init.d.ts.map +1 -1
  141. package/dist/src/init/init.js +158 -89
  142. package/dist/src/init/init.js.map +1 -1
  143. package/dist/src/init/prompts.d.ts +5 -0
  144. package/dist/src/init/prompts.d.ts.map +1 -0
  145. package/dist/src/init/prompts.js +16 -0
  146. package/dist/src/init/prompts.js.map +1 -0
  147. package/dist/src/init/scaffold.d.ts +1 -5
  148. package/dist/src/init/scaffold.d.ts.map +1 -1
  149. package/dist/src/init/scaffold.js +7 -10
  150. package/dist/src/init/scaffold.js.map +1 -1
  151. package/dist/src/lib/decorators.d.ts +3 -2
  152. package/dist/src/lib/decorators.d.ts.map +1 -1
  153. package/dist/src/lib/decorators.js +15 -3
  154. package/dist/src/lib/decorators.js.map +1 -1
  155. package/dist/src/lib/tsp-index.d.ts.map +1 -1
  156. package/dist/src/lib/tsp-index.js +2 -1
  157. package/dist/src/lib/tsp-index.js.map +1 -1
  158. package/dist/src/server/compile-service.d.ts.map +1 -1
  159. package/dist/src/server/compile-service.js +23 -4
  160. package/dist/src/server/compile-service.js.map +1 -1
  161. package/dist/src/server/serverlib.d.ts.map +1 -1
  162. package/dist/src/server/serverlib.js +51 -18
  163. package/dist/src/server/serverlib.js.map +1 -1
  164. package/dist/src/server/tmlanguage.js +1 -1
  165. package/dist/src/server/tmlanguage.js.map +1 -1
  166. package/dist/src/server/types.d.ts +2 -1
  167. package/dist/src/server/types.d.ts.map +1 -1
  168. package/dist/src/server/types.js.map +1 -1
  169. package/dist/typespec.tmLanguage +3 -3
  170. package/lib/std/decorators.tsp +75 -6
  171. package/package.json +4 -3
  172. package/templates/scaffolding.json +20 -22
@@ -1,8 +1,9 @@
1
1
  import { getEffectiveModelType } from "../../../core/checker.js";
2
2
  import { createRekeyableMap } from "../../../utils/misc.js";
3
3
  import { defineKit } from "../define-kit.js";
4
- import { decoratorApplication } from "../utils.js";
5
- export const ModelKit = defineKit({
4
+ import { copyMap, decoratorApplication } from "../utils.js";
5
+ const spreadCache = new Map();
6
+ defineKit({
6
7
  model: {
7
8
  create(desc) {
8
9
  const properties = createRekeyableMap(Array.from(Object.entries(desc.properties)));
@@ -15,6 +16,7 @@ export const ModelKit = defineKit({
15
16
  node: undefined,
16
17
  derivedModels: desc.derivedModels ?? [],
17
18
  sourceModels: desc.sourceModels ?? [],
19
+ indexer: desc.indexer,
18
20
  });
19
21
  this.program.checker.finishType(model);
20
22
  return model;
@@ -22,9 +24,54 @@ export const ModelKit = defineKit({
22
24
  is(type) {
23
25
  return type.kind === "Model";
24
26
  },
27
+ isExpresion(type) {
28
+ return type.name === "";
29
+ },
25
30
  getEffectiveModel(model, filter) {
26
31
  return getEffectiveModelType(this.program, model, filter);
27
32
  },
33
+ getSpreadType(model) {
34
+ if (spreadCache.has(model)) {
35
+ return spreadCache.get(model);
36
+ }
37
+ if (!model.indexer) {
38
+ return undefined;
39
+ }
40
+ if (model.indexer.key.name === "string") {
41
+ const record = this.record.create(model.indexer.value);
42
+ spreadCache.set(model, record);
43
+ return record;
44
+ }
45
+ if (model.indexer.key.name === "integer") {
46
+ const array = this.array.create(model.indexer.value);
47
+ spreadCache.set(model, array);
48
+ return array;
49
+ }
50
+ return model.indexer.value;
51
+ },
52
+ getProperties(model, options = {}) {
53
+ // Add explicitly defined properties
54
+ const properties = copyMap(model.properties);
55
+ // Add discriminator property if it exists
56
+ const discriminator = this.type.getDiscriminator(model);
57
+ if (discriminator) {
58
+ const discriminatorName = discriminator.propertyName;
59
+ properties.set(discriminatorName, this.modelProperty.create({ name: discriminatorName, type: this.builtin.string }));
60
+ }
61
+ if (options.includeExtended) {
62
+ let base = model.baseModel;
63
+ while (base) {
64
+ for (const [key, value] of base.properties) {
65
+ if (!properties.has(key)) {
66
+ properties.set(key, value);
67
+ }
68
+ }
69
+ base = base.baseModel;
70
+ }
71
+ }
72
+ // TODO: Add Spread?
73
+ return properties;
74
+ },
28
75
  },
29
76
  });
30
77
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAiFlE,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAmB;IAClD,KAAK,EAAE;QACL,MAAM,CAAC,IAAI;YACT,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,KAAK,GAAU,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBACvD,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS;gBACnC,IAAI,EAAE,SAAgB;gBACtB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;gBACvC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;aACtC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;QAC/B,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,MAA6C;YACpE,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { ModelProperty, Operation, Type } from "../../../core/types.js";
2
+ /**
3
+ * A descriptor for an operation.
4
+ * @experimental
5
+ */
6
+ export interface OperationDescriptor {
7
+ /**
8
+ * The name of the model property.
9
+ */
10
+ name: string;
11
+ /**
12
+ * The parameters to the model
13
+ */
14
+ parameters: ModelProperty[];
15
+ /**
16
+ * The return type of the model
17
+ */
18
+ returnType: Type;
19
+ }
20
+ /**
21
+ * Utilities for working with operation properties.
22
+ * @experimental
23
+ */
24
+ export interface OperationKit {
25
+ /**
26
+ * Create an operation type.
27
+ *
28
+ * @param desc The descriptor of the operation.
29
+ */
30
+ create(desc: OperationDescriptor): Operation;
31
+ /**
32
+ * Check if the type is an operation.
33
+ * @param type type to check
34
+ */
35
+ is(type: Type): type is Operation;
36
+ }
37
+ interface TypekitExtension {
38
+ /**
39
+ * Utilities for working with operation properties.
40
+ * @experimental
41
+ */
42
+ operation: OperationKit;
43
+ }
44
+ declare module "../define-kit.js" {
45
+ interface Typekit extends TypekitExtension {
46
+ }
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGxE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,aAAa,EAAE,CAAC;IAE5B;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C;;;OAGG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC;CACnC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -0,0 +1,28 @@
1
+ import { defineKit } from "../define-kit.js";
2
+ defineKit({
3
+ operation: {
4
+ is(type) {
5
+ return type.kind === "Operation";
6
+ },
7
+ create(desc) {
8
+ const parametersModel = this.model.create({
9
+ name: `${desc.name}Parameters`,
10
+ properties: desc.parameters.reduce((acc, property) => {
11
+ acc[property.name] = property;
12
+ return acc;
13
+ }, {}),
14
+ });
15
+ const operation = this.program.checker.createType({
16
+ kind: "Operation",
17
+ name: desc.name,
18
+ decorators: [],
19
+ parameters: parametersModel,
20
+ returnType: desc.returnType,
21
+ node: undefined,
22
+ });
23
+ this.program.checker.finishType(operation);
24
+ return operation;
25
+ },
26
+ },
27
+ });
28
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/operation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqD7C,SAAS,CAAmB;IAC1B,SAAS,EAAE;QACT,EAAE,CAAC,IAAU;YACX,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,IAAI;YACT,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,YAAY;gBAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;oBAChB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;oBAC9B,OAAO,GAAG,CAAC;gBACb,CAAC,EACD,EAAmC,CACpC;aACF,CAAC,CAAC;YACH,MAAM,SAAS,GAAc,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC3D,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,eAAe;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,SAAgB;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Model, Type } from "../../../core/types.js";
2
+ /**
3
+ * RecordKit provides utilities for working with Record Model types.
4
+ * @experimental
5
+ */
6
+ export interface RecordKit {
7
+ /**
8
+ * Check if the given `type` is a Record.
9
+ *
10
+ * @param type The type to check.
11
+ */
12
+ is(type: Type): boolean;
13
+ /**
14
+ * Get the element type of a Record
15
+ * @param type a Record Model type
16
+ */
17
+ getElementType(type: Model): Type;
18
+ /**
19
+ * Create a Record Model type
20
+ * @param elementType The type of the elements in the record
21
+ */
22
+ create(elementType: Type): Model;
23
+ }
24
+ interface TypekitExtension {
25
+ /** @experimental */
26
+ record: RecordKit;
27
+ }
28
+ declare module "../define-kit.js" {
29
+ interface Typekit extends TypekitExtension {
30
+ }
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/record.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;CAClC;AAED,UAAU,gBAAgB;IACxB,oBAAoB;IACpB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -0,0 +1,26 @@
1
+ import { isRecordModelType } from "../../../core/type-utils.js";
2
+ import { defineKit } from "../define-kit.js";
3
+ defineKit({
4
+ record: {
5
+ is(type) {
6
+ return (type.kind === "Model" && isRecordModelType(this.program, type) && type.properties.size === 0);
7
+ },
8
+ getElementType(type) {
9
+ if (!this.record.is(type)) {
10
+ throw new Error("Type is not a record.");
11
+ }
12
+ return type.indexer.value;
13
+ },
14
+ create(elementType) {
15
+ return this.model.create({
16
+ name: "Record",
17
+ properties: {},
18
+ indexer: {
19
+ key: this.builtin.string,
20
+ value: elementType,
21
+ },
22
+ });
23
+ },
24
+ },
25
+ });
26
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkC7C,SAAS,CAAmB;IAC1B,MAAM,EAAE;QACN,EAAE,CAAC,IAAI;YACL,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAC7F,CAAC;QACJ,CAAC;QACD,cAAc,CAAC,IAAI;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,WAAW;YAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBACvB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,OAAO,EAAE;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBACxB,KAAK,EAAE,WAAW;iBACnB;aACF,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
- import { type Type } from "../../../core/types.js";
1
+ import { DiscriminatedUnion } from "../../../core/helpers/discriminator-utils.js";
2
+ import { Discriminator } from "../../../core/intrinsic-type-state.js";
3
+ import { Enum, Model, Scalar, Union, type Type } from "../../../core/types.js";
2
4
  /** @experimental */
3
5
  export interface TypeTypekit {
4
6
  /**
@@ -10,6 +12,97 @@ export interface TypeTypekit {
10
12
  * Finishes a type, applying all the decorators.
11
13
  */
12
14
  finishType(type: Type): void;
15
+ /**
16
+ * Checks if a type is decorated with @error
17
+ * @param type The type to check.
18
+ */
19
+ isError(type: Type): boolean;
20
+ /**
21
+ * Get the name of this type in the specified encoding.
22
+ */
23
+ getEncodedName(type: Type & {
24
+ name: string;
25
+ }, encoding: string): string;
26
+ /**
27
+ * Get the summary of this type as specified by the `@summary` decorator.
28
+ *
29
+ * @param type The type to get the summary for.
30
+ */
31
+ getSummary(type: Type): string | undefined;
32
+ /**
33
+ * Get the documentation of this type as specified by the `@doc` decorator or
34
+ * the JSDoc comment.
35
+ *
36
+ * @param type The type to get the documentation for.
37
+ */
38
+ getDoc(type: Type): string | undefined;
39
+ /**
40
+ * Get the plausible name of a type. If the type has a name, it will use it otherwise it will try generate a name based on the context.
41
+ * If the type can't get a name, it will return an empty string.
42
+ * If the type is a TemplateInstance, it will prefix the name with the template arguments.
43
+ * @param type The scalar to get the name of.z
44
+ */
45
+ getPlausibleName(type: Model | Union | Enum | Scalar): string;
46
+ /**
47
+ * Resolves a discriminated union for the given model or union.
48
+ * @param type Model or Union to resolve the discriminated union for.
49
+ */
50
+ getDiscriminatedUnion(type: Union): DiscriminatedUnion | undefined;
51
+ /**
52
+ * Resolves the discriminator for a discriminated union. Returns undefined if the type is not a discriminated union.
53
+ * @param type
54
+ */
55
+ getDiscriminator(type: Model | Union): Discriminator | undefined;
56
+ /**
57
+ * Gets the maximum value for a numeric or model property type.
58
+ * @param type type to get the maximum value for
59
+ */
60
+ maxValue(type: Type): number | undefined;
61
+ /**
62
+ * Gets the minimum value for a numeric or model property type.
63
+ * @param type type to get the minimum value for
64
+ */
65
+ minValue(type: Type): number | undefined;
66
+ /**
67
+ * Gets the maximum value this numeric type should be, exclusive of the given value.
68
+ * @param type
69
+ */
70
+ maxValueExclusive(type: Type): number | undefined;
71
+ /**
72
+ * Gets the minimum value this numeric type should be, exclusive of the given value.
73
+ * @param type type to get the minimum value for
74
+ */
75
+ minValueExclusive(type: Type): number | undefined;
76
+ /**
77
+ * Gets the maximum length for a string type.
78
+ * @param type type to get the maximum length for
79
+ */
80
+ maxLength(type: Type): number | undefined;
81
+ /**
82
+ * Gets the minimum length for a string type.
83
+ * @param type type to get the minimum length for
84
+ */
85
+ minLength(type: Type): number | undefined;
86
+ /**
87
+ * Gets the maximum number of items for an array type.
88
+ * @param type type to get the maximum number of items for
89
+ */
90
+ maxItems(type: Type): number | undefined;
91
+ /**
92
+ * Gets the minimum number of items for an array type.
93
+ * @param type type to get the minimum number of items for
94
+ */
95
+ minItems(type: Type): number | undefined;
96
+ /**
97
+ * Checks if the given type is a never type.
98
+ */
99
+ isNever(type: Type): boolean;
100
+ /**
101
+ * Checks if the given type is a user defined type. Non-user defined types are defined in the compiler or other libraries imported by the spec.
102
+ * @param type The type to check.
103
+ * @returns True if the type is a user defined type, false otherwise.
104
+ */
105
+ isUserDefined(type: Type): boolean;
13
106
  }
14
107
  interface TypekitExtension {
15
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAInD,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAClC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/type.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,aAAa,EAUd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAO/E,qBAAqB;AACrB,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAClC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAC7B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAExE;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAE3C;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9D;;;OAGG;IACH,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACnE;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,aAAa,GAAG,SAAS,CAAC;IACjE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzC;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAElD;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAElD;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -1,5 +1,12 @@
1
+ import { getDiscriminatedUnion, } from "../../../core/helpers/discriminator-utils.js";
2
+ import { getLocationContext } from "../../../core/index.js";
3
+ import { getDiscriminator, getMaxItems, getMaxLength, getMaxValue, getMaxValueExclusive, getMinItems, getMinLength, getMinValue, getMinValueExclusive, } from "../../../core/intrinsic-type-state.js";
4
+ import { isErrorType, isNeverType } from "../../../core/type-utils.js";
5
+ import { getDoc, getSummary } from "../../../lib/decorators.js";
6
+ import { resolveEncodedName } from "../../../lib/encoded-names.js";
1
7
  import { defineKit } from "../define-kit.js";
2
8
  import { copyMap } from "../utils.js";
9
+ import { getPlausibleName } from "../utils/get-plausible-name.js";
3
10
  defineKit({
4
11
  type: {
5
12
  finishType(type) {
@@ -79,6 +86,58 @@ defineKit({
79
86
  this.realm.addType(clone);
80
87
  return clone;
81
88
  },
89
+ isError(type) {
90
+ return isErrorType(type);
91
+ },
92
+ getEncodedName(type, encoding) {
93
+ return resolveEncodedName(this.program, type, encoding);
94
+ },
95
+ getSummary(type) {
96
+ return getSummary(this.program, type);
97
+ },
98
+ getDoc(type) {
99
+ return getDoc(this.program, type);
100
+ },
101
+ getPlausibleName(type) {
102
+ return getPlausibleName(type);
103
+ },
104
+ getDiscriminator(type) {
105
+ return getDiscriminator(this.program, type);
106
+ },
107
+ getDiscriminatedUnion(type) {
108
+ const [union] = getDiscriminatedUnion(this.program, type);
109
+ return union;
110
+ },
111
+ maxValue(type) {
112
+ return getMaxValue(this.program, type);
113
+ },
114
+ minValue(type) {
115
+ return getMinValue(this.program, type);
116
+ },
117
+ maxLength(type) {
118
+ return getMaxLength(this.program, type);
119
+ },
120
+ minLength(type) {
121
+ return getMinLength(this.program, type);
122
+ },
123
+ maxItems(type) {
124
+ return getMaxItems(this.program, type);
125
+ },
126
+ maxValueExclusive(type) {
127
+ return getMaxValueExclusive(this.program, type);
128
+ },
129
+ minValueExclusive(type) {
130
+ return getMinValueExclusive(this.program, type);
131
+ },
132
+ minItems(type) {
133
+ return getMinItems(this.program, type);
134
+ },
135
+ isNever(type) {
136
+ return isNeverType(type);
137
+ },
138
+ isUserDefined(type) {
139
+ return getLocationContext(this.program, type).type === "project";
140
+ },
82
141
  },
83
142
  });
84
143
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/type.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import type { Type, Union, UnionVariant } from "../../../core/types.js";
2
2
  import { DecoratorArgs } from "../utils.js";
3
- interface UnionVariantDescriptor {
3
+ /**
4
+ * A descriptor for a union variant.
5
+ * @experimental
6
+ */
7
+ export interface UnionVariantDescriptor {
4
8
  /**
5
9
  * The name of the union variant.
6
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"union-variant.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union-variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,sBAAsB;IAC9B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,YAAY,CAAC;IAEnD;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC;CACtC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
1
+ {"version":3,"file":"union-variant.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union-variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,sBAAsB,GAAG,YAAY,CAAC;IAEnD;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC;CACtC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"union-variant.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union-variant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AA6DlE,SAAS,CAAmB;IAC1B,YAAY,EAAE;QACZ,MAAM,CAAC,IAAI;YACT,MAAM,OAAO,GAAiB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC5D,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;gBACjC,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBACvD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,SAAgB;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAY;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;QACtC,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"union-variant.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union-variant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAiElE,SAAS,CAAmB;IAC1B,YAAY,EAAE;QACZ,MAAM,CAAC,IAAI;YACT,MAAM,OAAO,GAAiB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC5D,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;gBACjC,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBACvD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,SAAgB;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAY;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;QACtC,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import type { Type, Union, UnionVariant } from "../../../core/types.js";
2
2
  import { DecoratorArgs } from "../utils.js";
3
- interface UnionDescriptor {
3
+ /**
4
+ * A descriptor for a union type.
5
+ * @experimental
6
+ */
7
+ export interface UnionDescriptor {
4
8
  /**
5
9
  * The name of the union. If name is provided, it is a union declaration.
6
10
  * Otherwise, it is a union expression.
@@ -21,6 +25,11 @@ interface UnionDescriptor {
21
25
  * @experimental
22
26
  */
23
27
  export interface UnionKit {
28
+ /**
29
+ * Creates a union type with filtered variants.
30
+ * @param filterFn Function to filter the union variants
31
+ */
32
+ filter(union: Union, filterFn: (variant: UnionVariant) => boolean): Union;
24
33
  /**
25
34
  * Create a union type.
26
35
  *
@@ -48,6 +57,11 @@ export interface UnionKit {
48
57
  * @param type The union to check.
49
58
  */
50
59
  isExtensible(type: Union): boolean;
60
+ /**
61
+ * Checks if an union is an expression (anonymous) or declared.
62
+ * @param type Uniton to check if it is an expression
63
+ */
64
+ isExpression(type: Union): boolean;
51
65
  }
52
66
  interface TypekitExtension {
53
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,UAAU,eAAe;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;CACtE;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK,CAAC;IAErC;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAElC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C;AAED,eAAO,MAAM,QAAQ,MA8EnB,CAAC"}
1
+ {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;CACtE;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,GAAG,KAAK,CAAC;IAC1E;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK,CAAC;IAErC;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAElC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAEnC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C;AAED,eAAO,MAAM,QAAQ,MAsFnB,CAAC"}
@@ -4,6 +4,10 @@ import { defineKit } from "../define-kit.js";
4
4
  import { decoratorApplication } from "../utils.js";
5
5
  export const UnionKit = defineKit({
6
6
  union: {
7
+ filter(union, filterFn) {
8
+ const variants = Array.from(union.variants.values()).filter(filterFn);
9
+ return this.union.create({ variants });
10
+ },
7
11
  create(desc) {
8
12
  const union = this.program.checker.createType({
9
13
  kind: "Union",
@@ -64,6 +68,9 @@ export const UnionKit = defineKit({
64
68
  }
65
69
  return false;
66
70
  },
71
+ isExpression(type) {
72
+ return type.name === undefined || type.name === "";
73
+ },
67
74
  },
68
75
  });
69
76
  //# sourceMappingURL=union.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/union.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { ArrayValue, BooleanValue, EnumValue, NullValue, NumericValue, ObjectValue, ScalarValue, StringValue, Value } from "../../../core/types.js";
2
+ /** @experimental */
3
+ export interface ValueKit {
4
+ /**
5
+ * Create a Value type from a JavaScript value.
6
+ *
7
+ * @param value The JavaScript value to turn into a TypeSpec Value type.
8
+ */
9
+ create(value: string | number | boolean): Value;
10
+ /**
11
+ * Create a string Value type from a JavaScript string value.
12
+ *
13
+ * @param value The string value.
14
+ */
15
+ createString(value: string): StringValue;
16
+ /**
17
+ * Create a numeric Value type from a JavaScript number value.
18
+ *
19
+ * @param value The numeric value.
20
+ */
21
+ createNumeric(value: number): NumericValue;
22
+ /**
23
+ * Create a boolean Value type from a JavaScript boolean value.
24
+ *
25
+ * @param value The boolean value.
26
+ */
27
+ createBoolean(value: boolean): BooleanValue;
28
+ /**
29
+ * Check if `type` is a string Value type.
30
+ *
31
+ * @param type The type to check.
32
+ */
33
+ isString(type: Value): type is StringValue;
34
+ /**
35
+ * Check if `type` is a numeric Value type.
36
+ *
37
+ * @param type The type to check.
38
+ */
39
+ isNumeric(type: Value): type is NumericValue;
40
+ /**
41
+ * Check if `type` is a scalar value type
42
+ * @param type The type to check.
43
+ */
44
+ isScalar(type: Value): type is ScalarValue;
45
+ /**
46
+ * Check if `type` is an object value type
47
+ * @param type The type to check.
48
+ */
49
+ isObject(type: Value): type is ObjectValue;
50
+ /**
51
+ * Check if `type` is an array value type
52
+ * @param type The type to check.
53
+ */
54
+ isArray(type: Value): type is ArrayValue;
55
+ /**
56
+ * Check if `type` is an enum value type
57
+ * @param type The type to check.
58
+ */
59
+ isEnum(type: Value): type is EnumValue;
60
+ /**
61
+ * Check if `type` is a null value Type.
62
+ * @param type The type to check.
63
+ */
64
+ isNull(type: Value): type is NullValue;
65
+ /**
66
+ * Check if `type` is a boolean Value type.
67
+ *
68
+ * @param type The type to check.
69
+ */
70
+ isBoolean(type: Value): type is BooleanValue;
71
+ is(type: {
72
+ valueKind: string;
73
+ }): type is Value;
74
+ }
75
+ interface TypekitExtension {
76
+ /** @experimental */
77
+ value: ValueKit;
78
+ }
79
+ declare module "../define-kit.js" {
80
+ interface Typekit extends TypekitExtension {
81
+ }
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,EACN,MAAM,wBAAwB,CAAC;AAGhC,oBAAoB;AACpB,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAEhD;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IAEzC;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IAE3C;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IAE5C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,WAAW,CAAC;IAE3C;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,YAAY,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,WAAW,CAAC;IAE3C;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,WAAW,CAAC;IAE3C;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,UAAU,CAAC;IAEzC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,SAAS,CAAC;IAEvC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,SAAS,CAAC;IAEvC;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,YAAY,CAAC;IAE7C,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,IAAI,KAAK,CAAC;CAChD;AAED,UAAU,gBAAgB;IACxB,oBAAoB;IACpB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}