fms-odata-js 0.3.0 → 0.4.0

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/CHANGELOG.md CHANGED
@@ -5,7 +5,81 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.4.0] — 2025-01-09
9
+
10
+ ### Fixed — DDL and webhook API alignment with real FileMaker Server
11
+
12
+ Verified against a live FileMaker Server 26.0.1 instance and the official
13
+ Claris OData guide. The previous implementations used URL formats that FMS
14
+ rejects; both modules now match the actual server behavior.
15
+
16
+ - **DDL URL format (`schema.ts`):** `addFields`, `deleteTable`, and
17
+ `deleteField` now use the slash-separated URL format
18
+ (`FileMaker_Tables/{table}`) that FMS accepts, instead of the OData
19
+ key-parentheses format (`FileMaker_Tables('{table}')`) which FMS rejects
20
+ with error `-1010` ("entity name must be specified"). The spec docs
21
+ documented the parentheses format, but the live server only accepts the
22
+ slash format for these operations.
23
+ - **Webhook endpoints (`webhooks.ts`):** rewritten to match the official
24
+ Claris OData webhook API:
25
+ - `getAll()` now uses `GET /Webhook.GetAll` (was `POST`).
26
+ - `get(id)` now uses `GET /Webhook.Get({id})` with the id in the URL path
27
+ (was `POST /Webhook.Get` with `{ id }` body).
28
+ - `remove(id)` now uses `POST /Webhook.Delete({id})` with the id in the
29
+ URL path (was `POST /Webhook.Remove` with `{ id }` body). A `delete()`
30
+ alias is provided to match the FMS endpoint name.
31
+ - `invoke(id)` now uses `POST /Webhook.Invoke({id})` with the id in the
32
+ URL path and a required JSON body `{ rowIDs: [...] }` (was `POST
33
+ /Webhook.Invoke` with `{ id }` body). FMS rejects empty bodies.
34
+ - `create()` now returns `{ id: string }` extracted from the FMS response
35
+ `{ webhookResult: { webhookID: N } }` (previously returned the raw
36
+ response and callers had to guess the id field name).
37
+ - All id parameters now accept `string | number` (FMS issues integer IDs).
38
+ - **Integration tests:** added `tests/integration/ddl-webhooks.test.ts`
39
+ covering DDL (create/addFields/index/deleteField/deleteTable) and webhook
40
+ management (create/get/getAll/invoke/remove) against a live FMS. Throwaway
41
+ tables and webhooks are created and cleaned up; production tables are
42
+ never touched.
43
+
44
+ ### Changed — Spec alignment with `@fms-odata/spec-ts` 2.0.0
45
+
46
+ Bumped the shared spec dependency from `^1.1.0` to `^2.0.1` and aligned the
47
+ client with the v2.0.0 spec overhaul (drop FileMaker 19.x, corrected version
48
+ history, OAuth/Bearer auth).
49
+
50
+ - **Dependency:** `@fms-odata/spec-ts` `^1.1.0` → `^2.0.1`.
51
+ - **Auth:** replaced the deprecated `fmidAuth()` helper (which produced the
52
+ now-removed `FMID …` scheme) with `bearerAuth()` producing `Bearer …`
53
+ headers, matching the spec's `FMOAuthAuthConfig` / `bearerAuth()`. The
54
+ `FMID` scheme is no longer recognized by `resolveAuthHeader`.
55
+ - **Version baseline:** FileMaker 19.x is no longer in the spec. The minimum
56
+ recognized major version is now `'20'` (Claris FileMaker 2023). Version
57
+ detection of a `19.x` server now resolves to `'future'` instead of `'19'`.
58
+ - **Version names:** corrected year mapping — `'21'` → FileMaker 2024,
59
+ `'22'` → FileMaker 2025 (previously 2023 / 2024 respectively).
60
+ - **Webhooks:** the spec now attributes webhooks to v22 (FileMaker 2025)
61
+ rather than v21. Updated doc comments accordingly; runtime feature gating
62
+ is driven by the spec matrix so behavior follows automatically.
63
+ - **`$apply` aggregation:** doc comments updated to FileMaker 2025+ (v22).
64
+ - **Tests:** updated version-detection tests to the new baseline (`'20'`)
65
+ and corrected year-name labels. Fixed pre-existing `possibly 'undefined'`
66
+ type errors in batch/metadata/integration tests so `tsc --noEmit` is clean.
67
+
68
+ ### Added — Schema editing (DDL)
69
+
70
+ - **`SchemaEditor` class** (`src/schema.ts`) with `createTable`, `addFields`, `deleteTable`, `deleteField`, `createIndex`, `deleteIndex` methods, aligned with `@fms-odata/spec-ts` schema types (`FMFieldDefinition`, `CreateTableParams`, `AddFieldsParams`, `FIELD_TYPES`, `parseFieldType`).
71
+ - **Convenience methods on `FMSOData`**: `db.schema()`, `db.createTable()`, `db.addFields()`, `db.deleteTable()`, `db.deleteField()`, `db.createIndex()`, `db.deleteIndex()`.
72
+ - **Field type validation**: field definitions are validated against the spec's `FIELD_TYPES` array before sending.
73
+ - **Destructive op guard**: `deleteTable` and `deleteField` require an explicit `{ confirm: true }` option to prevent accidental data loss.
74
+ - **Spec type re-exports**: `FIELD_TYPES`, `FIELD_DEFAULTS`, `parseFieldType`, `FMFieldType`, `FMFieldDefault`, `FMFieldDefinition`, `CreateTableParams`, `AddFieldsParams` re-exported from the public API.
75
+
76
+ ### Added — Webhook management
77
+
78
+ - **`WebhookManager` class** (`src/webhooks.ts`) with `create`, `remove`, `get`, `getAll`, `invoke` methods, aligned with `@fms-odata/spec-ts` webhook types (`WebhookCreateParams`, `WebhookData`, `WebhookOperation`).
79
+ - **Convenience methods on `FMSOData`**: `db.webhooks()`, `db.createWebhook()`, `db.removeWebhook()`, `db.getWebhook()`, `db.getAllWebhooks()`, `db.invokeWebhook()`.
80
+ - **Legacy `headers` alias**: the `headers` field in `WebhookCreateParams` is automatically mapped to `endpointHeaders` for backward compatibility.
81
+ - **Spec type re-exports**: `WebhookCreateParams`, `WebhookData`, `WebhookOperation` re-exported from the public API.
82
+ - Requires FileMaker Server 2025+ (v22). Use `db.hasFeature('webhooks')` to check.
9
83
 
10
84
  ## [0.3.0] - 2026-06-23
11
85
 
package/README.md CHANGED
@@ -4,15 +4,16 @@
4
4
 
5
5
  **A tiny, type-safe OData v4 client built for FileMaker Server.**
6
6
 
7
- Zero runtime dependencies · ~9.1 KB gzipped · ESM + IIFE · Web Viewer / Browser / Node 18+
7
+ Zero runtime dependencies · ~10.6 KB gzipped · ESM + IIFE · Web Viewer / Browser / Node 18+
8
8
 
9
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.5-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
10
10
  [![OData](https://img.shields.io/badge/OData-v4-0078D4?logo=data&logoColor=white)](https://www.odata.org/)
11
11
  [![FileMaker](https://img.shields.io/badge/FileMaker-19.0--26.0-FF6B00?logo=filemaker&logoColor=white)](https://www.claris.com/filemaker/)
12
- [![Bundle](https://img.shields.io/badge/gzip-~9.1%20KB-brightgreen)](#)
12
+ [![Bundle](https://img.shields.io/badge/gzip-~10.6%20KB-brightgreen)](#)
13
13
  [![Deps](https://img.shields.io/badge/runtime%20deps-0-blue)](#)
14
14
  [![Node](https://img.shields.io/badge/node-%3E%3D18-339933?logo=node.js&logoColor=white)](#)
15
15
  [![License](https://img.shields.io/badge/license-MIT-black)](./LICENSE)
16
+ [![Spec](https://img.shields.io/badge/spec-fms--odata--spec-FF6B00?logo=filemaker&logoColor=white)](https://github.com/fsans/fms-odata-spec)
16
17
 
17
18
  </div>
18
19
 
@@ -24,7 +25,7 @@ FileMaker Server speaks OData v4, but the spec has sharp corners and FMS has qui
24
25
 
25
26
  > **Battle-tested in production.** I've been using this library heavily to let FileMaker Web Viewer instances talk to the *same* hosted database they live in — and the performance has been genuinely impressive. Queries that used to require round-tripping through scripts and set-field loops now resolve in a single OData call, with noticeably lower latency and a much cleaner code path. If you're building rich Web Viewer UIs backed by FMS, this is the fastest route I've found.
26
27
 
27
- - **Tiny.** ESM and IIFE bundles, zero runtime dependencies, ~9.1 KB gzipped.
28
+ - **Tiny.** ESM and IIFE bundles, zero runtime dependencies, ~10.6 KB gzipped.
28
29
  - **Type-safe.** Fluent, chainable query builder with full TS inference.
29
30
  - **Runs anywhere.** Drop it into a FileMaker Web Viewer, a browser, or Node 18+.
30
31
  - **FMS-aware.** Handles the documented FMS OData deviations for you.
@@ -34,43 +35,38 @@ FileMaker Server speaks OData v4, but the spec has sharp corners and FMS has qui
34
35
  - **Aggregations.** `$apply` builder for `aggregate()` and `groupBy()` — server-side sum, average, min, max, count (FMS 2024+).
35
36
  - **Navigation properties.** Full `$ref` CRUD — `getRefs`, `addRef`, `setRef`, `removeRef` for OData relationship links.
36
37
  - **Schema introspection.** `$metadata` parsed into typed `ODataMetadata` with entity types, keys, properties, and actions. Cached by default.
38
+ - **Schema editing (DDL).** Create/delete tables, add/delete fields, create/delete indexes via the `FileMaker_Tables` and `FileMaker_Indexes` system endpoints. Field types validated against the spec; destructive ops guarded by `confirm: true`.
39
+ - **Webhooks.** Create, remove, get, list, and manually invoke webhooks (FMS 2023+ / v21) with typed params and `endpointHeaders` / `queryHeaders` support.
37
40
  - **Batch requests.** `$batch` builder composes multiple reads and atomic changesets (POST / PATCH / DELETE) into a single HTTP round-trip.
38
41
  - **Multi-auth.** Basic, Bearer, and FMID (FileMaker Cloud / Claris ID) auth with 401 retry, `AbortSignal`, and timeouts built in.
39
42
  - **Honest errors.** Every failure becomes a normalized `FMSODataError` (or `FMScriptError` for script failures) with `isFMSODataError` / `isFMScriptError` type guards.
40
43
 
41
44
  ## Status
42
45
 
43
- | Milestone | Scope | State |
44
- | ----------- | ----------------------------------------------------------------- | :---: |
45
- | **M1–M3** | Query builder · collection GET · single-entity CRUD · auth · errors | Done |
46
- | **M4 · 1/4**| Script execution (database / entity-set / record scope) | Done (v0.1.4) |
47
- | **M4 · 2/4**| Containers (binary upload / download / stream) | Done (v0.1.5) |
48
- | **M5** | `$metadata` (schema introspection) | Done |
49
- | **M6** | `$batch` (multipart with changesets) | Done |
50
- | **v0.2.0** | Spec alignment — version detection, `$apply`, FMSID scripts, `$ref`, FMID auth, IIFE build | Done (v0.2.0) |
51
-
52
46
  Full roadmap and changes live in [`CHANGELOG.md`](./CHANGELOG.md).
53
47
 
54
- ## Install
48
+ ## Spec alignment
55
49
 
56
- > **Not yet published to npm.** Until the first release hits the registry, install directly from GitHub or a local checkout.
50
+ This library follows the [`fms-odata-spec`](https://github.com/fsans/fms-odata-spec) reference specification and depends on [`@fms-odata/spec-ts`](https://www.npmjs.com/package/@fms-odata/spec-ts) (as a devDependency, bundled at build time — zero runtime deps) for shared type definitions and the FileMaker Server version feature matrix. Version detection, feature gating, auth schemes, aggregate functions, and error shapes are all sourced from the spec contract so every implementation in the ecosystem stays in lockstep.
57
51
 
58
- From GitHub:
52
+ See [`docs/14-reconciliation.md`](https://github.com/fsans/fms-odata-spec/blob/main/docs/14-reconciliation.md) in the spec repo for the full alignment plan.
53
+
54
+ ## Install
59
55
 
60
56
  ```bash
61
- npm install github:fsans/fms-odata-js
57
+ npm install fms-odata-js
62
58
  ```
63
59
 
64
- From a local clone:
60
+ From GitHub (latest `main`):
65
61
 
66
62
  ```bash
67
- npm install /path/to/fms-odata-js
63
+ npm install github:fsans/fms-odata-js
68
64
  ```
69
65
 
70
- Once published, the canonical install will be:
66
+ From a local clone:
71
67
 
72
68
  ```bash
73
- npm install fms-odata-js
69
+ npm install /path/to/fms-odata-js
74
70
  ```
75
71
 
76
72
  Local dev:
@@ -337,6 +333,83 @@ await db.from('contact').byKey(7).removeRef('addresses', 42)
337
333
  await db.from('order').byKey(100).removeRef('customer') // clears single-valued
338
334
  ```
339
335
 
336
+ ## Schema editing (DDL)
337
+
338
+ Create and delete tables, fields, and indexes via the `FileMaker_Tables` and
339
+ `FileMaker_Indexes` system endpoints. Requires a FileMaker account with full
340
+ access (schema modification) privileges.
341
+
342
+ ```ts
343
+ // Create a table with typed field definitions
344
+ await db.createTable({
345
+ tableName: 'Company',
346
+ fields: [
347
+ { name: 'Company ID', type: 'int', primary: true },
348
+ { name: 'Company Name', type: 'varchar(100)', nullable: false },
349
+ { name: 'Notes', type: 'varchar(2000)', global: true },
350
+ { name: 'Signed Contract', type: 'blob', externalSecurePath: 'ContactMgmt/' },
351
+ ],
352
+ })
353
+
354
+ // Add fields to an existing table
355
+ await db.addFields({
356
+ tableName: 'Company',
357
+ fields: [{ name: 'Phone', type: 'varchar(30)' }],
358
+ })
359
+
360
+ // Create an index on a field
361
+ await db.createIndex('Company', 'Company Name')
362
+
363
+ // Delete an index
364
+ await db.deleteIndex('Company', 'Company Name')
365
+
366
+ // Delete a field (requires confirm: true — irreversible)
367
+ await db.deleteField('Company', 'OldField', { confirm: true })
368
+
369
+ // Delete a table and all its records (requires confirm: true — irreversible)
370
+ await db.deleteTable('OldTable', { confirm: true })
371
+ ```
372
+
373
+ Field types follow the spec: `NUMERIC`, `DECIMAL`, `INT`, `DATE`, `TIME`,
374
+ `TIMESTAMP`, `VARCHAR(n)`, `CHARACTER VARYING`, `BLOB`, `VARBINARY`,
375
+ `LONGVARBINARY`, `BINARY VARYING`. Repetitions in brackets (`INT[4]`), text
376
+ length in parentheses (`VARCHAR(200)`). Destructive operations (`deleteTable`,
377
+ `deleteField`) require an explicit `{ confirm: true }` guard.
378
+
379
+ ## Webhooks
380
+
381
+ Manage FileMaker Server webhooks — requires FMS 2023+ (v21). Use
382
+ `hasFeature('webhooks')` to check before calling.
383
+
384
+ ```ts
385
+ // Create a webhook that fires on record changes in the contact table
386
+ const result = await db.createWebhook({
387
+ webhook: 'https://my.example.com:8080/webhook',
388
+ tableName: 'contact',
389
+ select: 'id,first_name,last_name',
390
+ filter: "status eq 'active'",
391
+ notifySchemaChanges: true,
392
+ maxFailedAttempts: 10,
393
+ })
394
+
395
+ // List all webhooks
396
+ const all = await db.getAllWebhooks()
397
+
398
+ // Get a specific webhook's data
399
+ const data = await db.getWebhook('wh-id')
400
+
401
+ // Manually invoke a webhook (useful for testing)
402
+ await db.invokeWebhook('wh-id')
403
+
404
+ // Remove a webhook
405
+ await db.removeWebhook('wh-id')
406
+ ```
407
+
408
+ The `endpointHeaders` / `queryHeaders` split is supported: `endpointHeaders`
409
+ are sent to the webhook URL without affecting processing, while `queryHeaders`
410
+ control how the payload is generated. The legacy `headers` alias for
411
+ `endpointHeaders` is accepted for backward compatibility.
412
+
340
413
  ## Live integration tests
341
414
 
342
415
  Copy `.env.sample` to `.env` and fill in real FMS credentials:
@@ -369,7 +442,7 @@ FM_LIVE=1 npm test -- tests/integration # full CRUD against real FMS
369
442
  The library ships three bundle formats:
370
443
 
371
444
  - **ESM** (`dist/fms-odata.esm.js`) — for Node, bundlers, and modern browsers
372
- - **ESM minified** (`dist/fms-odata.esm.min.js`) — ~9.1 KB gzipped, production use
445
+ - **ESM minified** (`dist/fms-odata.esm.min.js`) — ~10.6 KB gzipped, production use
373
446
  - **IIFE** (`dist/fms-odata.iife.min.js`) — global `FMSODataLib`, for FileMaker Web Viewer and `<script>` tag inclusion without a bundler
374
447
 
375
448
  ## Contributing
package/dist/client.d.ts CHANGED
@@ -2,8 +2,10 @@ import { Batch } from './batch.js';
2
2
  import { type HttpClientContext, type HttpRequestOptions } from './http.js';
3
3
  import { type MetadataOptions, type ODataMetadata } from './metadata.js';
4
4
  import { Query } from './query.js';
5
+ import { SchemaEditor, type DeleteSchemaOptions, type SchemaOptions } from './schema.js';
5
6
  import { type ScriptOptions, type ScriptResult } from './scripts.js';
6
7
  import type { FMSODataOptions, RequestOptions } from './types.js';
8
+ import { WebhookManager, type WebhookOptions } from './webhooks.js';
7
9
  import { type FMVersionMajor, type FMVersionInfo, type FMFeatureFlags, type FMServerVersion } from '@fms-odata/spec-ts';
8
10
  /**
9
11
  * `FMSOData` is the entrypoint for all OData operations against a FileMaker
@@ -83,7 +85,7 @@ export declare class FMSOData {
83
85
  * `@fms-odata/spec-ts` `parseServerVersion`). The result is cached for the
84
86
  * lifetime of this `FMSOData` instance.
85
87
  *
86
- * Returns the major version string (`'19'`, `'21'`, `'22'`, `'26'`) or
88
+ * Returns the major version string (`'20'`, `'21'`, `'22'`, `'26'`) or
87
89
  * `'future'` if the version is newer than the spec knows about. Returns
88
90
  * `null` if the version cannot be determined (e.g. the metadata lacks the
89
91
  * annotation).
@@ -134,6 +136,49 @@ export declare class FMSOData {
134
136
  * ```
135
137
  */
136
138
  hasFeature(feature: keyof FMFeatureFlags): Promise<boolean>;
139
+ /** @internal */ private _schemaEditor?;
140
+ /**
141
+ * Get a `SchemaEditor` handle for DDL operations (create/delete tables,
142
+ * add/delete fields, create/delete indexes). Requires a FileMaker account
143
+ * with full access privileges.
144
+ *
145
+ * ```ts
146
+ * await db.schema().createTable({ tableName: 'Company', fields: [...] })
147
+ * ```
148
+ */
149
+ schema(): SchemaEditor;
150
+ /** Convenience: create a table. See {@link SchemaEditor#createTable}. */
151
+ createTable(params: import('@fms-odata/spec-ts').CreateTableParams, opts?: SchemaOptions): Promise<unknown>;
152
+ /** Convenience: add fields to a table. See {@link SchemaEditor#addFields}. */
153
+ addFields(params: import('@fms-odata/spec-ts').AddFieldsParams, opts?: SchemaOptions): Promise<unknown>;
154
+ /** Convenience: delete a table (requires `confirm: true`). See {@link SchemaEditor#deleteTable}. */
155
+ deleteTable(tableName: string, opts: DeleteSchemaOptions): Promise<void>;
156
+ /** Convenience: delete a field (requires `confirm: true`). See {@link SchemaEditor#deleteField}. */
157
+ deleteField(tableName: string, fieldName: string, opts: DeleteSchemaOptions): Promise<void>;
158
+ /** Convenience: create an index. See {@link SchemaEditor#createIndex}. */
159
+ createIndex(tableName: string, fieldName: string, opts?: SchemaOptions): Promise<unknown>;
160
+ /** Convenience: delete an index. See {@link SchemaEditor#deleteIndex}. */
161
+ deleteIndex(tableName: string, fieldName: string, opts?: SchemaOptions): Promise<void>;
162
+ /** @internal */ private _webhookManager?;
163
+ /**
164
+ * Get a `WebhookManager` handle for webhook CRUD operations (create, remove,
165
+ * get, getAll, invoke). Requires FileMaker Server 2025+ (v22).
166
+ *
167
+ * ```ts
168
+ * await db.webhooks().create({ webhook: 'https://...', tableName: 'contact' })
169
+ * ```
170
+ */
171
+ webhooks(): WebhookManager;
172
+ /** Convenience: create a webhook. See {@link WebhookManager#create}. */
173
+ createWebhook(params: import('@fms-odata/spec-ts').WebhookCreateParams, opts?: WebhookOptions): Promise<unknown>;
174
+ /** Convenience: delete a webhook by ID. See {@link WebhookManager#remove}. */
175
+ removeWebhook(id: string | number, opts?: WebhookOptions): Promise<unknown>;
176
+ /** Convenience: get a webhook by ID. See {@link WebhookManager#get}. */
177
+ getWebhook(id: string | number, opts?: WebhookOptions): Promise<unknown>;
178
+ /** Convenience: list all webhooks. See {@link WebhookManager#getAll}. */
179
+ getAllWebhooks(opts?: WebhookOptions): Promise<unknown>;
180
+ /** Convenience: manually invoke a webhook by ID. See {@link WebhookManager#invoke}. */
181
+ invokeWebhook(id: string | number, opts?: WebhookOptions): Promise<unknown>;
137
182
  /**
138
183
  * Create a new `$batch` builder for composing multiple OData operations
139
184
  * into a single HTTP round-trip.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAA+B,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxG,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAgD,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAClH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAA;AAE3B;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAEtC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IACjD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAE/C,OAAO,EAAE,eAAe;IAoBpC;;OAEG;IACH,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAK9D;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIxF;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrF;;;;;;;;;OASG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3E;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhF;;;;;;;;OAQG;IACG,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOlE;;OAEG;IACG,WAAW,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAmC;IAC5E,gBAAgB,CAAC,OAAO,CAAC,sBAAsB,CAAoC;IAEnF;;;;;;;;;;;;;;;OAeG;IACG,OAAO,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAkB/C;;;;;;;;;;;OAWG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAYtD;;;;;;;;;;;;OAYG;IACG,WAAW,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAMlD;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjE;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,IAAI,KAAK;IAId,gBAAgB;IAChB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAKvC;AAGD,YAAY,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}