@keetanetwork/keetanet-client 0.18.1 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/client/index-browser.js +120 -58
  2. package/client/index.js +69 -19
  3. package/docs/assets/hierarchy.js +1 -1
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/KeetaNetSDK.Referenced.BaseSet.html +1 -1
  6. package/docs/classes/KeetaNetSDK.Referenced.BaseVoteBuilder.html +1 -1
  7. package/docs/classes/KeetaNetSDK.Referenced.BlockOperation.html +1 -1
  8. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationCREATE_IDENTIFIER.html +1 -1
  9. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMANAGE_CERTIFICATE.html +1 -1
  10. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationMODIFY_PERMISSIONS.html +1 -1
  11. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationRECEIVE.html +1 -1
  12. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSEND.html +1 -1
  13. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_INFO.html +1 -1
  14. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationSET_REP.html +1 -1
  15. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_MODIFY_BALANCE.html +1 -1
  16. package/docs/classes/KeetaNetSDK.Referenced.BlockOperationTOKEN_ADMIN_SUPPLY.html +1 -1
  17. package/docs/classes/KeetaNetSDK.Referenced.ECDSAKeyPair.html +1 -1
  18. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1KeyPair.html +1 -1
  19. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PrivateKey.html +1 -1
  20. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1PublicKey.html +1 -1
  21. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256K1Signature.html +1 -1
  22. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1KeyPair.html +1 -1
  23. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PrivateKey.html +1 -1
  24. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1PublicKey.html +1 -1
  25. package/docs/classes/KeetaNetSDK.Referenced.ECDSASECP256R1Signature.html +1 -1
  26. package/docs/classes/KeetaNetSDK.Referenced.ED25519KeyPair.html +1 -1
  27. package/docs/classes/KeetaNetSDK.Referenced.ED25519PrivateKey.html +1 -1
  28. package/docs/classes/KeetaNetSDK.Referenced.ED25519PublicKey.html +1 -1
  29. package/docs/classes/KeetaNetSDK.Referenced.ED25519Signature.html +1 -1
  30. package/docs/classes/KeetaNetSDK.Referenced.ExternalKeyPair.html +1 -1
  31. package/docs/classes/KeetaNetSDK.Referenced.ExternalSet.html +1 -1
  32. package/docs/classes/KeetaNetSDK.Referenced.IdempotentKey.html +1 -1
  33. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKey.html +1 -1
  34. package/docs/classes/KeetaNetSDK.Referenced.IdentifierKeyPair.html +1 -1
  35. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetErrorBase.html +1 -1
  36. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerError.html +1 -1
  37. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerIdempotentKeyError.html +1 -1
  38. package/docs/classes/KeetaNetSDK.Referenced.KeetaNetLedgerVoteError.html +1 -1
  39. package/docs/classes/KeetaNetSDK.Referenced.KeyInterface.html +1 -1
  40. package/docs/classes/KeetaNetSDK.Referenced.KeyStorage.html +1 -1
  41. package/docs/classes/KeetaNetSDK.Referenced.Log.html +2 -2
  42. package/docs/classes/KeetaNetSDK.Referenced.PermissionSetHolder.html +1 -1
  43. package/docs/classes/KeetaNetSDK.Referenced.PossiblyExpiredVote.html +1 -1
  44. package/docs/classes/KeetaNetSDK.Referenced.PossiblyUnsignedBlock.html +1 -1
  45. package/docs/classes/KeetaNetSDK.Referenced.SignatureStorage.html +1 -1
  46. package/docs/classes/KeetaNetSDK.Referenced.Stats.html +1 -1
  47. package/docs/classes/KeetaNetSDK.Referenced.StatsPending.html +1 -1
  48. package/docs/classes/KeetaNetSDK.Referenced.UnsignedBlock.html +1 -1
  49. package/docs/classes/KeetaNetSDK.Referenced.VoteBlockBundle.html +1 -1
  50. package/docs/classes/KeetaNetSDK.Referenced.VoteBuilder.html +1 -1
  51. package/docs/classes/KeetaNetSDK.Referenced.VoteHash.html +1 -1
  52. package/docs/classes/KeetaNetSDK.Referenced.VoteLikeBase.html +1 -1
  53. package/docs/classes/KeetaNetSDK.Referenced.VoteQuoteBuilder.html +1 -1
  54. package/docs/classes/KeetaNetSDK.Referenced.VoteStapleHash.html +1 -1
  55. package/docs/classes/KeetaNetSDK.Referenced.src_lib_utils_buffer.BufferStorage.html +1 -1
  56. package/docs/hierarchy.html +1 -1
  57. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ExplicitContextTag.html +1 -1
  58. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1ImplicitContextTag.html +1 -1
  59. package/docs/interfaces/KeetaNetSDK.Referenced.ASN1Object.html +1 -1
  60. package/docs/interfaces/KeetaNetSDK.Referenced.AccountACLRow.html +1 -1
  61. package/docs/interfaces/KeetaNetSDK.Referenced.BaseACLRow.html +1 -1
  62. package/docs/interfaces/KeetaNetSDK.Referenced.BaseAccountInfo.html +1 -1
  63. package/docs/interfaces/KeetaNetSDK.Referenced.BaseExternalKeyPairFunctions.html +1 -1
  64. package/docs/interfaces/KeetaNetSDK.Referenced.BaseGenerationConfig.html +1 -1
  65. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierAccountInfo.html +1 -1
  66. package/docs/interfaces/KeetaNetSDK.Referenced.BaseIdentifierCreateArguments.html +1 -1
  67. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperation.html +1 -1
  68. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationCREATE_IDENTIFIER.html +1 -1
  69. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMANAGE_CERTIFICATE.html +1 -1
  70. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationMODIFY_PERMISSIONS.html +1 -1
  71. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationRECEIVE.html +1 -1
  72. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSEND.html +1 -1
  73. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_INFO.html +1 -1
  74. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationSET_REP.html +1 -1
  75. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_MODIFY_BALANCE.html +1 -1
  76. package/docs/interfaces/KeetaNetSDK.Referenced.BlockJSONOperationTOKEN_ADMIN_SUPPLY.html +1 -1
  77. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV1Canonical.html +1 -1
  78. package/docs/interfaces/KeetaNetSDK.Referenced.BlockV2Canonical.html +1 -1
  79. package/docs/interfaces/KeetaNetSDK.Referenced.CertificateACLRow.html +1 -1
  80. package/docs/interfaces/KeetaNetSDK.Referenced.Constructor.html +1 -1
  81. package/docs/interfaces/KeetaNetSDK.Referenced.DisposableTimingHandle.html +1 -1
  82. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256K1AccountInfo.html +1 -1
  83. package/docs/interfaces/KeetaNetSDK.Referenced.ECDSA_SECP256R1AccountInfo.html +1 -1
  84. package/docs/interfaces/KeetaNetSDK.Referenced.ED25519AccountInfo.html +1 -1
  85. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsNoEncryption.html +1 -1
  86. package/docs/interfaces/KeetaNetSDK.Referenced.ExternalKeyPairFunctionsSupportsEncryption.html +1 -1
  87. package/docs/interfaces/KeetaNetSDK.Referenced.InitialConfigSupply.html +1 -1
  88. package/docs/interfaces/KeetaNetSDK.Referenced.InstanceSet.html +1 -1
  89. package/docs/interfaces/KeetaNetSDK.Referenced.KVGenericOptionsType.html +1 -1
  90. package/docs/interfaces/KeetaNetSDK.Referenced.KVSetOptionsType.html +1 -1
  91. package/docs/interfaces/KeetaNetSDK.Referenced.ModifyTokenBalanceEntry.html +1 -1
  92. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigAccountInfo.html +1 -1
  93. package/docs/interfaces/KeetaNetSDK.Referenced.MultisigConfig.html +1 -1
  94. package/docs/interfaces/KeetaNetSDK.Referenced.NumericValueEntry.html +1 -1
  95. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerBase.html +1 -1
  96. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerListener.html +1 -1
  97. package/docs/interfaces/KeetaNetSDK.Referenced.P2PPeerRepBase.html +1 -1
  98. package/docs/interfaces/KeetaNetSDK.Referenced.PublicKeyStorage.html +1 -1
  99. package/docs/interfaces/KeetaNetSDK.Referenced.RequestTokenReceiveEntry.html +1 -1
  100. package/docs/interfaces/KeetaNetSDK.Referenced.StorageAccountInfo.html +1 -1
  101. package/docs/interfaces/KeetaNetSDK.Referenced.TokenAccountInfo.html +1 -1
  102. package/docs/interfaces/KeetaNetSDK.Referenced.TokenNumericEntry.html +1 -1
  103. package/docs/interfaces/KeetaNetSDK.Referenced.WithIsInstance.html +1 -1
  104. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1BitString.html +1 -1
  105. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Date.html +1 -1
  106. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1OID.html +1 -1
  107. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Set.html +1 -1
  108. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1String.html +1 -1
  109. package/docs/interfaces/KeetaNetSDK.Referenced.src_lib_utils_asn1.ASN1Struct.html +1 -1
  110. package/docs/types/KeetaNetSDK.Referenced.LogOptions.html +13 -3
  111. package/lib/log/common.d.ts +1 -1
  112. package/lib/log/index.d.ts +21 -6
  113. package/lib/utils/external-keys/passkey-prf.js +100 -21
  114. package/npm-shrinkwrap.json +10 -17
  115. package/package.json +2 -2
  116. 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
  /**
@@ -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
@@ -127666,6 +127690,33 @@ class client_Log {
127666
127690
  client_log_classPrivateFieldSet(client_destroyed, this, true);
127667
127691
  }
127668
127692
  }
127693
+ function client_get_logDebugTracing(_this) {
127694
+ if (client_log_classPrivateFieldGet(client_logDebugTracing, _this) !== undefined) {
127695
+ return client_log_classPrivateFieldGet(client_logDebugTracing, _this);
127696
+ }
127697
+ if (_this.parent) {
127698
+ return client_log_classPrivateGetter(client_Log_brand, _this.parent, client_get_logDebugTracing);
127699
+ }
127700
+ return false;
127701
+ }
127702
+ function client_get_filter(_this2) {
127703
+ if (client_log_classPrivateFieldGet(client_filter, _this2) !== undefined) {
127704
+ return client_log_classPrivateFieldGet(client_filter, _this2);
127705
+ }
127706
+ if (_this2.parent) {
127707
+ return client_log_classPrivateGetter(client_Log_brand, _this2.parent, client_get_filter);
127708
+ }
127709
+ return null;
127710
+ }
127711
+ function client_get_logLevel(_this3) {
127712
+ if (client_log_classPrivateFieldGet(client_logLevel, _this3) !== undefined) {
127713
+ return client_log_classPrivateFieldGet(client_logLevel, _this3);
127714
+ }
127715
+ if (_this3.parent) {
127716
+ return client_log_classPrivateGetter(client_Log_brand, _this3.parent, client_get_logLevel);
127717
+ }
127718
+ return 'ALL';
127719
+ }
127669
127720
  function client_log_log(level, options, from) {
127670
127721
  if (client_log_classPrivateFieldGet(client_destroyed, this)) {
127671
127722
  return;
@@ -127679,7 +127730,13 @@ function client_log_log(level, options, from) {
127679
127730
  from,
127680
127731
  args
127681
127732
  };
127682
- if (client_log_classPrivateFieldGet(client_logDebugTracing, this)) {
127733
+ if (client_filterLog({
127734
+ logLevel: client_log_classPrivateGetter(client_Log_brand, this, client_get_logLevel),
127735
+ filter: client_log_classPrivateGetter(client_Log_brand, this, client_get_filter)
127736
+ }, log) === null) {
127737
+ return;
127738
+ }
127739
+ if (client_log_classPrivateGetter(client_Log_brand, this, client_get_logDebugTracing)) {
127683
127740
  var _Error$stack$split$sl, _Error$stack;
127684
127741
  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
127742
  }
@@ -129501,13 +129558,18 @@ async function client_checkPermissionRequirements(effects) {
129501
129558
  throw new client_ledger_KeetaNetLedgerError('LEDGER_INVALID_PERMISSIONS', `Quorum of ${foundInfo.multisigQuorum} not reached for ${multisigPubKey} -- got ${foundSingerLength}`);
129502
129559
  }
129503
129560
  }
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));
129561
+
129562
+ // Process promises in batches to avoid spanner's 100 concurrent read per session limit
129563
+ const batchSize = 50;
129564
+ const principalPubKeys = Object.keys(requirementsByPrincipal);
129565
+ for (let i = 0; i < principalPubKeys.length; i += batchSize) {
129566
+ const batch = principalPubKeys.slice(i, i + batchSize).map(principalPubKey => {
129567
+ const accountRequirements = requirementsByPrincipal[principalPubKey];
129568
+ const principal = client_lib_account.fromPublicKeyString(principalPubKey);
129569
+ return client_ledger_assertClassBrand(client_LedgerAtomicInterface_brand, this, client_checkSingleAccountPermissions).call(this, principal, accountRequirements, foundAccountInfo);
129570
+ });
129571
+ await Promise.all(batch);
129509
129572
  }
129510
- await Promise.all(checkPromises);
129511
129573
  return {
129512
129574
  newOwners
129513
129575
  };
@@ -130256,7 +130318,7 @@ client_lib_ledger_defineProperty(src_client_Ledger, "isInstance", client_checkab
130256
130318
  // EXTERNAL MODULE: ws (ignored)
130257
130319
  var client_ws_ignored_ = __webpack_require__(4708);
130258
130320
  ;// ./src/version.ts
130259
- const client_version = '0.18.1+gae2caf00c1e19c6d232ff1a37b9fd8e7ea8a1ddc';
130321
+ const client_version = '0.18.2+gac0baac4139da80613edd4a1ebc7532f37fc834a';
130260
130322
  /* harmony default export */ const client_src_version = ((/* unused pure expression or super */ null && (client_version)));
130261
130323
  ;// ./src/lib/p2p.ts
130262
130324
  /* 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
  /**
@@ -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
@@ -70876,12 +70899,39 @@ class Log {
70876
70899
  /**
70877
70900
  * Dispose of the logger instance, clearing all logs and targets
70878
70901
  */
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) {
70902
+ [(_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() {
70903
+ if (__classPrivateFieldGet(this, _Log__logDebugTracing, "f") !== undefined) {
70904
+ return (__classPrivateFieldGet(this, _Log__logDebugTracing, "f"));
70905
+ }
70906
+ if (this.parent) {
70907
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_logDebugTracing_get));
70908
+ }
70909
+ return (false);
70910
+ }, _Log_filter_get = function _Log_filter_get() {
70911
+ if (__classPrivateFieldGet(this, _Log__filter, "f") !== undefined) {
70912
+ return (__classPrivateFieldGet(this, _Log__filter, "f"));
70913
+ }
70914
+ if (this.parent) {
70915
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_filter_get));
70916
+ }
70917
+ return (null);
70918
+ }, _Log_logLevel_get = function _Log_logLevel_get() {
70919
+ if (__classPrivateFieldGet(this, _Log__logLevel, "f") !== undefined) {
70920
+ return (__classPrivateFieldGet(this, _Log__logLevel, "f"));
70921
+ }
70922
+ if (this.parent) {
70923
+ return (__classPrivateFieldGet(this.parent, _Log_instances, "a", _Log_logLevel_get));
70924
+ }
70925
+ return ('ALL');
70926
+ }, _Log_log = function _Log_log(level, options, from, ...args) {
70880
70927
  if (__classPrivateFieldGet(this, _Log_destroyed, "f")) {
70881
70928
  return;
70882
70929
  }
70883
70930
  const log = { options, level, from, args };
70884
- if (__classPrivateFieldGet(this, _Log_logDebugTracing, "f")) {
70931
+ 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) {
70932
+ return;
70933
+ }
70934
+ if (__classPrivateFieldGet(this, _Log_instances, "a", _Log_logDebugTracing_get)) {
70885
70935
  log.trace = new Error().stack?.split('\n').slice(2).join('\n') ?? '[No stack trace available]';
70886
70936
  }
70887
70937
  __classPrivateFieldGet(this, _Log_logs, "f").push(log);
@@ -81283,7 +81333,7 @@ exports.Testing = { findRDN, blockHashesFromVote, feeFromVote, hashDataSchema, f
81283
81333
 
81284
81334
  Object.defineProperty(exports, "__esModule", ({ value: true }));
81285
81335
  exports.version = void 0;
81286
- exports.version = '0.18.1+gae2caf00c1e19c6d232ff1a37b9fd8e7ea8a1ddc';
81336
+ exports.version = '0.18.2+gac0baac4139da80613edd4a1ebc7532f37fc834a';
81287
81337
  exports["default"] = exports.version;
81288
81338
 
81289
81339
 
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"