@typespec/compiler 1.14.0-dev.2 → 1.14.0-dev.20

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 (139) hide show
  1. package/dist/generated-defs/TypeSpec.d.ts +10 -1
  2. package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/core/auto-decorator.d.ts +38 -0
  5. package/dist/src/core/auto-decorator.d.ts.map +1 -0
  6. package/dist/src/core/auto-decorator.js +99 -0
  7. package/dist/src/core/auto-decorator.js.map +1 -0
  8. package/dist/src/core/checker.d.ts.map +1 -1
  9. package/dist/src/core/checker.js +46 -25
  10. package/dist/src/core/checker.js.map +1 -1
  11. package/dist/src/core/cli/actions/vs.d.ts.map +1 -1
  12. package/dist/src/core/cli/actions/vs.js +21 -10
  13. package/dist/src/core/cli/actions/vs.js.map +1 -1
  14. package/dist/src/core/cli/actions/vscode.d.ts.map +1 -1
  15. package/dist/src/core/cli/actions/vscode.js +9 -4
  16. package/dist/src/core/cli/actions/vscode.js.map +1 -1
  17. package/dist/src/core/cli/cli.js +4 -4
  18. package/dist/src/core/cli/cli.js.map +1 -1
  19. package/dist/src/core/cli/download-vsix.d.ts +19 -0
  20. package/dist/src/core/cli/download-vsix.d.ts.map +1 -0
  21. package/dist/src/core/cli/download-vsix.js +76 -0
  22. package/dist/src/core/cli/download-vsix.js.map +1 -0
  23. package/dist/src/core/cli/utils.d.ts +7 -0
  24. package/dist/src/core/cli/utils.d.ts.map +1 -1
  25. package/dist/src/core/cli/utils.js +16 -0
  26. package/dist/src/core/cli/utils.js.map +1 -1
  27. package/dist/src/core/diagnostics.d.ts +3 -3
  28. package/dist/src/core/diagnostics.d.ts.map +1 -1
  29. package/dist/src/core/diagnostics.js +34 -3
  30. package/dist/src/core/diagnostics.js.map +1 -1
  31. package/dist/src/core/entrypoint-resolution.d.ts.map +1 -1
  32. package/dist/src/core/entrypoint-resolution.js +5 -4
  33. package/dist/src/core/entrypoint-resolution.js.map +1 -1
  34. package/dist/src/core/features.d.ts +3 -0
  35. package/dist/src/core/features.d.ts.map +1 -1
  36. package/dist/src/core/features.js +18 -5
  37. package/dist/src/core/features.js.map +1 -1
  38. package/dist/src/core/messages.d.ts +89 -7
  39. package/dist/src/core/messages.d.ts.map +1 -1
  40. package/dist/src/core/messages.js +27 -1
  41. package/dist/src/core/messages.js.map +1 -1
  42. package/dist/src/core/modifiers.d.ts.map +1 -1
  43. package/dist/src/core/modifiers.js +42 -8
  44. package/dist/src/core/modifiers.js.map +1 -1
  45. package/dist/src/core/parser.d.ts.map +1 -1
  46. package/dist/src/core/parser.js +13 -0
  47. package/dist/src/core/parser.js.map +1 -1
  48. package/dist/src/core/program.d.ts.map +1 -1
  49. package/dist/src/core/program.js +6 -1
  50. package/dist/src/core/program.js.map +1 -1
  51. package/dist/src/core/scanner.d.ts +41 -41
  52. package/dist/src/core/scanner.d.ts.map +1 -1
  53. package/dist/src/core/scanner.js +46 -47
  54. package/dist/src/core/scanner.js.map +1 -1
  55. package/dist/src/core/source-file.js +1 -1
  56. package/dist/src/core/source-file.js.map +1 -1
  57. package/dist/src/core/source-loader.d.ts.map +1 -1
  58. package/dist/src/core/source-loader.js +23 -0
  59. package/dist/src/core/source-loader.js.map +1 -1
  60. package/dist/src/core/suppression-tracking.d.ts +4 -0
  61. package/dist/src/core/suppression-tracking.d.ts.map +1 -1
  62. package/dist/src/core/suppression-tracking.js +25 -0
  63. package/dist/src/core/suppression-tracking.js.map +1 -1
  64. package/dist/src/core/types.d.ts +16 -3
  65. package/dist/src/core/types.d.ts.map +1 -1
  66. package/dist/src/core/types.js +2 -1
  67. package/dist/src/core/types.js.map +1 -1
  68. package/dist/src/experimental/mutators.d.ts.map +1 -1
  69. package/dist/src/experimental/mutators.js +32 -8
  70. package/dist/src/experimental/mutators.js.map +1 -1
  71. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  72. package/dist/src/formatter/print/printer.js +31 -6
  73. package/dist/src/formatter/print/printer.js.map +1 -1
  74. package/dist/src/index.d.ts +1 -0
  75. package/dist/src/index.d.ts.map +1 -1
  76. package/dist/src/index.js +1 -0
  77. package/dist/src/index.js.map +1 -1
  78. package/dist/src/lib/decorators.d.ts +3 -1
  79. package/dist/src/lib/decorators.d.ts.map +1 -1
  80. package/dist/src/lib/decorators.js +1 -1
  81. package/dist/src/lib/decorators.js.map +1 -1
  82. package/dist/src/server/client-config-provider.d.ts +1 -1
  83. package/dist/src/server/client-config-provider.d.ts.map +1 -1
  84. package/dist/src/server/diagnostics.d.ts.map +1 -1
  85. package/dist/src/server/diagnostics.js +1 -1
  86. package/dist/src/server/diagnostics.js.map +1 -1
  87. package/dist/src/server/server.js +1 -1
  88. package/dist/src/server/server.js.map +1 -1
  89. package/dist/src/server/serverlib.js +1 -1
  90. package/dist/src/server/serverlib.js.map +1 -1
  91. package/dist/src/server/tspconfig/completion.d.ts +1 -1
  92. package/dist/src/server/tspconfig/completion.d.ts.map +1 -1
  93. package/dist/src/server/tspconfig/completion.js +1 -1
  94. package/dist/src/server/tspconfig/completion.js.map +1 -1
  95. package/dist/src/testing/code-fix-testing.d.ts.map +1 -1
  96. package/dist/src/testing/code-fix-testing.js +2 -0
  97. package/dist/src/testing/code-fix-testing.js.map +1 -1
  98. package/dist/src/testing/fs.js +1 -0
  99. package/dist/src/testing/fs.js.map +1 -1
  100. package/dist/src/testing/index.d.ts +2 -1
  101. package/dist/src/testing/index.d.ts.map +1 -1
  102. package/dist/src/testing/index.js +3 -0
  103. package/dist/src/testing/index.js.map +1 -1
  104. package/dist/src/testing/rule-tester.d.ts.map +1 -1
  105. package/dist/src/testing/rule-tester.js +4 -1
  106. package/dist/src/testing/rule-tester.js.map +1 -1
  107. package/dist/src/testing/test-compiler-host.d.ts.map +1 -1
  108. package/dist/src/testing/test-compiler-host.js +5 -0
  109. package/dist/src/testing/test-compiler-host.js.map +1 -1
  110. package/dist/src/testing/test-host.d.ts +2 -2
  111. package/dist/src/testing/test-host.d.ts.map +1 -1
  112. package/dist/src/testing/test-host.js +4 -2
  113. package/dist/src/testing/test-host.js.map +1 -1
  114. package/dist/src/testing/test-server-host.d.ts +1 -1
  115. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  116. package/dist/src/testing/test-server-host.js +1 -1
  117. package/dist/src/testing/test-server-host.js.map +1 -1
  118. package/dist/src/testing/test-utils.d.ts +6 -1
  119. package/dist/src/testing/test-utils.d.ts.map +1 -1
  120. package/dist/src/testing/test-utils.js +8 -1
  121. package/dist/src/testing/test-utils.js.map +1 -1
  122. package/dist/src/testing/tester.d.ts.map +1 -1
  123. package/dist/src/testing/tester.js +10 -0
  124. package/dist/src/testing/tester.js.map +1 -1
  125. package/dist/src/testing/types.d.ts +7 -0
  126. package/dist/src/testing/types.d.ts.map +1 -1
  127. package/dist/src/testing/types.js +2 -0
  128. package/dist/src/testing/types.js.map +1 -1
  129. package/lib/std/decorators.tsp +11 -1
  130. package/package.json +8 -8
  131. package/templates/scaffolding.json +0 -8
  132. package/dist/src/core/cli/install-vsix.d.ts +0 -3
  133. package/dist/src/core/cli/install-vsix.d.ts.map +0 -1
  134. package/dist/src/core/cli/install-vsix.js +0 -41
  135. package/dist/src/core/cli/install-vsix.js.map +0 -1
  136. package/templates/__snapshots__/emitter-ts/src/testing/index.ts +0 -8
  137. package/templates/__snapshots__/library-ts/src/testing/index.ts +0 -8
  138. package/templates/emitter-ts/src/testing/index.ts.mu +0 -8
  139. package/templates/library-ts/src/testing/index.ts.mu +0 -8
@@ -1,3 +1,4 @@
1
+ /** @deprecated Use {@link Tester} */
1
2
  export class TestHostError extends Error {
2
3
  code;
3
4
  constructor(message, code) {
@@ -5,5 +6,6 @@ export class TestHostError extends Error {
5
6
  this.code = code;
6
7
  }
7
8
  }
9
+ /* eslint-enable @typescript-eslint/no-deprecated */
8
10
  // #endregion
9
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/testing/types.ts"],"names":[],"mappings":"AAmRA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAG7B;IAFT,YACE,OAAe,EACR,IAAuC;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,SAAI,GAAJ,IAAI,CAAmC;IAGhD,CAAC;CACF;AA6BD,aAAa"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/testing/types.ts"],"names":[],"mappings":"AA0RA,qCAAqC;AACrC,MAAM,OAAO,aAAc,SAAQ,KAAK;IAG7B;IAFT,YACE,OAAe,EACR,IAAuC;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,SAAI,GAAJ,IAAI,CAAmC;IAGhD,CAAC;CACF;AA8BD,oDAAoD;AACpD,aAAa"}
@@ -566,7 +566,7 @@ enum ArrayEncoding {
566
566
 
567
567
  /**
568
568
  * Specify how to encode the target type.
569
- * @param encodingOrEncodeAs Known name of an encoding or a scalar type to encode as(Only for numeric types to encode as string).
569
+ * @param encodingOrEncodeAs Known name of an encoding or a scalar type to encode as(Only for numeric and boolean types to encode as string).
570
570
  * @param encodedAs What target type is this being encoded as. Default to string.
571
571
  *
572
572
  * @example offsetDateTime encoded with rfc7231
@@ -590,6 +590,16 @@ enum ArrayEncoding {
590
590
  * @encode(string) id: int64;
591
591
  * }
592
592
  * ```
593
+ *
594
+ * @example encode boolean type to string
595
+ *
596
+ * `@encode(string)` on boolean uses case-insensitive `true` / `false` values.
597
+ *
598
+ * ```tsp
599
+ * model FeatureFlags {
600
+ * @encode(string) enabled: boolean;
601
+ * }
602
+ * ```
593
603
  */
594
604
  extern dec encode(
595
605
  target: Scalar | ModelProperty,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/compiler",
3
- "version": "1.14.0-dev.2",
3
+ "version": "1.14.0-dev.20",
4
4
  "description": "TypeSpec compiler and standard library",
5
5
  "author": "Microsoft Corporation",
6
6
  "license": "MIT",
@@ -94,8 +94,8 @@
94
94
  "prettier": "^3.8.1",
95
95
  "semver": "^7.7.4",
96
96
  "tar": "^7.5.13",
97
- "temporal-polyfill": "^0.3.2",
98
- "vscode-languageserver": "^9.0.1",
97
+ "temporal-polyfill": "^1.0.1",
98
+ "vscode-languageserver": "^10.0.0",
99
99
  "vscode-languageserver-textdocument": "^1.0.12",
100
100
  "yaml": "^2.8.3",
101
101
  "yargs": "^18.0.0"
@@ -103,16 +103,16 @@
103
103
  "devDependencies": {
104
104
  "@types/babel__code-frame": "^7.27.0",
105
105
  "@types/mustache": "^4.2.6",
106
- "@types/node": "^25.5.2",
106
+ "@types/node": "^26.0.0",
107
107
  "@types/semver": "^7.7.1",
108
108
  "@types/yargs": "^17.0.35",
109
- "@typespec/internal-build-utils": "^0.83.0 || >= 0.84.0-dev.0",
109
+ "@typespec/internal-build-utils": "^0.83.0 || >= 0.84.0-dev.2",
110
110
  "@vitest/coverage-v8": "^4.1.3",
111
111
  "@vitest/ui": "^4.1.3",
112
112
  "pathe": "^2.0.3",
113
113
  "rimraf": "^6.1.3",
114
114
  "source-map-support": "^0.5.21",
115
- "tmlanguage-generator": "^0.6.8 || >= 0.6.9-dev.8",
115
+ "tmlanguage-generator": "^0.6.8 || >= 0.6.9-dev.9",
116
116
  "typescript": "~6.0.2",
117
117
  "vitest": "^4.1.3",
118
118
  "vscode-oniguruma": "^2.0.1",
@@ -137,7 +137,7 @@
137
137
  "gen-manifest": "node scripts/generate-manifest.js",
138
138
  "regen-nonascii": "node scripts/regen-nonascii.js",
139
139
  "fuzz": "node dist/test/manual/fuzz.js run",
140
- "lint": "eslint . --max-warnings=0",
141
- "lint:fix": "eslint . --fix"
140
+ "lint": "oxlint . --deny-warnings",
141
+ "lint:fix": "oxlint . --fix"
142
142
  }
143
143
  }
@@ -124,10 +124,6 @@
124
124
  "path": "library-ts/src/rules/no-interfaces.rule.ts",
125
125
  "destination": "src/rules/no-interfaces.rule.ts"
126
126
  },
127
- {
128
- "path": "library-ts/src/testing/index.ts.mu",
129
- "destination": "src/testing/index.ts"
130
- },
131
127
  {
132
128
  "path": "library-ts/test/decorators.test.ts.mu",
133
129
  "destination": "test/decorators.test.ts"
@@ -185,10 +181,6 @@
185
181
  "path": "emitter-ts/src/lib.ts",
186
182
  "destination": "src/lib.ts"
187
183
  },
188
- {
189
- "path": "emitter-ts/src/testing/index.ts.mu",
190
- "destination": "src/testing/index.ts"
191
- },
192
184
  {
193
185
  "path": "emitter-ts/test/hello.test.ts",
194
186
  "destination": "test/hello.test.ts"
@@ -1,3 +0,0 @@
1
- import { CliCompilerHost } from "./types.js";
2
- export declare function installVsix<T = void>(host: CliCompilerHost, pkg: string, install: (vsixPaths: string[]) => T): Promise<T>;
3
- //# sourceMappingURL=install-vsix.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-vsix.d.ts","sourceRoot":"","sources":["../../../../src/core/cli/install-vsix.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,WAAW,CAAC,CAAC,GAAG,IAAI,EACxC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC,CA6CZ"}
@@ -1,41 +0,0 @@
1
- import { mkdtemp, readdir, rm } from "fs/promises";
2
- import os from "os";
3
- import { compilerAssert } from "../diagnostics.js";
4
- import { joinPaths } from "../path-utils.js";
5
- import { run } from "./utils.js";
6
- export async function installVsix(host, pkg, install) {
7
- // download npm package to temporary directory
8
- const temp = await mkdtemp(joinPaths(os.tmpdir(), "typespec"));
9
- const npmArgs = ["install"];
10
- // hide npm output unless --debug was passed to typespec
11
- if (!host.debug) {
12
- npmArgs.push("--silent");
13
- }
14
- // NOTE: Using cwd=temp with `--prefix .` instead of `--prefix ${temp}` to
15
- // workaround https://github.com/npm/cli/issues/3256. It's still important
16
- // to pass --prefix even though we're using cwd as otherwise, npm might
17
- // find a package.json file in a parent directory and install to that
18
- // directory.
19
- npmArgs.push("--prefix", ".");
20
- // To debug with a locally built package rather than pulling from npm,
21
- // specify the full path to the packed .tgz using TYPESPEC_DEBUG_VSIX_TGZ
22
- // environment variable.
23
- npmArgs.push(process.env.TYPESPEC_DEBUG_VSIX_TGZ ?? pkg);
24
- run(host, "npm", npmArgs, { cwd: temp });
25
- // locate .vsix
26
- const dir = joinPaths(temp, "node_modules", pkg);
27
- const files = await readdir(dir);
28
- const vsixPaths = [];
29
- for (const file of files) {
30
- if (file.endsWith(".vsix")) {
31
- vsixPaths.push(joinPaths(dir, file));
32
- }
33
- }
34
- compilerAssert(vsixPaths.length > 0, `Installed ${pkg} from npm, but didn't find any .vsix files in it.`);
35
- // install extension
36
- const result = install(vsixPaths);
37
- // delete temporary directory
38
- await rm(temp, { recursive: true });
39
- return result;
40
- }
41
- //# sourceMappingURL=install-vsix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-vsix.js","sourceRoot":"","sources":["../../../../src/core/cli/install-vsix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAqB,EACrB,GAAW,EACX,OAAmC;IAEnC,8CAA8C;IAC9C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;IAE5B,wDAAwD;IACxD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,qEAAqE;IACrE,aAAa;IACb,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE9B,sEAAsE;IACtE,yEAAyE;IACzE,wBAAwB;IACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAEzD,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,eAAe;IACf,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,cAAc,CACZ,SAAS,CAAC,MAAM,GAAG,CAAC,EACpB,aAAa,GAAG,mDAAmD,CACpE,CAAC;IAEF,oBAAoB;IACpB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAElC,6BAA6B;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +0,0 @@
1
- import { resolvePath } from "@typespec/compiler";
2
- import { createTestLibrary, TypeSpecTestLibrary } from "@typespec/compiler/testing";
3
- import { fileURLToPath } from "url";
4
-
5
- export const EmitterTsTestLibrary: TypeSpecTestLibrary = createTestLibrary({
6
- name: "emitter-ts",
7
- packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
8
- });
@@ -1,8 +0,0 @@
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
- });
@@ -1,8 +0,0 @@
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
- });
@@ -1,8 +0,0 @@
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
- });