@lionweb/class-core-generator 0.9.0-beta.2 → 0.9.0-beta.4
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/CHANGELOG.md +6 -0
- package/dist/generator.d.ts +4 -4
- package/dist/generator.d.ts.map +1 -1
- package/dist/helpers/imports-tracking.d.ts +2 -4
- package/dist/helpers/imports-tracking.d.ts.map +1 -1
- package/dist/helpers/imports-tracking.js +8 -20
- package/dist/helpers/imports-tracking.js.map +1 -1
- package/dist/language-file.templates.d.ts.map +1 -1
- package/dist/language-file.templates.js +4 -5
- package/dist/language-file.templates.js.map +1 -1
- package/dist/reflective-layer.templates.d.ts.map +1 -1
- package/dist/reflective-layer.templates.js +7 -14
- package/dist/reflective-layer.templates.js.map +1 -1
- package/package.json +7 -7
- package/src/generator.ts +4 -4
- package/src/helpers/imports-tracking.ts +11 -20
- package/src/language-file.templates.ts +6 -8
- package/src/reflective-layer.templates.ts +8 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.9.0 — not yet released
|
|
4
|
+
|
|
5
|
+
* Avoid name collisions between types in generated code and types imported from LionWeb itself.
|
|
6
|
+
* Make every property of `GeneratorOptions` optional.
|
|
7
|
+
|
|
8
|
+
|
|
3
9
|
## 0.8.0
|
|
4
10
|
|
|
5
11
|
* Improve dealing with unresolved references.
|
package/dist/generator.d.ts
CHANGED
|
@@ -2,21 +2,21 @@ import { Language } from "@lionweb/core";
|
|
|
2
2
|
/**
|
|
3
3
|
* A type def. for options objects configuring code generation.
|
|
4
4
|
*/
|
|
5
|
-
export type GeneratorOptions = {
|
|
5
|
+
export type GeneratorOptions = Partial<{
|
|
6
6
|
/**
|
|
7
7
|
* The `from`-part of the `import`-statement that imports the `class-core` package.
|
|
8
|
-
* Default (which
|
|
8
|
+
* Default (which should always be used!): `@lionweb/class-core`.
|
|
9
9
|
*/
|
|
10
10
|
genericImportLocation: string;
|
|
11
11
|
/**
|
|
12
12
|
* The optional header for generated files.
|
|
13
13
|
*/
|
|
14
|
-
header
|
|
14
|
+
header: string;
|
|
15
15
|
/**
|
|
16
16
|
* Whether to output logging on the `stdout`. Default: `true`.
|
|
17
17
|
*/
|
|
18
18
|
verbose: boolean;
|
|
19
|
-
}
|
|
19
|
+
}>;
|
|
20
20
|
/**
|
|
21
21
|
* Generates a file containing the API code for the given {@link Language LionWeb language}.
|
|
22
22
|
* @param language A {@link Language LionWeb language}.
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,QAAQ,EAAmB,MAAM,eAAe,CAAA;AAa/E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,QAAQ,EAAmB,MAAM,eAAe,CAAA;AAa/E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;IACnC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;CACnB,CAAC,CAAA;AAUF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,QAAQ,EAAE,gBAAgB,MAAM,EAAE,eAAe,OAAO,CAAC,gBAAgB,CAAC,KAAG,MAKvH,CAAA;AASD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,mBAAmB,MAAM,EAAE,gBAAgB,MAAM,EAAE,eAAe,OAAO,CAAC,gBAAgB,CAAC,SASvI,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,WAAW,QAAQ,EAAE,EAAE,gBAAgB,MAAM,EAAE,eAAe,OAAO,CAAC,gBAAgB,CAAC,SAmB/H,CAAA"}
|
|
@@ -6,17 +6,15 @@ export declare class Imports {
|
|
|
6
6
|
constructor(thisLanguage: Language);
|
|
7
7
|
get thisLanguageNameAsJsIdentifier(): string;
|
|
8
8
|
get thisBaseClassName(): string;
|
|
9
|
+
static importAlias: (libName: string) => string;
|
|
10
|
+
private aliased;
|
|
9
11
|
private readonly _jsonImports;
|
|
10
|
-
get jsonImports(): string[];
|
|
11
12
|
json(identifier: string): string;
|
|
12
13
|
private readonly _coreImports;
|
|
13
|
-
get coreImports(): string[];
|
|
14
14
|
core(identifier: string): string;
|
|
15
15
|
private readonly _genericImports;
|
|
16
|
-
get genericImports(): string[];
|
|
17
16
|
generic(identifier: string): string;
|
|
18
17
|
private readonly _indexImports;
|
|
19
|
-
get indexImports(): string[];
|
|
20
18
|
entity(entity: LanguageEntity): string;
|
|
21
19
|
private readonly _languageImports;
|
|
22
20
|
get languageImports(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports-tracking.d.ts","sourceRoot":"","sources":["../../src/helpers/imports-tracking.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAA;AAGzE,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,WAAkC,CAAA;AAE9F,eAAO,MAAM,0BAA0B,GAAI,UAAU,QAAQ,WACnB,CAAA;AAQ1C,qBAAa,OAAO;aAEY,YAAY,EAAE,QAAQ;gBAAtB,YAAY,EAAE,QAAQ;IAGlD,IAAI,8BAA8B,WAEjC;IAED,IAAI,iBAAiB,WAEpB;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,IAAI,
|
|
1
|
+
{"version":3,"file":"imports-tracking.d.ts","sourceRoot":"","sources":["../../src/helpers/imports-tracking.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAA;AAGzE,eAAO,MAAM,yBAAyB,GAAI,UAAU,QAAQ,WAAkC,CAAA;AAE9F,eAAO,MAAM,0BAA0B,GAAI,UAAU,QAAQ,WACnB,CAAA;AAQ1C,qBAAa,OAAO;aAEY,YAAY,EAAE,QAAQ;gBAAtB,YAAY,EAAE,QAAQ;IAGlD,IAAI,8BAA8B,WAEjC;IAED,IAAI,iBAAiB,WAEpB;IAED,OAAc,WAAW,GAAI,SAAS,MAAM,YACT;IACnC,OAAO,CAAC,OAAO,CACoC;IAEnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,IAAI,CAAC,UAAU,EAAE,MAAM;IAKvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,IAAI,CAAC,UAAU,EAAE,MAAM;IAKvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,UAAU,EAAE,MAAM;IAK1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,MAAM,CAAC,MAAM,EAAE,cAAc;IAW7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,IAAI,eAAe,aAElB;IACD,QAAQ,CAAC,QAAQ,EAAE,QAAQ;CAW9B"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
import { LionWebVersions } from "@lionweb/core";
|
|
18
|
-
import { asJSIdentifier } from "@lionweb/textgen-utils";
|
|
18
|
+
import { asJSIdentifier, withFirstUpper } from "@lionweb/textgen-utils";
|
|
19
19
|
export const importRenamingForLanguage = (language) => asJSIdentifier(language.name);
|
|
20
20
|
export const nameOfBaseClassForLanguage = (language) => asJSIdentifier(language.name) + "Base";
|
|
21
21
|
const lioncoreBuiltins = LionWebVersions.v2023_1.builtinsFacade.language;
|
|
@@ -23,6 +23,7 @@ const lioncoreBuiltinsIdentifier = nameOfBaseClassForLanguage(lioncoreBuiltins);
|
|
|
23
23
|
export class Imports {
|
|
24
24
|
constructor(thisLanguage) {
|
|
25
25
|
this.thisLanguage = thisLanguage;
|
|
26
|
+
this.aliased = (libName, identifier) => `${Imports.importAlias(libName)}.${identifier}`;
|
|
26
27
|
this._jsonImports = new Set();
|
|
27
28
|
this._coreImports = new Set();
|
|
28
29
|
this._genericImports = new Set();
|
|
@@ -35,34 +36,21 @@ export class Imports {
|
|
|
35
36
|
get thisBaseClassName() {
|
|
36
37
|
return this.thisLanguageNameAsJsIdentifier + "Base";
|
|
37
38
|
}
|
|
38
|
-
get jsonImports() {
|
|
39
|
-
return [...this._jsonImports];
|
|
40
|
-
}
|
|
41
39
|
json(identifier) {
|
|
42
40
|
this._jsonImports.add(identifier);
|
|
43
|
-
return identifier;
|
|
44
|
-
}
|
|
45
|
-
get coreImports() {
|
|
46
|
-
return [...this._coreImports];
|
|
41
|
+
return this.aliased("json", identifier);
|
|
47
42
|
}
|
|
48
43
|
core(identifier) {
|
|
49
44
|
this._coreImports.add(identifier);
|
|
50
|
-
return identifier;
|
|
51
|
-
}
|
|
52
|
-
get genericImports() {
|
|
53
|
-
return [...this._genericImports];
|
|
45
|
+
return this.aliased("core", identifier);
|
|
54
46
|
}
|
|
55
47
|
generic(identifier) {
|
|
56
48
|
this._genericImports.add(identifier);
|
|
57
|
-
return identifier;
|
|
58
|
-
}
|
|
59
|
-
get indexImports() {
|
|
60
|
-
return [...this._indexImports];
|
|
49
|
+
return this.aliased("classCore", identifier);
|
|
61
50
|
}
|
|
62
51
|
entity(entity) {
|
|
63
52
|
if (entity.language === lioncoreBuiltins) {
|
|
64
|
-
this.
|
|
65
|
-
return entity.name;
|
|
53
|
+
return this.generic(entity.name);
|
|
66
54
|
}
|
|
67
55
|
if (entity.language === this.thisLanguage) {
|
|
68
56
|
return entity.name;
|
|
@@ -75,8 +63,7 @@ export class Imports {
|
|
|
75
63
|
}
|
|
76
64
|
language(language) {
|
|
77
65
|
if (language === lioncoreBuiltins) {
|
|
78
|
-
this.
|
|
79
|
-
return lioncoreBuiltinsIdentifier;
|
|
66
|
+
return this.generic(lioncoreBuiltinsIdentifier);
|
|
80
67
|
}
|
|
81
68
|
const externalName = importRenamingForLanguage(language);
|
|
82
69
|
if (language === this.thisLanguage) {
|
|
@@ -86,4 +73,5 @@ export class Imports {
|
|
|
86
73
|
return `${externalName}.${nameOfBaseClassForLanguage(language)}`;
|
|
87
74
|
}
|
|
88
75
|
}
|
|
76
|
+
Imports.importAlias = (libName) => `$lw${withFirstUpper(libName)}`;
|
|
89
77
|
//# sourceMappingURL=imports-tracking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports-tracking.js","sourceRoot":"","sources":["../../src/helpers/imports-tracking.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC,OAAO,EAA4B,eAAe,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"imports-tracking.js","sourceRoot":"","sources":["../../src/helpers/imports-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-file.templates.d.ts","sourceRoot":"","sources":["../src/language-file.templates.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"language-file.templates.d.ts","sourceRoot":"","sources":["../src/language-file.templates.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAIjD,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,EAAE,SAAS,gBAAgB,WA4C5E,CAAA"}
|
|
@@ -21,7 +21,6 @@ import { asString, commaSeparated, when, withNewlineAppended } from "littoral-te
|
|
|
21
21
|
import { typeForLanguageEntity } from "./entity-types.templates.js";
|
|
22
22
|
import { Imports } from "./helpers/index.js";
|
|
23
23
|
import { reflectiveClassFor } from "./reflective-layer.templates.js";
|
|
24
|
-
const importStatement = (dep, items) => when(items.length > 0)([`import {`, indent(commaSeparated(sortedStringsByUppercase(items))), `} from "${dep}";`, ``]);
|
|
25
24
|
export const languageFileFor = (language, options) => {
|
|
26
25
|
const { name, version, key, id, entities } = language;
|
|
27
26
|
const imports = new Imports(language);
|
|
@@ -49,10 +48,10 @@ export const languageFileFor = (language, options) => {
|
|
|
49
48
|
*/`,
|
|
50
49
|
``,
|
|
51
50
|
``,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
`import * as ${Imports.importAlias("classCore")} from "${options.genericImportLocation}";`,
|
|
52
|
+
`import * as ${Imports.importAlias("core")} from "@lionweb/core";`,
|
|
53
|
+
`import * as ${Imports.importAlias("json")} from "@lionweb/json";`,
|
|
54
|
+
when(imports.languageImports.length > 0)(`import {`, indent(commaSeparated(sortedStringsByUppercase(imports.languageImports))), `} from "${`./index.g.js`}";`),
|
|
56
55
|
postImportsPart
|
|
57
56
|
]);
|
|
58
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-file.templates.js","sourceRoot":"","sources":["../src/language-file.templates.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAY,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"language-file.templates.js","sourceRoot":"","sources":["../src/language-file.templates.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAY,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAEpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,OAAyB,EAAE,EAAE;IAE7E,MAAM,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAA;IAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAA;IAErC,MAAM,eAAe,GAAG,iBAAiB,CACrC,QAAQ,EACR,CAAC,MAAM,EAAE,EAAE,CACP,CAAC,MAAM,YAAY,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACpI,CAAA;IACD,IAAI,OAAO,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,0FAA0F,CAAC,CAAA;IAC/H,CAAC;IAED,MAAM,eAAe,GAAG;QACpB,EAAE;QACF,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QACrC,EAAE;QACF,EAAE;QACF,eAAe;aACV,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;aAChD,GAAG,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;KAChE,CAAA;IAED,OAAO,QAAQ,CAAC;QACZ,OAAO,EAAE,MAAM,IAAI,EAAE;QACrB;;kBAEU,IAAI;kBACJ,OAAO;kBACP,GAAG;kBACH,EAAE;IAChB;QACI,EAAE;QACF,EAAE;QACF,eAAe,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,OAAO,CAAC,qBAAqB,IAAI;QAC1F,eAAe,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,wBAAwB;QAClE,eAAe,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,wBAAwB;QAClE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CACpC,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,cAAc,IAAI,CACvH;QACD,eAAe;KAClB,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflective-layer.templates.d.ts","sourceRoot":"","sources":["../src/reflective-layer.templates.ts"],"names":[],"mappings":"AAiBA,OAAO,EAcH,QAAQ,EAOX,MAAM,eAAe,CAAA;AAKtB,OAAO,EAA+B,OAAO,EAA8B,MAAM,oBAAoB,CAAA;AAErG,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"reflective-layer.templates.d.ts","sourceRoot":"","sources":["../src/reflective-layer.templates.ts"],"names":[],"mappings":"AAiBA,OAAO,EAcH,QAAQ,EAOX,MAAM,eAAe,CAAA;AAKtB,OAAO,EAA+B,OAAO,EAA8B,MAAM,oBAAoB,CAAA;AAErG,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,MAmIvC,UAAU,QAAQ,0BAuE7B,CAAA"}
|
|
@@ -27,8 +27,7 @@ export const reflectiveClassFor = (imports) => {
|
|
|
27
27
|
const qName = `${classifier.name}_${name}`;
|
|
28
28
|
return [
|
|
29
29
|
`private readonly _${qName} = new ${imports.core(metaType)}(this._${classifier.name}, "${name}", "${key}", "${id}")${optional ? ".isOptional()" : ""}${isMultiple(feature) ? ".isMultiple()" : ""};`,
|
|
30
|
-
|
|
31
|
-
`get ${qName}(): ${metaType} {`,
|
|
30
|
+
`get ${qName}(): ${imports.core(metaType)} {`,
|
|
32
31
|
indent([`this.ensureWiredUp();`, `return this._${qName};`]),
|
|
33
32
|
`}`
|
|
34
33
|
];
|
|
@@ -38,8 +37,7 @@ export const reflectiveClassFor = (imports) => {
|
|
|
38
37
|
const metaType = entityMetaType(classifier);
|
|
39
38
|
return [
|
|
40
39
|
`public readonly _${name} = new ${imports.core(metaType)}(this._language, "${name}", "${key}", "${id}"${classifier instanceof Concept ? ", " + classifier.abstract : ""})${isPartition(classifier) ? ".isPartition()" : ""};`,
|
|
41
|
-
|
|
42
|
-
`get ${name}(): ${metaType} {`,
|
|
40
|
+
`get ${name}(): ${imports.core(metaType)} {`,
|
|
43
41
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
44
42
|
`}`,
|
|
45
43
|
features.map(reflectiveMembersForFeature)
|
|
@@ -50,24 +48,21 @@ export const reflectiveClassFor = (imports) => {
|
|
|
50
48
|
const qName = `${enumeration.name}_${name}`;
|
|
51
49
|
return [
|
|
52
50
|
`private readonly _${qName} = new ${imports.core("EnumerationLiteral")}(this._${enumeration.name}, "${name}", "${key}", "${id}");`,
|
|
53
|
-
|
|
54
|
-
`get ${qName}(): EnumerationLiteral {`,
|
|
51
|
+
`get ${qName}(): ${imports.core("EnumerationLiteral")} {`,
|
|
55
52
|
indent([`this.ensureWiredUp();`, `return this._${qName};`]),
|
|
56
53
|
`}`
|
|
57
54
|
];
|
|
58
55
|
};
|
|
59
56
|
const reflectiveMembersForEnumeration = ({ name, key, id, literals }) => [
|
|
60
57
|
`public readonly _${name} = new ${imports.core("Enumeration")}(this._language, "${name}", "${key}", "${id}");`,
|
|
61
|
-
|
|
62
|
-
`get ${name}(): Enumeration {`,
|
|
58
|
+
`get ${name}(): ${imports.core("Enumeration")} {`,
|
|
63
59
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
64
60
|
`}`,
|
|
65
61
|
literals.map(reflectiveMemberForEnumerationLiteral)
|
|
66
62
|
];
|
|
67
63
|
const reflectiveMembersForPrimitiveType = ({ name, key, id }) => [
|
|
68
64
|
`public readonly _${name} = new ${imports.core("PrimitiveType")}(this._language, "${name}", "${key}", "${id}");`,
|
|
69
|
-
|
|
70
|
-
`get ${name}(): PrimitiveType {`,
|
|
65
|
+
`get ${name}(): ${imports.core("PrimitiveType")} {`,
|
|
71
66
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
72
67
|
`}`
|
|
73
68
|
];
|
|
@@ -143,10 +138,8 @@ export const reflectiveClassFor = (imports) => {
|
|
|
143
138
|
`export class ${imports.thisBaseClassName} implements ${imports.generic("ILanguageBase")} {`,
|
|
144
139
|
``,
|
|
145
140
|
indent([
|
|
146
|
-
|
|
147
|
-
`
|
|
148
|
-
// | core | (3rd x)
|
|
149
|
-
`get language(): Language {`,
|
|
141
|
+
`private readonly _language: ${imports.core("Language")} = new ${imports.core("Language")}("${imports.thisLanguageNameAsJsIdentifier}", "${version}", "${id}", "${key}");`,
|
|
142
|
+
`get language(): ${imports.core("Language")} {`,
|
|
150
143
|
indent([`this.ensureWiredUp();`, `return this._language;`]),
|
|
151
144
|
`}`,
|
|
152
145
|
``,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflective-layer.templates.js","sourceRoot":"","sources":["../src/reflective-layer.templates.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC,OAAO,EACH,UAAU,EACV,UAAU,EACV,OAAO,EACP,WAAW,EAGX,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,qBAAqB,EAGrB,IAAI,EACJ,MAAM,EACN,aAAa,EACb,QAAQ,EAEX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAW,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAErG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,cAAc;IAEd,MAAM,2BAA2B,GAAG,CAAC,OAAgB,EAAE,EAAE;QACrD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAA;QAC1C,OAAO;YACH,qBAAqB,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,UAAU,CAAC,IAAI,MAAM,IAAI,OAAO,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG;YACpM,
|
|
1
|
+
{"version":3,"file":"reflective-layer.templates.js","sourceRoot":"","sources":["../src/reflective-layer.templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/class-core-generator",
|
|
3
|
-
"version": "0.9.0-beta.
|
|
3
|
+
"version": "0.9.0-beta.4",
|
|
4
4
|
"description": "Generator for implementations of languages based on the class-core package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"release": "npm publish"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@lionweb/core": "0.9.0-beta.
|
|
31
|
-
"@lionweb/io-lionweb-mps-specific": "0.9.0-beta.
|
|
32
|
-
"@lionweb/json": "0.9.0-beta.
|
|
33
|
-
"@lionweb/textgen-utils": "0.9.0-beta.
|
|
34
|
-
"@lionweb/ts-utils": "0.9.0-beta.
|
|
35
|
-
"@lionweb/utilities": "0.9.0-beta.
|
|
30
|
+
"@lionweb/core": "0.9.0-beta.4",
|
|
31
|
+
"@lionweb/io-lionweb-mps-specific": "0.9.0-beta.4",
|
|
32
|
+
"@lionweb/json": "0.9.0-beta.4",
|
|
33
|
+
"@lionweb/textgen-utils": "0.9.0-beta.4",
|
|
34
|
+
"@lionweb/ts-utils": "0.9.0-beta.4",
|
|
35
|
+
"@lionweb/utilities": "0.9.0-beta.4",
|
|
36
36
|
"@types/node": "25.2.2",
|
|
37
37
|
"littoral-templates": "0.5.1"
|
|
38
38
|
},
|
package/src/generator.ts
CHANGED
|
@@ -31,21 +31,21 @@ const properGenericImportLocation = "@lionweb/class-core"
|
|
|
31
31
|
/**
|
|
32
32
|
* A type def. for options objects configuring code generation.
|
|
33
33
|
*/
|
|
34
|
-
export type GeneratorOptions = {
|
|
34
|
+
export type GeneratorOptions = Partial<{
|
|
35
35
|
/**
|
|
36
36
|
* The `from`-part of the `import`-statement that imports the `class-core` package.
|
|
37
|
-
* Default (which
|
|
37
|
+
* Default (which should always be used!): `@lionweb/class-core`.
|
|
38
38
|
*/
|
|
39
39
|
genericImportLocation: string
|
|
40
40
|
/**
|
|
41
41
|
* The optional header for generated files.
|
|
42
42
|
*/
|
|
43
|
-
header
|
|
43
|
+
header: string
|
|
44
44
|
/**
|
|
45
45
|
* Whether to output logging on the `stdout`. Default: `true`.
|
|
46
46
|
*/
|
|
47
47
|
verbose: boolean
|
|
48
|
-
}
|
|
48
|
+
}>
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
const withDefaults = (options?: Partial<GeneratorOptions>): GeneratorOptions => ({
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
18
|
import { Language, LanguageEntity, LionWebVersions } from "@lionweb/core"
|
|
19
|
-
import { asJSIdentifier } from "@lionweb/textgen-utils"
|
|
19
|
+
import { asJSIdentifier, withFirstUpper } from "@lionweb/textgen-utils"
|
|
20
20
|
|
|
21
21
|
export const importRenamingForLanguage = (language: Language) => asJSIdentifier(language.name)
|
|
22
22
|
|
|
@@ -42,41 +42,33 @@ export class Imports {
|
|
|
42
42
|
return this.thisLanguageNameAsJsIdentifier + "Base"
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
public static importAlias = (libName: string) =>
|
|
46
|
+
`$lw${withFirstUpper(libName)}`
|
|
47
|
+
private aliased = (libName: string, identifier: string) =>
|
|
48
|
+
`${Imports.importAlias(libName)}.${identifier}`
|
|
49
|
+
|
|
45
50
|
private readonly _jsonImports = new Set<string>()
|
|
46
|
-
get jsonImports() {
|
|
47
|
-
return [...this._jsonImports]
|
|
48
|
-
}
|
|
49
51
|
json(identifier: string) {
|
|
50
52
|
this._jsonImports.add(identifier)
|
|
51
|
-
return identifier
|
|
53
|
+
return this.aliased("json", identifier)
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
private readonly _coreImports = new Set<string>()
|
|
55
|
-
get coreImports() {
|
|
56
|
-
return [...this._coreImports]
|
|
57
|
-
}
|
|
58
57
|
core(identifier: string) {
|
|
59
58
|
this._coreImports.add(identifier)
|
|
60
|
-
return identifier
|
|
59
|
+
return this.aliased("core", identifier)
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
private readonly _genericImports = new Set<string>()
|
|
64
|
-
get genericImports() {
|
|
65
|
-
return [...this._genericImports]
|
|
66
|
-
}
|
|
67
63
|
generic(identifier: string) {
|
|
68
64
|
this._genericImports.add(identifier)
|
|
69
|
-
return identifier
|
|
65
|
+
return this.aliased("classCore", identifier)
|
|
70
66
|
}
|
|
71
67
|
|
|
72
68
|
private readonly _indexImports = new Set<string>()
|
|
73
|
-
get indexImports() {
|
|
74
|
-
return [...this._indexImports]
|
|
75
|
-
}
|
|
76
69
|
entity(entity: LanguageEntity) {
|
|
77
70
|
if (entity.language === lioncoreBuiltins) {
|
|
78
|
-
this.
|
|
79
|
-
return entity.name
|
|
71
|
+
return this.generic(entity.name)
|
|
80
72
|
}
|
|
81
73
|
if (entity.language === this.thisLanguage) {
|
|
82
74
|
return entity.name
|
|
@@ -91,8 +83,7 @@ export class Imports {
|
|
|
91
83
|
}
|
|
92
84
|
language(language: Language) {
|
|
93
85
|
if (language === lioncoreBuiltins) {
|
|
94
|
-
this.
|
|
95
|
-
return lioncoreBuiltinsIdentifier
|
|
86
|
+
return this.generic(lioncoreBuiltinsIdentifier)
|
|
96
87
|
}
|
|
97
88
|
const externalName = importRenamingForLanguage(language)
|
|
98
89
|
if (language === this.thisLanguage) {
|
|
@@ -25,10 +25,6 @@ import { GeneratorOptions } from "./generator.js"
|
|
|
25
25
|
import { Imports } from "./helpers/index.js"
|
|
26
26
|
import { reflectiveClassFor } from "./reflective-layer.templates.js"
|
|
27
27
|
|
|
28
|
-
const importStatement = (dep: string, items: string[]) =>
|
|
29
|
-
when(items.length > 0)([`import {`, indent(commaSeparated(sortedStringsByUppercase(items))), `} from "${dep}";`, ``])
|
|
30
|
-
|
|
31
|
-
|
|
32
28
|
export const languageFileFor = (language: Language, options: GeneratorOptions) => {
|
|
33
29
|
|
|
34
30
|
const {name, version, key, id, entities} = language
|
|
@@ -65,10 +61,12 @@ export const languageFileFor = (language: Language, options: GeneratorOptions) =
|
|
|
65
61
|
*/`,
|
|
66
62
|
``,
|
|
67
63
|
``,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
`import * as ${Imports.importAlias("classCore")} from "${options.genericImportLocation}";`,
|
|
65
|
+
`import * as ${Imports.importAlias("core")} from "@lionweb/core";`,
|
|
66
|
+
`import * as ${Imports.importAlias("json")} from "@lionweb/json";`,
|
|
67
|
+
when(imports.languageImports.length > 0)(
|
|
68
|
+
`import {`, indent(commaSeparated(sortedStringsByUppercase(imports.languageImports))), `} from "${`./index.g.js`}";`
|
|
69
|
+
),
|
|
72
70
|
postImportsPart
|
|
73
71
|
])
|
|
74
72
|
}
|
|
@@ -52,8 +52,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
52
52
|
const qName = `${classifier.name}_${name}`
|
|
53
53
|
return [
|
|
54
54
|
`private readonly _${qName} = new ${imports.core(metaType)}(this._${classifier.name}, "${name}", "${key}", "${id}")${optional ? ".isOptional()" : ""}${isMultiple(feature) ? ".isMultiple()" : ""};`,
|
|
55
|
-
|
|
56
|
-
`get ${qName}(): ${metaType} {`,
|
|
55
|
+
`get ${qName}(): ${imports.core(metaType)} {`,
|
|
57
56
|
indent([`this.ensureWiredUp();`, `return this._${qName};`]),
|
|
58
57
|
`}`
|
|
59
58
|
]
|
|
@@ -64,8 +63,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
64
63
|
const metaType = entityMetaType(classifier)
|
|
65
64
|
return [
|
|
66
65
|
`public readonly _${name} = new ${imports.core(metaType)}(this._language, "${name}", "${key}", "${id}"${classifier instanceof Concept ? ", " + classifier.abstract : ""})${isPartition(classifier) ? ".isPartition()" : ""};`,
|
|
67
|
-
|
|
68
|
-
`get ${name}(): ${metaType} {`,
|
|
66
|
+
`get ${name}(): ${imports.core(metaType)} {`,
|
|
69
67
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
70
68
|
`}`,
|
|
71
69
|
features.map(reflectiveMembersForFeature)
|
|
@@ -78,8 +76,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
78
76
|
const qName = `${enumeration.name}_${name}`
|
|
79
77
|
return [
|
|
80
78
|
`private readonly _${qName} = new ${imports.core("EnumerationLiteral")}(this._${enumeration.name}, "${name}", "${key}", "${id}");`,
|
|
81
|
-
|
|
82
|
-
`get ${qName}(): EnumerationLiteral {`,
|
|
79
|
+
`get ${qName}(): ${imports.core("EnumerationLiteral")} {`,
|
|
83
80
|
indent([`this.ensureWiredUp();`, `return this._${qName};`]),
|
|
84
81
|
`}`
|
|
85
82
|
]
|
|
@@ -87,8 +84,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
87
84
|
|
|
88
85
|
const reflectiveMembersForEnumeration = ({ name, key, id, literals }: Enumeration) => [
|
|
89
86
|
`public readonly _${name} = new ${imports.core("Enumeration")}(this._language, "${name}", "${key}", "${id}");`,
|
|
90
|
-
|
|
91
|
-
`get ${name}(): Enumeration {`,
|
|
87
|
+
`get ${name}(): ${imports.core("Enumeration")} {`,
|
|
92
88
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
93
89
|
`}`,
|
|
94
90
|
literals.map(reflectiveMemberForEnumerationLiteral)
|
|
@@ -96,8 +92,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
96
92
|
|
|
97
93
|
const reflectiveMembersForPrimitiveType = ({ name, key, id }: PrimitiveType) => [
|
|
98
94
|
`public readonly _${name} = new ${imports.core("PrimitiveType")}(this._language, "${name}", "${key}", "${id}");`,
|
|
99
|
-
|
|
100
|
-
`get ${name}(): PrimitiveType {`,
|
|
95
|
+
`get ${name}(): ${imports.core("PrimitiveType")} {`,
|
|
101
96
|
indent([`this.ensureWiredUp();`, `return this._${name};`]),
|
|
102
97
|
`}`
|
|
103
98
|
]
|
|
@@ -145,7 +140,7 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
145
140
|
return `// unhandled feature <${featureMetaType(feature)}>"${feature.name}"`
|
|
146
141
|
}
|
|
147
142
|
|
|
148
|
-
const isConcreteClassifier = (classifier: Classifier): classifier is Annotation | Concept =>
|
|
143
|
+
const isConcreteClassifier = (classifier: Classifier): classifier is (Annotation | Concept) =>
|
|
149
144
|
classifier instanceof Annotation || classifier instanceof Concept
|
|
150
145
|
|
|
151
146
|
const wireUpStatementsForEntity = (entity: LanguageEntity) => {
|
|
@@ -189,10 +184,8 @@ export const reflectiveClassFor = (imports: Imports) => {
|
|
|
189
184
|
`export class ${imports.thisBaseClassName} implements ${imports.generic("ILanguageBase")} {`,
|
|
190
185
|
``,
|
|
191
186
|
indent([
|
|
192
|
-
|
|
193
|
-
`
|
|
194
|
-
// | core | (3rd x)
|
|
195
|
-
`get language(): Language {`,
|
|
187
|
+
`private readonly _language: ${imports.core("Language")} = new ${imports.core("Language")}("${imports.thisLanguageNameAsJsIdentifier}", "${version}", "${id}", "${key}");`,
|
|
188
|
+
`get language(): ${imports.core("Language")} {`,
|
|
196
189
|
indent([`this.ensureWiredUp();`, `return this._language;`]),
|
|
197
190
|
`}`,
|
|
198
191
|
``,
|