smartbundle 0.9.0 → 0.10.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 +22 -18
- package/__compiled__/cjs/src/args.js +1 -0
- package/__compiled__/cjs/src/args.js.map +1 -0
- package/__compiled__/cjs/src/buildVite.js +1 -0
- package/__compiled__/cjs/src/buildVite.js.map +1 -0
- package/__compiled__/cjs/src/createViteConfig.js +2 -0
- package/__compiled__/cjs/src/createViteConfig.js.map +1 -0
- package/__compiled__/cjs/src/error.js +1 -0
- package/__compiled__/cjs/src/error.js.map +1 -0
- package/__compiled__/cjs/src/errors.js +1 -0
- package/__compiled__/cjs/src/errors.js.map +1 -0
- package/__compiled__/cjs/src/index.js +1 -0
- package/__compiled__/cjs/src/index.js.map +1 -0
- package/__compiled__/cjs/src/packageJson.js +1 -0
- package/__compiled__/cjs/src/packageJson.js.map +1 -0
- package/__compiled__/cjs/src/resolveDirs.js +1 -0
- package/__compiled__/cjs/src/resolveDirs.js.map +1 -0
- package/__compiled__/cjs/src/run.js +1 -0
- package/__compiled__/cjs/src/run.js.map +1 -0
- package/__compiled__/cjs/src/tasks/binsTask.js +1 -0
- package/__compiled__/cjs/src/tasks/binsTask.js.map +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js.map +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -0
- package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js +1 -0
- package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js.map +1 -0
- package/__compiled__/cjs/src/tasks/jsFilesTask.js +4 -0
- package/__compiled__/cjs/src/tasks/jsFilesTask.js.map +1 -0
- package/__compiled__/cjs/src/tasks/utils.js +1 -0
- package/__compiled__/cjs/src/tasks/utils.js.map +1 -0
- package/__compiled__/cjs/src/writePackageJson.js +1 -0
- package/__compiled__/cjs/src/writePackageJson.js.map +1 -0
- package/__compiled__/esm/src/args.mjs +1 -0
- package/__compiled__/esm/src/args.mjs.map +1 -0
- package/__compiled__/esm/src/buildVite.mjs +1 -0
- package/__compiled__/esm/src/buildVite.mjs.map +1 -0
- package/__compiled__/esm/src/createViteConfig.mjs +2 -0
- package/__compiled__/esm/src/createViteConfig.mjs.map +1 -0
- package/__compiled__/esm/src/error.mjs +1 -0
- package/__compiled__/esm/src/error.mjs.map +1 -0
- package/__compiled__/esm/src/errors.mjs +1 -0
- package/__compiled__/esm/src/errors.mjs.map +1 -0
- package/__compiled__/esm/src/index.mjs +1 -0
- package/__compiled__/esm/src/index.mjs.map +1 -0
- package/__compiled__/esm/src/packageJson.mjs +1 -0
- package/__compiled__/esm/src/packageJson.mjs.map +1 -0
- package/__compiled__/esm/src/resolveDirs.mjs +1 -0
- package/__compiled__/esm/src/resolveDirs.mjs.map +1 -0
- package/__compiled__/esm/src/run.mjs +1 -0
- package/__compiled__/esm/src/run.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/binsTask.mjs +1 -0
- package/__compiled__/esm/src/tasks/binsTask.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs +1 -0
- package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/jsFilesTask.mjs +4 -0
- package/__compiled__/esm/src/tasks/jsFilesTask.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/utils.mjs +1 -0
- package/__compiled__/esm/src/tasks/utils.mjs.map +1 -0
- package/__compiled__/esm/src/writePackageJson.mjs +1 -0
- package/__compiled__/esm/src/writePackageJson.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -32,24 +32,28 @@ The built files will appear in the `./dist` folder, including an auto-generated
|
|
32
32
|
3) Navigate to the `./dist` folder and publish your package to the npm registry.
|
33
33
|
|
34
34
|
## Supported targets
|
35
|
-
| Target
|
36
|
-
|
37
|
-
| Bun ^1.0.0
|
38
|
-
| Node ^18.0.0
|
39
|
-
| Node ^20.0.0
|
40
|
-
| Node ^22.0.0
|
41
|
-
| Node ^23.0.0
|
42
|
-
| Webpack ^4.47.0
|
43
|
-
| Webpack ^5.95.0
|
44
|
-
| Rspack ^1.0.0
|
45
|
-
| Vite ^5.0.0
|
46
|
-
| Rollup ^4.0.0
|
47
|
-
| Deno ^2.0.0
|
48
|
-
| Parcel ^2.0.0
|
49
|
-
| Browserify ^17.0.0
|
50
|
-
| Esbuild ^0.24.0
|
51
|
-
| Metro ^0.81.0
|
52
|
-
| Next.js/Turbopack ^13.0.0
|
35
|
+
| Target | Supported | Covered by e2e tests |
|
36
|
+
|--------------------------------|-----------|----------------------|
|
37
|
+
| Bun ^1.0.0 | ✔ | ✔ |
|
38
|
+
| Node ^18.0.0 | ✔ | ✔ |
|
39
|
+
| Node ^20.0.0 | ✔ | ✔ |
|
40
|
+
| Node ^22.0.0 | ✔ | ✔ |
|
41
|
+
| Node ^23.0.0 | ✔ | ✔ |
|
42
|
+
| Webpack ^4.47.0 | ✔ | ✔ |
|
43
|
+
| Webpack ^5.95.0 | ✔ | ✔ |
|
44
|
+
| Rspack ^1.0.0 | ✔ | ✔ |
|
45
|
+
| Vite ^5.0.0 | ✔ | not yet |
|
46
|
+
| Rollup ^4.0.0 | ✔ | not yet |
|
47
|
+
| Deno ^2.0.0 | ✔ | not yet |
|
48
|
+
| Parcel ^2.0.0 | ✔ | not yet |
|
49
|
+
| Browserify ^17.0.0 | ✔ | not yet |
|
50
|
+
| Esbuild ^0.24.0 | ✔ | not yet |
|
51
|
+
| Metro ^0.81.0 | ✔ | ✔ |
|
52
|
+
| Next.js/Turbopack ^13.0.0 | ✔ | not yet |
|
53
|
+
| TS/ModuleResolution: bundler | ✔ | ✔ |
|
54
|
+
| TS/ModuleResolution: node10 | ✔ | ✔ |
|
55
|
+
| TS/ModuleResolution: node16es | ✔ | ✔ |
|
56
|
+
| TS/ModuleResolution: node16cjs | ✔ | ✔ |
|
53
57
|
|
54
58
|
We aim to support as many bundlers and runtimes as possible. If the bundled package doesn't work with your bundler, please let us know.
|
55
59
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"args.js","sources":["../../../../src/args.ts"],"sourcesContent":["import yargs from \"yargs\";\nimport * as process from \"node:process\";\n\nexport const args = yargs(process.argv.slice(2))\n .option(\"sourceDir\", {\n alias: \"s\",\n type: \"string\",\n describe:\n \"path to the project directory. Default: current working directory\",\n })\n .option(\"packagePath\", {\n alias: \"p\",\n type: \"string\",\n describe: \"path to the package.json. Default: cwd()/package.json\",\n })\n .option(\"outputDir\", {\n alias: \"o\",\n type: \"string\",\n describe: \"path to the output directory. Default: cwd()/dist\",\n })\n .help(\"help\")\n .parseSync();\n\nexport type Args = typeof args;\n"],"names":["process"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGa,MAAA,OAAO,MAAMA,mBAAQ,KAAK,MAAM,CAAC,CAAC,EAC5C,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UACE;AACJ,CAAC,EACA,OAAO,eAAe;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,KAAK,MAAM,EACX,UAAU;;"}
|
@@ -0,0 +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;;"}
|
@@ -64,6 +64,7 @@ function createViteConfig({ dirs, packageJson }) {
|
|
64
64
|
write: true,
|
65
65
|
minify: false,
|
66
66
|
emptyOutDir: false,
|
67
|
+
sourcemap: true,
|
67
68
|
assetsInlineLimit: 0,
|
68
69
|
terserOptions: {
|
69
70
|
compress: false,
|
@@ -110,3 +111,4 @@ function createViteConfig({ dirs, packageJson }) {
|
|
110
111
|
return { viteConfig, entrypoints, bins };
|
111
112
|
}
|
112
113
|
exports.createViteConfig = createViteConfig;
|
114
|
+
//# sourceMappingURL=createViteConfig.js.map
|
@@ -0,0 +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\";\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 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","relative"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"error.js","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,EAEnB;AACF;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../../../src/errors.ts"],"sourcesContent":["export const errors = {\n exportsRequired:\n \"The `exports` field is string or Record<string, string>. Please, verify the value. More info: https://nodejs.org/api/packages.html#package-entry-points\",\n exportsInvalid:\n \"The `exports` field must be a path to entrypoint. Please, verify the value. More info: https://nodejs.org/api/packages.html#package-entry-points\",\n nameRequired:\n \"The `name` field is required string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name\",\n nameMinLength:\n 'Min length of \"name\" is 1 character. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name',\n nameMaxLength:\n 'Max length of \"name\" is 214 characters. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name',\n nameStartsIllegalChars:\n \"Name cannot start with `_` or `.` if it is not a scoped package. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name\",\n versionRequired:\n \"The `version` field is required string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#version\",\n privateIsTrue:\n \"The `private` field must be `true` for avoiding accidental publish. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#private\",\n descriptionString:\n \"The `description` field must be a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#description\",\n dependenciesInvalid:\n \"The `dependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies\",\n binFiled:\n \"The `bin` field must be a path or Record<string, FilePath>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#bin\",\n rollupError:\n \"An error occurred while building the package. Please, report it to the issues on GitHub\",\n typescriptNotFound:\n \"The package.json contains typescript entrypoints, but the typescript package is not found. Please, install typescript@^5.0.0\",\n optionalDependenciesInvalid:\n \"The `optionalDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies\",\n repositoryInvalid:\n \"The `repository` field must be an object with 'type' and 'url' properties or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#repository\",\n keywordsInvalid:\n \"The `keywords` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#keywords\",\n authorInvalid:\n \"The `author` field must be an object or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#people-fields-author-contributors\",\n contributorsInvalid:\n \"The `contributors` field must be an array of objects or strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#people-fields-author-contributors\",\n licenseInvalid:\n \"The `license` field must be a string specifying the license. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#license\",\n devDependenciesInvalid:\n \"The `devDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#devdependencies\",\n peerDependenciesInvalid:\n \"The `peerDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#peerdependencies\",\n enginesInvalid:\n \"The `engines` field must be an object specifying version requirements. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#engines\",\n browserInvalid:\n \"The `browser` field must be a string or an object. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#browser\",\n fundingInvalid:\n \"The `funding` field must be an object or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#funding\",\n osInvalid:\n \"The `os` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#os\",\n cpuInvalid:\n \"The `cpu` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#cpu\",\n};\n"],"names":[],"mappings":";;AAAO,MAAM,SAAS;AAAA,EACpB,iBACE;AAAA,EACF,gBACE;AAAA,EACF,cACE;AAAA,EACF,eACE;AAAA,EACF,eACE;AAAA,EACF,wBACE;AAAA,EACF,iBACE;AAAA,EACF,eACE;AAAA,EACF,mBACE;AAAA,EACF,qBACE;AAAA,EACF,UACE;AAAA,EACF,aACE;AAAA,EACF,oBACE;AAAA,EACF,6BACE;AAAA,EACF,mBACE;AAAA,EACF,iBACE;AAAA,EACF,eACE;AAAA,EACF,qBACE;AAAA,EACF,gBACE;AAAA,EACF,wBACE;AAAA,EACF,yBACE;AAAA,EACF,gBACE;AAAA,EACF,gBACE;AAAA,EACF,gBACE;AAAA,EACF,WACE;AAAA,EACF,YACE;AACJ;;"}
|
@@ -0,0 +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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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"packageJson.js","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 });\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":["fs","path","join","errors"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"resolveDirs.js","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\n\nexport type Args = {\n sourceDir?: string;\n packagePath?: string;\n outputDir?: string;\n};\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":["isAbsolute","join"],"mappings":";;;AAQA,SAAS,UAAU,OAAe,OAAe;AAC3C,MAAAA,KAAAA,WAAW,KAAK,GAAG;AACd,WAAA;AAAA,EACT;AAEO,SAAAC,KAAA,KAAK,OAAO,KAAK;AAC1B;AAEO,SAAS,YAAY,MAAY;AACtC,QAAM,YAAY,UAAU,QAAQ,IAAO,GAAA,KAAK,aAAa,GAAG;AAChE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,KAAK,eAAe;AAAA,EAAA;AAEtB,QAAM,SAAS,UAAU,QAAQ,IAAO,GAAA,KAAK,aAAa,QAAQ;AAC5D,QAAA,aAAa,UAAU,QAAQ,SAAS;AAE9C,SAAO,EAAE,WAAW,aAAa,QAAQ,WAAW;AACtD;;"}
|
@@ -0,0 +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;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"binsTask.js","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\";\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 return res;\n}\n"],"names":["mkdir","reverseMap","relative","join","writeFile"],"mappings":";;;;;;AAYA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,EACjC;AACA,QAAMA,GAAM,MAAA,YAAY,EAAE,WAAW,KAAM,CAAA;AACrC,QAAA,sBAAsBC,iBAAW,IAAI;AACrC,QAAA,0BAAU;AAChB,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IACF;AACA,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IACF;AACA,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,eAAW,WAAW,WAAW;AAC/B,YAAM,YAAYC,KAAS,SAAA,YAAYC,KAAAA,KAAK,QAAQ,GAAG,QAAQ,CAAC;AAChE,YAAM,WAAWA,KAAAA,KAAK,YAAY,GAAG,OAAO,KAAK;AAC3C,YAAAC,GAAA;AAAA,QACJ;AAAA,QACA;AAAA,UACE,SAAS;AAAA;AAAA,MAAA;AAGb,UAAI,IAAIF,KAAA,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAC7C;AAAA,EACF;AAEO,SAAA;AACT;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { errors } from \"../../errors.js\";\nimport { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\n\ntype BuildTypesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n};\n\nexport async function buildTypesTask({\n buildOutput,\n entrypoints,\n sourceDir,\n outDir,\n}: BuildTypesTaskOption) {\n const reversedEntrypoints = reverseMap(entrypoints);\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n if (tsEntrypoints.length === 0) {\n return new Map<string, string>();\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n ts = (await import(\"typescript\")).default;\n } catch (e) {\n throw errors.typescriptNotFound;\n }\n\n const files = buildOutput.map((el) => el.facadeModuleId ?? \"\");\n const dtsMap = await callTypescript({ ts, sourceDir, files, outDir });\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 return result;\n}\n"],"names":["reverseMap","errors","callTypescript"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACjB,QAAA,sBAAsBA,iBAAW,WAAW;AAClD,QAAM,gBAAgB,CAAC,GAAG,YAAY,OAAA,CAAQ,EAAE;AAAA,IAAO,CAAC,UACtD,MAAM,SAAS,KAAK;AAAA,EAAA;AAElB,MAAA,cAAc,WAAW,GAAG;AAC9B,+BAAW,IAAoB;AAAA,EACjC;AAEI,MAAA;AACA,MAAA;AAEI,UAAA,MAAM,OAAO,YAAY,GAAG;AAAA,WAC3B,GAAG;AACV,UAAMC,OAAAA,OAAO;AAAA,EACf;AAEA,QAAM,QAAQ,YAAY,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE;AACvD,QAAA,SAAS,MAAMC,eAAAA,eAAe,EAAE,IAAI,WAAW,OAAO,QAAQ;AAE9D,QAAA,6BAAa;AACnB,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IACxB;AAAA,EACF;AAEO,SAAA;AACT;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"callTypescript.js","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nexport async function callTypescript({\n ts,\n sourceDir,\n files,\n outDir,\n}: BuildTypesOptions) {\n const configPath = path.join(sourceDir, \"tsconfig.json\");\n const configFile = ts.readConfigFile(configPath, (path) =>\n // https://github.com/XaveScor/bobrik/issues/22\n fs.readFileSync(path, \"utf-8\"),\n );\n\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n strict: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictPropertyInitialization: false,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configPath,\n );\n\n const host = ts.createCompilerHost(parsedCommandLine.options);\n\n const sourceToDtsMap = new Map<string, string>();\n const program = ts.createProgram(files, parsedCommandLine.options, host);\n program.emit(undefined, (fileName, data) => {\n // .d.ts for cjs because \"type\": \"commonjs\" in package.json\n // .d.mts for esm\n const relativePath = path.relative(sourceDir, fileName);\n const sourceFileName = fileName.replace(/\\.d\\.ts$/, \".ts\"); // Assuming source files have .ts extension\n\n const finalEsmPath = path.join(outDir, \"__compiled__\", \"esm\", relativePath);\n const esmFinalPath = finalEsmPath.replace(/\\.d\\.ts$/, \".d.mts\");\n sourceToDtsMap.set(esmFinalPath, sourceFileName);\n fs.mkdirSync(path.dirname(esmFinalPath), { recursive: true });\n fs.writeFileSync(esmFinalPath, data);\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(cjsFinalPath, data);\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAaA,gBAAK,KAAK,WAAW,eAAe;AACvD,QAAM,aAAa,GAAG;AAAA,IAAe;AAAA,IAAY,CAACA;AAAAA;AAAAA,MAEhDC,cAAG,aAAaD,OAAM,OAAO;AAAA;AAAA,EAAA;AAG/B,QAAM,oBAAoB,GAAG;AAAA,IAC3B,WAAW;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,8BAA8B;AAAA,MAC9B,cAAc;AAAA,MACd,qBAAqB;AAAA;AAAA,MAErB,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,OAAO,GAAG,mBAAmB,kBAAkB,OAAO;AAEtD,QAAA,qCAAqB;AAC3B,QAAM,UAAU,GAAG,cAAc,OAAO,kBAAkB,SAAS,IAAI;AACvE,UAAQ,KAAK,QAAW,CAAC,UAAU,SAAS;AAG1C,UAAM,eAAeA,gBAAK,SAAS,WAAW,QAAQ;AACtD,UAAM,iBAAiB,SAAS,QAAQ,YAAY,KAAK;AAEzD,UAAM,eAAeA,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,QAAQ;AAC/C,mBAAA,IAAI,cAAc,cAAc;AAC5CC,kBAAA,UAAUD,gBAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,MAAM;AACzDC,kBAAA,cAAc,cAAc,IAAI;AAEnC,UAAM,eAAeD,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1DC,kBAAA,cAAc,cAAc,IAAI;AACpB,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"copyStaticFilesTask.js","sources":["../../../../../src/tasks/copyStaticFilesTask.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { copyFile, readdir } from \"node:fs/promises\";\n\nexport async function copyStaticFilesTask(sourceDir: string, outDir: string) {\n return copyStaticFiles({\n relativeFiles: new Set([\"readme.md\"]),\n sourceDir,\n outDir,\n });\n}\n\ntype CopyStaticFilesOptions = {\n relativeFiles: Set<string>;\n sourceDir: string;\n outDir: string;\n};\n\nasync function copyStaticFiles({\n sourceDir,\n outDir,\n relativeFiles,\n}: CopyStaticFilesOptions) {\n const dirFiles = new Map(\n (await readdir(sourceDir, { recursive: true })).map(\n (f) => [f.toLowerCase(), f] as const,\n ),\n );\n\n for (const file of relativeFiles) {\n try {\n const matchingFile = dirFiles.get(file.toLowerCase());\n\n if (matchingFile) {\n const outFilePath = join(outDir, matchingFile);\n const filePath = join(sourceDir, matchingFile);\n await copyFile(filePath, outFilePath);\n }\n } catch {}\n }\n}\n"],"names":["readdir","join","copyFile"],"mappings":";;;;AAGsB,eAAA,oBAAoB,WAAmB,QAAgB;AAC3E,SAAO,gBAAgB;AAAA,IACrB,eAAe,oBAAI,IAAI,CAAC,WAAW,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,EAAA,CACD;AACH;AAQA,eAAe,gBAAgB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,WAAW,IAAI;AAAA,KAClB,MAAMA,GAAQ,QAAA,WAAW,EAAE,WAAW,KAAM,CAAA,GAAG;AAAA,MAC9C,CAAC,MAAM,CAAC,EAAE,YAAA,GAAe,CAAC;AAAA,IAC5B;AAAA,EAAA;AAGF,aAAW,QAAQ,eAAe;AAC5B,QAAA;AACF,YAAM,eAAe,SAAS,IAAI,KAAK,YAAa,CAAA;AAEpD,UAAI,cAAc;AACV,cAAA,cAAcC,KAAAA,KAAK,QAAQ,YAAY;AACvC,cAAA,WAAWA,KAAAA,KAAK,WAAW,YAAY;AACvC,cAAAC,GAAA,SAAS,UAAU,WAAW;AAAA,MACtC;AAAA,IAAA,QACM;AAAA,IAAC;AAAA,EACX;AACF;;"}
|
@@ -51,7 +51,11 @@ export default Default;
|
|
51
51
|
`;
|
52
52
|
await fs.writeFile(cjsName, cjsContent);
|
53
53
|
res.set(path.relative(outDir, path.join(path.dirname(cjsName), cjsPath)), name);
|
54
|
+
const cdtsPath = cjsName.replace(/\.js$/, ".d.ts");
|
55
|
+
await fs.writeFile(cdtsPath, `export * from "./${cjsPath}";
|
56
|
+
`);
|
54
57
|
}
|
55
58
|
return res;
|
56
59
|
}
|
57
60
|
exports.jsFilesTask = jsFilesTask;
|
61
|
+
//# sourceMappingURL=jsFilesTask.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"jsFilesTask.js","sources":["../../../../../src/tasks/jsFilesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { dirname, join, relative } from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\n\ntype JsFilesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n outDir: string;\n};\n\nfunction findCompiledPath(\n buildOutput: Rollup.OutputChunk[],\n originalFile: string,\n type: \"js\" | \"mjs\",\n) {\n for (const el of buildOutput) {\n if (el.facadeModuleId === originalFile) {\n if (type === \"js\" && el.fileName.endsWith(\".js\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n if (type === \"mjs\" && el.fileName.endsWith(\".mjs\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n }\n }\n return { path: \"\", hasDefault: false };\n}\n\nexport async function jsFilesTask({\n buildOutput,\n entrypoints,\n outDir,\n}: JsFilesTaskOption) {\n const res = new Map<string, string>();\n for (const [name, filePath] of entrypoints) {\n const totalName = join(outDir, name);\n\n const esmName = join(totalName, \"index.mjs\");\n const esmCompiled = findCompiledPath(buildOutput, filePath, \"mjs\");\n const esmPath = relative(totalName, join(outDir, esmCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n let esmContent = `export * from \"./${esmPath}\";\\n`;\n if (esmCompiled.hasDefault) {\n esmContent += `import Default from \"./${esmPath}\";\\nexport default Default;\\n`;\n }\n await writeFile(esmName, esmContent);\n res.set(relative(outDir, join(dirname(esmName), esmPath)), name);\n const cjsName = join(totalName, \"index.js\");\n const cjsCompiled = findCompiledPath(buildOutput, filePath, \"js\");\n const cjsPath = relative(totalName, join(outDir, cjsCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n const cjsContent = `module.exports = require(\"./${cjsPath}\");\\n`;\n await writeFile(cjsName, cjsContent);\n res.set(relative(outDir, join(dirname(cjsName), cjsPath)), name);\n\n // moduleResolution: \"node10\" in tsconfig.json\n const cdtsPath = cjsName.replace(/\\.js$/, \".d.ts\");\n await writeFile(cdtsPath, `export * from \"./${cjsPath}\";\\n`);\n }\n\n return res;\n}\n"],"names":["join","relative","mkdir","dirname","writeFile"],"mappings":";;;;;AAUA,SAAS,iBACP,aACA,cACA,MACA;AACA,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,mBAAmB,cAAc;AACtC,UAAI,SAAS,QAAQ,GAAG,SAAS,SAAS,KAAK,GAAG;AACzC,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AACA,UAAI,SAAS,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;AAC3C,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,MAAM,IAAI,YAAY,MAAM;AACvC;AAEA,eAAsB,YAAY;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACd,QAAA,0BAAU;AAChB,aAAW,CAAC,MAAM,QAAQ,KAAK,aAAa;AACpC,UAAA,YAAYA,KAAAA,KAAK,QAAQ,IAAI;AAE7B,UAAA,UAAUA,KAAAA,KAAK,WAAW,WAAW;AAC3C,UAAM,cAAc,iBAAiB,aAAa,UAAU,KAAK;AACjE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC7C,QAAA,aAAa,oBAAoB,OAAO;AAAA;AAC5C,QAAI,YAAY,YAAY;AAC1B,oBAAc,0BAA0B,OAAO;AAAA;AAAA;AAAA,IACjD;AACM,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AACzD,UAAA,UAAUH,KAAAA,KAAK,WAAW,UAAU;AAC1C,UAAM,cAAc,iBAAiB,aAAa,UAAU,IAAI;AAChE,UAAM,UAAUC,KAAS,SAAA,WAAWD,KAAAA,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAME,GAAAA,MAAMC,KAAAA,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC3C,UAAA,aAAa,+BAA+B,OAAO;AAAA;AACnD,UAAAC,GAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAIH,cAAS,QAAQD,KAAK,KAAAG,aAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AAG/D,UAAM,WAAW,QAAQ,QAAQ,SAAS,OAAO;AAC3C,UAAAC,aAAU,UAAU,oBAAoB,OAAO;AAAA,CAAM;AAAA,EAC7D;AAEO,SAAA;AACT;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/tasks/utils.ts"],"sourcesContent":["export function reverseMap(\n map: Map<string, string>,\n): Map<string, Array<string>> {\n const reversed = new Map<string, Array<string>>();\n for (const [key, value] of map) {\n const arr = reversed.get(value) ?? [];\n arr.push(key);\n reversed.set(value, arr);\n }\n return reversed;\n}\n"],"names":[],"mappings":";;AAAO,SAAS,WACd,KAC4B;AACtB,QAAA,+BAAe;AACrB,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,UAAM,MAAM,SAAS,IAAI,KAAK,KAAK,CAAA;AACnC,QAAI,KAAK,GAAG;AACH,aAAA,IAAI,OAAO,GAAG;AAAA,EACzB;AACO,SAAA;AACT;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"writePackageJson.js","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\n\nexport type ExportsObject = {\n mjs?: string;\n dmts?: string;\n dcts?: string;\n cjs?: string;\n raw?: string;\n};\n\ntype BuildResult = {\n exportsMap: Map<string, ExportsObject>;\n binsMap: Map<string, string>;\n};\n\ntype ExportsPackageJsonObj =\n | {\n import?: ExportsPackageJsonObj;\n require?: ExportsPackageJsonObj;\n types?: string;\n default?: string;\n }\n | string;\n\nfunction extractValue(value?: ExportsPackageJsonObj) {\n if (!value) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return value.default;\n}\n\nexport async function writePackageJson(\n outDir: string,\n parsed: PackageJson,\n { exportsMap, binsMap }: BuildResult,\n) {\n // we always want to have `exports` property in the target package.json\n // If you want to export something, please, specify them\n const allExports: Record<string, ExportsPackageJsonObj> = {};\n for (const [key, value] of exportsMap) {\n const anExport: ExportsPackageJsonObj = {};\n\n if (value.mjs) {\n anExport.import = {};\n if (value.dmts) {\n anExport.import.types = value.dmts;\n }\n anExport.import.default = value.mjs;\n }\n if (value.cjs) {\n anExport.require = {};\n if (value.dcts) {\n anExport.require.types = value.dcts;\n }\n anExport.require.default = value.cjs;\n }\n\n // should be first for correct resolving\n anExport.types = value.dcts ?? value.dmts;\n // because we need to have default and types key on the end\n // JSON.stringify will put it on the end if we put value at the last step\n anExport.default = value.cjs;\n\n allExports[key] = anExport;\n }\n allExports[\"./package.json\"] = \"./package.json\";\n\n const bin = binsMap.size > 0 ? Object.fromEntries(binsMap) : undefined;\n\n const rootExport =\n typeof allExports[\".\"] === \"object\" ? allExports[\".\"] : undefined;\n const res = {\n name: parsed.name,\n type: \"commonjs\",\n version: parsed.version,\n bin,\n types: rootExport?.types,\n module: extractValue(rootExport?.import),\n main: extractValue(rootExport?.require),\n description: parsed.description ?? \"\",\n exports: allExports,\n dependencies: parsed.dependencies ?? undefined,\n optionalDependencies: parsed.optionalDependencies ?? undefined,\n repository: parsed.repository,\n keywords: parsed.keywords,\n author: parsed.author,\n contributors: parsed.contributors,\n license: parsed.license,\n peerDependencies: parsed.peerDependencies,\n engines: parsed.engines,\n browser: parsed.browser,\n funding: parsed.funding,\n os: parsed.os,\n cpu: parsed.cpu,\n maintainers: parsed.maintainers,\n bugs: parsed.bugs,\n sideEffects: parsed.sideEffects,\n unpkg: parsed.unpkg,\n homepage: parsed.homepage,\n devDependencies: parsed.devDependencies,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n}\n"],"names":["writeFile"],"mappings":";;;;;AAyBA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EACT;AACI,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EACT;AACA,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAA;AAC1D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAA;AAExC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS;AAClB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAChC;AACS,eAAA,OAAO,UAAU,MAAM;AAAA,IAClC;AACA,QAAI,MAAM,KAAK;AACb,eAAS,UAAU;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MACjC;AACS,eAAA,QAAQ,UAAU,MAAM;AAAA,IACnC;AAGS,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EACpB;AACA,aAAW,gBAAgB,IAAI;AAE/B,QAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,YAAY,OAAO,IAAI;AAEvD,QAAA,aACJ,OAAO,WAAW,GAAG,MAAM,WAAW,WAAW,GAAG,IAAI;AAC1D,QAAM,MAAM;AAAA,IACV,MAAM,OAAO;AAAA,IACb,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB;AAAA,IACA,OAAO,yCAAY;AAAA,IACnB,QAAQ,aAAa,yCAAY,MAAM;AAAA,IACvC,MAAM,aAAa,yCAAY,OAAO;AAAA,IACtC,aAAa,OAAO,eAAe;AAAA,IACnC,SAAS;AAAA,IACT,cAAc,OAAO,gBAAgB;AAAA,IACrC,sBAAsB,OAAO,wBAAwB;AAAA,IACrD,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,kBAAkB,OAAO;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,IAAI,OAAO;AAAA,IACX,KAAK,OAAO;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,iBAAiB,OAAO;AAAA,EAAA;AAGpB,QAAAA,aAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AACxE;;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"args.mjs","sources":["../../../../src/args.ts"],"sourcesContent":["import yargs from \"yargs\";\nimport * as process from \"node:process\";\n\nexport const args = yargs(process.argv.slice(2))\n .option(\"sourceDir\", {\n alias: \"s\",\n type: \"string\",\n describe:\n \"path to the project directory. Default: current working directory\",\n })\n .option(\"packagePath\", {\n alias: \"p\",\n type: \"string\",\n describe: \"path to the package.json. Default: cwd()/package.json\",\n })\n .option(\"outputDir\", {\n alias: \"o\",\n type: \"string\",\n describe: \"path to the output directory. Default: cwd()/dist\",\n })\n .help(\"help\")\n .parseSync();\n\nexport type Args = typeof args;\n"],"names":[],"mappings":";;AAGa,MAAA,OAAO,MAAM,QAAQ,KAAK,MAAM,CAAC,CAAC,EAC5C,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UACE;AACJ,CAAC,EACA,OAAO,eAAe;AAAA,EACrB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AACZ,CAAC,EACA,KAAK,MAAM,EACX,UAAU;"}
|
@@ -0,0 +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;"}
|
@@ -62,6 +62,7 @@ function createViteConfig({ dirs, packageJson }) {
|
|
62
62
|
write: true,
|
63
63
|
minify: false,
|
64
64
|
emptyOutDir: false,
|
65
|
+
sourcemap: true,
|
65
66
|
assetsInlineLimit: 0,
|
66
67
|
terserOptions: {
|
67
68
|
compress: false,
|
@@ -110,3 +111,4 @@ function createViteConfig({ dirs, packageJson }) {
|
|
110
111
|
export {
|
111
112
|
createViteConfig
|
112
113
|
};
|
114
|
+
//# sourceMappingURL=createViteConfig.mjs.map
|
@@ -0,0 +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\";\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 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":"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"}
|
@@ -0,0 +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,EAEnB;AACF;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.mjs","sources":["../../../../src/errors.ts"],"sourcesContent":["export const errors = {\n exportsRequired:\n \"The `exports` field is string or Record<string, string>. Please, verify the value. More info: https://nodejs.org/api/packages.html#package-entry-points\",\n exportsInvalid:\n \"The `exports` field must be a path to entrypoint. Please, verify the value. More info: https://nodejs.org/api/packages.html#package-entry-points\",\n nameRequired:\n \"The `name` field is required string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name\",\n nameMinLength:\n 'Min length of \"name\" is 1 character. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name',\n nameMaxLength:\n 'Max length of \"name\" is 214 characters. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name',\n nameStartsIllegalChars:\n \"Name cannot start with `_` or `.` if it is not a scoped package. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#name\",\n versionRequired:\n \"The `version` field is required string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#version\",\n privateIsTrue:\n \"The `private` field must be `true` for avoiding accidental publish. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#private\",\n descriptionString:\n \"The `description` field must be a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#description\",\n dependenciesInvalid:\n \"The `dependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#dependencies\",\n binFiled:\n \"The `bin` field must be a path or Record<string, FilePath>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#bin\",\n rollupError:\n \"An error occurred while building the package. Please, report it to the issues on GitHub\",\n typescriptNotFound:\n \"The package.json contains typescript entrypoints, but the typescript package is not found. Please, install typescript@^5.0.0\",\n optionalDependenciesInvalid:\n \"The `optionalDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies\",\n repositoryInvalid:\n \"The `repository` field must be an object with 'type' and 'url' properties or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#repository\",\n keywordsInvalid:\n \"The `keywords` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#keywords\",\n authorInvalid:\n \"The `author` field must be an object or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#people-fields-author-contributors\",\n contributorsInvalid:\n \"The `contributors` field must be an array of objects or strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#people-fields-author-contributors\",\n licenseInvalid:\n \"The `license` field must be a string specifying the license. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#license\",\n devDependenciesInvalid:\n \"The `devDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#devdependencies\",\n peerDependenciesInvalid:\n \"The `peerDependencies` field must be an Object<string, string>. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#peerdependencies\",\n enginesInvalid:\n \"The `engines` field must be an object specifying version requirements. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#engines\",\n browserInvalid:\n \"The `browser` field must be a string or an object. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#browser\",\n fundingInvalid:\n \"The `funding` field must be an object or a string. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#funding\",\n osInvalid:\n \"The `os` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#os\",\n cpuInvalid:\n \"The `cpu` field must be an array of strings. Please, verify the value. More info: https://docs.npmjs.com/cli/v10/configuring-npm/package-json#cpu\",\n};\n"],"names":[],"mappings":"AAAO,MAAM,SAAS;AAAA,EACpB,iBACE;AAAA,EACF,gBACE;AAAA,EACF,cACE;AAAA,EACF,eACE;AAAA,EACF,eACE;AAAA,EACF,wBACE;AAAA,EACF,iBACE;AAAA,EACF,eACE;AAAA,EACF,mBACE;AAAA,EACF,qBACE;AAAA,EACF,UACE;AAAA,EACF,aACE;AAAA,EACF,oBACE;AAAA,EACF,6BACE;AAAA,EACF,mBACE;AAAA,EACF,iBACE;AAAA,EACF,eACE;AAAA,EACF,qBACE;AAAA,EACF,gBACE;AAAA,EACF,wBACE;AAAA,EACF,yBACE;AAAA,EACF,gBACE;AAAA,EACF,gBACE;AAAA,EACF,gBACE;AAAA,EACF,WACE;AAAA,EACF,YACE;AACJ;"}
|
@@ -0,0 +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;"}
|
@@ -0,0 +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 });\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 @@
|
|
1
|
+
{"version":3,"file":"resolveDirs.mjs","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\n\nexport type Args = {\n sourceDir?: string;\n packagePath?: string;\n outputDir?: string;\n};\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":";AAQA,SAAS,UAAU,OAAe,OAAe;AAC3C,MAAA,WAAW,KAAK,GAAG;AACd,WAAA;AAAA,EACT;AAEO,SAAA,KAAK,OAAO,KAAK;AAC1B;AAEO,SAAS,YAAY,MAAY;AACtC,QAAM,YAAY,UAAU,QAAQ,IAAO,GAAA,KAAK,aAAa,GAAG;AAChE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,KAAK,eAAe;AAAA,EAAA;AAEtB,QAAM,SAAS,UAAU,QAAQ,IAAO,GAAA,KAAK,aAAa,QAAQ;AAC5D,QAAA,aAAa,UAAU,QAAQ,SAAS;AAE9C,SAAO,EAAE,WAAW,aAAa,QAAQ,WAAW;AACtD;"}
|
@@ -0,0 +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;"}
|
@@ -0,0 +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\";\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 return res;\n}\n"],"names":[],"mappings":";;;;AAYA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACb,MAAA,KAAK,SAAS,GAAG;AACnB,+BAAW,IAAoB;AAAA,EACjC;AACA,QAAM,MAAM,YAAY,EAAE,WAAW,KAAM,CAAA;AACrC,QAAA,sBAAsB,WAAW,IAAI;AACrC,QAAA,0BAAU;AAChB,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,kBAAkB,MAAM;AAC7B;AAAA,IACF;AACA,QAAI,GAAG,SAAS,SAAS,KAAK,GAAG;AAC/B;AAAA,IACF;AACA,UAAM,YAAY,oBAAoB,IAAI,GAAG,cAAc;AAC3D,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,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,MAAA;AAGb,UAAI,IAAI,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAAA,IAC7C;AAAA,EACF;AAEO,SAAA;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"buildTypesTask.mjs","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { errors } from \"../../errors.js\";\nimport { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\n\ntype BuildTypesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n sourceDir: string;\n outDir: string;\n};\n\nexport async function buildTypesTask({\n buildOutput,\n entrypoints,\n sourceDir,\n outDir,\n}: BuildTypesTaskOption) {\n const reversedEntrypoints = reverseMap(entrypoints);\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n if (tsEntrypoints.length === 0) {\n return new Map<string, string>();\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n ts = (await import(\"typescript\")).default;\n } catch (e) {\n throw errors.typescriptNotFound;\n }\n\n const files = buildOutput.map((el) => el.facadeModuleId ?? \"\");\n const dtsMap = await callTypescript({ ts, sourceDir, files, outDir });\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 return result;\n}\n"],"names":[],"mappings":";;;;AAYA,eAAsB,eAAe;AAAA,EACnC;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,EAAA;AAElB,MAAA,cAAc,WAAW,GAAG;AAC9B,+BAAW,IAAoB;AAAA,EACjC;AAEI,MAAA;AACA,MAAA;AAEI,UAAA,MAAM,OAAO,YAAY,GAAG;AAAA,WAC3B,GAAG;AACV,UAAM,OAAO;AAAA,EACf;AAEA,QAAM,QAAQ,YAAY,IAAI,CAAC,OAAO,GAAG,kBAAkB,EAAE;AACvD,QAAA,SAAS,MAAM,eAAe,EAAE,IAAI,WAAW,OAAO,QAAQ;AAE9D,QAAA,6BAAa;AACnB,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ;AAC9B,UAAA,aAAa,oBAAoB,IAAI,MAAM;AACjD,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,eAAW,QAAQ,YAAY;AACtB,aAAA,IAAI,OAAO,IAAI;AAAA,IACxB;AAAA,EACF;AAEO,SAAA;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"callTypescript.mjs","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nexport async function callTypescript({\n ts,\n sourceDir,\n files,\n outDir,\n}: BuildTypesOptions) {\n const configPath = path.join(sourceDir, \"tsconfig.json\");\n const configFile = ts.readConfigFile(configPath, (path) =>\n // https://github.com/XaveScor/bobrik/issues/22\n fs.readFileSync(path, \"utf-8\"),\n );\n\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n strict: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictPropertyInitialization: false,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configPath,\n );\n\n const host = ts.createCompilerHost(parsedCommandLine.options);\n\n const sourceToDtsMap = new Map<string, string>();\n const program = ts.createProgram(files, parsedCommandLine.options, host);\n program.emit(undefined, (fileName, data) => {\n // .d.ts for cjs because \"type\": \"commonjs\" in package.json\n // .d.mts for esm\n const relativePath = path.relative(sourceDir, fileName);\n const sourceFileName = fileName.replace(/\\.d\\.ts$/, \".ts\"); // Assuming source files have .ts extension\n\n const finalEsmPath = path.join(outDir, \"__compiled__\", \"esm\", relativePath);\n const esmFinalPath = finalEsmPath.replace(/\\.d\\.ts$/, \".d.mts\");\n sourceToDtsMap.set(esmFinalPath, sourceFileName);\n fs.mkdirSync(path.dirname(esmFinalPath), { recursive: true });\n fs.writeFileSync(esmFinalPath, data);\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(cjsFinalPath, data);\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path"],"mappings":";;AAUA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAa,KAAK,KAAK,WAAW,eAAe;AACvD,QAAM,aAAa,GAAG;AAAA,IAAe;AAAA,IAAY,CAACA;AAAAA;AAAAA,MAEhD,GAAG,aAAaA,OAAM,OAAO;AAAA;AAAA,EAAA;AAG/B,QAAM,oBAAoB,GAAG;AAAA,IAC3B,WAAW;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,8BAA8B;AAAA,MAC9B,cAAc;AAAA,MACd,qBAAqB;AAAA;AAAA,MAErB,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,EAAA;AAGF,QAAM,OAAO,GAAG,mBAAmB,kBAAkB,OAAO;AAEtD,QAAA,qCAAqB;AAC3B,QAAM,UAAU,GAAG,cAAc,OAAO,kBAAkB,SAAS,IAAI;AACvE,UAAQ,KAAK,QAAW,CAAC,UAAU,SAAS;AAG1C,UAAM,eAAe,KAAK,SAAS,WAAW,QAAQ;AACtD,UAAM,iBAAiB,SAAS,QAAQ,YAAY,KAAK;AAEzD,UAAM,eAAe,KAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,QAAQ;AAC/C,mBAAA,IAAI,cAAc,cAAc;AAC5C,OAAA,UAAU,KAAK,QAAQ,YAAY,GAAG,EAAE,WAAW,MAAM;AACzD,OAAA,cAAc,cAAc,IAAI;AAEnC,UAAM,eAAe,KAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1D,OAAA,cAAc,cAAc,IAAI;AACpB,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"copyStaticFilesTask.mjs","sources":["../../../../../src/tasks/copyStaticFilesTask.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport { copyFile, readdir } from \"node:fs/promises\";\n\nexport async function copyStaticFilesTask(sourceDir: string, outDir: string) {\n return copyStaticFiles({\n relativeFiles: new Set([\"readme.md\"]),\n sourceDir,\n outDir,\n });\n}\n\ntype CopyStaticFilesOptions = {\n relativeFiles: Set<string>;\n sourceDir: string;\n outDir: string;\n};\n\nasync function copyStaticFiles({\n sourceDir,\n outDir,\n relativeFiles,\n}: CopyStaticFilesOptions) {\n const dirFiles = new Map(\n (await readdir(sourceDir, { recursive: true })).map(\n (f) => [f.toLowerCase(), f] as const,\n ),\n );\n\n for (const file of relativeFiles) {\n try {\n const matchingFile = dirFiles.get(file.toLowerCase());\n\n if (matchingFile) {\n const outFilePath = join(outDir, matchingFile);\n const filePath = join(sourceDir, matchingFile);\n await copyFile(filePath, outFilePath);\n }\n } catch {}\n }\n}\n"],"names":[],"mappings":";;AAGsB,eAAA,oBAAoB,WAAmB,QAAgB;AAC3E,SAAO,gBAAgB;AAAA,IACrB,eAAe,oBAAI,IAAI,CAAC,WAAW,CAAC;AAAA,IACpC;AAAA,IACA;AAAA,EAAA,CACD;AACH;AAQA,eAAe,gBAAgB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,WAAW,IAAI;AAAA,KAClB,MAAM,QAAQ,WAAW,EAAE,WAAW,KAAM,CAAA,GAAG;AAAA,MAC9C,CAAC,MAAM,CAAC,EAAE,YAAA,GAAe,CAAC;AAAA,IAC5B;AAAA,EAAA;AAGF,aAAW,QAAQ,eAAe;AAC5B,QAAA;AACF,YAAM,eAAe,SAAS,IAAI,KAAK,YAAa,CAAA;AAEpD,UAAI,cAAc;AACV,cAAA,cAAc,KAAK,QAAQ,YAAY;AACvC,cAAA,WAAW,KAAK,WAAW,YAAY;AACvC,cAAA,SAAS,UAAU,WAAW;AAAA,MACtC;AAAA,IAAA,QACM;AAAA,IAAC;AAAA,EACX;AACF;"}
|
@@ -49,9 +49,13 @@ export default Default;
|
|
49
49
|
`;
|
50
50
|
await writeFile(cjsName, cjsContent);
|
51
51
|
res.set(relative(outDir, join(dirname(cjsName), cjsPath)), name);
|
52
|
+
const cdtsPath = cjsName.replace(/\.js$/, ".d.ts");
|
53
|
+
await writeFile(cdtsPath, `export * from "./${cjsPath}";
|
54
|
+
`);
|
52
55
|
}
|
53
56
|
return res;
|
54
57
|
}
|
55
58
|
export {
|
56
59
|
jsFilesTask
|
57
60
|
};
|
61
|
+
//# sourceMappingURL=jsFilesTask.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"jsFilesTask.mjs","sources":["../../../../../src/tasks/jsFilesTask.ts"],"sourcesContent":["import { type Rollup } from \"vite\";\nimport { dirname, join, relative } from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\n\ntype JsFilesTaskOption = {\n buildOutput: Rollup.OutputChunk[];\n entrypoints: Map<string, string>;\n outDir: string;\n};\n\nfunction findCompiledPath(\n buildOutput: Rollup.OutputChunk[],\n originalFile: string,\n type: \"js\" | \"mjs\",\n) {\n for (const el of buildOutput) {\n if (el.facadeModuleId === originalFile) {\n if (type === \"js\" && el.fileName.endsWith(\".js\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n if (type === \"mjs\" && el.fileName.endsWith(\".mjs\")) {\n return {\n path: el.fileName,\n hasDefault: el.exports.includes(\"default\"),\n };\n }\n }\n }\n return { path: \"\", hasDefault: false };\n}\n\nexport async function jsFilesTask({\n buildOutput,\n entrypoints,\n outDir,\n}: JsFilesTaskOption) {\n const res = new Map<string, string>();\n for (const [name, filePath] of entrypoints) {\n const totalName = join(outDir, name);\n\n const esmName = join(totalName, \"index.mjs\");\n const esmCompiled = findCompiledPath(buildOutput, filePath, \"mjs\");\n const esmPath = relative(totalName, join(outDir, esmCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n let esmContent = `export * from \"./${esmPath}\";\\n`;\n if (esmCompiled.hasDefault) {\n esmContent += `import Default from \"./${esmPath}\";\\nexport default Default;\\n`;\n }\n await writeFile(esmName, esmContent);\n res.set(relative(outDir, join(dirname(esmName), esmPath)), name);\n const cjsName = join(totalName, \"index.js\");\n const cjsCompiled = findCompiledPath(buildOutput, filePath, \"js\");\n const cjsPath = relative(totalName, join(outDir, cjsCompiled.path));\n await mkdir(dirname(esmName), { recursive: true });\n const cjsContent = `module.exports = require(\"./${cjsPath}\");\\n`;\n await writeFile(cjsName, cjsContent);\n res.set(relative(outDir, join(dirname(cjsName), cjsPath)), name);\n\n // moduleResolution: \"node10\" in tsconfig.json\n const cdtsPath = cjsName.replace(/\\.js$/, \".d.ts\");\n await writeFile(cdtsPath, `export * from \"./${cjsPath}\";\\n`);\n }\n\n return res;\n}\n"],"names":[],"mappings":";;;AAUA,SAAS,iBACP,aACA,cACA,MACA;AACA,aAAW,MAAM,aAAa;AACxB,QAAA,GAAG,mBAAmB,cAAc;AACtC,UAAI,SAAS,QAAQ,GAAG,SAAS,SAAS,KAAK,GAAG;AACzC,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AACA,UAAI,SAAS,SAAS,GAAG,SAAS,SAAS,MAAM,GAAG;AAC3C,eAAA;AAAA,UACL,MAAM,GAAG;AAAA,UACT,YAAY,GAAG,QAAQ,SAAS,SAAS;AAAA,QAAA;AAAA,MAE7C;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,MAAM,IAAI,YAAY,MAAM;AACvC;AAEA,eAAsB,YAAY;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACd,QAAA,0BAAU;AAChB,aAAW,CAAC,MAAM,QAAQ,KAAK,aAAa;AACpC,UAAA,YAAY,KAAK,QAAQ,IAAI;AAE7B,UAAA,UAAU,KAAK,WAAW,WAAW;AAC3C,UAAM,cAAc,iBAAiB,aAAa,UAAU,KAAK;AACjE,UAAM,UAAU,SAAS,WAAW,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAM,MAAM,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC7C,QAAA,aAAa,oBAAoB,OAAO;AAAA;AAC5C,QAAI,YAAY,YAAY;AAC1B,oBAAc,0BAA0B,OAAO;AAAA;AAAA;AAAA,IACjD;AACM,UAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAI,SAAS,QAAQ,KAAK,QAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AACzD,UAAA,UAAU,KAAK,WAAW,UAAU;AAC1C,UAAM,cAAc,iBAAiB,aAAa,UAAU,IAAI;AAChE,UAAM,UAAU,SAAS,WAAW,KAAK,QAAQ,YAAY,IAAI,CAAC;AAClE,UAAM,MAAM,QAAQ,OAAO,GAAG,EAAE,WAAW,MAAM;AAC3C,UAAA,aAAa,+BAA+B,OAAO;AAAA;AACnD,UAAA,UAAU,SAAS,UAAU;AAC/B,QAAA,IAAI,SAAS,QAAQ,KAAK,QAAQ,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI;AAG/D,UAAM,WAAW,QAAQ,QAAQ,SAAS,OAAO;AAC3C,UAAA,UAAU,UAAU,oBAAoB,OAAO;AAAA,CAAM;AAAA,EAC7D;AAEO,SAAA;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../../src/tasks/utils.ts"],"sourcesContent":["export function reverseMap(\n map: Map<string, string>,\n): Map<string, Array<string>> {\n const reversed = new Map<string, Array<string>>();\n for (const [key, value] of map) {\n const arr = reversed.get(value) ?? [];\n arr.push(key);\n reversed.set(value, arr);\n }\n return reversed;\n}\n"],"names":[],"mappings":"AAAO,SAAS,WACd,KAC4B;AACtB,QAAA,+BAAe;AACrB,aAAW,CAAC,KAAK,KAAK,KAAK,KAAK;AAC9B,UAAM,MAAM,SAAS,IAAI,KAAK,KAAK,CAAA;AACnC,QAAI,KAAK,GAAG;AACH,aAAA,IAAI,OAAO,GAAG;AAAA,EACzB;AACO,SAAA;AACT;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"writePackageJson.mjs","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\n\nexport type ExportsObject = {\n mjs?: string;\n dmts?: string;\n dcts?: string;\n cjs?: string;\n raw?: string;\n};\n\ntype BuildResult = {\n exportsMap: Map<string, ExportsObject>;\n binsMap: Map<string, string>;\n};\n\ntype ExportsPackageJsonObj =\n | {\n import?: ExportsPackageJsonObj;\n require?: ExportsPackageJsonObj;\n types?: string;\n default?: string;\n }\n | string;\n\nfunction extractValue(value?: ExportsPackageJsonObj) {\n if (!value) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n return value.default;\n}\n\nexport async function writePackageJson(\n outDir: string,\n parsed: PackageJson,\n { exportsMap, binsMap }: BuildResult,\n) {\n // we always want to have `exports` property in the target package.json\n // If you want to export something, please, specify them\n const allExports: Record<string, ExportsPackageJsonObj> = {};\n for (const [key, value] of exportsMap) {\n const anExport: ExportsPackageJsonObj = {};\n\n if (value.mjs) {\n anExport.import = {};\n if (value.dmts) {\n anExport.import.types = value.dmts;\n }\n anExport.import.default = value.mjs;\n }\n if (value.cjs) {\n anExport.require = {};\n if (value.dcts) {\n anExport.require.types = value.dcts;\n }\n anExport.require.default = value.cjs;\n }\n\n // should be first for correct resolving\n anExport.types = value.dcts ?? value.dmts;\n // because we need to have default and types key on the end\n // JSON.stringify will put it on the end if we put value at the last step\n anExport.default = value.cjs;\n\n allExports[key] = anExport;\n }\n allExports[\"./package.json\"] = \"./package.json\";\n\n const bin = binsMap.size > 0 ? Object.fromEntries(binsMap) : undefined;\n\n const rootExport =\n typeof allExports[\".\"] === \"object\" ? allExports[\".\"] : undefined;\n const res = {\n name: parsed.name,\n type: \"commonjs\",\n version: parsed.version,\n bin,\n types: rootExport?.types,\n module: extractValue(rootExport?.import),\n main: extractValue(rootExport?.require),\n description: parsed.description ?? \"\",\n exports: allExports,\n dependencies: parsed.dependencies ?? undefined,\n optionalDependencies: parsed.optionalDependencies ?? undefined,\n repository: parsed.repository,\n keywords: parsed.keywords,\n author: parsed.author,\n contributors: parsed.contributors,\n license: parsed.license,\n peerDependencies: parsed.peerDependencies,\n engines: parsed.engines,\n browser: parsed.browser,\n funding: parsed.funding,\n os: parsed.os,\n cpu: parsed.cpu,\n maintainers: parsed.maintainers,\n bugs: parsed.bugs,\n sideEffects: parsed.sideEffects,\n unpkg: parsed.unpkg,\n homepage: parsed.homepage,\n devDependencies: parsed.devDependencies,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n}\n"],"names":[],"mappings":";;;AAyBA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EACT;AACI,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EACT;AACA,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAA;AAC1D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAA;AAExC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS;AAClB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAChC;AACS,eAAA,OAAO,UAAU,MAAM;AAAA,IAClC;AACA,QAAI,MAAM,KAAK;AACb,eAAS,UAAU;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MACjC;AACS,eAAA,QAAQ,UAAU,MAAM;AAAA,IACnC;AAGS,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EACpB;AACA,aAAW,gBAAgB,IAAI;AAE/B,QAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,YAAY,OAAO,IAAI;AAEvD,QAAA,aACJ,OAAO,WAAW,GAAG,MAAM,WAAW,WAAW,GAAG,IAAI;AAC1D,QAAM,MAAM;AAAA,IACV,MAAM,OAAO;AAAA,IACb,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB;AAAA,IACA,OAAO,yCAAY;AAAA,IACnB,QAAQ,aAAa,yCAAY,MAAM;AAAA,IACvC,MAAM,aAAa,yCAAY,OAAO;AAAA,IACtC,aAAa,OAAO,eAAe;AAAA,IACnC,SAAS;AAAA,IACT,cAAc,OAAO,gBAAgB;AAAA,IACrC,sBAAsB,OAAO,wBAAwB;AAAA,IACrD,YAAY,OAAO;AAAA,IACnB,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,kBAAkB,OAAO;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,IAAI,OAAO;AAAA,IACX,KAAK,OAAO;AAAA,IACZ,aAAa,OAAO;AAAA,IACpB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,IACpB,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,iBAAiB,OAAO;AAAA,EAAA;AAGpB,QAAA,UAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AACxE;"}
|
package/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from "./__compiled__/cjs/src/index.js";
|