@typespec/bundler 0.1.0-alpha.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.
- package/dist/src/bundler.d.ts +34 -0
- package/dist/src/bundler.d.ts.map +1 -0
- package/dist/src/bundler.js +171 -0
- package/dist/src/bundler.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +12 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +6 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/vite-plugin.d.ts +10 -0
- package/dist/src/vite-plugin.d.ts.map +1 -0
- package/dist/src/vite-plugin.js +112 -0
- package/dist/src/vite-plugin.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface TypeSpecBundleDefinition {
|
|
2
|
+
path: string;
|
|
3
|
+
main: string;
|
|
4
|
+
packageJson: PackageJson;
|
|
5
|
+
exports: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export interface TypeSpecBundle {
|
|
8
|
+
/**
|
|
9
|
+
* Definition
|
|
10
|
+
*/
|
|
11
|
+
definition: TypeSpecBundleDefinition;
|
|
12
|
+
/**
|
|
13
|
+
* Bundle content
|
|
14
|
+
*/
|
|
15
|
+
files: TypeSpecBundleFile[];
|
|
16
|
+
}
|
|
17
|
+
export interface TypeSpecBundleFile {
|
|
18
|
+
export?: string;
|
|
19
|
+
filename: string;
|
|
20
|
+
content: string;
|
|
21
|
+
}
|
|
22
|
+
interface PackageJson {
|
|
23
|
+
name: string;
|
|
24
|
+
main: string;
|
|
25
|
+
tspMain?: string;
|
|
26
|
+
peerDependencies: string[];
|
|
27
|
+
dependencies: string[];
|
|
28
|
+
exports?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export declare function createTypeSpecBundle(libraryPath: string): Promise<TypeSpecBundle>;
|
|
31
|
+
export declare function watchTypeSpecBundle(libraryPath: string, onBundle: (bundle: TypeSpecBundle) => void): Promise<void>;
|
|
32
|
+
export declare function bundleTypeSpecLibrary(libraryPath: string, outputDir: string): Promise<void>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=bundler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../../src/bundler.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,UAAU,EAAE,wBAAwB,CAAC;IAErC;;OAEG;IACH,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUvF;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,iBA8B3C;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAMjF"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import commonjs from "@rollup/plugin-commonjs";
|
|
2
|
+
import json from "@rollup/plugin-json";
|
|
3
|
+
import nodeResolve from "@rollup/plugin-node-resolve";
|
|
4
|
+
import virtual from "@rollup/plugin-virtual";
|
|
5
|
+
import { compile, getNormalizedAbsolutePath, joinPaths, NodeHost, normalizePath, } from "@typespec/compiler";
|
|
6
|
+
import { mkdir, readFile, realpath, writeFile } from "fs/promises";
|
|
7
|
+
import { basename, join, resolve } from "path";
|
|
8
|
+
import { rollup, watch } from "rollup";
|
|
9
|
+
import { relativeTo } from "./utils.js";
|
|
10
|
+
export async function createTypeSpecBundle(libraryPath) {
|
|
11
|
+
const definition = await resolveTypeSpecBundleDefinition(libraryPath);
|
|
12
|
+
const rollupOptions = await createRollupConfig(definition);
|
|
13
|
+
const bundle = await rollup(rollupOptions);
|
|
14
|
+
try {
|
|
15
|
+
return generateTypeSpecBundle(definition, bundle);
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
await bundle.close();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function watchTypeSpecBundle(libraryPath, onBundle) {
|
|
22
|
+
const definition = await resolveTypeSpecBundleDefinition(libraryPath);
|
|
23
|
+
const rollupOptions = await createRollupConfig(definition);
|
|
24
|
+
const watcher = watch({
|
|
25
|
+
...rollupOptions,
|
|
26
|
+
watch: {
|
|
27
|
+
skipWrite: true,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
31
|
+
watcher.on("event", async (event) => {
|
|
32
|
+
var _a;
|
|
33
|
+
switch (event.code) {
|
|
34
|
+
case "BUNDLE_START":
|
|
35
|
+
break;
|
|
36
|
+
case "BUNDLE_END":
|
|
37
|
+
try {
|
|
38
|
+
const typespecBundle = await generateTypeSpecBundle(definition, event.result);
|
|
39
|
+
onBundle(typespecBundle);
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await event.result.close();
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case "ERROR":
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
console.error("Error bundling", event.error);
|
|
48
|
+
await ((_a = event.result) === null || _a === void 0 ? void 0 : _a.close());
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export async function bundleTypeSpecLibrary(libraryPath, outputDir) {
|
|
53
|
+
const bundle = await createTypeSpecBundle(libraryPath);
|
|
54
|
+
await mkdir(outputDir, { recursive: true });
|
|
55
|
+
for (const file of bundle.files) {
|
|
56
|
+
await writeFile(joinPaths(outputDir, file.filename), file.content);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function resolveTypeSpecBundleDefinition(libraryPath) {
|
|
60
|
+
libraryPath = normalizePath(await realpath(libraryPath));
|
|
61
|
+
const pkg = await readLibraryPackageJson(libraryPath);
|
|
62
|
+
const exports = pkg.exports
|
|
63
|
+
? Object.fromEntries(Object.entries(pkg.exports).filter(([k, v]) => k !== "." && k !== "./testing"))
|
|
64
|
+
: {};
|
|
65
|
+
return {
|
|
66
|
+
path: libraryPath,
|
|
67
|
+
main: pkg.main,
|
|
68
|
+
exports,
|
|
69
|
+
packageJson: pkg,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function createRollupConfig(definition) {
|
|
73
|
+
const libraryPath = definition.path;
|
|
74
|
+
const program = await compile(NodeHost, libraryPath, {
|
|
75
|
+
noEmit: true,
|
|
76
|
+
});
|
|
77
|
+
const jsFiles = [];
|
|
78
|
+
for (const file of program.jsSourceFiles.keys()) {
|
|
79
|
+
if (file.startsWith(libraryPath)) {
|
|
80
|
+
jsFiles.push(file);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const typespecFiles = {
|
|
84
|
+
[normalizePath(join(libraryPath, "package.json"))]: JSON.stringify(definition.packageJson),
|
|
85
|
+
};
|
|
86
|
+
for (const [filename, sourceFile] of program.sourceFiles) {
|
|
87
|
+
typespecFiles[filename] = sourceFile.file.text;
|
|
88
|
+
}
|
|
89
|
+
const content = createBundleEntrypoint({
|
|
90
|
+
libraryPath,
|
|
91
|
+
mainFile: definition.main,
|
|
92
|
+
jsSourceFileNames: jsFiles,
|
|
93
|
+
typespecSourceFiles: typespecFiles,
|
|
94
|
+
});
|
|
95
|
+
const extraEntry = Object.fromEntries(Object.entries(definition.exports).map(([key, value]) => {
|
|
96
|
+
return [key.replace("./", ""), normalizePath(resolve(libraryPath, value))];
|
|
97
|
+
}));
|
|
98
|
+
return {
|
|
99
|
+
input: {
|
|
100
|
+
index: "entry.js",
|
|
101
|
+
...extraEntry,
|
|
102
|
+
},
|
|
103
|
+
output: {
|
|
104
|
+
esModule: true,
|
|
105
|
+
},
|
|
106
|
+
plugins: [
|
|
107
|
+
virtual({
|
|
108
|
+
"entry.js": content,
|
|
109
|
+
}),
|
|
110
|
+
commonjs(),
|
|
111
|
+
json(),
|
|
112
|
+
nodeResolve({ preferBuiltins: true, browser: true }),
|
|
113
|
+
],
|
|
114
|
+
external: (id) => {
|
|
115
|
+
return (definition.packageJson.peerDependencies &&
|
|
116
|
+
!!Object.keys(definition.packageJson.peerDependencies).find((x) => id.startsWith(x)));
|
|
117
|
+
},
|
|
118
|
+
onwarn: (warning, warn) => {
|
|
119
|
+
if (warning.code === "THIS_IS_UNDEFINED" || warning.code === "CIRCULAR_DEPENDENCY") {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
warn(warning);
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
async function generateTypeSpecBundle(definition, bundle) {
|
|
127
|
+
const { output } = await bundle.generate({
|
|
128
|
+
dir: "virtual",
|
|
129
|
+
});
|
|
130
|
+
return {
|
|
131
|
+
definition,
|
|
132
|
+
files: output
|
|
133
|
+
.filter((x) => "code" in x)
|
|
134
|
+
.map((chunk) => {
|
|
135
|
+
return {
|
|
136
|
+
filename: chunk.fileName,
|
|
137
|
+
content: chunk.code,
|
|
138
|
+
export: definition.exports[basename(chunk.fileName)],
|
|
139
|
+
};
|
|
140
|
+
}),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async function readLibraryPackageJson(path) {
|
|
144
|
+
const file = await readFile(join(path, "package.json"));
|
|
145
|
+
return JSON.parse(file.toString());
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create a virtual JS file being the entrypoint of the bundle.
|
|
149
|
+
*/
|
|
150
|
+
function createBundleEntrypoint({ libraryPath, mainFile, jsSourceFileNames, typespecSourceFiles, }) {
|
|
151
|
+
const absoluteMain = normalizePath(resolve(libraryPath, mainFile));
|
|
152
|
+
const relativeTypeSpecFiles = {};
|
|
153
|
+
for (const [name, content] of Object.entries(typespecSourceFiles)) {
|
|
154
|
+
relativeTypeSpecFiles[relativeTo(libraryPath, name)] = content;
|
|
155
|
+
getNormalizedAbsolutePath;
|
|
156
|
+
}
|
|
157
|
+
return [
|
|
158
|
+
`export * from "${absoluteMain}";`,
|
|
159
|
+
...jsSourceFileNames.map((x, i) => `import * as f${i} from "${x}";`),
|
|
160
|
+
"",
|
|
161
|
+
`const TypeSpecJSSources = {`,
|
|
162
|
+
...jsSourceFileNames.map((x, i) => `"${relativeTo(libraryPath, x)}": f${i},`),
|
|
163
|
+
"};",
|
|
164
|
+
`const TypeSpecSources = ${JSON.stringify(relativeTypeSpecFiles, null, 2)};`,
|
|
165
|
+
"export const _TypeSpecLibrary_ = {",
|
|
166
|
+
" jsSourceFiles: TypeSpecJSSources,",
|
|
167
|
+
" typespecSourceFiles: TypeSpecSources,",
|
|
168
|
+
"};",
|
|
169
|
+
].join("\n");
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=bundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../src/bundler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Use bundler via cli.
|
|
2
|
+
// Todo.
|
|
3
|
+
import { resolve } from "path";
|
|
4
|
+
import { bundleTypeSpecLibrary } from "./bundler.js";
|
|
5
|
+
const name = process.argv[2];
|
|
6
|
+
const libraryPath = resolve(`../${name}`);
|
|
7
|
+
bundleTypeSpecLibrary(libraryPath, resolve(process.cwd(), "output")).catch((e) => {
|
|
8
|
+
// eslint-disable-next-line no-console
|
|
9
|
+
console.error(e);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,QAAQ;AAER,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC1C,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC/E,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,EAAU;IACjD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
export interface TypeSpecBundlePluginOptions {
|
|
3
|
+
folderName: string;
|
|
4
|
+
/**
|
|
5
|
+
* Name of libraries to bundle.
|
|
6
|
+
*/
|
|
7
|
+
libraries: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function typespecBundlePlugin(options: TypeSpecBundlePluginOptions): Plugin;
|
|
10
|
+
//# sourceMappingURL=vite-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,MAAM,EAAkB,MAAM,MAAM,CAAC;AAQ9E,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CA+FjF"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { resolvePath } from "@typespec/compiler";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { createTypeSpecBundle, watchTypeSpecBundle, } from "./bundler.js";
|
|
4
|
+
export function typespecBundlePlugin(options) {
|
|
5
|
+
let config;
|
|
6
|
+
const definitions = {};
|
|
7
|
+
const bundles = {};
|
|
8
|
+
return {
|
|
9
|
+
name: "typespec-bundle",
|
|
10
|
+
enforce: "pre",
|
|
11
|
+
async configResolved(c) {
|
|
12
|
+
config = c;
|
|
13
|
+
},
|
|
14
|
+
async buildStart() {
|
|
15
|
+
for (const name of options.libraries) {
|
|
16
|
+
const bundle = await bundleLibrary(config.root, name);
|
|
17
|
+
bundles[name] = bundle;
|
|
18
|
+
definitions[name] = bundle.definition;
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
async configureServer(server) {
|
|
22
|
+
for (const library of options.libraries) {
|
|
23
|
+
await watchBundleLibrary(config.root, library, (bundle) => {
|
|
24
|
+
bundles[library] = bundle;
|
|
25
|
+
definitions[library] = bundle.definition;
|
|
26
|
+
server.ws.send({ type: "full-reload" });
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
server.middlewares.use((req, res, next) => {
|
|
30
|
+
const id = req.url;
|
|
31
|
+
if (id === undefined) {
|
|
32
|
+
next();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const start = `/${options.folderName}/`;
|
|
36
|
+
const resolveFilename = (path) => {
|
|
37
|
+
if (path === "") {
|
|
38
|
+
return "index.js";
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return `${path}.js`;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const findPkgName = (id) => {
|
|
45
|
+
const segments = id.slice(start.length, -".js".length).split("/");
|
|
46
|
+
if (bundles[segments[0]]) {
|
|
47
|
+
return [segments[0], resolveFilename(segments.slice(1).join("/"))];
|
|
48
|
+
}
|
|
49
|
+
const inFolder = segments[0] + "/" + segments[1];
|
|
50
|
+
if (bundles[inFolder]) {
|
|
51
|
+
return [inFolder, resolveFilename(segments.slice(2).join("/"))];
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
};
|
|
55
|
+
if (id.startsWith(start) && id.endsWith(".js")) {
|
|
56
|
+
const found = findPkgName(id);
|
|
57
|
+
if (found) {
|
|
58
|
+
const [pkgId, path] = found;
|
|
59
|
+
const file = bundles[pkgId].files.find((x) => x.filename === path);
|
|
60
|
+
if (file) {
|
|
61
|
+
res.writeHead(200, "Ok", { "Content-Type": "application/javascript" });
|
|
62
|
+
res.write(file.content);
|
|
63
|
+
res.end();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
next();
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
async generateBundle() {
|
|
72
|
+
for (const name of options.libraries) {
|
|
73
|
+
for (const file of bundles[name].files) {
|
|
74
|
+
this.emitFile({
|
|
75
|
+
type: "asset",
|
|
76
|
+
fileName: `${options.folderName}/${name}/${file.filename}`,
|
|
77
|
+
source: file.content,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
transformIndexHtml: {
|
|
83
|
+
enforce: "post",
|
|
84
|
+
transform: (html, ctx) => {
|
|
85
|
+
// Inject the importmap before the html script. Cannot just use injectTo:head-prepend as vite will inject its own script before that and cause a failure.
|
|
86
|
+
const importMapTag = `<script type="importmap">\n${JSON.stringify(createImportMap(options.folderName, definitions), null, 2)}\n</script>`;
|
|
87
|
+
return html.replace("<html", importMapTag + "\n<html");
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function createImportMap(folderName, definitions) {
|
|
93
|
+
const imports = {};
|
|
94
|
+
for (const [library, definition] of Object.entries(definitions)) {
|
|
95
|
+
imports[library] = `./${folderName}/${library}/index.js`;
|
|
96
|
+
for (const name of Object.keys(definition.exports)) {
|
|
97
|
+
imports[resolvePath(library, name)] =
|
|
98
|
+
"./" + resolvePath(`./${folderName}/${library}`, name) + ".js";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const importMap = {
|
|
102
|
+
imports: imports,
|
|
103
|
+
};
|
|
104
|
+
return importMap;
|
|
105
|
+
}
|
|
106
|
+
async function bundleLibrary(projectRoot, name) {
|
|
107
|
+
return await createTypeSpecBundle(resolve(projectRoot, "node_modules", name));
|
|
108
|
+
}
|
|
109
|
+
async function watchBundleLibrary(projectRoot, name, onChange) {
|
|
110
|
+
return await watchTypeSpecBundle(resolve(projectRoot, "node_modules", name), onChange);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=vite-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../src/vite-plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@typespec/bundler",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"author": "Microsoft Corporation",
|
|
5
|
+
"description": "Package to bundle a typespec library.",
|
|
6
|
+
"homepage": "https://microsoft.github.io/typespec",
|
|
7
|
+
"readme": "https://github.com/microsoft/typespec/blob/master/README.md",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/microsoft/typespec.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/microsoft/typespec/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"typespec"
|
|
18
|
+
],
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "dist/src/index.js",
|
|
21
|
+
"tspMain": "dist/src/index.js",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=16.0.0"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"lib/*.tsp",
|
|
27
|
+
"dist/**",
|
|
28
|
+
"!dist/test/**"
|
|
29
|
+
],
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@typespec/compiler": "~0.48.1",
|
|
32
|
+
"@rollup/plugin-virtual": "~3.0.1",
|
|
33
|
+
"@rollup/plugin-commonjs": "~25.0.4",
|
|
34
|
+
"@rollup/plugin-json": "~6.0.0",
|
|
35
|
+
"@rollup/plugin-node-resolve": "~15.2.1",
|
|
36
|
+
"@rollup/plugin-multi-entry": "~6.0.0",
|
|
37
|
+
"rollup": "~3.29.2",
|
|
38
|
+
"@rollup/plugin-alias": "~5.0.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/mocha": "~10.0.1",
|
|
42
|
+
"@types/node": "~18.11.9",
|
|
43
|
+
"@typespec/eslint-config-typespec": "~0.48.0",
|
|
44
|
+
"eslint": "^8.49.0",
|
|
45
|
+
"mocha": "~10.2.0",
|
|
46
|
+
"mocha-junit-reporter": "~2.2.1",
|
|
47
|
+
"mocha-multi-reporters": "~1.5.1",
|
|
48
|
+
"c8": "~8.0.1",
|
|
49
|
+
"rimraf": "~5.0.1",
|
|
50
|
+
"typescript": "~5.2.2",
|
|
51
|
+
"vite": "^4.4.9"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"bundle": "node ./dist/src/cli.js",
|
|
55
|
+
"clean": "rimraf ./dist ./temp",
|
|
56
|
+
"build": "tsc -p .",
|
|
57
|
+
"watch": "tsc -p . --watch",
|
|
58
|
+
"test": "mocha",
|
|
59
|
+
"test-official": "c8 mocha --forbid-only --reporter mocha-multi-reporters",
|
|
60
|
+
"lint": "eslint . --ext .ts --max-warnings=0",
|
|
61
|
+
"lint:fix": "eslint . --fix --ext .ts"
|
|
62
|
+
}
|
|
63
|
+
}
|