@truenorth-it/dataverse-client 1.0.7 → 1.0.9
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/README.md +66 -8
- package/package.json +11 -24
- package/sdk/dist/cli.js +5 -2
- package/sdk/dist/cli.js.map +1 -1
- package/sdk/dist/client.d.ts +29 -0
- package/sdk/dist/client.d.ts.map +1 -1
- package/sdk/dist/client.js +38 -3
- package/sdk/dist/client.js.map +1 -1
- package/sdk/dist/types.d.ts +11 -3
- package/sdk/dist/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -20,7 +20,8 @@ The SDK works out of the box without any type generation. Response data is `Reco
|
|
|
20
20
|
import { createClient } from "@truenorth-it/dataverse-client";
|
|
21
21
|
|
|
22
22
|
const client = createClient({
|
|
23
|
-
baseUrl: "https://
|
|
23
|
+
baseUrl: "https://api.dataverse-contact.tnapps.co.uk",
|
|
24
|
+
scope: "default", // scope segment in API URLs (e.g. /api/v2/default/me/case)
|
|
24
25
|
getToken: () => getAccessTokenSilently(), // your Auth0 token provider
|
|
25
26
|
});
|
|
26
27
|
|
|
@@ -71,7 +72,7 @@ const contacts = await client.me.lookup<Contact>("contact", { search: "jane" });
|
|
|
71
72
|
For full TypeScript autocomplete and type safety, generate interfaces from your own API deployment:
|
|
72
73
|
|
|
73
74
|
```bash
|
|
74
|
-
npx dataverse-client generate --url https://
|
|
75
|
+
npx dataverse-client generate --url https://api.dataverse-contact.tnapps.co.uk
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
This fetches the schema and choice values from your API (public endpoints, no auth required) and creates `dataverse-tables.generated.ts` with:
|
|
@@ -84,7 +85,8 @@ This fetches the schema and choice values from your API (public endpoints, no au
|
|
|
84
85
|
|------|---------|-------------|
|
|
85
86
|
| `--url`, `-u` | (required) | Base URL of your API deployment |
|
|
86
87
|
| `--output`, `-o` | `./dataverse-tables.generated.ts` | Output file path |
|
|
87
|
-
| `--api-base` | `/api/v2` | API base path |
|
|
88
|
+
| `--api-base` | `/api/v2` | API base path (before scope segment) |
|
|
89
|
+
| `--scope` | `default` | API scope segment (inserted after api-base in URLs) |
|
|
88
90
|
| `--no-choices` | `false` | Skip fetching choice values (no enums generated) |
|
|
89
91
|
|
|
90
92
|
### Using generated types
|
|
@@ -94,7 +96,8 @@ import { createClient } from "@truenorth-it/dataverse-client";
|
|
|
94
96
|
import type { Case, Contact } from "./dataverse-tables.generated";
|
|
95
97
|
|
|
96
98
|
const client = createClient({
|
|
97
|
-
baseUrl: "https://
|
|
99
|
+
baseUrl: "https://api.dataverse-contact.tnapps.co.uk",
|
|
100
|
+
scope: "default",
|
|
98
101
|
getToken: () => getAccessTokenSilently(),
|
|
99
102
|
});
|
|
100
103
|
|
|
@@ -163,7 +166,7 @@ The codegen function is also exported for use in custom build scripts:
|
|
|
163
166
|
```typescript
|
|
164
167
|
import { generateTableTypes } from "@truenorth-it/dataverse-client";
|
|
165
168
|
|
|
166
|
-
const response = await fetch("https://
|
|
169
|
+
const response = await fetch("https://api.dataverse-contact.tnapps.co.uk/api/v2/default/schema");
|
|
167
170
|
const schema = await response.json();
|
|
168
171
|
const tsSource = generateTableTypes(schema);
|
|
169
172
|
// Write tsSource to a file, pipe it, etc.
|
|
@@ -183,6 +186,7 @@ function useApiClient() {
|
|
|
183
186
|
() =>
|
|
184
187
|
createClient({
|
|
185
188
|
baseUrl: import.meta.env.VITE_API_BASE_URL,
|
|
189
|
+
scope: "default",
|
|
186
190
|
getToken: () => getAccessTokenSilently(),
|
|
187
191
|
}),
|
|
188
192
|
[getAccessTokenSilently],
|
|
@@ -197,6 +201,7 @@ createClient({
|
|
|
197
201
|
baseUrl: string; // API deployment URL
|
|
198
202
|
getToken: () => Promise<string>; // Returns a Bearer token
|
|
199
203
|
apiBase?: string; // Defaults to "/api/v2"
|
|
204
|
+
scope?: string; // Defaults to "default" — inserted after apiBase in URLs
|
|
200
205
|
});
|
|
201
206
|
```
|
|
202
207
|
|
|
@@ -223,7 +228,7 @@ const result = await client.me.list("case", {
|
|
|
223
228
|
});
|
|
224
229
|
|
|
225
230
|
// result.data — Record<string, unknown>[] (or Case[] if you pass a generic)
|
|
226
|
-
// result.page — { top, skip, next }
|
|
231
|
+
// result.page — { top, skip, next } — use fetchPage(page.next) for subsequent pages
|
|
227
232
|
|
|
228
233
|
for (const c of result.data) {
|
|
229
234
|
console.log(c.ticketnumber, c.title);
|
|
@@ -254,10 +259,63 @@ const allActivities = await client.me.list("caseactivities", {
|
|
|
254
259
|
|
|
255
260
|
// Each record includes a _link to its canonical URL
|
|
256
261
|
for (const activity of allActivities.data) {
|
|
257
|
-
console.log(activity._link); // "/api/v2/me/caseactivities/phonecall/a1b2c3d4-..."
|
|
262
|
+
console.log(activity._link); // "/api/v2/default/me/caseactivities/phonecall/a1b2c3d4-..."
|
|
258
263
|
}
|
|
259
264
|
```
|
|
260
265
|
|
|
266
|
+
### Paging through results
|
|
267
|
+
|
|
268
|
+
The API uses **cursor-based paging** powered by Dataverse's `$skiptoken`. Each list response includes a `page` object:
|
|
269
|
+
|
|
270
|
+
```typescript
|
|
271
|
+
{
|
|
272
|
+
data: [...], // records for this page
|
|
273
|
+
page: {
|
|
274
|
+
top: 25, // page size
|
|
275
|
+
skip: 0, // offset of this page
|
|
276
|
+
next: "/api/v2/..." // full URL for next page (null on last page)
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> **Important:** The `page.next` URL contains both `skip` and `skiptoken` (Dataverse's opaque paging cookie). Always use `page.next` to advance — don't manually increment `skip`, as the skiptoken is required for correct cursor positioning.
|
|
282
|
+
|
|
283
|
+
#### Fetch next page
|
|
284
|
+
|
|
285
|
+
Use `fetchPage()` to follow a `page.next` URL:
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
let page = await client.me.list<Case>("case", { top: 25 });
|
|
289
|
+
console.log(`Page 1: ${page.data.length} records`);
|
|
290
|
+
|
|
291
|
+
while (page.page.next) {
|
|
292
|
+
page = await client.me.fetchPage<Case>(page.page.next);
|
|
293
|
+
console.log(`Next page: ${page.data.length} records (offset ${page.page.skip})`);
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
#### Iterate all pages
|
|
298
|
+
|
|
299
|
+
Use `eachPage()` for a clean async iterator over every page:
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
for await (const page of client.me.eachPage<Case>("case", { top: 50 })) {
|
|
303
|
+
for (const record of page.data) {
|
|
304
|
+
console.log(record.ticketnumber, record.title);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### Collect all records
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
const allCases: Case[] = [];
|
|
313
|
+
for await (const page of client.all.eachPage<Case>("case", { top: 100 })) {
|
|
314
|
+
allCases.push(...page.data);
|
|
315
|
+
}
|
|
316
|
+
console.log(`Total: ${allCases.length} cases`);
|
|
317
|
+
```
|
|
318
|
+
|
|
261
319
|
### Get a single record
|
|
262
320
|
|
|
263
321
|
```typescript
|
|
@@ -375,7 +433,7 @@ Used by `list()`:
|
|
|
375
433
|
|--------|------|-------------|
|
|
376
434
|
| `select` | `string[]` | Fields to return |
|
|
377
435
|
| `top` | `number` | Page size (1-100) |
|
|
378
|
-
| `skip` | `number` |
|
|
436
|
+
| `skip` | `number` | Initial offset (rarely needed). For paging through results, always use `fetchPage(page.next)` or `eachPage()` instead — Dataverse requires the `$skiptoken` cursor from `page.next`, not just a skip offset. |
|
|
379
437
|
| `orderBy` | `string` | Sort field and direction, e.g. `"createdon:desc"` |
|
|
380
438
|
| `filter` | `string \| string[]` | OData-style filter expressions |
|
|
381
439
|
| `filterLogic` | `"and" \| "or"` | How to combine multiple filters (default: `"and"`) |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truenorth-it/dataverse-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./sdk/dist/index.js",
|
|
6
6
|
"types": "./sdk/dist/index.d.ts",
|
|
@@ -18,11 +18,8 @@
|
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build:sdk": "tsc -p sdk/tsconfig.json",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"build": "tsc & vite build && wait",
|
|
24
|
-
"preview": "vite preview",
|
|
25
|
-
"lint": "eslint . --ext .ts,.tsx",
|
|
21
|
+
"prepublishOnly": "tsc -p sdk/tsconfig.json",
|
|
22
|
+
"lint": "eslint . --ext .ts",
|
|
26
23
|
"typecheck": "tsc --noEmit",
|
|
27
24
|
"generate-tables": "tsx scripts/generate-tables.ts",
|
|
28
25
|
"sync-auth0-perms": "tsx scripts/sync-auth0-permissions.ts",
|
|
@@ -33,43 +30,33 @@
|
|
|
33
30
|
"test": "vitest run",
|
|
34
31
|
"test:watch": "vitest",
|
|
35
32
|
"test:coverage": "vitest run --coverage",
|
|
36
|
-
"test:stats": "vitest run --coverage && node scripts/generate-test-stats.cjs"
|
|
33
|
+
"test:stats": "vitest run --coverage && node scripts/generate-test-stats.cjs",
|
|
34
|
+
"build:landing": "vite build --config landing/vite.config.ts && cp -rL docs dist/docs",
|
|
35
|
+
"build": "npm run build:landing && npm run build:sdk"
|
|
37
36
|
},
|
|
38
37
|
"dependencies": {
|
|
39
|
-
"@auth0/auth0-react": "^2.2.4",
|
|
40
38
|
"@azure/identity": "^4.2.0",
|
|
41
|
-
"@
|
|
39
|
+
"@azure/storage-blob": "^12.31.0",
|
|
42
40
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
43
41
|
"applicationinsights": "^2.9.8",
|
|
44
42
|
"jose": "^5.2.0",
|
|
45
|
-
"mermaid": "^11.12.2",
|
|
46
|
-
"react": "^18.2.0",
|
|
47
|
-
"react-dom": "^18.2.0",
|
|
48
|
-
"react-markdown": "^10.1.0",
|
|
49
|
-
"react-router-dom": "^7.13.0",
|
|
50
|
-
"remark-gfm": "^4.0.1",
|
|
51
43
|
"zod": "^3.25.76"
|
|
52
44
|
},
|
|
53
45
|
"devDependencies": {
|
|
46
|
+
"@auth0/auth0-spa-js": "^2.16.0",
|
|
54
47
|
"@microsoft/signalr": "^10.0.0",
|
|
55
|
-
"@tailwindcss/vite": "^4.1.18",
|
|
56
|
-
"@testing-library/jest-dom": "^6.9.1",
|
|
57
|
-
"@testing-library/react": "^16.3.2",
|
|
58
|
-
"@testing-library/user-event": "^14.6.1",
|
|
59
48
|
"@types/node": "^20.11.0",
|
|
60
49
|
"@types/react": "^18.2.48",
|
|
61
50
|
"@types/react-dom": "^18.2.18",
|
|
62
51
|
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
63
52
|
"@typescript-eslint/parser": "^7.0.0",
|
|
64
53
|
"@vercel/node": "^3.0.0",
|
|
65
|
-
"@vitejs/plugin-react": "^4.2.1",
|
|
66
54
|
"@vitest/coverage-v8": "^4.0.18",
|
|
67
55
|
"eslint": "^8.56.0",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
56
|
+
"react": "^18.2.0",
|
|
57
|
+
"react-dom": "^18.2.0",
|
|
70
58
|
"tsx": "^4.21.0",
|
|
71
59
|
"typescript": "^5.3.3",
|
|
72
|
-
"vercel": "^33.0.0",
|
|
73
60
|
"vite": "^5.0.12",
|
|
74
61
|
"vitest": "^4.0.18"
|
|
75
62
|
},
|
|
@@ -86,6 +73,6 @@
|
|
|
86
73
|
}
|
|
87
74
|
},
|
|
88
75
|
"engines": {
|
|
89
|
-
"node": "
|
|
76
|
+
"node": "24.x"
|
|
90
77
|
}
|
|
91
78
|
}
|
package/sdk/dist/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ Options:
|
|
|
20
20
|
--url, -u Base URL of your API deployment (required)
|
|
21
21
|
--output, -o Output file path (default: ./dataverse-tables.generated.ts)
|
|
22
22
|
--api-base API base path (default: /api/v2)
|
|
23
|
+
--scope, -s API scope partition (default: default)
|
|
23
24
|
--no-choices Skip fetching choice values (faster, no enums generated)
|
|
24
25
|
--help, -h Show this help message
|
|
25
26
|
|
|
@@ -35,6 +36,7 @@ async function main() {
|
|
|
35
36
|
url: { type: "string", short: "u" },
|
|
36
37
|
output: { type: "string", short: "o", default: "./dataverse-tables.generated.ts" },
|
|
37
38
|
"api-base": { type: "string", default: "/api/v2" },
|
|
39
|
+
scope: { type: "string", short: "s", default: "default" },
|
|
38
40
|
"no-choices": { type: "boolean", default: false },
|
|
39
41
|
help: { type: "boolean", short: "h", default: false },
|
|
40
42
|
},
|
|
@@ -55,8 +57,9 @@ async function main() {
|
|
|
55
57
|
}
|
|
56
58
|
const baseUrl = values.url.replace(/\/+$/, "");
|
|
57
59
|
const apiBase = values["api-base"] ?? "/api/v2";
|
|
60
|
+
const scope = values.scope ?? "default";
|
|
58
61
|
const skipChoices = values["no-choices"] ?? false;
|
|
59
|
-
const schemaUrl = `${baseUrl}${apiBase}/schema`;
|
|
62
|
+
const schemaUrl = `${baseUrl}${apiBase}/${scope}/schema`;
|
|
60
63
|
// 1. Fetch schema
|
|
61
64
|
console.log(`Fetching schema from ${schemaUrl} ...`);
|
|
62
65
|
let schemaResponse;
|
|
@@ -80,7 +83,7 @@ async function main() {
|
|
|
80
83
|
// 2. Fetch all public choices in a single request
|
|
81
84
|
let choices;
|
|
82
85
|
if (!skipChoices) {
|
|
83
|
-
const choicesUrl = `${baseUrl}${apiBase}/choices`;
|
|
86
|
+
const choicesUrl = `${baseUrl}${apiBase}/${scope}/choices`;
|
|
84
87
|
console.log(`Fetching choices from ${choicesUrl} ...`);
|
|
85
88
|
try {
|
|
86
89
|
const choicesResponse = await fetch(choicesUrl);
|
package/sdk/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/client.d.ts
CHANGED
|
@@ -10,6 +10,35 @@ export declare class ApiError extends Error {
|
|
|
10
10
|
export interface ScopeClient {
|
|
11
11
|
/** List records from a table */
|
|
12
12
|
list<T = Record<string, unknown>>(table: string, options?: QueryOptions): Promise<PaginatedResponse<T>>;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch the next page using a `page.next` URL from a previous response.
|
|
15
|
+
*
|
|
16
|
+
* The API uses cursor-based paging — the `page.next` URL contains an opaque
|
|
17
|
+
* pagination token. Always use this method (or the URL from `page.next`) to
|
|
18
|
+
* advance through pages.
|
|
19
|
+
*
|
|
20
|
+
* ```typescript
|
|
21
|
+
* let page = await client.me.list<Case>("case", { top: 25 });
|
|
22
|
+
* while (page.page.next) {
|
|
23
|
+
* page = await client.me.fetchPage<Case>(page.page.next);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
fetchPage<T = Record<string, unknown>>(nextUrl: string): Promise<PaginatedResponse<T>>;
|
|
28
|
+
/**
|
|
29
|
+
* Async iterator that yields every page of results, following `page.next`
|
|
30
|
+
* cursors automatically. Starts with a `list()` call and keeps fetching
|
|
31
|
+
* until there are no more pages.
|
|
32
|
+
*
|
|
33
|
+
* ```typescript
|
|
34
|
+
* for await (const page of client.me.eachPage<Case>("case", { top: 50 })) {
|
|
35
|
+
* for (const record of page.data) {
|
|
36
|
+
* console.log(record.title);
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
eachPage<T = Record<string, unknown>>(table: string, options?: QueryOptions): AsyncIterable<PaginatedResponse<T>>;
|
|
13
42
|
/** Get a single record by ID */
|
|
14
43
|
get<T = Record<string, unknown>>(table: string, id: string, options?: Pick<QueryOptions, "select" | "expand">): Promise<SingleResponse<T>>;
|
|
15
44
|
/** Update a record */
|
package/sdk/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,0DAA0D;AAC1D,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;gBAEvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAO1E;AAyED,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,gCAAgC;IAChC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,sBAAsB;IACtB,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B,6FAA6F;IAC7F,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/client.js
CHANGED
|
@@ -35,8 +35,6 @@ function buildQueryString(options) {
|
|
|
35
35
|
params.set("select", options.select.join(","));
|
|
36
36
|
if (options.top != null)
|
|
37
37
|
params.set("top", String(options.top));
|
|
38
|
-
if (options.skip != null)
|
|
39
|
-
params.set("skip", String(options.skip));
|
|
40
38
|
if (options.orderBy)
|
|
41
39
|
params.set("orderBy", options.orderBy);
|
|
42
40
|
if (options.expand)
|
|
@@ -56,7 +54,8 @@ async function request(config, method, path, body) {
|
|
|
56
54
|
const token = await config.getToken();
|
|
57
55
|
const base = config.baseUrl.replace(/\/+$/, "");
|
|
58
56
|
const apiBase = config.apiBase ?? "/api/v2";
|
|
59
|
-
const
|
|
57
|
+
const scope = config.scope ?? "default";
|
|
58
|
+
const url = `${base}${apiBase}/${scope}${path}`;
|
|
60
59
|
const headers = {
|
|
61
60
|
Authorization: `Bearer ${token}`,
|
|
62
61
|
};
|
|
@@ -90,6 +89,27 @@ function buildAggregateQueryString(options) {
|
|
|
90
89
|
const qs = params.toString();
|
|
91
90
|
return qs ? `?${qs}` : "";
|
|
92
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Fetch a page.next URL. These URLs are absolute paths (e.g. /api/v2/default/all/case?top=5&cursor=...)
|
|
94
|
+
* so we construct the full URL from the base and call fetch directly.
|
|
95
|
+
*/
|
|
96
|
+
async function requestAbsolute(config, nextUrl) {
|
|
97
|
+
const token = await config.getToken();
|
|
98
|
+
const base = config.baseUrl.replace(/\/+$/, "");
|
|
99
|
+
const url = nextUrl.startsWith("http") ? nextUrl : `${base}${nextUrl}`;
|
|
100
|
+
const res = await fetch(url, {
|
|
101
|
+
method: "GET",
|
|
102
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
103
|
+
});
|
|
104
|
+
if (!res.ok) {
|
|
105
|
+
const errorBody = (await res.json().catch(() => null));
|
|
106
|
+
throw new ApiError(res.status, res.statusText, errorBody);
|
|
107
|
+
}
|
|
108
|
+
const text = await res.text();
|
|
109
|
+
if (!text)
|
|
110
|
+
return undefined;
|
|
111
|
+
return JSON.parse(text);
|
|
112
|
+
}
|
|
93
113
|
function createScopeClient(config, scope) {
|
|
94
114
|
return {
|
|
95
115
|
list(table, options = {}) {
|
|
@@ -99,6 +119,21 @@ function createScopeClient(config, scope) {
|
|
|
99
119
|
: `/${scope}/${table}${buildQueryString(queryOptions)}`;
|
|
100
120
|
return request(config, "GET", path);
|
|
101
121
|
},
|
|
122
|
+
fetchPage(nextUrl) {
|
|
123
|
+
return requestAbsolute(config, nextUrl);
|
|
124
|
+
},
|
|
125
|
+
async *eachPage(table, options = {}) {
|
|
126
|
+
const { subtype, ...queryOptions } = options;
|
|
127
|
+
const path = subtype
|
|
128
|
+
? `/${scope}/${table}/${subtype}${buildQueryString(queryOptions)}`
|
|
129
|
+
: `/${scope}/${table}${buildQueryString(queryOptions)}`;
|
|
130
|
+
let page = await request(config, "GET", path);
|
|
131
|
+
yield page;
|
|
132
|
+
while (page.page.next) {
|
|
133
|
+
page = await requestAbsolute(config, page.page.next);
|
|
134
|
+
yield page;
|
|
135
|
+
}
|
|
136
|
+
},
|
|
102
137
|
get(table, id, options = {}) {
|
|
103
138
|
return request(config, "GET", `/${scope}/${table}/${id}${buildQueryString(options)}`);
|
|
104
139
|
},
|
package/sdk/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,0DAA0D;AAC1D,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,IAAI,CAAsB;IAEnC,YAAY,MAAc,EAAE,UAAkB,EAAE,IAAyB;QACvE,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,QAAQ,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAA4E;IAClG,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA2C;IACnE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ClientConfig {
|
|
|
6
6
|
getToken: () => Promise<string>;
|
|
7
7
|
/** API base path. Defaults to "/api/v2" */
|
|
8
8
|
apiBase?: string;
|
|
9
|
+
/** API scope partition. Defaults to "default". */
|
|
10
|
+
scope?: string;
|
|
9
11
|
}
|
|
10
12
|
/** Query options for list endpoints */
|
|
11
13
|
export interface QueryOptions {
|
|
@@ -13,8 +15,6 @@ export interface QueryOptions {
|
|
|
13
15
|
select?: string[];
|
|
14
16
|
/** Page size (1-100) */
|
|
15
17
|
top?: number;
|
|
16
|
-
/** Records to skip */
|
|
17
|
-
skip?: number;
|
|
18
18
|
/** Sort order, e.g. "modifiedon:desc" */
|
|
19
19
|
orderBy?: string;
|
|
20
20
|
/** OData-style filters. Repeated values combined with filterLogic. */
|
|
@@ -52,7 +52,6 @@ export interface PaginatedResponse<T = Record<string, unknown>> {
|
|
|
52
52
|
data: T[];
|
|
53
53
|
page: {
|
|
54
54
|
top: number;
|
|
55
|
-
skip: number;
|
|
56
55
|
next: string | null;
|
|
57
56
|
};
|
|
58
57
|
}
|
|
@@ -99,6 +98,15 @@ export interface TableSchema {
|
|
|
99
98
|
aliases?: string[];
|
|
100
99
|
defaultFields: string[];
|
|
101
100
|
fields: SchemaField[];
|
|
101
|
+
/** Active record filter preset. "active" = only statecode 0, "all" = no filter. */
|
|
102
|
+
recordFilter?: "active" | "all";
|
|
103
|
+
/** Parent table relationship for child record tables. Enables parent.field filter syntax. */
|
|
104
|
+
parentTable?: {
|
|
105
|
+
table: string;
|
|
106
|
+
navigationProperty: string;
|
|
107
|
+
};
|
|
108
|
+
/** Always-on filter expressions (AND'd with all other filters). Supports parent.field syntax. */
|
|
109
|
+
defaultFilters?: string[];
|
|
102
110
|
supportsTeam: boolean;
|
|
103
111
|
contactScope?: {
|
|
104
112
|
description: string;
|
package/sdk/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|