@ethersphere/bee-js 12.2.2 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/cjs/bee.js +56 -23
  2. package/dist/cjs/chunk/cac.js +4 -2
  3. package/dist/cjs/feed/index.js +3 -1
  4. package/dist/cjs/modules/bytes.js +6 -4
  5. package/dist/cjs/modules/bzz.js +5 -4
  6. package/dist/cjs/modules/chunk.js +3 -2
  7. package/dist/cjs/modules/debug/balance.js +5 -29
  8. package/dist/cjs/modules/debug/chequebook.js +9 -58
  9. package/dist/cjs/modules/debug/connectivity.js +5 -82
  10. package/dist/cjs/modules/debug/settlements.js +3 -22
  11. package/dist/cjs/modules/debug/stake.js +8 -33
  12. package/dist/cjs/modules/debug/stamps.js +27 -53
  13. package/dist/cjs/modules/debug/states.js +6 -31
  14. package/dist/cjs/modules/debug/status.js +5 -37
  15. package/dist/cjs/modules/debug/transactions.js +5 -26
  16. package/dist/cjs/modules/envelope.js +6 -6
  17. package/dist/cjs/modules/feed.js +3 -4
  18. package/dist/cjs/modules/grantee.js +8 -10
  19. package/dist/cjs/modules/pinning.js +5 -11
  20. package/dist/cjs/modules/rchash.js +2 -3
  21. package/dist/cjs/modules/soc.js +3 -2
  22. package/dist/cjs/modules/status.js +3 -3
  23. package/dist/cjs/modules/stewardship.js +2 -3
  24. package/dist/cjs/modules/tag.js +4 -35
  25. package/dist/cjs/stamper/stamper.js +2 -1
  26. package/dist/cjs/types/schema/balance.js +14 -0
  27. package/dist/cjs/types/schema/chequebook.js +49 -0
  28. package/dist/cjs/types/schema/connectivity.js +46 -0
  29. package/dist/cjs/types/schema/envelope.js +11 -0
  30. package/dist/cjs/types/schema/grantee.js +10 -0
  31. package/dist/cjs/types/schema/pinning.js +7 -0
  32. package/dist/cjs/types/schema/rchash.js +7 -0
  33. package/dist/cjs/types/schema/settlements.js +17 -0
  34. package/dist/cjs/types/schema/stake.js +33 -0
  35. package/dist/cjs/types/schema/stamps.js +48 -0
  36. package/dist/cjs/types/schema/states.js +34 -0
  37. package/dist/cjs/types/schema/status.js +39 -0
  38. package/dist/cjs/types/schema/stewardship.js +7 -0
  39. package/dist/cjs/types/schema/tag.js +20 -0
  40. package/dist/cjs/types/schema/transactions.js +24 -0
  41. package/dist/cjs/types/schema/upload.js +8 -0
  42. package/dist/cjs/utils/bad-ports.js +92 -0
  43. package/dist/cjs/utils/bytes.js +5 -3
  44. package/dist/cjs/utils/error.js +1 -0
  45. package/dist/cjs/utils/headers.js +19 -13
  46. package/dist/cjs/utils/hex-schema.js +8 -0
  47. package/dist/cjs/utils/http.js +92 -52
  48. package/dist/cjs/utils/resource-locator.js +4 -3
  49. package/dist/cjs/utils/schema.js +88 -0
  50. package/dist/cjs/utils/stamps.js +2 -1
  51. package/dist/cjs/utils/type.js +12 -130
  52. package/dist/cjs/utils/url.js +24 -0
  53. package/dist/index.browser.min.js +1 -1
  54. package/dist/index.browser.min.js.map +1 -1
  55. package/dist/mjs/bee.js +59 -30
  56. package/dist/mjs/chunk/cac.js +5 -3
  57. package/dist/mjs/feed/index.js +4 -2
  58. package/dist/mjs/modules/bytes.js +8 -8
  59. package/dist/mjs/modules/bzz.js +6 -9
  60. package/dist/mjs/modules/chunk.js +4 -7
  61. package/dist/mjs/modules/debug/balance.js +5 -61
  62. package/dist/mjs/modules/debug/chequebook.js +9 -114
  63. package/dist/mjs/modules/debug/connectivity.js +5 -145
  64. package/dist/mjs/modules/debug/settlements.js +3 -46
  65. package/dist/mjs/modules/debug/stake.js +8 -85
  66. package/dist/mjs/modules/debug/stamps.js +24 -126
  67. package/dist/mjs/modules/debug/states.js +6 -71
  68. package/dist/mjs/modules/debug/status.js +5 -91
  69. package/dist/mjs/modules/debug/transactions.js +5 -60
  70. package/dist/mjs/modules/envelope.js +6 -20
  71. package/dist/mjs/modules/feed.js +6 -7
  72. package/dist/mjs/modules/grantee.js +8 -26
  73. package/dist/mjs/modules/pinning.js +7 -21
  74. package/dist/mjs/modules/rchash.js +2 -7
  75. package/dist/mjs/modules/soc.js +4 -5
  76. package/dist/mjs/modules/status.js +4 -4
  77. package/dist/mjs/modules/stewardship.js +2 -7
  78. package/dist/mjs/modules/tag.js +4 -93
  79. package/dist/mjs/stamper/stamper.js +2 -1
  80. package/dist/mjs/types/schema/balance.js +13 -0
  81. package/dist/mjs/types/schema/chequebook.js +53 -0
  82. package/dist/mjs/types/schema/connectivity.js +41 -0
  83. package/dist/mjs/types/schema/envelope.js +8 -0
  84. package/dist/mjs/types/schema/grantee.js +7 -0
  85. package/dist/mjs/types/schema/pinning.js +4 -0
  86. package/dist/mjs/types/schema/rchash.js +4 -0
  87. package/dist/mjs/types/schema/settlements.js +22 -0
  88. package/dist/mjs/types/schema/stake.js +40 -0
  89. package/dist/mjs/types/schema/stamps.js +47 -0
  90. package/dist/mjs/types/schema/states.js +34 -0
  91. package/dist/mjs/types/schema/status.js +36 -0
  92. package/dist/mjs/types/schema/stewardship.js +4 -0
  93. package/dist/mjs/types/schema/tag.js +14 -0
  94. package/dist/mjs/types/schema/transactions.js +25 -0
  95. package/dist/mjs/types/schema/upload.js +5 -0
  96. package/dist/mjs/utils/bad-ports.js +6 -0
  97. package/dist/mjs/utils/bytes.js +6 -8
  98. package/dist/mjs/utils/error.js +5 -0
  99. package/dist/mjs/utils/headers.js +19 -13
  100. package/dist/mjs/utils/hex-schema.js +2 -0
  101. package/dist/mjs/utils/http.js +97 -59
  102. package/dist/mjs/utils/resource-locator.js +4 -3
  103. package/dist/mjs/utils/schema.js +81 -0
  104. package/dist/mjs/utils/stamps.js +2 -1
  105. package/dist/mjs/utils/type.js +13 -233
  106. package/dist/mjs/utils/url.js +23 -0
  107. package/dist/types/bee.d.ts +23 -0
  108. package/dist/types/modules/debug/connectivity.d.ts +2 -2
  109. package/dist/types/modules/debug/stamps.d.ts +2 -0
  110. package/dist/types/types/debug.d.ts +1 -0
  111. package/dist/types/types/schema/balance.d.ts +12 -0
  112. package/dist/types/types/schema/chequebook.d.ts +104 -0
  113. package/dist/types/types/schema/connectivity.d.ts +49 -0
  114. package/dist/types/types/schema/envelope.d.ts +7 -0
  115. package/dist/types/types/schema/grantee.d.ts +7 -0
  116. package/dist/types/types/schema/pinning.d.ts +4 -0
  117. package/dist/types/types/schema/rchash.d.ts +4 -0
  118. package/dist/types/types/schema/settlements.d.ts +16 -0
  119. package/dist/types/types/schema/stake.d.ts +29 -0
  120. package/dist/types/types/schema/stamps.d.ts +77 -0
  121. package/dist/types/types/schema/states.d.ts +26 -0
  122. package/dist/types/types/schema/status.d.ts +38 -0
  123. package/dist/types/types/schema/stewardship.d.ts +4 -0
  124. package/dist/types/types/schema/tag.d.ts +23 -0
  125. package/dist/types/types/schema/transactions.d.ts +29 -0
  126. package/dist/types/types/schema/upload.d.ts +5 -0
  127. package/dist/types/utils/bad-ports.d.ts +6 -0
  128. package/dist/types/utils/error.d.ts +5 -0
  129. package/dist/types/utils/hex-schema.d.ts +2 -0
  130. package/dist/types/utils/http.d.ts +18 -3
  131. package/dist/types/utils/schema.d.ts +90 -0
  132. package/dist/types/utils/stamps.d.ts +1 -0
  133. package/dist/types/utils/tar-uploader.browser.d.ts +1 -1
  134. package/dist/types/utils/tar-uploader.d.ts +1 -1
  135. package/dist/types/utils/type.d.ts +1 -16
  136. package/dist/types/utils/url.d.ts +9 -0
  137. package/package.json +9 -9
@@ -35,26 +35,13 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.isReadable = isReadable;
37
37
  exports.asNumberString = asNumberString;
38
- exports.prepareBeeRequestOptions = prepareBeeRequestOptions;
39
- exports.prepareDownloadOptions = prepareDownloadOptions;
40
- exports.prepareUploadOptions = prepareUploadOptions;
41
- exports.prepareRedundantUploadOptions = prepareRedundantUploadOptions;
42
- exports.prepareFileUploadOptions = prepareFileUploadOptions;
43
- exports.prepareCollectionUploadOptions = prepareCollectionUploadOptions;
44
38
  exports.isTag = isTag;
45
- exports.preparePssMessageHandler = preparePssMessageHandler;
46
- exports.prepareGsocMessageHandler = prepareGsocMessageHandler;
47
- exports.preparePostageBatchOptions = preparePostageBatchOptions;
48
- exports.prepareTransactionOptions = prepareTransactionOptions;
49
39
  exports.assertData = assertData;
50
40
  exports.assertFileData = assertFileData;
51
- exports.prepareAllTagsOptions = prepareAllTagsOptions;
52
41
  exports.makeTagUid = makeTagUid;
53
- const cafe_utility_1 = require("cafe-utility");
54
42
  const stream = __importStar(require("stream"));
55
- const types_1 = require("../types");
56
43
  const file_1 = require("./file");
57
- const typed_bytes_1 = require("./typed-bytes");
44
+ const schema_1 = require("./schema");
58
45
  function isReadable(value) {
59
46
  return typeof stream.Readable !== 'undefined' && value instanceof stream.Readable;
60
47
  }
@@ -62,113 +49,19 @@ function asNumberString(value, options) {
62
49
  if (typeof value === 'bigint') {
63
50
  value = value.toString();
64
51
  }
65
- return cafe_utility_1.Types.asIntegerString(value, options);
66
- }
67
- function prepareBeeRequestOptions(value) {
68
- const object = cafe_utility_1.Types.asObject(value, { name: 'BeeRequestOptions' });
69
- return {
70
- baseURL: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asString(x, { name: 'baseURL' }), object.baseURL),
71
- timeout: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'timeout', min: 0 }), object.timeout),
72
- headers: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asStringMap(x, { name: 'headers' }), object.headers),
73
- onRequest: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asFunction(x, { name: 'onRequest' }), object.onRequest),
74
- httpAgent: object.httpAgent,
75
- httpsAgent: object.httpsAgent,
76
- endlesslyRetry: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'endlesslyRetry' }), object.endlesslyRetry),
77
- signal: object.signal,
78
- };
79
- }
80
- function prepareDownloadOptions(value) {
81
- const object = cafe_utility_1.Types.asObject(value, { name: 'DownloadOptions' });
82
- return {
83
- redundancyStrategy: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'redundancyStrategy' }), object.redundancyStrategy),
84
- fallback: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'fallback' }), object.fallback),
85
- timeoutMs: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'timeoutMs', min: 0 }), object.timeoutMs),
86
- actPublisher: cafe_utility_1.Types.asOptional(x => new typed_bytes_1.PublicKey(x), object.actPublisher),
87
- actHistoryAddress: cafe_utility_1.Types.asOptional(x => new typed_bytes_1.Reference(x), object.actHistoryAddress),
88
- actTimestamp: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asNumber(x, { name: 'actTimestamp' }), object.actTimestamp),
89
- };
90
- }
91
- function prepareUploadOptions(value, name = 'UploadOptions') {
92
- const object = cafe_utility_1.Types.asObject(value, { name });
93
- return {
94
- act: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'act' }), object.act),
95
- actHistoryAddress: cafe_utility_1.Types.asOptional(x => new typed_bytes_1.Reference(x), object.actHistoryAddress),
96
- deferred: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'deferred' }), object.deferred),
97
- encrypt: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'encrypt' }), object.encrypt),
98
- pin: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'pin' }), object.pin),
99
- tag: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'tag', min: 0 }), object.tag),
100
- };
101
- }
102
- function prepareRedundantUploadOptions(value, name = 'UploadOptions') {
103
- const uploadOptions = prepareUploadOptions(value, name);
104
- const object = cafe_utility_1.Types.asObject(value, { name });
105
- return {
106
- ...uploadOptions,
107
- redundancyLevel: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'redundancyLevel', min: 0 }), object.redundancyLevel),
108
- };
109
- }
110
- function prepareFileUploadOptions(value) {
111
- const uploadOptions = prepareUploadOptions(value, 'FileUploadOptions');
112
- const object = cafe_utility_1.Types.asObject(value, { name: 'FileUploadOptions' });
113
- return {
114
- ...uploadOptions,
115
- size: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'size', min: 0 }), object.size),
116
- contentType: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asString(x, { name: 'contentType' }), object.contentType),
117
- redundancyLevel: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'redundancyLevel', min: 0 }), object.redundancyLevel),
118
- };
119
- }
120
- function prepareCollectionUploadOptions(value) {
121
- const uploadOptions = prepareUploadOptions(value, 'CollectionUploadOptions');
122
- const object = cafe_utility_1.Types.asObject(value, { name: 'CollectionUploadOptions' });
123
- return {
124
- ...uploadOptions,
125
- errorDocument: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asString(x, { name: 'errorDocument' }), object.errorDocument),
126
- indexDocument: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asString(x, { name: 'indexDocument' }), object.indexDocument),
127
- redundancyLevel: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'redundancyLevel', min: 0 }), object.redundancyLevel),
128
- };
129
- }
130
- function isTag(value) {
131
- try {
132
- const object = cafe_utility_1.Types.asObject(value, { name: 'Tag' });
133
- cafe_utility_1.Types.asInteger(object.uid, { name: 'Tag.uid' });
134
- return true;
52
+ if (typeof value !== 'string' || !/^-?\d+$/.test(value)) {
53
+ throw new TypeError(`${options?.name ?? 'value'} is not a valid integer string, got: ${value}`);
135
54
  }
136
- catch {
137
- return false;
55
+ if (options?.min !== undefined && BigInt(value) < options.min) {
56
+ throw new RangeError(`${options?.name ?? 'value'} must be >= ${options.min}, got: ${value}`);
138
57
  }
58
+ if (options?.max !== undefined && BigInt(value) > options.max) {
59
+ throw new RangeError(`${options?.name ?? 'value'} must be <= ${options.max}, got: ${value}`);
60
+ }
61
+ return value;
139
62
  }
140
- function preparePssMessageHandler(value) {
141
- const object = cafe_utility_1.Types.asObject(value, { name: 'PssMessageHandler' });
142
- return {
143
- onMessage: cafe_utility_1.Types.asFunction(object.onMessage, { name: 'onMessage' }),
144
- onError: cafe_utility_1.Types.asFunction(object.onError, { name: 'onError' }),
145
- onClose: cafe_utility_1.Types.asFunction(object.onClose, { name: 'onClose' }),
146
- };
147
- }
148
- function prepareGsocMessageHandler(value) {
149
- const object = cafe_utility_1.Types.asObject(value, { name: 'GsocMessageHandler' });
150
- return {
151
- onMessage: cafe_utility_1.Types.asFunction(object.onMessage, { name: 'onMessage' }),
152
- onError: cafe_utility_1.Types.asFunction(object.onError, { name: 'onError' }),
153
- onClose: cafe_utility_1.Types.asFunction(object.onClose, { name: 'onClose' }),
154
- };
155
- }
156
- function preparePostageBatchOptions(value) {
157
- const object = cafe_utility_1.Types.asObject(value, { name: 'PostageBatchOptions' });
158
- return {
159
- gasPrice: cafe_utility_1.Types.asOptional(x => asNumberString(x, { name: 'gasPrice' }), object.gasPrice),
160
- immutableFlag: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'immutableFlag' }), object.immutableFlag),
161
- label: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asString(x, { name: 'label' }), object.label),
162
- waitForUsable: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asBoolean(x, { name: 'waitForUsable' }), object.waitForUsable),
163
- waitForUsableTimeout: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'waitForUsableTimeout', min: 0 }), object.waitForUsableTimeout),
164
- };
165
- }
166
- function prepareTransactionOptions(value, name = 'TransactionOptions') {
167
- const object = cafe_utility_1.Types.asObject(value, { name });
168
- return {
169
- gasLimit: cafe_utility_1.Types.asOptional(x => asNumberString(x, { name: 'gasLimit', min: 0n }), object.gasLimit),
170
- gasPrice: cafe_utility_1.Types.asOptional(x => asNumberString(x, { name: 'gasPrice', min: 0n }), object.gasPrice),
171
- };
63
+ function isTag(value) {
64
+ return schema_1.TagInputSchema.safeParse(value).success;
172
65
  }
173
66
  /**
174
67
  * Check whether the given parameter is valid data to upload
@@ -190,17 +83,6 @@ function assertFileData(value) {
190
83
  throw new TypeError('Data must be either string, Readable, Uint8Array or File!');
191
84
  }
192
85
  }
193
- /**
194
- * Checks whether optional options for AllTags query are valid
195
- * @param options
196
- */
197
- function prepareAllTagsOptions(value) {
198
- const object = cafe_utility_1.Types.asObject(value, { name: 'AllTagsOptions' });
199
- return {
200
- limit: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'limit', min: types_1.TAGS_LIMIT_MIN, max: types_1.TAGS_LIMIT_MAX }), object.limit),
201
- offset: cafe_utility_1.Types.asOptional(x => cafe_utility_1.Types.asInteger(x, { name: 'offset', min: 0 }), object.offset),
202
- };
203
- }
204
86
  /**
205
87
  * Utility functions that return Tag UID
206
88
  * @param tagUid
@@ -213,7 +95,7 @@ function makeTagUid(tagUid) {
213
95
  return tagUid.uid;
214
96
  }
215
97
  else if (typeof tagUid === 'number' || typeof tagUid === 'string') {
216
- return cafe_utility_1.Types.asNumber(tagUid, { name: 'tagUid', min: 0 });
98
+ return schema_1.TagUidSchema.parse(tagUid);
217
99
  }
218
100
  throw new TypeError(`Expected number | Tag | string from tagUid, got: ${tagUid}`);
219
101
  }
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isValidBeeUrl = isValidBeeUrl;
4
+ exports.isValidBeePort = isValidBeePort;
4
5
  exports.assertBeeUrl = assertBeeUrl;
5
6
  exports.stripLastSlash = stripLastSlash;
7
+ const bad_ports_1 = require("./bad-ports");
6
8
  const error_1 = require("./error");
7
9
  /**
8
10
  * Validates that passed string is valid URL of Bee.
@@ -23,6 +25,24 @@ function isValidBeeUrl(url) {
23
25
  return false;
24
26
  }
25
27
  }
28
+ /**
29
+ * Validates that passed string is valid port to use Bee and is not a bad port.
30
+ * We support only HTTP and HTTPS protocols. Bad ports are defined in
31
+ * the WHATWG Fetch spec (https://fetch.spec.whatwg.org/#port-blocking)
32
+ * and are blocked for HTTP/HTTPS requests.
33
+ *
34
+ * @param port
35
+ */
36
+ function isValidBeePort(port) {
37
+ if (typeof port !== 'string') {
38
+ return false;
39
+ }
40
+ if (bad_ports_1.BAD_PORTS.includes(port)) {
41
+ return false;
42
+ }
43
+ const portNumber = parseInt(port, 10);
44
+ return portNumber > 0 && portNumber < 65536 && !isNaN(portNumber);
45
+ }
26
46
  /**
27
47
  * Validates that passed string is valid URL of Bee, if not it throws BeeArgumentError.
28
48
  * We support only HTTP and HTTPS protocols.
@@ -33,6 +53,10 @@ function assertBeeUrl(url) {
33
53
  if (!isValidBeeUrl(url)) {
34
54
  throw new error_1.BeeArgumentError('URL is not valid!', url);
35
55
  }
56
+ const port = new URL(url).port;
57
+ if (port && !isValidBeePort(port)) {
58
+ throw new error_1.BeeArgumentError('Port in URL is considered bad port and cannot be used!', port);
59
+ }
36
60
  }
37
61
  /**
38
62
  * Removes trailing slash out of the given string.