Skip to content

Commit 77eb2eb

Browse files
committed
Added dev builds for web, react-native, node.
1 parent cedd8a3 commit 77eb2eb

File tree

17 files changed

+844
-111
lines changed

17 files changed

+844
-111
lines changed

packages/common/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
"import": "./dist/bundle.mjs",
1616
"default": "./dist/bundle.mjs",
1717
"types": "./lib/index.d.ts"
18+
},
19+
"./dev": {
20+
"import": "./dist/dev/bundle.dev.mjs",
21+
"require": "./dist/dev/bundle.dev.cjs",
22+
"types": "./lib/dev/index.d.ts",
23+
"default": "./dist/dev/bundle.dev.mjs"
1824
}
1925
},
2026
"author": "JOURNEYAPPS",
@@ -41,12 +47,14 @@
4147
"js-logger": "^1.6.1"
4248
},
4349
"devDependencies": {
50+
"@rollup/plugin-alias": "^5.1.0",
4451
"@rollup/plugin-commonjs": "^25.0.7",
4552
"@rollup/plugin-inject": "^5.0.5",
4653
"@rollup/plugin-json": "^6.1.0",
4754
"@rollup/plugin-node-resolve": "15.2.3",
4855
"@rollup/plugin-terser": "^0.4.4",
4956
"@types/node": "^20.5.9",
57+
"@types/sql.js": "^1.4.9",
5058
"@types/uuid": "^9.0.1",
5159
"async-mutex": "^0.4.0",
5260
"bson": "^6.6.0",
@@ -56,6 +64,7 @@
5664
"rollup": "4.14.3",
5765
"rsocket-core": "1.0.0-alpha.3",
5866
"rsocket-websocket-client": "1.0.0-alpha.3",
67+
"sql.js": "workspace:*",
5968
"text-encoding": "^0.7.0",
6069
"web-streams-polyfill": "3.2.1"
6170
}

packages/common/rollup.config.mjs

Lines changed: 65 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1+
import alias from '@rollup/plugin-alias';
12
import commonjs from '@rollup/plugin-commonjs';
23
import inject from '@rollup/plugin-inject';
34
import json from '@rollup/plugin-json';
45
import nodeResolve from '@rollup/plugin-node-resolve';
6+
import replace from '@rollup/plugin-replace';
57
import terser from '@rollup/plugin-terser';
8+
import path from 'path';
9+
import { fileURLToPath } from 'url';
10+
11+
const __filename = fileURLToPath(import.meta.url);
12+
const __dirname = path.dirname(__filename);
613

714
/**
815
* @returns {import('rollup').RollupOptions}
@@ -13,29 +20,63 @@ export default (commandLineArgs) => {
1320
// Clears rollup CLI warning https://github.com/rollup/rollup/issues/2694
1421
delete commandLineArgs.sourceMap;
1522

16-
return {
17-
input: 'lib/index.js',
18-
output: {
19-
file: 'dist/bundle.mjs',
20-
format: 'esm',
21-
sourcemap: sourceMap
23+
return [
24+
{
25+
input: 'lib/index.js',
26+
output: {
27+
file: 'dist/bundle.mjs',
28+
format: 'esm',
29+
sourcemap: sourceMap
30+
},
31+
plugins: [
32+
json(),
33+
nodeResolve({ preferBuiltins: false, browser: true }),
34+
commonjs({}),
35+
inject({
36+
Buffer: ['buffer', 'Buffer'],
37+
ReadableStream: ['web-streams-polyfill/ponyfill', 'ReadableStream'],
38+
// Used by can-ndjson-stream
39+
TextDecoder: ['text-encoding', 'TextDecoder']
40+
}),
41+
terser({ sourceMap })
42+
],
43+
// This makes life easier
44+
external: [
45+
// This has dynamic logic - makes bundling hard
46+
'cross-fetch'
47+
]
2248
},
23-
plugins: [
24-
json(),
25-
nodeResolve({ preferBuiltins: false, browser: true }),
26-
commonjs({}),
27-
inject({
28-
Buffer: ['buffer', 'Buffer'],
29-
ReadableStream: ['web-streams-polyfill/ponyfill', 'ReadableStream'],
30-
// Used by can-ndjson-stream
31-
TextDecoder: ['text-encoding', 'TextDecoder']
32-
}),
33-
terser({ sourceMap })
34-
],
35-
// This makes life easier
36-
external: [
37-
// This has dynamic logic - makes bundling hard
38-
'cross-fetch'
39-
]
40-
};
49+
{
50+
input: 'lib/dev/index.js',
51+
output: [
52+
{
53+
file: 'dist/dev/bundle.dev.mjs',
54+
format: 'esm',
55+
sourcemap: sourceMap
56+
},
57+
{
58+
file: 'dist/dev/bundle.dev.cjs',
59+
format: 'cjs',
60+
sourcemap: sourceMap
61+
}
62+
],
63+
plugins: [
64+
replace({
65+
delimiters: ['', ''],
66+
preventAssignment: true
67+
}),
68+
nodeResolve({ preferBuiltins: false, browser: true }),
69+
commonjs({}),
70+
alias({
71+
entries: [
72+
{ find: 'fs', replacement: path.resolve(__dirname, 'vendored/empty.js') },
73+
{ find: 'path', replacement: path.resolve(__dirname, 'vendored/empty.js') },
74+
{ find: 'crypto', replacement: path.resolve(__dirname, 'vendored/empty.js') }
75+
// add others as needed
76+
]
77+
})
78+
],
79+
external: ['@powersync/common']
80+
}
81+
];
4182
};

packages/common/src/client/SQLOpenFactory.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,33 @@ export interface SQLOpenOptions {
2323
* debugMode: process.env.NODE_ENV !== 'production'
2424
*/
2525
debugMode?: boolean;
26+
27+
/**
28+
* Use a development database, requires no project setup.
29+
*/
30+
developmentMode?: boolean;
31+
32+
/**
33+
* Persister for the development database.
34+
*
35+
* @example
36+
* ```javascript
37+
* persister: {
38+
* readFile: async () => null,
39+
* writeFile: async () => {}
40+
* }
41+
* ```
42+
*/
43+
developmentPersister?: Persister;
2644
}
2745

46+
export interface Persister {
47+
readFile: () => Promise<ArrayLike<number> | Buffer | null>;
48+
writeFile: (data: ArrayLike<number> | Buffer) => Promise<void>;
49+
}
50+
51+
export interface DevDBOptions {}
52+
2853
export interface SQLOpenFactory {
2954
/**
3055
* Opens a connection adapter to a SQLite DB

0 commit comments

Comments
 (0)