@electric-sql/experimental 0.1.2-beta.0 → 0.1.2-beta.2
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/cjs/index.cjs +12 -8
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +6 -0
- package/dist/index.browser.mjs +1 -1
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.legacy-esm.js +12 -8
- package/dist/index.legacy-esm.js.map +1 -1
- package/dist/index.mjs +12 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +34 -29
- package/src/match.ts +21 -14
package/dist/cjs/index.cjs
CHANGED
|
@@ -29,15 +29,19 @@ module.exports = __toCommonJS(src_exports);
|
|
|
29
29
|
var import_client = require("@electric-sql/client");
|
|
30
30
|
function matchStream(stream, operations, matchFn, timeout = 6e4) {
|
|
31
31
|
return new Promise((resolve, reject) => {
|
|
32
|
-
const unsubscribe = stream.subscribe(
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
const unsubscribe = stream.subscribe(
|
|
33
|
+
(messages) => {
|
|
34
|
+
const message = messages.filter(
|
|
35
|
+
(msg) => (0, import_client.isChangeMessage)(msg)
|
|
36
|
+
).find((message2) => {
|
|
37
|
+
const operation = message2.headers.operation;
|
|
38
|
+
return operations.includes(operation) && matchFn(message2);
|
|
39
|
+
});
|
|
40
|
+
if (message) {
|
|
41
|
+
return finish(message);
|
|
42
|
+
}
|
|
39
43
|
}
|
|
40
|
-
|
|
44
|
+
);
|
|
41
45
|
const timeoutId = setTimeout(() => {
|
|
42
46
|
const msg = `matchStream timed out after ${timeout}ms`;
|
|
43
47
|
console.error(msg);
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/match.ts"],"sourcesContent":["export * from './match'\n","import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe((messages) => {\n
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/match.ts"],"sourcesContent":["export * from './match'\n","import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n type Message,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe(\n (messages: Array<unknown>) => {\n const message = messages\n .filter((msg): msg is ChangeMessage<T> =>\n isChangeMessage(msg as Message<Row<never>>)\n )\n .find((message) => {\n const operation: Operation = message.headers.operation\n\n return operations.includes(operation) && matchFn(message)\n })\n\n if (message) {\n return finish(message)\n }\n }\n )\n\n const timeoutId: NodeJS.Timeout = setTimeout(() => {\n const msg: string = `matchStream timed out after ${timeout}ms`\n\n console.error(msg)\n\n reject(msg)\n }, timeout)\n\n function finish(message: ChangeMessage<T>): void {\n clearTimeout(timeoutId)\n\n unsubscribe()\n\n return resolve(message)\n }\n })\n}\n\nexport function matchBy<T extends Row<unknown>>(\n column: string,\n value: Value<GetExtensions<T>>\n): (message: ChangeMessage<T>) => boolean {\n return (message: ChangeMessage<T>) => message.value[column] === value\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBASO;AAEA,SAAS,YACd,QACA,YACA,SACA,UAAU,KACiB;AAC3B,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AACxD,UAAM,cAA0B,OAAO;AAAA,MACrC,CAAC,aAA6B;AAC5B,cAAM,UAAU,SACb;AAAA,UAAO,CAAC,YACP,+BAAgB,GAA0B;AAAA,QAC5C,EACC,KAAK,CAACA,aAAY;AACjB,gBAAM,YAAuBA,SAAQ,QAAQ;AAE7C,iBAAO,WAAW,SAAS,SAAS,KAAK,QAAQA,QAAO;AAAA,QAC1D,CAAC;AAEH,YAAI,SAAS;AACX,iBAAO,OAAO,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAA4B,WAAW,MAAM;AACjD,YAAM,MAAc,+BAA+B,OAAO;AAE1D,cAAQ,MAAM,GAAG;AAEjB,aAAO,GAAG;AAAA,IACZ,GAAG,OAAO;AAEV,aAAS,OAAO,SAAiC;AAC/C,mBAAa,SAAS;AAEtB,kBAAY;AAEZ,aAAO,QAAQ,OAAO;AAAA,IACxB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,QACd,QACA,OACwC;AACxC,SAAO,CAAC,YAA8B,QAAQ,MAAM,MAAM,MAAM;AAClE;","names":["message"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Row, ShapeStreamInterface, Operation, ChangeMessage, Value, GetExtensions } from '@electric-sql/client';
|
|
2
|
+
|
|
3
|
+
declare function matchStream<T extends Row<unknown>>(stream: ShapeStreamInterface<T>, operations: Array<Operation>, matchFn: (message: ChangeMessage<T>) => boolean, timeout?: number): Promise<ChangeMessage<T>>;
|
|
4
|
+
declare function matchBy<T extends Row<unknown>>(column: string, value: Value<GetExtensions<T>>): (message: ChangeMessage<T>) => boolean;
|
|
5
|
+
|
|
6
|
+
export { matchBy, matchStream };
|
package/dist/index.browser.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isChangeMessage as h}from"@electric-sql/client";function
|
|
1
|
+
import{isChangeMessage as h}from"@electric-sql/client";function f(s,t,a,o=6e4){return new Promise((i,g)=>{let u=s.subscribe(e=>{let r=e.filter(n=>h(n)).find(n=>{let p=n.headers.operation;return t.includes(p)&&a(n)});if(r)return c(r)}),m=setTimeout(()=>{let e=`matchStream timed out after ${o}ms`;console.error(e),g(e)},o);function c(e){return clearTimeout(m),u(),i(e)}})}function M(s,t){return a=>a.value[s]===t}export{M as matchBy,f as matchStream};
|
|
2
2
|
//# sourceMappingURL=index.browser.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe((messages) => {\n
|
|
1
|
+
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n type Message,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe(\n (messages: Array<unknown>) => {\n const message = messages\n .filter((msg): msg is ChangeMessage<T> =>\n isChangeMessage(msg as Message<Row<never>>)\n )\n .find((message) => {\n const operation: Operation = message.headers.operation\n\n return operations.includes(operation) && matchFn(message)\n })\n\n if (message) {\n return finish(message)\n }\n }\n )\n\n const timeoutId: NodeJS.Timeout = setTimeout(() => {\n const msg: string = `matchStream timed out after ${timeout}ms`\n\n console.error(msg)\n\n reject(msg)\n }, timeout)\n\n function finish(message: ChangeMessage<T>): void {\n clearTimeout(timeoutId)\n\n unsubscribe()\n\n return resolve(message)\n }\n })\n}\n\nexport function matchBy<T extends Row<unknown>>(\n column: string,\n value: Value<GetExtensions<T>>\n): (message: ChangeMessage<T>) => boolean {\n return (message: ChangeMessage<T>) => message.value[column] === value\n}\n"],"mappings":"AAAA,OACE,mBAAAA,MAQK,uBAEA,SAASC,EACdC,EACAC,EACAC,EACAC,EAAU,IACiB,CAC3B,OAAO,IAAI,QAA0B,CAACC,EAASC,IAAW,CACxD,IAAMC,EAA0BN,EAAO,UACpCO,GAA6B,CAC5B,IAAMC,EAAUD,EACb,OAAQE,GACPX,EAAgBW,CAA0B,CAC5C,EACC,KAAMD,GAAY,CACjB,IAAME,EAAuBF,EAAQ,QAAQ,UAE7C,OAAOP,EAAW,SAASS,CAAS,GAAKR,EAAQM,CAAO,CAC1D,CAAC,EAEH,GAAIA,EACF,OAAOG,EAAOH,CAAO,CAEzB,CACF,EAEMI,EAA4B,WAAW,IAAM,CACjD,IAAMH,EAAc,+BAA+BN,CAAO,KAE1D,QAAQ,MAAMM,CAAG,EAEjBJ,EAAOI,CAAG,CACZ,EAAGN,CAAO,EAEV,SAASQ,EAAOH,EAAiC,CAC/C,oBAAaI,CAAS,EAEtBN,EAAY,EAELF,EAAQI,CAAO,CACxB,CACF,CAAC,CACH,CAEO,SAASK,EACdC,EACAC,EACwC,CACxC,OAAQP,GAA8BA,EAAQ,MAAMM,CAAM,IAAMC,CAClE","names":["isChangeMessage","matchStream","stream","operations","matchFn","timeout","resolve","reject","unsubscribe","messages","message","msg","operation","finish","timeoutId","matchBy","column","value"]}
|
package/dist/index.legacy-esm.js
CHANGED
|
@@ -4,15 +4,19 @@ import {
|
|
|
4
4
|
} from "@electric-sql/client";
|
|
5
5
|
function matchStream(stream, operations, matchFn, timeout = 6e4) {
|
|
6
6
|
return new Promise((resolve, reject) => {
|
|
7
|
-
const unsubscribe = stream.subscribe(
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const unsubscribe = stream.subscribe(
|
|
8
|
+
(messages) => {
|
|
9
|
+
const message = messages.filter(
|
|
10
|
+
(msg) => isChangeMessage(msg)
|
|
11
|
+
).find((message2) => {
|
|
12
|
+
const operation = message2.headers.operation;
|
|
13
|
+
return operations.includes(operation) && matchFn(message2);
|
|
14
|
+
});
|
|
15
|
+
if (message) {
|
|
16
|
+
return finish(message);
|
|
17
|
+
}
|
|
14
18
|
}
|
|
15
|
-
|
|
19
|
+
);
|
|
16
20
|
const timeoutId = setTimeout(() => {
|
|
17
21
|
const msg = `matchStream timed out after ${timeout}ms`;
|
|
18
22
|
console.error(msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe((messages) => {\n
|
|
1
|
+
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n type Message,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe(\n (messages: Array<unknown>) => {\n const message = messages\n .filter((msg): msg is ChangeMessage<T> =>\n isChangeMessage(msg as Message<Row<never>>)\n )\n .find((message) => {\n const operation: Operation = message.headers.operation\n\n return operations.includes(operation) && matchFn(message)\n })\n\n if (message) {\n return finish(message)\n }\n }\n )\n\n const timeoutId: NodeJS.Timeout = setTimeout(() => {\n const msg: string = `matchStream timed out after ${timeout}ms`\n\n console.error(msg)\n\n reject(msg)\n }, timeout)\n\n function finish(message: ChangeMessage<T>): void {\n clearTimeout(timeoutId)\n\n unsubscribe()\n\n return resolve(message)\n }\n })\n}\n\nexport function matchBy<T extends Row<unknown>>(\n column: string,\n value: Value<GetExtensions<T>>\n): (message: ChangeMessage<T>) => boolean {\n return (message: ChangeMessage<T>) => message.value[column] === value\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAQK;AAEA,SAAS,YACd,QACA,YACA,SACA,UAAU,KACiB;AAC3B,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AACxD,UAAM,cAA0B,OAAO;AAAA,MACrC,CAAC,aAA6B;AAC5B,cAAM,UAAU,SACb;AAAA,UAAO,CAAC,QACP,gBAAgB,GAA0B;AAAA,QAC5C,EACC,KAAK,CAACA,aAAY;AACjB,gBAAM,YAAuBA,SAAQ,QAAQ;AAE7C,iBAAO,WAAW,SAAS,SAAS,KAAK,QAAQA,QAAO;AAAA,QAC1D,CAAC;AAEH,YAAI,SAAS;AACX,iBAAO,OAAO,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAA4B,WAAW,MAAM;AACjD,YAAM,MAAc,+BAA+B,OAAO;AAE1D,cAAQ,MAAM,GAAG;AAEjB,aAAO,GAAG;AAAA,IACZ,GAAG,OAAO;AAEV,aAAS,OAAO,SAAiC;AAC/C,mBAAa,SAAS;AAEtB,kBAAY;AAEZ,aAAO,QAAQ,OAAO;AAAA,IACxB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,QACd,QACA,OACwC;AACxC,SAAO,CAAC,YAA8B,QAAQ,MAAM,MAAM,MAAM;AAClE;","names":["message"]}
|
package/dist/index.mjs
CHANGED
|
@@ -4,15 +4,19 @@ import {
|
|
|
4
4
|
} from "@electric-sql/client";
|
|
5
5
|
function matchStream(stream, operations, matchFn, timeout = 6e4) {
|
|
6
6
|
return new Promise((resolve, reject) => {
|
|
7
|
-
const unsubscribe = stream.subscribe(
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
const unsubscribe = stream.subscribe(
|
|
8
|
+
(messages) => {
|
|
9
|
+
const message = messages.filter(
|
|
10
|
+
(msg) => isChangeMessage(msg)
|
|
11
|
+
).find((message2) => {
|
|
12
|
+
const operation = message2.headers.operation;
|
|
13
|
+
return operations.includes(operation) && matchFn(message2);
|
|
14
|
+
});
|
|
15
|
+
if (message) {
|
|
16
|
+
return finish(message);
|
|
17
|
+
}
|
|
14
18
|
}
|
|
15
|
-
|
|
19
|
+
);
|
|
16
20
|
const timeoutId = setTimeout(() => {
|
|
17
21
|
const msg = `matchStream timed out after ${timeout}ms`;
|
|
18
22
|
console.error(msg);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe((messages) => {\n
|
|
1
|
+
{"version":3,"sources":["../src/match.ts"],"sourcesContent":["import {\n isChangeMessage,\n type ShapeStreamInterface,\n type ChangeMessage,\n type GetExtensions,\n type Operation,\n type Row,\n type Value,\n type Message,\n} from '@electric-sql/client'\n\nexport function matchStream<T extends Row<unknown>>(\n stream: ShapeStreamInterface<T>,\n operations: Array<Operation>,\n matchFn: (message: ChangeMessage<T>) => boolean,\n timeout = 60000 // ms\n): Promise<ChangeMessage<T>> {\n return new Promise<ChangeMessage<T>>((resolve, reject) => {\n const unsubscribe: () => void = stream.subscribe(\n (messages: Array<unknown>) => {\n const message = messages\n .filter((msg): msg is ChangeMessage<T> =>\n isChangeMessage(msg as Message<Row<never>>)\n )\n .find((message) => {\n const operation: Operation = message.headers.operation\n\n return operations.includes(operation) && matchFn(message)\n })\n\n if (message) {\n return finish(message)\n }\n }\n )\n\n const timeoutId: NodeJS.Timeout = setTimeout(() => {\n const msg: string = `matchStream timed out after ${timeout}ms`\n\n console.error(msg)\n\n reject(msg)\n }, timeout)\n\n function finish(message: ChangeMessage<T>): void {\n clearTimeout(timeoutId)\n\n unsubscribe()\n\n return resolve(message)\n }\n })\n}\n\nexport function matchBy<T extends Row<unknown>>(\n column: string,\n value: Value<GetExtensions<T>>\n): (message: ChangeMessage<T>) => boolean {\n return (message: ChangeMessage<T>) => message.value[column] === value\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAQK;AAEA,SAAS,YACd,QACA,YACA,SACA,UAAU,KACiB;AAC3B,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AACxD,UAAM,cAA0B,OAAO;AAAA,MACrC,CAAC,aAA6B;AAC5B,cAAM,UAAU,SACb;AAAA,UAAO,CAAC,QACP,gBAAgB,GAA0B;AAAA,QAC5C,EACC,KAAK,CAACA,aAAY;AACjB,gBAAM,YAAuBA,SAAQ,QAAQ;AAE7C,iBAAO,WAAW,SAAS,SAAS,KAAK,QAAQA,QAAO;AAAA,QAC1D,CAAC;AAEH,YAAI,SAAS;AACX,iBAAO,OAAO,OAAO;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAA4B,WAAW,MAAM;AACjD,YAAM,MAAc,+BAA+B,OAAO;AAE1D,cAAQ,MAAM,GAAG;AAEjB,aAAO,GAAG;AAAA,IACZ,GAAG,OAAO;AAEV,aAAS,OAAO,SAAiC;AAC/C,mBAAa,SAAS;AAEtB,kBAAY;AAEZ,aAAO,QAAQ,OAAO;AAAA,IACxB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,QACd,QACA,OACwC;AACxC,SAAO,CAAC,YAA8B,QAAQ,MAAM,MAAM,MAAM;AAClE;","names":["message"]}
|
package/package.json
CHANGED
|
@@ -1,36 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@electric-sql/experimental",
|
|
3
|
-
"version": "0.1.2-beta.0",
|
|
4
3
|
"description": "Experimental TypeScript features for ElectricSQL.",
|
|
5
|
-
"
|
|
6
|
-
"main": "dist/cjs/index.cjs",
|
|
7
|
-
"module": "dist/index.legacy-esm.js",
|
|
8
|
-
"types": "dist/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
"./package.json": "./package.json",
|
|
11
|
-
".": {
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
13
|
-
"import": "./dist/index.mjs",
|
|
14
|
-
"default": "./dist/cjs/index.cjs"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist",
|
|
19
|
-
"src"
|
|
20
|
-
],
|
|
21
|
-
"sideEffects": false,
|
|
22
|
-
"repository": {
|
|
23
|
-
"type": "git",
|
|
24
|
-
"url": "git+https://github.com/electric-sql/electric.git"
|
|
25
|
-
},
|
|
4
|
+
"version": "0.1.2-beta.2",
|
|
26
5
|
"author": "ElectricSQL team and contributors.",
|
|
27
|
-
"license": "Apache-2",
|
|
28
6
|
"bugs": {
|
|
29
7
|
"url": "https://github.com/electric-sql/electric/issues"
|
|
30
8
|
},
|
|
31
|
-
"homepage": "https://electric-sql.com",
|
|
32
9
|
"dependencies": {
|
|
33
|
-
"@electric-sql/client": "1.0.0-beta.
|
|
10
|
+
"@electric-sql/client": "1.0.0-beta.3"
|
|
34
11
|
},
|
|
35
12
|
"devDependencies": {
|
|
36
13
|
"@types/pg": "^8.11.6",
|
|
@@ -50,9 +27,37 @@
|
|
|
50
27
|
"uuid": "^10.0.0",
|
|
51
28
|
"vitest": "^2.0.2"
|
|
52
29
|
},
|
|
30
|
+
"exports": {
|
|
31
|
+
"./package.json": "./package.json",
|
|
32
|
+
".": {
|
|
33
|
+
"import": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"default": "./dist/index.mjs"
|
|
36
|
+
},
|
|
37
|
+
"require": {
|
|
38
|
+
"types": "./dist/cjs/index.d.cts",
|
|
39
|
+
"default": "./dist/cjs/index.cjs"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"src"
|
|
46
|
+
],
|
|
47
|
+
"homepage": "https://electric-sql.com",
|
|
48
|
+
"license": "Apache-2",
|
|
49
|
+
"main": "dist/cjs/index.cjs",
|
|
50
|
+
"module": "dist/index.legacy-esm.js",
|
|
53
51
|
"optionalDependencies": {
|
|
54
52
|
"@rollup/rollup-darwin-arm64": "^4.18.1"
|
|
55
53
|
},
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "git+https://github.com/electric-sql/electric.git"
|
|
57
|
+
},
|
|
58
|
+
"sideEffects": false,
|
|
59
|
+
"type": "module",
|
|
60
|
+
"types": "dist/index.d.ts",
|
|
56
61
|
"typesVersions": {
|
|
57
62
|
"*": {
|
|
58
63
|
"*": [
|
|
@@ -61,10 +66,10 @@
|
|
|
61
66
|
}
|
|
62
67
|
},
|
|
63
68
|
"scripts": {
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"build": "shx rm -rf dist && concurrently \"tsup\" \"tsc -p tsconfig.build.json\"",
|
|
69
|
+
"build": "shx rm -rf dist && tsup && tsc -p tsconfig.build.json",
|
|
70
|
+
"format": "eslint . --fix",
|
|
67
71
|
"stylecheck": "eslint . --quiet",
|
|
68
|
-
"
|
|
72
|
+
"test": "pnpm exec vitest",
|
|
73
|
+
"typecheck": "tsc -p tsconfig.json"
|
|
69
74
|
}
|
|
70
75
|
}
|
package/src/match.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
type Operation,
|
|
7
7
|
type Row,
|
|
8
8
|
type Value,
|
|
9
|
+
type Message,
|
|
9
10
|
} from '@electric-sql/client'
|
|
10
11
|
|
|
11
12
|
export function matchStream<T extends Row<unknown>>(
|
|
@@ -15,27 +16,33 @@ export function matchStream<T extends Row<unknown>>(
|
|
|
15
16
|
timeout = 60000 // ms
|
|
16
17
|
): Promise<ChangeMessage<T>> {
|
|
17
18
|
return new Promise<ChangeMessage<T>>((resolve, reject) => {
|
|
18
|
-
const unsubscribe: () => void = stream.subscribe(
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
const unsubscribe: () => void = stream.subscribe(
|
|
20
|
+
(messages: Array<unknown>) => {
|
|
21
|
+
const message = messages
|
|
22
|
+
.filter((msg): msg is ChangeMessage<T> =>
|
|
23
|
+
isChangeMessage(msg as Message<Row<never>>)
|
|
24
|
+
)
|
|
25
|
+
.find((message) => {
|
|
26
|
+
const operation: Operation = message.headers.operation
|
|
27
|
+
|
|
28
|
+
return operations.includes(operation) && matchFn(message)
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
if (message) {
|
|
32
|
+
return finish(message)
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
|
-
|
|
35
|
+
)
|
|
29
36
|
|
|
30
|
-
const timeoutId = setTimeout(() => {
|
|
31
|
-
const msg = `matchStream timed out after ${timeout}ms`
|
|
37
|
+
const timeoutId: NodeJS.Timeout = setTimeout(() => {
|
|
38
|
+
const msg: string = `matchStream timed out after ${timeout}ms`
|
|
32
39
|
|
|
33
40
|
console.error(msg)
|
|
34
41
|
|
|
35
42
|
reject(msg)
|
|
36
43
|
}, timeout)
|
|
37
44
|
|
|
38
|
-
function finish(message: ChangeMessage<T>) {
|
|
45
|
+
function finish(message: ChangeMessage<T>): void {
|
|
39
46
|
clearTimeout(timeoutId)
|
|
40
47
|
|
|
41
48
|
unsubscribe()
|
|
@@ -49,5 +56,5 @@ export function matchBy<T extends Row<unknown>>(
|
|
|
49
56
|
column: string,
|
|
50
57
|
value: Value<GetExtensions<T>>
|
|
51
58
|
): (message: ChangeMessage<T>) => boolean {
|
|
52
|
-
return (message) => message.value[column] === value
|
|
59
|
+
return (message: ChangeMessage<T>) => message.value[column] === value
|
|
53
60
|
}
|