{"id":47762761,"url":"https://github.com/taskcluster/fast-azure-storage","last_synced_at":"2026-04-03T05:49:10.122Z","repository":{"id":30484883,"uuid":"34038985","full_name":"taskcluster/fast-azure-storage","owner":"taskcluster","description":"Fast Azure Storage Client for Node.js","archived":false,"fork":false,"pushed_at":"2025-10-02T01:44:57.000Z","size":1350,"stargazers_count":16,"open_issues_count":7,"forks_count":7,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-02T03:31:16.782Z","etag":null,"topics":["azure-storage-service","javascript","table-storage"],"latest_commit_sha":null,"homepage":"https://taskcluster.github.io/fast-azure-storage/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taskcluster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-16T06:45:03.000Z","updated_at":"2025-04-14T13:49:50.000Z","dependencies_parsed_at":"2023-02-18T09:45:35.647Z","dependency_job_id":"8edde05a-49eb-44df-b12b-6e9c62439250","html_url":"https://github.com/taskcluster/fast-azure-storage","commit_stats":{"total_commits":217,"total_committers":17,"mean_commits":"12.764705882352942","dds":0.631336405529954,"last_synced_commit":"afe45e5f699db4bdb14c5b03741f456eec5ae314"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/taskcluster/fast-azure-storage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskcluster%2Ffast-azure-storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskcluster%2Ffast-azure-storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskcluster%2Ffast-azure-storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskcluster%2Ffast-azure-storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taskcluster","download_url":"https://codeload.github.com/taskcluster/fast-azure-storage/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taskcluster%2Ffast-azure-storage/sbom","scorecard":{"id":869242,"data":{"date":"2025-08-11","repo":{"name":"github.com/taskcluster/fast-azure-storage","commit":"2c2f9e99b1dd023ba184eb40f9e3b554b04bdef7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Code-Review","score":4,"reason":"Found 2/5 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Mozilla Public License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/taskcluster/.github/SECURITY.md:1","Info: Found linked content: github.com/taskcluster/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/taskcluster/.github/SECURITY.md:1","Info: Found text in security policy: github.com/taskcluster/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-6vfc-qv3f-vr6c","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T03:38:44.786Z","repository_id":30484883,"created_at":"2025-08-24T03:38:44.786Z","updated_at":"2025-08-24T03:38:44.786Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31337184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T04:42:29.251Z","status":"ssl_error","status_checked_at":"2026-04-03T04:42:12.667Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-storage-service","javascript","table-storage"],"created_at":"2026-04-03T05:49:09.499Z","updated_at":"2026-04-03T05:49:10.108Z","avatar_url":"https://github.com/taskcluster.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Fast Azure Storage Client for Node.js\n=====================================\n\nThis library implements a low-level and highly optimized interface to Azure\nStorage Services. Existing node libraries for Azure suffers of excessive\ncomplexity, dependencies, being slow and not managing connection correctly.\n\nAt this point this library implement most of the APIs for queue, table and blob\nstorage. Pull request with additional feature additions will generally be\naccepted, as long as patches don't compromise efficiency.\n\nFor full documentation see\n[reference documentation](https://taskcluster.github.io/fast-azure-storage/)\nor extensive comments in the sources.\n\n\nCommon Client Options\n---------------------\nAll three clients, `Queue`, `Table` and `Blob`, take a range of common configuration options.\n\n### Authentication Options\nThe following example illustrates how to create clients using\n**shared key authentication**.\n```js\n// Load fast-azure-storage client\nimport * as azure from 'fast-azure-storage';\n\n// Common options using shared key authentication\nvar options = {\n  accountId:          '...',\n  accessKey:          '...'\n};\n\n// Create queue, table and blob clients\nvar queue = new azure.Queue(options);\nvar table = new azure.Table(options);\nvar blob  = new azure.Blob(options);\n```\n\nIt's also possible to configure clients with **Shared-Access-Signatures** as\nillustrated in the following example.\n```js\n// Common options using shared-access-signatures\nvar options = {\n  accountId:          '...',\n  sas:                sas   // sas in querystring form: \"se=...\u0026sp=...\u0026sig=...\"\n};\n```\n\nIn fact it's possible to provide a function that will be used to\n**refresh the Shared-Access-Signature** when it's close to expire:\n```js\n// Common options using shared-access-signatures\nvar options = {\n  accountId:          '...',\n  sas:                function() {\n    return new Promise(/* fetch SAS from somewhere */);\n  },\n  // Time to SAS expiration before refreshing the SAS\n  minSASAuthExpiry:   15 * 60 * 1000\n};\n```\n\n### Custom HTTPS Agent Configuration\nThe fast-azure-storage library comes with a custom `https.Agent` implementation,\noptimized for Azure Storage service to reduce latency and avoid errors.\nBy default,`Blob`,`Table` and `Queue` clients will use a global instance of this\ncustom agent configured to allow 100 connections per host.\n\nYou may override this behavior by supplying your own `agent` as follows.\n```js\n// Common options for HTTPS agent configuration\nvar options = {\n  agent:      new azure.Agent({...}),\n};\n```\n\nPlease, read the _Built-in Azure HTTPS Agent_ section for details on why this\ncustom `https.Agent` is necessary. Notice that while it's strongly recommended\nto use the HTTPS agent that ships with this library as oppose the default\n`https.Agent` implementation, it's perfectly sane to tune the options of the\nHTTPS agent that ships with this library, and even create multiple instances of\nit if you feel that is necessary.\n\n\nAzure Table Storage Client\n--------------------------\nThe Azure Storage Table client aims at interfacing Azure Table Storage without\nabstracting away the storage format and type information stored with each\nentity. It assumes that opinionated abstractions will do type conversions as\nnecessary.\n\nSimple example of table and entity creation.\n```js\n// Load fast-azure-storage client\nimport azure from 'fast-azure-storage';\n\nvar table = new azure.Table({\n  accountId:    '...',\n  accessKey:    '...'\n});\n\n// Create table and insert entity\ntable.createTable('mytable').then(function() {\n  return table.insertEntity('mytable', {\n    PartitionKey:         '...',\n    RowKey:               '...',\n    'count':              42,\n    'count@odata.type':   'Edm.Int64',\n    'buffer':             new Buffer(...).toString('base64'),\n    'buffer@odata.type':  'Edm.Binary'\n  });\n});\n```\n\n### Table API Reference\n\nSee also [reference documentation](https://taskcluster.github.io/fast-azure-storage/).\n\n * `Table(options)`\n * `Table#queryTables(options)`\n * `Table#createTable(name)`\n * `Table#deleteTable(name)`\n * `Table#getEntity(table, partitionKey, rowKey, options)`\n * `Table#queryEntities(table, options)`\n * `Table#insertEntity(table, entity)`\n * `Table#updateEntity(table, entity, options)`\n * `Table#deleteEntity(table, partitionKey, rowKey, options)`\n * `Table#sas(table, options)`\n * `Table.filter(expression)`\n\n\nAzure Queue Storage Client\n--------------------------\nThe Azure Storage Queue client aims at interfacing Azure Queue Storage.\n\nSimple example of queue and message creation.\n```js\n// Load fast-azure-storage client\nimport azure from 'fast-azure-storage';\n\nvar queue = new azure.Queue({\n  accountId:    '...',\n  accessKey:    '...'\n});\n\n// Create queue and insert message\nqueue.createQueue('myqueue').then(function() {\n  return queue.putMessage('myqueue', 'my-message', {\n    visibilityTimeout:  10,     // Visible after 10 seconds\n    messageTTL:         60 * 60 // Expires after 1 hour\n  });\n});\n```\n\n### Queue API Reference\n\nSee also [reference documentation](https://taskcluster.github.io/fast-azure-storage/).\n\n * `Queue(options)`\n * `Queue#listQueues(options)`\n * `Queue#createQueue(name, metadata)`\n * `Queue#deleteQueue(name)`\n * `Queue#getMetadata(queue)`\n * `Queue#setMetadata(queue, metadata)`\n * `Queue#putMessage(queue, text, options)`\n * `Queue#peekMessages(queue, options)`\n * `Queue#getMessages(queue, options)`\n * `Queue#deleteMessage(queue, messageId, popReceipt)`\n * `Queue#clearMessages(queue)`\n * `Queue#updateMessage(queue, text, messageId, popReceipt, options)`\n * `Queue#sas(queue, options)`\n\nAzure Blob Storage Client\n--------------------------\nThe Azure Blob Storage client aims at interfacing Azure Blob Storage.\nUsing this client, text and binary data can be stored in one of the following types\nof blob:\n* Block blobs, which are optimized for upload large blobs\n* Append blobs, which are optimized for append operations, making it ideal for\neg. logging, auditing\n\nSimple example of a container and blob creation.\n```js\n// Load fast-azure-storage client\nimport azure from 'fast-azure-storage';\n\nvar blob = new azure.Blob({\n  accountId:    '...',\n  accessKey:    '...'\n});\n\nvar blobContent = 'Sample content'; // The content can be a string or a Buffer\n// Create container and upload a blob\nblob.createContainer('mycontainer').then(function() {\n  return blob.putBlob('mycontainer', 'myblob', {\n    type:  'BlockBlob',     // Type of the blob\n  }, blobContent);\n});\n```\n\n### Blob API Reference\n\nSee also [reference documentation](https://taskcluster.github.io/fast-azure-storage/).\n\n * `Blob(options)`\n * `Blob#setServiceProperties(options)`\n * `Blob#getServiceProperties()`\n * `Blob#createContainer(name, options)`\n * `Blob#setContainerMetadata(name, metadata, options)`\n * `Blob#getContainerMetadata(name, options)`\n * `Blob#deleteContainer(name, options)`\n * `Blob#listContainers(options)`\n * `Blob#getContainerProperties(name, options)`\n * `Blob#getContainerACL(name, options)`\n * `Blob#setContainerACL(name, options)`\n * `Blob#listBlobs(container, options)`\n * `Blob#leaseContainer(name, options)`\n * `Blob#putBlob(container, blob, options, content)`\n * `Blob#getBlob(container, blob, options)`\n * `Blob#getBlobProperties(container, blob, options)`\n * `Blob#setBlobProperties(container, blob, options)`\n * `Blob#getBlobMetadata(container, blob, options)`\n * `Blob#setBlobMetadata(container, blob, metadata, options)`\n * `Blob#deleteBlob(container, blob, options)`\n * `Blob#putBlock(container, blob, options, content)`\n * `Blob#putBlockList(container, blob, options)`\n * `Blob#getBlockList(container, blob, options)`\n * `Blob#getBlockId(prefix, blockNumber, length)`\n * `Blob#appendBlock(container, blob, options, content)`\n * `Blob#sas(container, blob, options)`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskcluster%2Ffast-azure-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaskcluster%2Ffast-azure-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskcluster%2Ffast-azure-storage/lists"}