@yaonyan/jsr2npm 0.1.8 → 0.1.9

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 (2) hide show
  1. package/bin/jsr2npm.mjs +28 -15
  2. package/package.json +1 -1
package/bin/jsr2npm.mjs CHANGED
@@ -21,6 +21,7 @@ import $ from "dax-sh";
21
21
  import { chmod, mkdir as mkdir2, readFile as readFile3, rename, rm, stat as stat3, writeFile as writeFile2 } from "node:fs/promises";
22
22
  import { join as join3 } from "node:path";
23
23
  import { mkdirSync } from "node:fs";
24
+ import process3 from "node:process";
24
25
 
25
26
  // __yao__jsr2npm_latest/node_modules/@yao/jsr2npm/bundler.js
26
27
  import { copyFile, mkdir, readdir, stat } from "node:fs/promises";
@@ -301,15 +302,15 @@ async function convertPackage(packageName, version, bin, overrides, browser) {
301
302
  console.log(`\u{1F310} Browser mode: enabled`);
302
303
  }
303
304
  const workspaceDir = createWorkspace(packageName, version);
304
- const originalCwd = process.cwd();
305
+ const originalCwd = process3.cwd();
305
306
  try {
306
- process.chdir(workspaceDir);
307
+ process3.chdir(workspaceDir);
307
308
  await installJSRPackage(packageName, version);
308
309
  const packageDir = join3("node_modules", packageName);
309
310
  await mkdir2(join3(packageDir, "dist"), {
310
311
  recursive: true
311
312
  });
312
- const { externals, allDependencies } = await getExternalPackages(packageDir);
313
+ const { externals, allDependencies } = await getExternalPackages(packageDir, overrides);
313
314
  await bundlePackage(packageDir, bin, externals, browser);
314
315
  await copyTypeDeclarations(packageDir);
315
316
  await copyExtraFiles(packageDir, `${packageDir}/dist`);
@@ -318,7 +319,7 @@ async function convertPackage(packageName, version, bin, overrides, browser) {
318
319
  console.log("\n\u2705 Conversion completed!");
319
320
  console.log(`\u{1F4C2} Output: ${workspaceDir}/dist`);
320
321
  } finally {
321
- process.chdir(originalCwd);
322
+ process3.chdir(originalCwd);
322
323
  }
323
324
  }
324
325
  function createWorkspace(packageName, version) {
@@ -329,26 +330,38 @@ function createWorkspace(packageName, version) {
329
330
  console.log(`\u{1F4C1} Created folder: ${folderName}`);
330
331
  return folderName;
331
332
  }
332
- async function getExternalPackages(packageDir) {
333
+ async function getExternalPackages(packageDir, overrides) {
333
334
  try {
334
335
  const content = await readFile3(join3(packageDir, "package.json"), "utf-8");
335
336
  const pkgJson = JSON.parse(content);
336
- if (!pkgJson.dependencies) return {
337
- externals: [],
338
- allDependencies: {}
339
- };
337
+ const userDependencies = overrides?.dependencies || {};
338
+ if (!pkgJson.dependencies && Object.keys(userDependencies).length === 0) {
339
+ return {
340
+ externals: [],
341
+ allDependencies: {}
342
+ };
343
+ }
340
344
  const topLevelDeps = {};
341
- for (const [name, version] of Object.entries(pkgJson.dependencies)) {
342
- if (!name.startsWith("@jsr/")) {
343
- topLevelDeps[name] = String(version);
345
+ if (pkgJson.dependencies) {
346
+ for (const [name, version] of Object.entries(pkgJson.dependencies)) {
347
+ if (!name.startsWith("@jsr/")) {
348
+ topLevelDeps[name] = String(version);
349
+ }
344
350
  }
345
351
  }
346
- const jsrPackages = Object.keys(pkgJson.dependencies).filter((name) => name.startsWith("@jsr/"));
352
+ for (const [name, version] of Object.entries(userDependencies)) {
353
+ topLevelDeps[name] = version;
354
+ }
355
+ const jsrPackages = pkgJson.dependencies ? Object.keys(pkgJson.dependencies).filter((name) => name.startsWith("@jsr/")) : [];
347
356
  const conflictingPackages = await findConflictingPackages(packageDir, jsrPackages, topLevelDeps);
348
357
  const externals = Object.keys(topLevelDeps).filter((name) => !conflictingPackages.has(name));
349
358
  const externalList = externals.join(", ") || "none";
350
359
  console.log(`
351
360
  \u{1F4E6} External dependencies (${externals.length}): ${externalList}`);
361
+ if (Object.keys(userDependencies).length > 0) {
362
+ const userDepsList = Object.keys(userDependencies).join(", ");
363
+ console.log(`\u{1F4DD} User-configured dependencies: ${userDepsList}`);
364
+ }
352
365
  if (conflictingPackages.size > 0) {
353
366
  const conflictList = Array.from(conflictingPackages).join(", ");
354
367
  console.log(`\u26A0\uFE0F Version conflicts, will bundle: ${conflictList}`);
@@ -427,7 +440,7 @@ async function installJSRPackage(packageName, version) {
427
440
  await writeFile2("package.json", "{}");
428
441
  const packageSpec = version === "latest" ? packageName : `${packageName}@${version}`;
429
442
  console.log(`\u{1F504} Installing: ${packageSpec}`);
430
- await $`npx jsr add ${packageSpec}`.cwd(process.cwd());
443
+ await $`npx jsr add ${packageSpec}`.cwd(process3.cwd());
431
444
  }
432
445
  async function verifyEntrypoint(packageDir, entrypoint) {
433
446
  try {
@@ -462,7 +475,7 @@ async function readDenoJsonExports(packageDir) {
462
475
  }
463
476
  async function moveDistToRoot(packageDir) {
464
477
  const sourceDist = join3(packageDir, "dist");
465
- const targetDist = join3(process.cwd(), "dist");
478
+ const targetDist = join3(process3.cwd(), "dist");
466
479
  try {
467
480
  await rm(targetDist, {
468
481
  recursive: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaonyan/jsr2npm",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "homepage": "https://jsr.io/@yao/jsr2npm",
5
5
  "type": "module",
6
6
  "dependencies": {