smartbundle 0.11.0-alpha.2 → 0.11.0-alpha.4

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.
@@ -27,6 +27,38 @@ require("zod");
27
27
  require("node:path");
28
28
  const semver = require("semver");
29
29
  const log = require("./log.js");
30
+ function getMinVersion(packageJson, depName, exclude) {
31
+ var _a;
32
+ const allDepKeys = /* @__PURE__ */ new Set([
33
+ "dependencies",
34
+ "devDependencies",
35
+ "peerDependencies",
36
+ "optionalDependencies"
37
+ ]);
38
+ for (const e of exclude) {
39
+ allDepKeys.delete(e);
40
+ }
41
+ let minVersion = null;
42
+ for (const depKey of allDepKeys) {
43
+ const depVersion = (_a = packageJson[depKey]) == null ? void 0 : _a[depName];
44
+ if (depVersion) {
45
+ const version = semver.minVersion(depVersion);
46
+ if (!version) {
47
+ log.warnLog("node-semver cannot parse version of", depName, "from", depKey);
48
+ log.warnLog("Version:", depVersion);
49
+ continue;
50
+ }
51
+ if (!minVersion) {
52
+ minVersion = version;
53
+ continue;
54
+ }
55
+ if (semver.lt(version, minVersion)) {
56
+ minVersion = version;
57
+ }
58
+ }
59
+ }
60
+ return minVersion;
61
+ }
30
62
  async function detectBabel(packageJson) {
31
63
  if ("@babel/core" in (packageJson.optionalDependencies ?? {})) {
32
64
  log.errorLog("babel excluded because inside optionalDependencies");
@@ -41,18 +73,14 @@ async function detectBabel(packageJson) {
41
73
  }
42
74
  }
43
75
  async function detectReact(packageJson) {
44
- var _a, _b, _c;
45
- const reactVersion = ((_a = packageJson.dependencies) == null ? void 0 : _a.react) ?? ((_b = packageJson.devDependencies) == null ? void 0 : _b.react) ?? ((_c = packageJson.optionalDependencies) == null ? void 0 : _c.react);
76
+ const reactVersion = getMinVersion(packageJson, "react", ["devDependencies"]);
46
77
  if (reactVersion) {
47
- const minReactVersion = semver.minVersion(reactVersion);
48
- if (minReactVersion) {
49
- const isLegacy = semver.lt(minReactVersion, "17.0.0");
50
- const transform = isLegacy ? "legacy" : "modern";
51
- log.okLog(
52
- `react, min version: ${minReactVersion.version}. Transform: ${transform}`
53
- );
54
- return transform;
55
- }
78
+ const isLegacy = semver.lt(reactVersion, "17.0.0");
79
+ const transform = isLegacy ? "legacy" : "modern";
80
+ log.okLog(
81
+ `react, min version: ${reactVersion.version}. Transform: ${transform}`
82
+ );
83
+ return transform;
56
84
  }
57
85
  log.errorLog("react");
58
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion =\n packageJson.dependencies?.react ??\n packageJson.devDependencies?.react ??\n packageJson.optionalDependencies?.react;\n if (reactVersion) {\n const minReactVersion = semver.minVersion(reactVersion);\n if (minReactVersion) {\n const isLegacy = semver.lt(minReactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${minReactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n }\n errorLog(\"react\");\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":["errorLog","okLog","log","lineLog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7DA,QAAA,SAAS,oDAAoD;AAC7D;AAAA,EACF;AAEI,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClCC,QAAAA,MAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACND,QAAA,SAAS,OAAO;AAAA,EAClB;AACF;AAEA,eAAe,YACb,aAC0C;;AACpC,QAAA,iBACJ,iBAAY,iBAAZ,mBAA0B,YAC1B,iBAAY,oBAAZ,mBAA6B,YAC7B,iBAAY,yBAAZ,mBAAkC;AACpC,MAAI,cAAc;AACV,UAAA,kBAAkB,OAAO,WAAW,YAAY;AACtD,QAAI,iBAAiB;AACnB,YAAM,WAAW,OAAO,GAAG,iBAAiB,QAAQ;AAC9C,YAAA,YAAY,WAAW,WAAW;AACxCC,UAAA;AAAA,QACE,uBAAuB,gBAAgB,OAAO,gBAAgB,SAAS;AAAA,MAAA;AAElE,aAAA;AAAA,IACT;AAAA,EACF;AACAD,MAAA,SAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAA;AAChCE,MAAA,IAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnCD,QAAAA,MAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACND,QAAA,SAAS,YAAY;AAAA,EACvB;AAEO,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpCG,MAAAA;AACD,SAAA;AACT;;"}
1
+ {"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nfunction getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n errorLog(\"react\");\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":["warnLog","errorLog","okLog","log","lineLog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,SAAS,cACP,aACA,SACA,SACsB;;AAChB,QAAA,iCAAiB,IAAa;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,aAAW,KAAK,SAAS;AACvB,eAAW,OAAO,CAAC;AAAA,EACrB;AAEA,MAAI,aAAmC;AACvC,aAAW,UAAU,YAAY;AAC/B,UAAM,cAAa,iBAAY,MAAM,MAAlB,mBAAsB;AACzC,QAAI,YAAY;AACR,YAAA,UAAU,OAAO,WAAW,UAAU;AAC5C,UAAI,CAAC,SAAS;AACJA,YAAAA,QAAA,uCAAuC,SAAS,QAAQ,MAAM;AACtEA,oBAAQ,YAAY,UAAU;AAC9B;AAAA,MACF;AACA,UAAI,CAAC,YAAY;AACF,qBAAA;AACb;AAAA,MACF;AACA,UAAI,OAAO,GAAG,SAAS,UAAU,GAAG;AACrB,qBAAA;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEO,SAAA;AACT;AAEA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7DC,QAAA,SAAS,oDAAoD;AAC7D;AAAA,EACF;AAEI,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClCC,QAAAA,MAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACND,QAAA,SAAS,OAAO;AAAA,EAClB;AACF;AAEA,eAAe,YACb,aAC0C;AAC1C,QAAM,eAAe,cAAc,aAAa,SAAS,CAAC,iBAAiB,CAAC;AAC5E,MAAI,cAAc;AAChB,UAAM,WAAW,OAAO,GAAG,cAAc,QAAQ;AAC3C,UAAA,YAAY,WAAW,WAAW;AACxCC,QAAA;AAAA,MACE,uBAAuB,aAAa,OAAO,gBAAgB,SAAS;AAAA,IAAA;AAE/D,WAAA;AAAA,EACT;AACAD,MAAA,SAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAA;AAChCE,MAAA,IAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnCD,QAAAA,MAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACND,QAAA,SAAS,YAAY;AAAA,EACvB;AAEO,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpCG,MAAAA;AACD,SAAA;AACT;;"}
@@ -1,5 +1,6 @@
1
1
  export declare function disableLog(): void;
2
2
  export declare function log(...messages: Array<string>): void;
3
+ export declare function warnLog(...messages: Array<string>): void;
3
4
  export declare function okLog(...messages: Array<string>): void;
4
5
  export declare function errorLog(...messages: Array<string>): void;
5
6
  export declare function lineLog(): void;
@@ -9,6 +9,11 @@ function log(...messages) {
9
9
  console.log(...messages);
10
10
  }
11
11
  }
12
+ function warnLog(...messages) {
13
+ if (logEnabled) {
14
+ console.warn(...messages);
15
+ }
16
+ }
12
17
  function okLog(...messages) {
13
18
  log(`✅ ${messages.join(" ")}`);
14
19
  }
@@ -23,4 +28,5 @@ exports.errorLog = errorLog;
23
28
  exports.lineLog = lineLog;
24
29
  exports.log = log;
25
30
  exports.okLog = okLog;
31
+ exports.warnLog = warnLog;
26
32
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":";;AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,EACzB;AACF;AAEO,SAAS,SAAS,UAAyB;AAChD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,YAAY,UAAyB;AACnD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,UAAU;AACpB,MAAA,IAAI,OAAO,EAAE,CAAC;AACpB;;;;;;"}
1
+ {"version":3,"file":"log.js","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\nexport function warnLog(...messages: Array<string>) {\n if (logEnabled) {\n console.warn(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":";;AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,EACzB;AACF;AACO,SAAS,WAAW,UAAyB;AAClD,MAAI,YAAY;AACN,YAAA,KAAK,GAAG,QAAQ;AAAA,EAC1B;AACF;AAEO,SAAS,SAAS,UAAyB;AAChD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,YAAY,UAAyB;AACnD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,UAAU;AACpB,MAAA,IAAI,OAAO,EAAE,CAAC;AACpB;;;;;;;"}
@@ -54,6 +54,7 @@ async function callTypescript({
54
54
  strictPropertyInitialization: false,
55
55
  skipLibCheck: true,
56
56
  skipDefaultLibCheck: true,
57
+ outDir: "",
57
58
  // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352
58
59
  noEmit: false
59
60
  },
@@ -1 +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\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, type: \"esm\" | \"cjs\", filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, \"__compiled__\", type, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\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(\n esmFinalPath,\n inlineExtensionsMjs(data, makeFileExists(outDir, \"esm\", relativePath)),\n );\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(\n cjsFinalPath,\n inlineExtensionsCjs(data, makeFileExists(outDir, \"cjs\", relativePath)),\n );\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs","inlineExtensionsMjs","inlineExtensionsCjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,eAAe,QAAgB,MAAqB,UAAkB;AAC7E,SAAO,CAAC,MAAc;AACd,UAAA,MAAMA,gBAAK,KAAK,QAAQ,gBAAgB,MAAMA,gBAAK,QAAQ,QAAQ,CAAC;AAC1E,WAAOC,cAAG,WAAWD,gBAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAE1C;AAEA,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;AAAA,MACD;AAAA,MACAC,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAGvE,UAAM,eAAeF,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1DC,kBAAA;AAAA,MACD;AAAA,MACAE,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAExD,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;;"}
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\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, type: \"esm\" | \"cjs\", filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, \"__compiled__\", type, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\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 outDir: \"\",\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(\n esmFinalPath,\n inlineExtensionsMjs(data, makeFileExists(outDir, \"esm\", relativePath)),\n );\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(\n cjsFinalPath,\n inlineExtensionsCjs(data, makeFileExists(outDir, \"cjs\", relativePath)),\n );\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path","fs","inlineExtensionsMjs","inlineExtensionsCjs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,eAAe,QAAgB,MAAqB,UAAkB;AAC7E,SAAO,CAAC,MAAc;AACd,UAAA,MAAMA,gBAAK,KAAK,QAAQ,gBAAgB,MAAMA,gBAAK,QAAQ,QAAQ,CAAC;AAC1E,WAAOC,cAAG,WAAWD,gBAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAE1C;AAEA,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,MACrB,QAAQ;AAAA;AAAA,MAER,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;AAAA,MACD;AAAA,MACAC,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAGvE,UAAM,eAAeF,gBAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1DC,kBAAA;AAAA,MACD;AAAA,MACAE,qCAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAExD,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;;"}
@@ -2,7 +2,39 @@ import "node:fs/promises";
2
2
  import "zod";
3
3
  import "node:path";
4
4
  import semver from "semver";
5
- import { log, okLog, errorLog, lineLog } from "./log.mjs";
5
+ import { log, okLog, errorLog, lineLog, warnLog } from "./log.mjs";
6
+ function getMinVersion(packageJson, depName, exclude) {
7
+ var _a;
8
+ const allDepKeys = /* @__PURE__ */ new Set([
9
+ "dependencies",
10
+ "devDependencies",
11
+ "peerDependencies",
12
+ "optionalDependencies"
13
+ ]);
14
+ for (const e of exclude) {
15
+ allDepKeys.delete(e);
16
+ }
17
+ let minVersion = null;
18
+ for (const depKey of allDepKeys) {
19
+ const depVersion = (_a = packageJson[depKey]) == null ? void 0 : _a[depName];
20
+ if (depVersion) {
21
+ const version = semver.minVersion(depVersion);
22
+ if (!version) {
23
+ warnLog("node-semver cannot parse version of", depName, "from", depKey);
24
+ warnLog("Version:", depVersion);
25
+ continue;
26
+ }
27
+ if (!minVersion) {
28
+ minVersion = version;
29
+ continue;
30
+ }
31
+ if (semver.lt(version, minVersion)) {
32
+ minVersion = version;
33
+ }
34
+ }
35
+ }
36
+ return minVersion;
37
+ }
6
38
  async function detectBabel(packageJson) {
7
39
  if ("@babel/core" in (packageJson.optionalDependencies ?? {})) {
8
40
  errorLog("babel excluded because inside optionalDependencies");
@@ -17,18 +49,14 @@ async function detectBabel(packageJson) {
17
49
  }
18
50
  }
19
51
  async function detectReact(packageJson) {
20
- var _a, _b, _c;
21
- const reactVersion = ((_a = packageJson.dependencies) == null ? void 0 : _a.react) ?? ((_b = packageJson.devDependencies) == null ? void 0 : _b.react) ?? ((_c = packageJson.optionalDependencies) == null ? void 0 : _c.react);
52
+ const reactVersion = getMinVersion(packageJson, "react", ["devDependencies"]);
22
53
  if (reactVersion) {
23
- const minReactVersion = semver.minVersion(reactVersion);
24
- if (minReactVersion) {
25
- const isLegacy = semver.lt(minReactVersion, "17.0.0");
26
- const transform = isLegacy ? "legacy" : "modern";
27
- okLog(
28
- `react, min version: ${minReactVersion.version}. Transform: ${transform}`
29
- );
30
- return transform;
31
- }
54
+ const isLegacy = semver.lt(reactVersion, "17.0.0");
55
+ const transform = isLegacy ? "legacy" : "modern";
56
+ okLog(
57
+ `react, min version: ${reactVersion.version}. Transform: ${transform}`
58
+ );
59
+ return transform;
32
60
  }
33
61
  errorLog("react");
34
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion =\n packageJson.dependencies?.react ??\n packageJson.devDependencies?.react ??\n packageJson.optionalDependencies?.react;\n if (reactVersion) {\n const minReactVersion = semver.minVersion(reactVersion);\n if (minReactVersion) {\n const isLegacy = semver.lt(minReactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${minReactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n }\n errorLog(\"react\");\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":[],"mappings":";;;;;AAUA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7D,aAAS,oDAAoD;AAC7D;AAAA,EACF;AAEI,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClC,UAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACN,aAAS,OAAO;AAAA,EAClB;AACF;AAEA,eAAe,YACb,aAC0C;;AACpC,QAAA,iBACJ,iBAAY,iBAAZ,mBAA0B,YAC1B,iBAAY,oBAAZ,mBAA6B,YAC7B,iBAAY,yBAAZ,mBAAkC;AACpC,MAAI,cAAc;AACV,UAAA,kBAAkB,OAAO,WAAW,YAAY;AACtD,QAAI,iBAAiB;AACnB,YAAM,WAAW,OAAO,GAAG,iBAAiB,QAAQ;AAC9C,YAAA,YAAY,WAAW,WAAW;AACxC;AAAA,QACE,uBAAuB,gBAAgB,OAAO,gBAAgB,SAAS;AAAA,MAAA;AAElE,aAAA;AAAA,IACT;AAAA,EACF;AACA,WAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAA;AAChC,MAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnC,UAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACN,aAAS,YAAY;AAAA,EACvB;AAEO,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpC;AACD,SAAA;AACT;"}
1
+ {"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\n\nexport type DetectedModules = {\n ts?: typeof import(\"typescript\");\n babel?: typeof import(\"@babel/core\");\n react?: \"legacy\" | \"modern\";\n};\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nfunction getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n): Promise<typeof import(\"@babel/core\") | undefined> {\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return;\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return babel;\n } catch {\n errorLog(\"babel\");\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n): Promise<\"legacy\" | \"modern\" | undefined> {\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return transform;\n }\n errorLog(\"react\");\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n): Promise<DetectedModules> {\n const result: DetectedModules = {};\n log(\"Detecting modules\");\n try {\n // ts <=4.3 has no named exports. The all methods is located in the default export\n result.ts = (await import(\"typescript\")).default;\n okLog(\"typescript, version:\", result.ts.version);\n } catch {\n errorLog(\"typescript\");\n }\n\n result.babel = await detectBabel(packageJson);\n result.react = await detectReact(packageJson);\n\n lineLog();\n return result;\n}\n"],"names":[],"mappings":";;;;;AAeA,SAAS,cACP,aACA,SACA,SACsB;;AAChB,QAAA,iCAAiB,IAAa;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACD,aAAW,KAAK,SAAS;AACvB,eAAW,OAAO,CAAC;AAAA,EACrB;AAEA,MAAI,aAAmC;AACvC,aAAW,UAAU,YAAY;AAC/B,UAAM,cAAa,iBAAY,MAAM,MAAlB,mBAAsB;AACzC,QAAI,YAAY;AACR,YAAA,UAAU,OAAO,WAAW,UAAU;AAC5C,UAAI,CAAC,SAAS;AACJ,gBAAA,uCAAuC,SAAS,QAAQ,MAAM;AACtE,gBAAQ,YAAY,UAAU;AAC9B;AAAA,MACF;AACA,UAAI,CAAC,YAAY;AACF,qBAAA;AACb;AAAA,MACF;AACA,UAAI,OAAO,GAAG,SAAS,UAAU,GAAG;AACrB,qBAAA;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAEO,SAAA;AACT;AAEA,eAAe,YACb,aACmD;AACnD,MAAI,kBAAkB,YAAY,wBAAwB,CAAK,IAAA;AAC7D,aAAS,oDAAoD;AAC7D;AAAA,EACF;AAEI,MAAA;AACI,UAAA,QAAQ,MAAM,OAAO,aAAa;AAClC,UAAA,mBAAmB,MAAM,OAAO;AAC/B,WAAA;AAAA,EAAA,QACD;AACN,aAAS,OAAO;AAAA,EAClB;AACF;AAEA,eAAe,YACb,aAC0C;AAC1C,QAAM,eAAe,cAAc,aAAa,SAAS,CAAC,iBAAiB,CAAC;AAC5E,MAAI,cAAc;AAChB,UAAM,WAAW,OAAO,GAAG,cAAc,QAAQ;AAC3C,UAAA,YAAY,WAAW,WAAW;AACxC;AAAA,MACE,uBAAuB,aAAa,OAAO,gBAAgB,SAAS;AAAA,IAAA;AAE/D,WAAA;AAAA,EACT;AACA,WAAS,OAAO;AAClB;AAEA,eAAsB,cACpB,aAC0B;AAC1B,QAAM,SAA0B,CAAA;AAChC,MAAI,mBAAmB;AACnB,MAAA;AAEF,WAAO,MAAM,MAAM,OAAO,YAAY,GAAG;AACnC,UAAA,wBAAwB,OAAO,GAAG,OAAO;AAAA,EAAA,QACzC;AACN,aAAS,YAAY;AAAA,EACvB;AAEO,SAAA,QAAQ,MAAM,YAAY,WAAW;AACrC,SAAA,QAAQ,MAAM,YAAY,WAAW;AAEpC;AACD,SAAA;AACT;"}
@@ -1,5 +1,6 @@
1
1
  export declare function disableLog(): void;
2
2
  export declare function log(...messages: Array<string>): void;
3
+ export declare function warnLog(...messages: Array<string>): void;
3
4
  export declare function okLog(...messages: Array<string>): void;
4
5
  export declare function errorLog(...messages: Array<string>): void;
5
6
  export declare function lineLog(): void;
@@ -7,6 +7,11 @@ function log(...messages) {
7
7
  console.log(...messages);
8
8
  }
9
9
  }
10
+ function warnLog(...messages) {
11
+ if (logEnabled) {
12
+ console.warn(...messages);
13
+ }
14
+ }
10
15
  function okLog(...messages) {
11
16
  log(`✅ ${messages.join(" ")}`);
12
17
  }
@@ -21,6 +26,7 @@ export {
21
26
  errorLog,
22
27
  lineLog,
23
28
  log,
24
- okLog
29
+ okLog,
30
+ warnLog
25
31
  };
26
32
  //# sourceMappingURL=log.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.mjs","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":"AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,EACzB;AACF;AAEO,SAAS,SAAS,UAAyB;AAChD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,YAAY,UAAyB;AACnD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,UAAU;AACpB,MAAA,IAAI,OAAO,EAAE,CAAC;AACpB;"}
1
+ {"version":3,"file":"log.mjs","sources":["../../../../src/log.ts"],"sourcesContent":["let logEnabled = true;\nexport function disableLog() {\n logEnabled = false;\n}\n\nexport function log(...messages: Array<string>) {\n if (logEnabled) {\n console.log(...messages);\n }\n}\nexport function warnLog(...messages: Array<string>) {\n if (logEnabled) {\n console.warn(...messages);\n }\n}\n\nexport function okLog(...messages: Array<string>) {\n log(`✅ ${messages.join(\" \")}`);\n}\nexport function errorLog(...messages: Array<string>) {\n log(`❌ ${messages.join(\" \")}`);\n}\nexport function lineLog() {\n log(\"=\".repeat(40));\n}\n"],"names":[],"mappings":"AAAA,IAAI,aAAa;AACV,SAAS,aAAa;AACd,eAAA;AACf;AAEO,SAAS,OAAO,UAAyB;AAC9C,MAAI,YAAY;AACN,YAAA,IAAI,GAAG,QAAQ;AAAA,EACzB;AACF;AACO,SAAS,WAAW,UAAyB;AAClD,MAAI,YAAY;AACN,YAAA,KAAK,GAAG,QAAQ;AAAA,EAC1B;AACF;AAEO,SAAS,SAAS,UAAyB;AAChD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,YAAY,UAAyB;AACnD,MAAI,KAAK,SAAS,KAAK,GAAG,CAAC,EAAE;AAC/B;AACO,SAAS,UAAU;AACpB,MAAA,IAAI,OAAO,EAAE,CAAC;AACpB;"}
@@ -34,6 +34,7 @@ async function callTypescript({
34
34
  strictPropertyInitialization: false,
35
35
  skipLibCheck: true,
36
36
  skipDefaultLibCheck: true,
37
+ outDir: "",
37
38
  // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352
38
39
  noEmit: false
39
40
  },
@@ -1 +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\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, type: \"esm\" | \"cjs\", filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, \"__compiled__\", type, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\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(\n esmFinalPath,\n inlineExtensionsMjs(data, makeFileExists(outDir, \"esm\", relativePath)),\n );\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(\n cjsFinalPath,\n inlineExtensionsCjs(data, makeFileExists(outDir, \"cjs\", relativePath)),\n );\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path"],"mappings":";;;AAcA,SAAS,eAAe,QAAgB,MAAqB,UAAkB;AAC7E,SAAO,CAAC,MAAc;AACd,UAAA,MAAM,KAAK,KAAK,QAAQ,gBAAgB,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC1E,WAAO,GAAG,WAAW,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAE1C;AAEA,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;AAAA,MACD;AAAA,MACA,oBAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAGvE,UAAM,eAAe,KAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1D,OAAA;AAAA,MACD;AAAA,MACA,oBAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAExD,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;"}
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\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n sourceDir: string;\n files: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, type: \"esm\" | \"cjs\", filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, \"__compiled__\", type, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\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 outDir: \"\",\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(\n esmFinalPath,\n inlineExtensionsMjs(data, makeFileExists(outDir, \"esm\", relativePath)),\n );\n\n const finalCjsPath = path.join(outDir, \"__compiled__\", \"cjs\", relativePath);\n const cjsFinalPath = finalCjsPath.replace(/\\.d\\.ts$/, \".d.ts\");\n fs.writeFileSync(\n cjsFinalPath,\n inlineExtensionsCjs(data, makeFileExists(outDir, \"cjs\", relativePath)),\n );\n sourceToDtsMap.set(cjsFinalPath, sourceFileName);\n });\n\n return sourceToDtsMap;\n}\n"],"names":["path"],"mappings":";;;AAcA,SAAS,eAAe,QAAgB,MAAqB,UAAkB;AAC7E,SAAO,CAAC,MAAc;AACd,UAAA,MAAM,KAAK,KAAK,QAAQ,gBAAgB,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC1E,WAAO,GAAG,WAAW,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EAAA;AAE1C;AAEA,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,MACrB,QAAQ;AAAA;AAAA,MAER,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;AAAA,MACD;AAAA,MACA,oBAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAGvE,UAAM,eAAe,KAAK,KAAK,QAAQ,gBAAgB,OAAO,YAAY;AAC1E,UAAM,eAAe,aAAa,QAAQ,YAAY,OAAO;AAC1D,OAAA;AAAA,MACD;AAAA,MACA,oBAAoB,MAAM,eAAe,QAAQ,OAAO,YAAY,CAAC;AAAA,IAAA;AAExD,mBAAA,IAAI,cAAc,cAAc;AAAA,EAAA,CAChD;AAEM,SAAA;AACT;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "smartbundle",
3
3
  "type": "commonjs",
4
- "version": "0.11.0-alpha.2",
4
+ "version": "0.11.0-alpha.4",
5
5
  "bin": {
6
6
  "smartbundle": "__bin__/smartbundle.js"
7
7
  },