UNPKG

pinia-orm

Version:

The Pinia plugin to enable Object-Relational Mapping access to the Pinia Store.

44 lines (41 loc) 1.56 kB
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 };