@truenorth-it/dataverse-client 1.0.6 → 1.0.8
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 +196 -2
- package/package.json +14 -1
- package/sdk/dist/cli.js +5 -2
- package/sdk/dist/cli.js.map +1 -1
- package/sdk/dist/client.d.ts +7 -0
- package/sdk/dist/client.d.ts.map +1 -1
- package/sdk/dist/client.js +34 -17
- package/sdk/dist/client.js.map +1 -1
- package/sdk/dist/codegen.d.ts.map +1 -1
- package/sdk/dist/codegen.js.map +1 -1
- package/sdk/dist/index.d.ts +5 -1
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +4 -0
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/quick-date.d.ts +36 -0
- package/sdk/dist/quick-date.d.ts.map +1 -0
- package/sdk/dist/quick-date.js +118 -0
- package/sdk/dist/quick-date.js.map +1 -0
- package/sdk/dist/realtime.d.ts +66 -0
- package/sdk/dist/realtime.d.ts.map +1 -0
- package/sdk/dist/realtime.js +129 -0
- package/sdk/dist/realtime.js.map +1 -0
- package/sdk/dist/types.d.ts +24 -0
- package/sdk/dist/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ import { createClient } from "@truenorth-it/dataverse-client";
|
|
|
21
21
|
|
|
22
22
|
const client = createClient({
|
|
23
23
|
baseUrl: "https://your-api.vercel.app",
|
|
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
|
|
|
@@ -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
|
|
@@ -95,6 +97,7 @@ import type { Case, Contact } from "./dataverse-tables.generated";
|
|
|
95
97
|
|
|
96
98
|
const client = createClient({
|
|
97
99
|
baseUrl: "https://your-api.vercel.app",
|
|
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://your-api.vercel.app/api/v2/schema");
|
|
169
|
+
const response = await fetch("https://your-api.vercel.app/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
|
|
|
@@ -234,6 +239,30 @@ for (const c of result.data) {
|
|
|
234
239
|
|
|
235
240
|
> **With types:** `client.me.list<Case>("case", ...)` — gives full autocomplete on `result.data`.
|
|
236
241
|
|
|
242
|
+
### List activity records by subtype
|
|
243
|
+
|
|
244
|
+
Activity tables (`caseactivities`, `contactactivities`) support subtype filtering to retrieve specific activity types:
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// List all phone calls for your cases
|
|
248
|
+
const phoneCalls = await client.me.list("caseactivities", {
|
|
249
|
+
subtype: "phonecall",
|
|
250
|
+
select: ["activityid", "subject", "activitytypecode"],
|
|
251
|
+
top: 20,
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// List all activity types at once
|
|
255
|
+
const allActivities = await client.me.list("caseactivities", {
|
|
256
|
+
subtype: "all",
|
|
257
|
+
orderBy: "createdon:desc",
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
// Each record includes a _link to its canonical URL
|
|
261
|
+
for (const activity of allActivities.data) {
|
|
262
|
+
console.log(activity._link); // "/api/v2/default/me/caseactivities/phonecall/a1b2c3d4-..."
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
237
266
|
### Get a single record
|
|
238
267
|
|
|
239
268
|
```typescript
|
|
@@ -356,6 +385,9 @@ Used by `list()`:
|
|
|
356
385
|
| `filter` | `string \| string[]` | OData-style filter expressions |
|
|
357
386
|
| `filterLogic` | `"and" \| "or"` | How to combine multiple filters (default: `"and"`) |
|
|
358
387
|
| `expand` | `string` | Expand related lookups |
|
|
388
|
+
| `subtype` | `string` | Activity subtype filter (e.g. `"phonecall"`, `"email"`, `"task"`, `"all"`) — only for activity tables |
|
|
389
|
+
| `created` | `string` | Quick filter on creation date — e.g. `"today"`, `"7d"`, `"thismonth"`, `"2026-01-01..2026-02-01"` |
|
|
390
|
+
| `modified` | `string` | Quick filter on last-modified date (same formats as `created`) |
|
|
359
391
|
|
|
360
392
|
`lookup()` accepts the same options plus:
|
|
361
393
|
|
|
@@ -365,6 +397,47 @@ Used by `list()`:
|
|
|
365
397
|
|
|
366
398
|
`get()` accepts only `select` and `expand`.
|
|
367
399
|
|
|
400
|
+
### Quick date filter values
|
|
401
|
+
|
|
402
|
+
| Format | Examples | Description |
|
|
403
|
+
|--------|----------|-------------|
|
|
404
|
+
| Named period | `today`, `yesterday`, `thisweek`, `lastweek`, `thismonth`, `lastmonth`, `thisyear` | Human-friendly period presets |
|
|
405
|
+
| Relative | `1h`, `24h`, `7d`, `30d`, `90d` | Sliding window from now |
|
|
406
|
+
| Date range | `2026-01-01..2026-02-01`, `2026-01-01..`, `..2026-02-01` | Explicit date range (inclusive start, exclusive end) |
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
// Cases created in the last 7 days
|
|
410
|
+
const recent = await client.me.list<Case>("case", { created: "7d" });
|
|
411
|
+
|
|
412
|
+
// Cases modified today
|
|
413
|
+
const updated = await client.me.list<Case>("case", { modified: "today" });
|
|
414
|
+
|
|
415
|
+
// Combine with regular filters
|
|
416
|
+
const urgentRecent = await client.me.list<Case>("case", {
|
|
417
|
+
created: "thismonth",
|
|
418
|
+
filter: "prioritycode eq 1",
|
|
419
|
+
});
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
The SDK resolves these client-side — dates are converted into standard `filter` conditions before the request is sent. This means quick dates work with **any server version**, even older deployments that don't support the `created`/`modified` parameters natively.
|
|
423
|
+
|
|
424
|
+
### Standalone utility
|
|
425
|
+
|
|
426
|
+
The resolution logic is also exported for direct use:
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
import { resolveQuickDate, quickDateToFilters } from "@truenorth-it/dataverse-client";
|
|
430
|
+
|
|
431
|
+
resolveQuickDate("7d");
|
|
432
|
+
// → { ge: "2026-02-08T12:00:00.000Z" }
|
|
433
|
+
|
|
434
|
+
resolveQuickDate("today");
|
|
435
|
+
// → { ge: "2026-02-15T00:00:00.000Z", lt: "2026-02-16T00:00:00.000Z" }
|
|
436
|
+
|
|
437
|
+
quickDateToFilters("createdon", "thisweek");
|
|
438
|
+
// → ["createdon ge 2026-02-09T00:00:00.000Z"]
|
|
439
|
+
```
|
|
440
|
+
|
|
368
441
|
## Error handling
|
|
369
442
|
|
|
370
443
|
```typescript
|
|
@@ -386,6 +459,122 @@ try {
|
|
|
386
459
|
| 403 | Insufficient permissions |
|
|
387
460
|
| 404 | Unknown table or contact not found |
|
|
388
461
|
|
|
462
|
+
## Real-time notifications
|
|
463
|
+
|
|
464
|
+
The SDK includes a React hook that connects to Azure SignalR and automatically invalidates TanStack Query caches when data changes on the server. When another user (or an MCP client) creates or updates a record, your portal's UI refreshes instantly — no polling required.
|
|
465
|
+
|
|
466
|
+
### Prerequisites
|
|
467
|
+
|
|
468
|
+
Install the SignalR client as a peer dependency:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
npm install @microsoft/signalr
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
The API must have `SIGNALR_CONNECTION_STRING` configured. When it's not set, `negotiate()` returns a 404 and the hook gracefully does nothing.
|
|
475
|
+
|
|
476
|
+
### Negotiate
|
|
477
|
+
|
|
478
|
+
The client exposes a `negotiate()` method that exchanges your Auth0 token for a SignalR connection token:
|
|
479
|
+
|
|
480
|
+
```typescript
|
|
481
|
+
const { url, accessToken } = await client.negotiate();
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
You don't usually call this directly — the `useRealtime` hook handles it.
|
|
485
|
+
|
|
486
|
+
### useRealtime hook
|
|
487
|
+
|
|
488
|
+
```tsx
|
|
489
|
+
import { useCallback } from "react";
|
|
490
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
491
|
+
import { createClient, useRealtime } from "@truenorth-it/dataverse-client";
|
|
492
|
+
|
|
493
|
+
function App() {
|
|
494
|
+
const client = useApiClient();
|
|
495
|
+
const queryClient = useQueryClient();
|
|
496
|
+
|
|
497
|
+
const negotiate = useCallback(() => client.negotiate(), [client]);
|
|
498
|
+
|
|
499
|
+
const { connected, error } = useRealtime({
|
|
500
|
+
negotiate,
|
|
501
|
+
queryClient,
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
// connected: true when the SignalR connection is active
|
|
505
|
+
// error: last error message, or null
|
|
506
|
+
}
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
That's all you need. When a `dataChanged` event arrives (e.g. for table `"case"`), the hook automatically calls `queryClient.invalidateQueries()` for the matching query keys. TanStack Query refetches in the background and your UI updates.
|
|
510
|
+
|
|
511
|
+
### Options
|
|
512
|
+
|
|
513
|
+
```typescript
|
|
514
|
+
interface RealtimeOptions {
|
|
515
|
+
negotiate: () => Promise<{ url: string; accessToken: string }>;
|
|
516
|
+
queryClient: QueryClient;
|
|
517
|
+
tableQueryKeys?: Record<string, readonly (readonly unknown[])[]>;
|
|
518
|
+
onEvent?: (event: DataChangeEvent) => void;
|
|
519
|
+
enabled?: boolean; // default: true
|
|
520
|
+
}
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
| Option | Description |
|
|
524
|
+
|--------|-------------|
|
|
525
|
+
| `negotiate` | Function that returns a SignalR token (from `client.negotiate()`) |
|
|
526
|
+
| `queryClient` | TanStack React Query client instance |
|
|
527
|
+
| `tableQueryKeys` | Custom mapping of table names to query key prefixes (see below) |
|
|
528
|
+
| `onEvent` | Optional callback for every data change event |
|
|
529
|
+
| `enabled` | Set to `false` to disable the connection |
|
|
530
|
+
|
|
531
|
+
### Default table-to-query-key mapping
|
|
532
|
+
|
|
533
|
+
The hook ships with sensible defaults:
|
|
534
|
+
|
|
535
|
+
```typescript
|
|
536
|
+
{
|
|
537
|
+
case: [["cases"], ["aggStats"]],
|
|
538
|
+
casenotes: [["caseNotes"]],
|
|
539
|
+
caseactivities: [["caseActivities"]],
|
|
540
|
+
caseemails: [["caseActivities"]],
|
|
541
|
+
casephonecalls: [["caseActivities"]],
|
|
542
|
+
casetasks: [["caseActivities"]],
|
|
543
|
+
caseappointments:[["caseActivities"]],
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Override or extend for your own tables:
|
|
548
|
+
|
|
549
|
+
```typescript
|
|
550
|
+
useRealtime({
|
|
551
|
+
negotiate,
|
|
552
|
+
queryClient,
|
|
553
|
+
tableQueryKeys: {
|
|
554
|
+
// Keep defaults
|
|
555
|
+
case: [["cases"], ["aggStats"]],
|
|
556
|
+
casenotes: [["caseNotes"]],
|
|
557
|
+
// Add your custom tables
|
|
558
|
+
invoice: [["invoices"]],
|
|
559
|
+
project: [["projects"], ["projectStats"]],
|
|
560
|
+
},
|
|
561
|
+
});
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### DataChangeEvent
|
|
565
|
+
|
|
566
|
+
Events received from the server:
|
|
567
|
+
|
|
568
|
+
```typescript
|
|
569
|
+
interface DataChangeEvent {
|
|
570
|
+
table: string; // e.g. "case", "casenotes"
|
|
571
|
+
action: "created" | "updated" | "deleted";
|
|
572
|
+
recordId: string; // GUID of the affected record
|
|
573
|
+
timestamp: string; // ISO 8601
|
|
574
|
+
actor?: string; // email of the user who made the change
|
|
575
|
+
}
|
|
576
|
+
```
|
|
577
|
+
|
|
389
578
|
## Response field patterns
|
|
390
579
|
|
|
391
580
|
These patterns apply to **all** API responses, whether or not you use generated types.
|
|
@@ -436,7 +625,12 @@ import type {
|
|
|
436
625
|
SchemaResponse, SchemaTableInput,
|
|
437
626
|
// Errors
|
|
438
627
|
ApiErrorBody,
|
|
628
|
+
// Real-time notifications
|
|
629
|
+
NegotiateResponse, DataChangeEvent, RealtimeOptions, RealtimeState,
|
|
439
630
|
} from "@truenorth-it/dataverse-client";
|
|
631
|
+
|
|
632
|
+
// React hook (requires @microsoft/signalr peer dependency)
|
|
633
|
+
import { useRealtime } from "@truenorth-it/dataverse-client";
|
|
440
634
|
```
|
|
441
635
|
|
|
442
636
|
Table-specific types come from your generated file:
|
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.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./sdk/dist/index.js",
|
|
6
6
|
"types": "./sdk/dist/index.d.ts",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"zod": "^3.25.76"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
+
"@microsoft/signalr": "^10.0.0",
|
|
54
55
|
"@tailwindcss/vite": "^4.1.18",
|
|
55
56
|
"@testing-library/jest-dom": "^6.9.1",
|
|
56
57
|
"@testing-library/react": "^16.3.2",
|
|
@@ -72,6 +73,18 @@
|
|
|
72
73
|
"vite": "^5.0.12",
|
|
73
74
|
"vitest": "^4.0.18"
|
|
74
75
|
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"@microsoft/signalr": ">=8.0.0",
|
|
78
|
+
"@tanstack/react-query": ">=5.0.0"
|
|
79
|
+
},
|
|
80
|
+
"peerDependenciesMeta": {
|
|
81
|
+
"@microsoft/signalr": {
|
|
82
|
+
"optional": true
|
|
83
|
+
},
|
|
84
|
+
"@tanstack/react-query": {
|
|
85
|
+
"optional": true
|
|
86
|
+
}
|
|
87
|
+
},
|
|
75
88
|
"engines": {
|
|
76
89
|
"node": ">=18"
|
|
77
90
|
}
|
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
|
@@ -37,6 +37,11 @@ export interface MeScopeClient extends ScopeClient {
|
|
|
37
37
|
/** Get authenticated identity + Dataverse contact info */
|
|
38
38
|
whoami(): Promise<WhoamiResponse>;
|
|
39
39
|
}
|
|
40
|
+
/** SignalR negotiate response */
|
|
41
|
+
export interface NegotiateResponse {
|
|
42
|
+
url: string;
|
|
43
|
+
accessToken: string;
|
|
44
|
+
}
|
|
40
45
|
/** Dataverse Contact API client */
|
|
41
46
|
export interface DataverseClient {
|
|
42
47
|
/** Operations on the authenticated user's own records */
|
|
@@ -49,6 +54,8 @@ export interface DataverseClient {
|
|
|
49
54
|
choices(table: string, field?: string): Promise<FieldChoicesResponse | TableChoicesResponse>;
|
|
50
55
|
/** Fetch table schema (single table or all tables) */
|
|
51
56
|
schema(table?: string): Promise<TableSchema | TableSchema[]>;
|
|
57
|
+
/** Negotiate a SignalR connection token for real-time notifications */
|
|
58
|
+
negotiate(): Promise<NegotiateResponse>;
|
|
52
59
|
}
|
|
53
60
|
/** Create a configured API client instance */
|
|
54
61
|
export declare function createClient(config: ClientConfig): DataverseClient;
|
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;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { quickDateToFilters } from "./quick-date.js";
|
|
1
2
|
/** Error thrown when the API returns a non-OK response */
|
|
2
3
|
export class ApiError extends Error {
|
|
3
4
|
status;
|
|
@@ -11,6 +12,23 @@ export class ApiError extends Error {
|
|
|
11
12
|
this.body = body;
|
|
12
13
|
}
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Collect all filter strings, including any resolved from `created`/`modified`
|
|
17
|
+
* quick date shortcuts. Resolves client-side so the SDK works against any
|
|
18
|
+
* server version — no dependency on the server supporting these params.
|
|
19
|
+
*/
|
|
20
|
+
function collectFilters(options) {
|
|
21
|
+
const filters = [];
|
|
22
|
+
if (options.filter) {
|
|
23
|
+
const raw = Array.isArray(options.filter) ? options.filter : [options.filter];
|
|
24
|
+
filters.push(...raw);
|
|
25
|
+
}
|
|
26
|
+
if (options.created)
|
|
27
|
+
filters.push(...quickDateToFilters("createdon", options.created));
|
|
28
|
+
if (options.modified)
|
|
29
|
+
filters.push(...quickDateToFilters("modifiedon", options.modified));
|
|
30
|
+
return filters;
|
|
31
|
+
}
|
|
14
32
|
function buildQueryString(options) {
|
|
15
33
|
const params = new URLSearchParams();
|
|
16
34
|
if (options.select?.length)
|
|
@@ -28,14 +46,9 @@ function buildQueryString(options) {
|
|
|
28
46
|
if (options.filterLogic && options.filterLogic !== "and") {
|
|
29
47
|
params.set("filterLogic", options.filterLogic);
|
|
30
48
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
: [options.filter];
|
|
35
|
-
for (const f of filters) {
|
|
36
|
-
params.append("filter", f);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
49
|
+
const filters = collectFilters(options);
|
|
50
|
+
for (const f of filters)
|
|
51
|
+
params.append("filter", f);
|
|
39
52
|
const qs = params.toString();
|
|
40
53
|
return qs ? `?${qs}` : "";
|
|
41
54
|
}
|
|
@@ -43,7 +56,8 @@ async function request(config, method, path, body) {
|
|
|
43
56
|
const token = await config.getToken();
|
|
44
57
|
const base = config.baseUrl.replace(/\/+$/, "");
|
|
45
58
|
const apiBase = config.apiBase ?? "/api/v2";
|
|
46
|
-
const
|
|
59
|
+
const scope = config.scope ?? "default";
|
|
60
|
+
const url = `${base}${apiBase}/${scope}${path}`;
|
|
47
61
|
const headers = {
|
|
48
62
|
Authorization: `Bearer ${token}`,
|
|
49
63
|
};
|
|
@@ -71,20 +85,20 @@ function buildAggregateQueryString(options) {
|
|
|
71
85
|
if (options.filterLogic && options.filterLogic !== "and") {
|
|
72
86
|
params.set("filterLogic", options.filterLogic);
|
|
73
87
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
: [options.filter];
|
|
78
|
-
for (const f of filters)
|
|
79
|
-
params.append("filter", f);
|
|
80
|
-
}
|
|
88
|
+
const filters = collectFilters(options);
|
|
89
|
+
for (const f of filters)
|
|
90
|
+
params.append("filter", f);
|
|
81
91
|
const qs = params.toString();
|
|
82
92
|
return qs ? `?${qs}` : "";
|
|
83
93
|
}
|
|
84
94
|
function createScopeClient(config, scope) {
|
|
85
95
|
return {
|
|
86
96
|
list(table, options = {}) {
|
|
87
|
-
|
|
97
|
+
const { subtype, ...queryOptions } = options;
|
|
98
|
+
const path = subtype
|
|
99
|
+
? `/${scope}/${table}/${subtype}${buildQueryString(queryOptions)}`
|
|
100
|
+
: `/${scope}/${table}${buildQueryString(queryOptions)}`;
|
|
101
|
+
return request(config, "GET", path);
|
|
88
102
|
},
|
|
89
103
|
get(table, id, options = {}) {
|
|
90
104
|
return request(config, "GET", `/${scope}/${table}/${id}${buildQueryString(options)}`);
|
|
@@ -132,6 +146,9 @@ export function createClient(config) {
|
|
|
132
146
|
? request(config, "GET", `/schema${qs}`)
|
|
133
147
|
: request(config, "GET", `/schema${qs}`);
|
|
134
148
|
},
|
|
149
|
+
negotiate() {
|
|
150
|
+
return request(config, "POST", "/negotiate");
|
|
151
|
+
},
|
|
135
152
|
};
|
|
136
153
|
}
|
|
137
154
|
//# sourceMappingURL=client.js.map
|
package/sdk/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;CAC5D;AAsHD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAC5B,MAAM,
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;CAC5D;AAsHD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAC5B,MAAM,CA2CR"}
|
package/sdk/dist/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
package/sdk/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { createClient, ApiError } from "./client.js";
|
|
2
|
-
export type { DataverseClient, ScopeClient, MeScopeClient, } from "./client.js";
|
|
2
|
+
export type { DataverseClient, ScopeClient, MeScopeClient, NegotiateResponse, } from "./client.js";
|
|
3
3
|
export type { ClientConfig, QueryOptions, LookupOptions, AggregateOptions, PaginatedResponse, SingleResponse, AggregateResponse, WhoamiResponse, TableSchema, SchemaField, ExpandSchema, Choice, FieldChoicesResponse, TableChoicesResponse, ApiErrorBody, } from "./types.js";
|
|
4
|
+
export { resolveQuickDate, quickDateToFilters } from "./quick-date.js";
|
|
5
|
+
export type { DateRange } from "./quick-date.js";
|
|
4
6
|
export { generateTableTypes } from "./codegen.js";
|
|
5
7
|
export type { SchemaTableInput, SchemaResponse, TableChoicesInput } from "./codegen.js";
|
|
8
|
+
export { useRealtime } from "./realtime.js";
|
|
9
|
+
export type { DataChangeEvent, RealtimeOptions, RealtimeState } from "./realtime.js";
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
package/sdk/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EACV,eAAe,EACf,WAAW,EACX,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGxF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/sdk/dist/index.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { createClient, ApiError } from "./client.js";
|
|
2
|
+
// Quick date resolution — resolve "7d", "today", etc. into ISO 8601 bounds
|
|
3
|
+
export { resolveQuickDate, quickDateToFilters } from "./quick-date.js";
|
|
2
4
|
// Codegen — generate TypeScript interfaces from a schema response
|
|
3
5
|
export { generateTableTypes } from "./codegen.js";
|
|
6
|
+
// Real-time notifications via Azure SignalR (requires @microsoft/signalr peer dep)
|
|
7
|
+
export { useRealtime } from "./realtime.js";
|
|
4
8
|
//# sourceMappingURL=index.js.map
|
package/sdk/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyBrD,2EAA2E;AAC3E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGvE,kEAAkE;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,mFAAmF;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quick date filter resolution — converts human-friendly shortcuts
|
|
3
|
+
* like "today", "7d", "thisweek" into ISO 8601 datetime bounds.
|
|
4
|
+
*
|
|
5
|
+
* Used internally by the SDK client and also exported for standalone use.
|
|
6
|
+
*/
|
|
7
|
+
export interface DateRange {
|
|
8
|
+
/** Greater-than-or-equal bound (ISO 8601) */
|
|
9
|
+
ge?: string;
|
|
10
|
+
/** Less-than bound (ISO 8601) */
|
|
11
|
+
lt?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a quick date shortcut into ISO 8601 datetime bounds.
|
|
15
|
+
*
|
|
16
|
+
* @param value - Shortcut string: "today", "7d", "2026-01-01..2026-02-01", etc.
|
|
17
|
+
* @param now - Reference time (defaults to current time)
|
|
18
|
+
* @returns Object with `ge` and/or `lt` ISO 8601 strings
|
|
19
|
+
* @throws Error if the value is not a recognised format
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* resolveQuickDate("7d") // → { ge: "2026-02-08T12:00:00.000Z" }
|
|
24
|
+
* resolveQuickDate("today") // → { ge: "2026-02-15T00:00:00.000Z", lt: "2026-02-16T00:00:00.000Z" }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveQuickDate(value: string, now?: Date): DateRange;
|
|
28
|
+
/**
|
|
29
|
+
* Convert a quick date shortcut into filter strings ready for the API.
|
|
30
|
+
*
|
|
31
|
+
* @param field - Dataverse field name (e.g. "createdon", "modifiedon")
|
|
32
|
+
* @param value - Shortcut string
|
|
33
|
+
* @returns Array of filter strings like ["createdon ge 2026-02-08T12:00:00.000Z"]
|
|
34
|
+
*/
|
|
35
|
+
export declare function quickDateToFilters(field: string, value: string): string[];
|
|
36
|
+
//# sourceMappingURL=quick-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-date.d.ts","sourceRoot":"","sources":["../src/quick-date.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AA+CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAa,GAAG,SAAS,CAqC3E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMzE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quick date filter resolution — converts human-friendly shortcuts
|
|
3
|
+
* like "today", "7d", "thisweek" into ISO 8601 datetime bounds.
|
|
4
|
+
*
|
|
5
|
+
* Used internally by the SDK client and also exported for standalone use.
|
|
6
|
+
*/
|
|
7
|
+
function startOfDay(d) {
|
|
8
|
+
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
9
|
+
}
|
|
10
|
+
const PERIODS = {
|
|
11
|
+
today: (now) => {
|
|
12
|
+
const s = startOfDay(now);
|
|
13
|
+
const e = new Date(s);
|
|
14
|
+
e.setUTCDate(e.getUTCDate() + 1);
|
|
15
|
+
return { ge: s.toISOString(), lt: e.toISOString() };
|
|
16
|
+
},
|
|
17
|
+
yesterday: (now) => {
|
|
18
|
+
const e = startOfDay(now);
|
|
19
|
+
const s = new Date(e);
|
|
20
|
+
s.setUTCDate(s.getUTCDate() - 1);
|
|
21
|
+
return { ge: s.toISOString(), lt: e.toISOString() };
|
|
22
|
+
},
|
|
23
|
+
thisweek: (now) => {
|
|
24
|
+
const s = startOfDay(now);
|
|
25
|
+
const day = s.getUTCDay() || 7;
|
|
26
|
+
s.setUTCDate(s.getUTCDate() - (day - 1));
|
|
27
|
+
return { ge: s.toISOString() };
|
|
28
|
+
},
|
|
29
|
+
lastweek: (now) => {
|
|
30
|
+
const mon = startOfDay(now);
|
|
31
|
+
const day = mon.getUTCDay() || 7;
|
|
32
|
+
mon.setUTCDate(mon.getUTCDate() - (day - 1));
|
|
33
|
+
const prev = new Date(mon);
|
|
34
|
+
prev.setUTCDate(prev.getUTCDate() - 7);
|
|
35
|
+
return { ge: prev.toISOString(), lt: mon.toISOString() };
|
|
36
|
+
},
|
|
37
|
+
thismonth: (now) => ({
|
|
38
|
+
ge: new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1)).toISOString(),
|
|
39
|
+
}),
|
|
40
|
+
lastmonth: (now) => ({
|
|
41
|
+
ge: new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() - 1, 1)).toISOString(),
|
|
42
|
+
lt: new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1)).toISOString(),
|
|
43
|
+
}),
|
|
44
|
+
thisyear: (now) => ({
|
|
45
|
+
ge: new Date(Date.UTC(now.getUTCFullYear(), 0, 1)).toISOString(),
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
const RELATIVE_RE = /^(\d+)(h|d)$/;
|
|
49
|
+
const RANGE_RE = /^(\d{4}-\d{2}-\d{2})?\.\.(\d{4}-\d{2}-\d{2})?$/;
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a quick date shortcut into ISO 8601 datetime bounds.
|
|
52
|
+
*
|
|
53
|
+
* @param value - Shortcut string: "today", "7d", "2026-01-01..2026-02-01", etc.
|
|
54
|
+
* @param now - Reference time (defaults to current time)
|
|
55
|
+
* @returns Object with `ge` and/or `lt` ISO 8601 strings
|
|
56
|
+
* @throws Error if the value is not a recognised format
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* resolveQuickDate("7d") // → { ge: "2026-02-08T12:00:00.000Z" }
|
|
61
|
+
* resolveQuickDate("today") // → { ge: "2026-02-15T00:00:00.000Z", lt: "2026-02-16T00:00:00.000Z" }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export function resolveQuickDate(value, now = new Date()) {
|
|
65
|
+
const v = value.trim().toLowerCase();
|
|
66
|
+
const period = PERIODS[v];
|
|
67
|
+
if (period)
|
|
68
|
+
return period(now);
|
|
69
|
+
const rel = RELATIVE_RE.exec(v);
|
|
70
|
+
if (rel) {
|
|
71
|
+
const n = parseInt(rel[1], 10);
|
|
72
|
+
const from = new Date(now);
|
|
73
|
+
if (rel[2] === "h")
|
|
74
|
+
from.setUTCHours(from.getUTCHours() - n);
|
|
75
|
+
else
|
|
76
|
+
from.setUTCDate(from.getUTCDate() - n);
|
|
77
|
+
return { ge: from.toISOString() };
|
|
78
|
+
}
|
|
79
|
+
const range = RANGE_RE.exec(v);
|
|
80
|
+
if (range) {
|
|
81
|
+
const [, s, e] = range;
|
|
82
|
+
if (!s && !e)
|
|
83
|
+
throw new Error(`Invalid date range '${value}'`);
|
|
84
|
+
const result = {};
|
|
85
|
+
if (s) {
|
|
86
|
+
const d = new Date(s + "T00:00:00Z");
|
|
87
|
+
if (isNaN(d.getTime()))
|
|
88
|
+
throw new Error(`Invalid start date '${s}'`);
|
|
89
|
+
result.ge = d.toISOString();
|
|
90
|
+
}
|
|
91
|
+
if (e) {
|
|
92
|
+
const d = new Date(e + "T00:00:00Z");
|
|
93
|
+
if (isNaN(d.getTime()))
|
|
94
|
+
throw new Error(`Invalid end date '${e}'`);
|
|
95
|
+
d.setUTCDate(d.getUTCDate() + 1);
|
|
96
|
+
result.lt = d.toISOString();
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
throw new Error(`Unknown quick date value '${value}'. Use: today, yesterday, thisweek, lastweek, thismonth, lastmonth, thisyear, 1h, 24h, 7d, 30d, 90d, or YYYY-MM-DD..YYYY-MM-DD`);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Convert a quick date shortcut into filter strings ready for the API.
|
|
104
|
+
*
|
|
105
|
+
* @param field - Dataverse field name (e.g. "createdon", "modifiedon")
|
|
106
|
+
* @param value - Shortcut string
|
|
107
|
+
* @returns Array of filter strings like ["createdon ge 2026-02-08T12:00:00.000Z"]
|
|
108
|
+
*/
|
|
109
|
+
export function quickDateToFilters(field, value) {
|
|
110
|
+
const { ge, lt } = resolveQuickDate(value);
|
|
111
|
+
const filters = [];
|
|
112
|
+
if (ge)
|
|
113
|
+
filters.push(`${field} ge ${ge}`);
|
|
114
|
+
if (lt)
|
|
115
|
+
filters.push(`${field} lt ${lt}`);
|
|
116
|
+
return filters;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=quick-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-date.js","sourceRoot":"","sources":["../src/quick-date.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for real-time notifications via Azure SignalR Service.
|
|
3
|
+
*
|
|
4
|
+
* Connects to SignalR using the negotiate endpoint from the API,
|
|
5
|
+
* listens for data change events, and automatically invalidates
|
|
6
|
+
* TanStack React Query caches so the UI stays fresh.
|
|
7
|
+
*
|
|
8
|
+
* Requires peer dependencies: @microsoft/signalr, @tanstack/react-query, react
|
|
9
|
+
*/
|
|
10
|
+
/** Event received when data changes on the server */
|
|
11
|
+
export interface DataChangeEvent {
|
|
12
|
+
table: string;
|
|
13
|
+
action: "created" | "updated" | "deleted";
|
|
14
|
+
recordId: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
actor?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Minimal subset of TanStack QueryClient we need (avoids hard dependency) */
|
|
19
|
+
interface QueryClientLike {
|
|
20
|
+
invalidateQueries(options: {
|
|
21
|
+
queryKey: readonly unknown[];
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/** Options for the useRealtime hook */
|
|
25
|
+
export interface RealtimeOptions {
|
|
26
|
+
/** Function that returns a SignalR negotiate response (from client.negotiate()) */
|
|
27
|
+
negotiate: () => Promise<{
|
|
28
|
+
url: string;
|
|
29
|
+
accessToken: string;
|
|
30
|
+
}>;
|
|
31
|
+
/** TanStack React Query client — used to invalidate queries on data changes */
|
|
32
|
+
queryClient: QueryClientLike;
|
|
33
|
+
/**
|
|
34
|
+
* Map of table route names to arrays of query key prefixes to invalidate.
|
|
35
|
+
* Defaults cover common tables; extend or override for your app.
|
|
36
|
+
*/
|
|
37
|
+
tableQueryKeys?: Record<string, readonly (readonly unknown[])[]>;
|
|
38
|
+
/** Optional callback invoked for every data change event */
|
|
39
|
+
onEvent?: (event: DataChangeEvent) => void;
|
|
40
|
+
/** Set to false to disable the connection (default: true) */
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** State returned by the useRealtime hook */
|
|
44
|
+
export interface RealtimeState {
|
|
45
|
+
/** Whether the SignalR connection is currently active */
|
|
46
|
+
connected: boolean;
|
|
47
|
+
/** Last connection error message, if any */
|
|
48
|
+
error: string | null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* React hook that connects to Azure SignalR and invalidates queries
|
|
52
|
+
* when data changes are broadcast by the API.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```tsx
|
|
56
|
+
* const realtime = useRealtime({
|
|
57
|
+
* negotiate: () => client.negotiate(),
|
|
58
|
+
* queryClient,
|
|
59
|
+
* });
|
|
60
|
+
* // realtime.connected — boolean
|
|
61
|
+
* // realtime.error — string | null
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function useRealtime(options: RealtimeOptions): RealtimeState;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=realtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,UAAU,eAAe;IACvB,iBAAiB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,+EAA+E;IAC/E,WAAW,EAAE,eAAe,CAAC;IAC7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6CAA6C;AAC7C,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CA+GnE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for real-time notifications via Azure SignalR Service.
|
|
3
|
+
*
|
|
4
|
+
* Connects to SignalR using the negotiate endpoint from the API,
|
|
5
|
+
* listens for data change events, and automatically invalidates
|
|
6
|
+
* TanStack React Query caches so the UI stays fresh.
|
|
7
|
+
*
|
|
8
|
+
* Requires peer dependencies: @microsoft/signalr, @tanstack/react-query, react
|
|
9
|
+
*/
|
|
10
|
+
import { useState, useEffect, useRef } from "react";
|
|
11
|
+
/** Default mapping from table route names to React Query key prefixes */
|
|
12
|
+
const DEFAULT_TABLE_QUERY_KEYS = {
|
|
13
|
+
case: [["cases"], ["aggStats"]],
|
|
14
|
+
casenotes: [["caseNotes"]],
|
|
15
|
+
caseactivities: [["caseActivities"]],
|
|
16
|
+
caseemails: [["caseActivities"]],
|
|
17
|
+
casephonecalls: [["caseActivities"]],
|
|
18
|
+
casetasks: [["caseActivities"]],
|
|
19
|
+
caseappointments: [["caseActivities"]],
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* React hook that connects to Azure SignalR and invalidates queries
|
|
23
|
+
* when data changes are broadcast by the API.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* const realtime = useRealtime({
|
|
28
|
+
* negotiate: () => client.negotiate(),
|
|
29
|
+
* queryClient,
|
|
30
|
+
* });
|
|
31
|
+
* // realtime.connected — boolean
|
|
32
|
+
* // realtime.error — string | null
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function useRealtime(options) {
|
|
36
|
+
const { negotiate, queryClient, tableQueryKeys, onEvent, enabled = true, } = options;
|
|
37
|
+
const [connected, setConnected] = useState(false);
|
|
38
|
+
const [error, setError] = useState(null);
|
|
39
|
+
// Use refs for callbacks to avoid reconnecting when they change
|
|
40
|
+
const onEventRef = useRef(onEvent);
|
|
41
|
+
onEventRef.current = onEvent;
|
|
42
|
+
const queryClientRef = useRef(queryClient);
|
|
43
|
+
queryClientRef.current = queryClient;
|
|
44
|
+
const tableQueryKeysRef = useRef(tableQueryKeys);
|
|
45
|
+
tableQueryKeysRef.current = tableQueryKeys;
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!enabled) {
|
|
48
|
+
setConnected(false);
|
|
49
|
+
setError(null);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
let stopped = false;
|
|
53
|
+
let connection = null;
|
|
54
|
+
async function connect() {
|
|
55
|
+
try {
|
|
56
|
+
// Dynamic import — @microsoft/signalr is a peer dependency
|
|
57
|
+
const signalR = await import("@microsoft/signalr");
|
|
58
|
+
if (stopped)
|
|
59
|
+
return;
|
|
60
|
+
const { url, accessToken } = await negotiate();
|
|
61
|
+
if (stopped)
|
|
62
|
+
return;
|
|
63
|
+
const conn = new signalR.HubConnectionBuilder()
|
|
64
|
+
.withUrl(url, {
|
|
65
|
+
accessTokenFactory: () => accessToken,
|
|
66
|
+
})
|
|
67
|
+
.withAutomaticReconnect([0, 2000, 5000, 10000, 30000])
|
|
68
|
+
.configureLogging(signalR.LogLevel.Warning)
|
|
69
|
+
.build();
|
|
70
|
+
conn.onreconnecting(() => {
|
|
71
|
+
if (!stopped)
|
|
72
|
+
setConnected(false);
|
|
73
|
+
});
|
|
74
|
+
conn.onreconnected(() => {
|
|
75
|
+
if (!stopped) {
|
|
76
|
+
setConnected(true);
|
|
77
|
+
setError(null);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
conn.onclose((err) => {
|
|
81
|
+
if (!stopped) {
|
|
82
|
+
setConnected(false);
|
|
83
|
+
if (err)
|
|
84
|
+
setError(err.message);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
conn.on("dataChanged", (event) => {
|
|
88
|
+
if (stopped)
|
|
89
|
+
return;
|
|
90
|
+
// Notify callback
|
|
91
|
+
onEventRef.current?.(event);
|
|
92
|
+
// Invalidate matching query keys
|
|
93
|
+
const mapping = tableQueryKeysRef.current ?? DEFAULT_TABLE_QUERY_KEYS;
|
|
94
|
+
const keys = mapping[event.table];
|
|
95
|
+
if (keys) {
|
|
96
|
+
for (const queryKey of keys) {
|
|
97
|
+
queryClientRef.current.invalidateQueries({ queryKey });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
await conn.start();
|
|
102
|
+
connection = conn;
|
|
103
|
+
if (!stopped) {
|
|
104
|
+
setConnected(true);
|
|
105
|
+
setError(null);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Cleanup was called while connecting
|
|
109
|
+
conn.stop();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
if (!stopped) {
|
|
114
|
+
const message = err instanceof Error ? err.message : "Failed to connect to real-time notifications";
|
|
115
|
+
setError(message);
|
|
116
|
+
setConnected(false);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
connect();
|
|
121
|
+
return () => {
|
|
122
|
+
stopped = true;
|
|
123
|
+
setConnected(false);
|
|
124
|
+
connection?.stop();
|
|
125
|
+
};
|
|
126
|
+
}, [negotiate, enabled]);
|
|
127
|
+
return { connected, error };
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=realtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.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 {
|
|
@@ -23,6 +25,24 @@ export interface QueryOptions {
|
|
|
23
25
|
filterLogic?: "and" | "or";
|
|
24
26
|
/** Expand related lookup fields, e.g. "primarycontactid(contactid,fullname)" */
|
|
25
27
|
expand?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Activity subtype for polymorphic tables (e.g. caseactivities, contactactivities).
|
|
30
|
+
* Use "phonecall", "email", "task", "appointment", etc. to filter by type.
|
|
31
|
+
* Use "all" to list all types. Each record includes a `_link` field.
|
|
32
|
+
*/
|
|
33
|
+
subtype?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Quick filter on record creation date (createdon).
|
|
36
|
+
* Named periods: today, yesterday, thisweek, lastweek, thismonth, lastmonth, thisyear.
|
|
37
|
+
* Relative durations: 1h, 24h, 7d, 30d, 90d.
|
|
38
|
+
* Date ranges: "2026-01-01..2026-02-01", "2026-01-01..", "..2026-02-01".
|
|
39
|
+
*/
|
|
40
|
+
created?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Quick filter on record last-modified date (modifiedon).
|
|
43
|
+
* Same formats as `created`.
|
|
44
|
+
*/
|
|
45
|
+
modified?: string;
|
|
26
46
|
}
|
|
27
47
|
/** Query options for lookup endpoints (summary data only — no sensitive fields) */
|
|
28
48
|
export interface LookupOptions extends QueryOptions {
|
|
@@ -136,6 +156,10 @@ export interface AggregateOptions {
|
|
|
136
156
|
filter?: string | string[];
|
|
137
157
|
/** Logic to combine multiple filters: "and" (default) or "or" */
|
|
138
158
|
filterLogic?: "and" | "or";
|
|
159
|
+
/** Quick filter on creation date (same formats as QueryOptions.created) */
|
|
160
|
+
created?: string;
|
|
161
|
+
/** Quick filter on last-modified date (same formats as QueryOptions.modified) */
|
|
162
|
+
modified?: string;
|
|
139
163
|
}
|
|
140
164
|
/** Non-paginated aggregate response */
|
|
141
165
|
export interface AggregateResponse<T = Record<string, unknown>> {
|
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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"}
|