@jayjiang/byoao 1.0.3 → 1.0.5

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.
@@ -1,28 +1,89 @@
1
1
  /**
2
2
  * Bun CJS interop shim.
3
3
  *
4
- * Bun 1.3.x does not auto-wrap `module.exports` as an ESM default for CJS
5
- * packages, regardless of whether they have an `exports` field.
4
+ * Bun 1.3.x has a pervasive bug with CJS/ESM interop: it loads CJS sub-modules
5
+ * as ESM and then fails with "Missing 'default' export" for any file that uses
6
+ * `module.exports` instead of `export default`. This affects fs-extra AND its
7
+ * own ESM wrapper (`fs-extra/esm`), making fs-extra completely unusable in Bun.
6
8
  *
7
- * For fs-extra we require the CJS entry file directly (bypassing the
8
- * `exports` field resolution) because Bun 1.3.x treats `require("fs-extra")`
9
- * as an async module when it sees the `exports` field's ESM sibling entry.
9
+ * Solution for fs: build a drop-in replacement from native Node.js APIs.
10
+ * Solution for handlebars/gray-matter/semver: createRequire works fine in Bun
11
+ * for packages that have NO `exports` field.
10
12
  */
11
13
  import { createRequire } from "node:module";
14
+ import * as nodeFs from "node:fs";
15
+ import * as nodeFsPromises from "node:fs/promises";
16
+ import path from "node:path";
17
+ // ── fs-extra polyfills (native Node.js only) ──────────────────────────────────
18
+ async function copy(src, dest) {
19
+ await nodeFsPromises.cp(src, dest, { recursive: true });
20
+ }
21
+ async function ensureDir(dirPath) {
22
+ await nodeFsPromises.mkdir(dirPath, { recursive: true });
23
+ }
24
+ async function pathExists(filePath) {
25
+ try {
26
+ await nodeFsPromises.access(filePath);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ function pathExistsSync(filePath) {
34
+ return nodeFs.existsSync(filePath);
35
+ }
36
+ async function readJson(filePath) {
37
+ const content = await nodeFsPromises.readFile(filePath, "utf-8");
38
+ return JSON.parse(content);
39
+ }
40
+ function readJsonSync(filePath) {
41
+ return JSON.parse(nodeFs.readFileSync(filePath, "utf-8"));
42
+ }
43
+ async function writeJson(filePath, data, options) {
44
+ const indent = options?.spaces ?? 2;
45
+ await nodeFsPromises.mkdir(path.dirname(filePath), { recursive: true });
46
+ await nodeFsPromises.writeFile(filePath, JSON.stringify(data, null, indent));
47
+ }
48
+ function writeJsonSync(filePath, data, options) {
49
+ const indent = options?.spaces ?? 2;
50
+ nodeFs.mkdirSync(path.dirname(filePath), { recursive: true });
51
+ nodeFs.writeFileSync(filePath, JSON.stringify(data, null, indent));
52
+ }
53
+ async function remove(filePath) {
54
+ await nodeFsPromises.rm(filePath, { recursive: true, force: true });
55
+ }
56
+ function removeSync(filePath) {
57
+ nodeFs.rmSync(filePath, { recursive: true, force: true });
58
+ }
59
+ export const fs = {
60
+ // node:fs sync
61
+ existsSync: nodeFs.existsSync,
62
+ readFileSync: nodeFs.readFileSync,
63
+ readdirSync: nodeFs.readdirSync,
64
+ // node:fs/promises async
65
+ readFile: nodeFsPromises.readFile,
66
+ writeFile: nodeFsPromises.writeFile,
67
+ readdir: nodeFsPromises.readdir,
68
+ mkdir: nodeFsPromises.mkdir,
69
+ // fs-extra extras (native implementations)
70
+ copy,
71
+ ensureDir,
72
+ pathExists,
73
+ pathExistsSync,
74
+ readJson,
75
+ readJsonSync,
76
+ writeJson,
77
+ writeJsonSync,
78
+ remove,
79
+ removeSync,
80
+ };
81
+ // ── CJS-only packages (no `exports` field — createRequire works in Bun) ──────
12
82
  const _require = createRequire(import.meta.url);
13
- // Bun 1.3.x treats `require("fs-extra")` (via createRequire) as an async module
14
- // due to a bug in how it handles the package's `exports` field — use the CJS
15
- // entry path directly to avoid this. Node.js enforces `exports` and rejects
16
- // that subpath, so we fall back to the normal package name there.
17
- const _fs = ("Bun" in globalThis
18
- ? _require("fs-extra/lib/index.js") // Bun: bypass exports resolution
19
- : _require("fs-extra") // Node.js: normal resolution
20
- );
21
83
  const _matter = _require("gray-matter");
22
84
  const _Handlebars = _require("handlebars");
23
85
  const _semver = _require("semver");
24
86
  const unwrap = (v) => (v["default"] ?? v);
25
- export const fs = unwrap(_fs);
26
87
  export const matter = unwrap(_matter);
27
88
  export const Handlebars = unwrap(_Handlebars);
28
89
  export const semver = unwrap(_semver);
@@ -1 +1 @@
1
- {"version":3,"file":"cjs-modules.js","sourceRoot":"","sources":["../../src/lib/cjs-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhD,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,kEAAkE;AAClE,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,UAAU;IAC9B,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAE,iCAAiC;IACtE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAe,6BAA6B;CACxD,CAAC;AACb,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAY,CAAC;AACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAY,CAAC;AACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAY,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAC5B,CAAE,CAA6B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAmB,CAAC;AAChD,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAsB,CAAC"}
1
+ {"version":3,"file":"cjs-modules.js","sourceRoot":"","sources":["../../src/lib/cjs-modules.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jayjiang/byoao",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Build Your Own AI OS — Obsidian + AI Agent",
5
5
  "type": "module",
6
6
  "engines": {