@typespec/compiler 0.66.0-dev.0 → 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.
- package/dist/generated-defs/TypeSpec.d.ts +60 -5
- package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
- package/dist/manifest.js +2 -2
- package/dist/src/core/cli/cli.js +2 -1
- package/dist/src/core/cli/cli.js.map +1 -1
- package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts +6 -0
- package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.d.ts.map +1 -0
- package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js +15 -0
- package/dist/src/core/compiler-code-fixes/remove-unused-code.codefix.js.map +1 -0
- package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.d.ts +3 -0
- package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.d.ts.map +1 -0
- package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.js +49 -0
- package/dist/src/core/compiler-code-fixes/triple-quote-indent.codefix.js.map +1 -0
- package/dist/src/core/decorator-utils.d.ts.map +1 -1
- package/dist/src/core/decorator-utils.js +6 -0
- package/dist/src/core/decorator-utils.js.map +1 -1
- package/dist/src/core/helpers/discriminator-utils.d.ts +16 -2
- package/dist/src/core/helpers/discriminator-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/discriminator-utils.js +80 -10
- package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
- package/dist/src/core/helpers/syntax-utils.d.ts +1 -0
- package/dist/src/core/helpers/syntax-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/syntax-utils.js +28 -0
- package/dist/src/core/helpers/syntax-utils.js.map +1 -1
- package/dist/src/core/intrinsic-type-state.d.ts +2 -0
- package/dist/src/core/intrinsic-type-state.d.ts.map +1 -1
- package/dist/src/core/intrinsic-type-state.js +2 -0
- package/dist/src/core/intrinsic-type-state.js.map +1 -1
- package/dist/src/core/linter.d.ts +11 -2
- package/dist/src/core/linter.d.ts.map +1 -1
- package/dist/src/core/linter.js +51 -3
- package/dist/src/core/linter.js.map +1 -1
- package/dist/src/core/messages.d.ts +17 -2
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +3 -0
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/name-resolver.d.ts +3 -1
- package/dist/src/core/name-resolver.d.ts.map +1 -1
- package/dist/src/core/name-resolver.js +40 -1
- package/dist/src/core/name-resolver.js.map +1 -1
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +1 -1
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/program.d.ts.map +1 -1
- package/dist/src/core/program.js +4 -3
- package/dist/src/core/program.js.map +1 -1
- package/dist/src/core/scanner.d.ts.map +1 -1
- package/dist/src/core/scanner.js +13 -6
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/experimental/typekit/define-kit.d.ts +1 -0
- package/dist/src/experimental/typekit/define-kit.d.ts.map +1 -1
- package/dist/src/experimental/typekit/define-kit.js +14 -1
- package/dist/src/experimental/typekit/define-kit.js.map +1 -1
- package/dist/src/experimental/typekit/index.d.ts.map +1 -1
- package/dist/src/experimental/typekit/index.js +9 -3
- package/dist/src/experimental/typekit/index.js.map +1 -1
- package/dist/src/experimental/typekit/kits/array.d.ts +28 -0
- package/dist/src/experimental/typekit/kits/array.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/array.js +26 -0
- package/dist/src/experimental/typekit/kits/array.js.map +1 -0
- package/dist/src/experimental/typekit/kits/builtin.d.ts +117 -0
- package/dist/src/experimental/typekit/kits/builtin.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/builtin.js +81 -0
- package/dist/src/experimental/typekit/kits/builtin.js.map +1 -0
- package/dist/src/experimental/typekit/kits/enum-member.d.ts +52 -0
- package/dist/src/experimental/typekit/kits/enum-member.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/enum-member.js +22 -0
- package/dist/src/experimental/typekit/kits/enum-member.js.map +1 -0
- package/dist/src/experimental/typekit/kits/enum.d.ts +54 -0
- package/dist/src/experimental/typekit/kits/enum.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/enum.js +47 -0
- package/dist/src/experimental/typekit/kits/enum.js.map +1 -0
- package/dist/src/experimental/typekit/kits/index.d.ts +7 -0
- package/dist/src/experimental/typekit/kits/index.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/index.js +7 -0
- package/dist/src/experimental/typekit/kits/index.js.map +1 -1
- package/dist/src/experimental/typekit/kits/model-property.d.ts +29 -1
- package/dist/src/experimental/typekit/kits/model-property.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/model-property.js +11 -0
- package/dist/src/experimental/typekit/kits/model-property.js.map +1 -1
- package/dist/src/experimental/typekit/kits/model.d.ts +29 -4
- package/dist/src/experimental/typekit/kits/model.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/model.js +49 -2
- package/dist/src/experimental/typekit/kits/model.js.map +1 -1
- package/dist/src/experimental/typekit/kits/operation.d.ts +49 -0
- package/dist/src/experimental/typekit/kits/operation.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/operation.js +28 -0
- package/dist/src/experimental/typekit/kits/operation.js.map +1 -0
- package/dist/src/experimental/typekit/kits/record.d.ts +33 -0
- package/dist/src/experimental/typekit/kits/record.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/record.js +26 -0
- package/dist/src/experimental/typekit/kits/record.js.map +1 -0
- package/dist/src/experimental/typekit/kits/type.d.ts +94 -1
- package/dist/src/experimental/typekit/kits/type.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/type.js +59 -0
- package/dist/src/experimental/typekit/kits/type.js.map +1 -1
- package/dist/src/experimental/typekit/kits/union-variant.d.ts +5 -1
- package/dist/src/experimental/typekit/kits/union-variant.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/union-variant.js.map +1 -1
- package/dist/src/experimental/typekit/kits/union.d.ts +15 -1
- package/dist/src/experimental/typekit/kits/union.d.ts.map +1 -1
- package/dist/src/experimental/typekit/kits/union.js +7 -0
- package/dist/src/experimental/typekit/kits/union.js.map +1 -1
- package/dist/src/experimental/typekit/kits/value.d.ts +84 -0
- package/dist/src/experimental/typekit/kits/value.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/value.js +81 -0
- package/dist/src/experimental/typekit/kits/value.js.map +1 -0
- package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts +7 -0
- package/dist/src/experimental/typekit/utils/get-plausible-name.d.ts.map +1 -0
- package/dist/src/experimental/typekit/utils/get-plausible-name.js +17 -0
- package/dist/src/experimental/typekit/utils/get-plausible-name.js.map +1 -0
- package/dist/src/experimental/typekit/utils/index.d.ts +2 -0
- package/dist/src/experimental/typekit/utils/index.d.ts.map +1 -0
- package/dist/src/experimental/typekit/utils/index.js +2 -0
- package/dist/src/experimental/typekit/utils/index.js.map +1 -0
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +1 -29
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/init/scaffold.d.ts.map +1 -1
- package/dist/src/init/scaffold.js +7 -9
- package/dist/src/init/scaffold.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +3 -2
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +15 -3
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/lib/tsp-index.d.ts.map +1 -1
- package/dist/src/lib/tsp-index.js +2 -1
- package/dist/src/lib/tsp-index.js.map +1 -1
- package/dist/src/server/compile-service.d.ts.map +1 -1
- package/dist/src/server/compile-service.js +13 -4
- package/dist/src/server/compile-service.js.map +1 -1
- package/dist/src/server/serverlib.d.ts.map +1 -1
- package/dist/src/server/serverlib.js +15 -2
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/types.d.ts +2 -1
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js.map +1 -1
- package/lib/std/decorators.tsp +74 -5
- package/package.json +2 -2
- 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;
|
|
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;
|
|
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
|
-
/**
|
|
4
|
-
|
|
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,
|
|
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
|
-
|
|
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;
|
|
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
|