@typespec/compiler 0.52.0-dev.5 → 0.52.0-dev.6
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/.scripts/build-init-templates.js +5 -1
- package/dist/.scripts/build-init-templates.js.map +1 -1
- package/dist/.scripts/helpers.d.ts.map +1 -1
- package/dist/.scripts/helpers.js +2 -1
- package/dist/.scripts/helpers.js.map +1 -1
- package/dist/manifest.js +2 -2
- package/dist/src/init/file-templating.d.ts +6 -0
- package/dist/src/init/file-templating.d.ts.map +1 -1
- package/dist/src/init/file-templating.js +10 -0
- package/dist/src/init/file-templating.js.map +1 -1
- package/dist/src/init/scaffold.js +1 -1
- package/dist/src/init/scaffold.js.map +1 -1
- package/package.json +1 -1
- package/templates/__snapshots__/emitter-ts/.eslintrc.yml +14 -0
- package/templates/__snapshots__/emitter-ts/package.json +37 -0
- package/templates/__snapshots__/emitter-ts/prettierrc.yaml +8 -0
- package/templates/__snapshots__/emitter-ts/src/emitter.ts +10 -0
- package/templates/__snapshots__/emitter-ts/src/index.ts +2 -0
- package/templates/__snapshots__/emitter-ts/src/lib.ts +8 -0
- package/templates/__snapshots__/emitter-ts/src/testing/index.ts +8 -0
- package/templates/__snapshots__/emitter-ts/test/hello.test.ts +10 -0
- package/templates/{emitter-ts → __snapshots__/emitter-ts}/test/test-host.ts +6 -6
- package/templates/__snapshots__/emitter-ts/tsconfig.json +17 -0
- package/templates/emitter-ts/test/test-host.ts.mu +47 -0
- package/templates/scaffolding.json +9 -1
|
@@ -25,7 +25,11 @@ const builtInTemplates = {
|
|
|
25
25
|
compilerVersion: minCompilerVersion,
|
|
26
26
|
libraries: [],
|
|
27
27
|
config: undefined,
|
|
28
|
-
files:
|
|
28
|
+
files: [
|
|
29
|
+
{ destination: "main.tsp", skipGeneration: true },
|
|
30
|
+
{ destination: "tspconfig.yaml", skipGeneration: true },
|
|
31
|
+
...(await localDir("emitter-ts")),
|
|
32
|
+
],
|
|
29
33
|
},
|
|
30
34
|
};
|
|
31
35
|
const distDir = resolve(packageRoot, "dist");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-init-templates.js","sourceRoot":"","sources":["../../.scripts/build-init-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"build-init-templates.js","sourceRoot":"","sources":["../../.scripts/build-init-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzE,CAAC;AACF,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;AAE3C,MAAM,gBAAgB,GAAiC;IACrD,KAAK,EAAE;QACL,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,kBAAkB;KACpC;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,kDAAkD;QAC/D,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;QACrE,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,oBAAoB,CAAC;SAC7B;KACF;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EAAE,qDAAqD;QAClE,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE;YACL,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE;YACjD,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,IAAI,EAAE;YACvD,GAAG,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;SAClC;KACF;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC7C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,MAAM,SAAS,CACb,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,CAAC,EACrD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../.scripts/helpers.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAyD,CAAC;AA+BlF,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../.scripts/helpers.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAyD,CAAC;AA+BlF,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAGjE;AAED,wBAAsB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAGnE"}
|
package/dist/.scripts/helpers.js
CHANGED
|
@@ -34,7 +34,8 @@ async function readFilesInDirRecursively(dir) {
|
|
|
34
34
|
return files;
|
|
35
35
|
}
|
|
36
36
|
export function localFile(templateName, path) {
|
|
37
|
-
|
|
37
|
+
const destination = path.endsWith(".mu") ? path.slice(0, -3) : path;
|
|
38
|
+
return { path: join(templateName, path), destination };
|
|
38
39
|
}
|
|
39
40
|
export async function localDir(templateName) {
|
|
40
41
|
const files = await readFilesInDirRecursively(resolve(templateDir, templateName));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../.scripts/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClF,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,GAAW;IAClD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,MAAM,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,YAAoB,EAAE,IAAY;IAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../.scripts/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClF,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,GAAW;IAClD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,MAAM,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,YAAoB,EAAE,IAAY;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,YAAoB;IACjD,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAClF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/manifest.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InitTemplate } from "./init-template.js";
|
|
2
2
|
import { ScaffoldingConfig } from "./scaffold.js";
|
|
3
3
|
export type FileTemplatingContext = Omit<InitTemplate, "libraries"> & ScaffoldingConfig & {
|
|
4
|
+
casing: CasingUtils;
|
|
4
5
|
/**
|
|
5
6
|
* NormalizeVersion function replaces `-` with `_`.
|
|
6
7
|
*/
|
|
@@ -14,6 +15,11 @@ export type FileTemplatingContext = Omit<InitTemplate, "libraries"> & Scaffoldin
|
|
|
14
15
|
*/
|
|
15
16
|
normalizePackageName: () => (text: string, render: any) => string;
|
|
16
17
|
};
|
|
18
|
+
export interface CasingUtils {
|
|
19
|
+
readonly camelCase: () => (text: string, render: (...args: any) => string) => string;
|
|
20
|
+
readonly pascalCase: () => (text: string, render: (...args: any) => string) => string;
|
|
21
|
+
readonly kebabCase: () => (text: string, render: (...args: any) => string) => string;
|
|
22
|
+
}
|
|
17
23
|
export declare function createFileTemplatingContext(config: ScaffoldingConfig): FileTemplatingContext;
|
|
18
24
|
export declare function render(content: string, context: FileTemplatingContext): string;
|
|
19
25
|
//# sourceMappingURL=file-templating.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-templating.d.ts","sourceRoot":"","sources":["../../../src/init/file-templating.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-templating.d.ts","sourceRoot":"","sources":["../../../src/init/file-templating.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GACjE,iBAAiB,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IAE9D;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IAEzD;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;CACnE,CAAC;AAEJ,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC;CACtF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,qBAAqB,CAS5F;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAE9E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { camelCase, kebabCase, pascalCase } from "change-case";
|
|
1
2
|
import Mustache from "mustache";
|
|
2
3
|
export function createFileTemplatingContext(config) {
|
|
3
4
|
return {
|
|
@@ -6,11 +7,20 @@ export function createFileTemplatingContext(config) {
|
|
|
6
7
|
normalizeVersion,
|
|
7
8
|
toLowerCase,
|
|
8
9
|
normalizePackageName,
|
|
10
|
+
casing,
|
|
9
11
|
};
|
|
10
12
|
}
|
|
11
13
|
export function render(content, context) {
|
|
12
14
|
return Mustache.render(content, context);
|
|
13
15
|
}
|
|
16
|
+
const casing = {
|
|
17
|
+
camelCase: createNamingUtils(camelCase),
|
|
18
|
+
kebabCase: createNamingUtils(kebabCase),
|
|
19
|
+
pascalCase: createNamingUtils(pascalCase),
|
|
20
|
+
};
|
|
21
|
+
function createNamingUtils(fn) {
|
|
22
|
+
return () => (text, render) => fn(render(text));
|
|
23
|
+
}
|
|
14
24
|
const normalizeVersion = function () {
|
|
15
25
|
return function (text, render) {
|
|
16
26
|
return render(text).replaceAll("-", "_");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-templating.js","sourceRoot":"","sources":["../../../src/init/file-templating.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"file-templating.js","sourceRoot":"","sources":["../../../src/init/file-templating.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,QAAQ,MAAM,UAAU,CAAC;AA6BhC,MAAM,UAAU,2BAA2B,CAAC,MAAyB;IACnE,OAAO;QACL,GAAG,MAAM,CAAC,QAAQ;QAClB,GAAG,MAAM;QACT,gBAAgB;QAChB,WAAW;QACX,oBAAoB;QACpB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,OAA8B;IACpE,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,MAAM,GAAgB;IAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACvC,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC;CAC1C,CAAC;AAEF,SAAS,iBAAiB,CAAC,EAA4B;IACrD,OAAO,GAAG,EAAE,CAAC,CAAC,IAAY,EAAE,MAAgC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,gBAAgB,GAAG;IACvB,OAAO,UAAU,IAAY,EAAE,MAAW;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,OAAO,UAAU,IAAY,EAAE,MAAW;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,OAAO,UAAU,IAAY,EAAE,MAAW;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -38,7 +38,7 @@ export async function scaffoldNewProject(host, config) {
|
|
|
38
38
|
function isFileSkipGeneration(fileName, files) {
|
|
39
39
|
var _a;
|
|
40
40
|
for (const file of files) {
|
|
41
|
-
if (file.
|
|
41
|
+
if (file.destination === fileName) {
|
|
42
42
|
return (_a = file.skipGeneration) !== null && _a !== void 0 ? _a : false;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/init/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAyB,2BAA2B,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA2ClG,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAsB,EACtB,MAAkC;;IAElC,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,MAAA,MAAA,MAAM,CAAC,SAAS,mCAAI,MAAA,QAAQ,CAAC,SAAS,0CAAE,GAAG,CAAC,gBAAgB,CAAC,mCAAI,EAAE;QAC9E,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,mCAAI,GAAG;QAC9B,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,mCAAI,EAAE;QACvB,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,EAAE;QACjC,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE;QACnC,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE;QACnC,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAkB,EAAE,MAAyB;IACpF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,KAAyB;;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/init/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
root: true
|
|
2
|
+
env:
|
|
3
|
+
es2021: true
|
|
4
|
+
node: true
|
|
5
|
+
extends:
|
|
6
|
+
- eslint:recommended
|
|
7
|
+
- plugin:@typescript-eslint/recommended
|
|
8
|
+
parser: "@typescript-eslint/parser"
|
|
9
|
+
parserOptions:
|
|
10
|
+
ecmaVersion: latest
|
|
11
|
+
sourceType: module
|
|
12
|
+
plugins:
|
|
13
|
+
- "@typescript-eslint"
|
|
14
|
+
rules: {}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "emitter-ts",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/src/index.d.ts",
|
|
9
|
+
"default": "./dist/src/index.js"
|
|
10
|
+
},
|
|
11
|
+
"./testing": {
|
|
12
|
+
"types": "./dist/src/testing/index.d.ts",
|
|
13
|
+
"default": "./dist/src/testing/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@typespec/compiler": "latest"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "latest",
|
|
21
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
22
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
23
|
+
"eslint": "^8.45.0",
|
|
24
|
+
"typescript": "^5.3.3",
|
|
25
|
+
"prettier": "^3.0.3"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"watch": "tsc --watch",
|
|
30
|
+
"test": "node --test ./dist/test/",
|
|
31
|
+
"lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
|
|
32
|
+
"lint:fix": "eslint . --report-unused-disable-directives --fix",
|
|
33
|
+
"format": "prettier . --write",
|
|
34
|
+
"format:check": "prettier --check ."
|
|
35
|
+
},
|
|
36
|
+
"private": true
|
|
37
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EmitContext, emitFile, resolvePath } from "@typespec/compiler";
|
|
2
|
+
|
|
3
|
+
export async function $onEmit(context: EmitContext) {
|
|
4
|
+
if (!context.program.compilerOptions.noEmit) {
|
|
5
|
+
await emitFile(context.program, {
|
|
6
|
+
path: resolvePath(context.emitterOutputDir, "output.txt"),
|
|
7
|
+
content: "Hello world\n",
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { resolvePath } from "@typespec/compiler";
|
|
2
|
+
import { createTestLibrary, TypeSpecTestLibrary } from "@typespec/compiler/testing";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
|
|
5
|
+
export const TestLibrary: TypeSpecTestLibrary = createTestLibrary({
|
|
6
|
+
name: "emitter-ts",
|
|
7
|
+
packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
|
|
8
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { strictEqual } from "node:assert";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { emit } from "./test-host.js";
|
|
4
|
+
|
|
5
|
+
describe("hello", () => {
|
|
6
|
+
it("emit output.txt with content hello world", async () => {
|
|
7
|
+
const results = await emit(`op test(): void;`);
|
|
8
|
+
strictEqual(results["output.txt"], "Hello world\n");
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -6,19 +6,19 @@ import {
|
|
|
6
6
|
} from "@typespec/compiler/testing";
|
|
7
7
|
import { TestLibrary } from "../src/testing/index.js";
|
|
8
8
|
|
|
9
|
-
export async function
|
|
9
|
+
export async function createEmitterTsTestHost() {
|
|
10
10
|
return createTestHost({
|
|
11
11
|
libraries: [TestLibrary],
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export async function
|
|
16
|
-
const host = await
|
|
15
|
+
export async function createEmitterTsTestRunner() {
|
|
16
|
+
const host = await createEmitterTsTestHost();
|
|
17
17
|
|
|
18
18
|
return createTestWrapper(host, {
|
|
19
19
|
compilerOptions: {
|
|
20
20
|
noEmit: false,
|
|
21
|
-
emit: ["
|
|
21
|
+
emit: ["emitter-ts"],
|
|
22
22
|
},
|
|
23
23
|
});
|
|
24
24
|
}
|
|
@@ -26,11 +26,11 @@ export async function createMyTestRunner() {
|
|
|
26
26
|
export async function emitWithDiagnostics(
|
|
27
27
|
code: string
|
|
28
28
|
): Promise<[Record<string, string>, readonly Diagnostic[]]> {
|
|
29
|
-
const runner = await
|
|
29
|
+
const runner = await createEmitterTsTestRunner();
|
|
30
30
|
await runner.compileAndDiagnose(code, {
|
|
31
31
|
outputDir: "tsp-output",
|
|
32
32
|
});
|
|
33
|
-
const emitterOutputDir = "./tsp-output/
|
|
33
|
+
const emitterOutputDir = "./tsp-output/emitter-ts";
|
|
34
34
|
const files = await runner.program.host.readDir(emitterOutputDir);
|
|
35
35
|
|
|
36
36
|
const result: Record<string, string> = {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"module": "NodeNext",
|
|
6
|
+
"moduleResolution": "NodeNext",
|
|
7
|
+
"lib": ["ES2022"],
|
|
8
|
+
"rootDir": ".",
|
|
9
|
+
"outDir": "dist",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"declaration": true,
|
|
12
|
+
|
|
13
|
+
/* Linting */
|
|
14
|
+
"strict": true
|
|
15
|
+
},
|
|
16
|
+
"include": ["src", "test"]
|
|
17
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Diagnostic, resolvePath } from "@typespec/compiler";
|
|
2
|
+
import {
|
|
3
|
+
createTestHost,
|
|
4
|
+
createTestWrapper,
|
|
5
|
+
expectDiagnosticEmpty,
|
|
6
|
+
} from "@typespec/compiler/testing";
|
|
7
|
+
import { TestLibrary } from "../src/testing/index.js";
|
|
8
|
+
|
|
9
|
+
export async function create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestHost() {
|
|
10
|
+
return createTestHost({
|
|
11
|
+
libraries: [TestLibrary],
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export async function create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestRunner() {
|
|
16
|
+
const host = await create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestHost();
|
|
17
|
+
|
|
18
|
+
return createTestWrapper(host, {
|
|
19
|
+
compilerOptions: {
|
|
20
|
+
noEmit: false,
|
|
21
|
+
emit: ["{{name}}"],
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function emitWithDiagnostics(
|
|
27
|
+
code: string
|
|
28
|
+
): Promise<[Record<string, string>, readonly Diagnostic[]]> {
|
|
29
|
+
const runner = await create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestRunner();
|
|
30
|
+
await runner.compileAndDiagnose(code, {
|
|
31
|
+
outputDir: "tsp-output",
|
|
32
|
+
});
|
|
33
|
+
const emitterOutputDir = "./tsp-output/{{name}}";
|
|
34
|
+
const files = await runner.program.host.readDir(emitterOutputDir);
|
|
35
|
+
|
|
36
|
+
const result: Record<string, string> = {};
|
|
37
|
+
for (const file of files) {
|
|
38
|
+
result[file] = (await runner.program.host.readFile(resolvePath(emitterOutputDir, file))).text;
|
|
39
|
+
}
|
|
40
|
+
return [result, runner.program.diagnostics];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function emit(code: string): Promise<Record<string, string>> {
|
|
44
|
+
const [result, diagnostics] = await emitWithDiagnostics(code);
|
|
45
|
+
expectDiagnosticEmpty(diagnostics);
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
"compilerVersion": "0.51.0",
|
|
27
27
|
"libraries": [],
|
|
28
28
|
"files": [
|
|
29
|
+
{
|
|
30
|
+
"destination": "main.tsp",
|
|
31
|
+
"skipGeneration": true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"destination": "tspconfig.yaml",
|
|
35
|
+
"skipGeneration": true
|
|
36
|
+
},
|
|
29
37
|
{
|
|
30
38
|
"path": "emitter-ts/.eslintrc.yml",
|
|
31
39
|
"destination": ".eslintrc.yml"
|
|
@@ -59,7 +67,7 @@
|
|
|
59
67
|
"destination": "test/hello.test.ts"
|
|
60
68
|
},
|
|
61
69
|
{
|
|
62
|
-
"path": "emitter-ts/test/test-host.ts",
|
|
70
|
+
"path": "emitter-ts/test/test-host.ts.mu",
|
|
63
71
|
"destination": "test/test-host.ts"
|
|
64
72
|
},
|
|
65
73
|
{
|