UNPKG

pinia-orm

Version:

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

53 lines (49 loc) 1.72 kB
'use strict'; const Utils = require('./pinia-orm.DiWsQ6gA.cjs'); 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") { Utils.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); }; } exports.CASTS = CASTS; exports.FIELDS = FIELDS; exports.FIELDS_ON_DELETE = FIELDS_ON_DELETE; exports.HIDDEN = HIDDEN; exports.MUTATORS = MUTATORS; exports.createFieldDecorator = createFieldDecorator; exports.createRegistrationDecorator = createRegistrationDecorator; exports.ownMetadataRecord = ownMetadataRecord;