@typespec/compiler 0.52.0-dev.10 → 0.52.0-dev.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/.scripts/build-init-templates.js +11 -1
  2. package/dist/.scripts/build-init-templates.js.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/core/index.d.ts +1 -1
  5. package/dist/src/core/index.d.ts.map +1 -1
  6. package/dist/src/core/index.js +1 -1
  7. package/dist/src/core/index.js.map +1 -1
  8. package/dist/src/core/node-host.d.ts +1 -0
  9. package/dist/src/core/node-host.d.ts.map +1 -1
  10. package/dist/src/core/node-host.js +2 -2
  11. package/dist/src/core/node-host.js.map +1 -1
  12. package/dist/src/init/core-templates.d.ts.map +1 -1
  13. package/dist/src/init/core-templates.js +2 -3
  14. package/dist/src/init/core-templates.js.map +1 -1
  15. package/dist/src/init/init.d.ts.map +1 -1
  16. package/dist/src/init/init.js +3 -4
  17. package/dist/src/init/init.js.map +1 -1
  18. package/package.json +1 -1
  19. package/templates/__snapshots__/emitter-ts/src/testing/index.ts +5 -7
  20. package/templates/__snapshots__/emitter-ts/test/test-host.ts +2 -2
  21. package/templates/__snapshots__/library-ts/.eslintrc.yml +14 -0
  22. package/templates/__snapshots__/library-ts/lib/decorators.tsp +12 -0
  23. package/templates/__snapshots__/library-ts/lib/main.tsp +1 -0
  24. package/templates/__snapshots__/library-ts/package.json +40 -0
  25. package/templates/__snapshots__/library-ts/prettierrc.yaml +8 -0
  26. package/templates/__snapshots__/library-ts/src/decorators.ts +33 -0
  27. package/templates/__snapshots__/library-ts/src/index.ts +2 -0
  28. package/templates/__snapshots__/library-ts/src/lib.ts +20 -0
  29. package/templates/__snapshots__/library-ts/src/linter.ts +14 -0
  30. package/templates/__snapshots__/library-ts/src/rules/no-interfaces.rule.ts +19 -0
  31. package/templates/__snapshots__/library-ts/src/testing/index.ts +8 -0
  32. package/templates/__snapshots__/library-ts/test/decorators.test.ts +48 -0
  33. package/templates/__snapshots__/library-ts/test/rules/no-interfaces.rule.test.ts +29 -0
  34. package/templates/__snapshots__/library-ts/test/test-host.ts +17 -0
  35. package/templates/__snapshots__/library-ts/tsconfig.json +17 -0
  36. package/templates/emitter-ts/src/testing/index.ts.mu +8 -0
  37. package/templates/emitter-ts/test/test-host.ts.mu +2 -2
  38. package/templates/library-ts/.eslintrc.yml +14 -0
  39. package/templates/library-ts/lib/decorators.tsp.mu +12 -0
  40. package/templates/library-ts/lib/main.tsp +1 -0
  41. package/templates/library-ts/package.json +40 -0
  42. package/templates/library-ts/prettierrc.yaml +8 -0
  43. package/templates/library-ts/src/decorators.ts +33 -0
  44. package/templates/library-ts/src/index.ts +2 -0
  45. package/templates/library-ts/src/lib.ts +20 -0
  46. package/templates/library-ts/src/linter.ts +14 -0
  47. package/templates/library-ts/src/rules/no-interfaces.rule.ts +19 -0
  48. package/templates/library-ts/src/testing/index.ts.mu +8 -0
  49. package/templates/library-ts/test/decorators.test.ts.mu +48 -0
  50. package/templates/library-ts/test/rules/no-interfaces.rule.test.ts +29 -0
  51. package/templates/library-ts/test/test-host.ts.mu +17 -0
  52. package/templates/library-ts/tsconfig.json +17 -0
  53. package/templates/scaffolding.json +77 -1
  54. package/templates/emitter-ts/src/testing/index.ts +0 -10
@@ -19,12 +19,22 @@ const builtInTemplates = {
19
19
  emit: ["@typespec/openapi3"],
20
20
  },
21
21
  },
22
+ "library-ts": {
23
+ title: "TypeSpec Library (With TypeScript)",
24
+ description: "Create a new package to add decorators or linters to typespec.",
25
+ compilerVersion: minCompilerVersion,
26
+ libraries: [],
27
+ files: [
28
+ { destination: "main.tsp", skipGeneration: true },
29
+ { destination: "tspconfig.yaml", skipGeneration: true },
30
+ ...(await localDir("library-ts")),
31
+ ],
32
+ },
22
33
  "emitter-ts": {
23
34
  title: "TypeSpec Emitter (With TypeScript)",
24
35
  description: "Create a new package that will be emitting typespec",
25
36
  compilerVersion: minCompilerVersion,
26
37
  libraries: [],
27
- config: undefined,
28
38
  files: [
29
39
  { destination: "main.tsp", skipGeneration: true },
30
40
  { destination: "tspconfig.yaml", skipGeneration: true },
@@ -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;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
+ {"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,gEAAgE;QAC7E,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,EAAE;QACb,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;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EAAE,qDAAqD;QAClE,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,EAAE;QACb,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"}
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "0.52.0-dev.10",
3
- "commit": "9c7bf801875481008bcfa8119219033beb790549"
2
+ "version": "0.52.0-dev.12",
3
+ "commit": "55e232d553efb50cdb0f2db3fea905f63cc9248a"
4
4
  };
@@ -8,7 +8,7 @@ export * from "./formatter.js";
8
8
  export * from "./helpers/index.js";
9
9
  export { createCadlLibrary, createLinterRule as createRule, createTypeSpecLibrary, defineLinter, paramMessage, setCadlNamespace, setTypeSpecNamespace, } from "./library.js";
10
10
  export * from "./module-resolver.js";
11
- export * from "./node-host.js";
11
+ export { NodeHost } from "./node-host.js";
12
12
  export * from "./options.js";
13
13
  export * from "./parser.js";
14
14
  export * from "./path-utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAEL,iBAAiB,EACjB,gBAAgB,IAAI,UAAU,EAC9B,qBAAqB,EACrB,YAAY,EACZ,YAAY,EAEZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAEL,iBAAiB,EACjB,gBAAgB,IAAI,UAAU,EAC9B,qBAAqB,EACrB,YAAY,EACZ,YAAY,EAEZ,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
@@ -12,7 +12,7 @@ createCadlLibrary, createLinterRule as createRule, createTypeSpecLibrary, define
12
12
  // eslint-disable-next-line deprecation/deprecation
13
13
  setCadlNamespace, setTypeSpecNamespace, } from "./library.js";
14
14
  export * from "./module-resolver.js";
15
- export * from "./node-host.js";
15
+ export { NodeHost } from "./node-host.js";
16
16
  export * from "./options.js";
17
17
  export * from "./parser.js";
18
18
  export * from "./path-utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,OAAO;AACL,mDAAmD;AACnD,iBAAiB,EACjB,gBAAgB,IAAI,UAAU,EAC9B,qBAAqB,EACrB,YAAY,EACZ,YAAY;AACZ,mDAAmD;AACnD,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,OAAO;AACL,mDAAmD;AACnD,iBAAiB,EACjB,gBAAgB,IAAI,UAAU,EAC9B,qBAAqB,EACrB,YAAY,EACZ,YAAY;AACZ,mDAAmD;AACnD,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CompilerHost } from "./types.js";
2
+ export declare const CompilerPackageRoot: string;
2
3
  /**
3
4
  * Implementation of the @see CompilerHost using the real file system.
4
5
  * This is the the CompilerHost used by TypeSpec CLI.
@@ -1 +1 @@
1
- {"version":3,"file":"node-host.d.ts","sourceRoot":"","sources":["../../../src/core/node-host.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAKrD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,YA6BtB,CAAC;AAmBF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,QAAQ,EAAE,MAAM;CAG7B"}
1
+ {"version":3,"file":"node-host.d.ts","sourceRoot":"","sources":["../../../src/core/node-host.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AAGrD,eAAO,MAAM,mBAAmB,QAAiE,CAAC;AAElG;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,YA6BtB,CAAC;AAmBF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,QAAQ,EAAE,MAAM;CAG7B"}
@@ -5,7 +5,7 @@ import { fetch } from "./fetch.js";
5
5
  import { createConsoleSink } from "./logger/index.js";
6
6
  import { joinPaths } from "./path-utils.js";
7
7
  import { findProjectRoot, getSourceFileKindFromExt } from "./util.js";
8
- const root = (await findProjectRoot(stat, fileURLToPath(import.meta.url)));
8
+ export const CompilerPackageRoot = (await findProjectRoot(stat, fileURLToPath(import.meta.url)));
9
9
  /**
10
10
  * Implementation of the @see CompilerHost using the real file system.
11
11
  * This is the the CompilerHost used by TypeSpec CLI.
@@ -20,7 +20,7 @@ export const NodeHost = {
20
20
  writeFile: (path, content) => writeFile(path, content, { encoding: "utf-8" }),
21
21
  readDir: (path) => readdir(path),
22
22
  rm: (path, options) => rm(path, options),
23
- getExecutionRoot: () => root,
23
+ getExecutionRoot: () => CompilerPackageRoot,
24
24
  getJsImport: (path) => import(pathToFileURL(path).href),
25
25
  getLibDirs() {
26
26
  const rootDir = this.getExecutionRoot();
@@ -1 +1 @@
1
- {"version":3,"file":"node-host.js","sourceRoot":"","sources":["../../../src/core/node-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAEtE,MAAM,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;AAE5E;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,QAAQ,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAClF,SAAS,EAAE,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7F,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,EAAE,EAAE,CAAC,IAAY,EAAE,OAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;IAC3D,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC5B,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAC/D,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,QAAQ,CAAC,IAAI;QACX,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,iBAAiB,EAAE,wBAAwB;IAC3C,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1D,OAAO,EAAE,iBAAiB,EAAE;IAC5B,aAAa;IACb,aAAa,CAAC,IAAY;QACxB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/E,iCAAiC;QACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,2CAA2C;IAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,QAAgB;QAC1B,KAAK,CAAC,oBAAoB,QAAQ,mDAAmD,CAAC,CAAC;IACzF,CAAC;CACF"}
1
+ {"version":3,"file":"node-host.js","sourceRoot":"","sources":["../../../src/core/node-host.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-templates.d.ts","sourceRoot":"","sources":["../../../src/init/core-templates.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,QAGxB,CAAC;AAIF,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC"}
1
+ {"version":3,"file":"core-templates.d.ts","sourceRoot":"","sources":["../../../src/init/core-templates.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,QAAgD,CAAC;AAI1E,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { readFile } from "fs/promises";
2
- import { dirname } from "path";
3
- import { fileURLToPath } from "url";
2
+ import { CompilerPackageRoot } from "../core/node-host.js";
4
3
  import { resolvePath } from "../core/path-utils.js";
5
- export const templatesDir = resolvePath(dirname(fileURLToPath(import.meta.url)), "../../../templates");
4
+ export const templatesDir = resolvePath(CompilerPackageRoot, "templates");
6
5
  const content = JSON.parse(await readFile(resolvePath(templatesDir, "scaffolding.json"), "utf-8"));
7
6
  export const TypeSpecCoreTemplates = {
8
7
  baseUri: templatesDir,
@@ -1 +1 @@
1
- {"version":3,"file":"core-templates.js","sourceRoot":"","sources":["../../../src/init/core-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CACrC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,oBAAoB,CACrB,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,OAAO;CACnB,CAAC"}
1
+ {"version":3,"file":"core-templates.js","sourceRoot":"","sources":["../../../src/init/core-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAE1E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,OAAO;CACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/init/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIlF,OAAO,EAAE,YAAY,EAA+C,MAAM,oBAAoB,CAAC;AAG/F,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,iBA0DzC;AA+CD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAkID;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IACvB,WAAW,EAAE,SAAS,UAAU,EAAE;gBAAlC,WAAW,EAAE,SAAS,UAAU,EAAE;CAGtD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/init/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIlF,OAAO,EAAE,YAAY,EAA+C,MAAM,oBAAoB,CAAC;AAG/F,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,0BAA+B,iBA0DzC;AA+CD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAmID;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IACvB,WAAW,EAAE,SAAS,UAAU,EAAE;gBAAlC,WAAW,EAAE,SAAS,UAAU,EAAE;CAGtD"}
@@ -151,7 +151,8 @@ async function validateTemplate(template, loaded) {
151
151
  const currentCompilerVersion = MANIFEST.version;
152
152
  let validationResult;
153
153
  // 1. If current version > compilerVersion, proceed with strict validation
154
- if (template.compilerVersion && semver.gte(currentCompilerVersion, template.compilerVersion)) {
154
+ if (template.compilerVersion === undefined ||
155
+ semver.gte(currentCompilerVersion, template.compilerVersion)) {
155
156
  validationResult = validateTemplateDefinitions(template, loaded.file, true);
156
157
  // 1.1 If strict validation fails, try relaxed validation
157
158
  if (!validationResult.valid) {
@@ -160,9 +161,7 @@ async function validateTemplate(template, loaded) {
160
161
  }
161
162
  else {
162
163
  // 2. if version mis-match or none specified, warn and prompt user to continue or not
163
- const confirmationMessage = template.compilerVersion
164
- ? `The template you selected is designed for tsp version ${template.compilerVersion}. You are currently using tsp version ${currentCompilerVersion}.`
165
- : `The template you selected did not specify minimum support compiler version. You are currently using tsp version ${currentCompilerVersion}.`;
164
+ const confirmationMessage = `The template you selected is designed for tsp version ${template.compilerVersion}. You are currently using tsp version ${currentCompilerVersion}.`;
166
165
  if (await confirm(`${confirmationMessage} The project created may not be correct. Do you want to continue?`)) {
167
166
  // 2.1 If user choose to continue, proceed with relaxed validation
168
167
  validationResult = validateTemplateDefinitions(template, loaded.file, false);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/init/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/init/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/compiler",
3
- "version": "0.52.0-dev.10",
3
+ "version": "0.52.0-dev.12",
4
4
  "description": "TypeSpec Compiler Preview",
5
5
  "author": "Microsoft Corporation",
6
6
  "license": "MIT",
@@ -1,10 +1,8 @@
1
- import {
2
- createTestLibrary,
3
- findTestPackageRoot,
4
- TypeSpecTestLibrary,
5
- } from "@typespec/compiler/testing";
1
+ import { resolvePath } from "@typespec/compiler";
2
+ import { createTestLibrary, TypeSpecTestLibrary } from "@typespec/compiler/testing";
3
+ import { fileURLToPath } from "url";
6
4
 
7
- export const TestLibrary: TypeSpecTestLibrary = createTestLibrary({
5
+ export const EmitterTsTestLibrary: TypeSpecTestLibrary = createTestLibrary({
8
6
  name: "emitter-ts",
9
- packageRoot: await findTestPackageRoot(import.meta.url),
7
+ packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
10
8
  });
@@ -4,11 +4,11 @@ import {
4
4
  createTestWrapper,
5
5
  expectDiagnosticEmpty,
6
6
  } from "@typespec/compiler/testing";
7
- import { TestLibrary } from "../src/testing/index.js";
7
+ import { EmitterTsTestLibrary } from "../src/testing/index.js";
8
8
 
9
9
  export async function createEmitterTsTestHost() {
10
10
  return createTestHost({
11
- libraries: [TestLibrary],
11
+ libraries: [EmitterTsTestLibrary],
12
12
  });
13
13
  }
14
14
 
@@ -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,12 @@
1
+ import "../dist/src/decorators.js";
2
+
3
+ using TypeSpec.Reflection;
4
+
5
+ namespace LibraryTs;
6
+
7
+ /**
8
+ * __Example Decorator__
9
+ * Provide an alternate name for an operation.
10
+ * @param name The alternate name.
11
+ */
12
+ extern dec alternateName(target: Operation, name: valueof string);
@@ -0,0 +1 @@
1
+ import "./decorators.tsp";
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "library-ts",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/src/index.js",
6
+ "tspMain": "lib/main.tsp",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/src/index.d.ts",
10
+ "default": "./dist/src/index.js"
11
+ },
12
+ "./testing": {
13
+ "types": "./dist/src/testing/index.d.ts",
14
+ "default": "./dist/src/testing/index.js"
15
+ }
16
+ },
17
+ "dependencies": {
18
+ "@typespec/compiler": "latest"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "latest",
22
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
23
+ "@typescript-eslint/parser": "^6.0.0",
24
+ "@typespec/library-linter": "latest",
25
+ "eslint": "^8.45.0",
26
+ "prettier": "^3.0.3",
27
+ "typescript": "^5.3.3"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc && npm run build:tsp",
31
+ "watch": "tsc --watch",
32
+ "build:tsp": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
33
+ "test": "node --test ./dist/test/",
34
+ "lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
35
+ "lint:fix": "eslint . --report-unused-disable-directives --fix",
36
+ "format": "prettier . --write",
37
+ "format:check": "prettier --check ."
38
+ },
39
+ "private": true
40
+ }
@@ -0,0 +1,8 @@
1
+ trailingComma: "all"
2
+ printWidth: 120
3
+ quoteProps: "consistent"
4
+ endOfLine: lf
5
+ arrowParens: always
6
+ plugins:
7
+ - "./node_modules/@typespec/prettier-plugin-typespec/dist/index.js"
8
+ overrides: [{ "files": "*.tsp", "options": { "parser": "typespec" } }]
@@ -0,0 +1,33 @@
1
+ import { DecoratorContext, Operation, Program } from "@typespec/compiler";
2
+ import { StateKeys, reportDiagnostic } from "./lib.js";
3
+
4
+ export const namespace = "LibraryTs";
5
+
6
+ /**
7
+ * __Example implementation of the `@alternateName` decorator.__
8
+ *
9
+ * @param context Decorator context.
10
+ * @param target Decorator target. Must be an operation.
11
+ * @param name Alternate name.
12
+ */
13
+ export function $alternateName(context: DecoratorContext, target: Operation, name: string) {
14
+ if (name === "banned") {
15
+ reportDiagnostic(context.program, {
16
+ code: "banned-alternate-name",
17
+ target: context.getArgumentTarget(0)!,
18
+ format: { name },
19
+ });
20
+ }
21
+ context.program.stateMap(StateKeys.alternateName).set(target, name);
22
+ }
23
+
24
+ /**
25
+ * __Example accessor for the `@alternateName` decorator.__
26
+ *
27
+ * @param program TypeSpec program.
28
+ * @param target Decorator target. Must be an operation.
29
+ * @returns Altenate name if provided on the given operation or undefined
30
+ */
31
+ export function getAlternateName(program: Program, target: Operation): string | undefined {
32
+ return program.stateMap(StateKeys.alternateName).get(target);
33
+ }
@@ -0,0 +1,2 @@
1
+ export { getAlternateName } from "./decorators.js";
2
+ export { $lib } from "./lib.js";
@@ -0,0 +1,20 @@
1
+ import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler";
2
+
3
+ export const $lib = createTypeSpecLibrary({
4
+ name: "library-ts",
5
+ // Define diagnostics for the library. This will provide a typed API to report diagnostic as well as a auto doc generation.
6
+ diagnostics: {
7
+ "banned-alternate-name": {
8
+ severity: "error",
9
+ messages: {
10
+ default: paramMessage`Banned alternate name "${"name"}".`,
11
+ },
12
+ },
13
+ },
14
+ // Defined state keys for storing metadata in decorator.
15
+ state: {
16
+ alternateName: { description: "alternateName" },
17
+ },
18
+ });
19
+
20
+ export const { reportDiagnostic, createDiagnostic, stateKeys: StateKeys } = $lib;
@@ -0,0 +1,14 @@
1
+ import { defineLinter } from "@typespec/compiler";
2
+ import { noInterfaceRule } from "./rules/no-interfaces.rule.js";
3
+
4
+ export const $linter = defineLinter({
5
+ rules: [noInterfaceRule],
6
+ ruleSets: {
7
+ recommended: {
8
+ enable: { [`library-ts/${noInterfaceRule.name}`]: true },
9
+ },
10
+ all: {
11
+ enable: { [`library-ts/${noInterfaceRule.name}`]: true },
12
+ },
13
+ },
14
+ });
@@ -0,0 +1,19 @@
1
+ import { createRule } from "@typespec/compiler";
2
+
3
+ export const noInterfaceRule = createRule({
4
+ name: "no-interface",
5
+ severity: "warning",
6
+ description: "Make sure interface are not used.",
7
+ messages: {
8
+ default: "Interface shouldn't be used with this library. Keep operations at the root.",
9
+ },
10
+ create: (context) => {
11
+ return {
12
+ interface: (iface) => {
13
+ context.reportDiagnostic({
14
+ target: iface,
15
+ });
16
+ },
17
+ };
18
+ },
19
+ });
@@ -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 LibraryTsTestLibrary: TypeSpecTestLibrary = createTestLibrary({
6
+ name: "library-ts",
7
+ packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
8
+ });
@@ -0,0 +1,48 @@
1
+ import { strictEqual } from "node:assert";
2
+ import { describe, it, beforeEach } from "node:test";
3
+ import { Operation } from "@typespec/compiler";
4
+ import { BasicTestRunner, expectDiagnostics, extractCursor } from "@typespec/compiler/testing";
5
+ import { getAlternateName } from "../src/decorators.js";
6
+ import { createLibraryTsTestRunner } from "./test-host.js";
7
+
8
+ describe("decorators", () => {
9
+ let runner: BasicTestRunner;
10
+
11
+ beforeEach(async () => {
12
+ runner = await createLibraryTsTestRunner();
13
+ })
14
+
15
+ describe("@alternateName", () => {
16
+ it("set alternate name on operation", async () => {
17
+ const { test } = (await runner.compile(
18
+ `@alternateName("bar") @test op test(): void;`
19
+ )) as { test: Operation };
20
+ strictEqual(getAlternateName(runner.program, test), "bar");
21
+ });
22
+
23
+ it("emit diagnostic if not used on an operation", async () => {
24
+ const diagnostics = await runner.diagnose(
25
+ `@alternateName("bar") model Test {}`
26
+ );
27
+ expectDiagnostics(diagnostics, {
28
+ severity: "error",
29
+ code: "decorator-wrong-target",
30
+ message: "Cannot apply @alternateName decorator to Test since it is not assignable to Operation"
31
+ })
32
+ });
33
+
34
+
35
+ it("emit diagnostic if using banned name", async () => {
36
+ const {pos, source} = extractCursor(`@alternateName(┆"banned") op test(): void;`)
37
+ const diagnostics = await runner.diagnose(
38
+ source
39
+ );
40
+ expectDiagnostics(diagnostics, {
41
+ severity: "error",
42
+ code: "library-ts/banned-alternate-name",
43
+ message: `Banned alternate name "banned".`,
44
+ pos: pos + runner.autoCodeOffset
45
+ })
46
+ });
47
+ });
48
+ });
@@ -0,0 +1,29 @@
1
+ import {
2
+ LinterRuleTester,
3
+ createLinterRuleTester,
4
+ createTestRunner,
5
+ } from "@typespec/compiler/testing";
6
+ import { beforeEach, describe, it } from "node:test";
7
+ import { noInterfaceRule } from "../../src/rules/no-interfaces.rule.js";
8
+
9
+ describe("noInterfaceRule", () => {
10
+ let ruleTester: LinterRuleTester;
11
+
12
+ beforeEach(async () => {
13
+ const runner = await createTestRunner();
14
+ ruleTester = createLinterRuleTester(runner, noInterfaceRule, "library-ts");
15
+ });
16
+
17
+ describe("models", () => {
18
+ it("emit diagnostics if using interfaces", async () => {
19
+ await ruleTester.expect(`interface Test {}`).toEmitDiagnostics({
20
+ code: "library-ts/no-interface",
21
+ message: "Interface shouldn't be used with this library. Keep operations at the root.",
22
+ });
23
+ });
24
+
25
+ it("should be valid if operation is at the root", async () => {
26
+ await ruleTester.expect(`op test(): void;`).toBeValid();
27
+ });
28
+ });
29
+ });
@@ -0,0 +1,17 @@
1
+ import { createTestHost, createTestWrapper } from "@typespec/compiler/testing";
2
+ import { LibraryTsTestLibrary } from "../src/testing/index.js";
3
+
4
+ export async function createLibraryTsTestHost() {
5
+ return createTestHost({
6
+ libraries: [LibraryTsTestLibrary],
7
+ });
8
+ }
9
+
10
+ export async function createLibraryTsTestRunner() {
11
+ const host = await createLibraryTsTestHost();
12
+
13
+ return createTestWrapper(host, {
14
+ autoUsings: ["LibraryTs"]
15
+ });
16
+ }
17
+
@@ -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,8 @@
1
+ import { resolvePath } from "@typespec/compiler";
2
+ import { createTestLibrary, TypeSpecTestLibrary } from "@typespec/compiler/testing";
3
+ import { fileURLToPath } from "url";
4
+
5
+ export const {{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary: TypeSpecTestLibrary = createTestLibrary({
6
+ name: "{{name}}",
7
+ packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
8
+ });
@@ -4,11 +4,11 @@ import {
4
4
  createTestWrapper,
5
5
  expectDiagnosticEmpty,
6
6
  } from "@typespec/compiler/testing";
7
- import { TestLibrary } from "../src/testing/index.js";
7
+ import { {{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary } from "../src/testing/index.js";
8
8
 
9
9
  export async function create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestHost() {
10
10
  return createTestHost({
11
- libraries: [TestLibrary],
11
+ libraries: [{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary],
12
12
  });
13
13
  }
14
14
 
@@ -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,12 @@
1
+ import "../dist/src/decorators.js";
2
+
3
+ using TypeSpec.Reflection;
4
+
5
+ namespace {{#casing.pascalCase}}{{name}}{{/casing.pascalCase}};
6
+
7
+ /**
8
+ * __Example Decorator__
9
+ * Provide an alternate name for an operation.
10
+ * @param name The alternate name.
11
+ */
12
+ extern dec alternateName(target: Operation, name: valueof string);
@@ -0,0 +1 @@
1
+ import "./decorators.tsp";
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/src/index.js",
6
+ "tspMain": "lib/main.tsp",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/src/index.d.ts",
10
+ "default": "./dist/src/index.js"
11
+ },
12
+ "./testing": {
13
+ "types": "./dist/src/testing/index.d.ts",
14
+ "default": "./dist/src/testing/index.js"
15
+ }
16
+ },
17
+ "dependencies": {
18
+ "@typespec/compiler": "latest"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "latest",
22
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
23
+ "@typescript-eslint/parser": "^6.0.0",
24
+ "@typespec/library-linter": "latest",
25
+ "eslint": "^8.45.0",
26
+ "prettier": "^3.0.3",
27
+ "typescript": "^5.3.3"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc && npm run build:tsp",
31
+ "watch": "tsc --watch",
32
+ "build:tsp": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
33
+ "test": "node --test ./dist/test/",
34
+ "lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
35
+ "lint:fix": "eslint . --report-unused-disable-directives --fix",
36
+ "format": "prettier . --write",
37
+ "format:check": "prettier --check ."
38
+ },
39
+ "private": true
40
+ }
@@ -0,0 +1,8 @@
1
+ trailingComma: "all"
2
+ printWidth: 120
3
+ quoteProps: "consistent"
4
+ endOfLine: lf
5
+ arrowParens: always
6
+ plugins:
7
+ - "./node_modules/@typespec/prettier-plugin-typespec/dist/index.js"
8
+ overrides: [{ "files": "*.tsp", "options": { "parser": "typespec" } }]
@@ -0,0 +1,33 @@
1
+ import { DecoratorContext, Operation, Program } from "@typespec/compiler";
2
+ import { StateKeys, reportDiagnostic } from "./lib.js";
3
+
4
+ export const namespace = "{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}";
5
+
6
+ /**
7
+ * __Example implementation of the `@alternateName` decorator.__
8
+ *
9
+ * @param context Decorator context.
10
+ * @param target Decorator target. Must be an operation.
11
+ * @param name Alternate name.
12
+ */
13
+ export function $alternateName(context: DecoratorContext, target: Operation, name: string) {
14
+ if (name === "banned") {
15
+ reportDiagnostic(context.program, {
16
+ code: "banned-alternate-name",
17
+ target: context.getArgumentTarget(0)!,
18
+ format: { name },
19
+ });
20
+ }
21
+ context.program.stateMap(StateKeys.alternateName).set(target, name);
22
+ }
23
+
24
+ /**
25
+ * __Example accessor for the `@alternateName` decorator.__
26
+ *
27
+ * @param program TypeSpec program.
28
+ * @param target Decorator target. Must be an operation.
29
+ * @returns Altenate name if provided on the given operation or undefined
30
+ */
31
+ export function getAlternateName(program: Program, target: Operation): string | undefined {
32
+ return program.stateMap(StateKeys.alternateName).get(target);
33
+ }
@@ -0,0 +1,2 @@
1
+ export { getAlternateName } from "./decorators.js";
2
+ export { $lib } from "./lib.js";
@@ -0,0 +1,20 @@
1
+ import { createTypeSpecLibrary, paramMessage } from "@typespec/compiler";
2
+
3
+ export const $lib = createTypeSpecLibrary({
4
+ name: "{{name}}",
5
+ // Define diagnostics for the library. This will provide a typed API to report diagnostic as well as a auto doc generation.
6
+ diagnostics: {
7
+ "banned-alternate-name": {
8
+ severity: "error",
9
+ messages: {
10
+ default: paramMessage`Banned alternate name "${"name"}".`,
11
+ },
12
+ },
13
+ },
14
+ // Defined state keys for storing metadata in decorator.
15
+ state: {
16
+ alternateName: { description: "alternateName" },
17
+ },
18
+ });
19
+
20
+ export const { reportDiagnostic, createDiagnostic, stateKeys: StateKeys } = $lib;
@@ -0,0 +1,14 @@
1
+ import { defineLinter } from "@typespec/compiler";
2
+ import { noInterfaceRule } from "./rules/no-interfaces.rule.js";
3
+
4
+ export const $linter = defineLinter({
5
+ rules: [noInterfaceRule],
6
+ ruleSets: {
7
+ recommended: {
8
+ enable: { [`{{name}}/${noInterfaceRule.name}`]: true },
9
+ },
10
+ all: {
11
+ enable: { [`{{name}}/${noInterfaceRule.name}`]: true },
12
+ },
13
+ },
14
+ });
@@ -0,0 +1,19 @@
1
+ import { createRule } from "@typespec/compiler";
2
+
3
+ export const noInterfaceRule = createRule({
4
+ name: "no-interface",
5
+ severity: "warning",
6
+ description: "Make sure interface are not used.",
7
+ messages: {
8
+ default: "Interface shouldn't be used with this library. Keep operations at the root.",
9
+ },
10
+ create: (context) => {
11
+ return {
12
+ interface: (iface) => {
13
+ context.reportDiagnostic({
14
+ target: iface,
15
+ });
16
+ },
17
+ };
18
+ },
19
+ });
@@ -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 {{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary: TypeSpecTestLibrary = createTestLibrary({
6
+ name: "{{name}}",
7
+ packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
8
+ });
@@ -0,0 +1,48 @@
1
+ import { strictEqual } from "node:assert";
2
+ import { describe, it, beforeEach } from "node:test";
3
+ import { Operation } from "@typespec/compiler";
4
+ import { BasicTestRunner, expectDiagnostics, extractCursor } from "@typespec/compiler/testing";
5
+ import { getAlternateName } from "../src/decorators.js";
6
+ import { create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestRunner } from "./test-host.js";
7
+
8
+ describe("decorators", () => {
9
+ let runner: BasicTestRunner;
10
+
11
+ beforeEach(async () => {
12
+ runner = await create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestRunner();
13
+ })
14
+
15
+ describe("@alternateName", () => {
16
+ it("set alternate name on operation", async () => {
17
+ const { test } = (await runner.compile(
18
+ `@alternateName("bar") @test op test(): void;`
19
+ )) as { test: Operation };
20
+ strictEqual(getAlternateName(runner.program, test), "bar");
21
+ });
22
+
23
+ it("emit diagnostic if not used on an operation", async () => {
24
+ const diagnostics = await runner.diagnose(
25
+ `@alternateName("bar") model Test {}`
26
+ );
27
+ expectDiagnostics(diagnostics, {
28
+ severity: "error",
29
+ code: "decorator-wrong-target",
30
+ message: "Cannot apply @alternateName decorator to Test since it is not assignable to Operation"
31
+ })
32
+ });
33
+
34
+
35
+ it("emit diagnostic if using banned name", async () => {
36
+ const {pos, source} = extractCursor(`@alternateName(┆"banned") op test(): void;`)
37
+ const diagnostics = await runner.diagnose(
38
+ source
39
+ );
40
+ expectDiagnostics(diagnostics, {
41
+ severity: "error",
42
+ code: "{{name}}/banned-alternate-name",
43
+ message: `Banned alternate name "banned".`,
44
+ pos: pos + runner.autoCodeOffset
45
+ })
46
+ });
47
+ });
48
+ });
@@ -0,0 +1,29 @@
1
+ import {
2
+ LinterRuleTester,
3
+ createLinterRuleTester,
4
+ createTestRunner,
5
+ } from "@typespec/compiler/testing";
6
+ import { beforeEach, describe, it } from "node:test";
7
+ import { noInterfaceRule } from "../../src/rules/no-interfaces.rule.js";
8
+
9
+ describe("noInterfaceRule", () => {
10
+ let ruleTester: LinterRuleTester;
11
+
12
+ beforeEach(async () => {
13
+ const runner = await createTestRunner();
14
+ ruleTester = createLinterRuleTester(runner, noInterfaceRule, "{{name}}");
15
+ });
16
+
17
+ describe("models", () => {
18
+ it("emit diagnostics if using interfaces", async () => {
19
+ await ruleTester.expect(`interface Test {}`).toEmitDiagnostics({
20
+ code: "{{name}}/no-interface",
21
+ message: "Interface shouldn't be used with this library. Keep operations at the root.",
22
+ });
23
+ });
24
+
25
+ it("should be valid if operation is at the root", async () => {
26
+ await ruleTester.expect(`op test(): void;`).toBeValid();
27
+ });
28
+ });
29
+ });
@@ -0,0 +1,17 @@
1
+ import { createTestHost, createTestWrapper } from "@typespec/compiler/testing";
2
+ import { {{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary } from "../src/testing/index.js";
3
+
4
+ export async function create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestHost() {
5
+ return createTestHost({
6
+ libraries: [{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestLibrary],
7
+ });
8
+ }
9
+
10
+ export async function create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestRunner() {
11
+ const host = await create{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}TestHost();
12
+
13
+ return createTestWrapper(host, {
14
+ autoUsings: ["{{#casing.pascalCase}}{{name}}{{/casing.pascalCase}}"]
15
+ });
16
+ }
17
+
@@ -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
+ }
@@ -20,6 +20,82 @@
20
20
  ]
21
21
  }
22
22
  },
23
+ "library-ts": {
24
+ "title": "TypeSpec Library (With TypeScript)",
25
+ "description": "Create a new package to add decorators or linters to typespec.",
26
+ "compilerVersion": "0.51.0",
27
+ "libraries": [],
28
+ "files": [
29
+ {
30
+ "destination": "main.tsp",
31
+ "skipGeneration": true
32
+ },
33
+ {
34
+ "destination": "tspconfig.yaml",
35
+ "skipGeneration": true
36
+ },
37
+ {
38
+ "path": "library-ts/.eslintrc.yml",
39
+ "destination": ".eslintrc.yml"
40
+ },
41
+ {
42
+ "path": "library-ts/lib/decorators.tsp.mu",
43
+ "destination": "lib/decorators.tsp"
44
+ },
45
+ {
46
+ "path": "library-ts/lib/main.tsp",
47
+ "destination": "lib/main.tsp"
48
+ },
49
+ {
50
+ "path": "library-ts/package.json",
51
+ "destination": "package.json"
52
+ },
53
+ {
54
+ "path": "library-ts/prettierrc.yaml",
55
+ "destination": "prettierrc.yaml"
56
+ },
57
+ {
58
+ "path": "library-ts/src/decorators.ts",
59
+ "destination": "src/decorators.ts"
60
+ },
61
+ {
62
+ "path": "library-ts/src/index.ts",
63
+ "destination": "src/index.ts"
64
+ },
65
+ {
66
+ "path": "library-ts/src/lib.ts",
67
+ "destination": "src/lib.ts"
68
+ },
69
+ {
70
+ "path": "library-ts/src/linter.ts",
71
+ "destination": "src/linter.ts"
72
+ },
73
+ {
74
+ "path": "library-ts/src/rules/no-interfaces.rule.ts",
75
+ "destination": "src/rules/no-interfaces.rule.ts"
76
+ },
77
+ {
78
+ "path": "library-ts/src/testing/index.ts.mu",
79
+ "destination": "src/testing/index.ts"
80
+ },
81
+ {
82
+ "path": "library-ts/test/decorators.test.ts.mu",
83
+ "destination": "test/decorators.test.ts"
84
+ },
85
+ {
86
+ "path": "library-ts/test/rules/no-interfaces.rule.test.ts",
87
+ "destination": "test/rules/no-interfaces.rule.test.ts"
88
+ },
89
+ {
90
+ "path": "library-ts/test/test-host.ts.mu",
91
+ "destination": "test/test-host.ts"
92
+ },
93
+ {
94
+ "path": "library-ts/tsconfig.json",
95
+ "destination": "tsconfig.json"
96
+ }
97
+ ]
98
+ },
23
99
  "emitter-ts": {
24
100
  "title": "TypeSpec Emitter (With TypeScript)",
25
101
  "description": "Create a new package that will be emitting typespec",
@@ -59,7 +135,7 @@
59
135
  "destination": "src/lib.ts"
60
136
  },
61
137
  {
62
- "path": "emitter-ts/src/testing/index.ts",
138
+ "path": "emitter-ts/src/testing/index.ts.mu",
63
139
  "destination": "src/testing/index.ts"
64
140
  },
65
141
  {
@@ -1,10 +0,0 @@
1
- import {
2
- createTestLibrary,
3
- findTestPackageRoot,
4
- TypeSpecTestLibrary,
5
- } from "@typespec/compiler/testing";
6
-
7
- export const TestLibrary: TypeSpecTestLibrary = createTestLibrary({
8
- name: "{{name}}",
9
- packageRoot: await findTestPackageRoot(import.meta.url),
10
- });