Repository URL to install this package:
|
Version:
1.1.21 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.looseyType = exports.toMobMap = exports.toMobLate = exports.toMobIdentity = exports.toMobSet = exports.toMobDate = exports.toMobFrozen = exports.toMobNumber = exports.toMobBoolean = exports.toMobString = exports.toMobArrayModel = exports.toMobModel = exports.toMobArray = exports.toMobArrayOfAny = exports.reference = exports.enumeration = exports.literal = exports.refinement = exports.union = exports.compose = exports.model = exports.maybe = exports.optional = exports.late = exports.frozen = exports.identifier = exports.boolean = exports.array = exports.string = exports.number = exports.date = exports.nil = exports.any = void 0;
var _mobxStateTree = require("xmobx/mobx-state-tree");
var _exotic = require("../exotic");
require("../thisless/statetree");
// import { Typed } from 'modules/modeler'
// import { forOwn, uniq } from 'chain'
const boolean = _mobxStateTree.types.boolean,
number = _mobxStateTree.types.number,
string = _mobxStateTree.types.string,
array = _mobxStateTree.types.array,
map = _mobxStateTree.types.map,
model = _mobxStateTree.types.model;
exports.model = model;
exports.array = array;
exports.string = string;
exports.number = number;
exports.boolean = boolean;
const identifier = _mobxStateTree.types.identifier,
frozen = _mobxStateTree.types.frozen;
exports.frozen = frozen;
exports.identifier = identifier;
const optional = _mobxStateTree.types.optional,
maybe = _mobxStateTree.types.maybe;
exports.maybe = maybe;
exports.optional = optional;
const late = _mobxStateTree.types.late,
reference = _mobxStateTree.types.reference;
exports.reference = reference;
exports.late = late;
const compose = _mobxStateTree.types.compose,
union = _mobxStateTree.types.union,
refinement = _mobxStateTree.types.refinement,
literal = _mobxStateTree.types.literal,
enumeration = _mobxStateTree.types.enumeration;
exports.enumeration = enumeration;
exports.literal = literal;
exports.refinement = refinement;
exports.union = union;
exports.compose = compose;
const date = _mobxStateTree.types.Date; // .named('nil')
exports.date = date;
const nil = union(_mobxStateTree.types.null, _mobxStateTree.types.undefined);
exports.nil = nil;
const any = union(_mobxStateTree.types.boolean, _mobxStateTree.types.number, _mobxStateTree.types.string);
exports.any = any;
const isAny = x => (0, _exotic.isPrimitive)(x);
const looseyType = {
name: 'primitiveloosey',
// flags: TypeFlags
is: isAny,
// thing: any, context: IContext): IValidationResult
validate: isAny,
// create(snapshot?: S, environment?: any): T
isType: true,
describe: 'better' // Type: T
// SnapshotType: S
// Internal api's
// instantiate(parent: Node | null, subpath: string, environment: any, initialValue?: any): Node
// reconcile(current: Node, newValue: any): Node
// getValue(node: Node): T
// getSnapshot(node: Node): S
// applySnapshot(node: Node, snapshot: S): void
// applyPatchLocally(node: Node, subpath: string, patch: IJsonPatch): void
// getChildren(node: Node): Node[]
// getChildNode(node: Node, key: string): Node
// getChildType(key: string): IType<any, any>
// removeChild(node: Node, subpath: string): void
// isAssignableFrom(type: IType<any, any>): boolean
};
exports.looseyType = looseyType;
const loosy = union(string, number, boolean);
const stateString = refinement(loosy, x => (0, _exotic.isString)(x) || true);
const stateNumber = refinement(loosy, x => (0, _exotic.isNumberish)(x) || true);
const stateBoolean = refinement(loosy, x => (0, _exotic.isBoolean)(x) || true); // const stateIdentity = types.refinement(types.identity, isId)
// const stateSymbol = types.refinement
// const stateArray = types.refinement(types.array, isArrayLike)
// https://github.com/mobxjs/mobx-state-tree/blob/master/API.md#typesrefinement
// @TODO shoulduse reference type, and start bottom up?
const toMobModel = (x, name) => name ? model().named(name).props(x) : model().props(x);
exports.toMobModel = toMobModel;
const toMobArray = x => maybe(array(maybe(x)));
exports.toMobArray = toMobArray;
const toMobArrayModel = (x, name) => toMobArray(toMobModel(x, name));
exports.toMobArrayModel = toMobArrayModel;
const toMobString = x => optional(stateString, () => x);
exports.toMobString = toMobString;
const toMobBoolean = x => optional(stateBoolean, () => x);
exports.toMobBoolean = toMobBoolean;
const toMobNumber = x => optional(stateNumber, () => x);
exports.toMobNumber = toMobNumber;
const toMobFrozen = x => frozen; // (x)
exports.toMobFrozen = toMobFrozen;
const toMobDate = x => date(x);
exports.toMobDate = toMobDate;
const toMobSet = (x, name) => set(x).named(name);
exports.toMobSet = toMobSet;
const toMobIdentity = x => identifier(x);
exports.toMobIdentity = toMobIdentity;
const toMobMap = _toMobx => (x, name) => {
const keys = Array.from(x.keys());
const obj = x.get(keys[0]);
const objSchema = _toMobx(obj, name);
return map(objSchema);
};
exports.toMobMap = toMobMap;
const toMobLate = x => late(x); // @UGH annoying thing forgot how I overcame this in the state-tree, some kind of refinement
// annoying thing
exports.toMobLate = toMobLate;
const toMobArrayOfAny = (x, name = undefined) => {
// const arrayOfX = types.array(x)
// const maybeArrayOfX = types.compose(types.reference(arrayOfX), emptyArrayType)
const valueX = _mobxStateTree.types.union(x, any // types.literal([])
);
const maybeArrayOfX = array(optional(maybe(valueX), undefined));
return maybeArrayOfX;
};
exports.toMobArrayOfAny = toMobArrayOfAny;