@milaboratories/pl-client 2.16.26 → 2.16.28

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.
Files changed (212) hide show
  1. package/README.md +2 -1
  2. package/dist/core/PromiseTracker.cjs +1 -3
  3. package/dist/core/PromiseTracker.cjs.map +1 -1
  4. package/dist/core/PromiseTracker.d.ts.map +1 -1
  5. package/dist/core/PromiseTracker.js +1 -3
  6. package/dist/core/PromiseTracker.js.map +1 -1
  7. package/dist/core/StatefulPromise.cjs +4 -4
  8. package/dist/core/StatefulPromise.cjs.map +1 -1
  9. package/dist/core/StatefulPromise.d.ts +1 -1
  10. package/dist/core/StatefulPromise.d.ts.map +1 -1
  11. package/dist/core/StatefulPromise.js +4 -4
  12. package/dist/core/StatefulPromise.js.map +1 -1
  13. package/dist/core/advisory_locks.cjs +1 -1
  14. package/dist/core/advisory_locks.cjs.map +1 -1
  15. package/dist/core/advisory_locks.js +1 -1
  16. package/dist/core/advisory_locks.js.map +1 -1
  17. package/dist/core/auth.cjs.map +1 -1
  18. package/dist/core/auth.d.ts +1 -1
  19. package/dist/core/auth.js.map +1 -1
  20. package/dist/core/cache.d.ts +1 -1
  21. package/dist/core/client.cjs +14 -14
  22. package/dist/core/client.cjs.map +1 -1
  23. package/dist/core/client.d.ts +11 -11
  24. package/dist/core/client.d.ts.map +1 -1
  25. package/dist/core/client.js +14 -14
  26. package/dist/core/client.js.map +1 -1
  27. package/dist/core/config.cjs +39 -39
  28. package/dist/core/config.cjs.map +1 -1
  29. package/dist/core/config.d.ts +5 -5
  30. package/dist/core/config.js +39 -39
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/default_client.cjs +23 -23
  33. package/dist/core/default_client.cjs.map +1 -1
  34. package/dist/core/default_client.d.ts +3 -3
  35. package/dist/core/default_client.js +23 -23
  36. package/dist/core/default_client.js.map +1 -1
  37. package/dist/core/driver.cjs +1 -1
  38. package/dist/core/driver.cjs.map +1 -1
  39. package/dist/core/driver.d.ts +5 -5
  40. package/dist/core/driver.js +1 -1
  41. package/dist/core/driver.js.map +1 -1
  42. package/dist/core/error_resource.cjs +2 -2
  43. package/dist/core/error_resource.cjs.map +1 -1
  44. package/dist/core/error_resource.d.ts +1 -1
  45. package/dist/core/error_resource.js +2 -2
  46. package/dist/core/error_resource.js.map +1 -1
  47. package/dist/core/errors.cjs +24 -24
  48. package/dist/core/errors.cjs.map +1 -1
  49. package/dist/core/errors.d.ts +1 -1
  50. package/dist/core/errors.d.ts.map +1 -1
  51. package/dist/core/errors.js +24 -24
  52. package/dist/core/errors.js.map +1 -1
  53. package/dist/core/final.cjs +43 -43
  54. package/dist/core/final.cjs.map +1 -1
  55. package/dist/core/final.d.ts +3 -3
  56. package/dist/core/final.d.ts.map +1 -1
  57. package/dist/core/final.js +43 -43
  58. package/dist/core/final.js.map +1 -1
  59. package/dist/core/ll_client.cjs +50 -43
  60. package/dist/core/ll_client.cjs.map +1 -1
  61. package/dist/core/ll_client.d.ts +9 -9
  62. package/dist/core/ll_client.d.ts.map +1 -1
  63. package/dist/core/ll_client.js +50 -43
  64. package/dist/core/ll_client.js.map +1 -1
  65. package/dist/core/ll_transaction.cjs +9 -9
  66. package/dist/core/ll_transaction.cjs.map +1 -1
  67. package/dist/core/ll_transaction.d.ts +7 -7
  68. package/dist/core/ll_transaction.d.ts.map +1 -1
  69. package/dist/core/ll_transaction.js +9 -9
  70. package/dist/core/ll_transaction.js.map +1 -1
  71. package/dist/core/stat.cjs.map +1 -1
  72. package/dist/core/stat.d.ts +1 -1
  73. package/dist/core/stat.js.map +1 -1
  74. package/dist/core/transaction.cjs +46 -46
  75. package/dist/core/transaction.cjs.map +1 -1
  76. package/dist/core/transaction.d.ts +7 -7
  77. package/dist/core/transaction.d.ts.map +1 -1
  78. package/dist/core/transaction.js +46 -46
  79. package/dist/core/transaction.js.map +1 -1
  80. package/dist/core/type_conversion.cjs +22 -22
  81. package/dist/core/type_conversion.cjs.map +1 -1
  82. package/dist/core/type_conversion.d.ts +3 -3
  83. package/dist/core/type_conversion.d.ts.map +1 -1
  84. package/dist/core/type_conversion.js +22 -22
  85. package/dist/core/type_conversion.js.map +1 -1
  86. package/dist/core/types.cjs +25 -25
  87. package/dist/core/types.cjs.map +1 -1
  88. package/dist/core/types.d.ts +7 -7
  89. package/dist/core/types.js +25 -25
  90. package/dist/core/types.js.map +1 -1
  91. package/dist/core/unauth_client.cjs +6 -4
  92. package/dist/core/unauth_client.cjs.map +1 -1
  93. package/dist/core/unauth_client.d.ts +4 -4
  94. package/dist/core/unauth_client.d.ts.map +1 -1
  95. package/dist/core/unauth_client.js +6 -4
  96. package/dist/core/unauth_client.js.map +1 -1
  97. package/dist/core/websocket_stream.cjs +22 -20
  98. package/dist/core/websocket_stream.cjs.map +1 -1
  99. package/dist/core/websocket_stream.d.ts +3 -3
  100. package/dist/core/websocket_stream.d.ts.map +1 -1
  101. package/dist/core/websocket_stream.js +22 -20
  102. package/dist/core/websocket_stream.js.map +1 -1
  103. package/dist/core/wire.d.ts +6 -6
  104. package/dist/core/wire.d.ts.map +1 -1
  105. package/dist/helpers/pl.cjs +19 -19
  106. package/dist/helpers/pl.cjs.map +1 -1
  107. package/dist/helpers/pl.d.ts +2 -2
  108. package/dist/helpers/pl.js +19 -19
  109. package/dist/helpers/pl.js.map +1 -1
  110. package/dist/helpers/poll.cjs +6 -6
  111. package/dist/helpers/poll.cjs.map +1 -1
  112. package/dist/helpers/poll.d.ts +4 -4
  113. package/dist/helpers/poll.d.ts.map +1 -1
  114. package/dist/helpers/poll.js +6 -6
  115. package/dist/helpers/poll.js.map +1 -1
  116. package/dist/helpers/retry_strategy.cjs +1 -1
  117. package/dist/helpers/retry_strategy.cjs.map +1 -1
  118. package/dist/helpers/retry_strategy.d.ts.map +1 -1
  119. package/dist/helpers/retry_strategy.js +1 -1
  120. package/dist/helpers/retry_strategy.js.map +1 -1
  121. package/dist/helpers/state_helpers.d.ts +2 -2
  122. package/dist/helpers/tx_helpers.cjs +2 -2
  123. package/dist/helpers/tx_helpers.cjs.map +1 -1
  124. package/dist/helpers/tx_helpers.d.ts +2 -2
  125. package/dist/helpers/tx_helpers.d.ts.map +1 -1
  126. package/dist/helpers/tx_helpers.js +2 -2
  127. package/dist/helpers/tx_helpers.js.map +1 -1
  128. package/dist/index.d.ts +16 -16
  129. package/dist/proto-grpc/google/protobuf/struct.d.ts +1 -1
  130. package/dist/proto-grpc/google/protobuf/struct.d.ts.map +1 -1
  131. package/dist/proto-rest/index.cjs +4 -5
  132. package/dist/proto-rest/index.cjs.map +1 -1
  133. package/dist/proto-rest/index.d.ts +4 -4
  134. package/dist/proto-rest/index.d.ts.map +1 -1
  135. package/dist/proto-rest/index.js +4 -5
  136. package/dist/proto-rest/index.js.map +1 -1
  137. package/dist/proto-rest/plapi.d.ts.map +1 -1
  138. package/dist/test/tcp-proxy.cjs +11 -10
  139. package/dist/test/tcp-proxy.cjs.map +1 -1
  140. package/dist/test/tcp-proxy.d.ts +1 -1
  141. package/dist/test/tcp-proxy.d.ts.map +1 -1
  142. package/dist/test/tcp-proxy.js +11 -10
  143. package/dist/test/tcp-proxy.js.map +1 -1
  144. package/dist/test/test_config.cjs +21 -17
  145. package/dist/test/test_config.cjs.map +1 -1
  146. package/dist/test/test_config.d.ts +6 -6
  147. package/dist/test/test_config.d.ts.map +1 -1
  148. package/dist/test/test_config.js +21 -17
  149. package/dist/test/test_config.js.map +1 -1
  150. package/dist/util/pl.cjs +1 -1
  151. package/dist/util/pl.cjs.map +1 -1
  152. package/dist/util/pl.js +1 -1
  153. package/dist/util/pl.js.map +1 -1
  154. package/dist/util/util.cjs +1 -1
  155. package/dist/util/util.cjs.map +1 -1
  156. package/dist/util/util.js +1 -1
  157. package/dist/util/util.js.map +1 -1
  158. package/package.json +23 -23
  159. package/src/core/PromiseTracker.ts +3 -4
  160. package/src/core/StatefulPromise.ts +17 -8
  161. package/src/core/abstract_stream.ts +3 -4
  162. package/src/core/advisory_locks.ts +1 -1
  163. package/src/core/auth.ts +2 -2
  164. package/src/core/cache.ts +1 -1
  165. package/src/core/client.test.ts +25 -21
  166. package/src/core/client.ts +54 -45
  167. package/src/core/config.test.ts +44 -44
  168. package/src/core/config.ts +49 -49
  169. package/src/core/connectivity.test.ts +69 -63
  170. package/src/core/default_client.ts +46 -46
  171. package/src/core/driver.ts +6 -6
  172. package/src/core/error.test.ts +5 -5
  173. package/src/core/error_resource.ts +3 -3
  174. package/src/core/errors.ts +39 -31
  175. package/src/core/final.ts +48 -55
  176. package/src/core/ll_client.test.ts +53 -36
  177. package/src/core/ll_client.ts +125 -81
  178. package/src/core/ll_transaction.test.ts +75 -49
  179. package/src/core/ll_transaction.ts +37 -35
  180. package/src/core/stat.ts +1 -1
  181. package/src/core/transaction.test.ts +65 -65
  182. package/src/core/transaction.ts +91 -84
  183. package/src/core/type_conversion.ts +30 -31
  184. package/src/core/types.test.ts +6 -6
  185. package/src/core/types.ts +35 -35
  186. package/src/core/unauth_client.test.ts +18 -14
  187. package/src/core/unauth_client.ts +14 -12
  188. package/src/core/websocket_stream.test.ts +52 -52
  189. package/src/core/websocket_stream.ts +41 -37
  190. package/src/core/wire.ts +10 -8
  191. package/src/helpers/pl.ts +22 -22
  192. package/src/helpers/poll.ts +13 -27
  193. package/src/helpers/retry_strategy.ts +2 -4
  194. package/src/helpers/rich_resource_types.test.ts +2 -2
  195. package/src/helpers/state_helpers.ts +3 -3
  196. package/src/helpers/tx_helpers.ts +9 -7
  197. package/src/index.ts +16 -16
  198. package/src/proto-grpc/google/protobuf/struct.ts +1 -1
  199. package/src/proto-rest/index.ts +17 -18
  200. package/src/proto-rest/plapi.ts +1472 -1472
  201. package/src/test/tcp-proxy.ts +55 -54
  202. package/src/test/test_config.test.ts +3 -3
  203. package/src/test/test_config.ts +51 -46
  204. package/src/util/pl.ts +1 -1
  205. package/src/util/util.test.ts +5 -5
  206. package/src/util/util.ts +1 -1
  207. package/dist/helpers/rich_resource_types.d.ts +0 -2
  208. package/dist/helpers/rich_resource_types.d.ts.map +0 -1
  209. package/dist/helpers/smart_accessors.d.ts +0 -2
  210. package/dist/helpers/smart_accessors.d.ts.map +0 -1
  211. package/src/helpers/rich_resource_types.ts +0 -84
  212. package/src/helpers/smart_accessors.ts +0 -146
@@ -1,19 +1,19 @@
1
- import type { GrpcTransport } from '@protobuf-ts/grpc-transport';
2
- import type { Dispatcher } from 'undici';
3
- import type { PlClientConfig } from './config';
4
- import type { Middleware } from 'openapi-fetch';
1
+ import type { GrpcTransport } from "@protobuf-ts/grpc-transport";
2
+ import type { Dispatcher } from "undici";
3
+ import type { PlClientConfig } from "./config";
4
+ import type { Middleware } from "openapi-fetch";
5
5
  /**
6
6
  * Options for the HTTP client to properly reach the PL server API when
7
7
  * it works in WebSocket + REST mode.
8
8
  */
9
9
  export type RestConnection = {
10
- type: 'rest';
10
+ type: "rest";
11
11
  Config: PlClientConfig;
12
12
  Dispatcher: Dispatcher;
13
13
  Middlewares: Middleware[];
14
14
  };
15
15
  export type GrpcConnection = {
16
- type: 'grpc';
16
+ type: "grpc";
17
17
  Transport: GrpcTransport;
18
18
  };
19
19
  export type WireConnection = RestConnection | GrpcConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/core/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,cAAc,CAAC;AAI7D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,MAAM;IACxC,GAAG,IAAI,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACxH"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/core/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,cAAc,CAAC;AAI7D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,MAAM;IACxC,GAAG,IAAI,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wBAAwB,CAAC,MAAM,EAC7B,iBAAiB,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,GACvD,kBAAkB,CAAC,MAAM,CAAC,CAAC;CAC/B"}
@@ -13,19 +13,19 @@ var transaction = require('../core/transaction.cjs');
13
13
  function rt(name, version) {
14
14
  return { name, version };
15
15
  }
16
- const ClientRoot = rt('ClientRoot', '1');
17
- const StructTestResource = rt('StructTest', '1');
18
- const ValueTestResource = rt('ValueTest', '1');
19
- const JsonString = rt('json/string', '1');
20
- const JsonBool = rt('json/bool', '1');
21
- const JsonObject = rt('json/object', '1');
22
- const JsonGzObject = rt('json-gz/object', '1');
23
- const JsonArray = rt('json/array', '1');
24
- const JsonNumber = rt('json/number', '1');
25
- const JsonNull = rt('json/null', '1');
26
- const RNull = rt('Null', '1');
27
- const EphStdMap = rt('EphStdMap', '1');
28
- const StdMap = rt('StdMap', '1');
16
+ const ClientRoot = rt("ClientRoot", "1");
17
+ const StructTestResource = rt("StructTest", "1");
18
+ const ValueTestResource = rt("ValueTest", "1");
19
+ const JsonString = rt("json/string", "1");
20
+ const JsonBool = rt("json/bool", "1");
21
+ const JsonObject = rt("json/object", "1");
22
+ const JsonGzObject = rt("json-gz/object", "1");
23
+ const JsonArray = rt("json/array", "1");
24
+ const JsonNumber = rt("json/number", "1");
25
+ const JsonNull = rt("json/null", "1");
26
+ const RNull = rt("Null", "1");
27
+ const EphStdMap = rt("EphStdMap", "1");
28
+ const StdMap = rt("StdMap", "1");
29
29
  //
30
30
  // Standard value resources
31
31
  //
@@ -60,11 +60,11 @@ function createPlMap(tx, entries, ephemeral, type) {
60
60
  const actualType = type ?? (ephemeral ? EphStdMap : StdMap);
61
61
  const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);
62
62
  for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))
63
- tx.createField(transaction.field(rId, name), 'Input', value);
63
+ tx.createField(transaction.field(rId, name), "Input", value);
64
64
  tx.lock(rId);
65
65
  return rId;
66
66
  }
67
- function futureRecord(tx, rId, keys, fieldType, prefix = '') {
67
+ function futureRecord(tx, rId, keys, fieldType, prefix = "") {
68
68
  return Object.fromEntries(keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))));
69
69
  }
70
70
  //
@@ -73,23 +73,23 @@ function futureRecord(tx, rId, keys, fieldType, prefix = '') {
73
73
  /** Name of the field in block holder, that references the actual block-pack. */
74
74
  const Holder = StdMap;
75
75
  const EphHolder = EphStdMap;
76
- const HolderRefField = 'ref';
76
+ const HolderRefField = "ref";
77
77
  function wrapInHolder(tx, ref) {
78
78
  const holder = tx.createStruct(Holder);
79
79
  const mainHolderField = transaction.field(holder, HolderRefField);
80
- tx.createField(mainHolderField, 'Input', ref);
80
+ tx.createField(mainHolderField, "Input", ref);
81
81
  tx.lock(holder);
82
82
  return holder;
83
83
  }
84
84
  function wrapInEphHolder(tx, ref) {
85
85
  const holder = tx.createEphemeral(EphHolder);
86
86
  const mainHolderField = transaction.field(holder, HolderRefField);
87
- tx.createField(mainHolderField, 'Input', ref);
87
+ tx.createField(mainHolderField, "Input", ref);
88
88
  tx.lock(holder);
89
89
  return holder;
90
90
  }
91
91
  function unwrapHolder(tx, ref) {
92
- return tx.getFutureFieldValue(ref, HolderRefField, 'Input');
92
+ return tx.getFutureFieldValue(ref, HolderRefField, "Input");
93
93
  }
94
94
 
95
95
  exports.ClientRoot = ClientRoot;
@@ -1 +1 @@
1
- {"version":3,"file":"pl.cjs","sources":["../../src/helpers/pl.ts"],"sourcesContent":["/**\n * @packageDocumentation\n *\n * This file is exported under Pl \"namespace\" to the client users.\n *\n * It defines well known pl types, and methods to manipulate them.\n *\n */\n\nimport type { FutureFieldType, ResourceType } from '../core/types';\nimport type { AnyRef, FieldRef, PlTransaction, ResourceRef } from '../core/transaction';\nimport { field } from '../core/transaction';\n\nfunction rt(name: string, version: string): ResourceType {\n return { name, version };\n}\n\nexport const ClientRoot = rt('ClientRoot', '1');\n\nexport const StructTestResource = rt('StructTest', '1');\nexport const ValueTestResource = rt('ValueTest', '1');\n\nexport const JsonString = rt('json/string', '1');\nexport const JsonBool = rt('json/bool', '1');\nexport const JsonObject = rt('json/object', '1');\nexport const JsonGzObject = rt('json-gz/object', '1');\nexport const JsonArray = rt('json/array', '1');\nexport const JsonNumber = rt('json/number', '1');\nexport const JsonNull = rt('json/null', '1');\n\nexport const RNull = rt('Null', '1');\n\nexport const EphStdMap: ResourceType = rt('EphStdMap', '1');\nexport const StdMap: ResourceType = rt('StdMap', '1');\n\n//\n// Standard value resources\n//\n\nexport function createPlNull(tx: PlTransaction): ResourceRef {\n return tx.createValue(JsonNull, Buffer.from(JSON.stringify(null)));\n}\n\nexport function createPlBool(tx: PlTransaction, val: boolean): ResourceRef {\n return tx.createValue(JsonBool, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlNumber(tx: PlTransaction, val: number): ResourceRef {\n return tx.createValue(JsonNumber, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlString(tx: PlTransaction, val: string): ResourceRef {\n return tx.createValue(JsonString, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlArray(tx: PlTransaction, val: any[]): ResourceRef {\n return tx.createValue(JsonArray, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlObject(tx: PlTransaction, val: object): ResourceRef {\n return tx.createValue(JsonObject, Buffer.from(JSON.stringify(val)));\n}\n\n//\n// Pl Map\n//\n\nexport type PlRecordEntry<Key extends string = string, Ref extends AnyRef = AnyRef> = [Key, Ref];\n\nexport type PlRecord<Key extends string = string, Ref extends AnyRef = AnyRef> = Record<Key, Ref>;\n\nexport function plEntry<Key extends string = string, Ref extends AnyRef = AnyRef>(\n key: Key,\n ref: Ref,\n): PlRecordEntry<Key, Ref> {\n return [key, ref];\n}\n\nexport function plEntries<Key extends string = string, Ref extends AnyRef = AnyRef>(\n record: PlRecord<Key, Ref>,\n fields?: Key[],\n): PlRecordEntry<Key, Ref>[] {\n return fields === undefined\n ? (Object.entries(record) as PlRecordEntry<Key, Ref>[])\n : fields.map((key) => plEntry(key, record[key]));\n}\n\n/** Helper method to build standard pl map from a set of entries */\nexport function createPlMap(\n tx: PlTransaction,\n entries: PlRecordEntry[] | PlRecord,\n ephemeral: boolean,\n type?: ResourceType,\n): ResourceRef {\n const actualType = type ?? (ephemeral ? EphStdMap : StdMap);\n const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);\n\n for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))\n tx.createField(field(rId, name), 'Input', value);\n\n tx.lock(rId);\n\n return rId;\n}\n\nexport function futureRecord<Key extends string>(\n tx: PlTransaction,\n rId: AnyRef,\n keys: Key[],\n fieldType: FutureFieldType,\n prefix: string = '',\n): PlRecord<Key, FieldRef> {\n return Object.fromEntries(\n keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))),\n ) as PlRecord<Key, FieldRef>;\n}\n\n//\n// Holder\n//\n\n/** Name of the field in block holder, that references the actual block-pack. */\nexport const Holder = StdMap;\nexport const EphHolder = EphStdMap;\nexport const HolderRefField = 'ref';\n\nexport function wrapInHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createStruct(Holder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, 'Input', ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function wrapInEphHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createEphemeral(EphHolder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, 'Input', ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function unwrapHolder(tx: PlTransaction, ref: AnyRef): FieldRef {\n return tx.getFutureFieldValue(ref, HolderRefField, 'Input');\n}\n"],"names":["field"],"mappings":"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"}
1
+ {"version":3,"file":"pl.cjs","sources":["../../src/helpers/pl.ts"],"sourcesContent":["/**\n * @packageDocumentation\n *\n * This file is exported under Pl \"namespace\" to the client users.\n *\n * It defines well known pl types, and methods to manipulate them.\n *\n */\n\nimport type { FutureFieldType, ResourceType } from \"../core/types\";\nimport type { AnyRef, FieldRef, PlTransaction, ResourceRef } from \"../core/transaction\";\nimport { field } from \"../core/transaction\";\n\nfunction rt(name: string, version: string): ResourceType {\n return { name, version };\n}\n\nexport const ClientRoot = rt(\"ClientRoot\", \"1\");\n\nexport const StructTestResource = rt(\"StructTest\", \"1\");\nexport const ValueTestResource = rt(\"ValueTest\", \"1\");\n\nexport const JsonString = rt(\"json/string\", \"1\");\nexport const JsonBool = rt(\"json/bool\", \"1\");\nexport const JsonObject = rt(\"json/object\", \"1\");\nexport const JsonGzObject = rt(\"json-gz/object\", \"1\");\nexport const JsonArray = rt(\"json/array\", \"1\");\nexport const JsonNumber = rt(\"json/number\", \"1\");\nexport const JsonNull = rt(\"json/null\", \"1\");\n\nexport const RNull = rt(\"Null\", \"1\");\n\nexport const EphStdMap: ResourceType = rt(\"EphStdMap\", \"1\");\nexport const StdMap: ResourceType = rt(\"StdMap\", \"1\");\n\n//\n// Standard value resources\n//\n\nexport function createPlNull(tx: PlTransaction): ResourceRef {\n return tx.createValue(JsonNull, Buffer.from(JSON.stringify(null)));\n}\n\nexport function createPlBool(tx: PlTransaction, val: boolean): ResourceRef {\n return tx.createValue(JsonBool, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlNumber(tx: PlTransaction, val: number): ResourceRef {\n return tx.createValue(JsonNumber, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlString(tx: PlTransaction, val: string): ResourceRef {\n return tx.createValue(JsonString, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlArray(tx: PlTransaction, val: any[]): ResourceRef {\n return tx.createValue(JsonArray, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlObject(tx: PlTransaction, val: object): ResourceRef {\n return tx.createValue(JsonObject, Buffer.from(JSON.stringify(val)));\n}\n\n//\n// Pl Map\n//\n\nexport type PlRecordEntry<Key extends string = string, Ref extends AnyRef = AnyRef> = [Key, Ref];\n\nexport type PlRecord<Key extends string = string, Ref extends AnyRef = AnyRef> = Record<Key, Ref>;\n\nexport function plEntry<Key extends string = string, Ref extends AnyRef = AnyRef>(\n key: Key,\n ref: Ref,\n): PlRecordEntry<Key, Ref> {\n return [key, ref];\n}\n\nexport function plEntries<Key extends string = string, Ref extends AnyRef = AnyRef>(\n record: PlRecord<Key, Ref>,\n fields?: Key[],\n): PlRecordEntry<Key, Ref>[] {\n return fields === undefined\n ? (Object.entries(record) as PlRecordEntry<Key, Ref>[])\n : fields.map((key) => plEntry(key, record[key]));\n}\n\n/** Helper method to build standard pl map from a set of entries */\nexport function createPlMap(\n tx: PlTransaction,\n entries: PlRecordEntry[] | PlRecord,\n ephemeral: boolean,\n type?: ResourceType,\n): ResourceRef {\n const actualType = type ?? (ephemeral ? EphStdMap : StdMap);\n const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);\n\n for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))\n tx.createField(field(rId, name), \"Input\", value);\n\n tx.lock(rId);\n\n return rId;\n}\n\nexport function futureRecord<Key extends string>(\n tx: PlTransaction,\n rId: AnyRef,\n keys: Key[],\n fieldType: FutureFieldType,\n prefix: string = \"\",\n): PlRecord<Key, FieldRef> {\n return Object.fromEntries(\n keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))),\n ) as PlRecord<Key, FieldRef>;\n}\n\n//\n// Holder\n//\n\n/** Name of the field in block holder, that references the actual block-pack. */\nexport const Holder = StdMap;\nexport const EphHolder = EphStdMap;\nexport const HolderRefField = \"ref\";\n\nexport function wrapInHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createStruct(Holder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, \"Input\", ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function wrapInEphHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createEphemeral(EphHolder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, \"Input\", ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function unwrapHolder(tx: PlTransaction, ref: AnyRef): FieldRef {\n return tx.getFutureFieldValue(ref, HolderRefField, \"Input\");\n}\n"],"names":["field"],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  * It defines well known pl types, and methods to manipulate them.
7
7
  *
8
8
  */
9
- import type { FutureFieldType, ResourceType } from '../core/types';
10
- import type { AnyRef, FieldRef, PlTransaction, ResourceRef } from '../core/transaction';
9
+ import type { FutureFieldType, ResourceType } from "../core/types";
10
+ import type { AnyRef, FieldRef, PlTransaction, ResourceRef } from "../core/transaction";
11
11
  export declare const ClientRoot: ResourceType;
12
12
  export declare const StructTestResource: ResourceType;
13
13
  export declare const ValueTestResource: ResourceType;
@@ -11,19 +11,19 @@ import { field } from '../core/transaction.js';
11
11
  function rt(name, version) {
12
12
  return { name, version };
13
13
  }
14
- const ClientRoot = rt('ClientRoot', '1');
15
- const StructTestResource = rt('StructTest', '1');
16
- const ValueTestResource = rt('ValueTest', '1');
17
- const JsonString = rt('json/string', '1');
18
- const JsonBool = rt('json/bool', '1');
19
- const JsonObject = rt('json/object', '1');
20
- const JsonGzObject = rt('json-gz/object', '1');
21
- const JsonArray = rt('json/array', '1');
22
- const JsonNumber = rt('json/number', '1');
23
- const JsonNull = rt('json/null', '1');
24
- const RNull = rt('Null', '1');
25
- const EphStdMap = rt('EphStdMap', '1');
26
- const StdMap = rt('StdMap', '1');
14
+ const ClientRoot = rt("ClientRoot", "1");
15
+ const StructTestResource = rt("StructTest", "1");
16
+ const ValueTestResource = rt("ValueTest", "1");
17
+ const JsonString = rt("json/string", "1");
18
+ const JsonBool = rt("json/bool", "1");
19
+ const JsonObject = rt("json/object", "1");
20
+ const JsonGzObject = rt("json-gz/object", "1");
21
+ const JsonArray = rt("json/array", "1");
22
+ const JsonNumber = rt("json/number", "1");
23
+ const JsonNull = rt("json/null", "1");
24
+ const RNull = rt("Null", "1");
25
+ const EphStdMap = rt("EphStdMap", "1");
26
+ const StdMap = rt("StdMap", "1");
27
27
  //
28
28
  // Standard value resources
29
29
  //
@@ -58,11 +58,11 @@ function createPlMap(tx, entries, ephemeral, type) {
58
58
  const actualType = type ?? (ephemeral ? EphStdMap : StdMap);
59
59
  const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);
60
60
  for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))
61
- tx.createField(field(rId, name), 'Input', value);
61
+ tx.createField(field(rId, name), "Input", value);
62
62
  tx.lock(rId);
63
63
  return rId;
64
64
  }
65
- function futureRecord(tx, rId, keys, fieldType, prefix = '') {
65
+ function futureRecord(tx, rId, keys, fieldType, prefix = "") {
66
66
  return Object.fromEntries(keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))));
67
67
  }
68
68
  //
@@ -71,23 +71,23 @@ function futureRecord(tx, rId, keys, fieldType, prefix = '') {
71
71
  /** Name of the field in block holder, that references the actual block-pack. */
72
72
  const Holder = StdMap;
73
73
  const EphHolder = EphStdMap;
74
- const HolderRefField = 'ref';
74
+ const HolderRefField = "ref";
75
75
  function wrapInHolder(tx, ref) {
76
76
  const holder = tx.createStruct(Holder);
77
77
  const mainHolderField = field(holder, HolderRefField);
78
- tx.createField(mainHolderField, 'Input', ref);
78
+ tx.createField(mainHolderField, "Input", ref);
79
79
  tx.lock(holder);
80
80
  return holder;
81
81
  }
82
82
  function wrapInEphHolder(tx, ref) {
83
83
  const holder = tx.createEphemeral(EphHolder);
84
84
  const mainHolderField = field(holder, HolderRefField);
85
- tx.createField(mainHolderField, 'Input', ref);
85
+ tx.createField(mainHolderField, "Input", ref);
86
86
  tx.lock(holder);
87
87
  return holder;
88
88
  }
89
89
  function unwrapHolder(tx, ref) {
90
- return tx.getFutureFieldValue(ref, HolderRefField, 'Input');
90
+ return tx.getFutureFieldValue(ref, HolderRefField, "Input");
91
91
  }
92
92
 
93
93
  export { ClientRoot, EphHolder, EphStdMap, Holder, HolderRefField, JsonArray, JsonBool, JsonGzObject, JsonNull, JsonNumber, JsonObject, JsonString, RNull, StdMap, StructTestResource, ValueTestResource, createPlArray, createPlBool, createPlMap, createPlNull, createPlNumber, createPlObject, createPlString, futureRecord, plEntries, plEntry, unwrapHolder, wrapInEphHolder, wrapInHolder };
@@ -1 +1 @@
1
- {"version":3,"file":"pl.js","sources":["../../src/helpers/pl.ts"],"sourcesContent":["/**\n * @packageDocumentation\n *\n * This file is exported under Pl \"namespace\" to the client users.\n *\n * It defines well known pl types, and methods to manipulate them.\n *\n */\n\nimport type { FutureFieldType, ResourceType } from '../core/types';\nimport type { AnyRef, FieldRef, PlTransaction, ResourceRef } from '../core/transaction';\nimport { field } from '../core/transaction';\n\nfunction rt(name: string, version: string): ResourceType {\n return { name, version };\n}\n\nexport const ClientRoot = rt('ClientRoot', '1');\n\nexport const StructTestResource = rt('StructTest', '1');\nexport const ValueTestResource = rt('ValueTest', '1');\n\nexport const JsonString = rt('json/string', '1');\nexport const JsonBool = rt('json/bool', '1');\nexport const JsonObject = rt('json/object', '1');\nexport const JsonGzObject = rt('json-gz/object', '1');\nexport const JsonArray = rt('json/array', '1');\nexport const JsonNumber = rt('json/number', '1');\nexport const JsonNull = rt('json/null', '1');\n\nexport const RNull = rt('Null', '1');\n\nexport const EphStdMap: ResourceType = rt('EphStdMap', '1');\nexport const StdMap: ResourceType = rt('StdMap', '1');\n\n//\n// Standard value resources\n//\n\nexport function createPlNull(tx: PlTransaction): ResourceRef {\n return tx.createValue(JsonNull, Buffer.from(JSON.stringify(null)));\n}\n\nexport function createPlBool(tx: PlTransaction, val: boolean): ResourceRef {\n return tx.createValue(JsonBool, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlNumber(tx: PlTransaction, val: number): ResourceRef {\n return tx.createValue(JsonNumber, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlString(tx: PlTransaction, val: string): ResourceRef {\n return tx.createValue(JsonString, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlArray(tx: PlTransaction, val: any[]): ResourceRef {\n return tx.createValue(JsonArray, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlObject(tx: PlTransaction, val: object): ResourceRef {\n return tx.createValue(JsonObject, Buffer.from(JSON.stringify(val)));\n}\n\n//\n// Pl Map\n//\n\nexport type PlRecordEntry<Key extends string = string, Ref extends AnyRef = AnyRef> = [Key, Ref];\n\nexport type PlRecord<Key extends string = string, Ref extends AnyRef = AnyRef> = Record<Key, Ref>;\n\nexport function plEntry<Key extends string = string, Ref extends AnyRef = AnyRef>(\n key: Key,\n ref: Ref,\n): PlRecordEntry<Key, Ref> {\n return [key, ref];\n}\n\nexport function plEntries<Key extends string = string, Ref extends AnyRef = AnyRef>(\n record: PlRecord<Key, Ref>,\n fields?: Key[],\n): PlRecordEntry<Key, Ref>[] {\n return fields === undefined\n ? (Object.entries(record) as PlRecordEntry<Key, Ref>[])\n : fields.map((key) => plEntry(key, record[key]));\n}\n\n/** Helper method to build standard pl map from a set of entries */\nexport function createPlMap(\n tx: PlTransaction,\n entries: PlRecordEntry[] | PlRecord,\n ephemeral: boolean,\n type?: ResourceType,\n): ResourceRef {\n const actualType = type ?? (ephemeral ? EphStdMap : StdMap);\n const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);\n\n for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))\n tx.createField(field(rId, name), 'Input', value);\n\n tx.lock(rId);\n\n return rId;\n}\n\nexport function futureRecord<Key extends string>(\n tx: PlTransaction,\n rId: AnyRef,\n keys: Key[],\n fieldType: FutureFieldType,\n prefix: string = '',\n): PlRecord<Key, FieldRef> {\n return Object.fromEntries(\n keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))),\n ) as PlRecord<Key, FieldRef>;\n}\n\n//\n// Holder\n//\n\n/** Name of the field in block holder, that references the actual block-pack. */\nexport const Holder = StdMap;\nexport const EphHolder = EphStdMap;\nexport const HolderRefField = 'ref';\n\nexport function wrapInHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createStruct(Holder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, 'Input', ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function wrapInEphHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createEphemeral(EphHolder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, 'Input', ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function unwrapHolder(tx: PlTransaction, ref: AnyRef): FieldRef {\n return tx.getFutureFieldValue(ref, HolderRefField, 'Input');\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pl.js","sources":["../../src/helpers/pl.ts"],"sourcesContent":["/**\n * @packageDocumentation\n *\n * This file is exported under Pl \"namespace\" to the client users.\n *\n * It defines well known pl types, and methods to manipulate them.\n *\n */\n\nimport type { FutureFieldType, ResourceType } from \"../core/types\";\nimport type { AnyRef, FieldRef, PlTransaction, ResourceRef } from \"../core/transaction\";\nimport { field } from \"../core/transaction\";\n\nfunction rt(name: string, version: string): ResourceType {\n return { name, version };\n}\n\nexport const ClientRoot = rt(\"ClientRoot\", \"1\");\n\nexport const StructTestResource = rt(\"StructTest\", \"1\");\nexport const ValueTestResource = rt(\"ValueTest\", \"1\");\n\nexport const JsonString = rt(\"json/string\", \"1\");\nexport const JsonBool = rt(\"json/bool\", \"1\");\nexport const JsonObject = rt(\"json/object\", \"1\");\nexport const JsonGzObject = rt(\"json-gz/object\", \"1\");\nexport const JsonArray = rt(\"json/array\", \"1\");\nexport const JsonNumber = rt(\"json/number\", \"1\");\nexport const JsonNull = rt(\"json/null\", \"1\");\n\nexport const RNull = rt(\"Null\", \"1\");\n\nexport const EphStdMap: ResourceType = rt(\"EphStdMap\", \"1\");\nexport const StdMap: ResourceType = rt(\"StdMap\", \"1\");\n\n//\n// Standard value resources\n//\n\nexport function createPlNull(tx: PlTransaction): ResourceRef {\n return tx.createValue(JsonNull, Buffer.from(JSON.stringify(null)));\n}\n\nexport function createPlBool(tx: PlTransaction, val: boolean): ResourceRef {\n return tx.createValue(JsonBool, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlNumber(tx: PlTransaction, val: number): ResourceRef {\n return tx.createValue(JsonNumber, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlString(tx: PlTransaction, val: string): ResourceRef {\n return tx.createValue(JsonString, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlArray(tx: PlTransaction, val: any[]): ResourceRef {\n return tx.createValue(JsonArray, Buffer.from(JSON.stringify(val)));\n}\n\nexport function createPlObject(tx: PlTransaction, val: object): ResourceRef {\n return tx.createValue(JsonObject, Buffer.from(JSON.stringify(val)));\n}\n\n//\n// Pl Map\n//\n\nexport type PlRecordEntry<Key extends string = string, Ref extends AnyRef = AnyRef> = [Key, Ref];\n\nexport type PlRecord<Key extends string = string, Ref extends AnyRef = AnyRef> = Record<Key, Ref>;\n\nexport function plEntry<Key extends string = string, Ref extends AnyRef = AnyRef>(\n key: Key,\n ref: Ref,\n): PlRecordEntry<Key, Ref> {\n return [key, ref];\n}\n\nexport function plEntries<Key extends string = string, Ref extends AnyRef = AnyRef>(\n record: PlRecord<Key, Ref>,\n fields?: Key[],\n): PlRecordEntry<Key, Ref>[] {\n return fields === undefined\n ? (Object.entries(record) as PlRecordEntry<Key, Ref>[])\n : fields.map((key) => plEntry(key, record[key]));\n}\n\n/** Helper method to build standard pl map from a set of entries */\nexport function createPlMap(\n tx: PlTransaction,\n entries: PlRecordEntry[] | PlRecord,\n ephemeral: boolean,\n type?: ResourceType,\n): ResourceRef {\n const actualType = type ?? (ephemeral ? EphStdMap : StdMap);\n const rId = ephemeral ? tx.createEphemeral(actualType) : tx.createStruct(actualType);\n\n for (const [name, value] of Array.isArray(entries) ? entries : plEntries(entries))\n tx.createField(field(rId, name), \"Input\", value);\n\n tx.lock(rId);\n\n return rId;\n}\n\nexport function futureRecord<Key extends string>(\n tx: PlTransaction,\n rId: AnyRef,\n keys: Key[],\n fieldType: FutureFieldType,\n prefix: string = \"\",\n): PlRecord<Key, FieldRef> {\n return Object.fromEntries(\n keys.map((k) => plEntry(k, tx.getFutureFieldValue(rId, `${prefix}${k}`, fieldType))),\n ) as PlRecord<Key, FieldRef>;\n}\n\n//\n// Holder\n//\n\n/** Name of the field in block holder, that references the actual block-pack. */\nexport const Holder = StdMap;\nexport const EphHolder = EphStdMap;\nexport const HolderRefField = \"ref\";\n\nexport function wrapInHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createStruct(Holder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, \"Input\", ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function wrapInEphHolder(tx: PlTransaction, ref: AnyRef): ResourceRef {\n const holder = tx.createEphemeral(EphHolder);\n const mainHolderField = field(holder, HolderRefField);\n tx.createField(mainHolderField, \"Input\", ref);\n tx.lock(holder);\n return holder;\n}\n\nexport function unwrapHolder(tx: PlTransaction, ref: AnyRef): FieldRef {\n return tx.getFutureFieldValue(ref, HolderRefField, \"Input\");\n}\n"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ var tp__namespace = /*#__PURE__*/_interopNamespaceDefault(tp);
25
25
 
26
26
  /** This error tells state assertion mechanism that required state is not yet ready */
27
27
  class ContinuePolling extends Error {
28
- name = 'ContinuePolling';
28
+ name = "ContinuePolling";
29
29
  }
30
30
  const DefaultPollFieldTraverseOps = {
31
31
  failOnError: true,
@@ -59,8 +59,8 @@ class PollResourceAccessor {
59
59
  throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);
60
60
  return fieldData;
61
61
  }
62
- if (((expectedType === 'Input' || expectedType === 'Service') && this.data.inputsLocked)
63
- || (expectedType === 'Output' && this.data.outputsLocked))
62
+ if (((expectedType === "Input" || expectedType === "Service") && this.data.inputsLocked) ||
63
+ (expectedType === "Output" && this.data.outputsLocked))
64
64
  throw new Error(
65
65
  // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions
66
66
  `Field "${name}" not found. Expected type: ${expectedType}, state: ${this.data}`);
@@ -112,17 +112,17 @@ class PollTxAccessor {
112
112
  async throwError(error, path = []) {
113
113
  const errorRes = await this.get(error);
114
114
  const errorText = Buffer.from(tsHelpers.notEmpty(errorRes.data.data)).toString();
115
- throw new Error(`${path.join(' -> ')} = ${errorText}`);
115
+ throw new Error(`${path.join(" -> ")} = ${errorText}`);
116
116
  }
117
117
  }
118
118
  const DefaultPollingRetryOptions = {
119
- type: 'linearBackoff',
119
+ type: "linearBackoff",
120
120
  jitter: 0,
121
121
  maxAttempts: 100,
122
122
  backoffStep: 10,
123
123
  initialDelay: 10,
124
124
  };
125
- async function poll(cl, cb, retryOptions = DefaultPollingRetryOptions, txName = 'polling') {
125
+ async function poll(cl, cb, retryOptions = DefaultPollingRetryOptions, txName = "polling") {
126
126
  let retryState = tsHelpers.createRetryState(retryOptions);
127
127
  while (true) {
128
128
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"poll.cjs","sources":["../../src/helpers/poll.ts"],"sourcesContent":["import type { PlClient } from '../core/client';\nimport type {\n RetryOptions,\n} from '@milaboratories/ts-helpers';\nimport {\n createRetryState,\n nextRetryStateOrError,\n notEmpty,\n} from '@milaboratories/ts-helpers';\nimport type {\n FieldData,\n FieldType,\n ResourceData,\n ResourceId } from '../core/types';\nimport {\n isNotNullResourceId,\n isNullResourceId,\n resourceIdToString,\n} from '../core/types';\nimport type { PlTransaction } from '../core/transaction';\nimport * as tp from 'node:timers/promises';\n\n/** This error tells state assertion mechanism that required state is not yet ready */\nexport class ContinuePolling extends Error {\n name = 'ContinuePolling';\n}\n\nexport type PollFieldTraverseOps = {\n expectedType?: FieldType;\n /** Fail if error present along with the value, if value not present,\n * but error do, exception will be thrown anyway. */\n failOnError: boolean;\n /** Traverse only if field report its value as final. */\n onlyFinal: boolean;\n};\n\nconst DefaultPollFieldTraverseOps: PollFieldTraverseOps = {\n failOnError: true,\n onlyFinal: false,\n};\n\nexport class PollResourceAccessor {\n constructor(\n public readonly tx: PollTxAccessor,\n public readonly data: ResourceData,\n public readonly path: string[],\n ) {}\n\n public final(): PollResourceAccessor {\n if (!this.data.final) throw new ContinuePolling();\n return this;\n }\n\n public async requireNoError(): Promise<PollResourceAccessor> {\n if (isNullResourceId(this.data.error)) return this;\n await this.tx.throwError(this.data.error, this.path);\n // hmm... https://github.com/microsoft/TypeScript/issues/34955\n return this;\n }\n\n public getFieldData(name: string, expectedType?: FieldType): FieldData {\n const fieldData = this.data.fields.find((f) => f.name === name);\n\n if (fieldData !== undefined) {\n if (expectedType !== undefined && fieldData.type !== expectedType)\n throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);\n return fieldData;\n }\n\n if (\n ((expectedType === 'Input' || expectedType === 'Service') && this.data.inputsLocked)\n || (expectedType === 'Output' && this.data.outputsLocked)\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n `Field \"${name}\" not found. Expected type: ${expectedType}, state: ${this.data}`,\n );\n\n throw new ContinuePolling();\n }\n\n public async get(\n name: string,\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<PollResourceAccessor> {\n const { expectedType, failOnError } = { ...DefaultPollFieldTraverseOps, ...ops };\n const path = [...this.path, name];\n\n const fieldData = this.getFieldData(name, expectedType);\n if (isNotNullResourceId(fieldData.error) && (failOnError || isNullResourceId(fieldData.value)))\n await this.tx.throwError(fieldData.error, path);\n\n if (isNullResourceId(fieldData.value)) throw new ContinuePolling();\n\n return await this.tx.get(fieldData.value, failOnError, path);\n }\n\n public async getMulti(\n ops: Partial<PollFieldTraverseOps>,\n ...names: string[]\n ): Promise<PollResourceAccessor[]> {\n return await Promise.all(names.map((name) => this.get(name, ops)));\n }\n\n public async getMultiObj<Key extends string>(\n ops: Partial<PollFieldTraverseOps>,\n ...names: Key[]\n ): Promise<Record<Key, PollResourceAccessor>> {\n return Object.fromEntries(\n await Promise.all(names.map(async (name) => [name, await this.get(name, ops)])),\n );\n }\n\n public async getAllFinal(\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<Record<string, PollResourceAccessor>> {\n return await this.getMultiObj(\n ops,\n ...this.data.fields\n .filter((f) => f.valueIsFinal || isNotNullResourceId(f.error))\n .map((f) => f.name),\n );\n }\n\n public async getKValue(key: string): Promise<string> {\n const value = await this.tx.tx.getKValueStringIfExists(this.data.id, key);\n if (value === undefined) throw new ContinuePolling();\n return value;\n }\n\n public async getKValueObj<T>(key: string): Promise<T> {\n return JSON.parse(await this.getKValue(key)) as T;\n }\n}\n\nexport class PollTxAccessor {\n constructor(public readonly tx: PlTransaction) {}\n\n public async get(\n rid: ResourceId,\n failOnError: boolean = true,\n path: string[] = [],\n ): Promise<PollResourceAccessor> {\n const data = await this.tx.getResourceData(rid, true);\n const accessor = new PollResourceAccessor(this, data, [...path, resourceIdToString(rid)]);\n if (failOnError) await accessor.requireNoError();\n return accessor;\n }\n\n async throwError(error: ResourceId, path: string[] = []): Promise<never> {\n const errorRes = await this.get(error);\n const errorText = Buffer.from(notEmpty(errorRes.data.data)).toString();\n throw new Error(`${path.join(' -> ')} = ${errorText}`);\n }\n}\n\nexport const DefaultPollingRetryOptions: RetryOptions = {\n type: 'linearBackoff',\n jitter: 0,\n maxAttempts: 100,\n backoffStep: 10,\n initialDelay: 10,\n};\n\nexport async function poll<T>(\n cl: PlClient,\n cb: (tx: PollTxAccessor) => Promise<T>,\n retryOptions: RetryOptions = DefaultPollingRetryOptions,\n txName: string = 'polling',\n): Promise<T> {\n let retryState = createRetryState(retryOptions);\n while (true) {\n try {\n return await cl.withReadTx(txName, async (tx) => {\n return await cb(new PollTxAccessor(tx));\n });\n } catch (e: any) {\n // Rethrowing any error except the \"not ready yet\"\n if (!(e instanceof ContinuePolling)) throw e;\n }\n await tp.setTimeout(retryState.nextDelay);\n retryState = nextRetryStateOrError(retryState);\n }\n}\n"],"names":["isNullResourceId","isNotNullResourceId","resourceIdToString","notEmpty","createRetryState","tp","nextRetryStateOrError"],"mappings":"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"}
1
+ {"version":3,"file":"poll.cjs","sources":["../../src/helpers/poll.ts"],"sourcesContent":["import type { PlClient } from \"../core/client\";\nimport type { RetryOptions } from \"@milaboratories/ts-helpers\";\nimport { createRetryState, nextRetryStateOrError, notEmpty } from \"@milaboratories/ts-helpers\";\nimport type { FieldData, FieldType, ResourceData, ResourceId } from \"../core/types\";\nimport { isNotNullResourceId, isNullResourceId, resourceIdToString } from \"../core/types\";\nimport type { PlTransaction } from \"../core/transaction\";\nimport * as tp from \"node:timers/promises\";\n\n/** This error tells state assertion mechanism that required state is not yet ready */\nexport class ContinuePolling extends Error {\n name = \"ContinuePolling\";\n}\n\nexport type PollFieldTraverseOps = {\n expectedType?: FieldType;\n /** Fail if error present along with the value, if value not present,\n * but error do, exception will be thrown anyway. */\n failOnError: boolean;\n /** Traverse only if field report its value as final. */\n onlyFinal: boolean;\n};\n\nconst DefaultPollFieldTraverseOps: PollFieldTraverseOps = {\n failOnError: true,\n onlyFinal: false,\n};\n\nexport class PollResourceAccessor {\n constructor(\n public readonly tx: PollTxAccessor,\n public readonly data: ResourceData,\n public readonly path: string[],\n ) {}\n\n public final(): PollResourceAccessor {\n if (!this.data.final) throw new ContinuePolling();\n return this;\n }\n\n public async requireNoError(): Promise<PollResourceAccessor> {\n if (isNullResourceId(this.data.error)) return this;\n await this.tx.throwError(this.data.error, this.path);\n // hmm... https://github.com/microsoft/TypeScript/issues/34955\n return this;\n }\n\n public getFieldData(name: string, expectedType?: FieldType): FieldData {\n const fieldData = this.data.fields.find((f) => f.name === name);\n\n if (fieldData !== undefined) {\n if (expectedType !== undefined && fieldData.type !== expectedType)\n throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);\n return fieldData;\n }\n\n if (\n ((expectedType === \"Input\" || expectedType === \"Service\") && this.data.inputsLocked) ||\n (expectedType === \"Output\" && this.data.outputsLocked)\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n `Field \"${name}\" not found. Expected type: ${expectedType}, state: ${this.data}`,\n );\n\n throw new ContinuePolling();\n }\n\n public async get(\n name: string,\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<PollResourceAccessor> {\n const { expectedType, failOnError } = { ...DefaultPollFieldTraverseOps, ...ops };\n const path = [...this.path, name];\n\n const fieldData = this.getFieldData(name, expectedType);\n if (isNotNullResourceId(fieldData.error) && (failOnError || isNullResourceId(fieldData.value)))\n await this.tx.throwError(fieldData.error, path);\n\n if (isNullResourceId(fieldData.value)) throw new ContinuePolling();\n\n return await this.tx.get(fieldData.value, failOnError, path);\n }\n\n public async getMulti(\n ops: Partial<PollFieldTraverseOps>,\n ...names: string[]\n ): Promise<PollResourceAccessor[]> {\n return await Promise.all(names.map((name) => this.get(name, ops)));\n }\n\n public async getMultiObj<Key extends string>(\n ops: Partial<PollFieldTraverseOps>,\n ...names: Key[]\n ): Promise<Record<Key, PollResourceAccessor>> {\n return Object.fromEntries(\n await Promise.all(names.map(async (name) => [name, await this.get(name, ops)])),\n );\n }\n\n public async getAllFinal(\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<Record<string, PollResourceAccessor>> {\n return await this.getMultiObj(\n ops,\n ...this.data.fields\n .filter((f) => f.valueIsFinal || isNotNullResourceId(f.error))\n .map((f) => f.name),\n );\n }\n\n public async getKValue(key: string): Promise<string> {\n const value = await this.tx.tx.getKValueStringIfExists(this.data.id, key);\n if (value === undefined) throw new ContinuePolling();\n return value;\n }\n\n public async getKValueObj<T>(key: string): Promise<T> {\n return JSON.parse(await this.getKValue(key)) as T;\n }\n}\n\nexport class PollTxAccessor {\n constructor(public readonly tx: PlTransaction) {}\n\n public async get(\n rid: ResourceId,\n failOnError: boolean = true,\n path: string[] = [],\n ): Promise<PollResourceAccessor> {\n const data = await this.tx.getResourceData(rid, true);\n const accessor = new PollResourceAccessor(this, data, [...path, resourceIdToString(rid)]);\n if (failOnError) await accessor.requireNoError();\n return accessor;\n }\n\n async throwError(error: ResourceId, path: string[] = []): Promise<never> {\n const errorRes = await this.get(error);\n const errorText = Buffer.from(notEmpty(errorRes.data.data)).toString();\n throw new Error(`${path.join(\" -> \")} = ${errorText}`);\n }\n}\n\nexport const DefaultPollingRetryOptions: RetryOptions = {\n type: \"linearBackoff\",\n jitter: 0,\n maxAttempts: 100,\n backoffStep: 10,\n initialDelay: 10,\n};\n\nexport async function poll<T>(\n cl: PlClient,\n cb: (tx: PollTxAccessor) => Promise<T>,\n retryOptions: RetryOptions = DefaultPollingRetryOptions,\n txName: string = \"polling\",\n): Promise<T> {\n let retryState = createRetryState(retryOptions);\n while (true) {\n try {\n return await cl.withReadTx(txName, async (tx) => {\n return await cb(new PollTxAccessor(tx));\n });\n } catch (e: any) {\n // Rethrowing any error except the \"not ready yet\"\n if (!(e instanceof ContinuePolling)) throw e;\n }\n await tp.setTimeout(retryState.nextDelay);\n retryState = nextRetryStateOrError(retryState);\n }\n}\n"],"names":["isNullResourceId","isNotNullResourceId","resourceIdToString","notEmpty","createRetryState","tp","nextRetryStateOrError"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { PlClient } from '../core/client';
2
- import type { RetryOptions } from '@milaboratories/ts-helpers';
3
- import type { FieldData, FieldType, ResourceData, ResourceId } from '../core/types';
4
- import type { PlTransaction } from '../core/transaction';
1
+ import type { PlClient } from "../core/client";
2
+ import type { RetryOptions } from "@milaboratories/ts-helpers";
3
+ import type { FieldData, FieldType, ResourceData, ResourceId } from "../core/types";
4
+ import type { PlTransaction } from "../core/transaction";
5
5
  /** This error tells state assertion mechanism that required state is not yet ready */
6
6
  export declare class ContinuePolling extends Error {
7
7
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../src/helpers/poll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EAAE,MAAM,eAAe,CAAC;AAMpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,sFAAsF;AACtF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,SAAqB;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;wDACoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAOF,qBAAa,oBAAoB;aAEb,EAAE,EAAE,cAAc;aAClB,IAAI,EAAE,YAAY;aAClB,IAAI,EAAE,MAAM,EAAE;gBAFd,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EAAE;IAGzB,KAAK,IAAI,oBAAoB;IAKvB,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAOrD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS;IAqBzD,GAAG,CACd,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAanB,QAAQ,CACnB,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAClC,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIrB,WAAW,CAAC,GAAG,SAAS,MAAM,EACzC,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAClC,GAAG,KAAK,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAMhC,WAAW,CACtB,GAAG,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACtC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IASnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtD;AAED,qBAAa,cAAc;aACG,EAAE,EAAE,aAAa;gBAAjB,EAAE,EAAE,aAAa;IAEhC,GAAG,CACd,GAAG,EAAE,UAAU,EACf,WAAW,GAAE,OAAc,EAC3B,IAAI,GAAE,MAAM,EAAO,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAO1B,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,KAAK,CAAC;CAKzE;AAED,eAAO,MAAM,0BAA0B,EAAE,YAMxC,CAAC;AAEF,wBAAsB,IAAI,CAAC,CAAC,EAC1B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EACtC,YAAY,GAAE,YAAyC,EACvD,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,CAAC,CAAC,CAcZ"}
1
+ {"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../src/helpers/poll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,sFAAsF;AACtF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,SAAqB;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;wDACoD;IACpD,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAOF,qBAAa,oBAAoB;aAEb,EAAE,EAAE,cAAc;aAClB,IAAI,EAAE,YAAY;aAClB,IAAI,EAAE,MAAM,EAAE;gBAFd,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EAAE;IAGzB,KAAK,IAAI,oBAAoB;IAKvB,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAOrD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS;IAqBzD,GAAG,CACd,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAanB,QAAQ,CACnB,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAClC,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIrB,WAAW,CAAC,GAAG,SAAS,MAAM,EACzC,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAClC,GAAG,KAAK,EAAE,GAAG,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAMhC,WAAW,CACtB,GAAG,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACtC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IASnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtD;AAED,qBAAa,cAAc;aACG,EAAE,EAAE,aAAa;gBAAjB,EAAE,EAAE,aAAa;IAEhC,GAAG,CACd,GAAG,EAAE,UAAU,EACf,WAAW,GAAE,OAAc,EAC3B,IAAI,GAAE,MAAM,EAAO,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAO1B,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,KAAK,CAAC;CAKzE;AAED,eAAO,MAAM,0BAA0B,EAAE,YAMxC,CAAC;AAEF,wBAAsB,IAAI,CAAC,CAAC,EAC1B,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EACtC,YAAY,GAAE,YAAyC,EACvD,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,CAAC,CAAC,CAcZ"}
@@ -4,7 +4,7 @@ import * as tp from 'node:timers/promises';
4
4
 
5
5
  /** This error tells state assertion mechanism that required state is not yet ready */
6
6
  class ContinuePolling extends Error {
7
- name = 'ContinuePolling';
7
+ name = "ContinuePolling";
8
8
  }
9
9
  const DefaultPollFieldTraverseOps = {
10
10
  failOnError: true,
@@ -38,8 +38,8 @@ class PollResourceAccessor {
38
38
  throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);
39
39
  return fieldData;
40
40
  }
41
- if (((expectedType === 'Input' || expectedType === 'Service') && this.data.inputsLocked)
42
- || (expectedType === 'Output' && this.data.outputsLocked))
41
+ if (((expectedType === "Input" || expectedType === "Service") && this.data.inputsLocked) ||
42
+ (expectedType === "Output" && this.data.outputsLocked))
43
43
  throw new Error(
44
44
  // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions
45
45
  `Field "${name}" not found. Expected type: ${expectedType}, state: ${this.data}`);
@@ -91,17 +91,17 @@ class PollTxAccessor {
91
91
  async throwError(error, path = []) {
92
92
  const errorRes = await this.get(error);
93
93
  const errorText = Buffer.from(notEmpty(errorRes.data.data)).toString();
94
- throw new Error(`${path.join(' -> ')} = ${errorText}`);
94
+ throw new Error(`${path.join(" -> ")} = ${errorText}`);
95
95
  }
96
96
  }
97
97
  const DefaultPollingRetryOptions = {
98
- type: 'linearBackoff',
98
+ type: "linearBackoff",
99
99
  jitter: 0,
100
100
  maxAttempts: 100,
101
101
  backoffStep: 10,
102
102
  initialDelay: 10,
103
103
  };
104
- async function poll(cl, cb, retryOptions = DefaultPollingRetryOptions, txName = 'polling') {
104
+ async function poll(cl, cb, retryOptions = DefaultPollingRetryOptions, txName = "polling") {
105
105
  let retryState = createRetryState(retryOptions);
106
106
  while (true) {
107
107
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"poll.js","sources":["../../src/helpers/poll.ts"],"sourcesContent":["import type { PlClient } from '../core/client';\nimport type {\n RetryOptions,\n} from '@milaboratories/ts-helpers';\nimport {\n createRetryState,\n nextRetryStateOrError,\n notEmpty,\n} from '@milaboratories/ts-helpers';\nimport type {\n FieldData,\n FieldType,\n ResourceData,\n ResourceId } from '../core/types';\nimport {\n isNotNullResourceId,\n isNullResourceId,\n resourceIdToString,\n} from '../core/types';\nimport type { PlTransaction } from '../core/transaction';\nimport * as tp from 'node:timers/promises';\n\n/** This error tells state assertion mechanism that required state is not yet ready */\nexport class ContinuePolling extends Error {\n name = 'ContinuePolling';\n}\n\nexport type PollFieldTraverseOps = {\n expectedType?: FieldType;\n /** Fail if error present along with the value, if value not present,\n * but error do, exception will be thrown anyway. */\n failOnError: boolean;\n /** Traverse only if field report its value as final. */\n onlyFinal: boolean;\n};\n\nconst DefaultPollFieldTraverseOps: PollFieldTraverseOps = {\n failOnError: true,\n onlyFinal: false,\n};\n\nexport class PollResourceAccessor {\n constructor(\n public readonly tx: PollTxAccessor,\n public readonly data: ResourceData,\n public readonly path: string[],\n ) {}\n\n public final(): PollResourceAccessor {\n if (!this.data.final) throw new ContinuePolling();\n return this;\n }\n\n public async requireNoError(): Promise<PollResourceAccessor> {\n if (isNullResourceId(this.data.error)) return this;\n await this.tx.throwError(this.data.error, this.path);\n // hmm... https://github.com/microsoft/TypeScript/issues/34955\n return this;\n }\n\n public getFieldData(name: string, expectedType?: FieldType): FieldData {\n const fieldData = this.data.fields.find((f) => f.name === name);\n\n if (fieldData !== undefined) {\n if (expectedType !== undefined && fieldData.type !== expectedType)\n throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);\n return fieldData;\n }\n\n if (\n ((expectedType === 'Input' || expectedType === 'Service') && this.data.inputsLocked)\n || (expectedType === 'Output' && this.data.outputsLocked)\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n `Field \"${name}\" not found. Expected type: ${expectedType}, state: ${this.data}`,\n );\n\n throw new ContinuePolling();\n }\n\n public async get(\n name: string,\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<PollResourceAccessor> {\n const { expectedType, failOnError } = { ...DefaultPollFieldTraverseOps, ...ops };\n const path = [...this.path, name];\n\n const fieldData = this.getFieldData(name, expectedType);\n if (isNotNullResourceId(fieldData.error) && (failOnError || isNullResourceId(fieldData.value)))\n await this.tx.throwError(fieldData.error, path);\n\n if (isNullResourceId(fieldData.value)) throw new ContinuePolling();\n\n return await this.tx.get(fieldData.value, failOnError, path);\n }\n\n public async getMulti(\n ops: Partial<PollFieldTraverseOps>,\n ...names: string[]\n ): Promise<PollResourceAccessor[]> {\n return await Promise.all(names.map((name) => this.get(name, ops)));\n }\n\n public async getMultiObj<Key extends string>(\n ops: Partial<PollFieldTraverseOps>,\n ...names: Key[]\n ): Promise<Record<Key, PollResourceAccessor>> {\n return Object.fromEntries(\n await Promise.all(names.map(async (name) => [name, await this.get(name, ops)])),\n );\n }\n\n public async getAllFinal(\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<Record<string, PollResourceAccessor>> {\n return await this.getMultiObj(\n ops,\n ...this.data.fields\n .filter((f) => f.valueIsFinal || isNotNullResourceId(f.error))\n .map((f) => f.name),\n );\n }\n\n public async getKValue(key: string): Promise<string> {\n const value = await this.tx.tx.getKValueStringIfExists(this.data.id, key);\n if (value === undefined) throw new ContinuePolling();\n return value;\n }\n\n public async getKValueObj<T>(key: string): Promise<T> {\n return JSON.parse(await this.getKValue(key)) as T;\n }\n}\n\nexport class PollTxAccessor {\n constructor(public readonly tx: PlTransaction) {}\n\n public async get(\n rid: ResourceId,\n failOnError: boolean = true,\n path: string[] = [],\n ): Promise<PollResourceAccessor> {\n const data = await this.tx.getResourceData(rid, true);\n const accessor = new PollResourceAccessor(this, data, [...path, resourceIdToString(rid)]);\n if (failOnError) await accessor.requireNoError();\n return accessor;\n }\n\n async throwError(error: ResourceId, path: string[] = []): Promise<never> {\n const errorRes = await this.get(error);\n const errorText = Buffer.from(notEmpty(errorRes.data.data)).toString();\n throw new Error(`${path.join(' -> ')} = ${errorText}`);\n }\n}\n\nexport const DefaultPollingRetryOptions: RetryOptions = {\n type: 'linearBackoff',\n jitter: 0,\n maxAttempts: 100,\n backoffStep: 10,\n initialDelay: 10,\n};\n\nexport async function poll<T>(\n cl: PlClient,\n cb: (tx: PollTxAccessor) => Promise<T>,\n retryOptions: RetryOptions = DefaultPollingRetryOptions,\n txName: string = 'polling',\n): Promise<T> {\n let retryState = createRetryState(retryOptions);\n while (true) {\n try {\n return await cl.withReadTx(txName, async (tx) => {\n return await cb(new PollTxAccessor(tx));\n });\n } catch (e: any) {\n // Rethrowing any error except the \"not ready yet\"\n if (!(e instanceof ContinuePolling)) throw e;\n }\n await tp.setTimeout(retryState.nextDelay);\n retryState = nextRetryStateOrError(retryState);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"poll.js","sources":["../../src/helpers/poll.ts"],"sourcesContent":["import type { PlClient } from \"../core/client\";\nimport type { RetryOptions } from \"@milaboratories/ts-helpers\";\nimport { createRetryState, nextRetryStateOrError, notEmpty } from \"@milaboratories/ts-helpers\";\nimport type { FieldData, FieldType, ResourceData, ResourceId } from \"../core/types\";\nimport { isNotNullResourceId, isNullResourceId, resourceIdToString } from \"../core/types\";\nimport type { PlTransaction } from \"../core/transaction\";\nimport * as tp from \"node:timers/promises\";\n\n/** This error tells state assertion mechanism that required state is not yet ready */\nexport class ContinuePolling extends Error {\n name = \"ContinuePolling\";\n}\n\nexport type PollFieldTraverseOps = {\n expectedType?: FieldType;\n /** Fail if error present along with the value, if value not present,\n * but error do, exception will be thrown anyway. */\n failOnError: boolean;\n /** Traverse only if field report its value as final. */\n onlyFinal: boolean;\n};\n\nconst DefaultPollFieldTraverseOps: PollFieldTraverseOps = {\n failOnError: true,\n onlyFinal: false,\n};\n\nexport class PollResourceAccessor {\n constructor(\n public readonly tx: PollTxAccessor,\n public readonly data: ResourceData,\n public readonly path: string[],\n ) {}\n\n public final(): PollResourceAccessor {\n if (!this.data.final) throw new ContinuePolling();\n return this;\n }\n\n public async requireNoError(): Promise<PollResourceAccessor> {\n if (isNullResourceId(this.data.error)) return this;\n await this.tx.throwError(this.data.error, this.path);\n // hmm... https://github.com/microsoft/TypeScript/issues/34955\n return this;\n }\n\n public getFieldData(name: string, expectedType?: FieldType): FieldData {\n const fieldData = this.data.fields.find((f) => f.name === name);\n\n if (fieldData !== undefined) {\n if (expectedType !== undefined && fieldData.type !== expectedType)\n throw new Error(`Unexpected field type. Expected ${expectedType}, found ${fieldData.type}`);\n return fieldData;\n }\n\n if (\n ((expectedType === \"Input\" || expectedType === \"Service\") && this.data.inputsLocked) ||\n (expectedType === \"Output\" && this.data.outputsLocked)\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n `Field \"${name}\" not found. Expected type: ${expectedType}, state: ${this.data}`,\n );\n\n throw new ContinuePolling();\n }\n\n public async get(\n name: string,\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<PollResourceAccessor> {\n const { expectedType, failOnError } = { ...DefaultPollFieldTraverseOps, ...ops };\n const path = [...this.path, name];\n\n const fieldData = this.getFieldData(name, expectedType);\n if (isNotNullResourceId(fieldData.error) && (failOnError || isNullResourceId(fieldData.value)))\n await this.tx.throwError(fieldData.error, path);\n\n if (isNullResourceId(fieldData.value)) throw new ContinuePolling();\n\n return await this.tx.get(fieldData.value, failOnError, path);\n }\n\n public async getMulti(\n ops: Partial<PollFieldTraverseOps>,\n ...names: string[]\n ): Promise<PollResourceAccessor[]> {\n return await Promise.all(names.map((name) => this.get(name, ops)));\n }\n\n public async getMultiObj<Key extends string>(\n ops: Partial<PollFieldTraverseOps>,\n ...names: Key[]\n ): Promise<Record<Key, PollResourceAccessor>> {\n return Object.fromEntries(\n await Promise.all(names.map(async (name) => [name, await this.get(name, ops)])),\n );\n }\n\n public async getAllFinal(\n ops: Partial<PollFieldTraverseOps> = {},\n ): Promise<Record<string, PollResourceAccessor>> {\n return await this.getMultiObj(\n ops,\n ...this.data.fields\n .filter((f) => f.valueIsFinal || isNotNullResourceId(f.error))\n .map((f) => f.name),\n );\n }\n\n public async getKValue(key: string): Promise<string> {\n const value = await this.tx.tx.getKValueStringIfExists(this.data.id, key);\n if (value === undefined) throw new ContinuePolling();\n return value;\n }\n\n public async getKValueObj<T>(key: string): Promise<T> {\n return JSON.parse(await this.getKValue(key)) as T;\n }\n}\n\nexport class PollTxAccessor {\n constructor(public readonly tx: PlTransaction) {}\n\n public async get(\n rid: ResourceId,\n failOnError: boolean = true,\n path: string[] = [],\n ): Promise<PollResourceAccessor> {\n const data = await this.tx.getResourceData(rid, true);\n const accessor = new PollResourceAccessor(this, data, [...path, resourceIdToString(rid)]);\n if (failOnError) await accessor.requireNoError();\n return accessor;\n }\n\n async throwError(error: ResourceId, path: string[] = []): Promise<never> {\n const errorRes = await this.get(error);\n const errorText = Buffer.from(notEmpty(errorRes.data.data)).toString();\n throw new Error(`${path.join(\" -> \")} = ${errorText}`);\n }\n}\n\nexport const DefaultPollingRetryOptions: RetryOptions = {\n type: \"linearBackoff\",\n jitter: 0,\n maxAttempts: 100,\n backoffStep: 10,\n initialDelay: 10,\n};\n\nexport async function poll<T>(\n cl: PlClient,\n cb: (tx: PollTxAccessor) => Promise<T>,\n retryOptions: RetryOptions = DefaultPollingRetryOptions,\n txName: string = \"polling\",\n): Promise<T> {\n let retryState = createRetryState(retryOptions);\n while (true) {\n try {\n return await cl.withReadTx(txName, async (tx) => {\n return await cb(new PollTxAccessor(tx));\n });\n } catch (e: any) {\n // Rethrowing any error except the \"not ready yet\"\n if (!(e instanceof ContinuePolling)) throw e;\n }\n await tp.setTimeout(retryState.nextDelay);\n retryState = nextRetryStateOrError(retryState);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -82,7 +82,7 @@ class ExponentialBackoff {
82
82
  if (delay === 0 || this.jitter === 0) {
83
83
  return delay;
84
84
  }
85
- const delayFactor = 1 - (this.jitter / 2) + Math.random() * this.jitter;
85
+ const delayFactor = 1 - this.jitter / 2 + Math.random() * this.jitter;
86
86
  return delay * delayFactor;
87
87
  }
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retry_strategy.cjs","sources":["../../src/helpers/retry_strategy.ts"],"sourcesContent":["export interface RetryConfig {\n maxAttempts: number;\n initialDelay: number;\n maxDelay: number;\n}\n\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxAttempts: 10,\n initialDelay: 100,\n maxDelay: 30000,\n};\n\nexport interface RetryCallbacks {\n onRetry: () => void;\n onMaxAttemptsReached: (error: Error) => void;\n}\n\nexport class RetryStrategy {\n private attempts = 0;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private readonly config: RetryConfig;\n private readonly callbacks: RetryCallbacks;\n private readonly backoff: ExponentialBackoff;\n\n constructor(config: Partial<RetryConfig>, callbacks: RetryCallbacks) {\n this.config = { ...DEFAULT_RETRY_CONFIG, ...config };\n this.callbacks = callbacks;\n this.backoff = new ExponentialBackoff({\n initialDelay: this.config.initialDelay,\n maxDelay: this.config.maxDelay,\n factor: 2,\n jitter: 0.1,\n });\n }\n\n schedule(): void {\n if (this.timer) return;\n if (this.hasExceededLimit()) {\n this.notifyMaxAttemptsReached();\n return;\n }\n\n this.timer = setTimeout(() => {\n this.timer = null;\n this.attempts++;\n this.callbacks.onRetry();\n }, this.backoff.delay());\n }\n\n cancel(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n reset(): void {\n this.attempts = 0;\n this.backoff.reset();\n }\n\n private hasExceededLimit(): boolean {\n return this.attempts >= this.config.maxAttempts;\n }\n\n private notifyMaxAttemptsReached(): void {\n const error = new Error(\n `Max retry attempts (${this.config.maxAttempts}) reached`,\n );\n this.callbacks.onMaxAttemptsReached(error);\n }\n}\n\ninterface ExponentialBackoffConfig {\n initialDelay: number;\n maxDelay: number;\n factor: number;\n jitter: number;\n}\n\nclass ExponentialBackoff {\n private readonly initialDelay: number;\n private readonly maxDelay: number;\n\n private currentDelay: number;\n\n private readonly factor: number;\n private readonly jitter: number;\n\n constructor(config: ExponentialBackoffConfig) {\n this.initialDelay = config.initialDelay;\n this.maxDelay = config.maxDelay;\n this.factor = config.factor;\n this.jitter = config.jitter;\n this.currentDelay = config.initialDelay;\n }\n\n delay(): number {\n if (this.currentDelay >= this.maxDelay) {\n return this.applyJitter(this.maxDelay);\n }\n\n this.currentDelay = this.currentDelay * this.factor;\n\n if (this.currentDelay > this.maxDelay) {\n this.currentDelay = this.maxDelay;\n }\n\n return this.applyJitter(this.currentDelay);\n }\n\n reset(): void {\n this.currentDelay = this.initialDelay;\n }\n\n private applyJitter(delay: number): number {\n if (delay === 0 || this.jitter === 0) {\n return delay;\n }\n const delayFactor = 1 - (this.jitter / 2) + Math.random() * this.jitter;\n return delay * delayFactor;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry_strategy.cjs","sources":["../../src/helpers/retry_strategy.ts"],"sourcesContent":["export interface RetryConfig {\n maxAttempts: number;\n initialDelay: number;\n maxDelay: number;\n}\n\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxAttempts: 10,\n initialDelay: 100,\n maxDelay: 30000,\n};\n\nexport interface RetryCallbacks {\n onRetry: () => void;\n onMaxAttemptsReached: (error: Error) => void;\n}\n\nexport class RetryStrategy {\n private attempts = 0;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private readonly config: RetryConfig;\n private readonly callbacks: RetryCallbacks;\n private readonly backoff: ExponentialBackoff;\n\n constructor(config: Partial<RetryConfig>, callbacks: RetryCallbacks) {\n this.config = { ...DEFAULT_RETRY_CONFIG, ...config };\n this.callbacks = callbacks;\n this.backoff = new ExponentialBackoff({\n initialDelay: this.config.initialDelay,\n maxDelay: this.config.maxDelay,\n factor: 2,\n jitter: 0.1,\n });\n }\n\n schedule(): void {\n if (this.timer) return;\n if (this.hasExceededLimit()) {\n this.notifyMaxAttemptsReached();\n return;\n }\n\n this.timer = setTimeout(() => {\n this.timer = null;\n this.attempts++;\n this.callbacks.onRetry();\n }, this.backoff.delay());\n }\n\n cancel(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n reset(): void {\n this.attempts = 0;\n this.backoff.reset();\n }\n\n private hasExceededLimit(): boolean {\n return this.attempts >= this.config.maxAttempts;\n }\n\n private notifyMaxAttemptsReached(): void {\n const error = new Error(`Max retry attempts (${this.config.maxAttempts}) reached`);\n this.callbacks.onMaxAttemptsReached(error);\n }\n}\n\ninterface ExponentialBackoffConfig {\n initialDelay: number;\n maxDelay: number;\n factor: number;\n jitter: number;\n}\n\nclass ExponentialBackoff {\n private readonly initialDelay: number;\n private readonly maxDelay: number;\n\n private currentDelay: number;\n\n private readonly factor: number;\n private readonly jitter: number;\n\n constructor(config: ExponentialBackoffConfig) {\n this.initialDelay = config.initialDelay;\n this.maxDelay = config.maxDelay;\n this.factor = config.factor;\n this.jitter = config.jitter;\n this.currentDelay = config.initialDelay;\n }\n\n delay(): number {\n if (this.currentDelay >= this.maxDelay) {\n return this.applyJitter(this.maxDelay);\n }\n\n this.currentDelay = this.currentDelay * this.factor;\n\n if (this.currentDelay > this.maxDelay) {\n this.currentDelay = this.maxDelay;\n }\n\n return this.applyJitter(this.currentDelay);\n }\n\n reset(): void {\n this.currentDelay = this.initialDelay;\n }\n\n private applyJitter(delay: number): number {\n if (delay === 0 || this.jitter === 0) {\n return delay;\n }\n const delayFactor = 1 - this.jitter / 2 + Math.random() * this.jitter;\n return delay * delayFactor;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retry_strategy.d.ts","sourceRoot":"","sources":["../../src/helpers/retry_strategy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,cAAc;IAWnE,QAAQ,IAAI,IAAI;IAchB,MAAM,IAAI,IAAI;IAOd,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,wBAAwB;CAMjC"}
1
+ {"version":3,"file":"retry_strategy.d.ts","sourceRoot":"","sources":["../../src/helpers/retry_strategy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,cAAc;IAWnE,QAAQ,IAAI,IAAI;IAchB,MAAM,IAAI,IAAI;IAOd,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,wBAAwB;CAIjC"}
@@ -80,7 +80,7 @@ class ExponentialBackoff {
80
80
  if (delay === 0 || this.jitter === 0) {
81
81
  return delay;
82
82
  }
83
- const delayFactor = 1 - (this.jitter / 2) + Math.random() * this.jitter;
83
+ const delayFactor = 1 - this.jitter / 2 + Math.random() * this.jitter;
84
84
  return delay * delayFactor;
85
85
  }
86
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retry_strategy.js","sources":["../../src/helpers/retry_strategy.ts"],"sourcesContent":["export interface RetryConfig {\n maxAttempts: number;\n initialDelay: number;\n maxDelay: number;\n}\n\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxAttempts: 10,\n initialDelay: 100,\n maxDelay: 30000,\n};\n\nexport interface RetryCallbacks {\n onRetry: () => void;\n onMaxAttemptsReached: (error: Error) => void;\n}\n\nexport class RetryStrategy {\n private attempts = 0;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private readonly config: RetryConfig;\n private readonly callbacks: RetryCallbacks;\n private readonly backoff: ExponentialBackoff;\n\n constructor(config: Partial<RetryConfig>, callbacks: RetryCallbacks) {\n this.config = { ...DEFAULT_RETRY_CONFIG, ...config };\n this.callbacks = callbacks;\n this.backoff = new ExponentialBackoff({\n initialDelay: this.config.initialDelay,\n maxDelay: this.config.maxDelay,\n factor: 2,\n jitter: 0.1,\n });\n }\n\n schedule(): void {\n if (this.timer) return;\n if (this.hasExceededLimit()) {\n this.notifyMaxAttemptsReached();\n return;\n }\n\n this.timer = setTimeout(() => {\n this.timer = null;\n this.attempts++;\n this.callbacks.onRetry();\n }, this.backoff.delay());\n }\n\n cancel(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n reset(): void {\n this.attempts = 0;\n this.backoff.reset();\n }\n\n private hasExceededLimit(): boolean {\n return this.attempts >= this.config.maxAttempts;\n }\n\n private notifyMaxAttemptsReached(): void {\n const error = new Error(\n `Max retry attempts (${this.config.maxAttempts}) reached`,\n );\n this.callbacks.onMaxAttemptsReached(error);\n }\n}\n\ninterface ExponentialBackoffConfig {\n initialDelay: number;\n maxDelay: number;\n factor: number;\n jitter: number;\n}\n\nclass ExponentialBackoff {\n private readonly initialDelay: number;\n private readonly maxDelay: number;\n\n private currentDelay: number;\n\n private readonly factor: number;\n private readonly jitter: number;\n\n constructor(config: ExponentialBackoffConfig) {\n this.initialDelay = config.initialDelay;\n this.maxDelay = config.maxDelay;\n this.factor = config.factor;\n this.jitter = config.jitter;\n this.currentDelay = config.initialDelay;\n }\n\n delay(): number {\n if (this.currentDelay >= this.maxDelay) {\n return this.applyJitter(this.maxDelay);\n }\n\n this.currentDelay = this.currentDelay * this.factor;\n\n if (this.currentDelay > this.maxDelay) {\n this.currentDelay = this.maxDelay;\n }\n\n return this.applyJitter(this.currentDelay);\n }\n\n reset(): void {\n this.currentDelay = this.initialDelay;\n }\n\n private applyJitter(delay: number): number {\n if (delay === 0 || this.jitter === 0) {\n return delay;\n }\n const delayFactor = 1 - (this.jitter / 2) + Math.random() * this.jitter;\n return delay * delayFactor;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry_strategy.js","sources":["../../src/helpers/retry_strategy.ts"],"sourcesContent":["export interface RetryConfig {\n maxAttempts: number;\n initialDelay: number;\n maxDelay: number;\n}\n\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxAttempts: 10,\n initialDelay: 100,\n maxDelay: 30000,\n};\n\nexport interface RetryCallbacks {\n onRetry: () => void;\n onMaxAttemptsReached: (error: Error) => void;\n}\n\nexport class RetryStrategy {\n private attempts = 0;\n private timer: ReturnType<typeof setTimeout> | null = null;\n private readonly config: RetryConfig;\n private readonly callbacks: RetryCallbacks;\n private readonly backoff: ExponentialBackoff;\n\n constructor(config: Partial<RetryConfig>, callbacks: RetryCallbacks) {\n this.config = { ...DEFAULT_RETRY_CONFIG, ...config };\n this.callbacks = callbacks;\n this.backoff = new ExponentialBackoff({\n initialDelay: this.config.initialDelay,\n maxDelay: this.config.maxDelay,\n factor: 2,\n jitter: 0.1,\n });\n }\n\n schedule(): void {\n if (this.timer) return;\n if (this.hasExceededLimit()) {\n this.notifyMaxAttemptsReached();\n return;\n }\n\n this.timer = setTimeout(() => {\n this.timer = null;\n this.attempts++;\n this.callbacks.onRetry();\n }, this.backoff.delay());\n }\n\n cancel(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n reset(): void {\n this.attempts = 0;\n this.backoff.reset();\n }\n\n private hasExceededLimit(): boolean {\n return this.attempts >= this.config.maxAttempts;\n }\n\n private notifyMaxAttemptsReached(): void {\n const error = new Error(`Max retry attempts (${this.config.maxAttempts}) reached`);\n this.callbacks.onMaxAttemptsReached(error);\n }\n}\n\ninterface ExponentialBackoffConfig {\n initialDelay: number;\n maxDelay: number;\n factor: number;\n jitter: number;\n}\n\nclass ExponentialBackoff {\n private readonly initialDelay: number;\n private readonly maxDelay: number;\n\n private currentDelay: number;\n\n private readonly factor: number;\n private readonly jitter: number;\n\n constructor(config: ExponentialBackoffConfig) {\n this.initialDelay = config.initialDelay;\n this.maxDelay = config.maxDelay;\n this.factor = config.factor;\n this.jitter = config.jitter;\n this.currentDelay = config.initialDelay;\n }\n\n delay(): number {\n if (this.currentDelay >= this.maxDelay) {\n return this.applyJitter(this.maxDelay);\n }\n\n this.currentDelay = this.currentDelay * this.factor;\n\n if (this.currentDelay > this.maxDelay) {\n this.currentDelay = this.maxDelay;\n }\n\n return this.applyJitter(this.currentDelay);\n }\n\n reset(): void {\n this.currentDelay = this.initialDelay;\n }\n\n private applyJitter(delay: number): number {\n if (delay === 0 || this.jitter === 0) {\n return delay;\n }\n const delayFactor = 1 - this.jitter / 2 + Math.random() * this.jitter;\n return delay * delayFactor;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { FieldData } from '../core/types';
2
- export declare function fieldResolved(data: Pick<FieldData, 'value' | 'error'>): boolean;
1
+ import type { FieldData } from "../core/types";
2
+ export declare function fieldResolved(data: Pick<FieldData, "value" | "error">): boolean;
3
3
  //# sourceMappingURL=state_helpers.d.ts.map