@polkadot-api/logs-provider 0.0.1 → 0.0.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/README.md CHANGED
@@ -1 +1,20 @@
1
1
  # @polkadot-api/logs-provider
2
+
3
+ This package exports a `JsonRpcProvider` enhancer to record logs of messages sent & received, and a provider that reads from these logs to replay existing sessions.
4
+
5
+ This can be useful to set up reproduction cases with a provider that behaves consistently.
6
+
7
+ ## withLogsRecorder
8
+
9
+ ```ts
10
+ function withLogsRecorder(
11
+ persistLog: (line: string) => void,
12
+ provider: JsonRpcProvider,
13
+ ): JsonRpcProvider
14
+ ```
15
+
16
+ ## logsProvider
17
+
18
+ ```ts
19
+ function logsProvider(logs: string[]): JsonRpcProvider
20
+ ```
package/dist/index.js CHANGED
@@ -91,6 +91,12 @@ var rawLogsToLogs = (rawLogs) => {
91
91
  }
92
92
  return result;
93
93
  };
94
+ var extractTx = (msg) => {
95
+ const startTxt = 'TaggedTransactionQueue_validate_transaction","';
96
+ const start = msg.lastIndexOf(startTxt) + startTxt.length + 4;
97
+ const end = msg.indexOf(`"`, start + 1);
98
+ return msg.substring(start, end - 64);
99
+ };
94
100
  var logsProvider = (rawLogs) => {
95
101
  let nextClientId = 1;
96
102
  const allLogs = rawLogsToLogs(
@@ -101,21 +107,32 @@ var logsProvider = (rawLogs) => {
101
107
  const logs = allLogs.get(clientId);
102
108
  const pending = new Queue();
103
109
  let idx = 0;
110
+ let transactions = /* @__PURE__ */ new Map();
104
111
  const checkForIncommingMessages = async () => {
105
- if (!pending.peek)
112
+ if (!pending.peek())
106
113
  return;
107
114
  while (idx < logs.length && token !== void 0) {
108
115
  const expected = logs[idx];
116
+ transactions.forEach((value, key) => {
117
+ expected.msg = expected.msg.replace(key, value);
118
+ });
109
119
  if (expected.type === OUT) {
110
120
  if (!pending.peek()) {
111
121
  token = setTimeout(checkForIncommingMessages, 100);
112
122
  break;
113
123
  }
114
124
  const received = pending.pop();
125
+ if (expected.msg.includes(
126
+ "TaggedTransactionQueue_validate_transaction"
127
+ ) && received?.includes("TaggedTransactionQueue_validate_transaction")) {
128
+ transactions.set(extractTx(expected.msg), extractTx(received));
129
+ transactions.forEach((value, key) => {
130
+ expected.msg = expected.msg.replace(key, value);
131
+ });
132
+ }
115
133
  if (received !== expected.msg) {
116
- console.log("recieved: ", received);
117
- console.log(received);
118
- console.log("expected: ", expected.msg);
134
+ console.log(`recieved: "${received}"`);
135
+ console.log(`expected: "${expected.msg}"`);
119
136
  throw new Error("unexpected messaged was received");
120
137
  }
121
138
  } else {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/queue.ts","../src/types.ts","../src/logs-provider.ts","../src/with-logs-recorder.ts"],"sourcesContent":["export * from \"./logs-provider\"\nexport * from \"./with-logs-recorder\"\n","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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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\nexport const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\n let idx = 0\n\n const checkForIncommingMessages = async () => {\n if (!pending.peek) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n const received = pending.pop()\n if (received !== expected.msg) {\n console.log(\"recieved: \", received)\n console.log(received)\n console.log(\"expected: \", expected.msg)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/queue.ts","../src/types.ts","../src/logs-provider.ts","../src/with-logs-recorder.ts"],"sourcesContent":["export * from \"./logs-provider\"\nexport * from \"./with-logs-recorder\"\n","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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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 const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\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 = 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(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKA,IAAqB,QAArB,MAA8B;AAAA,EAI5B,eAAe,MAAW;AAH1B,wBAAQ;AACR,wBAAQ;AAGN,QAAI,KAAK,WAAW;AAAG;AACvB,SAAK,QAAQ,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC;AAAA,EACtC;AAAA,EAEA,KAAK,OAAU;AACb,UAAM,WAAyB,EAAE,MAAM;AACvC,QAAI,KAAK,SAAS,QAAW;AAC3B,WAAK,OAAO;AACZ,WAAK,QAAQ,KAAK;AAAA,IACpB,OAAO;AACL,WAAK,KAAK,OAAO;AACjB,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAM;AACJ,UAAM,SAAS,KAAK,OAAO;AAC3B,QAAI,KAAK,OAAO;AACd,WAAK,QAAQ,KAAK,MAAM;AACxB,UAAI,CAAC,KAAK,OAAO;AACf,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO;AACL,WAAO,KAAK,OAAO;AAAA,EACrB;AACF;;;ACtCO,IAAM,MAAW;AAGjB,IAAM,KAAS;;;ACOtB,IAAM,gBAAgB,CAAC,YAA0C;AAC/D,QAAM,SAAS,oBAAI,IAAmB;AACtC,MAAI,WAAW;AACf,MAAI,OAAO;AAEX,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,CAAC,EAAE,aAAa,SAAS,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE;AAAA,MACrD;AAAA,IACF;AACA,UAAM,WAAW,OAAO,WAAW;AAEnC,YAAQ,YAAY,WAAW,IAAI;AACnC,eAAW;AAEX,UAAM,OAAO,OAAO,IAAI,QAAQ,KAAK,CAAC;AACtC,WAAO,IAAI,UAAU,IAAI;AAEzB,SAAK,KAAK;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,IAAM,YAAY,CAAC,QAAgB;AACjC,QAAM,WAAW;AACjB,QAAM,QAAQ,IAAI,YAAY,QAAQ,IAAI,SAAS,SAAS;AAC5D,QAAM,MAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACtC,SAAO,IAAI,UAAU,OAAO,MAAM,EAAE;AACtC;AAEO,IAAM,eAAe,CAAC,YAA4C;AACvE,MAAI,eAAe;AACnB,QAAM,UAAU;AAAA,IACd,QAAQ,QAAQ,SAAS,CAAC,IAAI,UAAU,QAAQ,MAAM,GAAG,EAAE;AAAA,EAC7D;AAEA,SAAO,CAAC,UAAU;AAChB,UAAM,WAAW;AACjB,UAAM,OAAO,QAAQ,IAAI,QAAQ;AACjC,UAAM,UAAU,IAAI,MAAc;AAClC,QAAI,MAAM;AAEV,QAAI,eAAe,oBAAI,IAAoB;AAC3C,UAAM,4BAA4B,YAAY;AAC5C,UAAI,CAAC,QAAQ,KAAK;AAAG;AAErB,aAAO,MAAM,KAAK,UAAU,UAAU,QAAW;AAC/C,cAAM,WAAW,KAAK,GAAG;AACzB,qBAAa,QAAQ,CAAC,OAAO,QAAQ;AACnC,mBAAS,MAAM,SAAS,IAAI,QAAQ,KAAK,KAAK;AAAA,QAChD,CAAC;AACD,YAAI,SAAS,SAAS,KAAK;AACzB,cAAI,CAAC,QAAQ,KAAK,GAAG;AACnB,oBAAQ,WAAW,2BAA2B,GAAG;AACjD;AAAA,UACF;AAEA,gBAAM,WAAW,QAAQ,IAAI;AAE7B,cACE,SAAS,IAAI;AAAA,YACX;AAAA,UACF,KACA,UAAU,SAAS,6CAA6C,GAChE;AACA,yBAAa,IAAI,UAAU,SAAS,GAAG,GAAG,UAAU,QAAQ,CAAC;AAC7D,yBAAa,QAAQ,CAAC,OAAO,QAAQ;AACnC,uBAAS,MAAM,SAAS,IAAI,QAAQ,KAAK,KAAK;AAAA,YAChD,CAAC;AAAA,UACH;AAEA,cAAI,aAAa,SAAS,KAAK;AAC7B,oBAAQ,IAAI,cAAc,QAAQ,GAAG;AACrC,oBAAQ,IAAI,cAAc,SAAS,GAAG,GAAG;AACzC,kBAAM,IAAI,MAAM,kCAAkC;AAAA,UACpD;AAAA,QACF,OAAO;AACL,gBAAM,SAAS,GAAG;AAClB,gBAAM,QAAQ,QAAQ;AAAA,QACxB;AACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,QAA4B,WAAW,2BAA2B,GAAG;AAEzE,WAAO;AAAA,MACL,MAAM,CAAC,QAAQ;AACb,gBAAQ,KAAK,GAAG;AAAA,MAClB;AAAA,MACA,YAAY,MAAM;AAChB,qBAAa,KAAK;AAClB,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;;;AC7GO,IAAM,mBAAmB,CAC9B,YACA,UACoB;AACpB,MAAI,SAAS;AACb,MAAI;AACJ,MAAI,WAAW;AACf,QAAM,cAAc,MAAM;AACxB,gBAAW,oBAAI,KAAK,GAAE,YAAY;AAClC,YAAQ,WAAW,aAAa,CAAC;AAAA,EACnC;AAEA,SAAO,CAAC,UAAU;AAChB,UAAM,WAAW;AAEjB,gBAAY;AAEZ,UAAM,SAAS,MAAM,CAAC,QAAQ;AAC5B,iBAAW,GAAG,QAAQ,IAAI,QAAQ,IAAI,EAAE,IAAI,GAAG,EAAE;AACjD,YAAM,GAAG;AAAA,IACX,CAAC;AAED,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC,QAAQ;AACb,mBAAW,GAAG,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE;AAClD,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,MACA,aAAa;AACX,qBAAa,KAAK;AAClB,eAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/dist/index.mjs CHANGED
@@ -66,6 +66,12 @@ var rawLogsToLogs = (rawLogs) => {
66
66
  }
67
67
  return result;
68
68
  };
69
+ var extractTx = (msg) => {
70
+ const startTxt = 'TaggedTransactionQueue_validate_transaction","';
71
+ const start = msg.lastIndexOf(startTxt) + startTxt.length + 4;
72
+ const end = msg.indexOf(`"`, start + 1);
73
+ return msg.substring(start, end - 64);
74
+ };
69
75
  var logsProvider = (rawLogs) => {
70
76
  let nextClientId = 1;
71
77
  const allLogs = rawLogsToLogs(
@@ -76,21 +82,32 @@ var logsProvider = (rawLogs) => {
76
82
  const logs = allLogs.get(clientId);
77
83
  const pending = new Queue();
78
84
  let idx = 0;
85
+ let transactions = /* @__PURE__ */ new Map();
79
86
  const checkForIncommingMessages = async () => {
80
- if (!pending.peek)
87
+ if (!pending.peek())
81
88
  return;
82
89
  while (idx < logs.length && token !== void 0) {
83
90
  const expected = logs[idx];
91
+ transactions.forEach((value, key) => {
92
+ expected.msg = expected.msg.replace(key, value);
93
+ });
84
94
  if (expected.type === OUT) {
85
95
  if (!pending.peek()) {
86
96
  token = setTimeout(checkForIncommingMessages, 100);
87
97
  break;
88
98
  }
89
99
  const received = pending.pop();
100
+ if (expected.msg.includes(
101
+ "TaggedTransactionQueue_validate_transaction"
102
+ ) && received?.includes("TaggedTransactionQueue_validate_transaction")) {
103
+ transactions.set(extractTx(expected.msg), extractTx(received));
104
+ transactions.forEach((value, key) => {
105
+ expected.msg = expected.msg.replace(key, value);
106
+ });
107
+ }
90
108
  if (received !== expected.msg) {
91
- console.log("recieved: ", received);
92
- console.log(received);
93
- console.log("expected: ", expected.msg);
109
+ console.log(`recieved: "${received}"`);
110
+ console.log(`expected: "${expected.msg}"`);
94
111
  throw new Error("unexpected messaged was received");
95
112
  }
96
113
  } else {
@@ -1 +1 @@
1
- {"version":3,"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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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\nexport const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\n let idx = 0\n\n const checkForIncommingMessages = async () => {\n if (!pending.peek) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n const received = pending.pop()\n if (received !== expected.msg) {\n console.log(\"recieved: \", received)\n console.log(received)\n console.log(\"expected: \", expected.msg)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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 const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\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 = 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(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":"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","names":[]}
package/dist/min/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var I=(t,e,n)=>e in t?a(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var k=(t,e)=>{for(var n in e)a(t,n,{get:e[n],enumerable:!0})},y=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of T(e))!v.call(t,s)&&s!==n&&a(t,s,{get:()=>e[s],enumerable:!(r=x(e,s))||r.enumerable});return t};var $=t=>y(a({},"__esModule",{value:!0}),t);var g=(t,e,n)=>(I(t,typeof e!="symbol"?e+"":e,n),n);var R={};k(R,{logsProvider:()=>N,withLogsRecorder:()=>O});module.exports=$(R);var p=class{constructor(...e){g(this,"first");g(this,"last");e.length!==0&&e.forEach(n=>this.push(n))}push(e){let n={value:e};this.last===void 0?(this.last=n,this.first=this.last):(this.last.next=n,this.last=n)}pop(){let e=this.first?.value;return this.first&&(this.first=this.first.next,this.first||(this.last=void 0)),e}peek(){return this.first?.value}};var f=">>",h="<<";var w=t=>{let e=new Map,n="",r=-1;for(let s=0;s<t.length;s++){let[,d,i,l,u]=t[s].match(/^(\d*)-(.{24})-(.{2})-(.*)$/),o=Number(d);r+=i===n?0:1,n=i;let c=e.get(o)??[];e.set(o,c),c.push({clientId:o,tick:r,type:l,msg:u})}return e},N=t=>{let e=1,n=w(t[t.length-1]?t:t.slice(0,-1));return r=>{let s=e++,d=n.get(s),i=new p,l=0,u=async()=>{if(i.peek)for(;l<d.length&&o!==void 0;){let c=d[l];if(c.type===f){if(!i.peek()){o=setTimeout(u,100);break}let m=i.pop();if(m!==c.msg)throw console.log("recieved: ",m),console.log(m),console.log("expected: ",c.msg),new Error("unexpected messaged was received")}else r(c.msg),await Promise.resolve();l++}},o=setTimeout(u,200);return{send:c=>{i.push(c)},disconnect:()=>{clearTimeout(o),o=void 0}}}};var O=(t,e)=>{let n=1,r,s="",d=()=>{s=new Date().toISOString(),r=setTimeout(d,0)};return i=>{let l=n++;d();let u=e(o=>{t(`${l}-${s}-${h}-${o}`),i(o)});return{...u,send:o=>{t(`${l}-${s}-${f}-${o}`),u.send(o)},disconnect(){clearTimeout(r),u.disconnect()}}}};
1
+ "use strict";var f=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var O=(t,e,n)=>e in t?f(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var w=(t,e)=>{for(var n in e)f(t,n,{get:e[n],enumerable:!0})},b=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $(e))!y.call(t,s)&&s!==n&&f(t,s,{get:()=>e[s],enumerable:!(r=k(e,s))||r.enumerable});return t};var N=t=>b(f({},"__esModule",{value:!0}),t);var T=(t,e,n)=>(O(t,typeof e!="symbol"?e+"":e,n),n);var _={};w(_,{logsProvider:()=>R,withLogsRecorder:()=>P});module.exports=N(_);var g=class{constructor(...e){T(this,"first");T(this,"last");e.length!==0&&e.forEach(n=>this.push(n))}push(e){let n={value:e};this.last===void 0?(this.last=n,this.first=this.last):(this.last.next=n,this.last=n)}pop(){let e=this.first?.value;return this.first&&(this.first=this.first.next,this.first||(this.last=void 0)),e}peek(){return this.first?.value}};var m=">>",x="<<";var Q=t=>{let e=new Map,n="",r=-1;for(let s=0;s<t.length;s++){let[,l,c,u,a]=t[s].match(/^(\d*)-(.{24})-(.{2})-(.*)$/),o=Number(l);r+=c===n?0:1,n=c;let d=e.get(o)??[];e.set(o,d),d.push({clientId:o,tick:r,type:u,msg:a})}return e},v=t=>{let e='TaggedTransactionQueue_validate_transaction","',n=t.lastIndexOf(e)+e.length+4,r=t.indexOf('"',n+1);return t.substring(n,r-64)},R=t=>{let e=1,n=Q(t[t.length-1]?t:t.slice(0,-1));return r=>{let s=e++,l=n.get(s),c=new g,u=0,a=new Map,o=async()=>{if(c.peek())for(;u<l.length&&d!==void 0;){let i=l[u];if(a.forEach((p,h)=>{i.msg=i.msg.replace(h,p)}),i.type===m){if(!c.peek()){d=setTimeout(o,100);break}let p=c.pop();if(i.msg.includes("TaggedTransactionQueue_validate_transaction")&&p?.includes("TaggedTransactionQueue_validate_transaction")&&(a.set(v(i.msg),v(p)),a.forEach((h,I)=>{i.msg=i.msg.replace(I,h)})),p!==i.msg)throw console.log(`recieved: "${p}"`),console.log(`expected: "${i.msg}"`),new Error("unexpected messaged was received")}else r(i.msg),await Promise.resolve();u++}},d=setTimeout(o,200);return{send:i=>{c.push(i)},disconnect:()=>{clearTimeout(d),d=void 0}}}};var P=(t,e)=>{let n=1,r,s="",l=()=>{s=new Date().toISOString(),r=setTimeout(l,0)};return c=>{let u=n++;l();let a=e(o=>{t(`${u}-${s}-${x}-${o}`),c(o)});return{...a,send:o=>{t(`${u}-${s}-${m}-${o}`),a.send(o)},disconnect(){clearTimeout(r),a.disconnect()}}}};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/queue.ts","../../src/types.ts","../../src/logs-provider.ts","../../src/with-logs-recorder.ts"],"sourcesContent":["export * from \"./logs-provider\"\nexport * from \"./with-logs-recorder\"\n","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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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\nexport const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\n let idx = 0\n\n const checkForIncommingMessages = async () => {\n if (!pending.peek) return\n\n while (idx < logs.length && token !== undefined) {\n const expected = logs[idx]\n if (expected.type === OUT) {\n if (!pending.peek()) {\n token = setTimeout(checkForIncommingMessages, 100)\n break\n }\n const received = pending.pop()\n if (received !== expected.msg) {\n console.log(\"recieved: \", received)\n console.log(received)\n console.log(\"expected: \", expected.msg)\n throw new Error(\"unexpected messaged was received\")\n }\n } else {\n onMsg(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":"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","names":["src_exports","__export","logsProvider","withLogsRecorder","__toCommonJS","Queue","vals","__publicField","val","value","nextLast","result","OUT","IN","rawLogsToLogs","rawLogs","result","prevDate","tick","i","clientIdRaw","dateRaw","type","msg","clientId","logs","logsProvider","nextClientId","allLogs","onMsg","pending","Queue","idx","checkForIncommingMessages","token","expected","OUT","received","withLogsRecorder","persistLog","input","nextId","token","tickDate","setTickDate","onMsg","clientId","result","msg","IN","OUT"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/queue.ts","../../src/types.ts","../../src/logs-provider.ts","../../src/with-logs-recorder.ts"],"sourcesContent":["export * from \"./logs-provider\"\nexport * from \"./with-logs-recorder\"\n","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 { JsonRpcProvider } 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 prevDate = \"\"\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 += dateRaw === prevDate ? 0 : 1\n prevDate = dateRaw\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 const logsProvider = (rawLogs: Array<string>): JsonRpcProvider => {\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<string>()\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 = 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(expected.msg)\n await Promise.resolve()\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}-${msg}`)\n onMsg(msg)\n })\n\n return {\n ...result,\n send: (msg) => {\n persistLog(`${clientId}-${tickDate}-${OUT}-${msg}`)\n result.send(msg)\n },\n disconnect() {\n clearTimeout(token)\n result.disconnect()\n },\n }\n }\n}\n"],"mappings":"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","names":["src_exports","__export","logsProvider","withLogsRecorder","__toCommonJS","Queue","vals","__publicField","val","value","nextLast","result","OUT","IN","rawLogsToLogs","rawLogs","result","prevDate","tick","i","clientIdRaw","dateRaw","type","msg","clientId","logs","extractTx","startTxt","start","end","logsProvider","nextClientId","allLogs","onMsg","pending","Queue","idx","transactions","checkForIncommingMessages","token","expected","value","key","OUT","received","withLogsRecorder","persistLog","input","nextId","token","tickDate","setTickDate","onMsg","clientId","result","msg","IN","OUT"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/logs-provider",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "author": "Josep M Sobrepere (https://github.com/josepot)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,9 +40,8 @@
40
40
  "trailingComma": "all"
41
41
  },
42
42
  "dependencies": {
43
- "@substrate/connect": "^0.8.4",
44
- "@polkadot-api/json-rpc-provider-proxy": "0.0.1",
45
- "@polkadot-api/json-rpc-provider": "0.0.1"
43
+ "@polkadot-api/json-rpc-provider": "0.0.1",
44
+ "@polkadot-api/json-rpc-provider-proxy": "0.0.1"
46
45
  },
47
46
  "devDependencies": {
48
47
  "@polkadot-api/json-rpc-provider": "0.0.1"