UNPKG

chain-able

Version:

interfaces that describe their intentions.

82 lines (79 loc) 5.69 kB
// @TODO could also just have files for .set .has .get .delete .clear... // @TODO: // just pass in as first param! // var SET = 1 // var GET = 2 // var HAS = 4 // var DELETE = 8 // const isSet = require('../is/set') // const ArrayFrom = require('../util/from') // const isUndefined = require('../is/undefined') // const concat = require('../concat') // const toarr = require('../to-arr') // // const store = {} // // const ensureInitialized = (name, value, mapOrSet) => { // if (isUndefined(store[name])) store[name] = new Map() // } // // const has = (key, prop) => { // return isUndefined(prop) ? !!store[key].size : store[key].has(prop) // } // // const get = (key, prop, fallback = []) => { // return has(key, prop) ? store[key].get(prop) : fallback // } // // const set = (key, prop, value) => { // const storage = store[key] // // when it's a set, we have no `prop`, we just have .add // // so `prop = value` && `value = undefined` // if (isSet(storage)) { // storage.add(prop) // } // else { // const existing = storage.get(prop) // const val = concat(existing, value) // storage.set(prop, val) // } // } // const cache = (key, prop, value) => { // /* prettier-ignore */ // if (isUndefined(value)) { // // when we want to just access the property, return an array // // @example `.meta('transformers')` // if (isUndefined(prop)) { // if (isUndefined(store[key])) return [] // else return store[key].size === 0 ? [] : ArrayFrom(store[key]) // } // // we have `key, prop` // // // // 1: should `prop` be a value, (isSet?) // else if (isInKeyMapAsSet(key)) { // ensureInitialized(key) // set(key, prop) // } // // 2: prop is a key, we want to return the [..] for that specific property // // @example `.meta('transformers', 'eh')` // else if (isUndefined(store[key])) return [] // else return toarr(get(key, prop)) // } // // we have `key, prop, value` // else { // ensureInitialized(key) // // we have a value, let's add it // set(key, prop, value) // } // } // // const scoped = cache('segments', {default: []}) // // // has/get // if (scoped('key')) { // // todo eh // } // // // set // scoped('key', 'value') //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVkLmpzIiwic291cmNlcyI6WyJzY29wZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQFRPRE8gY291bGQgYWxzbyBqdXN0IGhhdmUgZmlsZXMgZm9yIC5zZXQgLmhhcyAuZ2V0IC5kZWxldGUgLmNsZWFyLi4uXG5cbi8vIEBUT0RPOlxuLy8ganVzdCBwYXNzIGluIGFzIGZpcnN0IHBhcmFtIVxuLy8gdmFyIFNFVCA9IDFcbi8vIHZhciBHRVQgPSAyXG4vLyB2YXIgSEFTID0gNFxuLy8gdmFyIERFTEVURSA9IDhcblxuLy8gY29uc3QgaXNTZXQgPSByZXF1aXJlKCcuLi9pcy9zZXQnKVxuLy8gY29uc3QgQXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vdXRpbC9mcm9tJylcbi8vIGNvbnN0IGlzVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaXMvdW5kZWZpbmVkJylcbi8vIGNvbnN0IGNvbmNhdCA9IHJlcXVpcmUoJy4uL2NvbmNhdCcpXG4vLyBjb25zdCB0b2FyciA9IHJlcXVpcmUoJy4uL3RvLWFycicpXG4vL1xuLy8gY29uc3Qgc3RvcmUgPSB7fVxuLy9cbi8vIGNvbnN0IGVuc3VyZUluaXRpYWxpemVkID0gKG5hbWUsIHZhbHVlLCBtYXBPclNldCkgPT4ge1xuLy8gICBpZiAoaXNVbmRlZmluZWQoc3RvcmVbbmFtZV0pKSBzdG9yZVtuYW1lXSA9IG5ldyBNYXAoKVxuLy8gfVxuLy9cbi8vIGNvbnN0IGhhcyA9IChrZXksIHByb3ApID0+IHtcbi8vICAgcmV0dXJuIGlzVW5kZWZpbmVkKHByb3ApID8gISFzdG9yZVtrZXldLnNpemUgOiBzdG9yZVtrZXldLmhhcyhwcm9wKVxuLy8gfVxuLy9cbi8vIGNvbnN0IGdldCA9IChrZXksIHByb3AsIGZhbGxiYWNrID0gW10pID0+IHtcbi8vICAgcmV0dXJuIGhhcyhrZXksIHByb3ApID8gc3RvcmVba2V5XS5nZXQocHJvcCkgOiBmYWxsYmFja1xuLy8gfVxuLy9cbi8vIGNvbnN0IHNldCA9IChrZXksIHByb3AsIHZhbHVlKSA9PiB7XG4vLyAgIGNvbnN0IHN0b3JhZ2UgPSBzdG9yZVtrZXldXG4vLyAgIC8vIHdoZW4gaXQncyBhIHNldCwgd2UgaGF2ZSBubyBgcHJvcGAsIHdlIGp1c3QgaGF2ZSAuYWRkXG4vLyAgIC8vIHNvIGBwcm9wID0gdmFsdWVgICYmIGB2YWx1ZSA9IHVuZGVmaW5lZGBcbi8vICAgaWYgKGlzU2V0KHN0b3JhZ2UpKSB7XG4vLyAgICAgc3RvcmFnZS5hZGQocHJvcClcbi8vICAgfVxuLy8gICBlbHNlIHtcbi8vICAgICBjb25zdCBleGlzdGluZyA9IHN0b3JhZ2UuZ2V0KHByb3ApXG4vLyAgICAgY29uc3QgdmFsID0gY29uY2F0KGV4aXN0aW5nLCB2YWx1ZSlcbi8vICAgICBzdG9yYWdlLnNldChwcm9wLCB2YWwpXG4vLyAgIH1cbi8vIH1cbi8vIGNvbnN0IGNhY2hlID0gKGtleSwgcHJvcCwgdmFsdWUpID0+IHtcbi8vICAgLyogcHJldHRpZXItaWdub3JlICovXG4vLyAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbi8vICAgICAvLyB3aGVuIHdlIHdhbnQgdG8ganVzdCBhY2Nlc3MgdGhlIHByb3BlcnR5LCByZXR1cm4gYW4gYXJyYXlcbi8vICAgICAvLyBAZXhhbXBsZSBgLm1ldGEoJ3RyYW5zZm9ybWVycycpYFxuLy8gICAgIGlmIChpc1VuZGVmaW5lZChwcm9wKSkge1xuLy8gICAgICAgaWYgKGlzVW5kZWZpbmVkKHN0b3JlW2tleV0pKSByZXR1cm4gW11cbi8vICAgICAgIGVsc2UgcmV0dXJuIHN0b3JlW2tleV0uc2l6ZSA9PT0gMCA/IFtdIDogQXJyYXlGcm9tKHN0b3JlW2tleV0pXG4vLyAgICAgfVxuLy8gICAgIC8vIHdlIGhhdmUgYGtleSwgcHJvcGBcbi8vICAgICAvL1xuLy8gICAgIC8vIDE6IHNob3VsZCBgcHJvcGAgYmUgYSB2YWx1ZSwgKGlzU2V0Pylcbi8vICAgICBlbHNlIGlmIChpc0luS2V5TWFwQXNTZXQoa2V5KSkge1xuLy8gICAgICAgZW5zdXJlSW5pdGlhbGl6ZWQoa2V5KVxuLy8gICAgICAgc2V0KGtleSwgcHJvcClcbi8vICAgICB9XG4vLyAgICAgLy8gMjogcHJvcCBpcyBhIGtleSwgd2Ugd2FudCB0byByZXR1cm4gdGhlIFsuLl0gZm9yIHRoYXQgc3BlY2lmaWMgcHJvcGVydHlcbi8vICAgICAvLyBAZXhhbXBsZSBgLm1ldGEoJ3RyYW5zZm9ybWVycycsICdlaCcpYFxuLy8gICAgIGVsc2UgaWYgKGlzVW5kZWZpbmVkKHN0b3JlW2tleV0pKSByZXR1cm4gW11cbi8vICAgICBlbHNlIHJldHVybiB0b2FycihnZXQoa2V5LCBwcm9wKSlcbi8vICAgfVxuLy8gICAvLyB3ZSBoYXZlIGBrZXksIHByb3AsIHZhbHVlYFxuLy8gICBlbHNlIHtcbi8vICAgICBlbnN1cmVJbml0aWFsaXplZChrZXkpXG4vLyAgICAgLy8gd2UgaGF2ZSBhIHZhbHVlLCBsZXQncyBhZGQgaXRcbi8vICAgICBzZXQoa2V5LCBwcm9wLCB2YWx1ZSlcbi8vICAgfVxuLy8gfVxuLy9cbi8vIGNvbnN0IHNjb3BlZCA9IGNhY2hlKCdzZWdtZW50cycsIHtkZWZhdWx0OiBbXX0pXG4vL1xuLy8gLy8gaGFzL2dldFxuLy8gaWYgKHNjb3BlZCgna2V5JykpIHtcbi8vICAgLy8gdG9kbyBlaFxuLy8gfVxuLy9cbi8vIC8vIHNldFxuLy8gc2NvcGVkKCdrZXknLCAndmFsdWUnKVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==