velocious 1.0.489 → 1.0.492
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/build/application.js +3 -0
- package/build/cli/commands/db/tenants/create.js +7 -5
- package/build/cli/commands/db/tenants/drop.js +6 -6
- package/build/configuration-types.js +8 -0
- package/build/configuration.js +29 -0
- package/build/database/query/index.js +30 -0
- package/build/database/query/model-class-query.js +17 -0
- package/build/database/record/index.js +16 -0
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +3 -1
- package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/create.js +8 -5
- package/build/src/cli/commands/db/tenants/drop.d.ts +1 -1
- package/build/src/cli/commands/db/tenants/drop.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/drop.js +7 -6
- package/build/src/configuration-types.d.ts +24 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +8 -1
- package/build/src/configuration.d.ts +6 -0
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +26 -1
- package/build/src/database/query/index.d.ts +25 -0
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +26 -1
- package/build/src/database/query/model-class-query.d.ts +10 -0
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +16 -1
- package/build/src/database/record/index.d.ts +7 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +15 -1
- package/build/src/sync/query-scope.d.ts +18 -0
- package/build/src/sync/query-scope.d.ts.map +1 -0
- package/build/src/sync/query-scope.js +77 -0
- package/build/src/sync/server-change-feed.d.ts.map +1 -1
- package/build/src/sync/server-change-feed.js +2 -24
- package/build/src/sync/stable-json.d.ts +9 -0
- package/build/src/sync/stable-json.d.ts.map +1 -0
- package/build/src/sync/stable-json.js +27 -0
- package/build/src/sync/sync-api-client.d.ts +185 -5
- package/build/src/sync/sync-api-client.d.ts.map +1 -1
- package/build/src/sync/sync-api-client.js +309 -17
- package/build/src/sync/sync-api-controller.d.ts +8 -0
- package/build/src/sync/sync-api-controller.d.ts.map +1 -1
- package/build/src/sync/sync-api-controller.js +17 -1
- package/build/src/sync/sync-client-registry.d.ts +12 -0
- package/build/src/sync/sync-client-registry.d.ts.map +1 -0
- package/build/src/sync/sync-client-registry.js +27 -0
- package/build/src/sync/sync-client-types.d.ts +127 -0
- package/build/src/sync/sync-client-types.d.ts.map +1 -0
- package/build/src/sync/sync-client-types.js +3 -0
- package/build/src/sync/sync-client.d.ts +176 -0
- package/build/src/sync/sync-client.d.ts.map +1 -0
- package/build/src/sync/sync-client.js +380 -0
- package/build/src/sync/sync-envelope-replay-service.d.ts +38 -4
- package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
- package/build/src/sync/sync-envelope-replay-service.js +73 -6
- package/build/src/sync/sync-resource-base.d.ts +98 -0
- package/build/src/sync/sync-resource-base.d.ts.map +1 -0
- package/build/src/sync/sync-resource-base.js +122 -0
- package/build/src/sync/sync-scope-store.d.ts +128 -0
- package/build/src/sync/sync-scope-store.d.ts.map +1 -0
- package/build/src/sync/sync-scope-store.js +282 -0
- package/build/src/tenants/default-tenant-database-provisioning.d.ts +21 -0
- package/build/src/tenants/default-tenant-database-provisioning.d.ts.map +1 -0
- package/build/src/tenants/default-tenant-database-provisioning.js +106 -0
- package/build/src/tenants/tenant.d.ts.map +1 -1
- package/build/src/tenants/tenant.js +6 -5
- package/build/sync/query-scope.js +84 -0
- package/build/sync/server-change-feed.js +1 -25
- package/build/sync/stable-json.js +28 -0
- package/build/sync/sync-api-client.js +331 -17
- package/build/sync/sync-api-controller.js +20 -0
- package/build/sync/sync-client-registry.js +30 -0
- package/build/sync/sync-client-types.js +41 -0
- package/build/sync/sync-client.js +433 -0
- package/build/sync/sync-envelope-replay-service.js +77 -5
- package/build/sync/sync-resource-base.js +143 -0
- package/build/sync/sync-scope-store.js +327 -0
- package/build/tenants/default-tenant-database-provisioning.js +124 -0
- package/build/tenants/tenant.js +5 -5
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/application.js +3 -0
- package/src/cli/commands/db/tenants/create.js +7 -5
- package/src/cli/commands/db/tenants/drop.js +6 -6
- package/src/configuration-types.js +8 -0
- package/src/configuration.js +29 -0
- package/src/database/query/index.js +30 -0
- package/src/database/query/model-class-query.js +17 -0
- package/src/database/record/index.js +16 -0
- package/src/sync/query-scope.js +84 -0
- package/src/sync/server-change-feed.js +1 -25
- package/src/sync/stable-json.js +28 -0
- package/src/sync/sync-api-client.js +331 -17
- package/src/sync/sync-api-controller.js +20 -0
- package/src/sync/sync-client-registry.js +30 -0
- package/src/sync/sync-client-types.js +41 -0
- package/src/sync/sync-client.js +433 -0
- package/src/sync/sync-envelope-replay-service.js +77 -5
- package/src/sync/sync-resource-base.js +143 -0
- package/src/sync/sync-scope-store.js +327 -0
- package/src/tenants/default-tenant-database-provisioning.js +124 -0
- package/src/tenants/tenant.js +5 -5
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import Controller from "../controller.js";
|
|
3
3
|
import FrontendModelBaseResource from "../frontend-model-resource/base-resource.js";
|
|
4
|
+
/** Configurations whose sync.api routes have already been mounted. */
|
|
5
|
+
const mountedConfigurations = new WeakSet();
|
|
4
6
|
/**
|
|
5
7
|
* Generic `/velocious/sync` transport controller.
|
|
6
8
|
*
|
|
@@ -87,6 +89,20 @@ export default class SyncApiController extends Controller {
|
|
|
87
89
|
routes.post(`${at}/replay`, { to: [ControllerClass, "replay"] });
|
|
88
90
|
});
|
|
89
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Auto-mounts the sync endpoints configured through `sync.api` on a configuration.
|
|
94
|
+
* No-op when `sync.api` is absent; guarded so repeated server boots with the
|
|
95
|
+
* same configuration register the routes only once.
|
|
96
|
+
* @param {import("../configuration.js").default} configuration - Configuration instance.
|
|
97
|
+
* @returns {void}
|
|
98
|
+
*/
|
|
99
|
+
static mountFromConfiguration(configuration) {
|
|
100
|
+
const api = configuration.getSyncConfiguration().api;
|
|
101
|
+
if (!api || mountedConfigurations.has(configuration))
|
|
102
|
+
return;
|
|
103
|
+
mountedConfigurations.add(configuration);
|
|
104
|
+
this.mountInto({ at: api.mountPath, configuration, syncResourceClass: api.resourceClass });
|
|
105
|
+
}
|
|
90
106
|
/**
|
|
91
107
|
* Normalizes a sync mount path.
|
|
92
108
|
* @param {string} at - Mount path.
|
|
@@ -139,4 +155,4 @@ export default class SyncApiController extends Controller {
|
|
|
139
155
|
});
|
|
140
156
|
}
|
|
141
157
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hcGktY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zeW5jL3N5bmMtYXBpLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8seUJBQXlCLE1BQU0sNkNBQTZDLENBQUE7QUFFbkY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQkFBa0IsU0FBUSxVQUFVO0lBQ3ZEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSxRQUFRLEdBQUcsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFL0gsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxRQUFRLEdBQUcsNEVBQTRFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFaEksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsTUFBTTtRQUNqQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFFckMsT0FBTyxJ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QUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjO1FBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDOUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQTtRQUUzQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQTtRQUVyRixPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLGFBQWE7UUFDckMsT0FBTyxxRkFBcUYsQ0FBQyxDQUFDO1lBQzVGLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDMUMsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQztTQUN0QixDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcIi4uL2NvbnRyb2xsZXIuanNcIlxuaW1wb3J0IEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2UgZnJvbSBcIi4uL2Zyb250ZW5kLW1vZGVsLXJlc291cmNlL2Jhc2UtcmVzb3VyY2UuanNcIlxuXG4vKipcbiAqIEdlbmVyaWMgYC92ZWxvY2lvdXMvc3luY2AgdHJhbnNwb3J0IGNvbnRyb2xsZXIuXG4gKlxuICogQXBwcyBwcm92aWRlIGEgc3luYyByZXNvdXJjZSBjbGFzczsgVmVsb2Npb3VzIG93bnMgZW5kcG9pbnQgc2hhcGUgYW5kXG4gKiByZW5kZXJpbmcuIFRoZSBhcHAgcmVzb3VyY2Ugb3ducyBhdXRoLCBzY29waW5nLCBhbmQgZG9tYWluLXNwZWNpZmljXG4gKiByZXBsYXkvY2hhbmdlIGhvb2tzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW5jQXBpQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIge1xuICAvKipcbiAgICogUmVuZGVycyBhIHJlcGxheSByZXNwb25zZSBmcm9tIHRoZSBjb25maWd1cmVkIHN5bmMgcmVzb3VyY2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgcmVwbGF5KCkge1xuICAgIGNvbnN0IHJlc291cmNlID0gLyoqIEB0eXBlIHtGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlICYge3JlcGxheTogKCkgPT4gUHJvbWlzZTx1bmtub3duPn19ICovICh0aGlzLnN5bmNSZXNvdXJjZSh0aGlzLnBhcmFtcygpKSlcblxuICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiAvKiogQHR5cGUge29iamVjdH0gKi8gKGF3YWl0IHJlc291cmNlLnJlcGxheSgpKX0pXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIGNoYW5nZS1mZWVkIHJlc3BvbnNlIGZyb20gdGhlIGNvbmZpZ3VyZWQgc3luYyByZXNvdXJjZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBjaGFuZ2VzKCkge1xuICAgIGNvbnN0IHJlc291cmNlID0gLyoqIEB0eXBlIHtGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlICYge2NoYW5nZXM6ICgpID0+IFByb21pc2U8dW5rbm93bj59fSAqLyAodGhpcy5zeW5jUmVzb3VyY2UodGhpcy5wYXJhbXMoKSkpXG5cbiAgICBhd2FpdCB0aGlzLnJlbmRlcih7anNvbjogLyoqIEB0eXBlIHtvYmplY3R9ICovIChhd2FpdCByZXNvdXJjZS5jaGFuZ2VzKCkpfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHN5bmMgcmVzb3VyY2UgdGhhdCBiYWNrcyB0aGUgdHJhbnNwb3J0IGVuZHBvaW50LlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBwYXJhbXMgLSBSZXF1ZXN0IHBhcmFtcy9ib2R5LlxuICAgKiBAcmV0dXJucyB7RnJvbnRlbmRNb2RlbEJhc2VSZXNvdXJjZX0gU3luYyByZXNvdXJjZSBpbnN0YW5jZS5cbiAgICovXG4gIHN5bmNSZXNvdXJjZShwYXJhbXMpIHtcbiAgICBjb25zdCBSZXNvdXJjZUNsYXNzID0gdGhpcy5zeW5jUmVzb3VyY2VDbGFzcygpXG4gICAgY29uc3QgYWJpbGl0eSA9IHRoaXMuY3VycmVudEFiaWxpdHkoKVxuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUNsYXNzKHtcbiAgICAgIGFiaWxpdHksXG4gICAgICBjb250cm9sbGVyOiAvKiogQHR5cGUge2ltcG9ydChcIi4uL2Zyb250ZW5kLW1vZGVsLXJlc291cmNlL2Jhc2UtcmVzb3VyY2UuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ29udHJvbGxlcn0gKi8gKC8qKiBAdHlwZSB7dW5rbm93bn0gKi8gKHRoaXMpKSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgLi4uKGFiaWxpdHk/LmdldENvbnRleHQoKSB8fCB7fSksXG4gICAgICAgIHBhcmFtczogdGhpcy5wYXJhbXMoKSxcbiAgICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0KClcbiAgICAgIH0sXG4gICAgICBsb2NhbHM6IGFiaWxpdHk/LmdldExvY2FscygpIHx8IHt9LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5zeW5jTW9kZWxDbGFzcygpLFxuICAgICAgbW9kZWxOYW1lOiB0aGlzLnN5bmNNb2RlbE5hbWUoKSxcbiAgICAgIHBhcmFtczogLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1BhcmFtc30gKi8gKC8qKiBAdHlwZSB7dW5rbm93bn0gKi8gKHBhcmFtcykpLFxuICAgICAgcmVzb3VyY2VDb25maWd1cmF0aW9uOiB0aGlzLnN5bmNSZXNvdXJjZUNvbmZpZ3VyYXRpb24oUmVzb3VyY2VDbGFzcylcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwcC1wcm92aWRlZCBzeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9IFN5bmMgcmVzb3VyY2UgY2xhc3MuXG4gICAqL1xuICBzeW5jUmVzb3VyY2VDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5taXNzaW5nU3luY1Jlc291cmNlQ2xhc3MoKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHN5bmMgQVBJIGNvbnRyb2xsZXIgY2xhc3MgYm91bmQgdG8gdGhlIGdpdmVuIHJlc291cmNlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ2xhc3NUeXBlfSBSZXNvdXJjZUNsYXNzIC0gU3luYyByZXNvdXJjZSBjbGFzcy5cbiAgICogQHJldHVybnMge3R5cGVvZiBTeW5jQXBpQ29udHJvbGxlcn0gQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIHJlc291cmNlLlxuICAgKi9cbiAgc3RhdGljIHdpdGhTeW5jUmVzb3VyY2VDbGFzcyhSZXNvdXJjZUNsYXNzKSB7XG4gICAgcmV0dXJuIGNsYXNzIENvbmZpZ3VyZWRTeW5jQXBpQ29udHJvbGxlciBleHRlbmRzIHRoaXMge1xuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm5zIHRoZSBjb25maWd1cmVkIHN5bmMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9IFN5bmMgcmVzb3VyY2UgY2xhc3MuXG4gICAgICAgKi9cbiAgICAgIHN5bmNSZXNvdXJjZUNsYXNzKCkge1xuICAgICAgICByZXR1cm4gUmVzb3VyY2VDbGFzc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3VudHMgdGhlIHN0YW5kYXJkIFZlbG9jaW91cyBzeW5jIGVuZHBvaW50cyBpbnRvIGEgcm91dGUgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHt7Y29uZmlndXJhdGlvbj86IGltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdCwgYXQ/OiBzdHJpbmcsIHN5bmNSZXNvdXJjZUNsYXNzPzogaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9fSBhcmdzIC0gTW91bnQgYXJncy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgbW91bnRJbnRvKGFyZ3MpIHtcbiAgICBjb25zdCB7Y29uZmlndXJhdGlvbiwgc3luY1Jlc291cmNlQ2xhc3N9ID0gYXJnc1xuICAgIGNvbnN0IENvbnRyb2xsZXJDbGFzcyA9IHN5bmNSZXNvdXJjZUNsYXNzID8gdGhpcy53aXRoU3luY1Jlc291cmNlQ2xhc3Moc3luY1Jlc291cmNlQ2xhc3MpIDogdGhpc1xuICAgIGNvbnN0IGF0ID0gdGhpcy5ub3JtYWxpemVkTW91bnRQYXRoKGFyZ3MuYXQgfHwgXCIvdmVsb2Npb3VzL3N5bmNcIilcblxuICAgIGlmICghY29uZmlndXJhdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiU3luY0FwaUNvbnRyb2xsZXIubW91bnRJbnRvIHJlcXVpcmVzIGNvbmZpZ3VyYXRpb25cIilcblxuICAgIGNvbmZpZ3VyYXRpb24ucm91dGVzKChyb3V0ZXMpID0+IHtcbiAgICAgIHJvdXRlcy5wb3N0KGAke2F0fS9jaGFuZ2VzYCwge3RvOiBbQ29udHJvbGxlckNsYXNzLCBcImNoYW5nZXNcIl19KVxuICAgICAgcm91dGVzLnBvc3QoYCR7YXR9L3JlcGxheWAsIHt0bzogW0NvbnRyb2xsZXJDbGFzcywgXCJyZXBsYXlcIl19KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHN5bmMgbW91bnQgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0IC0gTW91bnQgcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gTm9ybWFsaXplZCBtb3VudCBwYXRoIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2guXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplZE1vdW50UGF0aChhdCkge1xuICAgIGlmICh0eXBlb2YgYXQgIT09IFwic3RyaW5nXCIgfHwgIWF0LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFN5bmNBcGlDb250cm9sbGVyIG1vdW50IHBhdGggbXVzdCBzdGFydCB3aXRoICcvJywgZ290OiAke1N0cmluZyhhdCl9YClcbiAgICB9XG5cbiAgICByZXR1cm4gYXQucmVwbGFjZSgvXFwvKyQvdSwgXCJcIikgfHwgXCIvXCJcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWlzZXMgYSBjb25maWd1cmF0aW9uIGVycm9yIGZvciBzdWJjbGFzc2VzIHRoYXQgZG8gbm90IHByb3ZpZGUgYSByZXNvdXJjZS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ2xhc3NUeXBlfSBTeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgbWlzc2luZ1N5bmNSZXNvdXJjZUNsYXNzKCkge1xuICAgIHJldHVybiAvKiogQHR5cGUge3R5cGVvZiBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAodGhpcy5yYWlzZU1pc3NpbmdTeW5jUmVzb3VyY2VDbGFzcygpKSlcbiAgfVxuXG4gIC8qKiBSYWlzZXMgYSBjb25maWd1cmF0aW9uIGVycm9yIGZvciBzdWJjbGFzc2VzIHRoYXQgZG8gbm90IHByb3ZpZGUgYSByZXNvdXJjZS4gKi9cbiAgcmFpc2VNaXNzaW5nU3luY1Jlc291cmNlQ2xhc3MoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3luY0FwaUNvbnRyb2xsZXIuc3luY1Jlc291cmNlQ2xhc3MgbXVzdCBiZSBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGVsIGNsYXNzIGV4cG9zZWQgYnkgdGhlIHN5bmMgcmVzb3VyY2UuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IFN5bmMgbW9kZWwgY2xhc3MuXG4gICAqL1xuICBzeW5jTW9kZWxDbGFzcygpIHtcbiAgICBjb25zdCBSZXNvdXJjZUNsYXNzID0gdGhpcy5zeW5jUmVzb3VyY2VDbGFzcygpXG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IFJlc291cmNlQ2xhc3MuTW9kZWxDbGFzc1xuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIHJlc291cmNlIGNsYXNzIG11c3QgZGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzXCIpXG5cbiAgICByZXR1cm4gbW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGVsIG5hbWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSByZXNvdXJjZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gU3luYyBtb2RlbCBuYW1lLlxuICAgKi9cbiAgc3luY01vZGVsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jTW9kZWxDbGFzcygpLm5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIG1pbmltYWwgcmVzb3VyY2UgY29uZmlndXJhdGlvbiBuZWVkZWQgYnkgdGhlIHN5bmMgcmVzb3VyY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9IFJlc291cmNlQ2xhc3MgLSBTeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSBSZXNvdXJjZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgc3luY1Jlc291cmNlQ29uZmlndXJhdGlvbihSZXNvdXJjZUNsYXNzKSB7XG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSAqLyAoe1xuICAgICAgYXR0cmlidXRlczogUmVzb3VyY2VDbGFzcy5hdHRyaWJ1dGVzIHx8IHt9LFxuICAgICAgc3luYzoge2VuYWJsZWQ6IHRydWV9XG4gICAgfSlcbiAgfVxufVxuXG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hcGktY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zeW5jL3N5bmMtYXBpLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8seUJBQXlCLE1BQU0sNkNBQTZDLENBQUE7QUFFbkYsc0VBQXNFO0FBQ3RFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUUzQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUFDdkQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLFFBQVEsR0FBRywyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUUvSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLFFBQVEsR0FBRyw0RUFBNEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVoSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FB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IENvbnRyb2xsZXIgZnJvbSBcIi4uL2NvbnRyb2xsZXIuanNcIlxuaW1wb3J0IEZyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2UgZnJvbSBcIi4uL2Zyb250ZW5kLW1vZGVsLXJlc291cmNlL2Jhc2UtcmVzb3VyY2UuanNcIlxuXG4vKiogQ29uZmlndXJhdGlvbnMgd2hvc2Ugc3luYy5hcGkgcm91dGVzIGhhdmUgYWxyZWFkeSBiZWVuIG1vdW50ZWQuICovXG5jb25zdCBtb3VudGVkQ29uZmlndXJhdGlvbnMgPSBuZXcgV2Vha1NldCgpXG5cbi8qKlxuICogR2VuZXJpYyBgL3ZlbG9jaW91cy9zeW5jYCB0cmFuc3BvcnQgY29udHJvbGxlci5cbiAqXG4gKiBBcHBzIHByb3ZpZGUgYSBzeW5jIHJlc291cmNlIGNsYXNzOyBWZWxvY2lvdXMgb3ducyBlbmRwb2ludCBzaGFwZSBhbmRcbiAqIHJlbmRlcmluZy4gVGhlIGFwcCByZXNvdXJjZSBvd25zIGF1dGgsIHNjb3BpbmcsIGFuZCBkb21haW4tc3BlY2lmaWNcbiAqIHJlcGxheS9jaGFuZ2UgaG9va3MuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN5bmNBcGlDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVwbGF5IHJlc3BvbnNlIGZyb20gdGhlIGNvbmZpZ3VyZWQgc3luYyByZXNvdXJjZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyByZXBsYXkoKSB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSAvKiogQHR5cGUge0Zyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2UgJiB7cmVwbGF5OiAoKSA9PiBQcm9taXNlPHVua25vd24+fX0gKi8gKHRoaXMuc3luY1Jlc291cmNlKHRoaXMucGFyYW1zKCkpKVxuXG4gICAgYXdhaXQgdGhpcy5yZW5kZXIoe2pzb246IC8qKiBAdHlwZSB7b2JqZWN0fSAqLyAoYXdhaXQgcmVzb3VyY2UucmVwbGF5KCkpfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hhbmdlLWZlZWQgcmVzcG9uc2UgZnJvbSB0aGUgY29uZmlndXJlZCBzeW5jIHJlc291cmNlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGNoYW5nZXMoKSB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSAvKiogQHR5cGUge0Zyb250ZW5kTW9kZWxCYXNlUmVzb3VyY2UgJiB7Y2hhbmdlczogKCkgPT4gUHJvbWlzZTx1bmtub3duPn19ICovICh0aGlzLnN5bmNSZXNvdXJjZSh0aGlzLnBhcmFtcygpKSlcblxuICAgIGF3YWl0IHRoaXMucmVuZGVyKHtqc29uOiAvKiogQHR5cGUge29iamVjdH0gKi8gKGF3YWl0IHJlc291cmNlLmNoYW5nZXMoKSl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgc3luYyByZXNvdXJjZSB0aGF0IGJhY2tzIHRoZSB0cmFuc3BvcnQgZW5kcG9pbnQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IHBhcmFtcyAtIFJlcXVlc3QgcGFyYW1zL2JvZHkuXG4gICAqIEByZXR1cm5zIHtGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlfSBTeW5jIHJlc291cmNlIGluc3RhbmNlLlxuICAgKi9cbiAgc3luY1Jlc291cmNlKHBhcmFtcykge1xuICAgIGNvbnN0IFJlc291cmNlQ2xhc3MgPSB0aGlzLnN5bmNSZXNvdXJjZUNsYXNzKClcbiAgICBjb25zdCBhYmlsaXR5ID0gdGhpcy5jdXJyZW50QWJpbGl0eSgpXG5cbiAgICByZXR1cm4gbmV3IFJlc291cmNlQ2xhc3Moe1xuICAgICAgYWJpbGl0eSxcbiAgICAgIGNvbnRyb2xsZXI6IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vZnJvbnRlbmQtbW9kZWwtcmVzb3VyY2UvYmFzZS1yZXNvdXJjZS5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb250cm9sbGVyfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAodGhpcykpLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICAuLi4oYWJpbGl0eT8uZ2V0Q29udGV4dCgpIHx8IHt9KSxcbiAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcygpLFxuICAgICAgICByZXF1ZXN0OiB0aGlzLnJlcXVlc3QoKVxuICAgICAgfSxcbiAgICAgIGxvY2FsczogYWJpbGl0eT8uZ2V0TG9jYWxzKCkgfHwge30sXG4gICAgICBtb2RlbENsYXNzOiB0aGlzLnN5bmNNb2RlbENsYXNzKCksXG4gICAgICBtb2RlbE5hbWU6IHRoaXMuc3luY01vZGVsTmFtZSgpLFxuICAgICAgcGFyYW1zOiAvKiogQHR5cGUge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzUGFyYW1zfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAocGFyYW1zKSksXG4gICAgICByZXNvdXJjZUNvbmZpZ3VyYXRpb246IHRoaXMuc3luY1Jlc291cmNlQ29uZmlndXJhdGlvbihSZXNvdXJjZUNsYXNzKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXBwLXByb3ZpZGVkIHN5bmMgcmVzb3VyY2UgY2xhc3MuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZX0gU3luYyByZXNvdXJjZSBjbGFzcy5cbiAgICovXG4gIHN5bmNSZXNvdXJjZUNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLm1pc3NpbmdTeW5jUmVzb3VyY2VDbGFzcygpXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgc3luYyBBUEkgY29udHJvbGxlciBjbGFzcyBib3VuZCB0byB0aGUgZ2l2ZW4gcmVzb3VyY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9IFJlc291cmNlQ2xhc3MgLSBTeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIFN5bmNBcGlDb250cm9sbGVyfSBDb250cm9sbGVyIGNsYXNzIGZvciB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICBzdGF0aWMgd2l0aFN5bmNSZXNvdXJjZUNsYXNzKFJlc291cmNlQ2xhc3MpIHtcbiAgICByZXR1cm4gY2xhc3MgQ29uZmlndXJlZFN5bmNBcGlDb250cm9sbGVyIGV4dGVuZHMgdGhpcyB7XG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdGhlIGNvbmZpZ3VyZWQgc3luYyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZX0gU3luYyByZXNvdXJjZSBjbGFzcy5cbiAgICAgICAqL1xuICAgICAgc3luY1Jlc291cmNlQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiBSZXNvdXJjZUNsYXNzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdW50cyB0aGUgc3RhbmRhcmQgVmVsb2Npb3VzIHN5bmMgZW5kcG9pbnRzIGludG8gYSByb3V0ZSBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge3tjb25maWd1cmF0aW9uPzogaW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0LCBhdD86IHN0cmluZywgc3luY1Jlc291cmNlQ2xhc3M/OiBpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLkZyb250ZW5kTW9kZWxSZXNvdXJjZUNsYXNzVHlwZX19IGFyZ3MgLSBNb3VudCBhcmdzLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBtb3VudEludG8oYXJncykge1xuICAgIGNvbnN0IHtjb25maWd1cmF0aW9uLCBzeW5jUmVzb3VyY2VDbGFzc30gPSBhcmdzXG4gICAgY29uc3QgQ29udHJvbGxlckNsYXNzID0gc3luY1Jlc291cmNlQ2xhc3MgPyB0aGlzLndpdGhTeW5jUmVzb3VyY2VDbGFzcyhzeW5jUmVzb3VyY2VDbGFzcykgOiB0aGlzXG4gICAgY29uc3QgYXQgPSB0aGlzLm5vcm1hbGl6ZWRNb3VudFBhdGgoYXJncy5hdCB8fCBcIi92ZWxvY2lvdXMvc3luY1wiKVxuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jQXBpQ29udHJvbGxlci5tb3VudEludG8gcmVxdWlyZXMgY29uZmlndXJhdGlvblwiKVxuXG4gICAgY29uZmlndXJhdGlvbi5yb3V0ZXMoKHJvdXRlcykgPT4ge1xuICAgICAgcm91dGVzLnBvc3QoYCR7YXR9L2NoYW5nZXNgLCB7dG86IFtDb250cm9sbGVyQ2xhc3MsIFwiY2hhbmdlc1wiXX0pXG4gICAgICByb3V0ZXMucG9zdChgJHthdH0vcmVwbGF5YCwge3RvOiBbQ29udHJvbGxlckNsYXNzLCBcInJlcGxheVwiXX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLW1vdW50cyB0aGUgc3luYyBlbmRwb2ludHMgY29uZmlndXJlZCB0aHJvdWdoIGBzeW5jLmFwaWAgb24gYSBjb25maWd1cmF0aW9uLlxuICAgKiBOby1vcCB3aGVuIGBzeW5jLmFwaWAgaXMgYWJzZW50OyBndWFyZGVkIHNvIHJlcGVhdGVkIHNlcnZlciBib290cyB3aXRoIHRoZVxuICAgKiBzYW1lIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgdGhlIHJvdXRlcyBvbmx5IG9uY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBpbnN0YW5jZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgbW91bnRGcm9tQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSB7XG4gICAgY29uc3QgYXBpID0gY29uZmlndXJhdGlvbi5nZXRTeW5jQ29uZmlndXJhdGlvbigpLmFwaVxuXG4gICAgaWYgKCFhcGkgfHwgbW91bnRlZENvbmZpZ3VyYXRpb25zLmhhcyhjb25maWd1cmF0aW9uKSkgcmV0dXJuXG5cbiAgICBtb3VudGVkQ29uZmlndXJhdGlvbnMuYWRkKGNvbmZpZ3VyYXRpb24pXG5cbiAgICB0aGlzLm1vdW50SW50byh7YXQ6IGFwaS5tb3VudFBhdGgsIGNvbmZpZ3VyYXRpb24sIHN5bmNSZXNvdXJjZUNsYXNzOiBhcGkucmVzb3VyY2VDbGFzc30pXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHN5bmMgbW91bnQgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0IC0gTW91bnQgcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gTm9ybWFsaXplZCBtb3VudCBwYXRoIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2guXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplZE1vdW50UGF0aChhdCkge1xuICAgIGlmICh0eXBlb2YgYXQgIT09IFwic3RyaW5nXCIgfHwgIWF0LnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFN5bmNBcGlDb250cm9sbGVyIG1vdW50IHBhdGggbXVzdCBzdGFydCB3aXRoICcvJywgZ290OiAke1N0cmluZyhhdCl9YClcbiAgICB9XG5cbiAgICByZXR1cm4gYXQucmVwbGFjZSgvXFwvKyQvdSwgXCJcIikgfHwgXCIvXCJcbiAgfVxuXG4gIC8qKlxuICAgKiBSYWlzZXMgYSBjb25maWd1cmF0aW9uIGVycm9yIGZvciBzdWJjbGFzc2VzIHRoYXQgZG8gbm90IHByb3ZpZGUgYSByZXNvdXJjZS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuRnJvbnRlbmRNb2RlbFJlc291cmNlQ2xhc3NUeXBlfSBTeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgbWlzc2luZ1N5bmNSZXNvdXJjZUNsYXNzKCkge1xuICAgIHJldHVybiAvKiogQHR5cGUge3R5cGVvZiBGcm9udGVuZE1vZGVsQmFzZVJlc291cmNlfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAodGhpcy5yYWlzZU1pc3NpbmdTeW5jUmVzb3VyY2VDbGFzcygpKSlcbiAgfVxuXG4gIC8qKiBSYWlzZXMgYSBjb25maWd1cmF0aW9uIGVycm9yIGZvciBzdWJjbGFzc2VzIHRoYXQgZG8gbm90IHByb3ZpZGUgYSByZXNvdXJjZS4gKi9cbiAgcmFpc2VNaXNzaW5nU3luY1Jlc291cmNlQ2xhc3MoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3luY0FwaUNvbnRyb2xsZXIuc3luY1Jlc291cmNlQ2xhc3MgbXVzdCBiZSBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGVsIGNsYXNzIGV4cG9zZWQgYnkgdGhlIHN5bmMgcmVzb3VyY2UuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IFN5bmMgbW9kZWwgY2xhc3MuXG4gICAqL1xuICBzeW5jTW9kZWxDbGFzcygpIHtcbiAgICBjb25zdCBSZXNvdXJjZUNsYXNzID0gdGhpcy5zeW5jUmVzb3VyY2VDbGFzcygpXG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IFJlc291cmNlQ2xhc3MuTW9kZWxDbGFzc1xuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIHJlc291cmNlIGNsYXNzIG11c3QgZGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzXCIpXG5cbiAgICByZXR1cm4gbW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZGVsIG5hbWUgdXNlZCB0byBpbml0aWFsaXplIHRoZSByZXNvdXJjZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gU3luYyBtb2RlbCBuYW1lLlxuICAgKi9cbiAgc3luY01vZGVsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jTW9kZWxDbGFzcygpLm5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIG1pbmltYWwgcmVzb3VyY2UgY29uZmlndXJhdGlvbiBuZWVkZWQgYnkgdGhlIHN5bmMgcmVzb3VyY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDbGFzc1R5cGV9IFJlc291cmNlQ2xhc3MgLSBTeW5jIHJlc291cmNlIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSBSZXNvdXJjZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgc3luY1Jlc291cmNlQ29uZmlndXJhdGlvbihSZXNvdXJjZUNsYXNzKSB7XG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5Gcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9ufSAqLyAoe1xuICAgICAgYXR0cmlidXRlczogUmVzb3VyY2VDbGFzcy5hdHRyaWJ1dGVzIHx8IHt9LFxuICAgICAgc3luYzoge2VuYWJsZWQ6IHRydWV9XG4gICAgfSlcbiAgfVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers the current sync client.
|
|
3
|
+
* @param {?} client - Configured sync client (or null to clear).
|
|
4
|
+
* @returns {void}
|
|
5
|
+
*/
|
|
6
|
+
export function setCurrentSyncClient(client: unknown): void;
|
|
7
|
+
/**
|
|
8
|
+
* Returns the current sync client.
|
|
9
|
+
* @returns {?} Current sync client.
|
|
10
|
+
*/
|
|
11
|
+
export function currentSyncClient(): unknown;
|
|
12
|
+
//# sourceMappingURL=sync-client-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-client-registry.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client-registry.js"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,6CAHW,OAAC,GACC,IAAI,CAIhB;AAED;;;GAGG;AACH,qCAFa,OAAC,CAMb"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* Registry for the app's current sync client.
|
|
4
|
+
*
|
|
5
|
+
* Kept dependency-free so client-bundled modules (like the query layer) can
|
|
6
|
+
* delegate to a configured sync client without importing the sync stack.
|
|
7
|
+
*/
|
|
8
|
+
/** @type {?} */
|
|
9
|
+
let currentClient = null;
|
|
10
|
+
/**
|
|
11
|
+
* Registers the current sync client.
|
|
12
|
+
* @param {?} client - Configured sync client (or null to clear).
|
|
13
|
+
* @returns {void}
|
|
14
|
+
*/
|
|
15
|
+
export function setCurrentSyncClient(client) {
|
|
16
|
+
currentClient = client;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Returns the current sync client.
|
|
20
|
+
* @returns {?} Current sync client.
|
|
21
|
+
*/
|
|
22
|
+
export function currentSyncClient() {
|
|
23
|
+
if (!currentClient)
|
|
24
|
+
throw new Error("No sync client configured - create a SyncClient and call setCurrent() on it first");
|
|
25
|
+
return currentClient;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLWNsaWVudC1yZWdpc3RyeS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7O0dBS0c7QUFFSCxnQkFBZ0I7QUFDaEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFBO0FBRXhCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBTTtJQUN6QyxhQUFhLEdBQUcsTUFBTSxDQUFBO0FBQ3hCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLElBQUksQ0FBQyxhQUFhO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFBO0lBRXhILE9BQU8sYUFBYSxDQUFBO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBSZWdpc3RyeSBmb3IgdGhlIGFwcCdzIGN1cnJlbnQgc3luYyBjbGllbnQuXG4gKlxuICogS2VwdCBkZXBlbmRlbmN5LWZyZWUgc28gY2xpZW50LWJ1bmRsZWQgbW9kdWxlcyAobGlrZSB0aGUgcXVlcnkgbGF5ZXIpIGNhblxuICogZGVsZWdhdGUgdG8gYSBjb25maWd1cmVkIHN5bmMgY2xpZW50IHdpdGhvdXQgaW1wb3J0aW5nIHRoZSBzeW5jIHN0YWNrLlxuICovXG5cbi8qKiBAdHlwZSB7P30gKi9cbmxldCBjdXJyZW50Q2xpZW50ID0gbnVsbFxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgY3VycmVudCBzeW5jIGNsaWVudC5cbiAqIEBwYXJhbSB7P30gY2xpZW50IC0gQ29uZmlndXJlZCBzeW5jIGNsaWVudCAob3IgbnVsbCB0byBjbGVhcikuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEN1cnJlbnRTeW5jQ2xpZW50KGNsaWVudCkge1xuICBjdXJyZW50Q2xpZW50ID0gY2xpZW50XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBzeW5jIGNsaWVudC5cbiAqIEByZXR1cm5zIHs/fSBDdXJyZW50IHN5bmMgY2xpZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudFN5bmNDbGllbnQoKSB7XG4gIGlmICghY3VycmVudENsaWVudCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBjbGllbnQgY29uZmlndXJlZCAtIGNyZWF0ZSBhIFN5bmNDbGllbnQgYW5kIGNhbGwgc2V0Q3VycmVudCgpIG9uIGl0IGZpcnN0XCIpXG5cbiAgcmV0dXJuIGN1cnJlbnRDbGllbnRcbn1cbiJdfQ==
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-declared sync scope serialized from a model query.
|
|
3
|
+
*/
|
|
4
|
+
export type SerializedSyncScope = {
|
|
5
|
+
/**
|
|
6
|
+
* - Plain attribute conditions from the query.
|
|
7
|
+
*/
|
|
8
|
+
conditions: Record<string, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* - Resource/model name the scope was declared for.
|
|
11
|
+
*/
|
|
12
|
+
resourceType: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Declarative per-resource sync policy.
|
|
16
|
+
*/
|
|
17
|
+
export type SyncClientResourceConfig = {
|
|
18
|
+
/**
|
|
19
|
+
* - Local model class for this resource.
|
|
20
|
+
*/
|
|
21
|
+
modelClass: unknown;
|
|
22
|
+
/**
|
|
23
|
+
* - Pull-apply attribute mapper. Required for resources that receive pulled changes.
|
|
24
|
+
*/
|
|
25
|
+
attributes?: ((args: {
|
|
26
|
+
data: Record<string, unknown>;
|
|
27
|
+
record: unknown;
|
|
28
|
+
sync: import("./sync-api-client-types.js").SyncChangeEnvelope;
|
|
29
|
+
}) => Promise<Record<string, unknown>> | Record<string, unknown>) | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* - Custom pull-apply record resolver.
|
|
32
|
+
*/
|
|
33
|
+
findRecord?: import("./sync-api-client-types.js").SyncResourceConfig["findRecord"];
|
|
34
|
+
/**
|
|
35
|
+
* - Custom pull-apply delete resolver.
|
|
36
|
+
*/
|
|
37
|
+
findRecordForDelete?: import("./sync-api-client-types.js").SyncResourceConfig["findRecordForDelete"];
|
|
38
|
+
/**
|
|
39
|
+
* - Post-apply hook.
|
|
40
|
+
*/
|
|
41
|
+
afterApply?: import("./sync-api-client-types.js").SyncResourceConfig["afterApply"];
|
|
42
|
+
/**
|
|
43
|
+
* - Attributes coerced through sync boolean parsing when queueing.
|
|
44
|
+
*/
|
|
45
|
+
booleanAttributes?: string[] | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* - Attributes stripped from queued payloads.
|
|
48
|
+
*/
|
|
49
|
+
localOnlyAttributes?: string[] | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* - Maps a mutation operation to a sync type. Defaults to the operation name with destroy mapped to "delete".
|
|
52
|
+
*/
|
|
53
|
+
syncType?: ((args: {
|
|
54
|
+
operation: "create" | "update" | "destroy";
|
|
55
|
+
record: unknown;
|
|
56
|
+
}) => string) | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* - Custom queued-payload builder for tracked mutations.
|
|
59
|
+
*/
|
|
60
|
+
trackedData?: ((args: {
|
|
61
|
+
operation: "create" | "update" | "destroy";
|
|
62
|
+
record: unknown;
|
|
63
|
+
}) => Record<string, unknown>) | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* - Enables automatic mutation tracking through model lifecycle callbacks.
|
|
66
|
+
*/
|
|
67
|
+
track?: boolean | {
|
|
68
|
+
operations: Array<"create" | "update" | "destroy">;
|
|
69
|
+
} | undefined;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Declarative sync client configuration.
|
|
73
|
+
*/
|
|
74
|
+
export type SyncClientConfig = {
|
|
75
|
+
/**
|
|
76
|
+
* - Resolves the auth token sent with sync requests.
|
|
77
|
+
*/
|
|
78
|
+
authenticationToken: () => string | Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* - Max syncs per request.
|
|
81
|
+
*/
|
|
82
|
+
batchSize?: number | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* - Configuration owning the scope-store database. Defaults to the current configuration.
|
|
85
|
+
*/
|
|
86
|
+
configuration?: import("../configuration.js").default | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* - Connectivity gate for pulls and replays. Defaults to always online.
|
|
89
|
+
*/
|
|
90
|
+
isOnline?: (() => boolean | Promise<boolean>) | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* - Seeds a newly declared scope's cursor (e.g. from a pre-scope cursor store) so devices don't re-pull everything.
|
|
93
|
+
*/
|
|
94
|
+
legacyCursor?: ((args: {
|
|
95
|
+
scope: SerializedSyncScope;
|
|
96
|
+
}) => string | null | Promise<string | null>) | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* - Reports background replay/pull failures. Defaults to rethrowing.
|
|
99
|
+
*/
|
|
100
|
+
onError?: ((error: Error) => void) | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* - Posts one changes request.
|
|
103
|
+
*/
|
|
104
|
+
postChanges: (payload: import("./sync-api-client-types.js").SyncChangesRequest & {
|
|
105
|
+
scope: SerializedSyncScope;
|
|
106
|
+
}) => Promise<import("./sync-api-client-types.js").SyncChangesResponse>;
|
|
107
|
+
/**
|
|
108
|
+
* - Posts one replay request.
|
|
109
|
+
*/
|
|
110
|
+
postReplay: (payload: {
|
|
111
|
+
authenticationToken: string;
|
|
112
|
+
syncs: Array<Record<string, unknown>>;
|
|
113
|
+
}) => Promise<import("./sync-api-client-types.js").SyncReplayResponse>;
|
|
114
|
+
/**
|
|
115
|
+
* - Declarative resource policies keyed by resource/model name.
|
|
116
|
+
*/
|
|
117
|
+
resources: Record<string, SyncClientResourceConfig>;
|
|
118
|
+
/**
|
|
119
|
+
* - Scope store override.
|
|
120
|
+
*/
|
|
121
|
+
scopeStore?: import("./sync-scope-store.js").default | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* - Local pending-sync model class.
|
|
124
|
+
*/
|
|
125
|
+
syncModel: unknown;
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=sync-client-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-client-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client-types.js"],"names":[],"mappings":";;;;;;;gBAKc,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;kBACjB,MAAM;;;;;;;;;gBAMN,OAAC;;;;;;;;;;;;iBAED,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;0BACrE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,qBAAqB,CAAC;;;;iBAC9E,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;;;;;;;;;uBAG9D;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM;;;;0BAClE;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;;oBAC7D,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;;;;;;;;;;yBAM7D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;sBAGxB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;;;;2BACzB;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAC,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;;uBACtE,KAAK,KAAK,IAAI;;;;iBACtB,CAAC,OAAO,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,GAAG;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAC,KAAK,OAAO,CAAC,OAAO,4BAA4B,EAAE,mBAAmB,CAAC;;;;gBACtK,CAAC,OAAO,EAAE;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAAA;KAAC,KAAK,OAAO,CAAC,OAAO,4BAA4B,EAAE,kBAAkB,CAAC;;;;eAC7I,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC;;;;;;;;eAExC,OAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLWNsaWVudC10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQ2xpZW50LWRlY2xhcmVkIHN5bmMgc2NvcGUgc2VyaWFsaXplZCBmcm9tIGEgbW9kZWwgcXVlcnkuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTZXJpYWxpemVkU3luY1Njb3BlXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsID8+fSBjb25kaXRpb25zIC0gUGxhaW4gYXR0cmlidXRlIGNvbmRpdGlvbnMgZnJvbSB0aGUgcXVlcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VUeXBlIC0gUmVzb3VyY2UvbW9kZWwgbmFtZSB0aGUgc2NvcGUgd2FzIGRlY2xhcmVkIGZvci5cbiAqL1xuXG4vKipcbiAqIERlY2xhcmF0aXZlIHBlci1yZXNvdXJjZSBzeW5jIHBvbGljeS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNDbGllbnRSZXNvdXJjZUNvbmZpZ1xuICogQHByb3BlcnR5IHs/fSBtb2RlbENsYXNzIC0gTG9jYWwgbW9kZWwgY2xhc3MgZm9yIHRoaXMgcmVzb3VyY2UuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImF0dHJpYnV0ZXNcIl19IFthdHRyaWJ1dGVzXSAtIFB1bGwtYXBwbHkgYXR0cmlidXRlIG1hcHBlci4gUmVxdWlyZWQgZm9yIHJlc291cmNlcyB0aGF0IHJlY2VpdmUgcHVsbGVkIGNoYW5nZXMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImZpbmRSZWNvcmRcIl19IFtmaW5kUmVjb3JkXSAtIEN1c3RvbSBwdWxsLWFwcGx5IHJlY29yZCByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiZmluZFJlY29yZEZvckRlbGV0ZVwiXX0gW2ZpbmRSZWNvcmRGb3JEZWxldGVdIC0gQ3VzdG9tIHB1bGwtYXBwbHkgZGVsZXRlIHJlc29sdmVyLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJhZnRlckFwcGx5XCJdfSBbYWZ0ZXJBcHBseV0gLSBQb3N0LWFwcGx5IGhvb2suXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbYm9vbGVhbkF0dHJpYnV0ZXNdIC0gQXR0cmlidXRlcyBjb2VyY2VkIHRocm91Z2ggc3luYyBib29sZWFuIHBhcnNpbmcgd2hlbiBxdWV1ZWluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtsb2NhbE9ubHlBdHRyaWJ1dGVzXSAtIEF0dHJpYnV0ZXMgc3RyaXBwZWQgZnJvbSBxdWV1ZWQgcGF5bG9hZHMuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBzdHJpbmd9IFtzeW5jVHlwZV0gLSBNYXBzIGEgbXV0YXRpb24gb3BlcmF0aW9uIHRvIGEgc3luYyB0eXBlLiBEZWZhdWx0cyB0byB0aGUgb3BlcmF0aW9uIG5hbWUgd2l0aCBkZXN0cm95IG1hcHBlZCB0byBcImRlbGV0ZVwiLlxuICogQHByb3BlcnR5IHsoYXJnczoge29wZXJhdGlvbjogXCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIiwgcmVjb3JkOiA/fSkgPT4gUmVjb3JkPHN0cmluZywgPz59IFt0cmFja2VkRGF0YV0gLSBDdXN0b20gcXVldWVkLXBheWxvYWQgYnVpbGRlciBmb3IgdHJhY2tlZCBtdXRhdGlvbnMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCB7b3BlcmF0aW9uczogQXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59fSBbdHJhY2tdIC0gRW5hYmxlcyBhdXRvbWF0aWMgbXV0YXRpb24gdHJhY2tpbmcgdGhyb3VnaCBtb2RlbCBsaWZlY3ljbGUgY2FsbGJhY2tzLlxuICovXG5cbi8qKlxuICogRGVjbGFyYXRpdmUgc3luYyBjbGllbnQgY29uZmlndXJhdGlvbi5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNDbGllbnRDb25maWdcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+fSBhdXRoZW50aWNhdGlvblRva2VuIC0gUmVzb2x2ZXMgdGhlIGF1dGggdG9rZW4gc2VudCB3aXRoIHN5bmMgcmVxdWVzdHMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2JhdGNoU2l6ZV0gLSBNYXggc3luY3MgcGVyIHJlcXVlc3QuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2NvbmZpZ3VyYXRpb25dIC0gQ29uZmlndXJhdGlvbiBvd25pbmcgdGhlIHNjb3BlLXN0b3JlIGRhdGFiYXNlLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHsoKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPn0gW2lzT25saW5lXSAtIENvbm5lY3Rpdml0eSBnYXRlIGZvciBwdWxscyBhbmQgcmVwbGF5cy4gRGVmYXVsdHMgdG8gYWx3YXlzIG9ubGluZS5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtzY29wZTogU2VyaWFsaXplZFN5bmNTY29wZX0pID0+IHN0cmluZyB8IG51bGwgfCBQcm9taXNlPHN0cmluZyB8IG51bGw+fSBbbGVnYWN5Q3Vyc29yXSAtIFNlZWRzIGEgbmV3bHkgZGVjbGFyZWQgc2NvcGUncyBjdXJzb3IgKGUuZy4gZnJvbSBhIHByZS1zY29wZSBjdXJzb3Igc3RvcmUpIHNvIGRldmljZXMgZG9uJ3QgcmUtcHVsbCBldmVyeXRoaW5nLlxuICogQHByb3BlcnR5IHsoZXJyb3I6IEVycm9yKSA9PiB2b2lkfSBbb25FcnJvcl0gLSBSZXBvcnRzIGJhY2tncm91bmQgcmVwbGF5L3B1bGwgZmFpbHVyZXMuIERlZmF1bHRzIHRvIHJldGhyb3dpbmcuXG4gKiBAcHJvcGVydHkgeyhwYXlsb2FkOiBpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jQ2hhbmdlc1JlcXVlc3QgJiB7c2NvcGU6IFNlcmlhbGl6ZWRTeW5jU2NvcGV9KSA9PiBQcm9taXNlPGltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNDaGFuZ2VzUmVzcG9uc2U+fSBwb3N0Q2hhbmdlcyAtIFBvc3RzIG9uZSBjaGFuZ2VzIHJlcXVlc3QuXG4gKiBAcHJvcGVydHkgeyhwYXlsb2FkOiB7YXV0aGVudGljYXRpb25Ub2tlbjogc3RyaW5nLCBzeW5jczogQXJyYXk8UmVjb3JkPHN0cmluZywgPz4+fSkgPT4gUHJvbWlzZTxpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVwbGF5UmVzcG9uc2U+fSBwb3N0UmVwbGF5IC0gUG9zdHMgb25lIHJlcGxheSByZXF1ZXN0LlxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBTeW5jQ2xpZW50UmVzb3VyY2VDb25maWc+fSByZXNvdXJjZXMgLSBEZWNsYXJhdGl2ZSByZXNvdXJjZSBwb2xpY2llcyBrZXllZCBieSByZXNvdXJjZS9tb2RlbCBuYW1lLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtc2NvcGUtc3RvcmUuanNcIikuZGVmYXVsdH0gW3Njb3BlU3RvcmVdIC0gU2NvcGUgc3RvcmUgb3ZlcnJpZGUuXG4gKiBAcHJvcGVydHkgez99IHN5bmNNb2RlbCAtIExvY2FsIHBlbmRpbmctc3luYyBtb2RlbCBjbGFzcy5cbiAqL1xuXG5leHBvcnQge31cbiJdfQ==
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declares a sync scope on the current sync client.
|
|
3
|
+
* @param {import("../database/query/model-class-query.js").default<?>} query - Query declaring the sync scope.
|
|
4
|
+
* @returns {Promise<{scope: import("./sync-client-types.js").SerializedSyncScope, pulled: import("./sync-api-client-types.js").SyncChangesResult | null}>} Declared scope and pull result.
|
|
5
|
+
*/
|
|
6
|
+
export function sync(query: import("../database/query/model-class-query.js").default<unknown>): Promise<{
|
|
7
|
+
scope: import("./sync-client-types.js").SerializedSyncScope;
|
|
8
|
+
pulled: import("./sync-api-client-types.js").SyncChangesResult | null;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Declarative client-side sync driver.
|
|
12
|
+
*
|
|
13
|
+
* Apps configure resources, transport, auth, and connectivity once; Velocious
|
|
14
|
+
* owns scope persistence, per-scope cursors, pull paging/apply, local queueing,
|
|
15
|
+
* and online-gated replay. Declare sync interest from queries:
|
|
16
|
+
*
|
|
17
|
+
* const syncClient = new SyncClient({...})
|
|
18
|
+
* syncClient.setCurrent()
|
|
19
|
+
* await syncClient.sync(Event.where({partnerId}))
|
|
20
|
+
*/
|
|
21
|
+
export default class SyncClient {
|
|
22
|
+
/**
|
|
23
|
+
* Returns the app's current sync client.
|
|
24
|
+
* @returns {SyncClient} Current sync client.
|
|
25
|
+
*/
|
|
26
|
+
static current(): SyncClient;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a declarative sync client.
|
|
29
|
+
* @param {import("./sync-client-types.js").SyncClientConfig} config - Sync client configuration.
|
|
30
|
+
*/
|
|
31
|
+
constructor(config: import("./sync-client-types.js").SyncClientConfig);
|
|
32
|
+
config: import("./sync-client-types.js").SyncClientConfig;
|
|
33
|
+
_clientNumber: number;
|
|
34
|
+
/** @type {import("./sync-scope-store.js").default | null} */
|
|
35
|
+
_scopeStore: import("./sync-scope-store.js").default | null;
|
|
36
|
+
/** @type {Promise<void> | null} */
|
|
37
|
+
_scheduledReplay: Promise<void> | null;
|
|
38
|
+
/** @type {Record<string, import("./sync-api-client-types.js").SyncResourceConfig> | null} */
|
|
39
|
+
_pullResourceConfigs: Record<string, import("./sync-api-client-types.js").SyncResourceConfig> | null;
|
|
40
|
+
/** @type {Array<{callback: (record: ?) => Promise<void>, callbackName: "afterCreate" | "afterUpdate" | "afterDestroy", modelClass: ?}>} */
|
|
41
|
+
_trackedCallbacks: Array<{
|
|
42
|
+
callback: (record: unknown) => Promise<void>;
|
|
43
|
+
callbackName: "afterCreate" | "afterUpdate" | "afterDestroy";
|
|
44
|
+
modelClass: unknown;
|
|
45
|
+
}>;
|
|
46
|
+
/** @type {WeakSet<object>} */
|
|
47
|
+
_remoteApplyRecords: WeakSet<object>;
|
|
48
|
+
_started: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Registers automatic mutation tracking for every resource with `track` enabled:
|
|
51
|
+
* local model creates/updates/destroys queue pending sync rows and schedule an
|
|
52
|
+
* immediate replay attempt, without app-side queue calls.
|
|
53
|
+
* @returns {Promise<void>}
|
|
54
|
+
*/
|
|
55
|
+
start(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Unregisters all tracking callbacks (tests, sign-out, hot reload).
|
|
58
|
+
* @returns {void}
|
|
59
|
+
*/
|
|
60
|
+
stop(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Resolves and validates the tracked operations for a resource config.
|
|
63
|
+
* @param {{resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig, resourceType: string}} args - Resource config and name.
|
|
64
|
+
* @returns {Array<"create" | "update" | "destroy">} Tracked operations.
|
|
65
|
+
*/
|
|
66
|
+
trackedOperations({ resourceConfig, resourceType }: {
|
|
67
|
+
resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig;
|
|
68
|
+
resourceType: string;
|
|
69
|
+
}): Array<"create" | "update" | "destroy">;
|
|
70
|
+
/**
|
|
71
|
+
* Builds the lifecycle callback queueing one tracked mutation.
|
|
72
|
+
* @param {{operation: "create" | "update" | "destroy", resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig}} args - Operation and resource config.
|
|
73
|
+
* @returns {(record: ?) => Promise<void>} Lifecycle callback.
|
|
74
|
+
*/
|
|
75
|
+
trackedMutationCallback({ operation, resourceConfig }: {
|
|
76
|
+
operation: "create" | "update" | "destroy";
|
|
77
|
+
resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig;
|
|
78
|
+
}): (record: unknown) => Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Whether a record is currently being written by pull-apply (echo suppression).
|
|
81
|
+
* @param {?} record - Local model record.
|
|
82
|
+
* @returns {boolean} Whether the record write originates from a remote change.
|
|
83
|
+
*/
|
|
84
|
+
isRemoteApply(record: unknown): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Registers this client as the app's current sync client.
|
|
87
|
+
* @returns {void}
|
|
88
|
+
*/
|
|
89
|
+
setCurrent(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Declares (or re-activates) a sync scope from a model query and pulls it when online.
|
|
92
|
+
* @param {import("../database/query/model-class-query.js").default<?>} query - Query declaring the sync scope.
|
|
93
|
+
* @returns {Promise<{scope: import("./sync-client-types.js").SerializedSyncScope, pulled: import("./sync-api-client-types.js").SyncChangesResult | null}>} Declared scope and pull result (null while offline).
|
|
94
|
+
*/
|
|
95
|
+
sync(query: import("../database/query/model-class-query.js").default<unknown>): Promise<{
|
|
96
|
+
scope: import("./sync-client-types.js").SerializedSyncScope;
|
|
97
|
+
pulled: import("./sync-api-client-types.js").SyncChangesResult | null;
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* Deactivates the sync scope declared by a model query.
|
|
101
|
+
* @param {import("../database/query/model-class-query.js").default<?>} query - Query whose scope should stop syncing.
|
|
102
|
+
* @returns {Promise<void>}
|
|
103
|
+
*/
|
|
104
|
+
unsync(query: import("../database/query/model-class-query.js").default<unknown>): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Pulls changes for every active scope with per-scope cursors (single-flighted, online-gated).
|
|
107
|
+
* @returns {Promise<import("./sync-api-client-types.js").SyncChangesResult | null>} Combined pull result, or null while offline.
|
|
108
|
+
*/
|
|
109
|
+
pull(): Promise<import("./sync-api-client-types.js").SyncChangesResult | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Queues a local model change as a pending sync row and schedules an immediate
|
|
112
|
+
* replay attempt (kept pending while offline or when the backend rejects it).
|
|
113
|
+
* @param {{resource: ?, data?: Record<string, ?>, syncType?: string}} args - Queue args.
|
|
114
|
+
* @returns {Promise<?>} Pending local sync row.
|
|
115
|
+
*/
|
|
116
|
+
queue({ data, resource, syncType }: {
|
|
117
|
+
resource: unknown;
|
|
118
|
+
data?: Record<string, unknown>;
|
|
119
|
+
syncType?: string;
|
|
120
|
+
}): Promise<unknown>;
|
|
121
|
+
/**
|
|
122
|
+
* Drains pending local sync rows to the backend (single-flighted, online-gated).
|
|
123
|
+
* Rows are only marked successful after the backend acknowledges them.
|
|
124
|
+
* @returns {Promise<void>}
|
|
125
|
+
*/
|
|
126
|
+
replayPending(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Schedules a background replay attempt without blocking the caller.
|
|
129
|
+
* Failures go to config.onError (or rethrow when none is configured).
|
|
130
|
+
* @returns {void}
|
|
131
|
+
*/
|
|
132
|
+
scheduleReplay(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Awaits the last scheduled background replay (useful in tests and shutdown flows).
|
|
135
|
+
* @returns {Promise<void>}
|
|
136
|
+
*/
|
|
137
|
+
waitForScheduledReplay(): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Reports a background sync failure.
|
|
140
|
+
* @param {Error} error - Background failure.
|
|
141
|
+
* @returns {void}
|
|
142
|
+
*/
|
|
143
|
+
reportError(error: Error): void;
|
|
144
|
+
/**
|
|
145
|
+
* Resolves connectivity through the configured gate.
|
|
146
|
+
* @returns {Promise<boolean>} Whether the backend is considered reachable.
|
|
147
|
+
*/
|
|
148
|
+
isOnline(): Promise<boolean>;
|
|
149
|
+
/**
|
|
150
|
+
* Returns the scope store backing declared scopes and cursors.
|
|
151
|
+
* @returns {import("./sync-scope-store.js").default} Scope store.
|
|
152
|
+
*/
|
|
153
|
+
scopeStore(): import("./sync-scope-store.js").default;
|
|
154
|
+
/**
|
|
155
|
+
* Resolves the declared resource config for a local record.
|
|
156
|
+
* @param {?} resource - Local model record.
|
|
157
|
+
* @returns {import("./sync-client-types.js").SyncClientResourceConfig} Declared resource config.
|
|
158
|
+
*/
|
|
159
|
+
resourceConfigFor(resource: unknown): import("./sync-client-types.js").SyncClientResourceConfig;
|
|
160
|
+
/**
|
|
161
|
+
* Resolves the sync type for a mutation through the resource config.
|
|
162
|
+
* @param {{operation: "create" | "update" | "destroy", record: ?, resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig}} args - Mutation args.
|
|
163
|
+
* @returns {string} Sync type.
|
|
164
|
+
*/
|
|
165
|
+
defaultSyncType({ operation, record, resourceConfig }: {
|
|
166
|
+
operation: "create" | "update" | "destroy";
|
|
167
|
+
record: unknown;
|
|
168
|
+
resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig;
|
|
169
|
+
}): string;
|
|
170
|
+
/**
|
|
171
|
+
* Derives the pull-apply resource configs from the declared resources.
|
|
172
|
+
* @returns {Record<string, import("./sync-api-client-types.js").SyncResourceConfig>} Pull-apply resource configs.
|
|
173
|
+
*/
|
|
174
|
+
pullResourceConfigs(): Record<string, import("./sync-api-client-types.js").SyncResourceConfig>;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=sync-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client.js"],"names":[],"mappings":"AAyaA;;;;GAIG;AACH,4BAHW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,GACzD,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,wBAAwB,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAC,CAAC,CAIzJ;AAhaD;;;;;;;;;;GAUG;AACH;IA0IE;;;OAGG;IACH,kBAFa,UAAU,CAItB;IA/ID;;;OAGG;IACH,oBAFW,OAAO,wBAAwB,EAAE,gBAAgB,EAiC3D;IAbC,0DAAoB;IACpB,sBAAoC;IACpC,6DAA6D;IAC7D,aADW,OAAO,uBAAuB,EAAE,OAAO,GAAG,IAAI,CACb;IAC5C,mCAAmC;IACnC,kBADW,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CACH;IAC5B,6FAA6F;IAC7F,sBADW,MAAM,CAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,GAAG,IAAI,CACzD;IAChC,2IAA2I;IAC3I,mBADW,KAAK,CAAC;QAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,YAAY,EAAE,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;QAAC,UAAU,EAAE,OAAC,CAAA;KAAC,CAAC,CAC5G;IAC3B,8BAA8B;IAC9B,qBADW,OAAO,CAAC,MAAM,CAAC,CACc;IACxC,kBAAqB;IAGvB;;;;;OAKG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;;OAGG;IACH,QAFa,IAAI,CAShB;IAED;;;;OAIG;IACH,oDAHW;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,GAC/F,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAmBlD;IAED;;;;OAIG;IACH,uDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAA;KAAC,GACrH,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAiBxC;IAED;;;;OAIG;IACH,sBAHW,OAAC,GACC,OAAO,CAInB;IAED;;;OAGG;IACH,cAFa,IAAI,CAIhB;IAUD;;;;OAIG;IACH,YAHW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,GACzD,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,wBAAwB,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAA;KAAC,CAAC,CAezJ;IAED;;;;OAIG;IACH,cAHW,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,OAAO,4BAA4B,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAoElF;IAED;;;;;OAKG;IACH,oCAHW;QAAC,QAAQ,EAAE,OAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,GACxD,OAAO,CAAC,OAAC,CAAC,CAgBtB;IAED;;;;OAIG;IACH,iBAFa,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;;OAIG;IACH,kBAFa,IAAI,CAUhB;IAED;;;OAGG;IACH,0BAFa,OAAO,CAAC,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,mBAHW,KAAK,GACH,IAAI,CAShB;IAED;;;OAGG;IACH,YAFa,OAAO,CAAC,OAAO,CAAC,CAM5B;IAED;;;OAGG;IACH,cAFa,OAAO,uBAAuB,EAAE,OAAO,CAMnD;IAED;;;;OAIG;IACH,4BAHW,OAAC,GACC,OAAO,wBAAwB,EAAE,wBAAwB,CAerE;IAED;;;;OAIG;IACH,uDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAC;QAAC,cAAc,EAAE,OAAO,wBAAwB,EAAE,wBAAwB,CAAA;KAAC,GAChI,MAAM,CAOlB;IAED;;;OAGG;IACH,uBAFa,MAAM,CAAC,MAAM,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,CAiBnF;CACF"}
|