Documentation / @warp-drive/core / reactive / CAUTION_MEGA_DANGER_ZONE_Extension
Interface: CAUTION_MEGA_DANGER_ZONE_Extension
Defined in: warp-drive-packages/core/src/reactive/-private/schema.ts:84
Extensions allow providing non-schema driven behaviors to ReactiveResources, ReactiveArrays, and ReactiveObjects.
This should only be used for temporary migration purposes to the new schema system when migrating from either Model or ModelFragments.
Properties
features
features:
| Function
| Record<string | symbol, unknown>;
Defined in: warp-drive-packages/core/src/reactive/-private/schema.ts:174
An object with iterable keys whose values are the getters or methods to expose on the object or array.
or
A constructable such as a Function or Class whose prototype will be iterated with getOwnPropertyNames.
Examples:
An Object with methods
store.schema.CAUTION_MEGA_DANGER_ZONE_registerExtension({
kind: 'object',
name: 'do-thing-1',
features: {
doThingOne(this: { street: string }) {
return `do-thing-1:${this.street}`;
},
doThingTwo(this: { street: string }) {
return `do-thing-1:${this.street}`;
},
},
});
A class with getters, methods and decorated fields
class Features {
sayHello() {
return 'hello!';
}
@tracked trackedField = 'initial tracked value';
get realName() {
const self = this as unknown as { name: string };
return self.name;
}
set realName(v: string) {
const self = this as unknown as { name: string };
self.name = v;
}
get greeting() {
const self = this as unknown as { name: string };
return `hello ${self.name}!`;
}
@computed('name')
get salutation() {
const self = this as unknown as { name: string };
return `salutations ${self.name}!`;
}
@cached
get helloThere() {
const self = this as unknown as { name: string };
return `Well Hello There ${self.name}!`;
}
}
// non-decorated fields dont appear on class prototypes as they are instance only
// @ts-expect-error
Features.prototype.untrackedField = 'initial untracked value';
store.schema.CAUTION_MEGA_DANGER_ZONE_registerExtension({
kind: 'object',
name: 'my-ext',
features: Features,
});
kind
kind: "object" | "array";
Defined in: warp-drive-packages/core/src/reactive/-private/schema.ts:89
Whether this extension extends the behaviors of objects (both ReactiveObjects and ReactiveResources) or of arrays.
name
name: string;
Defined in: warp-drive-packages/core/src/reactive/-private/schema.ts:95
The name of the extension, to be used when specifying either objectExtensions
or arrayExtensions
on the field, ResourceSchema or ObjectSchema