velocious 1.0.663 → 1.0.665
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/background-jobs/client.js +36 -6
- package/build/configuration-types.js +3 -3
- package/build/database/query/alter-table-base.js +11 -1
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/client.js +35 -6
- package/build/src/configuration-types.d.ts +8 -4
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +4 -4
- package/build/src/database/query/alter-table-base.d.ts.map +1 -1
- package/build/src/database/query/alter-table-base.js +12 -2
- package/build/src/sync/sync-api-client.d.ts +36 -10
- package/build/src/sync/sync-api-client.d.ts.map +1 -1
- package/build/src/sync/sync-api-client.js +58 -14
- package/build/src/sync/sync-client-types.d.ts +41 -2
- package/build/src/sync/sync-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-client-types.js +20 -3
- package/build/src/sync/sync-client.d.ts +112 -3
- package/build/src/sync/sync-client.d.ts.map +1 -1
- package/build/src/sync/sync-client.js +306 -60
- package/build/src/sync/sync-publisher-types.d.ts +36 -3
- package/build/src/sync/sync-publisher-types.d.ts.map +1 -1
- package/build/src/sync/sync-publisher-types.js +16 -2
- package/build/src/sync/sync-publisher.d.ts +22 -3
- package/build/src/sync/sync-publisher.d.ts.map +1 -1
- package/build/src/sync/sync-publisher.js +134 -13
- package/build/src/sync/sync-realtime-bridge.d.ts +11 -5
- package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -1
- package/build/src/sync/sync-realtime-bridge.js +37 -13
- package/build/src/sync/sync-scope-store.d.ts +32 -0
- package/build/src/sync/sync-scope-store.d.ts.map +1 -1
- package/build/src/sync/sync-scope-store.js +74 -4
- package/build/sync/sync-api-client.js +58 -13
- package/build/sync/sync-client-types.js +22 -2
- package/build/sync/sync-client.js +333 -63
- package/build/sync/sync-publisher-types.js +17 -1
- package/build/sync/sync-publisher.js +156 -15
- package/build/sync/sync-realtime-bridge.js +37 -12
- package/build/sync/sync-scope-store.js +79 -3
- package/package.json +1 -1
- package/src/background-jobs/client.js +36 -6
- package/src/configuration-types.js +3 -3
- package/src/database/query/alter-table-base.js +11 -1
- package/src/sync/sync-api-client.js +58 -13
- package/src/sync/sync-client-types.js +22 -2
- package/src/sync/sync-client.js +333 -63
- package/src/sync/sync-publisher-types.js +17 -1
- package/src/sync/sync-publisher.js +156 -15
- package/src/sync/sync-realtime-bridge.js +37 -12
- package/src/sync/sync-scope-store.js +79 -3
|
@@ -52,9 +52,9 @@ export type SyncPublishDeclarationConfig<TModel = any> = {
|
|
|
52
52
|
*/
|
|
53
53
|
serialize?: (record: TModel) => Record<string, ReturnType<typeof JSON.parse>> | Promise<Record<string, ReturnType<typeof JSON.parse>>>;
|
|
54
54
|
/**
|
|
55
|
-
* -
|
|
55
|
+
* - Static record-attribute name overrides per scope attribute declared on the sync model's `static syncScopeAttributes`, or one async-capable resolver returning every declared scope value from the mutation's connection context. Static mappings retain the default for omitted attributes; computed results must include every declared attribute.
|
|
56
56
|
*/
|
|
57
|
-
scopeAttributes?: Record<string, string>;
|
|
57
|
+
scopeAttributes?: Record<string, string> | SyncPublisherScopeAttributesResolver<TModel>;
|
|
58
58
|
/**
|
|
59
59
|
* - 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.
|
|
60
60
|
*/
|
|
@@ -72,6 +72,21 @@ export type SyncPublishDeclarationConfig<TModel = any> = {
|
|
|
72
72
|
*/
|
|
73
73
|
resourceType?: string;
|
|
74
74
|
};
|
|
75
|
+
export type SyncPublisherScopeResolverContext<TModel = any> = {
|
|
76
|
+
/**
|
|
77
|
+
* - Configuration owning the publisher.
|
|
78
|
+
*/
|
|
79
|
+
configuration: import("../configuration.js").default;
|
|
80
|
+
/**
|
|
81
|
+
* - Active database connection that owns the published mutation.
|
|
82
|
+
*/
|
|
83
|
+
connection: ReturnType<typeof JSON.parse>;
|
|
84
|
+
/**
|
|
85
|
+
* - Published model record.
|
|
86
|
+
*/
|
|
87
|
+
record: TModel;
|
|
88
|
+
};
|
|
89
|
+
export type SyncPublisherScopeAttributesResolver<TModel = any> = (context: SyncPublisherScopeResolverContext<TModel>) => Record<string, string | number | null> | Promise<Record<string, string | number | null>>;
|
|
75
90
|
export type SyncPublishDeclaration<TModel = any> = boolean | SyncPublishDeclarationConfig<TModel>;
|
|
76
91
|
export type SyncPublisherOptions = {
|
|
77
92
|
/**
|
|
@@ -130,6 +145,10 @@ export type SyncPublisherResourceConfig = {
|
|
|
130
145
|
* - Published operations.
|
|
131
146
|
*/
|
|
132
147
|
operations: Array<"create" | "update" | "destroy">;
|
|
148
|
+
/**
|
|
149
|
+
* - Computed scope values resolver, when declared.
|
|
150
|
+
*/
|
|
151
|
+
scopeAttributesResolver: SyncPublisherScopeAttributesResolver | undefined;
|
|
133
152
|
/**
|
|
134
153
|
* - Derived scope-partition plan.
|
|
135
154
|
*/
|
|
@@ -175,12 +194,25 @@ export type SyncPublisherResourceConfig = {
|
|
|
175
194
|
* @template [TModel=any]
|
|
176
195
|
* @typedef {object} SyncPublishDeclarationConfig
|
|
177
196
|
* @property {(record: TModel) => Record<string, ReturnType<typeof JSON.parse>> | Promise<Record<string, ReturnType<typeof JSON.parse>>>} [serialize] - 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.
|
|
178
|
-
* @property {Record<string, string>} [scopeAttributes] -
|
|
197
|
+
* @property {Record<string, string> | SyncPublisherScopeAttributesResolver<TModel>} [scopeAttributes] - Static record-attribute name overrides per scope attribute declared on the sync model's `static syncScopeAttributes`, or one async-capable resolver returning every declared scope value from the mutation's connection context. Static mappings retain the default for omitted attributes; computed results must include every declared attribute.
|
|
179
198
|
* @property {string | ((record: TModel) => string | number | null | Promise<string | number | null>)} [eventId] - 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.
|
|
180
199
|
* @property {SyncPublishBroadcast[]} [broadcasts] - 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.
|
|
181
200
|
* @property {Array<"create" | "update" | "destroy">} [operations] - Published operations. Defaults to creates and updates; destroys are opt-in because a server destroy is often cleanup rather than a synced delete.
|
|
182
201
|
* @property {string} [resourceType] - Published resource type. Defaults to the model name.
|
|
183
202
|
*/
|
|
203
|
+
/**
|
|
204
|
+
* Publishing context passed once to a computed scope-attributes resolver.
|
|
205
|
+
* @template [TModel=any]
|
|
206
|
+
* @typedef {object} SyncPublisherScopeResolverContext
|
|
207
|
+
* @property {import("../configuration.js").default} configuration - Configuration owning the publisher.
|
|
208
|
+
* @property {ReturnType<typeof JSON.parse>} connection - Active database connection that owns the published mutation.
|
|
209
|
+
* @property {TModel} record - Published model record.
|
|
210
|
+
*/
|
|
211
|
+
/**
|
|
212
|
+
* Async-capable resolver returning every declared sync scope attribute.
|
|
213
|
+
* @template [TModel=any]
|
|
214
|
+
* @typedef {(context: SyncPublisherScopeResolverContext<TModel>) => Record<string, string | number | null> | Promise<Record<string, string | number | null>>} SyncPublisherScopeAttributesResolver
|
|
215
|
+
*/
|
|
184
216
|
/**
|
|
185
217
|
* Model-level publish declaration value: `true` publishes with all defaults,
|
|
186
218
|
* `false` opts out explicitly, an object customizes the published payload and scoping.
|
|
@@ -213,6 +245,7 @@ export type SyncPublisherResourceConfig = {
|
|
|
213
245
|
* @property {SyncPublishBroadcast[] | undefined} broadcasts - Deprecated declared app-channel broadcasts.
|
|
214
246
|
* @property {ReturnType<typeof JSON.parse>} modelClass - Server model class for this resource.
|
|
215
247
|
* @property {Array<"create" | "update" | "destroy">} operations - Published operations.
|
|
248
|
+
* @property {SyncPublisherScopeAttributesResolver | undefined} scopeAttributesResolver - Computed scope values resolver, when declared.
|
|
216
249
|
* @property {Array<SyncPublisherScopePlanEntry>} scopePlan - Derived scope-partition plan.
|
|
217
250
|
* @property {(record: ReturnType<typeof JSON.parse>) => Record<string, ReturnType<typeof JSON.parse>> | Promise<Record<string, ReturnType<typeof JSON.parse>>>} serialize - Payload snapshot builder (the declaration's serialize or the default attribute serializer).
|
|
218
251
|
* @property {string} resourceType - Published resource type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-publisher-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher-types.js"],"names":[],"mappings":"AAKG,YAAkB,wBAAwB,GAC1C;;;;IAA0D,IAAI,EAAnD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CACxD;;;;IAA4C,SAAS,EAA1C,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAC1C;;;;IAA0C,MAAM,EAArC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CACxC;;;;IAAmB,UAAU,EAAlB,MAAM,CACjB;;;;IAAmB,YAAY,EAApB,MAAM,CACjB;;;;IAA0C,OAAO,EAAtC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CACxC;;;;IAAmB,QAAQ,EAAhB,MAAM,CACnB;CAAA,CAAA;AAME,YAAkB,oBAAoB,GACtC;;;;IAAkE,OAAO,EAA9D,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC,CAChE;;;;IAA8F,eAAe,EAAlG,CAAC,IAAI,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5F;;;;IAA8E,IAAI,EAAvE,CAAC,IAAI,EAAE,wBAAwB,KAAK,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAC5E;;;;IAAyD,IAAI,AAA7D,CACF,EADa,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CACxD;CAAA,CAAA;AAUE,YAAkB,4BAA4B,CADnC,MAAM,GAAC,GAAI,IAEtB;;;;IAAwI,SAAS,AAAjJ,CACA,EADW,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACrI;;;;
|
|
1
|
+
{"version":3,"file":"sync-publisher-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher-types.js"],"names":[],"mappings":"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"}
|
|
@@ -31,12 +31,25 @@
|
|
|
31
31
|
* @template [TModel=any]
|
|
32
32
|
* @typedef {object} SyncPublishDeclarationConfig
|
|
33
33
|
* @property {(record: TModel) => Record<string, ReturnType<typeof JSON.parse>> | Promise<Record<string, ReturnType<typeof JSON.parse>>>} [serialize] - 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.
|
|
34
|
-
* @property {Record<string, string>} [scopeAttributes] -
|
|
34
|
+
* @property {Record<string, string> | SyncPublisherScopeAttributesResolver<TModel>} [scopeAttributes] - Static record-attribute name overrides per scope attribute declared on the sync model's `static syncScopeAttributes`, or one async-capable resolver returning every declared scope value from the mutation's connection context. Static mappings retain the default for omitted attributes; computed results must include every declared attribute.
|
|
35
35
|
* @property {string | ((record: TModel) => string | number | null | Promise<string | number | null>)} [eventId] - 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.
|
|
36
36
|
* @property {SyncPublishBroadcast[]} [broadcasts] - 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.
|
|
37
37
|
* @property {Array<"create" | "update" | "destroy">} [operations] - Published operations. Defaults to creates and updates; destroys are opt-in because a server destroy is often cleanup rather than a synced delete.
|
|
38
38
|
* @property {string} [resourceType] - Published resource type. Defaults to the model name.
|
|
39
39
|
*/
|
|
40
|
+
/**
|
|
41
|
+
* Publishing context passed once to a computed scope-attributes resolver.
|
|
42
|
+
* @template [TModel=any]
|
|
43
|
+
* @typedef {object} SyncPublisherScopeResolverContext
|
|
44
|
+
* @property {import("../configuration.js").default} configuration - Configuration owning the publisher.
|
|
45
|
+
* @property {ReturnType<typeof JSON.parse>} connection - Active database connection that owns the published mutation.
|
|
46
|
+
* @property {TModel} record - Published model record.
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* Async-capable resolver returning every declared sync scope attribute.
|
|
50
|
+
* @template [TModel=any]
|
|
51
|
+
* @typedef {(context: SyncPublisherScopeResolverContext<TModel>) => Record<string, string | number | null> | Promise<Record<string, string | number | null>>} SyncPublisherScopeAttributesResolver
|
|
52
|
+
*/
|
|
40
53
|
/**
|
|
41
54
|
* Model-level publish declaration value: `true` publishes with all defaults,
|
|
42
55
|
* `false` opts out explicitly, an object customizes the published payload and scoping.
|
|
@@ -69,9 +82,10 @@
|
|
|
69
82
|
* @property {SyncPublishBroadcast[] | undefined} broadcasts - Deprecated declared app-channel broadcasts.
|
|
70
83
|
* @property {ReturnType<typeof JSON.parse>} modelClass - Server model class for this resource.
|
|
71
84
|
* @property {Array<"create" | "update" | "destroy">} operations - Published operations.
|
|
85
|
+
* @property {SyncPublisherScopeAttributesResolver | undefined} scopeAttributesResolver - Computed scope values resolver, when declared.
|
|
72
86
|
* @property {Array<SyncPublisherScopePlanEntry>} scopePlan - Derived scope-partition plan.
|
|
73
87
|
* @property {(record: ReturnType<typeof JSON.parse>) => Record<string, ReturnType<typeof JSON.parse>> | Promise<Record<string, ReturnType<typeof JSON.parse>>>} serialize - Payload snapshot builder (the declaration's serialize or the default attribute serializer).
|
|
74
88
|
* @property {string} resourceType - Published resource type.
|
|
75
89
|
*/
|
|
76
90
|
export {};
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wdWJsaXNoZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXB1Ymxpc2hlci10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7Ozs7Ozs7O0dBV0c7QUFFSDs7Ozs7Ozs7O0dBU0c7QUFFSDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSDs7Ozs7R0FLRztBQUVIOzs7Ozs7Ozs7R0FTRztBQUVIOzs7Ozs7Ozs7R0FTRztBQUVIOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQXJncyByZXNvbHZlZCBhZ2FpbnN0IGEgcHVibGlzaCBkZWNsYXJhdGlvbidzIGRlcHJlY2F0ZWQgYnJvYWRjYXN0cyBhZnRlciBhXG4gKiBwdWJsaXNoZWQgc2VydmVyLXNpZGUgbXV0YXRpb24gY29tbWl0cy5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJnc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IGRhdGEgLSBQYXlsb2FkIHNuYXBzaG90dGVkIHRocm91Z2ggdGhlIGRlY2xhcmF0aW9uJ3MgYHNlcmlhbGl6ZShyZWNvcmQpYCBhdCBtdXRhdGlvbiB0aW1lLlxuICogQHByb3BlcnR5IHtcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwifSBvcGVyYXRpb24gLSBNdXRhdGlvbiBvcGVyYXRpb24gdGhhdCBwdWJsaXNoZWQuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSByZWNvcmQgLSBNdXRhdGVkIHNlcnZlciBtb2RlbCByZWNvcmQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VJZCAtIFB1Ymxpc2hlZCByZXNvdXJjZSBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZXNvdXJjZVR5cGUgLSBQdWJsaXNoZWQgcmVzb3VyY2UgdHlwZS5cbiAqIEBwcm9wZXJ0eSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IHN5bmNSb3cgLSBVcHNlcnRlZCBzeW5jL2NoYW5nZSByb3cuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3luY1R5cGUgLSBQdWJsaXNoZWQgc3luYyB0eXBlIChcInVwZGF0ZVwiIGZvciBjcmVhdGVzL3VwZGF0ZXMsIFwiZGVsZXRlXCIgZm9yIGRlc3Ryb3lzKS5cbiAqL1xuXG4vKipcbiAqIE9uZSBkZWNsYXJhdGl2ZSBicm9hZGNhc3QgZmFubmVkIG91dCBhZnRlciBhIHB1Ymxpc2hlZCBzZXJ2ZXItc2lkZSBtdXRhdGlvblxuICogY29tbWl0cyDigJQgc2FtZSBzaGFwZSB0aGUgcmVwbGF5IHNlcnZpY2UncyBpbmplY3RlZCBicm9hZGNhc3RlciBjb25zdW1lcy5cbiAqIEBkZXByZWNhdGVkIFB1Ymxpc2hpbmcgYnJvYWRjYXN0cyB0aGUgc3RhbmRhcmQgc3luYyBlbnZlbG9wZSBvbiB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBhdXRvbWF0aWNhbGx5OyBkZWNsYXJlIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMgb25seSBmb3IgbGVnYWN5IGNoYW5uZWxzIG9sZCBhcHAgdmVyc2lvbnMgc3RpbGwgc3Vic2NyaWJlLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hCcm9hZGNhc3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgKChhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IHN0cmluZyl9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUgb3IgcmVzb2x2ZXIuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYnJvYWRjYXN0UGFyYW1zIC0gQ2hhbm5lbCByb3V0aW5nIHBhcmFtcy5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGJvZHkgLSBCcm9hZGNhc3QgYm9keS5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gYm9vbGVhbn0gW3doZW5dIC0gT3B0aW9uYWwgZ2F0ZTsgc2tpcHBlZCB3aGVuIGl0IHJldHVybnMgZmFsc2UuXG4gKi9cblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSBwdWJsaXNoIGRlY2xhcmF0aW9uIG9uIGEgbW9kZWwncyBgc3RhdGljIHN5bmNgLCBjb25zdW1lZCBieVxuICogYFN5bmNQdWJsaXNoZXIuZnJvbUNvbmZpZ3VyYXRpb24oLi4uKWAuIFB1Ymxpc2hpbmcgaXMgb24gZm9yIG1vZGVsc1xuICogZGVjbGFyaW5nIGl0IChzZXJ2ZXItc2lkZSBjcmVhdGVzIGFuZCB1cGRhdGVzIHdyaXRlIHRvIHRoZSBzeW5jIGNoYW5nZVxuICogZmVlZCBhbmQgYnJvYWRjYXN0IHRoZSBzdGFuZGFyZCBzeW5jIGVudmVsb3BlIG9uIHRoZSBmcmFtZXdvcmsgc3luY1xuICogY2hhbm5lbCBhdXRvbWF0aWNhbGx5IG9uY2UgdGhlaXIgdHJhbnNhY3Rpb24gY29tbWl0cyk7IGBwdWJsaXNoOiB0cnVlYFxuICogb3B0cyBpbiB3aXRoIGFsbCBkZWZhdWx0cyBhbmQgYHB1Ymxpc2g6IGZhbHNlYCBvcHRzIGEgbW9kZWwgb3V0IGV4cGxpY2l0bHkuXG4gKiBAdGVtcGxhdGUgW1RNb2RlbD1hbnldXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaERlY2xhcmF0aW9uQ29uZmlnXG4gKiBAcHJvcGVydHkgeyhyZWNvcmQ6IFRNb2RlbCkgPT4gUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+IHwgUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4+fSBbc2VyaWFsaXplXSAtIEJ1aWxkcyB0aGUgcHVibGlzaGVkIHBheWxvYWQgc25hcHNob3QgZnJvbSB0aGUgbXV0YXRlZCByZWNvcmQgKHNuYXBzaG90dGVkIGF0IG11dGF0aW9uIHRpbWUpLiBEZWZhdWx0cyB0byB0aGUgcmVjb3JkJ3MgYXR0cmlidXRlcyB3aXRoIERhdGUgdmFsdWVzIHNlcmlhbGl6ZWQgdG8gSVNPIHN0cmluZ3MuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IFtzY29wZUF0dHJpYnV0ZXNdIC0gUmVjb3JkLWF0dHJpYnV0ZSBuYW1lIG92ZXJyaWRlcyBwZXIgc2NvcGUgYXR0cmlidXRlIGRlY2xhcmVkIG9uIHRoZSBzeW5jIG1vZGVsJ3MgYHN0YXRpYyBzeW5jU2NvcGVBdHRyaWJ1dGVzYC4gQnkgZGVmYXVsdCBlYWNoIGRlY2xhcmVkIHNjb3BlIGF0dHJpYnV0ZSByZWFkcyB0aGUgcmVjb3JkJ3MgYXR0cmlidXRlIG9mIHRoZSBzYW1lIG5hbWUgd2hlbiB0aGUgbW9kZWwgaGFzIG9uZSwgZWxzZSB0aGUgcmVjb3JkJ3Mgb3duIGlkIChzY29wZS1yb290IG1vZGVscykuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8ICgocmVjb3JkOiBUTW9kZWwpID0+IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IG51bGw+KX0gW2V2ZW50SWRdIC0gRGVwcmVjYXRlZCAxLjAuNTAzIGZvcm06IGF0dHJpYnV0ZS1uYW1lIHN0cmluZyAob3IgcmVzb2x2ZXIgZnVuY3Rpb24pIHBlcnNpc3RlZCB0byBhIGZpeGVkIGV2ZW50X2lkIHN5bmMtcm93IGNvbHVtbiBhbmQgYnJvYWRjYXN0IGFzIGEgZml4ZWQgYGV2ZW50SWRgIHNjb3BpbmcgcGFyYW0uIERlY2xhcmUgYHN0YXRpYyBzeW5jU2NvcGVBdHRyaWJ1dGVzYCBvbiB0aGUgc3luYyBtb2RlbCBwbHVzIGBzY29wZUF0dHJpYnV0ZXNgIG92ZXJyaWRlcyBpbnN0ZWFkLlxuICogQHByb3BlcnR5IHtTeW5jUHVibGlzaEJyb2FkY2FzdFtdfSBbYnJvYWRjYXN0c10gLSBEZXByZWNhdGVkOiBkZWNsYXJhdGl2ZSBhcHAtY2hhbm5lbCBicm9hZGNhc3RzIGZhbm5lZCBvdXQgYWZ0ZXIgdGhlIGZyYW1ld29yayBzeW5jIGNoYW5uZWwgYnJvYWRjYXN0LiBUaGUgZnJhbWV3b3JrIGJyb2FkY2FzdCBoYXBwZW5zIGF1dG9tYXRpY2FsbHk7IGtlZXAgdGhpcyBvbmx5IGZvciBsZWdhY3kgY2hhbm5lbHMgb2xkIGFwcCB2ZXJzaW9ucyBzdGlsbCBzdWJzY3JpYmUuXG4gKiBAcHJvcGVydHkge0FycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+fSBbb3BlcmF0aW9uc10gLSBQdWJsaXNoZWQgb3BlcmF0aW9ucy4gRGVmYXVsdHMgdG8gY3JlYXRlcyBhbmQgdXBkYXRlczsgZGVzdHJveXMgYXJlIG9wdC1pbiBiZWNhdXNlIGEgc2VydmVyIGRlc3Ryb3kgaXMgb2Z0ZW4gY2xlYW51cCByYXRoZXIgdGhhbiBhIHN5bmNlZCBkZWxldGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Jlc291cmNlVHlwZV0gLSBQdWJsaXNoZWQgcmVzb3VyY2UgdHlwZS4gRGVmYXVsdHMgdG8gdGhlIG1vZGVsIG5hbWUuXG4gKi9cblxuLyoqXG4gKiBNb2RlbC1sZXZlbCBwdWJsaXNoIGRlY2xhcmF0aW9uIHZhbHVlOiBgdHJ1ZWAgcHVibGlzaGVzIHdpdGggYWxsIGRlZmF1bHRzLFxuICogYGZhbHNlYCBvcHRzIG91dCBleHBsaWNpdGx5LCBhbiBvYmplY3QgY3VzdG9taXplcyB0aGUgcHVibGlzaGVkIHBheWxvYWQgYW5kIHNjb3BpbmcuXG4gKiBAdGVtcGxhdGUgW1RNb2RlbD1hbnldXG4gKiBAdHlwZWRlZiB7Ym9vbGVhbiB8IFN5bmNQdWJsaXNoRGVjbGFyYXRpb25Db25maWc8VE1vZGVsPn0gU3luY1B1Ymxpc2hEZWNsYXJhdGlvblxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYnVpbGRpbmcgYSBzeW5jIHB1Ymxpc2hlci4gUHVibGlzaGVkIHJlc291cmNlcyBhcmUgZGVyaXZlZCBmcm9tXG4gKiB0aGUgY29uZmlndXJhdGlvbidzIHJlZ2lzdGVyZWQgbW9kZWxzIChgc3RhdGljIHN5bmNgIHB1Ymxpc2ggZGVjbGFyYXRpb25zKS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoZXJPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FjdG9yRm9yZWlnbktleUNvbHVtbl0gLSBTeW5jIG1vZGVsIGNvbHVtbiBsaW5raW5nIHJvd3MgdG8gYSBkZXZpY2UgYWN0b3IuIFB1Ymxpc2hlZCBzZXJ2ZXItb3JpZ2luIHJvd3Mgc2V0IGl0IHRvIG51bGwgKG5vIGRldmljZSB0byBlY2hvKS4gRGVmYXVsdHMgdG8gXCJhdXRoZW50aWNhdGlvbl90b2tlbl9pZFwiLlxuICogQHByb3BlcnR5IHsoYnJvYWRjYXN0OiB7Y2hhbm5lbDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PiwgYm9keTogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59KSA9PiBQcm9taXNlPHZvaWQ+fSBbYnJvYWRjYXN0ZXJdIC0gRGVsaXZlcnMgdGhlIGZyYW1ld29yayBzeW5jIGNoYW5uZWwgYnJvYWRjYXN0IGFuZCBhbnkgZGVwcmVjYXRlZCBkZWNsYXJlZCBicm9hZGNhc3RzLiBEZWZhdWx0cyB0byB0aGUgY29uZmlndXJhdGlvbidzIGNoYW5uZWwgYnJvYWRjYXN0LlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFtjb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSByZWdpc3RlcmVkIG1vZGVscy4gRGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7KGVycm9yOiBFcnJvcikgPT4gdm9pZH0gW29uRXJyb3JdIC0gUmVwb3J0cyBwb3N0LWNvbW1pdCBwdWJsaXNoIGZhaWx1cmVzLiBEZWZhdWx0cyB0byBsb3VkIGxvZ2dpbmcuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBbc3luY01vZGVsXSAtIFN5bmMvY2hhbmdlIG1vZGVsIG92ZXJyaWRlLiBEZWZhdWx0cyB0byB0aGUgcmVnaXN0ZXJlZCBcIlN5bmNcIiBtb2RlbC5cbiAqL1xuXG4vKipcbiAqIE9uZSBkZXJpdmVkIHNjb3BlLXBhcnRpdGlvbiBzb3VyY2UgZm9yIGEgcHVibGlzaGVkIHJlc291cmNlIOKAlCBub3QgYW5cbiAqIGFwcC1mYWNpbmcgQVBJLiBUaGUgdmFsdWUgaXMgcGVyc2lzdGVkIHRvIHRoZSBzeW5jIHJvdydzIGBjb2x1bW5OYW1lYCBhbmRcbiAqIGJyb2FkY2FzdCB1bmRlciBgc2NvcGVBdHRyaWJ1dGVgIG9uIHRoZSBmcmFtZXdvcmsgc3luYyBjaGFubmVsLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hlclNjb3BlUGxhbkVudHJ5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29sdW1uTmFtZSAtIFN5bmMtcm93IGNvbHVtbiBwZXJzaXN0aW5nIHRoZSBzY29wZSB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gcmVjb3JkQXR0cmlidXRlIC0gUmVjb3JkIGF0dHJpYnV0ZSByZWFkIGZvciB0aGUgc2NvcGUgdmFsdWUsIG9yIG51bGwgd2hlbiB0aGUgcmVjb3JkJ3Mgb3duIGlkIGlzIHRoZSBzY29wZSAoc2NvcGUtcm9vdCBtb2RlbHMpLlxuICogQHByb3BlcnR5IHsoKHJlY29yZDogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4pID0+IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IG51bGw+KSB8IHVuZGVmaW5lZH0gcmVzb2x2ZXIgLSBEZXByZWNhdGVkIGV2ZW50SWQgcmVzb2x2ZXIgZnVuY3Rpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2NvcGVBdHRyaWJ1dGUgLSBTY29wZSBhdHRyaWJ1dGUgbmFtZSBicm9hZGNhc3QgYXMgdGhlIGZyYW1ld29yayBjaGFubmVsIHNjb3BpbmcgcGFyYW0uXG4gKi9cblxuLyoqXG4gKiBJbnRlcm5hbCBkZXJpdmVkIHB1Ymxpc2ggcG9saWN5IGZvciBvbmUgcmVzb3VyY2Ug4oCUIG5vdCBhbiBhcHAtZmFjaW5nIEFQSS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoZXJSZXNvdXJjZUNvbmZpZ1xuICogQHByb3BlcnR5IHtTeW5jUHVibGlzaEJyb2FkY2FzdFtdIHwgdW5kZWZpbmVkfSBicm9hZGNhc3RzIC0gRGVwcmVjYXRlZCBkZWNsYXJlZCBhcHAtY2hhbm5lbCBicm9hZGNhc3RzLlxuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gbW9kZWxDbGFzcyAtIFNlcnZlciBtb2RlbCBjbGFzcyBmb3IgdGhpcyByZXNvdXJjZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59IG9wZXJhdGlvbnMgLSBQdWJsaXNoZWQgb3BlcmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8U3luY1B1Ymxpc2hlclNjb3BlUGxhbkVudHJ5Pn0gc2NvcGVQbGFuIC0gRGVyaXZlZCBzY29wZS1wYXJ0aXRpb24gcGxhbi5cbiAqIEBwcm9wZXJ0eSB7KHJlY29yZDogUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4pID0+IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+PiB8IFByb21pc2U8UmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+Pn0gc2VyaWFsaXplIC0gUGF5bG9hZCBzbmFwc2hvdCBidWlsZGVyICh0aGUgZGVjbGFyYXRpb24ncyBzZXJpYWxpemUgb3IgdGhlIGRlZmF1bHQgYXR0cmlidXRlIHNlcmlhbGl6ZXIpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlc291cmNlVHlwZSAtIFB1Ymxpc2hlZCByZXNvdXJjZSB0eXBlLlxuICovXG5cbmV4cG9ydCB7fVxuIl19
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1wdWJsaXNoZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLXB1Ymxpc2hlci10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7Ozs7Ozs7O0dBV0c7QUFFSDs7Ozs7Ozs7O0dBU0c7QUFFSDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSDs7Ozs7OztHQU9HO0FBRUg7Ozs7R0FJRztBQUVIOzs7OztHQUtHO0FBRUg7Ozs7Ozs7OztHQVNHO0FBRUg7Ozs7Ozs7OztHQVNHO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQXJncyByZXNvbHZlZCBhZ2FpbnN0IGEgcHVibGlzaCBkZWNsYXJhdGlvbidzIGRlcHJlY2F0ZWQgYnJvYWRjYXN0cyBhZnRlciBhXG4gKiBwdWJsaXNoZWQgc2VydmVyLXNpZGUgbXV0YXRpb24gY29tbWl0cy5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJnc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IGRhdGEgLSBQYXlsb2FkIHNuYXBzaG90dGVkIHRocm91Z2ggdGhlIGRlY2xhcmF0aW9uJ3MgYHNlcmlhbGl6ZShyZWNvcmQpYCBhdCBtdXRhdGlvbiB0aW1lLlxuICogQHByb3BlcnR5IHtcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwifSBvcGVyYXRpb24gLSBNdXRhdGlvbiBvcGVyYXRpb24gdGhhdCBwdWJsaXNoZWQuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSByZWNvcmQgLSBNdXRhdGVkIHNlcnZlciBtb2RlbCByZWNvcmQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VJZCAtIFB1Ymxpc2hlZCByZXNvdXJjZSBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZXNvdXJjZVR5cGUgLSBQdWJsaXNoZWQgcmVzb3VyY2UgdHlwZS5cbiAqIEBwcm9wZXJ0eSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IHN5bmNSb3cgLSBVcHNlcnRlZCBzeW5jL2NoYW5nZSByb3cuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3luY1R5cGUgLSBQdWJsaXNoZWQgc3luYyB0eXBlIChcInVwZGF0ZVwiIGZvciBjcmVhdGVzL3VwZGF0ZXMsIFwiZGVsZXRlXCIgZm9yIGRlc3Ryb3lzKS5cbiAqL1xuXG4vKipcbiAqIE9uZSBkZWNsYXJhdGl2ZSBicm9hZGNhc3QgZmFubmVkIG91dCBhZnRlciBhIHB1Ymxpc2hlZCBzZXJ2ZXItc2lkZSBtdXRhdGlvblxuICogY29tbWl0cyDigJQgc2FtZSBzaGFwZSB0aGUgcmVwbGF5IHNlcnZpY2UncyBpbmplY3RlZCBicm9hZGNhc3RlciBjb25zdW1lcy5cbiAqIEBkZXByZWNhdGVkIFB1Ymxpc2hpbmcgYnJvYWRjYXN0cyB0aGUgc3RhbmRhcmQgc3luYyBlbnZlbG9wZSBvbiB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBhdXRvbWF0aWNhbGx5OyBkZWNsYXJlIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMgb25seSBmb3IgbGVnYWN5IGNoYW5uZWxzIG9sZCBhcHAgdmVyc2lvbnMgc3RpbGwgc3Vic2NyaWJlLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hCcm9hZGNhc3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgKChhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IHN0cmluZyl9IGNoYW5uZWwgLSBDaGFubmVsIG5hbWUgb3IgcmVzb2x2ZXIuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBTeW5jUHVibGlzaEJyb2FkY2FzdEFyZ3MpID0+IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYnJvYWRjYXN0UGFyYW1zIC0gQ2hhbm5lbCByb3V0aW5nIHBhcmFtcy5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGJvZHkgLSBCcm9hZGNhc3QgYm9keS5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFN5bmNQdWJsaXNoQnJvYWRjYXN0QXJncykgPT4gYm9vbGVhbn0gW3doZW5dIC0gT3B0aW9uYWwgZ2F0ZTsgc2tpcHBlZCB3aGVuIGl0IHJldHVybnMgZmFsc2UuXG4gKi9cblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSBwdWJsaXNoIGRlY2xhcmF0aW9uIG9uIGEgbW9kZWwncyBgc3RhdGljIHN5bmNgLCBjb25zdW1lZCBieVxuICogYFN5bmNQdWJsaXNoZXIuZnJvbUNvbmZpZ3VyYXRpb24oLi4uKWAuIFB1Ymxpc2hpbmcgaXMgb24gZm9yIG1vZGVsc1xuICogZGVjbGFyaW5nIGl0IChzZXJ2ZXItc2lkZSBjcmVhdGVzIGFuZCB1cGRhdGVzIHdyaXRlIHRvIHRoZSBzeW5jIGNoYW5nZVxuICogZmVlZCBhbmQgYnJvYWRjYXN0IHRoZSBzdGFuZGFyZCBzeW5jIGVudmVsb3BlIG9uIHRoZSBmcmFtZXdvcmsgc3luY1xuICogY2hhbm5lbCBhdXRvbWF0aWNhbGx5IG9uY2UgdGhlaXIgdHJhbnNhY3Rpb24gY29tbWl0cyk7IGBwdWJsaXNoOiB0cnVlYFxuICogb3B0cyBpbiB3aXRoIGFsbCBkZWZhdWx0cyBhbmQgYHB1Ymxpc2g6IGZhbHNlYCBvcHRzIGEgbW9kZWwgb3V0IGV4cGxpY2l0bHkuXG4gKiBAdGVtcGxhdGUgW1RNb2RlbD1hbnldXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaERlY2xhcmF0aW9uQ29uZmlnXG4gKiBAcHJvcGVydHkgeyhyZWNvcmQ6IFRNb2RlbCkgPT4gUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+IHwgUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4+fSBbc2VyaWFsaXplXSAtIEJ1aWxkcyB0aGUgcHVibGlzaGVkIHBheWxvYWQgc25hcHNob3QgZnJvbSB0aGUgbXV0YXRlZCByZWNvcmQgKHNuYXBzaG90dGVkIGF0IG11dGF0aW9uIHRpbWUpLiBEZWZhdWx0cyB0byB0aGUgcmVjb3JkJ3MgYXR0cmlidXRlcyB3aXRoIERhdGUgdmFsdWVzIHNlcmlhbGl6ZWQgdG8gSVNPIHN0cmluZ3MuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBTeW5jUHVibGlzaGVyU2NvcGVBdHRyaWJ1dGVzUmVzb2x2ZXI8VE1vZGVsPn0gW3Njb3BlQXR0cmlidXRlc10gLSBTdGF0aWMgcmVjb3JkLWF0dHJpYnV0ZSBuYW1lIG92ZXJyaWRlcyBwZXIgc2NvcGUgYXR0cmlidXRlIGRlY2xhcmVkIG9uIHRoZSBzeW5jIG1vZGVsJ3MgYHN0YXRpYyBzeW5jU2NvcGVBdHRyaWJ1dGVzYCwgb3Igb25lIGFzeW5jLWNhcGFibGUgcmVzb2x2ZXIgcmV0dXJuaW5nIGV2ZXJ5IGRlY2xhcmVkIHNjb3BlIHZhbHVlIGZyb20gdGhlIG11dGF0aW9uJ3MgY29ubmVjdGlvbiBjb250ZXh0LiBTdGF0aWMgbWFwcGluZ3MgcmV0YWluIHRoZSBkZWZhdWx0IGZvciBvbWl0dGVkIGF0dHJpYnV0ZXM7IGNvbXB1dGVkIHJlc3VsdHMgbXVzdCBpbmNsdWRlIGV2ZXJ5IGRlY2xhcmVkIGF0dHJpYnV0ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgKChyZWNvcmQ6IFRNb2RlbCkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4pfSBbZXZlbnRJZF0gLSBEZXByZWNhdGVkIDEuMC41MDMgZm9ybTogYXR0cmlidXRlLW5hbWUgc3RyaW5nIChvciByZXNvbHZlciBmdW5jdGlvbikgcGVyc2lzdGVkIHRvIGEgZml4ZWQgZXZlbnRfaWQgc3luYy1yb3cgY29sdW1uIGFuZCBicm9hZGNhc3QgYXMgYSBmaXhlZCBgZXZlbnRJZGAgc2NvcGluZyBwYXJhbS4gRGVjbGFyZSBgc3RhdGljIHN5bmNTY29wZUF0dHJpYnV0ZXNgIG9uIHRoZSBzeW5jIG1vZGVsIHBsdXMgYHNjb3BlQXR0cmlidXRlc2Agb3ZlcnJpZGVzIGluc3RlYWQuXG4gKiBAcHJvcGVydHkge1N5bmNQdWJsaXNoQnJvYWRjYXN0W119IFticm9hZGNhc3RzXSAtIERlcHJlY2F0ZWQ6IGRlY2xhcmF0aXZlIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMgZmFubmVkIG91dCBhZnRlciB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBicm9hZGNhc3QuIFRoZSBmcmFtZXdvcmsgYnJvYWRjYXN0IGhhcHBlbnMgYXV0b21hdGljYWxseTsga2VlcCB0aGlzIG9ubHkgZm9yIGxlZ2FjeSBjaGFubmVscyBvbGQgYXBwIHZlcnNpb25zIHN0aWxsIHN1YnNjcmliZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJjcmVhdGVcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIj59IFtvcGVyYXRpb25zXSAtIFB1Ymxpc2hlZCBvcGVyYXRpb25zLiBEZWZhdWx0cyB0byBjcmVhdGVzIGFuZCB1cGRhdGVzOyBkZXN0cm95cyBhcmUgb3B0LWluIGJlY2F1c2UgYSBzZXJ2ZXIgZGVzdHJveSBpcyBvZnRlbiBjbGVhbnVwIHJhdGhlciB0aGFuIGEgc3luY2VkIGRlbGV0ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVzb3VyY2VUeXBlXSAtIFB1Ymxpc2hlZCByZXNvdXJjZSB0eXBlLiBEZWZhdWx0cyB0byB0aGUgbW9kZWwgbmFtZS5cbiAqL1xuXG4vKipcbiAqIFB1Ymxpc2hpbmcgY29udGV4dCBwYXNzZWQgb25jZSB0byBhIGNvbXB1dGVkIHNjb3BlLWF0dHJpYnV0ZXMgcmVzb2x2ZXIuXG4gKiBAdGVtcGxhdGUgW1RNb2RlbD1hbnldXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaGVyU2NvcGVSZXNvbHZlckNvbnRleHRcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBjb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbiBvd25pbmcgdGhlIHB1Ymxpc2hlci5cbiAqIEBwcm9wZXJ0eSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGNvbm5lY3Rpb24gLSBBY3RpdmUgZGF0YWJhc2UgY29ubmVjdGlvbiB0aGF0IG93bnMgdGhlIHB1Ymxpc2hlZCBtdXRhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7VE1vZGVsfSByZWNvcmQgLSBQdWJsaXNoZWQgbW9kZWwgcmVjb3JkLlxuICovXG5cbi8qKlxuICogQXN5bmMtY2FwYWJsZSByZXNvbHZlciByZXR1cm5pbmcgZXZlcnkgZGVjbGFyZWQgc3luYyBzY29wZSBhdHRyaWJ1dGUuXG4gKiBAdGVtcGxhdGUgW1RNb2RlbD1hbnldXG4gKiBAdHlwZWRlZiB7KGNvbnRleHQ6IFN5bmNQdWJsaXNoZXJTY29wZVJlc29sdmVyQ29udGV4dDxUTW9kZWw+KSA9PiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBudWxsPiB8IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4+fSBTeW5jUHVibGlzaGVyU2NvcGVBdHRyaWJ1dGVzUmVzb2x2ZXJcbiAqL1xuXG4vKipcbiAqIE1vZGVsLWxldmVsIHB1Ymxpc2ggZGVjbGFyYXRpb24gdmFsdWU6IGB0cnVlYCBwdWJsaXNoZXMgd2l0aCBhbGwgZGVmYXVsdHMsXG4gKiBgZmFsc2VgIG9wdHMgb3V0IGV4cGxpY2l0bHksIGFuIG9iamVjdCBjdXN0b21pemVzIHRoZSBwdWJsaXNoZWQgcGF5bG9hZCBhbmQgc2NvcGluZy5cbiAqIEB0ZW1wbGF0ZSBbVE1vZGVsPWFueV1cbiAqIEB0eXBlZGVmIHtib29sZWFuIHwgU3luY1B1Ymxpc2hEZWNsYXJhdGlvbkNvbmZpZzxUTW9kZWw+fSBTeW5jUHVibGlzaERlY2xhcmF0aW9uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhIHN5bmMgcHVibGlzaGVyLiBQdWJsaXNoZWQgcmVzb3VyY2VzIGFyZSBkZXJpdmVkIGZyb21cbiAqIHRoZSBjb25maWd1cmF0aW9uJ3MgcmVnaXN0ZXJlZCBtb2RlbHMgKGBzdGF0aWMgc3luY2AgcHVibGlzaCBkZWNsYXJhdGlvbnMpLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYWN0b3JGb3JlaWduS2V5Q29sdW1uXSAtIFN5bmMgbW9kZWwgY29sdW1uIGxpbmtpbmcgcm93cyB0byBhIGRldmljZSBhY3Rvci4gUHVibGlzaGVkIHNlcnZlci1vcmlnaW4gcm93cyBzZXQgaXQgdG8gbnVsbCAobm8gZGV2aWNlIHRvIGVjaG8pLiBEZWZhdWx0cyB0byBcImF1dGhlbnRpY2F0aW9uX3Rva2VuX2lkXCIuXG4gKiBAcHJvcGVydHkgeyhicm9hZGNhc3Q6IHtjaGFubmVsOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBib2R5OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0pID0+IFByb21pc2U8dm9pZD59IFticm9hZGNhc3Rlcl0gLSBEZWxpdmVycyB0aGUgZnJhbWV3b3JrIHN5bmMgY2hhbm5lbCBicm9hZGNhc3QgYW5kIGFueSBkZXByZWNhdGVkIGRlY2xhcmVkIGJyb2FkY2FzdHMuIERlZmF1bHRzIHRvIHRoZSBjb25maWd1cmF0aW9uJ3MgY2hhbm5lbCBicm9hZGNhc3QuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gW2NvbmZpZ3VyYXRpb25dIC0gQ29uZmlndXJhdGlvbiBvd25pbmcgdGhlIHJlZ2lzdGVyZWQgbW9kZWxzLiBEZWZhdWx0cyB0byB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHsoZXJyb3I6IEVycm9yKSA9PiB2b2lkfSBbb25FcnJvcl0gLSBSZXBvcnRzIHBvc3QtY29tbWl0IHB1Ymxpc2ggZmFpbHVyZXMuIERlZmF1bHRzIHRvIGxvdWQgbG9nZ2luZy5cbiAqIEBwcm9wZXJ0eSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IFtzeW5jTW9kZWxdIC0gU3luYy9jaGFuZ2UgbW9kZWwgb3ZlcnJpZGUuIERlZmF1bHRzIHRvIHRoZSByZWdpc3RlcmVkIFwiU3luY1wiIG1vZGVsLlxuICovXG5cbi8qKlxuICogT25lIGRlcml2ZWQgc2NvcGUtcGFydGl0aW9uIHNvdXJjZSBmb3IgYSBwdWJsaXNoZWQgcmVzb3VyY2Ug4oCUIG5vdCBhblxuICogYXBwLWZhY2luZyBBUEkuIFRoZSB2YWx1ZSBpcyBwZXJzaXN0ZWQgdG8gdGhlIHN5bmMgcm93J3MgYGNvbHVtbk5hbWVgIGFuZFxuICogYnJvYWRjYXN0IHVuZGVyIGBzY29wZUF0dHJpYnV0ZWAgb24gdGhlIGZyYW1ld29yayBzeW5jIGNoYW5uZWwuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jUHVibGlzaGVyU2NvcGVQbGFuRW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gU3luYy1yb3cgY29sdW1uIHBlcnNpc3RpbmcgdGhlIHNjb3BlIHZhbHVlLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSByZWNvcmRBdHRyaWJ1dGUgLSBSZWNvcmQgYXR0cmlidXRlIHJlYWQgZm9yIHRoZSBzY29wZSB2YWx1ZSwgb3IgbnVsbCB3aGVuIHRoZSByZWNvcmQncyBvd24gaWQgaXMgdGhlIHNjb3BlIChzY29wZS1yb290IG1vZGVscykuXG4gKiBAcHJvcGVydHkgeygocmVjb3JkOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPikgPT4gc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4pIHwgdW5kZWZpbmVkfSByZXNvbHZlciAtIERlcHJlY2F0ZWQgZXZlbnRJZCByZXNvbHZlciBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzY29wZUF0dHJpYnV0ZSAtIFNjb3BlIGF0dHJpYnV0ZSBuYW1lIGJyb2FkY2FzdCBhcyB0aGUgZnJhbWV3b3JrIGNoYW5uZWwgc2NvcGluZyBwYXJhbS5cbiAqL1xuXG4vKipcbiAqIEludGVybmFsIGRlcml2ZWQgcHVibGlzaCBwb2xpY3kgZm9yIG9uZSByZXNvdXJjZSDigJQgbm90IGFuIGFwcC1mYWNpbmcgQVBJLlxuICogQHR5cGVkZWYge29iamVjdH0gU3luY1B1Ymxpc2hlclJlc291cmNlQ29uZmlnXG4gKiBAcHJvcGVydHkge1N5bmNQdWJsaXNoQnJvYWRjYXN0W10gfCB1bmRlZmluZWR9IGJyb2FkY2FzdHMgLSBEZXByZWNhdGVkIGRlY2xhcmVkIGFwcC1jaGFubmVsIGJyb2FkY2FzdHMuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+fSBtb2RlbENsYXNzIC0gU2VydmVyIG1vZGVsIGNsYXNzIGZvciB0aGlzIHJlc291cmNlLlxuICogQHByb3BlcnR5IHtBcnJheTxcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiPn0gb3BlcmF0aW9ucyAtIFB1Ymxpc2hlZCBvcGVyYXRpb25zLlxuICogQHByb3BlcnR5IHtTeW5jUHVibGlzaGVyU2NvcGVBdHRyaWJ1dGVzUmVzb2x2ZXIgfCB1bmRlZmluZWR9IHNjb3BlQXR0cmlidXRlc1Jlc29sdmVyIC0gQ29tcHV0ZWQgc2NvcGUgdmFsdWVzIHJlc29sdmVyLCB3aGVuIGRlY2xhcmVkLlxuICogQHByb3BlcnR5IHtBcnJheTxTeW5jUHVibGlzaGVyU2NvcGVQbGFuRW50cnk+fSBzY29wZVBsYW4gLSBEZXJpdmVkIHNjb3BlLXBhcnRpdGlvbiBwbGFuLlxuICogQHByb3BlcnR5IHsocmVjb3JkOiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPikgPT4gUmVjb3JkPHN0cmluZywgUmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+IHwgUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4+fSBzZXJpYWxpemUgLSBQYXlsb2FkIHNuYXBzaG90IGJ1aWxkZXIgKHRoZSBkZWNsYXJhdGlvbidzIHNlcmlhbGl6ZSBvciB0aGUgZGVmYXVsdCBhdHRyaWJ1dGUgc2VyaWFsaXplcikuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VUeXBlIC0gUHVibGlzaGVkIHJlc291cmNlIHR5cGUuXG4gKi9cblxuZXhwb3J0IHt9XG4iXX0=
|
|
@@ -122,6 +122,18 @@ export default class SyncPublisher {
|
|
|
122
122
|
columns: Record<string, string | null>;
|
|
123
123
|
params: Record<string, string | null>;
|
|
124
124
|
}>;
|
|
125
|
+
/**
|
|
126
|
+
* Resolves and validates one computed scope-attributes declaration. The
|
|
127
|
+
* resolver runs once per published mutation with the exact connection that
|
|
128
|
+
* owns that mutation; every declared scope value is then reused for row
|
|
129
|
+
* persistence and broadcast routing so those two identities cannot drift.
|
|
130
|
+
* @param {{record: ReturnType<typeof JSON.parse>, resourceConfig: import("./sync-publisher-types.js").SyncPublisherResourceConfig}} args - Record and resource configuration.
|
|
131
|
+
* @returns {Promise<Record<string, string | number | null>>} Complete computed scope values.
|
|
132
|
+
*/
|
|
133
|
+
resolveComputedScopeAttributes({ record, resourceConfig }: {
|
|
134
|
+
record: ReturnType<typeof JSON.parse>;
|
|
135
|
+
resourceConfig: import("./sync-publisher-types.js").SyncPublisherResourceConfig;
|
|
136
|
+
}): Promise<Record<string, string | number | null>>;
|
|
125
137
|
/**
|
|
126
138
|
* Builds the framework sync channel entry for one published change: the
|
|
127
139
|
* snapshotted payload plus the persisted sync row's public exact-row metadata
|
|
@@ -141,13 +153,20 @@ export default class SyncPublisher {
|
|
|
141
153
|
/**
|
|
142
154
|
* Upserts the published server-origin sync row for a resource identity:
|
|
143
155
|
* server-origin rows carry a null actor column (no device to echo the
|
|
144
|
-
* change back to), so repeated server changes to one resource
|
|
145
|
-
* re-sequence one feed row.
|
|
156
|
+
* change back to), so repeated server changes to one complete resource and
|
|
157
|
+
* scope identity reuse and re-sequence one feed row. A database advisory
|
|
158
|
+
* lock serializes reconciliation plus the shared upsert because unique
|
|
159
|
+
* constraints containing nullable actor/scope columns do not enforce this
|
|
160
|
+
* identity portably across supported databases. Reconciliation retains the
|
|
161
|
+
* row with the newest feed sequence (then lowest id for a deterministic tie)
|
|
162
|
+
* and removes older matching server-origin rows before applying the current
|
|
163
|
+
* mutation.
|
|
146
164
|
* @param {Record<string, ReturnType<typeof JSON.parse>>} attributes - Snapshotted sync row attributes.
|
|
147
165
|
* @param {ReturnType<typeof JSON.parse>} syncModel - Operation-bound or static Sync model interface.
|
|
166
|
+
* @param {string[]} scopeColumnNames - Persisted scope columns participating in the complete identity.
|
|
148
167
|
* @returns {Promise<ReturnType<typeof JSON.parse>>} Upserted sync row.
|
|
149
168
|
*/
|
|
150
|
-
upsertPublishedSyncRow(attributes: Record<string, ReturnType<typeof JSON.parse>>, syncModel?: ReturnType<typeof JSON.parse
|
|
169
|
+
upsertPublishedSyncRow(attributes: Record<string, ReturnType<typeof JSON.parse>>, syncModel?: ReturnType<typeof JSON.parse>, scopeColumnNames?: string[]): Promise<ReturnType<typeof JSON.parse>>;
|
|
151
170
|
/**
|
|
152
171
|
* Returns the broadcaster delivering declared broadcasts: the injected one,
|
|
153
172
|
* or the configuration's channel broadcast awaited through the pending
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-publisher.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher.js"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,MAAM,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"sync-publisher.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-publisher.js"],"names":[],"mappings":"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"}
|