@rspack/core 0.1.8 → 0.1.9

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 (86) hide show
  1. package/dist/RuleSetCompiler.d.ts +6 -0
  2. package/dist/RuleSetCompiler.d.ts.map +1 -0
  3. package/dist/RuleSetCompiler.js +10 -0
  4. package/dist/RuleSetCompiler.js.map +1 -0
  5. package/dist/compilation.d.ts +5 -0
  6. package/dist/compilation.d.ts.map +1 -1
  7. package/dist/compilation.js +10 -1
  8. package/dist/compilation.js.map +1 -1
  9. package/dist/compiler.d.ts +11 -0
  10. package/dist/compiler.d.ts.map +1 -1
  11. package/dist/compiler.js +28 -5
  12. package/dist/compiler.js.map +1 -1
  13. package/dist/config/adapter-rule-use.d.ts +64 -6
  14. package/dist/config/adapter-rule-use.d.ts.map +1 -1
  15. package/dist/config/adapter-rule-use.js +45 -392
  16. package/dist/config/adapter-rule-use.js.map +1 -1
  17. package/dist/config/adapter.d.ts +4 -2
  18. package/dist/config/adapter.d.ts.map +1 -1
  19. package/dist/config/adapter.js +69 -9
  20. package/dist/config/adapter.js.map +1 -1
  21. package/dist/config/builtins.d.ts +14 -0
  22. package/dist/config/builtins.d.ts.map +1 -1
  23. package/dist/config/builtins.js +24 -0
  24. package/dist/config/builtins.js.map +1 -1
  25. package/dist/config/defaults.d.ts.map +1 -1
  26. package/dist/config/defaults.js +92 -14
  27. package/dist/config/defaults.js.map +1 -1
  28. package/dist/config/normalization.d.ts.map +1 -1
  29. package/dist/config/normalization.js +13 -1
  30. package/dist/config/normalization.js.map +1 -1
  31. package/dist/config/schema.check.d.ts.map +1 -1
  32. package/dist/config/schema.check.js +1555 -1120
  33. package/dist/config/schema.check.js.map +1 -1
  34. package/dist/config/schema.d.ts +1001 -887
  35. package/dist/config/schema.js +91 -0
  36. package/dist/config/schema.js.map +1 -1
  37. package/dist/config/types.d.ts +49 -3
  38. package/dist/config/types.d.ts.map +1 -1
  39. package/dist/lib/Cache.d.ts +72 -0
  40. package/dist/lib/Cache.d.ts.map +1 -0
  41. package/dist/lib/Cache.js +131 -0
  42. package/dist/lib/Cache.js.map +1 -0
  43. package/dist/lib/CacheFacade.d.ts +192 -0
  44. package/dist/lib/CacheFacade.d.ts.map +1 -0
  45. package/dist/lib/CacheFacade.js +320 -0
  46. package/dist/lib/CacheFacade.js.map +1 -0
  47. package/dist/lib/HookWebpackError.d.ts +47 -0
  48. package/dist/lib/HookWebpackError.d.ts.map +1 -0
  49. package/dist/lib/HookWebpackError.js +83 -0
  50. package/dist/lib/HookWebpackError.js.map +1 -0
  51. package/dist/lib/WebpackError.d.ts +24 -0
  52. package/dist/lib/WebpackError.d.ts.map +1 -0
  53. package/dist/lib/WebpackError.js +35 -0
  54. package/dist/lib/WebpackError.js.map +1 -0
  55. package/dist/lib/cache/getLazyHashedEtag.d.ts +36 -0
  56. package/dist/lib/cache/getLazyHashedEtag.d.ts.map +1 -0
  57. package/dist/lib/cache/getLazyHashedEtag.js +74 -0
  58. package/dist/lib/cache/getLazyHashedEtag.js.map +1 -0
  59. package/dist/lib/cache/mergeEtags.d.ts +12 -0
  60. package/dist/lib/cache/mergeEtags.d.ts.map +1 -0
  61. package/dist/lib/cache/mergeEtags.js +72 -0
  62. package/dist/lib/cache/mergeEtags.js.map +1 -0
  63. package/dist/loader-runner/LoaderLoadingError.d.ts +5 -0
  64. package/dist/loader-runner/LoaderLoadingError.d.ts.map +1 -0
  65. package/dist/loader-runner/LoaderLoadingError.js +19 -0
  66. package/dist/loader-runner/LoaderLoadingError.js.map +1 -0
  67. package/dist/loader-runner/index.d.ts +18 -0
  68. package/dist/loader-runner/index.d.ts.map +1 -0
  69. package/dist/loader-runner/index.js +667 -0
  70. package/dist/loader-runner/index.js.map +1 -0
  71. package/dist/loader-runner/loadLoader.d.ts +3 -0
  72. package/dist/loader-runner/loadLoader.d.ts.map +1 -0
  73. package/dist/loader-runner/loadLoader.js +69 -0
  74. package/dist/loader-runner/loadLoader.js.map +1 -0
  75. package/dist/stats.d.ts.map +1 -1
  76. package/dist/stats.js +2 -2
  77. package/dist/stats.js.map +1 -1
  78. package/dist/util/fake.d.ts +1 -0
  79. package/dist/util/fake.d.ts.map +1 -1
  80. package/dist/util/fake.js +1 -0
  81. package/dist/util/fake.js.map +1 -1
  82. package/dist/util/index.d.ts +3 -0
  83. package/dist/util/index.d.ts.map +1 -1
  84. package/dist/util/index.js +28 -1
  85. package/dist/util/index.js.map +1 -1
  86. package/package.json +8 -8
@@ -0,0 +1,131 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const { AsyncParallelHook, AsyncSeriesBailHook, SyncHook } = require("tapable");
7
+ const { makeWebpackError, makeWebpackErrorCallback } = require("./HookWebpackError.js");
8
+ /** @typedef {import("./WebpackError")} WebpackError */
9
+ /**
10
+ * @typedef {Object} Etag
11
+ * @property {function(): string} toString
12
+ */
13
+ /**
14
+ * @template T
15
+ * @callback CallbackCache
16
+ * @param {(WebpackError | null)=} err
17
+ * @param {T=} result
18
+ * @returns {void}
19
+ */
20
+ /**
21
+ * @callback GotHandler
22
+ * @param {any} result
23
+ * @param {function(Error=): void} callback
24
+ * @returns {void}
25
+ */
26
+ const needCalls = (times, callback) => {
27
+ return err => {
28
+ if (--times === 0) {
29
+ return callback(err);
30
+ }
31
+ if (err && times > 0) {
32
+ times = 0;
33
+ return callback(err);
34
+ }
35
+ };
36
+ };
37
+ class Cache {
38
+ constructor() {
39
+ this.hooks = {
40
+ /** @type {AsyncSeriesBailHook<[string, Etag | null, GotHandler[]], any>} */
41
+ get: new AsyncSeriesBailHook(["identifier", "etag", "gotHandlers"]),
42
+ /** @type {AsyncParallelHook<[string, Etag | null, any]>} */
43
+ store: new AsyncParallelHook(["identifier", "etag", "data"]),
44
+ /** @type {AsyncParallelHook<[Iterable<string>]>} */
45
+ storeBuildDependencies: new AsyncParallelHook(["dependencies"]),
46
+ /** @type {SyncHook<[]>} */
47
+ beginIdle: new SyncHook([]),
48
+ /** @type {AsyncParallelHook<[]>} */
49
+ endIdle: new AsyncParallelHook([]),
50
+ /** @type {AsyncParallelHook<[]>} */
51
+ shutdown: new AsyncParallelHook([])
52
+ };
53
+ }
54
+ /**
55
+ * @template T
56
+ * @param {string} identifier the cache identifier
57
+ * @param {Etag | null} etag the etag
58
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
59
+ * @returns {void}
60
+ */
61
+ get(identifier, etag, callback) {
62
+ const gotHandlers = [];
63
+ this.hooks.get.callAsync(identifier, etag, gotHandlers, (err, result) => {
64
+ if (err) {
65
+ callback(makeWebpackError(err, "Cache.hooks.get"));
66
+ return;
67
+ }
68
+ if (result === null) {
69
+ result = undefined;
70
+ }
71
+ if (gotHandlers.length > 1) {
72
+ const innerCallback = needCalls(gotHandlers.length, () => callback(null, result));
73
+ for (const gotHandler of gotHandlers) {
74
+ gotHandler(result, innerCallback);
75
+ }
76
+ }
77
+ else if (gotHandlers.length === 1) {
78
+ gotHandlers[0](result, () => callback(null, result));
79
+ }
80
+ else {
81
+ callback(null, result);
82
+ }
83
+ });
84
+ }
85
+ /**
86
+ * @template T
87
+ * @param {string} identifier the cache identifier
88
+ * @param {Etag | null} etag the etag
89
+ * @param {T} data the value to store
90
+ * @param {CallbackCache<void>} callback signals when the value is stored
91
+ * @returns {void}
92
+ */
93
+ store(identifier, etag, data, callback) {
94
+ this.hooks.store.callAsync(identifier, etag, data, makeWebpackErrorCallback(callback, "Cache.hooks.store"));
95
+ }
96
+ /**
97
+ * After this method has succeeded the cache can only be restored when build dependencies are
98
+ * @param {Iterable<string>} dependencies list of all build dependencies
99
+ * @param {CallbackCache<void>} callback signals when the dependencies are stored
100
+ * @returns {void}
101
+ */
102
+ storeBuildDependencies(dependencies, callback) {
103
+ this.hooks.storeBuildDependencies.callAsync(dependencies, makeWebpackErrorCallback(callback, "Cache.hooks.storeBuildDependencies"));
104
+ }
105
+ /**
106
+ * @returns {void}
107
+ */
108
+ beginIdle() {
109
+ this.hooks.beginIdle.call();
110
+ }
111
+ /**
112
+ * @param {CallbackCache<void>} callback signals when the call finishes
113
+ * @returns {void}
114
+ */
115
+ endIdle(callback) {
116
+ this.hooks.endIdle.callAsync(makeWebpackErrorCallback(callback, "Cache.hooks.endIdle"));
117
+ }
118
+ /**
119
+ * @param {CallbackCache<void>} callback signals when the call finishes
120
+ * @returns {void}
121
+ */
122
+ shutdown(callback) {
123
+ this.hooks.shutdown.callAsync(makeWebpackErrorCallback(callback, "Cache.hooks.shutdown"));
124
+ }
125
+ }
126
+ Cache.STAGE_MEMORY = -10;
127
+ Cache.STAGE_DEFAULT = 0;
128
+ Cache.STAGE_DISK = 10;
129
+ Cache.STAGE_NETWORK = 20;
130
+ module.exports = Cache;
131
+ //# sourceMappingURL=Cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/lib/Cache.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ export = CacheFacade;
2
+ declare class CacheFacade {
3
+ /**
4
+ * @param {Cache} cache the root cache
5
+ * @param {string} name the child cache name
6
+ * @param {string | HashConstructor} hashFunction the hash function to use
7
+ */
8
+ constructor(cache: Cache, name: string, hashFunction: string | HashConstructor);
9
+ _cache: import("./Cache");
10
+ _name: string;
11
+ _hashFunction: any;
12
+ /**
13
+ * @param {string} name the child cache name#
14
+ * @returns {CacheFacade} child cache
15
+ */
16
+ getChildCache(name: string): CacheFacade;
17
+ /**
18
+ * @param {string} identifier the cache identifier
19
+ * @param {Etag | null} etag the etag
20
+ * @returns {ItemCacheFacade} item cache
21
+ */
22
+ getItemCache(identifier: string, etag: Etag | null): ItemCacheFacade;
23
+ /**
24
+ * @param {HashableObject} obj an hashable object
25
+ * @returns {Etag} an etag that is lazy hashed
26
+ */
27
+ getLazyHashedEtag(obj: HashableObject): Etag;
28
+ /**
29
+ * @param {Etag} a an etag
30
+ * @param {Etag} b another etag
31
+ * @returns {Etag} an etag that represents both
32
+ */
33
+ mergeEtags(a: Etag, b: Etag): Etag;
34
+ /**
35
+ * @template T
36
+ * @param {string} identifier the cache identifier
37
+ * @param {Etag | null} etag the etag
38
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
39
+ * @returns {void}
40
+ */
41
+ get<T>(identifier: string, etag: Etag | null, callback: CallbackCache<T>): void;
42
+ /**
43
+ * @template T
44
+ * @param {string} identifier the cache identifier
45
+ * @param {Etag | null} etag the etag
46
+ * @returns {Promise<T>} promise with the data
47
+ */
48
+ getPromise<T_1>(identifier: string, etag: Etag | null): Promise<T_1>;
49
+ /**
50
+ * @template T
51
+ * @param {string} identifier the cache identifier
52
+ * @param {Etag | null} etag the etag
53
+ * @param {T} data the value to store
54
+ * @param {CallbackCache<void>} callback signals when the value is stored
55
+ * @returns {void}
56
+ */
57
+ store<T_2>(identifier: string, etag: Etag | null, data: T_2, callback: CallbackCache<void>): void;
58
+ /**
59
+ * @template T
60
+ * @param {string} identifier the cache identifier
61
+ * @param {Etag | null} etag the etag
62
+ * @param {T} data the value to store
63
+ * @returns {Promise<void>} promise signals when the value is stored
64
+ */
65
+ storePromise<T_3>(identifier: string, etag: Etag | null, data: T_3): Promise<void>;
66
+ /**
67
+ * @template T
68
+ * @param {string} identifier the cache identifier
69
+ * @param {Etag | null} etag the etag
70
+ * @param {function(CallbackNormalErrorCache<T>): void} computer function to compute the value if not cached
71
+ * @param {CallbackNormalErrorCache<T>} callback signals when the value is retrieved
72
+ * @returns {void}
73
+ */
74
+ provide<T_4>(identifier: string, etag: Etag | null, computer: (arg0: CallbackNormalErrorCache<T_4>) => void, callback: CallbackNormalErrorCache<T_4>): void;
75
+ /**
76
+ * @template T
77
+ * @param {string} identifier the cache identifier
78
+ * @param {Etag | null} etag the etag
79
+ * @param {function(): Promise<T> | T} computer function to compute the value if not cached
80
+ * @returns {Promise<T>} promise with the data
81
+ */
82
+ providePromise<T_5>(identifier: string, etag: Etag | null, computer: () => T_5 | Promise<T_5>): Promise<T_5>;
83
+ }
84
+ declare namespace CacheFacade {
85
+ export { ItemCacheFacade, MultiItemCache, Cache, Etag, WebpackError, HashableObject, HashConstructor, CallbackCache, CallbackNormalErrorCache };
86
+ }
87
+ type Etag = import("./Cache").Etag;
88
+ declare class ItemCacheFacade {
89
+ /**
90
+ * @param {Cache} cache the root cache
91
+ * @param {string} name the child cache item name
92
+ * @param {Etag | null} etag the etag
93
+ */
94
+ constructor(cache: Cache, name: string, etag: Etag | null);
95
+ _cache: import("./Cache");
96
+ _name: string;
97
+ _etag: import("./Cache").Etag | null;
98
+ /**
99
+ * @template T
100
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
101
+ * @returns {void}
102
+ */
103
+ get<T>(callback: CallbackCache<T>): void;
104
+ /**
105
+ * @template T
106
+ * @returns {Promise<T>} promise with the data
107
+ */
108
+ getPromise<T_1>(): Promise<T_1>;
109
+ /**
110
+ * @template T
111
+ * @param {T} data the value to store
112
+ * @param {CallbackCache<void>} callback signals when the value is stored
113
+ * @returns {void}
114
+ */
115
+ store<T_2>(data: T_2, callback: CallbackCache<void>): void;
116
+ /**
117
+ * @template T
118
+ * @param {T} data the value to store
119
+ * @returns {Promise<void>} promise signals when the value is stored
120
+ */
121
+ storePromise<T_3>(data: T_3): Promise<void>;
122
+ /**
123
+ * @template T
124
+ * @param {function(CallbackNormalErrorCache<T>): void} computer function to compute the value if not cached
125
+ * @param {CallbackNormalErrorCache<T>} callback signals when the value is retrieved
126
+ * @returns {void}
127
+ */
128
+ provide<T_4>(computer: (arg0: CallbackNormalErrorCache<T_4>) => void, callback: CallbackNormalErrorCache<T_4>): void;
129
+ /**
130
+ * @template T
131
+ * @param {function(): Promise<T> | T} computer function to compute the value if not cached
132
+ * @returns {Promise<T>} promise with the data
133
+ */
134
+ providePromise<T_5>(computer: () => T_5 | Promise<T_5>): Promise<T_5>;
135
+ }
136
+ type HashableObject = import("./cache/getLazyHashedEtag").HashableObject;
137
+ type CallbackCache<T> = (err?: (WebpackError | null) | undefined, result?: T | undefined) => void;
138
+ type CallbackNormalErrorCache<T> = (err?: (Error | null) | undefined, result?: T | undefined) => void;
139
+ type Cache = import("./Cache");
140
+ type HashConstructor = typeof import("./util/Hash");
141
+ /** @typedef {import("./Cache")} Cache */
142
+ /** @typedef {import("./Cache").Etag} Etag */
143
+ /** @typedef {import("./WebpackError")} WebpackError */
144
+ /** @typedef {import("./cache/getLazyHashedEtag").HashableObject} HashableObject */
145
+ /** @typedef {typeof import("./util/Hash")} HashConstructor */
146
+ /**
147
+ * @template T
148
+ * @callback CallbackCache
149
+ * @param {(WebpackError | null)=} err
150
+ * @param {T=} result
151
+ * @returns {void}
152
+ */
153
+ /**
154
+ * @template T
155
+ * @callback CallbackNormalErrorCache
156
+ * @param {(Error | null)=} err
157
+ * @param {T=} result
158
+ * @returns {void}
159
+ */
160
+ declare class MultiItemCache {
161
+ /**
162
+ * @param {ItemCacheFacade[]} items item caches
163
+ */
164
+ constructor(items: ItemCacheFacade[]);
165
+ _items: ItemCacheFacade[];
166
+ /**
167
+ * @template T
168
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
169
+ * @returns {void}
170
+ */
171
+ get<T>(callback: CallbackCache<T>): void;
172
+ /**
173
+ * @template T
174
+ * @returns {Promise<T>} promise with the data
175
+ */
176
+ getPromise<T_1>(): Promise<T_1>;
177
+ /**
178
+ * @template T
179
+ * @param {T} data the value to store
180
+ * @param {CallbackCache<void>} callback signals when the value is stored
181
+ * @returns {void}
182
+ */
183
+ store<T_2>(data: T_2, callback: CallbackCache<void>): void;
184
+ /**
185
+ * @template T
186
+ * @param {T} data the value to store
187
+ * @returns {Promise<void>} promise signals when the value is stored
188
+ */
189
+ storePromise<T_3>(data: T_3): Promise<void>;
190
+ }
191
+ type WebpackError = import("./WebpackError");
192
+ //# sourceMappingURL=CacheFacade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheFacade.d.ts","sourceRoot":"","sources":["../../src/lib/CacheFacade.js"],"names":[],"mappings":";AA8LA;IACC;;;;OAIG;IACH,mBAJW,KAAK,QACL,MAAM,gBACN,MAAM,GAAG,eAAe,EAMlC;IAHA,0BAAmB;IACnB,cAAiB;IACjB,mBAAiC;IAGlC;;;OAGG;IACH,oBAHW,MAAM,GACJ,WAAW,CAQvB;IAED;;;;OAIG;IACH,yBAJW,MAAM,QACN,IAAI,GAAG,IAAI,GACT,eAAe,CAQ3B;IAED;;;OAGG;IACH,uBAHW,cAAc,GACZ,IAAI,CAIhB;IAED;;;;OAIG;IACH,cAJW,IAAI,KACJ,IAAI,GACF,IAAI,CAIhB;IAED;;;;;;OAMG;IACH,mBALW,MAAM,QACN,IAAI,GAAG,IAAI,+BAET,IAAI,CAIhB;IAED;;;;;OAKG;IACH,4BAJW,MAAM,QACN,IAAI,GAAG,IAAI,gBAarB;IAED;;;;;;;OAOG;IACH,uBANW,MAAM,QACN,IAAI,GAAG,IAAI,uBAEX,cAAc,IAAI,CAAC,GACjB,IAAI,CAIhB;IAED;;;;;;OAMG;IACH,8BALW,MAAM,QACN,IAAI,GAAG,IAAI,cAET,QAAQ,IAAI,CAAC,CAYzB;IAED;;;;;;;OAOG;IACH,yBANW,MAAM,QACN,IAAI,GAAG,IAAI,qDAC4B,IAAI,4CAEzC,IAAI,CAchB;IAED;;;;;;OAMG;IACH,gCALW,MAAM,QACN,IAAI,GAAG,IAAI,oDAUrB;CACD;;;;YAvUa,OAAO,SAAS,EAAE,IAAI;AA+EpC;IACC;;;;OAIG;IACH,mBAJW,KAAK,QACL,MAAM,QACN,IAAI,GAAG,IAAI,EAMrB;IAHA,0BAAmB;IACnB,cAAiB;IACjB,qCAAiB;IAGlB;;;;OAIG;IACH,oCAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,gCAUC;IAED;;;;;OAKG;IACH,gCAHW,cAAc,IAAI,CAAC,GACjB,IAAI,CAIhB;IAED;;;;OAIG;IACH,8BAFa,QAAQ,IAAI,CAAC,CAYzB;IAED;;;;;OAKG;IACH,gEAJkD,IAAI,4CAEzC,IAAI,CAchB;IAED;;;;OAIG;IACH,sEAMC;CACD;sBA7Ka,OAAO,2BAA2B,EAAE,cAAc;+BAMrD,CAAC,YAAY,GAAG,IAAI,CAAC,uBACrB,CAAC,iBACC,IAAI;0CAMN,CAAC,KAAK,GAAG,IAAI,CAAC,uBACd,CAAC,iBACC,IAAI;aAnBH,OAAO,SAAS,CAAC;uBAIjB,cAAc,aAAa,CAAC;AAJ1C,yCAAyC;AACzC,6CAA6C;AAC7C,uDAAuD;AACvD,mFAAmF;AACnF,8DAA8D;AAE9D;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH;IACC;;OAEG;IACH,mBAFW,eAAe,EAAE,EAK3B;IAFA,0BAAmB;IAIpB;;;;OAIG;IACH,oCAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,gCAQC;IAED;;;;;OAKG;IACH,gCAHW,cAAc,IAAI,CAAC,GACjB,IAAI,CAQhB;IAED;;;;OAIG;IACH,8BAFa,QAAQ,IAAI,CAAC,CAMzB;CACD;oBA5Ea,OAAO,gBAAgB,CAAC"}
@@ -0,0 +1,320 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const { forEachBail } = require("enhanced-resolve");
7
+ const asyncLib = require("neo-async");
8
+ const getLazyHashedEtag = require("./cache/getLazyHashedEtag.js");
9
+ const mergeEtags = require("./cache/mergeEtags.js");
10
+ /** @typedef {import("./Cache")} Cache */
11
+ /** @typedef {import("./Cache").Etag} Etag */
12
+ /** @typedef {import("./WebpackError")} WebpackError */
13
+ /** @typedef {import("./cache/getLazyHashedEtag").HashableObject} HashableObject */
14
+ /** @typedef {typeof import("./util/Hash")} HashConstructor */
15
+ /**
16
+ * @template T
17
+ * @callback CallbackCache
18
+ * @param {(WebpackError | null)=} err
19
+ * @param {T=} result
20
+ * @returns {void}
21
+ */
22
+ /**
23
+ * @template T
24
+ * @callback CallbackNormalErrorCache
25
+ * @param {(Error | null)=} err
26
+ * @param {T=} result
27
+ * @returns {void}
28
+ */
29
+ class MultiItemCache {
30
+ /**
31
+ * @param {ItemCacheFacade[]} items item caches
32
+ */
33
+ constructor(items) {
34
+ this._items = items;
35
+ if (items.length === 1)
36
+ return /** @type {any} */ (items[0]);
37
+ }
38
+ /**
39
+ * @template T
40
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
41
+ * @returns {void}
42
+ */
43
+ get(callback) {
44
+ forEachBail(this._items, (item, callback) => item.get(callback), callback);
45
+ }
46
+ /**
47
+ * @template T
48
+ * @returns {Promise<T>} promise with the data
49
+ */
50
+ getPromise() {
51
+ const next = i => {
52
+ return this._items[i].getPromise().then(result => {
53
+ if (result !== undefined)
54
+ return result;
55
+ if (++i < this._items.length)
56
+ return next(i);
57
+ });
58
+ };
59
+ return next(0);
60
+ }
61
+ /**
62
+ * @template T
63
+ * @param {T} data the value to store
64
+ * @param {CallbackCache<void>} callback signals when the value is stored
65
+ * @returns {void}
66
+ */
67
+ store(data, callback) {
68
+ asyncLib.each(this._items, (item, callback) => item.store(data, callback), callback);
69
+ }
70
+ /**
71
+ * @template T
72
+ * @param {T} data the value to store
73
+ * @returns {Promise<void>} promise signals when the value is stored
74
+ */
75
+ storePromise(data) {
76
+ return Promise.all(this._items.map(item => item.storePromise(data))).then(() => { });
77
+ }
78
+ }
79
+ class ItemCacheFacade {
80
+ /**
81
+ * @param {Cache} cache the root cache
82
+ * @param {string} name the child cache item name
83
+ * @param {Etag | null} etag the etag
84
+ */
85
+ constructor(cache, name, etag) {
86
+ this._cache = cache;
87
+ this._name = name;
88
+ this._etag = etag;
89
+ }
90
+ /**
91
+ * @template T
92
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
93
+ * @returns {void}
94
+ */
95
+ get(callback) {
96
+ this._cache.get(this._name, this._etag, callback);
97
+ }
98
+ /**
99
+ * @template T
100
+ * @returns {Promise<T>} promise with the data
101
+ */
102
+ getPromise() {
103
+ return new Promise((resolve, reject) => {
104
+ this._cache.get(this._name, this._etag, (err, data) => {
105
+ if (err) {
106
+ reject(err);
107
+ }
108
+ else {
109
+ resolve(data);
110
+ }
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * @template T
116
+ * @param {T} data the value to store
117
+ * @param {CallbackCache<void>} callback signals when the value is stored
118
+ * @returns {void}
119
+ */
120
+ store(data, callback) {
121
+ this._cache.store(this._name, this._etag, data, callback);
122
+ }
123
+ /**
124
+ * @template T
125
+ * @param {T} data the value to store
126
+ * @returns {Promise<void>} promise signals when the value is stored
127
+ */
128
+ storePromise(data) {
129
+ return new Promise((resolve, reject) => {
130
+ this._cache.store(this._name, this._etag, data, err => {
131
+ if (err) {
132
+ reject(err);
133
+ }
134
+ else {
135
+ resolve();
136
+ }
137
+ });
138
+ });
139
+ }
140
+ /**
141
+ * @template T
142
+ * @param {function(CallbackNormalErrorCache<T>): void} computer function to compute the value if not cached
143
+ * @param {CallbackNormalErrorCache<T>} callback signals when the value is retrieved
144
+ * @returns {void}
145
+ */
146
+ provide(computer, callback) {
147
+ this.get((err, cacheEntry) => {
148
+ if (err)
149
+ return callback(err);
150
+ if (cacheEntry !== undefined)
151
+ return cacheEntry;
152
+ computer((err, result) => {
153
+ if (err)
154
+ return callback(err);
155
+ this.store(result, err => {
156
+ if (err)
157
+ return callback(err);
158
+ callback(null, result);
159
+ });
160
+ });
161
+ });
162
+ }
163
+ /**
164
+ * @template T
165
+ * @param {function(): Promise<T> | T} computer function to compute the value if not cached
166
+ * @returns {Promise<T>} promise with the data
167
+ */
168
+ async providePromise(computer) {
169
+ const cacheEntry = await this.getPromise();
170
+ if (cacheEntry !== undefined)
171
+ return cacheEntry;
172
+ const result = await computer();
173
+ await this.storePromise(result);
174
+ return result;
175
+ }
176
+ }
177
+ class CacheFacade {
178
+ /**
179
+ * @param {Cache} cache the root cache
180
+ * @param {string} name the child cache name
181
+ * @param {string | HashConstructor} hashFunction the hash function to use
182
+ */
183
+ constructor(cache, name, hashFunction) {
184
+ this._cache = cache;
185
+ this._name = name;
186
+ this._hashFunction = hashFunction;
187
+ }
188
+ /**
189
+ * @param {string} name the child cache name#
190
+ * @returns {CacheFacade} child cache
191
+ */
192
+ getChildCache(name) {
193
+ return new CacheFacade(this._cache, `${this._name}|${name}`, this._hashFunction);
194
+ }
195
+ /**
196
+ * @param {string} identifier the cache identifier
197
+ * @param {Etag | null} etag the etag
198
+ * @returns {ItemCacheFacade} item cache
199
+ */
200
+ getItemCache(identifier, etag) {
201
+ return new ItemCacheFacade(this._cache, `${this._name}|${identifier}`, etag);
202
+ }
203
+ /**
204
+ * @param {HashableObject} obj an hashable object
205
+ * @returns {Etag} an etag that is lazy hashed
206
+ */
207
+ getLazyHashedEtag(obj) {
208
+ return getLazyHashedEtag(obj, this._hashFunction);
209
+ }
210
+ /**
211
+ * @param {Etag} a an etag
212
+ * @param {Etag} b another etag
213
+ * @returns {Etag} an etag that represents both
214
+ */
215
+ mergeEtags(a, b) {
216
+ return mergeEtags(a, b);
217
+ }
218
+ /**
219
+ * @template T
220
+ * @param {string} identifier the cache identifier
221
+ * @param {Etag | null} etag the etag
222
+ * @param {CallbackCache<T>} callback signals when the value is retrieved
223
+ * @returns {void}
224
+ */
225
+ get(identifier, etag, callback) {
226
+ this._cache.get(`${this._name}|${identifier}`, etag, callback);
227
+ }
228
+ /**
229
+ * @template T
230
+ * @param {string} identifier the cache identifier
231
+ * @param {Etag | null} etag the etag
232
+ * @returns {Promise<T>} promise with the data
233
+ */
234
+ getPromise(identifier, etag) {
235
+ return new Promise((resolve, reject) => {
236
+ this._cache.get(`${this._name}|${identifier}`, etag, (err, data) => {
237
+ if (err) {
238
+ reject(err);
239
+ }
240
+ else {
241
+ resolve(data);
242
+ }
243
+ });
244
+ });
245
+ }
246
+ /**
247
+ * @template T
248
+ * @param {string} identifier the cache identifier
249
+ * @param {Etag | null} etag the etag
250
+ * @param {T} data the value to store
251
+ * @param {CallbackCache<void>} callback signals when the value is stored
252
+ * @returns {void}
253
+ */
254
+ store(identifier, etag, data, callback) {
255
+ this._cache.store(`${this._name}|${identifier}`, etag, data, callback);
256
+ }
257
+ /**
258
+ * @template T
259
+ * @param {string} identifier the cache identifier
260
+ * @param {Etag | null} etag the etag
261
+ * @param {T} data the value to store
262
+ * @returns {Promise<void>} promise signals when the value is stored
263
+ */
264
+ storePromise(identifier, etag, data) {
265
+ return new Promise((resolve, reject) => {
266
+ this._cache.store(`${this._name}|${identifier}`, etag, data, err => {
267
+ if (err) {
268
+ reject(err);
269
+ }
270
+ else {
271
+ resolve();
272
+ }
273
+ });
274
+ });
275
+ }
276
+ /**
277
+ * @template T
278
+ * @param {string} identifier the cache identifier
279
+ * @param {Etag | null} etag the etag
280
+ * @param {function(CallbackNormalErrorCache<T>): void} computer function to compute the value if not cached
281
+ * @param {CallbackNormalErrorCache<T>} callback signals when the value is retrieved
282
+ * @returns {void}
283
+ */
284
+ provide(identifier, etag, computer, callback) {
285
+ this.get(identifier, etag, (err, cacheEntry) => {
286
+ if (err)
287
+ return callback(err);
288
+ if (cacheEntry !== undefined)
289
+ return cacheEntry;
290
+ computer((err, result) => {
291
+ if (err)
292
+ return callback(err);
293
+ this.store(identifier, etag, result, err => {
294
+ if (err)
295
+ return callback(err);
296
+ callback(null, result);
297
+ });
298
+ });
299
+ });
300
+ }
301
+ /**
302
+ * @template T
303
+ * @param {string} identifier the cache identifier
304
+ * @param {Etag | null} etag the etag
305
+ * @param {function(): Promise<T> | T} computer function to compute the value if not cached
306
+ * @returns {Promise<T>} promise with the data
307
+ */
308
+ async providePromise(identifier, etag, computer) {
309
+ const cacheEntry = await this.getPromise(identifier, etag);
310
+ if (cacheEntry !== undefined)
311
+ return cacheEntry;
312
+ const result = await computer();
313
+ await this.storePromise(identifier, etag, result);
314
+ return result;
315
+ }
316
+ }
317
+ module.exports = CacheFacade;
318
+ module.exports.ItemCacheFacade = ItemCacheFacade;
319
+ module.exports.MultiItemCache = MultiItemCache;
320
+ //# sourceMappingURL=CacheFacade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheFacade.js","sourceRoot":"","sources":["../../src/lib/CacheFacade.js"],"names":[],"mappings":"AAAA;;;EAGE;AAEF,YAAY,CAAC;AAEb,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,MAAM,iBAAiB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAClE,MAAM,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEpD,yCAAyC;AACzC,6CAA6C;AAC7C,uDAAuD;AACvD,mFAAmF;AACnF,8DAA8D;AAE9D;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH,MAAM,cAAc;IACnB;;OAEG;IACH,YAAY,KAAK;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,QAAQ;QACX,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,UAAU;QACT,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChD,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC;gBACxC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,QAAQ;QACnB,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,MAAM,EACX,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC9C,QAAQ,CACR,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAI;QAChB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACxE,GAAG,EAAE,GAAE,CAAC,CACR,CAAC;IACH,CAAC;CACD;AAED,MAAM,eAAe;IACpB;;;;OAIG;IACH,YAAY,KAAK,EAAE,IAAI,EAAE,IAAI;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,QAAQ;QACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,UAAU;QACT,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACrD,IAAI,GAAG,EAAE;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;iBACZ;qBAAM;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;iBACd;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,QAAQ;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAI;QAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;gBACrD,IAAI,GAAG,EAAE;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;iBACZ;qBAAM;oBACN,OAAO,EAAE,CAAC;iBACV;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ;QACzB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAC5B,IAAI,GAAG;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,UAAU,CAAC;YAChD,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,GAAG;oBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;oBACxB,IAAI,GAAG;wBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,QAAQ;QAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAED,MAAM,WAAW;IAChB;;;;OAIG;IACH,YAAY,KAAK,EAAE,IAAI,EAAE,YAAY;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,IAAI;QACjB,OAAO,IAAI,WAAW,CACrB,IAAI,CAAC,MAAM,EACX,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,EACvB,IAAI,CAAC,aAAa,CAClB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,IAAI;QAC5B,OAAO,IAAI,eAAe,CACzB,IAAI,CAAC,MAAM,EACX,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,EAC7B,IAAI,CACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,GAAG;QACpB,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,CAAC;QACd,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,IAAI;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAClE,IAAI,GAAG,EAAE;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;iBACZ;qBAAM;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;iBACd;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;gBAClE,IAAI,GAAG,EAAE;oBACR,MAAM,CAAC,GAAG,CAAC,CAAC;iBACZ;qBAAM;oBACN,OAAO,EAAE,CAAC;iBACV;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ;QAC3C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAC9C,IAAI,GAAG;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,UAAU,CAAC;YAChD,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACxB,IAAI,GAAG;oBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;oBAC1C,IAAI,GAAG;wBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ;QAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,UAAU,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAED,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC;AAC7B,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;AACjD,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC"}