@typespec/compiler 1.17.0-dev.6 → 1.17.0-dev.8
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/manifest.js +2 -2
- package/dist/src/core/binder.d.ts +1 -1
- package/dist/src/core/binder.d.ts.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +13 -3
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/name-resolver.d.ts.map +1 -1
- package/dist/src/core/name-resolver.js +8 -1
- package/dist/src/core/name-resolver.js.map +1 -1
- package/dist/src/core/types.d.ts +2 -1
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/init/scaffold.d.ts.map +1 -1
- package/dist/src/init/scaffold.js +31 -3
- package/dist/src/init/scaffold.js.map +1 -1
- package/dist/src/init/template-source/in-memory-template-source.d.ts +1 -1
- package/dist/src/init/template-source/in-memory-template-source.d.ts.map +1 -1
- package/dist/src/init/template-source/in-memory-template-source.js +2 -1
- package/dist/src/init/template-source/in-memory-template-source.js.map +1 -1
- package/dist/src/init/template-source/types.d.ts +1 -0
- package/dist/src/init/template-source/types.d.ts.map +1 -1
- package/dist/src/init/template-source/types.js +10 -1
- package/dist/src/init/template-source/types.js.map +1 -1
- package/dist/src/init/template-source/uri-template-source.d.ts +1 -1
- package/dist/src/init/template-source/uri-template-source.d.ts.map +1 -1
- package/dist/src/init/template-source/uri-template-source.js +23 -2
- package/dist/src/init/template-source/uri-template-source.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-template-source.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/in-memory-template-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"in-memory-template-source.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/in-memory-template-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAMpB;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,cAAc;;IAI3D;;;OAGG;gBACS,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,GAAE,MAA6B;IAKlF,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAgB1D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { normalizePath } from "../../core/path-utils.js";
|
|
2
2
|
import { createSourceFile } from "../../core/source-file.js";
|
|
3
|
+
import { validateTemplateRelativePath, } from "./types.js";
|
|
3
4
|
import { SCAFFOLDING_FILENAME } from "./uri-template-source.js";
|
|
4
5
|
/** Prefix used to label the virtual files this source serves in diagnostics. */
|
|
5
6
|
const INTERNAL_URI_PREFIX = "internal:";
|
|
@@ -29,7 +30,7 @@ export class InMemoryTemplateSource {
|
|
|
29
30
|
return this.#read(relativePath);
|
|
30
31
|
}
|
|
31
32
|
#read(relativePath) {
|
|
32
|
-
const key = normalizeKey(relativePath);
|
|
33
|
+
const key = normalizeKey(validateTemplateRelativePath(relativePath, "path"));
|
|
33
34
|
const content = this.#files.get(key);
|
|
34
35
|
if (content === undefined) {
|
|
35
36
|
const error = new Error(`ENOENT: bundled template file not found, '${relativePath}'`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-template-source.js","sourceRoot":"","sources":["../../../../src/init/template-source/in-memory-template-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-template-source.js","sourceRoot":"","sources":["../../../../src/init/template-source/in-memory-template-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAGL,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAExC;;;;;GAKG;AACH,MAAM,OAAO,sBAAsB;IACjC,MAAM,CAA8B;IACpC,UAAU,CAAS;IAEnB;;;OAGG;IACH,YAAY,KAAkC,EAAE,YAAoB,oBAAoB;QACtF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAAoB;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,YAAoB;QACxB,MAAM,GAAG,GAAG,YAAY,CAAC,4BAA4B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAA0B,IAAI,KAAK,CAC5C,6CAA6C,YAAY,GAAG,CAC7D,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,mBAAmB,GAAG,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;CACF;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -18,4 +18,5 @@ export interface TemplateSource {
|
|
|
18
18
|
loadIndex(): Promise<LoadedTemplateIndex>;
|
|
19
19
|
readFile(relativePath: string): Promise<SourceFile>;
|
|
20
20
|
}
|
|
21
|
+
export declare function validateTemplateRelativePath(path: string, kind: "path" | "destination"): string;
|
|
21
22
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjD,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACrD;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAU/F"}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { isPathAbsolute, normalizePath } from "../../core/path-utils.js";
|
|
2
|
+
export function validateTemplateRelativePath(path, kind) {
|
|
3
|
+
const normalizedPath = normalizePath(path);
|
|
4
|
+
if (isPathAbsolute(normalizedPath) ||
|
|
5
|
+
normalizedPath === ".." ||
|
|
6
|
+
normalizedPath.startsWith("../")) {
|
|
7
|
+
throw new Error(`Template file ${kind} must be a relative path: "${path}"`);
|
|
8
|
+
}
|
|
9
|
+
return normalizedPath;
|
|
10
|
+
}
|
|
2
11
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/init/template-source/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/init/template-source/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwBzE,MAAM,UAAU,4BAA4B,CAAC,IAAY,EAAE,IAA4B;IACrF,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,IACE,cAAc,CAAC,cAAc,CAAC;QAC9B,cAAc,KAAK,IAAI;QACvB,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,8BAA8B,IAAI,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SourceFile, SystemHost } from "../../core/types.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type LoadedTemplateIndex, type TemplateSource } from "./types.js";
|
|
3
3
|
/** File name of the template index within a template source directory. */
|
|
4
4
|
export declare const SCAFFOLDING_FILENAME = "scaffolding.json";
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri-template-source.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/uri-template-source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uri-template-source.d.ts","sourceRoot":"","sources":["../../../../src/init/template-source/uri-template-source.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,YAAW,cAAc;;IAMtD;;;;OAIG;gBACS,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM;IAMnD;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAOtE,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CA0B1D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { getDirectoryPath } from "../../core/path-utils.js";
|
|
1
|
+
import { getDirectoryPath, getRelativePathFromDirectory, isPathAbsolute, isUrl, normalizePath, } from "../../core/path-utils.js";
|
|
2
2
|
import { readUrlOrPath, resolveRelativeUrlOrPath } from "../../utils/misc.js";
|
|
3
|
+
import { validateTemplateRelativePath, } from "./types.js";
|
|
3
4
|
/** File name of the template index within a template source directory. */
|
|
4
5
|
export const SCAFFOLDING_FILENAME = "scaffolding.json";
|
|
5
6
|
/**
|
|
@@ -39,7 +40,27 @@ export class UriTemplateSource {
|
|
|
39
40
|
return { templates, indexFile, baseUri: this.#baseUri };
|
|
40
41
|
}
|
|
41
42
|
async readFile(relativePath) {
|
|
42
|
-
|
|
43
|
+
const path = validateTemplateRelativePath(relativePath, "path");
|
|
44
|
+
const resolvedPath = resolveRelativeUrlOrPath(this.#baseUri + "/", path);
|
|
45
|
+
if (isUrl(this.#baseUri)) {
|
|
46
|
+
const baseUrl = new URL(this.#baseUri + "/");
|
|
47
|
+
const resolvedUrl = new URL(resolvedPath);
|
|
48
|
+
if (resolvedUrl.origin !== baseUrl.origin ||
|
|
49
|
+
!resolvedUrl.pathname.startsWith(baseUrl.pathname)) {
|
|
50
|
+
throw new Error(`Template file path must be a relative path: "${relativePath}"`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const realBasePath = normalizePath(await this.#host.realpath(this.#baseUri));
|
|
55
|
+
const realFilePath = normalizePath(await this.#host.realpath(resolvedPath));
|
|
56
|
+
const relativeRealPath = getRelativePathFromDirectory(realBasePath, realFilePath, false);
|
|
57
|
+
if (isPathAbsolute(relativeRealPath) ||
|
|
58
|
+
relativeRealPath === ".." ||
|
|
59
|
+
relativeRealPath.startsWith("../")) {
|
|
60
|
+
throw new Error(`Template file path must be a relative path: "${relativePath}"`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return readUrlOrPath(this.#host, resolvedPath);
|
|
43
64
|
}
|
|
44
65
|
}
|
|
45
66
|
//# sourceMappingURL=uri-template-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri-template-source.js","sourceRoot":"","sources":["../../../../src/init/template-source/uri-template-source.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"uri-template-source.js","sourceRoot":"","sources":["../../../../src/init/template-source/uri-template-source.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,cAAc,EACd,KAAK,EACL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,0EAA0E;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAa;IAClB,cAAc,CAAS;IACvB,6EAA6E;IAC7E,QAAQ,CAAS;IAEjB;;;;OAIG;IACH,YAAY,IAAgB,EAAE,aAAqB;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAgB,EAAE,SAAiB;QACtD,OAAO,IAAI,iBAAiB,CAC1B,IAAI,EACJ,wBAAwB,CAAC,SAAS,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAAoB;QACjC,MAAM,IAAI,GAAG,4BAA4B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1C,IACE,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;gBACrC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAClD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,YAAY,GAAG,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5E,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzF,IACE,cAAc,CAAC,gBAAgB,CAAC;gBAChC,gBAAgB,KAAK,IAAI;gBACzB,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAClC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,YAAY,GAAG,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/compiler",
|
|
3
|
-
"version": "1.17.0-dev.
|
|
3
|
+
"version": "1.17.0-dev.8",
|
|
4
4
|
"description": "TypeSpec compiler and standard library",
|
|
5
5
|
"author": "Microsoft Corporation",
|
|
6
6
|
"license": "MIT",
|
|
@@ -114,13 +114,13 @@
|
|
|
114
114
|
"@types/semver": "^7.8.0",
|
|
115
115
|
"@types/yargs": "^17.0.35",
|
|
116
116
|
"@typespec/internal-build-utils": "^0.86.0 || >= 0.87.0-dev.0",
|
|
117
|
-
"@vitest/coverage-v8": "^
|
|
118
|
-
"@vitest/ui": "^
|
|
117
|
+
"@vitest/coverage-v8": "^5.0.0",
|
|
118
|
+
"@vitest/ui": "^5.0.0",
|
|
119
119
|
"pathe": "^2.0.3",
|
|
120
120
|
"rimraf": "^6.1.3",
|
|
121
121
|
"tmlanguage-generator": "^0.6.8 || >= 0.6.9-dev.8",
|
|
122
122
|
"typescript": "~6.0.2",
|
|
123
|
-
"vitest": "^
|
|
123
|
+
"vitest": "^5.0.0",
|
|
124
124
|
"vscode-oniguruma": "^2.0.1",
|
|
125
125
|
"vscode-textmate": "^9.3.2"
|
|
126
126
|
},
|