smartbundle 0.11.1 → 0.12.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/README.md +1 -1
- package/__compiled__/cjs/src/args.d.ts +11 -1
- package/__compiled__/cjs/src/args.js +7 -2
- package/__compiled__/cjs/src/args.js.map +1 -1
- package/__compiled__/cjs/src/createViteConfig.js +1 -0
- package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
- package/__compiled__/cjs/src/detectModules.d.ts +4 -0
- package/__compiled__/cjs/src/detectModules.js +1 -0
- package/__compiled__/cjs/src/detectModules.js.map +1 -1
- package/__compiled__/cjs/src/error.js.map +1 -1
- package/__compiled__/cjs/src/index.d.ts +1 -1
- package/__compiled__/cjs/src/index.js +31 -30
- package/__compiled__/cjs/src/index.js.map +1 -1
- package/__compiled__/cjs/src/log.js.map +1 -1
- package/__compiled__/cjs/src/packageJson.d.ts +20 -5
- package/__compiled__/cjs/src/packageJson.js.map +1 -1
- package/__compiled__/cjs/src/pipeline.d.ts +6 -0
- package/__compiled__/cjs/src/pipeline.js +20 -0
- package/__compiled__/cjs/src/pipeline.js.map +1 -0
- package/__compiled__/cjs/src/plugins/babel/findBabelConfig.js.map +1 -1
- package/__compiled__/cjs/src/plugins/babel/index.js +1 -0
- package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
- package/__compiled__/cjs/src/plugins/react/index.js.map +1 -1
- package/__compiled__/cjs/src/promiseSettledResultErrors.d.ts +3 -0
- package/__compiled__/cjs/src/promiseSettledResultErrors.js +15 -0
- package/__compiled__/cjs/src/promiseSettledResultErrors.js.map +1 -0
- package/__compiled__/cjs/src/resolveDirs.d.ts +1 -5
- package/__compiled__/cjs/src/resolveDirs.js +1 -0
- package/__compiled__/cjs/src/resolveDirs.js.map +1 -1
- package/__compiled__/cjs/src/run.js +1 -1
- package/__compiled__/cjs/src/run.js.map +1 -1
- package/__compiled__/cjs/src/tasks/binsTask.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.d.ts +3 -3
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js +6 -4
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +3 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +53 -11
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.d.ts +8 -2
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js +101 -22
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js.map +1 -1
- package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js.map +1 -1
- package/__compiled__/cjs/src/tasks/jsFilesTask.js.map +1 -1
- package/__compiled__/cjs/src/tasks/utils.js.map +1 -1
- package/__compiled__/cjs/src/tasks/viteTask.d.ts +16 -0
- package/__compiled__/cjs/src/{buildVite.js → tasks/viteTask.js} +13 -2
- package/__compiled__/cjs/src/tasks/viteTask.js.map +1 -0
- package/__compiled__/cjs/src/writePackageJson.js.map +1 -1
- package/__compiled__/esm/src/args.d.mts +11 -1
- package/__compiled__/esm/src/args.mjs +7 -2
- package/__compiled__/esm/src/args.mjs.map +1 -1
- package/__compiled__/esm/src/createViteConfig.mjs +1 -0
- package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
- package/__compiled__/esm/src/detectModules.d.mts +4 -0
- package/__compiled__/esm/src/detectModules.mjs +2 -1
- package/__compiled__/esm/src/detectModules.mjs.map +1 -1
- package/__compiled__/esm/src/error.mjs.map +1 -1
- package/__compiled__/esm/src/index.d.mts +1 -1
- package/__compiled__/esm/src/index.mjs +32 -31
- package/__compiled__/esm/src/index.mjs.map +1 -1
- package/__compiled__/esm/src/log.mjs.map +1 -1
- package/__compiled__/esm/src/packageJson.d.mts +20 -5
- package/__compiled__/esm/src/packageJson.mjs.map +1 -1
- package/__compiled__/esm/src/pipeline.d.mts +6 -0
- package/__compiled__/esm/src/pipeline.mjs +20 -0
- package/__compiled__/esm/src/pipeline.mjs.map +1 -0
- package/__compiled__/esm/src/plugins/babel/findBabelConfig.mjs.map +1 -1
- package/__compiled__/esm/src/plugins/babel/index.mjs +1 -0
- package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
- package/__compiled__/esm/src/plugins/react/index.mjs.map +1 -1
- package/__compiled__/esm/src/promiseSettledResultErrors.d.mts +3 -0
- package/__compiled__/esm/src/promiseSettledResultErrors.mjs +15 -0
- package/__compiled__/esm/src/promiseSettledResultErrors.mjs.map +1 -0
- package/__compiled__/esm/src/resolveDirs.d.mts +1 -5
- package/__compiled__/esm/src/resolveDirs.mjs +1 -0
- package/__compiled__/esm/src/resolveDirs.mjs.map +1 -1
- package/__compiled__/esm/src/run.mjs +1 -1
- package/__compiled__/esm/src/run.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/binsTask.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.d.mts +3 -3
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs +6 -4
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +3 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +54 -12
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.d.mts +8 -2
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs +101 -22
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/jsFilesTask.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/utils.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/viteTask.d.mts +16 -0
- package/__compiled__/esm/src/{buildVite.mjs → tasks/viteTask.mjs} +14 -3
- package/__compiled__/esm/src/tasks/viteTask.mjs.map +1 -0
- package/__compiled__/esm/src/writePackageJson.mjs.map +1 -1
- package/package.json +13 -9
- package/__compiled__/cjs/src/buildVite.d.ts +0 -15
- package/__compiled__/cjs/src/buildVite.js.map +0 -1
- package/__compiled__/cjs/src/run.d.ts +0 -1
- package/__compiled__/esm/src/buildVite.d.mts +0 -15
- package/__compiled__/esm/src/buildVite.mjs.map +0 -1
- package/__compiled__/esm/src/run.d.mts +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createViteConfig.mjs","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction createExternalDepValidator(packageJson: PackageJson) {\n const allExternalPackages = new Set();\n for (const key of [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ] as const) {\n for (const dep of Object.keys(packageJson[key] ?? {})) {\n allExternalPackages.add(dep);\n }\n }\n allExternalPackages.add(packageJson.name);\n\n return (id: string) => {\n if (id.startsWith(\"node:\")) {\n return true;\n }\n const segments = id.split(\"/\");\n let current = \"\";\n for (const segment of segments) {\n current += segment;\n // import {} from \"a/b/c/d\"; case\n if (allExternalPackages.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\n}: CreateViteConfigParam) {\n const { sourceDir, outDir } = dirs;\n\n const entrypoints = new Map<string, string>();\n if (packageJson.exports) {\n for (const [key, value] of packageJson.exports) {\n const entry = join(sourceDir, value);\n entrypoints.set(key, entry);\n }\n }\n\n const bins = new Map<string, string>();\n if (packageJson.bin) {\n for (const [key, value] of packageJson.bin) {\n bins.set(key, join(sourceDir, value));\n }\n }\n\n const mergedEntries = new Map([...entrypoints, ...bins]);\n\n const depsValidator = createExternalDepValidator(packageJson);\n\n const viteConfig = defineConfig({\n plugins: [\n reactPlugin({ modules }),\n babelPlugin({ packageJson, dirs, modules }),\n ],\n publicDir: false,\n root: sourceDir,\n logLevel: \"silent\",\n build: {\n outDir,\n write: true,\n minify: false,\n emptyOutDir: false,\n sourcemap: true,\n assetsInlineLimit: 0,\n terserOptions: {\n compress: false,\n mangle: false,\n },\n lib: {\n entry: mapToObject(mergedEntries),\n formats: [\"es\", \"cjs\"],\n fileName: (format, entryName) => {\n const entrypoint = mergedEntries.get(entryName);\n if (!entrypoint) {\n const noExt = entryName.replace(/\\.[^.]+$/, \"\");\n if (format === \"es\") {\n return join(\"__compiled__\", \"esm\", `${noExt}.mjs`);\n } else {\n return join(\"__compiled__\", \"cjs\", `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n \"__compiled__\",\n \"esm\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n \"__compiled__\",\n \"cjs\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".js\",\n );\n }\n },\n },\n rollupOptions: {\n external: depsValidator,\n output: {\n preserveModulesRoot: sourceDir,\n exports: \"named\",\n preserveModules: true,\n },\n },\n },\n });\n\n return { viteConfig, entrypoints, bins };\n}\n"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"createViteConfig.mjs","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction createExternalDepValidator(packageJson: PackageJson) {\n const allExternalPackages = new Set();\n for (const key of [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ] as const) {\n for (const dep of Object.keys(packageJson[key] ?? {})) {\n allExternalPackages.add(dep);\n }\n }\n allExternalPackages.add(packageJson.name);\n\n return (id: string) => {\n if (id.startsWith(\"node:\")) {\n return true;\n }\n const segments = id.split(\"/\");\n let current = \"\";\n for (const segment of segments) {\n current += segment;\n // import {} from \"a/b/c/d\"; case\n if (allExternalPackages.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\n}: CreateViteConfigParam) {\n const { sourceDir, outDir } = dirs;\n\n const entrypoints = new Map<string, string>();\n if (packageJson.exports) {\n for (const [key, value] of packageJson.exports) {\n const entry = join(sourceDir, value);\n entrypoints.set(key, entry);\n }\n }\n\n const bins = new Map<string, string>();\n if (packageJson.bin) {\n for (const [key, value] of packageJson.bin) {\n bins.set(key, join(sourceDir, value));\n }\n }\n\n const mergedEntries = new Map([...entrypoints, ...bins]);\n\n const depsValidator = createExternalDepValidator(packageJson);\n\n const viteConfig = defineConfig({\n plugins: [\n reactPlugin({ modules }),\n babelPlugin({ packageJson, dirs, modules }),\n ],\n publicDir: false,\n root: sourceDir,\n logLevel: \"silent\",\n build: {\n outDir,\n write: true,\n minify: false,\n emptyOutDir: false,\n sourcemap: true,\n assetsInlineLimit: 0,\n terserOptions: {\n compress: false,\n mangle: false,\n },\n lib: {\n entry: mapToObject(mergedEntries),\n formats: [\"es\", \"cjs\"],\n fileName: (format, entryName) => {\n const entrypoint = mergedEntries.get(entryName);\n if (!entrypoint) {\n const noExt = entryName.replace(/\\.[^.]+$/, \"\");\n if (format === \"es\") {\n return join(\"__compiled__\", \"esm\", `${noExt}.mjs`);\n } else {\n return join(\"__compiled__\", \"cjs\", `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n \"__compiled__\",\n \"esm\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n \"__compiled__\",\n \"cjs\",\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".js\",\n );\n }\n },\n },\n rollupOptions: {\n external: depsValidator,\n output: {\n preserveModulesRoot: sourceDir,\n exports: \"named\",\n preserveModules: true,\n },\n },\n },\n });\n\n return { viteConfig, entrypoints, bins };\n}\n"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,11 @@
|
|
1
1
|
import { type PackageJson } from "./packageJson.js";
|
2
|
+
import semver from "semver";
|
2
3
|
export type DetectedModules = {
|
3
4
|
ts?: typeof import("typescript");
|
4
5
|
babel?: typeof import("@babel/core");
|
5
6
|
react?: "legacy" | "modern";
|
6
7
|
};
|
8
|
+
type DepType = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies";
|
9
|
+
export declare function getMinVersion(packageJson: PackageJson, depName: string, exclude: DepType[]): semver.SemVer | null;
|
7
10
|
export declare function detectModules(packageJson: PackageJson): Promise<DetectedModules>;
|
11
|
+
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\
|
1
|
+
{"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n errorLog(\"react\");\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":[],"mappings":";;;;;AAegB,SAAA,cACd,aACA,SACA,SACsB;;AAChB,QAAA,iCAAiB,IAAa;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,aAAW,KAAK,SAAS;AACvB,eAAW,OAAO,CAAC;AAAA,EAAA;AAGrB,MAAI,aAAmC;AACvC,aAAW,UAAU,YAAY;AAC/B,UAAM,cAAa,iBAAY,MAAM,MAAlB,mBAAsB;AACzC,QAAI,YAAY;AACR,YAAA,UAAU,OAAO,WAAW,UAAU;AAC5C,UAAI,CAAC,SAAS;AACJ,gBAAA,uCAAuC,SAAS,QAAQ,MAAM;AACtE,gBAAQ,YAAY,UAAU;AAC9B;AAAA,MAAA;AAEF,UAAI,CAAC,YAAY;AACF,qBAAA;AACb;AAAA,MAAA;AAEF,UAAI,OAAO,GAAG,SAAS,UAAU,GAAG;AACrB,qBAAA;AAAA,MAAA;AAAA,IACf;AAAA,EACF;AAGK,SAAA;AACT;AAEA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7D,aAAS,oDAAoD;AAC7D;AAAA,EAAA;AAGE,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClC,UAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACN,aAAS,OAAO;AAAA,EAAA;AAEpB;AAEA,eAAe,YACb,aAC0C;AAC1C,QAAM,eAAe,cAAc,aAAa,SAAS,CAAC,iBAAiB,CAAC;AAC5E,MAAI,cAAc;AAChB,UAAM,WAAW,OAAO,GAAG,cAAc,QAAQ;AAC3C,UAAA,YAAY,WAAW,WAAW;AACxC;AAAA,MACE,uBAAuB,aAAa,OAAO,gBAAgB,SAAS;AAAA,IACtE;AACO,WAAA;AAAA,EAAA;AAET,WAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAC;AACjC,MAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnC,UAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACN,aAAS,YAAY;AAAA,EAAA;AAGhB,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpC,UAAA;AACD,SAAA;AACT;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"error.mjs","sources":["../../../../src/error.ts"],"sourcesContent":["export class BuildError extends Error {\n constructor(public error: string) {\n super(error);\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB,MAAM;AAAA,EACpC,YAAmB,OAAe;AAChC,UAAM,KAAK;AADM,SAAA,QAAA;AAAA,
|
1
|
+
{"version":3,"file":"error.mjs","sources":["../../../../src/error.ts"],"sourcesContent":["export class BuildError extends Error {\n constructor(public error: string) {\n super(error);\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB,MAAM;AAAA,EACpC,YAAmB,OAAe;AAChC,UAAM,KAAK;AADM,SAAA,QAAA;AAAA,EAAA;AAGrB;"}
|
@@ -2,7 +2,6 @@ import { relative } from "node:path";
|
|
2
2
|
import { rm, mkdir } from "node:fs/promises";
|
3
3
|
import { parsePackageJson } from "./packageJson.mjs";
|
4
4
|
import { writePackageJson } from "./writePackageJson.mjs";
|
5
|
-
import { buildVite } from "./buildVite.mjs";
|
6
5
|
import { resolveDirs } from "./resolveDirs.mjs";
|
7
6
|
import { createViteConfig } from "./createViteConfig.mjs";
|
8
7
|
import { copyStaticFilesTask } from "./tasks/copyStaticFilesTask.mjs";
|
@@ -11,7 +10,11 @@ import { BuildError } from "./error.mjs";
|
|
11
10
|
import { jsFilesTask } from "./tasks/jsFilesTask.mjs";
|
12
11
|
import { binsTask } from "./tasks/binsTask.mjs";
|
13
12
|
import { detectModules } from "./detectModules.mjs";
|
14
|
-
import {
|
13
|
+
import { lineLog, log, disableLog } from "./log.mjs";
|
14
|
+
import { runSettled } from "./pipeline.mjs";
|
15
|
+
import "./args.mjs";
|
16
|
+
import { viteTask } from "./tasks/viteTask.mjs";
|
17
|
+
import { promiseSettledResultErrors } from "./promiseSettledResultErrors.mjs";
|
15
18
|
function setExports(exportsMap, exportName, mapFn) {
|
16
19
|
const entry = exportsMap.get(exportName) ?? {};
|
17
20
|
exportsMap.set(exportName, mapFn(entry));
|
@@ -46,21 +49,15 @@ async function run(args) {
|
|
46
49
|
packageJson,
|
47
50
|
modules
|
48
51
|
});
|
49
|
-
okLog("Vite");
|
50
|
-
const outputs = await buildVite({ viteConfig });
|
51
|
-
if (outputs.error) {
|
52
|
-
return { error: true, errors: outputs.errors };
|
53
|
-
}
|
54
|
-
const viteOutput = outputs.output;
|
55
52
|
const exportsMap = /* @__PURE__ */ new Map();
|
56
53
|
const binsMap = /* @__PURE__ */ new Map();
|
57
|
-
const tasksRes = await
|
54
|
+
const tasksRes = await runSettled(args, [
|
58
55
|
copyStaticFilesTask(sourceDir, outDir),
|
59
56
|
buildTypesTask({
|
60
57
|
sourceDir,
|
61
58
|
outDir,
|
59
|
+
packageJson,
|
62
60
|
entrypoints,
|
63
|
-
buildOutput: viteOutput,
|
64
61
|
modules
|
65
62
|
}).then((res) => {
|
66
63
|
for (const [types, source] of res) {
|
@@ -75,30 +72,34 @@ async function run(args) {
|
|
75
72
|
});
|
76
73
|
}
|
77
74
|
}),
|
78
|
-
|
79
|
-
(
|
80
|
-
|
81
|
-
|
82
|
-
const
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
75
|
+
viteTask({ viteConfig }).then(
|
76
|
+
(viteOutput) => runSettled(args, [
|
77
|
+
jsFilesTask({ buildOutput: viteOutput, entrypoints, outDir }).then(
|
78
|
+
(res) => {
|
79
|
+
for (const [filePath, name] of res) {
|
80
|
+
setExports(exportsMap, name, (entry) => {
|
81
|
+
const format = filePath.endsWith(".js") ? "cjs" : "es";
|
82
|
+
if (format === "es") {
|
83
|
+
entry.mjs = "./" + filePath;
|
84
|
+
} else if (format === "cjs") {
|
85
|
+
entry.cjs = "./" + filePath;
|
86
|
+
}
|
87
|
+
return entry;
|
88
|
+
});
|
87
89
|
}
|
88
|
-
|
89
|
-
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
}
|
90
|
+
}
|
91
|
+
),
|
92
|
+
binsTask({ outBinsDir, bins, buildOutput: viteOutput, outDir }).then(
|
93
|
+
(res) => {
|
94
|
+
for (const [value, key] of res) {
|
95
|
+
binsMap.set(key, value);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
)
|
99
|
+
])
|
99
100
|
)
|
100
101
|
]);
|
101
|
-
const errors = tasksRes
|
102
|
+
const errors = promiseSettledResultErrors(tasksRes).map((res) => {
|
102
103
|
if (res instanceof BuildError) {
|
103
104
|
return res.error;
|
104
105
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport {
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport { resolveDirs } from \"./resolveDirs.js\";\nimport { createViteConfig } from \"./createViteConfig.js\";\nimport { copyStaticFilesTask } from \"./tasks/copyStaticFilesTask.js\";\nimport { buildTypesTask } from \"./tasks/buildTypesTask/buildTypesTask.js\";\nimport { BuildError } from \"./error.js\";\nimport { jsFilesTask } from \"./tasks/jsFilesTask.js\";\nimport { binsTask } from \"./tasks/binsTask.js\";\nimport { detectModules } from \"./detectModules.js\";\nimport { disableLog, lineLog, log, okLog } from \"./log.js\";\nimport { runSettled } from \"./pipeline.js\";\nimport { type Args } from \"./args.js\";\nimport { viteTask } from \"./tasks/viteTask.js\";\nimport { promiseSettledResultErrors } from \"./promiseSettledResultErrors.js\";\n\nfunction setExports(\n exportsMap: Map<string, ExportsObject>,\n exportName: string,\n mapFn: (entry: ExportsObject) => ExportsObject,\n) {\n const entry = exportsMap.get(exportName) ?? ({} as ExportsObject);\n exportsMap.set(exportName, mapFn(entry));\n}\n\nexport async function defineViteConfig(args: Args = {}) {\n disableLog();\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n console.error(packageJson);\n throw new Error(\"Failed to parse package.json\");\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig } = createViteConfig({ dirs, packageJson, modules });\n\n return viteConfig;\n}\n\ntype RunResult =\n | {\n error: false;\n }\n | {\n error: true;\n errors: Array<string>;\n };\n\nexport async function run(args: Args): Promise<RunResult> {\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath, outBinsDir } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n return { error: true, errors: packageJson };\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n modules,\n });\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n\n const tasksRes = await runSettled(args, [\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n sourceDir,\n outDir,\n packageJson,\n entrypoints,\n modules,\n }).then((res) => {\n for (const [types, source] of res) {\n setExports(exportsMap, source, (entry) => {\n if (types.endsWith(\".d.ts\")) {\n entry.dcts = \"./\" + relative(outDir, types);\n }\n if (types.endsWith(\".d.mts\")) {\n entry.dmts = \"./\" + relative(outDir, types);\n }\n return entry;\n });\n }\n }),\n viteTask({ viteConfig }).then((viteOutput) =>\n runSettled(args, [\n jsFilesTask({ buildOutput: viteOutput, entrypoints, outDir }).then(\n (res) => {\n for (const [filePath, name] of res) {\n setExports(exportsMap, name, (entry) => {\n const format = filePath.endsWith(\".js\") ? \"cjs\" : \"es\";\n if (format === \"es\") {\n entry.mjs = \"./\" + filePath;\n } else if (format === \"cjs\") {\n entry.cjs = \"./\" + filePath;\n }\n return entry;\n });\n }\n },\n ),\n binsTask({ outBinsDir, bins, buildOutput: viteOutput, outDir }).then(\n (res) => {\n for (const [value, key] of res) {\n binsMap.set(key, value);\n }\n },\n ),\n ]),\n ),\n ]);\n\n const errors = promiseSettledResultErrors(tasksRes).map((res) => {\n if (res instanceof BuildError) {\n return res.error;\n }\n\n return res.message;\n });\n\n if (errors.length > 0) {\n return { error: true, errors };\n }\n\n await writePackageJson(outDir, packageJson, {\n exportsMap,\n binsMap,\n });\n\n lineLog();\n log(`Build finished: ./${relative(sourceDir, outDir)}`);\n return { error: false };\n}\n"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"log.mjs","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\nexport function warnLog(...messages: Array<string>) {\n if (logEnabled) {\n console.warn(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":"AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,
|
1
|
+
{"version":3,"file":"log.mjs","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\nexport function warnLog(...messages: Array<string>) {\n if (logEnabled) {\n console.warn(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":"AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,EAAA;AAE3B;AACO,SAAS,WAAW,UAAyB;AAClD,MAAI,YAAY;AACN,YAAA,KAAK,GAAG,QAAQ;AAAA,EAAA;AAE5B;AAEO,SAAS,SAAS,UAAyB;AAChD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,YAAY,UAAyB;AACnD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,UAAU;AACpB,MAAA,IAAI,OAAO,EAAE,CAAC;AACpB;"}
|
@@ -1,25 +1,40 @@
|
|
1
1
|
import z from "zod";
|
2
2
|
declare function createPackageJsonSchema(sourceDir: string): z.ZodObject<{
|
3
|
-
exports: z.ZodOptional<z.ZodEffects<z.ZodUnion<[
|
3
|
+
exports: z.ZodOptional<z.ZodEffects<z.ZodUnion<[
|
4
|
+
z.ZodEffects<z.ZodString, Map<string, string>, string>,
|
5
|
+
z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Map<string, string>, Record<string, string>>
|
6
|
+
]>, Map<string, string>, string | Record<string, string>>>;
|
4
7
|
name: z.ZodEffects<z.ZodString, string, string>;
|
5
8
|
version: z.ZodString;
|
6
9
|
private: z.ZodEffects<z.ZodBoolean, boolean, boolean>;
|
7
10
|
description: z.ZodOptional<z.ZodString>;
|
8
11
|
dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
9
12
|
optionalDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
10
|
-
bin: z.ZodOptional<z.ZodEffects<z.ZodUnion<[
|
13
|
+
bin: z.ZodOptional<z.ZodEffects<z.ZodUnion<[
|
14
|
+
z.ZodEffects<z.ZodString, Map<string, string>, string>,
|
15
|
+
z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Map<string, string>, Record<string, string>>
|
16
|
+
]>, Map<string, string>, string | Record<string, string>>>;
|
11
17
|
repository: z.ZodOptional<z.ZodAny>;
|
12
18
|
keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
13
19
|
author: z.ZodOptional<z.ZodAny>;
|
14
20
|
maintainers: z.ZodOptional<z.ZodAny>;
|
15
|
-
contributors: z.ZodOptional<z.ZodArray<z.ZodUnion<[
|
21
|
+
contributors: z.ZodOptional<z.ZodArray<z.ZodUnion<[
|
22
|
+
z.ZodString,
|
23
|
+
z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>
|
24
|
+
]>, "many">>;
|
16
25
|
license: z.ZodOptional<z.ZodAny>;
|
17
26
|
devDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
18
27
|
peerDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
19
28
|
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
20
|
-
browser: z.ZodOptional<z.ZodUnion<[
|
29
|
+
browser: z.ZodOptional<z.ZodUnion<[
|
30
|
+
z.ZodString,
|
31
|
+
z.ZodRecord<z.ZodString, z.ZodString>
|
32
|
+
]>>;
|
21
33
|
bugs: z.ZodOptional<z.ZodAny>;
|
22
|
-
funding: z.ZodOptional<z.ZodUnion<[
|
34
|
+
funding: z.ZodOptional<z.ZodUnion<[
|
35
|
+
z.ZodString,
|
36
|
+
z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>
|
37
|
+
]>>;
|
23
38
|
os: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
24
39
|
cpu: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
25
40
|
sideEffects: z.ZodOptional<z.ZodAny>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"packageJson.mjs","sources":["../../../../src/packageJson.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport z from \"zod\";\nimport { errors } from \"./errors.js\";\nimport { join } from \"node:path\";\n\n// <region>\n// For AI completion. Don't remove.\nconst allPackageJsonFields = [\n \"exports\",\n \"name\",\n \"version\",\n \"private\",\n \"description\",\n \"dependencies\",\n \"optionalDependencies\",\n \"bin\",\n \"repository\",\n \"keywords\",\n \"author\",\n \"contributors\",\n \"license\",\n \"devDependencies\",\n \"peerDependencies\",\n \"engines\",\n \"browser\",\n \"funding\",\n \"os\",\n \"cpu\",\n];\n\nconst requiredFields = [\"exports\", \"name\", \"version\", \"private\"];\n\nconst optionalFields = [\n \"description\",\n \"dependencies\",\n \"optionalDependencies\",\n \"bin\",\n \"repository\",\n \"keywords\",\n \"author\",\n \"contributors\",\n \"license\",\n \"devDependencies\",\n \"peerDependencies\",\n \"engines\",\n \"browser\",\n \"funding\",\n \"os\",\n \"cpu\",\n];\n// </region>\n\nasync function fileExists(filePath: string) {\n try {\n const stats = await fs.stat(filePath);\n return stats.isFile();\n } catch (error) {\n return false;\n }\n}\n\nfunction dependencies(errorText: string) {\n return z\n .record(z.string({ message: errorText }), { message: errorText })\n .optional();\n}\n\nfunction createPathValidator(sourceDir: string) {\n return (path: string) => {\n const finalPath = join(sourceDir, path);\n return fileExists(finalPath);\n };\n}\n\nconst PackageJsonNameField: string = \"___NAME___\";\nfunction fillPackageJson(packageJson: PackageJson) {\n if (packageJson.bin) {\n const binName = packageJson.bin.get(PackageJsonNameField);\n if (binName) {\n packageJson.bin.set(packageJson.name, binName);\n packageJson.bin.delete(PackageJsonNameField);\n }\n }\n}\n\nfunction createPackageJsonSchema(sourceDir: string) {\n const pathValidator = createPathValidator(sourceDir);\n\n return z.object({\n exports: z\n .union(\n [\n z.string().transform((path) => new Map([[\".\", path]])),\n z.record(z.string()).transform((obj) => new Map(Object.entries(obj))),\n ],\n {\n errorMap() {\n return { message: errors.exportsRequired };\n },\n },\n )\n .refine(async (obj) => {\n for (const [key, value] of obj.entries()) {\n if (!(await pathValidator(value))) {\n return false;\n }\n }\n return true;\n }, errors.exportsInvalid)\n .optional(),\n name: z\n .string({ message: errors.nameRequired })\n .min(1, errors.nameMinLength)\n .max(214, errors.nameMaxLength)\n .refine(\n (name) => [\"_\", \".\"].every((start) => !name.startsWith(start)),\n errors.nameStartsIllegalChars,\n ),\n version: z.string({ message: errors.versionRequired }),\n private: z\n .boolean({ message: errors.privateIsTrue })\n .refine((value) => value, errors.privateIsTrue),\n description: z.string({ message: errors.descriptionString }).optional(),\n dependencies: dependencies(errors.dependenciesInvalid),\n optionalDependencies: dependencies(errors.optionalDependenciesInvalid),\n bin: z\n .union(\n [\n z\n .string()\n .transform((value) => new Map([[PackageJsonNameField, value]])),\n z\n .record(z.string())\n .transform((record) => new Map(Object.entries(record))),\n ],\n {\n errorMap() {\n return { message: errors.binFiled };\n },\n },\n )\n .refine(\n async (map) => {\n for (const [key, value] of map.entries()) {\n if (!(await pathValidator(value))) {\n return false;\n }\n }\n return true;\n },\n { message: errors.binFiled },\n )\n .optional(),\n repository: z.any().optional(),\n keywords: z\n .array(z.string(), { message: errors.keywordsInvalid })\n .optional(),\n author: z.any().optional(),\n maintainers: z.any().optional(),\n contributors: z\n .array(\n z.union([\n z.string({ message: errors.contributorsInvalid }),\n z.object({}, { message: errors.contributorsInvalid }),\n ]),\n )\n .optional(),\n license: z.any().optional(),\n devDependencies: dependencies(errors.devDependenciesInvalid),\n peerDependencies: dependencies(errors.peerDependenciesInvalid),\n engines: z\n .record(z.string(), { message: errors.enginesInvalid })\n .optional(),\n browser: z\n .union([\n z.string({ message: errors.browserInvalid }),\n z.record(z.string(), { message: errors.browserInvalid }),\n ])\n .optional(),\n bugs: z.any().optional(),\n funding: z\n .union([\n z.string({ message: errors.fundingInvalid }),\n z.object({}, { message: errors.fundingInvalid }),\n ])\n .optional(),\n os: z.array(z.string(), { message: errors.osInvalid }).optional(),\n cpu: z.array(z.string(), { message: errors.cpuInvalid }).optional(),\n sideEffects: z.any().optional(),\n unpkg: z.any().optional(),\n homepage: z.any().optional(),\n babel: z.any().optional(),\n peerDependenciesMeta: z.any().optional(),\n });\n}\ntype PackageJsonSchema = ReturnType<typeof createPackageJsonSchema>;\n\nexport type PackageJson = z.infer<PackageJsonSchema>;\ntype Errors = Array<string>;\n\ntype ParsePackageJsonArg = {\n packagePath: string;\n sourceDir: string;\n};\n\nexport async function parsePackageJson({\n sourceDir,\n packagePath,\n}: ParsePackageJsonArg): Promise<PackageJson | Errors> {\n const packageString = await fs.readFile(packagePath, \"utf-8\");\n const rawJson = JSON.parse(packageString);\n\n const packageJsonSchema = createPackageJsonSchema(sourceDir);\n const packageJson = await packageJsonSchema.safeParseAsync(rawJson);\n if (!packageJson.success) {\n return packageJson.error.errors.map((error) => error.message);\n }\n\n fillPackageJson(packageJson.data);\n return packageJson.data;\n}\n"],"names":[],"mappings":";;;;AAoDA,eAAe,WAAW,UAAkB;AACtC,MAAA;AACF,UAAM,QAAQ,MAAM,GAAG,KAAK,QAAQ;AACpC,WAAO,MAAM;
|
1
|
+
{"version":3,"file":"packageJson.mjs","sources":["../../../../src/packageJson.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport z from \"zod\";\nimport { errors } from \"./errors.js\";\nimport { join } from \"node:path\";\n\n// <region>\n// For AI completion. Don't remove.\nconst allPackageJsonFields = [\n \"exports\",\n \"name\",\n \"version\",\n \"private\",\n \"description\",\n \"dependencies\",\n \"optionalDependencies\",\n \"bin\",\n \"repository\",\n \"keywords\",\n \"author\",\n \"contributors\",\n \"license\",\n \"devDependencies\",\n \"peerDependencies\",\n \"engines\",\n \"browser\",\n \"funding\",\n \"os\",\n \"cpu\",\n];\n\nconst requiredFields = [\"exports\", \"name\", \"version\", \"private\"];\n\nconst optionalFields = [\n \"description\",\n \"dependencies\",\n \"optionalDependencies\",\n \"bin\",\n \"repository\",\n \"keywords\",\n \"author\",\n \"contributors\",\n \"license\",\n \"devDependencies\",\n \"peerDependencies\",\n \"engines\",\n \"browser\",\n \"funding\",\n \"os\",\n \"cpu\",\n];\n// </region>\n\nasync function fileExists(filePath: string) {\n try {\n const stats = await fs.stat(filePath);\n return stats.isFile();\n } catch (error) {\n return false;\n }\n}\n\nfunction dependencies(errorText: string) {\n return z\n .record(z.string({ message: errorText }), { message: errorText })\n .optional();\n}\n\nfunction createPathValidator(sourceDir: string) {\n return (path: string) => {\n const finalPath = join(sourceDir, path);\n return fileExists(finalPath);\n };\n}\n\nconst PackageJsonNameField: string = \"___NAME___\";\nfunction fillPackageJson(packageJson: PackageJson) {\n if (packageJson.bin) {\n const binName = packageJson.bin.get(PackageJsonNameField);\n if (binName) {\n packageJson.bin.set(packageJson.name, binName);\n packageJson.bin.delete(PackageJsonNameField);\n }\n }\n}\n\nfunction createPackageJsonSchema(sourceDir: string) {\n const pathValidator = createPathValidator(sourceDir);\n\n return z.object({\n exports: z\n .union(\n [\n z.string().transform((path) => new Map([[\".\", path]])),\n z.record(z.string()).transform((obj) => new Map(Object.entries(obj))),\n ],\n {\n errorMap() {\n return { message: errors.exportsRequired };\n },\n },\n )\n .refine(async (obj) => {\n for (const [key, value] of obj.entries()) {\n if (!(await pathValidator(value))) {\n return false;\n }\n }\n return true;\n }, errors.exportsInvalid)\n .optional(),\n name: z\n .string({ message: errors.nameRequired })\n .min(1, errors.nameMinLength)\n .max(214, errors.nameMaxLength)\n .refine(\n (name) => [\"_\", \".\"].every((start) => !name.startsWith(start)),\n errors.nameStartsIllegalChars,\n ),\n version: z.string({ message: errors.versionRequired }),\n private: z\n .boolean({ message: errors.privateIsTrue })\n .refine((value) => value, errors.privateIsTrue),\n description: z.string({ message: errors.descriptionString }).optional(),\n dependencies: dependencies(errors.dependenciesInvalid),\n optionalDependencies: dependencies(errors.optionalDependenciesInvalid),\n bin: z\n .union(\n [\n z\n .string()\n .transform((value) => new Map([[PackageJsonNameField, value]])),\n z\n .record(z.string())\n .transform((record) => new Map(Object.entries(record))),\n ],\n {\n errorMap() {\n return { message: errors.binFiled };\n },\n },\n )\n .refine(\n async (map) => {\n for (const [key, value] of map.entries()) {\n if (!(await pathValidator(value))) {\n return false;\n }\n }\n return true;\n },\n { message: errors.binFiled },\n )\n .optional(),\n repository: z.any().optional(),\n keywords: z\n .array(z.string(), { message: errors.keywordsInvalid })\n .optional(),\n author: z.any().optional(),\n maintainers: z.any().optional(),\n contributors: z\n .array(\n z.union([\n z.string({ message: errors.contributorsInvalid }),\n z.object({}, { message: errors.contributorsInvalid }),\n ]),\n )\n .optional(),\n license: z.any().optional(),\n devDependencies: dependencies(errors.devDependenciesInvalid),\n peerDependencies: dependencies(errors.peerDependenciesInvalid),\n engines: z\n .record(z.string(), { message: errors.enginesInvalid })\n .optional(),\n browser: z\n .union([\n z.string({ message: errors.browserInvalid }),\n z.record(z.string(), { message: errors.browserInvalid }),\n ])\n .optional(),\n bugs: z.any().optional(),\n funding: z\n .union([\n z.string({ message: errors.fundingInvalid }),\n z.object({}, { message: errors.fundingInvalid }),\n ])\n .optional(),\n os: z.array(z.string(), { message: errors.osInvalid }).optional(),\n cpu: z.array(z.string(), { message: errors.cpuInvalid }).optional(),\n sideEffects: z.any().optional(),\n unpkg: z.any().optional(),\n homepage: z.any().optional(),\n babel: z.any().optional(),\n peerDependenciesMeta: z.any().optional(),\n });\n}\ntype PackageJsonSchema = ReturnType<typeof createPackageJsonSchema>;\n\nexport type PackageJson = z.infer<PackageJsonSchema>;\ntype Errors = Array<string>;\n\ntype ParsePackageJsonArg = {\n packagePath: string;\n sourceDir: string;\n};\n\nexport async function parsePackageJson({\n sourceDir,\n packagePath,\n}: ParsePackageJsonArg): Promise<PackageJson | Errors> {\n const packageString = await fs.readFile(packagePath, \"utf-8\");\n const rawJson = JSON.parse(packageString);\n\n const packageJsonSchema = createPackageJsonSchema(sourceDir);\n const packageJson = await packageJsonSchema.safeParseAsync(rawJson);\n if (!packageJson.success) {\n return packageJson.error.errors.map((error) => error.message);\n }\n\n fillPackageJson(packageJson.data);\n return packageJson.data;\n}\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { type Args } from "./args.js";
|
2
|
+
export declare function runSettled<T extends readonly unknown[] | [
|
3
|
+
]>(args: Args, promises: T): Promise<{
|
4
|
+
-readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>;
|
5
|
+
}>;
|
6
|
+
export declare function runSettled<T>(args: Args, promises: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]>;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import "./args.mjs";
|
2
|
+
async function runSettled(args, promises) {
|
3
|
+
if (args.seq) {
|
4
|
+
const results = new Array();
|
5
|
+
for (const promise of promises) {
|
6
|
+
try {
|
7
|
+
const result = await promise;
|
8
|
+
results.push({ status: "fulfilled", value: result });
|
9
|
+
} catch (error) {
|
10
|
+
results.push({ status: "rejected", reason: error });
|
11
|
+
}
|
12
|
+
}
|
13
|
+
return results;
|
14
|
+
}
|
15
|
+
return Promise.allSettled(promises);
|
16
|
+
}
|
17
|
+
export {
|
18
|
+
runSettled
|
19
|
+
};
|
20
|
+
//# sourceMappingURL=pipeline.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pipeline.mjs","sources":["../../../../src/pipeline.ts"],"sourcesContent":["import { type Args } from \"./args.js\";\n\nexport async function runSettled<T extends readonly unknown[] | []>(\n args: Args,\n promises: T,\n): Promise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }>;\nexport async function runSettled<T>(\n args: Args,\n promises: Iterable<T | PromiseLike<T>>,\n): Promise<PromiseSettledResult<Awaited<T>>[]>;\nexport async function runSettled<T>(\n args: Args,\n promises: Iterable<T | PromiseLike<T>>,\n): Promise<PromiseSettledResult<Awaited<T>>[]> {\n if (args.seq) {\n const results = new Array<PromiseSettledResult<Awaited<T>>>();\n\n for (const promise of promises) {\n try {\n const result = await promise;\n results.push({ status: \"fulfilled\", value: result });\n } catch (error) {\n results.push({ status: \"rejected\", reason: error });\n }\n }\n return results;\n }\n\n return Promise.allSettled(promises);\n}\n"],"names":[],"mappings":";AAUsB,eAAA,WACpB,MACA,UAC6C;AAC7C,MAAI,KAAK,KAAK;AACN,UAAA,UAAU,IAAI,MAAwC;AAE5D,eAAW,WAAW,UAAU;AAC1B,UAAA;AACF,cAAM,SAAS,MAAM;AACrB,gBAAQ,KAAK,EAAE,QAAQ,aAAa,OAAO,QAAQ;AAAA,eAC5C,OAAO;AACd,gBAAQ,KAAK,EAAE,QAAQ,YAAY,QAAQ,OAAO;AAAA,MAAA;AAAA,IACpD;AAEK,WAAA;AAAA,EAAA;AAGF,SAAA,QAAQ,WAAW,QAAQ;AACpC;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"findBabelConfig.mjs","sources":["../../../../../../src/plugins/babel/findBabelConfig.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { type PackageJson } from \"../../packageJson.js\";\n\nconst configFiles = [\n \".babelrc\",\n \".babelrc.json\",\n \".babelrc.js\",\n \".babelrc.cjs\",\n \".babelrc.mjs\",\n \"babel.config.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"package.json\",\n];\n\n// We need to check the existance only for better error reporting\n// It helps if a user made the config but forgot to install babel/core\n\nexport async function findBabelConfig(\n dir: string,\n packageJson: PackageJson,\n): Promise<boolean> {\n try {\n for (const file of configFiles) {\n const configPath = path.join(dir, file);\n try {\n const stat = await fs.stat(configPath);\n if (stat.isFile()) {\n if (file === \"package.json\") {\n if (packageJson.babel) {\n return true;\n }\n } else {\n return true;\n }\n }\n } catch {}\n }\n return false;\n } catch {\n return false;\n }\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKsB,eAAA,gBACpB,KACA,aACkB;AACd,MAAA;AACF,eAAW,QAAQ,aAAa;AAC9B,YAAM,aAAa,KAAK,KAAK,KAAK,IAAI;AAClC,UAAA;AACF,cAAM,OAAO,MAAM,GAAG,KAAK,UAAU;AACjC,YAAA,KAAK,UAAU;AACjB,cAAI,SAAS,gBAAgB;AAC3B,gBAAI,YAAY,OAAO;AACd,qBAAA;AAAA,
|
1
|
+
{"version":3,"file":"findBabelConfig.mjs","sources":["../../../../../../src/plugins/babel/findBabelConfig.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { type PackageJson } from \"../../packageJson.js\";\n\nconst configFiles = [\n \".babelrc\",\n \".babelrc.json\",\n \".babelrc.js\",\n \".babelrc.cjs\",\n \".babelrc.mjs\",\n \"babel.config.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"package.json\",\n];\n\n// We need to check the existance only for better error reporting\n// It helps if a user made the config but forgot to install babel/core\n\nexport async function findBabelConfig(\n dir: string,\n packageJson: PackageJson,\n): Promise<boolean> {\n try {\n for (const file of configFiles) {\n const configPath = path.join(dir, file);\n try {\n const stat = await fs.stat(configPath);\n if (stat.isFile()) {\n if (file === \"package.json\") {\n if (packageJson.babel) {\n return true;\n }\n } else {\n return true;\n }\n }\n } catch {}\n }\n return false;\n } catch {\n return false;\n }\n}\n"],"names":[],"mappings":";;;AAIA,MAAM,cAAc;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKsB,eAAA,gBACpB,KACA,aACkB;AACd,MAAA;AACF,eAAW,QAAQ,aAAa;AAC9B,YAAM,aAAa,KAAK,KAAK,KAAK,IAAI;AAClC,UAAA;AACF,cAAM,OAAO,MAAM,GAAG,KAAK,UAAU;AACjC,YAAA,KAAK,UAAU;AACjB,cAAI,SAAS,gBAAgB;AAC3B,gBAAI,YAAY,OAAO;AACd,qBAAA;AAAA,YAAA;AAAA,UACT,OACK;AACE,mBAAA;AAAA,UAAA;AAAA,QACT;AAAA,MACF,QACM;AAAA,MAAA;AAAA,IAAC;AAEJ,WAAA;AAAA,EAAA,QACD;AACC,WAAA;AAAA,EAAA;AAEX;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../src/plugins/babel/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport * as path from \"node:path\";\nimport { findBabelConfig } from \"./findBabelConfig.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype BabelPluginOptions = {\n packageJson: PackageJson;\n dirs: Dirs;\n modules: DetectedModules;\n};\n\nexport function babelPlugin({\n packageJson,\n dirs,\n modules,\n}: BabelPluginOptions): Plugin {\n let hasBabelConfig = false;\n\n return {\n name: \"smartbundle:babel\",\n async buildStart() {\n hasBabelConfig = await findBabelConfig(dirs.sourceDir, packageJson);\n if (modules.babel && !hasBabelConfig) {\n this.warn(\n \"We have found a @babel/core package, but config was not found. It could be a bug\",\n );\n } else if (!modules.babel && hasBabelConfig) {\n this.error(\n new Error(\n \"We have found a babel config. Please install @babel/core to devDeps or remove the config file\",\n ),\n );\n }\n },\n async transform(code, id) {\n if (!modules.babel || !hasBabelConfig) {\n return null;\n }\n\n const extname = path.extname(id);\n if (![\".js\", \".ts\"].includes(extname)) {\n return null;\n }\n\n const map = this.getCombinedSourcemap();\n\n const result = await modules.babel.transformAsync(code, {\n filename: id,\n sourceMaps: true,\n inputSourceMap: map,\n });\n\n if (!result?.code) {\n throw new Error(\"Babel transformation failed\");\n }\n\n return {\n code: result.code,\n map: result.map,\n };\n },\n buildEnd(error) {\n if (!error) {\n if (modules.babel && hasBabelConfig) {\n okLog(\"Babel\");\n }\n } else {\n this.error(error);\n }\n },\n };\n}\n"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../src/plugins/babel/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport * as path from \"node:path\";\nimport { findBabelConfig } from \"./findBabelConfig.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype BabelPluginOptions = {\n packageJson: PackageJson;\n dirs: Dirs;\n modules: DetectedModules;\n};\n\nexport function babelPlugin({\n packageJson,\n dirs,\n modules,\n}: BabelPluginOptions): Plugin {\n let hasBabelConfig = false;\n\n return {\n name: \"smartbundle:babel\",\n async buildStart() {\n hasBabelConfig = await findBabelConfig(dirs.sourceDir, packageJson);\n if (modules.babel && !hasBabelConfig) {\n this.warn(\n \"We have found a @babel/core package, but config was not found. It could be a bug\",\n );\n } else if (!modules.babel && hasBabelConfig) {\n this.error(\n new Error(\n \"We have found a babel config. Please install @babel/core to devDeps or remove the config file\",\n ),\n );\n }\n },\n async transform(code, id) {\n if (!modules.babel || !hasBabelConfig) {\n return null;\n }\n\n const extname = path.extname(id);\n if (![\".js\", \".ts\"].includes(extname)) {\n return null;\n }\n\n const map = this.getCombinedSourcemap();\n\n const result = await modules.babel.transformAsync(code, {\n filename: id,\n sourceMaps: true,\n inputSourceMap: map,\n });\n\n if (!result?.code) {\n throw new Error(\"Babel transformation failed\");\n }\n\n return {\n code: result.code,\n map: result.map,\n };\n },\n buildEnd(error) {\n if (!error) {\n if (modules.babel && hasBabelConfig) {\n okLog(\"Babel\");\n }\n } else {\n this.error(error);\n }\n },\n };\n}\n"],"names":[],"mappings":";;;;;;;AAcO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAA+B;AAC7B,MAAI,iBAAiB;AAEd,SAAA;AAAA,IACL,MAAM;AAAA,IACN,MAAM,aAAa;AACjB,uBAAiB,MAAM,gBAAgB,KAAK,WAAW,WAAW;AAC9D,UAAA,QAAQ,SAAS,CAAC,gBAAgB;AAC/B,aAAA;AAAA,UACH;AAAA,QACF;AAAA,MACS,WAAA,CAAC,QAAQ,SAAS,gBAAgB;AACtC,aAAA;AAAA,UACH,IAAI;AAAA,YACF;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,MAAM,UAAU,MAAM,IAAI;AACxB,UAAI,CAAC,QAAQ,SAAS,CAAC,gBAAgB;AAC9B,eAAA;AAAA,MAAA;AAGH,YAAA,UAAU,KAAK,QAAQ,EAAE;AAC/B,UAAI,CAAC,CAAC,OAAO,KAAK,EAAE,SAAS,OAAO,GAAG;AAC9B,eAAA;AAAA,MAAA;AAGH,YAAA,MAAM,KAAK,qBAAqB;AAEtC,YAAM,SAAS,MAAM,QAAQ,MAAM,eAAe,MAAM;AAAA,QACtD,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,gBAAgB;AAAA,MAAA,CACjB;AAEG,UAAA,EAAC,iCAAQ,OAAM;AACX,cAAA,IAAI,MAAM,6BAA6B;AAAA,MAAA;AAGxC,aAAA;AAAA,QACL,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IACA,SAAS,OAAO;AACd,UAAI,CAAC,OAAO;AACN,YAAA,QAAQ,SAAS,gBAAgB;AACnC,gBAAM,OAAO;AAAA,QAAA;AAAA,MACf,OACK;AACL,aAAK,MAAM,KAAK;AAAA,MAAA;AAAA,IAClB;AAAA,EAEJ;AACF;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../src/plugins/react/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport { transformWithEsbuild } from \"vite\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype ReactPluginArg = {\n modules: DetectedModules;\n};\n\nconst errorJsxMessage =\n \"SmartBundle cannot find the react dependency inside dependencies, optionalDependencies or peerDependencies. Please, install it before bundling\";\n\nexport function reactPlugin({ modules }: ReactPluginArg): Plugin {\n const pluginName = \"smartbundle:react\";\n\n if (modules.react == null) {\n return {\n name: pluginName,\n transform(code, id) {\n if (id.endsWith(\".jsx\") || id.endsWith(\".tsx\")) {\n this.error(new Error(errorJsxMessage));\n }\n },\n buildEnd(err) {\n if (err) {\n const isJsxError = err.message.includes(\"JSX\");\n if (isJsxError) {\n this.error(new Error(errorJsxMessage));\n }\n }\n },\n };\n }\n\n return {\n name: pluginName,\n enforce: \"pre\",\n async transform(code, id) {\n const isJs = id.endsWith(\".js\");\n const isJsx = id.endsWith(\".jsx\");\n const isTsx = id.endsWith(\".tsx\");\n if (!(isJs || isJsx || isTsx)) {\n return null;\n }\n\n return await transformWithEsbuild(\n code,\n id,\n {\n loader: isJs || isJsx ? \"jsx\" : \"tsx\",\n jsx: modules.react === \"legacy\" ? \"transform\" : \"automatic\",\n sourcemap: true,\n },\n this.getCombinedSourcemap(),\n );\n },\n buildEnd(err) {\n if (!err) {\n okLog(\"React\");\n } else {\n this.error(err);\n }\n },\n };\n}\n"],"names":[],"mappings":";;;;;;AASA,MAAM,kBACJ;AAEc,SAAA,YAAY,EAAE,WAAmC;AAC/D,QAAM,aAAa;AAEf,MAAA,QAAQ,SAAS,MAAM;AAClB,WAAA;AAAA,MACL,MAAM;AAAA,MACN,UAAU,MAAM,IAAI;AAClB,YAAI,GAAG,SAAS,MAAM,KAAK,GAAG,SAAS,MAAM,GAAG;AAC9C,eAAK,MAAM,IAAI,MAAM,eAAe,CAAC;AAAA,
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../src/plugins/react/index.ts"],"sourcesContent":["import type { Plugin } from \"vite\";\nimport { transformWithEsbuild } from \"vite\";\nimport { type DetectedModules } from \"../../detectModules.js\";\nimport { okLog } from \"../../log.js\";\n\ntype ReactPluginArg = {\n modules: DetectedModules;\n};\n\nconst errorJsxMessage =\n \"SmartBundle cannot find the react dependency inside dependencies, optionalDependencies or peerDependencies. Please, install it before bundling\";\n\nexport function reactPlugin({ modules }: ReactPluginArg): Plugin {\n const pluginName = \"smartbundle:react\";\n\n if (modules.react == null) {\n return {\n name: pluginName,\n transform(code, id) {\n if (id.endsWith(\".jsx\") || id.endsWith(\".tsx\")) {\n this.error(new Error(errorJsxMessage));\n }\n },\n buildEnd(err) {\n if (err) {\n const isJsxError = err.message.includes(\"JSX\");\n if (isJsxError) {\n this.error(new Error(errorJsxMessage));\n }\n }\n },\n };\n }\n\n return {\n name: pluginName,\n enforce: \"pre\",\n async transform(code, id) {\n const isJs = id.endsWith(\".js\");\n const isJsx = id.endsWith(\".jsx\");\n const isTsx = id.endsWith(\".tsx\");\n if (!(isJs || isJsx || isTsx)) {\n return null;\n }\n\n return await transformWithEsbuild(\n code,\n id,\n {\n loader: isJs || isJsx ? \"jsx\" : \"tsx\",\n jsx: modules.react === \"legacy\" ? \"transform\" : \"automatic\",\n sourcemap: true,\n },\n this.getCombinedSourcemap(),\n );\n },\n buildEnd(err) {\n if (!err) {\n okLog(\"React\");\n } else {\n this.error(err);\n }\n },\n };\n}\n"],"names":[],"mappings":";;;;;;AASA,MAAM,kBACJ;AAEc,SAAA,YAAY,EAAE,WAAmC;AAC/D,QAAM,aAAa;AAEf,MAAA,QAAQ,SAAS,MAAM;AAClB,WAAA;AAAA,MACL,MAAM;AAAA,MACN,UAAU,MAAM,IAAI;AAClB,YAAI,GAAG,SAAS,MAAM,KAAK,GAAG,SAAS,MAAM,GAAG;AAC9C,eAAK,MAAM,IAAI,MAAM,eAAe,CAAC;AAAA,QAAA;AAAA,MAEzC;AAAA,MACA,SAAS,KAAK;AACZ,YAAI,KAAK;AACP,gBAAM,aAAa,IAAI,QAAQ,SAAS,KAAK;AAC7C,cAAI,YAAY;AACd,iBAAK,MAAM,IAAI,MAAM,eAAe,CAAC;AAAA,UAAA;AAAA,QACvC;AAAA,MACF;AAAA,IAEJ;AAAA,EAAA;AAGK,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM,UAAU,MAAM,IAAI;AAClB,YAAA,OAAO,GAAG,SAAS,KAAK;AACxB,YAAA,QAAQ,GAAG,SAAS,MAAM;AAC1B,YAAA,QAAQ,GAAG,SAAS,MAAM;AAC5B,UAAA,EAAE,QAAQ,SAAS,QAAQ;AACtB,eAAA;AAAA,MAAA;AAGT,aAAO,MAAM;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,UACE,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,UAChC,KAAK,QAAQ,UAAU,WAAW,cAAc;AAAA,UAChD,WAAW;AAAA,QACb;AAAA,QACA,KAAK,qBAAqB;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,SAAS,KAAK;AACZ,UAAI,CAAC,KAAK;AACR,cAAM,OAAO;AAAA,MAAA,OACR;AACL,aAAK,MAAM,GAAG;AAAA,MAAA;AAAA,IAChB;AAAA,EAEJ;AACF;"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
function promiseSettledResultErrors(results) {
|
2
|
+
const errors = [];
|
3
|
+
for (const result of results) {
|
4
|
+
if (result instanceof Array) {
|
5
|
+
errors.push(promiseSettledResultErrors(result));
|
6
|
+
} else if (result.status === "rejected") {
|
7
|
+
errors.push(result.reason);
|
8
|
+
}
|
9
|
+
}
|
10
|
+
return errors.flat(Infinity);
|
11
|
+
}
|
12
|
+
export {
|
13
|
+
promiseSettledResultErrors
|
14
|
+
};
|
15
|
+
//# sourceMappingURL=promiseSettledResultErrors.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"promiseSettledResultErrors.mjs","sources":["../../../../src/promiseSettledResultErrors.ts"],"sourcesContent":["type Hierarchy = Array<PromiseSettledResult<any> | Hierarchy>;\n\nexport function promiseSettledResultErrors<H extends Hierarchy>(results: H) {\n const errors: Array<any> = [];\n for (const result of results) {\n if (result instanceof Array) {\n errors.push(promiseSettledResultErrors(result));\n } else if (result.status === \"rejected\") {\n errors.push(result.reason);\n }\n }\n return errors.flat(Infinity);\n}\n"],"names":[],"mappings":"AAEO,SAAS,2BAAgD,SAAY;AAC1E,QAAM,SAAqB,CAAC;AAC5B,aAAW,UAAU,SAAS;AAC5B,QAAI,kBAAkB,OAAO;AACpB,aAAA,KAAK,2BAA2B,MAAM,CAAC;AAAA,IAAA,WACrC,OAAO,WAAW,YAAY;AAChC,aAAA,KAAK,OAAO,MAAM;AAAA,IAAA;AAAA,EAC3B;AAEK,SAAA,OAAO,KAAK,QAAQ;AAC7B;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolveDirs.mjs","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\
|
1
|
+
{"version":3,"file":"resolveDirs.mjs","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\nimport { type Args } from \"./args.js\";\n\nfunction myResolve(path1: string, path2: string) {\n if (isAbsolute(path2)) {\n return path2;\n }\n\n return join(path1, path2);\n}\n\nexport function resolveDirs(args: Args) {\n const sourceDir = myResolve(process.cwd(), args.sourceDir ?? \".\");\n const packagePath = myResolve(\n sourceDir,\n args.packagePath ?? \"./package.json\",\n );\n const outDir = myResolve(process.cwd(), args.outputDir ?? \"./dist\");\n const outBinsDir = myResolve(outDir, \"__bin__\");\n\n return { sourceDir, packagePath, outDir, outBinsDir };\n}\n\nexport type Dirs = ReturnType<typeof resolveDirs>;\n"],"names":[],"mappings":";;AAGA,SAAS,UAAU,OAAe,OAAe;AAC3C,MAAA,WAAW,KAAK,GAAG;AACd,WAAA;AAAA,EAAA;AAGF,SAAA,KAAK,OAAO,KAAK;AAC1B;AAEO,SAAS,YAAY,MAAY;AACtC,QAAM,YAAY,UAAU,QAAQ,OAAO,KAAK,aAAa,GAAG;AAChE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,KAAK,eAAe;AAAA,EACtB;AACA,QAAM,SAAS,UAAU,QAAQ,OAAO,KAAK,aAAa,QAAQ;AAC5D,QAAA,aAAa,UAAU,QAAQ,SAAS;AAE9C,SAAO,EAAE,WAAW,aAAa,QAAQ,WAAW;AACtD;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"run.mjs","sources":["../../../../src/run.ts"],"sourcesContent":["import { args } from \"./args.js\";\nimport { run } from \"./index.js\";\n\nrun(args).then((res) => {\n if (res.error) {\n for (const error of res.errors) {\n console.error(error);\n }\n }\n});\n"],"names":[],"mappings":";;AAGA,IAAI,IAAI,EAAE,KAAK,CAAC,QAAQ;AACtB,MAAI,IAAI,OAAO;AACF,eAAA,SAAS,IAAI,QAAQ;
|
1
|
+
{"version":3,"file":"run.mjs","sources":["../../../../src/run.ts"],"sourcesContent":["import { args } from \"./args.js\";\nimport { run } from \"./index.js\";\n\nrun(args).then((res) => {\n if (res.error) {\n for (const error of res.errors) {\n console.error(\"\\x1b[31m[ERROR]\", error, \"\\x1b[0m\");\n }\n }\n});\n"],"names":[],"mappings":";;AAGA,IAAI,IAAI,EAAE,KAAK,CAAC,QAAQ;AACtB,MAAI,IAAI,OAAO;AACF,eAAA,SAAS,IAAI,QAAQ;AACtB,cAAA,MAAM,mBAAmB,OAAO,SAAS;AAAA,IAAA;AAAA,EACnD;AAEJ,CAAC;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"binsTask.mjs","sources":["../../../../../src/tasks/binsTask.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport type { Rollup } from \"vite\";\nimport { reverseMap } from \"./utils.js\";\nimport { okLog } from \"../log.js\";\n\ntype BinsTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n bins: Map<string, string>;\n outBinsDir: string;\n outDir: string;\n};\n\nexport async function binsTask({\n buildOutput,\n bins,\n outBinsDir,\n outDir,\n}: BinsTaskOption) {\n if (bins.size === 0) {\n return new Map<string, string>();\n }\n await mkdir(outBinsDir, { recursive: true });\n const reversedEntrypoints = reverseMap(bins);\n const res = new Map<string, string>();\n for (const el of buildOutput) {\n if (el.facadeModuleId == null) {\n continue;\n }\n if (el.fileName.endsWith(\".js\")) {\n continue;\n }\n const binsNames = reversedEntrypoints.get(el.facadeModuleId);\n if (!binsNames) {\n continue;\n }\n for (const binName of binsNames) {\n const totalPath = relative(outBinsDir, join(outDir, el.fileName));\n const execPath = join(outBinsDir, `${binName}.js`);\n await writeFile(\n execPath,\n `#!/usr/bin/env node\nimport(\"${totalPath}\");\n`,\n );\n res.set(relative(outDir, execPath), binName);\n }\n }\n\n if (res.size) {\n okLog(\"Bin:\", [...res.values()].join(\", \"));\n }\n\n return res;\n}\n"],"names":[],"mappings":";;;;AAaA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,
|
1
|
+
{"version":3,"file":"binsTask.mjs","sources":["../../../../../src/tasks/binsTask.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport type { Rollup } from \"vite\";\nimport { reverseMap } from \"./utils.js\";\nimport { okLog } from \"../log.js\";\n\ntype BinsTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n bins: Map<string, string>;\n outBinsDir: string;\n outDir: string;\n};\n\nexport async function binsTask({\n buildOutput,\n bins,\n outBinsDir,\n outDir,\n}: BinsTaskOption) {\n if (bins.size === 0) {\n return new Map<string, string>();\n }\n await mkdir(outBinsDir, { recursive: true });\n const reversedEntrypoints = reverseMap(bins);\n const res = new Map<string, string>();\n for (const el of buildOutput) {\n if (el.facadeModuleId == null) {\n continue;\n }\n if (el.fileName.endsWith(\".js\")) {\n continue;\n }\n const binsNames = reversedEntrypoints.get(el.facadeModuleId);\n if (!binsNames) {\n continue;\n }\n for (const binName of binsNames) {\n const totalPath = relative(outBinsDir, join(outDir, el.fileName));\n const execPath = join(outBinsDir, `${binName}.js`);\n await writeFile(\n execPath,\n `#!/usr/bin/env node\nimport(\"${totalPath}\");\n`,\n );\n res.set(relative(outDir, execPath), binName);\n }\n }\n\n if (res.size) {\n okLog(\"Bin:\", [...res.values()].join(\", \"));\n }\n\n return res;\n}\n"],"names":[],"mappings":";;;;AAaA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,EAAA;AAEjC,QAAM,MAAM,YAAY,EAAE,WAAW,MAAM;AACrC,QAAA,sBAAsB,WAAW,IAAI;AACrC,QAAA,0BAAU,IAAoB;AACpC,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IAAA;AAEF,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IAAA;AAEF,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IAAA;AAEF,eAAW,WAAW,WAAW;AAC/B,YAAM,YAAY,SAAS,YAAY,KAAK,QAAQ,GAAG,QAAQ,CAAC;AAChE,YAAM,WAAW,KAAK,YAAY,GAAG,OAAO,KAAK;AAC3C,YAAA;AAAA,QACJ;AAAA,QACA;AAAA,UACE,SAAS;AAAA;AAAA,MAEb;AACA,UAAI,IAAI,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAAA;AAAA,EAC7C;AAGF,MAAI,IAAI,MAAM;AACN,UAAA,QAAQ,CAAC,GAAG,IAAI,QAAQ,EAAE,KAAK,IAAI,CAAC;AAAA,EAAA;AAGrC,SAAA;AACT;"}
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { type Rollup } from "vite";
|
2
1
|
import type { DetectedModules } from "../../detectModules.js";
|
2
|
+
import { type PackageJson } from "../../packageJson.js";
|
3
3
|
type BuildTypesTaskOption = {
|
4
|
-
buildOutput: Rollup.OutputChunk[];
|
5
4
|
entrypoints: Map<string, string>;
|
6
5
|
sourceDir: string;
|
7
6
|
outDir: string;
|
8
7
|
modules: DetectedModules;
|
8
|
+
packageJson: PackageJson;
|
9
9
|
};
|
10
|
-
export declare function buildTypesTask({
|
10
|
+
export declare function buildTypesTask({ entrypoints, sourceDir, outDir, packageJson, modules, }: BuildTypesTaskOption): Promise<Map<string, string>>;
|
11
11
|
export {};
|
@@ -1,12 +1,14 @@
|
|
1
|
-
import "vite";
|
2
1
|
import { callTypescript } from "./callTypescript.mjs";
|
3
2
|
import { reverseMap } from "../utils.mjs";
|
4
3
|
import { okLog } from "../../log.mjs";
|
4
|
+
import "node:fs/promises";
|
5
|
+
import "zod";
|
6
|
+
import "node:path";
|
5
7
|
async function buildTypesTask({
|
6
|
-
buildOutput,
|
7
8
|
entrypoints,
|
8
9
|
sourceDir,
|
9
10
|
outDir,
|
11
|
+
packageJson,
|
10
12
|
modules
|
11
13
|
}) {
|
12
14
|
const reversedEntrypoints = reverseMap(entrypoints);
|
@@ -16,11 +18,11 @@ async function buildTypesTask({
|
|
16
18
|
if (tsEntrypoints.length === 0 || modules.ts == null) {
|
17
19
|
return /* @__PURE__ */ new Map();
|
18
20
|
}
|
19
|
-
const files = buildOutput.map((el) => el.facadeModuleId ?? "");
|
20
21
|
const dtsMap = await callTypescript({
|
21
22
|
ts: modules.ts,
|
22
23
|
sourceDir,
|
23
|
-
|
24
|
+
packageJson,
|
25
|
+
files: tsEntrypoints,
|
24
26
|
outDir
|
25
27
|
});
|
26
28
|
const result = /* @__PURE__ */ new Map();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"buildTypesTask.mjs","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"file":"buildTypesTask.mjs","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\nimport { okLog } from \"../../log.js\";\nimport type { DetectedModules } from \"../../detectModules.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\n\ntype BuildTypesTaskOption = {\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n modules: DetectedModules;\n packageJson: PackageJson;\n};\n\nexport async function buildTypesTask({\n entrypoints,\n sourceDir,\n outDir,\n packageJson,\n modules,\n}: BuildTypesTaskOption) {\n const reversedEntrypoints = reverseMap(entrypoints);\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n if (tsEntrypoints.length === 0 || modules.ts == null) {\n return new Map<string, string>();\n }\n\n const dtsMap = await callTypescript({\n ts: modules.ts,\n sourceDir,\n packageJson,\n files: tsEntrypoints,\n outDir,\n });\n\n const result = new Map<string, string>();\n for (const [types, source] of dtsMap) {\n const exportPath = reversedEntrypoints.get(source);\n if (!exportPath) {\n continue;\n }\n for (const path of exportPath) {\n result.set(types, path);\n }\n }\n\n okLog(\".d.ts\");\n\n return result;\n}\n"],"names":[],"mappings":";;;;;;AAcA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACjB,QAAA,sBAAsB,WAAW,WAAW;AAClD,QAAM,gBAAgB,CAAC,GAAG,YAAY,OAAA,CAAQ,EAAE;AAAA,IAAO,CAAC,UACtD,MAAM,SAAS,KAAK;AAAA,EACtB;AACA,MAAI,cAAc,WAAW,KAAK,QAAQ,MAAM,MAAM;AACpD,+BAAW,IAAoB;AAAA,EAAA;AAG3B,QAAA,SAAS,MAAM,eAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EAAA,CACD;AAEK,QAAA,6BAAa,IAAoB;AACvC,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IAAA;AAEF,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IAAA;AAAA,EACxB;AAGF,QAAM,OAAO;AAEN,SAAA;AACT;"}
|