@norith/glimmer-tracking 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.
- package/README.md +44 -0
- package/dist/commonjs/index.d.ts +2 -0
- package/dist/commonjs/index.js +8 -0
- package/dist/commonjs/src/cached.d.ts +58 -0
- package/dist/commonjs/src/cached.js +100 -0
- package/dist/commonjs/src/tracked.d.ts +57 -0
- package/dist/commonjs/src/tracked.js +109 -0
- package/dist/commonjs/test/cached-decorator-test.d.ts +1 -0
- package/dist/commonjs/test/cached-decorator-test.js +137 -0
- package/dist/commonjs/test/fixtures/typescript.d.ts +47 -0
- package/dist/commonjs/test/fixtures/typescript.js +297 -0
- package/dist/commonjs/test/helpers/tags.d.ts +2 -0
- package/dist/commonjs/test/helpers/tags.js +10 -0
- package/dist/commonjs/test/index.d.ts +2 -0
- package/dist/commonjs/test/index.js +5 -0
- package/dist/commonjs/test/tracked-decorator-test.d.ts +1 -0
- package/dist/commonjs/test/tracked-decorator-test.js +182 -0
- package/dist/modules/index.d.ts +2 -0
- package/dist/modules/index.js +3 -0
- package/dist/modules/src/cached.d.ts +58 -0
- package/dist/modules/src/cached.js +96 -0
- package/dist/modules/src/tracked.d.ts +57 -0
- package/dist/modules/src/tracked.js +105 -0
- package/dist/modules/test/cached-decorator-test.d.ts +1 -0
- package/dist/modules/test/cached-decorator-test.js +116 -0
- package/dist/modules/test/fixtures/typescript.d.ts +47 -0
- package/dist/modules/test/fixtures/typescript.js +280 -0
- package/dist/modules/test/helpers/tags.d.ts +2 -0
- package/dist/modules/test/helpers/tags.js +6 -0
- package/dist/modules/test/index.d.ts +2 -0
- package/dist/modules/test/index.js +3 -0
- package/dist/modules/test/tracked-decorator-test.d.ts +1 -0
- package/dist/modules/test/tracked-decorator-test.js +161 -0
- package/ember-addon-main.js +5 -0
- package/package.json +41 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { cached, tracked } from '@norith/glimmer-tracking';
|
|
8
|
+
export class Tom {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.firstName = 'Tom';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
__decorate([
|
|
14
|
+
tracked
|
|
15
|
+
], Tom.prototype, "firstName", void 0);
|
|
16
|
+
export class Toran {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.firstName = 'Toran';
|
|
19
|
+
this.lastName = 'Billups';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
__decorate([
|
|
23
|
+
tracked
|
|
24
|
+
], Toran.prototype, "firstName", void 0);
|
|
25
|
+
class FrozenToran {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.firstName = 'Toran';
|
|
28
|
+
this.lastName = 'Billups';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__decorate([
|
|
32
|
+
tracked
|
|
33
|
+
], FrozenToran.prototype, "firstName", void 0);
|
|
34
|
+
Object.freeze(FrozenToran);
|
|
35
|
+
export { FrozenToran };
|
|
36
|
+
export class PersonWithCount {
|
|
37
|
+
constructor() {
|
|
38
|
+
this._firstName = 'Tom';
|
|
39
|
+
this._count = 0;
|
|
40
|
+
}
|
|
41
|
+
get firstName() {
|
|
42
|
+
return this._firstName + this._count++;
|
|
43
|
+
}
|
|
44
|
+
set firstName(value) {
|
|
45
|
+
this._firstName = value;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
__decorate([
|
|
49
|
+
tracked
|
|
50
|
+
], PersonWithCount.prototype, "_firstName", void 0);
|
|
51
|
+
export class PersonWithSalutation {
|
|
52
|
+
constructor() {
|
|
53
|
+
this.firstName = 'Tom';
|
|
54
|
+
this.lastName = 'Dale';
|
|
55
|
+
}
|
|
56
|
+
get salutation() {
|
|
57
|
+
return `Hello, ${this.fullName}!`;
|
|
58
|
+
}
|
|
59
|
+
get fullName() {
|
|
60
|
+
return `${this.firstName} ${this.lastName}`;
|
|
61
|
+
}
|
|
62
|
+
set fullName(fullName) {
|
|
63
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
64
|
+
this.firstName = firstName;
|
|
65
|
+
this.lastName = lastName;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
__decorate([
|
|
69
|
+
tracked
|
|
70
|
+
], PersonWithSalutation.prototype, "firstName", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
tracked
|
|
73
|
+
], PersonWithSalutation.prototype, "lastName", void 0);
|
|
74
|
+
export class Contact {
|
|
75
|
+
constructor(person, email) {
|
|
76
|
+
this.person = person;
|
|
77
|
+
this.email = email;
|
|
78
|
+
}
|
|
79
|
+
get contact() {
|
|
80
|
+
return `${this.person} @ ${this.email}`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
__decorate([
|
|
84
|
+
tracked
|
|
85
|
+
], Contact.prototype, "email", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
tracked
|
|
88
|
+
], Contact.prototype, "person", void 0);
|
|
89
|
+
export class PersonForContact {
|
|
90
|
+
constructor() {
|
|
91
|
+
this.firstName = 'Tom';
|
|
92
|
+
this.lastName = 'Dale';
|
|
93
|
+
}
|
|
94
|
+
get salutation() {
|
|
95
|
+
return `Hello, ${this.fullName}!`;
|
|
96
|
+
}
|
|
97
|
+
get fullName() {
|
|
98
|
+
return `${this.firstName} ${this.lastName}`;
|
|
99
|
+
}
|
|
100
|
+
set fullName(fullName) {
|
|
101
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
102
|
+
this.firstName = firstName;
|
|
103
|
+
this.lastName = lastName;
|
|
104
|
+
}
|
|
105
|
+
toString() {
|
|
106
|
+
return this.fullName;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
__decorate([
|
|
110
|
+
tracked
|
|
111
|
+
], PersonForContact.prototype, "firstName", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
tracked
|
|
114
|
+
], PersonForContact.prototype, "lastName", void 0);
|
|
115
|
+
export function createClassWithTrackedGetter() {
|
|
116
|
+
class PersonWithTrackedGetter {
|
|
117
|
+
constructor() {
|
|
118
|
+
this.firstName = 'Tom';
|
|
119
|
+
}
|
|
120
|
+
get salutation() {
|
|
121
|
+
return `Hello, ${this.firstName} ${this.lastName}!`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
__decorate([
|
|
125
|
+
tracked
|
|
126
|
+
], PersonWithTrackedGetter.prototype, "firstName", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
tracked
|
|
129
|
+
], PersonWithTrackedGetter.prototype, "lastName", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
tracked
|
|
132
|
+
], PersonWithTrackedGetter.prototype, "salutation", null);
|
|
133
|
+
return new PersonWithTrackedGetter();
|
|
134
|
+
}
|
|
135
|
+
export function createClassWithCachedProperty() {
|
|
136
|
+
class PersonWithCachedProperty {
|
|
137
|
+
constructor() {
|
|
138
|
+
this.firstName = 'Tom';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
__decorate([
|
|
142
|
+
cached
|
|
143
|
+
], PersonWithCachedProperty.prototype, "firstName", void 0);
|
|
144
|
+
return new PersonWithCachedProperty();
|
|
145
|
+
}
|
|
146
|
+
export function createClassWithTrackedSetter() {
|
|
147
|
+
class PersonWithTrackedSetter {
|
|
148
|
+
constructor() {
|
|
149
|
+
this.firstName = 'Tom';
|
|
150
|
+
}
|
|
151
|
+
// @ts-ignore
|
|
152
|
+
set fullName(fullName) {
|
|
153
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
154
|
+
this.firstName = firstName;
|
|
155
|
+
this.lastName = lastName;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
__decorate([
|
|
159
|
+
tracked
|
|
160
|
+
], PersonWithTrackedSetter.prototype, "firstName", void 0);
|
|
161
|
+
__decorate([
|
|
162
|
+
tracked
|
|
163
|
+
], PersonWithTrackedSetter.prototype, "lastName", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
tracked
|
|
166
|
+
], PersonWithTrackedSetter.prototype, "fullName", null);
|
|
167
|
+
return new PersonWithTrackedSetter();
|
|
168
|
+
}
|
|
169
|
+
export function createClassWithCachedSetter() {
|
|
170
|
+
class PersonWithCachedSetter {
|
|
171
|
+
constructor() {
|
|
172
|
+
this.firstName = 'Tom';
|
|
173
|
+
}
|
|
174
|
+
// @ts-ignore
|
|
175
|
+
set fullName(fullName) {
|
|
176
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
177
|
+
this.firstName = firstName;
|
|
178
|
+
this.lastName = lastName;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
__decorate([
|
|
182
|
+
tracked
|
|
183
|
+
], PersonWithCachedSetter.prototype, "firstName", void 0);
|
|
184
|
+
__decorate([
|
|
185
|
+
tracked
|
|
186
|
+
], PersonWithCachedSetter.prototype, "lastName", void 0);
|
|
187
|
+
__decorate([
|
|
188
|
+
cached
|
|
189
|
+
], PersonWithCachedSetter.prototype, "fullName", null);
|
|
190
|
+
return new PersonWithCachedSetter();
|
|
191
|
+
}
|
|
192
|
+
export function createClassWithTrackedDependentKeys() {
|
|
193
|
+
class DependentKeysAreCool {
|
|
194
|
+
constructor() {
|
|
195
|
+
this.firstName = 'Tom';
|
|
196
|
+
this.lastName = 'Dale';
|
|
197
|
+
}
|
|
198
|
+
// @ts-ignore
|
|
199
|
+
fullName() {
|
|
200
|
+
return `${this.firstName} ${this.lastName}`;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
__decorate([
|
|
204
|
+
tracked('firstName', 'lastName')
|
|
205
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
206
|
+
__decorate([
|
|
207
|
+
tracked
|
|
208
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
tracked
|
|
211
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
212
|
+
return new DependentKeysAreCool();
|
|
213
|
+
}
|
|
214
|
+
export function createClassWithCachedDependentKeys() {
|
|
215
|
+
class DependentKeysAreCool {
|
|
216
|
+
constructor() {
|
|
217
|
+
this.firstName = 'Tom';
|
|
218
|
+
this.lastName = 'Dale';
|
|
219
|
+
}
|
|
220
|
+
// @ts-ignore
|
|
221
|
+
fullName() {
|
|
222
|
+
return `${this.firstName} ${this.lastName}`;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
__decorate([
|
|
226
|
+
cached('firstName', 'lastName')
|
|
227
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
228
|
+
__decorate([
|
|
229
|
+
tracked
|
|
230
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
231
|
+
__decorate([
|
|
232
|
+
tracked
|
|
233
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
234
|
+
return new DependentKeysAreCool();
|
|
235
|
+
}
|
|
236
|
+
export function createClassWithTrackedAsDecoratorFactory() {
|
|
237
|
+
class DependentKeysAreCool {
|
|
238
|
+
constructor() {
|
|
239
|
+
this.firstName = 'Tom';
|
|
240
|
+
this.lastName = 'Dale';
|
|
241
|
+
}
|
|
242
|
+
// @ts-ignore
|
|
243
|
+
fullName() {
|
|
244
|
+
return `${this.firstName} ${this.lastName}`;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
__decorate([
|
|
248
|
+
tracked()
|
|
249
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
250
|
+
__decorate([
|
|
251
|
+
tracked
|
|
252
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
tracked
|
|
255
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
256
|
+
return new DependentKeysAreCool();
|
|
257
|
+
}
|
|
258
|
+
export function createClassWithCachedAsDecoratorFactory() {
|
|
259
|
+
class DependentKeysAreCool {
|
|
260
|
+
constructor() {
|
|
261
|
+
this.firstName = 'Tom';
|
|
262
|
+
this.lastName = 'Dale';
|
|
263
|
+
}
|
|
264
|
+
// @ts-ignore
|
|
265
|
+
fullName() {
|
|
266
|
+
return `${this.firstName} ${this.lastName}`;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
__decorate([
|
|
270
|
+
cached()
|
|
271
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
272
|
+
__decorate([
|
|
273
|
+
tracked
|
|
274
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
tracked
|
|
277
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
278
|
+
return new DependentKeysAreCool();
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvZml4dHVyZXMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sT0FBTyxHQUFHO0lBQWhCO1FBQ1csY0FBUyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0NBQUE7QUFEVTtJQUFSLE9BQU87c0NBQW1CO0FBRzdCLE1BQU0sT0FBTyxLQUFLO0lBQWxCO1FBQ1csY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUM3QixhQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQTtBQUZVO0lBQVIsT0FBTzt3Q0FBcUI7QUFJL0IsTUFBTSxXQUFXO0lBQWpCO1FBQ1csY0FBUyxHQUFHLE9BQU8sQ0FBQztRQUM3QixhQUFRLEdBQUcsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQTtBQUZVO0lBQVIsT0FBTzs4Q0FBcUI7QUFJL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzQixPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFFdkIsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDVyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFTYixDQUFDO0lBUEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFWVTtJQUFSLE9BQU87bURBQW9CO0FBWTlCLE1BQU0sT0FBTyxvQkFBb0I7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O1lBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxDQUFDO0tBSUY7SUFOVztRQUFULE1BQU0sRUFBRTt3REFFUjtJQUVRO1FBQVIsT0FBTzsyREFBbUI7SUFDbEI7UUFBUixPQUFPOzBEQUFtQjtJQUU3QixPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FjaGVkLCB0cmFja2VkIH0gZnJvbSAnQG5vcml0aC9nbGltbWVyLXRyYWNraW5nJztcblxuZXhwb3J0IGNsYXNzIFRvbSB7XG4gIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xufVxuXG5leHBvcnQgY2xhc3MgVG9yYW4ge1xuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9yYW4nO1xuICBsYXN0TmFtZSA9ICdCaWxsdXBzJztcbn1cblxuY2xhc3MgRnJvemVuVG9yYW4ge1xuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9yYW4nO1xuICBsYXN0TmFtZSA9ICdCaWxsdXBzJztcbn1cblxuT2JqZWN0LmZyZWV6ZShGcm96ZW5Ub3Jhbik7XG5cbmV4cG9ydCB7IEZyb3plblRvcmFuIH07XG5cbmV4cG9ydCBjbGFzcyBQZXJzb25XaXRoQ291bnQge1xuICBAdHJhY2tlZCBfZmlyc3ROYW1lID0gJ1RvbSc7XG4gIF9jb3VudCA9IDA7XG5cbiAgZ2V0IGZpcnN0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlyc3ROYW1lICsgdGhpcy5fY291bnQrKztcbiAgfVxuXG4gIHNldCBmaXJzdE5hbWUodmFsdWUpIHtcbiAgICB0aGlzLl9maXJzdE5hbWUgPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uV2l0aFNhbHV0YXRpb24ge1xuICBnZXQgc2FsdXRhdGlvbigpIHtcbiAgICByZXR1cm4gYEhlbGxvLCAke3RoaXMuZnVsbE5hbWV9IWA7XG4gIH1cblxuICBnZXQgZnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgfVxuXG4gIHNldCBmdWxsTmFtZShmdWxsTmFtZSkge1xuICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGxhc3ROYW1lO1xuICB9XG5cbiAgQHRyYWNrZWQgZmlyc3ROYW1lID0gJ1RvbSc7XG4gIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGFjdCB7XG4gIEB0cmFja2VkIGVtYWlsOiBzdHJpbmc7XG4gIEB0cmFja2VkIHBlcnNvbjogUGVyc29uRm9yQ29udGFjdDtcblxuICBjb25zdHJ1Y3RvcihwZXJzb246IFBlcnNvbkZvckNvbnRhY3QsIGVtYWlsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBlcnNvbiA9IHBlcnNvbjtcbiAgICB0aGlzLmVtYWlsID0gZW1haWw7XG4gIH1cblxuICBnZXQgY29udGFjdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnBlcnNvbn0gQCAke3RoaXMuZW1haWx9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uRm9yQ29udGFjdCB7XG4gIGdldCBzYWx1dGF0aW9uKCkge1xuICAgIHJldHVybiBgSGVsbG8sICR7dGhpcy5mdWxsTmFtZX0hYDtcbiAgfVxuXG4gIGdldCBmdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmZpcnN0TmFtZX0gJHt0aGlzLmxhc3ROYW1lfWA7XG4gIH1cblxuICBzZXQgZnVsbE5hbWUoZnVsbE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGxhc3ROYW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVsbE5hbWU7XG4gIH1cblxuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgQHRyYWNrZWQgbGFzdE5hbWUgPSAnRGFsZSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhUcmFja2VkR2V0dGVyKCk6IGFueSB7XG4gIGNsYXNzIFBlcnNvbldpdGhUcmFja2VkR2V0dGVyIHtcbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZTogYW55O1xuXG4gICAgQHRyYWNrZWQgZ2V0IHNhbHV0YXRpb24oKSB7XG4gICAgICByZXR1cm4gYEhlbGxvLCAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9IWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoVHJhY2tlZEdldHRlcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NXaXRoQ2FjaGVkUHJvcGVydHkoKTogYW55IHtcbiAgY2xhc3MgUGVyc29uV2l0aENhY2hlZFByb3BlcnR5IHtcbiAgICBAY2FjaGVkIGZpcnN0TmFtZSA9ICdUb20nO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoQ2FjaGVkUHJvcGVydHkoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRTZXR0ZXIoKTogYW55IHtcbiAgY2xhc3MgUGVyc29uV2l0aFRyYWNrZWRTZXR0ZXIge1xuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lOiBhbnk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQHRyYWNrZWQgc2V0IGZ1bGxOYW1lKGZ1bGxOYW1lKSB7XG4gICAgICBjb25zdCBbZmlyc3ROYW1lLCBsYXN0TmFtZV0gPSBmdWxsTmFtZS5zcGxpdCgnICcpO1xuICAgICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgICB0aGlzLmxhc3ROYW1lID0gbGFzdE5hbWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoVHJhY2tlZFNldHRlcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NXaXRoQ2FjaGVkU2V0dGVyKCk6IGFueSB7XG4gIGNsYXNzIFBlcnNvbldpdGhDYWNoZWRTZXR0ZXIge1xuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lOiBhbnk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQGNhY2hlZCBzZXQgZnVsbE5hbWUoZnVsbE5hbWUpIHtcbiAgICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgICB0aGlzLmZpcnN0TmFtZSA9IGZpcnN0TmFtZTtcbiAgICAgIHRoaXMubGFzdE5hbWUgPSBsYXN0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFBlcnNvbldpdGhDYWNoZWRTZXR0ZXIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWREZXBlbmRlbnRLZXlzKCk6IGFueSB7XG4gIGNsYXNzIERlcGVuZGVudEtleXNBcmVDb29sIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQHRyYWNrZWQoJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScpIGZ1bGxOYW1lKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgICB9XG5cbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZSA9ICdEYWxlJztcbiAgfVxuICByZXR1cm4gbmV3IERlcGVuZGVudEtleXNBcmVDb29sKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhDYWNoZWREZXBlbmRlbnRLZXlzKCk6IGFueSB7XG4gIGNsYXNzIERlcGVuZGVudEtleXNBcmVDb29sIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQGNhY2hlZCgnZmlyc3ROYW1lJywgJ2xhc3ROYW1lJykgZnVsbE5hbWUoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5maXJzdE5hbWV9ICR7dGhpcy5sYXN0TmFtZX1gO1xuICAgIH1cblxuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xuICB9XG4gIHJldHVybiBuZXcgRGVwZW5kZW50S2V5c0FyZUNvb2woKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRBc0RlY29yYXRvckZhY3RvcnkoKTogYW55IHtcbiAgY2xhc3MgRGVwZW5kZW50S2V5c0FyZUNvb2wge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBAdHJhY2tlZCgpIGZ1bGxOYW1lKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgICB9XG5cbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZSA9ICdEYWxlJztcbiAgfVxuICByZXR1cm4gbmV3IERlcGVuZGVudEtleXNBcmVDb29sKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhDYWNoZWRBc0RlY29yYXRvckZhY3RvcnkoKTogYW55IHtcbiAgY2xhc3MgRGVwZW5kZW50S2V5c0FyZUNvb2wge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBAY2FjaGVkKCkgZnVsbE5hbWUoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5maXJzdE5hbWV9ICR7dGhpcy5sYXN0TmFtZX1gO1xuICAgIH1cblxuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xuICB9XG4gIHJldHVybiBuZXcgRGVwZW5kZW50S2V5c0FyZUNvb2woKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { bump, validateTag } from '@glimmer/validator';
|
|
2
|
+
export function assertValidAfterUnrelatedBump(tag, snapshot) {
|
|
3
|
+
bump();
|
|
4
|
+
QUnit.assert.strictEqual(validateTag(tag, snapshot), true, 'tag is still valid after an unrelated bump');
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvaGVscGVycy90YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQU8sV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEdBQVEsRUFBRSxRQUFnQjtJQUN0RSxJQUFJLEVBQUUsQ0FBQztJQUVQLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUN0QixXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUMxQixJQUFJLEVBQ0osNENBQTRDLENBQzdDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVtcCwgVGFnLCB2YWxpZGF0ZVRhZyB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWc6IFRhZywgc25hcHNob3Q6IG51bWJlcik6IHZvaWQge1xuICBidW1wKCk7XG5cbiAgUVVuaXQuYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgIHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLFxuICAgIHRydWUsXG4gICAgJ3RhZyBpcyBzdGlsbCB2YWxpZCBhZnRlciBhbiB1bnJlbGF0ZWQgYnVtcCdcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import './tracked-decorator-test';
|
|
2
|
+
import './cached-decorator-test';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci90cmFja2luZy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi90cmFja2VkLWRlY29yYXRvci10ZXN0JztcbmltcG9ydCAnLi9jYWNoZWQtZGVjb3JhdG9yLXRlc3QnO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/* tslint:disable:no-unused-expression */
|
|
2
|
+
const { test } = QUnit;
|
|
3
|
+
import { DEBUG } from '@glimmer/env';
|
|
4
|
+
import { track, valueForTag, validateTag } from '@glimmer/validator';
|
|
5
|
+
import * as TSFixtures from './fixtures/typescript';
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
import * as BabelFixtures from './fixtures/babel';
|
|
9
|
+
import { assertValidAfterUnrelatedBump } from './helpers/tags';
|
|
10
|
+
[
|
|
11
|
+
['Babel', BabelFixtures],
|
|
12
|
+
['TypeScript', TSFixtures],
|
|
13
|
+
].forEach(([compiler, F]) => {
|
|
14
|
+
QUnit.module(`[@glimmer/tracking] Tracked Property Decorators with ${compiler}`);
|
|
15
|
+
test('tracked properties can be read and written to', (assert) => {
|
|
16
|
+
const obj = new F.Tom();
|
|
17
|
+
assert.strictEqual(obj.firstName, 'Tom');
|
|
18
|
+
obj.firstName = 'Edsger';
|
|
19
|
+
assert.strictEqual(obj.firstName, 'Edsger');
|
|
20
|
+
});
|
|
21
|
+
test('can request a tag for a property', (assert) => {
|
|
22
|
+
const obj = new F.Tom();
|
|
23
|
+
assert.strictEqual(obj.firstName, 'Tom');
|
|
24
|
+
const tag = track(() => {
|
|
25
|
+
obj.firstName;
|
|
26
|
+
});
|
|
27
|
+
let snapshot = valueForTag(tag);
|
|
28
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
29
|
+
obj.firstName = 'Edsger';
|
|
30
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after property is set');
|
|
31
|
+
snapshot = valueForTag(tag);
|
|
32
|
+
assert.strictEqual(validateTag(tag, snapshot), true, 'tag is valid on the second check');
|
|
33
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
34
|
+
});
|
|
35
|
+
test('can request a tag from a frozen class instance', (assert) => {
|
|
36
|
+
const obj = Object.freeze(new F.Toran());
|
|
37
|
+
assert.strictEqual(obj.firstName, 'Toran');
|
|
38
|
+
assert.strictEqual(obj.lastName, 'Billups');
|
|
39
|
+
// Explicitly annotated tracked properties
|
|
40
|
+
let tag = track(() => {
|
|
41
|
+
obj.firstName;
|
|
42
|
+
});
|
|
43
|
+
let snapshot = valueForTag(tag);
|
|
44
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
45
|
+
snapshot = valueForTag(tag);
|
|
46
|
+
assert.strictEqual(validateTag(tag, snapshot), true, 'tag is still valid');
|
|
47
|
+
// Non-tracked data properties
|
|
48
|
+
tag = track(() => {
|
|
49
|
+
obj.lastName;
|
|
50
|
+
});
|
|
51
|
+
snapshot = valueForTag(tag);
|
|
52
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
53
|
+
snapshot = valueForTag(tag);
|
|
54
|
+
assert.strictEqual(validateTag(tag, snapshot), true, 'tag is still valid');
|
|
55
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
56
|
+
});
|
|
57
|
+
test('can request a tag from an instance of a frozen class', (assert) => {
|
|
58
|
+
const obj = Object.freeze(new F.FrozenToran());
|
|
59
|
+
assert.strictEqual(obj.firstName, 'Toran');
|
|
60
|
+
const tag = track(() => {
|
|
61
|
+
obj.firstName;
|
|
62
|
+
});
|
|
63
|
+
let snapshot = valueForTag(tag);
|
|
64
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
65
|
+
snapshot = valueForTag(tag);
|
|
66
|
+
assert.strictEqual(validateTag(tag, snapshot), true, 'tag is still valid');
|
|
67
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
68
|
+
});
|
|
69
|
+
test('can track a getter', (assert) => {
|
|
70
|
+
const obj = new F.PersonWithCount();
|
|
71
|
+
assert.strictEqual(obj.firstName, 'Tom0');
|
|
72
|
+
assert.strictEqual(obj.firstName, 'Tom1');
|
|
73
|
+
const tag = track(() => {
|
|
74
|
+
obj.firstName;
|
|
75
|
+
});
|
|
76
|
+
let snapshot = valueForTag(tag);
|
|
77
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
78
|
+
assert.strictEqual(obj.firstName, 'Tom3');
|
|
79
|
+
assert.ok(validateTag(tag, snapshot), 'reading from property does not invalidate the tag');
|
|
80
|
+
obj.firstName = 'Edsger';
|
|
81
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after property is set');
|
|
82
|
+
snapshot = valueForTag(tag);
|
|
83
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
84
|
+
});
|
|
85
|
+
test('getters are invalidated when their dependencies are invalidated', (assert) => {
|
|
86
|
+
const obj = new F.PersonWithSalutation();
|
|
87
|
+
assert.strictEqual(obj.salutation, 'Hello, Tom Dale!', `the saluation field is valid`);
|
|
88
|
+
assert.strictEqual(obj.fullName, 'Tom Dale', `the fullName field is valid`);
|
|
89
|
+
const tag = track(() => {
|
|
90
|
+
obj.salutation;
|
|
91
|
+
});
|
|
92
|
+
let snapshot = valueForTag(tag);
|
|
93
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
94
|
+
obj.firstName = 'Edsger';
|
|
95
|
+
obj.lastName = 'Dijkstra';
|
|
96
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
97
|
+
assert.strictEqual(obj.fullName, 'Edsger Dijkstra');
|
|
98
|
+
assert.strictEqual(obj.salutation, 'Hello, Edsger Dijkstra!');
|
|
99
|
+
snapshot = valueForTag(tag);
|
|
100
|
+
assert.strictEqual(validateTag(tag, snapshot), true);
|
|
101
|
+
obj.fullName = 'Alan Kay';
|
|
102
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
103
|
+
assert.strictEqual(obj.fullName, 'Alan Kay');
|
|
104
|
+
assert.strictEqual(obj.firstName, 'Alan');
|
|
105
|
+
assert.strictEqual(obj.lastName, 'Kay');
|
|
106
|
+
assert.strictEqual(obj.salutation, 'Hello, Alan Kay!');
|
|
107
|
+
snapshot = valueForTag(tag);
|
|
108
|
+
assert.strictEqual(validateTag(tag, snapshot), true);
|
|
109
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
110
|
+
});
|
|
111
|
+
test('nested @tracked in multiple objects', (assert) => {
|
|
112
|
+
const obj = new F.Contact(new F.PersonForContact(), 'tom@example.com');
|
|
113
|
+
assert.strictEqual(obj.contact, 'Tom Dale @ tom@example.com', `the contact field is valid`);
|
|
114
|
+
assert.strictEqual(obj.person.fullName, 'Tom Dale', `the fullName field is valid`);
|
|
115
|
+
const person = obj.person;
|
|
116
|
+
const tag = track(() => {
|
|
117
|
+
obj.contact;
|
|
118
|
+
});
|
|
119
|
+
let snapshot = valueForTag(tag);
|
|
120
|
+
assert.ok(validateTag(tag, snapshot), 'tag should be valid to start');
|
|
121
|
+
person.firstName = 'Edsger';
|
|
122
|
+
person.lastName = 'Dijkstra';
|
|
123
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after nested dependency is set');
|
|
124
|
+
assert.strictEqual(person.fullName, 'Edsger Dijkstra');
|
|
125
|
+
assert.strictEqual(obj.contact, 'Edsger Dijkstra @ tom@example.com');
|
|
126
|
+
snapshot = valueForTag(tag);
|
|
127
|
+
assert.strictEqual(validateTag(tag, snapshot), true);
|
|
128
|
+
person.fullName = 'Alan Kay';
|
|
129
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
130
|
+
assert.strictEqual(person.fullName, 'Alan Kay');
|
|
131
|
+
assert.strictEqual(person.firstName, 'Alan');
|
|
132
|
+
assert.strictEqual(person.lastName, 'Kay');
|
|
133
|
+
assert.strictEqual(obj.contact, 'Alan Kay @ tom@example.com');
|
|
134
|
+
snapshot = valueForTag(tag);
|
|
135
|
+
assert.strictEqual(validateTag(tag, snapshot), true);
|
|
136
|
+
obj.email = 'alan@example.com';
|
|
137
|
+
assert.strictEqual(validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
138
|
+
assert.strictEqual(person.fullName, 'Alan Kay');
|
|
139
|
+
assert.strictEqual(person.firstName, 'Alan');
|
|
140
|
+
assert.strictEqual(person.lastName, 'Kay');
|
|
141
|
+
assert.strictEqual(obj.contact, 'Alan Kay @ alan@example.com');
|
|
142
|
+
snapshot = valueForTag(tag);
|
|
143
|
+
assert.strictEqual(validateTag(tag, snapshot), true);
|
|
144
|
+
assertValidAfterUnrelatedBump(tag, snapshot);
|
|
145
|
+
});
|
|
146
|
+
if (DEBUG) {
|
|
147
|
+
test('Tracked decorator with a getter throws an error', (assert) => {
|
|
148
|
+
assert.throws(F.createClassWithTrackedGetter);
|
|
149
|
+
});
|
|
150
|
+
test('Tracked decorator with a setter throws an error', (assert) => {
|
|
151
|
+
assert.throws(F.createClassWithTrackedSetter);
|
|
152
|
+
});
|
|
153
|
+
test('Tracked decorator with arguments throws an error', function (assert) {
|
|
154
|
+
assert.throws(F.createClassWithTrackedDependentKeys, /@tracked\('firstName', 'lastName'\)/, 'the correct error is thrown');
|
|
155
|
+
});
|
|
156
|
+
test('Using @tracked as a decorator factory throws an error', function (assert) {
|
|
157
|
+
assert.throws(F.createClassWithTrackedAsDecoratorFactory, /@tracked\(\)/, 'The correct error is thrown');
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlZC1kZWNvcmF0b3ItdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvdHJhY2tlZC1kZWNvcmF0b3ItdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsNkRBQTZEO0FBQzdELGFBQWE7QUFDYixPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9EO0lBQ0UsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQ3hCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztDQUMzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUVqRixJQUFJLENBQUMsK0NBQStDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUMvRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsR0FBRyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFB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QUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFL0QsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFckQsNkJBQTZCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxLQUFLLEVBQUU7UUFDVCxJQUFJLENBQUMsaURBQWlELEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlEQUFpRCxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrREFBa0QsRUFBRSxVQUFVLE1BQU07WUFDdkUsTUFBTSxDQUFDLE1BQU0sQ0FDWCxDQUFDLENBQUMsbUNBQW1DLEVBQ3JDLHFDQUFxQyxFQUNyQyw2QkFBNkIsQ0FDOUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLFVBQVUsTUFBTTtZQUM1RSxNQUFNLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQyx3Q0FBd0MsRUFDMUMsY0FBYyxFQUNkLDZCQUE2QixDQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLWV4cHJlc3Npb24gKi9cbmNvbnN0IHsgdGVzdCB9ID0gUVVuaXQ7XG5cbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IHRyYWNrLCB2YWx1ZUZvclRhZywgdmFsaWRhdGVUYWcgfSBmcm9tICdAZ2xpbW1lci92YWxpZGF0b3InO1xuXG5pbXBvcnQgKiBhcyBUU0ZpeHR1cmVzIGZyb20gJy4vZml4dHVyZXMvdHlwZXNjcmlwdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBCYWJlbEZpeHR1cmVzIGZyb20gJy4vZml4dHVyZXMvYmFiZWwnO1xuaW1wb3J0IHsgYXNzZXJ0VmFsaWRBZnRlclVucmVsYXRlZEJ1bXAgfSBmcm9tICcuL2hlbHBlcnMvdGFncyc7XG5cbltcbiAgWydCYWJlbCcsIEJhYmVsRml4dHVyZXNdLFxuICBbJ1R5cGVTY3JpcHQnLCBUU0ZpeHR1cmVzXSxcbl0uZm9yRWFjaCgoW2NvbXBpbGVyLCBGXSkgPT4ge1xuICBRVW5pdC5tb2R1bGUoYFtAZ2xpbW1lci90cmFja2luZ10gVHJhY2tlZCBQcm9wZXJ0eSBEZWNvcmF0b3JzIHdpdGggJHtjb21waWxlcn1gKTtcblxuICB0ZXN0KCd0cmFja2VkIHByb3BlcnRpZXMgY2FuIGJlIHJlYWQgYW5kIHdyaXR0ZW4gdG8nLCAoYXNzZXJ0KSA9PiB7XG4gICAgY29uc3Qgb2JqID0gbmV3IEYuVG9tKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5maXJzdE5hbWUsICdUb20nKTtcbiAgICBvYmouZmlyc3ROYW1lID0gJ0Vkc2dlcic7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5maXJzdE5hbWUsICdFZHNnZXInKTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIHJlcXVlc3QgYSB0YWcgZm9yIGEgcHJvcGVydHknLCAoYXNzZXJ0KSA9PiB7XG4gICAgY29uc3Qgb2JqID0gbmV3IEYuVG9tKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5maXJzdE5hbWUsICdUb20nKTtcblxuICAgIGNvbnN0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5maXJzdE5hbWU7XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG5cbiAgICBvYmouZmlyc3ROYW1lID0gJ0Vkc2dlcic7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgcHJvcGVydHkgaXMgc2V0J1xuICAgICk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSwgJ3RhZyBpcyB2YWxpZCBvbiB0aGUgc2Vjb25kIGNoZWNrJyk7XG5cbiAgICBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWcsIHNuYXBzaG90KTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIHJlcXVlc3QgYSB0YWcgZnJvbSBhIGZyb3plbiBjbGFzcyBpbnN0YW5jZScsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuZnJlZXplKG5ldyBGLlRvcmFuKCkpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnVG9yYW4nKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmxhc3ROYW1lLCAnQmlsbHVwcycpO1xuXG4gICAgLy8gRXhwbGljaXRseSBhbm5vdGF0ZWQgdHJhY2tlZCBwcm9wZXJ0aWVzXG4gICAgbGV0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5maXJzdE5hbWU7XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSwgJ3RhZyBpcyBzdGlsbCB2YWxpZCcpO1xuXG4gICAgLy8gTm9uLXRyYWNrZWQgZGF0YSBwcm9wZXJ0aWVzXG4gICAgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmxhc3ROYW1lO1xuICAgIH0pO1xuICAgIHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSwgJ3RhZyBpcyBzdGlsbCB2YWxpZCcpO1xuXG4gICAgYXNzZXJ0VmFsaWRBZnRlclVucmVsYXRlZEJ1bXAodGFnLCBzbmFwc2hvdCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiByZXF1ZXN0IGEgdGFnIGZyb20gYW4gaW5zdGFuY2Ugb2YgYSBmcm96ZW4gY2xhc3MnLCAoYXNzZXJ0KSA9PiB7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmZyZWV6ZShuZXcgRi5Gcm96ZW5Ub3JhbigpKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnVG9yYW4nKTtcblxuICAgIGNvbnN0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5maXJzdE5hbWU7XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSwgJ3RhZyBpcyBzdGlsbCB2YWxpZCcpO1xuXG4gICAgYXNzZXJ0VmFsaWRBZnRlclVucmVsYXRlZEJ1bXAodGFnLCBzbmFwc2hvdCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiB0cmFjayBhIGdldHRlcicsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBuZXcgRi5QZXJzb25XaXRoQ291bnQoKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ1RvbTAnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ1RvbTEnKTtcblxuICAgIGNvbnN0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5maXJzdE5hbWU7XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ1RvbTMnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICdyZWFkaW5nIGZyb20gcHJvcGVydHkgZG9lcyBub3QgaW52YWxpZGF0ZSB0aGUgdGFnJyk7XG5cbiAgICBvYmouZmlyc3ROYW1lID0gJ0Vkc2dlcic7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgcHJvcGVydHkgaXMgc2V0J1xuICAgICk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuXG4gICAgYXNzZXJ0VmFsaWRBZnRlclVucmVsYXRlZEJ1bXAodGFnLCBzbmFwc2hvdCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2dldHRlcnMgYXJlIGludmFsaWRhdGVkIHdoZW4gdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBpbnZhbGlkYXRlZCcsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBuZXcgRi5QZXJzb25XaXRoU2FsdXRhdGlvbigpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouc2FsdXRhdGlvbiwgJ0hlbGxvLCBUb20gRGFsZSEnLCBgdGhlIHNhbHVhdGlvbiBmaWVsZCBpcyB2YWxpZGApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZnVsbE5hbWUsICdUb20gRGFsZScsIGB0aGUgZnVsbE5hbWUgZmllbGQgaXMgdmFsaWRgKTtcblxuICAgIGNvbnN0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5zYWx1dGF0aW9uO1xuICAgIH0pO1xuICAgIGxldCBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0Lm9rKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCAndGFnIHNob3VsZCBiZSB2YWxpZCB0byBzdGFydCcpO1xuXG4gICAgb2JqLmZpcnN0TmFtZSA9ICdFZHNnZXInO1xuICAgIG9iai5sYXN0TmFtZSA9ICdEaWprc3RyYSc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgY2hhaW5lZCBkZXBlbmRlbmN5IGlzIHNldCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZnVsbE5hbWUsICdFZHNnZXIgRGlqa3N0cmEnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLnNhbHV0YXRpb24sICdIZWxsbywgRWRzZ2VyIERpamtzdHJhIScpO1xuXG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSk7XG5cbiAgICBvYmouZnVsbE5hbWUgPSAnQWxhbiBLYXknO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLFxuICAgICAgZmFsc2UsXG4gICAgICAndGFnIGlzIGludmFsaWRhdGVkIGFmdGVyIGNoYWluZWQgZGVwZW5kZW5jeSBpcyBzZXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZ1bGxOYW1lLCAnQWxhbiBLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ0FsYW4nKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmxhc3ROYW1lLCAnS2F5Jyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5zYWx1dGF0aW9uLCAnSGVsbG8sIEFsYW4gS2F5IScpO1xuXG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSk7XG5cbiAgICBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWcsIHNuYXBzaG90KTtcbiAgfSk7XG5cbiAgdGVzdCgnbmVzdGVkIEB0cmFja2VkIGluIG11bHRpcGxlIG9iamVjdHMnLCAoYXNzZXJ0KSA9PiB7XG4gICAgY29uc3Qgb2JqID0gbmV3IEYuQ29udGFjdChuZXcgRi5QZXJzb25Gb3JDb250YWN0KCksICd0b21AZXhhbXBsZS5jb20nKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmNvbnRhY3QsICdUb20gRGFsZSBAIHRvbUBleGFtcGxlLmNvbScsIGB0aGUgY29udGFjdCBmaWVsZCBpcyB2YWxpZGApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmoucGVyc29uLmZ1bGxOYW1lLCAnVG9tIERhbGUnLCBgdGhlIGZ1bGxOYW1lIGZpZWxkIGlzIHZhbGlkYCk7XG4gICAgY29uc3QgcGVyc29uID0gb2JqLnBlcnNvbjtcblxuICAgIGNvbnN0IHRhZyA9IHRyYWNrKCgpID0+IHtcbiAgICAgIG9iai5jb250YWN0O1xuICAgIH0pO1xuICAgIGxldCBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0Lm9rKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCAndGFnIHNob3VsZCBiZSB2YWxpZCB0byBzdGFydCcpO1xuXG4gICAgcGVyc29uLmZpcnN0TmFtZSA9ICdFZHNnZXInO1xuICAgIHBlcnNvbi5sYXN0TmFtZSA9ICdEaWprc3RyYSc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgbmVzdGVkIGRlcGVuZGVuY3kgaXMgc2V0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBlcnNvbi5mdWxsTmFtZSwgJ0Vkc2dlciBEaWprc3RyYScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouY29udGFjdCwgJ0Vkc2dlciBEaWprc3RyYSBAIHRvbUBleGFtcGxlLmNvbScpO1xuXG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSk7XG5cbiAgICBwZXJzb24uZnVsbE5hbWUgPSAnQWxhbiBLYXknO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLFxuICAgICAgZmFsc2UsXG4gICAgICAndGFnIGlzIGludmFsaWRhdGVkIGFmdGVyIGNoYWluZWQgZGVwZW5kZW5jeSBpcyBzZXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmZ1bGxOYW1lLCAnQWxhbiBLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmZpcnN0TmFtZSwgJ0FsYW4nKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmxhc3ROYW1lLCAnS2F5Jyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5jb250YWN0LCAnQWxhbiBLYXkgQCB0b21AZXhhbXBsZS5jb20nKTtcblxuICAgIHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksIHRydWUpO1xuXG4gICAgb2JqLmVtYWlsID0gJ2FsYW5AZXhhbXBsZS5jb20nO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLFxuICAgICAgZmFsc2UsXG4gICAgICAndGFnIGlzIGludmFsaWRhdGVkIGFmdGVyIGNoYWluZWQgZGVwZW5kZW5jeSBpcyBzZXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmZ1bGxOYW1lLCAnQWxhbiBLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmZpcnN0TmFtZSwgJ0FsYW4nKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmxhc3ROYW1lLCAnS2F5Jyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5jb250YWN0LCAnQWxhbiBLYXkgQCBhbGFuQGV4YW1wbGUuY29tJyk7XG5cbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlKTtcblxuICAgIGFzc2VydFZhbGlkQWZ0ZXJVbnJlbGF0ZWRCdW1wKHRhZywgc25hcHNob3QpO1xuICB9KTtcblxuICBpZiAoREVCVUcpIHtcbiAgICB0ZXN0KCdUcmFja2VkIGRlY29yYXRvciB3aXRoIGEgZ2V0dGVyIHRocm93cyBhbiBlcnJvcicsIChhc3NlcnQpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoRi5jcmVhdGVDbGFzc1dpdGhUcmFja2VkR2V0dGVyKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ1RyYWNrZWQgZGVjb3JhdG9yIHdpdGggYSBzZXR0ZXIgdGhyb3dzIGFuIGVycm9yJywgKGFzc2VydCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhGLmNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRTZXR0ZXIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnVHJhY2tlZCBkZWNvcmF0b3Igd2l0aCBhcmd1bWVudHMgdGhyb3dzIGFuIGVycm9yJywgZnVuY3Rpb24gKGFzc2VydCkge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgRi5jcmVhdGVDbGFzc1dpdGhUcmFja2VkRGVwZW5kZW50S2V5cyxcbiAgICAgICAgL0B0cmFja2VkXFwoJ2ZpcnN0TmFtZScsICdsYXN0TmFtZSdcXCkvLFxuICAgICAgICAndGhlIGNvcnJlY3QgZXJyb3IgaXMgdGhyb3duJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ1VzaW5nIEB0cmFja2VkIGFzIGEgZGVjb3JhdG9yIGZhY3RvcnkgdGhyb3dzIGFuIGVycm9yJywgZnVuY3Rpb24gKGFzc2VydCkge1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgRi5jcmVhdGVDbGFzc1dpdGhUcmFja2VkQXNEZWNvcmF0b3JGYWN0b3J5LFxuICAgICAgICAvQHRyYWNrZWRcXChcXCkvLFxuICAgICAgICAnVGhlIGNvcnJlY3QgZXJyb3IgaXMgdGhyb3duJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufSk7XG4iXX0=
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@norith/glimmer-tracking",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Glimmer property tracking library",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ember-addon"
|
|
7
|
+
],
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/snorith/glimmer.js.git"
|
|
11
|
+
},
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"contributors": [
|
|
14
|
+
"Dan Gebhardt <dan@cerebris.com>",
|
|
15
|
+
"Tom Dale <tom@tomdale.net>"
|
|
16
|
+
],
|
|
17
|
+
"main": "dist/commonjs/index.js",
|
|
18
|
+
"module": "dist/modules/index.js",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"ember-addon-main.js"
|
|
22
|
+
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@glimmer/env": "^0.1.7",
|
|
25
|
+
"@glimmer/validator": "0.84.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@glimmer/application-test-helpers": "^1.0.0",
|
|
29
|
+
"@glimmer/compiler": "0.84.0",
|
|
30
|
+
"@glimmer/interfaces": "0.84.0",
|
|
31
|
+
"@glimmer/resolver": "^0.4.3",
|
|
32
|
+
"@glimmer/wire-format": "0.84.0"
|
|
33
|
+
},
|
|
34
|
+
"ember-addon": {
|
|
35
|
+
"main": "ember-addon-main.js"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public",
|
|
39
|
+
"registry": "https://registry.npmjs.org"
|
|
40
|
+
}
|
|
41
|
+
}
|