velocious 1.0.503 → 1.0.504

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 (60) hide show
  1. package/build/application.js +2 -0
  2. package/build/configuration-types.js +8 -8
  3. package/build/configuration.js +2 -2
  4. package/build/src/application.d.ts.map +1 -1
  5. package/build/src/application.js +3 -1
  6. package/build/src/configuration-types.d.ts +17 -17
  7. package/build/src/configuration-types.d.ts.map +1 -1
  8. package/build/src/configuration-types.js +9 -9
  9. package/build/src/configuration.d.ts +4 -4
  10. package/build/src/configuration.d.ts.map +1 -1
  11. package/build/src/configuration.js +3 -3
  12. package/build/src/sync/sync-channel-name.d.ts +9 -0
  13. package/build/src/sync/sync-channel-name.d.ts.map +1 -0
  14. package/build/src/sync/sync-channel-name.js +10 -0
  15. package/build/src/sync/sync-client-types.d.ts +10 -7
  16. package/build/src/sync/sync-client-types.d.ts.map +1 -1
  17. package/build/src/sync/sync-client-types.js +1 -1
  18. package/build/src/sync/sync-client.d.ts +1 -1
  19. package/build/src/sync/sync-client.js +2 -2
  20. package/build/src/sync/sync-model-change-feed-service.d.ts +6 -1
  21. package/build/src/sync/sync-model-change-feed-service.d.ts.map +1 -1
  22. package/build/src/sync/sync-model-change-feed-service.js +15 -4
  23. package/build/src/sync/sync-publisher-types.d.ts +53 -21
  24. package/build/src/sync/sync-publisher-types.d.ts.map +1 -1
  25. package/build/src/sync/sync-publisher-types.js +1 -1
  26. package/build/src/sync/sync-publisher.d.ts +32 -9
  27. package/build/src/sync/sync-publisher.d.ts.map +1 -1
  28. package/build/src/sync/sync-publisher.js +170 -37
  29. package/build/src/sync/sync-realtime-bridge.d.ts +33 -10
  30. package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -1
  31. package/build/src/sync/sync-realtime-bridge.js +51 -12
  32. package/build/src/sync/sync-scope-attributes.d.ts +15 -0
  33. package/build/src/sync/sync-scope-attributes.d.ts.map +1 -0
  34. package/build/src/sync/sync-scope-attributes.js +24 -0
  35. package/build/src/sync/sync-websocket-channel.d.ts +58 -0
  36. package/build/src/sync/sync-websocket-channel.d.ts.map +1 -0
  37. package/build/src/sync/sync-websocket-channel.js +131 -0
  38. package/build/sync/sync-channel-name.js +10 -0
  39. package/build/sync/sync-client-types.js +12 -6
  40. package/build/sync/sync-client.js +1 -1
  41. package/build/sync/sync-model-change-feed-service.js +17 -3
  42. package/build/sync/sync-publisher-types.js +32 -12
  43. package/build/sync/sync-publisher.js +192 -41
  44. package/build/sync/sync-realtime-bridge.js +56 -11
  45. package/build/sync/sync-scope-attributes.js +26 -0
  46. package/build/sync/sync-websocket-channel.js +146 -0
  47. package/build/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/src/application.js +2 -0
  50. package/src/configuration-types.js +8 -8
  51. package/src/configuration.js +2 -2
  52. package/src/sync/sync-channel-name.js +10 -0
  53. package/src/sync/sync-client-types.js +12 -6
  54. package/src/sync/sync-client.js +1 -1
  55. package/src/sync/sync-model-change-feed-service.js +17 -3
  56. package/src/sync/sync-publisher-types.js +32 -12
  57. package/src/sync/sync-publisher.js +192 -41
  58. package/src/sync/sync-realtime-bridge.js +56 -11
  59. package/src/sync/sync-scope-attributes.js +26 -0
  60. package/src/sync/sync-websocket-channel.js +146 -0
@@ -1,5 +1,6 @@
1
1
  // @ts-check
2
2
  import VelociousError from "../velocious-error.js";
3
+ import { declaredSyncScopeAttributes } from "./sync-scope-attributes.js";
3
4
  /**
4
5
  * Generic cursor-paginated change feed over an app-owned sync/change model.
5
6
  *
@@ -149,14 +150,20 @@ export default class SyncModelChangeFeedService {
149
150
  return { id: String(this.recordValue(record, "id")), serverSequence: Number(this.recordValue(record, "serverSequence")), updatedAt: this.isoDate(this.recordValue(record, "updatedAt")) };
150
151
  }
151
152
  /**
152
- * Serializes a record using the standard sync envelope shape.
153
+ * Serializes a record using the standard sync envelope shape plus the sync
154
+ * model's declared scope-partition attributes (`static syncScopeAttributes`),
155
+ * each emitted under its own attribute name. Models declaring no scope
156
+ * attributes keep the deprecated 1.0.503 wire and emit `eventId`. Keys are
157
+ * sorted so a declared `["eventId"]` partition stays byte-identical with the
158
+ * 1.0.503 wire.
153
159
  * @param {?} record - Sync/change record.
154
160
  * @returns {Record<string, unknown>} Default serialized row.
155
161
  */
156
162
  defaultSerializeRecord(record) {
157
- return {
163
+ const scopeAttributes = declaredSyncScopeAttributes(this.modelClass);
164
+ /** @type {Record<string, unknown>} */
165
+ const serialized = {
158
166
  data: this.recordData(record),
159
- eventId: this.recordValue(record, "eventId"),
160
167
  id: this.recordValue(record, "id"),
161
168
  resourceId: this.recordValue(record, "resourceId"),
162
169
  resourceType: this.recordValue(record, "resourceType"),
@@ -164,6 +171,10 @@ export default class SyncModelChangeFeedService {
164
171
  syncType: this.recordValue(record, "syncType"),
165
172
  updatedAt: this.isoDate(this.recordValue(record, "updatedAt"))
166
173
  };
174
+ for (const scopeAttribute of scopeAttributes || ["eventId"]) {
175
+ serialized[scopeAttribute] = this.recordValue(record, scopeAttribute);
176
+ }
177
+ return Object.fromEntries(Object.entries(serialized).sort(([leftKey], [rightKey]) => leftKey.localeCompare(rightKey)));
167
178
  }
168
179
  /**
169
180
  * Reads and parses the record data payload.
@@ -209,4 +220,4 @@ export default class SyncModelChangeFeedService {
209
220
  return date.toISOString();
210
221
  }
211
222
  }
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1tb2RlbC1jaGFuZ2UtZmVlZC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N5bmMvc3luYy1tb2RlbC1jaGFuZ2UtZmVlZC1zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qzs7Ozs7Ozs7O09BU0c7SUFDSCxZQUFZLEVBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBQztRQUNqRyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUE7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFFakQsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUs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QVcsRUFBRSxDQUFBO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgVmVsb2Npb3VzRXJyb3IgZnJvbSBcIi4uL3ZlbG9jaW91cy1lcnJvci5qc1wiXG5cbi8qKlxuICogR2VuZXJpYyBjdXJzb3ItcGFnaW5hdGVkIGNoYW5nZSBmZWVkIG92ZXIgYW4gYXBwLW93bmVkIHN5bmMvY2hhbmdlIG1vZGVsLlxuICpcbiAqIEFwcHMgcHJvdmlkZSB0aGUgbW9kZWwgYW5kIG9wdGlvbmFsIHNjb3Bpbmcvc2VyaWFsaXphdGlvbiBob29rcy4gVmVsb2Npb3VzIG93bnNcbiAqIGN1cnNvciBwYXJzaW5nLCBzbmFwc2hvdCBoaWdoLXdhdGVyIHJlc29sdXRpb24sIHN0YWJsZSBvcmRlcmluZywgcGFnZSBsaW1pdHMsXG4gKiBhbmQgcmVzcG9uc2Ugc2hhcGUgZm9yIGAvdmVsb2Npb3VzL3N5bmMvY2hhbmdlc2Agc3R5bGUgZW5kcG9pbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW5jTW9kZWxDaGFuZ2VGZWVkU2VydmljZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZ2VuZXJpYyBzeW5jLW1vZGVsIGNoYW5nZS1mZWVkIHNlcnZpY2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gU2VydmljZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBTeW5jL2NoYW5nZSBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gYXJncy5wYXJhbXMgLSBSZXF1ZXN0IHBhcmFtcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmRlZmF1bHRMaW1pdF0gLSBEZWZhdWx0IHBhZ2Ugc2l6ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heExpbWl0XSAtIE1heGltdW0gcGFnZSBzaXplLlxuICAgKiBAcGFyYW0geyhyZWNvcmQ6ID8pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+fSBbYXJncy5zZXJpYWxpemVSZWNvcmRdIC0gUmVjb3JkIHNlcmlhbGl6ZXIuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oe3F1ZXJ5OiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSk6IHZvaWR9IFthcmdzLnNjb3BlUXVlcnldIC0gQXBwbGllcyBhcHAtb3duZWQgdmlzaWJpbGl0eSBzY29wZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkZWZhdWx0TGltaXQgPSAxMDAwLCBtYXhMaW1pdCA9IDEwMDAsIG1vZGVsQ2xhc3MsIHBhcmFtcywgc2NvcGVRdWVyeSwgc2VyaWFsaXplUmVjb3JkfSkge1xuICAgIHRoaXMuZGVmYXVsdExpbWl0ID0gZGVmYXVsdExpbWl0XG4gICAgdGhpcy5tYXhMaW1pdCA9IG1heExpbWl0XG4gICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zXG4gICAgdGhpcy5zY29wZVF1ZXJ5ID0gc2NvcGVRdWVyeSB8fCBudWxsXG4gICAgdGhpcy5zZXJpYWxpemVSZWNvcmQgPSBzZXJpYWxpemVSZWNvcmQgfHwgKChyZWNvcmQpID0+IHRoaXMuZGVmYXVsdFNlcmlhbGl6ZVJlY29yZChyZWNvcmQpKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHN0YWJsZSBjaGFuZ2UtZmVlZCBwYWdlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7c3RhdHVzOiBzdHJpbmcsIG5leHRDdXJzb3I6IHtpZDogc3RyaW5nLCBzZXJ2ZXJTZXF1ZW5jZTogbnVtYmVyLCB1cGRhdGVkQXQ6IHN0cmluZ30gfCBudWxsLCBzeW5jczogQXJyYXk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCB1cFRvQ3Vyc29yOiB7aWQ6IHN0cmluZywgc2VydmVyU2VxdWVuY2U6IG51bWJlciwgdXBkYXRlZEF0OiBzdHJpbmd9IHwgbnVsbH0+fSBDaGFuZ2UtZmVlZCBwYWdlIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGNoYW5nZXMoKSB7XG4gICAgY29uc3QgbGltaXQgPSB0aGlzLm5vcm1hbGl6ZWRMaW1pdCh0aGlzLnBhcmFtcy5saW1pdClcbiAgICBjb25zdCB1cFRvQ3Vyc29yID0gYXdhaXQgdGhpcy5yZXNvbHZlVXBUb0N1cnNvcigpXG5cbiAgICBpZiAoIXVwVG9DdXJzb3IpIHJldHVybiB7c3RhdHVzOiBcInN1Y2Nlc3NcIiwgbmV4dEN1cnNvcjogbnVsbCwgc3luY3M6IFtdLCB1cFRvQ3Vyc29yOiBudWxsfVxuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnBhZ2VRdWVyeSh7bGltaXQsIHVwVG9DdXJzb3J9KVxuICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCBxdWVyeS50b0FycmF5KClcbiAgICBjb25zdCBuZXh0Q3Vyc29yID0gcmVjb3Jkcy5sZW5ndGggPiAwID8gdGhpcy5jdXJzb3JGb3JSZWNvcmQocmVjb3Jkc1tyZWNvcmRzLmxlbmd0aCAtIDFdKSA6IHVwVG9DdXJzb3JcblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IFwic3VjY2Vzc1wiLFxuICAgICAgbmV4dEN1cnNvcixcbiAgICAgIHN5bmNzOiByZWNvcmRzLm1hcCgocmVjb3JkKSA9PiB0aGlzLnNlcmlhbGl6ZVJlY29yZChyZWNvcmQpKSxcbiAgICAgIHVwVG9DdXJzb3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyB0aGUgcmVxdWVzdGVkIHBhZ2UgbGltaXQuXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBSYXcgbGltaXQgcGFyYW0uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IE5vcm1hbGl6ZWQgcGFnZSBsaW1pdC5cbiAgICovXG4gIG5vcm1hbGl6ZWRMaW1pdCh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiKSByZXR1cm4gdGhpcy5kZWZhdWx0TGltaXRcblxuICAgIGNvbnN0IGxpbWl0ID0gTnVtYmVyKHZhbHVlKVxuXG4gICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihsaW1pdCkgfHwgbGltaXQgPD0gMCkge1xuICAgICAgdGhyb3cgVmVsb2Npb3VzRXJyb3Iuc2FmZShcIlN5bmMgY2hhbmdlcyBsaW1pdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci5cIiwge2NvZGU6IFwic3luYy1pbnZhbGlkLWNoYW5nZXMtbGltaXRcIn0pXG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGgubWluKGxpbWl0LCB0aGlzLm1heExpbWl0KVxuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBhbiBvcHRpb25hbCBwb3NpdGl2ZSBpbnRlZ2VyIGN1cnNvciBmaWVsZC5cbiAgICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFJhdyBpbnRlZ2VyIHBhcmFtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFBhcmFtIG5hbWUgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyIHwgbnVsbH0gUG9zaXRpdmUgaW50ZWdlciB2YWx1ZSwgb3IgbnVsbCB3aGVuIG9taXR0ZWQuXG4gICAqL1xuICBvcHRpb25hbFBvc2l0aXZlSW50ZWdlclBhcmFtKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBpbnRlZ2VyID0gTnVtYmVyKHZhbHVlKVxuXG4gICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnRlZ2VyKSB8fCBpbnRlZ2VyIDw9IDApIHtcbiAgICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoYCR7bmFtZX0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuYCwge2NvZGU6IFwic3luYy1pbnZhbGlkLWNoYW5nZXMtY3Vyc29yXCJ9KVxuICAgIH1cblxuICAgIHJldHVybiBpbnRlZ2VyXG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIGhpZ2gtd2F0ZXIgY3Vyc29yIHRoYXQgYm91bmRzIHRoZSBjdXJyZW50IGZlZWQgcGFnZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8e2lkOiBzdHJpbmcsIHNlcnZlclNlcXVlbmNlOiBudW1iZXIsIHVwZGF0ZWRBdDogc3RyaW5nfSB8IG51bGw+fSBTbmFwc2hvdCB1cHBlci1ib3VuZCBjdXJzb3IuXG4gICAqL1xuICBhc3luYyByZXNvbHZlVXBUb0N1cnNvcigpIHtcbiAgICBjb25zdCB1cFRvU2VydmVyU2VxdWVuY2UgPSB0aGlzLm9wdGlvbmFsUG9zaXRpdmVJbnRlZ2VyUGFyYW0odGhpcy5wYXJhbXMudXBUb1NlcnZlclNlcXVlbmNlLCBcInVwVG9TZXJ2ZXJTZXF1ZW5jZVwiKVxuXG4gICAgaWYgKHVwVG9TZXJ2ZXJTZXF1ZW5jZSAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5wYXJhbXMudXBUb1VwZGF0ZWRBdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdGhpcy5wYXJhbXMudXBUb0lkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4ge2lkOiB0aGlzLnBhcmFtcy51cFRvSWQsIHNlcnZlclNlcXVlbmNlOiB1cFRvU2VydmVyU2VxdWVuY2UsIHVwZGF0ZWRBdDogdGhpcy5wYXJhbXMudXBUb1VwZGF0ZWRBdH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMucGFyYW1zLnVwVG9VcGRhdGVkQXQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHRoaXMucGFyYW1zLnVwVG9JZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgdXBUb1JlY29yZCA9IGF3YWl0IHRoaXMubW9kZWxDbGFzcy5maW5kQnkoe2lkOiB0aGlzLnBhcmFtcy51cFRvSWR9KVxuXG4gICAgICBpZiAodXBUb1JlY29yZCkgcmV0dXJuIHRoaXMuY3Vyc29yRm9yUmVjb3JkKHVwVG9SZWNvcmQpXG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnNjb3BlZFF1ZXJ5KClcbiAgICBjb25zdCB0YWJsZSA9IHF1ZXJ5LmRyaXZlci5xdW90ZVRhYmxlKHRoaXMubW9kZWxDbGFzcy50YWJsZU5hbWUoKSlcbiAgICBjb25zdCBzZXJ2ZXJTZXF1ZW5jZUNvbHVtbiA9IHF1ZXJ5LmRyaXZlci5xdW90ZUNvbHVtbihcInNlcnZlcl9zZXF1ZW5jZVwiKVxuICAgIGNvbnN0IGxhdGVzdFJlY29yZHMgPSBhd2FpdCBxdWVyeVxuICAgICAgLm9yZGVyKGAke3RhYmxlfS4ke3NlcnZlclNlcXVlbmNlQ29sdW1ufSBERVNDYClcbiAgICAgIC5saW1pdCgxKVxuICAgICAgLnRvQXJyYXkoKVxuXG4gICAgaWYgKGxhdGVzdFJlY29yZHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIHRoaXMuY3Vyc29yRm9yUmVjb3JkKGxhdGVzdFJlY29yZHNbMF0pXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBvcmRlcmVkIGFuZCBjdXJzb3ItZmlsdGVyZWQgcGFnZSBxdWVyeS5cbiAgICogQHBhcmFtIHt7bGltaXQ6IG51bWJlciwgdXBUb0N1cnNvcjoge2lkOiBzdHJpbmcsIHNlcnZlclNlcXVlbmNlOiBudW1iZXIsIHVwZGF0ZWRBdDogc3RyaW5nfX19IGFyZ3MgLSBQYWdlIHF1ZXJ5IGFyZ3MuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSBQYWdlIHF1ZXJ5LlxuICAgKi9cbiAgcGFnZVF1ZXJ5KHtsaW1pdCwgdXBUb0N1cnNvcn0pIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2NvcGVkUXVlcnkoKVxuICAgIGNvbnN0IGRyaXZlciA9IHF1ZXJ5LmRyaXZlclxuICAgIGNvbnN0IHRhYmxlID0gZHJpdmVyLnF1b3RlVGFibGUodGhpcy5tb2RlbENsYXNzLnRhYmxlTmFtZSgpKVxuICAgIGNvbnN0IHNlcnZlclNlcXVlbmNlQ29sdW1uID0gYCR7dGFibGV9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKFwic2VydmVyX3NlcXVlbmNlXCIpfWBcbiAgICBjb25zdCB1cGRhdGVkQXRDb2x1bW4gPSBgJHt0YWJsZX0uJHtkcml2ZXIucXVvdGVDb2x1bW4oXCJ1cGRhdGVkX2F0XCIpfWBcbiAgICBjb25zdCBpZENvbHVtbiA9IGAke3RhYmxlfS4ke2RyaXZlci5xdW90ZUNvbHVtbihcImlkXCIpfWBcblxuICAgIHF1ZXJ5XG4gICAgICAud2hlcmUoYCR7c2VydmVyU2VxdWVuY2VDb2x1bW59IDw9ICR7ZHJpdmVyLnF1b3RlKHVwVG9DdXJzb3Iuc2VydmVyU2VxdWVuY2UpfWApXG4gICAgICAub3JkZXIoYCR7c2VydmVyU2VxdWVuY2VDb2x1bW59IEFTQ2ApXG4gICAgICAubGltaXQobGltaXQpXG5cbiAgICBjb25zdCBhZnRlclNlcnZlclNlcXVlbmNlID0gdGhpcy5vcHRpb25hbFBvc2l0aXZlSW50ZWdlclBhcmFtKHRoaXMucGFyYW1zLmFmdGVyU2VydmVyU2VxdWVuY2UsIFwiYWZ0ZXJTZXJ2ZXJTZXF1ZW5jZVwiKVxuXG4gICAgaWYgKGFmdGVyU2VydmVyU2VxdWVuY2UgIT09IG51bGwpIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGAke3NlcnZlclNlcXVlbmNlQ29sdW1ufSA+ICR7ZHJpdmVyLnF1b3RlKGFmdGVyU2VydmVyU2VxdWVuY2UpfWApXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5wYXJhbXMuYWZ0ZXJVcGRhdGVkQXQgPT09IFwic3RyaW5nXCIgJiYgdGhpcy5wYXJhbXMuYWZ0ZXJVcGRhdGVkQXQgIT09IFwiXCIpIHtcbiAgICAgIGNvbnN0IGlzUGFnaW5nRXhpc3RpbmdTbmFwc2hvdCA9IHR5cGVvZiB0aGlzLnBhcmFtcy51cFRvVXBkYXRlZEF0ID09PSBcInN0cmluZ1wiICYmIHRoaXMucGFyYW1zLnVwVG9VcGRhdGVkQXQgIT09IFwiXCIgJiYgdHlwZW9mIHRoaXMucGFyYW1zLnVwVG9JZCA9PT0gXCJzdHJpbmdcIiAmJiB0aGlzLnBhcmFtcy51cFRvSWQgIT09IFwiXCJcblxuICAgICAgaWYgKGlzUGFnaW5nRXhpc3RpbmdTbmFwc2hvdCAmJiB0eXBlb2YgdGhpcy5wYXJhbXMuYWZ0ZXJJZCA9PT0gXCJzdHJpbmdcIiAmJiB0aGlzLnBhcmFtcy5hZnRlcklkICE9PSBcIlwiKSB7XG4gICAgICAgIHF1ZXJ5LndoZXJlKGAoJHt1cGRhdGVkQXRDb2x1bW59ID4gJHtkcml2ZXIucXVvdGUodGhpcy5wYXJhbXMuYWZ0ZXJVcGRhdGVkQXQpfSBPUiAoJHt1cGRhdGVkQXRDb2x1bW59ID0gJHtkcml2ZXIucXVvdGUodGhpcy5wYXJhbXMuYWZ0ZXJVcGRhdGVkQXQpfSBBTkQgJHtpZENvbHVtbn0gPiAke2RyaXZlci5xdW90ZSh0aGlzLnBhcmFtcy5hZnRlcklkKX0pKWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeS53aGVyZShgJHt1cGRhdGVkQXRDb2x1bW59ID49ICR7ZHJpdmVyLnF1b3RlKHRoaXMucGFyYW1zLmFmdGVyVXBkYXRlZEF0KX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGJhc2UgcXVlcnkgd2l0aCBhcHAtb3duZWQgc2NvcGUgYXBwbGllZC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9IFNjb3BlZCBiYXNlIHF1ZXJ5LlxuICAgKi9cbiAgc2NvcGVkUXVlcnkoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLm1vZGVsQ2xhc3Mud2hlcmUoe30pXG5cbiAgICBpZiAodGhpcy5zY29wZVF1ZXJ5KSB0aGlzLnNjb3BlUXVlcnkoe3F1ZXJ5fSlcblxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSByZWNvcmQgaW50byBhIHRyYW5zcG9ydCBjdXJzb3IuXG4gICAqIEBwYXJhbSB7P30gcmVjb3JkIC0gU3luYy9jaGFuZ2UgcmVjb3JkLlxuICAgKiBAcmV0dXJucyB7e2lkOiBzdHJpbmcsIHNlcnZlclNlcXVlbmNlOiBudW1iZXIsIHVwZGF0ZWRBdDogc3RyaW5nfX0gQ3Vyc29yIGZvciByb3cuXG4gICAqL1xuICBjdXJzb3JGb3JSZWNvcmQocmVjb3JkKSB7XG4gICAgcmV0dXJuIHtpZDogU3RyaW5nKHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcImlkXCIpKSwgc2VydmVyU2VxdWVuY2U6IE51bWJlcih0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJzZXJ2ZXJTZXF1ZW5jZVwiKSksIHVwZGF0ZWRBdDogdGhpcy5pc29EYXRlKHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInVwZGF0ZWRBdFwiKSl9XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIHJlY29yZCB1c2luZyB0aGUgc3RhbmRhcmQgc3luYyBlbnZlbG9wZSBzaGFwZS5cbiAgICogQHBhcmFtIHs/fSByZWNvcmQgLSBTeW5jL2NoYW5nZSByZWNvcmQuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gRGVmYXVsdCBzZXJpYWxpemVkIHJvdy5cbiAgICovXG4gIGRlZmF1bHRTZXJpYWxpemVSZWNvcmQocmVjb3JkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHRoaXMucmVjb3JkRGF0YShyZWNvcmQpLFxuICAgICAgZXZlbnRJZDogdGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwiZXZlbnRJZFwiKSxcbiAgICAgIGlkOiB0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJpZFwiKSxcbiAgICAgIHJlc291cmNlSWQ6IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInJlc291cmNlSWRcIiksXG4gICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInJlc291cmNlVHlwZVwiKSxcbiAgICAgIHNlcnZlclNlcXVlbmNlOiB0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJzZXJ2ZXJTZXF1ZW5jZVwiKSxcbiAgICAgIHN5bmNUeXBlOiB0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJzeW5jVHlwZVwiKSxcbiAgICAgIHVwZGF0ZWRBdDogdGhpcy5pc29EYXRlKHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInVwZGF0ZWRBdFwiKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYW5kIHBhcnNlcyB0aGUgcmVjb3JkIGRhdGEgcGF5bG9hZC5cbiAgICogQHBhcmFtIHs/fSByZWNvcmQgLSBTeW5jL2NoYW5nZSByZWNvcmQuXG4gICAqIEByZXR1cm5zIHt1bmtub3dufSBQYXJzZWQgZGF0YSB2YWx1ZS5cbiAgICovXG4gIHJlY29yZERhdGEocmVjb3JkKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcImRhdGFcIilcblxuICAgIGlmIChkYXRhID09PSBcIlwiIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbFxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIGRhdGFcblxuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYSB2YWx1ZSBmcm9tIGVpdGhlciBhIHJlY29yZCBhY2Nlc3NvciBtZXRob2Qgb3IgcGxhaW4gcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7P30gcmVjb3JkIC0gU3luYy9jaGFuZ2UgcmVjb3JkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbWVsLWNhc2VkIHZhbHVlL21ldGhvZCBuYW1lLlxuICAgKiBAcmV0dXJucyB7dW5rbm93bn0gUmVjb3JkIHZhbHVlLlxuICAgKi9cbiAgcmVjb3JkVmFsdWUocmVjb3JkLCBuYW1lKSB7XG4gICAgaWYgKCFyZWNvcmQgfHwgdHlwZW9mIHJlY29yZCAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3luYyBjaGFuZ2VzIHJvdyBtdXN0IGJlIGFuIG9iamVjdC5cIilcbiAgICB9XG5cbiAgICBjb25zdCByZWNvcmRPYmplY3QgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqLyAocmVjb3JkKVxuICAgIGNvbnN0IG1ldGhvZCA9IHJlY29yZE9iamVjdFtuYW1lXVxuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG1ldGhvZCA9PT0gXCJmdW5jdGlvblwiID8gbWV0aG9kLmNhbGwocmVjb3JkKSA6IG1ldGhvZFxuXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3luYyBjaGFuZ2VzIHJvdyBpcyBtaXNzaW5nICR7bmFtZX0uYClcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGRhdGUtbGlrZSB2YWx1ZSB0byBhbiBJU08gc3RyaW5nLlxuICAgKiBAcGFyYW0ge0RhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgdW5rbm93bn0gdmFsdWUgLSBEYXRlIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBJU08gZGF0ZS5cbiAgICovXG4gIGlzb0RhdGUodmFsdWUpIHtcbiAgICBjb25zdCBkYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiID8gdmFsdWUgOiAwKVxuXG4gICAgaWYgKE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJTeW5jIGNoYW5nZXMgcm93IGhhcyBhbiBpbnZhbGlkIHVwZGF0ZWRfYXQgdmFsdWUuXCIsIHtjb2RlOiBcInN5bmMtaW52YWxpZC1jaGFuZ2VzLXJvd1wifSlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gIH1cbn1cblxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1tb2RlbC1jaGFuZ2UtZmVlZC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N5bmMvc3luYy1tb2RlbC1jaGFuZ2UtZmVlZC1zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQTtBQUV0RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLDBCQUEwQjtJQUM3Qzs7Ozs7Ozs7O09BU0c7SUFDSCxZQUFZLEVBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBQztRQUNqRyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUE7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFFakQsSUFBSSxDQUFDLFVBQVU7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ZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxLQUFLO1FBQ1gsTUFBTSxJQUFJLEdBQUcsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXpILElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxtREFBbUQsRUFBRSxFQUFDLElBQUksRUFBRSwwQkFBMEIsRUFBQyxDQUFDLENBQUE7UUFDcEgsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgVmVsb2Npb3VzRXJyb3IgZnJvbSBcIi4uL3ZlbG9jaW91cy1lcnJvci5qc1wiXG5cbmltcG9ydCB7ZGVjbGFyZWRTeW5jU2NvcGVBdHRyaWJ1dGVzfSBmcm9tIFwiLi9zeW5jLXNjb3BlLWF0dHJpYnV0ZXMuanNcIlxuXG4vKipcbiAqIEdlbmVyaWMgY3Vyc29yLXBhZ2luYXRlZCBjaGFuZ2UgZmVlZCBvdmVyIGFuIGFwcC1vd25lZCBzeW5jL2NoYW5nZSBtb2RlbC5cbiAqXG4gKiBBcHBzIHByb3ZpZGUgdGhlIG1vZGVsIGFuZCBvcHRpb25hbCBzY29waW5nL3NlcmlhbGl6YXRpb24gaG9va3MuIFZlbG9jaW91cyBvd25zXG4gKiBjdXJzb3IgcGFyc2luZywgc25hcHNob3QgaGlnaC13YXRlciByZXNvbHV0aW9uLCBzdGFibGUgb3JkZXJpbmcsIHBhZ2UgbGltaXRzLFxuICogYW5kIHJlc3BvbnNlIHNoYXBlIGZvciBgL3ZlbG9jaW91cy9zeW5jL2NoYW5nZXNgIHN0eWxlIGVuZHBvaW50cy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3luY01vZGVsQ2hhbmdlRmVlZFNlcnZpY2Uge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGdlbmVyaWMgc3luYy1tb2RlbCBjaGFuZ2UtZmVlZCBzZXJ2aWNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFNlcnZpY2UgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gU3luYy9jaGFuZ2UgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGFyZ3MucGFyYW1zIC0gUmVxdWVzdCBwYXJhbXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5kZWZhdWx0TGltaXRdIC0gRGVmYXVsdCBwYWdlIHNpemUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5tYXhMaW1pdF0gLSBNYXhpbXVtIHBhZ2Ugc2l6ZS5cbiAgICogQHBhcmFtIHsocmVjb3JkOiA/KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2FyZ3Muc2VyaWFsaXplUmVjb3JkXSAtIFJlY29yZCBzZXJpYWxpemVyLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHtxdWVyeTogaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0pOiB2b2lkfSBbYXJncy5zY29wZVF1ZXJ5XSAtIEFwcGxpZXMgYXBwLW93bmVkIHZpc2liaWxpdHkgc2NvcGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZGVmYXVsdExpbWl0ID0gMTAwMCwgbWF4TGltaXQgPSAxMDAwLCBtb2RlbENsYXNzLCBwYXJhbXMsIHNjb3BlUXVlcnksIHNlcmlhbGl6ZVJlY29yZH0pIHtcbiAgICB0aGlzLmRlZmF1bHRMaW1pdCA9IGRlZmF1bHRMaW1pdFxuICAgIHRoaXMubWF4TGltaXQgPSBtYXhMaW1pdFxuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtc1xuICAgIHRoaXMuc2NvcGVRdWVyeSA9IHNjb3BlUXVlcnkgfHwgbnVsbFxuICAgIHRoaXMuc2VyaWFsaXplUmVjb3JkID0gc2VyaWFsaXplUmVjb3JkIHx8ICgocmVjb3JkKSA9PiB0aGlzLmRlZmF1bHRTZXJpYWxpemVSZWNvcmQocmVjb3JkKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBzdGFibGUgY2hhbmdlLWZlZWQgcGFnZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8e3N0YXR1czogc3RyaW5nLCBuZXh0Q3Vyc29yOiB7aWQ6IHN0cmluZywgc2VydmVyU2VxdWVuY2U6IG51bWJlciwgdXBkYXRlZEF0OiBzdHJpbmd9IHwgbnVsbCwgc3luY3M6IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgdXBUb0N1cnNvcjoge2lkOiBzdHJpbmcsIHNlcnZlclNlcXVlbmNlOiBudW1iZXIsIHVwZGF0ZWRBdDogc3RyaW5nfSB8IG51bGx9Pn0gQ2hhbmdlLWZlZWQgcGFnZSByZXN1bHQuXG4gICAqL1xuICBhc3luYyBjaGFuZ2VzKCkge1xuICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5ub3JtYWxpemVkTGltaXQodGhpcy5wYXJhbXMubGltaXQpXG4gICAgY29uc3QgdXBUb0N1cnNvciA9IGF3YWl0IHRoaXMucmVzb2x2ZVVwVG9DdXJzb3IoKVxuXG4gICAgaWYgKCF1cFRvQ3Vyc29yKSByZXR1cm4ge3N0YXR1czogXCJzdWNjZXNzXCIsIG5leHRDdXJzb3I6IG51bGwsIHN5bmNzOiBbXSwgdXBUb0N1cnNvcjogbnVsbH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5wYWdlUXVlcnkoe2xpbWl0LCB1cFRvQ3Vyc29yfSlcbiAgICBjb25zdCByZWNvcmRzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG4gICAgY29uc3QgbmV4dEN1cnNvciA9IHJlY29yZHMubGVuZ3RoID4gMCA/IHRoaXMuY3Vyc29yRm9yUmVjb3JkKHJlY29yZHNbcmVjb3Jkcy5sZW5ndGggLSAxXSkgOiB1cFRvQ3Vyc29yXG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBcInN1Y2Nlc3NcIixcbiAgICAgIG5leHRDdXJzb3IsXG4gICAgICBzeW5jczogcmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gdGhpcy5zZXJpYWxpemVSZWNvcmQocmVjb3JkKSksXG4gICAgICB1cFRvQ3Vyc29yXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgdGhlIHJlcXVlc3RlZCBwYWdlIGxpbWl0LlxuICAgKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gUmF3IGxpbWl0IHBhcmFtLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBOb3JtYWxpemVkIHBhZ2UgbGltaXQuXG4gICAqL1xuICBub3JtYWxpemVkTGltaXQodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIHRoaXMuZGVmYXVsdExpbWl0XG5cbiAgICBjb25zdCBsaW1pdCA9IE51bWJlcih2YWx1ZSlcblxuICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIobGltaXQpIHx8IGxpbWl0IDw9IDApIHtcbiAgICAgIHRocm93IFZlbG9jaW91c0Vycm9yLnNhZmUoXCJTeW5jIGNoYW5nZXMgbGltaXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXCIsIHtjb2RlOiBcInN5bmMtaW52YWxpZC1jaGFuZ2VzLWxpbWl0XCJ9KVxuICAgIH1cblxuICAgIHJldHVybiBNYXRoLm1pbihsaW1pdCwgdGhpcy5tYXhMaW1pdClcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYW4gb3B0aW9uYWwgcG9zaXRpdmUgaW50ZWdlciBjdXJzb3IgZmllbGQuXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBSYXcgaW50ZWdlciBwYXJhbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBQYXJhbSBuYW1lIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgICogQHJldHVybnMge251bWJlciB8IG51bGx9IFBvc2l0aXZlIGludGVnZXIgdmFsdWUsIG9yIG51bGwgd2hlbiBvbWl0dGVkLlxuICAgKi9cbiAgb3B0aW9uYWxQb3NpdGl2ZUludGVnZXJQYXJhbSh2YWx1ZSwgbmFtZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgaW50ZWdlciA9IE51bWJlcih2YWx1ZSlcblxuICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoaW50ZWdlcikgfHwgaW50ZWdlciA8PSAwKSB7XG4gICAgICB0aHJvdyBWZWxvY2lvdXNFcnJvci5zYWZlKGAke25hbWV9IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLmAsIHtjb2RlOiBcInN5bmMtaW52YWxpZC1jaGFuZ2VzLWN1cnNvclwifSlcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZWdlclxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBoaWdoLXdhdGVyIGN1cnNvciB0aGF0IGJvdW5kcyB0aGUgY3VycmVudCBmZWVkIHBhZ2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtpZDogc3RyaW5nLCBzZXJ2ZXJTZXF1ZW5jZTogbnVtYmVyLCB1cGRhdGVkQXQ6IHN0cmluZ30gfCBudWxsPn0gU25hcHNob3QgdXBwZXItYm91bmQgY3Vyc29yLlxuICAgKi9cbiAgYXN5bmMgcmVzb2x2ZVVwVG9DdXJzb3IoKSB7XG4gICAgY29uc3QgdXBUb1NlcnZlclNlcXVlbmNlID0gdGhpcy5vcHRpb25hbFBvc2l0aXZlSW50ZWdlclBhcmFtKHRoaXMucGFyYW1zLnVwVG9TZXJ2ZXJTZXF1ZW5jZSwgXCJ1cFRvU2VydmVyU2VxdWVuY2VcIilcblxuICAgIGlmICh1cFRvU2VydmVyU2VxdWVuY2UgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMucGFyYW1zLnVwVG9VcGRhdGVkQXQgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHRoaXMucGFyYW1zLnVwVG9JZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtpZDogdGhpcy5wYXJhbXMudXBUb0lkLCBzZXJ2ZXJTZXF1ZW5jZTogdXBUb1NlcnZlclNlcXVlbmNlLCB1cGRhdGVkQXQ6IHRoaXMucGFyYW1zLnVwVG9VcGRhdGVkQXR9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnBhcmFtcy51cFRvVXBkYXRlZEF0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB0aGlzLnBhcmFtcy51cFRvSWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IHVwVG9SZWNvcmQgPSBhd2FpdCB0aGlzLm1vZGVsQ2xhc3MuZmluZEJ5KHtpZDogdGhpcy5wYXJhbXMudXBUb0lkfSlcblxuICAgICAgaWYgKHVwVG9SZWNvcmQpIHJldHVybiB0aGlzLmN1cnNvckZvclJlY29yZCh1cFRvUmVjb3JkKVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5zY29wZWRRdWVyeSgpXG4gICAgY29uc3QgdGFibGUgPSBxdWVyeS5kcml2ZXIucXVvdGVUYWJsZSh0aGlzLm1vZGVsQ2xhc3MudGFibGVOYW1lKCkpXG4gICAgY29uc3Qgc2VydmVyU2VxdWVuY2VDb2x1bW4gPSBxdWVyeS5kcml2ZXIucXVvdGVDb2x1bW4oXCJzZXJ2ZXJfc2VxdWVuY2VcIilcbiAgICBjb25zdCBsYXRlc3RSZWNvcmRzID0gYXdhaXQgcXVlcnlcbiAgICAgIC5vcmRlcihgJHt0YWJsZX0uJHtzZXJ2ZXJTZXF1ZW5jZUNvbHVtbn0gREVTQ2ApXG4gICAgICAubGltaXQoMSlcbiAgICAgIC50b0FycmF5KClcblxuICAgIGlmIChsYXRlc3RSZWNvcmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiB0aGlzLmN1cnNvckZvclJlY29yZChsYXRlc3RSZWNvcmRzWzBdKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgb3JkZXJlZCBhbmQgY3Vyc29yLWZpbHRlcmVkIHBhZ2UgcXVlcnkuXG4gICAqIEBwYXJhbSB7e2xpbWl0OiBudW1iZXIsIHVwVG9DdXJzb3I6IHtpZDogc3RyaW5nLCBzZXJ2ZXJTZXF1ZW5jZTogbnVtYmVyLCB1cGRhdGVkQXQ6IHN0cmluZ319fSBhcmdzIC0gUGFnZSBxdWVyeSBhcmdzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gUGFnZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VRdWVyeSh7bGltaXQsIHVwVG9DdXJzb3J9KSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLnNjb3BlZFF1ZXJ5KClcbiAgICBjb25zdCBkcml2ZXIgPSBxdWVyeS5kcml2ZXJcbiAgICBjb25zdCB0YWJsZSA9IGRyaXZlci5xdW90ZVRhYmxlKHRoaXMubW9kZWxDbGFzcy50YWJsZU5hbWUoKSlcbiAgICBjb25zdCBzZXJ2ZXJTZXF1ZW5jZUNvbHVtbiA9IGAke3RhYmxlfS4ke2RyaXZlci5xdW90ZUNvbHVtbihcInNlcnZlcl9zZXF1ZW5jZVwiKX1gXG4gICAgY29uc3QgdXBkYXRlZEF0Q29sdW1uID0gYCR7dGFibGV9LiR7ZHJpdmVyLnF1b3RlQ29sdW1uKFwidXBkYXRlZF9hdFwiKX1gXG4gICAgY29uc3QgaWRDb2x1bW4gPSBgJHt0YWJsZX0uJHtkcml2ZXIucXVvdGVDb2x1bW4oXCJpZFwiKX1gXG5cbiAgICBxdWVyeVxuICAgICAgLndoZXJlKGAke3NlcnZlclNlcXVlbmNlQ29sdW1ufSA8PSAke2RyaXZlci5xdW90ZSh1cFRvQ3Vyc29yLnNlcnZlclNlcXVlbmNlKX1gKVxuICAgICAgLm9yZGVyKGAke3NlcnZlclNlcXVlbmNlQ29sdW1ufSBBU0NgKVxuICAgICAgLmxpbWl0KGxpbWl0KVxuXG4gICAgY29uc3QgYWZ0ZXJTZXJ2ZXJTZXF1ZW5jZSA9IHRoaXMub3B0aW9uYWxQb3NpdGl2ZUludGVnZXJQYXJhbSh0aGlzLnBhcmFtcy5hZnRlclNlcnZlclNlcXVlbmNlLCBcImFmdGVyU2VydmVyU2VxdWVuY2VcIilcblxuICAgIGlmIChhZnRlclNlcnZlclNlcXVlbmNlICE9PSBudWxsKSB7XG4gICAgICBxdWVyeS53aGVyZShgJHtzZXJ2ZXJTZXF1ZW5jZUNvbHVtbn0gPiAke2RyaXZlci5xdW90ZShhZnRlclNlcnZlclNlcXVlbmNlKX1gKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMucGFyYW1zLmFmdGVyVXBkYXRlZEF0ID09PSBcInN0cmluZ1wiICYmIHRoaXMucGFyYW1zLmFmdGVyVXBkYXRlZEF0ICE9PSBcIlwiKSB7XG4gICAgICBjb25zdCBpc1BhZ2luZ0V4aXN0aW5nU25hcHNob3QgPSB0eXBlb2YgdGhpcy5wYXJhbXMudXBUb1VwZGF0ZWRBdCA9PT0gXCJzdHJpbmdcIiAmJiB0aGlzLnBhcmFtcy51cFRvVXBkYXRlZEF0ICE9PSBcIlwiICYmIHR5cGVvZiB0aGlzLnBhcmFtcy51cFRvSWQgPT09IFwic3RyaW5nXCIgJiYgdGhpcy5wYXJhbXMudXBUb0lkICE9PSBcIlwiXG5cbiAgICAgIGlmIChpc1BhZ2luZ0V4aXN0aW5nU25hcHNob3QgJiYgdHlwZW9mIHRoaXMucGFyYW1zLmFmdGVySWQgPT09IFwic3RyaW5nXCIgJiYgdGhpcy5wYXJhbXMuYWZ0ZXJJZCAhPT0gXCJcIikge1xuICAgICAgICBxdWVyeS53aGVyZShgKCR7dXBkYXRlZEF0Q29sdW1ufSA+ICR7ZHJpdmVyLnF1b3RlKHRoaXMucGFyYW1zLmFmdGVyVXBkYXRlZEF0KX0gT1IgKCR7dXBkYXRlZEF0Q29sdW1ufSA9ICR7ZHJpdmVyLnF1b3RlKHRoaXMucGFyYW1zLmFmdGVyVXBkYXRlZEF0KX0gQU5EICR7aWRDb2x1bW59ID4gJHtkcml2ZXIucXVvdGUodGhpcy5wYXJhbXMuYWZ0ZXJJZCl9KSlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkud2hlcmUoYCR7dXBkYXRlZEF0Q29sdW1ufSA+PSAke2RyaXZlci5xdW90ZSh0aGlzLnBhcmFtcy5hZnRlclVwZGF0ZWRBdCl9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBiYXNlIHF1ZXJ5IHdpdGggYXBwLW93bmVkIHNjb3BlIGFwcGxpZWQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSBTY29wZWQgYmFzZSBxdWVyeS5cbiAgICovXG4gIHNjb3BlZFF1ZXJ5KCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5tb2RlbENsYXNzLndoZXJlKHt9KVxuXG4gICAgaWYgKHRoaXMuc2NvcGVRdWVyeSkgdGhpcy5zY29wZVF1ZXJ5KHtxdWVyeX0pXG5cbiAgICByZXR1cm4gcXVlcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIGEgcmVjb3JkIGludG8gYSB0cmFuc3BvcnQgY3Vyc29yLlxuICAgKiBAcGFyYW0gez99IHJlY29yZCAtIFN5bmMvY2hhbmdlIHJlY29yZC5cbiAgICogQHJldHVybnMge3tpZDogc3RyaW5nLCBzZXJ2ZXJTZXF1ZW5jZTogbnVtYmVyLCB1cGRhdGVkQXQ6IHN0cmluZ319IEN1cnNvciBmb3Igcm93LlxuICAgKi9cbiAgY3Vyc29yRm9yUmVjb3JkKHJlY29yZCkge1xuICAgIHJldHVybiB7aWQ6IFN0cmluZyh0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJpZFwiKSksIHNlcnZlclNlcXVlbmNlOiBOdW1iZXIodGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwic2VydmVyU2VxdWVuY2VcIikpLCB1cGRhdGVkQXQ6IHRoaXMuaXNvRGF0ZSh0aGlzLnJlY29yZFZhbHVlKHJlY29yZCwgXCJ1cGRhdGVkQXRcIikpfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSByZWNvcmQgdXNpbmcgdGhlIHN0YW5kYXJkIHN5bmMgZW52ZWxvcGUgc2hhcGUgcGx1cyB0aGUgc3luY1xuICAgKiBtb2RlbCdzIGRlY2xhcmVkIHNjb3BlLXBhcnRpdGlvbiBhdHRyaWJ1dGVzIChgc3RhdGljIHN5bmNTY29wZUF0dHJpYnV0ZXNgKSxcbiAgICogZWFjaCBlbWl0dGVkIHVuZGVyIGl0cyBvd24gYXR0cmlidXRlIG5hbWUuIE1vZGVscyBkZWNsYXJpbmcgbm8gc2NvcGVcbiAgICogYXR0cmlidXRlcyBrZWVwIHRoZSBkZXByZWNhdGVkIDEuMC41MDMgd2lyZSBhbmQgZW1pdCBgZXZlbnRJZGAuIEtleXMgYXJlXG4gICAqIHNvcnRlZCBzbyBhIGRlY2xhcmVkIGBbXCJldmVudElkXCJdYCBwYXJ0aXRpb24gc3RheXMgYnl0ZS1pZGVudGljYWwgd2l0aCB0aGVcbiAgICogMS4wLjUwMyB3aXJlLlxuICAgKiBAcGFyYW0gez99IHJlY29yZCAtIFN5bmMvY2hhbmdlIHJlY29yZC5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBEZWZhdWx0IHNlcmlhbGl6ZWQgcm93LlxuICAgKi9cbiAgZGVmYXVsdFNlcmlhbGl6ZVJlY29yZChyZWNvcmQpIHtcbiAgICBjb25zdCBzY29wZUF0dHJpYnV0ZXMgPSBkZWNsYXJlZFN5bmNTY29wZUF0dHJpYnV0ZXModGhpcy5tb2RlbENsYXNzKVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHtcbiAgICAgIGRhdGE6IHRoaXMucmVjb3JkRGF0YShyZWNvcmQpLFxuICAgICAgaWQ6IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcImlkXCIpLFxuICAgICAgcmVzb3VyY2VJZDogdGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwicmVzb3VyY2VJZFwiKSxcbiAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwicmVzb3VyY2VUeXBlXCIpLFxuICAgICAgc2VydmVyU2VxdWVuY2U6IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInNlcnZlclNlcXVlbmNlXCIpLFxuICAgICAgc3luY1R5cGU6IHRoaXMucmVjb3JkVmFsdWUocmVjb3JkLCBcInN5bmNUeXBlXCIpLFxuICAgICAgdXBkYXRlZEF0OiB0aGlzLmlzb0RhdGUodGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwidXBkYXRlZEF0XCIpKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2NvcGVBdHRyaWJ1dGUgb2Ygc2NvcGVBdHRyaWJ1dGVzIHx8IFtcImV2ZW50SWRcIl0pIHtcbiAgICAgIHNlcmlhbGl6ZWRbc2NvcGVBdHRyaWJ1dGVdID0gdGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIHNjb3BlQXR0cmlidXRlKVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2VyaWFsaXplZCkuc29ydCgoW2xlZnRLZXldLCBbcmlnaHRLZXldKSA9PiBsZWZ0S2V5LmxvY2FsZUNvbXBhcmUocmlnaHRLZXkpKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbmQgcGFyc2VzIHRoZSByZWNvcmQgZGF0YSBwYXlsb2FkLlxuICAgKiBAcGFyYW0gez99IHJlY29yZCAtIFN5bmMvY2hhbmdlIHJlY29yZC5cbiAgICogQHJldHVybnMge3Vua25vd259IFBhcnNlZCBkYXRhIHZhbHVlLlxuICAgKi9cbiAgcmVjb3JkRGF0YShyZWNvcmQpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZWNvcmRWYWx1ZShyZWNvcmQsIFwiZGF0YVwiKVxuXG4gICAgaWYgKGRhdGEgPT09IFwiXCIgfHwgZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSBcInN0cmluZ1wiKSByZXR1cm4gZGF0YVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIHZhbHVlIGZyb20gZWl0aGVyIGEgcmVjb3JkIGFjY2Vzc29yIG1ldGhvZCBvciBwbGFpbiBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHs/fSByZWNvcmQgLSBTeW5jL2NoYW5nZSByZWNvcmQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FtZWwtY2FzZWQgdmFsdWUvbWV0aG9kIG5hbWUuXG4gICAqIEByZXR1cm5zIHt1bmtub3dufSBSZWNvcmQgdmFsdWUuXG4gICAqL1xuICByZWNvcmRWYWx1ZShyZWNvcmQsIG5hbWUpIHtcbiAgICBpZiAoIXJlY29yZCB8fCB0eXBlb2YgcmVjb3JkICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIGNoYW5nZXMgcm93IG11c3QgYmUgYW4gb2JqZWN0LlwiKVxuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZE9iamVjdCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovIChyZWNvcmQpXG4gICAgY29uc3QgbWV0aG9kID0gcmVjb3JkT2JqZWN0W25hbWVdXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgbWV0aG9kID09PSBcImZ1bmN0aW9uXCIgPyBtZXRob2QuY2FsbChyZWNvcmQpIDogbWV0aG9kXG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTeW5jIGNoYW5nZXMgcm93IGlzIG1pc3NpbmcgJHtuYW1lfS5gKVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgZGF0ZS1saWtlIHZhbHVlIHRvIGFuIElTTyBzdHJpbmcuXG4gICAqIEBwYXJhbSB7RGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCB1bmtub3dufSB2YWx1ZSAtIERhdGUgdmFsdWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IElTTyBkYXRlLlxuICAgKi9cbiAgaXNvRGF0ZSh2YWx1ZSkge1xuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgPyB2YWx1ZSA6IDApXG5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgdGhyb3cgVmVsb2Npb3VzRXJyb3Iuc2FmZShcIlN5bmMgY2hhbmdlcyByb3cgaGFzIGFuIGludmFsaWQgdXBkYXRlZF9hdCB2YWx1ZS5cIiwge2NvZGU6IFwic3luYy1pbnZhbGlkLWNoYW5nZXMtcm93XCJ9KVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKClcbiAgfVxufVxuXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Args resolved against a publish declaration's broadcasts after a published
3
- * server-side mutation commits.
2
+ * Args resolved against a publish declaration's deprecated broadcasts after a
3
+ * published server-side mutation commits.
4
4
  */
5
5
  export type SyncPublishBroadcastArgs = {
6
6
  /**
@@ -58,20 +58,25 @@ export type SyncPublishBroadcast = {
58
58
  * Server-side publish declaration on a model's `static sync`, consumed by
59
59
  * `SyncPublisher.fromConfiguration(...)`. Publishing is on for models
60
60
  * declaring it (server-side creates and updates write to the sync change
61
- * feed and broadcast automatically once their transaction commits);
62
- * `publish: false` opts a model out explicitly.
61
+ * feed and broadcast the standard sync envelope on the framework sync
62
+ * channel automatically once their transaction commits); `publish: true`
63
+ * opts in with all defaults and `publish: false` opts a model out explicitly.
63
64
  */
64
- export type SyncPublishDeclarationConfig = {
65
+ export type SyncPublishDeclarationConfig<TModel = any> = {
65
66
  /**
66
- * - Builds the published payload snapshot from the mutated record (snapshotted at mutation time).
67
+ * - Builds the published payload snapshot from the mutated record (snapshotted at mutation time). Defaults to the record's attributes with Date values serialized to ISO strings.
67
68
  */
68
- serialize: (record: unknown) => Record<string, unknown> | Promise<Record<string, unknown>>;
69
+ serialize?: ((record: TModel) => Record<string, unknown> | Promise<Record<string, unknown>>) | undefined;
70
+ /**
71
+ * - Record-attribute name overrides per scope attribute declared on the sync model's `static syncScopeAttributes`. By default each declared scope attribute reads the record's attribute of the same name when the model has one, else the record's own id (scope-root models).
72
+ */
73
+ scopeAttributes?: Record<string, string> | undefined;
69
74
  /**
70
- * - Resolves the event scope persisted to the sync row's event_id column.
75
+ * - Deprecated 1.0.503 form: attribute-name string (or resolver function) persisted to a fixed event_id sync-row column and broadcast as a fixed `eventId` scoping param. Declare `static syncScopeAttributes` on the sync model plus `scopeAttributes` overrides instead.
71
76
  */
72
- eventId?: ((record: unknown) => string | number | null | Promise<string | number | null>) | undefined;
77
+ eventId?: string | ((record: TModel) => string | number | null | Promise<string | number | null>) | undefined;
73
78
  /**
74
- * - Declarative broadcasts fanned out after the sync row is upserted.
79
+ * - Deprecated: declarative app-channel broadcasts fanned out after the framework sync channel broadcast. The framework broadcast happens automatically; keep this only for legacy channels old app versions still subscribe.
75
80
  */
76
81
  broadcasts?: SyncPublishBroadcast[] | undefined;
77
82
  /**
@@ -83,7 +88,11 @@ export type SyncPublishDeclarationConfig = {
83
88
  */
84
89
  resourceType?: string | undefined;
85
90
  };
86
- export type SyncPublishDeclaration = false | SyncPublishDeclarationConfig;
91
+ /**
92
+ * Model-level publish declaration value: `true` publishes with all defaults,
93
+ * `false` opts out explicitly, an object customizes the published payload and scoping.
94
+ */
95
+ export type SyncPublishDeclaration<TModel = any> = boolean | SyncPublishDeclarationConfig<TModel>;
87
96
  /**
88
97
  * Options for building a sync publisher. Published resources are derived from
89
98
  * the configuration's registered models (`static sync` publish declarations).
@@ -94,7 +103,7 @@ export type SyncPublisherOptions = {
94
103
  */
95
104
  actorForeignKeyColumn?: string | undefined;
96
105
  /**
97
- * - Delivers declared broadcasts. Defaults to the configuration's channel broadcast.
106
+ * - Delivers the framework sync channel broadcast and any deprecated declared broadcasts. Defaults to the configuration's channel broadcast.
98
107
  */
99
108
  broadcaster?: ((broadcast: {
100
109
  channel: string;
@@ -114,18 +123,37 @@ export type SyncPublisherOptions = {
114
123
  */
115
124
  syncModel?: unknown;
116
125
  };
126
+ /**
127
+ * One derived scope-partition source for a published resource — not an
128
+ * app-facing API. The value is persisted to the sync row's `columnName` and
129
+ * broadcast under `scopeAttribute` on the framework sync channel.
130
+ */
131
+ export type SyncPublisherScopePlanEntry = {
132
+ /**
133
+ * - Sync-row column persisting the scope value.
134
+ */
135
+ columnName: string;
136
+ /**
137
+ * - Record attribute read for the scope value, or null when the record's own id is the scope (scope-root models).
138
+ */
139
+ recordAttribute: string | null;
140
+ /**
141
+ * - Deprecated eventId resolver function.
142
+ */
143
+ resolver: ((record: unknown) => string | number | null | Promise<string | number | null>) | undefined;
144
+ /**
145
+ * - Scope attribute name broadcast as the framework channel scoping param.
146
+ */
147
+ scopeAttribute: string;
148
+ };
117
149
  /**
118
150
  * Internal derived publish policy for one resource — not an app-facing API.
119
151
  */
120
152
  export type SyncPublisherResourceConfig = {
121
153
  /**
122
- * - Declared broadcasts.
154
+ * - Deprecated declared app-channel broadcasts.
123
155
  */
124
156
  broadcasts: SyncPublishBroadcast[] | undefined;
125
- /**
126
- * - Event scope resolver.
127
- */
128
- eventId: SyncPublishDeclarationConfig["eventId"] | undefined;
129
157
  /**
130
158
  * - Server model class for this resource.
131
159
  */
@@ -135,12 +163,16 @@ export type SyncPublisherResourceConfig = {
135
163
  */
136
164
  operations: Array<"create" | "update" | "destroy">;
137
165
  /**
138
- * - Published resource type.
166
+ * - Derived scope-partition plan.
139
167
  */
140
- resourceType: string;
168
+ scopePlan: Array<SyncPublisherScopePlanEntry>;
169
+ /**
170
+ * - Payload snapshot builder (the declaration's serialize or the default attribute serializer).
171
+ */
172
+ serialize: (record: unknown) => Record<string, unknown> | Promise<Record<string, unknown>>;
141
173
  /**
142
- * - Payload snapshot builder.
174
+ * - Published resource type.
143
175
  */
144
- serialize: SyncPublishDeclarationConfig["serialize"];
176
+ resourceType: string;
145
177
  };
146
178
  //# sourceMappingURL=sync-publisher-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-publisher-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher-types.js"],"names":[],"mappings":";;;;;;;;UAMc,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;eACjB,QAAQ,GAAG,QAAQ,GAAG,SAAS;;;;YAC/B,OAAC;;;;gBACD,MAAM;;;;kBACN,MAAM;;;;aACN,OAAC;;;;cACD,MAAM;;;;;;;;;;aAON,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC;;;;qBACrD,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;UACrD,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAC;;;;mBAC9B,wBAAwB,KAAK,OAAO;;;;;;;;;;;;;eAU3C,CAAC,MAAM,EAAE,OAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;;;;wBACpD,OAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;;;;;;;;;;;;;;qCAMvE,KAAK,GAAG,4BAA4B;;;;;;;;;;;;;+BAOxB;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,IAAI,EAAE,OAAC,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;;;;uBAE3E,KAAK,KAAK,IAAI;;;;gBACtB,OAAC;;;;;;;;;gBAMD,oBAAoB,EAAE,GAAG,SAAS;;;;aAClC,4BAA4B,CAAC,SAAS,CAAC,GAAG,SAAS;;;;gBACnD,OAAC;;;;gBACD,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;;;;kBACtC,MAAM;;;;eACN,4BAA4B,CAAC,WAAW,CAAC"}
1
+ {"version":3,"file":"sync-publisher-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher-types.js"],"names":[],"mappings":";;;;;;;;UAMc,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;eACjB,QAAQ,GAAG,QAAQ,GAAG,SAAS;;;;YAC/B,OAAC;;;;gBACD,MAAM;;;;kBACN,MAAM;;;;aACN,OAAC;;;;cACD,MAAM;;;;;;;;;;aAQN,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC;;;;qBACrD,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;UACrD,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAC;;;;mBAC9B,wBAAwB,KAAK,OAAO;;;;;;;;;;yCAU3C,MAAM;;;;0BAEG,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;;;;;;;;iCAE/C,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;;;;;;;;;;;;;;;;;;mCAStF,MAAM,UACP,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAAC;;;;;;;;;;;;;+BAQjC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,IAAI,EAAE,OAAC,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;;;;uBAE3E,KAAK,KAAK,IAAI;;;;gBACtB,OAAC;;;;;;;;;;;gBAQD,MAAM;;;;qBACN,MAAM,GAAG,IAAI;;;;cACb,CAAC,CAAC,MAAM,EAAE,OAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS;;;;oBACrF,MAAM;;;;;;;;;gBAMN,oBAAoB,EAAE,GAAG,SAAS;;;;gBAClC,OAAC;;;;gBACD,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;;;;eACtC,KAAK,CAAC,2BAA2B,CAAC;;;;eAClC,CAAC,MAAM,EAAE,OAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;;;;kBAC7D,MAAM"}
@@ -1,3 +1,3 @@
1
1
  // @ts-check
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wdWJsaXNoZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXB1Ymxpc2hlci10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQXJncyByZXNvbHZlZCBhZ2FpbnN0IGEgcHVibGlzaCBkZWNsYXJhdGlvbidzIGJyb2FkY2FzdHMgYWZ0ZXIgYSBwdWJsaXNoZWRcbiAqIHNlcnZlci1zaWRlIG11dGF0aW9uIGNvbW1pdHMuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3NcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgPz59IGRhdGEgLSBQYXlsb2FkIHNuYXBzaG90dGVkIHRocm91Z2ggdGhlIGRlY2xhcmF0aW9uJ3MgYHNlcmlhbGl6ZShyZWNvcmQpYCBhdCBtdXRhdGlvbiB0aW1lLlxuICogQHByb3BlcnR5IHtcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwifSBvcGVyYXRpb24gLSBNdXRhdGlvbiBvcGVyYXRpb24gdGhhdCBwdWJsaXNoZWQuXG4gKiBAcHJvcGVydHkgez99IHJlY29yZCAtIE11dGF0ZWQgc2VydmVyIG1vZGVsIHJlY29yZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZXNvdXJjZUlkIC0gUHVibGlzaGVkIHJlc291cmNlIGlkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlc291cmNlVHlwZSAtIFB1Ymxpc2hlZCByZXNvdXJjZSB0eXBlLlxuICogQHByb3BlcnR5IHs/fSBzeW5jUm93IC0gVXBzZXJ0ZWQgc3luYy9jaGFuZ2Ugcm93LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN5bmNUeXBlIC0gUHVibGlzaGVkIHN5bmMgdHlwZSAoXCJ1cGRhdGVcIiBmb3IgY3JlYXRlcy91cGRhdGVzLCBcImRlbGV0ZVwiIGZvciBkZXN0cm95cykuXG4gKi9cblxuLyoqXG4gKiBPbmUgZGVjbGFyYXRpdmUgYnJvYWRjYXN0IGZhbm5lZCBvdXQgYWZ0ZXIgYSBwdWJsaXNoZWQgc2VydmVyLXNpZGUgbXV0YXRpb25cbiAqIGNvbW1pdHMg4oCUIHNhbWUgc2hhcGUgdGhlIHJlcGxheSBzZXJ2aWNlJ3MgaW5qZWN0ZWQgYnJvYWRjYXN0ZXIgY29uc3VtZXMuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaEJyb2FkY2FzdFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCAoKGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gc3RyaW5nKX0gY2hhbm5lbCAtIENoYW5uZWwgbmFtZSBvciByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gUmVjb3JkPHN0cmluZywgPz59IGJyb2FkY2FzdFBhcmFtcyAtIENoYW5uZWwgcm91dGluZyBwYXJhbXMuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+ID99IGJvZHkgLSBCcm9hZGNhc3QgYm9keS5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gYm9vbGVhbn0gW3doZW5dIC0gT3B0aW9uYWwgZ2F0ZTsgc2tpcHBlZCB3aGVuIGl0IHJldHVybnMgZmFsc2UuXG4gKi9cblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSBwdWJsaXNoIGRlY2xhcmF0aW9uIG9uIGEgbW9kZWwncyBgc3RhdGljIHN5bmNgLCBjb25zdW1lZCBieVxuICogYFN5bmNQdWJsaXNoZXIuZnJvbUNvbmZpZ3VyYXRpb24oLi4uKWAuIFB1Ymxpc2hpbmcgaXMgb24gZm9yIG1vZGVsc1xuICogZGVjbGFyaW5nIGl0IChzZXJ2ZXItc2lkZSBjcmVhdGVzIGFuZCB1cGRhdGVzIHdyaXRlIHRvIHRoZSBzeW5jIGNoYW5nZVxuICogZmVlZCBhbmQgYnJvYWRjYXN0IGF1dG9tYXRpY2FsbHkgb25jZSB0aGVpciB0cmFuc2FjdGlvbiBjb21taXRzKTtcbiAqIGBwdWJsaXNoOiBmYWxzZWAgb3B0cyBhIG1vZGVsIG91dCBleHBsaWNpdGx5LlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZ1xuICogQHByb3BlcnR5IHsocmVjb3JkOiA/KSA9PiBSZWNvcmQ8c3RyaW5nLCA/PiB8IFByb21pc2U8UmVjb3JkPHN0cmluZywgPz4+fSBzZXJpYWxpemUgLSBCdWlsZHMgdGhlIHB1Ymxpc2hlZCBwYXlsb2FkIHNuYXBzaG90IGZyb20gdGhlIG11dGF0ZWQgcmVjb3JkIChzbmFwc2hvdHRlZCBhdCBtdXRhdGlvbiB0aW1lKS5cbiAqIEBwcm9wZXJ0eSB7KHJlY29yZDogPykgPT4gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD59IFtldmVudElkXSAtIFJlc29sdmVzIHRoZSBldmVudCBzY29wZSBwZXJzaXN0ZWQgdG8gdGhlIHN5bmMgcm93J3MgZXZlbnRfaWQgY29sdW1uLlxuICogQHByb3BlcnR5IHtTeW5jUHVibGlzaEJyb2FkY2FzdFtdfSBbYnJvYWRjYXN0c10gLSBEZWNsYXJhdGl2ZSBicm9hZGNhc3RzIGZhbm5lZCBvdXQgYWZ0ZXIgdGhlIHN5bmMgcm93IGlzIHVwc2VydGVkLlxuICogQHByb3BlcnR5IHtBcnJheTxcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiPn0gW29wZXJhdGlvbnNdIC0gUHVibGlzaGVkIG9wZXJhdGlvbnMuIERlZmF1bHRzIHRvIGNyZWF0ZXMgYW5kIHVwZGF0ZXM7IGRlc3Ryb3lzIGFyZSBvcHQtaW4gYmVjYXVzZSBhIHNlcnZlciBkZXN0cm95IGlzIG9mdGVuIGNsZWFudXAgcmF0aGVyIHRoYW4gYSBzeW5jZWQgZGVsZXRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZXNvdXJjZVR5cGVdIC0gUHVibGlzaGVkIHJlc291cmNlIHR5cGUuIERlZmF1bHRzIHRvIHRoZSBtb2RlbCBuYW1lLlxuICovXG5cbi8qKiBAdHlwZWRlZiB7ZmFsc2UgfCBTeW5jUHVibGlzaERlY2xhcmF0aW9uQ29uZmlnfSBTeW5jUHVibGlzaERlY2xhcmF0aW9uICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYnVpbGRpbmcgYSBzeW5jIHB1Ymxpc2hlci4gUHVibGlzaGVkIHJlc291cmNlcyBhcmUgZGVyaXZlZCBmcm9tXG4gKiB0aGUgY29uZmlndXJhdGlvbidzIHJlZ2lzdGVyZWQgbW9kZWxzIChgc3RhdGljIHN5bmNgIHB1Ymxpc2ggZGVjbGFyYXRpb25zKS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoZXJPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FjdG9yRm9yZWlnbktleUNvbHVtbl0gLSBTeW5jIG1vZGVsIGNvbHVtbiBsaW5raW5nIHJvd3MgdG8gYSBkZXZpY2UgYWN0b3IuIFB1Ymxpc2hlZCBzZXJ2ZXItb3JpZ2luIHJvd3Mgc2V0IGl0IHRvIG51bGwgKG5vIGRldmljZSB0byBlY2hvKS4gRGVmYXVsdHMgdG8gXCJhdXRoZW50aWNhdGlvbl90b2tlbl9pZFwiLlxuICogQHByb3BlcnR5IHsoYnJvYWRjYXN0OiB7Y2hhbm5lbDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsID8+LCBib2R5OiA/fSkgPT4gUHJvbWlzZTx2b2lkPn0gW2Jyb2FkY2FzdGVyXSAtIERlbGl2ZXJzIGRlY2xhcmVkIGJyb2FkY2FzdHMuIERlZmF1bHRzIHRvIHRoZSBjb25maWd1cmF0aW9uJ3MgY2hhbm5lbCBicm9hZGNhc3QuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2NvbmZpZ3VyYXRpb25dIC0gQ29uZmlndXJhdGlvbiBvd25pbmcgdGhlIHJlZ2lzdGVyZWQgbW9kZWxzLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHsoZXJyb3I6IEVycm9yKSA9PiB2b2lkfSBbb25FcnJvcl0gLSBSZXBvcnRzIHBvc3QtY29tbWl0IHB1Ymxpc2ggZmFpbHVyZXMuIERlZmF1bHRzIHRvIGxvdWQgbG9nZ2luZy5cbiAqIEBwcm9wZXJ0eSB7P30gW3N5bmNNb2RlbF0gLSBTeW5jL2NoYW5nZSBtb2RlbCBvdmVycmlkZS4gRGVmYXVsdHMgdG8gdGhlIHJlZ2lzdGVyZWQgXCJTeW5jXCIgbW9kZWwuXG4gKi9cblxuLyoqXG4gKiBJbnRlcm5hbCBkZXJpdmVkIHB1Ymxpc2ggcG9saWN5IGZvciBvbmUgcmVzb3VyY2Ug4oCUIG5vdCBhbiBhcHAtZmFjaW5nIEFQSS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoZXJSZXNvdXJjZUNvbmZpZ1xuICogQHByb3BlcnR5IHtTeW5jUHVibGlzaEJyb2FkY2FzdFtdIHwgdW5kZWZpbmVkfSBicm9hZGNhc3RzIC0gRGVjbGFyZWQgYnJvYWRjYXN0cy5cbiAqIEBwcm9wZXJ0eSB7U3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZ1tcImV2ZW50SWRcIl0gfCB1bmRlZmluZWR9IGV2ZW50SWQgLSBFdmVudCBzY29wZSByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7P30gbW9kZWxDbGFzcyAtIFNlcnZlciBtb2RlbCBjbGFzcyBmb3IgdGhpcyByZXNvdXJjZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59IG9wZXJhdGlvbnMgLSBQdWJsaXNoZWQgb3BlcmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZXNvdXJjZVR5cGUgLSBQdWJsaXNoZWQgcmVzb3VyY2UgdHlwZS5cbiAqIEBwcm9wZXJ0eSB7U3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZ1tcInNlcmlhbGl6ZVwiXX0gc2VyaWFsaXplIC0gUGF5bG9hZCBzbmFwc2hvdCBidWlsZGVyLlxuICovXG5cbmV4cG9ydCB7fVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wdWJsaXNoZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXB1Ymxpc2hlci10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQXJncyByZXNvbHZlZCBhZ2FpbnN0IGEgcHVibGlzaCBkZWNsYXJhdGlvbidzIGRlcHJlY2F0ZWQgYnJvYWRjYXN0cyBhZnRlciBhXG4gKiBwdWJsaXNoZWQgc2VydmVyLXNpZGUgbXV0YXRpb24gY29tbWl0cy5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJnc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCA/Pn0gZGF0YSAtIFBheWxvYWQgc25hcHNob3R0ZWQgdGhyb3VnaCB0aGUgZGVjbGFyYXRpb24ncyBgc2VyaWFsaXplKHJlY29yZClgIGF0IG11dGF0aW9uIHRpbWUuXG4gKiBAcHJvcGVydHkge1wiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCJ9IG9wZXJhdGlvbiAtIE11dGF0aW9uIG9wZXJhdGlvbiB0aGF0IHB1Ymxpc2hlZC5cbiAqIEBwcm9wZXJ0eSB7P30gcmVjb3JkIC0gTXV0YXRlZCBzZXJ2ZXIgbW9kZWwgcmVjb3JkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlc291cmNlSWQgLSBQdWJsaXNoZWQgcmVzb3VyY2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VUeXBlIC0gUHVibGlzaGVkIHJlc291cmNlIHR5cGUuXG4gKiBAcHJvcGVydHkgez99IHN5bmNSb3cgLSBVcHNlcnRlZCBzeW5jL2NoYW5nZSByb3cuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3luY1R5cGUgLSBQdWJsaXNoZWQgc3luYyB0eXBlIChcInVwZGF0ZVwiIGZvciBjcmVhdGVzL3VwZGF0ZXMsIFwiZGVsZXRlXCIgZm9yIGRlc3Ryb3lzKS5cbiAqL1xuXG4vKipcbiAqIE9uZSBkZWNsYXJhdGl2ZSBicm9hZGNhc3QgZmFubmVkIG91dCBhZnRlciBhIHB1Ymxpc2hlZCBzZXJ2ZXItc2lkZSBtdXRhdGlvblxuICogY29tbWl0cyDigJQgc2FtZSBzaGFwZSB0aGUgcmVwbGF5IHNlcnZpY2UncyBpbmplY3RlZCBicm9hZGNhc3RlciBjb25zdW1lcy5cbiAqIEBkZXByZWNhdGVkIFB1Ymxpc2hpbmcgYnJvYWRjYXN0cyB0aGUgc3RhbmRhcmQgc3luYyBlbnZlbG9wZSBvbiB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBhdXRvbWF0aWNhbGx5OyBkZWNsYXJlIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMgb25seSBmb3IgbGVnYWN5IGNoYW5uZWxzIG9sZCBhcHAgdmVyc2lvbnMgc3RpbGwgc3Vic2NyaWJlLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hCcm9hZGNhc3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgKChhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IHN0cmluZyl9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUgb3IgcmVzb2x2ZXIuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IFJlY29yZDxzdHJpbmcsID8+fSBicm9hZGNhc3RQYXJhbXMgLSBDaGFubmVsIHJvdXRpbmcgcGFyYW1zLlxuICogQHByb3BlcnR5IHsoYXJnczogU3luY1B1Ymxpc2hCcm9hZGNhc3RBcmdzKSA9PiA/fSBib2R5IC0gQnJvYWRjYXN0IGJvZHkuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IGJvb2xlYW59IFt3aGVuXSAtIE9wdGlvbmFsIGdhdGU7IHNraXBwZWQgd2hlbiBpdCByZXR1cm5zIGZhbHNlLlxuICovXG5cbi8qKlxuICogU2VydmVyLXNpZGUgcHVibGlzaCBkZWNsYXJhdGlvbiBvbiBhIG1vZGVsJ3MgYHN0YXRpYyBzeW5jYCwgY29uc3VtZWQgYnlcbiAqIGBTeW5jUHVibGlzaGVyLmZyb21Db25maWd1cmF0aW9uKC4uLilgLiBQdWJsaXNoaW5nIGlzIG9uIGZvciBtb2RlbHNcbiAqIGRlY2xhcmluZyBpdCAoc2VydmVyLXNpZGUgY3JlYXRlcyBhbmQgdXBkYXRlcyB3cml0ZSB0byB0aGUgc3luYyBjaGFuZ2VcbiAqIGZlZWQgYW5kIGJyb2FkY2FzdCB0aGUgc3RhbmRhcmQgc3luYyBlbnZlbG9wZSBvbiB0aGUgZnJhbWV3b3JrIHN5bmNcbiAqIGNoYW5uZWwgYXV0b21hdGljYWxseSBvbmNlIHRoZWlyIHRyYW5zYWN0aW9uIGNvbW1pdHMpOyBgcHVibGlzaDogdHJ1ZWBcbiAqIG9wdHMgaW4gd2l0aCBhbGwgZGVmYXVsdHMgYW5kIGBwdWJsaXNoOiBmYWxzZWAgb3B0cyBhIG1vZGVsIG91dCBleHBsaWNpdGx5LlxuICogQHRlbXBsYXRlIFtUTW9kZWw9YW55XVxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZ1xuICogQHByb3BlcnR5IHsocmVjb3JkOiBUTW9kZWwpID0+IFJlY29yZDxzdHJpbmcsID8+IHwgUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/Pj59IFtzZXJpYWxpemVdIC0gQnVpbGRzIHRoZSBwdWJsaXNoZWQgcGF5bG9hZCBzbmFwc2hvdCBmcm9tIHRoZSBtdXRhdGVkIHJlY29yZCAoc25hcHNob3R0ZWQgYXQgbXV0YXRpb24gdGltZSkuIERlZmF1bHRzIHRvIHRoZSByZWNvcmQncyBhdHRyaWJ1dGVzIHdpdGggRGF0ZSB2YWx1ZXMgc2VyaWFsaXplZCB0byBJU08gc3RyaW5ncy5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gW3Njb3BlQXR0cmlidXRlc10gLSBSZWNvcmQtYXR0cmlidXRlIG5hbWUgb3ZlcnJpZGVzIHBlciBzY29wZSBhdHRyaWJ1dGUgZGVjbGFyZWQgb24gdGhlIHN5bmMgbW9kZWwncyBgc3RhdGljIHN5bmNTY29wZUF0dHJpYnV0ZXNgLiBCeSBkZWZhdWx0IGVhY2ggZGVjbGFyZWQgc2NvcGUgYXR0cmlidXRlIHJlYWRzIHRoZSByZWNvcmQncyBhdHRyaWJ1dGUgb2YgdGhlIHNhbWUgbmFtZSB3aGVuIHRoZSBtb2RlbCBoYXMgb25lLCBlbHNlIHRoZSByZWNvcmQncyBvd24gaWQgKHNjb3BlLXJvb3QgbW9kZWxzKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgKChyZWNvcmQ6IFRNb2RlbCkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4pfSBbZXZlbnRJZF0gLSBEZXByZWNhdGVkIDEuMC41MDMgZm9ybTogYXR0cmlidXRlLW5hbWUgc3RyaW5nIChvciByZXNvbHZlciBmdW5jdGlvbikgcGVyc2lzdGVkIHRvIGEgZml4ZWQgZXZlbnRfaWQgc3luYy1yb3cgY29sdW1uIGFuZCBicm9hZGNhc3QgYXMgYSBmaXhlZCBgZXZlbnRJZGAgc2NvcGluZyBwYXJhbS4gRGVjbGFyZSBgc3RhdGljIHN5bmNTY29wZUF0dHJpYnV0ZXNgIG9uIHRoZSBzeW5jIG1vZGVsIHBsdXMgYHNjb3BlQXR0cmlidXRlc2Agb3ZlcnJpZGVzIGluc3RlYWQuXG4gKiBAcHJvcGVydHkge1N5bmNQdWJsaXNoQnJvYWRjYXN0W119IFticm9hZGNhc3RzXSAtIERlcHJlY2F0ZWQ6IGRlY2xhcmF0aXZlIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMgZmFubmVkIG91dCBhZnRlciB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBicm9hZGNhc3QuIFRoZSBmcmFtZXdvcmsgYnJvYWRjYXN0IGhhcHBlbnMgYXV0b21hdGljYWxseTsga2VlcCB0aGlzIG9ubHkgZm9yIGxlZ2FjeSBjaGFubmVscyBvbGQgYXBwIHZlcnNpb25zIHN0aWxsIHN1YnNjcmliZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59IFtvcGVyYXRpb25zXSAtIFB1Ymxpc2hlZCBvcGVyYXRpb25zLiBEZWZhdWx0cyB0byBjcmVhdGVzIGFuZCB1cGRhdGVzOyBkZXN0cm95cyBhcmUgb3B0LWluIGJlY2F1c2UgYSBzZXJ2ZXIgZGVzdHJveSBpcyBvZnRlbiBjbGVhbnVwIHJhdGhlciB0aGFuIGEgc3luY2VkIGRlbGV0ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVzb3VyY2VUeXBlXSAtIFB1Ymxpc2hlZCByZXNvdXJjZSB0eXBlLiBEZWZhdWx0cyB0byB0aGUgbW9kZWwgbmFtZS5cbiAqL1xuXG4vKipcbiAqIE1vZGVsLWxldmVsIHB1Ymxpc2ggZGVjbGFyYXRpb24gdmFsdWU6IGB0cnVlYCBwdWJsaXNoZXMgd2l0aCBhbGwgZGVmYXVsdHMsXG4gKiBgZmFsc2VgIG9wdHMgb3V0IGV4cGxpY2l0bHksIGFuIG9iamVjdCBjdXN0b21pemVzIHRoZSBwdWJsaXNoZWQgcGF5bG9hZCBhbmQgc2NvcGluZy5cbiAqIEB0ZW1wbGF0ZSBbVE1vZGVsPWFueV1cbiAqIEB0eXBlZGVmIHtib29sZWFuIHwgU3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZzxUTW9kZWw+fSBTeW5jUHVibGlzaERlY2xhcmF0aW9uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhIHN5bmMgcHVibGlzaGVyLiBQdWJsaXNoZWQgcmVzb3VyY2VzIGFyZSBkZXJpdmVkIGZyb21cbiAqIHRoZSBjb25maWd1cmF0aW9uJ3MgcmVnaXN0ZXJlZCBtb2RlbHMgKGBzdGF0aWMgc3luY2AgcHVibGlzaCBkZWNsYXJhdGlvbnMpLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYWN0b3JGb3JlaWduS2V5Q29sdW1uXSAtIFN5bmMgbW9kZWwgY29sdW1uIGxpbmtpbmcgcm93cyB0byBhIGRldmljZSBhY3Rvci4gUHVibGlzaGVkIHNlcnZlci1vcmlnaW4gcm93cyBzZXQgaXQgdG8gbnVsbCAobm8gZGV2aWNlIHRvIGVjaG8pLiBEZWZhdWx0cyB0byBcImF1dGhlbnRpY2F0aW9uX3Rva2VuX2lkXCIuXG4gKiBAcHJvcGVydHkgeyhicm9hZGNhc3Q6IHtjaGFubmVsOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgPz4sIGJvZHk6ID99KSA9PiBQcm9taXNlPHZvaWQ+fSBbYnJvYWRjYXN0ZXJdIC0gRGVsaXZlcnMgdGhlIGZyYW1ld29yayBzeW5jIGNoYW5uZWwgYnJvYWRjYXN0IGFuZCBhbnkgZGVwcmVjYXRlZCBkZWNsYXJlZCBicm9hZGNhc3RzLiBEZWZhdWx0cyB0byB0aGUgY29uZmlndXJhdGlvbidzIGNoYW5uZWwgYnJvYWRjYXN0LlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFtjb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSByZWdpc3RlcmVkIG1vZGVscy4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7KGVycm9yOiBFcnJvcikgPT4gdm9pZH0gW29uRXJyb3JdIC0gUmVwb3J0cyBwb3N0LWNvbW1pdCBwdWJsaXNoIGZhaWx1cmVzLiBEZWZhdWx0cyB0byBsb3VkIGxvZ2dpbmcuXG4gKiBAcHJvcGVydHkgez99IFtzeW5jTW9kZWxdIC0gU3luYy9jaGFuZ2UgbW9kZWwgb3ZlcnJpZGUuIERlZmF1bHRzIHRvIHRoZSByZWdpc3RlcmVkIFwiU3luY1wiIG1vZGVsLlxuICovXG5cbi8qKlxuICogT25lIGRlcml2ZWQgc2NvcGUtcGFydGl0aW9uIHNvdXJjZSBmb3IgYSBwdWJsaXNoZWQgcmVzb3VyY2Ug4oCUIG5vdCBhblxuICogYXBwLWZhY2luZyBBUEkuIFRoZSB2YWx1ZSBpcyBwZXJzaXN0ZWQgdG8gdGhlIHN5bmMgcm93J3MgYGNvbHVtbk5hbWVgIGFuZFxuICogYnJvYWRjYXN0IHVuZGVyIGBzY29wZUF0dHJpYnV0ZWAgb24gdGhlIGZyYW1ld29yayBzeW5jIGNoYW5uZWwuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaGVyU2NvcGVQbGFuRW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gU3luYy1yb3cgY29sdW1uIHBlcnNpc3RpbmcgdGhlIHNjb3BlIHZhbHVlLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSByZWNvcmRBdHRyaWJ1dGUgLSBSZWNvcmQgYXR0cmlidXRlIHJlYWQgZm9yIHRoZSBzY29wZSB2YWx1ZSwgb3IgbnVsbCB3aGVuIHRoZSByZWNvcmQncyBvd24gaWQgaXMgdGhlIHNjb3BlIChzY29wZS1yb290IG1vZGVscykuXG4gKiBAcHJvcGVydHkgeygocmVjb3JkOiA/KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBudWxsPikgfCB1bmRlZmluZWR9IHJlc29sdmVyIC0gRGVwcmVjYXRlZCBldmVudElkIHJlc29sdmVyIGZ1bmN0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNjb3BlQXR0cmlidXRlIC0gU2NvcGUgYXR0cmlidXRlIG5hbWUgYnJvYWRjYXN0IGFzIHRoZSBmcmFtZXdvcmsgY2hhbm5lbCBzY29waW5nIHBhcmFtLlxuICovXG5cbi8qKlxuICogSW50ZXJuYWwgZGVyaXZlZCBwdWJsaXNoIHBvbGljeSBmb3Igb25lIHJlc291cmNlIOKAlCBub3QgYW4gYXBwLWZhY2luZyBBUEkuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaGVyUmVzb3VyY2VDb25maWdcbiAqIEBwcm9wZXJ0eSB7U3luY1B1Ymxpc2hCcm9hZGNhc3RbXSB8IHVuZGVmaW5lZH0gYnJvYWRjYXN0cyAtIERlcHJlY2F0ZWQgZGVjbGFyZWQgYXBwLWNoYW5uZWwgYnJvYWRjYXN0cy5cbiAqIEBwcm9wZXJ0eSB7P30gbW9kZWxDbGFzcyAtIFNlcnZlciBtb2RlbCBjbGFzcyBmb3IgdGhpcyByZXNvdXJjZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59IG9wZXJhdGlvbnMgLSBQdWJsaXNoZWQgb3BlcmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8U3luY1B1Ymxpc2hlclNjb3BlUGxhbkVudHJ5Pn0gc2NvcGVQbGFuIC0gRGVyaXZlZCBzY29wZS1wYXJ0aXRpb24gcGxhbi5cbiAqIEBwcm9wZXJ0eSB7KHJlY29yZDogPykgPT4gUmVjb3JkPHN0cmluZywgPz4gfCBQcm9taXNlPFJlY29yZDxzdHJpbmcsID8+Pn0gc2VyaWFsaXplIC0gUGF5bG9hZCBzbmFwc2hvdCBidWlsZGVyICh0aGUgZGVjbGFyYXRpb24ncyBzZXJpYWxpemUgb3IgdGhlIGRlZmF1bHQgYXR0cmlidXRlIHNlcmlhbGl6ZXIpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlc291cmNlVHlwZSAtIFB1Ymxpc2hlZCByZXNvdXJjZSB0eXBlLlxuICovXG5cbmV4cG9ydCB7fVxuIl19
@@ -5,16 +5,23 @@
5
5
  * Server models declare what to publish through `static sync`'s `publish`
6
6
  * key, and Velocious writes every committed server-side change to the sync
7
7
  * change feed (model-backed Sync-row upsert with server re-sequencing) and
8
- * fans out the declared broadcasts, so devices receive server-origin changes
9
- * without app code calling manual upsert/broadcast helpers:
8
+ * broadcasts the standard sync envelope (`{echoOrigin, syncs: [...]}`) on the
9
+ * framework sync channel ({@link VELOCIOUS_SYNC_CHANNEL}) scoped by the
10
+ * change's derived scope-partition values, so devices receive server-origin
11
+ * changes without app code declaring channels or calling manual
12
+ * upsert/broadcast helpers:
10
13
  *
11
- * static sync = {
12
- * publish: {
13
- * serialize: (event) => ({id: event.id(), eventPin: event.eventPin()}),
14
- * eventId: (event) => event.id(),
15
- * broadcasts: [{channel: "ticket-scans", broadcastParams: ..., body: ...}]
16
- * }
17
- * }
14
+ * static sync = {publish: true} // default payload (attributes) + default scope partition
15
+ * static sync = {publish: {serialize: (record) => ({id: record.id(), pin: record.pin()})}}
16
+ *
17
+ * The scope partition comes from the sync model's `static
18
+ * syncScopeAttributes` declaration (for example `["eventId"]` or
19
+ * `["accountId"]` — Velocious has no built-in partition name): each declared
20
+ * scope attribute reads the record's attribute of the same name when the
21
+ * model has one, else the record's own id (scope-root models), overridable
22
+ * per model through `publish: {scopeAttributes: {accountId: "ownerId"}}`.
23
+ * The pre-framework-channel `broadcasts` list and the `eventId`
24
+ * string/resolver-function declaration forms keep working but are deprecated.
18
25
  *
19
26
  * Replayed device mutations never double-publish: the framework's routed
20
27
  * replay apply marks its written records through `markServerApply(record)`
@@ -97,6 +104,22 @@ export default class SyncPublisher {
97
104
  operation: "create" | "update" | "destroy";
98
105
  resourceConfig: import("./sync-publisher-types.js").SyncPublisherResourceConfig;
99
106
  }): (record: unknown) => Promise<void>;
107
+ /**
108
+ * Resolves the scope-partition values for one published mutation from the
109
+ * resource's derived scope plan: each entry reads its record attribute (or
110
+ * the record's own id for scope-root models, or the deprecated resolver
111
+ * function). The values are persisted onto the sync row's partition columns
112
+ * and broadcast as the framework sync channel's scoping params.
113
+ * @param {{record: ?, resourceConfig: import("./sync-publisher-types.js").SyncPublisherResourceConfig}} args - Mutated record and resource config.
114
+ * @returns {Promise<{columns: Record<string, string | null>, params: Record<string, string | null>}>} Scope values keyed by sync-row column and by scope attribute.
115
+ */
116
+ publishedScopeValues({ record, resourceConfig }: {
117
+ record: unknown;
118
+ resourceConfig: import("./sync-publisher-types.js").SyncPublisherResourceConfig;
119
+ }): Promise<{
120
+ columns: Record<string, string | null>;
121
+ params: Record<string, string | null>;
122
+ }>;
100
123
  /**
101
124
  * Upserts the published server-origin sync row for a resource identity:
102
125
  * server-origin rows carry a null actor column (no device to echo the
@@ -1 +1 @@
1
- {"version":3,"file":"sync-publisher.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher.js"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAgDE;;;;;;OAMG;IACH,yCAJW,aAAa,YACb,IAAI,CAAC,OAAO,2BAA2B,EAAE,oBAAoB,EAAE,eAAe,CAAC,GAC7E,aAAa,CAIzB;IAED;;;;;;;OAOG;IACH,6CAHW,aAAa,GACX,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAezC;IA/ED;;;;;;;;OAQG;IACH,sBAFW,OAAO,2BAA2B,EAAE,oBAAoB,EAsClE;IAPC,0VAA0V;IAC1V,QADW;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAAC,aAAa,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;QAAC,SAAS,EAAE,OAAC,CAAA;KAAC,CACnO;IACnH,2IAA2I;IAC3I,qBADW,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,CAC1G;IAC7B,4BAA4B;IAC5B,SADW,MAAM,GAAG,IAAI,CACL;IACnB,kBAAqB;IAqCvB;;;;;OAKG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,QAFa,IAAI,CAShB;IAED;;;;;;;;;;;;;OAaG;IACH,yDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,cAAc,EAAE,OAAO,2BAA2B,EAAE,2BAA2B,CAAA;KAAC,GAC3H,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAyCxC;IAED;;;;;;;OAOG;IACH,mCAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,OAAO,CAAC,OAAC,CAAC,CAYtB;IAED;;;;;OAKG;IACH,eAFa,WAAW,CAAC,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAShG;IAED;;;;;;;;;;;OAWG;IACH,8BAHW,KAAK,GACH,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,UAFa,MAAM,CAMlB;CACF;0BAjSyB,qBAAqB;mBAC5B,cAAc"}
1
+ {"version":3,"file":"sync-publisher.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;IAgDE;;;;;;OAMG;IACH,yCAJW,aAAa,YACb,IAAI,CAAC,OAAO,2BAA2B,EAAE,oBAAoB,EAAE,eAAe,CAAC,GAC7E,aAAa,CAIzB;IAED;;;;;;;OAOG;IACH,6CAHW,aAAa,GACX,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAezC;IA/ED;;;;;;;;OAQG;IACH,sBAFW,OAAO,2BAA2B,EAAE,oBAAoB,EAsClE;IAPC,0VAA0V;IAC1V,QADW;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAAC,aAAa,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;QAAC,SAAS,EAAE,OAAC,CAAA;KAAC,CACnO;IACnH,2IAA2I;IAC3I,qBADW,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,CAC1G;IAC7B,4BAA4B;IAC5B,SADW,MAAM,GAAG,IAAI,CACL;IACnB,kBAAqB;IAqCvB;;;;;OAKG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,QAFa,IAAI,CAShB;IAED;;;;;;;;;;;;;OAaG;IACH,yDAHW;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,cAAc,EAAE,OAAO,2BAA2B,EAAE,2BAA2B,CAAA;KAAC,GAC3H,CAAC,MAAM,EAAE,OAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CA8CxC;IAED;;;;;;;;OAQG;IACH,iDAHW;QAAC,MAAM,EAAE,OAAC,CAAC;QAAC,cAAc,EAAE,OAAO,2BAA2B,EAAE,2BAA2B,CAAA;KAAC,GAC1F,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;KAAC,CAAC,CA2BpG;IAED;;;;;;;OAOG;IACH,mCAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,OAAO,CAAC,OAAC,CAAC,CAYtB;IAED;;;;;OAKG;IACH,eAFa,WAAW,CAAC,OAAO,2BAA2B,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAShG;IAED;;;;;;;;;;;OAWG;IACH,8BAHW,KAAK,GACH,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,UAFa,MAAM,CAMlB;CACF;0BAnVyB,qBAAqB;mBAC5B,cAAc"}