pinia-orm
Version:
The Pinia plugin to enable Object-Relational Mapping access to the Pinia Store.
44 lines (41 loc) • 1.56 kB
JavaScript
import { t as throwError } from './pinia-orm.pROBaphR.mjs';
Symbol.metadata ??= Symbol.for("Symbol.metadata");
const FIELDS = Symbol.for("pinia-orm:fields");
const MUTATORS = Symbol.for("pinia-orm:mutators");
const CASTS = Symbol.for("pinia-orm:casts");
const HIDDEN = Symbol.for("pinia-orm:hidden");
const FIELDS_ON_DELETE = Symbol.for("pinia-orm:fieldsOnDelete");
function ownMetadataRecord(metadata, key) {
if (!Object.prototype.hasOwnProperty.call(metadata, key)) {
metadata[key] = { ...metadata[key] ?? {} };
}
return metadata[key];
}
function assertFieldContext(context) {
if (!context || typeof context !== "object" || context.kind !== "field") {
throwError([
"Decorators require the standard ECMAScript decorator semantics.",
'Please remove "experimentalDecorators" from your tsconfig and use TypeScript >= 5.2.'
]);
}
}
function keepHydratedValue(context) {
return function(_initialValue) {
return this[context.name];
};
}
function createFieldDecorator(factory) {
return (_value, context) => {
assertFieldContext(context);
ownMetadataRecord(context.metadata, FIELDS)[String(context.name)] = factory;
return keepHydratedValue(context);
};
}
function createRegistrationDecorator(register) {
return (_value, context) => {
assertFieldContext(context);
register(context);
return keepHydratedValue(context);
};
}
export { CASTS as C, FIELDS_ON_DELETE as F, HIDDEN as H, MUTATORS as M, createRegistrationDecorator as a, FIELDS as b, createFieldDecorator as c, ownMetadataRecord as o };