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

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 (159) hide show
  1. package/dist/.scripts/build-init-templates.d.ts +2 -0
  2. package/dist/.scripts/build-init-templates.d.ts.map +1 -0
  3. package/dist/.scripts/build-init-templates.js +38 -0
  4. package/dist/.scripts/build-init-templates.js.map +1 -0
  5. package/dist/.scripts/helpers.d.ts +4 -0
  6. package/dist/.scripts/helpers.d.ts.map +1 -0
  7. package/dist/.scripts/helpers.js +44 -0
  8. package/dist/.scripts/helpers.js.map +1 -0
  9. package/dist/manifest.js +2 -2
  10. package/dist/src/config/config-loader.d.ts.map +1 -1
  11. package/dist/src/config/config-loader.js +1 -1
  12. package/dist/src/config/config-loader.js.map +1 -1
  13. package/dist/src/core/binder.d.ts.map +1 -1
  14. package/dist/src/core/binder.js +1 -1
  15. package/dist/src/core/binder.js.map +1 -1
  16. package/dist/src/core/checker.d.ts +4 -0
  17. package/dist/src/core/checker.d.ts.map +1 -1
  18. package/dist/src/core/checker.js +154 -64
  19. package/dist/src/core/checker.js.map +1 -1
  20. package/dist/src/core/cli/actions/format.js +1 -1
  21. package/dist/src/core/cli/actions/format.js.map +1 -1
  22. package/dist/src/core/cli/actions/init.d.ts +1 -0
  23. package/dist/src/core/cli/actions/init.d.ts.map +1 -1
  24. package/dist/src/core/cli/actions/init.js +1 -1
  25. package/dist/src/core/cli/actions/init.js.map +1 -1
  26. package/dist/src/core/cli/cli.js +6 -1
  27. package/dist/src/core/cli/cli.js.map +1 -1
  28. package/dist/src/core/cli/utils.d.ts.map +1 -1
  29. package/dist/src/core/cli/utils.js +3 -0
  30. package/dist/src/core/cli/utils.js.map +1 -1
  31. package/dist/src/core/diagnostic-creator.d.ts +11 -0
  32. package/dist/src/core/diagnostic-creator.d.ts.map +1 -0
  33. package/dist/src/core/diagnostic-creator.js +48 -0
  34. package/dist/src/core/diagnostic-creator.js.map +1 -0
  35. package/dist/src/core/diagnostics.d.ts +2 -11
  36. package/dist/src/core/diagnostics.d.ts.map +1 -1
  37. package/dist/src/core/diagnostics.js +3 -52
  38. package/dist/src/core/diagnostics.js.map +1 -1
  39. package/dist/src/core/formatter-fs.d.ts +1 -1
  40. package/dist/src/core/formatter-fs.d.ts.map +1 -1
  41. package/dist/src/core/formatter-fs.js +1 -1
  42. package/dist/src/core/formatter-fs.js.map +1 -1
  43. package/dist/src/core/helpers/location-context.js +1 -1
  44. package/dist/src/core/helpers/location-context.js.map +1 -1
  45. package/dist/src/core/index.d.ts +1 -1
  46. package/dist/src/core/index.d.ts.map +1 -1
  47. package/dist/src/core/index.js +1 -1
  48. package/dist/src/core/index.js.map +1 -1
  49. package/dist/src/core/library.d.ts +4 -3
  50. package/dist/src/core/library.d.ts.map +1 -1
  51. package/dist/src/core/library.js +14 -15
  52. package/dist/src/core/library.js.map +1 -1
  53. package/dist/src/core/linter.d.ts.map +1 -1
  54. package/dist/src/core/linter.js +12 -6
  55. package/dist/src/core/linter.js.map +1 -1
  56. package/dist/src/core/logger/logger.d.ts +1 -1
  57. package/dist/src/core/logger/logger.d.ts.map +1 -1
  58. package/dist/src/core/messages.d.ts +41 -8
  59. package/dist/src/core/messages.d.ts.map +1 -1
  60. package/dist/src/core/messages.js +12 -3
  61. package/dist/src/core/messages.js.map +1 -1
  62. package/dist/src/core/node-host.d.ts.map +1 -1
  63. package/dist/src/core/node-host.js +4 -3
  64. package/dist/src/core/node-host.js.map +1 -1
  65. package/dist/src/core/param-message.d.ts +3 -0
  66. package/dist/src/core/param-message.d.ts.map +1 -0
  67. package/dist/src/core/param-message.js +16 -0
  68. package/dist/src/core/param-message.js.map +1 -0
  69. package/dist/src/core/parser.d.ts +5 -1
  70. package/dist/src/core/parser.d.ts.map +1 -1
  71. package/dist/src/core/parser.js +56 -2
  72. package/dist/src/core/parser.js.map +1 -1
  73. package/dist/src/core/program.js +8 -5
  74. package/dist/src/core/program.js.map +1 -1
  75. package/dist/src/core/types.d.ts +31 -15
  76. package/dist/src/core/types.d.ts.map +1 -1
  77. package/dist/src/core/types.js +7 -5
  78. package/dist/src/core/types.js.map +1 -1
  79. package/dist/src/core/util.d.ts +1 -2
  80. package/dist/src/core/util.d.ts.map +1 -1
  81. package/dist/src/core/util.js +2 -3
  82. package/dist/src/core/util.js.map +1 -1
  83. package/dist/src/emitter-framework/reference-cycle.d.ts +1 -1
  84. package/dist/src/emitter-framework/reference-cycle.d.ts.map +1 -1
  85. package/dist/src/emitter-framework/reference-cycle.js +1 -1
  86. package/dist/src/emitter-framework/reference-cycle.js.map +1 -1
  87. package/dist/src/formatter/print/printer.d.ts +2 -1
  88. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  89. package/dist/src/formatter/print/printer.js +12 -0
  90. package/dist/src/formatter/print/printer.js.map +1 -1
  91. package/dist/src/init/core-templates.d.ts +6 -0
  92. package/dist/src/init/core-templates.d.ts.map +1 -0
  93. package/dist/src/init/core-templates.js +11 -0
  94. package/dist/src/init/core-templates.js.map +1 -0
  95. package/dist/src/init/file-templating.d.ts +25 -0
  96. package/dist/src/init/file-templating.d.ts.map +1 -0
  97. package/dist/src/init/file-templating.js +39 -0
  98. package/dist/src/init/file-templating.js.map +1 -0
  99. package/dist/src/init/init-template.d.ts +3 -3
  100. package/dist/src/init/init-template.d.ts.map +1 -1
  101. package/dist/src/init/init-template.js +4 -3
  102. package/dist/src/init/init-template.js.map +1 -1
  103. package/dist/src/init/init.d.ts +11 -47
  104. package/dist/src/init/init.d.ts.map +1 -1
  105. package/dist/src/init/init.js +35 -194
  106. package/dist/src/init/init.js.map +1 -1
  107. package/dist/src/init/scaffold.d.ts +39 -0
  108. package/dist/src/init/scaffold.d.ts.map +1 -0
  109. package/dist/src/init/scaffold.js +132 -0
  110. package/dist/src/init/scaffold.js.map +1 -0
  111. package/dist/src/manifest.d.ts.map +1 -1
  112. package/dist/src/manifest.js +10 -3
  113. package/dist/src/manifest.js.map +1 -1
  114. package/dist/src/server/completion.js +3 -3
  115. package/dist/src/server/completion.js.map +1 -1
  116. package/dist/src/server/serverlib.d.ts.map +1 -1
  117. package/dist/src/server/serverlib.js +4 -0
  118. package/dist/src/server/serverlib.js.map +1 -1
  119. package/dist/src/server/tmlanguage.js +1 -1
  120. package/dist/src/server/tmlanguage.js.map +1 -1
  121. package/dist/src/testing/test-host.js +2 -2
  122. package/dist/src/testing/test-host.js.map +1 -1
  123. package/dist/src/testing/test-utils.d.ts +2 -0
  124. package/dist/src/testing/test-utils.d.ts.map +1 -1
  125. package/dist/src/testing/test-utils.js +8 -3
  126. package/dist/src/testing/test-utils.js.map +1 -1
  127. package/dist/typespec.tmLanguage +8 -0
  128. package/dist/vitest.config.d.ts +3 -0
  129. package/dist/vitest.config.d.ts.map +1 -0
  130. package/dist/vitest.config.e2e.d.ts +3 -0
  131. package/dist/vitest.config.e2e.d.ts.map +1 -0
  132. package/dist/vitest.config.e2e.js +16 -0
  133. package/dist/vitest.config.e2e.js.map +1 -0
  134. package/dist/vitest.config.js +15 -0
  135. package/dist/vitest.config.js.map +1 -0
  136. package/lib/decorators.tsp +3 -3
  137. package/lib/lib.tsp +30 -25
  138. package/package.json +12 -9
  139. package/templates/__snapshots__/emitter-ts/.eslintrc.yml +14 -0
  140. package/templates/__snapshots__/emitter-ts/package.json +37 -0
  141. package/templates/__snapshots__/emitter-ts/prettierrc.yaml +8 -0
  142. package/templates/__snapshots__/emitter-ts/src/emitter.ts +10 -0
  143. package/templates/__snapshots__/emitter-ts/src/index.ts +2 -0
  144. package/templates/__snapshots__/emitter-ts/src/lib.ts +8 -0
  145. package/templates/__snapshots__/emitter-ts/src/testing/index.ts +10 -0
  146. package/templates/__snapshots__/emitter-ts/test/hello.test.ts +10 -0
  147. package/templates/__snapshots__/emitter-ts/test/test-host.ts +47 -0
  148. package/templates/__snapshots__/emitter-ts/tsconfig.json +17 -0
  149. package/templates/emitter-ts/.eslintrc.yml +14 -0
  150. package/templates/emitter-ts/package.json +37 -0
  151. package/templates/emitter-ts/prettierrc.yaml +8 -0
  152. package/templates/emitter-ts/src/emitter.ts +10 -0
  153. package/templates/emitter-ts/src/index.ts +2 -0
  154. package/templates/emitter-ts/src/lib.ts +8 -0
  155. package/templates/emitter-ts/src/testing/index.ts +10 -0
  156. package/templates/emitter-ts/test/hello.test.ts +10 -0
  157. package/templates/emitter-ts/test/test-host.ts.mu +47 -0
  158. package/templates/emitter-ts/tsconfig.json +17 -0
  159. package/templates/scaffolding.json +79 -0
@@ -1,68 +1,34 @@
1
1
  import { readdir } from "fs/promises";
2
- import Mustache from "mustache";
2
+ import pc from "picocolors";
3
3
  import prompts from "prompts";
4
4
  import * as semver from "semver";
5
- import { stringify } from "yaml";
6
- import { TypeSpecConfigFilename } from "../config/config-loader.js";
7
- import { formatTypeSpec } from "../core/formatter.js";
8
5
  import { createDiagnostic } from "../core/messages.js";
9
- import { getBaseFileName, getDirectoryPath, joinPaths } from "../core/path-utils.js";
6
+ import { getBaseFileName, getDirectoryPath } from "../core/path-utils.js";
10
7
  import { createJSONSchemaValidator } from "../core/schema-validator.js";
11
8
  import { NoTarget } from "../core/types.js";
12
- import { readUrlOrPath, resolveRelativeUrlOrPath } from "../core/util.js";
9
+ import { readUrlOrPath } from "../core/util.js";
13
10
  import { MANIFEST } from "../manifest.js";
14
- import { InitTemplateSchema, } from "./init-template.js";
15
- const normalizeVersion = function () {
16
- return function (text, render) {
17
- return render(text).replaceAll("-", "_");
18
- };
19
- };
20
- const toLowerCase = function () {
21
- return function (text, render) {
22
- return render(text).toLowerCase();
23
- };
24
- };
25
- const normalizePackageName = function () {
26
- return function (text, render) {
27
- return render(text).replaceAll(".", "-").toLowerCase();
28
- };
29
- };
30
- export function makeScaffoldingConfig(config) {
31
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
32
- return {
33
- title: (_a = config.title) !== null && _a !== void 0 ? _a : "",
34
- description: (_b = config.description) !== null && _b !== void 0 ? _b : "",
35
- compilerVersion: (_c = config.compilerVersion) !== null && _c !== void 0 ? _c : "",
36
- templateUri: (_d = config.templateUri) !== null && _d !== void 0 ? _d : ".",
37
- libraries: (_e = config.libraries) !== null && _e !== void 0 ? _e : [],
38
- name: (_f = config.name) !== null && _f !== void 0 ? _f : "",
39
- directory: (_g = config.directory) !== null && _g !== void 0 ? _g : "",
40
- skipCompilerPackage: (_h = config.skipCompilerPackage) !== null && _h !== void 0 ? _h : false,
41
- folderName: (_j = config.folderName) !== null && _j !== void 0 ? _j : "",
42
- parameters: (_k = config.parameters) !== null && _k !== void 0 ? _k : {},
43
- config: config.config,
44
- files: config.files,
45
- normalizeVersion: (_l = config.normalizeVersion) !== null && _l !== void 0 ? _l : normalizeVersion,
46
- toLowerCase: (_m = config.toLowerCase) !== null && _m !== void 0 ? _m : toLowerCase,
47
- normalizePackageName: (_o = config.normalizePackageName) !== null && _o !== void 0 ? _o : normalizePackageName,
48
- };
49
- }
50
- export async function initTypeSpecProject(host, directory, templatesUrl) {
51
- var _a, _b;
11
+ import { TypeSpecCoreTemplates } from "./core-templates.js";
12
+ import { InitTemplateSchema } from "./init-template.js";
13
+ import { makeScaffoldingConfig, normalizeLibrary, scaffoldNewProject } from "./scaffold.js";
14
+ export async function initTypeSpecProject(host, directory, options = {}) {
15
+ var _a;
52
16
  if (!(await confirmDirectoryEmpty(directory))) {
53
17
  return;
54
18
  }
55
19
  const folderName = getBaseFileName(directory);
56
- const url = templatesUrl ? { url: templatesUrl } : undefined;
57
20
  // Download template configuration and prompt user to select a template
58
21
  // No validation is done until one has been selected
59
- const templates = url === undefined ? builtInTemplates : await downloadTemplates(host, url);
60
- const templateName = await promptTemplateSelection(templates, url);
22
+ const result = options.templatesUrl === undefined
23
+ ? TypeSpecCoreTemplates
24
+ : await downloadTemplates(host, options.templatesUrl);
25
+ const templateName = (_a = options.template) !== null && _a !== void 0 ? _a : (await promptTemplateSelection(result.templates));
61
26
  // Validate minimum compiler version for non built-in templates
62
- if (url !== undefined && !(await validateTemplate(templates[templateName], url))) {
27
+ if (result !== TypeSpecCoreTemplates &&
28
+ !(await validateTemplate(result.templates[templateName], result))) {
63
29
  return;
64
30
  }
65
- const template = templates[templateName];
31
+ const template = result.templates[templateName];
66
32
  if (template.description) {
67
33
  // eslint-disable-next-line no-console
68
34
  console.log(template.description);
@@ -77,24 +43,21 @@ export async function initTypeSpecProject(host, directory, templatesUrl) {
77
43
  ]);
78
44
  const libraries = await selectLibraries(template);
79
45
  const parameters = await promptCustomParameters(template);
80
- const scaffoldingConfig = makeScaffoldingConfig({
81
- ...template,
82
- templateUri: (_a = url === null || url === void 0 ? void 0 : url.finalUrl) !== null && _a !== void 0 ? _a : ".",
46
+ const scaffoldingConfig = makeScaffoldingConfig(template, {
47
+ baseUri: result.baseUri,
83
48
  libraries,
84
49
  name,
85
50
  directory,
86
- skipCompilerPackage: (_b = template.skipCompilerPackage) !== null && _b !== void 0 ? _b : false,
87
51
  folderName,
88
52
  parameters,
89
- normalizeVersion,
90
- toLowerCase,
91
- normalizePackageName,
92
53
  });
93
54
  await scaffoldNewProject(host, scaffoldingConfig);
94
55
  // eslint-disable-next-line no-console
56
+ console.log("");
57
+ // eslint-disable-next-line no-console
95
58
  console.log("TypeSpec init completed. You can run `tsp install` now to install dependencies.");
96
59
  // eslint-disable-next-line no-console
97
- console.log("Project created successfully.");
60
+ console.log(pc.green("Project created successfully."));
98
61
  }
99
62
  async function promptCustomParameters(template) {
100
63
  if (!template.inputs) {
@@ -125,23 +88,6 @@ async function confirmDirectoryEmpty(directory) {
125
88
  }
126
89
  return confirm(`Folder '${directory}' is not empty. Are you sure you want to initialize a new project here?`);
127
90
  }
128
- const builtInTemplates = {
129
- empty: {
130
- title: "Empty project",
131
- description: "Create an empty project.",
132
- libraries: [],
133
- compilerVersion: MANIFEST.version,
134
- },
135
- rest: {
136
- title: "Generic Rest API",
137
- description: "Create a project representing a generic Rest API",
138
- compilerVersion: MANIFEST.version,
139
- libraries: ["@typespec/http", "@typespec/rest", "@typespec/openapi3"],
140
- config: {
141
- emit: ["@typespec/openapi3"],
142
- },
143
- },
144
- };
145
91
  async function confirm(message) {
146
92
  const { confirm } = await prompts({
147
93
  name: "confirm",
@@ -151,19 +97,17 @@ async function confirm(message) {
151
97
  });
152
98
  return confirm;
153
99
  }
154
- async function downloadTemplates(host, templatesUrl) {
100
+ async function downloadTemplates(host, url) {
155
101
  let file;
156
102
  try {
157
- file = await readUrlOrPath(host, templatesUrl.url);
158
- templatesUrl.finalUrl = file.path;
159
- templatesUrl.file = file;
103
+ file = await readUrlOrPath(host, url);
160
104
  }
161
105
  catch (e) {
162
106
  throw new InitTemplateError([
163
107
  createDiagnostic({
164
108
  code: "init-template-download-failed",
165
109
  target: NoTarget,
166
- format: { url: templatesUrl.url, message: e.message },
110
+ format: { url: url, message: e.message },
167
111
  }),
168
112
  ]);
169
113
  }
@@ -176,13 +120,13 @@ async function downloadTemplates(host, templatesUrl) {
176
120
  createDiagnostic({
177
121
  code: "init-template-invalid-json",
178
122
  target: NoTarget,
179
- format: { url: templatesUrl.url, message: e.message },
123
+ format: { url: url, message: e.message },
180
124
  }),
181
125
  ]);
182
126
  }
183
- return json;
127
+ return { templates: json, baseUri: getDirectoryPath(file.path), file };
184
128
  }
185
- async function promptTemplateSelection(templates, templatesUrl) {
129
+ async function promptTemplateSelection(templates) {
186
130
  const { templateName } = await prompts({
187
131
  type: "select",
188
132
  name: "templateName",
@@ -202,27 +146,25 @@ async function promptTemplateSelection(templates, templatesUrl) {
202
146
  }
203
147
  return templateName;
204
148
  }
205
- async function validateTemplate(template, templatesUrl) {
149
+ async function validateTemplate(template, loaded) {
206
150
  // After selection, validate the template definition
207
151
  const currentCompilerVersion = MANIFEST.version;
208
- const validationTarget = templatesUrl.file;
209
152
  let validationResult;
210
153
  // 1. If current version > compilerVersion, proceed with strict validation
211
- if (template.compilerVersion && semver.gte(currentCompilerVersion, template.compilerVersion)) {
212
- validationResult = validateTemplateDefinitions(template, validationTarget, true);
154
+ if (template.compilerVersion === undefined ||
155
+ semver.gte(currentCompilerVersion, template.compilerVersion)) {
156
+ validationResult = validateTemplateDefinitions(template, loaded.file, true);
213
157
  // 1.1 If strict validation fails, try relaxed validation
214
158
  if (!validationResult.valid) {
215
- validationResult = validateTemplateDefinitions(template, validationTarget, false);
159
+ validationResult = validateTemplateDefinitions(template, loaded.file, false);
216
160
  }
217
161
  }
218
162
  else {
219
163
  // 2. if version mis-match or none specified, warn and prompt user to continue or not
220
- const confirmationMessage = template.compilerVersion
221
- ? `The template you selected is designed for tsp version ${template.compilerVersion}. You are currently using tsp version ${currentCompilerVersion}.`
222
- : `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}.`;
223
165
  if (await confirm(`${confirmationMessage} The project created may not be correct. Do you want to continue?`)) {
224
166
  // 2.1 If user choose to continue, proceed with relaxed validation
225
- validationResult = validateTemplateDefinitions(template, validationTarget, false);
167
+ validationResult = validateTemplateDefinitions(template, loaded.file, false);
226
168
  }
227
169
  else {
228
170
  return false;
@@ -235,20 +177,12 @@ async function validateTemplate(template, templatesUrl) {
235
177
  }
236
178
  return true;
237
179
  }
238
- function getLibrarySpec(library) {
239
- return typeof library === "string" ? { name: library } : library;
240
- }
241
- async function getLibraryVersion(library) {
242
- var _a;
243
- // TODO: Resolve 'latest' version from npm, issue #1919
244
- return (_a = library.version) !== null && _a !== void 0 ? _a : "latest";
245
- }
246
180
  async function selectLibraries(template) {
247
- if (template.libraries.length === 0) {
181
+ if (template.libraries === undefined || template.libraries.length === 0) {
248
182
  return [];
249
183
  }
250
184
  const libraryChoices = template.libraries.map((x) => ({
251
- ...getLibrarySpec(x),
185
+ ...normalizeLibrary(x),
252
186
  description: "",
253
187
  }));
254
188
  const { libraries } = await prompts({
@@ -267,91 +201,6 @@ async function selectLibraries(template) {
267
201
  });
268
202
  return libraries;
269
203
  }
270
- export async function scaffoldNewProject(host, config) {
271
- await writePackageJson(host, config);
272
- await writeConfig(host, config);
273
- await writeMain(host, config);
274
- await writeFiles(host, config);
275
- }
276
- async function writePackageJson(host, config) {
277
- var _a;
278
- if (isFileSkipGeneration("package.json", (_a = config.files) !== null && _a !== void 0 ? _a : [])) {
279
- return;
280
- }
281
- const dependencies = {};
282
- if (!config.skipCompilerPackage) {
283
- dependencies["@typespec/compiler"] = "latest";
284
- }
285
- for (const library of config.libraries) {
286
- dependencies[library.name] = await getLibraryVersion(library);
287
- }
288
- const packageJson = {
289
- name: config.name,
290
- version: "0.1.0",
291
- type: "module",
292
- dependencies,
293
- private: true,
294
- };
295
- return host.writeFile(joinPaths(config.directory, "package.json"), JSON.stringify(packageJson, null, 2));
296
- }
297
- const placeholderConfig = `
298
- # extends: ../tspconfig.yaml # Extend another config file
299
- # emit: # Emitter name
300
- # - "<emitter-name"
301
- # options: # Emitter options
302
- # <emitter-name>:
303
- # "<option-name>": "<option-value>"
304
- # environment-variables: # Environment variables which can be used to interpolate emitter options
305
- # <variable-name>:
306
- # default: "<variable-default>"
307
- # parameters: # Parameters which can be used to interpolate emitter options
308
- # <param-name>:
309
- # default: "<param-default>"
310
- # trace: # Trace areas to enable tracing
311
- # - "<trace-name>"
312
- # warn-as-error: true # Treat warnings as errors
313
- # output-dir: "{project-root}/_generated" # Configure the base output directory for all emitters
314
- `.trim();
315
- async function writeConfig(host, config) {
316
- var _a;
317
- if (isFileSkipGeneration(TypeSpecConfigFilename, (_a = config.files) !== null && _a !== void 0 ? _a : [])) {
318
- return;
319
- }
320
- const content = config.config ? stringify(config.config) : placeholderConfig;
321
- return host.writeFile(joinPaths(config.directory, TypeSpecConfigFilename), content);
322
- }
323
- async function writeMain(host, config) {
324
- var _a;
325
- if (isFileSkipGeneration("main.tsp", (_a = config.files) !== null && _a !== void 0 ? _a : [])) {
326
- return;
327
- }
328
- const dependencies = {};
329
- for (const library of config.libraries) {
330
- dependencies[library.name] = await getLibraryVersion(library);
331
- }
332
- const lines = [...config.libraries.map((x) => `import "${x.name}";`), ""];
333
- const content = lines.join("\n");
334
- return host.writeFile(joinPaths(config.directory, "main.tsp"), await formatTypeSpec(content));
335
- }
336
- async function writeFiles(host, config) {
337
- if (!config.files) {
338
- return;
339
- }
340
- for (const file of config.files) {
341
- if (file.skipGeneration !== true) {
342
- await writeFile(host, config, file);
343
- }
344
- }
345
- }
346
- async function writeFile(host, config, file) {
347
- const baseDir = getDirectoryPath(config.templateUri) + "/";
348
- const template = await readUrlOrPath(host, resolveRelativeUrlOrPath(baseDir, file.path));
349
- const content = Mustache.render(template.text, config);
350
- const destinationFilePath = joinPaths(config.directory, file.destination);
351
- // create folders in case they don't exist
352
- await host.mkdirp(getDirectoryPath(destinationFilePath) + "/");
353
- return host.writeFile(joinPaths(config.directory, file.destination), content);
354
- }
355
204
  /**
356
205
  * Error thrown when init template acquisition fails or template is invalid.
357
206
  *
@@ -370,14 +219,6 @@ function validateTemplateDefinitions(template, templateName, strictValidation) {
370
219
  const diagnostics = validator.validate(template, templateName);
371
220
  return { valid: diagnostics.length === 0, diagnostics };
372
221
  }
373
- function isFileSkipGeneration(fileName, files) {
374
- for (const file of files) {
375
- if (file.path === fileName) {
376
- return file.skipGeneration;
377
- }
378
- }
379
- return false;
380
- }
381
222
  function logDiagnostics(diagnostics) {
382
223
  diagnostics.forEach((diagnostic) => {
383
224
  // eslint-disable-next-line no-console
@@ -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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"}
@@ -0,0 +1,39 @@
1
+ import { CompilerHost } from "../core/types.js";
2
+ import { InitTemplate, InitTemplateLibrary, InitTemplateLibrarySpec } from "./init-template.js";
3
+ export interface ScaffoldingConfig {
4
+ /** Template used to resolve that config */
5
+ template: InitTemplate;
6
+ /**
7
+ * Path where this template was loaded from.
8
+ */
9
+ baseUri: string;
10
+ /**
11
+ * Directory full path where the project should be initialized.
12
+ */
13
+ directory: string;
14
+ /**
15
+ * folder name where the project should be initialized.
16
+ */
17
+ folderName: string;
18
+ /**
19
+ * Name of the project.
20
+ */
21
+ name: string;
22
+ /**
23
+ * List of libraries to include
24
+ */
25
+ libraries: InitTemplateLibrarySpec[];
26
+ /**
27
+ * Custom parameters provided in the tempalates.
28
+ */
29
+ parameters: Record<string, any>;
30
+ }
31
+ export declare function normalizeLibrary(library: InitTemplateLibrary): InitTemplateLibrarySpec;
32
+ export declare function makeScaffoldingConfig(template: InitTemplate, config: Partial<ScaffoldingConfig>): ScaffoldingConfig;
33
+ /**
34
+ * Scaffold a new TypeSpec project using the given scaffolding config.
35
+ * @param host
36
+ * @param config
37
+ */
38
+ export declare function scaffoldNewProject(host: CompilerHost, config: ScaffoldingConfig): Promise<void>;
39
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/init/scaffold.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EACL,YAAY,EAEZ,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,QAAQ,EAAE,YAAY,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,uBAAuB,EAAE,CAAC;IAErC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,uBAAuB,CAKtF;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACjC,iBAAiB,CAWnB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,iBAMrF"}
@@ -0,0 +1,132 @@
1
+ import { stringify } from "yaml";
2
+ import { TypeSpecConfigFilename } from "../config/config-loader.js";
3
+ import { formatTypeSpec } from "../core/formatter.js";
4
+ import { getDirectoryPath, joinPaths } from "../core/path-utils.js";
5
+ import { readUrlOrPath, resolveRelativeUrlOrPath } from "../core/util.js";
6
+ import { createFileTemplatingContext, render } from "./file-templating.js";
7
+ export function normalizeLibrary(library) {
8
+ if (typeof library === "string") {
9
+ return { name: library };
10
+ }
11
+ return library;
12
+ }
13
+ export function makeScaffoldingConfig(template, config) {
14
+ var _a, _b, _c, _d, _e, _f, _g, _h;
15
+ return {
16
+ template,
17
+ libraries: (_c = (_a = config.libraries) !== null && _a !== void 0 ? _a : (_b = template.libraries) === null || _b === void 0 ? void 0 : _b.map(normalizeLibrary)) !== null && _c !== void 0 ? _c : [],
18
+ baseUri: (_d = config.baseUri) !== null && _d !== void 0 ? _d : ".",
19
+ name: (_e = config.name) !== null && _e !== void 0 ? _e : "",
20
+ directory: (_f = config.directory) !== null && _f !== void 0 ? _f : "",
21
+ folderName: (_g = config.folderName) !== null && _g !== void 0 ? _g : "",
22
+ parameters: (_h = config.parameters) !== null && _h !== void 0 ? _h : {},
23
+ ...config,
24
+ };
25
+ }
26
+ /**
27
+ * Scaffold a new TypeSpec project using the given scaffolding config.
28
+ * @param host
29
+ * @param config
30
+ */
31
+ export async function scaffoldNewProject(host, config) {
32
+ await host.mkdirp(config.directory);
33
+ await writePackageJson(host, config);
34
+ await writeConfig(host, config);
35
+ await writeMain(host, config);
36
+ await writeFiles(host, config);
37
+ }
38
+ function isFileSkipGeneration(fileName, files) {
39
+ var _a;
40
+ for (const file of files) {
41
+ if (file.destination === fileName) {
42
+ return (_a = file.skipGeneration) !== null && _a !== void 0 ? _a : false;
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ async function writePackageJson(host, config) {
48
+ var _a;
49
+ if (isFileSkipGeneration("package.json", (_a = config.template.files) !== null && _a !== void 0 ? _a : [])) {
50
+ return;
51
+ }
52
+ const dependencies = {};
53
+ if (!config.template.skipCompilerPackage) {
54
+ dependencies["@typespec/compiler"] = "latest";
55
+ }
56
+ for (const library of config.libraries) {
57
+ dependencies[library.name] = await getLibraryVersion(library);
58
+ }
59
+ const packageJson = {
60
+ name: config.name,
61
+ version: "0.1.0",
62
+ type: "module",
63
+ dependencies,
64
+ private: true,
65
+ };
66
+ return host.writeFile(joinPaths(config.directory, "package.json"), JSON.stringify(packageJson, null, 2));
67
+ }
68
+ const placeholderConfig = `
69
+ # extends: ../tspconfig.yaml # Extend another config file
70
+ # emit: # Emitter name
71
+ # - "<emitter-name"
72
+ # options: # Emitter options
73
+ # <emitter-name>:
74
+ # "<option-name>": "<option-value>"
75
+ # environment-variables: # Environment variables which can be used to interpolate emitter options
76
+ # <variable-name>:
77
+ # default: "<variable-default>"
78
+ # parameters: # Parameters which can be used to interpolate emitter options
79
+ # <param-name>:
80
+ # default: "<param-default>"
81
+ # trace: # Trace areas to enable tracing
82
+ # - "<trace-name>"
83
+ # warn-as-error: true # Treat warnings as errors
84
+ # output-dir: "{project-root}/_generated" # Configure the base output directory for all emitters
85
+ `.trim();
86
+ async function writeConfig(host, config) {
87
+ var _a;
88
+ if (isFileSkipGeneration(TypeSpecConfigFilename, (_a = config.template.files) !== null && _a !== void 0 ? _a : [])) {
89
+ return;
90
+ }
91
+ const content = config.template.config ? stringify(config.template.config) : placeholderConfig;
92
+ return host.writeFile(joinPaths(config.directory, TypeSpecConfigFilename), content);
93
+ }
94
+ async function writeMain(host, config) {
95
+ var _a;
96
+ if (isFileSkipGeneration("main.tsp", (_a = config.template.files) !== null && _a !== void 0 ? _a : [])) {
97
+ return;
98
+ }
99
+ const dependencies = {};
100
+ for (const library of config.libraries) {
101
+ dependencies[library.name] = await getLibraryVersion(library);
102
+ }
103
+ const lines = [...config.libraries.map((x) => `import "${x.name}";`), ""];
104
+ const content = lines.join("\n");
105
+ return host.writeFile(joinPaths(config.directory, "main.tsp"), await formatTypeSpec(content));
106
+ }
107
+ async function writeFiles(host, config) {
108
+ const templateContext = createFileTemplatingContext(config);
109
+ if (!config.template.files) {
110
+ return;
111
+ }
112
+ for (const file of config.template.files) {
113
+ if (file.skipGeneration !== true) {
114
+ await writeFile(host, config, templateContext, file);
115
+ }
116
+ }
117
+ }
118
+ async function writeFile(host, config, context, file) {
119
+ const baseDir = config.baseUri + "/";
120
+ const template = await readUrlOrPath(host, resolveRelativeUrlOrPath(baseDir, file.path));
121
+ const content = render(template.text, context);
122
+ const destinationFilePath = joinPaths(config.directory, file.destination);
123
+ // create folders in case they don't exist
124
+ await host.mkdirp(getDirectoryPath(destinationFilePath) + "/");
125
+ return host.writeFile(joinPaths(config.directory, file.destination), content);
126
+ }
127
+ async function getLibraryVersion(library) {
128
+ var _a;
129
+ // TODO: Resolve 'latest' version from npm, issue #1919
130
+ return (_a = library.version) !== null && _a !== void 0 ? _a : "latest";
131
+ }
132
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/init/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAyB,2BAA2B,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA2ClG,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAsB,EACtB,MAAkC;;IAElC,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,MAAA,MAAA,MAAM,CAAC,SAAS,mCAAI,MAAA,QAAQ,CAAC,SAAS,0CAAE,GAAG,CAAC,gBAAgB,CAAC,mCAAI,EAAE;QAC9E,OAAO,EAAE,MAAA,MAAM,CAAC,OAAO,mCAAI,GAAG;QAC9B,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,mCAAI,EAAE;QACvB,SAAS,EAAE,MAAA,MAAM,CAAC,SAAS,mCAAI,EAAE;QACjC,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE;QACnC,UAAU,EAAE,MAAA,MAAM,CAAC,UAAU,mCAAI,EAAE;QACnC,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAkB,EAAE,MAAyB;IACpF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,KAAyB;;IACvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,MAAA,IAAI,CAAC,cAAc,mCAAI,KAAK,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAkB,EAAE,MAAyB;;IAC3E,IAAI,oBAAoB,CAAC,cAAc,EAAE,MAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,CAAC;QACtE,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACzC,YAAY,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAAC;IAChD,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,QAAQ;QACd,YAAY;QACZ,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CACnB,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,EAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;CAiBzB,CAAC,IAAI,EAAE,CAAC;AACT,KAAK,UAAU,WAAW,CAAC,IAAkB,EAAE,MAAyB;;IACtE,IAAI,oBAAoB,CAAC,sBAAsB,EAAE,MAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,CAAC;QAC9E,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC/F,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC,CAAC;AACtF,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAkB,EAAE,MAAyB;;IACpE,IAAI,oBAAoB,CAAC,UAAU,EAAE,MAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,CAAC;QAClE,OAAO;IACT,CAAC;IACD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAkB,EAAE,MAAyB;IACrE,MAAM,eAAe,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,IAAkB,EAClB,MAAyB,EACzB,OAA8B,EAC9B,IAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,0CAA0C;IAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAgC;;IAC/D,uDAAuD;IACvD,OAAO,MAAA,OAAO,CAAC,OAAO,mCAAI,QAAQ,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,KAAmB,CAAC;AAEhD,sCAAsC;AACtC,eAAO,MAAM,WAAW,KAAkB,CAAC;AAE3C,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,QAAQ,EAAE,gBAA2B,CAAC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,eAAe,KAAmB,CAAC;AAEhD,sCAAsC;AACtC,eAAO,MAAM,WAAW,KAAkB,CAAC;AAE3C,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,QAAQ,EAAE,gBAA2B,CAAC"}
@@ -1,6 +1,13 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-ignore
3
- import manifest from "../manifest.js";
1
+ let manifest;
2
+ try {
3
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
+ // @ts-ignore
5
+ manifest = (await import("../manifest.js")).default;
6
+ }
7
+ catch {
8
+ const name = "../dist/manifest.js";
9
+ manifest = (await import(/* @vite-ignore */ /* webpackIgnore: true */ name)).default;
10
+ }
4
11
  export const typespecVersion = manifest.version;
5
12
  /** @deprecated Use typespecVersion */
6
13
  export const cadlVersion = typespecVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,aAAa;AACb,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;AAEhD,sCAAsC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAsB3C,MAAM,CAAC,MAAM,QAAQ,GAAqB,QAAQ,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAAA,IAAI,QAAQ,CAAC;AACb,IAAI,CAAC;IACH,6DAA6D;IAC7D,aAAa;IACb,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;AACtD,CAAC;AAAC,MAAM,CAAC;IACP,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACnC,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;AAEhD,sCAAsC;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAsB3C,MAAM,CAAC,MAAM,QAAQ,GAAqB,QAAQ,CAAC"}
@@ -68,7 +68,7 @@ function addKeywordCompletion(area, completions) {
68
68
  }
69
69
  async function addLibraryImportCompletion({ program, file, completions }, node) {
70
70
  const documentPath = file.file.path;
71
- const projectRoot = await findProjectRoot(program.host, documentPath);
71
+ const projectRoot = await findProjectRoot(program.host.stat, documentPath);
72
72
  if (projectRoot !== undefined) {
73
73
  const [packagejson] = await loadFile(program.host, resolvePath(projectRoot, "package.json"), JSON.parse, program.reportDiagnostic);
74
74
  let dependencies = [];
@@ -143,7 +143,7 @@ function addIdentifierCompletion({ program, completions }, node) {
143
143
  if (result.size === 0) {
144
144
  return;
145
145
  }
146
- for (const [key, { sym, label }] of result) {
146
+ for (const [key, { sym, label, suffix }] of result) {
147
147
  let kind;
148
148
  let deprecated = false;
149
149
  const type = (_a = sym.type) !== null && _a !== void 0 ? _a : program.checker.getTypeForNode(sym.declarations[0]);
@@ -172,7 +172,7 @@ function addIdentifierCompletion({ program, completions }, node) {
172
172
  }
173
173
  : undefined,
174
174
  kind,
175
- insertText: printId(key),
175
+ insertText: printId(key) + (suffix !== null && suffix !== void 0 ? suffix : ""),
176
176
  };
177
177
  if (deprecated) {
178
178
  item.tags = [CompletionItemTag.Deprecated];