lib0 0.2.60 → 0.2.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +46 -0
  2. package/array.d.ts +2 -0
  3. package/array.d.ts.map +1 -1
  4. package/array.js +36 -0
  5. package/array.test.d.ts +1 -0
  6. package/array.test.d.ts.map +1 -1
  7. package/broadcastchannel.d.ts.map +1 -1
  8. package/broadcastchannel.js +2 -1
  9. package/crypto.d.ts +22 -0
  10. package/crypto.d.ts.map +1 -0
  11. package/crypto.js +185 -0
  12. package/crypto.test.d.ts +6 -0
  13. package/crypto.test.d.ts.map +1 -0
  14. package/dist/{array-acefe0f2.cjs → array-42d0736b.cjs} +42 -2
  15. package/dist/array-42d0736b.cjs.map +1 -0
  16. package/dist/array.cjs +4 -1
  17. package/dist/array.cjs.map +1 -1
  18. package/dist/array.d.ts +2 -0
  19. package/dist/array.d.ts.map +1 -1
  20. package/dist/array.test.d.ts +1 -0
  21. package/dist/array.test.d.ts.map +1 -1
  22. package/dist/{broadcastchannel-02adb071.cjs → broadcastchannel-8d21c21c.cjs} +4 -3
  23. package/dist/broadcastchannel-8d21c21c.cjs.map +1 -0
  24. package/dist/broadcastchannel.cjs +6 -5
  25. package/dist/broadcastchannel.cjs.map +1 -1
  26. package/dist/broadcastchannel.d.ts.map +1 -1
  27. package/dist/{buffer-5ebf4ddb.cjs → buffer-22bb9fae.cjs} +2 -2
  28. package/dist/{buffer-5ebf4ddb.cjs.map → buffer-22bb9fae.cjs.map} +1 -1
  29. package/dist/buffer.cjs +5 -4
  30. package/dist/buffer.cjs.map +1 -1
  31. package/dist/cache.cjs +3 -2
  32. package/dist/cache.cjs.map +1 -1
  33. package/dist/component.cjs +4 -3
  34. package/dist/component.cjs.map +1 -1
  35. package/dist/crypto.cjs +231 -0
  36. package/dist/crypto.cjs.map +1 -0
  37. package/dist/crypto.d.ts +22 -0
  38. package/dist/crypto.d.ts.map +1 -0
  39. package/dist/crypto.test.d.ts +6 -0
  40. package/dist/crypto.test.d.ts.map +1 -0
  41. package/dist/decoding.cjs +5 -4
  42. package/dist/decoding.cjs.map +1 -1
  43. package/dist/{diff-85090e89.cjs → diff-ee50c530.cjs} +2 -2
  44. package/dist/{diff-85090e89.cjs.map → diff-ee50c530.cjs.map} +1 -1
  45. package/dist/diff.cjs +4 -3
  46. package/dist/diff.cjs.map +1 -1
  47. package/dist/encoding.cjs +5 -4
  48. package/dist/encoding.cjs.map +1 -1
  49. package/dist/{environment-9ecc1776.cjs → environment-f6386808.cjs} +2 -2
  50. package/dist/{environment-9ecc1776.cjs.map → environment-f6386808.cjs.map} +1 -1
  51. package/dist/environment.cjs +4 -3
  52. package/dist/environment.cjs.map +1 -1
  53. package/dist/{function-0da7a13f.cjs → function-40d38a5b.cjs} +2 -2
  54. package/dist/{function-0da7a13f.cjs.map → function-40d38a5b.cjs.map} +1 -1
  55. package/dist/function.cjs +3 -2
  56. package/dist/function.cjs.map +1 -1
  57. package/dist/index.cjs +9 -9
  58. package/dist/list.cjs +3 -2
  59. package/dist/list.cjs.map +1 -1
  60. package/dist/{logging-00ff6aaf.cjs → logging-ba24d049.cjs} +5 -4
  61. package/dist/logging-ba24d049.cjs.map +1 -0
  62. package/dist/logging.cjs +5 -4
  63. package/dist/logging.cjs.map +1 -1
  64. package/dist/logging.d.ts.map +1 -1
  65. package/dist/observable.cjs +1 -1
  66. package/dist/{prng-7e1c5b0a.cjs → prng-4493ba85.cjs} +2 -2
  67. package/dist/{prng-7e1c5b0a.cjs.map → prng-4493ba85.cjs.map} +1 -1
  68. package/dist/prng.cjs +6 -5
  69. package/dist/prng.cjs.map +1 -1
  70. package/dist/rollup.config.d.ts +1 -1
  71. package/dist/testing.cjs +25 -15
  72. package/dist/testing.cjs.map +1 -1
  73. package/dist/testing.d.ts +1 -0
  74. package/dist/testing.d.ts.map +1 -1
  75. package/dist/testing.test.d.ts +2 -2
  76. package/dist/testing.test.d.ts.map +1 -1
  77. package/dist/webcrypto.browser.cjs +12 -0
  78. package/dist/webcrypto.browser.cjs.map +1 -0
  79. package/dist/webcrypto.browser.d.ts +3 -0
  80. package/dist/webcrypto.browser.d.ts.map +1 -0
  81. package/dist/webcrypto.node.cjs +12 -0
  82. package/dist/webcrypto.node.cjs.map +1 -0
  83. package/dist/webcrypto.node.d.ts +3 -0
  84. package/dist/webcrypto.node.d.ts.map +1 -0
  85. package/dist/{websocket-57086be8.cjs → websocket-a48155c2.cjs} +1 -1
  86. package/dist/{websocket-57086be8.cjs.map → websocket-a48155c2.cjs.map} +1 -1
  87. package/dist/websocket.cjs +2 -2
  88. package/logging.d.ts.map +1 -1
  89. package/logging.js +2 -1
  90. package/package.json +19 -1
  91. package/rollup.config.d.ts +1 -1
  92. package/test.js +2 -0
  93. package/testing.d.ts +1 -0
  94. package/testing.d.ts.map +1 -1
  95. package/testing.js +16 -8
  96. package/testing.test.d.ts +2 -2
  97. package/testing.test.d.ts.map +1 -1
  98. package/webcrypto.browser.d.ts +3 -0
  99. package/webcrypto.browser.d.ts.map +1 -0
  100. package/webcrypto.browser.js +4 -0
  101. package/webcrypto.node.d.ts +3 -0
  102. package/webcrypto.node.d.ts.map +1 -0
  103. package/webcrypto.node.js +5 -0
  104. package/dist/array-acefe0f2.cjs.map +0 -1
  105. package/dist/broadcastchannel-02adb071.cjs.map +0 -1
  106. package/dist/logging-00ff6aaf.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"component.cjs","sources":["../component.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Web components.\n *\n * @module component\n */\n\nimport * as dom from './dom.js'\nimport * as diff from './diff.js'\nimport * as object from './object.js'\nimport * as json from './json.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\nimport * as number from './number.js'\nimport * as func from './function.js'\n\n/**\n * @type {CustomElementRegistry}\n */\nexport const registry = customElements\n\n/**\n * @param {string} name\n * @param {any} constr\n * @param {ElementDefinitionOptions} [opts]\n */\nexport const define = (name, constr, opts) => registry.define(name, constr, opts)\n\n/**\n * @param {string} name\n * @return {Promise<CustomElementConstructor>}\n */\nexport const whenDefined = name => registry.whenDefined(name)\n\nconst upgradedEventName = 'upgraded'\nconst connectedEventName = 'connected'\nconst disconnectedEventName = 'disconnected'\n\n/**\n * @template S\n */\nexport class Lib0Component extends HTMLElement {\n /**\n * @param {S} [state]\n */\n constructor (state) {\n super()\n /**\n * @type {S|null}\n */\n this.state = /** @type {any} */ (state)\n /**\n * @type {any}\n */\n this._internal = {}\n }\n\n /**\n * @param {S} state\n * @param {boolean} [forceStateUpdate] Force that the state is rerendered even if state didn't change\n */\n setState (state, forceStateUpdate = true) {}\n /**\n * @param {any} stateUpdate\n */\n updateState (stateUpdate) { }\n}\n\n/**\n * @param {any} val\n * @param {\"json\"|\"string\"|\"number\"} type\n * @return {string}\n */\nconst encodeAttrVal = (val, type) => {\n if (type === 'json') {\n val = json.stringify(val)\n }\n return val + ''\n}\n\n/**\n * @param {any} val\n * @param {\"json\"|\"string\"|\"number\"|\"bool\"} type\n * @return {any}\n */\nconst parseAttrVal = (val, type) => {\n switch (type) {\n case 'json':\n return json.parse(val)\n case 'number':\n return Number.parseFloat(val)\n case 'string':\n return val\n case 'bool':\n return val != null\n default:\n return null\n }\n}\n\n/**\n * @typedef {Object} CONF\n * @property {string?} [CONF.template] Template for the shadow dom.\n * @property {string} [CONF.style] shadow dom style. Is only used when\n * `CONF.template` is defined\n * @property {S} [CONF.state] Initial component state.\n * @property {function(S,S|null,Lib0Component<S>):void} [CONF.onStateChange] Called when\n * the state changes.\n * @property {Object<string,function(any, any):Object>} [CONF.childStates] maps from\n * CSS-selector to transformer function. The first element that matches the\n * CSS-selector receives state updates via the transformer function.\n * @property {Object<string,\"json\"|\"number\"|\"string\"|\"bool\">} [CONF.attrs]\n * attrs-keys and state-keys should be camelCase, but the DOM uses kebap-case. I.e.\n * `attrs = { myAttr: 4 }` is represeted as `<my-elem my-attr=\"4\" />` in the DOM\n * @property {Object<string, function(CustomEvent, Lib0Component<any>):boolean|void>} [CONF.listeners] Maps from dom-event-name\n * to event listener.\n * @property {function(S, S, Lib0Component<S>):Object<string,string>} [CONF.slots] Fill slots\n * automatically when state changes. Maps from slot-name to slot-html.\n * @template S\n */\n\n/**\n * @template T\n * @param {string} name\n * @param {CONF<T>} cnf\n * @return {typeof Lib0Component}\n */\nexport const createComponent = (name, { template, style = '', state: defaultState, onStateChange = () => {}, childStates = { }, attrs = {}, listeners = {}, slots = () => ({}) }) => {\n /**\n * Maps from camelCase attribute name to kebap-case attribute name.\n * @type {Object<string,string>}\n */\n const normalizedAttrs = {}\n for (const key in attrs) {\n normalizedAttrs[string.fromCamelCase(key, '-')] = key\n }\n const templateElement = template ? /** @type {HTMLTemplateElement} */ (dom.parseElement(`\n <template>\n <style>${style}</style>\n ${template}\n </template>\n `)) : null\n\n class _Lib0Component extends HTMLElement {\n /**\n * @param {T} [state]\n */\n constructor (state) {\n super()\n /**\n * @type {Array<{d:Lib0Component<T>, s:function(any, any):Object}>}\n */\n this._childStates = []\n /**\n * @type {Object<string,string>}\n */\n this._slots = {}\n this._init = false\n /**\n * @type {any}\n */\n this._internal = {}\n /**\n * @type {any}\n */\n this.state = state || null\n this.connected = false\n // init shadow dom\n if (templateElement) {\n const shadow = /** @type {ShadowRoot} */ (this.attachShadow({ mode: 'open' }))\n shadow.appendChild(templateElement.content.cloneNode(true))\n // fill child states\n for (const key in childStates) {\n this._childStates.push({\n d: /** @type {Lib0Component<T>} */ (dom.querySelector(/** @type {any} */ (shadow), key)),\n s: childStates[key]\n })\n }\n }\n dom.emitCustomEvent(this, upgradedEventName, { bubbles: true })\n }\n\n connectedCallback () {\n this.connected = true\n if (!this._init) {\n this._init = true\n const shadow = this.shadowRoot\n if (shadow) {\n dom.addEventListener(shadow, upgradedEventName, event => {\n this.setState(this.state, true)\n event.stopPropagation()\n })\n }\n /**\n * @type {Object<string, any>}\n */\n const startState = this.state || object.assign({}, defaultState)\n if (attrs) {\n for (const key in attrs) {\n const normalizedKey = string.fromCamelCase(key, '-')\n const val = parseAttrVal(this.getAttribute(normalizedKey), attrs[key])\n if (val) {\n startState[key] = val\n }\n }\n }\n // add event listeners\n for (const key in listeners) {\n dom.addEventListener(shadow || this, key, event => {\n if (listeners[key](/** @type {CustomEvent} */ (event), this) !== false) {\n event.stopPropagation()\n event.preventDefault()\n return false\n }\n })\n }\n // first setState call\n this.state = null\n this.setState(startState)\n }\n dom.emitCustomEvent(/** @type {any} */ (this.shadowRoot || this), connectedEventName, { bubbles: true })\n }\n\n disconnectedCallback () {\n this.connected = false\n dom.emitCustomEvent(/** @type {any} */ (this.shadowRoot || this), disconnectedEventName, { bubbles: true })\n this.setState(null)\n }\n\n static get observedAttributes () {\n return object.keys(normalizedAttrs)\n }\n\n /**\n * @param {string} name\n * @param {string} oldVal\n * @param {string} newVal\n *\n * @private\n */\n attributeChangedCallback (name, oldVal, newVal) {\n const curState = /** @type {any} */ (this.state)\n const camelAttrName = normalizedAttrs[name]\n const type = attrs[camelAttrName]\n const parsedVal = parseAttrVal(newVal, type)\n if (curState && (type !== 'json' || json.stringify(curState[camelAttrName]) !== newVal) && curState[camelAttrName] !== parsedVal && !number.isNaN(parsedVal)) {\n this.updateState({ [camelAttrName]: parsedVal })\n }\n }\n\n /**\n * @param {any} stateUpdate\n */\n updateState (stateUpdate) {\n this.setState(object.assign({}, this.state, stateUpdate))\n }\n\n /**\n * @param {any} state\n */\n setState (state, forceStateUpdates = false) {\n const prevState = this.state\n this.state = state\n if (this._init && (!func.equalityFlat(state, prevState) || forceStateUpdates)) {\n // fill slots\n if (state) {\n const slotElems = slots(state, prevState, this)\n for (const key in slotElems) {\n const slotContent = slotElems[key]\n if (this._slots[key] !== slotContent) {\n this._slots[key] = slotContent\n const currentSlots = /** @type {Array<any>} */ (key !== 'default' ? array.from(dom.querySelectorAll(this, `[slot=\"${key}\"]`)) : array.from(this.childNodes).filter(/** @param {any} child */ child => !dom.checkNodeType(child, dom.ELEMENT_NODE) || !child.hasAttribute('slot')))\n currentSlots.slice(1).map(dom.remove)\n const nextSlot = dom.parseFragment(slotContent)\n if (key !== 'default') {\n array.from(nextSlot.children).forEach(c => c.setAttribute('slot', key))\n }\n if (currentSlots.length > 0) {\n dom.replaceWith(currentSlots[0], nextSlot)\n } else {\n dom.appendChild(this, nextSlot)\n }\n }\n }\n }\n onStateChange(state, prevState, this)\n if (state != null) {\n this._childStates.forEach(cnf => {\n const d = cnf.d\n if (d.updateState) {\n d.updateState(cnf.s(state, this))\n }\n })\n }\n for (const key in attrs) {\n const normalizedKey = string.fromCamelCase(key, '-')\n if (state == null) {\n this.removeAttribute(normalizedKey)\n } else {\n const stateVal = state[key]\n const attrsType = attrs[key]\n if (!prevState || prevState[key] !== stateVal) {\n if (attrsType === 'bool') {\n if (stateVal) {\n this.setAttribute(normalizedKey, '')\n } else {\n this.removeAttribute(normalizedKey)\n }\n } else if (stateVal == null && (attrsType === 'string' || attrsType === 'number')) {\n this.removeAttribute(normalizedKey)\n } else {\n this.setAttribute(normalizedKey, encodeAttrVal(stateVal, attrsType))\n }\n }\n }\n }\n }\n }\n }\n define(name, _Lib0Component)\n // @ts-ignore\n return _Lib0Component\n}\n\n/**\n * @param {function} definer function that defines a component when executed\n */\nexport const createComponentDefiner = definer => {\n /**\n * @type {any}\n */\n let defined = null\n return () => {\n if (!defined) {\n defined = definer()\n }\n return defined\n }\n}\n\nexport const defineListComponent = createComponentDefiner(() => {\n const ListItem = createComponent('lib0-list-item', {\n template: '<slot name=\"content\"></slot>',\n slots: state => ({\n content: `<div>${state}</div>`\n })\n })\n return createComponent('lib0-list', {\n state: { list: /** @type {Array<string>} */ ([]), Item: ListItem },\n onStateChange: (state, prevState, component) => {\n if (state == null) {\n return\n }\n const { list = /** @type {Array<any>} */ ([]), Item = ListItem } = state\n // @todo deep compare here by providing another parameter to simpleDiffArray\n let { index, remove, insert } = diff.simpleDiffArray(prevState ? prevState.list : [], list, func.equalityFlat)\n if (remove === 0 && insert.length === 0) {\n return\n }\n let child = /** @type {Lib0Component<any>} */ (component.firstChild)\n while (index-- > 0) {\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n }\n let insertStart = 0\n while (insertStart < insert.length && remove-- > 0) {\n // update existing state\n child.setState(insert[insertStart++])\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n }\n while (remove-- > 0) {\n // remove remaining\n const prevChild = child\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n component.removeChild(prevChild)\n }\n // insert remaining\n component.insertBefore(dom.fragment(insert.slice(insertStart).map(insState => {\n const el = new Item()\n el.setState(insState)\n return el\n })), child)\n }\n })\n})\n\nexport const defineLazyLoadingComponent = createComponentDefiner(() => createComponent('lib0-lazy', {\n state: /** @type {{component:null|String,import:null|function():Promise<any>,state:null|object}} */ ({\n component: null, import: null, state: null\n }),\n attrs: {\n component: 'string'\n },\n onStateChange: ({ component, state, import: getImport }, prevState, componentEl) => {\n if (component !== null) {\n if (getImport) {\n getImport()\n }\n if (!prevState || component !== prevState.component) {\n const el = /** @type {any} */ (dom.createElement(component))\n componentEl.innerHTML = ''\n componentEl.insertBefore(el, null)\n }\n const el = /** @type {any} */ (componentEl.firstElementChild)\n // @todo generalize setting state and check if setState is defined\n if (el.setState) {\n el.setState(state)\n }\n }\n }\n}))\n"],"names":["json.stringify","json.parse","string.fromCamelCase","dom.parseElement","dom.querySelector","dom.emitCustomEvent","dom.addEventListener","object.assign","object.keys","number.isNaN","func.equalityFlat","array.from","dom.querySelectorAll","dom.checkNodeType","dom.ELEMENT_NODE","dom.remove","dom.parseFragment","dom.replaceWith","dom.appendChild","diff.simpleDiffArray","dom.fragment","dom.createElement"],"mappings":"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"}
1
+ {"version":3,"file":"component.cjs","sources":["../component.js"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Web components.\n *\n * @module component\n */\n\nimport * as dom from './dom.js'\nimport * as diff from './diff.js'\nimport * as object from './object.js'\nimport * as json from './json.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\nimport * as number from './number.js'\nimport * as func from './function.js'\n\n/**\n * @type {CustomElementRegistry}\n */\nexport const registry = customElements\n\n/**\n * @param {string} name\n * @param {any} constr\n * @param {ElementDefinitionOptions} [opts]\n */\nexport const define = (name, constr, opts) => registry.define(name, constr, opts)\n\n/**\n * @param {string} name\n * @return {Promise<CustomElementConstructor>}\n */\nexport const whenDefined = name => registry.whenDefined(name)\n\nconst upgradedEventName = 'upgraded'\nconst connectedEventName = 'connected'\nconst disconnectedEventName = 'disconnected'\n\n/**\n * @template S\n */\nexport class Lib0Component extends HTMLElement {\n /**\n * @param {S} [state]\n */\n constructor (state) {\n super()\n /**\n * @type {S|null}\n */\n this.state = /** @type {any} */ (state)\n /**\n * @type {any}\n */\n this._internal = {}\n }\n\n /**\n * @param {S} state\n * @param {boolean} [forceStateUpdate] Force that the state is rerendered even if state didn't change\n */\n setState (state, forceStateUpdate = true) {}\n /**\n * @param {any} stateUpdate\n */\n updateState (stateUpdate) { }\n}\n\n/**\n * @param {any} val\n * @param {\"json\"|\"string\"|\"number\"} type\n * @return {string}\n */\nconst encodeAttrVal = (val, type) => {\n if (type === 'json') {\n val = json.stringify(val)\n }\n return val + ''\n}\n\n/**\n * @param {any} val\n * @param {\"json\"|\"string\"|\"number\"|\"bool\"} type\n * @return {any}\n */\nconst parseAttrVal = (val, type) => {\n switch (type) {\n case 'json':\n return json.parse(val)\n case 'number':\n return Number.parseFloat(val)\n case 'string':\n return val\n case 'bool':\n return val != null\n default:\n return null\n }\n}\n\n/**\n * @typedef {Object} CONF\n * @property {string?} [CONF.template] Template for the shadow dom.\n * @property {string} [CONF.style] shadow dom style. Is only used when\n * `CONF.template` is defined\n * @property {S} [CONF.state] Initial component state.\n * @property {function(S,S|null,Lib0Component<S>):void} [CONF.onStateChange] Called when\n * the state changes.\n * @property {Object<string,function(any, any):Object>} [CONF.childStates] maps from\n * CSS-selector to transformer function. The first element that matches the\n * CSS-selector receives state updates via the transformer function.\n * @property {Object<string,\"json\"|\"number\"|\"string\"|\"bool\">} [CONF.attrs]\n * attrs-keys and state-keys should be camelCase, but the DOM uses kebap-case. I.e.\n * `attrs = { myAttr: 4 }` is represeted as `<my-elem my-attr=\"4\" />` in the DOM\n * @property {Object<string, function(CustomEvent, Lib0Component<any>):boolean|void>} [CONF.listeners] Maps from dom-event-name\n * to event listener.\n * @property {function(S, S, Lib0Component<S>):Object<string,string>} [CONF.slots] Fill slots\n * automatically when state changes. Maps from slot-name to slot-html.\n * @template S\n */\n\n/**\n * @template T\n * @param {string} name\n * @param {CONF<T>} cnf\n * @return {typeof Lib0Component}\n */\nexport const createComponent = (name, { template, style = '', state: defaultState, onStateChange = () => {}, childStates = { }, attrs = {}, listeners = {}, slots = () => ({}) }) => {\n /**\n * Maps from camelCase attribute name to kebap-case attribute name.\n * @type {Object<string,string>}\n */\n const normalizedAttrs = {}\n for (const key in attrs) {\n normalizedAttrs[string.fromCamelCase(key, '-')] = key\n }\n const templateElement = template ? /** @type {HTMLTemplateElement} */ (dom.parseElement(`\n <template>\n <style>${style}</style>\n ${template}\n </template>\n `)) : null\n\n class _Lib0Component extends HTMLElement {\n /**\n * @param {T} [state]\n */\n constructor (state) {\n super()\n /**\n * @type {Array<{d:Lib0Component<T>, s:function(any, any):Object}>}\n */\n this._childStates = []\n /**\n * @type {Object<string,string>}\n */\n this._slots = {}\n this._init = false\n /**\n * @type {any}\n */\n this._internal = {}\n /**\n * @type {any}\n */\n this.state = state || null\n this.connected = false\n // init shadow dom\n if (templateElement) {\n const shadow = /** @type {ShadowRoot} */ (this.attachShadow({ mode: 'open' }))\n shadow.appendChild(templateElement.content.cloneNode(true))\n // fill child states\n for (const key in childStates) {\n this._childStates.push({\n d: /** @type {Lib0Component<T>} */ (dom.querySelector(/** @type {any} */ (shadow), key)),\n s: childStates[key]\n })\n }\n }\n dom.emitCustomEvent(this, upgradedEventName, { bubbles: true })\n }\n\n connectedCallback () {\n this.connected = true\n if (!this._init) {\n this._init = true\n const shadow = this.shadowRoot\n if (shadow) {\n dom.addEventListener(shadow, upgradedEventName, event => {\n this.setState(this.state, true)\n event.stopPropagation()\n })\n }\n /**\n * @type {Object<string, any>}\n */\n const startState = this.state || object.assign({}, defaultState)\n if (attrs) {\n for (const key in attrs) {\n const normalizedKey = string.fromCamelCase(key, '-')\n const val = parseAttrVal(this.getAttribute(normalizedKey), attrs[key])\n if (val) {\n startState[key] = val\n }\n }\n }\n // add event listeners\n for (const key in listeners) {\n dom.addEventListener(shadow || this, key, event => {\n if (listeners[key](/** @type {CustomEvent} */ (event), this) !== false) {\n event.stopPropagation()\n event.preventDefault()\n return false\n }\n })\n }\n // first setState call\n this.state = null\n this.setState(startState)\n }\n dom.emitCustomEvent(/** @type {any} */ (this.shadowRoot || this), connectedEventName, { bubbles: true })\n }\n\n disconnectedCallback () {\n this.connected = false\n dom.emitCustomEvent(/** @type {any} */ (this.shadowRoot || this), disconnectedEventName, { bubbles: true })\n this.setState(null)\n }\n\n static get observedAttributes () {\n return object.keys(normalizedAttrs)\n }\n\n /**\n * @param {string} name\n * @param {string} oldVal\n * @param {string} newVal\n *\n * @private\n */\n attributeChangedCallback (name, oldVal, newVal) {\n const curState = /** @type {any} */ (this.state)\n const camelAttrName = normalizedAttrs[name]\n const type = attrs[camelAttrName]\n const parsedVal = parseAttrVal(newVal, type)\n if (curState && (type !== 'json' || json.stringify(curState[camelAttrName]) !== newVal) && curState[camelAttrName] !== parsedVal && !number.isNaN(parsedVal)) {\n this.updateState({ [camelAttrName]: parsedVal })\n }\n }\n\n /**\n * @param {any} stateUpdate\n */\n updateState (stateUpdate) {\n this.setState(object.assign({}, this.state, stateUpdate))\n }\n\n /**\n * @param {any} state\n */\n setState (state, forceStateUpdates = false) {\n const prevState = this.state\n this.state = state\n if (this._init && (!func.equalityFlat(state, prevState) || forceStateUpdates)) {\n // fill slots\n if (state) {\n const slotElems = slots(state, prevState, this)\n for (const key in slotElems) {\n const slotContent = slotElems[key]\n if (this._slots[key] !== slotContent) {\n this._slots[key] = slotContent\n const currentSlots = /** @type {Array<any>} */ (key !== 'default' ? array.from(dom.querySelectorAll(this, `[slot=\"${key}\"]`)) : array.from(this.childNodes).filter(/** @param {any} child */ child => !dom.checkNodeType(child, dom.ELEMENT_NODE) || !child.hasAttribute('slot')))\n currentSlots.slice(1).map(dom.remove)\n const nextSlot = dom.parseFragment(slotContent)\n if (key !== 'default') {\n array.from(nextSlot.children).forEach(c => c.setAttribute('slot', key))\n }\n if (currentSlots.length > 0) {\n dom.replaceWith(currentSlots[0], nextSlot)\n } else {\n dom.appendChild(this, nextSlot)\n }\n }\n }\n }\n onStateChange(state, prevState, this)\n if (state != null) {\n this._childStates.forEach(cnf => {\n const d = cnf.d\n if (d.updateState) {\n d.updateState(cnf.s(state, this))\n }\n })\n }\n for (const key in attrs) {\n const normalizedKey = string.fromCamelCase(key, '-')\n if (state == null) {\n this.removeAttribute(normalizedKey)\n } else {\n const stateVal = state[key]\n const attrsType = attrs[key]\n if (!prevState || prevState[key] !== stateVal) {\n if (attrsType === 'bool') {\n if (stateVal) {\n this.setAttribute(normalizedKey, '')\n } else {\n this.removeAttribute(normalizedKey)\n }\n } else if (stateVal == null && (attrsType === 'string' || attrsType === 'number')) {\n this.removeAttribute(normalizedKey)\n } else {\n this.setAttribute(normalizedKey, encodeAttrVal(stateVal, attrsType))\n }\n }\n }\n }\n }\n }\n }\n define(name, _Lib0Component)\n // @ts-ignore\n return _Lib0Component\n}\n\n/**\n * @param {function} definer function that defines a component when executed\n */\nexport const createComponentDefiner = definer => {\n /**\n * @type {any}\n */\n let defined = null\n return () => {\n if (!defined) {\n defined = definer()\n }\n return defined\n }\n}\n\nexport const defineListComponent = createComponentDefiner(() => {\n const ListItem = createComponent('lib0-list-item', {\n template: '<slot name=\"content\"></slot>',\n slots: state => ({\n content: `<div>${state}</div>`\n })\n })\n return createComponent('lib0-list', {\n state: { list: /** @type {Array<string>} */ ([]), Item: ListItem },\n onStateChange: (state, prevState, component) => {\n if (state == null) {\n return\n }\n const { list = /** @type {Array<any>} */ ([]), Item = ListItem } = state\n // @todo deep compare here by providing another parameter to simpleDiffArray\n let { index, remove, insert } = diff.simpleDiffArray(prevState ? prevState.list : [], list, func.equalityFlat)\n if (remove === 0 && insert.length === 0) {\n return\n }\n let child = /** @type {Lib0Component<any>} */ (component.firstChild)\n while (index-- > 0) {\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n }\n let insertStart = 0\n while (insertStart < insert.length && remove-- > 0) {\n // update existing state\n child.setState(insert[insertStart++])\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n }\n while (remove-- > 0) {\n // remove remaining\n const prevChild = child\n child = /** @type {Lib0Component<any>} */ (child.nextElementSibling)\n component.removeChild(prevChild)\n }\n // insert remaining\n component.insertBefore(dom.fragment(insert.slice(insertStart).map(insState => {\n const el = new Item()\n el.setState(insState)\n return el\n })), child)\n }\n })\n})\n\nexport const defineLazyLoadingComponent = createComponentDefiner(() => createComponent('lib0-lazy', {\n state: /** @type {{component:null|String,import:null|function():Promise<any>,state:null|object}} */ ({\n component: null, import: null, state: null\n }),\n attrs: {\n component: 'string'\n },\n onStateChange: ({ component, state, import: getImport }, prevState, componentEl) => {\n if (component !== null) {\n if (getImport) {\n getImport()\n }\n if (!prevState || component !== prevState.component) {\n const el = /** @type {any} */ (dom.createElement(component))\n componentEl.innerHTML = ''\n componentEl.insertBefore(el, null)\n }\n const el = /** @type {any} */ (componentEl.firstElementChild)\n // @todo generalize setting state and check if setState is defined\n if (el.setState) {\n el.setState(state)\n }\n }\n }\n}))\n"],"names":["json.stringify","json.parse","string.fromCamelCase","dom.parseElement","dom.querySelector","dom.emitCustomEvent","dom.addEventListener","object.assign","object.keys","number.isNaN","func.equalityFlat","array.from","dom.querySelectorAll","dom.checkNodeType","dom.ELEMENT_NODE","dom.remove","dom.parseFragment","dom.replaceWith","dom.appendChild","diff.simpleDiffArray","dom.fragment","dom.createElement"],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var encoding = require('./buffer-22bb9fae.cjs');
6
+ var string = require('./string-ad04f734.cjs');
7
+ var webcrypto = require('lib0/webcrypto');
8
+ require('./environment-f6386808.cjs');
9
+ require('./map-28a001c9.cjs');
10
+ require('./conditions-fb475c70.cjs');
11
+ require('./storage.cjs');
12
+ require('./function-40d38a5b.cjs');
13
+ require('./array-42d0736b.cjs');
14
+ require('./set-b596ef38.cjs');
15
+ require('./object-fe9c0021.cjs');
16
+ require('./binary-ac8e39e2.cjs');
17
+ require('./math-08e068f9.cjs');
18
+ require('./number-e62129bc.cjs');
19
+ require('./error-873c9cbf.cjs');
20
+
21
+ function _interopNamespace(e) {
22
+ if (e && e.__esModule) return e;
23
+ var n = Object.create(null);
24
+ if (e) {
25
+ Object.keys(e).forEach(function (k) {
26
+ if (k !== 'default') {
27
+ var d = Object.getOwnPropertyDescriptor(e, k);
28
+ Object.defineProperty(n, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () { return e[k]; }
31
+ });
32
+ }
33
+ });
34
+ }
35
+ n["default"] = e;
36
+ return Object.freeze(n);
37
+ }
38
+
39
+ var webcrypto__namespace = /*#__PURE__*/_interopNamespace(webcrypto);
40
+
41
+ /* eslint-env browser */
42
+
43
+ /* istanbul ignore next */
44
+ /**
45
+ * @param {string | Uint8Array} data
46
+ * @return {Uint8Array}
47
+ */
48
+ const toBinary = data => typeof data === 'string' ? string.encodeUtf8(data) : data;
49
+
50
+ /**
51
+ * @experimental The API is not final!
52
+ *
53
+ * Derive an symmetric key using the Password-Based-Key-Derivation-Function-2.
54
+ *
55
+ * @param {string | Uint8Array} secret
56
+ * @param {string | Uint8Array} salt
57
+ * @param {Object} opts
58
+ * @param {boolean} [opts.extractable]
59
+ * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]
60
+ * @return {PromiseLike<CryptoKey>}
61
+ */
62
+ const deriveSymmetricKey = (secret, salt, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) => {
63
+ const binSecret = toBinary(secret);
64
+ const binSalt = toBinary(salt);
65
+ return webcrypto__namespace.subtle.importKey(
66
+ 'raw',
67
+ binSecret,
68
+ 'PBKDF2',
69
+ false,
70
+ ['deriveKey']
71
+ ).then(keyMaterial =>
72
+ webcrypto__namespace.subtle.deriveKey(
73
+ {
74
+ name: 'PBKDF2',
75
+ salt: binSalt, // NIST recommends at least 64 bits
76
+ iterations: 600000, // OWASP recommends 600k iterations
77
+ hash: 'SHA-256'
78
+ },
79
+ keyMaterial,
80
+ {
81
+ name: 'AES-GCM',
82
+ length: 256
83
+ },
84
+ extractable,
85
+ usages
86
+ )
87
+ )
88
+ };
89
+
90
+ /* istanbul ignore next */
91
+ /**
92
+ * @param {Object} opts
93
+ * @param {boolean} [opts.extractable]
94
+ * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]
95
+ */
96
+ const generateAsymmetricKey = ({ extractable = false, usages = ['sign', 'verify'] } = {}) =>
97
+ webcrypto__namespace.subtle.generateKey(
98
+ {
99
+ name: 'ECDSA',
100
+ namedCurve: 'P-384'
101
+ },
102
+ extractable,
103
+ usages
104
+ );
105
+
106
+ /* istanbul ignore next */
107
+ /**
108
+ * @param {CryptoKey} key - Symmetric or Asymmetric key
109
+ */
110
+ const exportKey = key => webcrypto__namespace.subtle.exportKey('jwk', key);
111
+
112
+ /* istanbul ignore next */
113
+ /**
114
+ * @param {any} jwk
115
+ * @param {Object} opts
116
+ * @param {boolean} [opts.extractable]
117
+ * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]
118
+ */
119
+ const importSymmetricKey = (jwk, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) =>
120
+ webcrypto__namespace.subtle.importKey('jwk', jwk, 'PBKDF2', extractable, usages);
121
+
122
+ /* istanbul ignore next */
123
+ /**
124
+ * @param {any} jwk
125
+ * @param {Object} opts
126
+ * @param {boolean} [opts.extractable]
127
+ * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]
128
+ */
129
+ const importAsymmetricKey = (jwk, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) =>
130
+ webcrypto__namespace.subtle.importKey('jwk', jwk, { name: 'ECDSA', namedCurve: 'P-384' }, extractable, usages);
131
+
132
+ /**
133
+ * @experimental The API is not final!
134
+ *
135
+ * Encrypt some data using AES-GCM method.
136
+ *
137
+ * @param {Uint8Array} data data to be encrypted
138
+ * @param {CryptoKey} key
139
+ * @return {PromiseLike<Uint8Array>} encrypted, base64 encoded message
140
+ */
141
+ const encrypt = (data, key) => {
142
+ const iv = webcrypto__namespace.getRandomValues(new Uint8Array(16)); // 92bit is enough. 128bit is recommended if space is not an issue.
143
+ return webcrypto__namespace.subtle.encrypt(
144
+ {
145
+ name: 'AES-GCM',
146
+ iv
147
+ },
148
+ key,
149
+ data
150
+ ).then(cipher => {
151
+ const encryptedDataEncoder = encoding.createEncoder();
152
+ // iv may be sent in the clear to the other peers
153
+ encoding.writeUint8Array(encryptedDataEncoder, iv);
154
+ encoding.writeVarUint8Array(encryptedDataEncoder, new Uint8Array(cipher));
155
+ return encoding.toUint8Array(encryptedDataEncoder)
156
+ })
157
+ };
158
+
159
+ /**
160
+ * @experimental The API is not final!
161
+ *
162
+ * Decrypt some data using AES-GCM method.
163
+ *
164
+ * @param {Uint8Array} data
165
+ * @param {CryptoKey} key
166
+ * @return {PromiseLike<Uint8Array>} decrypted buffer
167
+ */
168
+ const decrypt = (data, key) => {
169
+ const dataDecoder = encoding.createDecoder(data);
170
+ const iv = encoding.readUint8Array(dataDecoder, 16);
171
+ const cipher = encoding.readVarUint8Array(dataDecoder);
172
+ return webcrypto__namespace.subtle.decrypt(
173
+ {
174
+ name: 'AES-GCM',
175
+ iv
176
+ },
177
+ key,
178
+ cipher
179
+ ).then(data => new Uint8Array(data))
180
+ };
181
+
182
+ /**
183
+ * @experimental The API is not final!
184
+ *
185
+ * Sign a message
186
+ *
187
+ * @param {Uint8Array} data
188
+ * @param {CryptoKey} privateKey
189
+ * @return {PromiseLike<Uint8Array>} signature
190
+ */
191
+ const sign = (data, privateKey) =>
192
+ webcrypto__namespace.subtle.sign(
193
+ {
194
+ name: 'ECDSA',
195
+ hash: { name: 'SHA-384' }
196
+ },
197
+ privateKey,
198
+ data
199
+ ).then(signature => new Uint8Array(signature));
200
+
201
+ /**
202
+ * @experimental The API is not final!
203
+ *
204
+ * Sign a message
205
+ *
206
+ * @param {Uint8Array} signature
207
+ * @param {Uint8Array} data
208
+ * @param {CryptoKey} publicKey
209
+ * @return {PromiseLike<boolean>} signature
210
+ */
211
+ const verify = (signature, data, publicKey) =>
212
+ webcrypto__namespace.subtle.verify(
213
+ {
214
+ name: 'ECDSA',
215
+ hash: { name: 'SHA-384' }
216
+ },
217
+ publicKey,
218
+ signature,
219
+ data
220
+ );
221
+
222
+ exports.decrypt = decrypt;
223
+ exports.deriveSymmetricKey = deriveSymmetricKey;
224
+ exports.encrypt = encrypt;
225
+ exports.exportKey = exportKey;
226
+ exports.generateAsymmetricKey = generateAsymmetricKey;
227
+ exports.importAsymmetricKey = importAsymmetricKey;
228
+ exports.importSymmetricKey = importSymmetricKey;
229
+ exports.sign = sign;
230
+ exports.verify = verify;
231
+ //# sourceMappingURL=crypto.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.cjs","sources":["../crypto.js"],"sourcesContent":["/* eslint-env browser */\n\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\nimport * as string from './string.js'\nimport * as webcrypto from 'lib0/webcrypto'\n\n/* istanbul ignore next */\n/**\n * @param {string | Uint8Array} data\n * @return {Uint8Array}\n */\nconst toBinary = data => typeof data === 'string' ? string.encodeUtf8(data) : data\n\n/**\n * @experimental The API is not final!\n *\n * Derive an symmetric key using the Password-Based-Key-Derivation-Function-2.\n *\n * @param {string | Uint8Array} secret\n * @param {string | Uint8Array} salt\n * @param {Object} opts\n * @param {boolean} [opts.extractable]\n * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]\n * @return {PromiseLike<CryptoKey>}\n */\nexport const deriveSymmetricKey = (secret, salt, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) => {\n const binSecret = toBinary(secret)\n const binSalt = toBinary(salt)\n return webcrypto.subtle.importKey(\n 'raw',\n binSecret,\n 'PBKDF2',\n false,\n ['deriveKey']\n ).then(keyMaterial =>\n webcrypto.subtle.deriveKey(\n {\n name: 'PBKDF2',\n salt: binSalt, // NIST recommends at least 64 bits\n iterations: 600000, // OWASP recommends 600k iterations\n hash: 'SHA-256'\n },\n keyMaterial,\n {\n name: 'AES-GCM',\n length: 256\n },\n extractable,\n usages\n )\n )\n}\n\n/* istanbul ignore next */\n/**\n * @param {Object} opts\n * @param {boolean} [opts.extractable]\n * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]\n */\nexport const generateAsymmetricKey = ({ extractable = false, usages = ['sign', 'verify'] } = {}) =>\n webcrypto.subtle.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-384'\n },\n extractable,\n usages\n )\n\n/* istanbul ignore next */\n/**\n * @param {CryptoKey} key - Symmetric or Asymmetric key\n */\nexport const exportKey = key => webcrypto.subtle.exportKey('jwk', key)\n\n/* istanbul ignore next */\n/**\n * @param {any} jwk\n * @param {Object} opts\n * @param {boolean} [opts.extractable]\n * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]\n */\nexport const importSymmetricKey = (jwk, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) =>\n webcrypto.subtle.importKey('jwk', jwk, 'PBKDF2', extractable, usages)\n\n/* istanbul ignore next */\n/**\n * @param {any} jwk\n * @param {Object} opts\n * @param {boolean} [opts.extractable]\n * @param {Array<'sign'|'verify'|'encrypt'|'decrypt'>} [opts.usages]\n */\nexport const importAsymmetricKey = (jwk, { extractable = false, usages = ['encrypt', 'decrypt'] } = {}) =>\n webcrypto.subtle.importKey('jwk', jwk, { name: 'ECDSA', namedCurve: 'P-384' }, extractable, usages)\n\n/**\n * @experimental The API is not final!\n *\n * Encrypt some data using AES-GCM method.\n *\n * @param {Uint8Array} data data to be encrypted\n * @param {CryptoKey} key\n * @return {PromiseLike<Uint8Array>} encrypted, base64 encoded message\n */\nexport const encrypt = (data, key) => {\n const iv = webcrypto.getRandomValues(new Uint8Array(16)) // 92bit is enough. 128bit is recommended if space is not an issue.\n return webcrypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n iv\n },\n key,\n data\n ).then(cipher => {\n const encryptedDataEncoder = encoding.createEncoder()\n // iv may be sent in the clear to the other peers\n encoding.writeUint8Array(encryptedDataEncoder, iv)\n encoding.writeVarUint8Array(encryptedDataEncoder, new Uint8Array(cipher))\n return encoding.toUint8Array(encryptedDataEncoder)\n })\n}\n\n/**\n * @experimental The API is not final!\n *\n * Decrypt some data using AES-GCM method.\n *\n * @param {Uint8Array} data\n * @param {CryptoKey} key\n * @return {PromiseLike<Uint8Array>} decrypted buffer\n */\nexport const decrypt = (data, key) => {\n const dataDecoder = decoding.createDecoder(data)\n const iv = decoding.readUint8Array(dataDecoder, 16)\n const cipher = decoding.readVarUint8Array(dataDecoder)\n return webcrypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n iv\n },\n key,\n cipher\n ).then(data => new Uint8Array(data))\n}\n\n/**\n * @experimental The API is not final!\n *\n * Sign a message\n *\n * @param {Uint8Array} data\n * @param {CryptoKey} privateKey\n * @return {PromiseLike<Uint8Array>} signature\n */\nexport const sign = (data, privateKey) =>\n webcrypto.subtle.sign(\n {\n name: 'ECDSA',\n hash: { name: 'SHA-384' }\n },\n privateKey,\n data\n ).then(signature => new Uint8Array(signature))\n\n/**\n * @experimental The API is not final!\n *\n * Sign a message\n *\n * @param {Uint8Array} signature\n * @param {Uint8Array} data\n * @param {CryptoKey} publicKey\n * @return {PromiseLike<boolean>} signature\n */\nexport const verify = (signature, data, publicKey) =>\n webcrypto.subtle.verify(\n {\n name: 'ECDSA',\n hash: { name: 'SHA-384' }\n },\n publicKey,\n signature,\n data\n )\n"],"names":["string.encodeUtf8","webcrypto","encoding.createEncoder","encoding.writeUint8Array","encoding.writeVarUint8Array","encoding.toUint8Array","decoding.createDecoder","decoding.readUint8Array","decoding.readVarUint8Array"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export function deriveSymmetricKey(secret: string | Uint8Array, salt: string | Uint8Array, { extractable, usages }?: {
2
+ extractable?: boolean | undefined;
3
+ usages?: ("decrypt" | "encrypt" | "sign" | "verify")[] | undefined;
4
+ }): PromiseLike<CryptoKey>;
5
+ export function generateAsymmetricKey({ extractable, usages }?: {
6
+ extractable?: boolean | undefined;
7
+ usages?: ("decrypt" | "encrypt" | "sign" | "verify")[] | undefined;
8
+ }): Promise<CryptoKeyPair>;
9
+ export function exportKey(key: CryptoKey): Promise<JsonWebKey>;
10
+ export function importSymmetricKey(jwk: any, { extractable, usages }?: {
11
+ extractable?: boolean | undefined;
12
+ usages?: ("decrypt" | "encrypt" | "sign" | "verify")[] | undefined;
13
+ }): Promise<CryptoKey>;
14
+ export function importAsymmetricKey(jwk: any, { extractable, usages }?: {
15
+ extractable?: boolean | undefined;
16
+ usages?: ("decrypt" | "encrypt" | "sign" | "verify")[] | undefined;
17
+ }): Promise<CryptoKey>;
18
+ export function encrypt(data: Uint8Array, key: CryptoKey): PromiseLike<Uint8Array>;
19
+ export function decrypt(data: Uint8Array, key: CryptoKey): PromiseLike<Uint8Array>;
20
+ export function sign(data: Uint8Array, privateKey: CryptoKey): PromiseLike<Uint8Array>;
21
+ export function verify(signature: Uint8Array, data: Uint8Array, publicKey: CryptoKey): PromiseLike<boolean>;
22
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../crypto.js"],"names":[],"mappings":"AA0BO,2CAPI,MAAM,GAAG,UAAU,QACnB,MAAM,GAAG,UAAU;IAEJ,WAAW;IACwB,MAAM;IACvD,YAAY,SAAS,CAAC,CA4BjC;AAQM;IAHmB,WAAW;IACwB,MAAM;2BAUhE;AAMI,+BAFI,SAAS,uBAEkD;AAS/D,wCALI,GAAG;IAEY,WAAW;IACwB,MAAM;uBAGI;AAShE,yCALI,GAAG;IAEY,WAAW;IACwB,MAAM;uBAGkC;AAW9F,8BAJI,UAAU,OACV,SAAS,GACR,YAAY,UAAU,CAAC,CAkBlC;AAWM,8BAJI,UAAU,OACV,SAAS,GACR,YAAY,UAAU,CAAC,CAclC;AAWM,2BAJI,UAAU,cACV,SAAS,GACR,YAAY,UAAU,CAAC,CAUa;AAYzC,kCALI,UAAU,QACV,UAAU,aACV,SAAS,GACR,YAAY,OAAO,CAAC,CAW7B"}
@@ -0,0 +1,6 @@
1
+ export function testReapeatEncryption(tc: t.TestCase): Promise<void>;
2
+ export function testEncryptionPerformance(tc: t.TestCase): Promise<void>;
3
+ export function testConsistentKeyGeneration(_tc: t.TestCase): Promise<void>;
4
+ export function testSigning(tc: t.TestCase): Promise<void>;
5
+ import * as t from "./testing.js";
6
+ //# sourceMappingURL=crypto.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["../crypto.test.js"],"names":[],"mappings":"AAQO,0CAFI,EAAE,QAAQ,iBA+BpB;AAKM,8CAFI,EAAE,QAAQ,iBAsCpB;AAKM,iDAFI,EAAE,QAAQ,iBA0CpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB"}
package/dist/decoding.cjs CHANGED
@@ -2,18 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var encoding = require('./buffer-5ebf4ddb.cjs');
5
+ var encoding = require('./buffer-22bb9fae.cjs');
6
6
  require('./binary-ac8e39e2.cjs');
7
7
  require('./math-08e068f9.cjs');
8
8
  require('./number-e62129bc.cjs');
9
9
  require('./string-ad04f734.cjs');
10
10
  require('./error-873c9cbf.cjs');
11
- require('./environment-9ecc1776.cjs');
11
+ require('./environment-f6386808.cjs');
12
12
  require('./map-28a001c9.cjs');
13
13
  require('./conditions-fb475c70.cjs');
14
14
  require('./storage.cjs');
15
- require('./function-0da7a13f.cjs');
16
- require('./array-acefe0f2.cjs');
15
+ require('./function-40d38a5b.cjs');
16
+ require('./array-42d0736b.cjs');
17
+ require('./set-b596ef38.cjs');
17
18
  require('./object-fe9c0021.cjs');
18
19
 
19
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"decoding.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"decoding.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _function = require('./function-0da7a13f.cjs');
3
+ var _function = require('./function-40d38a5b.cjs');
4
4
 
5
5
  /**
6
6
  * Efficient diffs.
@@ -149,4 +149,4 @@ exports.simpleDiff = simpleDiff;
149
149
  exports.simpleDiffArray = simpleDiffArray;
150
150
  exports.simpleDiffString = simpleDiffString;
151
151
  exports.simpleDiffStringWithCursor = simpleDiffStringWithCursor;
152
- //# sourceMappingURL=diff-85090e89.cjs.map
152
+ //# sourceMappingURL=diff-ee50c530.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-85090e89.cjs","sources":["../diff.js"],"sourcesContent":["/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n"],"names":["equalityStrict"],"mappings":"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"}
1
+ {"version":3,"file":"diff-ee50c530.cjs","sources":["../diff.js"],"sourcesContent":["/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n"],"names":["equalityStrict"],"mappings":"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"}
package/dist/diff.cjs CHANGED
@@ -2,9 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('./function-0da7a13f.cjs');
6
- var diff = require('./diff-85090e89.cjs');
7
- require('./array-acefe0f2.cjs');
5
+ require('./function-40d38a5b.cjs');
6
+ var diff = require('./diff-ee50c530.cjs');
7
+ require('./array-42d0736b.cjs');
8
+ require('./set-b596ef38.cjs');
8
9
  require('./object-fe9c0021.cjs');
9
10
 
10
11
 
package/dist/diff.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"diff.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"diff.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
package/dist/encoding.cjs CHANGED
@@ -2,17 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var encoding = require('./buffer-5ebf4ddb.cjs');
5
+ var encoding = require('./buffer-22bb9fae.cjs');
6
6
  require('./math-08e068f9.cjs');
7
7
  require('./number-e62129bc.cjs');
8
8
  require('./binary-ac8e39e2.cjs');
9
9
  require('./string-ad04f734.cjs');
10
- require('./environment-9ecc1776.cjs');
10
+ require('./environment-f6386808.cjs');
11
11
  require('./map-28a001c9.cjs');
12
12
  require('./conditions-fb475c70.cjs');
13
13
  require('./storage.cjs');
14
- require('./function-0da7a13f.cjs');
15
- require('./array-acefe0f2.cjs');
14
+ require('./function-40d38a5b.cjs');
15
+ require('./array-42d0736b.cjs');
16
+ require('./set-b596ef38.cjs');
16
17
  require('./object-fe9c0021.cjs');
17
18
  require('./error-873c9cbf.cjs');
18
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"encoding.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ var map = require('./map-28a001c9.cjs');
4
4
  var string = require('./string-ad04f734.cjs');
5
5
  var conditions = require('./conditions-fb475c70.cjs');
6
6
  var storage = require('./storage.cjs');
7
- var _function = require('./function-0da7a13f.cjs');
7
+ var _function = require('./function-40d38a5b.cjs');
8
8
 
9
9
  /**
10
10
  * Isomorphic module to work access the environment (query params, env variables).
@@ -152,4 +152,4 @@ exports.isMac = isMac;
152
152
  exports.isNode = isNode;
153
153
  exports.production = production;
154
154
  exports.supportsColor = supportsColor;
155
- //# sourceMappingURL=environment-9ecc1776.cjs.map
155
+ //# sourceMappingURL=environment-f6386808.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment-9ecc1776.cjs","sources":["../environment.js"],"sourcesContent":["/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release &&\n /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase()])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n\n/* istanbul ignore next */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* istanbul ignore next */\nexport const supportsColor = !hasParam('no-colors') &&\n (!isNode || process.stdout.isTTY || forceColor) && (\n !isNode || hasParam('color') || forceColor ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n)\n"],"names":["map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf"],"mappings":"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"}
1
+ {"version":3,"file":"environment-f6386808.cjs","sources":["../environment.js"],"sourcesContent":["/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* istanbul ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release &&\n /node|io\\.js/.test(process.release.name)\n/* istanbul ignore next */\nexport const isBrowser = typeof window !== 'undefined' && !isNode\n/* istanbul ignore next */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* istanbul ignore next */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n /* istanbul ignore next */\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* istanbul ignore next */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n// export const getArgs = name => computeParams() && args\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* istanbul ignore next */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase()])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* istanbul ignore next */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* istanbul ignore next */\nexport const production = hasConf('production')\n\n/* istanbul ignore next */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* istanbul ignore next */\nexport const supportsColor = !hasParam('no-colors') &&\n (!isNode || process.stdout.isTTY || forceColor) && (\n !isNode || hasParam('color') || forceColor ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n)\n"],"names":["map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf"],"mappings":"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"}
@@ -6,9 +6,10 @@ require('./map-28a001c9.cjs');
6
6
  require('./string-ad04f734.cjs');
7
7
  require('./conditions-fb475c70.cjs');
8
8
  require('./storage.cjs');
9
- require('./function-0da7a13f.cjs');
10
- var environment = require('./environment-9ecc1776.cjs');
11
- require('./array-acefe0f2.cjs');
9
+ require('./function-40d38a5b.cjs');
10
+ var environment = require('./environment-f6386808.cjs');
11
+ require('./array-42d0736b.cjs');
12
+ require('./set-b596ef38.cjs');
12
13
  require('./object-fe9c0021.cjs');
13
14
 
14
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"environment.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"environment.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var array = require('./array-acefe0f2.cjs');
3
+ var array = require('./array-42d0736b.cjs');
4
4
  var object = require('./object-fe9c0021.cjs');
5
5
 
6
6
  /**
@@ -172,4 +172,4 @@ exports.equalityStrict = equalityStrict;
172
172
  exports.id = id;
173
173
  exports.isOneOf = isOneOf;
174
174
  exports.nop = nop;
175
- //# sourceMappingURL=function-0da7a13f.cjs.map
175
+ //# sourceMappingURL=function-40d38a5b.cjs.map