@activejs/core
Version:
Pragmatic, Reactive State Management for JavaScript Apps
40 lines • 6.87 kB
JavaScript
import { Base } from '../lib/abstract-base';
import { isDict, isSerializable, NOOP } from '../utils/funcs';
import { logWarn } from '../utils/logger';
export function checkAsyncSystemConfig(config) {
if (config) {
if (config.clearDataOnError === true && config.clearDataOnQuery === true) {
return logWarn(`When "clearDataOnQuery" is set to true,
"clearDataOnError" stops working, as only one of them can work at a time\n
Consider only setting one at a time.`);
}
if (config.clearErrorOnData === true && config.clearErrorOnQuery === true) {
return logWarn(`When "clearErrorOnQuery" is set to true,
"clearErrorOnData" stops working, as only one of them can work at a time\n
Consider only setting one at a time.`);
}
}
return NOOP;
}
export function checkSerializability(o) {
const [serializable, nonSerializableVal] = isSerializable(o);
if (serializable === false) {
throw new TypeError(`Non-serializable value ${String(nonSerializableVal)} of type ${nonSerializableVal.constructor.name}:${typeof nonSerializableVal} detected by "checkSerializability" check. Consider a serializable alternative.`);
}
}
export function checkClusterItems(items) {
if (!isDict(items) || !Object.values(items).some(item => item instanceof Base)) {
throw new TypeError(`No ActiveJS construct provided; expected at least one Unit, System, Action or Cluster; got ${String(items)}`);
}
}
export function checkPath(path) {
if (!path.length) {
throw new TypeError(`Expected at least one key`);
}
const invalidKeyIndex = path.findIndex(key => typeof key !== 'string' && typeof key !== 'number');
if (invalidKeyIndex > -1) {
const invalidKey = path[invalidKeyIndex];
throw new TypeError(`Expected numbers and strings, but got ${invalidKey} of type ${typeof invalidKey}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL2FjdGl2ZWpzL2FjdGl2ZWpzL3BhY2thZ2VzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsiY2hlY2tzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUMsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXhDLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUF3QztJQUM3RSxJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBQ3hFLE9BQU8sT0FBTyxDQUFDOztxQ0FFZ0IsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7WUFDekUsT0FBTyxPQUFPLENBQUM7O3FDQUVnQixDQUFDLENBQUM7U0FDbEM7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBSSxDQUFJO0lBQzFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsSUFBSSxZQUFZLEtBQUssS0FBSyxFQUFFO1FBQzFCLE1BQU0sSUFBSSxTQUFTLENBQ2pCLDBCQUEwQixNQUFNLENBQUMsa0JBQWtCLENBQUMsWUFDbEQsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQ2pDLElBQUksT0FBTyxrQkFBa0IsaUZBQWlGLENBQy9HLENBQUM7S0FDSDtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBbUI7SUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFO1FBQzlFLE1BQU0sSUFBSSxTQUFTLENBQ2pCLDhGQUE4RixNQUFNLENBQ2xHLEtBQUssQ0FDTixFQUFFLENBQ0osQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBeUI7SUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEIsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBQ2xEO0lBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNsRyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLFNBQVMsQ0FDakIseUNBQXlDLFVBQVUsWUFBWSxPQUFPLFVBQVUsRUFBRSxDQUNuRixDQUFDO0tBQ0g7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1N5c3RlbUNvbmZpZywgQ2x1c3Rlckl0ZW1zfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtCYXNlfSBmcm9tICcuLi9saWIvYWJzdHJhY3QtYmFzZSc7XG5pbXBvcnQge2lzRGljdCwgaXNTZXJpYWxpemFibGUsIE5PT1B9IGZyb20gJy4uL3V0aWxzL2Z1bmNzJztcbmltcG9ydCB7bG9nV2Fybn0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXN5bmNTeXN0ZW1Db25maWcoY29uZmlnOiBBc3luY1N5c3RlbUNvbmZpZzxhbnksIGFueSwgYW55Pik6ICgpID0+IHZvaWQge1xuICBpZiAoY29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZy5jbGVhckRhdGFPbkVycm9yID09PSB0cnVlICYmIGNvbmZpZy5jbGVhckRhdGFPblF1ZXJ5ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gbG9nV2FybihgV2hlbiBcImNsZWFyRGF0YU9uUXVlcnlcIiBpcyBzZXQgdG8gdHJ1ZSxcblwiY2xlYXJEYXRhT25FcnJvclwiIHN0b3BzIHdvcmtpbmcsIGFzIG9ubHkgb25lIG9mIHRoZW0gY2FuIHdvcmsgYXQgYSB0aW1lXFxuXG5Db25zaWRlciBvbmx5IHNldHRpbmcgb25lIGF0IGEgdGltZS5gKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5jbGVhckVycm9yT25EYXRhID09PSB0cnVlICYmIGNvbmZpZy5jbGVhckVycm9yT25RdWVyeSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIGxvZ1dhcm4oYFdoZW4gXCJjbGVhckVycm9yT25RdWVyeVwiIGlzIHNldCB0byB0cnVlLFxuXCJjbGVhckVycm9yT25EYXRhXCIgc3RvcHMgd29ya2luZywgYXMgb25seSBvbmUgb2YgdGhlbSBjYW4gd29yayBhdCBhIHRpbWVcXG5cbkNvbnNpZGVyIG9ubHkgc2V0dGluZyBvbmUgYXQgYSB0aW1lLmApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTk9PUDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrU2VyaWFsaXphYmlsaXR5PFQ+KG86IFQpOiB2b2lkIHtcbiAgY29uc3QgW3NlcmlhbGl6YWJsZSwgbm9uU2VyaWFsaXphYmxlVmFsXSA9IGlzU2VyaWFsaXphYmxlKG8pO1xuICBpZiAoc2VyaWFsaXphYmxlID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgTm9uLXNlcmlhbGl6YWJsZSB2YWx1ZSAke1N0cmluZyhub25TZXJpYWxpemFibGVWYWwpfSBvZiB0eXBlICR7XG4gICAgICAgIG5vblNlcmlhbGl6YWJsZVZhbC5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgICB9OiR7dHlwZW9mIG5vblNlcmlhbGl6YWJsZVZhbH0gZGV0ZWN0ZWQgYnkgXCJjaGVja1NlcmlhbGl6YWJpbGl0eVwiIGNoZWNrLiBDb25zaWRlciBhIHNlcmlhbGl6YWJsZSBhbHRlcm5hdGl2ZS5gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDbHVzdGVySXRlbXMoaXRlbXM6IENsdXN0ZXJJdGVtcyk6IHZvaWQge1xuICBpZiAoIWlzRGljdChpdGVtcykgfHwgIU9iamVjdC52YWx1ZXMoaXRlbXMpLnNvbWUoaXRlbSA9PiBpdGVtIGluc3RhbmNlb2YgQmFzZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYE5vIEFjdGl2ZUpTIGNvbnN0cnVjdCBwcm92aWRlZDsgZXhwZWN0ZWQgYXQgbGVhc3Qgb25lIFVuaXQsIFN5c3RlbSwgQWN0aW9uIG9yIENsdXN0ZXI7IGdvdCAke1N0cmluZyhcbiAgICAgICAgaXRlbXNcbiAgICAgICl9YFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGF0aChwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogdm9pZCB7XG4gIGlmICghcGF0aC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCBvbmUga2V5YCk7XG4gIH1cbiAgY29uc3QgaW52YWxpZEtleUluZGV4ID0gcGF0aC5maW5kSW5kZXgoa2V5ID0+IHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBrZXkgIT09ICdudW1iZXInKTtcbiAgaWYgKGludmFsaWRLZXlJbmRleCA+IC0xKSB7XG4gICAgY29uc3QgaW52YWxpZEtleSA9IHBhdGhbaW52YWxpZEtleUluZGV4XTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYEV4cGVjdGVkIG51bWJlcnMgYW5kIHN0cmluZ3MsIGJ1dCBnb3QgJHtpbnZhbGlkS2V5fSBvZiB0eXBlICR7dHlwZW9mIGludmFsaWRLZXl9YFxuICAgICk7XG4gIH1cbn1cbiJdfQ==