diff --git a/.yarn/cache/ansi-sequence-parser-npm-1.1.0-166d719777-b9a9bd4ce0.zip b/.yarn/cache/ansi-sequence-parser-npm-1.1.0-166d719777-b9a9bd4ce0.zip deleted file mode 100644 index e4356784..00000000 Binary files a/.yarn/cache/ansi-sequence-parser-npm-1.1.0-166d719777-b9a9bd4ce0.zip and /dev/null differ diff --git a/.yarn/cache/handlebars-npm-4.7.7-a9ccfabf80-617b1e689b.zip b/.yarn/cache/handlebars-npm-4.7.7-a9ccfabf80-617b1e689b.zip deleted file mode 100644 index 8e130ccb..00000000 Binary files a/.yarn/cache/handlebars-npm-4.7.7-a9ccfabf80-617b1e689b.zip and /dev/null differ diff --git a/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-f2f6db34c0.zip b/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-f2f6db34c0.zip deleted file mode 100644 index b8e085b7..00000000 Binary files a/.yarn/cache/lunr-npm-2.3.9-fa3aa9c2d6-f2f6db34c0.zip and /dev/null differ diff --git a/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-c830bb4cb3.zip b/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-c830bb4cb3.zip deleted file mode 100644 index 20e417a2..00000000 Binary files a/.yarn/cache/marked-npm-4.3.0-e7ef9e874f-c830bb4cb3.zip and /dev/null differ diff --git a/.yarn/cache/minimatch-npm-9.0.3-69d7d6fad5-c81b47d281.zip b/.yarn/cache/minimatch-npm-9.0.3-69d7d6fad5-c81b47d281.zip deleted file mode 100644 index dc6ab168..00000000 Binary files a/.yarn/cache/minimatch-npm-9.0.3-69d7d6fad5-c81b47d281.zip and /dev/null differ diff --git a/.yarn/cache/minimist-npm-1.2.7-51d33b1371-0202378a8e.zip b/.yarn/cache/minimist-npm-1.2.7-51d33b1371-0202378a8e.zip deleted file mode 100644 index 47fd8ad8..00000000 Binary files a/.yarn/cache/minimist-npm-1.2.7-51d33b1371-0202378a8e.zip and /dev/null differ diff --git a/.yarn/cache/neo-async-npm-2.6.2-75d6902586-1a7948fea8.zip b/.yarn/cache/neo-async-npm-2.6.2-75d6902586-1a7948fea8.zip deleted file mode 100644 index 5aae9af6..00000000 Binary files a/.yarn/cache/neo-async-npm-2.6.2-75d6902586-1a7948fea8.zip and /dev/null differ diff --git a/.yarn/cache/shiki-npm-0.14.1-f41a21e5be-6256651a5d.zip b/.yarn/cache/shiki-npm-0.14.1-f41a21e5be-6256651a5d.zip deleted file mode 100644 index 5bf1ab98..00000000 Binary files a/.yarn/cache/shiki-npm-0.14.1-f41a21e5be-6256651a5d.zip and /dev/null differ diff --git a/.yarn/cache/typedoc-github-wiki-theme-npm-1.1.0-dabbd86f5f-84661e8c1a.zip b/.yarn/cache/typedoc-github-wiki-theme-npm-1.1.0-dabbd86f5f-84661e8c1a.zip deleted file mode 100644 index 8fb7bd98..00000000 Binary files a/.yarn/cache/typedoc-github-wiki-theme-npm-1.1.0-dabbd86f5f-84661e8c1a.zip and /dev/null differ diff --git a/.yarn/cache/typedoc-npm-0.25.2-b2f4567e10-ba579427d0.zip b/.yarn/cache/typedoc-npm-0.25.2-b2f4567e10-ba579427d0.zip deleted file mode 100644 index a9f3f9d3..00000000 Binary files a/.yarn/cache/typedoc-npm-0.25.2-b2f4567e10-ba579427d0.zip and /dev/null differ diff --git a/.yarn/cache/typedoc-plugin-markdown-npm-3.16.0-db041bab98-1e9919ecf0.zip b/.yarn/cache/typedoc-plugin-markdown-npm-3.16.0-db041bab98-1e9919ecf0.zip deleted file mode 100644 index 961484ba..00000000 Binary files a/.yarn/cache/typedoc-plugin-markdown-npm-3.16.0-db041bab98-1e9919ecf0.zip and /dev/null differ diff --git a/.yarn/cache/uglify-js-npm-3.17.4-58d4ab56aa-4c0b800e0f.zip b/.yarn/cache/uglify-js-npm-3.17.4-58d4ab56aa-4c0b800e0f.zip deleted file mode 100644 index aadaa7ed..00000000 Binary files a/.yarn/cache/uglify-js-npm-3.17.4-58d4ab56aa-4c0b800e0f.zip and /dev/null differ diff --git a/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-7da9d21459.zip b/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-7da9d21459.zip deleted file mode 100644 index 5ea1a7b8..00000000 Binary files a/.yarn/cache/vscode-oniguruma-npm-1.7.0-07cc55fbcc-7da9d21459.zip and /dev/null differ diff --git a/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-9fa7d66d60.zip b/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-9fa7d66d60.zip deleted file mode 100644 index a69bd519..00000000 Binary files a/.yarn/cache/vscode-textmate-npm-8.0.0-2deb0cc7cf-9fa7d66d60.zip and /dev/null differ diff --git a/.yarn/cache/wordwrap-npm-1.0.0-ae57a645e8-497d40beb2.zip b/.yarn/cache/wordwrap-npm-1.0.0-ae57a645e8-497d40beb2.zip deleted file mode 100644 index b7af4a47..00000000 Binary files a/.yarn/cache/wordwrap-npm-1.0.0-ae57a645e8-497d40beb2.zip and /dev/null differ diff --git a/README.md b/README.md index d55ca40a..d1524043 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ Getting startedInstallationUsage • - Examples • - SDK API Reference + Examples


@@ -45,8 +44,6 @@ yarn add @blockfrost/blockfrost-js Using the SDK is pretty straight-forward as you can see from the following examples. For more examples take a look in [blockfrost-js-examples](https://github.com/blockfrost/blockfrost-js-examples) repository. -For a list of all SDK methods [check out our wiki](https://github.com/blockfrost/blockfrost-js/wiki/Exports). - ```ts const Blockfrost = require('@blockfrost/blockfrost-js'); // import { BlockFrostAPI } from '@blockfrost/blockfrost-js'; // using import syntax @@ -69,6 +66,35 @@ const API = new Blockfrost.BlockFrostAPI({ - `version` - `number`, version of the Blockfrost API (optional, default `0`) - `gotOptions` - Additional options to be passed to Got instance. For more details, refer to the [Got Options documentation](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md). +### Rate limiter + +The built-in rate limiter is powered by [Bottleneck](https://www.npmjs.com/package/bottleneck). The underlying Bottleneck instance is exposed as `rateLimiter` property on the API client (it is `undefined` if the rate limiter was disabled via options), allowing you to inspect the current queue or hook into its events. + +```ts +const Blockfrost = require('@blockfrost/blockfrost-js'); + +const API = new Blockfrost.BlockFrostAPI({ + projectId: 'YOUR API KEY HERE', // see: https://blockfrost.io +}); + +// inspect the current queue +// returns counts of jobs in each state, e.g. { RECEIVED: 0, QUEUED: 0, RUNNING: 0, EXECUTING: 0 } +console.log(API.rateLimiter?.counts()); + +// number of requests waiting in the queue +console.log(API.rateLimiter?.queued()); + +// remaining request capacity before the limiter starts queuing new requests +const reservoir = await API.rateLimiter?.currentReservoir(); +console.log(reservoir); + +// get notified when the request capacity is depleted and requests start queuing up +API.rateLimiter?.on('depleted', () => { + console.log('Rate limit reached, new requests will be queued.'); +}); +``` + +For a full list of available methods and events check out the [Bottleneck documentation](https://www.npmjs.com/package/bottleneck). ## Error handling @@ -135,8 +161,6 @@ try { For more examples take a look in [blockfrost-js-examples](https://github.com/blockfrost/blockfrost-js-examples) repository. -For a list of all SDK methods [check out our wiki](https://github.com/blockfrost/blockfrost-js/wiki/Exports). - ### Cardano ```typescript @@ -201,10 +225,10 @@ runExample(); Blockfrost SDK exports several utility functions to improve developer experience. -- [deriveAddress](https://github.com/blockfrost/blockfrost-js/wiki/Exports#deriveaddress) -- [getFingerprint](https://github.com/blockfrost/blockfrost-js/wiki/Exports#getfingerprint) -- [parseAsset](https://github.com/blockfrost/blockfrost-js/wiki/Exports#parseasset) -- [verifyWebhookSignature](https://github.com/blockfrost/blockfrost-js/wiki/Exports#verifywebhooksignature) +- [deriveAddress](https://github.com/blockfrost/blockfrost-js/blob/master/src/utils/helpers.ts) +- [getFingerprint](https://github.com/blockfrost/blockfrost-js/blob/master/src/utils/helpers.ts) +- [parseAsset](https://github.com/blockfrost/blockfrost-js/blob/master/src/utils/helpers.ts) +- [verifyWebhookSignature](https://github.com/blockfrost/blockfrost-js/blob/master/src/utils/helpers.ts) ## Development @@ -215,6 +239,3 @@ Blockfrost SDK exports several utility functions to improve developer experience - update [TSDoc](https://tsdoc.org/) for added method 2. Add class method to `BlockfrostAPI` object in [src/BlockFrostAPI.ts](src/BlockFrostAPI.ts). 3. Add unit-test fixture for the added method to [test/fixtures/endpoints.ts](test/fixtures/endpoints.ts) -4. Regenerate wiki docs - - `yarn docs` - - push files to Wiki repository `https://github.com/blockfrost/blockfrost-js.wiki.git` diff --git a/package.json b/package.json index 0243e7dc..d1be7880 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "scripts": { "build": "yarn clean && tsc", "clean": "rimraf lib", - "docs": "yarn typedoc ./src/index.ts --theme github-wiki", "lint": "eslint ./src/**/*.ts", "prepublishOnly": "yarn build", "test": "vitest", @@ -51,9 +50,6 @@ "prettier": "^3.0.3", "rimraf": "^5.0.5", "serialize-error": "^11.0.2", - "typedoc": "^0.25.2", - "typedoc-github-wiki-theme": "^1.1.0", - "typedoc-plugin-markdown": "^3.16.0", "typescript": "^5.2.2", "vitest": "^0.34.6" }, diff --git a/yarn.lock b/yarn.lock index 97dca508..a5013d36 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,9 +55,6 @@ __metadata: prettier: "npm:^3.0.3" rimraf: "npm:^5.0.5" serialize-error: "npm:^11.0.2" - typedoc: "npm:^0.25.2" - typedoc-github-wiki-theme: "npm:^1.1.0" - typedoc-plugin-markdown: "npm:^3.16.0" typescript: "npm:^5.2.2" vitest: "npm:^0.34.6" languageName: unknown @@ -1018,13 +1015,6 @@ __metadata: languageName: node linkType: hard -"ansi-sequence-parser@npm:^1.1.0": - version: 1.1.0 - resolution: "ansi-sequence-parser@npm:1.1.0" - checksum: b9a9bd4ce0ec58c90e1ca404f74b45b0dbbc96e8cb8d856ede122e2c5c2d3b6a1054f181dde22bc0f1f2a7ea971cdcb8f47c6fd76ed8878b3676416522df615a - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -2442,24 +2432,6 @@ __metadata: languageName: node linkType: hard -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: "npm:^1.2.5" - neo-async: "npm:^2.6.0" - source-map: "npm:^0.6.1" - uglify-js: "npm:^3.1.4" - wordwrap: "npm:^1.0.0" - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 617b1e689b7577734abc74564bdb8cdaddf8fd48ce72afdb489f426e9c60a7d6ee2a2707c023720c4059070128243c948bded8f2716e4543378033e3971b85ea - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -3125,13 +3097,6 @@ __metadata: languageName: node linkType: hard -"lunr@npm:^2.3.9": - version: 2.3.9 - resolution: "lunr@npm:2.3.9" - checksum: f2f6db34c046f5a767782fe2454e6dd69c75ba3c5cf5c1cb9cacca2313a99c2ba78ff8fa67dac866fb7c4ffd5f22e06684793f5f15ba14bddb598b94513d54bf - languageName: node - linkType: hard - "magic-string@npm:^0.30.1": version: 0.30.4 resolution: "magic-string@npm:0.30.4" @@ -3194,15 +3159,6 @@ __metadata: languageName: node linkType: hard -"marked@npm:^4.3.0": - version: 4.3.0 - resolution: "marked@npm:4.3.0" - bin: - marked: bin/marked.js - checksum: c830bb4cb3705b754ca342b656e8a582d7428706b2678c898b856f6030c134ce2d1e19136efa3e6a1841f7330efbd24963d6bdeddc57d2938e906250f99895d0 - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -3307,22 +3263,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - -"minimist@npm:^1.2.5": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 0202378a8eb1a9d98a44f623f43c89793a095f4bde6981bda29f6ae61e82a15c18b1690b5efc4c66ddbd402a3e9b7175e6ebdabb2b28037c279ac823b7360e00 - languageName: node - linkType: hard - "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" @@ -3532,13 +3472,6 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.6.0": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: 1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002 - languageName: node - linkType: hard - "nock@npm:^13.3.4": version: 13.3.4 resolution: "nock@npm:13.3.4" @@ -4299,18 +4232,6 @@ __metadata: languageName: node linkType: hard -"shiki@npm:^0.14.1": - version: 0.14.1 - resolution: "shiki@npm:0.14.1" - dependencies: - ansi-sequence-parser: "npm:^1.1.0" - jsonc-parser: "npm:^3.2.0" - vscode-oniguruma: "npm:^1.7.0" - vscode-textmate: "npm:^8.0.0" - checksum: 6256651a5db0cfcb3069c483e8cc43765af24fce0df6e5fdb515e61d52b0880c06c43bc1e6f7ef1bd58bada38830e6e7367256ce9472e879af1c88c41231b13b - languageName: node - linkType: hard - "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -4670,43 +4591,6 @@ __metadata: languageName: node linkType: hard -"typedoc-github-wiki-theme@npm:^1.1.0": - version: 1.1.0 - resolution: "typedoc-github-wiki-theme@npm:1.1.0" - peerDependencies: - typedoc: ">=0.24.0" - typedoc-plugin-markdown: ">=3.15.0" - checksum: 84661e8c1a4540929b5a23bd8fcd81fdbdbf7f2d9338751bcb6861307fde08de7ddb876870e114aac34773590ced24de0b4c456fabc411bd9a41830ea069833f - languageName: node - linkType: hard - -"typedoc-plugin-markdown@npm:^3.16.0": - version: 3.16.0 - resolution: "typedoc-plugin-markdown@npm:3.16.0" - dependencies: - handlebars: "npm:^4.7.7" - peerDependencies: - typedoc: ">=0.24.0" - checksum: 1e9919ecf05630cdad6fde7a60915161fb3c95d07d266b0fb8a27fbc3e4536c362a328a9d8ec8cde53b28596aac88cf561d5b49f08514fbf9acf2bdb978fbe15 - languageName: node - linkType: hard - -"typedoc@npm:^0.25.2": - version: 0.25.2 - resolution: "typedoc@npm:0.25.2" - dependencies: - lunr: "npm:^2.3.9" - marked: "npm:^4.3.0" - minimatch: "npm:^9.0.3" - shiki: "npm:^0.14.1" - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x - bin: - typedoc: bin/typedoc - checksum: ba579427d09c4f3570382163e946820e041309d62c37cd061bf497b04b402ff0399a75836a4348ac11add882da0c4b563e7c196744955523cbdafc250149ad20 - languageName: node - linkType: hard - "typescript@npm:^5.2.2": version: 5.2.2 resolution: "typescript@npm:5.2.2" @@ -4741,15 +4625,6 @@ __metadata: languageName: node linkType: hard -"uglify-js@npm:^3.1.4": - version: 3.17.4 - resolution: "uglify-js@npm:3.17.4" - bin: - uglifyjs: bin/uglifyjs - checksum: 4c0b800e0ff192079d2c3ce8414fd3b656a570028c7c79af5c29c53d5c532b68bbcae4ad47307f89c2ee124d11826fff7a136b59d5c5bb18422bcdf5568afe1e - languageName: node - linkType: hard - "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -4931,20 +4806,6 @@ __metadata: languageName: node linkType: hard -"vscode-oniguruma@npm:^1.7.0": - version: 1.7.0 - resolution: "vscode-oniguruma@npm:1.7.0" - checksum: 7da9d21459f9788544b258a5fd1b9752df6edd8b406a19eea0209c6bf76507d5717277016799301c4da0d536095f9ca8c06afd1ab8f4001189090c804ca4814e - languageName: node - linkType: hard - -"vscode-textmate@npm:^8.0.0": - version: 8.0.0 - resolution: "vscode-textmate@npm:8.0.0" - checksum: 9fa7d66d6042cb090d116c2d8820d34c8870cfcbaed6e404da89f66b899970ed0ac47b59a2e30fc40a25af5414822bb3ea27974f714e9b91910d69c894be95f7 - languageName: node - linkType: hard - "wcwidth@npm:^1.0.1": version: 1.0.1 resolution: "wcwidth@npm:1.0.1" @@ -5030,13 +4891,6 @@ __metadata: languageName: node linkType: hard -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 497d40beb2bdb08e6d38754faa17ce20b0bf1306327f80cb777927edb23f461ee1f6bc659b3c3c93f26b08e1cf4b46acc5bae8fda1f0be3b5ab9a1a0211034cd - languageName: node - linkType: hard - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0"