tanstack-db-pglite 1.1.8 → 1.2.0

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/drizzle.js CHANGED
@@ -32,31 +32,6 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
32
32
  throw e;
33
33
  });
34
34
  }
35
- const getSyncParams = async () => {
36
- const params = await syncParams;
37
- return {
38
- write: async (message) => {
39
- params.begin();
40
- try {
41
- if (message.type === 'insert') {
42
- await onDrizzleInsert([message.value]);
43
- }
44
- else if (message.type === 'update') {
45
- await onDrizzleUpdate(params.collection.getKeyFromItem(message.value), message.value);
46
- }
47
- else if (message.type === 'delete') {
48
- const key = 'key' in message ? message.key : params.collection.getKeyFromItem(message.value);
49
- await onDrizzleDelete([key]);
50
- }
51
- params.write(message);
52
- }
53
- finally {
54
- params.commit();
55
- }
56
- },
57
- collection: params.collection,
58
- };
59
- };
60
35
  // Mutations should run if everything is okay inside "on" handlers
61
36
  async function runMutations(mutations) {
62
37
  const { begin, write, commit } = await syncParams;
@@ -87,6 +62,40 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
87
62
  .from(config.table)
88
63
  .where(eq(config.primaryColumn, m.key))));
89
64
  }
65
+ const sync = async () => {
66
+ if (!config.sync) {
67
+ return;
68
+ }
69
+ const params = await syncParams;
70
+ resolvers.reject();
71
+ resolvers = Promise.withResolvers();
72
+ await config.sync({
73
+ write: async (message) => {
74
+ params.begin();
75
+ try {
76
+ if (message.type === 'insert') {
77
+ await onDrizzleInsert([message.value]);
78
+ }
79
+ else if (message.type === 'update') {
80
+ await onDrizzleUpdate(params.collection.getKeyFromItem(message.value), message.value);
81
+ }
82
+ else if (message.type === 'delete') {
83
+ const key = 'key' in message ? message.key : params.collection.getKeyFromItem(message.value);
84
+ await onDrizzleDelete([key]);
85
+ }
86
+ params.write(message);
87
+ }
88
+ finally {
89
+ params.commit();
90
+ }
91
+ },
92
+ collection: params.collection,
93
+ });
94
+ resolvers.resolve(undefined);
95
+ };
96
+ const waitForSync = async () => {
97
+ await resolvers.promise.catch(() => waitForSync());
98
+ };
90
99
  return {
91
100
  startSync: true,
92
101
  sync: {
@@ -102,10 +111,8 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
102
111
  params.write({ type: 'insert', value: db });
103
112
  });
104
113
  params.commit();
105
- if (config.sync && startSync) {
106
- resolvers = Promise.withResolvers();
107
- await config.sync(await getSyncParams());
108
- resolvers.resolve(undefined);
114
+ if (startSync) {
115
+ sync();
109
116
  }
110
117
  }
111
118
  finally {
@@ -114,7 +121,6 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
114
121
  })();
115
122
  },
116
123
  },
117
- gcTime: 0,
118
124
  schema: createSelectSchema(config.table),
119
125
  getKey: t => t[config.primaryColumn.name],
120
126
  onInsert: async (params) => {
@@ -152,16 +158,11 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
152
158
  if (!config.sync) {
153
159
  throw new Error('Sync is not defined');
154
160
  }
155
- const params = await getSyncParams();
156
- // To wait the first sync
161
+ const params = await syncParams;
157
162
  await params.collection.stateWhenReady();
158
- resolvers = Promise.withResolvers();
159
- await config.sync(params);
160
- resolvers.resolve(undefined);
161
- },
162
- waitForSync: async () => {
163
- await resolvers.promise;
163
+ sync();
164
164
  },
165
+ waitForSync,
165
166
  },
166
167
  };
167
168
  }
package/dist/sql.js CHANGED
@@ -36,9 +36,27 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
36
36
  return;
37
37
  await client.query(`DELETE FROM ${table} WHERE ${primaryKey} = ANY($1)`, [ids]);
38
38
  }
39
- const getSyncParams = async () => {
39
+ async function runMutations(mutations) {
40
+ const { begin, write, commit } = await syncParams;
41
+ begin();
42
+ mutations.forEach((m) => {
43
+ if (m.type === 'delete') {
44
+ write({ type: 'delete', key: m.key });
45
+ }
46
+ else {
47
+ write({ type: m.type, value: m.modified });
48
+ }
49
+ });
50
+ commit();
51
+ }
52
+ const sync = async () => {
53
+ if (!config.sync) {
54
+ return;
55
+ }
40
56
  const params = await syncParams;
41
- return {
57
+ resolvers.reject();
58
+ resolvers = Promise.withResolvers();
59
+ await config.sync({
42
60
  write: async (p) => {
43
61
  params.begin();
44
62
  try {
@@ -59,21 +77,12 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
59
77
  }
60
78
  },
61
79
  collection: params.collection,
62
- };
63
- };
64
- async function runMutations(mutations) {
65
- const { begin, write, commit } = await syncParams;
66
- begin();
67
- mutations.forEach((m) => {
68
- if (m.type === 'delete') {
69
- write({ type: 'delete', key: m.key });
70
- }
71
- else {
72
- write({ type: m.type, value: m.modified });
73
- }
74
80
  });
75
- commit();
76
- }
81
+ resolvers.resolve(undefined);
82
+ };
83
+ const waitForSync = async () => {
84
+ await resolvers.promise.catch(() => waitForSync());
85
+ };
77
86
  return {
78
87
  startSync,
79
88
  sync: {
@@ -88,10 +97,8 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
88
97
  params.write({ type: 'insert', value: row });
89
98
  });
90
99
  params.commit();
91
- if (config.sync && startSync) {
92
- resolvers = Promise.withResolvers();
93
- await config.sync(await getSyncParams());
94
- resolvers.resolve(undefined);
100
+ if (startSync) {
101
+ sync();
95
102
  }
96
103
  }
97
104
  finally {
@@ -100,7 +107,6 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
100
107
  })();
101
108
  },
102
109
  },
103
- gcTime: 0,
104
110
  schema: config.schema,
105
111
  getKey,
106
112
  onInsert: async (params) => {
@@ -135,15 +141,11 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
135
141
  if (!config.sync) {
136
142
  throw new Error('Sync is not defined');
137
143
  }
138
- const params = await getSyncParams();
144
+ const params = await syncParams;
139
145
  await params.collection.stateWhenReady();
140
- resolvers = Promise.withResolvers();
141
- await config.sync(params);
142
- resolvers.resolve(undefined);
143
- },
144
- waitForSync: async () => {
145
- await resolvers.promise;
146
+ sync();
146
147
  },
148
+ waitForSync,
147
149
  },
148
150
  };
149
151
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tanstack-db-pglite",
3
- "version": "1.1.8",
3
+ "version": "1.2.0",
4
4
  "packageManager": "pnpm@10.32.1",
5
5
  "description": "",
6
6
  "author": "Valerii Strilets",