@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,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createClassWithCachedAsDecoratorFactory = exports.createClassWithTrackedAsDecoratorFactory = exports.createClassWithCachedDependentKeys = exports.createClassWithTrackedDependentKeys = exports.createClassWithCachedSetter = exports.createClassWithTrackedSetter = exports.createClassWithCachedProperty = exports.createClassWithTrackedGetter = exports.PersonForContact = exports.Contact = exports.PersonWithSalutation = exports.PersonWithCount = exports.FrozenToran = exports.Toran = exports.Tom = void 0;
|
|
10
|
+
const glimmer_tracking_1 = require("@norith/glimmer-tracking");
|
|
11
|
+
class Tom {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.firstName = 'Tom';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
__decorate([
|
|
17
|
+
glimmer_tracking_1.tracked
|
|
18
|
+
], Tom.prototype, "firstName", void 0);
|
|
19
|
+
exports.Tom = Tom;
|
|
20
|
+
class Toran {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.firstName = 'Toran';
|
|
23
|
+
this.lastName = 'Billups';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
__decorate([
|
|
27
|
+
glimmer_tracking_1.tracked
|
|
28
|
+
], Toran.prototype, "firstName", void 0);
|
|
29
|
+
exports.Toran = Toran;
|
|
30
|
+
class FrozenToran {
|
|
31
|
+
constructor() {
|
|
32
|
+
this.firstName = 'Toran';
|
|
33
|
+
this.lastName = 'Billups';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
__decorate([
|
|
37
|
+
glimmer_tracking_1.tracked
|
|
38
|
+
], FrozenToran.prototype, "firstName", void 0);
|
|
39
|
+
exports.FrozenToran = FrozenToran;
|
|
40
|
+
Object.freeze(FrozenToran);
|
|
41
|
+
class PersonWithCount {
|
|
42
|
+
constructor() {
|
|
43
|
+
this._firstName = 'Tom';
|
|
44
|
+
this._count = 0;
|
|
45
|
+
}
|
|
46
|
+
get firstName() {
|
|
47
|
+
return this._firstName + this._count++;
|
|
48
|
+
}
|
|
49
|
+
set firstName(value) {
|
|
50
|
+
this._firstName = value;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
__decorate([
|
|
54
|
+
glimmer_tracking_1.tracked
|
|
55
|
+
], PersonWithCount.prototype, "_firstName", void 0);
|
|
56
|
+
exports.PersonWithCount = PersonWithCount;
|
|
57
|
+
class PersonWithSalutation {
|
|
58
|
+
constructor() {
|
|
59
|
+
this.firstName = 'Tom';
|
|
60
|
+
this.lastName = 'Dale';
|
|
61
|
+
}
|
|
62
|
+
get salutation() {
|
|
63
|
+
return `Hello, ${this.fullName}!`;
|
|
64
|
+
}
|
|
65
|
+
get fullName() {
|
|
66
|
+
return `${this.firstName} ${this.lastName}`;
|
|
67
|
+
}
|
|
68
|
+
set fullName(fullName) {
|
|
69
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
70
|
+
this.firstName = firstName;
|
|
71
|
+
this.lastName = lastName;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
__decorate([
|
|
75
|
+
glimmer_tracking_1.tracked
|
|
76
|
+
], PersonWithSalutation.prototype, "firstName", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
glimmer_tracking_1.tracked
|
|
79
|
+
], PersonWithSalutation.prototype, "lastName", void 0);
|
|
80
|
+
exports.PersonWithSalutation = PersonWithSalutation;
|
|
81
|
+
class Contact {
|
|
82
|
+
constructor(person, email) {
|
|
83
|
+
this.person = person;
|
|
84
|
+
this.email = email;
|
|
85
|
+
}
|
|
86
|
+
get contact() {
|
|
87
|
+
return `${this.person} @ ${this.email}`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
__decorate([
|
|
91
|
+
glimmer_tracking_1.tracked
|
|
92
|
+
], Contact.prototype, "email", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
glimmer_tracking_1.tracked
|
|
95
|
+
], Contact.prototype, "person", void 0);
|
|
96
|
+
exports.Contact = Contact;
|
|
97
|
+
class PersonForContact {
|
|
98
|
+
constructor() {
|
|
99
|
+
this.firstName = 'Tom';
|
|
100
|
+
this.lastName = 'Dale';
|
|
101
|
+
}
|
|
102
|
+
get salutation() {
|
|
103
|
+
return `Hello, ${this.fullName}!`;
|
|
104
|
+
}
|
|
105
|
+
get fullName() {
|
|
106
|
+
return `${this.firstName} ${this.lastName}`;
|
|
107
|
+
}
|
|
108
|
+
set fullName(fullName) {
|
|
109
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
110
|
+
this.firstName = firstName;
|
|
111
|
+
this.lastName = lastName;
|
|
112
|
+
}
|
|
113
|
+
toString() {
|
|
114
|
+
return this.fullName;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
__decorate([
|
|
118
|
+
glimmer_tracking_1.tracked
|
|
119
|
+
], PersonForContact.prototype, "firstName", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
glimmer_tracking_1.tracked
|
|
122
|
+
], PersonForContact.prototype, "lastName", void 0);
|
|
123
|
+
exports.PersonForContact = PersonForContact;
|
|
124
|
+
function createClassWithTrackedGetter() {
|
|
125
|
+
class PersonWithTrackedGetter {
|
|
126
|
+
constructor() {
|
|
127
|
+
this.firstName = 'Tom';
|
|
128
|
+
}
|
|
129
|
+
get salutation() {
|
|
130
|
+
return `Hello, ${this.firstName} ${this.lastName}!`;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
__decorate([
|
|
134
|
+
glimmer_tracking_1.tracked
|
|
135
|
+
], PersonWithTrackedGetter.prototype, "firstName", void 0);
|
|
136
|
+
__decorate([
|
|
137
|
+
glimmer_tracking_1.tracked
|
|
138
|
+
], PersonWithTrackedGetter.prototype, "lastName", void 0);
|
|
139
|
+
__decorate([
|
|
140
|
+
glimmer_tracking_1.tracked
|
|
141
|
+
], PersonWithTrackedGetter.prototype, "salutation", null);
|
|
142
|
+
return new PersonWithTrackedGetter();
|
|
143
|
+
}
|
|
144
|
+
exports.createClassWithTrackedGetter = createClassWithTrackedGetter;
|
|
145
|
+
function createClassWithCachedProperty() {
|
|
146
|
+
class PersonWithCachedProperty {
|
|
147
|
+
constructor() {
|
|
148
|
+
this.firstName = 'Tom';
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
__decorate([
|
|
152
|
+
glimmer_tracking_1.cached
|
|
153
|
+
], PersonWithCachedProperty.prototype, "firstName", void 0);
|
|
154
|
+
return new PersonWithCachedProperty();
|
|
155
|
+
}
|
|
156
|
+
exports.createClassWithCachedProperty = createClassWithCachedProperty;
|
|
157
|
+
function createClassWithTrackedSetter() {
|
|
158
|
+
class PersonWithTrackedSetter {
|
|
159
|
+
constructor() {
|
|
160
|
+
this.firstName = 'Tom';
|
|
161
|
+
}
|
|
162
|
+
// @ts-ignore
|
|
163
|
+
set fullName(fullName) {
|
|
164
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
165
|
+
this.firstName = firstName;
|
|
166
|
+
this.lastName = lastName;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
__decorate([
|
|
170
|
+
glimmer_tracking_1.tracked
|
|
171
|
+
], PersonWithTrackedSetter.prototype, "firstName", void 0);
|
|
172
|
+
__decorate([
|
|
173
|
+
glimmer_tracking_1.tracked
|
|
174
|
+
], PersonWithTrackedSetter.prototype, "lastName", void 0);
|
|
175
|
+
__decorate([
|
|
176
|
+
glimmer_tracking_1.tracked
|
|
177
|
+
], PersonWithTrackedSetter.prototype, "fullName", null);
|
|
178
|
+
return new PersonWithTrackedSetter();
|
|
179
|
+
}
|
|
180
|
+
exports.createClassWithTrackedSetter = createClassWithTrackedSetter;
|
|
181
|
+
function createClassWithCachedSetter() {
|
|
182
|
+
class PersonWithCachedSetter {
|
|
183
|
+
constructor() {
|
|
184
|
+
this.firstName = 'Tom';
|
|
185
|
+
}
|
|
186
|
+
// @ts-ignore
|
|
187
|
+
set fullName(fullName) {
|
|
188
|
+
const [firstName, lastName] = fullName.split(' ');
|
|
189
|
+
this.firstName = firstName;
|
|
190
|
+
this.lastName = lastName;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
__decorate([
|
|
194
|
+
glimmer_tracking_1.tracked
|
|
195
|
+
], PersonWithCachedSetter.prototype, "firstName", void 0);
|
|
196
|
+
__decorate([
|
|
197
|
+
glimmer_tracking_1.tracked
|
|
198
|
+
], PersonWithCachedSetter.prototype, "lastName", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
glimmer_tracking_1.cached
|
|
201
|
+
], PersonWithCachedSetter.prototype, "fullName", null);
|
|
202
|
+
return new PersonWithCachedSetter();
|
|
203
|
+
}
|
|
204
|
+
exports.createClassWithCachedSetter = createClassWithCachedSetter;
|
|
205
|
+
function createClassWithTrackedDependentKeys() {
|
|
206
|
+
class DependentKeysAreCool {
|
|
207
|
+
constructor() {
|
|
208
|
+
this.firstName = 'Tom';
|
|
209
|
+
this.lastName = 'Dale';
|
|
210
|
+
}
|
|
211
|
+
// @ts-ignore
|
|
212
|
+
fullName() {
|
|
213
|
+
return `${this.firstName} ${this.lastName}`;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
__decorate([
|
|
217
|
+
glimmer_tracking_1.tracked('firstName', 'lastName')
|
|
218
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
219
|
+
__decorate([
|
|
220
|
+
glimmer_tracking_1.tracked
|
|
221
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
222
|
+
__decorate([
|
|
223
|
+
glimmer_tracking_1.tracked
|
|
224
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
225
|
+
return new DependentKeysAreCool();
|
|
226
|
+
}
|
|
227
|
+
exports.createClassWithTrackedDependentKeys = createClassWithTrackedDependentKeys;
|
|
228
|
+
function createClassWithCachedDependentKeys() {
|
|
229
|
+
class DependentKeysAreCool {
|
|
230
|
+
constructor() {
|
|
231
|
+
this.firstName = 'Tom';
|
|
232
|
+
this.lastName = 'Dale';
|
|
233
|
+
}
|
|
234
|
+
// @ts-ignore
|
|
235
|
+
fullName() {
|
|
236
|
+
return `${this.firstName} ${this.lastName}`;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
__decorate([
|
|
240
|
+
glimmer_tracking_1.cached('firstName', 'lastName')
|
|
241
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
242
|
+
__decorate([
|
|
243
|
+
glimmer_tracking_1.tracked
|
|
244
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
glimmer_tracking_1.tracked
|
|
247
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
248
|
+
return new DependentKeysAreCool();
|
|
249
|
+
}
|
|
250
|
+
exports.createClassWithCachedDependentKeys = createClassWithCachedDependentKeys;
|
|
251
|
+
function createClassWithTrackedAsDecoratorFactory() {
|
|
252
|
+
class DependentKeysAreCool {
|
|
253
|
+
constructor() {
|
|
254
|
+
this.firstName = 'Tom';
|
|
255
|
+
this.lastName = 'Dale';
|
|
256
|
+
}
|
|
257
|
+
// @ts-ignore
|
|
258
|
+
fullName() {
|
|
259
|
+
return `${this.firstName} ${this.lastName}`;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
__decorate([
|
|
263
|
+
glimmer_tracking_1.tracked()
|
|
264
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
265
|
+
__decorate([
|
|
266
|
+
glimmer_tracking_1.tracked
|
|
267
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
268
|
+
__decorate([
|
|
269
|
+
glimmer_tracking_1.tracked
|
|
270
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
271
|
+
return new DependentKeysAreCool();
|
|
272
|
+
}
|
|
273
|
+
exports.createClassWithTrackedAsDecoratorFactory = createClassWithTrackedAsDecoratorFactory;
|
|
274
|
+
function createClassWithCachedAsDecoratorFactory() {
|
|
275
|
+
class DependentKeysAreCool {
|
|
276
|
+
constructor() {
|
|
277
|
+
this.firstName = 'Tom';
|
|
278
|
+
this.lastName = 'Dale';
|
|
279
|
+
}
|
|
280
|
+
// @ts-ignore
|
|
281
|
+
fullName() {
|
|
282
|
+
return `${this.firstName} ${this.lastName}`;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
__decorate([
|
|
286
|
+
glimmer_tracking_1.cached()
|
|
287
|
+
], DependentKeysAreCool.prototype, "fullName", null);
|
|
288
|
+
__decorate([
|
|
289
|
+
glimmer_tracking_1.tracked
|
|
290
|
+
], DependentKeysAreCool.prototype, "firstName", void 0);
|
|
291
|
+
__decorate([
|
|
292
|
+
glimmer_tracking_1.tracked
|
|
293
|
+
], DependentKeysAreCool.prototype, "lastName", void 0);
|
|
294
|
+
return new DependentKeysAreCool();
|
|
295
|
+
}
|
|
296
|
+
exports.createClassWithCachedAsDecoratorFactory = createClassWithCachedAsDecoratorFactory;
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvZml4dHVyZXMvdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwrREFBMkQ7QUFFM0QsTUFBYSxHQUFHO0lBQWhCO1FBQ1csY0FBUyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0NBQUE7QUFEVTtJQUFSLDBCQUFPO3NDQUFtQjtBQUQ3QixrQkFFQztBQUVELE1BQWEsS0FBSztJQUFsQjtRQUNXLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDN0IsYUFBUSxHQUFHLFNBQVMsQ0FBQztJQUN2QixDQUFDO0NBQUE7QUFGVTtJQUFSLDBCQUFPO3dDQUFxQjtBQUQvQixzQkFHQztBQUVELE1BQU0sV0FBVztJQUFqQjtRQUNXLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDN0IsYUFBUSxHQUFHLFNBQVMsQ0FBQztJQUN2QixDQUFDO0NBQUE7QUFGVTtJQUFSLDBCQUFPOzhDQUFxQjtBQU10QixrQ0FBVztBQUZwQixNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBSTNCLE1BQWEsZUFBZTtJQUE1QjtRQUNXLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDNUIsV0FBTSxHQUFHLENBQUMsQ0FBQztJQVNiLENBQUM7SUFQQyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUFLO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQVZVO0lBQVIsMEJBQU87bURBQW9CO0FBRDlCLDBDQVdDO0FBRUQsTUFBYSxvQkFBb0I7SUFBakM7UUFlVyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFB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QztZQUNsQixhQUFRLEdBQUcsTUFBTSxDQUFDO1FBQzdCLENBQUM7UUFQQyxhQUFhO1FBQ0gsUUFBUTtZQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsQ0FBQztLQUlGO0lBTlc7UUFBVCx5QkFBTSxFQUFFO3dEQUVSO0lBRVE7UUFBUiwwQkFBTzsyREFBbUI7SUFDbEI7UUFBUiwwQkFBTzswREFBbUI7SUFFN0IsT0FBTyxJQUFJLG9CQUFvQixFQUFFLENBQUM7QUFDcEMsQ0FBQztBQVhELDBGQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FjaGVkLCB0cmFja2VkIH0gZnJvbSAnQG5vcml0aC9nbGltbWVyLXRyYWNraW5nJztcblxuZXhwb3J0IGNsYXNzIFRvbSB7XG4gIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xufVxuXG5leHBvcnQgY2xhc3MgVG9yYW4ge1xuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9yYW4nO1xuICBsYXN0TmFtZSA9ICdCaWxsdXBzJztcbn1cblxuY2xhc3MgRnJvemVuVG9yYW4ge1xuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9yYW4nO1xuICBsYXN0TmFtZSA9ICdCaWxsdXBzJztcbn1cblxuT2JqZWN0LmZyZWV6ZShGcm96ZW5Ub3Jhbik7XG5cbmV4cG9ydCB7IEZyb3plblRvcmFuIH07XG5cbmV4cG9ydCBjbGFzcyBQZXJzb25XaXRoQ291bnQge1xuICBAdHJhY2tlZCBfZmlyc3ROYW1lID0gJ1RvbSc7XG4gIF9jb3VudCA9IDA7XG5cbiAgZ2V0IGZpcnN0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlyc3ROYW1lICsgdGhpcy5fY291bnQrKztcbiAgfVxuXG4gIHNldCBmaXJzdE5hbWUodmFsdWUpIHtcbiAgICB0aGlzLl9maXJzdE5hbWUgPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uV2l0aFNhbHV0YXRpb24ge1xuICBnZXQgc2FsdXRhdGlvbigpIHtcbiAgICByZXR1cm4gYEhlbGxvLCAke3RoaXMuZnVsbE5hbWV9IWA7XG4gIH1cblxuICBnZXQgZnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgfVxuXG4gIHNldCBmdWxsTmFtZShmdWxsTmFtZSkge1xuICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGxhc3ROYW1lO1xuICB9XG5cbiAgQHRyYWNrZWQgZmlyc3ROYW1lID0gJ1RvbSc7XG4gIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGFjdCB7XG4gIEB0cmFja2VkIGVtYWlsOiBzdHJpbmc7XG4gIEB0cmFja2VkIHBlcnNvbjogUGVyc29uRm9yQ29udGFjdDtcblxuICBjb25zdHJ1Y3RvcihwZXJzb246IFBlcnNvbkZvckNvbnRhY3QsIGVtYWlsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBlcnNvbiA9IHBlcnNvbjtcbiAgICB0aGlzLmVtYWlsID0gZW1haWw7XG4gIH1cblxuICBnZXQgY29udGFjdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnBlcnNvbn0gQCAke3RoaXMuZW1haWx9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uRm9yQ29udGFjdCB7XG4gIGdldCBzYWx1dGF0aW9uKCkge1xuICAgIHJldHVybiBgSGVsbG8sICR7dGhpcy5mdWxsTmFtZX0hYDtcbiAgfVxuXG4gIGdldCBmdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmZpcnN0TmFtZX0gJHt0aGlzLmxhc3ROYW1lfWA7XG4gIH1cblxuICBzZXQgZnVsbE5hbWUoZnVsbE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgdGhpcy5sYXN0TmFtZSA9IGxhc3ROYW1lO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVsbE5hbWU7XG4gIH1cblxuICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgQHRyYWNrZWQgbGFzdE5hbWUgPSAnRGFsZSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhUcmFja2VkR2V0dGVyKCk6IGFueSB7XG4gIGNsYXNzIFBlcnNvbldpdGhUcmFja2VkR2V0dGVyIHtcbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZTogYW55O1xuXG4gICAgQHRyYWNrZWQgZ2V0IHNhbHV0YXRpb24oKSB7XG4gICAgICByZXR1cm4gYEhlbGxvLCAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9IWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoVHJhY2tlZEdldHRlcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NXaXRoQ2FjaGVkUHJvcGVydHkoKTogYW55IHtcbiAgY2xhc3MgUGVyc29uV2l0aENhY2hlZFByb3BlcnR5IHtcbiAgICBAY2FjaGVkIGZpcnN0TmFtZSA9ICdUb20nO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoQ2FjaGVkUHJvcGVydHkoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRTZXR0ZXIoKTogYW55IHtcbiAgY2xhc3MgUGVyc29uV2l0aFRyYWNrZWRTZXR0ZXIge1xuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lOiBhbnk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQHRyYWNrZWQgc2V0IGZ1bGxOYW1lKGZ1bGxOYW1lKSB7XG4gICAgICBjb25zdCBbZmlyc3ROYW1lLCBsYXN0TmFtZV0gPSBmdWxsTmFtZS5zcGxpdCgnICcpO1xuICAgICAgdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWU7XG4gICAgICB0aGlzLmxhc3ROYW1lID0gbGFzdE5hbWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQZXJzb25XaXRoVHJhY2tlZFNldHRlcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NXaXRoQ2FjaGVkU2V0dGVyKCk6IGFueSB7XG4gIGNsYXNzIFBlcnNvbldpdGhDYWNoZWRTZXR0ZXIge1xuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lOiBhbnk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQGNhY2hlZCBzZXQgZnVsbE5hbWUoZnVsbE5hbWUpIHtcbiAgICAgIGNvbnN0IFtmaXJzdE5hbWUsIGxhc3ROYW1lXSA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XG4gICAgICB0aGlzLmZpcnN0TmFtZSA9IGZpcnN0TmFtZTtcbiAgICAgIHRoaXMubGFzdE5hbWUgPSBsYXN0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFBlcnNvbldpdGhDYWNoZWRTZXR0ZXIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWREZXBlbmRlbnRLZXlzKCk6IGFueSB7XG4gIGNsYXNzIERlcGVuZGVudEtleXNBcmVDb29sIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQHRyYWNrZWQoJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScpIGZ1bGxOYW1lKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgICB9XG5cbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZSA9ICdEYWxlJztcbiAgfVxuICByZXR1cm4gbmV3IERlcGVuZGVudEtleXNBcmVDb29sKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhDYWNoZWREZXBlbmRlbnRLZXlzKCk6IGFueSB7XG4gIGNsYXNzIERlcGVuZGVudEtleXNBcmVDb29sIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgQGNhY2hlZCgnZmlyc3ROYW1lJywgJ2xhc3ROYW1lJykgZnVsbE5hbWUoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5maXJzdE5hbWV9ICR7dGhpcy5sYXN0TmFtZX1gO1xuICAgIH1cblxuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xuICB9XG4gIHJldHVybiBuZXcgRGVwZW5kZW50S2V5c0FyZUNvb2woKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRBc0RlY29yYXRvckZhY3RvcnkoKTogYW55IHtcbiAgY2xhc3MgRGVwZW5kZW50S2V5c0FyZUNvb2wge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBAdHJhY2tlZCgpIGZ1bGxOYW1lKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZmlyc3ROYW1lfSAke3RoaXMubGFzdE5hbWV9YDtcbiAgICB9XG5cbiAgICBAdHJhY2tlZCBmaXJzdE5hbWUgPSAnVG9tJztcbiAgICBAdHJhY2tlZCBsYXN0TmFtZSA9ICdEYWxlJztcbiAgfVxuICByZXR1cm4gbmV3IERlcGVuZGVudEtleXNBcmVDb29sKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1dpdGhDYWNoZWRBc0RlY29yYXRvckZhY3RvcnkoKTogYW55IHtcbiAgY2xhc3MgRGVwZW5kZW50S2V5c0FyZUNvb2wge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBAY2FjaGVkKCkgZnVsbE5hbWUoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5maXJzdE5hbWV9ICR7dGhpcy5sYXN0TmFtZX1gO1xuICAgIH1cblxuICAgIEB0cmFja2VkIGZpcnN0TmFtZSA9ICdUb20nO1xuICAgIEB0cmFja2VkIGxhc3ROYW1lID0gJ0RhbGUnO1xuICB9XG4gIHJldHVybiBuZXcgRGVwZW5kZW50S2V5c0FyZUNvb2woKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertValidAfterUnrelatedBump = void 0;
|
|
4
|
+
const validator_1 = require("@glimmer/validator");
|
|
5
|
+
function assertValidAfterUnrelatedBump(tag, snapshot) {
|
|
6
|
+
validator_1.bump();
|
|
7
|
+
QUnit.assert.strictEqual(validator_1.validateTag(tag, snapshot), true, 'tag is still valid after an unrelated bump');
|
|
8
|
+
}
|
|
9
|
+
exports.assertValidAfterUnrelatedBump = assertValidAfterUnrelatedBump;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvaGVscGVycy90YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUE0RDtBQUU1RCxTQUFnQiw2QkFBNkIsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7SUFDdEUsZ0JBQUksRUFBRSxDQUFDO0lBRVAsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQ3RCLHVCQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUMxQixJQUFJLEVBQ0osNENBQTRDLENBQzdDLENBQUM7QUFDSixDQUFDO0FBUkQsc0VBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidW1wLCBUYWcsIHZhbGlkYXRlVGFnIH0gZnJvbSAnQGdsaW1tZXIvdmFsaWRhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkQWZ0ZXJVbnJlbGF0ZWRCdW1wKHRhZzogVGFnLCBzbmFwc2hvdDogbnVtYmVyKTogdm9pZCB7XG4gIGJ1bXAoKTtcblxuICBRVW5pdC5hc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgdHJ1ZSxcbiAgICAndGFnIGlzIHN0aWxsIHZhbGlkIGFmdGVyIGFuIHVucmVsYXRlZCBidW1wJ1xuICApO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("./tracked-decorator-test");
|
|
4
|
+
require("./cached-decorator-test");
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci90cmFja2luZy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQWtDO0FBQ2xDLG1DQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi90cmFja2VkLWRlY29yYXRvci10ZXN0JztcbmltcG9ydCAnLi9jYWNoZWQtZGVjb3JhdG9yLXRlc3QnO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
/* tslint:disable:no-unused-expression */
|
|
23
|
+
const { test } = QUnit;
|
|
24
|
+
const env_1 = require("@glimmer/env");
|
|
25
|
+
const validator_1 = require("@glimmer/validator");
|
|
26
|
+
const TSFixtures = __importStar(require("./fixtures/typescript"));
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const BabelFixtures = __importStar(require("./fixtures/babel"));
|
|
30
|
+
const tags_1 = require("./helpers/tags");
|
|
31
|
+
[
|
|
32
|
+
['Babel', BabelFixtures],
|
|
33
|
+
['TypeScript', TSFixtures],
|
|
34
|
+
].forEach(([compiler, F]) => {
|
|
35
|
+
QUnit.module(`[@glimmer/tracking] Tracked Property Decorators with ${compiler}`);
|
|
36
|
+
test('tracked properties can be read and written to', (assert) => {
|
|
37
|
+
const obj = new F.Tom();
|
|
38
|
+
assert.strictEqual(obj.firstName, 'Tom');
|
|
39
|
+
obj.firstName = 'Edsger';
|
|
40
|
+
assert.strictEqual(obj.firstName, 'Edsger');
|
|
41
|
+
});
|
|
42
|
+
test('can request a tag for a property', (assert) => {
|
|
43
|
+
const obj = new F.Tom();
|
|
44
|
+
assert.strictEqual(obj.firstName, 'Tom');
|
|
45
|
+
const tag = validator_1.track(() => {
|
|
46
|
+
obj.firstName;
|
|
47
|
+
});
|
|
48
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
49
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
50
|
+
obj.firstName = 'Edsger';
|
|
51
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after property is set');
|
|
52
|
+
snapshot = validator_1.valueForTag(tag);
|
|
53
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true, 'tag is valid on the second check');
|
|
54
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
55
|
+
});
|
|
56
|
+
test('can request a tag from a frozen class instance', (assert) => {
|
|
57
|
+
const obj = Object.freeze(new F.Toran());
|
|
58
|
+
assert.strictEqual(obj.firstName, 'Toran');
|
|
59
|
+
assert.strictEqual(obj.lastName, 'Billups');
|
|
60
|
+
// Explicitly annotated tracked properties
|
|
61
|
+
let tag = validator_1.track(() => {
|
|
62
|
+
obj.firstName;
|
|
63
|
+
});
|
|
64
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
65
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
66
|
+
snapshot = validator_1.valueForTag(tag);
|
|
67
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true, 'tag is still valid');
|
|
68
|
+
// Non-tracked data properties
|
|
69
|
+
tag = validator_1.track(() => {
|
|
70
|
+
obj.lastName;
|
|
71
|
+
});
|
|
72
|
+
snapshot = validator_1.valueForTag(tag);
|
|
73
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
74
|
+
snapshot = validator_1.valueForTag(tag);
|
|
75
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true, 'tag is still valid');
|
|
76
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
77
|
+
});
|
|
78
|
+
test('can request a tag from an instance of a frozen class', (assert) => {
|
|
79
|
+
const obj = Object.freeze(new F.FrozenToran());
|
|
80
|
+
assert.strictEqual(obj.firstName, 'Toran');
|
|
81
|
+
const tag = validator_1.track(() => {
|
|
82
|
+
obj.firstName;
|
|
83
|
+
});
|
|
84
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
85
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
86
|
+
snapshot = validator_1.valueForTag(tag);
|
|
87
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true, 'tag is still valid');
|
|
88
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
89
|
+
});
|
|
90
|
+
test('can track a getter', (assert) => {
|
|
91
|
+
const obj = new F.PersonWithCount();
|
|
92
|
+
assert.strictEqual(obj.firstName, 'Tom0');
|
|
93
|
+
assert.strictEqual(obj.firstName, 'Tom1');
|
|
94
|
+
const tag = validator_1.track(() => {
|
|
95
|
+
obj.firstName;
|
|
96
|
+
});
|
|
97
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
98
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
99
|
+
assert.strictEqual(obj.firstName, 'Tom3');
|
|
100
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'reading from property does not invalidate the tag');
|
|
101
|
+
obj.firstName = 'Edsger';
|
|
102
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after property is set');
|
|
103
|
+
snapshot = validator_1.valueForTag(tag);
|
|
104
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
105
|
+
});
|
|
106
|
+
test('getters are invalidated when their dependencies are invalidated', (assert) => {
|
|
107
|
+
const obj = new F.PersonWithSalutation();
|
|
108
|
+
assert.strictEqual(obj.salutation, 'Hello, Tom Dale!', `the saluation field is valid`);
|
|
109
|
+
assert.strictEqual(obj.fullName, 'Tom Dale', `the fullName field is valid`);
|
|
110
|
+
const tag = validator_1.track(() => {
|
|
111
|
+
obj.salutation;
|
|
112
|
+
});
|
|
113
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
114
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
115
|
+
obj.firstName = 'Edsger';
|
|
116
|
+
obj.lastName = 'Dijkstra';
|
|
117
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
118
|
+
assert.strictEqual(obj.fullName, 'Edsger Dijkstra');
|
|
119
|
+
assert.strictEqual(obj.salutation, 'Hello, Edsger Dijkstra!');
|
|
120
|
+
snapshot = validator_1.valueForTag(tag);
|
|
121
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true);
|
|
122
|
+
obj.fullName = 'Alan Kay';
|
|
123
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
124
|
+
assert.strictEqual(obj.fullName, 'Alan Kay');
|
|
125
|
+
assert.strictEqual(obj.firstName, 'Alan');
|
|
126
|
+
assert.strictEqual(obj.lastName, 'Kay');
|
|
127
|
+
assert.strictEqual(obj.salutation, 'Hello, Alan Kay!');
|
|
128
|
+
snapshot = validator_1.valueForTag(tag);
|
|
129
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true);
|
|
130
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
131
|
+
});
|
|
132
|
+
test('nested @tracked in multiple objects', (assert) => {
|
|
133
|
+
const obj = new F.Contact(new F.PersonForContact(), 'tom@example.com');
|
|
134
|
+
assert.strictEqual(obj.contact, 'Tom Dale @ tom@example.com', `the contact field is valid`);
|
|
135
|
+
assert.strictEqual(obj.person.fullName, 'Tom Dale', `the fullName field is valid`);
|
|
136
|
+
const person = obj.person;
|
|
137
|
+
const tag = validator_1.track(() => {
|
|
138
|
+
obj.contact;
|
|
139
|
+
});
|
|
140
|
+
let snapshot = validator_1.valueForTag(tag);
|
|
141
|
+
assert.ok(validator_1.validateTag(tag, snapshot), 'tag should be valid to start');
|
|
142
|
+
person.firstName = 'Edsger';
|
|
143
|
+
person.lastName = 'Dijkstra';
|
|
144
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after nested dependency is set');
|
|
145
|
+
assert.strictEqual(person.fullName, 'Edsger Dijkstra');
|
|
146
|
+
assert.strictEqual(obj.contact, 'Edsger Dijkstra @ tom@example.com');
|
|
147
|
+
snapshot = validator_1.valueForTag(tag);
|
|
148
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true);
|
|
149
|
+
person.fullName = 'Alan Kay';
|
|
150
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
151
|
+
assert.strictEqual(person.fullName, 'Alan Kay');
|
|
152
|
+
assert.strictEqual(person.firstName, 'Alan');
|
|
153
|
+
assert.strictEqual(person.lastName, 'Kay');
|
|
154
|
+
assert.strictEqual(obj.contact, 'Alan Kay @ tom@example.com');
|
|
155
|
+
snapshot = validator_1.valueForTag(tag);
|
|
156
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true);
|
|
157
|
+
obj.email = 'alan@example.com';
|
|
158
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), false, 'tag is invalidated after chained dependency is set');
|
|
159
|
+
assert.strictEqual(person.fullName, 'Alan Kay');
|
|
160
|
+
assert.strictEqual(person.firstName, 'Alan');
|
|
161
|
+
assert.strictEqual(person.lastName, 'Kay');
|
|
162
|
+
assert.strictEqual(obj.contact, 'Alan Kay @ alan@example.com');
|
|
163
|
+
snapshot = validator_1.valueForTag(tag);
|
|
164
|
+
assert.strictEqual(validator_1.validateTag(tag, snapshot), true);
|
|
165
|
+
tags_1.assertValidAfterUnrelatedBump(tag, snapshot);
|
|
166
|
+
});
|
|
167
|
+
if (env_1.DEBUG) {
|
|
168
|
+
test('Tracked decorator with a getter throws an error', (assert) => {
|
|
169
|
+
assert.throws(F.createClassWithTrackedGetter);
|
|
170
|
+
});
|
|
171
|
+
test('Tracked decorator with a setter throws an error', (assert) => {
|
|
172
|
+
assert.throws(F.createClassWithTrackedSetter);
|
|
173
|
+
});
|
|
174
|
+
test('Tracked decorator with arguments throws an error', function (assert) {
|
|
175
|
+
assert.throws(F.createClassWithTrackedDependentKeys, /@tracked\('firstName', 'lastName'\)/, 'the correct error is thrown');
|
|
176
|
+
});
|
|
177
|
+
test('Using @tracked as a decorator factory throws an error', function (assert) {
|
|
178
|
+
assert.throws(F.createClassWithTrackedAsDecoratorFactory, /@tracked\(\)/, 'The correct error is thrown');
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlZC1kZWNvcmF0b3ItdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3RyYWNraW5nL3Rlc3QvdHJhY2tlZC1kZWNvcmF0b3ItdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBeUM7QUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUV2QixzQ0FBcUM7QUFDckMsa0RBQXFFO0FBRXJFLGtFQUFvRDtBQUNwRCw2REFBNkQ7QUFDN0QsYUFBYTtBQUNiLGdFQUFrRDtBQUNsRCx5Q0FBK0Q7QUFFL0Q7SUFDRSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7SUFDeEIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO0NBQzNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLHdEQUF3RCxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRWpGLElBQUksQ0FBQywrQ0FBK0MsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQy9ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QixN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UUFDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyx1QkFBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRCxvQ0FBNkIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFdBQUssRUFBRTtRQUNULElBQUksQ0FBQyxpREFBaUQsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaURBQWlELEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLFVBQVUsTUFBTTtZQUN2RSxNQUFNLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQyxtQ0FBbUMsRUFDckMscUNBQXFDLEVBQ3JDLDZCQUE2QixDQUM5QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsdURBQXVELEVBQUUsVUFBVSxNQUFNO1lBQzVFLE1BQU0sQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDLHdDQUF3QyxFQUMxQyxjQUFjLEVBQ2QsNkJBQTZCLENBQzlCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtZXhwcmVzc2lvbiAqL1xuY29uc3QgeyB0ZXN0IH0gPSBRVW5pdDtcblxuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgdHJhY2ssIHZhbHVlRm9yVGFnLCB2YWxpZGF0ZVRhZyB9IGZyb20gJ0BnbGltbWVyL3ZhbGlkYXRvcic7XG5cbmltcG9ydCAqIGFzIFRTRml4dHVyZXMgZnJvbSAnLi9maXh0dXJlcy90eXBlc2NyaXB0Jztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEJhYmVsRml4dHVyZXMgZnJvbSAnLi9maXh0dXJlcy9iYWJlbCc7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCB9IGZyb20gJy4vaGVscGVycy90YWdzJztcblxuW1xuICBbJ0JhYmVsJywgQmFiZWxGaXh0dXJlc10sXG4gIFsnVHlwZVNjcmlwdCcsIFRTRml4dHVyZXNdLFxuXS5mb3JFYWNoKChbY29tcGlsZXIsIEZdKSA9PiB7XG4gIFFVbml0Lm1vZHVsZShgW0BnbGltbWVyL3RyYWNraW5nXSBUcmFja2VkIFByb3BlcnR5IERlY29yYXRvcnMgd2l0aCAke2NvbXBpbGVyfWApO1xuXG4gIHRlc3QoJ3RyYWNrZWQgcHJvcGVydGllcyBjYW4gYmUgcmVhZCBhbmQgd3JpdHRlbiB0bycsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBuZXcgRi5Ub20oKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ1RvbScpO1xuICAgIG9iai5maXJzdE5hbWUgPSAnRWRzZ2VyJztcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ0Vkc2dlcicpO1xuICB9KTtcblxuICB0ZXN0KCdjYW4gcmVxdWVzdCBhIHRhZyBmb3IgYSBwcm9wZXJ0eScsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBuZXcgRi5Ub20oKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmZpcnN0TmFtZSwgJ1RvbScpO1xuXG4gICAgY29uc3QgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmZpcnN0TmFtZTtcbiAgICB9KTtcbiAgICBsZXQgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3RhZyBzaG91bGQgYmUgdmFsaWQgdG8gc3RhcnQnKTtcblxuICAgIG9iai5maXJzdE5hbWUgPSAnRWRzZ2VyJztcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSxcbiAgICAgIGZhbHNlLFxuICAgICAgJ3RhZyBpcyBpbnZhbGlkYXRlZCBhZnRlciBwcm9wZXJ0eSBpcyBzZXQnXG4gICAgKTtcbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlLCAndGFnIGlzIHZhbGlkIG9uIHRoZSBzZWNvbmQgY2hlY2snKTtcblxuICAgIGFzc2VydFZhbGlkQWZ0ZXJVbnJlbGF0ZWRCdW1wKHRhZywgc25hcHNob3QpO1xuICB9KTtcblxuICB0ZXN0KCdjYW4gcmVxdWVzdCBhIHRhZyBmcm9tIGEgZnJvemVuIGNsYXNzIGluc3RhbmNlJywgKGFzc2VydCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5mcmVlemUobmV3IEYuVG9yYW4oKSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5maXJzdE5hbWUsICdUb3JhbicpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmoubGFzdE5hbWUsICdCaWxsdXBzJyk7XG5cbiAgICAvLyBFeHBsaWNpdGx5IGFubm90YXRlZCB0cmFja2VkIHByb3BlcnRpZXNcbiAgICBsZXQgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmZpcnN0TmFtZTtcbiAgICB9KTtcbiAgICBsZXQgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3RhZyBzaG91bGQgYmUgdmFsaWQgdG8gc3RhcnQnKTtcbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlLCAndGFnIGlzIHN0aWxsIHZhbGlkJyk7XG5cbiAgICAvLyBOb24tdHJhY2tlZCBkYXRhIHByb3BlcnRpZXNcbiAgICB0YWcgPSB0cmFjaygoKSA9PiB7XG4gICAgICBvYmoubGFzdE5hbWU7XG4gICAgfSk7XG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3RhZyBzaG91bGQgYmUgdmFsaWQgdG8gc3RhcnQnKTtcbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlLCAndGFnIGlzIHN0aWxsIHZhbGlkJyk7XG5cbiAgICBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWcsIHNuYXBzaG90KTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIHJlcXVlc3QgYSB0YWcgZnJvbSBhbiBpbnN0YW5jZSBvZiBhIGZyb3plbiBjbGFzcycsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuZnJlZXplKG5ldyBGLkZyb3plblRvcmFuKCkpO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5maXJzdE5hbWUsICdUb3JhbicpO1xuXG4gICAgY29uc3QgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmZpcnN0TmFtZTtcbiAgICB9KTtcbiAgICBsZXQgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3RhZyBzaG91bGQgYmUgdmFsaWQgdG8gc3RhcnQnKTtcbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlLCAndGFnIGlzIHN0aWxsIHZhbGlkJyk7XG5cbiAgICBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWcsIHNuYXBzaG90KTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIHRyYWNrIGEgZ2V0dGVyJywgKGFzc2VydCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IG5ldyBGLlBlcnNvbldpdGhDb3VudCgpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnVG9tMCcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnVG9tMScpO1xuXG4gICAgY29uc3QgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmZpcnN0TmFtZTtcbiAgICB9KTtcbiAgICBsZXQgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3RhZyBzaG91bGQgYmUgdmFsaWQgdG8gc3RhcnQnKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnVG9tMycpO1xuICAgIGFzc2VydC5vayh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgJ3JlYWRpbmcgZnJvbSBwcm9wZXJ0eSBkb2VzIG5vdCBpbnZhbGlkYXRlIHRoZSB0YWcnKTtcblxuICAgIG9iai5maXJzdE5hbWUgPSAnRWRzZ2VyJztcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSxcbiAgICAgIGZhbHNlLFxuICAgICAgJ3RhZyBpcyBpbnZhbGlkYXRlZCBhZnRlciBwcm9wZXJ0eSBpcyBzZXQnXG4gICAgKTtcbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG5cbiAgICBhc3NlcnRWYWxpZEFmdGVyVW5yZWxhdGVkQnVtcCh0YWcsIHNuYXBzaG90KTtcbiAgfSk7XG5cbiAgdGVzdCgnZ2V0dGVycyBhcmUgaW52YWxpZGF0ZWQgd2hlbiB0aGVpciBkZXBlbmRlbmNpZXMgYXJlIGludmFsaWRhdGVkJywgKGFzc2VydCkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IG5ldyBGLlBlcnNvbldpdGhTYWx1dGF0aW9uKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5zYWx1dGF0aW9uLCAnSGVsbG8sIFRvbSBEYWxlIScsIGB0aGUgc2FsdWF0aW9uIGZpZWxkIGlzIHZhbGlkYCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5mdWxsTmFtZSwgJ1RvbSBEYWxlJywgYHRoZSBmdWxsTmFtZSBmaWVsZCBpcyB2YWxpZGApO1xuXG4gICAgY29uc3QgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLnNhbHV0YXRpb247XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG5cbiAgICBvYmouZmlyc3ROYW1lID0gJ0Vkc2dlcic7XG4gICAgb2JqLmxhc3ROYW1lID0gJ0RpamtzdHJhJztcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSxcbiAgICAgIGZhbHNlLFxuICAgICAgJ3RhZyBpcyBpbnZhbGlkYXRlZCBhZnRlciBjaGFpbmVkIGRlcGVuZGVuY3kgaXMgc2V0J1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5mdWxsTmFtZSwgJ0Vkc2dlciBEaWprc3RyYScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouc2FsdXRhdGlvbiwgJ0hlbGxvLCBFZHNnZXIgRGlqa3N0cmEhJyk7XG5cbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlKTtcblxuICAgIG9iai5mdWxsTmFtZSA9ICdBbGFuIEtheSc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgY2hhaW5lZCBkZXBlbmRlbmN5IGlzIHNldCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZnVsbE5hbWUsICdBbGFuIEtheScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouZmlyc3ROYW1lLCAnQWxhbicpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmoubGFzdE5hbWUsICdLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLnNhbHV0YXRpb24sICdIZWxsbywgQWxhbiBLYXkhJyk7XG5cbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlKTtcblxuICAgIGFzc2VydFZhbGlkQWZ0ZXJVbnJlbGF0ZWRCdW1wKHRhZywgc25hcHNob3QpO1xuICB9KTtcblxuICB0ZXN0KCduZXN0ZWQgQHRyYWNrZWQgaW4gbXVsdGlwbGUgb2JqZWN0cycsIChhc3NlcnQpID0+IHtcbiAgICBjb25zdCBvYmogPSBuZXcgRi5Db250YWN0KG5ldyBGLlBlcnNvbkZvckNvbnRhY3QoKSwgJ3RvbUBleGFtcGxlLmNvbScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmouY29udGFjdCwgJ1RvbSBEYWxlIEAgdG9tQGV4YW1wbGUuY29tJywgYHRoZSBjb250YWN0IGZpZWxkIGlzIHZhbGlkYCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5wZXJzb24uZnVsbE5hbWUsICdUb20gRGFsZScsIGB0aGUgZnVsbE5hbWUgZmllbGQgaXMgdmFsaWRgKTtcbiAgICBjb25zdCBwZXJzb24gPSBvYmoucGVyc29uO1xuXG4gICAgY29uc3QgdGFnID0gdHJhY2soKCkgPT4ge1xuICAgICAgb2JqLmNvbnRhY3Q7XG4gICAgfSk7XG4gICAgbGV0IHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQub2sodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksICd0YWcgc2hvdWxkIGJlIHZhbGlkIHRvIHN0YXJ0Jyk7XG5cbiAgICBwZXJzb24uZmlyc3ROYW1lID0gJ0Vkc2dlcic7XG4gICAgcGVyc29uLmxhc3ROYW1lID0gJ0RpamtzdHJhJztcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSxcbiAgICAgIGZhbHNlLFxuICAgICAgJ3RhZyBpcyBpbnZhbGlkYXRlZCBhZnRlciBuZXN0ZWQgZGVwZW5kZW5jeSBpcyBzZXQnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGVyc29uLmZ1bGxOYW1lLCAnRWRzZ2VyIERpamtzdHJhJyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9iai5jb250YWN0LCAnRWRzZ2VyIERpamtzdHJhIEAgdG9tQGV4YW1wbGUuY29tJyk7XG5cbiAgICBzbmFwc2hvdCA9IHZhbHVlRm9yVGFnKHRhZyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbGlkYXRlVGFnKHRhZywgc25hcHNob3QpLCB0cnVlKTtcblxuICAgIHBlcnNvbi5mdWxsTmFtZSA9ICdBbGFuIEtheSc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgY2hhaW5lZCBkZXBlbmRlbmN5IGlzIHNldCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24uZnVsbE5hbWUsICdBbGFuIEtheScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24uZmlyc3ROYW1lLCAnQWxhbicpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24ubGFzdE5hbWUsICdLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmNvbnRhY3QsICdBbGFuIEtheSBAIHRvbUBleGFtcGxlLmNvbScpO1xuXG4gICAgc25hcHNob3QgPSB2YWx1ZUZvclRhZyh0YWcpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWxpZGF0ZVRhZyh0YWcsIHNuYXBzaG90KSwgdHJ1ZSk7XG5cbiAgICBvYmouZW1haWwgPSAnYWxhbkBleGFtcGxlLmNvbSc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgdmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksXG4gICAgICBmYWxzZSxcbiAgICAgICd0YWcgaXMgaW52YWxpZGF0ZWQgYWZ0ZXIgY2hhaW5lZCBkZXBlbmRlbmN5IGlzIHNldCdcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24uZnVsbE5hbWUsICdBbGFuIEtheScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24uZmlyc3ROYW1lLCAnQWxhbicpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChwZXJzb24ubGFzdE5hbWUsICdLYXknKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwob2JqLmNvbnRhY3QsICdBbGFuIEtheSBAIGFsYW5AZXhhbXBsZS5jb20nKTtcblxuICAgIHNuYXBzaG90ID0gdmFsdWVGb3JUYWcodGFnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsaWRhdGVUYWcodGFnLCBzbmFwc2hvdCksIHRydWUpO1xuXG4gICAgYXNzZXJ0VmFsaWRBZnRlclVucmVsYXRlZEJ1bXAodGFnLCBzbmFwc2hvdCk7XG4gIH0pO1xuXG4gIGlmIChERUJVRykge1xuICAgIHRlc3QoJ1RyYWNrZWQgZGVjb3JhdG9yIHdpdGggYSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yJywgKGFzc2VydCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cyhGLmNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRHZXR0ZXIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnVHJhY2tlZCBkZWNvcmF0b3Igd2l0aCBhIHNldHRlciB0aHJvd3MgYW4gZXJyb3InLCAoYXNzZXJ0KSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKEYuY3JlYXRlQ2xhc3NXaXRoVHJhY2tlZFNldHRlcik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdUcmFja2VkIGRlY29yYXRvciB3aXRoIGFyZ3VtZW50cyB0aHJvd3MgYW4gZXJyb3InLCBmdW5jdGlvbiAoYXNzZXJ0KSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICBGLmNyZWF0ZUNsYXNzV2l0aFRyYWNrZWREZXBlbmRlbnRLZXlzLFxuICAgICAgICAvQHRyYWNrZWRcXCgnZmlyc3ROYW1lJywgJ2xhc3ROYW1lJ1xcKS8sXG4gICAgICAgICd0aGUgY29ycmVjdCBlcnJvciBpcyB0aHJvd24nXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnVXNpbmcgQHRyYWNrZWQgYXMgYSBkZWNvcmF0b3IgZmFjdG9yeSB0aHJvd3MgYW4gZXJyb3InLCBmdW5jdGlvbiAoYXNzZXJ0KSB7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICBGLmNyZWF0ZUNsYXNzV2l0aFRyYWNrZWRBc0RlY29yYXRvckZhY3RvcnksXG4gICAgICAgIC9AdHJhY2tlZFxcKFxcKS8sXG4gICAgICAgICdUaGUgY29ycmVjdCBlcnJvciBpcyB0aHJvd24nXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { cached } from './src/cached';
|
|
2
|
+
export { tracked } from './src/tracked';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci90cmFja2luZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBjYWNoZWQgfSBmcm9tICcuL3NyYy9jYWNoZWQnO1xuZXhwb3J0IHsgdHJhY2tlZCB9IGZyb20gJy4vc3JjL3RyYWNrZWQnO1xuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @decorator
|
|
3
|
+
*
|
|
4
|
+
* The `@cached` decorator can be used on getters in order to cache the return
|
|
5
|
+
* value of the getter. This is useful when a getter is expensive and used very
|
|
6
|
+
* often.
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* in this guest list class, we have the `sortedGuests`
|
|
12
|
+
* getter that sorts the guests alphabetically:
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* import { tracked } from '@norith/glimmer-tracking';
|
|
16
|
+
*
|
|
17
|
+
* class GuestList {
|
|
18
|
+
* @tracked guests = ['Zoey', 'Tomster'];
|
|
19
|
+
*
|
|
20
|
+
* get sortedGuests() {
|
|
21
|
+
* return this.guests.slice().sort()
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* Every time `sortedGuests` is accessed, a new array will be created and sorted,
|
|
27
|
+
* because JavaScript getters do not cache by default. When the guest list is
|
|
28
|
+
* small, like the one in the example, this is not a problem. However, if the guest
|
|
29
|
+
* list were to grow very large, it would mean that we would be doing a large
|
|
30
|
+
* amount of work each time we accessed `sortedGetters`. With `@cached`, we can
|
|
31
|
+
* cache the value instead:
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* import { tracked, cached } from '@norith/glimmer-tracking';
|
|
35
|
+
*
|
|
36
|
+
* class GuestList {
|
|
37
|
+
* @tracked guests = ['Zoey', 'Tomster'];
|
|
38
|
+
*
|
|
39
|
+
* @cached
|
|
40
|
+
* get sortedGuests() {
|
|
41
|
+
* return this.guests.slice().sort()
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* Now the `sortedGuests` getter will be cached based on _autotracking_. It will
|
|
47
|
+
* only rerun and create a new sorted array when the `guests` tracked property is
|
|
48
|
+
* updated.
|
|
49
|
+
*
|
|
50
|
+
* In general, you should avoid using `@cached` unless you have confirmed that the
|
|
51
|
+
* getter you are decorating is computationally expensive. `@cached` adds a small
|
|
52
|
+
* amount of overhead to the getter, making it more expensive. While this overhead
|
|
53
|
+
* is small, if `@cached` is overused it can add up to a large impact overall in
|
|
54
|
+
* your app. Many getters and tracked properties are only accessed once, rendered,
|
|
55
|
+
* and then never rerendered, so adding `@cached` when it is unnecessary can
|
|
56
|
+
* negatively impact performance.
|
|
57
|
+
*/
|
|
58
|
+
export declare const cached: PropertyDecorator;
|