@typespec/compiler 0.52.0-dev.3 → 0.52.0-dev.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.scripts/build-init-templates.d.ts +2 -0
- package/dist/.scripts/build-init-templates.d.ts.map +1 -0
- package/dist/.scripts/build-init-templates.js +38 -0
- package/dist/.scripts/build-init-templates.js.map +1 -0
- package/dist/.scripts/helpers.d.ts +4 -0
- package/dist/.scripts/helpers.d.ts.map +1 -0
- package/dist/.scripts/helpers.js +44 -0
- package/dist/.scripts/helpers.js.map +1 -0
- package/dist/manifest.js +2 -2
- package/dist/src/core/cli/actions/init.d.ts +1 -0
- package/dist/src/core/cli/actions/init.d.ts.map +1 -1
- package/dist/src/core/cli/actions/init.js +1 -1
- package/dist/src/core/cli/actions/init.js.map +1 -1
- package/dist/src/core/cli/cli.js +6 -1
- package/dist/src/core/cli/cli.js.map +1 -1
- package/dist/src/core/cli/utils.d.ts.map +1 -1
- package/dist/src/core/cli/utils.js +3 -0
- package/dist/src/core/cli/utils.js.map +1 -1
- package/dist/src/init/core-templates.d.ts +6 -0
- package/dist/src/init/core-templates.d.ts.map +1 -0
- package/dist/src/init/core-templates.js +11 -0
- package/dist/src/init/core-templates.js.map +1 -0
- package/dist/src/init/file-templating.d.ts +25 -0
- package/dist/src/init/file-templating.d.ts.map +1 -0
- package/dist/src/init/file-templating.js +39 -0
- package/dist/src/init/file-templating.js.map +1 -0
- package/dist/src/init/init-template.d.ts +3 -3
- package/dist/src/init/init-template.d.ts.map +1 -1
- package/dist/src/init/init-template.js +4 -3
- package/dist/src/init/init-template.js.map +1 -1
- package/dist/src/init/init.d.ts +11 -47
- package/dist/src/init/init.d.ts.map +1 -1
- package/dist/src/init/init.js +32 -190
- package/dist/src/init/init.js.map +1 -1
- package/dist/src/init/scaffold.d.ts +39 -0
- package/dist/src/init/scaffold.d.ts.map +1 -0
- package/dist/src/init/scaffold.js +132 -0
- package/dist/src/init/scaffold.js.map +1 -0
- package/package.json +7 -3
- package/templates/__snapshots__/emitter-ts/.eslintrc.yml +14 -0
- package/templates/__snapshots__/emitter-ts/package.json +37 -0
- package/templates/__snapshots__/emitter-ts/prettierrc.yaml +8 -0
- package/templates/__snapshots__/emitter-ts/src/emitter.ts +10 -0
- package/templates/__snapshots__/emitter-ts/src/index.ts +2 -0
- package/templates/__snapshots__/emitter-ts/src/lib.ts +8 -0
- package/templates/__snapshots__/emitter-ts/src/testing/index.ts +8 -0
- package/templates/__snapshots__/emitter-ts/test/hello.test.ts +10 -0
- package/templates/__snapshots__/emitter-ts/test/test-host.ts +47 -0
- package/templates/__snapshots__/emitter-ts/tsconfig.json +17 -0
- package/templates/emitter-ts/.eslintrc.yml +14 -0
- package/templates/emitter-ts/package.json +37 -0
- package/templates/emitter-ts/prettierrc.yaml +8 -0
- package/templates/emitter-ts/src/emitter.ts +10 -0
- package/templates/emitter-ts/src/index.ts +2 -0
- package/templates/emitter-ts/src/lib.ts +8 -0
- package/templates/emitter-ts/src/testing/index.ts +8 -0
- package/templates/emitter-ts/test/hello.test.ts +10 -0
- package/templates/emitter-ts/test/test-host.ts.mu +47 -0
- package/templates/emitter-ts/tsconfig.json +17 -0
- package/templates/scaffolding.json +79 -0
package/dist/src/init/init.js
CHANGED
|
@@ -1,68 +1,34 @@
|
|
|
1
1
|
import { readdir } from "fs/promises";
|
|
2
|
-
import
|
|
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
|
|
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
|
|
9
|
+
import { readUrlOrPath } from "../core/util.js";
|
|
13
10
|
import { MANIFEST } from "../manifest.js";
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
60
|
-
|
|
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 (
|
|
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
|
-
|
|
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,
|
|
100
|
+
async function downloadTemplates(host, url) {
|
|
155
101
|
let file;
|
|
156
102
|
try {
|
|
157
|
-
file = await readUrlOrPath(host,
|
|
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:
|
|
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:
|
|
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
|
|
129
|
+
async function promptTemplateSelection(templates) {
|
|
186
130
|
const { templateName } = await prompts({
|
|
187
131
|
type: "select",
|
|
188
132
|
name: "templateName",
|
|
@@ -202,17 +146,16 @@ async function promptTemplateSelection(templates, templatesUrl) {
|
|
|
202
146
|
}
|
|
203
147
|
return templateName;
|
|
204
148
|
}
|
|
205
|
-
async function validateTemplate(template,
|
|
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
154
|
if (template.compilerVersion && semver.gte(currentCompilerVersion, template.compilerVersion)) {
|
|
212
|
-
validationResult = validateTemplateDefinitions(template,
|
|
155
|
+
validationResult = validateTemplateDefinitions(template, loaded.file, true);
|
|
213
156
|
// 1.1 If strict validation fails, try relaxed validation
|
|
214
157
|
if (!validationResult.valid) {
|
|
215
|
-
validationResult = validateTemplateDefinitions(template,
|
|
158
|
+
validationResult = validateTemplateDefinitions(template, loaded.file, false);
|
|
216
159
|
}
|
|
217
160
|
}
|
|
218
161
|
else {
|
|
@@ -222,7 +165,7 @@ async function validateTemplate(template, templatesUrl) {
|
|
|
222
165
|
: `The template you selected did not specify minimum support compiler version. You are currently using tsp version ${currentCompilerVersion}.`;
|
|
223
166
|
if (await confirm(`${confirmationMessage} The project created may not be correct. Do you want to continue?`)) {
|
|
224
167
|
// 2.1 If user choose to continue, proceed with relaxed validation
|
|
225
|
-
validationResult = validateTemplateDefinitions(template,
|
|
168
|
+
validationResult = validateTemplateDefinitions(template, loaded.file, false);
|
|
226
169
|
}
|
|
227
170
|
else {
|
|
228
171
|
return false;
|
|
@@ -235,20 +178,12 @@ async function validateTemplate(template, templatesUrl) {
|
|
|
235
178
|
}
|
|
236
179
|
return true;
|
|
237
180
|
}
|
|
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
181
|
async function selectLibraries(template) {
|
|
247
|
-
if (template.libraries.length === 0) {
|
|
182
|
+
if (template.libraries === undefined || template.libraries.length === 0) {
|
|
248
183
|
return [];
|
|
249
184
|
}
|
|
250
185
|
const libraryChoices = template.libraries.map((x) => ({
|
|
251
|
-
...
|
|
186
|
+
...normalizeLibrary(x),
|
|
252
187
|
description: "",
|
|
253
188
|
}));
|
|
254
189
|
const { libraries } = await prompts({
|
|
@@ -267,91 +202,6 @@ async function selectLibraries(template) {
|
|
|
267
202
|
});
|
|
268
203
|
return libraries;
|
|
269
204
|
}
|
|
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
205
|
/**
|
|
356
206
|
* Error thrown when init template acquisition fails or template is invalid.
|
|
357
207
|
*
|
|
@@ -370,14 +220,6 @@ function validateTemplateDefinitions(template, templateName, strictValidation) {
|
|
|
370
220
|
const diagnostics = validator.validate(template, templateName);
|
|
371
221
|
return { valid: diagnostics.length === 0, diagnostics };
|
|
372
222
|
}
|
|
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
223
|
function logDiagnostics(diagnostics) {
|
|
382
224
|
diagnostics.forEach((diagnostic) => {
|
|
383
225
|
// 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":"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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.
|
|
3
|
+
"version": "0.52.0-dev.6",
|
|
4
4
|
"description": "TypeSpec Compiler Preview",
|
|
5
5
|
"author": "Microsoft Corporation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"files": [
|
|
53
53
|
"lib/*.tsp",
|
|
54
54
|
"dist/**",
|
|
55
|
+
"templates/**",
|
|
55
56
|
"entrypoints",
|
|
56
57
|
"!dist/test/**"
|
|
57
58
|
],
|
|
@@ -94,12 +95,14 @@
|
|
|
94
95
|
"vscode-oniguruma": "~2.0.1",
|
|
95
96
|
"vscode-textmate": "~9.0.0",
|
|
96
97
|
"sinon": "~17.0.1",
|
|
97
|
-
"@types/sinon": "~10.0.20"
|
|
98
|
+
"@types/sinon": "~10.0.20",
|
|
99
|
+
"ts-node": "~10.9.1"
|
|
98
100
|
},
|
|
99
101
|
"peerDependencies": {},
|
|
100
102
|
"scripts": {
|
|
101
103
|
"clean": "rimraf ./dist ./temp",
|
|
102
|
-
"build": "
|
|
104
|
+
"build:init-templates-index": "node --no-warnings --experimental-specifier-resolution=node --loader ts-node/esm ./.scripts/build-init-templates.ts",
|
|
105
|
+
"build": "npm run gen-manifest && npm run build:init-templates-index && npm run compile && npm run generate-tmlanguage",
|
|
103
106
|
"compile": "tsc -p .",
|
|
104
107
|
"watch": "tsc -p . --watch",
|
|
105
108
|
"watch-tmlanguage": "node scripts/watch-tmlanguage.js",
|
|
@@ -107,6 +110,7 @@
|
|
|
107
110
|
"dogfood": "node scripts/dogfood.js",
|
|
108
111
|
"test": "mocha",
|
|
109
112
|
"test-official": "c8 mocha --forbid-only --reporter mocha-multi-reporters",
|
|
113
|
+
"e2e": "mocha --config ./.mocharc.e2e.yaml",
|
|
110
114
|
"gen-manifest": "node scripts/generate-manifest.js",
|
|
111
115
|
"regen-nonascii": "node scripts/regen-nonascii.js",
|
|
112
116
|
"fuzz": "node dist/test/manual/fuzz.js run",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
root: true
|
|
2
|
+
env:
|
|
3
|
+
es2021: true
|
|
4
|
+
node: true
|
|
5
|
+
extends:
|
|
6
|
+
- eslint:recommended
|
|
7
|
+
- plugin:@typescript-eslint/recommended
|
|
8
|
+
parser: "@typescript-eslint/parser"
|
|
9
|
+
parserOptions:
|
|
10
|
+
ecmaVersion: latest
|
|
11
|
+
sourceType: module
|
|
12
|
+
plugins:
|
|
13
|
+
- "@typescript-eslint"
|
|
14
|
+
rules: {}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "emitter-ts",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/src/index.d.ts",
|
|
9
|
+
"default": "./dist/src/index.js"
|
|
10
|
+
},
|
|
11
|
+
"./testing": {
|
|
12
|
+
"types": "./dist/src/testing/index.d.ts",
|
|
13
|
+
"default": "./dist/src/testing/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@typespec/compiler": "latest"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "latest",
|
|
21
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
22
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
23
|
+
"eslint": "^8.45.0",
|
|
24
|
+
"typescript": "^5.3.3",
|
|
25
|
+
"prettier": "^3.0.3"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"watch": "tsc --watch",
|
|
30
|
+
"test": "node --test ./dist/test/",
|
|
31
|
+
"lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
|
|
32
|
+
"lint:fix": "eslint . --report-unused-disable-directives --fix",
|
|
33
|
+
"format": "prettier . --write",
|
|
34
|
+
"format:check": "prettier --check ."
|
|
35
|
+
},
|
|
36
|
+
"private": true
|
|
37
|
+
}
|