@polkadot-api/logs-provider 0.1.1-canary.ee039a8 → 0.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/index.js CHANGED
@@ -1,161 +1,3 @@
1
- 'use strict';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- class Queue {
7
- constructor(...vals) {
8
- __publicField(this, "first");
9
- __publicField(this, "last");
10
- if (vals.length === 0) return;
11
- vals.forEach((val) => this.push(val));
12
- }
13
- push(value) {
14
- const nextLast = { value };
15
- if (this.last === void 0) {
16
- this.last = nextLast;
17
- this.first = this.last;
18
- } else {
19
- this.last.next = nextLast;
20
- this.last = nextLast;
21
- }
22
- }
23
- pop() {
24
- const result = this.first?.value;
25
- if (this.first) {
26
- this.first = this.first.next;
27
- if (!this.first) {
28
- this.last = void 0;
29
- }
30
- }
31
- return result;
32
- }
33
- peek() {
34
- return this.first?.value;
35
- }
36
- }
37
-
38
- const OUT = ">>";
39
- const IN = "<<";
40
-
41
- const rawLogsToLogs = (rawLogs) => {
42
- const result = /* @__PURE__ */ new Map();
43
- let tick = -1;
44
- for (let i = 0; i < rawLogs.length; i++) {
45
- const [, clientIdRaw, dateRaw, type, msg] = rawLogs[i].match(
46
- /^(\d*)-(.{24})-(.{2})-(.*)$/
47
- );
48
- const clientId = Number(clientIdRaw);
49
- tick = new Date(dateRaw).getTime();
50
- const logs = result.get(clientId) ?? [];
51
- result.set(clientId, logs);
52
- logs.push({
53
- clientId,
54
- tick,
55
- type,
56
- msg
57
- });
58
- }
59
- return result;
60
- };
61
- const extractTx = (msg) => {
62
- const startTxt = 'TaggedTransactionQueue_validate_transaction","';
63
- const start = msg.lastIndexOf(startTxt) + startTxt.length + 4;
64
- const end = msg.indexOf(`"`, start + 1);
65
- return msg.substring(start, end - 64);
66
- };
67
- const defaultOptions = { speed: 1 };
68
- const logsProvider = (rawLogs, options = {}) => {
69
- const { speed } = { ...defaultOptions, ...options };
70
- let nextClientId = 1;
71
- const allLogs = rawLogsToLogs(
72
- rawLogs[rawLogs.length - 1] ? rawLogs : rawLogs.slice(0, -1)
73
- );
74
- return (onMsg) => {
75
- const clientId = nextClientId++;
76
- const logs = allLogs.get(clientId);
77
- const pending = new Queue();
78
- let idx = 0;
79
- let transactions = /* @__PURE__ */ new Map();
80
- const checkForIncommingMessages = async () => {
81
- if (!pending.peek()) return;
82
- while (idx < logs.length && token !== void 0) {
83
- const expected = logs[idx];
84
- transactions.forEach((value, key) => {
85
- expected.msg = expected.msg.replace(key, value);
86
- });
87
- if (expected.type === OUT) {
88
- if (!pending.peek()) {
89
- token = setTimeout(checkForIncommingMessages, 100);
90
- break;
91
- }
92
- const received = JSON.stringify(pending.pop());
93
- if (expected.msg.includes(
94
- "TaggedTransactionQueue_validate_transaction"
95
- ) && received?.includes("TaggedTransactionQueue_validate_transaction")) {
96
- transactions.set(extractTx(expected.msg), extractTx(received));
97
- transactions.forEach((value, key) => {
98
- expected.msg = expected.msg.replace(key, value);
99
- });
100
- }
101
- if (received !== expected.msg) {
102
- console.log(`recieved: "${received}"`);
103
- console.log(`expected: "${expected.msg}"`);
104
- throw new Error("unexpected messaged was received");
105
- }
106
- } else {
107
- onMsg(JSON.parse(expected.msg));
108
- const nextOne = logs[idx + 1];
109
- if (nextOne)
110
- await new Promise(
111
- (res) => setTimeout(res, (nextOne.tick - expected.tick) / speed)
112
- );
113
- }
114
- idx++;
115
- }
116
- };
117
- let token = setTimeout(checkForIncommingMessages, 200);
118
- return {
119
- send: (msg) => {
120
- pending.push(msg);
121
- },
122
- disconnect: () => {
123
- clearTimeout(token);
124
- token = void 0;
125
- }
126
- };
127
- };
128
- };
129
-
130
- const withLogsRecorder = (persistLog, input) => {
131
- let nextId = 1;
132
- let token;
133
- let tickDate = "";
134
- const setTickDate = () => {
135
- tickDate = (/* @__PURE__ */ new Date()).toISOString();
136
- token = setTimeout(setTickDate, 0);
137
- };
138
- return (onMsg) => {
139
- const clientId = nextId++;
140
- setTickDate();
141
- const result = input((msg) => {
142
- persistLog(`${clientId}-${tickDate}-${IN}-${JSON.stringify(msg)}`);
143
- onMsg(msg);
144
- });
145
- return {
146
- ...result,
147
- send: (msg) => {
148
- persistLog(`${clientId}-${tickDate}-${OUT}-${JSON.stringify(msg)}`);
149
- result.send(msg);
150
- },
151
- disconnect() {
152
- clearTimeout(token);
153
- result.disconnect();
154
- }
155
- };
156
- };
157
- };
158
-
159
- exports.logsProvider = logsProvider;
160
- exports.withLogsRecorder = withLogsRecorder;
1
+ export { logsProvider } from './logs-provider.js';
2
+ export { withLogsRecorder } from './with-logs-recorder.js';
161
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/queue.ts","../src/types.ts","../src/logs-provider.ts","../src/with-logs-recorder.ts"],"sourcesContent":["interface QueueNode<T> {\n value: T\n next?: QueueNode<T>\n}\n\nexport default class Queue<T> {\n private first?: QueueNode<T>\n private last?: QueueNode<T>\n\n constructor(...vals: T[]) {\n if (vals.length === 0) return\n vals.forEach((val) => this.push(val))\n }\n\n push(value: T) {\n const nextLast: QueueNode<T> = { value }\n if (this.last === undefined) {\n this.last = nextLast\n this.first = this.last\n } else {\n this.last.next = nextLast\n this.last = nextLast\n }\n }\n\n pop() {\n const result = this.first?.value\n if (this.first) {\n this.first = this.first.next\n if (!this.first) {\n this.last = undefined\n }\n }\n return result\n }\n\n peek() {\n return this.first?.value\n }\n}\n","export type Out = \">>\"\nexport const OUT: Out = \">>\"\n\nexport type In = \"<<\"\nexport const IN: In = \"<<\"\n","import {\n JsonRpcMessage,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport Queue from \"./queue\"\nimport { In, OUT, Out } from \"./types\"\n\ninterface Log {\n clientId: number\n type: In | Out\n msg: string\n tick: number\n}\n\nconst rawLogsToLogs = (rawLogs: string[]): Map<number, Log[]> => {\n const result = new Map<number, Log[]>()\n let tick = -1\n\n for (let i = 0; i < rawLogs.length; i++) {\n const [, clientIdRaw, dateRaw, type, msg] = rawLogs[i].match(\n /^(\\d*)-(.{24})-(.{2})-(.*)$/,\n )!\n const clientId = Number(clientIdRaw)\n\n tick = new Date(dateRaw).getTime()\n\n const logs = result.get(clientId) ?? []\n result.set(clientId, logs)\n\n logs.push({\n clientId,\n tick,\n type: type as any,\n msg,\n })\n }\n\n return result\n}\n\nconst extractTx = (msg: string) => {\n const startTxt = 'TaggedTransactionQueue_validate_transaction\",\"'\n const start = msg.lastIndexOf(startTxt) + startTxt.length + 4\n const end = msg.indexOf(`\"`, start + 1)\n return msg.substring(start, end - 64)\n}\n\nexport type LogsProviderOptions = {\n speed: number\n}\nconst defaultOptions: LogsProviderOptions = { speed: 1 }\nexport const logsProvider = (\n rawLogs: Array<string>,\n options: Partial<LogsProviderOptions> = {},\n): JsonRpcProvider => {\n const { speed } = { ...defaultOptions, ...options }\n let nextClientId = 1\n const allLogs = rawLogsToLogs(\n rawLogs[rawLogs.length - 1] ? rawLogs : rawLogs.slice(0, -1),\n )\n\n return (onMsg) => {\n const clientId = nextClientId++\n const logs = allLogs.get(clientId)!\n const pending = new Queue<JsonRpcMessage>()\n let idx = 0\n\n let transactions = new Map<string, string>()\n const checkForIncommingMessages = async () => {\n if (!pending.peek()) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n\n const received = JSON.stringify(pending.pop())\n\n if (\n expected.msg.includes(\n \"TaggedTransactionQueue_validate_transaction\",\n ) &&\n received?.includes(\"TaggedTransactionQueue_validate_transaction\")\n ) {\n transactions.set(extractTx(expected.msg), extractTx(received))\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n }\n\n if (received !== expected.msg) {\n console.log(`recieved: \"${received}\"`)\n console.log(`expected: \"${expected.msg}\"`)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(JSON.parse(expected.msg))\n const nextOne = logs[idx + 1]\n if (nextOne)\n await new Promise((res) =>\n setTimeout(res, (nextOne.tick - expected.tick) / speed),\n )\n }\n idx++\n }\n }\n\n let token: undefined | number = setTimeout(checkForIncommingMessages, 200)\n\n return {\n send: (msg) => {\n pending.push(msg)\n },\n disconnect: () => {\n clearTimeout(token)\n token = undefined\n },\n }\n }\n}\n","import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { IN, OUT } from \"./types\"\n\nexport const withLogsRecorder = (\n persistLog: (log: string) => void,\n input: JsonRpcProvider,\n): JsonRpcProvider => {\n let nextId = 1\n let token: any\n let tickDate = \"\"\n const setTickDate = () => {\n tickDate = new Date().toISOString()\n token = setTimeout(setTickDate, 0)\n }\n\n return (onMsg) => {\n const clientId = nextId++\n\n setTickDate()\n\n const result = input((msg) => {\n persistLog(`${clientId}-${tickDate}-${IN}-${JSON.stringify(msg)}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${JSON.stringify(msg)}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +1,5 @@
1
- import Queue from './queue.mjs';
2
- import { OUT } from './types.mjs';
1
+ import Queue from './queue.js';
2
+ import { OUT } from './types.js';
3
3
 
4
4
  const rawLogsToLogs = (rawLogs) => {
5
5
  const result = /* @__PURE__ */ new Map();
@@ -91,4 +91,4 @@ const logsProvider = (rawLogs, options = {}) => {
91
91
  };
92
92
 
93
93
  export { logsProvider };
94
- //# sourceMappingURL=logs-provider.mjs.map
94
+ //# sourceMappingURL=logs-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-provider.js","sources":["../src/logs-provider.ts"],"sourcesContent":["import {\n JsonRpcMessage,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport Queue from \"./queue\"\nimport { In, OUT, Out } from \"./types\"\n\ninterface Log {\n clientId: number\n type: In | Out\n msg: string\n tick: number\n}\n\nconst rawLogsToLogs = (rawLogs: string[]): Map<number, Log[]> => {\n const result = new Map<number, Log[]>()\n let tick = -1\n\n for (let i = 0; i < rawLogs.length; i++) {\n const [, clientIdRaw, dateRaw, type, msg] = rawLogs[i].match(\n /^(\\d*)-(.{24})-(.{2})-(.*)$/,\n )!\n const clientId = Number(clientIdRaw)\n\n tick = new Date(dateRaw).getTime()\n\n const logs = result.get(clientId) ?? []\n result.set(clientId, logs)\n\n logs.push({\n clientId,\n tick,\n type: type as any,\n msg,\n })\n }\n\n return result\n}\n\nconst extractTx = (msg: string) => {\n const startTxt = 'TaggedTransactionQueue_validate_transaction\",\"'\n const start = msg.lastIndexOf(startTxt) + startTxt.length + 4\n const end = msg.indexOf(`\"`, start + 1)\n return msg.substring(start, end - 64)\n}\n\nexport type LogsProviderOptions = {\n speed: number\n}\nconst defaultOptions: LogsProviderOptions = { speed: 1 }\nexport const logsProvider = (\n rawLogs: Array<string>,\n options: Partial<LogsProviderOptions> = {},\n): JsonRpcProvider => {\n const { speed } = { ...defaultOptions, ...options }\n let nextClientId = 1\n const allLogs = rawLogsToLogs(\n rawLogs[rawLogs.length - 1] ? rawLogs : rawLogs.slice(0, -1),\n )\n\n return (onMsg) => {\n const clientId = nextClientId++\n const logs = allLogs.get(clientId)!\n const pending = new Queue<JsonRpcMessage>()\n let idx = 0\n\n let transactions = new Map<string, string>()\n const checkForIncommingMessages = async () => {\n if (!pending.peek()) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n\n const received = JSON.stringify(pending.pop())\n\n if (\n expected.msg.includes(\n \"TaggedTransactionQueue_validate_transaction\",\n ) &&\n received?.includes(\"TaggedTransactionQueue_validate_transaction\")\n ) {\n transactions.set(extractTx(expected.msg), extractTx(received))\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n }\n\n if (received !== expected.msg) {\n console.log(`recieved: \"${received}\"`)\n console.log(`expected: \"${expected.msg}\"`)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(JSON.parse(expected.msg))\n const nextOne = logs[idx + 1]\n if (nextOne)\n await new Promise((res) =>\n setTimeout(res, (nextOne.tick - expected.tick) / speed),\n )\n }\n idx++\n }\n }\n\n let token: undefined | number = setTimeout(checkForIncommingMessages, 200)\n\n return {\n send: (msg) => {\n pending.push(msg)\n },\n disconnect: () => {\n clearTimeout(token)\n token = undefined\n },\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -34,4 +34,4 @@ class Queue {
34
34
  }
35
35
 
36
36
  export { Queue as default };
37
- //# sourceMappingURL=queue.mjs.map
37
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sources":["../src/queue.ts"],"sourcesContent":["interface QueueNode<T> {\n value: T\n next?: QueueNode<T>\n}\n\nexport default class Queue<T> {\n private first?: QueueNode<T>\n private last?: QueueNode<T>\n\n constructor(...vals: T[]) {\n if (vals.length === 0) return\n vals.forEach((val) => this.push(val))\n }\n\n push(value: T) {\n const nextLast: QueueNode<T> = { value }\n if (this.last === undefined) {\n this.last = nextLast\n this.first = this.last\n } else {\n this.last.next = nextLast\n this.last = nextLast\n }\n }\n\n pop() {\n const result = this.first?.value\n if (this.first) {\n this.first = this.first.next\n if (!this.first) {\n this.last = undefined\n }\n }\n return result\n }\n\n peek() {\n return this.first?.value\n }\n}\n"],"names":[],"mappings":";;;AAKA,MAAqB,KAAA,CAAS;AAAA,EAI5B,eAAe,IAAA,EAAW;AAH1B,IAAA,aAAA,CAAA,IAAA,EAAQ,OAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAA,CAAA;AAGN,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACvB,IAAA,IAAA,CAAK,QAAQ,CAAC,GAAA,KAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EACtC;AAAA,EAEA,KAAK,KAAA,EAAU;AACb,IAAA,MAAM,QAAA,GAAyB,EAAE,KAAA,EAAM;AACvC,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AACZ,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAK,IAAA,GAAO,QAAA;AACjB,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEA,GAAA,GAAM;AACJ,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,EAAO,KAAA;AAC3B,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,KAAA,CAAM,IAAA;AACxB,MAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AAAA,MACd;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,OAAO,KAAK,KAAA,EAAO,KAAA;AAAA,EACrB;AACF;;;;"}
@@ -2,4 +2,4 @@ const OUT = ">>";
2
2
  const IN = "<<";
3
3
 
4
4
  export { IN, OUT };
5
- //# sourceMappingURL=types.mjs.map
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["export type Out = \">>\"\nexport const OUT: Out = \">>\"\n\nexport type In = \"<<\"\nexport const IN: In = \"<<\"\n"],"names":[],"mappings":"AACO,MAAM,GAAA,GAAW;AAGjB,MAAM,EAAA,GAAS;;;;"}
@@ -1,4 +1,4 @@
1
- import { IN, OUT } from './types.mjs';
1
+ import { IN, OUT } from './types.js';
2
2
 
3
3
  const withLogsRecorder = (persistLog, input) => {
4
4
  let nextId = 1;
@@ -30,4 +30,4 @@ const withLogsRecorder = (persistLog, input) => {
30
30
  };
31
31
 
32
32
  export { withLogsRecorder };
33
- //# sourceMappingURL=with-logs-recorder.mjs.map
33
+ //# sourceMappingURL=with-logs-recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-logs-recorder.js","sources":["../src/with-logs-recorder.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { IN, OUT } from \"./types\"\n\nexport const withLogsRecorder = (\n persistLog: (log: string) => void,\n input: JsonRpcProvider,\n): JsonRpcProvider => {\n let nextId = 1\n let token: any\n let tickDate = \"\"\n const setTickDate = () => {\n tickDate = new Date().toISOString()\n token = setTimeout(setTickDate, 0)\n }\n\n return (onMsg) => {\n const clientId = nextId++\n\n setTickDate()\n\n const result = input((msg) => {\n persistLog(`${clientId}-${tickDate}-${IN}-${JSON.stringify(msg)}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${JSON.stringify(msg)}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"names":[],"mappings":";;AAGO,MAAM,gBAAA,GAAmB,CAC9B,UAAA,EACA,KAAA,KACoB;AACpB,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,QAAA,GAAW,EAAA;AACf,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAA,GAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAClC,IAAA,KAAA,GAAQ,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,MAAM,QAAA,GAAW,MAAA,EAAA;AAEjB,IAAA,WAAA,EAAY;AAEZ,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAC,GAAA,KAAQ;AAC5B,MAAA,UAAA,CAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA,CAAE,CAAA;AACjE,MAAA,KAAA,CAAM,GAAG,CAAA;AAAA,IACX,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,CAAC,GAAA,KAAQ;AACb,QAAA,UAAA,CAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA,CAAE,CAAA;AAClE,QAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,UAAA,GAAa;AACX,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,MAAA,CAAO,UAAA,EAAW;AAAA,MACpB;AAAA,KACF;AAAA,EACF,CAAA;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/logs-provider",
3
- "version": "0.1.1-canary.ee039a8",
3
+ "version": "0.2.0",
4
4
  "author": "Josep M Sobrepere (https://github.com/josepot)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,37 +8,27 @@
8
8
  },
9
9
  "license": "MIT",
10
10
  "sideEffects": false,
11
+ "type": "module",
11
12
  "exports": {
12
13
  ".": {
13
- "node": {
14
- "production": {
15
- "import": "./dist/esm/index.mjs",
16
- "require": "./dist/min/index.js",
17
- "default": "./dist/index.js"
18
- },
19
- "import": "./dist/esm/index.mjs",
20
- "require": "./dist/index.js",
21
- "default": "./dist/index.js"
22
- },
23
- "module": "./dist/esm/index.mjs",
24
- "import": "./dist/esm/index.mjs",
25
- "require": "./dist/index.js",
14
+ "types": "./dist/index.d.ts",
15
+ "module": "./dist/index.js",
16
+ "import": "./dist/index.js",
26
17
  "default": "./dist/index.js"
27
- },
28
- "./package.json": "./package.json"
18
+ }
29
19
  },
30
20
  "main": "./dist/index.js",
31
- "module": "./dist/esm/index.mjs",
32
- "browser": "./dist/esm/index.mjs",
21
+ "module": "./dist/index.js",
22
+ "browser": "./dist/index.js",
33
23
  "types": "./dist/index.d.ts",
34
24
  "files": [
35
25
  "dist"
36
26
  ],
37
27
  "dependencies": {
38
- "@polkadot-api/json-rpc-provider": "0.1.1-canary.ee039a8"
28
+ "@polkadot-api/json-rpc-provider": "0.2.0"
39
29
  },
40
30
  "devDependencies": {
41
- "@polkadot-api/json-rpc-provider": "0.1.1-canary.ee039a8"
31
+ "@polkadot-api/json-rpc-provider": "0.2.0"
42
32
  },
43
33
  "scripts": {
44
34
  "build-core": "tsc --noEmit && rollup -c ../../../rollup.config.js",
@@ -1,3 +0,0 @@
1
- export { logsProvider } from './logs-provider.mjs';
2
- export { withLogsRecorder } from './with-logs-recorder.mjs';
3
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs-provider.mjs","sources":["../../src/logs-provider.ts"],"sourcesContent":["import {\n JsonRpcMessage,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport Queue from \"./queue\"\nimport { In, OUT, Out } from \"./types\"\n\ninterface Log {\n clientId: number\n type: In | Out\n msg: string\n tick: number\n}\n\nconst rawLogsToLogs = (rawLogs: string[]): Map<number, Log[]> => {\n const result = new Map<number, Log[]>()\n let tick = -1\n\n for (let i = 0; i < rawLogs.length; i++) {\n const [, clientIdRaw, dateRaw, type, msg] = rawLogs[i].match(\n /^(\\d*)-(.{24})-(.{2})-(.*)$/,\n )!\n const clientId = Number(clientIdRaw)\n\n tick = new Date(dateRaw).getTime()\n\n const logs = result.get(clientId) ?? []\n result.set(clientId, logs)\n\n logs.push({\n clientId,\n tick,\n type: type as any,\n msg,\n })\n }\n\n return result\n}\n\nconst extractTx = (msg: string) => {\n const startTxt = 'TaggedTransactionQueue_validate_transaction\",\"'\n const start = msg.lastIndexOf(startTxt) + startTxt.length + 4\n const end = msg.indexOf(`\"`, start + 1)\n return msg.substring(start, end - 64)\n}\n\nexport type LogsProviderOptions = {\n speed: number\n}\nconst defaultOptions: LogsProviderOptions = { speed: 1 }\nexport const logsProvider = (\n rawLogs: Array<string>,\n options: Partial<LogsProviderOptions> = {},\n): JsonRpcProvider => {\n const { speed } = { ...defaultOptions, ...options }\n let nextClientId = 1\n const allLogs = rawLogsToLogs(\n rawLogs[rawLogs.length - 1] ? rawLogs : rawLogs.slice(0, -1),\n )\n\n return (onMsg) => {\n const clientId = nextClientId++\n const logs = allLogs.get(clientId)!\n const pending = new Queue<JsonRpcMessage>()\n let idx = 0\n\n let transactions = new Map<string, string>()\n const checkForIncommingMessages = async () => {\n if (!pending.peek()) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n\n const received = JSON.stringify(pending.pop())\n\n if (\n expected.msg.includes(\n \"TaggedTransactionQueue_validate_transaction\",\n ) &&\n received?.includes(\"TaggedTransactionQueue_validate_transaction\")\n ) {\n transactions.set(extractTx(expected.msg), extractTx(received))\n transactions.forEach((value, key) => {\n expected.msg = expected.msg.replace(key, value)\n })\n }\n\n if (received !== expected.msg) {\n console.log(`recieved: \"${received}\"`)\n console.log(`expected: \"${expected.msg}\"`)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(JSON.parse(expected.msg))\n const nextOne = logs[idx + 1]\n if (nextOne)\n await new Promise((res) =>\n setTimeout(res, (nextOne.tick - expected.tick) / speed),\n )\n }\n idx++\n }\n }\n\n let token: undefined | number = setTimeout(checkForIncommingMessages, 200)\n\n return {\n send: (msg) => {\n pending.push(msg)\n },\n disconnect: () => {\n clearTimeout(token)\n token = undefined\n },\n }\n }\n}\n"],"names":[],"mappings":";;;AAcA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAA0C;AAC/D,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAmB;AACtC,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,GAAG,WAAA,EAAa,OAAA,EAAS,MAAM,GAAG,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA,CAAE,KAAA;AAAA,MACrD;AAAA,KACF;AACA,IAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AAEnC,IAAA,IAAA,GAAO,IAAI,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,EAAQ;AAEjC,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAK,EAAC;AACtC,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,IAAI,CAAA;AAEzB,IAAA,IAAA,CAAK,IAAA,CAAK;AAAA,MACR,QAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgB;AACjC,EAAA,MAAM,QAAA,GAAW,gDAAA;AACjB,EAAA,MAAM,QAAQ,GAAA,CAAI,WAAA,CAAY,QAAQ,CAAA,GAAI,SAAS,MAAA,GAAS,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,CAAA,CAAA,CAAA,EAAK,QAAQ,CAAC,CAAA;AACtC,EAAA,OAAO,GAAA,CAAI,SAAA,CAAU,KAAA,EAAO,GAAA,GAAM,EAAE,CAAA;AACtC,CAAA;AAKA,MAAM,cAAA,GAAsC,EAAE,KAAA,EAAO,CAAA,EAAE;AAChD,MAAM,YAAA,GAAe,CAC1B,OAAA,EACA,OAAA,GAAwC,EAAC,KACrB;AACpB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAA,EAAQ;AAClD,EAAA,IAAI,YAAA,GAAe,CAAA;AACnB,EAAA,MAAM,OAAA,GAAU,aAAA;AAAA,IACd,OAAA,CAAQ,QAAQ,MAAA,GAAS,CAAC,IAAI,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE;AAAA,GAC7D;AAEA,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,MAAM,QAAA,GAAW,YAAA,EAAA;AACjB,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,KAAA,EAAsB;AAC1C,IAAA,IAAI,GAAA,GAAM,CAAA;AAEV,IAAA,IAAI,YAAA,uBAAmB,GAAA,EAAoB;AAC3C,IAAA,MAAM,4BAA4B,YAAY;AAC5C,MAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,EAAK,EAAG;AAErB,MAAA,OAAO,GAAA,GAAM,IAAA,CAAK,MAAA,IAAU,KAAA,KAAU,MAAA,EAAW;AAC/C,QAAA,MAAM,QAAA,GAAW,KAAK,GAAG,CAAA;AACzB,QAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AACnC,UAAA,QAAA,CAAS,GAAA,GAAM,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,QAChD,CAAC,CAAA;AACD,QAAA,IAAI,QAAA,CAAS,SAAS,GAAA,EAAK;AACzB,UAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,EAAK,EAAG;AACnB,YAAA,KAAA,GAAQ,UAAA,CAAW,2BAA2B,GAAG,CAAA;AACjD,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAA;AAE7C,UAAA,IACE,SAAS,GAAA,CAAI,QAAA;AAAA,YACX;AAAA,WACF,IACA,QAAA,EAAU,QAAA,CAAS,6CAA6C,CAAA,EAChE;AACA,YAAA,YAAA,CAAa,IAAI,SAAA,CAAU,QAAA,CAAS,GAAG,CAAA,EAAG,SAAA,CAAU,QAAQ,CAAC,CAAA;AAC7D,YAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AACnC,cAAA,QAAA,CAAS,GAAA,GAAM,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,YAChD,CAAC,CAAA;AAAA,UACH;AAEA,UAAA,IAAI,QAAA,KAAa,SAAS,GAAA,EAAK;AAC7B,YAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAA,CAAG,CAAA;AACrC,YAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,WAAA,EAAc,QAAA,CAAS,GAAG,CAAA,CAAA,CAAG,CAAA;AACzC,YAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,UACpD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,GAAG,CAAC,CAAA;AAC9B,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,GAAM,CAAC,CAAA;AAC5B,UAAA,IAAI,OAAA;AACF,YAAA,MAAM,IAAI,OAAA;AAAA,cAAQ,CAAC,QACjB,UAAA,CAAW,GAAA,EAAA,CAAM,QAAQ,IAAA,GAAO,QAAA,CAAS,QAAQ,KAAK;AAAA,aACxD;AAAA,QACJ;AACA,QAAA,GAAA,EAAA;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,KAAA,GAA4B,UAAA,CAAW,yBAAA,EAA2B,GAAG,CAAA;AAEzE,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,CAAC,GAAA,KAAQ;AACb,QAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,MAClB,CAAA;AAAA,MACA,YAAY,MAAM;AAChB,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,KAAA,GAAQ,MAAA;AAAA,MACV;AAAA,KACF;AAAA,EACF,CAAA;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.mjs","sources":["../../src/queue.ts"],"sourcesContent":["interface QueueNode<T> {\n value: T\n next?: QueueNode<T>\n}\n\nexport default class Queue<T> {\n private first?: QueueNode<T>\n private last?: QueueNode<T>\n\n constructor(...vals: T[]) {\n if (vals.length === 0) return\n vals.forEach((val) => this.push(val))\n }\n\n push(value: T) {\n const nextLast: QueueNode<T> = { value }\n if (this.last === undefined) {\n this.last = nextLast\n this.first = this.last\n } else {\n this.last.next = nextLast\n this.last = nextLast\n }\n }\n\n pop() {\n const result = this.first?.value\n if (this.first) {\n this.first = this.first.next\n if (!this.first) {\n this.last = undefined\n }\n }\n return result\n }\n\n peek() {\n return this.first?.value\n }\n}\n"],"names":[],"mappings":";;;AAKA,MAAqB,KAAA,CAAS;AAAA,EAI5B,eAAe,IAAA,EAAW;AAH1B,IAAA,aAAA,CAAA,IAAA,EAAQ,OAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAA,CAAA;AAGN,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACvB,IAAA,IAAA,CAAK,QAAQ,CAAC,GAAA,KAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EACtC;AAAA,EAEA,KAAK,KAAA,EAAU;AACb,IAAA,MAAM,QAAA,GAAyB,EAAE,KAAA,EAAM;AACvC,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AACZ,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA;AAAA,IACpB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAK,IAAA,GAAO,QAAA;AACjB,MAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAAA,IACd;AAAA,EACF;AAAA,EAEA,GAAA,GAAM;AACJ,IAAA,MAAM,MAAA,GAAS,KAAK,KAAA,EAAO,KAAA;AAC3B,IAAA,IAAI,KAAK,KAAA,EAAO;AACd,MAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,KAAA,CAAM,IAAA;AACxB,MAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AAAA,MACd;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,OAAO,KAAK,KAAA,EAAO,KAAA;AAAA,EACrB;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.mjs","sources":["../../src/types.ts"],"sourcesContent":["export type Out = \">>\"\nexport const OUT: Out = \">>\"\n\nexport type In = \"<<\"\nexport const IN: In = \"<<\"\n"],"names":[],"mappings":"AACO,MAAM,GAAA,GAAW;AAGjB,MAAM,EAAA,GAAS;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"with-logs-recorder.mjs","sources":["../../src/with-logs-recorder.ts"],"sourcesContent":["import { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { IN, OUT } from \"./types\"\n\nexport const withLogsRecorder = (\n persistLog: (log: string) => void,\n input: JsonRpcProvider,\n): JsonRpcProvider => {\n let nextId = 1\n let token: any\n let tickDate = \"\"\n const setTickDate = () => {\n tickDate = new Date().toISOString()\n token = setTimeout(setTickDate, 0)\n }\n\n return (onMsg) => {\n const clientId = nextId++\n\n setTickDate()\n\n const result = input((msg) => {\n persistLog(`${clientId}-${tickDate}-${IN}-${JSON.stringify(msg)}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${JSON.stringify(msg)}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"names":[],"mappings":";;AAGO,MAAM,gBAAA,GAAmB,CAC9B,UAAA,EACA,KAAA,KACoB;AACpB,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,QAAA,GAAW,EAAA;AACf,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAA,GAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAClC,IAAA,KAAA,GAAQ,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,OAAO,CAAC,KAAA,KAAU;AAChB,IAAA,MAAM,QAAA,GAAW,MAAA,EAAA;AAEjB,IAAA,WAAA,EAAY;AAEZ,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,CAAC,GAAA,KAAQ;AAC5B,MAAA,UAAA,CAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA,CAAE,CAAA;AACjE,MAAA,KAAA,CAAM,GAAG,CAAA;AAAA,IACX,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAA,EAAM,CAAC,GAAA,KAAQ;AACb,QAAA,UAAA,CAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,GAAG,CAAC,CAAA,CAAE,CAAA;AAClE,QAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,UAAA,GAAa;AACX,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,MAAA,CAAO,UAAA,EAAW;AAAA,MACpB;AAAA,KACF;AAAA,EACF,CAAA;AACF;;;;"}