@peerbit/vite 1.0.36 → 1.0.38-48ac6de

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,35 @@
1
+ import { type ModuleResolver } from "@peerbit/build-assets";
1
2
  import { type PluginOption } from "vite";
3
+ export type { ModuleResolver } from "@peerbit/build-assets";
4
+ export interface FileSystemLike {
5
+ existsSync(path: string): boolean;
6
+ statSync(path: string): {
7
+ isDirectory(): boolean;
8
+ };
9
+ readdirSync(path: string): string[];
10
+ mkdirSync(path: string, options: {
11
+ recursive: boolean;
12
+ }): void;
13
+ copyFileSync(src: string, dest: string): void;
14
+ realpathSync(path: string): string;
15
+ }
2
16
  declare const _default: (options?: {
3
17
  packages?: string[];
4
18
  assets?: {
5
19
  src: string;
6
20
  dest: string;
7
- }[];
21
+ }[] | null;
8
22
  }) => PluginOption[];
9
23
  export default _default;
24
+ export declare const TEST_EXPORTS: {
25
+ findLibraryInNodeModules: (library: string, deps?: {
26
+ fs?: FileSystemLike;
27
+ resolvers?: ModuleResolver[];
28
+ }) => string;
29
+ defaultAssetSources: string[];
30
+ resolveAssetLocations: (sources: string[], deps?: {
31
+ fs?: FileSystemLike;
32
+ resolvers?: ModuleResolver[];
33
+ }) => import("@peerbit/build-assets").ResolveAssetLocation[];
34
+ };
10
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;yBA4FxC,UAAS;IACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpC,KACJ,YAAY,EAAE;AALjB,wBA0BE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EAInB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,WAAW,IAAI,OAAO,CAAA;KAAE,CAAC;IACnD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;yBAsHA,UAAS;IACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;CAC3C,KACJ,YAAY,EAAE;AALjB,wBA0BE;AA6BF,eAAO,MAAM,YAAY;wCAxIf,MAAM,SACR;QAAE,EAAE,CAAC,EAAE,cAAc,CAAC;QAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAA;KAAE;;qCAMnD,MAAM,EAAE,SACV;QAAE,EAAE,CAAC,EAAE,cAAc,CAAC;QAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAA;KAAE;CAoI5D,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,7 +1,36 @@
1
+ import { findLibraryInNodeModules as baseFindLibraryInNodeModules, resolveAssetLocations as baseResolveAssetLocations, defaultAssetSources, } from "@peerbit/build-assets";
1
2
  import fs from "fs";
3
+ import { createRequire } from "module";
2
4
  import path from "path";
3
5
  import {} from "vite";
4
6
  import { viteStaticCopy } from "vite-plugin-static-copy";
7
+ const requireFromPlugin = createRequire(import.meta.url);
8
+ let requireFromCwd;
9
+ try {
10
+ requireFromCwd = createRequire(path.join(process.cwd(), "package.json"));
11
+ }
12
+ catch (err) {
13
+ // ignore if no package.json – fall back to plugin resolver
14
+ }
15
+ const createFindLibraryOptions = (deps) => {
16
+ const resolverCandidates = deps?.resolvers && deps.resolvers.length > 0
17
+ ? deps.resolvers
18
+ : [requireFromCwd, requireFromPlugin];
19
+ const mergedResolvers = resolverCandidates.filter((resolver) => resolver != null);
20
+ const options = {
21
+ resolvers: mergedResolvers,
22
+ };
23
+ if (deps?.fs) {
24
+ options.fs = deps.fs;
25
+ }
26
+ return options;
27
+ };
28
+ const findLibraryInNodeModules = (library, deps) => {
29
+ return baseFindLibraryInNodeModules(library, createFindLibraryOptions(deps));
30
+ };
31
+ const resolveAssetLocations = (sources, deps) => {
32
+ return baseResolveAssetLocations(sources, createFindLibraryOptions(deps));
33
+ };
5
34
  function dontMinimizeCertainPackagesPlugin(options = {}) {
6
35
  options.packages = [
7
36
  ...(options.packages || []),
@@ -15,7 +44,8 @@ function dontMinimizeCertainPackagesPlugin(options = {}) {
15
44
  if (command === "build") {
16
45
  config.optimizeDeps = config.optimizeDeps || {};
17
46
  config.optimizeDeps.exclude = config.optimizeDeps.exclude || [];
18
- config.optimizeDeps.exclude.push(...options.packages);
47
+ const pkgs = options.packages ?? [];
48
+ config.optimizeDeps.exclude.push(...pkgs);
19
49
  }
20
50
  },
21
51
  };
@@ -23,7 +53,18 @@ function dontMinimizeCertainPackagesPlugin(options = {}) {
23
53
  function copyToPublicPlugin(options = {}) {
24
54
  return {
25
55
  name: "copy-to-public",
56
+ enforce: "pre",
26
57
  buildStart() {
58
+ // Ensure worker exists in public/ as a last-resort (CI safety), even if assets disabled
59
+ try {
60
+ // Copy the entire dist/peerbit directory from @peerbit/indexer-sqlite3
61
+ const peerbitDistDir = findLibraryInNodeModules("@peerbit/indexer-sqlite3/dist/peerbit");
62
+ const destDir = path.resolve(resolveStaticPath(), "peerbit");
63
+ copyAssets(peerbitDistDir, destDir, "/");
64
+ }
65
+ catch (_err) {
66
+ // ignore; optional best-effort
67
+ }
27
68
  if (options?.assets) {
28
69
  options.assets.forEach(({ src, dest }) => {
29
70
  const sourcePath = path.resolve(src);
@@ -50,46 +91,16 @@ const resolveStaticPath = () => {
50
91
  throw new Error("Could not find public or static folder");
51
92
  }
52
93
  };
53
- const findLibraryInNodeModules = (library) => {
54
- // scan upwards until we find the node_modules folder
55
- let maxSearchDepth = 10;
56
- let currentDir = process.cwd();
57
- let nodeModulesDir = path.join(currentDir, "node_modules");
58
- while (!fs.existsSync(path.join(nodeModulesDir, library))) {
59
- currentDir = path.resolve(currentDir, "..");
60
- nodeModulesDir = path.join(currentDir, "node_modules");
61
- // we have found a .git folder, so we are at the root
62
- // then stop
63
- if (fs.existsSync(path.join(currentDir, ".git"))) {
64
- break;
65
- }
66
- maxSearchDepth--;
67
- if (maxSearchDepth <= 0) {
68
- throw new Error(`Could not find ${library} node_modules folder`);
69
- }
70
- }
71
- const libraryPath = path.join(nodeModulesDir, library);
72
- if (!fs.existsSync(libraryPath)) {
73
- throw new Error(`Library ${library} not found in node_modules`);
74
- }
75
- return libraryPath;
76
- };
77
- let pathsToCopy = [
78
- "@peerbit/any-store-opfs/dist/peerbit",
79
- "@peerbit/indexer-sqlite3/dist/peerbit",
80
- "@peerbit/riblt/dist/rateless_iblt_bg.wasm",
81
- ];
82
94
  export default (options = {}) => {
83
- let defaultAssets = pathsToCopy.map((path) => {
84
- return {
85
- src: findLibraryInNodeModules(path),
86
- dest: "peerbit/",
87
- };
88
- });
95
+ const includeDefaultAssets = options.assets === undefined;
96
+ const userAssets = Array.isArray(options.assets) ? options.assets : [];
97
+ const assetsToCopy = includeDefaultAssets
98
+ ? [...resolveAssetLocations(defaultAssetSources), ...userAssets]
99
+ : userAssets;
89
100
  return [
90
101
  dontMinimizeCertainPackagesPlugin({ packages: options.packages }),
91
102
  copyToPublicPlugin({
92
- assets: [...defaultAssets, ...(options.assets || [])],
103
+ assets: assetsToCopy,
93
104
  }),
94
105
  viteStaticCopy({
95
106
  targets: [
@@ -123,4 +134,10 @@ function copyAssets(srcPath, destPath, base) {
123
134
  fs.copyFileSync(srcPath, destPathAsFile);
124
135
  }
125
136
  }
137
+ // Expose internals for testing
138
+ export const TEST_EXPORTS = {
139
+ findLibraryInNodeModules,
140
+ defaultAssetSources,
141
+ resolveAssetLocations,
142
+ };
126
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,79 +1,82 @@
1
1
  {
2
- "name": "@peerbit/vite",
3
- "version": "1.0.36",
4
- "description": "Plugin for Vite to use Peerbit",
5
- "sideEffects": false,
6
- "type": "module",
7
- "types": "./dist/src/index.d.ts",
8
- "typesVersions": {
9
- "*": {
10
- "*": [
11
- "*",
12
- "dist/*",
13
- "dist/src/*",
14
- "dist/src/*/index"
15
- ],
16
- "src/*": [
17
- "*",
18
- "dist/*",
19
- "dist/src/*",
20
- "dist/src/*/index"
21
- ]
22
- }
23
- },
24
- "files": [
25
- "src",
26
- "dist",
27
- "!dist/e2e",
28
- "!dist/test",
29
- "!**/*.tsbuildinfo"
30
- ],
31
- "exports": {
32
- ".": {
33
- "types": "./dist/src/index.d.ts",
34
- "import": "./dist/src/index.js"
35
- }
36
- },
37
- "eslintConfig": {
38
- "extends": "peerbit",
39
- "parserOptions": {
40
- "project": true,
41
- "sourceType": "module"
42
- },
43
- "ignorePatterns": [
44
- "!.aegir.js",
45
- "test/ts-use",
46
- "*.d.ts"
47
- ]
48
- },
49
- "publishConfig": {
50
- "access": "public"
51
- },
52
- "scripts": {
53
- "clean": "aegir clean",
54
- "build": "aegir build --no-bundle",
55
- "test": "",
56
- "lint": "aegir lint"
57
- },
58
- "repository": {
59
- "type": "git",
60
- "url": "https://github.com/dao-xyz/peerbit"
61
- },
62
- "engines": {
63
- "node": ">=16.15.1"
64
- },
65
- "author": "dao.xyz",
66
- "license": "MIT",
67
- "dependencies": {
68
- "vite-plugin-static-copy": "^3.1.2",
69
- "vite": "^7.1.7"
70
- },
71
- "devDependencies": {
72
- "@peerbit/indexer-sqlite3": "1.2.28",
73
- "@peerbit/any-store": "2.1.14",
74
- "@peerbit/any-store-opfs": "1.0.13"
75
- },
76
- "localMaintainers": [
77
- "dao.xyz"
78
- ]
2
+ "name": "@peerbit/vite",
3
+ "version": "1.0.38-48ac6de",
4
+ "description": "Plugin for Vite to use Peerbit",
5
+ "sideEffects": false,
6
+ "type": "module",
7
+ "types": "./dist/src/index.d.ts",
8
+ "typesVersions": {
9
+ "*": {
10
+ "*": [
11
+ "*",
12
+ "dist/*",
13
+ "dist/src/*",
14
+ "dist/src/*/index"
15
+ ],
16
+ "src/*": [
17
+ "*",
18
+ "dist/*",
19
+ "dist/src/*",
20
+ "dist/src/*/index"
21
+ ]
22
+ }
23
+ },
24
+ "files": [
25
+ "src",
26
+ "dist",
27
+ "!dist/e2e",
28
+ "!dist/test",
29
+ "!**/*.tsbuildinfo"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/src/index.d.ts",
34
+ "import": "./dist/src/index.js"
35
+ }
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "peerbit",
39
+ "parserOptions": {
40
+ "project": true,
41
+ "sourceType": "module"
42
+ },
43
+ "ignorePatterns": [
44
+ "!.aegir.js",
45
+ "test/ts-use",
46
+ "*.d.ts"
47
+ ]
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "clean": "aegir clean",
54
+ "build": "aegir build --no-bundle",
55
+ "test": "aegir test -t node",
56
+ "lint": "aegir lint"
57
+ },
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "https://github.com/dao-xyz/peerbit"
61
+ },
62
+ "engines": {
63
+ "node": ">=16.15.1"
64
+ },
65
+ "author": "dao.xyz",
66
+ "license": "MIT",
67
+ "dependencies": {
68
+ "vite-plugin-static-copy": "^3.1.2",
69
+ "vite": "^7.1.7",
70
+ "@peerbit/build-assets": "1.0.0-48ac6de"
71
+ },
72
+ "devDependencies": {
73
+ "chai": "^4.3.10",
74
+ "@types/chai": "^4.3.16",
75
+ "@peerbit/indexer-sqlite3": "1.2.30-48ac6de",
76
+ "@peerbit/any-store": "2.1.16-48ac6de",
77
+ "@peerbit/any-store-opfs": "1.0.15-48ac6de"
78
+ },
79
+ "localMaintainers": [
80
+ "dao.xyz"
81
+ ]
79
82
  }
package/src/index.ts CHANGED
@@ -1,8 +1,74 @@
1
+ import {
2
+ type FindLibraryOptions,
3
+ type ModuleResolver,
4
+ findLibraryInNodeModules as baseFindLibraryInNodeModules,
5
+ resolveAssetLocations as baseResolveAssetLocations,
6
+ defaultAssetSources,
7
+ } from "@peerbit/build-assets";
1
8
  import fs from "fs";
9
+ import { createRequire } from "module";
2
10
  import path from "path";
3
11
  import { type PluginOption } from "vite";
4
12
  import { viteStaticCopy } from "vite-plugin-static-copy";
5
13
 
14
+ export type { ModuleResolver } from "@peerbit/build-assets";
15
+
16
+ export interface FileSystemLike {
17
+ existsSync(path: string): boolean;
18
+ statSync(path: string): { isDirectory(): boolean };
19
+ readdirSync(path: string): string[];
20
+ mkdirSync(path: string, options: { recursive: boolean }): void;
21
+ copyFileSync(src: string, dest: string): void;
22
+ realpathSync(path: string): string;
23
+ }
24
+
25
+ const requireFromPlugin = createRequire(import.meta.url);
26
+
27
+ let requireFromCwd: ModuleResolver | undefined;
28
+ try {
29
+ requireFromCwd = createRequire(path.join(process.cwd(), "package.json"));
30
+ } catch (err) {
31
+ // ignore if no package.json – fall back to plugin resolver
32
+ }
33
+
34
+ const createFindLibraryOptions = (deps?: {
35
+ fs?: FileSystemLike;
36
+ resolvers?: ModuleResolver[];
37
+ }): FindLibraryOptions => {
38
+ const resolverCandidates: (ModuleResolver | undefined)[] =
39
+ deps?.resolvers && deps.resolvers.length > 0
40
+ ? deps.resolvers
41
+ : [requireFromCwd, requireFromPlugin];
42
+
43
+ const mergedResolvers = resolverCandidates.filter(
44
+ (resolver): resolver is ModuleResolver => resolver != null,
45
+ );
46
+
47
+ const options: FindLibraryOptions = {
48
+ resolvers: mergedResolvers,
49
+ };
50
+
51
+ if (deps?.fs) {
52
+ options.fs = deps.fs as unknown as FindLibraryOptions["fs"];
53
+ }
54
+
55
+ return options;
56
+ };
57
+
58
+ const findLibraryInNodeModules = (
59
+ library: string,
60
+ deps?: { fs?: FileSystemLike; resolvers?: ModuleResolver[] },
61
+ ) => {
62
+ return baseFindLibraryInNodeModules(library, createFindLibraryOptions(deps));
63
+ };
64
+
65
+ const resolveAssetLocations = (
66
+ sources: string[],
67
+ deps?: { fs?: FileSystemLike; resolvers?: ModuleResolver[] },
68
+ ) => {
69
+ return baseResolveAssetLocations(sources, createFindLibraryOptions(deps));
70
+ };
71
+
6
72
  function dontMinimizeCertainPackagesPlugin(
7
73
  options: { packages?: string[] } = {},
8
74
  ) {
@@ -18,7 +84,8 @@ function dontMinimizeCertainPackagesPlugin(
18
84
  if (command === "build") {
19
85
  config.optimizeDeps = config.optimizeDeps || {};
20
86
  config.optimizeDeps.exclude = config.optimizeDeps.exclude || [];
21
- config.optimizeDeps.exclude.push(...options.packages);
87
+ const pkgs: string[] = options.packages ?? [];
88
+ config.optimizeDeps.exclude.push(...pkgs);
22
89
  }
23
90
  },
24
91
  };
@@ -29,7 +96,19 @@ function copyToPublicPlugin(
29
96
  ) {
30
97
  return {
31
98
  name: "copy-to-public",
99
+ enforce: "pre" as const,
32
100
  buildStart() {
101
+ // Ensure worker exists in public/ as a last-resort (CI safety), even if assets disabled
102
+ try {
103
+ // Copy the entire dist/peerbit directory from @peerbit/indexer-sqlite3
104
+ const peerbitDistDir = findLibraryInNodeModules(
105
+ "@peerbit/indexer-sqlite3/dist/peerbit",
106
+ );
107
+ const destDir = path.resolve(resolveStaticPath(), "peerbit");
108
+ copyAssets(peerbitDistDir, destDir, "/");
109
+ } catch (_err) {
110
+ // ignore; optional best-effort
111
+ }
33
112
  if (options?.assets) {
34
113
  options.assets.forEach(({ src, dest }) => {
35
114
  const sourcePath = path.resolve(src);
@@ -57,56 +136,23 @@ const resolveStaticPath = () => {
57
136
  throw new Error("Could not find public or static folder");
58
137
  }
59
138
  };
60
- const findLibraryInNodeModules = (library: string) => {
61
- // scan upwards until we find the node_modules folder
62
- let maxSearchDepth = 10;
63
- let currentDir = process.cwd();
64
- let nodeModulesDir = path.join(currentDir, "node_modules");
65
-
66
- while (!fs.existsSync(path.join(nodeModulesDir, library))) {
67
- currentDir = path.resolve(currentDir, "..");
68
- nodeModulesDir = path.join(currentDir, "node_modules");
69
-
70
- // we have found a .git folder, so we are at the root
71
- // then stop
72
- if (fs.existsSync(path.join(currentDir, ".git"))) {
73
- break;
74
- }
75
-
76
- maxSearchDepth--;
77
- if (maxSearchDepth <= 0) {
78
- throw new Error(`Could not find ${library} node_modules folder`);
79
- }
80
- }
81
- const libraryPath = path.join(nodeModulesDir, library);
82
- if (!fs.existsSync(libraryPath)) {
83
- throw new Error(`Library ${library} not found in node_modules`);
84
- }
85
-
86
- return libraryPath;
87
- };
88
139
 
89
- let pathsToCopy = [
90
- "@peerbit/any-store-opfs/dist/peerbit",
91
- "@peerbit/indexer-sqlite3/dist/peerbit",
92
- "@peerbit/riblt/dist/rateless_iblt_bg.wasm",
93
- ];
94
140
  export default (
95
141
  options: {
96
142
  packages?: string[];
97
- assets?: { src: string; dest: string }[];
143
+ assets?: { src: string; dest: string }[] | null;
98
144
  } = {},
99
145
  ): PluginOption[] => {
100
- let defaultAssets = pathsToCopy.map((path) => {
101
- return {
102
- src: findLibraryInNodeModules(path),
103
- dest: "peerbit/",
104
- };
105
- });
146
+ const includeDefaultAssets = options.assets === undefined;
147
+ const userAssets = Array.isArray(options.assets) ? options.assets : [];
148
+ const assetsToCopy = includeDefaultAssets
149
+ ? [...resolveAssetLocations(defaultAssetSources), ...userAssets]
150
+ : userAssets;
151
+
106
152
  return [
107
153
  dontMinimizeCertainPackagesPlugin({ packages: options.packages }),
108
154
  copyToPublicPlugin({
109
- assets: [...defaultAssets, ...(options.assets || [])],
155
+ assets: assetsToCopy,
110
156
  }),
111
157
  viteStaticCopy({
112
158
  targets: [
@@ -144,3 +190,10 @@ function copyAssets(srcPath: string, destPath: string, base: string) {
144
190
  fs.copyFileSync(srcPath, destPathAsFile);
145
191
  }
146
192
  }
193
+
194
+ // Expose internals for testing
195
+ export const TEST_EXPORTS = {
196
+ findLibraryInNodeModules,
197
+ defaultAssetSources,
198
+ resolveAssetLocations,
199
+ };