tanstack-db-pglite 1.1.7 → 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,12 +62,45 @@ 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: {
93
102
  sync: (params) => {
94
103
  resolveSyncParams(params);
95
- resolvers = Promise.withResolvers();
96
104
  (async () => {
97
105
  try {
98
106
  await config.prepare?.();
@@ -103,9 +111,8 @@ export function drizzleCollectionOptions({ startSync = true, ...config }) {
103
111
  params.write({ type: 'insert', value: db });
104
112
  });
105
113
  params.commit();
106
- if (config.sync && startSync) {
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,14 +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
- await config.sync(params);
159
- },
160
- waitForSync: async () => {
161
- await resolvers.promise;
163
+ sync();
162
164
  },
165
+ waitForSync,
163
166
  },
164
167
  };
165
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,27 +77,17 @@ 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: {
80
89
  sync: (params) => {
81
90
  resolveSyncParams(params);
82
- resolvers = Promise.withResolvers();
83
91
  (async () => {
84
92
  try {
85
93
  await config.prepare?.();
@@ -89,9 +97,8 @@ export function sqlCollectionOptions({ startSync = true, ...config }) {
89
97
  params.write({ type: 'insert', value: row });
90
98
  });
91
99
  params.commit();
92
- if (config.sync && startSync) {
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,13 +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
- await config.sync(params);
141
- },
142
- waitForSync: async () => {
143
- await resolvers.promise;
146
+ sync();
144
147
  },
148
+ waitForSync,
145
149
  },
146
150
  };
147
151
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tanstack-db-pglite",
3
- "version": "1.1.7",
3
+ "version": "1.2.0",
4
4
  "packageManager": "pnpm@10.32.1",
5
5
  "description": "",
6
6
  "author": "Valerii Strilets",