{"_id":"@acgrid/cos-nodejs-sdk-v5","name":"@acgrid/cos-nodejs-sdk-v5","dist-tags":{"latest":"2.15.5"},"versions":{"2.15.5":{"name":"@acgrid/cos-nodejs-sdk-v5","version":"2.15.5","description":"cos nodejs sdk v5","main":"index.js","types":"index.d.ts","scripts":{"prettier":"prettier --write sdk demo/demo.js test/test.js index.d.ts","demo":"node demo/demo.js","demo-sts":"node demo/demo-sts.js","demo-sts-scope":"node demo/demo-sts-scope.js","test-sts":"node test/sts-server.js","test":"mocha test/test.js","cov":"istanbul cover _mocha -- -u exports 'test/test.js'","csp":"mocha test/csp.js"},"repository":{"type":"git","url":"git+https://github.com/acgrid/tencent-cos-nodejs-sdk-v5.git"},"keywords":["tencent","tencent cloud","qcloud","cos","cos-sdk"],"author":{"name":"carsonxu"},"license":"ISC","bugs":{"url":"https://github.com/acgrid/tencent-cos-nodejs-sdk-v5/issues"},"homepage":"https://github.com/acgrid/tencent-cos-nodejs-sdk-v5#readme","dependencies":{"@cypress/request":"^4.0.1","conf":"^10.2.0","fast-xml-parser":"^5.9.2","mime-types":"^2.1.35"},"devDependencies":{"@types/node":"^16.18.126","batch":"^0.6.1","crc64-ecma182.js":"^1.0.0","mocha":"^10.8.2","prettier":"^3.0.1","qcloud-cos-sts":"^3.1.3"},"engines":{"node":">= 16"},"gitHead":"af79a8d3ce51257d60d1d4f4eb9c5bf495aa65cc","_id":"@acgrid/cos-nodejs-sdk-v5@2.15.5","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-qmFfXexgHbAQY2U2TwrHgL74W9rWU6wAH7NgGpVGGrMowQu42IGvMbFDdx/h8k3i1LGlQNxTXLT5RUu8We/lPw==","shasum":"8a94121c755e03a589694511e89bdec0124a7a1a","tarball":"https://registry.npmjs.org/@acgrid/cos-nodejs-sdk-v5/-/cos-nodejs-sdk-v5-2.15.5.tgz","fileCount":15,"unpackedSize":410591,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC+mKQzVzlMbqGiTn5eh0dmWL65A+xWYVQ5SGiOFF8EJAIgJat3xtxOadNB+fHx0wtm57VDoIryBWHr5LOuYS37ysg="}]},"_npmUser":{"name":"acgrid","email":"acgrid@gmail.com"},"directories":{},"maintainers":[{"name":"acgrid","email":"acgrid@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cos-nodejs-sdk-v5_2.15.5_1781900651352_0.38540074320379225"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-19T20:24:11.165Z","2.15.5":"2026-06-19T20:24:11.555Z","modified":"2026-06-19T20:24:11.782Z"},"maintainers":[{"name":"acgrid","email":"acgrid@gmail.com"}],"description":"cos nodejs sdk v5","homepage":"https://github.com/acgrid/tencent-cos-nodejs-sdk-v5#readme","keywords":["tencent","tencent cloud","qcloud","cos","cos-sdk"],"repository":{"type":"git","url":"git+https://github.com/acgrid/tencent-cos-nodejs-sdk-v5.git"},"author":{"name":"carsonxu"},"bugs":{"url":"https://github.com/acgrid/tencent-cos-nodejs-sdk-v5/issues"},"license":"ISC","readme":"# cos-nodejs-sdk-v5\n\n腾讯云 COS Nodejs SDK（[XML API](https://cloud.tencent.com/document/product/436/7751)）\n\n[releases and changelog](https://github.com/tencentyun/cos-nodejs-sdk-v5/releases)\n\n## install\n\n[npm 地址](https://www.npmjs.com/package/cos-nodejs-sdk-v5)\n\n```\nnpm i cos-nodejs-sdk-v5 --save\n```\n\n## demo\n\n```javascript\n// 引入模块\nvar COS = require('cos-nodejs-sdk-v5');\n// 创建实例\nvar cos = new COS({\n  SecretId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n  SecretKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n});\n\n// 存储桶名称，由bucketname-appid 组成，appid必须填入，可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket\nvar Bucket = 'test-1250000000';\n// 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/\n// 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224\nvar Region = 'ap-guangzhou';\n\n// 高级上传\ncos.uploadFile(\n  {\n    Bucket: Bucket,\n    Region: Region,\n    Key: '1.zip',\n    FilePath: './1.zip', // 本地文件地址，需自行替换\n    SliceSize: 1024 * 1024 * 5, // 触发分块上传的阈值，超过5MB使用分块上传，非必须\n  },\n  function (err, data) {\n    console.log(err, data);\n  }\n);\n```\n\n## 说明文档\n\n[使用例子](demo/demo.js)\n\n[快速入门](https://cloud.tencent.com/document/product/436/8629)\n\n[接口文档](https://cloud.tencent.com/document/product/436/12264)\n\n## 本分支依赖迁移说明\n\n### 迁移动机\n\n本分支用于维护一个长期未同步上游的 fork。原 SDK 仍依赖已经停止维护的 `request` 包，同时部分依赖版本较旧，安全扫描和现代 Node.js 环境下都会带来维护压力。本次迁移的主要目标是保留原有 COS SDK 行为，尽量降低业务侧改动成本，同时移除废弃依赖并补齐可重复运行的测试环境。\n\n### 主要改动\n\n- 将运行时 HTTP 请求依赖从 `request` 迁移到 `@cypress/request`。\n- 更新 `conf`、`fast-xml-parser`、`mime-types`、`mocha`、`qcloud-cos-sts` 等依赖版本，并将 Node.js 运行要求提升到 `>= 16`。\n- 新增 `test-sts` 脚本和 `test/sts-server.js`，用于本地启动测试用 STS 服务，复用 `SecretId`、`SecretKey`、`Bucket`、`Region` 等环境变量。\n- 将依赖外部特殊环境的测试改为显式 opt-in，例如自定义域名、日志、跨地域复制、外部 retry fixture；默认测试仍覆盖公开 COS 常规路径。\n- 增加本地 retry fault-injection 测试，覆盖临时 `500` 和 `ECONNRESET` 后重试成功的行为。\n- 修复旧式 `AppId` 参数兼容问题：当短 bucket 名本身以数字结尾时，仍会正确拼接显式传入的 `AppId`。\n\n### 测试手册\n\n以下测试说明面向源码仓库 checkout，不属于安装后的 npm 包运行时功能。\n\n运行主测试前需要准备一组真实 COS 测试环境变量。请使用专门的测试桶，不要使用生产桶。\n\n```bash\nexport SecretId='AKID...'\nexport SecretKey='...'\nexport Bucket='your-test-bucket-1250000000'\nexport Region='ap-guangzhou'\nexport Uin='1000xxxxxxxx'\nexport nodejssdkStsUrl='http://127.0.0.1:3000'\n```\n\n如果没有现成的 STS 测试服务，可以先在另一个终端启动本地 STS server：\n\n```bash\nexport SecretId='AKID...'\nexport SecretKey='...'\nexport Bucket='your-test-bucket-1250000000'\nexport Region='ap-guangzhou'\nexport STS_PORT=3000\n\nnpm run test-sts\n```\n\n然后在测试终端运行：\n\n```bash\nexport nodejssdkStsUrl='http://127.0.0.1:3000'\nnpm test\n```\n\n可选的环境变量如下：\n\n- `NO_PROXY` / `no_proxy`：用于绕过代理访问 COS、CI、STS 和 localhost。\n- `COS_RUN_BUCKET_DOMAIN_TESTS=1`：运行自定义域名测试，需要配置可用且已备案/审核通过的域名。\n- `COS_BUCKET_DOMAIN_REST` / `COS_BUCKET_DOMAIN_WEBSITE`：自定义域名测试使用的域名。\n- `COS_RUN_BUCKET_LOGGING_TESTS=1`：运行日志测试，需要目标桶和日志写入权限配置。\n- `COS_LOGGING_TARGET_BUCKET`：日志测试的目标桶，未设置时使用当前测试桶。\n- `COS_RUN_BUCKET_REPLICATION_TESTS=1`：运行跨地域复制测试，需要源桶和目标桶版本控制、角色和权限配置。\n- `COS_REPLICATION_BUCKET` / `COS_REPLICATION_REGION`：跨地域复制测试的目标桶和目标地域。\n- `COS_RUN_RETRY_TESTS=1`：运行历史外部 retry fixture 测试。\n- `COS_RETRY_BUCKET` / `COS_RETRY_REGION`：历史 retry fixture 的桶和地域；默认值仍是上游旧测试桶。\n\n### 测试结果与注意事项\n\n本次迁移使用真实 COS 测试桶和本地 STS 服务做过完整验证，主测试套件最终结果为：\n\n```text\n259 passing\n48 pending\n```\n\n测试过程中遇到并处理了以下边界情况：旧的公开 retry fixture bucket 无访问权限，改为默认跳过并补充本地故障注入测试；自定义域名、日志、跨地域复制、回源等 bucket 级功能需要额外云上配置，因此提供环境变量开关；不同网络和代理绕过环境下，连接失败可能表现为 `ECONNREFUSED`、`ECONNRESET`、`ESOCKETTIMEDOUT` 或 `ETIMEDOUT`，测试已按等价失败场景处理。\n\n基于以上验证，本分支对 `request` 到 `@cypress/request` 的迁移有较高信心，适合公开发布这个兼容性修复版本。但这不是腾讯云官方发布版本，且测试环境无法覆盖所有私有 COS/CSP、自建代理、特殊网络和历史 retry fixture 场景。请在自己的业务环境中回归验证后使用，风险自负。\n","readmeFilename":"README.md","_rev":"1-00e72a08b2536857f68858b936c2cdf8"}