pinia-orm
Version:
The Pinia plugin to enable Object-Relational Mapping access to the Pinia Store.
38 lines (33 loc) • 1.08 kB
JavaScript
;
const nonSecure = require('nanoid/non-secure');
const CastAttribute = require('../shared/pinia-orm.DWjxIbAJ.cjs');
const Metadata = require('../shared/pinia-orm.uuzKYJ-M.cjs');
require('../shared/pinia-orm.DiWsQ6gA.cjs');
class UidCast extends CastAttribute.CastAttribute {
static parameters;
/**
* Create a new String attribute instance.
*/
constructor(attributes) {
super(attributes);
}
static withParameters(parameters) {
this.parameters = parameters;
return this;
}
/**
* Make the value for the attribute.
*/
set(value) {
const nanoid = this.$parameters?.alphabet ? nonSecure.customAlphabet(this.$parameters.alphabet) : nonSecure.nanoid;
return value ?? nanoid(this.$parameters?.size);
}
}
function Uid(options) {
return (_value, context) => {
Metadata.ownMetadataRecord(context.metadata, Metadata.CASTS)[String(context.name)] = UidCast.withParameters(options);
return Metadata.createFieldDecorator((model) => model.uid())(_value, context);
};
}
exports.Uid = Uid;
exports.UidCast = UidCast;