smartbundle 0.11.0-alpha.0 → 0.11.0-alpha.1

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 CHANGED
@@ -64,6 +64,9 @@ Just install `typescript@^5.0.0` as a dev dependency and start creating ts files
64
64
  ### Babel
65
65
  Just install `@babel/core@^7.0.0` as a dev dependency and create a Babel configuration file in the project root.
66
66
 
67
+ ### React
68
+ Just install `react`. More information on React integration can be found [here](./docs/react.md).
69
+
67
70
  ## `package.json` limitations
68
71
  To reduce potential errors and ensure smooth package generation, we follow a stricter configuration for `package.json`.
69
72
 
@@ -1,5 +1,4 @@
1
- import { type UserConfig } from "vite";
2
- import { Rollup } from "vite";
1
+ import { type UserConfig, Rollup } from "vite";
3
2
  type BuildViteOptions = {
4
3
  viteConfig: UserConfig;
5
4
  };
@@ -5,16 +5,31 @@ const errors = require("./errors.js");
5
5
  async function buildVite({
6
6
  viteConfig
7
7
  }) {
8
- const outputs = await vite.build(viteConfig);
9
- if (!Array.isArray(outputs)) {
8
+ try {
9
+ const outputs = await vite.build(viteConfig);
10
+ if (!Array.isArray(outputs)) {
11
+ return {
12
+ error: true,
13
+ errors: [errors.errors.rollupError]
14
+ };
15
+ }
10
16
  return {
11
- error: true,
12
- errors: [errors.errors.rollupError]
17
+ error: false,
18
+ output: outputs.flatMap(
19
+ (x) => x.output.filter((x2) => x2.type === "chunk")
20
+ )
13
21
  };
22
+ } catch (e) {
23
+ if (e instanceof Error) {
24
+ return {
25
+ error: true,
26
+ errors: [e.message]
27
+ };
28
+ }
14
29
  }
15
30
  return {
16
- error: false,
17
- output: outputs.flatMap((x) => x.output.filter((x2) => x2.type === "chunk"))
31
+ error: true,
32
+ errors: [errors.errors.rollupError]
18
33
  };
19
34
  }
20
35
  exports.buildVite = buildVite;
@@ -1 +1 @@
1
- {"version":3,"file":"buildVite.js","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig } from \"vite\";\nimport { errors } from \"./errors.js\";\nimport { Rollup } from \"vite\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) => x.output.filter((x) => x.type === \"chunk\")),\n };\n}\n"],"names":["build","errors","x"],"mappings":";;;;AAmBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACnC,QAAA,UAAU,MAAMA,WAAM,UAAU;AACtC,MAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,CAACC,OAAA,OAAO,WAAW;AAAA,IAAA;AAAA,EAE/B;AAEO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,QAAQ,QAAQ,CAAC,MAAM,EAAE,OAAO,OAAO,CAACC,OAAMA,GAAE,SAAS,OAAO,CAAC;AAAA,EAAA;AAE7E;;"}
1
+ {"version":3,"file":"buildVite.js","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig, Rollup } from \"vite\";\nimport { errors } from \"./errors.js\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n try {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) =>\n x.output.filter((x) => x.type === \"chunk\"),\n ),\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n error: true,\n errors: [e.message],\n };\n }\n }\n return {\n error: true,\n errors: [errors.rollupError],\n };\n}\n"],"names":["build","errors","x"],"mappings":";;;;AAkBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACrC,MAAA;AACI,UAAA,UAAU,MAAMA,WAAM,UAAU;AACtC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAACC,OAAA,OAAO,WAAW;AAAA,MAAA;AAAA,IAE/B;AAEO,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,QAAQ,CAAC,MACvB,EAAE,OAAO,OAAO,CAACC,OAAMA,GAAE,SAAS,OAAO;AAAA,MAC3C;AAAA,IAAA;AAAA,WAEK,GAAG;AACV,QAAI,aAAa,OAAO;AACf,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO;AAAA,MAAA;AAAA,IAEtB;AAAA,EACF;AACO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,CAACD,OAAA,OAAO,WAAW;AAAA,EAAA;AAE/B;;"}
@@ -4,7 +4,8 @@ const path = require("node:path");
4
4
  require("node:fs/promises");
5
5
  require("zod");
6
6
  const vite = require("vite");
7
- const index = require("./plugins/babel/index.js");
7
+ const index$1 = require("./plugins/babel/index.js");
8
+ const index = require("./plugins/react/index.js");
8
9
  function mapToObject(map) {
9
10
  const obj = {};
10
11
  for (const [key, value] of map) {
@@ -58,9 +59,10 @@ function createViteConfig({ dirs, packageJson }) {
58
59
  const mergedEntries = new Map([...entrypoints, ...bins]);
59
60
  const depsValidator = createExternalDepValidator(packageJson);
60
61
  const viteConfig = vite.defineConfig({
61
- plugins: [index.babelPlugin({ packageJson, dirs })],
62
+ plugins: [index.reactPlugin({ packageJson }), index$1.babelPlugin({ packageJson, dirs })],
62
63
  publicDir: false,
63
64
  root: sourceDir,
65
+ logLevel: "silent",
64
66
  build: {
65
67
  outDir,
66
68
  write: true,
@@ -1 +1 @@
1
- {"version":3,"file":"createViteConfig.js","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\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\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({ dirs, packageJson }: 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: [babelPlugin({ packageJson, dirs })],\n publicDir: false,\n root: sourceDir,\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":["join","defineConfig","babelPlugin","relative"],"mappings":"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"}
1
+ {"version":3,"file":"createViteConfig.js","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\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\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({ dirs, packageJson }: 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: [reactPlugin({ packageJson }), babelPlugin({ packageJson, dirs })],\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":["join","defineConfig","reactPlugin","babelPlugin","relative"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { type Args } from "./resolveDirs.js";
2
2
  export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig>;
3
- export declare function run(args: Args): Promise<{
4
- error: boolean;
5
- errors: string[];
3
+ type RunResult = {
4
+ error: false;
6
5
  } | {
7
- error: boolean;
8
- errors?: undefined;
9
- }>;
6
+ error: true;
7
+ errors: Array<string>;
8
+ };
9
+ export declare function run(args: Args): Promise<RunResult>;
10
+ export {};
@@ -36,7 +36,6 @@ async function run(args) {
36
36
  await fs.mkdir(outDir, { recursive: true });
37
37
  const packageJson$1 = await packageJson.parsePackageJson({ sourceDir, packagePath });
38
38
  if (Array.isArray(packageJson$1)) {
39
- console.log(packageJson$1);
40
39
  return { error: true, errors: packageJson$1 };
41
40
  }
42
41
  const { viteConfig, entrypoints, bins } = createViteConfig.createViteConfig({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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 { buildVite } from \"./buildVite.js\";\nimport { type Args, 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\";\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 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 { viteConfig } = createViteConfig({ dirs, packageJson });\n\n return viteConfig;\n}\n\nexport async function run(args: Args) {\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 console.log(packageJson);\n return { error: true, errors: packageJson };\n }\n\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n });\n\n const outputs = await buildVite({ viteConfig });\n if (outputs.error) {\n return { error: true, errors: outputs.errors };\n }\n const viteOutput = outputs.output;\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n const tasksRes = await Promise.allSettled([\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n sourceDir,\n outDir,\n entrypoints,\n buildOutput: viteOutput,\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 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 const errors = tasksRes\n .filter((res) => res.status === \"rejected\")\n .map((res) => res.reason)\n .filter((res): res is BuildError => res instanceof BuildError)\n .map((res) => res.error);\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 return { error: false };\n}\n"],"names":["resolveDirs","rm","mkdir","packageJson","parsePackageJson","createViteConfig","buildVite","copyStaticFilesTask","buildTypesTask","relative","jsFilesTask","binsTask","BuildError","writePackageJson"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","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 { buildVite } from \"./buildVite.js\";\nimport { type Args, 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\";\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 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 { viteConfig } = createViteConfig({ dirs, packageJson });\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 { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n });\n\n const outputs = await buildVite({ viteConfig });\n if (outputs.error) {\n return { error: true, errors: outputs.errors };\n }\n const viteOutput = outputs.output;\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n const tasksRes = await Promise.allSettled([\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n sourceDir,\n outDir,\n entrypoints,\n buildOutput: viteOutput,\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 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 const errors = tasksRes\n .filter((res) => res.status === \"rejected\")\n .map((res) => res.reason)\n .filter((res): res is BuildError => res instanceof BuildError)\n .map((res) => res.error);\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 return { error: false };\n}\n"],"names":["resolveDirs","rm","mkdir","packageJson","parsePackageJson","createViteConfig","buildVite","copyStaticFilesTask","buildTypesTask","relative","jsFilesTask","binsTask","BuildError","writePackageJson"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Plugin } from "vite";
2
+ import type { PackageJson } from "../../packageJson.js";
3
+ type ReactPluginArg = {
4
+ packageJson: PackageJson;
5
+ };
6
+ export declare function reactPlugin({ packageJson }: ReactPluginArg): Plugin;
7
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vite = require("vite");
4
+ const semver = require("semver");
5
+ const errorJsxMessage = "SmartBundle cannot find the react dependency inside dependencies, optionalDependencies or peerDependencies. Please, install it before bundling";
6
+ function reactPlugin({ packageJson }) {
7
+ var _a, _b, _c;
8
+ const pluginName = "smartbundle:react";
9
+ const reactVersion = ((_a = packageJson.dependencies) == null ? void 0 : _a.react) ?? ((_b = packageJson.devDependencies) == null ? void 0 : _b.react) ?? ((_c = packageJson.optionalDependencies) == null ? void 0 : _c.react);
10
+ if (!reactVersion) {
11
+ return {
12
+ name: pluginName,
13
+ transform(code, id) {
14
+ if (id.endsWith(".jsx") || id.endsWith(".tsx")) {
15
+ this.error(new Error(errorJsxMessage));
16
+ }
17
+ },
18
+ buildEnd(err) {
19
+ if (err) {
20
+ const isJsxError = err.message.includes("JSX");
21
+ if (isJsxError) {
22
+ this.error(new Error(errorJsxMessage));
23
+ }
24
+ }
25
+ }
26
+ };
27
+ }
28
+ const isLegacyTransform = semver.lt(
29
+ semver.minVersion(reactVersion),
30
+ "17.0.0"
31
+ );
32
+ return {
33
+ name: pluginName,
34
+ enforce: "pre",
35
+ async transform(code, id) {
36
+ const isJs = id.endsWith(".js");
37
+ const isJsx = id.endsWith(".jsx");
38
+ const isTsx = id.endsWith(".tsx");
39
+ if (!(isJs || isJsx || isTsx)) {
40
+ return null;
41
+ }
42
+ return await vite.transformWithEsbuild(
43
+ code,
44
+ id,
45
+ {
46
+ loader: isJs || isJsx ? "jsx" : "tsx",
47
+ jsx: isLegacyTransform ? "transform" : "automatic",
48
+ sourcemap: true
49
+ },
50
+ this.getCombinedSourcemap()
51
+ );
52
+ }
53
+ };
54
+ }
55
+ exports.reactPlugin = reactPlugin;
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/plugins/react/index.ts"],"sourcesContent":["import { type Plugin, transformWithEsbuild } from \"vite\";\nimport type { PackageJson } from \"../../packageJson.js\";\nimport semver from \"semver\";\n\ntype ReactPluginArg = {\n packageJson: PackageJson;\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({ packageJson }: ReactPluginArg): Plugin {\n const pluginName = \"smartbundle:react\";\n\n const reactVersion =\n packageJson.dependencies?.react ??\n packageJson.devDependencies?.react ??\n packageJson.optionalDependencies?.react;\n\n if (!reactVersion) {\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 const isLegacyTransform = semver.lt(\n semver.minVersion(reactVersion)!,\n \"17.0.0\",\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: isLegacyTransform ? \"transform\" : \"automatic\",\n sourcemap: true,\n },\n this.getCombinedSourcemap(),\n );\n },\n };\n}\n"],"names":["transformWithEsbuild"],"mappings":";;;;AAQA,MAAM,kBACJ;AAEc,SAAA,YAAY,EAAE,eAAuC;;AACnE,QAAM,aAAa;AAEb,QAAA,iBACJ,iBAAY,iBAAZ,mBAA0B,YAC1B,iBAAY,oBAAZ,mBAA6B,YAC7B,iBAAY,yBAAZ,mBAAkC;AAEpC,MAAI,CAAC,cAAc;AACV,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,QACvC;AAAA,MACF;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,UACvC;AAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,oBAAoB,OAAO;AAAA,IAC/B,OAAO,WAAW,YAAY;AAAA,IAC9B;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,MACT;AAEA,aAAO,MAAMA,KAAA;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,UACE,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,UAChC,KAAK,oBAAoB,cAAc;AAAA,UACvC,WAAW;AAAA,QACb;AAAA,QACA,KAAK,qBAAqB;AAAA,MAAA;AAAA,IAE9B;AAAA,EAAA;AAEJ;;"}
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  const args = require("./args.js");
3
3
  const _ = require("./index.js");
4
- _.run(args.args);
4
+ _.run(args.args).then((res) => {
5
+ if (res.error) {
6
+ for (const error of res.errors) {
7
+ console.error(error);
8
+ }
9
+ }
10
+ });
5
11
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sources":["../../../../src/run.ts"],"sourcesContent":["import { args } from \"./args.js\";\nimport { run } from \"./index.js\";\n\nrun(args);\n"],"names":["run","args"],"mappings":";;;AAGAA,EAAA,IAAIC,SAAI;"}
1
+ {"version":3,"file":"run.js","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":["run","args"],"mappings":";;;AAGAA,EAAA,IAAIC,SAAI,EAAE,KAAK,CAAC,QAAQ;AACtB,MAAI,IAAI,OAAO;AACF,eAAA,SAAS,IAAI,QAAQ;AAC9B,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,EACF;AACF,CAAC;"}
@@ -1,5 +1,4 @@
1
- import { type UserConfig } from "vite";
2
- import { Rollup } from "vite";
1
+ import { type UserConfig, Rollup } from "vite";
3
2
  type BuildViteOptions = {
4
3
  viteConfig: UserConfig;
5
4
  };
@@ -3,16 +3,31 @@ import { errors } from "./errors.mjs";
3
3
  async function buildVite({
4
4
  viteConfig
5
5
  }) {
6
- const outputs = await build(viteConfig);
7
- if (!Array.isArray(outputs)) {
6
+ try {
7
+ const outputs = await build(viteConfig);
8
+ if (!Array.isArray(outputs)) {
9
+ return {
10
+ error: true,
11
+ errors: [errors.rollupError]
12
+ };
13
+ }
8
14
  return {
9
- error: true,
10
- errors: [errors.rollupError]
15
+ error: false,
16
+ output: outputs.flatMap(
17
+ (x) => x.output.filter((x2) => x2.type === "chunk")
18
+ )
11
19
  };
20
+ } catch (e) {
21
+ if (e instanceof Error) {
22
+ return {
23
+ error: true,
24
+ errors: [e.message]
25
+ };
26
+ }
12
27
  }
13
28
  return {
14
- error: false,
15
- output: outputs.flatMap((x) => x.output.filter((x2) => x2.type === "chunk"))
29
+ error: true,
30
+ errors: [errors.rollupError]
16
31
  };
17
32
  }
18
33
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"buildVite.mjs","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig } from \"vite\";\nimport { errors } from \"./errors.js\";\nimport { Rollup } from \"vite\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) => x.output.filter((x) => x.type === \"chunk\")),\n };\n}\n"],"names":["x"],"mappings":";;AAmBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACnC,QAAA,UAAU,MAAM,MAAM,UAAU;AACtC,MAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,CAAC,OAAO,WAAW;AAAA,IAAA;AAAA,EAE/B;AAEO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,QAAQ,QAAQ,CAAC,MAAM,EAAE,OAAO,OAAO,CAACA,OAAMA,GAAE,SAAS,OAAO,CAAC;AAAA,EAAA;AAE7E;"}
1
+ {"version":3,"file":"buildVite.mjs","sources":["../../../../src/buildVite.ts"],"sourcesContent":["import { build, type UserConfig, Rollup } from \"vite\";\nimport { errors } from \"./errors.js\";\n\ntype BuildViteOptions = {\n viteConfig: UserConfig;\n};\n\ntype BuildSuccess = {\n error: false;\n output: Rollup.OutputChunk[];\n};\ntype BuildError = {\n error: true;\n errors: Array<string>;\n};\n\ntype BuildResult = BuildSuccess | BuildError;\n\nexport async function buildVite({\n viteConfig,\n}: BuildViteOptions): Promise<BuildResult> {\n try {\n const outputs = await build(viteConfig);\n if (!Array.isArray(outputs)) {\n return {\n error: true,\n errors: [errors.rollupError],\n };\n }\n\n return {\n error: false,\n output: outputs.flatMap((x) =>\n x.output.filter((x) => x.type === \"chunk\"),\n ),\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n error: true,\n errors: [e.message],\n };\n }\n }\n return {\n error: true,\n errors: [errors.rollupError],\n };\n}\n"],"names":["x"],"mappings":";;AAkBA,eAAsB,UAAU;AAAA,EAC9B;AACF,GAA2C;AACrC,MAAA;AACI,UAAA,UAAU,MAAM,MAAM,UAAU;AACtC,QAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AACpB,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,OAAO,WAAW;AAAA,MAAA;AAAA,IAE/B;AAEO,WAAA;AAAA,MACL,OAAO;AAAA,MACP,QAAQ,QAAQ;AAAA,QAAQ,CAAC,MACvB,EAAE,OAAO,OAAO,CAACA,OAAMA,GAAE,SAAS,OAAO;AAAA,MAC3C;AAAA,IAAA;AAAA,WAEK,GAAG;AACV,QAAI,aAAa,OAAO;AACf,aAAA;AAAA,QACL,OAAO;AAAA,QACP,QAAQ,CAAC,EAAE,OAAO;AAAA,MAAA;AAAA,IAEtB;AAAA,EACF;AACO,SAAA;AAAA,IACL,OAAO;AAAA,IACP,QAAQ,CAAC,OAAO,WAAW;AAAA,EAAA;AAE/B;"}
@@ -3,6 +3,7 @@ import "node:fs/promises";
3
3
  import "zod";
4
4
  import { defineConfig } from "vite";
5
5
  import { babelPlugin } from "./plugins/babel/index.mjs";
6
+ import { reactPlugin } from "./plugins/react/index.mjs";
6
7
  function mapToObject(map) {
7
8
  const obj = {};
8
9
  for (const [key, value] of map) {
@@ -56,9 +57,10 @@ function createViteConfig({ dirs, packageJson }) {
56
57
  const mergedEntries = new Map([...entrypoints, ...bins]);
57
58
  const depsValidator = createExternalDepValidator(packageJson);
58
59
  const viteConfig = defineConfig({
59
- plugins: [babelPlugin({ packageJson, dirs })],
60
+ plugins: [reactPlugin({ packageJson }), babelPlugin({ packageJson, dirs })],
60
61
  publicDir: false,
61
62
  root: sourceDir,
63
+ logLevel: "silent",
62
64
  build: {
63
65
  outDir,
64
66
  write: true,
@@ -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\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\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({ dirs, packageJson }: 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: [babelPlugin({ packageJson, dirs })],\n publicDir: false,\n root: sourceDir,\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":";;;;;AAWA,SAAS,YAAY,KAA0B;AAC7C,QAAM,MAA8B,CAAA;AACpC,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,QAAI,GAAG,IAAI;AAAA,EACb;AACO,SAAA;AACT;AAEA,SAAS,2BAA2B,aAA0B;AACtD,QAAA,0CAA0B;AAChC,aAAW,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GACU;AACC,eAAA,OAAO,OAAO,KAAK,YAAY,GAAG,KAAK,CAAA,CAAE,GAAG;AACrD,0BAAoB,IAAI,GAAG;AAAA,IAC7B;AAAA,EACF;AACoB,sBAAA,IAAI,YAAY,IAAI;AAExC,SAAO,CAAC,OAAe;AACjB,QAAA,GAAG,WAAW,OAAO,GAAG;AACnB,aAAA;AAAA,IACT;AACM,UAAA,WAAW,GAAG,MAAM,GAAG;AAC7B,QAAI,UAAU;AACd,eAAW,WAAW,UAAU;AACnB,iBAAA;AAEP,UAAA,oBAAoB,IAAI,OAAO,GAAG;AAC7B,eAAA;AAAA,MACT;AACW,iBAAA;AAAA,IACb;AACO,WAAA;AAAA,EAAA;AAEX;AAEO,SAAS,iBAAiB,EAAE,MAAM,eAAsC;AACvE,QAAA,EAAE,WAAW,OAAW,IAAA;AAExB,QAAA,kCAAkB;AACxB,MAAI,YAAY,SAAS;AACvB,eAAW,CAAC,KAAK,KAAK,KAAK,YAAY,SAAS;AACxC,YAAA,QAAQ,KAAK,WAAW,KAAK;AACvB,kBAAA,IAAI,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEM,QAAA,2BAAW;AACjB,MAAI,YAAY,KAAK;AACnB,eAAW,CAAC,KAAK,KAAK,KAAK,YAAY,KAAK;AAC1C,WAAK,IAAI,KAAK,KAAK,WAAW,KAAK,CAAC;AAAA,IACtC;AAAA,EACF;AAEM,QAAA,gBAAgB,IAAI,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;AAEjD,QAAA,gBAAgB,2BAA2B,WAAW;AAE5D,QAAM,aAAa,aAAa;AAAA,IAC9B,SAAS,CAAC,YAAY,EAAE,aAAa,KAAM,CAAA,CAAC;AAAA,IAC5C,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,eAAe;AAAA,QACb,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,QACH,OAAO,YAAY,aAAa;AAAA,QAChC,SAAS,CAAC,MAAM,KAAK;AAAA,QACrB,UAAU,CAAC,QAAQ,cAAc;AACzB,gBAAA,aAAa,cAAc,IAAI,SAAS;AAC9C,cAAI,CAAC,YAAY;AACf,kBAAM,QAAQ,UAAU,QAAQ,YAAY,EAAE;AAC9C,gBAAI,WAAW,MAAM;AACnB,qBAAO,KAAK,gBAAgB,OAAO,GAAG,KAAK,MAAM;AAAA,YAAA,OAC5C;AACL,qBAAO,KAAK,gBAAgB,OAAO,GAAG,KAAK,KAAK;AAAA,YAClD;AAAA,UACF;AAEA,cAAI,WAAW,MAAM;AACZ,mBAAA;AAAA,cACL;AAAA,cACA;AAAA,cACA,SAAS,WAAW,UAAU,EAAE,QAAQ,YAAY,EAAE,IAAI;AAAA,YAAA;AAAA,UAC5D,OACK;AACE,mBAAA;AAAA,cACL;AAAA,cACA;AAAA,cACA,SAAS,WAAW,UAAU,EAAE,QAAQ,YAAY,EAAE,IAAI;AAAA,YAAA;AAAA,UAE9D;AAAA,QACF;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,UAAU;AAAA,QACV,QAAQ;AAAA,UACN,qBAAqB;AAAA,UACrB,SAAS;AAAA,UACT,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA,EAAE,YAAY,aAAa;AACpC;"}
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\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\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({ dirs, packageJson }: 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: [reactPlugin({ packageJson }), babelPlugin({ packageJson, dirs })],\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,9 +1,10 @@
1
1
  import { type Args } from "./resolveDirs.js";
2
2
  export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig>;
3
- export declare function run(args: Args): Promise<{
4
- error: boolean;
5
- errors: string[];
3
+ type RunResult = {
4
+ error: false;
6
5
  } | {
7
- error: boolean;
8
- errors?: undefined;
9
- }>;
6
+ error: true;
7
+ errors: Array<string>;
8
+ };
9
+ export declare function run(args: Args): Promise<RunResult>;
10
+ export {};
@@ -34,7 +34,6 @@ async function run(args) {
34
34
  await mkdir(outDir, { recursive: true });
35
35
  const packageJson = await parsePackageJson({ sourceDir, packagePath });
36
36
  if (Array.isArray(packageJson)) {
37
- console.log(packageJson);
38
37
  return { error: true, errors: packageJson };
39
38
  }
40
39
  const { viteConfig, entrypoints, bins } = createViteConfig({
@@ -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 { buildVite } from \"./buildVite.js\";\nimport { type Args, 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\";\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 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 { viteConfig } = createViteConfig({ dirs, packageJson });\n\n return viteConfig;\n}\n\nexport async function run(args: Args) {\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 console.log(packageJson);\n return { error: true, errors: packageJson };\n }\n\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n });\n\n const outputs = await buildVite({ viteConfig });\n if (outputs.error) {\n return { error: true, errors: outputs.errors };\n }\n const viteOutput = outputs.output;\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n const tasksRes = await Promise.allSettled([\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n sourceDir,\n outDir,\n entrypoints,\n buildOutput: viteOutput,\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 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 const errors = tasksRes\n .filter((res) => res.status === \"rejected\")\n .map((res) => res.reason)\n .filter((res): res is BuildError => res instanceof BuildError)\n .map((res) => res.error);\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 return { error: false };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAaA,SAAS,WACP,YACA,YACA,OACA;AACA,QAAM,QAAQ,WAAW,IAAI,UAAU,KAAM,CAAA;AAC7C,aAAW,IAAI,YAAY,MAAM,KAAK,CAAC;AACzC;AAEsB,eAAA,iBAAiB,OAAa,IAAI;AAChD,QAAA,OAAO,YAAY,IAAI;AAC7B,QAAM,EAAE,WAAW,QAAQ,YAAA,IAAgB;AAE3C,QAAM,GAAG,QAAQ,EAAE,WAAW,MAAM,OAAO,MAAM;AACjD,QAAM,MAAM,QAAQ,EAAE,WAAW,KAAM,CAAA;AACvC,QAAM,cAAc,MAAM,iBAAiB,EAAE,WAAW,YAAa,CAAA;AAEjE,MAAA,MAAM,QAAQ,WAAW,GAAG;AAC9B,YAAQ,MAAM,WAAW;AACnB,UAAA,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAEA,QAAM,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,aAAa;AAEtD,SAAA;AACT;AAEA,eAAsB,IAAI,MAAY;AAC9B,QAAA,OAAO,YAAY,IAAI;AAC7B,QAAM,EAAE,WAAW,QAAQ,aAAa,eAAe;AAEvD,QAAM,GAAG,QAAQ,EAAE,WAAW,MAAM,OAAO,MAAM;AACjD,QAAM,MAAM,QAAQ,EAAE,WAAW,KAAM,CAAA;AACvC,QAAM,cAAc,MAAM,iBAAiB,EAAE,WAAW,YAAa,CAAA;AAEjE,MAAA,MAAM,QAAQ,WAAW,GAAG;AAC9B,YAAQ,IAAI,WAAW;AACvB,WAAO,EAAE,OAAO,MAAM,QAAQ,YAAY;AAAA,EAC5C;AAEA,QAAM,EAAE,YAAY,aAAa,KAAA,IAAS,iBAAiB;AAAA,IACzD;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,UAAU,MAAM,UAAU,EAAE,WAAY,CAAA;AAC9C,MAAI,QAAQ,OAAO;AACjB,WAAO,EAAE,OAAO,MAAM,QAAQ,QAAQ,OAAO;AAAA,EAC/C;AACA,QAAM,aAAa,QAAQ;AAErB,QAAA,iCAAiB;AACjB,QAAA,8BAAc;AACd,QAAA,WAAW,MAAM,QAAQ,WAAW;AAAA,IACxC,oBAAoB,WAAW,MAAM;AAAA,IACrC,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,IAAA,CACd,EAAE,KAAK,CAAC,QAAQ;AACf,iBAAW,CAAC,OAAO,MAAM,KAAK,KAAK;AACtB,mBAAA,YAAY,QAAQ,CAAC,UAAU;AACpC,cAAA,MAAM,SAAS,OAAO,GAAG;AAC3B,kBAAM,OAAO,OAAO,SAAS,QAAQ,KAAK;AAAA,UAC5C;AACI,cAAA,MAAM,SAAS,QAAQ,GAAG;AAC5B,kBAAM,OAAO,OAAO,SAAS,QAAQ,KAAK;AAAA,UAC5C;AACO,iBAAA;AAAA,QAAA,CACR;AAAA,MACH;AAAA,IAAA,CACD;AAAA,IACD,YAAY,EAAE,aAAa,YAAY,aAAa,OAAQ,CAAA,EAAE;AAAA,MAC5D,CAAC,QAAQ;AACP,mBAAW,CAAC,UAAU,IAAI,KAAK,KAAK;AACvB,qBAAA,YAAY,MAAM,CAAC,UAAU;AACtC,kBAAM,SAAS,SAAS,SAAS,KAAK,IAAI,QAAQ;AAClD,gBAAI,WAAW,MAAM;AACnB,oBAAM,MAAM,OAAO;AAAA,YAAA,WACV,WAAW,OAAO;AAC3B,oBAAM,MAAM,OAAO;AAAA,YACrB;AACO,mBAAA;AAAA,UAAA,CACR;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,EAAE,YAAY,MAAM,aAAa,YAAY,OAAQ,CAAA,EAAE;AAAA,MAC9D,CAAC,QAAQ;AACP,mBAAW,CAAC,OAAO,GAAG,KAAK,KAAK;AACtB,kBAAA,IAAI,KAAK,KAAK;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,SAAS,SACZ,OAAO,CAAC,QAAQ,IAAI,WAAW,UAAU,EACzC,IAAI,CAAC,QAAQ,IAAI,MAAM,EACvB,OAAO,CAAC,QAA2B,eAAe,UAAU,EAC5D,IAAI,CAAC,QAAQ,IAAI,KAAK;AAErB,MAAA,OAAO,SAAS,GAAG;AACd,WAAA,EAAE,OAAO,MAAM;EACxB;AAEM,QAAA,iBAAiB,QAAQ,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,EAAA,CACD;AAEM,SAAA,EAAE,OAAO;AAClB;"}
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 { buildVite } from \"./buildVite.js\";\nimport { type Args, 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\";\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 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 { viteConfig } = createViteConfig({ dirs, packageJson });\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 { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n });\n\n const outputs = await buildVite({ viteConfig });\n if (outputs.error) {\n return { error: true, errors: outputs.errors };\n }\n const viteOutput = outputs.output;\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n const tasksRes = await Promise.allSettled([\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n sourceDir,\n outDir,\n entrypoints,\n buildOutput: viteOutput,\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 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 const errors = tasksRes\n .filter((res) => res.status === \"rejected\")\n .map((res) => res.reason)\n .filter((res): res is BuildError => res instanceof BuildError)\n .map((res) => res.error);\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 return { error: false };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Plugin } from "vite";
2
+ import type { PackageJson } from "../../packageJson.js";
3
+ type ReactPluginArg = {
4
+ packageJson: PackageJson;
5
+ };
6
+ export declare function reactPlugin({ packageJson }: ReactPluginArg): Plugin;
7
+ export {};
@@ -0,0 +1,56 @@
1
+ import { transformWithEsbuild } from "vite";
2
+ import semver from "semver";
3
+ const errorJsxMessage = "SmartBundle cannot find the react dependency inside dependencies, optionalDependencies or peerDependencies. Please, install it before bundling";
4
+ function reactPlugin({ packageJson }) {
5
+ var _a, _b, _c;
6
+ const pluginName = "smartbundle:react";
7
+ const reactVersion = ((_a = packageJson.dependencies) == null ? void 0 : _a.react) ?? ((_b = packageJson.devDependencies) == null ? void 0 : _b.react) ?? ((_c = packageJson.optionalDependencies) == null ? void 0 : _c.react);
8
+ if (!reactVersion) {
9
+ return {
10
+ name: pluginName,
11
+ transform(code, id) {
12
+ if (id.endsWith(".jsx") || id.endsWith(".tsx")) {
13
+ this.error(new Error(errorJsxMessage));
14
+ }
15
+ },
16
+ buildEnd(err) {
17
+ if (err) {
18
+ const isJsxError = err.message.includes("JSX");
19
+ if (isJsxError) {
20
+ this.error(new Error(errorJsxMessage));
21
+ }
22
+ }
23
+ }
24
+ };
25
+ }
26
+ const isLegacyTransform = semver.lt(
27
+ semver.minVersion(reactVersion),
28
+ "17.0.0"
29
+ );
30
+ return {
31
+ name: pluginName,
32
+ enforce: "pre",
33
+ async transform(code, id) {
34
+ const isJs = id.endsWith(".js");
35
+ const isJsx = id.endsWith(".jsx");
36
+ const isTsx = id.endsWith(".tsx");
37
+ if (!(isJs || isJsx || isTsx)) {
38
+ return null;
39
+ }
40
+ return await transformWithEsbuild(
41
+ code,
42
+ id,
43
+ {
44
+ loader: isJs || isJsx ? "jsx" : "tsx",
45
+ jsx: isLegacyTransform ? "transform" : "automatic",
46
+ sourcemap: true
47
+ },
48
+ this.getCombinedSourcemap()
49
+ );
50
+ }
51
+ };
52
+ }
53
+ export {
54
+ reactPlugin
55
+ };
56
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../src/plugins/react/index.ts"],"sourcesContent":["import { type Plugin, transformWithEsbuild } from \"vite\";\nimport type { PackageJson } from \"../../packageJson.js\";\nimport semver from \"semver\";\n\ntype ReactPluginArg = {\n packageJson: PackageJson;\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({ packageJson }: ReactPluginArg): Plugin {\n const pluginName = \"smartbundle:react\";\n\n const reactVersion =\n packageJson.dependencies?.react ??\n packageJson.devDependencies?.react ??\n packageJson.optionalDependencies?.react;\n\n if (!reactVersion) {\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 const isLegacyTransform = semver.lt(\n semver.minVersion(reactVersion)!,\n \"17.0.0\",\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: isLegacyTransform ? \"transform\" : \"automatic\",\n sourcemap: true,\n },\n this.getCombinedSourcemap(),\n );\n },\n };\n}\n"],"names":[],"mappings":";;AAQA,MAAM,kBACJ;AAEc,SAAA,YAAY,EAAE,eAAuC;;AACnE,QAAM,aAAa;AAEb,QAAA,iBACJ,iBAAY,iBAAZ,mBAA0B,YAC1B,iBAAY,oBAAZ,mBAA6B,YAC7B,iBAAY,yBAAZ,mBAAkC;AAEpC,MAAI,CAAC,cAAc;AACV,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,QACvC;AAAA,MACF;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,UACvC;AAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,oBAAoB,OAAO;AAAA,IAC/B,OAAO,WAAW,YAAY;AAAA,IAC9B;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,MACT;AAEA,aAAO,MAAM;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,UACE,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,UAChC,KAAK,oBAAoB,cAAc;AAAA,UACvC,WAAW;AAAA,QACb;AAAA,QACA,KAAK,qBAAqB;AAAA,MAAA;AAAA,IAE9B;AAAA,EAAA;AAEJ;"}
@@ -1,4 +1,10 @@
1
1
  import { args } from "./args.mjs";
2
2
  import { run } from "./index.mjs";
3
- run(args);
3
+ run(args).then((res) => {
4
+ if (res.error) {
5
+ for (const error of res.errors) {
6
+ console.error(error);
7
+ }
8
+ }
9
+ });
4
10
  //# sourceMappingURL=run.mjs.map
@@ -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);\n"],"names":[],"mappings":";;AAGA,IAAI,IAAI;"}
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;AAC9B,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,EACF;AACF,CAAC;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "smartbundle",
3
3
  "type": "commonjs",
4
- "version": "0.11.0-alpha.0",
4
+ "version": "0.11.0-alpha.1",
5
5
  "bin": {
6
6
  "smartbundle": "__bin__/smartbundle.js"
7
7
  },
@@ -25,13 +25,14 @@
25
25
  "./package.json": "./package.json"
26
26
  },
27
27
  "dependencies": {
28
- "vite": "^5.4.9",
28
+ "semver": "^7.6.3",
29
+ "vite": "^5.4.11",
29
30
  "yargs": "^17.7.2",
30
31
  "zod": "^3.23.8"
31
32
  },
32
33
  "optionalDependencies": {
33
- "typescript": "^5.0.0",
34
- "@babel/core": "^7.0.0"
34
+ "@babel/core": "^7.26.0",
35
+ "typescript": "^5.6.3"
35
36
  },
36
37
  "repository": {
37
38
  "type": "git",
@@ -57,12 +58,13 @@
57
58
  "homepage": "https://github.com/xavescor/smartbundle",
58
59
  "devDependencies": {
59
60
  "@types/babel__core": "^7.20.5",
60
- "@types/node": "^20.14.11",
61
+ "@types/node": "^20.17.6",
62
+ "@types/semver": "^7.5.8",
61
63
  "@types/yargs": "^17.0.33",
62
64
  "prettier": "^3.3.3",
63
65
  "typescript": "^5.6.3",
64
- "vitest": "^2.1.3",
66
+ "vitest": "^2.1.5",
65
67
  "vitest-directory-snapshot": "^0.2.2",
66
- "zx": "^8.1.9"
68
+ "zx": "^8.2.2"
67
69
  }
68
70
  }