@typespec/compiler 0.52.0-dev.11 → 0.52.0-dev.13

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 (90) 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/server/classify.d.ts +8 -0
  16. package/dist/src/server/classify.d.ts.map +1 -0
  17. package/dist/src/server/classify.js +310 -0
  18. package/dist/src/server/classify.js.map +1 -0
  19. package/dist/src/server/compile-service.d.ts +42 -0
  20. package/dist/src/server/compile-service.d.ts.map +1 -0
  21. package/dist/src/server/compile-service.js +163 -0
  22. package/dist/src/server/compile-service.js.map +1 -0
  23. package/dist/src/server/constants.d.ts +7 -0
  24. package/dist/src/server/constants.d.ts.map +1 -0
  25. package/dist/src/server/constants.js +13 -0
  26. package/dist/src/server/constants.js.map +1 -0
  27. package/dist/src/server/file-service.d.ts +18 -0
  28. package/dist/src/server/file-service.d.ts.map +1 -0
  29. package/dist/src/server/file-service.js +56 -0
  30. package/dist/src/server/file-service.js.map +1 -0
  31. package/dist/src/server/file-system-cache.d.ts +25 -0
  32. package/dist/src/server/file-system-cache.d.ts.map +1 -0
  33. package/dist/src/server/file-system-cache.js +27 -0
  34. package/dist/src/server/file-system-cache.js.map +1 -0
  35. package/dist/src/server/index.d.ts +2 -1
  36. package/dist/src/server/index.d.ts.map +1 -1
  37. package/dist/src/server/index.js +2 -1
  38. package/dist/src/server/index.js.map +1 -1
  39. package/dist/src/server/server.js.map +1 -1
  40. package/dist/src/server/serverlib.d.ts +1 -71
  41. package/dist/src/server/serverlib.d.ts.map +1 -1
  42. package/dist/src/server/serverlib.js +115 -622
  43. package/dist/src/server/serverlib.js.map +1 -1
  44. package/dist/src/server/types.d.ts +76 -0
  45. package/dist/src/server/types.d.ts.map +1 -0
  46. package/dist/src/server/types.js +26 -0
  47. package/dist/src/server/types.js.map +1 -0
  48. package/dist/src/server/update-manager.d.ts +19 -0
  49. package/dist/src/server/update-manager.d.ts.map +1 -0
  50. package/dist/src/server/update-manager.js +70 -0
  51. package/dist/src/server/update-manager.js.map +1 -0
  52. package/dist/src/testing/types.d.ts +2 -2
  53. package/dist/src/testing/types.d.ts.map +1 -1
  54. package/package.json +1 -1
  55. package/templates/__snapshots__/emitter-ts/src/testing/index.ts +5 -7
  56. package/templates/__snapshots__/emitter-ts/test/test-host.ts +2 -2
  57. package/templates/__snapshots__/library-ts/.eslintrc.yml +14 -0
  58. package/templates/__snapshots__/library-ts/lib/decorators.tsp +12 -0
  59. package/templates/__snapshots__/library-ts/lib/main.tsp +1 -0
  60. package/templates/__snapshots__/library-ts/package.json +40 -0
  61. package/templates/__snapshots__/library-ts/prettierrc.yaml +8 -0
  62. package/templates/__snapshots__/library-ts/src/decorators.ts +33 -0
  63. package/templates/__snapshots__/library-ts/src/index.ts +2 -0
  64. package/templates/__snapshots__/library-ts/src/lib.ts +20 -0
  65. package/templates/__snapshots__/library-ts/src/linter.ts +14 -0
  66. package/templates/__snapshots__/library-ts/src/rules/no-interfaces.rule.ts +19 -0
  67. package/templates/__snapshots__/library-ts/src/testing/index.ts +8 -0
  68. package/templates/__snapshots__/library-ts/test/decorators.test.ts +48 -0
  69. package/templates/__snapshots__/library-ts/test/rules/no-interfaces.rule.test.ts +29 -0
  70. package/templates/__snapshots__/library-ts/test/test-host.ts +17 -0
  71. package/templates/__snapshots__/library-ts/tsconfig.json +17 -0
  72. package/templates/emitter-ts/src/testing/index.ts.mu +8 -0
  73. package/templates/emitter-ts/test/test-host.ts.mu +2 -2
  74. package/templates/library-ts/.eslintrc.yml +14 -0
  75. package/templates/library-ts/lib/decorators.tsp.mu +12 -0
  76. package/templates/library-ts/lib/main.tsp +1 -0
  77. package/templates/library-ts/package.json +40 -0
  78. package/templates/library-ts/prettierrc.yaml +8 -0
  79. package/templates/library-ts/src/decorators.ts +33 -0
  80. package/templates/library-ts/src/index.ts +2 -0
  81. package/templates/library-ts/src/lib.ts +20 -0
  82. package/templates/library-ts/src/linter.ts +14 -0
  83. package/templates/library-ts/src/rules/no-interfaces.rule.ts +19 -0
  84. package/templates/library-ts/src/testing/index.ts.mu +8 -0
  85. package/templates/library-ts/test/decorators.test.ts.mu +48 -0
  86. package/templates/library-ts/test/rules/no-interfaces.rule.test.ts +29 -0
  87. package/templates/library-ts/test/test-host.ts.mu +17 -0
  88. package/templates/library-ts/tsconfig.json +17 -0
  89. package/templates/scaffolding.json +77 -1
  90. 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.11",
3
- "commit": "8d5528363a8e467c9cf1217f09547a0db5d638fd"
2
+ "version": "0.52.0-dev.13",
3
+ "commit": "ccdfd13696e94f1654db5a01e755e0216ec79ea2"
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":"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"}
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"}
@@ -0,0 +1,8 @@
1
+ import { TypeSpecScriptNode } from "../core/index.js";
2
+ import { SemanticToken } from "./types.js";
3
+ /**
4
+ * Compute the semantic tokens for the given AST.
5
+ * @returns Semantic tokens
6
+ */
7
+ export declare function getSemanticTokens(ast: TypeSpecScriptNode): SemanticToken[];
8
+ //# sourceMappingURL=classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../../src/server/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,kBAAkB,EAMnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,aAAa,EAAE,CAiU1E"}
@@ -0,0 +1,310 @@
1
+ import { SyntaxKind, Token, TokenFlags, compilerAssert, createScanner, isKeyword, isPunctuation, visitChildren, } from "../core/index.js";
2
+ import { SemanticTokenKind } from "./types.js";
3
+ /**
4
+ * Compute the semantic tokens for the given AST.
5
+ * @returns Semantic tokens
6
+ */
7
+ export function getSemanticTokens(ast) {
8
+ const ignore = -1;
9
+ const defer = -2;
10
+ const file = ast.file;
11
+ const tokens = mapTokens();
12
+ classifyNode(ast);
13
+ return Array.from(tokens.values()).filter((t) => t.kind !== undefined);
14
+ function mapTokens() {
15
+ const tokens = new Map();
16
+ const scanner = createScanner(file, () => { });
17
+ const templateStack = [];
18
+ while (scanner.scan() !== Token.EndOfFile) {
19
+ if (scanner.tokenFlags & TokenFlags.DocComment) {
20
+ classifyDocComment({ pos: scanner.tokenPosition, end: scanner.position });
21
+ }
22
+ else {
23
+ handleToken(scanner.token, scanner.tokenFlags, {
24
+ pos: scanner.tokenPosition,
25
+ end: scanner.position,
26
+ });
27
+ }
28
+ }
29
+ return tokens;
30
+ function classifyDocComment(range) {
31
+ scanner.scanRange(range, () => {
32
+ while (scanner.scanDoc() !== Token.EndOfFile) {
33
+ const kind = classifyDocToken(scanner.token);
34
+ if (kind === ignore) {
35
+ continue;
36
+ }
37
+ tokens.set(scanner.tokenPosition, {
38
+ kind: kind === defer ? undefined : kind,
39
+ pos: scanner.tokenPosition,
40
+ end: scanner.position,
41
+ });
42
+ }
43
+ });
44
+ }
45
+ function handleToken(token, tokenFlags, range) {
46
+ switch (token) {
47
+ case Token.StringTemplateHead:
48
+ templateStack.push([token, tokenFlags]);
49
+ classifyStringTemplate(token, range);
50
+ break;
51
+ case Token.OpenBrace:
52
+ // If we don't have anything on the template stack,
53
+ // then we aren't trying to keep track of a previously scanned template head.
54
+ if (templateStack.length > 0) {
55
+ templateStack.push([token, tokenFlags]);
56
+ }
57
+ handleSimpleToken(token, range);
58
+ break;
59
+ case Token.CloseBrace:
60
+ // If we don't have anything on the template stack,
61
+ // then we aren't trying to keep track of a previously scanned template head.
62
+ if (templateStack.length > 0) {
63
+ const [lastToken, lastTokenFlags] = templateStack[templateStack.length - 1];
64
+ if (lastToken === Token.StringTemplateHead) {
65
+ token = scanner.reScanStringTemplate(lastTokenFlags);
66
+ // Only pop on a TemplateTail; a TemplateMiddle indicates there is more for us.
67
+ if (token === Token.StringTemplateTail) {
68
+ templateStack.pop();
69
+ classifyStringTemplate(token, {
70
+ pos: scanner.tokenPosition,
71
+ end: scanner.position,
72
+ });
73
+ }
74
+ else {
75
+ compilerAssert(token === Token.StringTemplateMiddle, "Should have been a template middle.");
76
+ classifyStringTemplate(token, {
77
+ pos: scanner.tokenPosition,
78
+ end: scanner.position,
79
+ });
80
+ }
81
+ }
82
+ else {
83
+ compilerAssert(lastToken === Token.OpenBrace, "Should have been an open brace");
84
+ templateStack.pop();
85
+ }
86
+ break;
87
+ }
88
+ handleSimpleToken(token, range);
89
+ break;
90
+ default:
91
+ handleSimpleToken(token, range);
92
+ }
93
+ }
94
+ function handleSimpleToken(token, range) {
95
+ const kind = classifyToken(scanner.token);
96
+ if (kind === ignore) {
97
+ return;
98
+ }
99
+ tokens.set(range.pos, {
100
+ kind: kind === defer ? undefined : kind,
101
+ ...range,
102
+ });
103
+ }
104
+ function classifyStringTemplate(token, range) {
105
+ const stringStart = token === Token.StringTemplateHead ? range.pos : range.pos + 1;
106
+ const stringEnd = token === Token.StringTemplateTail ? range.end : range.end - 2;
107
+ if (stringStart !== range.pos) {
108
+ tokens.set(range.pos, {
109
+ kind: SemanticTokenKind.Operator,
110
+ pos: range.pos,
111
+ end: stringStart,
112
+ });
113
+ }
114
+ tokens.set(stringStart, {
115
+ kind: SemanticTokenKind.String,
116
+ pos: stringStart,
117
+ end: stringEnd,
118
+ });
119
+ if (stringEnd !== range.end) {
120
+ tokens.set(stringEnd, {
121
+ kind: SemanticTokenKind.Operator,
122
+ pos: stringEnd,
123
+ end: range.end,
124
+ });
125
+ }
126
+ }
127
+ }
128
+ function classifyToken(token) {
129
+ switch (token) {
130
+ case Token.Identifier:
131
+ return defer;
132
+ case Token.StringLiteral:
133
+ return SemanticTokenKind.String;
134
+ case Token.NumericLiteral:
135
+ return SemanticTokenKind.Number;
136
+ case Token.MultiLineComment:
137
+ case Token.SingleLineComment:
138
+ return SemanticTokenKind.Comment;
139
+ default:
140
+ if (isKeyword(token)) {
141
+ return SemanticTokenKind.Keyword;
142
+ }
143
+ if (isPunctuation(token)) {
144
+ return SemanticTokenKind.Operator;
145
+ }
146
+ return ignore;
147
+ }
148
+ }
149
+ /** Classify tokens when scanning doc comment. */
150
+ function classifyDocToken(token) {
151
+ switch (token) {
152
+ case Token.NewLine:
153
+ case Token.Whitespace:
154
+ return ignore;
155
+ case Token.DocText:
156
+ case Token.Star:
157
+ case Token.Identifier:
158
+ return SemanticTokenKind.Comment;
159
+ case Token.At:
160
+ return defer;
161
+ default:
162
+ return ignore;
163
+ }
164
+ }
165
+ function classifyNode(node) {
166
+ switch (node.kind) {
167
+ case SyntaxKind.DirectiveExpression:
168
+ classify(node.target, SemanticTokenKind.Keyword);
169
+ break;
170
+ case SyntaxKind.TemplateParameterDeclaration:
171
+ classify(node.id, SemanticTokenKind.TypeParameter);
172
+ break;
173
+ case SyntaxKind.ModelProperty:
174
+ case SyntaxKind.UnionVariant:
175
+ if (node.id) {
176
+ classify(node.id, SemanticTokenKind.Property);
177
+ }
178
+ break;
179
+ case SyntaxKind.AliasStatement:
180
+ classify(node.id, SemanticTokenKind.Struct);
181
+ break;
182
+ case SyntaxKind.ModelStatement:
183
+ classify(node.id, SemanticTokenKind.Struct);
184
+ break;
185
+ case SyntaxKind.ScalarStatement:
186
+ classify(node.id, SemanticTokenKind.Type);
187
+ break;
188
+ case SyntaxKind.EnumStatement:
189
+ classify(node.id, SemanticTokenKind.Enum);
190
+ break;
191
+ case SyntaxKind.EnumMember:
192
+ classify(node.id, SemanticTokenKind.EnumMember);
193
+ break;
194
+ case SyntaxKind.NamespaceStatement:
195
+ classify(node.id, SemanticTokenKind.Namespace);
196
+ break;
197
+ case SyntaxKind.InterfaceStatement:
198
+ classify(node.id, SemanticTokenKind.Interface);
199
+ break;
200
+ case SyntaxKind.OperationStatement:
201
+ classify(node.id, SemanticTokenKind.Function);
202
+ break;
203
+ case SyntaxKind.DecoratorDeclarationStatement:
204
+ classify(node.id, SemanticTokenKind.Function);
205
+ break;
206
+ case SyntaxKind.FunctionDeclarationStatement:
207
+ classify(node.id, SemanticTokenKind.Function);
208
+ break;
209
+ case SyntaxKind.FunctionParameter:
210
+ classify(node.id, SemanticTokenKind.Parameter);
211
+ break;
212
+ case SyntaxKind.AugmentDecoratorStatement:
213
+ classifyReference(node.targetType, SemanticTokenKind.Type);
214
+ classifyReference(node.target, SemanticTokenKind.Macro);
215
+ break;
216
+ case SyntaxKind.DecoratorExpression:
217
+ classifyReference(node.target, SemanticTokenKind.Macro);
218
+ break;
219
+ case SyntaxKind.TypeReference:
220
+ classifyReference(node.target);
221
+ break;
222
+ case SyntaxKind.MemberExpression:
223
+ classifyReference(node);
224
+ break;
225
+ case SyntaxKind.ProjectionStatement:
226
+ classifyReference(node.selector);
227
+ classify(node.id, SemanticTokenKind.Variable);
228
+ break;
229
+ case SyntaxKind.Projection:
230
+ classify(node.directionId, SemanticTokenKind.Keyword);
231
+ for (const modifierId of node.modifierIds) {
232
+ classify(modifierId, SemanticTokenKind.Keyword);
233
+ }
234
+ break;
235
+ case SyntaxKind.ProjectionParameterDeclaration:
236
+ classifyReference(node.id, SemanticTokenKind.Parameter);
237
+ break;
238
+ case SyntaxKind.ProjectionCallExpression:
239
+ classifyReference(node.target, SemanticTokenKind.Function);
240
+ for (const arg of node.arguments) {
241
+ classifyReference(arg);
242
+ }
243
+ break;
244
+ case SyntaxKind.ProjectionMemberExpression:
245
+ classifyReference(node.id);
246
+ break;
247
+ case SyntaxKind.DocParamTag:
248
+ case SyntaxKind.DocTemplateTag:
249
+ classifyDocTag(node.tagName, SemanticTokenKind.DocCommentTag);
250
+ classifyOverride(node.paramName, SemanticTokenKind.Variable);
251
+ break;
252
+ case SyntaxKind.DocReturnsTag:
253
+ classifyDocTag(node.tagName, SemanticTokenKind.DocCommentTag);
254
+ break;
255
+ case SyntaxKind.DocUnknownTag:
256
+ classifyDocTag(node.tagName, SemanticTokenKind.Macro);
257
+ break;
258
+ case SyntaxKind.TemplateArgument:
259
+ if (node.name)
260
+ classify(node.name, SemanticTokenKind.TypeParameter);
261
+ break;
262
+ default:
263
+ break;
264
+ }
265
+ visitChildren(node, classifyNode);
266
+ }
267
+ function classifyDocTag(node, kind) {
268
+ classifyOverride(node, kind);
269
+ const token = tokens.get(node.pos - 1); // Get the `@` token
270
+ if (token) {
271
+ token.kind = kind;
272
+ }
273
+ }
274
+ function classify(node, kind) {
275
+ const token = tokens.get(node.pos);
276
+ if (token && token.kind === undefined) {
277
+ token.kind = kind;
278
+ }
279
+ }
280
+ function classifyOverride(node, kind) {
281
+ const token = tokens.get(node.pos);
282
+ if (token) {
283
+ token.kind = kind;
284
+ }
285
+ }
286
+ function classifyReference(node, kind = SemanticTokenKind.Type) {
287
+ switch (node.kind) {
288
+ case SyntaxKind.MemberExpression:
289
+ classifyIdentifier(node.base, SemanticTokenKind.Namespace);
290
+ classifyIdentifier(node.id, kind);
291
+ break;
292
+ case SyntaxKind.ProjectionMemberExpression:
293
+ classifyReference(node.base, SemanticTokenKind.Namespace);
294
+ classifyIdentifier(node.id, kind);
295
+ break;
296
+ case SyntaxKind.TypeReference:
297
+ classifyIdentifier(node.target, kind);
298
+ break;
299
+ case SyntaxKind.Identifier:
300
+ classify(node, kind);
301
+ break;
302
+ }
303
+ }
304
+ function classifyIdentifier(node, kind) {
305
+ if (node.kind === SyntaxKind.Identifier) {
306
+ classify(node, kind);
307
+ }
308
+ }
309
+ }
310
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/server/classify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { TextDocumentIdentifier } from "vscode-languageserver";
2
+ import { TextDocument } from "vscode-languageserver-textdocument";
3
+ import { CompilerHost, TypeSpecScriptNode } from "../core/index.js";
4
+ import { FileService } from "./file-service.js";
5
+ import { FileSystemCache } from "./file-system-cache.js";
6
+ import { CompileResult, ServerHost } from "./types.js";
7
+ /**
8
+ * Service managing compilation/caching of different TypeSpec projects
9
+ */
10
+ export interface CompileService {
11
+ /**
12
+ * Compile the given document.
13
+ *
14
+ * Compilation can be aborted for various reasons:
15
+ * - By the time the compilation start the document is already out of date.
16
+ *
17
+ * @param document The document to compile. This is not necessarily the entrypoint, compile will try to guess which entrypoint to compile to include this one.
18
+ * @returns the compiled result or undefined if compilation was aborted.
19
+ */
20
+ compile(document: TextDocument | TextDocumentIdentifier): Promise<CompileResult | undefined>;
21
+ /**
22
+ * Load the AST for the given document.
23
+ * @param document The document to load the AST for.
24
+ */
25
+ getScript(document: TextDocument | TextDocumentIdentifier): Promise<TypeSpecScriptNode>;
26
+ /**
27
+ * Notify the service that the given document has changed and a compilation should be requested.
28
+ * It will recompile after a debounce timer so we don't recompile on every keystroke.
29
+ * @param document Document that changed.
30
+ */
31
+ notifyChange(document: TextDocument): void;
32
+ on(event: "compileEnd", listener: (result: CompileResult) => void): void;
33
+ }
34
+ export interface CompileServiceOptions {
35
+ readonly fileSystemCache: FileSystemCache;
36
+ readonly fileService: FileService;
37
+ readonly serverHost: ServerHost;
38
+ readonly compilerHost: CompilerHost;
39
+ readonly log: (message: string, details?: unknown) => void;
40
+ }
41
+ export declare function createCompileService({ compilerHost, serverHost, fileService, fileSystemCache, log, }: CompileServiceOptions): CompileService;
42
+ //# sourceMappingURL=compile-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-service.d.ts","sourceRoot":"","sources":["../../../src/server/compile-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAQlE,OAAO,EACL,YAAY,EAIZ,kBAAkB,EAMnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAE7F;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAExF;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE3C,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5D;AAED,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,GAAG,GACJ,EAAE,qBAAqB,GAAG,cAAc,CAoMxC"}