pdfdancer-client-typescript 1.0.14 → 1.0.15
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.
- package/.eslintrc.js +26 -18
- package/.github/workflows/ci.yml +51 -2
- package/.github/workflows/daily-tests.yml +54 -0
- package/README.md +41 -1
- package/dist/__tests__/e2e/test-helpers.d.ts.map +1 -1
- package/dist/__tests__/e2e/test-helpers.js +9 -2
- package/dist/__tests__/e2e/test-helpers.js.map +1 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +16 -5
- package/dist/fingerprint.js.map +1 -1
- package/dist/pdfdancer_v1.d.ts +69 -2
- package/dist/pdfdancer_v1.d.ts.map +1 -1
- package/dist/pdfdancer_v1.js +238 -15
- package/dist/pdfdancer_v1.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/e2e/acroform.test.ts +58 -0
- package/src/__tests__/e2e/form_x_object.test.ts +29 -0
- package/src/__tests__/e2e/image.test.ts +34 -0
- package/src/__tests__/e2e/line-showcase.test.ts +0 -5
- package/src/__tests__/e2e/line.test.ts +63 -7
- package/src/__tests__/e2e/paragraph-showcase.test.ts +0 -8
- package/src/__tests__/e2e/paragraph.test.ts +64 -8
- package/src/__tests__/e2e/path.test.ts +29 -0
- package/src/__tests__/e2e/test-helpers.ts +8 -2
- package/src/__tests__/e2e/token_from_env.test.ts +0 -1
- package/src/__tests__/retry-mechanism.test.ts +420 -0
- package/src/fingerprint.ts +20 -7
- package/src/pdfdancer_v1.ts +397 -50
package/.eslintrc.js
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
2
|
+
parser: '@typescript-eslint/parser',
|
|
3
|
+
plugins: ['@typescript-eslint'],
|
|
4
|
+
extends: [
|
|
5
|
+
'eslint:recommended',
|
|
6
|
+
],
|
|
7
|
+
root: true,
|
|
8
|
+
env: {
|
|
9
|
+
node: true,
|
|
10
|
+
jest: true,
|
|
11
|
+
browser: true,
|
|
12
|
+
},
|
|
13
|
+
ignorePatterns: ['.eslintrc.js', 'dist/', 'node_modules/'],
|
|
14
|
+
overrides: [
|
|
15
|
+
{
|
|
16
|
+
files: ['src/**/*.ts', 'src/**/*.tsx'],
|
|
17
|
+
rules: {
|
|
18
|
+
'@typescript-eslint/interface-name-prefix': 'off',
|
|
19
|
+
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
20
|
+
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
21
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
22
|
+
'@typescript-eslint/no-unused-vars': 'warn',
|
|
23
|
+
'no-dupe-class-members': 'off',
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -8,11 +8,14 @@ on:
|
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
test:
|
|
11
|
+
# Run minimal config on non-main branches
|
|
12
|
+
if: github.ref != 'refs/heads/main'
|
|
11
13
|
runs-on: ubuntu-latest
|
|
12
14
|
|
|
13
15
|
strategy:
|
|
16
|
+
fail-fast: false
|
|
14
17
|
matrix:
|
|
15
|
-
node-version: [ 20.x
|
|
18
|
+
node-version: [ 20.x ]
|
|
16
19
|
|
|
17
20
|
steps:
|
|
18
21
|
- uses: actions/checkout@v4
|
|
@@ -33,5 +36,51 @@ jobs:
|
|
|
33
36
|
run: npm run build
|
|
34
37
|
|
|
35
38
|
- name: Run tests
|
|
36
|
-
run:
|
|
39
|
+
run: |
|
|
40
|
+
PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com \
|
|
41
|
+
PDFDANCER_TOKEN=42 \
|
|
42
|
+
npm run test
|
|
43
|
+
|
|
44
|
+
test-full-matrix:
|
|
45
|
+
# Run full OS + Node version matrix only on main
|
|
46
|
+
if: github.ref == 'refs/heads/main'
|
|
47
|
+
runs-on: ${{ matrix.os }}
|
|
48
|
+
|
|
49
|
+
strategy:
|
|
50
|
+
fail-fast: false
|
|
51
|
+
matrix:
|
|
52
|
+
os: [ ubuntu-latest, windows-latest ]
|
|
53
|
+
node-version: [ 20.x, 22.x, 24.x ]
|
|
54
|
+
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
|
|
58
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
59
|
+
uses: actions/setup-node@v4
|
|
60
|
+
with:
|
|
61
|
+
node-version: ${{ matrix.node-version }}
|
|
62
|
+
cache: 'npm'
|
|
63
|
+
|
|
64
|
+
- name: Install dependencies
|
|
65
|
+
run: npm ci
|
|
66
|
+
|
|
67
|
+
- name: Run linter
|
|
68
|
+
run: npm run lint
|
|
69
|
+
|
|
70
|
+
- name: Build
|
|
71
|
+
run: npm run build
|
|
72
|
+
|
|
73
|
+
- name: Run tests (Unix)
|
|
74
|
+
if: runner.os != 'Windows'
|
|
75
|
+
run: |
|
|
76
|
+
PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com \
|
|
77
|
+
PDFDANCER_TOKEN=42 \
|
|
78
|
+
npm run test
|
|
37
79
|
|
|
80
|
+
- name: Run tests (Windows)
|
|
81
|
+
if: runner.os == 'Windows'
|
|
82
|
+
shell: cmd
|
|
83
|
+
run: |
|
|
84
|
+
set PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com
|
|
85
|
+
set PDFDANCER_TOKEN=42
|
|
86
|
+
npm run test
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Daily Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
# Run daily at 11:00 PM UTC
|
|
6
|
+
- cron: '0 23 * * *'
|
|
7
|
+
workflow_dispatch: # Allow manual trigger
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
daily-test:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ ubuntu-latest, windows-latest ]
|
|
17
|
+
node-version: [ 20.x, 22.x, 24.x ]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: ${{ matrix.node-version }}
|
|
26
|
+
cache: 'npm'
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm ci
|
|
30
|
+
|
|
31
|
+
- name: Run linter
|
|
32
|
+
run: npm run lint
|
|
33
|
+
|
|
34
|
+
- name: Build
|
|
35
|
+
run: npm run build
|
|
36
|
+
|
|
37
|
+
- name: Run tests (Unix)
|
|
38
|
+
if: runner.os != 'Windows'
|
|
39
|
+
run: |
|
|
40
|
+
PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com \
|
|
41
|
+
PDFDANCER_TOKEN=42 \
|
|
42
|
+
npm run test
|
|
43
|
+
|
|
44
|
+
- name: Run tests (Windows)
|
|
45
|
+
if: runner.os == 'Windows'
|
|
46
|
+
shell: cmd
|
|
47
|
+
run: |
|
|
48
|
+
set PDFDANCER_BASE_URL=https://api-staging.pdfdancer.com
|
|
49
|
+
set PDFDANCER_TOKEN=42
|
|
50
|
+
npm run test
|
|
51
|
+
|
|
52
|
+
- name: Report failure
|
|
53
|
+
if: failure()
|
|
54
|
+
run: echo "Daily test run failed. Please check the logs for details."
|
package/README.md
CHANGED
|
@@ -139,7 +139,8 @@ const pdf = await PDFDancer.open(
|
|
|
139
139
|
pdfData, // Uint8Array, File, or ArrayBuffer
|
|
140
140
|
token, // Optional: defaults to process.env.PDFDANCER_TOKEN
|
|
141
141
|
baseUrl, // Optional: defaults to process.env.PDFDANCER_BASE_URL or https://api.pdfdancer.com
|
|
142
|
-
timeout
|
|
142
|
+
timeout, // Optional request timeout in ms (default: 60000)
|
|
143
|
+
retryConfig // Optional retry configuration
|
|
143
144
|
);
|
|
144
145
|
```
|
|
145
146
|
|
|
@@ -148,6 +149,45 @@ const pdf = await PDFDancer.open(
|
|
|
148
149
|
- Tune HTTP read timeouts via the `timeout` argument on `PDFDancer.open()` and `PDFDancer.new()`.
|
|
149
150
|
- Page indexes start at `0` throughout the API.
|
|
150
151
|
|
|
152
|
+
### Retry Configuration
|
|
153
|
+
|
|
154
|
+
The client includes a configurable retry mechanism for handling transient failures. By default, it retries on specific HTTP status codes (429, 500, 502, 503, 504) and network errors with exponential backoff.
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import { PDFDancer, RetryConfig } from 'pdfdancer-client-typescript';
|
|
158
|
+
|
|
159
|
+
// Use default retry configuration (3 retries, exponential backoff)
|
|
160
|
+
const pdf = await PDFDancer.open(pdfData);
|
|
161
|
+
|
|
162
|
+
// Customize retry behavior
|
|
163
|
+
const customRetryConfig: RetryConfig = {
|
|
164
|
+
maxRetries: 5, // Maximum number of retry attempts (default: 3)
|
|
165
|
+
initialDelay: 1000, // Initial delay in ms before first retry (default: 1000)
|
|
166
|
+
maxDelay: 10000, // Maximum delay in ms between retries (default: 10000)
|
|
167
|
+
backoffMultiplier: 2, // Exponential backoff multiplier (default: 2)
|
|
168
|
+
retryableStatusCodes: [429, 500, 502, 503, 504], // HTTP status codes to retry (default)
|
|
169
|
+
retryOnNetworkError: true, // Retry on network errors (default: true)
|
|
170
|
+
useJitter: true // Add random jitter to delays (default: true)
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const pdf = await PDFDancer.open(pdfData, token, baseUrl, timeout, customRetryConfig);
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Default Retry Behavior:**
|
|
177
|
+
- Retries up to 3 times on transient errors
|
|
178
|
+
- Uses exponential backoff with jitter (1s, 2s, 4s base delays)
|
|
179
|
+
- Retries on HTTP 429 (rate limit), 500, 502, 503, 504 (server errors)
|
|
180
|
+
- Retries on network errors (connection failures, timeouts)
|
|
181
|
+
- Does NOT retry on client errors (4xx except 429)
|
|
182
|
+
|
|
183
|
+
**Disable Retries:**
|
|
184
|
+
```typescript
|
|
185
|
+
const noRetryConfig: RetryConfig = { maxRetries: 0 };
|
|
186
|
+
const pdf = await PDFDancer.open(pdfData, token, baseUrl, timeout, noRetryConfig);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The retry mechanism applies to all REST API calls including session creation, document operations, and font registration.
|
|
190
|
+
|
|
151
191
|
## Working with Pages
|
|
152
192
|
|
|
153
193
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/e2e/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/__tests__/e2e/test-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAmBzC;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAehE;AAiBD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAsBrG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAS7D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,UAI3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAS5D"}
|
|
@@ -35,6 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
return result;
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
42
|
exports.getBaseUrl = getBaseUrl;
|
|
40
43
|
exports.readToken = readToken;
|
|
@@ -47,11 +50,12 @@ exports.getFontPath = getFontPath;
|
|
|
47
50
|
exports.readFontFixture = readFontFixture;
|
|
48
51
|
const fs = __importStar(require("fs"));
|
|
49
52
|
const path = __importStar(require("path"));
|
|
53
|
+
const os_1 = __importDefault(require("os"));
|
|
50
54
|
/**
|
|
51
55
|
* Get the base URL from environment variable or default
|
|
52
56
|
*/
|
|
53
57
|
function getBaseUrl() {
|
|
54
|
-
return process.env.PDFDANCER_BASE_URL || 'http://localhost:8080';
|
|
58
|
+
return (process.env.PDFDANCER_BASE_URL || 'http://localhost:8080').trim();
|
|
55
59
|
}
|
|
56
60
|
/**
|
|
57
61
|
* Read authentication token from environment or token files
|
|
@@ -134,7 +138,10 @@ async function requireEnvAndFixture(pdfFilename) {
|
|
|
134
138
|
* Helper to open temporary file path (for Node.js environment)
|
|
135
139
|
*/
|
|
136
140
|
function createTempPath(filename) {
|
|
137
|
-
const tmpDir = process.env.TMPDIR ||
|
|
141
|
+
const tmpDir = process.env.TMPDIR ||
|
|
142
|
+
process.env.TEMP ||
|
|
143
|
+
process.env.TMP ||
|
|
144
|
+
os_1.default.tmpdir(); // reliable built-in fallback
|
|
138
145
|
return path.join(tmpDir, filename);
|
|
139
146
|
}
|
|
140
147
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/__tests__/e2e/test-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/__tests__/e2e/test-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+IH;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B1E"}
|
package/dist/fingerprint.js
CHANGED
|
@@ -85,14 +85,25 @@ function getInstallSalt() {
|
|
|
85
85
|
* Note: This is limited on the client side and may not always be accurate
|
|
86
86
|
*/
|
|
87
87
|
async function getClientIP() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// Return a placeholder that will be consistent per session
|
|
88
|
+
// In the browser, just return a placeholder
|
|
89
|
+
if (typeof window !== 'undefined') {
|
|
91
90
|
return 'client-unknown';
|
|
92
91
|
}
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
// --- Running on server side ---
|
|
93
|
+
// Try to find a non-internal IPv4 address from network interfaces
|
|
94
|
+
const interfaces = os.networkInterfaces();
|
|
95
|
+
for (const name of Object.keys(interfaces)) {
|
|
96
|
+
const netList = interfaces[name];
|
|
97
|
+
if (!netList)
|
|
98
|
+
continue;
|
|
99
|
+
for (const net of netList) {
|
|
100
|
+
if (net.family === 'IPv4' && !net.internal) {
|
|
101
|
+
return net.address;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
95
104
|
}
|
|
105
|
+
// Fallback if nothing found
|
|
106
|
+
return 'server-unknown';
|
|
96
107
|
}
|
|
97
108
|
/**
|
|
98
109
|
* Get the OS type
|
package/dist/fingerprint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqJH,kDA6BC;AAhLD,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB;;;GAGG;AACH,SAAS,cAAc;IACnB,MAAM,UAAU,GAAG,wBAAwB,CAAC;IAE5C,0CAA0C;IAC1C,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACtC,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9C,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAEpD,uCAAuC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;QAC1D,CAAC;QAED,yCAAyC;QACzC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,4DAA4D;QAC5D,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW;IACtB,4CAA4C;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED,iCAAiC;IACjC,kEAAkE;IAClE,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,GAAG,CAAC,OAAO,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS;IACd,4BAA4B;IAC5B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAChD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;IACjF,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAChB,sBAAsB;IACtB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC;YACD,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACL,gCAAgC;QACpC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW;IAChB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,SAAS;IACd,IAAI,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CAAC,MAAe;IACrD,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,SAAS,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,YAAY,CAAC;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5E,sCAAsC;IACtC,MAAM,eAAe,GACjB,MAAM;QACN,OAAO;QACP,MAAM;QACN,WAAW;QACX,QAAQ;QACR,MAAM;QACN,UAAU;QACV,WAAW,CAAC;IAEhB,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1F,OAAO,eAAe,CAAC;AAC3B,CAAC"}
|
package/dist/pdfdancer_v1.d.ts
CHANGED
|
@@ -8,6 +8,40 @@ import { ParagraphBuilder } from './paragraph-builder';
|
|
|
8
8
|
import { PageBuilder } from './page-builder';
|
|
9
9
|
import { FormFieldObject, FormXObject, ImageObject, ParagraphObject, PathObject, TextLineObject } from "./types";
|
|
10
10
|
import { ImageBuilder } from "./image-builder";
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for retry mechanism on REST API calls.
|
|
13
|
+
*/
|
|
14
|
+
export interface RetryConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of retry attempts (default: 3)
|
|
17
|
+
*/
|
|
18
|
+
maxRetries?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Initial delay in milliseconds before first retry (default: 1000)
|
|
21
|
+
* Subsequent delays use exponential backoff
|
|
22
|
+
*/
|
|
23
|
+
initialDelay?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum delay in milliseconds between retries (default: 10000)
|
|
26
|
+
*/
|
|
27
|
+
maxDelay?: number;
|
|
28
|
+
/**
|
|
29
|
+
* HTTP status codes that should trigger a retry (default: [429, 500, 502, 503, 504])
|
|
30
|
+
*/
|
|
31
|
+
retryableStatusCodes?: number[];
|
|
32
|
+
/**
|
|
33
|
+
* Whether to retry on network errors (connection failures, timeouts) (default: true)
|
|
34
|
+
*/
|
|
35
|
+
retryOnNetworkError?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Exponential backoff multiplier (default: 2)
|
|
38
|
+
*/
|
|
39
|
+
backoffMultiplier?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Whether to add random jitter to retry delays to prevent thundering herd (default: true)
|
|
42
|
+
*/
|
|
43
|
+
useJitter?: boolean;
|
|
44
|
+
}
|
|
11
45
|
declare class PageClient {
|
|
12
46
|
private _pageIndex;
|
|
13
47
|
private _client;
|
|
@@ -48,6 +82,23 @@ declare class PageClient {
|
|
|
48
82
|
* Optionally filter by object types.
|
|
49
83
|
*/
|
|
50
84
|
getSnapshot(types?: ObjectType[]): Promise<PageSnapshot>;
|
|
85
|
+
selectPath(): Promise<PathObject | null>;
|
|
86
|
+
selectPathAt(x: number, y: number, tolerance?: number): Promise<PathObject | null>;
|
|
87
|
+
selectImage(): Promise<ImageObject | null>;
|
|
88
|
+
selectImageAt(x: number, y: number, tolerance?: number): Promise<ImageObject | null>;
|
|
89
|
+
selectForm(): Promise<FormXObject | null>;
|
|
90
|
+
selectFormAt(x: number, y: number, tolerance?: number): Promise<FormXObject | null>;
|
|
91
|
+
selectFormField(): Promise<FormFieldObject | null>;
|
|
92
|
+
selectFormFieldAt(x: number, y: number, tolerance?: number): Promise<FormFieldObject | null>;
|
|
93
|
+
selectFormFieldByName(fieldName: string): Promise<FormFieldObject | null>;
|
|
94
|
+
selectParagraph(): Promise<ParagraphObject | null>;
|
|
95
|
+
selectParagraphStartingWith(text: string): Promise<ParagraphObject | null>;
|
|
96
|
+
selectParagraphMatching(pattern: string): Promise<ParagraphObject | null>;
|
|
97
|
+
selectParagraphAt(x: number, y: number, tolerance?: number): Promise<ParagraphObject | null>;
|
|
98
|
+
selectTextLine(): Promise<TextLineObject | null>;
|
|
99
|
+
selectTextLineStartingWith(text: string): Promise<TextLineObject | null>;
|
|
100
|
+
selectTextLineMatching(pattern: string): Promise<TextLineObject | null>;
|
|
101
|
+
selectTextLineAt(x: number, y: number, tolerance?: number): Promise<TextLineObject | null>;
|
|
51
102
|
}
|
|
52
103
|
/**
|
|
53
104
|
* REST API client for interacting with the PDFDancer PDF manipulation service.
|
|
@@ -64,6 +115,7 @@ export declare class PDFDancer {
|
|
|
64
115
|
private _sessionId;
|
|
65
116
|
private _userId?;
|
|
66
117
|
private _fingerprintCache?;
|
|
118
|
+
private _retryConfig;
|
|
67
119
|
private _documentSnapshotCache;
|
|
68
120
|
private _pageSnapshotCache;
|
|
69
121
|
private _pagesCache;
|
|
@@ -78,7 +130,7 @@ export declare class PDFDancer {
|
|
|
78
130
|
* Must be called after constructor before using the client.
|
|
79
131
|
*/
|
|
80
132
|
private init;
|
|
81
|
-
static open(pdfData: Uint8Array, token?: string, baseUrl?: string, timeout?: number): Promise<PDFDancer>;
|
|
133
|
+
static open(pdfData: Uint8Array, token?: string, baseUrl?: string, timeout?: number, retryConfig?: RetryConfig): Promise<PDFDancer>;
|
|
82
134
|
/**
|
|
83
135
|
* Creates a new, blank PDF document with the specified parameters.
|
|
84
136
|
*
|
|
@@ -89,12 +141,13 @@ export declare class PDFDancer {
|
|
|
89
141
|
* @param token Authentication token (optional, can use PDFDANCER_TOKEN env var)
|
|
90
142
|
* @param baseUrl Base URL for the PDFDancer API (optional)
|
|
91
143
|
* @param timeout Request timeout in milliseconds (default: 60000)
|
|
144
|
+
* @param retryConfig Retry configuration (optional, uses defaults if not specified)
|
|
92
145
|
*/
|
|
93
146
|
static new(options?: {
|
|
94
147
|
pageSize?: PageSizeInput;
|
|
95
148
|
orientation?: Orientation;
|
|
96
149
|
initialPageCount?: number;
|
|
97
|
-
}, token?: string, baseUrl?: string, timeout?: number): Promise<PDFDancer>;
|
|
150
|
+
}, token?: string, baseUrl?: string, timeout?: number, retryConfig?: RetryConfig): Promise<PDFDancer>;
|
|
98
151
|
private static _obtainAnonymousToken;
|
|
99
152
|
/**
|
|
100
153
|
* Process PDF data from various input types with strict validation.
|
|
@@ -118,6 +171,11 @@ export declare class PDFDancer {
|
|
|
118
171
|
* Get or generate the fingerprint for this client
|
|
119
172
|
*/
|
|
120
173
|
private _getFingerprint;
|
|
174
|
+
/**
|
|
175
|
+
* Executes a fetch request with retry logic based on the configured retry policy.
|
|
176
|
+
* Implements exponential backoff with optional jitter.
|
|
177
|
+
*/
|
|
178
|
+
private _fetchWithRetry;
|
|
121
179
|
/**
|
|
122
180
|
* Make HTTP request with session headers and error handling.
|
|
123
181
|
*/
|
|
@@ -319,6 +377,15 @@ export declare class PDFDancer {
|
|
|
319
377
|
private toTextLineObjects;
|
|
320
378
|
selectTextLines(): Promise<TextLineObject[]>;
|
|
321
379
|
selectLines(): Promise<TextLineObject[]>;
|
|
380
|
+
selectImage(): Promise<ImageObject | null>;
|
|
381
|
+
selectPath(): Promise<PathObject | null>;
|
|
382
|
+
selectForm(): Promise<FormXObject | null>;
|
|
383
|
+
selectFormField(): Promise<FormFieldObject | null>;
|
|
384
|
+
selectFieldByName(fieldName: string): Promise<FormFieldObject | null>;
|
|
385
|
+
selectParagraph(): Promise<ParagraphObject | null>;
|
|
386
|
+
selectParagraphMatching(pattern: string): Promise<ParagraphObject | null>;
|
|
387
|
+
selectTextLine(): Promise<TextLineObject | null>;
|
|
388
|
+
selectLine(): Promise<TextLineObject | null>;
|
|
322
389
|
}
|
|
323
390
|
export {};
|
|
324
391
|
//# sourceMappingURL=pdfdancer_v1.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfdancer_v1.d.ts","sourceRoot":"","sources":["../src/pdfdancer_v1.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EASH,gBAAgB,EAEhB,IAAI,EASJ,SAAS,EACT,UAAU,EACV,WAAW,EACX,OAAO,EACP,QAAQ,EACR,aAAa,EACb,YAAY,EAEZ,QAAQ,EAKX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAC,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"pdfdancer_v1.d.ts","sourceRoot":"","sources":["../src/pdfdancer_v1.ts"],"names":[],"mappings":"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"}
|