velocious 1.0.500 → 1.0.502
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/configuration-types.js +39 -0
- package/build/configuration.js +3 -2
- package/build/src/configuration-types.d.ts +123 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +36 -1
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +4 -3
- package/build/src/sync/sync-client-types.d.ts +29 -2
- package/build/src/sync/sync-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-client-types.js +1 -1
- package/build/src/sync/sync-client.d.ts +113 -4
- package/build/src/sync/sync-client.d.ts.map +1 -1
- package/build/src/sync/sync-client.js +185 -31
- package/build/src/sync/sync-realtime-bridge.d.ts +125 -0
- package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -0
- package/build/src/sync/sync-realtime-bridge.js +262 -0
- package/build/sync/sync-client-types.js +14 -2
- package/build/sync/sync-client.js +204 -33
- package/build/sync/sync-realtime-bridge.js +299 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/configuration-types.js +39 -0
- package/src/configuration.js +3 -2
- package/src/sync/sync-client-types.js +14 -2
- package/src/sync/sync-client.js +204 -33
- package/src/sync/sync-realtime-bridge.js +299 -0
|
@@ -11,6 +11,21 @@ export type SerializedSyncScope = {
|
|
|
11
11
|
*/
|
|
12
12
|
resourceType: string;
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Static realtime channel declaration on a model's `static sync`, for channels
|
|
16
|
+
* whose name and params are static. Channels needing runtime params (like
|
|
17
|
+
* eventId) belong in the `sync.client.realtime.channels` callback instead.
|
|
18
|
+
*/
|
|
19
|
+
export type ModelSyncRealtimeDeclaration = {
|
|
20
|
+
/**
|
|
21
|
+
* - Server channel name to subscribe.
|
|
22
|
+
*/
|
|
23
|
+
channel: string;
|
|
24
|
+
/**
|
|
25
|
+
* - Static subscribe params. The framework injects `authenticationToken` automatically.
|
|
26
|
+
*/
|
|
27
|
+
params?: Record<string, any> | undefined;
|
|
28
|
+
};
|
|
14
29
|
/**
|
|
15
30
|
* Declarative per-resource sync policy.
|
|
16
31
|
*/
|
|
@@ -62,11 +77,15 @@ export type SyncClientResourceConfig = {
|
|
|
62
77
|
record: unknown;
|
|
63
78
|
}) => Record<string, unknown>) | undefined;
|
|
64
79
|
/**
|
|
65
|
-
* -
|
|
80
|
+
* - Automatic mutation tracking policy. On by default (creates and updates queue automatically); `false` opts the resource out, `true` adds destroys, `{operations}` narrows the tracked operations.
|
|
66
81
|
*/
|
|
67
82
|
track?: boolean | {
|
|
68
83
|
operations: Array<"create" | "update" | "destroy">;
|
|
69
84
|
} | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* - Static realtime channel this resource subscribes through `subscribeRealtime(...)`.
|
|
87
|
+
*/
|
|
88
|
+
realtime?: ModelSyncRealtimeDeclaration | undefined;
|
|
70
89
|
};
|
|
71
90
|
/**
|
|
72
91
|
* Model-level client sync declaration read from `static sync` by
|
|
@@ -110,7 +129,7 @@ export type ModelSyncDeclarationConfig = {
|
|
|
110
129
|
record: unknown;
|
|
111
130
|
}) => string) | undefined;
|
|
112
131
|
/**
|
|
113
|
-
* -
|
|
132
|
+
* - Automatic mutation tracking policy; an array is shorthand for {operations}. On by default (creates and updates queue automatically); `false` opts the model out (for models written by non-user flows), `true` adds destroys.
|
|
114
133
|
*/
|
|
115
134
|
track?: boolean | ("update" | "destroy" | "create")[] | {
|
|
116
135
|
operations: Array<"create" | "update" | "destroy">;
|
|
@@ -122,6 +141,10 @@ export type ModelSyncDeclarationConfig = {
|
|
|
122
141
|
operation: "create" | "update" | "destroy";
|
|
123
142
|
record: unknown;
|
|
124
143
|
}) => Record<string, unknown>) | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* - Static realtime channel this resource subscribes through `subscribeRealtime(...)`; use the `sync.client.realtime.channels` callback for channels needing runtime params.
|
|
146
|
+
*/
|
|
147
|
+
realtime?: ModelSyncRealtimeDeclaration | undefined;
|
|
125
148
|
};
|
|
126
149
|
export type ModelSyncDeclaration = boolean | ModelSyncDeclarationConfig;
|
|
127
150
|
/**
|
|
@@ -193,6 +216,10 @@ export type SyncClientConfig = {
|
|
|
193
216
|
authenticationToken: string;
|
|
194
217
|
syncs: Array<Record<string, unknown>>;
|
|
195
218
|
}) => Promise<import("./sync-api-client-types.js").SyncReplayResponse>;
|
|
219
|
+
/**
|
|
220
|
+
* - Realtime push configuration consumed by `subscribeRealtime(...)`.
|
|
221
|
+
*/
|
|
222
|
+
realtime?: import("../configuration-types.js").VelociousSyncClientRealtimeConfiguration | undefined;
|
|
196
223
|
/**
|
|
197
224
|
* - Derived resource policies keyed by resource/model name.
|
|
198
225
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-client-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client-types.js"],"names":[],"mappings":";;;;;;;gBAKc,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;kBACjB,MAAM
|
|
1
|
+
{"version":3,"file":"sync-client-types.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client-types.js"],"names":[],"mappings":";;;;;;;gBAKc,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;kBACjB,MAAM;;;;;;;;;;;aAQN,MAAM;;;;;;;;;;;;;gBAON,OAAC;;;;;;;;;;;;iBAED,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;0BACrE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,qBAAqB,CAAC;;;;iBAC9E,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;;;;;;;;;kCAGlD;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM;;;;0BAC9E;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;;oBAC7D,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;iBAS7D,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;iBAGrE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,YAAY,CAAC;;;;0BACrE,OAAO,4BAA4B,EAAE,kBAAkB,CAAC,qBAAqB,CAAC;;;;;;;;kCAE3D;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM;;;;;oBACrB,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;;;;;0BAC/F;QAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAC,CAAA;KAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;;;mCAIpF,OAAO,GAAG,0BAA0B;;;;;;;;;;;;;;2BAQ7B;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAC,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;;;;;;gBAE9E,OAAC;;;;;;;;;;yBAOD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;;;;;;;mBAE9B,OAAO,qBAAqB,EAAE,OAAO;;;;sBAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;;;;2BACzB;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAC,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;;uBACtE,KAAK,KAAK,IAAI;;;;iBACtB,CAAC,OAAO,EAAE,OAAO,4BAA4B,EAAE,kBAAkB,GAAG;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAC,KAAK,OAAO,CAAC,OAAO,4BAA4B,EAAE,mBAAmB,CAAC;;;;gBACtK,CAAC,OAAO,EAAE;QAAC,mBAAmB,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAAA;KAAC,KAAK,OAAO,CAAC,OAAO,4BAA4B,EAAE,kBAAkB,CAAC;;;;;;;;eAE7I,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC;;;;eACxC,OAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLWNsaWVudC10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQ2xpZW50LWRlY2xhcmVkIHN5bmMgc2NvcGUgc2VyaWFsaXplZCBmcm9tIGEgbW9kZWwgcXVlcnkuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTZXJpYWxpemVkU3luY1Njb3BlXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsID8+fSBjb25kaXRpb25zIC0gUGxhaW4gYXR0cmlidXRlIGNvbmRpdGlvbnMgZnJvbSB0aGUgcXVlcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VUeXBlIC0gUmVzb3VyY2UvbW9kZWwgbmFtZSB0aGUgc2NvcGUgd2FzIGRlY2xhcmVkIGZvci5cbiAqL1xuXG4vKipcbiAqIERlY2xhcmF0aXZlIHBlci1yZXNvdXJjZSBzeW5jIHBvbGljeS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNDbGllbnRSZXNvdXJjZUNvbmZpZ1xuICogQHByb3BlcnR5IHs/fSBtb2RlbENsYXNzIC0gTG9jYWwgbW9kZWwgY2xhc3MgZm9yIHRoaXMgcmVzb3VyY2UuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImF0dHJpYnV0ZXNcIl19IFthdHRyaWJ1dGVzXSAtIFB1bGwtYXBwbHkgYXR0cmlidXRlIG1hcHBlci4gUmVxdWlyZWQgZm9yIHJlc291cmNlcyB0aGF0IHJlY2VpdmUgcHVsbGVkIGNoYW5nZXMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImZpbmRSZWNvcmRcIl19IFtmaW5kUmVjb3JkXSAtIEN1c3RvbSBwdWxsLWFwcGx5IHJlY29yZCByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiZmluZFJlY29yZEZvckRlbGV0ZVwiXX0gW2ZpbmRSZWNvcmRGb3JEZWxldGVdIC0gQ3VzdG9tIHB1bGwtYXBwbHkgZGVsZXRlIHJlc29sdmVyLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJhZnRlckFwcGx5XCJdfSBbYWZ0ZXJBcHBseV0gLSBQb3N0LWFwcGx5IGhvb2suXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbYm9vbGVhbkF0dHJpYnV0ZXNdIC0gQXR0cmlidXRlcyBjb2VyY2VkIHRocm91Z2ggc3luYyBib29sZWFuIHBhcnNpbmcgd2hlbiBxdWV1ZWluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtsb2NhbE9ubHlBdHRyaWJ1dGVzXSAtIEF0dHJpYnV0ZXMgc3RyaXBwZWQgZnJvbSBxdWV1ZWQgcGF5bG9hZHMuXG4gKiBAcHJvcGVydHkge1widXBzZXJ0XCIgfCAoKGFyZ3M6IHtvcGVyYXRpb246IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCIsIHJlY29yZDogP30pID0+IHN0cmluZyl9IFtzeW5jVHlwZV0gLSBNYXBzIGEgbXV0YXRpb24gb3BlcmF0aW9uIHRvIGEgc3luYyB0eXBlLiBUaGUgXCJ1cHNlcnRcIiBmbGFnIHF1ZXVlcyBjcmVhdGVzIGFuZCB1cGRhdGVzIGFzIFwidXBkYXRlXCIgcm93cyAodGhlIHNlcnZlciB1cHNlcnRzIGJ5IHJlc291cmNlIGlkKSBhbmQgZGVzdHJveXMgYXMgXCJkZWxldGVcIi4gRGVmYXVsdHMgdG8gdGhlIG9wZXJhdGlvbiBuYW1lIHdpdGggZGVzdHJveSBtYXBwZWQgdG8gXCJkZWxldGVcIi5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtvcGVyYXRpb246IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCIsIHJlY29yZDogP30pID0+IFJlY29yZDxzdHJpbmcsID8+fSBbdHJhY2tlZERhdGFdIC0gQ3VzdG9tIHF1ZXVlZC1wYXlsb2FkIGJ1aWxkZXIgZm9yIHRyYWNrZWQgbXV0YXRpb25zLlxuICogQHByb3BlcnR5IHtib29sZWFuIHwge29wZXJhdGlvbnM6IEFycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+fX0gW3RyYWNrXSAtIEVuYWJsZXMgYXV0b21hdGljIG11dGF0aW9uIHRyYWNraW5nIHRocm91Z2ggbW9kZWwgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAqL1xuXG4vKipcbiAqIE1vZGVsLWxldmVsIGNsaWVudCBzeW5jIGRlY2xhcmF0aW9uIHJlYWQgZnJvbSBgc3RhdGljIHN5bmNgIGJ5XG4gKiBgU3luY0NsaWVudC5mcm9tQ29uZmlndXJhdGlvbiguLi4pYC4gYHRydWVgIG9wdHMgdGhlIG1vZGVsIGluIHdpdGggYWxsXG4gKiBkZWZhdWx0czsgYW4gb2JqZWN0IGN1c3RvbWl6ZXMgdGhlIGRlcml2ZWQgcmVzb3VyY2UgY29uZmlnLlxuICogQHR5cGVkZWYge29iamVjdH0gTW9kZWxTeW5jRGVjbGFyYXRpb25Db25maWdcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiYWZ0ZXJBcHBseVwiXX0gW2FmdGVyQXBwbHldIC0gUG9zdC1hcHBseSBob29rLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJhdHRyaWJ1dGVzXCJdfSBbYXR0cmlidXRlc10gLSBQdWxsLWFwcGx5IGF0dHJpYnV0ZSBtYXBwZXIuIFJlcXVpcmVkIGZvciByZXNvdXJjZXMgdGhhdCByZWNlaXZlIHB1bGxlZCBjaGFuZ2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2Jvb2xlYW5BdHRyaWJ1dGVzXSAtIEV4dHJhIGJvb2xlYW4gYXR0cmlidXRlcyBtZXJnZWQgd2l0aCB0aGUgYm9vbGVhbiBjb2x1bW5zIGRlcml2ZWQgZnJvbSBjb2x1bW4gdHlwZXMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImZpbmRSZWNvcmRcIl19IFtmaW5kUmVjb3JkXSAtIEN1c3RvbSBwdWxsLWFwcGx5IHJlY29yZCByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiZmluZFJlY29yZEZvckRlbGV0ZVwiXX0gW2ZpbmRSZWNvcmRGb3JEZWxldGVdIC0gQ3VzdG9tIHB1bGwtYXBwbHkgZGVsZXRlIHJlc29sdmVyLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2xvY2FsT25seUF0dHJpYnV0ZXNdIC0gRXh0cmEgbG9jYWwtb25seSBhdHRyaWJ1dGVzIG1lcmdlZCB3aXRoIHRoZSBkZXJpdmVkIHByaW1hcnkga2V5LCBjcmVhdGVkQXQvdXBkYXRlZEF0LCBhbmQgc3luYyBib29ra2VlcGluZyBhdHRyaWJ1dGVzLlxuICogQHByb3BlcnR5IHtcInVwc2VydFwiIHwgKChhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBzdHJpbmcpfSBbc3luY1R5cGVdIC0gU3luYyB0eXBlIGZsYWcgb3IgbWFwcGVyIChzZWUgU3luY0NsaWVudFJlc291cmNlQ29uZmlnKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IEFycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+IHwge29wZXJhdGlvbnM6IEFycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+fX0gW3RyYWNrXSAtIEVuYWJsZXMgYXV0b21hdGljIG11dGF0aW9uIHRyYWNraW5nOyBhbiBhcnJheSBpcyBzaG9ydGhhbmQgZm9yIHtvcGVyYXRpb25zfS5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtvcGVyYXRpb246IFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCIsIHJlY29yZDogP30pID0+IFJlY29yZDxzdHJpbmcsID8+fSBbdHJhY2tlZERhdGFdIC0gQ3VzdG9tIHF1ZXVlZC1wYXlsb2FkIGJ1aWxkZXIgZm9yIHRyYWNrZWQgbXV0YXRpb25zLlxuICovXG5cbi8qKiBAdHlwZWRlZiB7Ym9vbGVhbiB8IE1vZGVsU3luY0RlY2xhcmF0aW9uQ29uZmlnfSBNb2RlbFN5bmNEZWNsYXJhdGlvbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1aWxkaW5nIGEgc3luYyBjbGllbnQuIEV2ZXJ5dGhpbmcgZWxzZSDigJQgcmVzb3VyY2VzLCB0cmFuc3BvcnRcbiAqIFBPU1RlcnMsIGF1dGgsIGNvbm5lY3Rpdml0eSwgYmF0Y2ggc2l6ZSDigJQgaXMgZGVyaXZlZCBmcm9tIHRoZSBjb25maWd1cmF0aW9uJ3NcbiAqIHJlZ2lzdGVyZWQgbW9kZWxzIChgc3RhdGljIHN5bmNgKSBhbmQgaXRzIGBzeW5jLmNsaWVudGAgYmxvY2suXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jQ2xpZW50T3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFtjb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSByZWdpc3RlcmVkIG1vZGVscywgdGhlIGBzeW5jLmNsaWVudGAgYmxvY2ssIGFuZCB0aGUgc2NvcGUtc3RvcmUgZGF0YWJhc2UuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NvcGU6IFNlcmlhbGl6ZWRTeW5jU2NvcGV9KSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gW2xlZ2FjeUN1cnNvcl0gLSBTZWVkcyBhIG5ld2x5IGRlY2xhcmVkIHNjb3BlJ3MgY3Vyc29yIChlLmcuIGZyb20gYSBwcmUtc2NvcGUgY3Vyc29yIHN0b3JlKSBzbyBkZXZpY2VzIGRvbid0IHJlLXB1bGwgZXZlcnl0aGluZy5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLXNjb3BlLXN0b3JlLmpzXCIpLmRlZmF1bHR9IFtzY29wZVN0b3JlXSAtIFNjb3BlIHN0b3JlIG92ZXJyaWRlICh0ZXN0cykuXG4gKiBAcHJvcGVydHkgez99IFtzeW5jTW9kZWxdIC0gUGVuZGluZy1zeW5jIG1vZGVsIG92ZXJyaWRlLiBEZWZhdWx0cyB0byB0aGUgcmVnaXN0ZXJlZCBcIlN5bmNcIiBtb2RlbC5cbiAqL1xuXG4vKipcbiAqIEludGVybmFsIGRlcml2ZWQgc3luYyBjbGllbnQgY29uZmlndXJhdGlvbiBidWlsdCBieSB0aGUgU3luY0NsaWVudFxuICogY29uc3RydWN0b3Ig4oCUIG5vdCBhbiBhcHAtZmFjaW5nIEFQSS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNDbGllbnRDb25maWdcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+fSBhdXRoZW50aWNhdGlvblRva2VuIC0gUmVzb2x2ZXMgdGhlIGF1dGggdG9rZW4gc2VudCB3aXRoIHN5bmMgcmVxdWVzdHMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2JhdGNoU2l6ZV0gLSBNYXggc3luY3MgcGVyIHJlcXVlc3QuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSBzY29wZS1zdG9yZSBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj59IFtpc09ubGluZV0gLSBDb25uZWN0aXZpdHkgZ2F0ZSBmb3IgcHVsbHMgYW5kIHJlcGxheXMuIERlZmF1bHRzIHRvIGFsd2F5cyBvbmxpbmUuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NvcGU6IFNlcmlhbGl6ZWRTeW5jU2NvcGV9KSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gW2xlZ2FjeUN1cnNvcl0gLSBTZWVkcyBhIG5ld2x5IGRlY2xhcmVkIHNjb3BlJ3MgY3Vyc29yIChlLmcuIGZyb20gYSBwcmUtc2NvcGUgY3Vyc29yIHN0b3JlKSBzbyBkZXZpY2VzIGRvbid0IHJlLXB1bGwgZXZlcnl0aGluZy5cbiAqIEBwcm9wZXJ0eSB7KGVycm9yOiBFcnJvcikgPT4gdm9pZH0gW29uRXJyb3JdIC0gUmVwb3J0cyBiYWNrZ3JvdW5kIHJlcGxheS9wdWxsIGZhaWx1cmVzLiBEZWZhdWx0cyB0byByZXRocm93aW5nLlxuICogQHByb3BlcnR5IHsocGF5bG9hZDogaW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY0NoYW5nZXNSZXF1ZXN0ICYge3Njb3BlOiBTZXJpYWxpemVkU3luY1Njb3BlfSkgPT4gUHJvbWlzZTxpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jQ2hhbmdlc1Jlc3BvbnNlPn0gcG9zdENoYW5nZXMgLSBQb3N0cyBvbmUgY2hhbmdlcyByZXF1ZXN0LlxuICogQHByb3BlcnR5IHsocGF5bG9hZDoge2F1dGhlbnRpY2F0aW9uVG9rZW46IHN0cmluZywgc3luY3M6IEFycmF5PFJlY29yZDxzdHJpbmcsID8+Pn0pID0+IFByb21pc2U8aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1JlcGxheVJlc3BvbnNlPn0gcG9zdFJlcGxheSAtIFBvc3RzIG9uZSByZXBsYXkgcmVxdWVzdC5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgU3luY0NsaWVudFJlc291cmNlQ29uZmlnPn0gcmVzb3VyY2VzIC0gRGVyaXZlZCByZXNvdXJjZSBwb2xpY2llcyBrZXllZCBieSByZXNvdXJjZS9tb2RlbCBuYW1lLlxuICogQHByb3BlcnR5IHs/fSBzeW5jTW9kZWwgLSBMb2NhbCBwZW5kaW5nLXN5bmMgbW9kZWwgY2xhc3MuXG4gKi9cblxuZXhwb3J0IHt9XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jbGllbnQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3luYy9zeW5jLWNsaWVudC10eXBlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQ2xpZW50LWRlY2xhcmVkIHN5bmMgc2NvcGUgc2VyaWFsaXplZCBmcm9tIGEgbW9kZWwgcXVlcnkuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTZXJpYWxpemVkU3luY1Njb3BlXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsID8+fSBjb25kaXRpb25zIC0gUGxhaW4gYXR0cmlidXRlIGNvbmRpdGlvbnMgZnJvbSB0aGUgcXVlcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmVzb3VyY2VUeXBlIC0gUmVzb3VyY2UvbW9kZWwgbmFtZSB0aGUgc2NvcGUgd2FzIGRlY2xhcmVkIGZvci5cbiAqL1xuXG4vKipcbiAqIFN0YXRpYyByZWFsdGltZSBjaGFubmVsIGRlY2xhcmF0aW9uIG9uIGEgbW9kZWwncyBgc3RhdGljIHN5bmNgLCBmb3IgY2hhbm5lbHNcbiAqIHdob3NlIG5hbWUgYW5kIHBhcmFtcyBhcmUgc3RhdGljLiBDaGFubmVscyBuZWVkaW5nIHJ1bnRpbWUgcGFyYW1zIChsaWtlXG4gKiBldmVudElkKSBiZWxvbmcgaW4gdGhlIGBzeW5jLmNsaWVudC5yZWFsdGltZS5jaGFubmVsc2AgY2FsbGJhY2sgaW5zdGVhZC5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IE1vZGVsU3luY1JlYWx0aW1lRGVjbGFyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjaGFubmVsIC0gU2VydmVyIGNoYW5uZWwgbmFtZSB0byBzdWJzY3JpYmUuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsID8+fSBbcGFyYW1zXSAtIFN0YXRpYyBzdWJzY3JpYmUgcGFyYW1zLiBUaGUgZnJhbWV3b3JrIGluamVjdHMgYGF1dGhlbnRpY2F0aW9uVG9rZW5gIGF1dG9tYXRpY2FsbHkuXG4gKi9cblxuLyoqXG4gKiBEZWNsYXJhdGl2ZSBwZXItcmVzb3VyY2Ugc3luYyBwb2xpY3kuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jQ2xpZW50UmVzb3VyY2VDb25maWdcbiAqIEBwcm9wZXJ0eSB7P30gbW9kZWxDbGFzcyAtIExvY2FsIG1vZGVsIGNsYXNzIGZvciB0aGlzIHJlc291cmNlLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJhdHRyaWJ1dGVzXCJdfSBbYXR0cmlidXRlc10gLSBQdWxsLWFwcGx5IGF0dHJpYnV0ZSBtYXBwZXIuIFJlcXVpcmVkIGZvciByZXNvdXJjZXMgdGhhdCByZWNlaXZlIHB1bGxlZCBjaGFuZ2VzLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJmaW5kUmVjb3JkXCJdfSBbZmluZFJlY29yZF0gLSBDdXN0b20gcHVsbC1hcHBseSByZWNvcmQgcmVzb2x2ZXIuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImZpbmRSZWNvcmRGb3JEZWxldGVcIl19IFtmaW5kUmVjb3JkRm9yRGVsZXRlXSAtIEN1c3RvbSBwdWxsLWFwcGx5IGRlbGV0ZSByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiYWZ0ZXJBcHBseVwiXX0gW2FmdGVyQXBwbHldIC0gUG9zdC1hcHBseSBob29rLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2Jvb2xlYW5BdHRyaWJ1dGVzXSAtIEF0dHJpYnV0ZXMgY29lcmNlZCB0aHJvdWdoIHN5bmMgYm9vbGVhbiBwYXJzaW5nIHdoZW4gcXVldWVpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbbG9jYWxPbmx5QXR0cmlidXRlc10gLSBBdHRyaWJ1dGVzIHN0cmlwcGVkIGZyb20gcXVldWVkIHBheWxvYWRzLlxuICogQHByb3BlcnR5IHtcInVwc2VydFwiIHwgKChhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBzdHJpbmcpfSBbc3luY1R5cGVdIC0gTWFwcyBhIG11dGF0aW9uIG9wZXJhdGlvbiB0byBhIHN5bmMgdHlwZS4gVGhlIFwidXBzZXJ0XCIgZmxhZyBxdWV1ZXMgY3JlYXRlcyBhbmQgdXBkYXRlcyBhcyBcInVwZGF0ZVwiIHJvd3MgKHRoZSBzZXJ2ZXIgdXBzZXJ0cyBieSByZXNvdXJjZSBpZCkgYW5kIGRlc3Ryb3lzIGFzIFwiZGVsZXRlXCIuIERlZmF1bHRzIHRvIHRoZSBvcGVyYXRpb24gbmFtZSB3aXRoIGRlc3Ryb3kgbWFwcGVkIHRvIFwiZGVsZXRlXCIuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBSZWNvcmQ8c3RyaW5nLCA/Pn0gW3RyYWNrZWREYXRhXSAtIEN1c3RvbSBxdWV1ZWQtcGF5bG9hZCBidWlsZGVyIGZvciB0cmFja2VkIG11dGF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IHtvcGVyYXRpb25zOiBBcnJheTxcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiPn19IFt0cmFja10gLSBBdXRvbWF0aWMgbXV0YXRpb24gdHJhY2tpbmcgcG9saWN5LiBPbiBieSBkZWZhdWx0IChjcmVhdGVzIGFuZCB1cGRhdGVzIHF1ZXVlIGF1dG9tYXRpY2FsbHkpOyBgZmFsc2VgIG9wdHMgdGhlIHJlc291cmNlIG91dCwgYHRydWVgIGFkZHMgZGVzdHJveXMsIGB7b3BlcmF0aW9uc31gIG5hcnJvd3MgdGhlIHRyYWNrZWQgb3BlcmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7TW9kZWxTeW5jUmVhbHRpbWVEZWNsYXJhdGlvbn0gW3JlYWx0aW1lXSAtIFN0YXRpYyByZWFsdGltZSBjaGFubmVsIHRoaXMgcmVzb3VyY2Ugc3Vic2NyaWJlcyB0aHJvdWdoIGBzdWJzY3JpYmVSZWFsdGltZSguLi4pYC5cbiAqL1xuXG4vKipcbiAqIE1vZGVsLWxldmVsIGNsaWVudCBzeW5jIGRlY2xhcmF0aW9uIHJlYWQgZnJvbSBgc3RhdGljIHN5bmNgIGJ5XG4gKiBgU3luY0NsaWVudC5mcm9tQ29uZmlndXJhdGlvbiguLi4pYC4gYHRydWVgIG9wdHMgdGhlIG1vZGVsIGluIHdpdGggYWxsXG4gKiBkZWZhdWx0czsgYW4gb2JqZWN0IGN1c3RvbWl6ZXMgdGhlIGRlcml2ZWQgcmVzb3VyY2UgY29uZmlnLlxuICogQHR5cGVkZWYge29iamVjdH0gTW9kZWxTeW5jRGVjbGFyYXRpb25Db25maWdcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiYWZ0ZXJBcHBseVwiXX0gW2FmdGVyQXBwbHldIC0gUG9zdC1hcHBseSBob29rLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jUmVzb3VyY2VDb25maWdbXCJhdHRyaWJ1dGVzXCJdfSBbYXR0cmlidXRlc10gLSBQdWxsLWFwcGx5IGF0dHJpYnV0ZSBtYXBwZXIuIFJlcXVpcmVkIGZvciByZXNvdXJjZXMgdGhhdCByZWNlaXZlIHB1bGxlZCBjaGFuZ2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2Jvb2xlYW5BdHRyaWJ1dGVzXSAtIEV4dHJhIGJvb2xlYW4gYXR0cmlidXRlcyBtZXJnZWQgd2l0aCB0aGUgYm9vbGVhbiBjb2x1bW5zIGRlcml2ZWQgZnJvbSBjb2x1bW4gdHlwZXMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc3luYy1hcGktY2xpZW50LXR5cGVzLmpzXCIpLlN5bmNSZXNvdXJjZUNvbmZpZ1tcImZpbmRSZWNvcmRcIl19IFtmaW5kUmVjb3JkXSAtIEN1c3RvbSBwdWxsLWFwcGx5IHJlY29yZCByZXNvbHZlci5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1Jlc291cmNlQ29uZmlnW1wiZmluZFJlY29yZEZvckRlbGV0ZVwiXX0gW2ZpbmRSZWNvcmRGb3JEZWxldGVdIC0gQ3VzdG9tIHB1bGwtYXBwbHkgZGVsZXRlIHJlc29sdmVyLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2xvY2FsT25seUF0dHJpYnV0ZXNdIC0gRXh0cmEgbG9jYWwtb25seSBhdHRyaWJ1dGVzIG1lcmdlZCB3aXRoIHRoZSBkZXJpdmVkIHByaW1hcnkga2V5LCBjcmVhdGVkQXQvdXBkYXRlZEF0LCBhbmQgc3luYyBib29ra2VlcGluZyBhdHRyaWJ1dGVzLlxuICogQHByb3BlcnR5IHtcInVwc2VydFwiIHwgKChhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBzdHJpbmcpfSBbc3luY1R5cGVdIC0gU3luYyB0eXBlIGZsYWcgb3IgbWFwcGVyIChzZWUgU3luY0NsaWVudFJlc291cmNlQ29uZmlnKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IEFycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+IHwge29wZXJhdGlvbnM6IEFycmF5PFwiY3JlYXRlXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCI+fX0gW3RyYWNrXSAtIEF1dG9tYXRpYyBtdXRhdGlvbiB0cmFja2luZyBwb2xpY3k7IGFuIGFycmF5IGlzIHNob3J0aGFuZCBmb3Ige29wZXJhdGlvbnN9LiBPbiBieSBkZWZhdWx0IChjcmVhdGVzIGFuZCB1cGRhdGVzIHF1ZXVlIGF1dG9tYXRpY2FsbHkpOyBgZmFsc2VgIG9wdHMgdGhlIG1vZGVsIG91dCAoZm9yIG1vZGVscyB3cml0dGVuIGJ5IG5vbi11c2VyIGZsb3dzKSwgYHRydWVgIGFkZHMgZGVzdHJveXMuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7b3BlcmF0aW9uOiBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCByZWNvcmQ6ID99KSA9PiBSZWNvcmQ8c3RyaW5nLCA/Pn0gW3RyYWNrZWREYXRhXSAtIEN1c3RvbSBxdWV1ZWQtcGF5bG9hZCBidWlsZGVyIGZvciB0cmFja2VkIG11dGF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7TW9kZWxTeW5jUmVhbHRpbWVEZWNsYXJhdGlvbn0gW3JlYWx0aW1lXSAtIFN0YXRpYyByZWFsdGltZSBjaGFubmVsIHRoaXMgcmVzb3VyY2Ugc3Vic2NyaWJlcyB0aHJvdWdoIGBzdWJzY3JpYmVSZWFsdGltZSguLi4pYDsgdXNlIHRoZSBgc3luYy5jbGllbnQucmVhbHRpbWUuY2hhbm5lbHNgIGNhbGxiYWNrIGZvciBjaGFubmVscyBuZWVkaW5nIHJ1bnRpbWUgcGFyYW1zLlxuICovXG5cbi8qKiBAdHlwZWRlZiB7Ym9vbGVhbiB8IE1vZGVsU3luY0RlY2xhcmF0aW9uQ29uZmlnfSBNb2RlbFN5bmNEZWNsYXJhdGlvbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1aWxkaW5nIGEgc3luYyBjbGllbnQuIEV2ZXJ5dGhpbmcgZWxzZSDigJQgcmVzb3VyY2VzLCB0cmFuc3BvcnRcbiAqIFBPU1RlcnMsIGF1dGgsIGNvbm5lY3Rpdml0eSwgYmF0Y2ggc2l6ZSDigJQgaXMgZGVyaXZlZCBmcm9tIHRoZSBjb25maWd1cmF0aW9uJ3NcbiAqIHJlZ2lzdGVyZWQgbW9kZWxzIChgc3RhdGljIHN5bmNgKSBhbmQgaXRzIGBzeW5jLmNsaWVudGAgYmxvY2suXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTeW5jQ2xpZW50T3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IFtjb25maWd1cmF0aW9uXSAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSByZWdpc3RlcmVkIG1vZGVscywgdGhlIGBzeW5jLmNsaWVudGAgYmxvY2ssIGFuZCB0aGUgc2NvcGUtc3RvcmUgZGF0YWJhc2UuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NvcGU6IFNlcmlhbGl6ZWRTeW5jU2NvcGV9KSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gW2xlZ2FjeUN1cnNvcl0gLSBTZWVkcyBhIG5ld2x5IGRlY2xhcmVkIHNjb3BlJ3MgY3Vyc29yIChlLmcuIGZyb20gYSBwcmUtc2NvcGUgY3Vyc29yIHN0b3JlKSBzbyBkZXZpY2VzIGRvbid0IHJlLXB1bGwgZXZlcnl0aGluZy5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zeW5jLXNjb3BlLXN0b3JlLmpzXCIpLmRlZmF1bHR9IFtzY29wZVN0b3JlXSAtIFNjb3BlIHN0b3JlIG92ZXJyaWRlICh0ZXN0cykuXG4gKiBAcHJvcGVydHkgez99IFtzeW5jTW9kZWxdIC0gUGVuZGluZy1zeW5jIG1vZGVsIG92ZXJyaWRlLiBEZWZhdWx0cyB0byB0aGUgcmVnaXN0ZXJlZCBcIlN5bmNcIiBtb2RlbC5cbiAqL1xuXG4vKipcbiAqIEludGVybmFsIGRlcml2ZWQgc3luYyBjbGllbnQgY29uZmlndXJhdGlvbiBidWlsdCBieSB0aGUgU3luY0NsaWVudFxuICogY29uc3RydWN0b3Ig4oCUIG5vdCBhbiBhcHAtZmFjaW5nIEFQSS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN5bmNDbGllbnRDb25maWdcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+fSBhdXRoZW50aWNhdGlvblRva2VuIC0gUmVzb2x2ZXMgdGhlIGF1dGggdG9rZW4gc2VudCB3aXRoIHN5bmMgcmVxdWVzdHMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2JhdGNoU2l6ZV0gLSBNYXggc3luY3MgcGVyIHJlcXVlc3QuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gb3duaW5nIHRoZSBzY29wZS1zdG9yZSBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj59IFtpc09ubGluZV0gLSBDb25uZWN0aXZpdHkgZ2F0ZSBmb3IgcHVsbHMgYW5kIHJlcGxheXMuIERlZmF1bHRzIHRvIGFsd2F5cyBvbmxpbmUuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NvcGU6IFNlcmlhbGl6ZWRTeW5jU2NvcGV9KSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPn0gW2xlZ2FjeUN1cnNvcl0gLSBTZWVkcyBhIG5ld2x5IGRlY2xhcmVkIHNjb3BlJ3MgY3Vyc29yIChlLmcuIGZyb20gYSBwcmUtc2NvcGUgY3Vyc29yIHN0b3JlKSBzbyBkZXZpY2VzIGRvbid0IHJlLXB1bGwgZXZlcnl0aGluZy5cbiAqIEBwcm9wZXJ0eSB7KGVycm9yOiBFcnJvcikgPT4gdm9pZH0gW29uRXJyb3JdIC0gUmVwb3J0cyBiYWNrZ3JvdW5kIHJlcGxheS9wdWxsIGZhaWx1cmVzLiBEZWZhdWx0cyB0byByZXRocm93aW5nLlxuICogQHByb3BlcnR5IHsocGF5bG9hZDogaW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY0NoYW5nZXNSZXF1ZXN0ICYge3Njb3BlOiBTZXJpYWxpemVkU3luY1Njb3BlfSkgPT4gUHJvbWlzZTxpbXBvcnQoXCIuL3N5bmMtYXBpLWNsaWVudC10eXBlcy5qc1wiKS5TeW5jQ2hhbmdlc1Jlc3BvbnNlPn0gcG9zdENoYW5nZXMgLSBQb3N0cyBvbmUgY2hhbmdlcyByZXF1ZXN0LlxuICogQHByb3BlcnR5IHsocGF5bG9hZDoge2F1dGhlbnRpY2F0aW9uVG9rZW46IHN0cmluZywgc3luY3M6IEFycmF5PFJlY29yZDxzdHJpbmcsID8+Pn0pID0+IFByb21pc2U8aW1wb3J0KFwiLi9zeW5jLWFwaS1jbGllbnQtdHlwZXMuanNcIikuU3luY1JlcGxheVJlc3BvbnNlPn0gcG9zdFJlcGxheSAtIFBvc3RzIG9uZSByZXBsYXkgcmVxdWVzdC5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNTeW5jQ2xpZW50UmVhbHRpbWVDb25maWd1cmF0aW9ufSBbcmVhbHRpbWVdIC0gUmVhbHRpbWUgcHVzaCBjb25maWd1cmF0aW9uIGNvbnN1bWVkIGJ5IGBzdWJzY3JpYmVSZWFsdGltZSguLi4pYC5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgU3luY0NsaWVudFJlc291cmNlQ29uZmlnPn0gcmVzb3VyY2VzIC0gRGVyaXZlZCByZXNvdXJjZSBwb2xpY2llcyBrZXllZCBieSByZXNvdXJjZS9tb2RlbCBuYW1lLlxuICogQHByb3BlcnR5IHs/fSBzeW5jTW9kZWwgLSBMb2NhbCBwZW5kaW5nLXN5bmMgbW9kZWwgY2xhc3MuXG4gKi9cblxuZXhwb3J0IHt9XG4iXX0=
|
|
@@ -55,6 +55,8 @@ export default class SyncClient {
|
|
|
55
55
|
/** @type {import("./sync-client-types.js").SyncClientConfig} */
|
|
56
56
|
config: import("./sync-client-types.js").SyncClientConfig;
|
|
57
57
|
_clientNumber: number;
|
|
58
|
+
/** @type {SyncRealtimeBridge | null} */
|
|
59
|
+
_realtimeBridge: SyncRealtimeBridge | null;
|
|
58
60
|
/** @type {import("./sync-scope-store.js").default | null} */
|
|
59
61
|
_scopeStore: import("./sync-scope-store.js").default | null;
|
|
60
62
|
/** @type {Promise<void> | null} */
|
|
@@ -69,11 +71,18 @@ export default class SyncClient {
|
|
|
69
71
|
}>;
|
|
70
72
|
/** @type {WeakSet<object>} */
|
|
71
73
|
_remoteApplyRecords: WeakSet<object>;
|
|
74
|
+
_withoutTrackingDepth: number;
|
|
75
|
+
/** @type {Logger | {error: (...messages: Array<?>) => Promise<void>} | null} */
|
|
76
|
+
_logger: Logger | {
|
|
77
|
+
error: (...messages: Array<unknown>) => Promise<void>;
|
|
78
|
+
} | null;
|
|
72
79
|
_started: boolean;
|
|
73
80
|
/**
|
|
74
|
-
* Registers automatic mutation tracking for every resource
|
|
75
|
-
* local
|
|
76
|
-
* immediate replay attempt, without
|
|
81
|
+
* Registers automatic mutation tracking for every declared resource (on by
|
|
82
|
+
* default: local creates and updates queue pending sync rows once their
|
|
83
|
+
* transaction commits and schedule an immediate replay attempt, without
|
|
84
|
+
* app-side queue calls). `track: false` resources are skipped; `track: true`
|
|
85
|
+
* adds destroys; an operations list narrows the tracked operations.
|
|
77
86
|
* @returns {Promise<void>}
|
|
78
87
|
*/
|
|
79
88
|
start(): Promise<void>;
|
|
@@ -84,6 +93,9 @@ export default class SyncClient {
|
|
|
84
93
|
stop(): void;
|
|
85
94
|
/**
|
|
86
95
|
* Resolves and validates the tracked operations for a resource config.
|
|
96
|
+
* Tracking is on by default: models declaring `static sync` without a `track`
|
|
97
|
+
* key queue local creates and updates automatically; `track: false` opts a
|
|
98
|
+
* model out (for models written by non-user flows).
|
|
87
99
|
* @param {{resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig, resourceType: string}} args - Resource config and name.
|
|
88
100
|
* @returns {Array<"create" | "update" | "destroy">} Tracked operations.
|
|
89
101
|
*/
|
|
@@ -92,7 +104,15 @@ export default class SyncClient {
|
|
|
92
104
|
resourceType: string;
|
|
93
105
|
}): Array<"create" | "update" | "destroy">;
|
|
94
106
|
/**
|
|
95
|
-
* Builds the lifecycle callback queueing one tracked mutation.
|
|
107
|
+
* Builds the lifecycle callback queueing one tracked mutation. The queued
|
|
108
|
+
* payload and sync type are snapshotted at mutation-callback time, so
|
|
109
|
+
* afterSave hooks assigning unsaved attributes (or any later drift on the
|
|
110
|
+
* record) cannot change what gets queued vs what was committed. Queueing is
|
|
111
|
+
* deferred through the model connection's afterCommit hook so it only runs
|
|
112
|
+
* once the mutation's transaction has committed (immediately when no
|
|
113
|
+
* transaction is open) - queued syncs never reference rolled-back rows.
|
|
114
|
+
* Post-commit queue failures are reported without rethrowing into the
|
|
115
|
+
* driver's afterCommit chain (see reportAfterCommitError).
|
|
96
116
|
* @param {{operation: "create" | "update" | "destroy", resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig}} args - Operation and resource config.
|
|
97
117
|
* @returns {(record: ?) => Promise<void>} Lifecycle callback.
|
|
98
118
|
*/
|
|
@@ -100,12 +120,60 @@ export default class SyncClient {
|
|
|
100
120
|
operation: "create" | "update" | "destroy";
|
|
101
121
|
resourceConfig: import("./sync-client-types.js").SyncClientResourceConfig;
|
|
102
122
|
}): (record: unknown) => Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Reports a post-commit tracked-queueing failure. The transaction has already
|
|
125
|
+
* committed when afterCommit callbacks run, so rethrowing here would poison
|
|
126
|
+
* the driver's awaited afterCommit chain (breaking unrelated callbacks) -
|
|
127
|
+
* instead the failure goes to the configured sync.client.onError hook, or is
|
|
128
|
+
* logged loudly through the client's logger when none is configured.
|
|
129
|
+
* @param {Error} error - Post-commit queueing failure.
|
|
130
|
+
* @returns {Promise<void>}
|
|
131
|
+
*/
|
|
132
|
+
reportAfterCommitError(error: Error): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Returns the lazily built client logger.
|
|
135
|
+
* @returns {Logger | {error: (...messages: Array<?>) => Promise<void>}} Client logger.
|
|
136
|
+
*/
|
|
137
|
+
logger(): Logger | {
|
|
138
|
+
error: (...messages: Array<unknown>) => Promise<void>;
|
|
139
|
+
};
|
|
103
140
|
/**
|
|
104
141
|
* Whether a record is currently being written by pull-apply (echo suppression).
|
|
105
142
|
* @param {?} record - Local model record.
|
|
106
143
|
* @returns {boolean} Whether the record write originates from a remote change.
|
|
107
144
|
*/
|
|
108
145
|
isRemoteApply(record: unknown): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Whether tracked mutation queueing is currently suppressed for a record:
|
|
148
|
+
* either the record was marked as a remote apply (`markRemoteApply`, used by
|
|
149
|
+
* pull and realtime applies) or a `withoutTracking` callback is running on
|
|
150
|
+
* this client.
|
|
151
|
+
* @param {?} record - Local model record.
|
|
152
|
+
* @returns {boolean} Whether tracked queueing is suppressed for the record.
|
|
153
|
+
*/
|
|
154
|
+
isTrackingSuppressed(record: unknown): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Runs a callback with tracked mutation queueing suppressed on this client -
|
|
157
|
+
* for code applying server-originated data outside the derived pull/realtime
|
|
158
|
+
* appliers (legacy pull paths, importers, sign-in backfills), so their writes
|
|
159
|
+
* are not echoed back to the server as device changes. Suppression covers the
|
|
160
|
+
* whole async duration of the callback (nested calls stack) and is
|
|
161
|
+
* client-wide while it runs: mutations from concurrently running tasks are
|
|
162
|
+
* also suppressed for that window, so prefer `markRemoteApply(record)` when
|
|
163
|
+
* writes from other flows can interleave.
|
|
164
|
+
* @template T
|
|
165
|
+
* @param {() => Promise<T> | T} callback - Work whose model writes should not queue tracked syncs.
|
|
166
|
+
* @returns {Promise<T>} The callback result.
|
|
167
|
+
*/
|
|
168
|
+
withoutTracking<T>(callback: () => Promise<T> | T): Promise<T>;
|
|
169
|
+
/**
|
|
170
|
+
* Marks one record as being written from server-originated data so tracked
|
|
171
|
+
* mutation queueing skips it (record-precise suppression). The derived pull
|
|
172
|
+
* and realtime appliers use this internally around every applied write.
|
|
173
|
+
* @param {?} record - Local model record about to be written.
|
|
174
|
+
* @returns {() => void} Release callback re-enabling tracking for the record.
|
|
175
|
+
*/
|
|
176
|
+
markRemoteApply(record: unknown): () => void;
|
|
109
177
|
/**
|
|
110
178
|
* Registers this client as the app's current sync client.
|
|
111
179
|
* @returns {void}
|
|
@@ -131,6 +199,45 @@ export default class SyncClient {
|
|
|
131
199
|
* @returns {Promise<import("./sync-api-client-types.js").SyncChangesResult | null>} Combined pull result, or null while offline.
|
|
132
200
|
*/
|
|
133
201
|
pull(): Promise<import("./sync-api-client-types.js").SyncChangesResult | null>;
|
|
202
|
+
/**
|
|
203
|
+
* Builds the derived remote-change applier shared by pulls and realtime pushes:
|
|
204
|
+
* applies through the declared resource configs, registers each written record
|
|
205
|
+
* for echo suppression (tracked resources do not re-queue applied changes), and
|
|
206
|
+
* fails loudly instead of silently skipping unconfigured resources.
|
|
207
|
+
* @param {{source?: string}} [args] - Error context describing where the change came from.
|
|
208
|
+
* @returns {(sync: import("./sync-api-client-types.js").SyncChangeEnvelope) => Promise<import("./sync-api-client-types.js").SyncChangeApplyResult>} Loud remote-change applier.
|
|
209
|
+
*/
|
|
210
|
+
remoteApplySync({ source }?: {
|
|
211
|
+
source?: string;
|
|
212
|
+
}): (sync: import("./sync-api-client-types.js").SyncChangeEnvelope) => Promise<import("./sync-api-client-types.js").SyncChangeApplyResult>;
|
|
213
|
+
/**
|
|
214
|
+
* Subscribes the derived realtime channels so pushed websocket changes apply
|
|
215
|
+
* through the same derived applier as pulls (idempotent, single-flighted).
|
|
216
|
+
* @param {?} [context] - App context passed to the `sync.client.realtime.channels` callback (runtime values like eventId).
|
|
217
|
+
* @returns {Promise<void>}
|
|
218
|
+
*/
|
|
219
|
+
subscribeRealtime(context?: unknown): Promise<void>;
|
|
220
|
+
/**
|
|
221
|
+
* Unsubscribes the realtime channels and disconnects the websocket client (idempotent).
|
|
222
|
+
* @returns {Promise<void>}
|
|
223
|
+
*/
|
|
224
|
+
unsubscribeRealtime(): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* Reports the realtime subscription state and per-channel readiness.
|
|
227
|
+
* @returns {ReturnType<SyncRealtimeBridge["status"]>} Realtime status.
|
|
228
|
+
*/
|
|
229
|
+
realtimeStatus(): ReturnType<SyncRealtimeBridge["status"]>;
|
|
230
|
+
/**
|
|
231
|
+
* Awaits all pending realtime message applies and any scheduled
|
|
232
|
+
* pull-on-reconnect (useful in tests and shutdown flows).
|
|
233
|
+
* @returns {Promise<void>}
|
|
234
|
+
*/
|
|
235
|
+
waitForRealtimeApplied(): Promise<void>;
|
|
236
|
+
/**
|
|
237
|
+
* Returns the lazily built realtime bridge.
|
|
238
|
+
* @returns {SyncRealtimeBridge} Realtime bridge.
|
|
239
|
+
*/
|
|
240
|
+
realtimeBridge(): SyncRealtimeBridge;
|
|
134
241
|
/**
|
|
135
242
|
* Queues a local model change as a pending sync row and schedules an immediate
|
|
136
243
|
* replay attempt (kept pending while offline or when the backend rejects it).
|
|
@@ -200,4 +307,6 @@ export default class SyncClient {
|
|
|
200
307
|
pullResourceConfigs(): Record<string, import("./sync-api-client-types.js").SyncResourceConfig>;
|
|
201
308
|
}
|
|
202
309
|
import Configuration from "../configuration.js";
|
|
310
|
+
import SyncRealtimeBridge from "./sync-realtime-bridge.js";
|
|
311
|
+
import Logger from "../logger.js";
|
|
203
312
|
//# sourceMappingURL=sync-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-client.js"],"names":[],"mappings":"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"}
|