smartbundle 0.15.0-alpha.0 → 0.15.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.
Files changed (87) hide show
  1. package/README.md +6 -1
  2. package/__bin__/smartbundle-monorepo-link.js +2 -0
  3. package/__compiled__/cjs/src/args.d.ts +9 -1
  4. package/__compiled__/cjs/src/args.js +3 -0
  5. package/__compiled__/cjs/src/args.js.map +1 -1
  6. package/__compiled__/cjs/src/detectModules.d.ts +25 -11
  7. package/__compiled__/cjs/src/detectModules.js +165 -28
  8. package/__compiled__/cjs/src/detectModules.js.map +1 -1
  9. package/__compiled__/cjs/src/errors.js +4 -0
  10. package/__compiled__/cjs/src/errors.js.map +1 -1
  11. package/__compiled__/cjs/src/index.d.ts +1 -1
  12. package/__compiled__/cjs/src/index.js +11 -5
  13. package/__compiled__/cjs/src/index.js.map +1 -1
  14. package/__compiled__/cjs/src/monorepo/buildAll.js +62 -0
  15. package/__compiled__/cjs/src/monorepo/buildAll.js.map +1 -0
  16. package/__compiled__/cjs/src/monorepo/convertPackageJson.d.ts +31 -0
  17. package/__compiled__/cjs/src/monorepo/convertPackageJson.js +40 -0
  18. package/__compiled__/cjs/src/monorepo/convertPackageJson.js.map +1 -0
  19. package/__compiled__/cjs/src/monorepo/createLinkPackages/createLinkPackages.js +92 -0
  20. package/__compiled__/cjs/src/monorepo/createLinkPackages/createLinkPackages.js.map +1 -0
  21. package/__compiled__/cjs/src/monorepo/link.js +11 -0
  22. package/__compiled__/cjs/src/monorepo/link.js.map +1 -0
  23. package/__compiled__/cjs/src/monorepo/parseMonorepo/parseMonorepo.js +106 -0
  24. package/__compiled__/cjs/src/monorepo/parseMonorepo/parseMonorepo.js.map +1 -0
  25. package/__compiled__/cjs/src/packageJson.d.ts +5 -0
  26. package/__compiled__/cjs/src/packageJson.js +2 -0
  27. package/__compiled__/cjs/src/packageJson.js.map +1 -1
  28. package/__compiled__/cjs/src/plugins/babel/index.js +1 -1
  29. package/__compiled__/cjs/src/plugins/babel/index.js.map +1 -1
  30. package/__compiled__/cjs/src/plugins/react/index.js +3 -2
  31. package/__compiled__/cjs/src/plugins/react/index.js.map +1 -1
  32. package/__compiled__/cjs/src/run.js +47 -8
  33. package/__compiled__/cjs/src/run.js.map +1 -1
  34. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +2 -2
  35. package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
  36. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.d.ts +2 -2
  37. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js.map +1 -1
  38. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.d.ts +2 -2
  39. package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js.map +1 -1
  40. package/__compiled__/cjs/src/tasks/gitignoreTask.d.ts +6 -0
  41. package/__compiled__/cjs/src/tasks/gitignoreTask.js +14 -0
  42. package/__compiled__/cjs/src/tasks/gitignoreTask.js.map +1 -0
  43. package/__compiled__/cjs/src/writePackageJson.js +2 -33
  44. package/__compiled__/cjs/src/writePackageJson.js.map +1 -1
  45. package/__compiled__/esm/src/args.d.mts +9 -1
  46. package/__compiled__/esm/src/args.mjs +3 -0
  47. package/__compiled__/esm/src/args.mjs.map +1 -1
  48. package/__compiled__/esm/src/detectModules.d.mts +25 -11
  49. package/__compiled__/esm/src/detectModules.mjs +165 -28
  50. package/__compiled__/esm/src/detectModules.mjs.map +1 -1
  51. package/__compiled__/esm/src/errors.mjs +4 -0
  52. package/__compiled__/esm/src/errors.mjs.map +1 -1
  53. package/__compiled__/esm/src/index.d.mts +1 -1
  54. package/__compiled__/esm/src/index.mjs +11 -5
  55. package/__compiled__/esm/src/index.mjs.map +1 -1
  56. package/__compiled__/esm/src/monorepo/buildAll.mjs +62 -0
  57. package/__compiled__/esm/src/monorepo/buildAll.mjs.map +1 -0
  58. package/__compiled__/esm/src/monorepo/convertPackageJson.d.mts +31 -0
  59. package/__compiled__/esm/src/monorepo/convertPackageJson.mjs +40 -0
  60. package/__compiled__/esm/src/monorepo/convertPackageJson.mjs.map +1 -0
  61. package/__compiled__/esm/src/monorepo/createLinkPackages/createLinkPackages.mjs +92 -0
  62. package/__compiled__/esm/src/monorepo/createLinkPackages/createLinkPackages.mjs.map +1 -0
  63. package/__compiled__/esm/src/monorepo/link.mjs +10 -0
  64. package/__compiled__/esm/src/monorepo/link.mjs.map +1 -0
  65. package/__compiled__/esm/src/monorepo/parseMonorepo/parseMonorepo.mjs +106 -0
  66. package/__compiled__/esm/src/monorepo/parseMonorepo/parseMonorepo.mjs.map +1 -0
  67. package/__compiled__/esm/src/packageJson.d.mts +5 -0
  68. package/__compiled__/esm/src/packageJson.mjs +2 -0
  69. package/__compiled__/esm/src/packageJson.mjs.map +1 -1
  70. package/__compiled__/esm/src/plugins/babel/index.mjs +1 -1
  71. package/__compiled__/esm/src/plugins/babel/index.mjs.map +1 -1
  72. package/__compiled__/esm/src/plugins/react/index.mjs +3 -2
  73. package/__compiled__/esm/src/plugins/react/index.mjs.map +1 -1
  74. package/__compiled__/esm/src/run.mjs +47 -8
  75. package/__compiled__/esm/src/run.mjs.map +1 -1
  76. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +2 -2
  77. package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
  78. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.d.mts +2 -2
  79. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs.map +1 -1
  80. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.d.mts +2 -2
  81. package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs.map +1 -1
  82. package/__compiled__/esm/src/tasks/gitignoreTask.d.mts +6 -0
  83. package/__compiled__/esm/src/tasks/gitignoreTask.mjs +14 -0
  84. package/__compiled__/esm/src/tasks/gitignoreTask.mjs.map +1 -0
  85. package/__compiled__/esm/src/writePackageJson.mjs +2 -33
  86. package/__compiled__/esm/src/writePackageJson.mjs.map +1 -1
  87. package/package.json +17 -11
@@ -1 +1 @@
1
- {"version":3,"file":"findTypingsPackages.mjs","sources":["../../../../../../src/tasks/buildTypesTask/findTypingsPackages.ts"],"sourcesContent":["import type * as ts from \"typescript\";\nimport * as path from \"node:path\";\nimport type { TS } from \"../../detectModules.js\";\n\ntype HostFunctions = {\n getSourceFile: ts.CompilerHost[\"getSourceFile\"];\n fileExists: ts.CompilerHost[\"fileExists\"];\n readFile: ts.CompilerHost[\"readFile\"];\n};\n\nfunction createVirtualHostFunctions(\n ts: TS[\"ts\"],\n virtualFilePath: string,\n virtualSourceContent: string,\n originalHost: ts.CompilerHost,\n): HostFunctions {\n const getSourceFile: ts.CompilerHost[\"getSourceFile\"] = (\n fileName,\n languageVersion,\n ) => {\n if (fileName === virtualFilePath) {\n return ts.createSourceFile(\n fileName,\n virtualSourceContent,\n languageVersion,\n );\n }\n return originalHost.getSourceFile(fileName, languageVersion);\n };\n\n const fileExists: ts.CompilerHost[\"fileExists\"] = (fileName) => {\n if (fileName === virtualFilePath) {\n return true;\n }\n return originalHost.fileExists(fileName);\n };\n\n const readFile: ts.CompilerHost[\"readFile\"] = (fileName) => {\n if (fileName === virtualFilePath) {\n return virtualSourceContent;\n }\n return originalHost.readFile(fileName);\n };\n\n return {\n getSourceFile,\n fileExists,\n readFile,\n };\n}\n\nfunction createCompilerHostWithVirtualSource(\n ts: TS[\"ts\"],\n packages: Set<string>,\n sourceDir: string,\n) {\n const virtualSourceContent =\n [...packages].map((p) => `import \"${p}\";`).join(\"\\n\") +\n // for ignoring the `Generated an empty chunk: \".\"` error\n \"export const a = 1;\\n\";\n const virtualFilePath = path.join(sourceDir, \"virtual.ts\");\n\n const originalHost = ts.createCompilerHost({\n target: ts.ScriptTarget.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext,\n baseUrl: \".\",\n sourceRoot: sourceDir,\n noEmit: true,\n emitDeclarationOnly: true,\n noEmitOnError: true,\n paths: {\n \"*\": [\"node_modules/*\"],\n },\n });\n const virtualFunctions = createVirtualHostFunctions(\n ts,\n virtualFilePath,\n virtualSourceContent,\n originalHost,\n );\n\n return {\n host: new Proxy(originalHost, {\n get(target, prop: keyof ts.CompilerHost) {\n return virtualFunctions[prop as keyof HostFunctions] || target[prop];\n },\n }),\n virtualFilePath,\n };\n}\n\nexport function findTypingsPackages(\n { ts }: TS,\n packages: Set<string>,\n sourceDir: string,\n) {\n const { host, virtualFilePath } = createCompilerHostWithVirtualSource(\n ts,\n packages,\n sourceDir,\n );\n\n const program = ts.createProgram({\n rootNames: [virtualFilePath],\n options: {},\n host: host,\n });\n\n const sourceFile = program.getSourceFile(virtualFilePath);\n if (!sourceFile) {\n throw new Error(\n \"[getSourceFile] Impossible error inside findMissingTypings\",\n );\n }\n\n const missingTypings = new Set<string>();\n const existingTypingPackages = new Set<string>();\n sourceFile.forEachChild((node) => {\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier;\n if (ts.isStringLiteral(moduleSpecifier)) {\n const moduleResolution = ts.resolveModuleName(\n moduleSpecifier.text,\n virtualFilePath,\n {},\n host,\n );\n\n if (!moduleResolution?.resolvedModule?.packageId) {\n missingTypings.add(moduleSpecifier.text);\n } else {\n existingTypingPackages.add(\n moduleResolution.resolvedModule.packageId.name,\n );\n }\n }\n }\n });\n\n return { missingTypings, existingTypingPackages };\n}\n"],"names":[],"mappings":";AAUA,SAAS,2BACP,IACA,iBACA,sBACA,cACe;AACT,QAAA,gBAAkD,CACtD,UACA,oBACG;AACH,QAAI,aAAa,iBAAiB;AAChC,aAAO,GAAG;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAEK,WAAA,aAAa,cAAc,UAAU,eAAe;AAAA,EAC7D;AAEM,QAAA,aAA4C,CAAC,aAAa;AAC9D,QAAI,aAAa,iBAAiB;AACzB,aAAA;AAAA,IAAA;AAEF,WAAA,aAAa,WAAW,QAAQ;AAAA,EACzC;AAEM,QAAA,WAAwC,CAAC,aAAa;AAC1D,QAAI,aAAa,iBAAiB;AACzB,aAAA;AAAA,IAAA;AAEF,WAAA,aAAa,SAAS,QAAQ;AAAA,EACvC;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oCACP,IACA,UACA,WACA;AACA,QAAM,uBACJ,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI;AAAA,EAEpD;AACF,QAAM,kBAAkB,KAAK,KAAK,WAAW,YAAY;AAEnD,QAAA,eAAe,GAAG,mBAAmB;AAAA,IACzC,QAAQ,GAAG,aAAa;AAAA,IACxB,kBAAkB,GAAG,qBAAqB;AAAA,IAC1C,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,OAAO;AAAA,MACL,KAAK,CAAC,gBAAgB;AAAA,IAAA;AAAA,EACxB,CACD;AACD,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEO,SAAA;AAAA,IACL,MAAM,IAAI,MAAM,cAAc;AAAA,MAC5B,IAAI,QAAQ,MAA6B;AACvC,eAAO,iBAAiB,IAA2B,KAAK,OAAO,IAAI;AAAA,MAAA;AAAA,IACrE,CACD;AAAA,IACD;AAAA,EACF;AACF;AAEO,SAAS,oBACd,EAAE,MACF,UACA,WACA;AACM,QAAA,EAAE,MAAM,gBAAA,IAAoB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEM,QAAA,UAAU,GAAG,cAAc;AAAA,IAC/B,WAAW,CAAC,eAAe;AAAA,IAC3B,SAAS,CAAC;AAAA,IACV;AAAA,EAAA,CACD;AAEK,QAAA,aAAa,QAAQ,cAAc,eAAe;AACxD,MAAI,CAAC,YAAY;AACf,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,qCAAqB,IAAY;AACjC,QAAA,6CAA6B,IAAY;AACpC,aAAA,aAAa,CAAC,SAAS;;AAC5B,QAAA,GAAG,oBAAoB,IAAI,GAAG;AAChC,YAAM,kBAAkB,KAAK;AACzB,UAAA,GAAG,gBAAgB,eAAe,GAAG;AACvC,cAAM,mBAAmB,GAAG;AAAA,UAC1B,gBAAgB;AAAA,UAChB;AAAA,UACA,CAAC;AAAA,UACD;AAAA,QACF;AAEI,YAAA,GAAC,0DAAkB,mBAAlB,mBAAkC,YAAW;AACjC,yBAAA,IAAI,gBAAgB,IAAI;AAAA,QAAA,OAClC;AACkB,iCAAA;AAAA,YACrB,iBAAiB,eAAe,UAAU;AAAA,UAC5C;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AAEM,SAAA,EAAE,gBAAgB,uBAAuB;AAClD;"}
1
+ {"version":3,"file":"findTypingsPackages.mjs","sources":["../../../../../../src/tasks/buildTypesTask/findTypingsPackages.ts"],"sourcesContent":["import type * as ts from \"typescript\";\nimport * as path from \"node:path\";\nimport type { TSModule } from \"../../detectModules.js\";\n\ntype HostFunctions = {\n getSourceFile: ts.CompilerHost[\"getSourceFile\"];\n fileExists: ts.CompilerHost[\"fileExists\"];\n readFile: ts.CompilerHost[\"readFile\"];\n};\n\nfunction createVirtualHostFunctions(\n ts: TSModule[\"ts\"],\n virtualFilePath: string,\n virtualSourceContent: string,\n originalHost: ts.CompilerHost,\n): HostFunctions {\n const getSourceFile: ts.CompilerHost[\"getSourceFile\"] = (\n fileName,\n languageVersion,\n ) => {\n if (fileName === virtualFilePath) {\n return ts.createSourceFile(\n fileName,\n virtualSourceContent,\n languageVersion,\n );\n }\n return originalHost.getSourceFile(fileName, languageVersion);\n };\n\n const fileExists: ts.CompilerHost[\"fileExists\"] = (fileName) => {\n if (fileName === virtualFilePath) {\n return true;\n }\n return originalHost.fileExists(fileName);\n };\n\n const readFile: ts.CompilerHost[\"readFile\"] = (fileName) => {\n if (fileName === virtualFilePath) {\n return virtualSourceContent;\n }\n return originalHost.readFile(fileName);\n };\n\n return {\n getSourceFile,\n fileExists,\n readFile,\n };\n}\n\nfunction createCompilerHostWithVirtualSource(\n ts: TSModule[\"ts\"],\n packages: Set<string>,\n sourceDir: string,\n) {\n const virtualSourceContent =\n [...packages].map((p) => `import \"${p}\";`).join(\"\\n\") +\n // for ignoring the `Generated an empty chunk: \".\"` error\n \"export const a = 1;\\n\";\n const virtualFilePath = path.join(sourceDir, \"virtual.ts\");\n\n const originalHost = ts.createCompilerHost({\n target: ts.ScriptTarget.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext,\n baseUrl: \".\",\n sourceRoot: sourceDir,\n noEmit: true,\n emitDeclarationOnly: true,\n noEmitOnError: true,\n paths: {\n \"*\": [\"node_modules/*\"],\n },\n });\n const virtualFunctions = createVirtualHostFunctions(\n ts,\n virtualFilePath,\n virtualSourceContent,\n originalHost,\n );\n\n return {\n host: new Proxy(originalHost, {\n get(target, prop: keyof ts.CompilerHost) {\n return virtualFunctions[prop as keyof HostFunctions] || target[prop];\n },\n }),\n virtualFilePath,\n };\n}\n\nexport function findTypingsPackages(\n { ts }: TSModule,\n packages: Set<string>,\n sourceDir: string,\n) {\n const { host, virtualFilePath } = createCompilerHostWithVirtualSource(\n ts,\n packages,\n sourceDir,\n );\n\n const program = ts.createProgram({\n rootNames: [virtualFilePath],\n options: {},\n host: host,\n });\n\n const sourceFile = program.getSourceFile(virtualFilePath);\n if (!sourceFile) {\n throw new Error(\n \"[getSourceFile] Impossible error inside findMissingTypings\",\n );\n }\n\n const missingTypings = new Set<string>();\n const existingTypingPackages = new Set<string>();\n sourceFile.forEachChild((node) => {\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier;\n if (ts.isStringLiteral(moduleSpecifier)) {\n const moduleResolution = ts.resolveModuleName(\n moduleSpecifier.text,\n virtualFilePath,\n {},\n host,\n );\n\n if (!moduleResolution?.resolvedModule?.packageId) {\n missingTypings.add(moduleSpecifier.text);\n } else {\n existingTypingPackages.add(\n moduleResolution.resolvedModule.packageId.name,\n );\n }\n }\n }\n });\n\n return { missingTypings, existingTypingPackages };\n}\n"],"names":[],"mappings":";AAUA,SAAS,2BACP,IACA,iBACA,sBACA,cACe;AACT,QAAA,gBAAkD,CACtD,UACA,oBACG;AACH,QAAI,aAAa,iBAAiB;AAChC,aAAO,GAAG;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IAAA;AAEK,WAAA,aAAa,cAAc,UAAU,eAAe;AAAA,EAC7D;AAEM,QAAA,aAA4C,CAAC,aAAa;AAC9D,QAAI,aAAa,iBAAiB;AACzB,aAAA;AAAA,IAAA;AAEF,WAAA,aAAa,WAAW,QAAQ;AAAA,EACzC;AAEM,QAAA,WAAwC,CAAC,aAAa;AAC1D,QAAI,aAAa,iBAAiB;AACzB,aAAA;AAAA,IAAA;AAEF,WAAA,aAAa,SAAS,QAAQ;AAAA,EACvC;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oCACP,IACA,UACA,WACA;AACA,QAAM,uBACJ,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI;AAAA,EAEpD;AACF,QAAM,kBAAkB,KAAK,KAAK,WAAW,YAAY;AAEnD,QAAA,eAAe,GAAG,mBAAmB;AAAA,IACzC,QAAQ,GAAG,aAAa;AAAA,IACxB,kBAAkB,GAAG,qBAAqB;AAAA,IAC1C,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,OAAO;AAAA,MACL,KAAK,CAAC,gBAAgB;AAAA,IAAA;AAAA,EACxB,CACD;AACD,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEO,SAAA;AAAA,IACL,MAAM,IAAI,MAAM,cAAc;AAAA,MAC5B,IAAI,QAAQ,MAA6B;AACvC,eAAO,iBAAiB,IAA2B,KAAK,OAAO,IAAI;AAAA,MAAA;AAAA,IACrE,CACD;AAAA,IACD;AAAA,EACF;AACF;AAEO,SAAS,oBACd,EAAE,MACF,UACA,WACA;AACM,QAAA,EAAE,MAAM,gBAAA,IAAoB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEM,QAAA,UAAU,GAAG,cAAc;AAAA,IAC/B,WAAW,CAAC,eAAe;AAAA,IAC3B,SAAS,CAAC;AAAA,IACV;AAAA,EAAA,CACD;AAEK,QAAA,aAAa,QAAQ,cAAc,eAAe;AACxD,MAAI,CAAC,YAAY;AACf,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EAAA;AAGI,QAAA,qCAAqB,IAAY;AACjC,QAAA,6CAA6B,IAAY;AACpC,aAAA,aAAa,CAAC,SAAS;;AAC5B,QAAA,GAAG,oBAAoB,IAAI,GAAG;AAChC,YAAM,kBAAkB,KAAK;AACzB,UAAA,GAAG,gBAAgB,eAAe,GAAG;AACvC,cAAM,mBAAmB,GAAG;AAAA,UAC1B,gBAAgB;AAAA,UAChB;AAAA,UACA,CAAC;AAAA,UACD;AAAA,QACF;AAEI,YAAA,GAAC,0DAAkB,mBAAlB,mBAAkC,YAAW;AACjC,yBAAA,IAAI,gBAAgB,IAAI;AAAA,QAAA,OAClC;AACkB,iCAAA;AAAA,YACrB,iBAAiB,eAAe,UAAU;AAAA,UAC5C;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AAEM,SAAA,EAAE,gBAAgB,uBAAuB;AAClD;"}
@@ -0,0 +1,6 @@
1
+ import type { Dirs } from "../resolveDirs.js";
2
+ type GitignoreTaskArg = {
3
+ dirs: Dirs;
4
+ };
5
+ export declare function gitignoreTask({ dirs }: GitignoreTaskArg): Promise<void>;
6
+ export {};
@@ -0,0 +1,14 @@
1
+ import fs__default from "node:fs/promises";
2
+ import path__default from "node:path";
3
+ async function gitignoreTask({ dirs }) {
4
+ const { outDir } = dirs;
5
+ const gitignoreContent = "*\n";
6
+ const gitignorePath = path__default.join(outDir, ".gitignore");
7
+ await fs__default.writeFile(gitignorePath, gitignoreContent);
8
+ const npmignorePath = path__default.join(outDir, ".npmignore");
9
+ await fs__default.writeFile(npmignorePath, "");
10
+ }
11
+ export {
12
+ gitignoreTask
13
+ };
14
+ //# sourceMappingURL=gitignoreTask.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignoreTask.mjs","sources":["../../../../../src/tasks/gitignoreTask.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { Dirs } from \"../resolveDirs.js\";\n\ntype GitignoreTaskArg = {\n dirs: Dirs;\n};\n\nexport async function gitignoreTask({ dirs }: GitignoreTaskArg) {\n const { outDir } = dirs;\n\n // Ignore the all files to prevent commiting the dist\n const gitignoreContent = \"*\\n\";\n\n const gitignorePath = path.join(outDir, \".gitignore\");\n await fs.writeFile(gitignorePath, gitignoreContent);\n\n // We need to have empty .npmignore to avoid reading .gitignore in pnpm publishing\n const npmignorePath = path.join(outDir, \".npmignore\");\n await fs.writeFile(npmignorePath, \"\");\n}\n"],"names":["path","fs"],"mappings":";;AAQsB,eAAA,cAAc,EAAE,QAA0B;AACxD,QAAA,EAAE,WAAW;AAGnB,QAAM,mBAAmB;AAEzB,QAAM,gBAAgBA,cAAK,KAAK,QAAQ,YAAY;AAC9C,QAAAC,YAAG,UAAU,eAAe,gBAAgB;AAGlD,QAAM,gBAAgBD,cAAK,KAAK,QAAQ,YAAY;AAC9C,QAAAC,YAAG,UAAU,eAAe,EAAE;AACtC;"}
@@ -2,6 +2,7 @@ import { writeFile } from "node:fs/promises";
2
2
  import "zod";
3
3
  import "node:path";
4
4
  import { okLog } from "./log.mjs";
5
+ import { convertPackageJson } from "./monorepo/convertPackageJson.mjs";
5
6
  function extractValue(value) {
6
7
  if (!value) {
7
8
  return void 0;
@@ -11,28 +12,6 @@ function extractValue(value) {
11
12
  }
12
13
  return value.default;
13
14
  }
14
- const monorepoPostfix = "-sbsources";
15
- const monorepoPostfixRegex = new RegExp(`${monorepoPostfix}$`);
16
- function walkOverMonorepoDepsToRemovePostfix(deps) {
17
- if (!deps) {
18
- return void 0;
19
- }
20
- const res = {};
21
- for (const [key, value] of Object.entries(deps)) {
22
- if (key.endsWith(monorepoPostfix)) {
23
- res[key.replace(monorepoPostfixRegex, "")] = value;
24
- } else {
25
- res[key] = value;
26
- }
27
- }
28
- return res;
29
- }
30
- const allDepsClauses = [
31
- "dependencies",
32
- "optionalDependencies",
33
- "peerDependencies",
34
- "devDependencies"
35
- ];
36
15
  async function writePackageJson(outDir, parsed, { exportsMap, binsMap }) {
37
16
  const allExports = {};
38
17
  for (const [key, value] of exportsMap) {
@@ -58,17 +37,7 @@ async function writePackageJson(outDir, parsed, { exportsMap, binsMap }) {
58
37
  allExports["./package.json"] = "./package.json";
59
38
  const bin = binsMap.size > 0 ? Object.fromEntries(binsMap) : void 0;
60
39
  const rootExport = typeof allExports["."] === "object" ? allExports["."] : void 0;
61
- if (parsed.name.endsWith(monorepoPostfix)) {
62
- const originalName = parsed.name;
63
- parsed.name = parsed.name.replace(monorepoPostfix, "");
64
- for (const depClause of allDepsClauses) {
65
- parsed[depClause] = walkOverMonorepoDepsToRemovePostfix(
66
- parsed[depClause]
67
- );
68
- }
69
- parsed.devDependencies = parsed.devDependencies ?? {};
70
- parsed.devDependencies[originalName] = "*";
71
- }
40
+ parsed = convertPackageJson(parsed);
72
41
  const res = {
73
42
  name: parsed.name,
74
43
  type: "commonjs",
@@ -1 +1 @@
1
- {"version":3,"file":"writePackageJson.mjs","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { okLog } from \"./log.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\nconst monorepoPostfix = \"-sbsources\";\nconst monorepoPostfixRegex = new RegExp(`${monorepoPostfix}$`);\n\nfunction walkOverMonorepoDepsToRemovePostfix(\n deps: Record<string, string> | undefined,\n) {\n if (!deps) {\n return undefined;\n }\n\n const res: Record<string, string> = {};\n for (const [key, value] of Object.entries(deps)) {\n if (key.endsWith(monorepoPostfix)) {\n res[key.replace(monorepoPostfixRegex, \"\")] = value;\n } else {\n res[key] = value;\n }\n }\n return res;\n}\n\nconst allDepsClauses = [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n \"devDependencies\",\n] as const;\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\n if (parsed.name.endsWith(monorepoPostfix)) {\n const originalName = parsed.name;\n parsed.name = parsed.name.replace(monorepoPostfix, \"\");\n\n for (const depClause of allDepsClauses) {\n parsed[depClause] = walkOverMonorepoDepsToRemovePostfix(\n parsed[depClause],\n );\n }\n\n // add the sources to the devDeps to create a wire between source and dist\n parsed.devDependencies = parsed.devDependencies ?? {};\n parsed.devDependencies[originalName] = \"*\";\n }\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 peerDependenciesMeta: parsed.peerDependenciesMeta,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n\n okLog(\"package.json\");\n}\n"],"names":[],"mappings":";;;;AA0BA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EAAA;AAEL,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EAAA;AAET,SAAO,MAAM;AACf;AAEA,MAAM,kBAAkB;AACxB,MAAM,uBAAuB,IAAI,OAAO,GAAG,eAAe,GAAG;AAE7D,SAAS,oCACP,MACA;AACA,MAAI,CAAC,MAAM;AACF,WAAA;AAAA,EAAA;AAGT,QAAM,MAA8B,CAAC;AACrC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC3C,QAAA,IAAI,SAAS,eAAe,GAAG;AACjC,UAAI,IAAI,QAAQ,sBAAsB,EAAE,CAAC,IAAI;AAAA,IAAA,OACxC;AACL,UAAI,GAAG,IAAI;AAAA,IAAA;AAAA,EACb;AAEK,SAAA;AACT;AAEA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAC;AAC3D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAC;AAEzC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS,CAAC;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAAA;AAEvB,eAAA,OAAO,UAAU,MAAM;AAAA,IAAA;AAElC,QAAI,MAAM,KAAK;AACb,eAAS,UAAU,CAAC;AACpB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MAAA;AAExB,eAAA,QAAQ,UAAU,MAAM;AAAA,IAAA;AAI1B,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EAAA;AAEpB,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;AAE1D,MAAI,OAAO,KAAK,SAAS,eAAe,GAAG;AACzC,UAAM,eAAe,OAAO;AAC5B,WAAO,OAAO,OAAO,KAAK,QAAQ,iBAAiB,EAAE;AAErD,eAAW,aAAa,gBAAgB;AACtC,aAAO,SAAS,IAAI;AAAA,QAClB,OAAO,SAAS;AAAA,MAClB;AAAA,IAAA;AAIK,WAAA,kBAAkB,OAAO,mBAAmB,CAAC;AAC7C,WAAA,gBAAgB,YAAY,IAAI;AAAA,EAAA;AAEzC,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,IACxB,sBAAsB,OAAO;AAAA,EAC/B;AAEM,QAAA,UAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAEtE,QAAM,cAAc;AACtB;"}
1
+ {"version":3,"file":"writePackageJson.mjs","sources":["../../../../src/writePackageJson.ts"],"sourcesContent":["import { writeFile } from \"node:fs/promises\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { okLog } from \"./log.js\";\nimport { convertPackageJson } from \"./monorepo/convertPackageJson.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\n parsed = convertPackageJson(parsed);\n\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 peerDependenciesMeta: parsed.peerDependenciesMeta,\n };\n\n await writeFile(`${outDir}/package.json`, JSON.stringify(res, null, 2));\n\n okLog(\"package.json\");\n}\n"],"names":[],"mappings":";;;;;AA2BA,SAAS,aAAa,OAA+B;AACnD,MAAI,CAAC,OAAO;AACH,WAAA;AAAA,EAAA;AAEL,MAAA,OAAO,UAAU,UAAU;AACtB,WAAA;AAAA,EAAA;AAET,SAAO,MAAM;AACf;AAEA,eAAsB,iBACpB,QACA,QACA,EAAE,YAAY,WACd;AAGA,QAAM,aAAoD,CAAC;AAC3D,aAAW,CAAC,KAAK,KAAK,KAAK,YAAY;AACrC,UAAM,WAAkC,CAAC;AAEzC,QAAI,MAAM,KAAK;AACb,eAAS,SAAS,CAAC;AACnB,UAAI,MAAM,MAAM;AACL,iBAAA,OAAO,QAAQ,MAAM;AAAA,MAAA;AAEvB,eAAA,OAAO,UAAU,MAAM;AAAA,IAAA;AAElC,QAAI,MAAM,KAAK;AACb,eAAS,UAAU,CAAC;AACpB,UAAI,MAAM,MAAM;AACL,iBAAA,QAAQ,QAAQ,MAAM;AAAA,MAAA;AAExB,eAAA,QAAQ,UAAU,MAAM;AAAA,IAAA;AAI1B,aAAA,QAAQ,MAAM,QAAQ,MAAM;AAGrC,aAAS,UAAU,MAAM;AAEzB,eAAW,GAAG,IAAI;AAAA,EAAA;AAEpB,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;AAE1D,WAAS,mBAAmB,MAAM;AAElC,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,IACxB,sBAAsB,OAAO;AAAA,EAC/B;AAEM,QAAA,UAAU,GAAG,MAAM,iBAAiB,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAEtE,QAAM,cAAc;AACtB;"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "smartbundle",
3
3
  "type": "commonjs",
4
- "version": "0.15.0-alpha.0",
4
+ "version": "0.15.0-alpha.1",
5
5
  "bin": {
6
- "smartbundle": "__bin__/smartbundle.js"
6
+ "smartbundle": "__bin__/smartbundle.js",
7
+ "smartbundle-monorepo-link": "__bin__/smartbundle-monorepo-link.js"
7
8
  },
8
9
  "types": "./__compiled__/cjs/src/index.d.ts",
9
10
  "module": "./__compiled__/esm/src/index.mjs",
@@ -25,11 +26,13 @@
25
26
  "./package.json": "./package.json"
26
27
  },
27
28
  "dependencies": {
28
- "semver": "^7.7.1",
29
- "vite": "^6.2.4",
29
+ "glob": "^11.0.3",
30
+ "semver": "^7.7.2",
31
+ "vite": "^6.3.5",
32
+ "yaml": "^2.8.0",
30
33
  "yargs": "^17.7.2",
31
- "youch": "4.1.0-beta.6",
32
- "zod": "^3.24.2"
34
+ "youch": "4.1.0-beta.8",
35
+ "zod": "^3.25.67"
33
36
  },
34
37
  "repository": {
35
38
  "type": "git",
@@ -54,20 +57,23 @@
54
57
  "typescript": "^5.0.0",
55
58
  "vitest": "^3.0.0"
56
59
  },
60
+ "engines": {
61
+ "pnpm": "^10.11.0"
62
+ },
57
63
  "bugs": {
58
64
  "url": "https://github.com/xavescor/smartbundle/issues"
59
65
  },
60
66
  "homepage": "https://github.com/xavescor/smartbundle",
61
67
  "devDependencies": {
62
68
  "@types/babel__core": "^7.20.5",
63
- "@types/node": "^22.13.14",
69
+ "@types/node": "^22.15.32",
64
70
  "@types/semver": "^7.7.0",
65
71
  "@types/yargs": "^17.0.33",
66
72
  "prettier": "^3.5.3",
67
- "typescript": "^5.8.2",
68
- "vitest": "^3.1.1",
69
- "vitest-directory-snapshot": "^0.5.0",
70
- "zx": "^8.4.1"
73
+ "typescript": "^5.8.3",
74
+ "vitest": "^3.2.4",
75
+ "vitest-directory-snapshot": "^0.6.1",
76
+ "zx": "^8.5.5"
71
77
  },
72
78
  "peerDependenciesMeta": {
73
79
  "@babel/core": {