@alwatr/signal 1.1.2 → 2.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 (65) hide show
  1. package/CHANGELOG.md +173 -163
  2. package/context.d.ts +31 -0
  3. package/context.d.ts.map +1 -0
  4. package/context.js +40 -0
  5. package/context.js.map +1 -0
  6. package/index.d.ts +5 -9
  7. package/index.d.ts.map +1 -1
  8. package/index.js +10 -16
  9. package/index.js.map +1 -1
  10. package/multithread-context.d.ts +21 -0
  11. package/multithread-context.d.ts.map +1 -0
  12. package/multithread-context.js +50 -0
  13. package/multithread-context.js.map +1 -0
  14. package/observable.d.ts +47 -0
  15. package/observable.d.ts.map +1 -0
  16. package/observable.js +126 -0
  17. package/observable.js.map +1 -0
  18. package/package.json +9 -9
  19. package/signal.d.ts +19 -0
  20. package/signal.d.ts.map +1 -0
  21. package/signal.js +23 -0
  22. package/signal.js.map +1 -0
  23. package/simple-signal.d.ts +19 -0
  24. package/simple-signal.d.ts.map +1 -0
  25. package/simple-signal.js +23 -0
  26. package/simple-signal.js.map +1 -0
  27. package/type.d.ts +15 -126
  28. package/type.d.ts.map +1 -1
  29. package/type.js.map +1 -1
  30. package/command-handler.d.ts +0 -25
  31. package/command-handler.d.ts.map +0 -1
  32. package/command-handler.js +0 -24
  33. package/command-handler.js.map +0 -1
  34. package/command-trigger.d.ts +0 -64
  35. package/command-trigger.d.ts.map +0 -1
  36. package/command-trigger.js +0 -64
  37. package/command-trigger.js.map +0 -1
  38. package/context-consumer.d.ts +0 -124
  39. package/context-consumer.d.ts.map +0 -1
  40. package/context-consumer.js +0 -124
  41. package/context-consumer.js.map +0 -1
  42. package/context-provider.d.ts +0 -120
  43. package/context-provider.d.ts.map +0 -1
  44. package/context-provider.js +0 -120
  45. package/context-provider.js.map +0 -1
  46. package/core.d.ts +0 -181
  47. package/core.d.ts.map +0 -1
  48. package/core.js +0 -388
  49. package/core.js.map +0 -1
  50. package/event-listener.d.ts +0 -120
  51. package/event-listener.d.ts.map +0 -1
  52. package/event-listener.js +0 -120
  53. package/event-listener.js.map +0 -1
  54. package/event-trigger.d.ts +0 -76
  55. package/event-trigger.d.ts.map +0 -1
  56. package/event-trigger.js +0 -76
  57. package/event-trigger.js.map +0 -1
  58. package/requestable-context-consumer.d.ts +0 -60
  59. package/requestable-context-consumer.d.ts.map +0 -1
  60. package/requestable-context-consumer.js +0 -54
  61. package/requestable-context-consumer.js.map +0 -1
  62. package/requestable-context-provider.d.ts +0 -69
  63. package/requestable-context-provider.d.ts.map +0 -1
  64. package/requestable-context-provider.js +0 -63
  65. package/requestable-context-provider.js.map +0 -1
@@ -1,120 +0,0 @@
1
- import type { Stringifyable } from '@alwatr/type';
2
- /**
3
- * Context provider interface.
4
- */
5
- export declare const contextProvider: {
6
- /**
7
- * Get context value.
8
- *
9
- * Return undefined if context not set before or expired.
10
- *
11
- * Example:
12
- *
13
- * ```ts
14
- * const currentProductList = contextProvider.getValue<ProductListType>('product-list');
15
- * if (currentProductList === undefined) {
16
- * // productList not set before or expired.
17
- * }
18
- * ```
19
- */
20
- readonly getValue: <T extends Stringifyable>(signalId: string) => T | undefined;
21
- /**
22
- * Set context value and send signal to all consumers.
23
- *
24
- * Signal detail changed immediately without any debounce.
25
- *
26
- * Example:
27
- *
28
- * ```ts
29
- * contextProvider.setValue<ProductListType>('product-list', newProductList);
30
- * ```
31
- */
32
- readonly setValue: <T_1 extends Stringifyable>(signalId: string, detail: T_1, options?: Partial<import("./type.js").DispatchOptions>) => void;
33
- /**
34
- * Clear current context value without send signal to all consumers.
35
- *
36
- * new subscriber options.receivePrevious not work until new signal
37
- *
38
- * Example:
39
- *
40
- * ```ts
41
- * contextProvider.expire('product-list');
42
- * ```
43
- */
44
- readonly expire: (signalId: string) => void;
45
- /**
46
- * Waits until the context value changes.
47
- *
48
- * Example:
49
- *
50
- * ```ts
51
- * const newProductList = await contextProvider.untilChange<ProductListType>('product-list');
52
- * ```
53
- */
54
- readonly untilChange: <T_2 extends Stringifyable>(signalId: string) => Promise<T_2>;
55
- /**
56
- * Bind this interface to special context.
57
- *
58
- * Example:
59
- *
60
- * ```ts
61
- * const productListProvider = contextProvider.bind<ProductListType>('product-list');
62
- * ```
63
- */
64
- readonly bind: <T_3 extends Stringifyable>(contextId: string) => {
65
- /**
66
- * Context signal Id.
67
- */
68
- readonly id: string;
69
- /**
70
- * Get context value.
71
- *
72
- * Return undefined if context not set before or expired.
73
- *
74
- * Example:
75
- *
76
- * ```ts
77
- * const currentProductList = productListProvider.getValue();
78
- * if (currentProductList === undefined) {
79
- * // productList not set before or expired.
80
- * }
81
- * ```
82
- */
83
- readonly getValue: () => T_3 | undefined;
84
- /**
85
- * Set context value and send signal to all consumers.
86
- *
87
- * Signal detail changed immediately without any debounce.
88
- *
89
- * Example:
90
- *
91
- * ```ts
92
- * productListProvider.setValue(newProductList);
93
- * ```
94
- */
95
- readonly setValue: (detail: T_3, options?: Partial<import("./type.js").DispatchOptions> | undefined) => void;
96
- /**
97
- * Clear current context value without send signal to all consumers.
98
- *
99
- * new subscriber options.receivePrevious not work until new signal
100
- *
101
- * Example:
102
- *
103
- * ```ts
104
- * productListProvider.expire();
105
- * ```
106
- */
107
- readonly expire: () => void;
108
- /**
109
- * Waits until the context value changes.
110
- *
111
- * Example:
112
- *
113
- * ```ts
114
- * const newProductList = await productListProvider.untilChange();
115
- * ```
116
- */
117
- readonly untilChange: () => Promise<T_3>;
118
- };
119
- };
120
- //# sourceMappingURL=context-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-provider.d.ts","sourceRoot":"","sources":["src/context-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAiB,MAAM,cAAc,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;;;;;;;;;;OAaG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;;OAQG;0DACwC,MAAM;QAC/C;;WAEG;;QAGH;;;;;;;;;;;;;WAaG;;QAGH;;;;;;;;;;WAUG;;QAGH;;;;;;;;;;WAUG;;QAGH;;;;;;;;WAQG;;;CAGG,CAAC"}
@@ -1,120 +0,0 @@
1
- import { clearDetail, dispatch, getDetail, untilNext } from './core.js';
2
- /**
3
- * Context provider interface.
4
- */
5
- export const contextProvider = {
6
- /**
7
- * Get context value.
8
- *
9
- * Return undefined if context not set before or expired.
10
- *
11
- * Example:
12
- *
13
- * ```ts
14
- * const currentProductList = contextProvider.getValue<ProductListType>('product-list');
15
- * if (currentProductList === undefined) {
16
- * // productList not set before or expired.
17
- * }
18
- * ```
19
- */
20
- getValue: getDetail,
21
- /**
22
- * Set context value and send signal to all consumers.
23
- *
24
- * Signal detail changed immediately without any debounce.
25
- *
26
- * Example:
27
- *
28
- * ```ts
29
- * contextProvider.setValue<ProductListType>('product-list', newProductList);
30
- * ```
31
- */
32
- setValue: dispatch,
33
- /**
34
- * Clear current context value without send signal to all consumers.
35
- *
36
- * new subscriber options.receivePrevious not work until new signal
37
- *
38
- * Example:
39
- *
40
- * ```ts
41
- * contextProvider.expire('product-list');
42
- * ```
43
- */
44
- expire: clearDetail,
45
- /**
46
- * Waits until the context value changes.
47
- *
48
- * Example:
49
- *
50
- * ```ts
51
- * const newProductList = await contextProvider.untilChange<ProductListType>('product-list');
52
- * ```
53
- */
54
- untilChange: untilNext,
55
- /**
56
- * Bind this interface to special context.
57
- *
58
- * Example:
59
- *
60
- * ```ts
61
- * const productListProvider = contextProvider.bind<ProductListType>('product-list');
62
- * ```
63
- */
64
- bind: (contextId) => ({
65
- /**
66
- * Context signal Id.
67
- */
68
- id: contextId,
69
- /**
70
- * Get context value.
71
- *
72
- * Return undefined if context not set before or expired.
73
- *
74
- * Example:
75
- *
76
- * ```ts
77
- * const currentProductList = productListProvider.getValue();
78
- * if (currentProductList === undefined) {
79
- * // productList not set before or expired.
80
- * }
81
- * ```
82
- */
83
- getValue: getDetail.bind(null, contextId),
84
- /**
85
- * Set context value and send signal to all consumers.
86
- *
87
- * Signal detail changed immediately without any debounce.
88
- *
89
- * Example:
90
- *
91
- * ```ts
92
- * productListProvider.setValue(newProductList);
93
- * ```
94
- */
95
- setValue: dispatch.bind(null, contextId),
96
- /**
97
- * Clear current context value without send signal to all consumers.
98
- *
99
- * new subscriber options.receivePrevious not work until new signal
100
- *
101
- * Example:
102
- *
103
- * ```ts
104
- * productListProvider.expire();
105
- * ```
106
- */
107
- expire: clearDetail.bind(null, contextId),
108
- /**
109
- * Waits until the context value changes.
110
- *
111
- * Example:
112
- *
113
- * ```ts
114
- * const newProductList = await productListProvider.untilChange();
115
- * ```
116
- */
117
- untilChange: untilNext.bind(null, contextId),
118
- }),
119
- };
120
- //# sourceMappingURL=context-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-provider.js","sourceRoot":"","sources":["src/context-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,WAAW,CAAC;AAItE;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,SAAS;IAEnB;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,QAAQ;IAElB;;;;;;;;;;OAUG;IACH,MAAM,EAAE,WAAW;IAEnB;;;;;;;;OAQG;IACH,WAAW,EAAE,SAAS;IAEtB;;;;;;;;OAQG;IACH,IAAI,EAAE,CAA0B,SAAiB,EAAE,EAAE,CAAA,CAAC;QACpD;;WAEG;QACH,EAAE,EAAE,SAAS;QAEb;;;;;;;;;;;;;WAaG;QACH,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAwC;QAEhF;;;;;;;;;;WAUG;QACH,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAuC;QAE9E;;;;;;;;;;WAUG;QACH,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAEzC;;;;;;;;WAQG;QACH,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAwC;KAC1E,CAAA;CACH,CAAC","sourcesContent":["import {clearDetail, dispatch, getDetail, untilNext} from './core.js';\n\nimport type {Stringifyable, OmitFirstParam} from '@alwatr/type';\n\n/**\n * Context provider interface.\n */\nexport const contextProvider = {\n /**\n * Get context value.\n *\n * Return undefined if context not set before or expired.\n *\n * Example:\n *\n * ```ts\n * const currentProductList = contextProvider.getValue<ProductListType>('product-list');\n * if (currentProductList === undefined) {\n * // productList not set before or expired.\n * }\n * ```\n */\n getValue: getDetail,\n\n /**\n * Set context value and send signal to all consumers.\n *\n * Signal detail changed immediately without any debounce.\n *\n * Example:\n *\n * ```ts\n * contextProvider.setValue<ProductListType>('product-list', newProductList);\n * ```\n */\n setValue: dispatch,\n\n /**\n * Clear current context value without send signal to all consumers.\n *\n * new subscriber options.receivePrevious not work until new signal\n *\n * Example:\n *\n * ```ts\n * contextProvider.expire('product-list');\n * ```\n */\n expire: clearDetail,\n\n /**\n * Waits until the context value changes.\n *\n * Example:\n *\n * ```ts\n * const newProductList = await contextProvider.untilChange<ProductListType>('product-list');\n * ```\n */\n untilChange: untilNext,\n\n /**\n * Bind this interface to special context.\n *\n * Example:\n *\n * ```ts\n * const productListProvider = contextProvider.bind<ProductListType>('product-list');\n * ```\n */\n bind: <T extends Stringifyable>(contextId: string) =>({\n /**\n * Context signal Id.\n */\n id: contextId,\n\n /**\n * Get context value.\n *\n * Return undefined if context not set before or expired.\n *\n * Example:\n *\n * ```ts\n * const currentProductList = productListProvider.getValue();\n * if (currentProductList === undefined) {\n * // productList not set before or expired.\n * }\n * ```\n */\n getValue: getDetail.bind(null, contextId) as OmitFirstParam<typeof getDetail<T>>,\n\n /**\n * Set context value and send signal to all consumers.\n *\n * Signal detail changed immediately without any debounce.\n *\n * Example:\n *\n * ```ts\n * productListProvider.setValue(newProductList);\n * ```\n */\n setValue: dispatch.bind(null, contextId) as OmitFirstParam<typeof dispatch<T>>,\n\n /**\n * Clear current context value without send signal to all consumers.\n *\n * new subscriber options.receivePrevious not work until new signal\n *\n * Example:\n *\n * ```ts\n * productListProvider.expire();\n * ```\n */\n expire: clearDetail.bind(null, contextId),\n\n /**\n * Waits until the context value changes.\n *\n * Example:\n *\n * ```ts\n * const newProductList = await productListProvider.untilChange();\n * ```\n */\n untilChange: untilNext.bind(null, contextId) as OmitFirstParam<typeof untilNext<T>>,\n } as const),\n} as const;\n"]}
package/core.d.ts DELETED
@@ -1,181 +0,0 @@
1
- import type { DispatchOptions, ListenerFunction, SubscribeOptions, SignalObject, ProviderFunction, ProviderOptions, ListenerSpec } from './type.js';
2
- import type { Stringifyable, StringifyableRecord } from '@alwatr/type';
3
- export declare const logger: import("@alwatr/logger").AlwatrLogger;
4
- /**
5
- * Get signal object by id, If not available, it will create a new signal with default options.
6
- *
7
- * Don't use it directly.
8
- *
9
- * Example:
10
- *
11
- * ```ts
12
- * const signal = getSignalObject<ContentType>('content-change');
13
- * signal.disabled = true;
14
- * ```
15
- */
16
- export declare const getSignalObject: <T extends Stringifyable>(id: string) => SignalObject<T>;
17
- /**
18
- * Call all listeners callback of special signal.
19
- *
20
- * Used inside dispatch, Don't use it directly.
21
- */
22
- export declare const _callListeners: <T extends Stringifyable>(signal: SignalObject<T>, detail: T) => void;
23
- /**
24
- * Subscribe new signal listener to a signal, work like addEventListener.
25
- *
26
- * Example:
27
- *
28
- * ```ts
29
- * const listener = subscribe<ContentType>('content-change', (content) => console.log(content));
30
- * // ...
31
- * unsubscribe(listener);
32
- * ```
33
- */
34
- export declare const subscribe: <T extends Stringifyable>(signalId: string, listenerCallback: ListenerFunction<T>, options?: Partial<SubscribeOptions>) => ListenerSpec;
35
- /**
36
- * Unsubscribe listener from signal, work like removeEventListener.
37
- *
38
- * Example:
39
- *
40
- * ```ts
41
- * const listener = subscribe<ContentType>('content-change', (content) => console.log(content));
42
- * // ...
43
- * unsubscribe(listener);
44
- * ```
45
- */
46
- export declare const unsubscribe: (listener: ListenerSpec) => void;
47
- /**
48
- * Unsubscribe all listener from a signal, clear all listeners.
49
- *
50
- * Example:
51
- *
52
- * ```ts
53
- * removeAllListeners('content-change');
54
- * ```
55
- */
56
- export declare const removeAllListeners: (signalId: string) => void;
57
- /**
58
- * Dispatch (send) signal to all listeners.
59
- *
60
- * Signal detail changed immediately without any debounce.
61
- *
62
- * Example:
63
- *
64
- * ```ts
65
- * dispatch<ContentType>('content-change', newContent);
66
- * ```
67
- */
68
- export declare const dispatch: <T extends Stringifyable>(signalId: string, detail: T, options?: Partial<DispatchOptions>) => void;
69
- /**
70
- * Get current signal detail/value.
71
- *
72
- * Return undefined if signal not dispatched before or expired.
73
- *
74
- * Example:
75
- *
76
- * ```ts
77
- * const currentContent = getDetail<ContentType>('content-change');
78
- * if (currentContent === undefined) {
79
- * // signal not dispatched yet
80
- * }
81
- * ```
82
- */
83
- export declare const getDetail: <T extends Stringifyable>(signalId: string) => T | undefined;
84
- /**
85
- * Get the detail/value of the next received signal.
86
- *
87
- * Example:
88
- *
89
- * ```ts
90
- * const newContent = await untilNext<ContentType>('content-change');
91
- * ```
92
- */
93
- export declare const untilNext: <T extends Stringifyable>(signalId: string) => Promise<T>;
94
- /**
95
- * Defines the provider of the context signal that will be called when the context requested.
96
- * Subscribe to `request-signalId`.
97
- *
98
- * Example:
99
- *
100
- * ```ts
101
- * setContextProvider('content-change', async (requestParam) => await fetchNewContent(requestParam));
102
- * ```
103
- */
104
- export declare const setContextProvider: <TContext extends Stringifyable, TRquest extends Stringifyable = null>(signalId: string, signalProvider: ProviderFunction<TRquest, void | TContext>, options?: Partial<ProviderOptions>) => void;
105
- /**
106
- * Defines the command and dispatch returned value.
107
- *
108
- * Subscribe commandFunction to request-command-signal and dispatch callback-signal with commandFunction return value.
109
- *
110
- * Example:
111
- *
112
- * ```ts
113
- * defineCommand<TArgument, TReturn>(
114
- * 'show-prompt',
115
- * async (argumentObject) => {
116
- * return await showPrompt(argumentObject);
117
- * },
118
- * );
119
- * ```
120
- */
121
- export declare const defineCommand: <TArgument extends StringifyableRecord, TReturn extends Stringifyable>(signalId: string, signalProvider: ProviderFunction<TArgument & {
122
- _callbackSignalId?: string | undefined;
123
- }, TReturn>, options?: Partial<Pick<ProviderOptions, 'debounce'>>) => ListenerSpec;
124
- /**
125
- * Dispatch request context signal with requestParam as detail.
126
- *
127
- * Example:
128
- *
129
- * ```ts
130
- * requestContext<RequestParamType>('content-change', {foo: 'bar'});
131
- * const newContent = await untilNext<ContentType>('content-change');
132
- * ```
133
- */
134
- export declare const requestContext: <TRequest extends Stringifyable>(contextId: string, requestParam: TRequest, options?: Partial<DispatchOptions>) => void;
135
- /**
136
- * Dispatch request command signal with commandArgument as detail.
137
- *
138
- * Example:
139
- *
140
- * ```ts
141
- * requestCommand<ArgumentType>('show-dialog', {foo: 'bar'});
142
- * ```
143
- */
144
- export declare const requestCommand: <TArgument extends StringifyableRecord>(commandId: string, commandArgument: TArgument) => void;
145
- /**
146
- * Dispatch request command signal with commandArgument as detail and return untilNext of callback signal.
147
- *
148
- * Request command and wait for answer.
149
- *
150
- * Example:
151
- *
152
- * ```ts
153
- * const response = await requestCommandWithResponse<ArgumentType, ReturnType>('show-dialog', {foo: 'bar'});
154
- * ```
155
- */
156
- export declare const requestCommandWithResponse: <TArgument extends StringifyableRecord, TReturn extends Stringifyable>(commandId: string, commandArgument: TArgument) => Promise<TReturn>;
157
- /**
158
- * Clear current signal detail without dispatch new signal.
159
- *
160
- * new subscriber options.receivePrevious not work until new signal
161
- *
162
- * Example:
163
- *
164
- * ```ts
165
- * clearDetail('product-list');
166
- * ```
167
- */
168
- export declare const clearDetail: (signalId: string) => void;
169
- /**
170
- * Delete signal object with detail and listeners and options.
171
- *
172
- * new subscriber options.receivePrevious not work until new signal
173
- *
174
- * Example:
175
- *
176
- * ```ts
177
- * destroySignal('product-list');
178
- * ```
179
- */
180
- export declare const destroySignal: (signalId: string) => void;
181
- //# sourceMappingURL=core.d.ts.map
package/core.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["src/core.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAEhB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAC,aAAa,EAAE,mBAAmB,EAAC,MAAM,cAAc,CAAC;AAmBrE,eAAO,MAAM,MAAM,uCAAgC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,gCAAiC,MAAM,oBAWlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,mEAAkE,IA0B5F,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,sCACV,MAAM,mDAEP,QAAQ,gBAAgB,CAAC,KACjC,YAuDF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,aAAc,YAAY,KAAG,IAOpD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,aAAc,MAAM,KAAG,IAMrD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,sCACT,MAAM,uBAEP,QAAQ,eAAe,CAAC,KAChC,IAoCF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,sCAAuC,MAAM,kBAElE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,sCAAuC,MAAM,eASlE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,mFACnB,MAAM,wEAGP,QAAQ,eAAe,CAAC,KAChC,IAkBF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,mFACd,MAAM;;uBAEP,QAAQ,KAAK,eAAe,EAAE,UAAU,CAAC,CAAC,KAClD,YAuBF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,8CACd,MAAM,oCAER,QAAQ,eAAe,CAAC,KAChC,IAGF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,qDACd,MAAM,iCAEhB,IAGF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,oFAI1B,MAAM,iDAqBlB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,aAAc,MAAM,KAAG,IAI9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,aAAc,MAAM,KAAG,IAMhD,CAAC"}