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.
Files changed (103) hide show
  1. package/build/application.js +3 -0
  2. package/build/cli/commands/db/tenants/create.js +7 -5
  3. package/build/cli/commands/db/tenants/drop.js +6 -6
  4. package/build/configuration-types.js +8 -0
  5. package/build/configuration.js +29 -0
  6. package/build/database/query/index.js +30 -0
  7. package/build/database/query/model-class-query.js +17 -0
  8. package/build/database/record/index.js +16 -0
  9. package/build/src/application.d.ts.map +1 -1
  10. package/build/src/application.js +3 -1
  11. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  12. package/build/src/cli/commands/db/tenants/create.js +8 -5
  13. package/build/src/cli/commands/db/tenants/drop.d.ts +1 -1
  14. package/build/src/cli/commands/db/tenants/drop.d.ts.map +1 -1
  15. package/build/src/cli/commands/db/tenants/drop.js +7 -6
  16. package/build/src/configuration-types.d.ts +24 -0
  17. package/build/src/configuration-types.d.ts.map +1 -1
  18. package/build/src/configuration-types.js +8 -1
  19. package/build/src/configuration.d.ts +6 -0
  20. package/build/src/configuration.d.ts.map +1 -1
  21. package/build/src/configuration.js +26 -1
  22. package/build/src/database/query/index.d.ts +25 -0
  23. package/build/src/database/query/index.d.ts.map +1 -1
  24. package/build/src/database/query/index.js +26 -1
  25. package/build/src/database/query/model-class-query.d.ts +10 -0
  26. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  27. package/build/src/database/query/model-class-query.js +16 -1
  28. package/build/src/database/record/index.d.ts +7 -0
  29. package/build/src/database/record/index.d.ts.map +1 -1
  30. package/build/src/database/record/index.js +15 -1
  31. package/build/src/sync/query-scope.d.ts +18 -0
  32. package/build/src/sync/query-scope.d.ts.map +1 -0
  33. package/build/src/sync/query-scope.js +77 -0
  34. package/build/src/sync/server-change-feed.d.ts.map +1 -1
  35. package/build/src/sync/server-change-feed.js +2 -24
  36. package/build/src/sync/stable-json.d.ts +9 -0
  37. package/build/src/sync/stable-json.d.ts.map +1 -0
  38. package/build/src/sync/stable-json.js +27 -0
  39. package/build/src/sync/sync-api-client.d.ts +185 -5
  40. package/build/src/sync/sync-api-client.d.ts.map +1 -1
  41. package/build/src/sync/sync-api-client.js +309 -17
  42. package/build/src/sync/sync-api-controller.d.ts +8 -0
  43. package/build/src/sync/sync-api-controller.d.ts.map +1 -1
  44. package/build/src/sync/sync-api-controller.js +17 -1
  45. package/build/src/sync/sync-client-registry.d.ts +12 -0
  46. package/build/src/sync/sync-client-registry.d.ts.map +1 -0
  47. package/build/src/sync/sync-client-registry.js +27 -0
  48. package/build/src/sync/sync-client-types.d.ts +127 -0
  49. package/build/src/sync/sync-client-types.d.ts.map +1 -0
  50. package/build/src/sync/sync-client-types.js +3 -0
  51. package/build/src/sync/sync-client.d.ts +176 -0
  52. package/build/src/sync/sync-client.d.ts.map +1 -0
  53. package/build/src/sync/sync-client.js +380 -0
  54. package/build/src/sync/sync-envelope-replay-service.d.ts +38 -4
  55. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  56. package/build/src/sync/sync-envelope-replay-service.js +73 -6
  57. package/build/src/sync/sync-resource-base.d.ts +98 -0
  58. package/build/src/sync/sync-resource-base.d.ts.map +1 -0
  59. package/build/src/sync/sync-resource-base.js +122 -0
  60. package/build/src/sync/sync-scope-store.d.ts +128 -0
  61. package/build/src/sync/sync-scope-store.d.ts.map +1 -0
  62. package/build/src/sync/sync-scope-store.js +282 -0
  63. package/build/src/tenants/default-tenant-database-provisioning.d.ts +21 -0
  64. package/build/src/tenants/default-tenant-database-provisioning.d.ts.map +1 -0
  65. package/build/src/tenants/default-tenant-database-provisioning.js +106 -0
  66. package/build/src/tenants/tenant.d.ts.map +1 -1
  67. package/build/src/tenants/tenant.js +6 -5
  68. package/build/sync/query-scope.js +84 -0
  69. package/build/sync/server-change-feed.js +1 -25
  70. package/build/sync/stable-json.js +28 -0
  71. package/build/sync/sync-api-client.js +331 -17
  72. package/build/sync/sync-api-controller.js +20 -0
  73. package/build/sync/sync-client-registry.js +30 -0
  74. package/build/sync/sync-client-types.js +41 -0
  75. package/build/sync/sync-client.js +433 -0
  76. package/build/sync/sync-envelope-replay-service.js +77 -5
  77. package/build/sync/sync-resource-base.js +143 -0
  78. package/build/sync/sync-scope-store.js +327 -0
  79. package/build/tenants/default-tenant-database-provisioning.js +124 -0
  80. package/build/tenants/tenant.js +5 -5
  81. package/build/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +1 -1
  83. package/src/application.js +3 -0
  84. package/src/cli/commands/db/tenants/create.js +7 -5
  85. package/src/cli/commands/db/tenants/drop.js +6 -6
  86. package/src/configuration-types.js +8 -0
  87. package/src/configuration.js +29 -0
  88. package/src/database/query/index.js +30 -0
  89. package/src/database/query/model-class-query.js +17 -0
  90. package/src/database/record/index.js +16 -0
  91. package/src/sync/query-scope.js +84 -0
  92. package/src/sync/server-change-feed.js +1 -25
  93. package/src/sync/stable-json.js +28 -0
  94. package/src/sync/sync-api-client.js +331 -17
  95. package/src/sync/sync-api-controller.js +20 -0
  96. package/src/sync/sync-client-registry.js +30 -0
  97. package/src/sync/sync-client-types.js +41 -0
  98. package/src/sync/sync-client.js +433 -0
  99. package/src/sync/sync-envelope-replay-service.js +77 -5
  100. package/src/sync/sync-resource-base.js +143 -0
  101. package/src/sync/sync-scope-store.js +327 -0
  102. package/src/tenants/default-tenant-database-provisioning.js +124 -0
  103. 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":"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"}