@seedprotocol/sdk 0.4.29 → 0.4.30
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/{ArweaveClient-BeW65rGS.js → ArweaveClient-BA7b13Dl.js} +3 -3
- package/dist/{ArweaveClient-BeW65rGS.js.map → ArweaveClient-BA7b13Dl.js.map} +1 -1
- package/dist/{ArweaveClient-lm4d-WFB.js → ArweaveClient-DJ8Q63JQ.js} +3 -3
- package/dist/{ArweaveClient-lm4d-WFB.js.map → ArweaveClient-DJ8Q63JQ.js.map} +1 -1
- package/dist/{Db-VYLhDCFW.js → Db-BHMXF86s.js} +4 -4
- package/dist/{Db-VYLhDCFW.js.map → Db-BHMXF86s.js.map} +1 -1
- package/dist/{Db-CbS7T1_D.js → Db-qgwjsLKI.js} +4 -4
- package/dist/{Db-CbS7T1_D.js.map → Db-qgwjsLKI.js.map} +1 -1
- package/dist/{EasClient-BsdrEbha.js → EasClient-BqU4c27A.js} +2 -2
- package/dist/{EasClient-BsdrEbha.js.map → EasClient-BqU4c27A.js.map} +1 -1
- package/dist/{EasClient-McZ-yLnh.js → EasClient-DjSKI-Jp.js} +2 -2
- package/dist/{EasClient-McZ-yLnh.js.map → EasClient-DjSKI-Jp.js.map} +1 -1
- package/dist/{FileManager-wXAlwkmU.js → FileManager-DIbVCWke.js} +5 -5
- package/dist/FileManager-DIbVCWke.js.map +1 -0
- package/dist/{FileManager-8X0RFG8j.js → FileManager-DJ-mFSmc.js} +2 -2
- package/dist/{FileManager-8X0RFG8j.js.map → FileManager-DJ-mFSmc.js.map} +1 -1
- package/dist/{ModelProperty-e1IIoSSC.js → ModelProperty-jBpPbg3l.js} +17 -17
- package/dist/{ModelProperty-e1IIoSSC.js.map → ModelProperty-jBpPbg3l.js.map} +1 -1
- package/dist/{PathResolver-C_AdI9lp.js → PathResolver-CxmIkVyO.js} +2 -2
- package/dist/{PathResolver-C_AdI9lp.js.map → PathResolver-CxmIkVyO.js.map} +1 -1
- package/dist/{PathResolver-CCuiAvIu.js → PathResolver-DmFG4fR1.js} +2 -2
- package/dist/{PathResolver-CCuiAvIu.js.map → PathResolver-DmFG4fR1.js.map} +1 -1
- package/dist/{QueryClient-BCuLIB8_.js → QueryClient-7vk66LoN.js} +2 -2
- package/dist/{QueryClient-BCuLIB8_.js.map → QueryClient-7vk66LoN.js.map} +1 -1
- package/dist/{QueryClient-F2a7YH_K.js → QueryClient-CHayftHv.js} +2 -2
- package/dist/{QueryClient-F2a7YH_K.js.map → QueryClient-CHayftHv.js.map} +1 -1
- package/dist/{Schema-3_R_m7fn.js → Schema-CyWoCyDH.js} +22 -22
- package/dist/{Schema-3_R_m7fn.js.map → Schema-CyWoCyDH.js.map} +1 -1
- package/dist/{SchemaValidationService-BAPhc_z8.js → SchemaValidationService-ByxyqvS9.js} +2 -2
- package/dist/{SchemaValidationService-BAPhc_z8.js.map → SchemaValidationService-ByxyqvS9.js.map} +1 -1
- package/dist/{backfillMetadataPropertyIds-pnhgDwmf.js → backfillMetadataPropertyIds-CUenpA6t.js} +2 -2
- package/dist/{backfillMetadataPropertyIds-pnhgDwmf.js.map → backfillMetadataPropertyIds-CUenpA6t.js.map} +1 -1
- package/dist/cjs/{ModelProperty-B_wtA6Tp.js → ModelProperty-BEpPD4wH.js} +17 -17
- package/dist/cjs/{ModelProperty-B_wtA6Tp.js.map → ModelProperty-BEpPD4wH.js.map} +1 -1
- package/dist/cjs/{Schema-DycmdXix.js → Schema-DgvWd1wc.js} +20 -20
- package/dist/cjs/{Schema-DycmdXix.js.map → Schema-DgvWd1wc.js.map} +1 -1
- package/dist/cjs/{SchemaValidationService-CutWcs3L.js → SchemaValidationService-DazyAm6l.js} +2 -2
- package/dist/cjs/{SchemaValidationService-CutWcs3L.js.map → SchemaValidationService-DazyAm6l.js.map} +1 -1
- package/dist/cjs/{backfillMetadataPropertyIds-BtL7WeI5.js → backfillMetadataPropertyIds-BHJnW-NK.js} +2 -2
- package/dist/cjs/{backfillMetadataPropertyIds-BtL7WeI5.js.map → backfillMetadataPropertyIds-BHJnW-NK.js.map} +1 -1
- package/dist/cjs/{getItem-B1qXuyLl.js → getItem-CStbsCge.js} +2 -2
- package/dist/cjs/{getItem-B1qXuyLl.js.map → getItem-CStbsCge.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-DGtDyXfX.js → getPublishPayload-Bws1mdNc.js} +11 -11
- package/dist/cjs/{getPublishPayload-DGtDyXfX.js.map → getPublishPayload-Bws1mdNc.js.map} +1 -1
- package/dist/cjs/{getPublishUploads-BMVJ2gfR.js → getPublishUploads-BNYeCNf_.js} +4 -4
- package/dist/cjs/{getPublishUploads-BMVJ2gfR.js.map → getPublishUploads-BNYeCNf_.js.map} +1 -1
- package/dist/cjs/{getSegmentedItemProperties-V0HYWzgM.js → getSegmentedItemProperties-CkhTBPSP.js} +3 -3
- package/dist/cjs/{getSegmentedItemProperties-V0HYWzgM.js.map → getSegmentedItemProperties-CkhTBPSP.js.map} +1 -1
- package/dist/cjs/{index-Dbu8yrzO.js → index-BLco2YiE.js} +3 -3
- package/dist/cjs/index-BLco2YiE.js.map +1 -0
- package/dist/cjs/{index-C0v35eOT.js → index-CZ7yR-bZ.js} +41 -41
- package/dist/cjs/{index-C0v35eOT.js.map → index-CZ7yR-bZ.js.map} +1 -1
- package/dist/cjs/{ownership-BPK6LY7d.js → ownership-B1I8eLiv.js} +2 -2
- package/dist/cjs/{ownership-BPK6LY7d.js.map → ownership-B1I8eLiv.js.map} +1 -1
- package/dist/cjs/{property-Ctv4ZGoa.js → property-sm3N2yBU.js} +4 -4
- package/dist/cjs/{property-Ctv4ZGoa.js.map → property-sm3N2yBU.js.map} +1 -1
- package/dist/cjs/{syncDbWithEas-DgZ7Acmb.js → syncDbWithEas-Dh9HSiwm.js} +5 -5
- package/dist/cjs/{syncDbWithEas-DgZ7Acmb.js.map → syncDbWithEas-Dh9HSiwm.js.map} +1 -1
- package/dist/{getItem-2pjRoJa0.js → getItem-CdgsloEB.js} +2 -2
- package/dist/{getItem-2pjRoJa0.js.map → getItem-CdgsloEB.js.map} +1 -1
- package/dist/{getPublishPayload-BAPoXumQ.js → getPublishPayload-DlkHAsOA.js} +11 -11
- package/dist/{getPublishPayload-BAPoXumQ.js.map → getPublishPayload-DlkHAsOA.js.map} +1 -1
- package/dist/{getPublishUploads-D75w3Et5.js → getPublishUploads-BeukCBiR.js} +4 -4
- package/dist/{getPublishUploads-D75w3Et5.js.map → getPublishUploads-BeukCBiR.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-BLU_UBYI.js → getSegmentedItemProperties-B_yciZHD.js} +3 -3
- package/dist/{getSegmentedItemProperties-BLU_UBYI.js.map → getSegmentedItemProperties-B_yciZHD.js.map} +1 -1
- package/dist/{index-DKXcFcFk.js → index-C3oIxmh-.js} +52 -52
- package/dist/{index-DKXcFcFk.js.map → index-C3oIxmh-.js.map} +1 -1
- package/dist/{index-CKY29lZp.js → index-CfZAy_U1.js} +2 -2
- package/dist/index-CfZAy_U1.js.map +1 -0
- package/dist/{index-CjrqUOwu.js → index-j0nIoPTo.js} +3 -3
- package/dist/index-j0nIoPTo.js.map +1 -0
- package/dist/main.cjs +1 -1
- package/dist/main.js +13 -13
- package/dist/node.js +10 -10
- package/dist/{ownership-BbSCKuz4.js → ownership-Br40yugt.js} +2 -2
- package/dist/{ownership-BbSCKuz4.js.map → ownership-Br40yugt.js.map} +1 -1
- package/dist/{property-D0iZYPNc.js → property-DlfKPjHu.js} +5 -5
- package/dist/{property-D0iZYPNc.js.map → property-DlfKPjHu.js.map} +1 -1
- package/dist/{queries-D4DDYMy9.js → queries-CIlWKRoN.js} +2 -2
- package/dist/{queries-D4DDYMy9.js.map → queries-CIlWKRoN.js.map} +1 -1
- package/dist/src/vite/index.d.ts.map +1 -1
- package/dist/{syncDbWithEas-D3gGL9OM.js → syncDbWithEas-Dsa5kEMM.js} +6 -6
- package/dist/{syncDbWithEas-D3gGL9OM.js.map → syncDbWithEas-Dsa5kEMM.js.map} +1 -1
- package/dist/{updateSeedRevokedAt-DrtFzF85.js → updateSeedRevokedAt-DHDIH0zy.js} +2 -2
- package/dist/{updateSeedRevokedAt-DrtFzF85.js.map → updateSeedRevokedAt-DHDIH0zy.js.map} +1 -1
- package/dist/vite.cjs +102 -4
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.js +102 -4
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
- package/dist/FileManager-wXAlwkmU.js.map +0 -1
- package/dist/cjs/index-Dbu8yrzO.js.map +0 -1
- package/dist/index-CKY29lZp.js.map +0 -1
- package/dist/index-CjrqUOwu.js.map +0 -1
package/dist/vite.cjs
CHANGED
|
@@ -8,6 +8,53 @@ var vitePluginNodePolyfills = require('vite-plugin-node-polyfills');
|
|
|
8
8
|
|
|
9
9
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
10
10
|
const _req = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('vite.cjs', document.baseURI).href)));
|
|
11
|
+
// Node.js globals that are undefined in browsers and will throw at runtime.
|
|
12
|
+
// Keyed by identifier; value is the safe typeof-guard pattern so we can skip those.
|
|
13
|
+
const BROWSER_DANGEROUS_GLOBALS = {
|
|
14
|
+
global: /\btypeof\s+global\b/,
|
|
15
|
+
process: /\btypeof\s+process\b/,
|
|
16
|
+
Buffer: /\btypeof\s+Buffer\b/,
|
|
17
|
+
__dirname: /\btypeof\s+__dirname\b/,
|
|
18
|
+
__filename: /\btypeof\s+__filename\b/,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Strip JS string literals, template literals, and comments from source text
|
|
22
|
+
* so that identifier searches don't false-positive on string content.
|
|
23
|
+
* This is intentionally approximate — good enough for a lint-style warning pass.
|
|
24
|
+
*/
|
|
25
|
+
function stripStringsAndComments(code) {
|
|
26
|
+
return code
|
|
27
|
+
.replace(/\/\*[\s\S]*?\*\//g, (m) => ' '.repeat(m.length)) // /* block comments */
|
|
28
|
+
.replace(/\/\/[^\n]*/g, (m) => ' '.repeat(m.length)) // // line comments
|
|
29
|
+
.replace(/`(?:[^`\\]|\\.)*`/gs, (m) => '`' + ' '.repeat(m.length - 2) + '`') // template literals
|
|
30
|
+
.replace(/"(?:[^"\\]|\\.)*"/g, (m) => '"' + ' '.repeat(m.length - 2) + '"') // double-quoted strings
|
|
31
|
+
.replace(/'(?:[^'\\]|\\.)*'/g, (m) => "'" + ' '.repeat(m.length - 2) + "'"); // single-quoted strings
|
|
32
|
+
}
|
|
33
|
+
function findDangerousGlobals(rawCode) {
|
|
34
|
+
const stripped = stripStringsAndComments(rawCode);
|
|
35
|
+
const hits = [];
|
|
36
|
+
for (const [name, typeofGuard] of Object.entries(BROWSER_DANGEROUS_GLOBALS)) {
|
|
37
|
+
// Skip globalThis when checking 'global'
|
|
38
|
+
const re = new RegExp(`(?<![.\\w$])\\b${name}\\b(?!This)(?![\\w$])`, 'g');
|
|
39
|
+
let m;
|
|
40
|
+
while ((m = re.exec(stripped)) !== null) {
|
|
41
|
+
const offset = m.index;
|
|
42
|
+
// Check for typeof guard in the ~20 chars before the match
|
|
43
|
+
const before = stripped.slice(Math.max(0, offset - 20), offset);
|
|
44
|
+
if (typeofGuard.test(before))
|
|
45
|
+
continue;
|
|
46
|
+
// Compute 1-based line number from raw source (positions are preserved because
|
|
47
|
+
// we replace with equal-length spaces, so offsets are stable)
|
|
48
|
+
const linesBefore = rawCode.slice(0, offset).split('\n');
|
|
49
|
+
const line = linesBefore.length;
|
|
50
|
+
const colOffset = linesBefore[linesBefore.length - 1].length;
|
|
51
|
+
const rawLine = rawCode.split('\n')[line - 1] ?? '';
|
|
52
|
+
const ctx = rawLine.slice(Math.max(0, colOffset - 40), colOffset + name.length + 40).trim();
|
|
53
|
+
hits.push({ global: name, offset, line, context: ctx });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return hits;
|
|
57
|
+
}
|
|
11
58
|
const DEFAULT_FS_MODULES = [
|
|
12
59
|
'fs',
|
|
13
60
|
'fs/promises',
|
|
@@ -155,6 +202,12 @@ function seedVitePlugin(options = {}) {
|
|
|
155
202
|
define: {
|
|
156
203
|
...(userConfig.define ?? {}),
|
|
157
204
|
global: 'globalThis',
|
|
205
|
+
// process is referenced by path-browserify (drizzle migrator's node:path dep)
|
|
206
|
+
// and other CJS modules. Point at globalThis.process which is set by the
|
|
207
|
+
// synchronous inline shim script injected into index.html before any modules load.
|
|
208
|
+
'process.env.NODE_ENV': JSON.stringify('production'),
|
|
209
|
+
'process.browser': 'true',
|
|
210
|
+
'process.platform': '"browser"',
|
|
158
211
|
},
|
|
159
212
|
resolve: {
|
|
160
213
|
...existingResolve,
|
|
@@ -279,9 +332,54 @@ function seedVitePlugin(options = {}) {
|
|
|
279
332
|
worker,
|
|
280
333
|
};
|
|
281
334
|
},
|
|
335
|
+
generateBundle(_options, bundle) {
|
|
336
|
+
const allHits = [];
|
|
337
|
+
for (const [chunkName, asset] of Object.entries(bundle)) {
|
|
338
|
+
if (asset.type !== 'chunk')
|
|
339
|
+
continue;
|
|
340
|
+
const hits = findDangerousGlobals(asset.code);
|
|
341
|
+
for (const hit of hits) {
|
|
342
|
+
allHits.push({ chunk: chunkName, ...hit });
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (allHits.length === 0)
|
|
346
|
+
return;
|
|
347
|
+
console.warn('\n[seed-vite-plugin] ⚠️ Bare Node.js globals detected in browser bundle chunks.' +
|
|
348
|
+
' These will throw ReferenceError at runtime unless shimmed.\n');
|
|
349
|
+
const byChunk = new Map();
|
|
350
|
+
for (const hit of allHits) {
|
|
351
|
+
const list = byChunk.get(hit.chunk) ?? [];
|
|
352
|
+
list.push(hit);
|
|
353
|
+
byChunk.set(hit.chunk, list);
|
|
354
|
+
}
|
|
355
|
+
for (const [chunk, hits] of byChunk) {
|
|
356
|
+
console.warn(` ${chunk}`);
|
|
357
|
+
for (const h of hits) {
|
|
358
|
+
console.warn(` line ${h.line}: \`${h.global}\` — ${h.context}`);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
console.warn('');
|
|
362
|
+
},
|
|
282
363
|
transformIndexHtml(html) {
|
|
364
|
+
// Synchronous inline script runs before any <script type="module">, so
|
|
365
|
+
// global and process are guaranteed to exist when CJS wrappers evaluate.
|
|
366
|
+
// vite-plugin-node-polyfills injects polyfills via module imports, which
|
|
367
|
+
// resolve too late for @rollup/plugin-commonjs-generated wrapper code.
|
|
368
|
+
const shimScript = `<script>
|
|
369
|
+
(function(){
|
|
370
|
+
if(typeof globalThis.global==='undefined')globalThis.global=globalThis;
|
|
371
|
+
if(typeof globalThis.process==='undefined')globalThis.process={env:{NODE_ENV:'production'},browser:true,version:'v18.0.0',versions:{},platform:'browser',cwd:function(){return'/'},nextTick:function(fn){setTimeout(fn,0)}};
|
|
372
|
+
})();
|
|
373
|
+
</script>`;
|
|
374
|
+
let result = html;
|
|
375
|
+
if (result.includes('<head>')) {
|
|
376
|
+
result = result.replace('<head>', `<head>\n${shimScript}`);
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
result = shimScript + result;
|
|
380
|
+
}
|
|
283
381
|
if (!autoInit)
|
|
284
|
-
return
|
|
382
|
+
return result;
|
|
285
383
|
const initScript = `
|
|
286
384
|
<script type="module">
|
|
287
385
|
import { configure } from '@zenfs/core';
|
|
@@ -295,10 +393,10 @@ if (!window.__seedFsReady) {
|
|
|
295
393
|
});
|
|
296
394
|
}
|
|
297
395
|
</script>`;
|
|
298
|
-
if (
|
|
299
|
-
return
|
|
396
|
+
if (result.includes('</head>')) {
|
|
397
|
+
return result.replace('</head>', `${initScript}\n</head>`);
|
|
300
398
|
}
|
|
301
|
-
return
|
|
399
|
+
return result + initScript;
|
|
302
400
|
},
|
|
303
401
|
};
|
|
304
402
|
const plugins = [configPlugin, mainPlugin];
|
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.cjs","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\nconst SDK_DIST_DIR = path.dirname(fileURLToPath(import.meta.url))\nconst ARWEAVE_SHIM_FILE = path.join(SDK_DIST_DIR, 'arweave-default-shim.js')\n\ntype AliasEntry = { find: string | RegExp; replacement: string }\n\nfunction resolvePackageFile(packageName: string, relativePath: string): string | undefined {\n const candidates: string[] = []\n\n try {\n const pkgJson = _req.resolve(`${packageName}/package.json`)\n candidates.push(path.join(path.dirname(pkgJson), relativePath))\n } catch {\n // package may be hoisted/unavailable in this graph\n }\n\n const cwdNodeModules = path.join(process.cwd(), 'node_modules')\n candidates.push(path.join(cwdNodeModules, packageName, relativePath))\n\n const bunDir = path.join(cwdNodeModules, '.bun')\n if (fs.existsSync(bunDir)) {\n for (const entry of fs.readdirSync(bunDir)) {\n if (!entry.startsWith(`${packageName}@`)) continue\n candidates.push(path.join(bunDir, entry, `node_modules/${packageName}`, relativePath))\n }\n }\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n return undefined\n}\n\nfunction normalizeAliasEntries(\n alias: NonNullable<UserConfig['resolve']>['alias'] | undefined\n): AliasEntry[] {\n if (!alias) return []\n if (Array.isArray(alias)) {\n return alias\n .filter((entry): entry is AliasEntry => !!entry && !!(entry as AliasEntry).replacement)\n .map((entry) => ({ find: entry.find, replacement: entry.replacement }))\n }\n\n return Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement: String(replacement),\n }))\n}\n\nfunction mergeAliasEntries(existing: AliasEntry[], additions: AliasEntry[]): AliasEntry[] {\n const merged = [...existing]\n const keyOf = (find: string | RegExp) =>\n typeof find === 'string' ? `s:${find}` : `r:${find.toString()}`\n const seen = new Set(merged.map((entry) => keyOf(entry.find)))\n\n for (const entry of additions) {\n const key = keyOf(entry.find)\n if (seen.has(key)) continue\n seen.add(key)\n merged.push(entry)\n }\n\n return merged\n}\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const aliasEntries: AliasEntry[] = []\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n aliasEntries.push({ find: mod, replacement: target })\n }\n\n const eventEmitterEsm = resolvePackageFile('eventemitter3', 'dist/eventemitter3.esm.js')\n if (eventEmitterEsm) {\n aliasEntries.push(\n { find: 'eventemitter3', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.mjs', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.js', replacement: eventEmitterEsm },\n )\n }\n\n const arweaveBundle = resolvePackageFile('arweave', 'bundles/web.bundle.js')\n if (arweaveBundle) {\n aliasEntries.push(\n { find: /^arweave$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/web\\/index\\.js$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/bundles\\/web\\.bundle\\.js$/, replacement: arweaveBundle },\n )\n }\n\n const existingResolve = userConfig.resolve ?? {}\n const mergedAlias = mergeAliasEntries(\n normalizeAliasEntries(existingResolve.alias),\n aliasEntries,\n )\n\n const desiredOptimizeIncludes = [\n '@zenfs/core',\n '@zenfs/dom',\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n 'viem',\n 'isows',\n ]\n const resolvableOptimizeIncludes = desiredOptimizeIncludes.filter(\n (dep) => !!resolvePackageFile(dep, 'package.json')\n )\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n ...resolvableOptimizeIncludes,\n ],\n // Keep `global` shim in optimizer esbuild options; top-level Vite `define`\n // can be rejected by Rolldown in some consumer setups.\n esbuildOptions: {\n ...(userConfig.optimizeDeps?.esbuildOptions ?? {}),\n define: {\n ...(userConfig.optimizeDeps?.esbuildOptions?.define ?? {}),\n global: 'globalThis',\n },\n },\n }\n\n return {\n // Apply global → globalThis for Rollup production builds too.\n // optimizeDeps.esbuildOptions.define only covers the dev pre-bundle step;\n // this top-level define is picked up by @rollup/plugin-replace during build\n // and covers all chunks, including code-split migrator/commonjs-helper chunks.\n define: {\n ...(userConfig.define ?? {}),\n global: 'globalThis',\n },\n resolve: {\n ...existingResolve,\n alias: mergedAlias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n // Also dedupe XState and Seed packages: two xstate copies cause Object.assign _version errors;\n // two @seedprotocol/sdk copies leave BaseDb.PlatformClass / Db.appDb on different module instances\n // (\"App DB not found\", undefined.$with on PostsPage).\n dedupe: Array.from(\n new Set([\n ...(existingResolve.dedupe ?? []),\n 'react',\n 'react-dom',\n 'thirdweb',\n 'xstate',\n '@xstate/react',\n '@seedprotocol/sdk',\n '@seedprotocol/react',\n '@seedprotocol/publish',\n '@seedprotocol/feed',\n ])\n ),\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingRolldownOptions = (existingBuild as Record<string, unknown>).rolldownOptions as\n | Record<string, unknown>\n | undefined\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build: Record<string, unknown> = {\n ...existingBuild,\n commonjsOptions,\n }\n if (existingRolldownOptions) {\n build.rolldownOptions = {\n ...existingRolldownOptions,\n external: externalList,\n }\n } else {\n build.rollupOptions = rollupOptions\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":["createRequire","fileURLToPath","nodePolyfills"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.cjs","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\n// Node.js globals that are undefined in browsers and will throw at runtime.\n// Keyed by identifier; value is the safe typeof-guard pattern so we can skip those.\nconst BROWSER_DANGEROUS_GLOBALS: Record<string, RegExp> = {\n global: /\\btypeof\\s+global\\b/,\n process: /\\btypeof\\s+process\\b/,\n Buffer: /\\btypeof\\s+Buffer\\b/,\n __dirname: /\\btypeof\\s+__dirname\\b/,\n __filename: /\\btypeof\\s+__filename\\b/,\n}\n\n/**\n * Strip JS string literals, template literals, and comments from source text\n * so that identifier searches don't false-positive on string content.\n * This is intentionally approximate — good enough for a lint-style warning pass.\n */\nfunction stripStringsAndComments(code: string): string {\n return code\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, (m) => ' '.repeat(m.length)) // /* block comments */\n .replace(/\\/\\/[^\\n]*/g, (m) => ' '.repeat(m.length)) // // line comments\n .replace(/`(?:[^`\\\\]|\\\\.)*`/gs, (m) => '`' + ' '.repeat(m.length - 2) + '`') // template literals\n .replace(/\"(?:[^\"\\\\]|\\\\.)*\"/g, (m) => '\"' + ' '.repeat(m.length - 2) + '\"') // double-quoted strings\n .replace(/'(?:[^'\\\\]|\\\\.)*'/g, (m) => \"'\" + ' '.repeat(m.length - 2) + \"'\") // single-quoted strings\n}\n\ninterface GlobalHit {\n global: string\n /** zero-based character offset in the stripped source */\n offset: number\n /** 1-based line number */\n line: number\n /** surrounding raw source for context */\n context: string\n}\n\nfunction findDangerousGlobals(rawCode: string): GlobalHit[] {\n const stripped = stripStringsAndComments(rawCode)\n const hits: GlobalHit[] = []\n\n for (const [name, typeofGuard] of Object.entries(BROWSER_DANGEROUS_GLOBALS)) {\n // Skip globalThis when checking 'global'\n const re = new RegExp(`(?<![.\\\\w$])\\\\b${name}\\\\b(?!This)(?![\\\\w$])`, 'g')\n let m: RegExpExecArray | null\n while ((m = re.exec(stripped)) !== null) {\n const offset = m.index\n // Check for typeof guard in the ~20 chars before the match\n const before = stripped.slice(Math.max(0, offset - 20), offset)\n if (typeofGuard.test(before)) continue\n\n // Compute 1-based line number from raw source (positions are preserved because\n // we replace with equal-length spaces, so offsets are stable)\n const linesBefore = rawCode.slice(0, offset).split('\\n')\n const line = linesBefore.length\n const colOffset = linesBefore[linesBefore.length - 1].length\n const rawLine = rawCode.split('\\n')[line - 1] ?? ''\n const ctx = rawLine.slice(Math.max(0, colOffset - 40), colOffset + name.length + 40).trim()\n\n hits.push({ global: name, offset, line, context: ctx })\n }\n }\n\n return hits\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\nconst SDK_DIST_DIR = path.dirname(fileURLToPath(import.meta.url))\nconst ARWEAVE_SHIM_FILE = path.join(SDK_DIST_DIR, 'arweave-default-shim.js')\n\ntype AliasEntry = { find: string | RegExp; replacement: string }\n\nfunction resolvePackageFile(packageName: string, relativePath: string): string | undefined {\n const candidates: string[] = []\n\n try {\n const pkgJson = _req.resolve(`${packageName}/package.json`)\n candidates.push(path.join(path.dirname(pkgJson), relativePath))\n } catch {\n // package may be hoisted/unavailable in this graph\n }\n\n const cwdNodeModules = path.join(process.cwd(), 'node_modules')\n candidates.push(path.join(cwdNodeModules, packageName, relativePath))\n\n const bunDir = path.join(cwdNodeModules, '.bun')\n if (fs.existsSync(bunDir)) {\n for (const entry of fs.readdirSync(bunDir)) {\n if (!entry.startsWith(`${packageName}@`)) continue\n candidates.push(path.join(bunDir, entry, `node_modules/${packageName}`, relativePath))\n }\n }\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n return undefined\n}\n\nfunction normalizeAliasEntries(\n alias: NonNullable<UserConfig['resolve']>['alias'] | undefined\n): AliasEntry[] {\n if (!alias) return []\n if (Array.isArray(alias)) {\n return alias\n .filter((entry): entry is AliasEntry => !!entry && !!(entry as AliasEntry).replacement)\n .map((entry) => ({ find: entry.find, replacement: entry.replacement }))\n }\n\n return Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement: String(replacement),\n }))\n}\n\nfunction mergeAliasEntries(existing: AliasEntry[], additions: AliasEntry[]): AliasEntry[] {\n const merged = [...existing]\n const keyOf = (find: string | RegExp) =>\n typeof find === 'string' ? `s:${find}` : `r:${find.toString()}`\n const seen = new Set(merged.map((entry) => keyOf(entry.find)))\n\n for (const entry of additions) {\n const key = keyOf(entry.find)\n if (seen.has(key)) continue\n seen.add(key)\n merged.push(entry)\n }\n\n return merged\n}\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const aliasEntries: AliasEntry[] = []\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n aliasEntries.push({ find: mod, replacement: target })\n }\n\n const eventEmitterEsm = resolvePackageFile('eventemitter3', 'dist/eventemitter3.esm.js')\n if (eventEmitterEsm) {\n aliasEntries.push(\n { find: 'eventemitter3', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.mjs', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.js', replacement: eventEmitterEsm },\n )\n }\n\n const arweaveBundle = resolvePackageFile('arweave', 'bundles/web.bundle.js')\n if (arweaveBundle) {\n aliasEntries.push(\n { find: /^arweave$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/web\\/index\\.js$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/bundles\\/web\\.bundle\\.js$/, replacement: arweaveBundle },\n )\n }\n\n const existingResolve = userConfig.resolve ?? {}\n const mergedAlias = mergeAliasEntries(\n normalizeAliasEntries(existingResolve.alias),\n aliasEntries,\n )\n\n const desiredOptimizeIncludes = [\n '@zenfs/core',\n '@zenfs/dom',\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n 'viem',\n 'isows',\n ]\n const resolvableOptimizeIncludes = desiredOptimizeIncludes.filter(\n (dep) => !!resolvePackageFile(dep, 'package.json')\n )\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n ...resolvableOptimizeIncludes,\n ],\n // Keep `global` shim in optimizer esbuild options; top-level Vite `define`\n // can be rejected by Rolldown in some consumer setups.\n esbuildOptions: {\n ...(userConfig.optimizeDeps?.esbuildOptions ?? {}),\n define: {\n ...(userConfig.optimizeDeps?.esbuildOptions?.define ?? {}),\n global: 'globalThis',\n },\n },\n }\n\n return {\n // Apply global → globalThis for Rollup production builds too.\n // optimizeDeps.esbuildOptions.define only covers the dev pre-bundle step;\n // this top-level define is picked up by @rollup/plugin-replace during build\n // and covers all chunks, including code-split migrator/commonjs-helper chunks.\n define: {\n ...(userConfig.define ?? {}),\n global: 'globalThis',\n // process is referenced by path-browserify (drizzle migrator's node:path dep)\n // and other CJS modules. Point at globalThis.process which is set by the\n // synchronous inline shim script injected into index.html before any modules load.\n 'process.env.NODE_ENV': JSON.stringify('production'),\n 'process.browser': 'true',\n 'process.platform': '\"browser\"',\n },\n resolve: {\n ...existingResolve,\n alias: mergedAlias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n // Also dedupe XState and Seed packages: two xstate copies cause Object.assign _version errors;\n // two @seedprotocol/sdk copies leave BaseDb.PlatformClass / Db.appDb on different module instances\n // (\"App DB not found\", undefined.$with on PostsPage).\n dedupe: Array.from(\n new Set([\n ...(existingResolve.dedupe ?? []),\n 'react',\n 'react-dom',\n 'thirdweb',\n 'xstate',\n '@xstate/react',\n '@seedprotocol/sdk',\n '@seedprotocol/react',\n '@seedprotocol/publish',\n '@seedprotocol/feed',\n ])\n ),\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingRolldownOptions = (existingBuild as Record<string, unknown>).rolldownOptions as\n | Record<string, unknown>\n | undefined\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build: Record<string, unknown> = {\n ...existingBuild,\n commonjsOptions,\n }\n if (existingRolldownOptions) {\n build.rolldownOptions = {\n ...existingRolldownOptions,\n external: externalList,\n }\n } else {\n build.rollupOptions = rollupOptions\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n generateBundle(_options, bundle) {\n const allHits: Array<{ chunk: string } & GlobalHit> = []\n\n for (const [chunkName, asset] of Object.entries(bundle)) {\n if (asset.type !== 'chunk') continue\n const hits = findDangerousGlobals(asset.code)\n for (const hit of hits) {\n allHits.push({ chunk: chunkName, ...hit })\n }\n }\n\n if (allHits.length === 0) return\n\n console.warn(\n '\\n[seed-vite-plugin] ⚠️ Bare Node.js globals detected in browser bundle chunks.' +\n ' These will throw ReferenceError at runtime unless shimmed.\\n'\n )\n const byChunk = new Map<string, typeof allHits>()\n for (const hit of allHits) {\n const list = byChunk.get(hit.chunk) ?? []\n list.push(hit)\n byChunk.set(hit.chunk, list)\n }\n for (const [chunk, hits] of byChunk) {\n console.warn(` ${chunk}`)\n for (const h of hits) {\n console.warn(` line ${h.line}: \\`${h.global}\\` — ${h.context}`)\n }\n }\n console.warn('')\n },\n\n transformIndexHtml(html) {\n // Synchronous inline script runs before any <script type=\"module\">, so\n // global and process are guaranteed to exist when CJS wrappers evaluate.\n // vite-plugin-node-polyfills injects polyfills via module imports, which\n // resolve too late for @rollup/plugin-commonjs-generated wrapper code.\n const shimScript = `<script>\n(function(){\n if(typeof globalThis.global==='undefined')globalThis.global=globalThis;\n if(typeof globalThis.process==='undefined')globalThis.process={env:{NODE_ENV:'production'},browser:true,version:'v18.0.0',versions:{},platform:'browser',cwd:function(){return'/'},nextTick:function(fn){setTimeout(fn,0)}};\n})();\n</script>`\n\n let result = html\n if (result.includes('<head>')) {\n result = result.replace('<head>', `<head>\\n${shimScript}`)\n } else {\n result = shimScript + result\n }\n\n if (!autoInit) return result\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (result.includes('</head>')) {\n return result.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return result + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":["createRequire","fileURLToPath","nodePolyfills"],"mappings":"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"}
|
package/dist/vite.js
CHANGED
|
@@ -5,6 +5,53 @@ import { fileURLToPath } from 'node:url';
|
|
|
5
5
|
import { nodePolyfills } from 'vite-plugin-node-polyfills';
|
|
6
6
|
|
|
7
7
|
const _req = createRequire(import.meta.url);
|
|
8
|
+
// Node.js globals that are undefined in browsers and will throw at runtime.
|
|
9
|
+
// Keyed by identifier; value is the safe typeof-guard pattern so we can skip those.
|
|
10
|
+
const BROWSER_DANGEROUS_GLOBALS = {
|
|
11
|
+
global: /\btypeof\s+global\b/,
|
|
12
|
+
process: /\btypeof\s+process\b/,
|
|
13
|
+
Buffer: /\btypeof\s+Buffer\b/,
|
|
14
|
+
__dirname: /\btypeof\s+__dirname\b/,
|
|
15
|
+
__filename: /\btypeof\s+__filename\b/,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Strip JS string literals, template literals, and comments from source text
|
|
19
|
+
* so that identifier searches don't false-positive on string content.
|
|
20
|
+
* This is intentionally approximate — good enough for a lint-style warning pass.
|
|
21
|
+
*/
|
|
22
|
+
function stripStringsAndComments(code) {
|
|
23
|
+
return code
|
|
24
|
+
.replace(/\/\*[\s\S]*?\*\//g, (m) => ' '.repeat(m.length)) // /* block comments */
|
|
25
|
+
.replace(/\/\/[^\n]*/g, (m) => ' '.repeat(m.length)) // // line comments
|
|
26
|
+
.replace(/`(?:[^`\\]|\\.)*`/gs, (m) => '`' + ' '.repeat(m.length - 2) + '`') // template literals
|
|
27
|
+
.replace(/"(?:[^"\\]|\\.)*"/g, (m) => '"' + ' '.repeat(m.length - 2) + '"') // double-quoted strings
|
|
28
|
+
.replace(/'(?:[^'\\]|\\.)*'/g, (m) => "'" + ' '.repeat(m.length - 2) + "'"); // single-quoted strings
|
|
29
|
+
}
|
|
30
|
+
function findDangerousGlobals(rawCode) {
|
|
31
|
+
const stripped = stripStringsAndComments(rawCode);
|
|
32
|
+
const hits = [];
|
|
33
|
+
for (const [name, typeofGuard] of Object.entries(BROWSER_DANGEROUS_GLOBALS)) {
|
|
34
|
+
// Skip globalThis when checking 'global'
|
|
35
|
+
const re = new RegExp(`(?<![.\\w$])\\b${name}\\b(?!This)(?![\\w$])`, 'g');
|
|
36
|
+
let m;
|
|
37
|
+
while ((m = re.exec(stripped)) !== null) {
|
|
38
|
+
const offset = m.index;
|
|
39
|
+
// Check for typeof guard in the ~20 chars before the match
|
|
40
|
+
const before = stripped.slice(Math.max(0, offset - 20), offset);
|
|
41
|
+
if (typeofGuard.test(before))
|
|
42
|
+
continue;
|
|
43
|
+
// Compute 1-based line number from raw source (positions are preserved because
|
|
44
|
+
// we replace with equal-length spaces, so offsets are stable)
|
|
45
|
+
const linesBefore = rawCode.slice(0, offset).split('\n');
|
|
46
|
+
const line = linesBefore.length;
|
|
47
|
+
const colOffset = linesBefore[linesBefore.length - 1].length;
|
|
48
|
+
const rawLine = rawCode.split('\n')[line - 1] ?? '';
|
|
49
|
+
const ctx = rawLine.slice(Math.max(0, colOffset - 40), colOffset + name.length + 40).trim();
|
|
50
|
+
hits.push({ global: name, offset, line, context: ctx });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return hits;
|
|
54
|
+
}
|
|
8
55
|
const DEFAULT_FS_MODULES = [
|
|
9
56
|
'fs',
|
|
10
57
|
'fs/promises',
|
|
@@ -152,6 +199,12 @@ function seedVitePlugin(options = {}) {
|
|
|
152
199
|
define: {
|
|
153
200
|
...(userConfig.define ?? {}),
|
|
154
201
|
global: 'globalThis',
|
|
202
|
+
// process is referenced by path-browserify (drizzle migrator's node:path dep)
|
|
203
|
+
// and other CJS modules. Point at globalThis.process which is set by the
|
|
204
|
+
// synchronous inline shim script injected into index.html before any modules load.
|
|
205
|
+
'process.env.NODE_ENV': JSON.stringify('production'),
|
|
206
|
+
'process.browser': 'true',
|
|
207
|
+
'process.platform': '"browser"',
|
|
155
208
|
},
|
|
156
209
|
resolve: {
|
|
157
210
|
...existingResolve,
|
|
@@ -276,9 +329,54 @@ function seedVitePlugin(options = {}) {
|
|
|
276
329
|
worker,
|
|
277
330
|
};
|
|
278
331
|
},
|
|
332
|
+
generateBundle(_options, bundle) {
|
|
333
|
+
const allHits = [];
|
|
334
|
+
for (const [chunkName, asset] of Object.entries(bundle)) {
|
|
335
|
+
if (asset.type !== 'chunk')
|
|
336
|
+
continue;
|
|
337
|
+
const hits = findDangerousGlobals(asset.code);
|
|
338
|
+
for (const hit of hits) {
|
|
339
|
+
allHits.push({ chunk: chunkName, ...hit });
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (allHits.length === 0)
|
|
343
|
+
return;
|
|
344
|
+
console.warn('\n[seed-vite-plugin] ⚠️ Bare Node.js globals detected in browser bundle chunks.' +
|
|
345
|
+
' These will throw ReferenceError at runtime unless shimmed.\n');
|
|
346
|
+
const byChunk = new Map();
|
|
347
|
+
for (const hit of allHits) {
|
|
348
|
+
const list = byChunk.get(hit.chunk) ?? [];
|
|
349
|
+
list.push(hit);
|
|
350
|
+
byChunk.set(hit.chunk, list);
|
|
351
|
+
}
|
|
352
|
+
for (const [chunk, hits] of byChunk) {
|
|
353
|
+
console.warn(` ${chunk}`);
|
|
354
|
+
for (const h of hits) {
|
|
355
|
+
console.warn(` line ${h.line}: \`${h.global}\` — ${h.context}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
console.warn('');
|
|
359
|
+
},
|
|
279
360
|
transformIndexHtml(html) {
|
|
361
|
+
// Synchronous inline script runs before any <script type="module">, so
|
|
362
|
+
// global and process are guaranteed to exist when CJS wrappers evaluate.
|
|
363
|
+
// vite-plugin-node-polyfills injects polyfills via module imports, which
|
|
364
|
+
// resolve too late for @rollup/plugin-commonjs-generated wrapper code.
|
|
365
|
+
const shimScript = `<script>
|
|
366
|
+
(function(){
|
|
367
|
+
if(typeof globalThis.global==='undefined')globalThis.global=globalThis;
|
|
368
|
+
if(typeof globalThis.process==='undefined')globalThis.process={env:{NODE_ENV:'production'},browser:true,version:'v18.0.0',versions:{},platform:'browser',cwd:function(){return'/'},nextTick:function(fn){setTimeout(fn,0)}};
|
|
369
|
+
})();
|
|
370
|
+
</script>`;
|
|
371
|
+
let result = html;
|
|
372
|
+
if (result.includes('<head>')) {
|
|
373
|
+
result = result.replace('<head>', `<head>\n${shimScript}`);
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
result = shimScript + result;
|
|
377
|
+
}
|
|
280
378
|
if (!autoInit)
|
|
281
|
-
return
|
|
379
|
+
return result;
|
|
282
380
|
const initScript = `
|
|
283
381
|
<script type="module">
|
|
284
382
|
import { configure } from '@zenfs/core';
|
|
@@ -292,10 +390,10 @@ if (!window.__seedFsReady) {
|
|
|
292
390
|
});
|
|
293
391
|
}
|
|
294
392
|
</script>`;
|
|
295
|
-
if (
|
|
296
|
-
return
|
|
393
|
+
if (result.includes('</head>')) {
|
|
394
|
+
return result.replace('</head>', `${initScript}\n</head>`);
|
|
297
395
|
}
|
|
298
|
-
return
|
|
396
|
+
return result + initScript;
|
|
299
397
|
},
|
|
300
398
|
};
|
|
301
399
|
const plugins = [configPlugin, mainPlugin];
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\nconst SDK_DIST_DIR = path.dirname(fileURLToPath(import.meta.url))\nconst ARWEAVE_SHIM_FILE = path.join(SDK_DIST_DIR, 'arweave-default-shim.js')\n\ntype AliasEntry = { find: string | RegExp; replacement: string }\n\nfunction resolvePackageFile(packageName: string, relativePath: string): string | undefined {\n const candidates: string[] = []\n\n try {\n const pkgJson = _req.resolve(`${packageName}/package.json`)\n candidates.push(path.join(path.dirname(pkgJson), relativePath))\n } catch {\n // package may be hoisted/unavailable in this graph\n }\n\n const cwdNodeModules = path.join(process.cwd(), 'node_modules')\n candidates.push(path.join(cwdNodeModules, packageName, relativePath))\n\n const bunDir = path.join(cwdNodeModules, '.bun')\n if (fs.existsSync(bunDir)) {\n for (const entry of fs.readdirSync(bunDir)) {\n if (!entry.startsWith(`${packageName}@`)) continue\n candidates.push(path.join(bunDir, entry, `node_modules/${packageName}`, relativePath))\n }\n }\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n return undefined\n}\n\nfunction normalizeAliasEntries(\n alias: NonNullable<UserConfig['resolve']>['alias'] | undefined\n): AliasEntry[] {\n if (!alias) return []\n if (Array.isArray(alias)) {\n return alias\n .filter((entry): entry is AliasEntry => !!entry && !!(entry as AliasEntry).replacement)\n .map((entry) => ({ find: entry.find, replacement: entry.replacement }))\n }\n\n return Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement: String(replacement),\n }))\n}\n\nfunction mergeAliasEntries(existing: AliasEntry[], additions: AliasEntry[]): AliasEntry[] {\n const merged = [...existing]\n const keyOf = (find: string | RegExp) =>\n typeof find === 'string' ? `s:${find}` : `r:${find.toString()}`\n const seen = new Set(merged.map((entry) => keyOf(entry.find)))\n\n for (const entry of additions) {\n const key = keyOf(entry.find)\n if (seen.has(key)) continue\n seen.add(key)\n merged.push(entry)\n }\n\n return merged\n}\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const aliasEntries: AliasEntry[] = []\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n aliasEntries.push({ find: mod, replacement: target })\n }\n\n const eventEmitterEsm = resolvePackageFile('eventemitter3', 'dist/eventemitter3.esm.js')\n if (eventEmitterEsm) {\n aliasEntries.push(\n { find: 'eventemitter3', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.mjs', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.js', replacement: eventEmitterEsm },\n )\n }\n\n const arweaveBundle = resolvePackageFile('arweave', 'bundles/web.bundle.js')\n if (arweaveBundle) {\n aliasEntries.push(\n { find: /^arweave$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/web\\/index\\.js$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/bundles\\/web\\.bundle\\.js$/, replacement: arweaveBundle },\n )\n }\n\n const existingResolve = userConfig.resolve ?? {}\n const mergedAlias = mergeAliasEntries(\n normalizeAliasEntries(existingResolve.alias),\n aliasEntries,\n )\n\n const desiredOptimizeIncludes = [\n '@zenfs/core',\n '@zenfs/dom',\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n 'viem',\n 'isows',\n ]\n const resolvableOptimizeIncludes = desiredOptimizeIncludes.filter(\n (dep) => !!resolvePackageFile(dep, 'package.json')\n )\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n ...resolvableOptimizeIncludes,\n ],\n // Keep `global` shim in optimizer esbuild options; top-level Vite `define`\n // can be rejected by Rolldown in some consumer setups.\n esbuildOptions: {\n ...(userConfig.optimizeDeps?.esbuildOptions ?? {}),\n define: {\n ...(userConfig.optimizeDeps?.esbuildOptions?.define ?? {}),\n global: 'globalThis',\n },\n },\n }\n\n return {\n // Apply global → globalThis for Rollup production builds too.\n // optimizeDeps.esbuildOptions.define only covers the dev pre-bundle step;\n // this top-level define is picked up by @rollup/plugin-replace during build\n // and covers all chunks, including code-split migrator/commonjs-helper chunks.\n define: {\n ...(userConfig.define ?? {}),\n global: 'globalThis',\n },\n resolve: {\n ...existingResolve,\n alias: mergedAlias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n // Also dedupe XState and Seed packages: two xstate copies cause Object.assign _version errors;\n // two @seedprotocol/sdk copies leave BaseDb.PlatformClass / Db.appDb on different module instances\n // (\"App DB not found\", undefined.$with on PostsPage).\n dedupe: Array.from(\n new Set([\n ...(existingResolve.dedupe ?? []),\n 'react',\n 'react-dom',\n 'thirdweb',\n 'xstate',\n '@xstate/react',\n '@seedprotocol/sdk',\n '@seedprotocol/react',\n '@seedprotocol/publish',\n '@seedprotocol/feed',\n ])\n ),\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingRolldownOptions = (existingBuild as Record<string, unknown>).rolldownOptions as\n | Record<string, unknown>\n | undefined\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build: Record<string, unknown> = {\n ...existingBuild,\n commonjsOptions,\n }\n if (existingRolldownOptions) {\n build.rolldownOptions = {\n ...existingRolldownOptions,\n external: externalList,\n }\n } else {\n build.rollupOptions = rollupOptions\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\n// Node.js globals that are undefined in browsers and will throw at runtime.\n// Keyed by identifier; value is the safe typeof-guard pattern so we can skip those.\nconst BROWSER_DANGEROUS_GLOBALS: Record<string, RegExp> = {\n global: /\\btypeof\\s+global\\b/,\n process: /\\btypeof\\s+process\\b/,\n Buffer: /\\btypeof\\s+Buffer\\b/,\n __dirname: /\\btypeof\\s+__dirname\\b/,\n __filename: /\\btypeof\\s+__filename\\b/,\n}\n\n/**\n * Strip JS string literals, template literals, and comments from source text\n * so that identifier searches don't false-positive on string content.\n * This is intentionally approximate — good enough for a lint-style warning pass.\n */\nfunction stripStringsAndComments(code: string): string {\n return code\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, (m) => ' '.repeat(m.length)) // /* block comments */\n .replace(/\\/\\/[^\\n]*/g, (m) => ' '.repeat(m.length)) // // line comments\n .replace(/`(?:[^`\\\\]|\\\\.)*`/gs, (m) => '`' + ' '.repeat(m.length - 2) + '`') // template literals\n .replace(/\"(?:[^\"\\\\]|\\\\.)*\"/g, (m) => '\"' + ' '.repeat(m.length - 2) + '\"') // double-quoted strings\n .replace(/'(?:[^'\\\\]|\\\\.)*'/g, (m) => \"'\" + ' '.repeat(m.length - 2) + \"'\") // single-quoted strings\n}\n\ninterface GlobalHit {\n global: string\n /** zero-based character offset in the stripped source */\n offset: number\n /** 1-based line number */\n line: number\n /** surrounding raw source for context */\n context: string\n}\n\nfunction findDangerousGlobals(rawCode: string): GlobalHit[] {\n const stripped = stripStringsAndComments(rawCode)\n const hits: GlobalHit[] = []\n\n for (const [name, typeofGuard] of Object.entries(BROWSER_DANGEROUS_GLOBALS)) {\n // Skip globalThis when checking 'global'\n const re = new RegExp(`(?<![.\\\\w$])\\\\b${name}\\\\b(?!This)(?![\\\\w$])`, 'g')\n let m: RegExpExecArray | null\n while ((m = re.exec(stripped)) !== null) {\n const offset = m.index\n // Check for typeof guard in the ~20 chars before the match\n const before = stripped.slice(Math.max(0, offset - 20), offset)\n if (typeofGuard.test(before)) continue\n\n // Compute 1-based line number from raw source (positions are preserved because\n // we replace with equal-length spaces, so offsets are stable)\n const linesBefore = rawCode.slice(0, offset).split('\\n')\n const line = linesBefore.length\n const colOffset = linesBefore[linesBefore.length - 1].length\n const rawLine = rawCode.split('\\n')[line - 1] ?? ''\n const ctx = rawLine.slice(Math.max(0, colOffset - 40), colOffset + name.length + 40).trim()\n\n hits.push({ global: name, offset, line, context: ctx })\n }\n }\n\n return hits\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\nconst SDK_DIST_DIR = path.dirname(fileURLToPath(import.meta.url))\nconst ARWEAVE_SHIM_FILE = path.join(SDK_DIST_DIR, 'arweave-default-shim.js')\n\ntype AliasEntry = { find: string | RegExp; replacement: string }\n\nfunction resolvePackageFile(packageName: string, relativePath: string): string | undefined {\n const candidates: string[] = []\n\n try {\n const pkgJson = _req.resolve(`${packageName}/package.json`)\n candidates.push(path.join(path.dirname(pkgJson), relativePath))\n } catch {\n // package may be hoisted/unavailable in this graph\n }\n\n const cwdNodeModules = path.join(process.cwd(), 'node_modules')\n candidates.push(path.join(cwdNodeModules, packageName, relativePath))\n\n const bunDir = path.join(cwdNodeModules, '.bun')\n if (fs.existsSync(bunDir)) {\n for (const entry of fs.readdirSync(bunDir)) {\n if (!entry.startsWith(`${packageName}@`)) continue\n candidates.push(path.join(bunDir, entry, `node_modules/${packageName}`, relativePath))\n }\n }\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate\n }\n return undefined\n}\n\nfunction normalizeAliasEntries(\n alias: NonNullable<UserConfig['resolve']>['alias'] | undefined\n): AliasEntry[] {\n if (!alias) return []\n if (Array.isArray(alias)) {\n return alias\n .filter((entry): entry is AliasEntry => !!entry && !!(entry as AliasEntry).replacement)\n .map((entry) => ({ find: entry.find, replacement: entry.replacement }))\n }\n\n return Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement: String(replacement),\n }))\n}\n\nfunction mergeAliasEntries(existing: AliasEntry[], additions: AliasEntry[]): AliasEntry[] {\n const merged = [...existing]\n const keyOf = (find: string | RegExp) =>\n typeof find === 'string' ? `s:${find}` : `r:${find.toString()}`\n const seen = new Set(merged.map((entry) => keyOf(entry.find)))\n\n for (const entry of additions) {\n const key = keyOf(entry.find)\n if (seen.has(key)) continue\n seen.add(key)\n merged.push(entry)\n }\n\n return merged\n}\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const aliasEntries: AliasEntry[] = []\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n aliasEntries.push({ find: mod, replacement: target })\n }\n\n const eventEmitterEsm = resolvePackageFile('eventemitter3', 'dist/eventemitter3.esm.js')\n if (eventEmitterEsm) {\n aliasEntries.push(\n { find: 'eventemitter3', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.mjs', replacement: eventEmitterEsm },\n { find: 'eventemitter3/index.js', replacement: eventEmitterEsm },\n )\n }\n\n const arweaveBundle = resolvePackageFile('arweave', 'bundles/web.bundle.js')\n if (arweaveBundle) {\n aliasEntries.push(\n { find: /^arweave$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/web\\/index\\.js$/, replacement: ARWEAVE_SHIM_FILE },\n { find: /^arweave\\/bundles\\/web\\.bundle\\.js$/, replacement: arweaveBundle },\n )\n }\n\n const existingResolve = userConfig.resolve ?? {}\n const mergedAlias = mergeAliasEntries(\n normalizeAliasEntries(existingResolve.alias),\n aliasEntries,\n )\n\n const desiredOptimizeIncludes = [\n '@zenfs/core',\n '@zenfs/dom',\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n 'viem',\n 'isows',\n ]\n const resolvableOptimizeIncludes = desiredOptimizeIncludes.filter(\n (dep) => !!resolvePackageFile(dep, 'package.json')\n )\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n ...resolvableOptimizeIncludes,\n ],\n // Keep `global` shim in optimizer esbuild options; top-level Vite `define`\n // can be rejected by Rolldown in some consumer setups.\n esbuildOptions: {\n ...(userConfig.optimizeDeps?.esbuildOptions ?? {}),\n define: {\n ...(userConfig.optimizeDeps?.esbuildOptions?.define ?? {}),\n global: 'globalThis',\n },\n },\n }\n\n return {\n // Apply global → globalThis for Rollup production builds too.\n // optimizeDeps.esbuildOptions.define only covers the dev pre-bundle step;\n // this top-level define is picked up by @rollup/plugin-replace during build\n // and covers all chunks, including code-split migrator/commonjs-helper chunks.\n define: {\n ...(userConfig.define ?? {}),\n global: 'globalThis',\n // process is referenced by path-browserify (drizzle migrator's node:path dep)\n // and other CJS modules. Point at globalThis.process which is set by the\n // synchronous inline shim script injected into index.html before any modules load.\n 'process.env.NODE_ENV': JSON.stringify('production'),\n 'process.browser': 'true',\n 'process.platform': '\"browser\"',\n },\n resolve: {\n ...existingResolve,\n alias: mergedAlias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n // Also dedupe XState and Seed packages: two xstate copies cause Object.assign _version errors;\n // two @seedprotocol/sdk copies leave BaseDb.PlatformClass / Db.appDb on different module instances\n // (\"App DB not found\", undefined.$with on PostsPage).\n dedupe: Array.from(\n new Set([\n ...(existingResolve.dedupe ?? []),\n 'react',\n 'react-dom',\n 'thirdweb',\n 'xstate',\n '@xstate/react',\n '@seedprotocol/sdk',\n '@seedprotocol/react',\n '@seedprotocol/publish',\n '@seedprotocol/feed',\n ])\n ),\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingRolldownOptions = (existingBuild as Record<string, unknown>).rolldownOptions as\n | Record<string, unknown>\n | undefined\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build: Record<string, unknown> = {\n ...existingBuild,\n commonjsOptions,\n }\n if (existingRolldownOptions) {\n build.rolldownOptions = {\n ...existingRolldownOptions,\n external: externalList,\n }\n } else {\n build.rollupOptions = rollupOptions\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n generateBundle(_options, bundle) {\n const allHits: Array<{ chunk: string } & GlobalHit> = []\n\n for (const [chunkName, asset] of Object.entries(bundle)) {\n if (asset.type !== 'chunk') continue\n const hits = findDangerousGlobals(asset.code)\n for (const hit of hits) {\n allHits.push({ chunk: chunkName, ...hit })\n }\n }\n\n if (allHits.length === 0) return\n\n console.warn(\n '\\n[seed-vite-plugin] ⚠️ Bare Node.js globals detected in browser bundle chunks.' +\n ' These will throw ReferenceError at runtime unless shimmed.\\n'\n )\n const byChunk = new Map<string, typeof allHits>()\n for (const hit of allHits) {\n const list = byChunk.get(hit.chunk) ?? []\n list.push(hit)\n byChunk.set(hit.chunk, list)\n }\n for (const [chunk, hits] of byChunk) {\n console.warn(` ${chunk}`)\n for (const h of hits) {\n console.warn(` line ${h.line}: \\`${h.global}\\` — ${h.context}`)\n }\n }\n console.warn('')\n },\n\n transformIndexHtml(html) {\n // Synchronous inline script runs before any <script type=\"module\">, so\n // global and process are guaranteed to exist when CJS wrappers evaluate.\n // vite-plugin-node-polyfills injects polyfills via module imports, which\n // resolve too late for @rollup/plugin-commonjs-generated wrapper code.\n const shimScript = `<script>\n(function(){\n if(typeof globalThis.global==='undefined')globalThis.global=globalThis;\n if(typeof globalThis.process==='undefined')globalThis.process={env:{NODE_ENV:'production'},browser:true,version:'v18.0.0',versions:{},platform:'browser',cwd:function(){return'/'},nextTick:function(fn){setTimeout(fn,0)}};\n})();\n</script>`\n\n let result = html\n if (result.includes('<head>')) {\n result = result.replace('<head>', `<head>\\n${shimScript}`)\n } else {\n result = shimScript + result\n }\n\n if (!autoInit) return result\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (result.includes('</head>')) {\n return result.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return result + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":[],"mappings":";;;;;;AAOA,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAiC3C;AACA;AACA,MAAM,yBAAyB,GAA2B;AACxD,IAAA,MAAM,EAAM,qBAAqB;AACjC,IAAA,OAAO,EAAK,sBAAsB;AAClC,IAAA,MAAM,EAAM,qBAAqB;AACjC,IAAA,SAAS,EAAG,wBAAwB;AACpC,IAAA,UAAU,EAAE,yBAAyB;CACtC;AAED;;;;AAIG;AACH,SAAS,uBAAuB,CAAC,IAAY,EAAA;AAC3C,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,SAAA,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACnD,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC3E,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC1E,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;AAC/E;AAYA,SAAS,oBAAoB,CAAC,OAAe,EAAA;AAC3C,IAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC;IACjD,MAAM,IAAI,GAAgB,EAAE;AAE5B,IAAA,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;;QAE3E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAA,qBAAA,CAAuB,EAAE,GAAG,CAAC;AACzE,QAAA,IAAI,CAAyB;AAC7B,QAAA,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK;;AAEtB,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AAC/D,YAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE;;;AAI9B,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AACxD,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM;AAC/B,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;AAC5D,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;AACnD,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE;AAE3F,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QACzD;IACF;AAEA,IAAA,OAAO,IAAI;AACb;AAEA,MAAM,kBAAkB,GAAG;IACzB,IAAI;IACJ,aAAa;IACb,SAAS;IACT,kBAAkB;CACnB;AACD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC;AAI5E,SAAS,kBAAkB,CAAC,WAAmB,EAAE,YAAoB,EAAA;IACnE,MAAM,UAAU,GAAa,EAAE;AAE/B,IAAA,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,WAAW,CAAA,aAAA,CAAe,CAAC;AAC3D,QAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;IACjE;AAAE,IAAA,MAAM;;IAER;AAEA,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;AAC/D,IAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;AAChD,IAAA,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA,EAAG,WAAW,GAAG,CAAC;gBAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,WAAW,CAAA,CAAE,EAAE,YAAY,CAAC,CAAC;QACxF;IACF;AAEA,IAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,QAAA,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,SAAS;IAChD;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,qBAAqB,CAC5B,KAA8D,EAAA;AAE9D,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,KAAK,KAA0B,CAAC,CAAC,KAAK,IAAI,CAAC,CAAE,KAAoB,CAAC,WAAW;aACrF,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E;AAEA,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM;QACzD,IAAI;AACJ,QAAA,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;AACjC,KAAA,CAAC,CAAC;AACL;AAEA,SAAS,iBAAiB,CAAC,QAAsB,EAAE,SAAuB,EAAA;AACxE,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,IAAqB,KAClC,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9D,IAAA,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACpB;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,cAAc,CAAC,OAAA,GAAiC,EAAE,EAAA;AAChE,IAAA,MAAM,EACJ,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,oBAAoB,GAAG,IAAI,GAC5B,GAAG,OAAO;AAKX;;AAEG;AACH,IAAA,MAAM,YAAY,GAAW;AAC3B,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,OAAO,EAAE,KAAK;AAEd,QAAA,MAAM,CAAC,UAAU,EAAA;YACf,MAAM,YAAY,GAAiB,EAAE;AACrC,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC3C,MAAM,MAAM,GAAG,UAAU,GAAG,sBAAsB,GAAG,aAAa;AAClE,gBAAA,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YACvD;YAEA,MAAM,eAAe,GAAG,kBAAkB,CAAC,eAAe,EAAE,2BAA2B,CAAC;YACxF,IAAI,eAAe,EAAE;AACnB,gBAAA,YAAY,CAAC,IAAI,CACf,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,EACvD,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,eAAe,EAAE,EACjE,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,eAAe,EAAE,CACjE;YACH;YAEA,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,EAAE,uBAAuB,CAAC;YAC5E,IAAI,aAAa,EAAE;AACjB,gBAAA,YAAY,CAAC,IAAI,CACf,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,EACrD,EAAE,IAAI,EAAE,2BAA2B,EAAE,WAAW,EAAE,iBAAiB,EAAE,EACrE,EAAE,IAAI,EAAE,qCAAqC,EAAE,WAAW,EAAE,aAAa,EAAE,CAC5E;YACH;AAEA,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,iBAAiB,CACnC,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,EAC5C,YAAY,CACb;AAED,YAAA,MAAM,uBAAuB,GAAG;gBAC9B,aAAa;gBACb,YAAY;gBACZ,QAAQ;gBACR,SAAS;gBACT,QAAQ;gBACR,iBAAiB;gBACjB,MAAM;gBACN,OAAO;aACR;YACD,MAAM,0BAA0B,GAAG,uBAAuB,CAAC,MAAM,CAC/D,CAAC,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CACnD;AAED,YAAA,MAAM,YAAY,GAA+B;AAC/C,gBAAA,IAAI,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;AAClC,gBAAA,OAAO,EAAE;oBACP,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;;oBAE3C,mBAAmB;oBACnB,aAAa;oBACb,aAAa;oBACb,gBAAgB;;oBAEhB,SAAS;AACV,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;AAC3C,oBAAA,GAAG,0BAA0B;AAC9B,iBAAA;;;AAGD,gBAAA,cAAc,EAAE;oBACd,IAAI,UAAU,CAAC,YAAY,EAAE,cAAc,IAAI,EAAE,CAAC;AAClD,oBAAA,MAAM,EAAE;wBACN,IAAI,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,IAAI,EAAE,CAAC;AAC1D,wBAAA,MAAM,EAAE,YAAY;AACrB,qBAAA;AACF,iBAAA;aACF;YAED,OAAO;;;;;AAKL,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;AAC5B,oBAAA,MAAM,EAAE,YAAY;;;;AAIpB,oBAAA,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AACpD,oBAAA,iBAAiB,EAAE,MAAM;AACzB,oBAAA,kBAAkB,EAAE,WAAW;AAChC,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,GAAG,eAAe;AAClB,oBAAA,KAAK,EAAE,WAAW;;;;;;AAMlB,oBAAA,MAAM,EAAE,KAAK,CAAC,IAAI,CAChB,IAAI,GAAG,CAAC;AACN,wBAAA,IAAI,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;wBACjC,OAAO;wBACP,WAAW;wBACX,UAAU;wBACV,QAAQ;wBACR,eAAe;wBACf,mBAAmB;wBACnB,qBAAqB;wBACrB,uBAAuB;wBACvB,oBAAoB;AACrB,qBAAA,CAAC,CACH;AACF,iBAAA;gBACD,YAAY;aACb;QACH,CAAC;KACF;AAED;;AAEG;AACH,IAAA,MAAM,UAAU,GAAW;AACzB,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,OAAO,EAAE,MAAM;AAEf,QAAA,MAAM,CAAC,UAAU,EAAA;AACf,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,IAAI,EAAE;AAC5D,YAAA,MAAM,qBAAqB,GAAG,aAAa,CAAC,aAAa,IAAI,EAAE;AAC/D,YAAA,MAAM,uBAAuB,GAAI,aAAyC,CAAC,eAE9D;AACb,YAAA,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,QAAQ,IAAI,EAAE;AAE7D,YAAA,MAAM,OAAO,GAAG;;gBAEd,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO;sBACtC,gBAAgB,CAAC;sBACjB,gBAAgB,CAAC;AACnB,0BAAE,CAAC,gBAAgB,CAAC,OAAO;0BACzB,EAAE,CAAC;;gBAEP,cAAc;gBACd,kCAAkC;aACnC;;AAGD,YAAA,MAAM,OAAO,GAAG;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO;sBACtC,gBAAgB,CAAC;sBACjB,gBAAgB,CAAC;AACnB,0BAAE,CAAC,gBAAgB,CAAC,OAAO;0BACzB,EAAE,CAAC;;gBAEP,gCAAgC;aACjC;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,GAAG,gBAAgB;gBACnB,OAAO;gBACP,OAAO;AACP,gBAAA,uBAAuB,EAAE,IAAI;aAC9B;;AAGD,YAAA,MAAM,gBAAgB,GAAG;gBACvB,aAAa;AACb,gBAAA,gBAAgB;;gBAEhB,sBAAsB;gBACtB,IAAI;gBACJ,UAAU;gBACV,kBAAkB;gBAClB,0BAA0B;gBAC1B,QAAQ;gBACR,gBAAgB;gBAChB,uBAAuB;aACxB;AAED,YAAA,MAAM,kBAAkB,GAAG,CAAC,EAAU,KACpC,gBAAgB,CAAC,IAAI,CACnB,CAAC,GAAG,KACF,EAAE,KAAK,GAAG;AACV,gBAAA,EAAE,CAAC,UAAU,CAAC,CAAA,EAAG,GAAG,GAAG,CAAC;AACxB,gBAAA,EAAE,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,GAAG,GAAG,CAAC;gBACvB,EAAE,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CACzB;YAEH,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,QAAiB,EAAE,UAAoB,KAAI;gBAC3E,IAAI,kBAAkB,CAAC,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI;AACvC,gBAAA,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;;oBAE1C,OAAQ,gBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,IAAI,KAAK,CAAC;gBACrE;AACA,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC;gBAC/E;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC;AAED,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,qBAAqB;AACxB,gBAAA,QAAQ,EAAE,YAAY;aACvB;AAED,YAAA,MAAM,KAAK,GAA4B;AACrC,gBAAA,GAAG,aAAa;gBAChB,eAAe;aAChB;YACD,IAAI,uBAAuB,EAAE;gBAC3B,KAAK,CAAC,eAAe,GAAG;AACtB,oBAAA,GAAG,uBAAuB;AAC1B,oBAAA,QAAQ,EAAE,YAAY;iBACvB;YACH;iBAAO;AACL,gBAAA,KAAK,CAAC,aAAa,GAAG,aAAa;YACrC;;;AAIA,YAAA,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE;AAC9C,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,cAAc;AACjB,gBAAA,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,IAAI;aACtC;YAED,OAAO;gBACL,KAAK;gBACL,MAAM;aACP;QACH,CAAC;QAED,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAA;YAC7B,MAAM,OAAO,GAAyC,EAAE;AAExD,YAAA,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvD,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;oBAAE;gBAC5B,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7C,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC;gBAC5C;YACF;AAEA,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE;YAE1B,OAAO,CAAC,IAAI,CACV,kFAAkF;AAClF,gBAAA,+DAA+D,CAChE;AACD,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B;AACjD,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,gBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;YAC9B;YACA,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE;AACnC,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAA,CAAE,CAAC;AAC1B,gBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,oBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,CAAC,CAAC,IAAI,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAA,MAAA,EAAS,CAAC,CAAC,OAAO,CAAA,CAAE,CAAC;gBACrE;YACF;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,CAAC;AAED,QAAA,kBAAkB,CAAC,IAAI,EAAA;;;;;AAKrB,YAAA,MAAM,UAAU,GAAG,CAAA;;;;;UAKf;YAEJ,IAAI,MAAM,GAAG,IAAI;AACjB,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA,QAAA,EAAW,UAAU,CAAA,CAAE,CAAC;YAC5D;iBAAO;AACL,gBAAA,MAAM,GAAG,UAAU,GAAG,MAAM;YAC9B;AAEA,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,MAAM;AAE5B,YAAA,MAAM,UAAU,GAAG;;;;;;;;;;;;UAYf;AAEJ,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA,EAAG,UAAU,CAAA,SAAA,CAAW,CAAC;YAC5D;YAEA,OAAO,MAAM,GAAG,UAAU;QAC5B,CAAC;KACF;AAED,IAAA,MAAM,OAAO,GAAa,CAAC,YAAY,EAAE,UAAU,CAAC;IAEpD,IAAI,oBAAoB,EAAE;AAExB,QAAA,OAAO,CAAC,IAAI,CACV,aAAa,CAAC;;YAEZ,OAAO,EAAE,CAAC,UAAU,EAAE;;AAEtB,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AACpF,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;AACD,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAsB,CACxB;IACH;AAEA,IAAA,OAAO,OAAO;AAChB;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager-wXAlwkmU.js","sources":["../../src/node/helpers/FileManager.ts"],"sourcesContent":["import * as fsAsync from 'fs/promises'\nimport * as fs from 'fs'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport path from 'path'\n\nclass FileManager extends BaseFileManager {\n\n static async getFs() {\n return fs\n }\n\n static getFsSync() {\n return fs\n }\n\n static async getContentUrlFromPath( path: string ): Promise<string | undefined> {\n return new Promise(( resolve, reject ) => {\n reject(new Error('Not implemented'))\n })\n }\n\n static async initializeFileSystem(workingDir?: string): Promise<void> {\n return // No need to initialize file system in node\n }\n\n static async downloadAllFiles(): Promise<void> {\n return new Promise(( resolve, reject ) => {\n reject(new Error('Not implemented'))\n })\n }\n\n static async resizeImage(): Promise<void> {\n return new Promise(( resolve, reject ) => {\n reject(new Error('Not implemented'))\n })\n }\n\n static async resizeAllImages(): Promise<void> {\n return new Promise(( resolve, reject ) => {\n reject(new Error('Not implemented'))\n })\n }\n\n static async pathExists(filePath: string): Promise<boolean> {\n return await fsAsync.access(filePath).then(() => true).catch(() => false)\n }\n\n static async listImageFiles(): Promise<string[]> {\n return this.listFiles('images')\n }\n\n static async listFiles(dir: string): Promise<string[]> {\n const targetDir = BaseFileManager.getFilesPath(dir)\n const exists = await this.pathExists(targetDir)\n if (!exists) {\n return []\n }\n const entries = await fsAsync.readdir(targetDir, { withFileTypes: true })\n return entries.filter((entry) => entry.isFile()).map((entry) => entry.name)\n }\n\n static async createDirIfNotExists(filePath: string): Promise<void> {\n await fsAsync.mkdir(filePath, { recursive: true })\n }\n\n static async waitForFile(filePath: string, interval: number = 1000, timeout: number = 60000): Promise<boolean> {\n // Check if file exists immediately\n const pathExists = await this.pathExists(filePath)\n if (pathExists) {\n return true\n }\n\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n let isBusy = false\n\n const checkInterval = setInterval(async () => {\n if (isBusy) {\n return\n }\n isBusy = true\n\n try {\n const exists = await this.pathExists(filePath)\n if (exists) {\n clearInterval(checkInterval)\n resolve(true)\n return\n }\n\n if (Date.now() - startTime >= timeout) {\n clearInterval(checkInterval)\n reject(new Error('Timeout exceeded while waiting for file'))\n return\n }\n } catch (error) {\n clearInterval(checkInterval)\n reject(error)\n return\n } finally {\n isBusy = false\n }\n }, interval)\n })\n }\n\n static async waitForFileWithContent(filePath: string, interval: number = 100, timeout: number = 5000): Promise<boolean> {\n // In node, file writes are synchronous, so if the file exists, it has content\n // Just wait for the file to exist\n return this.waitForFile(filePath, interval, timeout)\n }\n\n static async saveFile(filePath: string, content: string | Blob | ArrayBuffer): Promise<void> {\n // Ensure the directory exists\n const dir = path.dirname(filePath)\n await fsAsync.mkdir(dir, { recursive: true })\n\n // Write the content based on type\n if (typeof content === 'string') {\n await fsAsync.writeFile(filePath, content, 'utf-8')\n } else if (content instanceof Blob) {\n const arrayBuffer = await content.arrayBuffer()\n await fsAsync.writeFile(filePath, Buffer.from(arrayBuffer))\n } else if (content instanceof ArrayBuffer) {\n await fsAsync.writeFile(filePath, Buffer.from(content))\n } else {\n throw new Error('Unsupported content type')\n }\n }\n\n static saveFileSync(filePath: string, content: string | Blob | ArrayBuffer): void {\n // Ensure the directory exists\n const dir = path.dirname(filePath)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true })\n }\n\n // Write the content based on type\n if (typeof content === 'string') {\n fs.writeFileSync(filePath, content, 'utf-8')\n } else if (content instanceof Blob) {\n // For Blob, we need to convert to Buffer synchronously\n // This is a limitation - we can't do this truly synchronously\n // But we can read it as ArrayBuffer if it's already available\n throw new Error('Blob content not supported in saveFileSync. Use saveFile() instead or convert to ArrayBuffer first.')\n } else if (content instanceof ArrayBuffer) {\n fs.writeFileSync(filePath, Buffer.from(content))\n } else {\n throw new Error('Unsupported content type')\n }\n }\n\n static async readFileAsBuffer( filePath: string ): Promise<Buffer> {\n return await fsAsync.readFile(filePath)\n }\n\n static async readFileAsString(filePath: string): Promise<string> {\n return await fsAsync.readFile(filePath, 'utf-8')\n }\n\n static async readFile(filePath: string): Promise<File> {\n return new File([await fsAsync.readFile(filePath)], filePath)\n }\n\n static readFileSync(filePath: string): File {\n return new File([fs.readFileSync(filePath)], filePath)\n }\n\n static getParentDirPath(filePath: string): string {\n return path.dirname(filePath)\n }\n\n static getFilenameFromPath(filePath: string): string {\n return path.basename(filePath)\n }\n\n static getPathModule(): any {\n return path\n }\n}\n\nexport { FileManager }\n\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Dbu8yrzO.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CKY29lZp.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CjrqUOwu.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|