@typespec/compiler 0.66.0-dev.1 → 0.66.0-dev.11

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 (140) hide show
  1. package/dist/generated-defs/TypeSpec.d.ts +60 -5
  2. package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/core/cli/cli.js +2 -1
  5. package/dist/src/core/cli/cli.js.map +1 -1
  6. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts +6 -0
  7. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts.map +1 -0
  8. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js +15 -0
  9. package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js.map +1 -0
  10. package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.d.ts +3 -0
  11. package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.d.ts.map +1 -0
  12. package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.js +49 -0
  13. package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.js.map +1 -0
  14. package/dist/src/core/decorator-utils.d.ts.map +1 -1
  15. package/dist/src/core/decorator-utils.js +6 -0
  16. package/dist/src/core/decorator-utils.js.map +1 -1
  17. package/dist/src/core/helpers/discriminator-utils.d.ts +16 -2
  18. package/dist/src/core/helpers/discriminator-utils.d.ts.map +1 -1
  19. package/dist/src/core/helpers/discriminator-utils.js +80 -10
  20. package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
  21. package/dist/src/core/helpers/syntax-utils.d.ts +1 -0
  22. package/dist/src/core/helpers/syntax-utils.d.ts.map +1 -1
  23. package/dist/src/core/helpers/syntax-utils.js +28 -0
  24. package/dist/src/core/helpers/syntax-utils.js.map +1 -1
  25. package/dist/src/core/intrinsic-type-state.d.ts +2 -0
  26. package/dist/src/core/intrinsic-type-state.d.ts.map +1 -1
  27. package/dist/src/core/intrinsic-type-state.js +2 -0
  28. package/dist/src/core/intrinsic-type-state.js.map +1 -1
  29. package/dist/src/core/linter.d.ts +11 -2
  30. package/dist/src/core/linter.d.ts.map +1 -1
  31. package/dist/src/core/linter.js +51 -3
  32. package/dist/src/core/linter.js.map +1 -1
  33. package/dist/src/core/messages.d.ts +17 -2
  34. package/dist/src/core/messages.d.ts.map +1 -1
  35. package/dist/src/core/messages.js +3 -0
  36. package/dist/src/core/messages.js.map +1 -1
  37. package/dist/src/core/name-resolver.d.ts +3 -1
  38. package/dist/src/core/name-resolver.d.ts.map +1 -1
  39. package/dist/src/core/name-resolver.js +40 -1
  40. package/dist/src/core/name-resolver.js.map +1 -1
  41. package/dist/src/core/parser.d.ts.map +1 -1
  42. package/dist/src/core/parser.js +1 -1
  43. package/dist/src/core/parser.js.map +1 -1
  44. package/dist/src/core/program.d.ts.map +1 -1
  45. package/dist/src/core/program.js +4 -3
  46. package/dist/src/core/program.js.map +1 -1
  47. package/dist/src/core/scanner.d.ts.map +1 -1
  48. package/dist/src/core/scanner.js +13 -6
  49. package/dist/src/core/scanner.js.map +1 -1
  50. package/dist/src/experimental/typekit/define-kit.d.ts +1 -0
  51. package/dist/src/experimental/typekit/define-kit.d.ts.map +1 -1
  52. package/dist/src/experimental/typekit/define-kit.js +14 -1
  53. package/dist/src/experimental/typekit/define-kit.js.map +1 -1
  54. package/dist/src/experimental/typekit/index.d.ts.map +1 -1
  55. package/dist/src/experimental/typekit/index.js +9 -3
  56. package/dist/src/experimental/typekit/index.js.map +1 -1
  57. package/dist/src/experimental/typekit/kits/array.d.ts +28 -0
  58. package/dist/src/experimental/typekit/kits/array.d.ts.map +1 -0
  59. package/dist/src/experimental/typekit/kits/array.js +26 -0
  60. package/dist/src/experimental/typekit/kits/array.js.map +1 -0
  61. package/dist/src/experimental/typekit/kits/builtin.d.ts +117 -0
  62. package/dist/src/experimental/typekit/kits/builtin.d.ts.map +1 -0
  63. package/dist/src/experimental/typekit/kits/builtin.js +81 -0
  64. package/dist/src/experimental/typekit/kits/builtin.js.map +1 -0
  65. package/dist/src/experimental/typekit/kits/enum-member.d.ts +52 -0
  66. package/dist/src/experimental/typekit/kits/enum-member.d.ts.map +1 -0
  67. package/dist/src/experimental/typekit/kits/enum-member.js +22 -0
  68. package/dist/src/experimental/typekit/kits/enum-member.js.map +1 -0
  69. package/dist/src/experimental/typekit/kits/enum.d.ts +54 -0
  70. package/dist/src/experimental/typekit/kits/enum.d.ts.map +1 -0
  71. package/dist/src/experimental/typekit/kits/enum.js +47 -0
  72. package/dist/src/experimental/typekit/kits/enum.js.map +1 -0
  73. package/dist/src/experimental/typekit/kits/index.d.ts +7 -0
  74. package/dist/src/experimental/typekit/kits/index.d.ts.map +1 -1
  75. package/dist/src/experimental/typekit/kits/index.js +7 -0
  76. package/dist/src/experimental/typekit/kits/index.js.map +1 -1
  77. package/dist/src/experimental/typekit/kits/model-property.d.ts +29 -1
  78. package/dist/src/experimental/typekit/kits/model-property.d.ts.map +1 -1
  79. package/dist/src/experimental/typekit/kits/model-property.js +11 -0
  80. package/dist/src/experimental/typekit/kits/model-property.js.map +1 -1
  81. package/dist/src/experimental/typekit/kits/model.d.ts +29 -4
  82. package/dist/src/experimental/typekit/kits/model.d.ts.map +1 -1
  83. package/dist/src/experimental/typekit/kits/model.js +49 -2
  84. package/dist/src/experimental/typekit/kits/model.js.map +1 -1
  85. package/dist/src/experimental/typekit/kits/operation.d.ts +49 -0
  86. package/dist/src/experimental/typekit/kits/operation.d.ts.map +1 -0
  87. package/dist/src/experimental/typekit/kits/operation.js +28 -0
  88. package/dist/src/experimental/typekit/kits/operation.js.map +1 -0
  89. package/dist/src/experimental/typekit/kits/record.d.ts +33 -0
  90. package/dist/src/experimental/typekit/kits/record.d.ts.map +1 -0
  91. package/dist/src/experimental/typekit/kits/record.js +26 -0
  92. package/dist/src/experimental/typekit/kits/record.js.map +1 -0
  93. package/dist/src/experimental/typekit/kits/type.d.ts +94 -1
  94. package/dist/src/experimental/typekit/kits/type.d.ts.map +1 -1
  95. package/dist/src/experimental/typekit/kits/type.js +59 -0
  96. package/dist/src/experimental/typekit/kits/type.js.map +1 -1
  97. package/dist/src/experimental/typekit/kits/union-variant.d.ts +5 -1
  98. package/dist/src/experimental/typekit/kits/union-variant.d.ts.map +1 -1
  99. package/dist/src/experimental/typekit/kits/union-variant.js.map +1 -1
  100. package/dist/src/experimental/typekit/kits/union.d.ts +15 -1
  101. package/dist/src/experimental/typekit/kits/union.d.ts.map +1 -1
  102. package/dist/src/experimental/typekit/kits/union.js +7 -0
  103. package/dist/src/experimental/typekit/kits/union.js.map +1 -1
  104. package/dist/src/experimental/typekit/kits/value.d.ts +84 -0
  105. package/dist/src/experimental/typekit/kits/value.d.ts.map +1 -0
  106. package/dist/src/experimental/typekit/kits/value.js +81 -0
  107. package/dist/src/experimental/typekit/kits/value.js.map +1 -0
  108. package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts +7 -0
  109. package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts.map +1 -0
  110. package/dist/src/experimental/typekit/utils/get-plausible-name.js +17 -0
  111. package/dist/src/experimental/typekit/utils/get-plausible-name.js.map +1 -0
  112. package/dist/src/experimental/typekit/utils/index.d.ts +2 -0
  113. package/dist/src/experimental/typekit/utils/index.d.ts.map +1 -0
  114. package/dist/src/experimental/typekit/utils/index.js +2 -0
  115. package/dist/src/experimental/typekit/utils/index.js.map +1 -0
  116. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  117. package/dist/src/formatter/print/printer.js +1 -29
  118. package/dist/src/formatter/print/printer.js.map +1 -1
  119. package/dist/src/init/scaffold.d.ts.map +1 -1
  120. package/dist/src/init/scaffold.js +7 -9
  121. package/dist/src/init/scaffold.js.map +1 -1
  122. package/dist/src/lib/decorators.d.ts +3 -2
  123. package/dist/src/lib/decorators.d.ts.map +1 -1
  124. package/dist/src/lib/decorators.js +15 -3
  125. package/dist/src/lib/decorators.js.map +1 -1
  126. package/dist/src/lib/tsp-index.d.ts.map +1 -1
  127. package/dist/src/lib/tsp-index.js +2 -1
  128. package/dist/src/lib/tsp-index.js.map +1 -1
  129. package/dist/src/server/compile-service.d.ts.map +1 -1
  130. package/dist/src/server/compile-service.js +13 -4
  131. package/dist/src/server/compile-service.js.map +1 -1
  132. package/dist/src/server/serverlib.d.ts.map +1 -1
  133. package/dist/src/server/serverlib.js +15 -2
  134. package/dist/src/server/serverlib.js.map +1 -1
  135. package/dist/src/server/types.d.ts +2 -1
  136. package/dist/src/server/types.d.ts.map +1 -1
  137. package/dist/src/server/types.js.map +1 -1
  138. package/lib/std/decorators.tsp +74 -5
  139. package/package.json +1 -1
  140. package/templates/scaffolding.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/builtin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { Enum, EnumMember, Type } from "../../../core/types.js";
2
+ import { DecoratorArgs } from "../utils.js";
3
+ /**
4
+ * A descriptor for creating an enum member.
5
+ * @experimental
6
+ */
7
+ export interface EnumMemberDescriptor {
8
+ /**
9
+ * The name of the enum member.
10
+ */
11
+ name: string;
12
+ /**
13
+ * Decorators to apply to the enum member.
14
+ */
15
+ decorators?: DecoratorArgs[];
16
+ /**
17
+ * The value of the enum member. If not supplied, the value will be the same
18
+ * as the name.
19
+ */
20
+ value?: string | number;
21
+ /**
22
+ * The enum that the member belongs to. If not provided here, it is assumed
23
+ * that it will be set in `enum.build`.
24
+ */
25
+ enum?: Enum;
26
+ }
27
+ /**
28
+ * A kit for working with enum members.
29
+ * @experimental
30
+ */
31
+ export interface EnumMemberKit {
32
+ /**
33
+ * Create an enum member. The enum member will be finished (i.e. decorators are run).
34
+ */
35
+ create(desc: EnumMemberDescriptor): EnumMember;
36
+ /**
37
+ * Check if `type` is an enum member type.
38
+ *
39
+ * @param type the type to check.
40
+ */
41
+ is(type: Type): type is EnumMember;
42
+ }
43
+ interface TypekitExtension {
44
+ /** @experimental */
45
+ enumMember: EnumMemberKit;
46
+ }
47
+ declare module "../define-kit.js" {
48
+ interface Typekit extends TypekitExtension {
49
+ }
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=enum-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-member.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/enum-member.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGrE,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CAAC;IAE/C;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,UAAU,CAAC;CACpC;AAED,UAAU,gBAAgB;IACxB,oBAAoB;IACpB,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -0,0 +1,22 @@
1
+ import { defineKit } from "../define-kit.js";
2
+ import { decoratorApplication } from "../utils.js";
3
+ defineKit({
4
+ enumMember: {
5
+ create(desc) {
6
+ const member = this.program.checker.createType({
7
+ kind: "EnumMember",
8
+ name: desc.name,
9
+ value: desc.value,
10
+ decorators: decoratorApplication(this, desc.decorators),
11
+ node: undefined,
12
+ enum: desc.enum, // initialized in enum.build if not provided here
13
+ });
14
+ this.program.checker.finishType(member);
15
+ return member;
16
+ },
17
+ is(type) {
18
+ return type.kind === "EnumMember";
19
+ },
20
+ },
21
+ });
22
+ //# sourceMappingURL=enum-member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum-member.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/enum-member.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAwDlE,SAAS,CAAmB;IAC1B,UAAU,EAAE;QACV,MAAM,CAAC,IAAI;YACT,MAAM,MAAM,GAAe,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBACzD,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBACvD,IAAI,EAAE,SAAgB;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAW,EAAE,iDAAiD;aAC1E,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;QACpC,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { Enum, EnumMember, Type, Union } from "../../../core/types.js";
2
+ import { DecoratorArgs } from "../utils.js";
3
+ /**
4
+ * Describes an enum type for creation.
5
+ * @experimental
6
+ */
7
+ interface EnumDescriptor {
8
+ /**
9
+ * The name of the enum declaration.
10
+ */
11
+ name: string;
12
+ /**
13
+ * Decorators to apply to the enum.
14
+ */
15
+ decorators?: DecoratorArgs[];
16
+ /**
17
+ * The members of the enum. If a member is an object, each property will be
18
+ * converted to an EnumMember with the same name and value.
19
+ */
20
+ members?: Record<string, string | number> | EnumMember[];
21
+ }
22
+ /**
23
+ * A kit for working with enum types.
24
+ * @experimental
25
+ */
26
+ export interface EnumKit {
27
+ /**
28
+ * Build an enum type. The enum type will be finished (i.e. decorators are
29
+ * run).
30
+ */
31
+ create(desc: EnumDescriptor): Enum;
32
+ /**
33
+ * Build an equivalent enum from the given union. Union variants which are
34
+ * not valid enum members are skipped. You can check if a union is a valid
35
+ * enum with {@link UnionKit.union}'s `isEnumValue`.
36
+ */
37
+ createFromUnion(type: Union): Enum;
38
+ /**
39
+ * Check if `type` is an enum type.
40
+ *
41
+ * @param type the type to check.
42
+ */
43
+ is(type: Type): type is Enum;
44
+ }
45
+ interface TypekitExtension {
46
+ /** @experimental */
47
+ enum: EnumKit;
48
+ }
49
+ declare module "../define-kit.js" {
50
+ interface Typekit extends TypekitExtension {
51
+ }
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAM5E,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE;;;GAGG;AACH,UAAU,cAAc;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAEnC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAEnC;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;CAC9B;AAED,UAAU,gBAAgB;IACxB,oBAAoB;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -0,0 +1,47 @@
1
+ import { createRekeyableMap } from "../../../utils/misc.js";
2
+ import { defineKit } from "../define-kit.js";
3
+ import { decoratorApplication } from "../utils.js";
4
+ defineKit({
5
+ enum: {
6
+ create(desc) {
7
+ const en = this.program.checker.createType({
8
+ kind: "Enum",
9
+ name: desc.name,
10
+ decorators: decoratorApplication(this, desc.decorators),
11
+ members: createRekeyableMap(),
12
+ node: undefined,
13
+ });
14
+ if (Array.isArray(desc.members)) {
15
+ for (const member of desc.members) {
16
+ member.enum = en;
17
+ en.members.set(member.name, member);
18
+ }
19
+ }
20
+ else {
21
+ for (const [name, member] of Object.entries(desc.members ?? {})) {
22
+ en.members.set(name, this.enumMember.create({ name, value: member, enum: en }));
23
+ }
24
+ }
25
+ this.program.checker.finishType(en);
26
+ return en;
27
+ },
28
+ is(type) {
29
+ return type.kind === "Enum";
30
+ },
31
+ createFromUnion(type) {
32
+ if (!type.name) {
33
+ throw new Error("Cannot create an enum from an anonymous union.");
34
+ }
35
+ const enumMembers = [];
36
+ for (const variant of type.variants.values()) {
37
+ if ((variant.name && typeof variant.name === "symbol") ||
38
+ (!this.literal.isString(variant.type) && !this.literal.isNumeric(variant.type))) {
39
+ continue;
40
+ }
41
+ enumMembers.push(this.enumMember.create({ name: variant.name, value: variant.type.value }));
42
+ }
43
+ return this.enum.create({ name: type.name, members: enumMembers });
44
+ },
45
+ },
46
+ });
47
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/enum.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AA2DlE,SAAS,CAAmB;IAC1B,IAAI,EAAE;QACJ,MAAM,CAAC,IAAI;YACT,MAAM,EAAE,GAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC/C,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;gBACvD,OAAO,EAAE,kBAAkB,EAAE;gBAC7B,IAAI,EAAE,SAAgB;aACvB,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;oBACjB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;oBAChE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QAC9B,CAAC;QAED,eAAe,CAAC,IAAI;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,IACE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;oBAClD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAC/E,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -1,8 +1,15 @@
1
+ export * from "./array.js";
2
+ export * from "./builtin.js";
3
+ export * from "./enum-member.js";
4
+ export * from "./enum.js";
1
5
  export * from "./literal.js";
2
6
  export * from "./model-property.js";
3
7
  export * from "./model.js";
8
+ export * from "./operation.js";
9
+ export * from "./record.js";
4
10
  export * from "./scalar.js";
5
11
  export * from "./type.js";
6
12
  export * from "./union-variant.js";
7
13
  export * from "./union.js";
14
+ export * from "./value.js";
8
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,8 +1,15 @@
1
+ export * from "./array.js";
2
+ export * from "./builtin.js";
3
+ export * from "./enum-member.js";
4
+ export * from "./enum.js";
1
5
  export * from "./literal.js";
2
6
  export * from "./model-property.js";
3
7
  export * from "./model.js";
8
+ export * from "./operation.js";
9
+ export * from "./record.js";
4
10
  export * from "./scalar.js";
5
11
  export * from "./type.js";
6
12
  export * from "./union-variant.js";
7
13
  export * from "./union.js";
14
+ export * from "./value.js";
8
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -1,15 +1,42 @@
1
- import type { Enum, EnumMember, ModelProperty, Type } from "../../../core/types.js";
1
+ import type { Enum, EnumMember, ModelProperty, Type, Value } from "../../../core/types.js";
2
2
  import { EncodeData } from "../../../lib/decorators.js";
3
3
  /**
4
+ * A descriptor for a model property.
4
5
  * @experimental
6
+ */
7
+ export interface ModelPropertyDescriptor {
8
+ /**
9
+ * The name of the model property.
10
+ */
11
+ name: string;
12
+ /**
13
+ * The type of the model property.
14
+ */
15
+ type: Type;
16
+ /**
17
+ * Whether the model property is optional.
18
+ */
19
+ optional?: boolean;
20
+ /**
21
+ * Default value
22
+ */
23
+ defaultValue?: Value | undefined;
24
+ }
25
+ /**
5
26
  * Utilities for working with model properties.
6
27
  *
7
28
  * For many reflection operations, the metadata being asked for may be found
8
29
  * on the model property or the type of the model property. In such cases,
9
30
  * these operations will return the metadata from the model property if it
10
31
  * exists, or the type of the model property if it exists.
32
+ * @experimental
11
33
  */
12
34
  export interface ModelPropertyKit {
35
+ /**
36
+ * Creates a modelProperty type.
37
+ * @param desc The descriptor of the model property.
38
+ */
39
+ create(desc: ModelPropertyDescriptor): ModelProperty;
13
40
  /**
14
41
  * Check if the given `type` is a model property.
15
42
  *
@@ -43,6 +70,7 @@ interface TypekitExtension {
43
70
  * on the model property or the type of the model property. In such cases,
44
71
  * these operations will return the metadata from the model property if it
45
72
  * exists, or the type of the model property if it exists.
73
+ * @experimental
46
74
  */
47
75
  modelProperty: ModelPropertyKit;
48
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model-property.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model-property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAG9E;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC;IAEtC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAE7D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;IAEvD;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;CACxF;AAED,UAAU,gBAAgB;IACxB;;;;;;;OAOG;IACH,aAAa,EAAE,gBAAgB,CAAC;CACjC;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
1
+ {"version":3,"file":"model-property.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model-property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAU,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEnG,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAC;AAG9E;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;IAEX;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,aAAa,CAAC;IACrD;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC;IAEtC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAE7D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;IAEvD;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;CACxF;AAED,UAAU,gBAAgB;IACxB;;;;;;;;OAQG;IACH,aAAa,EAAE,gBAAgB,CAAC;CACjC;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -15,6 +15,17 @@ defineKit({
15
15
  getVisibilityForClass(property, visibilityClass) {
16
16
  return getVisibilityForClass(this.program, property, visibilityClass);
17
17
  },
18
+ create(desc) {
19
+ return this.program.checker.createType({
20
+ kind: "ModelProperty",
21
+ name: desc.name,
22
+ node: undefined,
23
+ type: desc.type,
24
+ optional: desc.optional ?? false,
25
+ decorators: [],
26
+ defaultValue: desc.defaultValue,
27
+ });
28
+ },
18
29
  },
19
30
  });
20
31
  //# sourceMappingURL=model-property.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-property.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model-property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAc,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAyD7C,SAAS,CAAmB;IAC1B,aAAa,EAAE;QACb,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;QACvC,CAAC;QAED,WAAW,CAAC,IAAI;YACd,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;QACvF,CAAC;QAED,SAAS,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;QACvF,CAAC;QAED,qBAAqB,CAAC,QAAQ,EAAE,eAAe;YAC7C,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxE,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"model-property.js","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model-property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAc,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAyF7C,SAAS,CAAmB;IAC1B,aAAa,EAAE;QACb,EAAE,CAAC,IAAI;YACL,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;QACvC,CAAC;QAED,WAAW,CAAC,IAAI;YACd,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;QACvF,CAAC;QAED,SAAS,CAAC,IAAI;YACZ,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;QACvF,CAAC;QAED,qBAAqB,CAAC,QAAQ,EAAE,eAAe;YAC7C,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,IAAI;YACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBACrC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,SAAgB;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;gBAChC,UAAU,EAAE,EAAE;gBACd,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
- import type { Model, ModelProperty, SourceModel, Type } from "../../../core/types.js";
1
+ import type { Model, ModelIndexer, ModelProperty, RekeyableMap, SourceModel, Type } from "../../../core/types.js";
2
2
  import { DecoratorArgs } from "../utils.js";
3
- /** @experimental */
4
- interface ModelDescriptor {
3
+ /**
4
+ * A descriptor for creating a model.
5
+ * @experimental
6
+ */
7
+ export interface ModelDescriptor {
5
8
  /**
6
9
  * The name of the Model. If name is provided, it is a Model declaration.
7
10
  * Otherwise, it is a Model expression.
@@ -23,6 +26,10 @@ interface ModelDescriptor {
23
26
  * Models that this model extends.
24
27
  */
25
28
  sourceModels?: SourceModel[];
29
+ /**
30
+ * The indexer property of the model.
31
+ */
32
+ indexer?: ModelIndexer;
26
33
  }
27
34
  /**
28
35
  * Utilities for working with models.
@@ -41,6 +48,13 @@ export interface ModelKit {
41
48
  * @param type The type to check.
42
49
  */
43
50
  is(type: Type): type is Model;
51
+ /**
52
+ * Check this is an anonyous model. Specifically, this checks if the
53
+ * model has a name.
54
+ *
55
+ * @param type The model to check.
56
+ */
57
+ isExpresion(type: Model): boolean;
44
58
  /**
45
59
  * If the input is anonymous (or the provided filter removes properties)
46
60
  * and there exists a named model with the same set of properties
@@ -58,6 +72,18 @@ export interface ModelKit {
58
72
  * properties.
59
73
  */
60
74
  getEffectiveModel(model: Model, filter?: (property: ModelProperty) => boolean): Model;
75
+ /**
76
+ * Given a model, return the type that is spread
77
+ * @returns the type that is spread or undefined if no spread
78
+ */
79
+ getSpreadType: (model: Model) => Type | undefined;
80
+ /**
81
+ * Gets all properties from a model, explicitly defined and implicitly defined.
82
+ * @param model model to get the properties from
83
+ */
84
+ getProperties(model: Model, options?: {
85
+ includeExtended?: boolean;
86
+ }): RekeyableMap<string, ModelProperty>;
61
87
  }
62
88
  interface TypekitExtension {
63
89
  /**
@@ -70,6 +96,5 @@ declare module "../define-kit.js" {
70
96
  interface Typekit extends TypekitExtension {
71
97
  }
72
98
  }
73
- export declare const ModelKit: void;
74
99
  export {};
75
100
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGtF,OAAO,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,oBAAoB;AACpB,UAAU,eAAe;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1C;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B;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;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,GAAG,KAAK,CAAC;CACvF;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,MA0BnB,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/typekit/kits/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,IAAI,EACL,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAiC,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1C;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;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;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IAElC;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,GAAG,KAAK,CAAC;IAEtF;;;OAGG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,SAAS,CAAC;IAClD;;;OAGG;IACH,aAAa,CACX,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC;AAED,UAAU,gBAAgB;IACxB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,OAAQ,SAAQ,gBAAgB;KAAG;CAC9C"}
@@ -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