{"_id":"@nutrient-sdk/dws-client-typescript","_rev":"6-c4af8624d27566e6bbe13b2009d0563c","name":"@nutrient-sdk/dws-client-typescript","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@nutrient-sdk/dws-client-typescript","version":"1.0.0","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"author":{"url":"https://www.nutrient.io","name":"Nutrient"},"license":"MIT","_id":"@nutrient-sdk/dws-client-typescript@1.0.0","maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"}],"homepage":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript#readme","bugs":{"url":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/issues"},"bin":{"dws-add-junie-rule":"scripts/add_junie_rule.cjs","dws-add-cursor-rule":"scripts/add_cursor_rule.cjs","dws-add-windsurf-rule":"scripts/add_windsurf_rule.cjs","dws-add-claude-code-rule":"scripts/add_claude_code_rule.cjs","dws-add-github-copilot-rule":"scripts/add_github_copilot_rule.cjs"},"dist":{"shasum":"297444c61ed74cb26db29ae44562aab349061364","tarball":"https://registry.npmjs.org/@nutrient-sdk/dws-client-typescript/-/dws-client-typescript-1.0.0.tgz","fileCount":48,"integrity":"sha512-R9olSiJSORp6jMLHzj/e1ncgcX3njrTVcf33UKkbRemo5SNbPpV+rGKP6eQYhRC0wcLMIL3e5NS7SEj27T8mbg==","signatures":[{"sig":"MEUCIQDjpTbR5KKR/aIy0VdDkpl4DxLxOJh6GPi99LPoTNUalgIgIZaULhHaJGoO46YpB5xHSJIHYWHQnSfZrv3BrymStW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691665},"type":"module","config":{"commitizen":{"path":"cz-conventional-changelog"}},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7a4fe0fdf8a6f26c48c3a79b5b5bc60939319826","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"npm run clean && tsup && tsc --project tsconfig.types.json","clean":"rimraf dist","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:unit":"jest --testPathPatterns=\"^((?!integration).)*$\"","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage","generate:types":"openapi-typescript dws-api-spec.yml -o src/generated/api-types.ts","prepublishOnly":"npm run build && npm run test","test:integration":"jest --testPathPatterns=integration.test","test:integration:verbose":"jest --testPathPatterns=integration.test --verbose"},"_npmUser":{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},"repository":{"url":"git+https://github.com/pspdfkit-labs/nutrient-dws-client-typescript.git","type":"git"},"_npmVersion":"9.6.7","description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","directories":{"doc":"doc","test":"tests","example":"examples"},"_nodeVersion":"18.17.1","dependencies":{"axios":"^1.10.0","form-data":"^4.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.3","tsup":"^8.5.0","dotenv":"^17.0.0","eslint":"^9.30.0","rimraf":"^6.0.1","globals":"^16.2.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","prettier":"^3.6.2","@eslint/js":"^9.30.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.7","@eslint/eslintrc":"^3.3.1","eslint-plugin-jest":"^29.0.1","openapi-typescript":"^7.8.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/dws-client-typescript_1.0.0_1752624478224_0.27431883657205147","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@nutrient-sdk/dws-client-typescript","version":"1.0.1","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"author":{"url":"https://www.nutrient.io","name":"Nutrient"},"license":"MIT","_id":"@nutrient-sdk/dws-client-typescript@1.0.1","maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"}],"homepage":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript#readme","bugs":{"url":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/issues"},"bin":{"dws-add-junie-rule":"scripts/add_junie_rule.cjs","dws-add-cursor-rule":"scripts/add_cursor_rule.cjs","dws-add-windsurf-rule":"scripts/add_windsurf_rule.cjs","dws-add-claude-code-rule":"scripts/add_claude_code_rule.cjs","dws-add-github-copilot-rule":"scripts/add_github_copilot_rule.cjs"},"dist":{"shasum":"8a4e872faf1c6034a08ca9d5dd8eaf577f5781c3","tarball":"https://registry.npmjs.org/@nutrient-sdk/dws-client-typescript/-/dws-client-typescript-1.0.1.tgz","fileCount":52,"integrity":"sha512-5P9ig4in6b7CgXECoX25L+Gy+S3hr7frLrceTq9sNoT6Cmg+GgcMl5mX9eDMUT0JDEgXRNnS6Z57Cs3vy+j6aA==","signatures":[{"sig":"MEYCIQDMHFS8j2AxqSzJzEwdXVLOdfr7+m+Gx+y0tlgprfZPcwIhAJGYEu0xuVsI0dmJJFNz92xWejcOyxCTJhtAeto+DAp4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693596},"type":"module","config":{"commitizen":{"path":"cz-conventional-changelog"}},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"41bf1429e323dd30fca882eb84f85762b0bdd12f","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"npm run clean && tsup && tsc --project tsconfig.types.json","clean":"rimraf dist","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:unit":"jest --testPathPatterns=\"^((?!integration).)*$\"","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage","generate:types":"openapi-typescript dws-api-spec.yml -o src/generated/api-types.ts","prepublishOnly":"npm run build && npm run test","test:integration":"jest --testPathPatterns=integration.test","test:integration:verbose":"jest --testPathPatterns=integration.test --verbose"},"_npmUser":{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},"repository":{"url":"git+https://github.com/pspdfkit-labs/nutrient-dws-client-typescript.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","directories":{"doc":"doc","test":"tests","example":"examples"},"_nodeVersion":"22.16.0","dependencies":{"axios":"^1.10.0","form-data":"^4.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.3","tsup":"^8.5.0","dotenv":"^17.0.0","eslint":"^9.30.0","rimraf":"^6.0.1","globals":"^16.2.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","prettier":"^3.6.2","@eslint/js":"^9.30.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.7","@eslint/eslintrc":"^3.3.1","eslint-plugin-jest":"^29.0.1","openapi-typescript":"^7.8.0","eslint-config-prettier":"^10.1.5","@typescript-eslint/parser":"^8.35.0","@typescript-eslint/eslint-plugin":"^8.35.0"},"_npmOperationalInternal":{"tmp":"tmp/dws-client-typescript_1.0.1_1755766297044_0.2794504419911923","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@nutrient-sdk/dws-client-typescript","version":"2.0.0","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"author":{"url":"https://www.nutrient.io","name":"Nutrient"},"license":"MIT","_id":"@nutrient-sdk/dws-client-typescript@2.0.0","maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"},{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"}],"homepage":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript#readme","bugs":{"url":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/issues"},"bin":{"dws-add-junie-rule":"scripts/add_junie_rule.cjs","dws-add-cursor-rule":"scripts/add_cursor_rule.cjs","dws-add-windsurf-rule":"scripts/add_windsurf_rule.cjs","dws-add-claude-code-rule":"scripts/add_claude_code_rule.cjs","dws-add-github-copilot-rule":"scripts/add_github_copilot_rule.cjs"},"dist":{"shasum":"7296390a0f8d1f935defe329531df2e9a7c27d9b","tarball":"https://registry.npmjs.org/@nutrient-sdk/dws-client-typescript/-/dws-client-typescript-2.0.0.tgz","fileCount":52,"integrity":"sha512-+BtcBT3CAxbK6JosRwC0L3wt6Eh0vXhl0Yi0pSqe6VyWQ2cDOKm9vJ6mvaLp4A+MsYS0RUkHFwjbGy3VZeZhIw==","signatures":[{"sig":"MEYCIQDKbOJxt9ypzzS/fUutW2fWTuyd8mEcyT1EnZwOMo1NqAIhAKuNmrewNpMt8oIzZ2Rp3uZbXqJNE6SyiQAHDB9zJHrz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679028},"type":"module","config":{"commitizen":{"path":"cz-conventional-changelog"}},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1517a8096f3c43d7c717fa95f2888e2038240a54","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"npm run clean && tsup && tsc --project tsconfig.types.json","clean":"rimraf dist","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:unit":"jest --testPathPatterns=\"^((?!integration).)*$\"","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage","generate:types":"openapi-typescript dws-api-spec.yml -o src/generated/api-types.ts","prepublishOnly":"npm run build && npm run test","test:integration":"jest --testPathPatterns=integration.test","test:integration:verbose":"jest --testPathPatterns=integration.test --verbose"},"_npmUser":{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},"overrides":{"glob":"^11.0.4","js-yaml":"^4.1.1"},"repository":{"url":"git+https://github.com/pspdfkit-labs/nutrient-dws-client-typescript.git","type":"git"},"_npmVersion":"11.6.2","description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","directories":{"doc":"doc","test":"tests","example":"examples"},"_nodeVersion":"25.2.1","dependencies":{"axios":"^1.13.2","form-data":"^4.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.2.3","eslint":"^9.39.2","rimraf":"^6.1.2","globals":"^16.5.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","prettier":"^3.7.4","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.10.7","@eslint/eslintrc":"^3.3.3","eslint-plugin-jest":"^29.12.1","openapi-typescript":"^7.10.1","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.0","@typescript-eslint/eslint-plugin":"^8.53.0"},"_npmOperationalInternal":{"tmp":"tmp/dws-client-typescript_2.0.0_1769616791163_0.699855054823431","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@nutrient-sdk/dws-client-typescript","version":"2.1.0","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"author":{"url":"https://www.nutrient.io","name":"Nutrient"},"license":"MIT","_id":"@nutrient-sdk/dws-client-typescript@2.1.0","maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"},{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"}],"homepage":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript#readme","bugs":{"url":"https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/issues"},"bin":{"dws-add-junie-rule":"scripts/add_junie_rule.cjs","dws-add-cursor-rule":"scripts/add_cursor_rule.cjs","dws-add-windsurf-rule":"scripts/add_windsurf_rule.cjs","dws-add-claude-code-rule":"scripts/add_claude_code_rule.cjs","dws-add-github-copilot-rule":"scripts/add_github_copilot_rule.cjs"},"dist":{"shasum":"2cc43fc3788cbace952ec1387e55caf81c65c326","tarball":"https://registry.npmjs.org/@nutrient-sdk/dws-client-typescript/-/dws-client-typescript-2.1.0.tgz","fileCount":54,"integrity":"sha512-zCOKGlFMGPATazQoRO5Dt+X0cMSAD4xwlhjTZfFq4Nb2/XeCi+539J4P8GmB9jWS5X4u8dmB12oe+XcrxI3diA==","signatures":[{"sig":"MEUCIQC0+uB0ivCiD1HNyw73t4xsrY0ugmbP+OLrUj7hpSY6uAIgVTziZWWOFd1xvBHmWDDQab2GsZxmWxekYfAIU1bZEEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":764969},"type":"module","config":{"commitizen":{"path":"cz-conventional-changelog"}},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"541448f351cb4b70a9a01f3f432d232ee5169aac","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"npm run clean && tsup && tsc --project tsconfig.types.json","clean":"rimraf dist","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src --ext .ts --fix","test:unit":"jest --testPathPatterns=\"^((?!integration).)*$\"","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"jest --coverage","generate:types":"openapi-typescript dws-api-spec.yml -o src/generated/api-types.ts","prepublishOnly":"npm run build && npm run test","test:integration":"jest --testPathPatterns=integration.test","generate:types:extract":"openapi-typescript dws-data-extraction-spec.yml -o src/generated/extract-types.ts","test:integration:verbose":"jest --testPathPatterns=integration.test --verbose"},"_npmUser":{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"},"overrides":{"glob":"^11.0.4","js-yaml":"^4.1.1"},"repository":{"url":"git+https://github.com/pspdfkit-labs/nutrient-dws-client-typescript.git","type":"git"},"_npmVersion":"11.4.2","description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","directories":{"doc":"doc","test":"tests","example":"examples"},"_nodeVersion":"24.4.1","dependencies":{"axios":"^1.13.2","form-data":"^4.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^30.2.0","tsup":"^8.5.1","dotenv":"^17.2.3","eslint":"^9.39.2","rimraf":"^6.1.2","globals":"^16.5.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","prettier":"^3.7.4","@eslint/js":"^9.39.2","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.10.7","@eslint/eslintrc":"^3.3.3","eslint-plugin-jest":"^29.12.1","openapi-typescript":"^7.10.1","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.0","@typescript-eslint/eslint-plugin":"^8.53.0"},"_npmOperationalInternal":{"tmp":"tmp/dws-client-typescript_2.1.0_1780081980509_0.7160214065901704","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@nutrient-sdk/dws-client-typescript","version":"3.0.0","description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"homepage":"https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript#readme","bugs":{"url":"https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript/issues"},"repository":{"type":"git","url":"git+https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript.git"},"license":"MIT","author":{"name":"Nutrient","url":"https://www.nutrient.io"},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"bin":{"dws-add-claude-code-rule":"scripts/add_claude_code_rule.cjs","dws-add-cursor-rule":"scripts/add_cursor_rule.cjs","dws-add-github-copilot-rule":"scripts/add_github_copilot_rule.cjs","dws-add-junie-rule":"scripts/add_junie_rule.cjs","dws-add-windsurf-rule":"scripts/add_windsurf_rule.cjs"},"scripts":{"build":"npm run clean && tsup && tsc --project tsconfig.types.json","clean":"rimraf dist","dev":"tsup --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:unit":"jest --testPathPatterns=\"^((?!integration).)*$\"","test:integration":"jest --testPathPatterns=integration.test","test:integration:verbose":"jest --testPathPatterns=integration.test --verbose","test:smoke":"node tools/smoke-test.mjs","lint":"eslint src","lint:fix":"eslint src --fix","format":"prettier --write \"src/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\"","typecheck":"tsc --noEmit && tsc --noEmit --project src/__tests__/tsconfig.json","prepublishOnly":"npm run build && npm run test","generate:types":"openapi-typescript dws-api-spec.yml --empty-objects-unknown --default-non-nullable=false -o src/generated/api-types.ts","generate:types:extract":"openapi-typescript dws-data-extraction-spec.yml -o src/generated/extract-types.ts"},"dependencies":{"axios":"^1.19.0","form-data":"^4.0.6"},"overrides":{"glob":"^11.0.4","js-yaml":"^4.1.1","openapi-typescript":{"typescript":"$typescript"}},"devDependencies":{"@eslint/eslintrc":"^3.3.6","@eslint/js":"^10.0.1","@types/jest":"^30.0.0","@types/node":"^26.2.0","@typescript-eslint/eslint-plugin":"^8.66.0","@typescript-eslint/parser":"^8.66.0","dotenv":"^17.4.2","eslint":"^10.8.1","eslint-config-prettier":"^10.1.8","eslint-plugin-jest":"^29.16.0","globals":"^17.9.0","jest":"^30.4.2","openapi-typescript":"^7.13.0","prettier":"^3.9.6","rimraf":"^6.1.3","ts-jest":"^29.4.12","ts-node":"^10.9.2","tsup":"^8.5.1","tsx":"^4.23.11","typescript":"^6.0.3"},"engines":{"node":">=22.0.0"},"publishConfig":{"access":"public"},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"directories":{"doc":"doc","example":"examples","test":"tests"},"gitHead":"a899d9f0abd26c487aeb9084d4e00b18fef3dba7","_id":"@nutrient-sdk/dws-client-typescript@3.0.0","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-8xO1rcXJHFyqO2Xwy3xhQXZNL63KTy7ybLrf8BAw+RcOjkXjw97WRZHLRnDuwkLesJM0cDhRqdwRktX+Fr3qEQ==","shasum":"76dc35558f0db12c9fb00cccb5bc8e452e19a5fa","tarball":"https://registry.npmjs.org/@nutrient-sdk/dws-client-typescript/-/dws-client-typescript-3.0.0.tgz","fileCount":56,"unpackedSize":887717,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@nutrient-sdk%2fdws-client-typescript@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIATz4wodWqe+N8qNzzW8T4y0g9Lt9Fpu2UuHNIHrSd4XAiADY3A5x+EchR2wwkTzij50WxE0JhUYlrN86M9WYfmoNg=="}]},"_npmUser":{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"},"maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"},{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dws-client-typescript_3.0.0_1787520717990_0.48501718855050857"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-16T00:07:58.138Z","modified":"2026-08-23T21:31:58.561Z","1.0.0":"2025-07-16T00:07:58.420Z","1.0.1":"2025-08-21T08:51:37.245Z","2.0.0":"2026-01-28T16:13:11.317Z","2.1.0":"2026-05-29T19:13:00.669Z","3.0.0":"2026-08-23T21:31:58.180Z"},"bugs":{"url":"https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript/issues"},"author":{"name":"Nutrient","url":"https://www.nutrient.io"},"license":"MIT","homepage":"https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript#readme","keywords":["nutrient","dws","document","convert","sign","redact","digital signature","extract","optimize","compress","pdf","pdfa","pdfua","office","html","markdown","xfdf","table","layout","api","client","typescript","nodejs","ai","agent","claude code","github copilot","cursor","windsurf","context7"],"repository":{"type":"git","url":"git+https://github.com/PSPDFKit-labs/nutrient-dws-client-typescript.git"},"description":"Node.js TypeScript client library for Nutrient Document Web Services (DWS) API","maintainers":[{"name":"mbukov","email":"matej@bukovinski.com"},{"name":"zrzka","email":"rvojta@me.com"},{"name":"pspdfkit-ci","email":"services+npm-ci@pspdfkit.com"},{"name":"msch","email":"martin@schuerrer.org"},{"name":"sasha_nutrient","email":"sasha.rudenka@nutrient.io"}],"readme":"# Nutrient DWS TypeScript Client\n\n[![npm](https://img.shields.io/npm/v/%40nutrient-sdk/dws-client-typescript)](https://www.npmjs.com/package/@nutrient-sdk/dws-client-typescript)\n[![CI](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/ci.yml/badge.svg)](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/ci.yml)\n[![Integration Tests](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/integration-tests.yml/badge.svg)](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/integration-tests.yml)\n[![Security](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/security.yml/badge.svg)](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/actions/workflows/security.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Node.js TypeScript client library for [Nutrient Document Web Services (DWS) API](https://nutrient.io/). This library provides a type-safe and ergonomic interface for document processing operations including conversion, merging, compression, watermarking, and text extraction.\n\n> **Note**: This package is published as `@nutrient-sdk/dws-client-typescript` on NPM. The package provides full TypeScript support and is designed specifically for Node.js environments.\n\n## Features\n\n- 📄 **Powerful document processing**: Convert, OCR, edit, compress, watermark, redact, and digitally sign documents\n- 🤖 **LLM friendly**: Built-in support for popular Coding Agents (Claude Code, GitHub Copilot, JetBrains Junie, Cursor, Windsurf) and documentation on Context7\n- 🔄 **100% mapping with DWS Processor API**: Complete coverage of all Nutrient DWS Processor API capabilities\n- 🛠️ **Convenient functions with sane defaults**: Simple interfaces for common operations with smart default settings\n- ⛓️ **Chainable operations**: Build complex document workflows with intuitive method chaining\n- 🔐 **Flexible authentication and security**: Support for API keys and async token providers with secure handling\n- ✅ **Highly tested**: Comprehensive test suite ensuring reliability and stability\n- 🔒 **Type-safe**: Full TypeScript support with comprehensive type definitions\n- 📦 **Multiple module formats**: ESM and CommonJS builds\n\n## Installation\n\n```bash\nnpm install @nutrient-sdk/dws-client-typescript\n```\n\nor\n\n```bash\nyarn add @nutrient-sdk/dws-client-typescript\n```\n\n## Migration Guides\n\n- v3.0.0: See `docs/MIGRATION.md` for breaking changes — `getAccountInfo()` deprecated in favor of `getUsage(product)`, `apiKeys` removed from the account info response, 14 full-word `OcrLanguage` values removed, and `sign()`'s `signatureType`/`cadesLevel` fields (and their default) removed.\n- v2.0.0: See `docs/MIGRATION.md` for URL input changes and `sign()` restrictions.\n\n## Integration with Coding Agents\n\nThis package has built-in support with popular coding agents like Claude Code, GitHub Copilot, Cursor, and Windsurf by exposing scripts that will inject rules instructing the coding agents on how to use the package. This ensures that the coding agent doesn't hallucinate documentation, as well as making full use of all the features offered in Nutrient DWS TypeScript Client.\n\n```bash\n# Adding code rule to Claude Code\nnpx dws-add-claude-code-rule\n\n# Adding code rule to GitHub Copilot\nnpx dws-add-github-copilot-rule\n\n# Adding code rule to Junie (Jetbrains)\nnpx dws-add-junie-rule\n\n# Adding code rule to Cursor\nnpx dws-add-cursor-rule\n\n# Adding code rule to Windsurf\nnpx dws-add-windsurf-rule\n```\n\nThe documentation for Nutrient DWS TypeScript Client is also available on [Context7](https://context7.com/pspdfkit-labs/nutrient-dws-client-typescript)\n\n## Quick Start\n\n```typescript\nimport { NutrientClient } from '@nutrient-sdk/dws-client-typescript';\n\nconst client = new NutrientClient({\n  apiKey: 'nutr_sk_your_secret_key'\n});\n```\n\n## Framework Quickstarts\n\nFramework wiring examples are available in `examples/src/`:\n\n- `framework_openai_agents.mjs`\n- `framework_langchain.mjs`\n- `framework_crewai_scope.md` (CrewAI scope note for TypeScript users)\n\nSyntax-check commands:\n\n```bash\nnode --check examples/src/framework_openai_agents.mjs\nnode --check examples/src/framework_langchain.mjs\n```\n\n### Working with URLs\n\nMost methods accept URLs directly. The URL is passed to the server, which fetches the content—this avoids SSRF vulnerabilities since the client never fetches URLs itself.\n\n```typescript\n// Pass URL as a string\nconst result = await client.convert('https://example.com/document.pdf', 'docx');\n\n// Or as an object (useful for TypeScript type narrowing)\nconst result = await client.convert({ type: 'url', url: 'https://example.com/document.pdf' }, 'docx');\n\n// URLs also work with the workflow builder\nconst result = await client.workflow()\n  .addFilePart('https://example.com/document.pdf')\n  .outputPdf()\n  .execute();\n```\n\n**Exception:** The `sign()` method only accepts local files (file paths, Buffers, streams) because the underlying API endpoint doesn't support URL inputs. For signing remote files, fetch the content first:\n\n```typescript\n// Fetch and pass the bytes for signing\nconst response = await fetch('https://example.com/document.pdf');\nconst buffer = Buffer.from(await response.arrayBuffer());\nconst result = await client.sign(buffer, { /* signature options */ });\n```\n\n## Direct Methods\n\nThe client provides numerous methods for document processing:\n\n```typescript\n// Convert a document\nconst pdfResult = await client.convert('document.docx', 'pdf');\n\n// Extract text\nconst textResult = await client.extractText('document.pdf');\n\n// Add a watermark\nconst watermarkedDoc = await client.watermarkText('document.pdf', 'CONFIDENTIAL');\n\n// Merge multiple documents\nconst mergedPdf = await client.merge(['doc1.pdf', 'doc2.pdf', 'doc3.pdf']);\n```\n\nFor a complete list of available methods with examples, see the [Methods Documentation](docs/METHODS.md).\n\n## Data Extraction (`/extraction/parse`)\n\n`client.parse()` exposes Nutrient's Data Extraction API. It's designed for\n**content-extraction workflows** where you need to feed document content into a\ndownstream pipeline rather than render or transform the document itself:\n\n- **RAG / search indexing / content migration** — pull a clean Markdown\n  representation of a document for chunking, embedding, and indexing in a\n  vector store or search engine.\n- **Form and invoice extraction** — pull structured fields (key/value pairs,\n  tables, semantic regions) out of business documents with bounding boxes and\n  confidence scores attached to every element.\n- **Layout-aware document understanding** — get a typed, page-anchored element\n  list (paragraphs with semantic roles, tables with cell spans, formulas in\n  LaTeX, pictures, handwriting) suitable for building document-comprehension\n  tooling, including agentic workflows.\n\nThe endpoint accepts PDFs, Office documents (Word, Excel, PowerPoint), and\nimages. Unlike `sign()`, it is not restricted to PDFs.\n\n### Choosing an output format\n\n| Format              | Best for                                                                    | Shape                                                           |\n| ------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------- |\n| `markdown`          | RAG, search indexing, content migration — anywhere structured text beats spatial data | `response.output.markdown` — a single Markdown string          |\n| `spatial` (default) | Form/invoice extraction, layout reconstruction, flows that need per-element confidence | `response.output.elements` — flat array of typed elements       |\n\n### Setup — separate Extract API key\n\nData Extraction is a separate product from the DWS Processor with its own\ncredit pool and its own API key. Pass both keys when constructing the client:\n\n```typescript\nconst client = new NutrientClient({\n  apiKey: process.env.NUTRIENT_API_KEY!,          // Processor key\n  extractApiKey: process.env.NUTRIENT_EXTRACT_API_KEY!, // Data Extraction key\n});\n```\n\n`extractApiKey` is consulted only by `parse()`, `parseToMarkdown()`, and\n`parseElements()`. Every other method on the client (`convert`, `sign`, `ocr`,\n`merge`, …) keeps using `apiKey`. If you omit `extractApiKey`, the parse\nmethods fall back to `apiKey` — that fallback only works on tenants whose\nsingle DWS key authorises both products.\n\n### Quick start\n\n```typescript\nimport { NutrientClient } from '@nutrient-sdk/dws-client-typescript';\n\nconst client = new NutrientClient({\n  apiKey: process.env.NUTRIENT_API_KEY!,\n  extractApiKey: process.env.NUTRIENT_EXTRACT_API_KEY!,\n});\n\n// Spatial elements (default) — paragraphs, tables, key-value regions, etc.\nconst result = await client.parse('contract.pdf', { mode: 'understand' });\nif (result.output.elements !== undefined) {\n  for (const el of result.output.elements) {\n    if (el.type === 'table') console.log(`${el.rowCount}x${el.columnCount} table`);\n  }\n}\n\n// Whole-document Markdown from a born-digital PDF.\nconst mdResult = await client.parse('report.pdf', { mode: 'text' });\nif (mdResult.output.markdown !== undefined) {\n  console.log(mdResult.output.markdown);\n}\n```\n\n### Modes — when to use which\n\n| Mode         | Credits / page | When to use                                                                                                               |\n| ------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------- |\n| `text`       | 1              | Born-digital documents only. No OCR, no AI. Fastest and cheapest path to Markdown.                                       |\n| `structure`  | 1.5            | OCR-based segmentation with bounding boxes. Handles scanned documents, images, and any input that requires OCR.          |\n| `understand` | 9              | Full pipeline with AI augmentation on top of OCR. Most accurate for tables, multi-column layouts, formulas, and forms.   |\n| `agentic`    | 18             | Builds on `understand` and adds a vision-language model. Best for image descriptions and complex visual layouts.         |\n\n### Recipes\n\n**RAG ingestion** — PDF → Markdown → chunks → embeddings → vector store:\n\n```typescript\nconst result = await client.parse('whitepaper.pdf', { mode: 'text' });\nconst markdown = result.output.markdown!;\n// Then: chunk on headings, embed, push to your vector store.\n```\n\nFor born-digital PDFs, `mode: 'text'` is the cheapest path (1 credit/page).\nFor scanned PDFs or images, switch to `mode: 'structure'` so OCR runs.\n\nOr use the convenience wrapper:\n\n```typescript\nconst markdown = await client.parseToMarkdown('whitepaper.pdf');\n```\n\n**Form/invoice extraction** — PDF → spatial elements → structured object:\n\n```typescript\nconst result = await client.parse('invoice.pdf', { mode: 'understand' });\nconst elements = result.output.elements!;\n\n// Pull key/value pairs from form regions.\nconst fields: Record<string, unknown> = {};\nfor (const el of elements) {\n  if (el.type === 'keyValueRegion') {\n    for (const pair of el.pairs) {\n      if (pair.key && pair.value) {\n        fields[String(pair.key.value)] = pair.value.value;\n      }\n    }\n  }\n}\n\n// Walk tables — each cell carries row/col indices and span counts.\nfor (const el of elements) {\n  if (el.type === 'table') {\n    console.log(`Table: ${el.rowCount}×${el.columnCount}`);\n    for (const cell of el.cells) {\n      console.log(`  [${cell.row}][${cell.column}] ${cell.text}`);\n    }\n  }\n}\n```\n\nFor complex documents that mix dense images with text, step up to\n`mode: 'agentic'` so the VLM produces image descriptions and semantic\nclassifications (18 credits/page).\n\nOr use the convenience wrapper to skip output-format discrimination entirely:\n\n```typescript\nconst elements = await client.parseElements('invoice.pdf', 'understand');\n```\n\n### Billing — extraction credits vs processor credits\n\n`/extraction/parse` is billed against **extraction credits**, a separate\nbilling bucket from the **processor API credits** consumed by `convert`,\n`ocr`, `sign`, `merge`, and every other endpoint on this client. The two\nbuckets never debit each other.\n\nExtraction-credit accounting is returned per request:\n\n```typescript\nconst result = await client.parse('document.pdf', { mode: 'structure' });\nconst usage = result.usage?.data_extraction_credits;\nconsole.log(`Cost: ${usage?.cost} extraction credits`);\nconsole.log(`Remaining: ${usage?.remainingCredits} extraction credits`);\n```\n\nThe hand-composed types (`ExtractionCredits`, `ParseOptions`, `ParseInstructions`,\n`ParseResponse`, `ParseResponseSpatial`, `ParseResponseMarkdown`,\n`ParseOutputOptions`) are exported from the package root. The spec primitives —\n`Mode`, `Element` and the six element subtypes, `Bounds`, `PageRef`, `Word`,\n`TableCell`, `KeyValuePair`, `KeyValueEntity`, `Metrics`, `Usage`,\n`Configuration`, `ParseErrorResponse`, etc. — live under the `extractComponents`\nnamespace:\n\n```typescript\nimport type { extractComponents } from '@nutrient-sdk/dws-client-typescript';\n\ntype ParagraphElement = extractComponents['schemas']['ParagraphElement'];\ntype TableElement = extractComponents['schemas']['TableElement'];\n```\n\nThis mirrors how the Processor types are exposed via the existing `components`\nnamespace.\n\n\n## Workflow System\n\nThe client also provide a fluent builder pattern with staged interfaces to create document processing workflows:\n\n```typescript\nconst result = await client\n  .workflow()\n  .addFilePart('document.pdf')\n  .addFilePart('appendix.pdf')\n  .applyAction(BuildActions.watermarkText('CONFIDENTIAL', {\n    opacity: 0.5,\n    fontSize: 48\n  }))\n  .outputPdf({ \n    optimize: { \n      mrcCompression: true,\n      imageOptimizationQuality: 2 \n    } \n  })\n  .execute();\n```\n\nThe workflow system follows a staged approach:\n1. Add document parts (files, HTML, pages)\n2. Apply actions (optional)\n3. Set output format\n4. Execute or perform a dry run\n\nFor detailed information about the workflow system, including examples and best practices, see the [Workflow Documentation](docs/WORKFLOW.md).\n\n## Error Handling\n\nThe library provides a comprehensive error hierarchy:\n\n```typescript\nimport { \n  NutrientError,\n  ValidationError,\n  APIError,\n  AuthenticationError,\n  NetworkError\n} from '@nutrient-sdk/dws-client-typescript';\n\ntry {\n  const result = await client.convert('file.docx', 'pdf');\n} catch (error) {\n  if (error instanceof ValidationError) {\n    // Invalid input parameters\n    console.error('Invalid input:', error.message, error.details);\n  } else if (error instanceof AuthenticationError) {\n    // Authentication failed\n    console.error('Auth error:', error.message, error.statusCode);\n  } else if (error instanceof APIError) {\n    // API returned an error\n    console.error('API error:', error.message, error.statusCode, error.details);\n  } else if (error instanceof NetworkError) {\n    // Network request failed\n    console.error('Network error:', error.message, error.details);\n  }\n}\n```\n\n## Testing\n\nThe library includes comprehensive unit and integration tests:\n\n```bash\n# Run all tests\nnpm test\n\n# Run with coverage report\nnpm test -- --coverage\n\n# Run only unit tests\nnpm run test:unit\n\n# Run integration tests (requires API key)\nNUTRIENT_API_KEY=your_key npm run test:integration\n```\n\nThe library maintains high test coverage across all API methods, including:\n- Unit tests for all public methods\n- Integration tests for real API interactions\n\n## Contributing\n\nWe welcome contributions to improve the library! Please follow our development standards to ensure code quality and maintainability.\n\nQuick start for contributors:\n\n1. Clone and setup the repository\n2. Make changes following atomic commit practices\n3. Use conventional commits for clear change history\n4. Include appropriate tests for new features\n\nFor detailed contribution guidelines, see the [Contributing Guide](docs/CONTRIBUTING.md).\n\n## Project Structure\n\n```\nsrc/\n├── __tests__/   # Test files\n├── builders/    # Builder classes\n├── generated/   # Generated code\n├── types/       # TypeScript interfaces and types\n├── build.ts     # Build utilities\n├── client.ts    # Main NutrientClient class\n├── errors.ts    # Error classes\n├── http.ts      # HTTP layer\n├── inputs.ts    # Input handling\n├── workflow.ts  # WorkflowBuilder class\n└── index.ts     # Public exports\n```\n\n## CI/CD\n\nThis project uses GitHub Actions for continuous integration and deployment:\n\n- **CI**: Runs linting, type checking, and tests on every push and PR\n- **Integration Tests**: Tests against the real Nutrient API\n- **Scheduled Integration Tests**: Daily API compatibility check\n- **Security**: Automated security scanning\n\nFor security reasons, API keys are stored as GitHub Secrets and Integration tests only run on trusted sources.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\nFor issues and feature requests, please use the [GitHub issue tracker](https://github.com/pspdfkit-labs/nutrient-dws-client-typescript/issues).\n\nFor questions about the Nutrient DWS Processor API, refer to the [official documentation](https://nutrient.io/docs/).\n","readmeFilename":"README.md"}