@joist/di 4.0.0-next.1 → 4.0.0-next.11

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 (66) hide show
  1. package/README.md +52 -34
  2. package/package.json +4 -14
  3. package/src/lib/dom-injector.test.ts +16 -18
  4. package/src/lib/dom-injector.ts +3 -4
  5. package/src/lib/inject.test.ts +33 -56
  6. package/src/lib/inject.ts +4 -6
  7. package/src/lib/injectable-el.test.ts +130 -0
  8. package/src/lib/injectable-el.ts +63 -0
  9. package/src/lib/injectable.test.ts +19 -116
  10. package/src/lib/injectable.ts +21 -57
  11. package/src/lib/injector.test.ts +132 -130
  12. package/src/lib/injector.ts +33 -19
  13. package/src/lib/lifecycle.test.ts +68 -64
  14. package/src/lib/lifecycle.ts +19 -4
  15. package/src/lib/metadata.ts +12 -0
  16. package/src/lib/provider.ts +16 -8
  17. package/src/lib.ts +1 -1
  18. package/target/lib/dom-injector.js +3 -4
  19. package/target/lib/dom-injector.js.map +1 -1
  20. package/target/lib/dom-injector.test.js +16 -18
  21. package/target/lib/dom-injector.test.js.map +1 -1
  22. package/target/lib/inject.js +3 -3
  23. package/target/lib/inject.js.map +1 -1
  24. package/target/lib/inject.test.js +58 -90
  25. package/target/lib/inject.test.js.map +1 -1
  26. package/target/lib/injectable-el.d.ts +334 -0
  27. package/target/lib/injectable-el.js +40 -0
  28. package/target/lib/injectable-el.js.map +1 -0
  29. package/target/lib/injectable-el.test.js +238 -0
  30. package/target/lib/injectable-el.test.js.map +1 -0
  31. package/target/lib/injectable.d.ts +5 -7
  32. package/target/lib/injectable.js +13 -42
  33. package/target/lib/injectable.js.map +1 -1
  34. package/target/lib/injectable.test.js +49 -204
  35. package/target/lib/injectable.test.js.map +1 -1
  36. package/target/lib/injector.d.ts +1 -1
  37. package/target/lib/injector.js +18 -14
  38. package/target/lib/injector.js.map +1 -1
  39. package/target/lib/injector.test.js +215 -216
  40. package/target/lib/injector.test.js.map +1 -1
  41. package/target/lib/lifecycle.d.ts +2 -4
  42. package/target/lib/lifecycle.js +15 -4
  43. package/target/lib/lifecycle.js.map +1 -1
  44. package/target/lib/lifecycle.test.js +142 -123
  45. package/target/lib/lifecycle.test.js.map +1 -1
  46. package/target/lib/metadata.d.ts +6 -0
  47. package/target/lib/metadata.js +5 -0
  48. package/target/lib/metadata.js.map +1 -0
  49. package/target/lib/provider.d.ts +6 -5
  50. package/target/lib/provider.js +10 -4
  51. package/target/lib/provider.js.map +1 -1
  52. package/target/lib.d.ts +1 -1
  53. package/target/lib.js +1 -1
  54. package/target/lib.js.map +1 -1
  55. package/src/lib/injectable-map.test.ts +0 -18
  56. package/src/lib/injectable-map.ts +0 -3
  57. package/src/lib/injector.test-node.ts +0 -187
  58. package/target/lib/injectable-map.d.ts +0 -3
  59. package/target/lib/injectable-map.js +0 -3
  60. package/target/lib/injectable-map.js.map +0 -1
  61. package/target/lib/injectable-map.test.js +0 -15
  62. package/target/lib/injectable-map.test.js.map +0 -1
  63. package/target/lib/injector.test-node.d.ts +0 -1
  64. package/target/lib/injector.test-node.js +0 -231
  65. package/target/lib/injector.test-node.js.map +0 -1
  66. /package/target/lib/{injectable-map.test.d.ts → injectable-el.test.d.ts} +0 -0
@@ -1,231 +1,230 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
- import { expect } from '@open-wc/testing';
2
+ import { assert } from 'chai';
3
3
  import { Injector } from './injector.js';
4
4
  import { inject } from './inject.js';
5
5
  import { injectable } from './injectable.js';
6
6
  import { StaticToken } from './provider.js';
7
- describe('Injector', () => {
8
- it('should create a new instance of a single provider', () => {
9
- class A {
10
- }
11
- const app = new Injector();
12
- expect(app.inject(A)).to.be.instanceOf(A);
13
- expect(app.inject(A)).to.equal(app.inject(A));
14
- });
15
- it('should inject providers in the correct order', () => {
16
- class A {
17
- }
18
- class B {
19
- }
20
- let MyService = (() => {
21
- let _classDecorators = [injectable];
22
- let _classDescriptor;
23
- let _classExtraInitializers = [];
24
- let _classThis;
25
- var MyService = class {
26
- static { _classThis = this; }
27
- static {
28
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
29
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
30
- MyService = _classThis = _classDescriptor.value;
31
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
32
- __runInitializers(_classThis, _classExtraInitializers);
33
- }
34
- a = inject(A);
35
- b = inject(B);
36
- };
37
- return MyService = _classThis;
38
- })();
39
- const app = new Injector();
40
- const instance = app.inject(MyService);
41
- expect(instance.a()).to.be.instanceOf(A);
42
- expect(instance.b()).to.be.instanceOf(B);
43
- });
44
- it('should create a new instance of a provider that has a full dep tree', () => {
45
- class A {
46
- }
47
- let B = (() => {
48
- let _classDecorators = [injectable];
49
- let _classDescriptor;
50
- let _classExtraInitializers = [];
51
- let _classThis;
52
- var B = class {
53
- static { _classThis = this; }
54
- static {
55
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
56
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
57
- B = _classThis = _classDescriptor.value;
58
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
- __runInitializers(_classThis, _classExtraInitializers);
60
- }
61
- a = inject(A);
62
- };
63
- return B = _classThis;
64
- })();
65
- let C = (() => {
66
- let _classDecorators = [injectable];
67
- let _classDescriptor;
68
- let _classExtraInitializers = [];
69
- let _classThis;
70
- var C = class {
71
- static { _classThis = this; }
72
- static {
73
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
74
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
75
- C = _classThis = _classDescriptor.value;
76
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
77
- __runInitializers(_classThis, _classExtraInitializers);
78
- }
79
- b = inject(B);
80
- };
81
- return C = _classThis;
82
- })();
83
- let D = (() => {
84
- let _classDecorators = [injectable];
85
- let _classDescriptor;
86
- let _classExtraInitializers = [];
87
- let _classThis;
88
- var D = class {
89
- static { _classThis = this; }
90
- static {
91
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
92
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
93
- D = _classThis = _classDescriptor.value;
94
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
95
- __runInitializers(_classThis, _classExtraInitializers);
96
- }
97
- c = inject(C);
98
- };
99
- return D = _classThis;
100
- })();
101
- let E = (() => {
102
- let _classDecorators = [injectable];
103
- let _classDescriptor;
104
- let _classExtraInitializers = [];
105
- let _classThis;
106
- var E = class {
107
- static { _classThis = this; }
108
- static {
109
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
110
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
111
- E = _classThis = _classDescriptor.value;
112
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
113
- __runInitializers(_classThis, _classExtraInitializers);
114
- }
115
- d = inject(D);
116
- };
117
- return E = _classThis;
118
- })();
119
- const app = new Injector();
120
- const instance = app.inject(E);
121
- expect(instance.d().c().b().a()).to.be.instanceOf(A);
122
- });
123
- it('should override a provider if explicitly instructed', () => {
124
- class A {
125
- }
126
- let B = (() => {
127
- let _classDecorators = [injectable];
128
- let _classDescriptor;
129
- let _classExtraInitializers = [];
130
- let _classThis;
131
- var B = class {
132
- static { _classThis = this; }
133
- static {
134
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
135
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
136
- B = _classThis = _classDescriptor.value;
137
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
138
- __runInitializers(_classThis, _classExtraInitializers);
139
- }
140
- a = inject(A);
141
- };
142
- return B = _classThis;
143
- })();
144
- class AltA extends A {
145
- }
146
- const app = new Injector([{ provide: A, use: AltA }]);
147
- expect(app.inject(B).a()).to.be.instanceOf(AltA);
148
- });
149
- it('should return an existing instance from a parent injector', () => {
150
- class A {
151
- }
152
- const parent = new Injector();
153
- const app = new Injector([], parent);
154
- expect(parent.inject(A)).to.equal(app.inject(A));
155
- });
156
- it('should use a factory if provided', () => {
157
- class Service {
158
- hello() {
159
- return 'world';
7
+ it('should create a new instance of a single provider', () => {
8
+ class A {
9
+ }
10
+ const app = new Injector();
11
+ assert(app.inject(A) instanceof A);
12
+ assert.equal(app.inject(A), app.inject(A));
13
+ });
14
+ it('should inject providers in the correct order', () => {
15
+ class A {
16
+ }
17
+ class B {
18
+ }
19
+ let MyService = (() => {
20
+ let _classDecorators = [injectable()];
21
+ let _classDescriptor;
22
+ let _classExtraInitializers = [];
23
+ let _classThis;
24
+ var MyService = class {
25
+ static { _classThis = this; }
26
+ static {
27
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
28
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
29
+ MyService = _classThis = _classDescriptor.value;
30
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
31
+ __runInitializers(_classThis, _classExtraInitializers);
160
32
  }
161
- }
162
- const injector = new Injector([
163
- {
164
- provide: Service,
165
- factory() {
166
- return {
167
- hello() {
168
- return 'you';
169
- }
170
- };
171
- }
33
+ a = inject(A);
34
+ b = inject(B);
35
+ };
36
+ return MyService = _classThis;
37
+ })();
38
+ const app = new Injector();
39
+ const instance = app.inject(MyService);
40
+ assert(instance.a() instanceof A);
41
+ assert(instance.b() instanceof B);
42
+ });
43
+ it('should create a new instance of a provider that has a full dep tree', () => {
44
+ class A {
45
+ }
46
+ let B = (() => {
47
+ let _classDecorators = [injectable()];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ var B = class {
52
+ static { _classThis = this; }
53
+ static {
54
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
55
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
56
+ B = _classThis = _classDescriptor.value;
57
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
58
+ __runInitializers(_classThis, _classExtraInitializers);
172
59
  }
173
- ]);
174
- expect(injector.inject(Service).hello()).to.equal('you');
175
- });
176
- it('should throw an error if provider is missing both factory and use', () => {
177
- class Service {
178
- hello() {
179
- return 'world';
60
+ a = inject(A);
61
+ };
62
+ return B = _classThis;
63
+ })();
64
+ let C = (() => {
65
+ let _classDecorators = [injectable()];
66
+ let _classDescriptor;
67
+ let _classExtraInitializers = [];
68
+ let _classThis;
69
+ var C = class {
70
+ static { _classThis = this; }
71
+ static {
72
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
73
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
74
+ C = _classThis = _classDescriptor.value;
75
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
76
+ __runInitializers(_classThis, _classExtraInitializers);
180
77
  }
181
- }
182
- const injector = new Injector([
183
- {
184
- provide: Service
78
+ b = inject(B);
79
+ };
80
+ return C = _classThis;
81
+ })();
82
+ let D = (() => {
83
+ let _classDecorators = [injectable()];
84
+ let _classDescriptor;
85
+ let _classExtraInitializers = [];
86
+ let _classThis;
87
+ var D = class {
88
+ static { _classThis = this; }
89
+ static {
90
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
91
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
92
+ D = _classThis = _classDescriptor.value;
93
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
94
+ __runInitializers(_classThis, _classExtraInitializers);
185
95
  }
186
- ]);
187
- expect(() => injector.inject(Service)).to.throw("Provider for Service found but is missing either 'use' or 'factory'");
188
- });
189
- it('should pass factories and instance of the injector', (done) => {
190
- class Service {
191
- hello() {
192
- return 'world';
96
+ c = inject(C);
97
+ };
98
+ return D = _classThis;
99
+ })();
100
+ let E = (() => {
101
+ let _classDecorators = [injectable()];
102
+ let _classDescriptor;
103
+ let _classExtraInitializers = [];
104
+ let _classThis;
105
+ var E = class {
106
+ static { _classThis = this; }
107
+ static {
108
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
109
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
110
+ E = _classThis = _classDescriptor.value;
111
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
112
+ __runInitializers(_classThis, _classExtraInitializers);
193
113
  }
194
- }
195
- const injector = new Injector([
196
- {
197
- provide: Service,
198
- factory(i) {
199
- expect(i).to.equal(injector);
200
- done();
201
- }
114
+ d = inject(D);
115
+ };
116
+ return E = _classThis;
117
+ })();
118
+ const app = new Injector();
119
+ const instance = app.inject(E);
120
+ assert(instance.d().c().b().a() instanceof A);
121
+ });
122
+ it('should override a provider if explicitly instructed', () => {
123
+ class A {
124
+ }
125
+ let B = (() => {
126
+ let _classDecorators = [injectable()];
127
+ let _classDescriptor;
128
+ let _classExtraInitializers = [];
129
+ let _classThis;
130
+ var B = class {
131
+ static { _classThis = this; }
132
+ static {
133
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
134
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
135
+ B = _classThis = _classDescriptor.value;
136
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
137
+ __runInitializers(_classThis, _classExtraInitializers);
202
138
  }
203
- ]);
204
- injector.inject(Service);
205
- });
206
- it('should create an instance from a StaticToken factory', () => {
207
- const TOKEN = new StaticToken('test', () => 'Hello World');
208
- const injector = new Injector();
209
- const res = injector.inject(TOKEN);
210
- expect(res).to.equal('Hello World');
211
- });
212
- it('should create an instance from an async StaticToken factory', async () => {
213
- const TOKEN = new StaticToken('test', () => Promise.resolve('Hello World'));
214
- const injector = new Injector();
215
- const res = await injector.inject(TOKEN);
216
- expect(res).to.equal('Hello World');
217
- });
218
- it('should allow static token to be overridden', () => {
219
- const TOKEN = new StaticToken('test');
220
- const provider = {
221
- provide: TOKEN,
139
+ a = inject(A);
140
+ };
141
+ return B = _classThis;
142
+ })();
143
+ class AltA extends A {
144
+ }
145
+ const app = new Injector([{ provide: A, use: AltA }]);
146
+ assert(app.inject(B).a() instanceof AltA);
147
+ });
148
+ it('should return an existing instance from a parent injector', () => {
149
+ class A {
150
+ }
151
+ const parent = new Injector();
152
+ const app = new Injector([], parent);
153
+ assert.equal(parent.inject(A), app.inject(A));
154
+ });
155
+ it('should use a factory if provided', () => {
156
+ class Service {
157
+ hello() {
158
+ return 'world';
159
+ }
160
+ }
161
+ const injector = new Injector([
162
+ {
163
+ provide: Service,
222
164
  factory() {
223
- return 'Hello World';
165
+ return {
166
+ hello() {
167
+ return 'world';
168
+ }
169
+ };
224
170
  }
225
- };
226
- const injector = new Injector([provider]);
227
- const res = injector.inject(TOKEN);
228
- expect(res).to.equal('Hello World');
229
- });
171
+ }
172
+ ]);
173
+ assert.equal(injector.inject(Service).hello(), 'world');
174
+ });
175
+ it('should throw an error if provider is missing both factory and use', () => {
176
+ class Service {
177
+ hello() {
178
+ return 'world';
179
+ }
180
+ }
181
+ const injector = new Injector([
182
+ {
183
+ provide: Service
184
+ }
185
+ ]);
186
+ assert.throws(() => injector.inject(Service), "Provider for Service found but is missing either 'use' or 'factory'");
187
+ });
188
+ it('should pass factories and instance of the injector', async () => {
189
+ class Service {
190
+ hello() {
191
+ return 'world';
192
+ }
193
+ }
194
+ let factoryInjector = null;
195
+ const injector = new Injector([
196
+ {
197
+ provide: Service,
198
+ factory(i) {
199
+ factoryInjector = i;
200
+ }
201
+ }
202
+ ]);
203
+ injector.inject(Service);
204
+ assert.equal(factoryInjector, injector);
205
+ });
206
+ it('should create an instance from a StaticToken factory', () => {
207
+ const TOKEN = new StaticToken('test', () => 'Hello World');
208
+ const injector = new Injector();
209
+ const res = injector.inject(TOKEN);
210
+ assert.equal(res, 'Hello World');
211
+ });
212
+ it('should create an instance from an async StaticToken factory', async () => {
213
+ const TOKEN = new StaticToken('test', () => Promise.resolve('Hello World'));
214
+ const injector = new Injector();
215
+ const res = await injector.inject(TOKEN);
216
+ assert.equal(res, 'Hello World');
217
+ });
218
+ it('should allow static token to be overridden', () => {
219
+ const TOKEN = new StaticToken('test');
220
+ const provider = {
221
+ provide: TOKEN,
222
+ factory() {
223
+ return 'Hello World';
224
+ }
225
+ };
226
+ const injector = new Injector([provider]);
227
+ const res = injector.inject(TOKEN);
228
+ assert.equal(res, 'Hello World');
230
229
  });
231
230
  //# sourceMappingURL=injector.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,2 @@
1
- export declare const LifeCycle: {
2
- readonly onInit: symbol;
3
- readonly onInject: symbol;
4
- };
1
+ export declare function injected(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
2
+ export declare function created(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
@@ -1,5 +1,16 @@
1
- export const LifeCycle = {
2
- onInit: Symbol('OnInit'),
3
- onInject: Symbol('OnInject')
4
- };
1
+ Symbol.metadata ??= Symbol('Symbol.metadata');
2
+ export function injected() {
3
+ return function onInjectDecorator(val, ctx) {
4
+ const metadata = ctx.metadata;
5
+ metadata.onInjected ??= [];
6
+ metadata.onInjected.push(val);
7
+ };
8
+ }
9
+ export function created() {
10
+ return function onInjectDecorator(val, ctx) {
11
+ const metadata = ctx.metadata;
12
+ metadata.onCreated ??= [];
13
+ metadata.onCreated.push(val);
14
+ };
15
+ }
5
16
  //# sourceMappingURL=lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAEC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEvD,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,SAAS,KAAK,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}