@keetanetwork/keetanet-client 0.18.1 → 0.18.3

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 (118) hide show
  1. package/client/index-browser.js +141 -72
  2. package/client/index.js +91 -35
  3. package/docs/assets/hierarchy.js +1 -1
  4. package/docs/assets/navigation.js +1 -1
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/KeetaNetSDK.Referenced.BaseSet.html +1 -1
  7. package/docs/classes/KeetaNetSDK.Referenced.BaseVoteBuilder.html +1 -1
  8. package/docs/classes/KeetaNetSDK.Referenced.BlockOperation.html +1 -1
  9. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationCREATE_IDENTIFIER.html +1 -1
  10. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMANAGE_CERTIFICATE.html +1 -1
  11. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMODIFY_PERMISSIONS.html +1 -1
  12. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationRECEIVE.html +1 -1
  13. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSEND.html +1 -1
  14. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_INFO.html +1 -1
  15. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_REP.html +1 -1
  16. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_MODIFY_BALANCE.html +1 -1
  17. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_SUPPLY.html +1 -1
  18. package/docs/classes/KeetaNetSDK.Referenced.ECDSAKeyPair.html +1 -1
  19. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1KeyPair.html +1 -1
  20. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PrivateKey.html +1 -1
  21. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PublicKey.html +1 -1
  22. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1Signature.html +1 -1
  23. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1KeyPair.html +1 -1
  24. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PrivateKey.html +1 -1
  25. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PublicKey.html +1 -1
  26. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1Signature.html +1 -1
  27. package/docs/classes/KeetaNetSDK.Referenced.ED25519KeyPair.html +1 -1
  28. package/docs/classes/KeetaNetSDK.Referenced.ED25519PrivateKey.html +1 -1
  29. package/docs/classes/KeetaNetSDK.Referenced.ED25519PublicKey.html +1 -1
  30. package/docs/classes/KeetaNetSDK.Referenced.ED25519Signature.html +1 -1
  31. package/docs/classes/KeetaNetSDK.Referenced.ExternalKeyPair.html +1 -1
  32. package/docs/classes/KeetaNetSDK.Referenced.ExternalSet.html +1 -1
  33. package/docs/classes/KeetaNetSDK.Referenced.IdempotentKey.html +1 -1
  34. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKey.html +1 -1
  35. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKeyPair.html +1 -1
  36. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetErrorBase.html +1 -1
  37. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerError.html +1 -1
  38. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerIdempotentKeyError.html +1 -1
  39. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerVoteError.html +1 -1
  40. package/docs/classes/KeetaNetSDK.Referenced.KeyInterface.html +1 -1
  41. package/docs/classes/KeetaNetSDK.Referenced.KeyStorage.html +1 -1
  42. package/docs/classes/KeetaNetSDK.Referenced.Log.html +4 -4
  43. package/docs/classes/KeetaNetSDK.Referenced.PermissionSetHolder.html +1 -1
  44. package/docs/classes/KeetaNetSDK.Referenced.PossiblyExpiredVote.html +1 -1
  45. package/docs/classes/KeetaNetSDK.Referenced.PossiblyUnsignedBlock.html +1 -1
  46. package/docs/classes/KeetaNetSDK.Referenced.SignatureStorage.html +1 -1
  47. package/docs/classes/KeetaNetSDK.Referenced.Stats.html +1 -1
  48. package/docs/classes/KeetaNetSDK.Referenced.StatsPending.html +1 -1
  49. package/docs/classes/KeetaNetSDK.Referenced.UnsignedBlock.html +1 -1
  50. package/docs/classes/KeetaNetSDK.Referenced.VoteBlockBundle.html +1 -1
  51. package/docs/classes/KeetaNetSDK.Referenced.VoteBuilder.html +1 -1
  52. package/docs/classes/KeetaNetSDK.Referenced.VoteHash.html +1 -1
  53. package/docs/classes/KeetaNetSDK.Referenced.VoteLikeBase.html +1 -1
  54. package/docs/classes/KeetaNetSDK.Referenced.VoteQuoteBuilder.html +1 -1
  55. package/docs/classes/KeetaNetSDK.Referenced.VoteStapleHash.html +1 -1
  56. package/docs/classes/KeetaNetSDK.Referenced.src_lib_utils_buffer.BufferStorage.html +1 -1
  57. package/docs/hierarchy.html +1 -1
  58. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ExplicitContextTag.html +1 -1
  59. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ImplicitContextTag.html +1 -1
  60. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1Object.html +1 -1
  61. package/docs/interfaces/KeetaNetSDK.Referenced.AccountACLRow.html +1 -1
  62. package/docs/interfaces/KeetaNetSDK.Referenced.BaseACLRow.html +1 -1
  63. package/docs/interfaces/KeetaNetSDK.Referenced.BaseAccountInfo.html +1 -1
  64. package/docs/interfaces/KeetaNetSDK.Referenced.BaseExternalKeyPairFunctions.html +1 -1
  65. package/docs/interfaces/KeetaNetSDK.Referenced.BaseGenerationConfig.html +1 -1
  66. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierAccountInfo.html +1 -1
  67. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierCreateArguments.html +1 -1
  68. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperation.html +1 -1
  69. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationCREATE_IDENTIFIER.html +1 -1
  70. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMANAGE_CERTIFICATE.html +1 -1
  71. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMODIFY_PERMISSIONS.html +1 -1
  72. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationRECEIVE.html +1 -1
  73. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSEND.html +1 -1
  74. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_INFO.html +1 -1
  75. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_REP.html +1 -1
  76. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_MODIFY_BALANCE.html +1 -1
  77. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_SUPPLY.html +1 -1
  78. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV1Canonical.html +1 -1
  79. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV2Canonical.html +1 -1
  80. package/docs/interfaces/KeetaNetSDK.Referenced.CertificateACLRow.html +1 -1
  81. package/docs/interfaces/KeetaNetSDK.Referenced.Constructor.html +1 -1
  82. package/docs/interfaces/KeetaNetSDK.Referenced.DisposableTimingHandle.html +1 -1
  83. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256K1AccountInfo.html +1 -1
  84. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256R1AccountInfo.html +1 -1
  85. package/docs/interfaces/KeetaNetSDK.Referenced.ED25519AccountInfo.html +1 -1
  86. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsNoEncryption.html +1 -1
  87. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsSupportsEncryption.html +1 -1
  88. package/docs/interfaces/KeetaNetSDK.Referenced.InitialConfigSupply.html +1 -1
  89. package/docs/interfaces/KeetaNetSDK.Referenced.InstanceSet.html +1 -1
  90. package/docs/interfaces/KeetaNetSDK.Referenced.KVGenericOptionsType.html +1 -1
  91. package/docs/interfaces/KeetaNetSDK.Referenced.KVSetOptionsType.html +1 -1
  92. package/docs/interfaces/KeetaNetSDK.Referenced.Logger.html +5 -3
  93. package/docs/interfaces/KeetaNetSDK.Referenced.ModifyTokenBalanceEntry.html +1 -1
  94. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigAccountInfo.html +1 -1
  95. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigConfig.html +1 -1
  96. package/docs/interfaces/KeetaNetSDK.Referenced.NumericValueEntry.html +1 -1
  97. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerBase.html +1 -1
  98. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerListener.html +1 -1
  99. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerRepBase.html +1 -1
  100. package/docs/interfaces/KeetaNetSDK.Referenced.PublicKeyStorage.html +1 -1
  101. package/docs/interfaces/KeetaNetSDK.Referenced.RequestTokenReceiveEntry.html +1 -1
  102. package/docs/interfaces/KeetaNetSDK.Referenced.StorageAccountInfo.html +1 -1
  103. package/docs/interfaces/KeetaNetSDK.Referenced.TokenAccountInfo.html +1 -1
  104. package/docs/interfaces/KeetaNetSDK.Referenced.TokenNumericEntry.html +1 -1
  105. package/docs/interfaces/KeetaNetSDK.Referenced.WithIsInstance.html +1 -1
  106. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1BitString.html +1 -1
  107. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Date.html +1 -1
  108. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1OID.html +1 -1
  109. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Set.html +1 -1
  110. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1String.html +1 -1
  111. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Struct.html +1 -1
  112. package/docs/types/KeetaNetSDK.Referenced.LogOptions.html +13 -3
  113. package/lib/log/common.d.ts +6 -2
  114. package/lib/log/index.d.ts +22 -7
  115. package/lib/utils/external-keys/passkey-prf.js +100 -21
  116. package/npm-shrinkwrap.json +12 -19
  117. package/package.json +2 -2
  118. package/version.d.ts +1 -1
@@ -118325,11 +118325,14 @@ async function client_computeLedgerEffect(options, effects, storageProvider, net
118325
118325
  }
118326
118326
  }
118327
118327
  }
118328
- if (prefetchPromises.length > 70) {
118328
+
118329
+ // Process promises in batches to avoid spanner's 100 concurrent read per session limit
118330
+ if (prefetchPromises.length > 50) {
118329
118331
  const toAwait = prefetchPromises.splice(0);
118330
118332
  await Promise.all(toAwait);
118331
118333
  }
118332
118334
  }
118335
+ // Wait for the final batch to complete
118333
118336
  await Promise.all(prefetchPromises);
118334
118337
  const supplies = {};
118335
118338
  const balances = {};
@@ -127103,6 +127106,48 @@ class client_LedgerRequestCache {
127103
127106
  }
127104
127107
  }
127105
127108
  /* harmony default export */ const client_cache = (client_LedgerRequestCache);
127109
+ ;// ./src/lib/log/common.ts
127110
+ const client_numericLogLevels = {
127111
+ DEBUG: 0,
127112
+ INFO: 1,
127113
+ WARN: 2,
127114
+ ERROR: 3
127115
+ };
127116
+
127117
+ /* XXX:TODO -- Do something with this */
127118
+
127119
+ function client_canLogForLevel(level, currentLevel) {
127120
+ return client_numericLogLevels[level] >= client_numericLogLevels[currentLevel];
127121
+ }
127122
+ function client_canLogForTargetLevel(level, targetLevel) {
127123
+ if (targetLevel === 'ALL') {
127124
+ return true;
127125
+ }
127126
+ if (targetLevel === 'NONE') {
127127
+ return false;
127128
+ }
127129
+ return client_canLogForLevel(level, targetLevel);
127130
+ }
127131
+ function client_filterLog(target, message) {
127132
+ var _message$options$user, _message$options$curr, _message$options$curr2;
127133
+ if (!client_canLogForTargetLevel(message.level, target.logLevel)) {
127134
+ return null;
127135
+ }
127136
+ if (target.filter && !target.filter.test(message.from)) {
127137
+ return null;
127138
+ }
127139
+ return {
127140
+ ...message,
127141
+ options: {
127142
+ userVisible: (_message$options$user = message.options.userVisible) !== null && _message$options$user !== void 0 ? _message$options$user : true,
127143
+ currentRequestInfo: {
127144
+ id: (_message$options$curr = (_message$options$curr2 = message.options.currentRequestInfo) === null || _message$options$curr2 === void 0 ? void 0 : _message$options$curr2.id) !== null && _message$options$curr !== void 0 ? _message$options$curr : '<NO_REQUEST_ID>',
127145
+ ...message.options.currentRequestInfo
127146
+ },
127147
+ ...message.options
127148
+ }
127149
+ };
127150
+ }
127106
127151
  // EXTERNAL MODULE: ./node_modules/typia/lib/internal/_assertGuard.js
127107
127152
  var client_assertGuard = __webpack_require__(7422);
127108
127153
  ;// ./src/lib/log/helper.generated.ts
@@ -127180,48 +127225,6 @@ const client_assertLogTargetLevel = (() => {
127180
127225
  return input;
127181
127226
  };
127182
127227
  })();
127183
- ;// ./src/lib/log/common.ts
127184
- const client_numericLogLevels = {
127185
- DEBUG: 0,
127186
- INFO: 1,
127187
- WARN: 2,
127188
- ERROR: 3
127189
- };
127190
-
127191
- /* XXX:TODO -- Do something with this */
127192
-
127193
- function client_canLogForLevel(level, currentLevel) {
127194
- return client_numericLogLevels[level] >= client_numericLogLevels[currentLevel];
127195
- }
127196
- function client_canLogForTargetLevel(level, targetLevel) {
127197
- if (targetLevel === 'ALL') {
127198
- return true;
127199
- }
127200
- if (targetLevel === 'NONE') {
127201
- return false;
127202
- }
127203
- return client_canLogForLevel(level, targetLevel);
127204
- }
127205
- function client_filterLog(target, message) {
127206
- var _message$options$user, _message$options$curr, _message$options$curr2;
127207
- if (!client_canLogForTargetLevel(message.level, target.logLevel)) {
127208
- return null;
127209
- }
127210
- if (target.filter && !target.filter.test(message.from)) {
127211
- return null;
127212
- }
127213
- return {
127214
- ...message,
127215
- options: {
127216
- userVisible: (_message$options$user = message.options.userVisible) !== null && _message$options$user !== void 0 ? _message$options$user : true,
127217
- currentRequestInfo: {
127218
- id: (_message$options$curr = (_message$options$curr2 = message.options.currentRequestInfo) === null || _message$options$curr2 === void 0 ? void 0 : _message$options$curr2.id) !== null && _message$options$curr !== void 0 ? _message$options$curr : '<NO_REQUEST_ID>',
127219
- ...message.options.currentRequestInfo
127220
- },
127221
- ...message.options
127222
- }
127223
- };
127224
- }
127225
127228
  ;// ./src/lib/log/target_console.ts
127226
127229
  function client_target_console_classPrivateFieldInitSpec(e, t, a) { client_target_console_checkPrivateRedeclaration(e, t), t.set(e, a); }
127227
127230
  function client_target_console_checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -127284,11 +127287,13 @@ function client_log_checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new Ty
127284
127287
  function client_log_defineProperty(e, r, t) { return (r = client_log_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
127285
127288
  function client_log_toPropertyKey(t) { var i = client_log_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
127286
127289
  function client_log_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
127290
+ function client_log_classPrivateGetter(s, r, a) { return a(client_log_assertClassBrand(s, r)); }
127287
127291
  function client_log_classPrivateFieldSet(s, a, r) { return s.set(client_log_assertClassBrand(s, a), r), r; }
127288
127292
  function client_log_classPrivateFieldGet(s, a) { return s.get(client_log_assertClassBrand(s, a)); }
127289
127293
  function client_log_assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
127290
127294
 
127291
127295
 
127296
+
127292
127297
  /**
127293
127298
  * Maximum number of logs to enqueue when there are no targets assigned to a
127294
127299
  * Log instance
@@ -127314,6 +127319,8 @@ var client_destroyed = /*#__PURE__*/new WeakMap();
127314
127319
  var client_emitOnLog = /*#__PURE__*/new WeakMap();
127315
127320
  var client_logDebugTracing = /*#__PURE__*/new WeakMap();
127316
127321
  var client_targets = /*#__PURE__*/new WeakMap();
127322
+ var client_filter = /*#__PURE__*/new WeakMap();
127323
+ var client_logLevel = /*#__PURE__*/new WeakMap();
127317
127324
  var client_Log_brand = /*#__PURE__*/new WeakSet();
127318
127325
  class client_Log {
127319
127326
  /**
@@ -127384,7 +127391,7 @@ class client_Log {
127384
127391
  /**
127385
127392
  * Keep track of whether or not we are currently syncing
127386
127393
  */
127387
- client_log_classPrivateFieldInitSpec(this, client_isSyncing, false);
127394
+ client_log_classPrivateFieldInitSpec(this, client_isSyncing, null);
127388
127395
  /**
127389
127396
  * If `sync()` is called while we are syncing, we should sync again
127390
127397
  * to ensure all logs are sent
@@ -127403,19 +127410,37 @@ class client_Log {
127403
127410
  /**
127404
127411
  * Whether or not to generate debug tracing information for each log entry
127405
127412
  */
127406
- client_log_classPrivateFieldInitSpec(this, client_logDebugTracing, false);
127413
+ client_log_classPrivateFieldInitSpec(this, client_logDebugTracing, void 0);
127414
+ /**
127415
+ * Registered log targets (sinks) to send logs to, keyed by a unique
127416
+ * ID returned by `registerTarget()`
127417
+ */
127407
127418
  client_log_classPrivateFieldInitSpec(this, client_targets, new Map());
127408
127419
  /**
127409
- * The maximum number of log entries to send to each target at a time
127420
+ * Filter to apply before sending to targets
127410
127421
  */
127411
- client_log_defineProperty(this, "batchSize", 10);
127422
+ client_log_classPrivateFieldInitSpec(this, client_filter, void 0);
127423
+ /**
127424
+ * Log-level to filter for at the logger level
127425
+ */
127426
+ client_log_classPrivateFieldInitSpec(this, client_logLevel, void 0);
127412
127427
  /**
127413
127428
  * Parent logger, if any -- used for creating hierarchical loggers
127414
127429
  */
127415
127430
  client_log_defineProperty(this, "parent", null);
127431
+ /**
127432
+ * The maximum number of log entries to send to each target at a time
127433
+ */
127434
+ client_log_defineProperty(this, "batchSize", 10);
127416
127435
  if ((_options === null || _options === void 0 ? void 0 : _options.logDebugTracing) !== undefined) {
127417
127436
  client_log_classPrivateFieldSet(client_logDebugTracing, this, _options.logDebugTracing);
127418
127437
  }
127438
+ if ((_options === null || _options === void 0 ? void 0 : _options.filter) !== undefined) {
127439
+ client_log_classPrivateFieldSet(client_filter, this, _options.filter);
127440
+ }
127441
+ if ((_options === null || _options === void 0 ? void 0 : _options.logLevel) !== undefined) {
127442
+ client_log_classPrivateFieldSet(client_logLevel, this, _options.logLevel);
127443
+ }
127419
127444
  }
127420
127445
  log() {
127421
127446
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -127528,6 +127553,7 @@ class client_Log {
127528
127553
  }
127529
127554
  return Array.from(client_log_classPrivateFieldGet(client_targets, this).values());
127530
127555
  }
127556
+
127531
127557
  /**
127532
127558
  * Create a child logger instance that shares the same targets as this instance
127533
127559
  * but has its own log queue, this is useful for creating hierarchical loggers
@@ -127536,11 +127562,9 @@ class client_Log {
127536
127562
  * Since the child shares the same targets, registering or unregistering targets
127537
127563
  * from either the parent or child will affect both.
127538
127564
  */
127539
- createChild() {
127565
+ createChild(options) {
127540
127566
  var _this$parent;
127541
- const child = new client_Log({
127542
- logDebugTracing: client_log_classPrivateFieldGet(client_logDebugTracing, this)
127543
- });
127567
+ const child = new client_Log(options);
127544
127568
 
127545
127569
  /**
127546
127570
  * Attach child nodes to our own parent to collapse
@@ -127592,6 +127616,7 @@ class client_Log {
127592
127616
  * Sync all currently enqueued logs to all targets
127593
127617
  */
127594
127618
  async sync() {
127619
+ let wait = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
127595
127620
  /*
127596
127621
  * If there are currently no targets, do not dequeue logs
127597
127622
  * in case a target is added later; However, if there are
@@ -127608,10 +127633,13 @@ class client_Log {
127608
127633
  * If we are already syncing, set a flag to sync again after the current sync is done
127609
127634
  */
127610
127635
  if (client_log_classPrivateFieldGet(client_isSyncing, this)) {
127636
+ if (wait) {
127637
+ client_log_classPrivateFieldSet(client_shouldSyncAgain, this, true);
127638
+ await client_log_classPrivateFieldGet(client_isSyncing, this);
127639
+ }
127611
127640
  client_log_classPrivateFieldSet(client_shouldSyncAgain, this, true);
127612
127641
  return;
127613
127642
  }
127614
- client_log_classPrivateFieldSet(client_isSyncing, this, true);
127615
127643
 
127616
127644
  /*
127617
127645
  * Create a copy of the currently registered targets in case
@@ -127623,18 +127651,21 @@ class client_Log {
127623
127651
  * to the registered targets at the time of the sync
127624
127652
  */
127625
127653
  const targets = [...this.targets];
127626
- do {
127627
- try {
127628
- client_log_classPrivateFieldSet(client_shouldSyncAgain, this, false);
127629
- while (client_log_classPrivateFieldGet(client_logs, this).length > 0) {
127630
- const logs = client_log_classPrivateFieldGet(client_logs, this).splice(0, this.batchSize);
127631
- await this.emitLogs(logs, targets);
127654
+ client_log_classPrivateFieldSet(client_isSyncing, this, (async () => {
127655
+ do {
127656
+ try {
127657
+ client_log_classPrivateFieldSet(client_shouldSyncAgain, this, false);
127658
+ while (client_log_classPrivateFieldGet(client_logs, this).length > 0) {
127659
+ const logs = client_log_classPrivateFieldGet(client_logs, this).splice(0, this.batchSize);
127660
+ await this.emitLogs(logs, targets);
127661
+ }
127662
+ } catch {
127663
+ /* Ignore errors */
127632
127664
  }
127633
- } catch {
127634
- /* Ignore errors */
127635
- }
127636
- } while (client_log_classPrivateFieldGet(client_shouldSyncAgain, this));
127637
- client_log_classPrivateFieldSet(client_isSyncing, this, false);
127665
+ } while (client_log_classPrivateFieldGet(client_shouldSyncAgain, this));
127666
+ })());
127667
+ await client_log_classPrivateFieldGet(client_isSyncing, this);
127668
+ client_log_classPrivateFieldSet(client_isSyncing, this, null);
127638
127669
  }
127639
127670
 
127640
127671
  /**
@@ -127660,12 +127691,39 @@ class client_Log {
127660
127691
  this.stopAutoSync();
127661
127692
  client_log_classPrivateFieldSet(client_logs, this, []);
127662
127693
  client_log_classPrivateFieldGet(client_targets, this).clear();
127663
- client_log_classPrivateFieldSet(client_isSyncing, this, false);
127694
+ client_log_classPrivateFieldSet(client_isSyncing, this, null);
127664
127695
  client_log_classPrivateFieldSet(client_shouldSyncAgain, this, false);
127665
127696
  client_log_classPrivateFieldSet(client_emitOnLog, this, false);
127666
127697
  client_log_classPrivateFieldSet(client_destroyed, this, true);
127667
127698
  }
127668
127699
  }
127700
+ function client_get_logDebugTracing(_this) {
127701
+ if (client_log_classPrivateFieldGet(client_logDebugTracing, _this) !== undefined) {
127702
+ return client_log_classPrivateFieldGet(client_logDebugTracing, _this);
127703
+ }
127704
+ if (_this.parent) {
127705
+ return client_log_classPrivateGetter(client_Log_brand, _this.parent, client_get_logDebugTracing);
127706
+ }
127707
+ return false;
127708
+ }
127709
+ function client_get_filter(_this2) {
127710
+ if (client_log_classPrivateFieldGet(client_filter, _this2) !== undefined) {
127711
+ return client_log_classPrivateFieldGet(client_filter, _this2);
127712
+ }
127713
+ if (_this2.parent) {
127714
+ return client_log_classPrivateGetter(client_Log_brand, _this2.parent, client_get_filter);
127715
+ }
127716
+ return null;
127717
+ }
127718
+ function client_get_logLevel(_this3) {
127719
+ if (client_log_classPrivateFieldGet(client_logLevel, _this3) !== undefined) {
127720
+ return client_log_classPrivateFieldGet(client_logLevel, _this3);
127721
+ }
127722
+ if (_this3.parent) {
127723
+ return client_log_classPrivateGetter(client_Log_brand, _this3.parent, client_get_logLevel);
127724
+ }
127725
+ return 'ALL';
127726
+ }
127669
127727
  function client_log_log(level, options, from) {
127670
127728
  if (client_log_classPrivateFieldGet(client_destroyed, this)) {
127671
127729
  return;
@@ -127679,7 +127737,13 @@ function client_log_log(level, options, from) {
127679
127737
  from,
127680
127738
  args
127681
127739
  };
127682
- if (client_log_classPrivateFieldGet(client_logDebugTracing, this)) {
127740
+ if (client_filterLog({
127741
+ logLevel: client_log_classPrivateGetter(client_Log_brand, this, client_get_logLevel),
127742
+ filter: client_log_classPrivateGetter(client_Log_brand, this, client_get_filter)
127743
+ }, log) === null) {
127744
+ return;
127745
+ }
127746
+ if (client_log_classPrivateGetter(client_Log_brand, this, client_get_logDebugTracing)) {
127683
127747
  var _Error$stack$split$sl, _Error$stack;
127684
127748
  log.trace = (_Error$stack$split$sl = (_Error$stack = new Error().stack) === null || _Error$stack === void 0 ? void 0 : _Error$stack.split('\n').slice(2).join('\n')) !== null && _Error$stack$split$sl !== void 0 ? _Error$stack$split$sl : '[No stack trace available]';
127685
127749
  }
@@ -129501,13 +129565,18 @@ async function client_checkPermissionRequirements(effects) {
129501
129565
  throw new client_ledger_KeetaNetLedgerError('LEDGER_INVALID_PERMISSIONS', `Quorum of ${foundInfo.multisigQuorum} not reached for ${multisigPubKey} -- got ${foundSingerLength}`);
129502
129566
  }
129503
129567
  }
129504
- const checkPromises = [];
129505
- for (const principalPubKey in requirementsByPrincipal) {
129506
- const accountRequirements = requirementsByPrincipal[principalPubKey];
129507
- const principal = client_lib_account.fromPublicKeyString(principalPubKey);
129508
- checkPromises.push(client_ledger_assertClassBrand(client_LedgerAtomicInterface_brand, this, client_checkSingleAccountPermissions).call(this, principal, accountRequirements, foundAccountInfo));
129568
+
129569
+ // Process promises in batches to avoid spanner's 100 concurrent read per session limit
129570
+ const batchSize = 50;
129571
+ const principalPubKeys = Object.keys(requirementsByPrincipal);
129572
+ for (let i = 0; i < principalPubKeys.length; i += batchSize) {
129573
+ const batch = principalPubKeys.slice(i, i + batchSize).map(principalPubKey => {
129574
+ const accountRequirements = requirementsByPrincipal[principalPubKey];
129575
+ const principal = client_lib_account.fromPublicKeyString(principalPubKey);
129576
+ return client_ledger_assertClassBrand(client_LedgerAtomicInterface_brand, this, client_checkSingleAccountPermissions).call(this, principal, accountRequirements, foundAccountInfo);
129577
+ });
129578
+ await Promise.all(batch);
129509
129579
  }
129510
- await Promise.all(checkPromises);
129511
129580
  return {
129512
129581
  newOwners
129513
129582
  };
@@ -130256,7 +130325,7 @@ client_lib_ledger_defineProperty(src_client_Ledger, "isInstance", client_checkab
130256
130325
  // EXTERNAL MODULE: ws (ignored)
130257
130326
  var client_ws_ignored_ = __webpack_require__(4708);
130258
130327
  ;// ./src/version.ts
130259
- const client_version = '0.18.1+gae2caf00c1e19c6d232ff1a37b9fd8e7ea8a1ddc';
130328
+ const client_version = '0.18.3+gf53e394dcd1c7187ed5ceca45df7225433f318c1';
130260
130329
  /* harmony default export */ const client_src_version = ((/* unused pure expression or super */ null && (client_version)));
130261
130330
  ;// ./src/lib/p2p.ts
130262
130331
  /* provided dependency */ var client_p2p_Buffer = __webpack_require__(8287)["Buffer"];
package/client/index.js CHANGED
@@ -67198,11 +67198,13 @@ async function computeLedgerEffect(options, effects, storageProvider, network, t
67198
67198
  }
67199
67199
  }
67200
67200
  }
67201
- if (prefetchPromises.length > 70) {
67201
+ // Process promises in batches to avoid spanner's 100 concurrent read per session limit
67202
+ if (prefetchPromises.length > 50) {
67202
67203
  const toAwait = prefetchPromises.splice(0);
67203
67204
  await Promise.all(toAwait);
67204
67205
  }
67205
67206
  }
67207
+ // Wait for the final batch to complete
67206
67208
  await Promise.all(prefetchPromises);
67207
67209
  const supplies = {};
67208
67210
  const balances = {};
@@ -69758,13 +69760,17 @@ _LedgerAtomicInterface_network = new WeakMap(), _LedgerAtomicInterface_subnet =
69758
69760
  throw (new ledger_1.KeetaNetLedgerError('LEDGER_INVALID_PERMISSIONS', `Quorum of ${foundInfo.multisigQuorum} not reached for ${multisigPubKey} -- got ${foundSingerLength}`));
69759
69761
  }
69760
69762
  }
69761
- const checkPromises = [];
69762
- for (const principalPubKey in requirementsByPrincipal) {
69763
- const accountRequirements = requirementsByPrincipal[principalPubKey];
69764
- const principal = account_1.default.fromPublicKeyString(principalPubKey);
69765
- checkPromises.push(__classPrivateFieldGet(this, _LedgerAtomicInterface_instances, "m", _LedgerAtomicInterface_checkSingleAccountPermissions).call(this, principal, accountRequirements, foundAccountInfo));
69763
+ // Process promises in batches to avoid spanner's 100 concurrent read per session limit
69764
+ const batchSize = 50;
69765
+ const principalPubKeys = Object.keys(requirementsByPrincipal);
69766
+ for (let i = 0; i < principalPubKeys.length; i += batchSize) {
69767
+ const batch = principalPubKeys.slice(i, i + batchSize).map((principalPubKey) => {
69768
+ const accountRequirements = requirementsByPrincipal[principalPubKey];
69769
+ const principal = account_1.default.fromPublicKeyString(principalPubKey);
69770
+ return (__classPrivateFieldGet(this, _LedgerAtomicInterface_instances, "m", _LedgerAtomicInterface_checkSingleAccountPermissions).call(this, principal, accountRequirements, foundAccountInfo));
69771
+ });
69772
+ await Promise.all(batch);
69766
69773
  }
69767
- await Promise.all(checkPromises);
69768
69774
  return ({ newOwners });
69769
69775
  }, _LedgerAtomicInterface_validateBlockOperations = async function _LedgerAtomicInterface_validateBlockOperations(blocks) {
69770
69776
  if (__classPrivateFieldGet(this, _LedgerAtomicInterface_operations, "f") === undefined) {
@@ -70580,8 +70586,9 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
70580
70586
  var __importDefault = (this && this.__importDefault) || function (mod) {
70581
70587
  return (mod && mod.__esModule) ? mod : { "default": mod };
70582
70588
  };
70583
- var _Log_instances, _Log_logs, _Log_autoSyncInterval, _Log_isSyncing, _Log_shouldSyncAgain, _Log_destroyed, _Log_emitOnLog, _Log_logDebugTracing, _Log_targets, _Log_log, _Log_extractArguments;
70589
+ var _Log_instances, _Log_logs, _Log_autoSyncInterval, _Log_isSyncing, _Log_shouldSyncAgain, _Log_destroyed, _Log_emitOnLog, _Log__logDebugTracing, _Log_targets, _Log__filter, _Log__logLevel, _Log_logDebugTracing_get, _Log_filter_get, _Log_logLevel_get, _Log_log, _Log_extractArguments;
70584
70590
  Object.defineProperty(exports, "__esModule", ({ value: true }));
70591
+ const common_1 = __webpack_require__(7364);
70585
70592
  const helper_generated_1 = __webpack_require__(5910);
70586
70593
  const target_console_1 = __importDefault(__webpack_require__(9022));
70587
70594
  /**
@@ -70661,7 +70668,7 @@ class Log {
70661
70668
  /**
70662
70669
  * Keep track of whether or not we are currently syncing
70663
70670
  */
70664
- _Log_isSyncing.set(this, false);
70671
+ _Log_isSyncing.set(this, null);
70665
70672
  /**
70666
70673
  * If `sync()` is called while we are syncing, we should sync again
70667
70674
  * to ensure all logs are sent
@@ -70680,18 +70687,36 @@ class Log {
70680
70687
  /**
70681
70688
  * Whether or not to generate debug tracing information for each log entry
70682
70689
  */
70683
- _Log_logDebugTracing.set(this, false);
70690
+ _Log__logDebugTracing.set(this, void 0);
70691
+ /**
70692
+ * Registered log targets (sinks) to send logs to, keyed by a unique
70693
+ * ID returned by `registerTarget()`
70694
+ */
70684
70695
  _Log_targets.set(this, new Map());
70685
70696
  /**
70686
- * The maximum number of log entries to send to each target at a time
70697
+ * Filter to apply before sending to targets
70687
70698
  */
70688
- this.batchSize = 10;
70699
+ _Log__filter.set(this, void 0);
70700
+ /**
70701
+ * Log-level to filter for at the logger level
70702
+ */
70703
+ _Log__logLevel.set(this, void 0);
70689
70704
  /**
70690
70705
  * Parent logger, if any -- used for creating hierarchical loggers
70691
70706
  */
70692
70707
  this.parent = null;
70708
+ /**
70709
+ * The maximum number of log entries to send to each target at a time
70710
+ */
70711
+ this.batchSize = 10;
70693
70712
  if (options?.logDebugTracing !== undefined) {
70694
- __classPrivateFieldSet(this, _Log_logDebugTracing, options.logDebugTracing, "f");
70713
+ __classPrivateFieldSet(this, _Log__logDebugTracing, options.logDebugTracing, "f");
70714
+ }
70715
+ if (options?.filter !== undefined) {
70716
+ __classPrivateFieldSet(this, _Log__filter, options.filter, "f");
70717
+ }
70718
+ if (options?.logLevel !== undefined) {
70719
+ __classPrivateFieldSet(this, _Log__logLevel, options.logLevel, "f");
70695
70720
  }
70696
70721
  }
70697
70722
  log(...args) {
@@ -70780,10 +70805,8 @@ class Log {
70780
70805
  * Since the child shares the same targets, registering or unregistering targets
70781
70806
  * from either the parent or child will affect both.
70782
70807
  */
70783
- createChild() {
70784
- const child = new Log({
70785
- logDebugTracing: __classPrivateFieldGet(this, _Log_logDebugTracing, "f")
70786
- });
70808
+ createChild(options) {
70809
+ const child = new Log(options);
70787
70810
  /**
70788
70811
  * Attach child nodes to our own parent to collapse
70789
70812
  * chains of loggers
@@ -70829,7 +70852,7 @@ class Log {
70829
70852
  /**
70830
70853
  * Sync all currently enqueued logs to all targets
70831
70854
  */
70832
- async sync() {
70855
+ async sync(wait = true) {
70833
70856
  /*
70834
70857
  * If there are currently no targets, do not dequeue logs
70835
70858
  * in case a target is added later; However, if there are
@@ -70845,10 +70868,13 @@ class Log {
70845
70868
  * If we are already syncing, set a flag to sync again after the current sync is done
70846
70869
  */
70847
70870
  if (__classPrivateFieldGet(this, _Log_isSyncing, "f")) {
70871
+ if (wait) {
70872
+ __classPrivateFieldSet(this, _Log_shouldSyncAgain, true, "f");
70873
+ await __classPrivateFieldGet(this, _Log_isSyncing, "f");
70874
+ }
70848
70875
  __classPrivateFieldSet(this, _Log_shouldSyncAgain, true, "f");
70849
70876
  return;
70850
70877
  }
70851
- __classPrivateFieldSet(this, _Log_isSyncing, true, "f");
70852
70878
  /*
70853
70879
  * Create a copy of the currently registered targets in case
70854
70880
  * they are modified while a sync is on-going, we use the
@@ -70859,29 +70885,59 @@ class Log {
70859
70885
  * to the registered targets at the time of the sync
70860
70886
  */
70861
70887
  const targets = [...this.targets];
70862
- do {
70863
- try {
70864
- __classPrivateFieldSet(this, _Log_shouldSyncAgain, false, "f");
70865
- while (__classPrivateFieldGet(this, _Log_logs, "f").length > 0) {
70866
- const logs = __classPrivateFieldGet(this, _Log_logs, "f").splice(0, this.batchSize);
70867
- await this.emitLogs(logs, targets);
70888
+ __classPrivateFieldSet(this, _Log_isSyncing, (async () => {
70889
+ do {
70890
+ try {
70891
+ __classPrivateFieldSet(this, _Log_shouldSyncAgain, false, "f");
70892
+ while (__classPrivateFieldGet(this, _Log_logs, "f").length > 0) {
70893
+ const logs = __classPrivateFieldGet(this, _Log_logs, "f").splice(0, this.batchSize);
70894
+ await this.emitLogs(logs, targets);
70895
+ }
70868
70896
  }
70869
- }
70870
- catch {
70871
- /* Ignore errors */
70872
- }
70873
- } while (__classPrivateFieldGet(this, _Log_shouldSyncAgain, "f"));
70874
- __classPrivateFieldSet(this, _Log_isSyncing, false, "f");
70897
+ catch {
70898
+ /* Ignore errors */
70899
+ }
70900
+ } while (__classPrivateFieldGet(this, _Log_shouldSyncAgain, "f"));
70901
+ })(), "f");
70902
+ await __classPrivateFieldGet(this, _Log_isSyncing, "f");
70903
+ __classPrivateFieldSet(this, _Log_isSyncing, null, "f");
70875
70904
  }
70876
70905
  /**
70877
70906
  * Dispose of the logger instance, clearing all logs and targets
70878
70907
  */
70879
- [(_Log_logs = new WeakMap(), _Log_autoSyncInterval = new WeakMap(), _Log_isSyncing = new WeakMap(), _Log_shouldSyncAgain = new WeakMap(), _Log_destroyed = new WeakMap(), _Log_emitOnLog = new WeakMap(), _Log_logDebugTracing = new WeakMap(), _Log_targets = new WeakMap(), _Log_instances = new WeakSet(), _Log_log = function _Log_log(level, options, from, ...args) {
70908
+ [(_Log_logs = new WeakMap(), _Log_autoSyncInterval = new WeakMap(), _Log_isSyncing = new WeakMap(), _Log_shouldSyncAgain = new WeakMap(), _Log_destroyed = new WeakMap(), _Log_emitOnLog = new WeakMap(), _Log__logDebugTracing = new WeakMap(), _Log_targets = new WeakMap(), _Log__filter = new WeakMap(), _Log__logLevel = new WeakMap(), _Log_instances = new WeakSet(), _Log_logDebugTracing_get = function _Log_logDebugTracing_get() {
70909
+ if (__classPrivateFieldGet(this, _Log__logDebugTracing, "f") !== undefined) {
70910
+ return (__classPrivateFieldGet(this, _Log__logDebugTracing, "f"));
70911
+ }
70912
+ if (this.parent) {
70913
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_logDebugTracing_get));
70914
+ }
70915
+ return (false);
70916
+ }, _Log_filter_get = function _Log_filter_get() {
70917
+ if (__classPrivateFieldGet(this, _Log__filter, "f") !== undefined) {
70918
+ return (__classPrivateFieldGet(this, _Log__filter, "f"));
70919
+ }
70920
+ if (this.parent) {
70921
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_filter_get));
70922
+ }
70923
+ return (null);
70924
+ }, _Log_logLevel_get = function _Log_logLevel_get() {
70925
+ if (__classPrivateFieldGet(this, _Log__logLevel, "f") !== undefined) {
70926
+ return (__classPrivateFieldGet(this, _Log__logLevel, "f"));
70927
+ }
70928
+ if (this.parent) {
70929
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_logLevel_get));
70930
+ }
70931
+ return ('ALL');
70932
+ }, _Log_log = function _Log_log(level, options, from, ...args) {
70880
70933
  if (__classPrivateFieldGet(this, _Log_destroyed, "f")) {
70881
70934
  return;
70882
70935
  }
70883
70936
  const log = { options, level, from, args };
70884
- if (__classPrivateFieldGet(this, _Log_logDebugTracing, "f")) {
70937
+ if ((0, common_1.filterLog)({ logLevel: __classPrivateFieldGet(this, _Log_instances, "a", _Log_logLevel_get), filter: __classPrivateFieldGet(this, _Log_instances, "a", _Log_filter_get) }, log) === null) {
70938
+ return;
70939
+ }
70940
+ if (__classPrivateFieldGet(this, _Log_instances, "a", _Log_logDebugTracing_get)) {
70885
70941
  log.trace = new Error().stack?.split('\n').slice(2).join('\n') ?? '[No stack trace available]';
70886
70942
  }
70887
70943
  __classPrivateFieldGet(this, _Log_logs, "f").push(log);
@@ -70919,7 +70975,7 @@ class Log {
70919
70975
  this.stopAutoSync();
70920
70976
  __classPrivateFieldSet(this, _Log_logs, [], "f");
70921
70977
  __classPrivateFieldGet(this, _Log_targets, "f").clear();
70922
- __classPrivateFieldSet(this, _Log_isSyncing, false, "f");
70978
+ __classPrivateFieldSet(this, _Log_isSyncing, null, "f");
70923
70979
  __classPrivateFieldSet(this, _Log_shouldSyncAgain, false, "f");
70924
70980
  __classPrivateFieldSet(this, _Log_emitOnLog, false, "f");
70925
70981
  __classPrivateFieldSet(this, _Log_destroyed, true, "f");
@@ -81283,7 +81339,7 @@ exports.Testing = { findRDN, blockHashesFromVote, feeFromVote, hashDataSchema, f
81283
81339
 
81284
81340
  Object.defineProperty(exports, "__esModule", ({ value: true }));
81285
81341
  exports.version = void 0;
81286
- exports.version = '0.18.1+gae2caf00c1e19c6d232ff1a37b9fd8e7ea8a1ddc';
81342
+ exports.version = '0.18.3+gf53e394dcd1c7187ed5ceca45df7225433f318c1';
81287
81343
  exports["default"] = exports.version;
81288
81344
 
81289
81345
 
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"
@@ -1 +1 @@
1
- window.navigationData = "eJyNz8ELgjAUx/H/5Z1XlkKIt0iREDyoncTDdC8czRnbjCD83zsETj1I5/flw/uVHzD4NhBAHBXFNY13eXHOiigEAk9qWgiA9c3QoTTaWSX71nQCCDy4ZBD4nu+fDv5IJjFBNDRFk4eJ1bqeDQK1MzsuHZdA03LBFEoIygnL8I4KZYNs27Ldip09dhEcpbFOI6jWK+fXLI2jO59306j+kWy3pQleW+ZFFaf1eprg9VLw3LEaqy/Rd5Px"
1
+ window.navigationData = "eJyNz0ELgjAYxvHvsrNlKcTwFikSggddJ/EwtzccTQ03Iwi/e4PAqQfpuvfPjz3FB2l4axSgOCLkmsa7nJwzEoXIQU+qa3PgHRsaaLVyV8m+1o003UO0HAXYx/h0wKMziQmApinoPEys1nR8kKDc2XHpeA5itZC8hxYFxYRlcAfzxIBvW7ZbsbOPXaQwe6zDJFVq5fyapXH05vNuCvp/JNttaVJUlnnRXtBqPc0kS8H3xnIsv9F3k/E="