@ztimson/momentum 0.53.2 → 1.0.0

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 (88) hide show
  1. package/README.md +96 -41
  2. package/bin/build-models.mjs +28 -37
  3. package/dist/actions.d.ts +67 -52
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/ai.d.ts +43 -17
  6. package/dist/ai.d.ts.map +1 -1
  7. package/dist/analytics.d.ts +169 -36
  8. package/dist/analytics.d.ts.map +1 -1
  9. package/dist/api.d.ts +22 -22
  10. package/dist/api.d.ts.map +1 -1
  11. package/dist/asset-controller.d.ts +92 -0
  12. package/dist/asset-controller.d.ts.map +1 -0
  13. package/dist/audit.d.ts +22 -0
  14. package/dist/audit.d.ts.map +1 -0
  15. package/dist/auth.d.ts +34 -101
  16. package/dist/auth.d.ts.map +1 -1
  17. package/dist/call.d.ts +61 -0
  18. package/dist/call.d.ts.map +1 -0
  19. package/dist/captcha.d.ts +14 -0
  20. package/dist/captcha.d.ts.map +1 -0
  21. package/dist/client.d.ts +46 -33
  22. package/dist/client.d.ts.map +1 -1
  23. package/dist/core.d.ts +50 -21
  24. package/dist/core.d.ts.map +1 -1
  25. package/dist/data.d.ts +58 -76
  26. package/dist/data.d.ts.map +1 -1
  27. package/dist/dialog.d.ts +11 -0
  28. package/dist/dialog.d.ts.map +1 -0
  29. package/dist/discounts.d.ts +8 -12
  30. package/dist/discounts.d.ts.map +1 -1
  31. package/dist/email.d.ts +19 -19
  32. package/dist/email.d.ts.map +1 -1
  33. package/dist/forms.d.ts +6 -13
  34. package/dist/forms.d.ts.map +1 -1
  35. package/dist/groups.d.ts +22 -16
  36. package/dist/groups.d.ts.map +1 -1
  37. package/dist/index.d.ts +14 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +4473 -0
  40. package/dist/index.mjs +3469 -1752
  41. package/dist/logger.d.ts +78 -48
  42. package/dist/logger.d.ts.map +1 -1
  43. package/dist/momentum.d.ts +71 -15
  44. package/dist/momentum.d.ts.map +1 -1
  45. package/dist/momentum.worker.d.mts +2 -0
  46. package/dist/momentum.worker.d.mts.map +1 -0
  47. package/dist/momentum.worker.mjs +124 -0
  48. package/dist/notifications.d.ts +39 -0
  49. package/dist/notifications.d.ts.map +1 -0
  50. package/dist/pdf.d.ts +32 -14
  51. package/dist/pdf.d.ts.map +1 -1
  52. package/dist/permissions.d.ts +19 -0
  53. package/dist/permissions.d.ts.map +1 -0
  54. package/dist/products.d.ts +47 -0
  55. package/dist/products.d.ts.map +1 -0
  56. package/dist/routes.d.ts +40 -0
  57. package/dist/routes.d.ts.map +1 -0
  58. package/dist/schemas.d.ts +79 -0
  59. package/dist/schemas.d.ts.map +1 -0
  60. package/dist/settings.d.ts +30 -14
  61. package/dist/settings.d.ts.map +1 -1
  62. package/dist/sms.d.ts +14 -0
  63. package/dist/sms.d.ts.map +1 -0
  64. package/dist/sockets.d.ts +22 -12
  65. package/dist/sockets.d.ts.map +1 -1
  66. package/dist/static.d.ts +4 -2
  67. package/dist/static.d.ts.map +1 -1
  68. package/dist/storage.d.ts +103 -24
  69. package/dist/storage.d.ts.map +1 -1
  70. package/dist/templates.d.ts +23 -0
  71. package/dist/templates.d.ts.map +1 -0
  72. package/dist/tokens.d.ts +50 -0
  73. package/dist/tokens.d.ts.map +1 -0
  74. package/dist/totp.d.ts +45 -0
  75. package/dist/totp.d.ts.map +1 -0
  76. package/dist/transactions.d.ts +153 -0
  77. package/dist/transactions.d.ts.map +1 -0
  78. package/dist/users.d.ts +63 -25
  79. package/dist/users.d.ts.map +1 -1
  80. package/dist/webRtc.d.ts +39 -0
  81. package/dist/webRtc.d.ts.map +1 -0
  82. package/package.json +23 -13
  83. package/dist/index.cjs +0 -2756
  84. package/dist/momentum.worker.js +0 -16
  85. package/dist/payments.d.ts +0 -184
  86. package/dist/payments.d.ts.map +0 -1
  87. package/dist/phone.d.ts +0 -19
  88. package/dist/phone.d.ts.map +0 -1
@@ -1,64 +1,197 @@
1
- import { PathEventEmitter } from '@ztimson/utils';
2
- import { Api } from './api';
1
+ import { AssetController } from './asset-controller';
2
+ import { Meta } from './core';
3
+ import { Momentum } from './momentum';
4
+ export type AnalyticInfo = Meta & {
5
+ /** Track ad campaign */
6
+ readonly adCampaign: {
7
+ /** Source of the ad campaign (e.g., search engine or platform) */
8
+ readonly source?: string;
9
+ /** Medium of the ad campaign (e.g., cost-per-click, email) */
10
+ readonly medium?: string;
11
+ /** Name of the ad campaign */
12
+ readonly campaign?: string;
13
+ /** Search term or keywords used in the campaign */
14
+ readonly term?: string;
15
+ /** Specific content that triggered the campaign */
16
+ readonly content?: string;
17
+ };
18
+ /** Browser information */
19
+ readonly browser: {
20
+ /** Browser name */
21
+ readonly name?: string;
22
+ /** Browser version */
23
+ readonly version?: string;
24
+ /** Browser major version */
25
+ readonly major?: string;
26
+ };
27
+ /** CAPTCHA score 0-1 (0 = bot, 1 = human) */
28
+ readonly captcha?: number;
29
+ /** User consent for additional tracking */
30
+ readonly consent?: boolean;
31
+ /** CPU information */
32
+ readonly cpu: {
33
+ /** CPU architecture */
34
+ readonly architecture?: string;
35
+ /** Number of CPU cors */
36
+ readonly cores?: number | 'Unknown';
37
+ };
38
+ /** Device information */
39
+ readonly device: {
40
+ /** Device type (mobile, etc...) */
41
+ readonly type?: string;
42
+ /** Manufacturer */
43
+ readonly vendor?: string;
44
+ /** Device name */
45
+ readonly model?: string;
46
+ };
47
+ /** JavaScript Engine information */
48
+ readonly engine: {
49
+ /** Name of engine */
50
+ readonly name?: string;
51
+ /** Engine version */
52
+ readonly version?: string;
53
+ };
54
+ /** originating IP */
55
+ readonly ip?: string;
56
+ /** System language */
57
+ readonly lang?: string;
58
+ /** JavaScript heap size */
59
+ readonly mem?: number | 'Unknown';
60
+ /** Custom metrics */
61
+ readonly metrics: {
62
+ [key: string]: Metric;
63
+ };
64
+ /** Network speed in bytes-per-second */
65
+ readonly net?: number;
66
+ /** Operating System */
67
+ readonly os: {
68
+ /** OS name */
69
+ readonly name?: string;
70
+ /** OS version */
71
+ readonly version?: string;
72
+ };
73
+ /** User journey */
74
+ readonly pages: {
75
+ page: string | 'CLOSED';
76
+ timestamp: Date;
77
+ duration?: number;
78
+ meta?: any;
79
+ }[];
80
+ /** Website performance */
81
+ readonly performance?: Performance;
82
+ /** Referer */
83
+ readonly referer?: string;
84
+ /** Screen resolution */
85
+ readonly res?: number[];
86
+ /** IP Trace */
87
+ readonly trace?: IpTrace;
88
+ /** Timezone offset */
89
+ readonly tz?: string;
90
+ /** Original user agent string */
91
+ readonly ua?: string;
92
+ };
3
93
  export type IpTrace = {
4
94
  /** Ip trace target */
5
- query: string;
95
+ readonly query: string;
6
96
  /** Trace result */
7
- status: string;
97
+ readonly status: string;
8
98
  /** Geolocated continent */
9
- continent: string;
99
+ readonly continent: string;
10
100
  /** Geolocated continent shortcode */
11
- continentCode: string;
101
+ readonly continentCode: string;
12
102
  /** Geolocated country */
13
- country: string;
103
+ readonly country: string;
14
104
  /** Geolocated country shortcode */
15
- countryCode: string;
105
+ readonly countryCode: string;
16
106
  /** Geolocated country region shortcode */
17
- region: string;
107
+ readonly region: string;
18
108
  /** Geolocated country region */
19
- regionName: string;
109
+ readonly regionName: string;
20
110
  /** Geolocated city */
21
- city: string;
111
+ readonly city: string;
22
112
  /** Geolocated city district/suburb */
23
- district: string;
113
+ readonly district: string;
24
114
  /** Geolocated postal code/zip */
25
- zip: string;
115
+ readonly zip: string;
26
116
  /** Geolocated latitude */
27
- lat: number;
28
- /** Geolocate longitude */
29
- lon: number;
117
+ readonly lat: number;
118
+ /** Geolocated longitude */
119
+ readonly lon: number;
30
120
  /** Geolocated timezone */
31
- timezone: string;
121
+ readonly timezone: string;
32
122
  /** Geolocated timezone offset */
33
- offset: number;
123
+ readonly offset: number;
34
124
  /** Geolocated currency */
35
- currency: string;
125
+ readonly currency: string;
36
126
  /** Address provider */
37
- isp: string;
127
+ readonly isp: string;
38
128
  /** Registered organization */
39
- org: string;
129
+ readonly org: string;
40
130
  /** AS number and organization */
41
- as: string;
131
+ readonly as: string;
42
132
  /** AS organization */
43
- asname: string;
44
- /** Cellular */
45
- mobile: boolean;
133
+ readonly asname: string;
134
+ /** Cellular network */
135
+ readonly mobile: boolean;
46
136
  /** Known proxy, VPN or Tor exit node */
47
- proxy: boolean;
137
+ readonly proxy: boolean;
48
138
  /** Known Host/Datacenter */
49
- hosting: boolean;
139
+ readonly hosting: boolean;
50
140
  /** Failed trace reason */
51
- message?: string;
141
+ readonly message?: string;
142
+ };
143
+ /** Analytics metric */
144
+ export type Metric<T = any> = {
145
+ /** Name of metric */
146
+ name: string;
147
+ /** Metric category for grouping */
148
+ category?: string;
149
+ /** Metric value */
150
+ value: T;
151
+ /** Aggregation strategy, defaults to add */
152
+ strategy?: 'add' | 'avg' | 'count' | 'min' | 'max' | 'set';
153
+ };
154
+ export type Performance = {
155
+ /** Time until first contentful paint (ms) */
156
+ fcp: number;
157
+ /** Time until largest contentful paint (ms) */
158
+ lcp: number;
159
+ /** Time until first byte (ms) */
160
+ ttfb: number;
161
+ /** DOM load time (ms) */
162
+ dom: number;
163
+ /** Total load time (ms) */
164
+ total: number;
52
165
  };
53
166
  /** Audience metrics and metadata */
54
- export declare class Analytics extends PathEventEmitter {
55
- private readonly api;
56
- constructor(api: Api | string);
57
- /**
58
- * Perform IP trace
59
- * @param {string} ip IP address to trace
60
- * @return {Promise<IpTrace>} Trace results
61
- */
167
+ export declare class Analytics extends AssetController<AnalyticInfo> {
168
+ protected momentum: Momentum;
169
+ private lastPage?;
170
+ private _ready?;
171
+ readonly ready: Promise<void>;
172
+ private _performance;
173
+ performance: Promise<Performance>;
174
+ private _consented?;
175
+ readonly consented: Promise<boolean>;
176
+ _consent?: boolean;
177
+ get consent(): boolean | undefined;
178
+ set consent(value: boolean | undefined);
179
+ private _id;
180
+ get id(): string;
181
+ set id(id: string);
182
+ private _new;
183
+ private set new(value);
184
+ get new(): boolean;
185
+ constructor(momentum: Momentum);
186
+ private canPromptAgain;
187
+ private collectNavigationMetrics;
188
+ private collectLCPMetrics;
189
+ private init;
190
+ consentPrompt(content?: string): Promise<boolean>;
191
+ speedTest(format: true, bytes?: number): Promise<string>;
192
+ speedTest(format?: false, bytes?: number): Promise<number>;
62
193
  ipTrace(ip: string): Promise<IpTrace>;
194
+ metric(name: string | [string, string], value: number, strategy?: string): Promise<void>;
195
+ page(page?: string, meta?: any): Promise<void>;
63
196
  }
64
197
  //# sourceMappingURL=analytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAM,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,OAAO,GAAG;IACrB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oCAAoC;AACpC,qBAAa,SAAU,SAAQ,gBAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;gBAEf,GAAG,EAAE,GAAG,GAAG,MAAM;IAK7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAQrC"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts CHANGED
@@ -1,50 +1,50 @@
1
- import { Http, HttpDefaults, HttpRequestOptions, IPathEventEmitter, PromiseProgress } from '@ztimson/utils';
1
+ import { Http, HttpRequestOptions, IPathEventEmitter, PromiseProgress } from '@ztimson/utils';
2
+ import { Momentum } from './momentum';
2
3
  /** Overall Momentum health */
3
4
  export type Health = {
4
5
  /** Momentum status */
5
- status: 'offline' | 'ok' | 'degraded' | 'error';
6
+ readonly status: 'offline' | 'ok' | 'degraded' | 'error';
6
7
  /** Actions module */
7
- actions: ModuleStatus;
8
+ readonly actions: ModuleStatus;
8
9
  /** AI module */
9
- ai: ModuleStatus;
10
+ readonly ai: ModuleStatus;
10
11
  /** Database module */
11
- database: ModuleStatus;
12
+ readonly database: ModuleStatus;
12
13
  /** Email module */
13
- email: ModuleStatus;
14
+ readonly email: ModuleStatus;
14
15
  /** Payments module */
15
- payments: ModuleStatus;
16
+ readonly payments: ModuleStatus;
16
17
  /** Phone module */
17
- phone: ModuleStatus;
18
+ readonly phone: ModuleStatus;
19
+ /** WebRTC TURN server */
20
+ readonly webrtc: ModuleStatus;
18
21
  /** Version number */
19
- version: string;
22
+ readonly version: string;
20
23
  /** Last commit */
21
- commit: string;
24
+ readonly commit: string;
25
+ /** Cluster nodes */
26
+ readonly cluster?: string[];
27
+ /** Uptime in seconds */
28
+ readonly uptime?: number;
22
29
  };
23
30
  /** Momentum module status */
24
31
  export type ModuleStatus = 'disabled' | 'ok' | 'warn' | 'error';
25
- /** API options */
26
- export type ApiOptions = {
27
- http?: HttpDefaults;
28
- persist?: boolean;
29
- };
30
32
  /** Create API requests */
31
33
  export declare class Api extends Http implements IPathEventEmitter {
32
- readonly url: string;
33
- readonly opts: ApiOptions;
34
+ private momentum;
34
35
  private emitter;
35
36
  private pending;
36
37
  private storageKey;
37
- readonly host: string;
38
38
  get sameOrigin(): boolean;
39
39
  private _token;
40
40
  /** Current API token */
41
41
  get token(): string | null;
42
42
  set token(token: string | null);
43
- constructor(url?: string, opts?: ApiOptions);
44
- emit: (event: string | import('@ztimson/utils').PathEvent, ...args: any[]) => void;
43
+ constructor(momentum: Momentum);
44
+ emit: (event: import('@ztimson/utils').Event, ...args: any[]) => void;
45
45
  off: (listener: import('@ztimson/utils').PathListener) => void;
46
- on: (event: string | string[], listener: import('@ztimson/utils').PathListener) => import('@ztimson/utils').PathUnsubscribe;
47
- once: (event: string | string[], listener?: import('@ztimson/utils').PathListener) => Promise<any>;
46
+ on: (event: import('@ztimson/utils').Event | import('@ztimson/utils').Event[], listener: import('@ztimson/utils').PathListener) => import('@ztimson/utils').PathUnsubscribe;
47
+ once: (event: import('@ztimson/utils').Event | import('@ztimson/utils').Event[], listener?: import('@ztimson/utils').PathListener) => Promise<any>;
48
48
  relayEvents: (emitter: IPathEventEmitter) => void;
49
49
  /**
50
50
  * Fetch current Momentum status
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,IAAI,EACJ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,MAAM,gBAAgB,CAAC;AAExB,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IACpB,sBAAsB;IACtB,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;IAChD,qBAAqB;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB;IAChB,EAAE,EAAE,YAAY,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,mBAAmB;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,mBAAmB;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CACf,CAAA;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE,kBAAkB;AAClB,MAAM,MAAM,UAAU,GAAG;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC;AAEF,0BAA0B;AAC1B,qBAAa,GAAI,SAAQ,IAAK,YAAW,iBAAiB;aA0B7B,GAAG,EAAE,MAAM;aAAoC,IAAI,EAAE,UAAU;IAzB3F,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,UAAU,CAAU;IAE5B,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC;IAEvB,IAAI,UAAU,YAGb;IAED,OAAO,CAAC,MAAM,CAAuB;IACrC,wBAAwB;IACxB,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAAwB;IAClD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAS7B;gBAE2B,GAAG,GAAE,MAAwB,EAAkB,IAAI,GAAE,UAAe;IAWhG,IAAI,+EAAwC;IAC5C,GAAG,4DAAuC;IAC1C,EAAE,0HAAsC;IACxC,IAAI,+FAAwC;IAC5C,WAAW,uCAA+C;IAE1D;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC;CAgB3D"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,IAAI,EACJ,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IACpB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;IACzD,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,gBAAgB;IAChB,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,mBAAmB;IACnB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,mBAAmB;IACnB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB,CAAA;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhE,0BAA0B;AAC1B,qBAAa,GAAI,SAAQ,IAAK,YAAW,iBAAiB;IA0B7C,OAAO,CAAC,QAAQ;IAzB5B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,UAAU,CAAU;IAE5B,IAAI,UAAU,YAGb;IAED,OAAO,CAAC,MAAM,CAAuB;IACrC,wBAAwB;IACxB,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAAwB;IAClD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAW7B;gBAEmB,QAAQ,EAAE,QAAQ;IAUtC,IAAI,kEAAwC;IAC5C,GAAG,4DAAuC;IAC1C,EAAE,0KAAsC;IACxC,IAAI,+IAAwC;IAC5C,WAAW,uCAA+C;IAE1D;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC;CAqB3D"}
@@ -0,0 +1,92 @@
1
+ import { Cache, CacheOptions, PathEvent, PathEventEmitter } from '@ztimson/utils';
2
+ import { Meta, TreeNode, Unsubscribe } from './core';
3
+ import { Momentum } from './momentum';
4
+ export type ControllerOptions<T> = any & {
5
+ module: string;
6
+ key?: keyof T;
7
+ storage?: null | keyof CacheOptions['persistentStorage'];
8
+ path?: string;
9
+ };
10
+ /** Boilerplate for connecting to API controllers */
11
+ export declare class AssetController<T extends Meta> extends PathEventEmitter {
12
+ protected momentum: Momentum;
13
+ protected readonly subscribers: {
14
+ [key: string]: Unsubscribe;
15
+ };
16
+ cache: Cache<string, T>;
17
+ opts: ControllerOptions<T>;
18
+ constructor(momentum: Momentum, opts: ControllerOptions<T>);
19
+ /**
20
+ * Process raw data before caching & returning
21
+ * @hidden
22
+ */
23
+ protected afterRead(value: any): T;
24
+ /**
25
+ * Process raw data before sending
26
+ * @hidden
27
+ */
28
+ protected beforeWrite(value: any): T;
29
+ /**
30
+ * Fetch all assets as array
31
+ * @param {boolean} reload Force reload instead of using cache
32
+ * @return {Promise<T[]>} All assets as array
33
+ */
34
+ all(reload?: boolean): Promise<T[]>;
35
+ /**
36
+ * Create new asset
37
+ * @param {T} value Asset that will be created
38
+ * @return {Promise<T>} Saved result
39
+ */
40
+ create(value: T): Promise<T>;
41
+ /**
42
+ * Delete asset
43
+ * @param {string} key Asset primary key
44
+ * @return {Promise<number>} Returns on success
45
+ */
46
+ delete(key?: string): Promise<number>;
47
+ /**
48
+ * Read single asset
49
+ * @param {string} key Asset primary key
50
+ * @param {boolean} reload Force reload instead of using cache
51
+ * @return {Promise<T>} Discovered asset
52
+ */
53
+ read(key: string, reload?: boolean): Promise<T>;
54
+ /**
55
+ * Update exiting asset
56
+ * @param {T} value Asset that will be updated
57
+ * @return {Promise<T>} Saved result
58
+ */
59
+ update(value: Partial<T>): Promise<T>;
60
+ /**
61
+ * Subscribe to live updates with callback
62
+ * @param {(value: T[]) => any | null} callback Received changes
63
+ * @param opts Additional options: path - scope to events within path, reload - Re-fetch even if cached
64
+ * @return {() => void} Function to unsubscribe
65
+ */
66
+ sync(callback?: ((event: PathEvent, value: any) => any) | null, opts?: {
67
+ path?: string;
68
+ reload?: boolean;
69
+ }): Unsubscribe;
70
+ }
71
+ export declare class TreeAssetController<T extends Meta & {
72
+ path: string;
73
+ }> extends AssetController<T> {
74
+ /**
75
+ * Get all schemas organized into a map
76
+ * @param {boolean} reload Reload instead of using cache
77
+ * @return {Promise<TreeNode<Schema>[]>} Schemas as a map
78
+ */
79
+ map(reload?: boolean): Promise<TreeNode<T>[]>;
80
+ /**
81
+ * Subscribe to live updates with optional callback
82
+ * @param {(schema: Schema[]) => any} callback Receives latest data
83
+ * @param opts path - scope events, tree - return as a map or array
84
+ * @return {() => void}
85
+ */
86
+ sync(callback?: (event: PathEvent, value: any) => any, opts?: {
87
+ path?: string;
88
+ map?: boolean;
89
+ reload?: boolean;
90
+ }): Unsubscribe;
91
+ }
92
+ //# sourceMappingURL=asset-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-controller.d.ts","sourceRoot":"","sources":["../src/asset-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAC,IAAI,EAAwB,KAAK,QAAQ,EAAE,WAAW,EAAC,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,GAAG,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACd,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,oDAAoD;AACpD,qBAAa,eAAe,CAAC,CAAC,SAAS,IAAI,CAAE,SAAQ,gBAAgB;IAMxD,SAAS,CAAC,QAAQ,EAAE,QAAQ;IALxC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAM;IAElE,KAAK,EAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzB,IAAI,EAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAEN,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAoBpE;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC;IAEpC;;;;OAIG;IACG,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IASzC;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAYlC;;;;OAIG;IACG,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3C;;;;;OAKG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASrD;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAY3C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,GAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,WAAW;CAe1H;AAED,qBAAa,mBAAmB,CAAC,CAAC,SAAS,IAAI,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IAC3F;;;;OAIG;IACG,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAKnD;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE,IAAI,GAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,WAAW;CAKhI"}
@@ -0,0 +1,22 @@
1
+ import { Meta, PathEventEmitter } from './core';
2
+ import { Momentum } from './momentum';
3
+ /** Object history */
4
+ export type AuditLog<T = any> = Meta & {
5
+ /** Target module */
6
+ module: string;
7
+ /** Document ID */
8
+ id: string;
9
+ /** Changes */
10
+ delta: any;
11
+ };
12
+ export declare class Audit extends PathEventEmitter {
13
+ protected momentum: Momentum;
14
+ constructor(momentum: Momentum);
15
+ available(): Promise<{
16
+ [module: string]: string;
17
+ }>;
18
+ available(module: string): Promise<string[]>;
19
+ history(module: string, pk?: string): Promise<AuditLog[]>;
20
+ rollback(id: string): Promise<AuditLog<any>[]>;
21
+ }
22
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,gBAAgB,EAAC,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,qBAAqB;AACrB,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG;IACtC,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,KAAK,EAAE,GAAG,CAAC;CACX,CAAA;AAED,qBAAa,KAAM,SAAQ,gBAAgB;IAE9B,SAAS,CAAC,QAAQ,EAAE,QAAQ;gBAAlB,QAAQ,EAAE,QAAQ;IAIlC,SAAS,IAAI,OAAO,CAAC;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKzD,QAAQ,CAAC,EAAE,EAAE,MAAM;CAIzB"}
package/dist/auth.d.ts CHANGED
@@ -1,102 +1,34 @@
1
- import { Api } from './api';
2
- import { PathEvent, PathEventEmitter } from '@ztimson/utils';
3
- import { Meta } from './core';
1
+ import { PathEventEmitter } from './core';
2
+ import { Momentum } from './momentum';
3
+ import { Totp, TotpMethods } from './totp';
4
4
  import { User } from './users';
5
- export type AuthOptions = {
6
- /** Path to login page */
7
- loginUrl?: string;
5
+ export type SessionData = {
6
+ /** User token */
7
+ token: string | null;
8
+ /** Current user */
9
+ user: User | null;
10
+ /** Combined custom values */
11
+ custom: any;
12
+ /** UI dashboard page */
13
+ dashboardUrl: string | null;
14
+ /** Redirect user to URL on login */
15
+ loginRedirect: string | null;
16
+ /** Combined permissions */
17
+ permissions: string[];
8
18
  };
9
- export type UserToken = Meta & {
10
- /** User defined name */
11
- name: string;
12
- /** Assigned to */
13
- owner: string;
14
- /** Token value */
15
- token: string;
16
- /** Expiration */
17
- expire: null | Date;
18
- };
19
- /** Manage user tokens */
20
- export declare class Token extends PathEventEmitter {
21
- private api;
22
- constructor(api: Api);
23
- /**
24
- * Fetch all tokens for user
25
- * @param {string} username User to search
26
- * @return {Promise<UserToken[]>} List of tokens
27
- */
28
- all(username: string): Promise<UserToken[]>;
29
- /**
30
- * Create a new user token
31
- * @param {{name: string, owner: string, expire: null | Date}} token Token settings
32
- * @return {Promise<UserToken>} Crated token
33
- */
34
- create(token: {
35
- name: string;
36
- owner: string;
37
- expire: null | Date;
38
- }): Promise<UserToken>;
39
- /**
40
- * Delete an existing user token
41
- * @param {string} id Token ID
42
- * @return {Promise<void>} Resolves once complete
43
- */
44
- delete(id: string): Promise<void>;
45
- }
46
- /** Mange user 2FA */
47
- export declare class Totp {
48
- private api;
49
- constructor(api: Api);
50
- /**
51
- * Disable 2FA for user
52
- * @param {string} username User to disable 2FA for
53
- * @return {Promise<void>} Resolves once complete
54
- */
55
- disable(username: string): import('@ztimson/utils').PromiseProgress<void>;
56
- /**
57
- * Enable 2FA for user
58
- * @param {string} username User to reset
59
- * @return {Promise<void>} Resolves once complete
60
- */
61
- enable: (username: string) => Promise<void>;
62
- /**
63
- * Reset users 2FA
64
- * @param {string} username User to reset
65
- * @return {Promise<void>} Resolves once complete
66
- */
67
- reset(username: string): Promise<void>;
68
- /**
69
- * Setup 2FA authentication method
70
- * @param {string} username User to setup
71
- * @param {string} method Authenticator type
72
- * @param {string | null} totp null to being process, 2FA code to validate method
73
- * @return {Promise<void>} Resolves once complete
74
- */
75
- setup(username: string, method?: string, totp?: string): import('@ztimson/utils').PromiseProgress<void>;
76
- }
77
19
  /** Manage User Authentication */
78
20
  export declare class Auth extends PathEventEmitter {
79
- private readonly opts;
80
- private readonly api;
81
- /** Manage user tokens */
82
- token: Token;
21
+ protected momentum: Momentum;
83
22
  /** Manage user 2FA */
84
23
  totp: Totp;
85
- private _permissions;
86
- /** Get current user permissions */
87
- get permissions(): string[];
88
- private set permissions(value);
24
+ session?: SessionData | null;
89
25
  private _user?;
90
26
  /** Get current user, undefined if not yet initialized */
91
27
  get user(): User | null | undefined;
92
28
  /** Update user info without changing the session */
93
29
  set user(user: User | null | undefined);
94
- constructor(api: Api | string, opts?: AuthOptions);
95
- filter: (...events: (string | PathEvent)[]) => PathEvent[];
96
- has: (...events: (string | PathEvent)[]) => boolean;
97
- hasAll: (...events: (string | PathEvent)[]) => boolean;
98
- hasFatal: (...events: (string | PathEvent)[]) => void;
99
- hasAllFatal: (...events: (string | PathEvent)[]) => void;
30
+ constructor(momentum: Momentum);
31
+ handleLogin(reload?: boolean): Promise<SessionData | null | undefined>;
100
32
  /**
101
33
  * Check if origin is recognized & whitelisted
102
34
  * @param {string} host Origin to check
@@ -105,15 +37,19 @@ export declare class Auth extends PathEventEmitter {
105
37
  knownHost(host?: string): Promise<void>;
106
38
  /**
107
39
  * Login a user & return the account
108
- * @param {string} username username
40
+ * @param {string} id username
109
41
  * @param {string} password user's password
110
- * @param {{totp: string, expire: null | number | Date}} opts 2FA code and expiry options (null to never expire)
111
- * @return {Promise<User | null>} User account on success
42
+ * @param {{totp: string, totpMethod: TotpMethods, expire: null | number | Date}} opts 2FA code, 2FA code push method, and expiry options (null to never expire)
43
+ * @return {Promise<{reset?: string, token?: string} | null>} User account on success
112
44
  */
113
- login(username: string, password: string, opts?: {
45
+ login(id: string, password?: string, opts?: {
114
46
  totp?: string;
47
+ totpMethod?: TotpMethods;
115
48
  expire?: number | Date | null;
116
- }): Promise<User | null>;
49
+ }): Promise<{
50
+ reset?: string;
51
+ token?: string;
52
+ } | null>;
117
53
  /**
118
54
  * Login via Momentum single sign on
119
55
  * @param {string} host Host origin attempting to login
@@ -123,14 +59,14 @@ export declare class Auth extends PathEventEmitter {
123
59
  /**
124
60
  * Logout current user
125
61
  */
126
- logout(): void;
62
+ logout(): Promise<void>;
127
63
  /**
128
64
  * Create a new user with login
129
65
  * @param {Partial<User> & {password: string}} user User data with password
130
66
  * @return {Promise<User>} Registered user data
131
67
  */
132
68
  register(user: Partial<User> & {
133
- username: string;
69
+ _id: string;
134
70
  password: string;
135
71
  }): Promise<User>;
136
72
  /**
@@ -152,12 +88,9 @@ export declare class Auth extends PathEventEmitter {
152
88
  * @param {boolean} set Set as current active session
153
89
  * @return {Promise<{token: string, user: User, permissions: string[], custom: any} | null>} Session information
154
90
  */
155
- session(token?: string, set?: boolean): Promise<{
156
- token: string;
157
- user: User;
158
- permissions: string[];
159
- custom: any;
160
- } | null>;
91
+ readSession(token?: string | null, set?: boolean): Promise<SessionData | null>;
92
+ /** Unlock an account that has been locked from too many login attempts */
93
+ unlock(username: string): Promise<any>;
161
94
  /**
162
95
  * Update password for user
163
96
  * @param {string} username User to reset
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAM,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,IAAI,EAAE,WAAW,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,WAAW,GAAG;IACzB,iBAAiB;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mBAAmB;IACnB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,wBAAwB;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAA;CACrB,CAAA;AAED,iCAAiC;AACjC,qBAAa,IAAK,SAAQ,gBAAgB;IAiB7B,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAhBxC,sBAAsB;IACf,IAAI,EAAG,IAAI,CAAC;IAEnB,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,yDAAyD;IACzD,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,SAAS,CAAuB;IAC1D,oDAAoD;IACpD,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAKrC;gBAEqB,QAAQ,EAAE,QAAQ;IAiBlC,WAAW,CAAC,MAAM,UAAQ;IAgBhC;;;;OAIG;IACH,SAAS,CAAC,IAAI,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;KAAC,GAAG,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IAqBvK;;;;OAIG;IACH,aAAa,CAAC,IAAI,GAAE,MAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB9D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpF;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtD;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnC;;;;;OAKG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,UAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgBlF,0EAA0E;IACpE,MAAM,CAAC,QAAQ,EAAE,MAAM;IAK7B;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW7F"}