unrun 0.2.4 → 0.2.6

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/dist/index.d.mts CHANGED
@@ -33,11 +33,17 @@ interface Options {
33
33
  }
34
34
  //#endregion
35
35
  //#region src/types.d.ts
36
- interface Result {
36
+ interface Result<T = unknown> {
37
37
  /**
38
38
  * The module that was loaded.
39
+ * You can specify the type of the module by providing a type argument when using the `unrun` function.
39
40
  */
40
- module: any;
41
+ module: T;
42
+ /**
43
+ * The dependencies involved when loading the targeted module.
44
+ * Note: this only includes local file dependencies, npm-resolved dependencies are excluded.
45
+ */
46
+ dependencies: string[];
41
47
  }
42
48
  interface CliResult {
43
49
  /**
@@ -53,7 +59,7 @@ interface CliResult {
53
59
  * @param options - The options for loading the module.
54
60
  * @returns A promise that resolves to the loaded module.
55
61
  */
56
- declare function unrun(options: Options): Promise<Result>;
62
+ declare function unrun<T>(options: Options): Promise<Result<T>>;
57
63
  /**
58
64
  * Loads a module with JIT transpilation based on the provided options.
59
65
  * This function runs synchronously using a worker thread.
@@ -61,7 +67,7 @@ declare function unrun(options: Options): Promise<Result>;
61
67
  * @param options - The options for loading the module.
62
68
  * @returns The loaded module.
63
69
  */
64
- declare function unrunSync(options: Options): Result;
70
+ declare function unrunSync<T>(options: Options): Result<T>;
65
71
  /**
66
72
  * Runs a given module with JIT transpilation based on the provided options.
67
73
  * This function does not return the module, as it simply executes it.
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { n as unrunCli, r as unrunSync, t as unrun } from "./src-en4IVaeD.mjs";
1
+ import { n as unrunCli, r as unrunSync, t as unrun } from "./src-BW3bFBxp.mjs";
2
2
 
3
3
  export { unrun, unrunCli, unrunSync };
@@ -1,6 +1,5 @@
1
1
  import { createRequire } from "node:module";
2
2
  import process from "node:process";
3
- import { createSyncFn } from "synckit";
4
3
  import path from "node:path";
5
4
  import fs, { existsSync } from "node:fs";
6
5
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -404,7 +403,11 @@ async function bundle(options) {
404
403
  };
405
404
  const rolldownOutput = await bundle$1.generate(outputOptions);
406
405
  if (!rolldownOutput.output[0]) throw new Error("[unrun] No output chunk found");
407
- return rolldownOutput.output[0];
406
+ const files = await bundle$1.watchFiles;
407
+ return {
408
+ chunk: rolldownOutput.output[0],
409
+ dependencies: files
410
+ };
408
411
  }
409
412
 
410
413
  //#endregion
@@ -540,14 +543,17 @@ async function loadModule(code, options) {
540
543
  */
541
544
  async function unrun(options) {
542
545
  const resolvedOptions = resolveOptions(options);
543
- const outputChunk = await bundle(resolvedOptions);
546
+ const output = await bundle(resolvedOptions);
544
547
  let module;
545
548
  try {
546
- module = await loadModule(outputChunk.code, resolvedOptions);
549
+ module = await loadModule(output.chunk.code, resolvedOptions);
547
550
  } catch (error) {
548
- throw new Error(`[unrun] Import failed (code length: ${outputChunk.code.length}): ${error.message}`);
551
+ throw new Error(`[unrun] Import failed (code length: ${output.chunk.code.length}): ${error.message}`);
549
552
  }
550
- return { module: preset(resolvedOptions, module) };
553
+ return {
554
+ module: preset(resolvedOptions, module),
555
+ dependencies: output.dependencies
556
+ };
551
557
  }
552
558
  /**
553
559
  * Loads a module with JIT transpilation based on the provided options.
@@ -557,6 +563,7 @@ async function unrun(options) {
557
563
  * @returns The loaded module.
558
564
  */
559
565
  function unrunSync(options) {
566
+ const { createSyncFn } = __require("synckit");
560
567
  return createSyncFn(__require.resolve("./sync/worker.mjs"), { tsRunner: "node" })(options);
561
568
  }
562
569
  /**
@@ -569,13 +576,13 @@ function unrunSync(options) {
569
576
  */
570
577
  async function unrunCli(options, args = []) {
571
578
  const resolvedOptions = resolveOptions(options);
572
- const outputChunk = await bundle(resolvedOptions);
573
- const moduleUrl = writeModule(outputChunk.code, resolvedOptions);
579
+ const output = await bundle(resolvedOptions);
580
+ const moduleUrl = writeModule(output.chunk.code, resolvedOptions);
574
581
  let cliResult;
575
582
  try {
576
583
  cliResult = await execModule(moduleUrl, args);
577
584
  } catch (error) {
578
- throw new Error(`[unrun] Run failed (code length: ${outputChunk.code.length}): ${error.message}`);
585
+ throw new Error(`[unrun] Run failed (code length: ${output.chunk.code.length}): ${error.message}`);
579
586
  }
580
587
  cleanModule(moduleUrl, resolvedOptions);
581
588
  return cliResult;
@@ -1,4 +1,4 @@
1
- import { t as unrun } from "../src-en4IVaeD.mjs";
1
+ import { t as unrun } from "../src-BW3bFBxp.mjs";
2
2
  import { runAsWorker } from "synckit";
3
3
 
4
4
  //#region src/sync/worker.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unrun",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "A tool to load and execute any JavaScript or TypeScript code at runtime.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -30,24 +30,31 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
+ "peerDependencies": {
34
+ "synckit": "^0.11.11"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "synckit": {
38
+ "optional": true
39
+ }
40
+ },
33
41
  "dependencies": {
34
42
  "@oxc-project/runtime": "^0.96.0",
35
- "rolldown": "1.0.0-beta.47",
36
- "synckit": "^0.11.11"
43
+ "rolldown": "1.0.0-beta.47"
37
44
  },
38
45
  "devDependencies": {
39
- "@sxzz/eslint-config": "^7.1.4",
46
+ "@sxzz/eslint-config": "^7.2.8",
40
47
  "@sxzz/prettier-config": "^2.2.4",
41
- "@types/node": "^24.3.0",
48
+ "@types/node": "^24.10.0",
42
49
  "acorn": "^8.15.0",
43
- "bumpp": "^10.2.3",
50
+ "bumpp": "^10.3.1",
44
51
  "bundle-require": "^5.1.0",
45
52
  "config": "^4.1.1",
46
53
  "consola": "^3.4.2",
47
54
  "defu": "^6.1.4",
48
55
  "destr": "^2.0.5",
49
- "esbuild": "^0.25.10",
50
- "eslint": "^9.34.0",
56
+ "esbuild": "^0.25.12",
57
+ "eslint": "^9.39.1",
51
58
  "estree-walker": "^3.0.3",
52
59
  "etag": "^1.8.1",
53
60
  "fast-glob": "^3.3.3",
@@ -58,12 +65,13 @@
58
65
  "moment-timezone": "^0.6.0",
59
66
  "nano-jsx": "^0.2.0",
60
67
  "preact": "^10.27.2",
61
- "preact-render-to-string": "^6.6.1",
68
+ "preact-render-to-string": "^6.6.3",
62
69
  "prettier": "^3.6.2",
63
- "react": "^19.1.1",
64
- "react-dom": "^19.1.1",
70
+ "react": "^19.2.0",
71
+ "react-dom": "^19.2.0",
65
72
  "reflect-metadata": "^0.2.2",
66
- "tinyexec": "^1.0.1",
73
+ "synckit": "^0.11.11",
74
+ "tinyexec": "^1.0.2",
67
75
  "tsdown": "^0.16.0",
68
76
  "tsx": "^4.20.6",
69
77
  "typedoc": "^0.28.14",
@@ -71,12 +79,12 @@
71
79
  "typedoc-vitepress-theme": "^1.1.2",
72
80
  "typescript": "^5.9.3",
73
81
  "unconfig": "^7.3.3",
74
- "vite": "^7.1.7",
82
+ "vite": "^7.2.2",
75
83
  "vitepress": "2.0.0-alpha.12",
76
84
  "vitepress-plugin-group-icons": "^1.6.5",
77
- "vitest": "4.0.2",
78
- "vue": "^3.5.22",
79
- "zod": "^4.1.8"
85
+ "vitest": "4.0.8",
86
+ "vue": "^3.5.24",
87
+ "zod": "^4.1.12"
80
88
  },
81
89
  "engines": {
82
90
  "node": ">=20.19.0"
@@ -93,7 +101,7 @@
93
101
  "benchmark": "tsdown -c benchmark/tsdown.config.ts && node ./benchmark/dist/benchmark.mjs",
94
102
  "typecheck": "tsc --noEmit",
95
103
  "format": "prettier --cache --write .",
96
- "release": "bumpp && unotp pnpm publish",
104
+ "release": "bumpp",
97
105
  "docs:dev": "vitepress dev docs",
98
106
  "docs:build": "vitepress build docs",
99
107
  "docs:preview": "vitepress preview docs",