@typespec/compiler 0.61.0-dev.9 → 0.62.0-dev.0

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 (102) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/config/config-interpolation.d.ts.map +1 -1
  3. package/dist/src/config/config-interpolation.js +39 -11
  4. package/dist/src/config/config-interpolation.js.map +1 -1
  5. package/dist/src/config/config-to-options.d.ts +1 -0
  6. package/dist/src/config/config-to-options.d.ts.map +1 -1
  7. package/dist/src/config/config-to-options.js +45 -2
  8. package/dist/src/config/config-to-options.js.map +1 -1
  9. package/dist/src/core/binder.d.ts.map +1 -1
  10. package/dist/src/core/binder.js +7 -1
  11. package/dist/src/core/binder.js.map +1 -1
  12. package/dist/src/core/checker.d.ts.map +1 -1
  13. package/dist/src/core/checker.js +4 -34
  14. package/dist/src/core/checker.js.map +1 -1
  15. package/dist/src/core/cli/actions/compile/args.d.ts +2 -0
  16. package/dist/src/core/cli/actions/compile/args.d.ts.map +1 -1
  17. package/dist/src/core/cli/actions/compile/args.js.map +1 -1
  18. package/dist/src/core/cli/actions/compile/compile.d.ts +1 -4
  19. package/dist/src/core/cli/actions/compile/compile.d.ts.map +1 -1
  20. package/dist/src/core/cli/actions/compile/compile.js +26 -13
  21. package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
  22. package/dist/src/core/diagnostic-creator.d.ts.map +1 -1
  23. package/dist/src/core/diagnostic-creator.js +5 -1
  24. package/dist/src/core/diagnostic-creator.js.map +1 -1
  25. package/dist/src/core/index.d.ts +1 -1
  26. package/dist/src/core/index.d.ts.map +1 -1
  27. package/dist/src/core/index.js +1 -1
  28. package/dist/src/core/index.js.map +1 -1
  29. package/dist/src/core/js-marshaller.d.ts.map +1 -1
  30. package/dist/src/core/js-marshaller.js +16 -1
  31. package/dist/src/core/js-marshaller.js.map +1 -1
  32. package/dist/src/core/logger/console-sink.js +1 -1
  33. package/dist/src/core/logger/console-sink.js.map +1 -1
  34. package/dist/src/core/messages.d.ts +27 -12
  35. package/dist/src/core/messages.d.ts.map +1 -1
  36. package/dist/src/core/messages.js +9 -2
  37. package/dist/src/core/messages.js.map +1 -1
  38. package/dist/src/core/program.d.ts.map +1 -1
  39. package/dist/src/core/program.js +16 -36
  40. package/dist/src/core/program.js.map +1 -1
  41. package/dist/src/core/projector.d.ts.map +1 -1
  42. package/dist/src/core/projector.js +3 -0
  43. package/dist/src/core/projector.js.map +1 -1
  44. package/dist/src/core/semantic-walker.d.ts.map +1 -1
  45. package/dist/src/core/semantic-walker.js +9 -0
  46. package/dist/src/core/semantic-walker.js.map +1 -1
  47. package/dist/src/core/source-loader.d.ts +4 -2
  48. package/dist/src/core/source-loader.d.ts.map +1 -1
  49. package/dist/src/core/source-loader.js +26 -12
  50. package/dist/src/core/source-loader.js.map +1 -1
  51. package/dist/src/core/types.d.ts +30 -4
  52. package/dist/src/core/types.d.ts.map +1 -1
  53. package/dist/src/index.d.ts +3 -0
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/init/scaffold.d.ts.map +1 -1
  56. package/dist/src/init/scaffold.js.map +1 -1
  57. package/dist/src/lib/examples.d.ts.map +1 -1
  58. package/dist/src/lib/examples.js +6 -4
  59. package/dist/src/lib/examples.js.map +1 -1
  60. package/dist/src/module-resolver/esm/resolve-package-exports.d.ts +9 -0
  61. package/dist/src/module-resolver/esm/resolve-package-exports.d.ts.map +1 -0
  62. package/dist/src/module-resolver/esm/resolve-package-exports.js +58 -0
  63. package/dist/src/module-resolver/esm/resolve-package-exports.js.map +1 -0
  64. package/dist/src/module-resolver/esm/resolve-package-imports-exports.d.ts +11 -0
  65. package/dist/src/module-resolver/esm/resolve-package-imports-exports.d.ts.map +1 -0
  66. package/dist/src/module-resolver/esm/resolve-package-imports-exports.js +72 -0
  67. package/dist/src/module-resolver/esm/resolve-package-imports-exports.js.map +1 -0
  68. package/dist/src/module-resolver/esm/resolve-package-target.d.ts +10 -0
  69. package/dist/src/module-resolver/esm/resolve-package-target.d.ts.map +1 -0
  70. package/dist/src/module-resolver/esm/resolve-package-target.js +133 -0
  71. package/dist/src/module-resolver/esm/resolve-package-target.js.map +1 -0
  72. package/dist/src/module-resolver/esm/utils.d.ts +35 -0
  73. package/dist/src/module-resolver/esm/utils.d.ts.map +1 -0
  74. package/dist/src/module-resolver/esm/utils.js +40 -0
  75. package/dist/src/module-resolver/esm/utils.js.map +1 -0
  76. package/dist/src/{core → module-resolver}/module-resolver.d.ts +16 -25
  77. package/dist/src/module-resolver/module-resolver.d.ts.map +1 -0
  78. package/dist/src/module-resolver/module-resolver.js +272 -0
  79. package/dist/src/module-resolver/module-resolver.js.map +1 -0
  80. package/dist/src/module-resolver/utils.d.ts +6 -0
  81. package/dist/src/module-resolver/utils.d.ts.map +1 -0
  82. package/dist/src/module-resolver/utils.js +16 -0
  83. package/dist/src/module-resolver/utils.js.map +1 -0
  84. package/dist/src/runner.js +1 -1
  85. package/dist/src/runner.js.map +1 -1
  86. package/dist/src/server/completion.d.ts.map +1 -1
  87. package/dist/src/server/completion.js.map +1 -1
  88. package/dist/src/testing/test-host.js +1 -1
  89. package/dist/src/testing/test-host.js.map +1 -1
  90. package/dist/src/types/package-json.d.ts +40 -0
  91. package/dist/src/types/package-json.d.ts.map +1 -0
  92. package/dist/src/types/package-json.js +2 -0
  93. package/dist/src/types/package-json.js.map +1 -0
  94. package/package.json +5 -5
  95. package/templates/__snapshots__/emitter-ts/.gitignore +9 -0
  96. package/templates/__snapshots__/emitter-ts/eslint.config.js +1 -1
  97. package/templates/__snapshots__/library-ts/.gitignore +9 -0
  98. package/templates/__snapshots__/library-ts/eslint.config.js +1 -1
  99. package/templates/scaffolding.json +4 -4
  100. package/dist/src/core/module-resolver.d.ts.map +0 -1
  101. package/dist/src/core/module-resolver.js +0 -169
  102. package/dist/src/core/module-resolver.js.map +0 -1
@@ -1,169 +0,0 @@
1
- import { getDirectoryPath, joinPaths, resolvePath } from "./path-utils.js";
2
- export class ResolveModuleError extends Error {
3
- code;
4
- constructor(code, message) {
5
- super(message);
6
- this.code = code;
7
- }
8
- }
9
- const defaultDirectoryIndexFiles = ["index.mjs", "index.js"];
10
- /**
11
- * Resolve a module
12
- * @param host
13
- * @param name
14
- * @param options
15
- * @returns
16
- */
17
- export async function resolveModule(host, name, options) {
18
- const realpath = async (x) => resolvePath(await host.realpath(x));
19
- const { baseDir } = options;
20
- const absoluteStart = baseDir === "" ? "." : await realpath(resolvePath(baseDir));
21
- if (!(await isDirectory(host, absoluteStart))) {
22
- throw new TypeError(`Provided basedir '${baseDir}'is not a directory.`);
23
- }
24
- // Check if the module name is referencing a path(./foo, /foo, file:/foo)
25
- if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(name)) {
26
- const res = resolvePath(absoluteStart, name);
27
- const m = (await loadAsFile(res)) || (await loadAsDirectory(res));
28
- if (m) {
29
- return m;
30
- }
31
- }
32
- const module = await findAsNodeModule(name, absoluteStart);
33
- if (module)
34
- return module;
35
- throw new ResolveModuleError("MODULE_NOT_FOUND", `Cannot find module '${name}' from '${baseDir}'`);
36
- /**
37
- * Returns a list of all the parent directory and the given one.
38
- */
39
- function listAllParentDirs(baseDir) {
40
- const paths = [baseDir];
41
- let current = getDirectoryPath(baseDir);
42
- while (current !== paths[paths.length - 1]) {
43
- paths.push(current);
44
- current = getDirectoryPath(current);
45
- }
46
- return paths;
47
- }
48
- function getPackageCandidates(name, baseDir) {
49
- const dirs = listAllParentDirs(baseDir);
50
- return dirs.flatMap((x) => [
51
- { path: x, type: "self" },
52
- { path: joinPaths(x, "node_modules", name), type: "node_modules" },
53
- ]);
54
- }
55
- async function findAsNodeModule(name, baseDir) {
56
- const dirs = getPackageCandidates(name, baseDir);
57
- for (const { type, path } of dirs) {
58
- if (type === "node_modules") {
59
- if (await isDirectory(host, path)) {
60
- const n = await loadAsDirectory(path, true);
61
- if (n)
62
- return n;
63
- }
64
- }
65
- else if (type === "self") {
66
- const pkgFile = resolvePath(path, "package.json");
67
- if (await isFile(host, pkgFile)) {
68
- const pkg = await readPackage(host, pkgFile);
69
- if (pkg.name === name) {
70
- const n = await loadPackage(path, pkg);
71
- if (n)
72
- return n;
73
- }
74
- }
75
- }
76
- }
77
- return undefined;
78
- }
79
- async function loadAsDirectory(directory, mustBePackage) {
80
- const pkgFile = resolvePath(directory, "package.json");
81
- if (await isFile(host, pkgFile)) {
82
- const pkg = await readPackage(host, pkgFile);
83
- return loadPackage(directory, pkg);
84
- }
85
- if (mustBePackage) {
86
- return undefined;
87
- }
88
- for (const file of options.directoryIndexFiles ?? defaultDirectoryIndexFiles) {
89
- const resolvedFile = await loadAsFile(joinPaths(directory, file));
90
- if (resolvedFile) {
91
- return resolvedFile;
92
- }
93
- }
94
- return undefined;
95
- }
96
- async function loadPackage(directory, pkg) {
97
- const mainFile = options.resolveMain ? options.resolveMain(pkg) : pkg.main;
98
- if (typeof mainFile !== "string") {
99
- throw new TypeError(`package "${pkg.name}" main must be a string but was '${mainFile}'`);
100
- }
101
- const mainFullPath = resolvePath(directory, mainFile);
102
- let loaded;
103
- try {
104
- loaded = (await loadAsFile(mainFullPath)) ?? (await loadAsDirectory(mainFullPath));
105
- }
106
- catch (e) {
107
- throw new Error(`Cannot find module '${mainFullPath}'. Please verify that the package.json has a valid "main" entry`);
108
- }
109
- if (loaded) {
110
- if (loaded.type === "module") {
111
- return loaded;
112
- }
113
- return {
114
- type: "module",
115
- path: await realpath(directory),
116
- mainFile: loaded.path,
117
- manifest: pkg,
118
- };
119
- }
120
- else {
121
- throw new ResolveModuleError("INVALID_MAIN", `Package ${pkg.name} main file "${mainFile}" is invalid.`);
122
- }
123
- }
124
- async function loadAsFile(file) {
125
- if (await isFile(host, file)) {
126
- return resolvedFile(file);
127
- }
128
- const extensions = [".mjs", ".js"];
129
- for (const ext of extensions) {
130
- const fileWithExtension = file + ext;
131
- if (await isFile(host, fileWithExtension)) {
132
- return resolvedFile(fileWithExtension);
133
- }
134
- }
135
- return undefined;
136
- }
137
- async function resolvedFile(path) {
138
- return { type: "file", path: await realpath(path) };
139
- }
140
- }
141
- async function readPackage(host, pkgfile) {
142
- const content = await host.readFile(pkgfile);
143
- return JSON.parse(content);
144
- }
145
- async function isDirectory(host, path) {
146
- try {
147
- const stats = await host.stat(path);
148
- return stats.isDirectory();
149
- }
150
- catch (e) {
151
- if (e.code === "ENOENT" || e.code === "ENOTDIR") {
152
- return false;
153
- }
154
- throw e;
155
- }
156
- }
157
- async function isFile(host, path) {
158
- try {
159
- const stats = await host.stat(path);
160
- return stats.isFile();
161
- }
162
- catch (e) {
163
- if (e.code === "ENOENT" || e.code === "ENOTDIR") {
164
- return false;
165
- }
166
- throw e;
167
- }
168
- }
169
- //# sourceMappingURL=module-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["../../../src/core/module-resolver.ts"],"names":[],"mappings":"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"}