@livestore/devtools-vite 0.3.0-dev.4 → 0.3.0-dev.40

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/plugin.js CHANGED
@@ -1,52 +1,207 @@
1
- import fs from 'node:fs';
2
1
  import path from 'node:path';
2
+ import { Devtools } from '@livestore/common';
3
+ import { Schema } from '@livestore/utils/effect';
4
+ import { getMountPath } from './vite-path.js';
5
+ const IS_LOCAL_PREVIEW = process.env.LSD_DEVTOOLS_LOCAL_PREVIEW !== undefined;
6
+ export const PluginOptions = Schema.Struct({
7
+ /**
8
+ * The path to the schema file. The schema file needs to export the schema as `export const schema`.
9
+ * Path needs to be relative to the Vite `root`.
10
+ *
11
+ * Example:
12
+ * ```ts
13
+ * import { devtoolsVitePlugin } from '@livestore/devtools-vite'
14
+ *
15
+ * devtoolsVitePlugin({
16
+ * schemaPath: './src/db/schema/index.ts'
17
+ * // ...
18
+ * })
19
+ *
20
+ * If your app uses multiple schemas, you can provide an array of schema paths.
21
+ * ```ts
22
+ * devtoolsVitePlugin({
23
+ * schemaPath: ['./src/db/schema/index.ts', './src/db/schema2/index.ts']
24
+ * // ...
25
+ * })
26
+ * ```
27
+ */
28
+ schemaPath: Schema.Union(Schema.String, Schema.Array(Schema.String)),
29
+ license: Schema.optional(Schema.String),
30
+ /**
31
+ * Where to serve the devtools UI.
32
+ *
33
+ * @default '/_livestore'
34
+ */
35
+ mode: Schema.optional(Devtools.DevtoolsMode),
36
+ path: Schema.optional(Schema.String),
37
+ experimental: Schema.optional(Schema.Struct({
38
+ continueOnError: Schema.optional(Schema.Boolean),
39
+ })),
40
+ });
41
+ const pluginName = '@livestore/devtools-vite';
3
42
  export const livestoreDevtoolsPlugin = (options) => {
43
+ const result = Schema.validateEither(PluginOptions)(options);
44
+ if (result._tag === 'Left') {
45
+ console.error(`[@livestore/devtools-vite] Invalid options: ${result.left}`);
46
+ return {
47
+ name: pluginName,
48
+ };
49
+ }
4
50
  return {
5
- name: 'devtools-vite',
51
+ name: pluginName,
6
52
  // `vite dev` support
7
- configureServer: (server) => {
8
- server.middlewares.use('/_devtools.html', async (_, res) => {
9
- res.setHeader('Content-Type', 'text/html');
10
- const template = makeIndexHtml({ schemaPath: options.schemaPath });
11
- const html = await server.transformIndexHtml('/_devtools.html', template);
12
- res.end(html);
53
+ configureServer: async (server) => {
54
+ const mountPath = getMountPath({ path: options.path, base: server.config.base });
55
+ // console.debug('[livestore-devtools-vite]', {
56
+ // 'server.config.base': server.config.base,
57
+ // mountPath,
58
+ // })
59
+ const schemaPathsInput = Array.isArray(options.schemaPath) ? options.schemaPath : [options.schemaPath];
60
+ const schemaPaths = schemaPathsInput.map((schemaPath) => path.isAbsolute(schemaPath) ? schemaPath : path.resolve(path.join(server.config.root, schemaPath)));
61
+ for (const schemaPath of schemaPaths) {
62
+ try {
63
+ const schemaExports = await server.ssrLoadModule(schemaPath);
64
+ if (!('schema' in schemaExports)) {
65
+ console.error(`\
66
+ [@livestore/devtools-vite] Could not find an export named \`schema\` in the provided schema file.
67
+ Please make sure to export the schema from your schema file like this: \`export const schema = ...\`.
68
+
69
+ Found exports: ${Object.keys(schemaExports).join(', ')}
70
+ Resolved schema path: ${schemaPath}
71
+ `);
72
+ return;
73
+ }
74
+ }
75
+ catch (error) {
76
+ console.error(`[@livestore/devtools-vite] Error loading schema file ${schemaPath}`, error);
77
+ if (options.experimental?.continueOnError !== true) {
78
+ return;
79
+ }
80
+ }
81
+ }
82
+ let bundlePath;
83
+ let cssPath;
84
+ // Allows for loading the devtools via Vite without having to build the bundle
85
+ // Simply set `LSD_DEVTOOLS_LOCAL_PREVIEW=1` when running `pnpm dev` in the app
86
+ if (IS_LOCAL_PREVIEW) {
87
+ cssPath = path.resolve(import.meta.dirname, '..', '..', 'devtools-react', 'src', 'index.css');
88
+ bundlePath = path.join(import.meta.dirname, '..', 'devtools-react-bundle.ts');
89
+ }
90
+ else {
91
+ // Make sure to run `pnpm build` before to generate the bundle
92
+ const bundleDir = path.join(import.meta.dirname, '..', 'dist', 'devtools-bundle');
93
+ bundlePath = path.resolve(bundleDir, 'index.js');
94
+ cssPath = path.resolve(bundleDir, 'devtools-vite.css');
95
+ }
96
+ const hasWebAdapterDep = await server
97
+ .ssrLoadModule('@livestore/adapter-web')
98
+ .then(() => true)
99
+ .catch(() => false);
100
+ const template = makeIndexHtml({
101
+ schemaPaths,
102
+ bundlePath,
103
+ cssPath,
104
+ mountPath,
105
+ mode: options.mode,
106
+ hasWebAdapterDep,
107
+ });
108
+ const html = await server.transformIndexHtml(mountPath, template);
109
+ server.middlewares.use(mountPath, async (req, res, next) => {
110
+ if (req.url === undefined) {
111
+ next();
112
+ return;
113
+ }
114
+ const url = new URL(req.url, typeof server.config.server.host === 'string' ? server.config.server.host : 'http://localhost');
115
+ // console.log('livestore-devtools-vite:req', url)
116
+ // Forward all Vite requests to Vite
117
+ if (url.pathname.startsWith('/@') === false) {
118
+ res.setHeader('Content-Type', 'text/html');
119
+ // Remove line that contains `vinxi/runtime`
120
+ const trimmedHtml = html
121
+ .split('\n')
122
+ .filter((line) => !line.includes('vinxi/runtime'))
123
+ .join('\n');
124
+ res.end(trimmedHtml);
125
+ }
126
+ else {
127
+ next();
128
+ }
13
129
  });
14
130
  },
15
- // `vite build` support below
16
- config: (config) => {
17
- if (config.build === undefined) {
18
- config.build = {};
131
+ config: async (config, env) => {
132
+ if (config.optimizeDeps === undefined) {
133
+ config.optimizeDeps = {};
19
134
  }
20
- if (config.build.rollupOptions === undefined) {
21
- config.build.rollupOptions = {};
135
+ if (config.optimizeDeps.exclude === undefined) {
136
+ config.optimizeDeps.exclude = [];
22
137
  }
23
- if (config.build.rollupOptions.input === undefined) {
24
- config.build.rollupOptions.input = {
25
- main: path.resolve('./index.html'),
26
- };
138
+ if (env.command === 'serve') {
139
+ if (config.define === undefined) {
140
+ config.define = {};
141
+ }
142
+ const mountPath = getMountPath({ path: options.path, base: config.base ?? '/' });
143
+ config.define['LIVESTORE_DEVTOOLS_PATH'] = `'${mountPath}'`;
27
144
  }
28
- if (isRecord(config.build.rollupOptions.input)) {
29
- config.build.rollupOptions.input.devtools = 'virtual:_devtools.html';
30
- // config.build.rollupOptions.input.devtools = '_devtools.html'
31
- }
32
- return config;
33
- },
34
- writeBundle: (_) => {
35
- fs.renameSync(path.join(_.dir, 'virtual:_devtools.html'), path.join(_.dir, '_devtools.html'));
36
- },
37
- resolveId: (id) => {
38
- if (id === 'virtual:_devtools.html') {
39
- return id;
145
+ const toAdd = ['@livestore/devtools-vite', '@livestore/wa-sqlite'];
146
+ for (const dep of toAdd) {
147
+ if (!config.optimizeDeps.exclude.includes(dep)) {
148
+ config.optimizeDeps.exclude.push(dep);
149
+ }
40
150
  }
41
- },
42
- load: (id) => {
43
- if (id === 'virtual:_devtools.html') {
44
- return makeIndexHtml({ schemaPath: options.schemaPath });
151
+ if (IS_LOCAL_PREVIEW) {
152
+ console.debug(`[@livestore/devtools-vite] Using local preview`);
153
+ if (config.resolve === undefined) {
154
+ config.resolve = {};
155
+ }
156
+ if (config.resolve.alias === undefined) {
157
+ config.resolve.alias = {};
158
+ }
159
+ const emptyModulePath = path.resolve(import.meta.dirname, '..', 'src', 'empty-module.ts');
160
+ // @ts-expect-error needed for `glide-data-grid`
161
+ config.resolve.alias['react-responsive-carousel'] = emptyModulePath;
162
+ // @ts-expect-error needed for `glide-data-grid`
163
+ config.resolve.alias['marked'] = emptyModulePath;
45
164
  }
165
+ return config;
46
166
  },
167
+ // `vite build` support below
168
+ // TODO maybe bring back at some point
169
+ // config: (config) => {
170
+ // if (config.build === undefined) {
171
+ // config.build = {}
172
+ // }
173
+ // if (config.build.rollupOptions === undefined) {
174
+ // config.build.rollupOptions = {}
175
+ // }
176
+ // if (config.build.rollupOptions.input === undefined) {
177
+ // config.build.rollupOptions.input = {
178
+ // main: path.resolve('./index.html'),
179
+ // }
180
+ // }
181
+ // if (isRecord(config.build.rollupOptions.input)) {
182
+ // config.build.rollupOptions.input.devtools = 'virtual:_devtools.html'
183
+ // // config.build.rollupOptions.input.devtools = '_devtools.html'
184
+ // }
185
+ // return config
186
+ // },
187
+ // writeBundle: (_) => {
188
+ // fs.renameSync(path.join(_.dir!, 'virtual:_devtools.html'), path.join(_.dir!, '_devtools.html'))
189
+ // },
190
+ // resolveId: (id) => {
191
+ // if (id === 'virtual:_devtools.html') {
192
+ // return id
193
+ // }
194
+ // },
195
+ // load: (id) => {
196
+ // if (id === 'virtual:_devtools.html') {
197
+ // return makeIndexHtml({ schemaPath: options.schemaPath })
198
+ // }
199
+ // },
47
200
  };
48
201
  };
49
- const makeIndexHtml = ({ schemaPath }) => {
202
+ const makeIndexHtml = ({ schemaPaths, bundlePath, cssPath, mountPath, mode, hasWebAdapterDep, }) => {
203
+ // `sharedWorker` is only needed for @livestore/adapter-web
204
+ // We're trying to import it dynamically for the web-adapter and fallback to the bundled one if it fails
50
205
  return /*html*/ `
51
206
  <!doctype html>
52
207
  <html lang="en">
@@ -59,25 +214,22 @@ const makeIndexHtml = ({ schemaPath }) => {
59
214
  <body>
60
215
  <div id="root"></div>
61
216
  <script type="module">
62
- // NOTE we need to re-export dependencies from "@livestore/devtools-react"
63
- // as it's not a direct dependency of the Vite setup of a plugin user
64
- import '@livestore/devtools-vite/index.css'
65
- import { mountDevtools } from '@livestore/devtools-vite/devtools'
66
- import sharedWorker from '@livestore/web/shared-worker?sharedworker'
67
- import { schema } from '${path.resolve(schemaPath)}'
217
+ import '${cssPath}'
68
218
 
69
- mountDevtools({
70
- schema,
71
- rootEl: document.getElementById('root'),
72
- sharedWorker,
219
+ import { run } from '${bundlePath}'
220
+ ${schemaPaths.map((schemaPath, index) => ` import { schema as schema${index} } from '${schemaPath}'`).join('\n')}
221
+ ${hasWebAdapterDep ? 'import sharedWorker from "@livestore/adapter-web/shared-worker?sharedworker"' : 'const sharedWorker = undefined'}
222
+
223
+ run({
224
+ schemas: [${schemaPaths.map((_schemaPath, index) => `schema${index}`).join(', ')}],
73
225
  license: ${process.env.LSD_LICENSE} ? '${process.env.LSD_LICENSE}' : undefined,
74
- // Mode will be provided via URL search params
75
- mode: undefined,
226
+ mode: ${mode ? Schema.encodeSync(Schema.parseJson(Devtools.DevtoolsMode))(mode) : undefined},
227
+ sharedWorker,
228
+ mountPath: '${mountPath}',
76
229
  })
77
230
  </script>
78
231
  </body>
79
232
  </html>
80
233
  `;
81
234
  };
82
- const isRecord = (value) => typeof value === 'object' && value !== null;
83
235
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAqB5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAsB,EAAU,EAAE;IACxE,OAAO;QACL,IAAI,EAAE,eAAe;QAErB,qBAAqB;QACrB,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;gBACzD,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;gBAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAA;gBACzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;YACnB,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAA;YACjC,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG;oBACjC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;iBACnC,CAAA;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,wBAAwB,CAAA;gBACpE,+DAA+D;YACjE,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAI,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAI,EAAE,gBAAgB,CAAC,CAAC,CAAA;QACjG,CAAC;QAED,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;YAChB,IAAI,EAAE,KAAK,wBAAwB,EAAE,CAAC;gBACpC,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;YACX,IAAI,EAAE,KAAK,wBAAwB,EAAE,CAAC;gBACpC,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,EAA0B,EAAE,EAAE;IAC/D,OAAO,QAAQ,CAAC;;;;;;;;;;;;;;;;;gCAiBc,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;;;;;;mBAMrC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW;;;;;;;EAOtE,CAAA;AACF,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const getMountPath: ({ path: explicitPath, base }: {
2
+ path: string | undefined;
3
+ base: string;
4
+ }) => string;
5
+ //# sourceMappingURL=vite-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-path.d.ts","sourceRoot":"","sources":["../src/vite-path.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,GAAI,8BAA8B;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MAGvG,CAAA"}
@@ -0,0 +1,6 @@
1
+ import path from 'node:path';
2
+ export const getMountPath = ({ path: explicitPath, base }) => {
3
+ const pathname = explicitPath ?? '/_livestore';
4
+ return path.join(base, pathname);
5
+ };
6
+ //# sourceMappingURL=vite-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-path.js","sourceRoot":"","sources":["../src/vite-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAA8C,EAAU,EAAE;IAC/G,MAAM,QAAQ,GAAG,YAAY,IAAI,aAAa,CAAA;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vite-path.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-path.test.d.ts","sourceRoot":"","sources":["../src/vite-path.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getMountPath } from './vite-path.js';
3
+ describe('getMountPath', () => {
4
+ it('default vite / node adapter case', () => {
5
+ expect(getMountPath({ path: undefined, base: '/' })).toEqual('/_livestore');
6
+ });
7
+ it('Tanstack Start case', () => {
8
+ expect(getMountPath({ path: undefined, base: '/_build' })).toEqual('/_build/_livestore');
9
+ });
10
+ it('Tanstack Start case', () => {
11
+ expect(getMountPath({ path: '/_livestore', base: '/_build' })).toEqual('/_build/_livestore');
12
+ });
13
+ });
14
+ //# sourceMappingURL=vite-path.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-path.test.js","sourceRoot":"","sources":["../src/vite-path.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC1F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,32 +1,21 @@
1
1
  {
2
2
  "name": "@livestore/devtools-vite",
3
- "version": "0.3.0-dev.4",
3
+ "version": "0.3.0-dev.40",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
7
7
  "types": "./dist/plugin.d.ts",
8
8
  "default": "./dist/plugin.js"
9
9
  },
10
- "./devtools": {
11
- "types": "./dist/devtools.d.ts",
12
- "default": "./dist/devtools.js"
13
- },
14
- "./index.css": {
15
- "default": "./index.css"
16
- }
10
+ "./build": "./build.ts"
17
11
  },
18
12
  "dependencies": {
19
- "@livestore/devtools-react": "0.3.0-dev.4",
20
- "@livestore/web": "0.3.0-dev.4"
21
- },
22
- "devDependencies": {
23
- "vite": "^5.4.10"
24
- },
25
- "publishConfig": {
26
- "access": "public"
13
+ "@livestore/adapter-web": "0.3.0-dev.40"
27
14
  },
28
- "scripts": {
29
- "dev": "vite build --watch",
30
- "build": "vite build"
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "peerDependencies": {
19
+ "vite": "~6.2.1"
31
20
  }
32
21
  }