@dbmx/toasts 0.0.47 → 0.0.49
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.
- package/cjs/_virtual/_commonjsHelpers.cjs +33 -0
- package/cjs/_virtual/artefacts.cjs +5 -0
- package/cjs/_virtual/core.cjs +5 -0
- package/cjs/_virtual/dependencyResolver.cjs +5 -0
- package/cjs/_virtual/index.esm.cjs +8 -0
- package/cjs/_virtual/items.cjs +5 -0
- package/cjs/_virtual/sdmx.cjs +5 -0
- package/cjs/components/SdmxDatagrid/index.cjs +1 -1
- package/cjs/components/SdmxDatagrid/utils/index.cjs +9 -7
- package/cjs/node_modules/@dbmx/sdmx/cjs/core.cjs +940 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/data.cjs +140 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/dependencyResolver.cjs +73 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/items.cjs +100 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/assoc.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/assocPath.cjs +55 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/bind.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/compose.cjs +43 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/concat.cjs +69 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/curryN.cjs +66 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/defaultTo.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/dissoc.cjs +33 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/dissocPath.cjs +79 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/equals.cjs +42 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/filter.cjs +63 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/forEach.cjs +58 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/identity.cjs +34 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_arity.cjs +56 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_arrayFromIterator.cjs +13 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_arrayReduce.cjs +14 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_assoc.cjs +37 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_checkForMethod.cjs +30 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_complement.cjs +10 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_createReduce.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_curry1.cjs +27 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_curry2.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_curry3.cjs +56 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_curryN.cjs +48 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_dispatchable.cjs +49 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_dissoc.cjs +36 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_equals.cjs +143 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_filter.cjs +17 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_functionName.cjs +10 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_has.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_identity.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_includes.cjs +11 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_includesWith.cjs +16 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_indexOf.cjs +61 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isArguments.cjs +18 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isArray.cjs +20 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isArrayLike.cjs +55 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isFunction.cjs +9 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isInteger.cjs +16 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isObject.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isPlaceholder.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isString.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_isTransformer.cjs +8 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_map.cjs +15 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_objectIs.cjs +18 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_pipe.cjs +10 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_quote.cjs +10 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_toISOString.cjs +17 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_toString.cjs +62 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xArrayReduce.cjs +18 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xReduce.cjs +30 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xfBase.cjs +13 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xfilter.cjs +26 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xmap.cjs +27 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/internal/_xwrap.cjs +24 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/is.cjs +39 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/isNil.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/keys.cjs +80 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/map.cjs +75 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/nth.cjs +44 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/path.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/pathOr.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/paths.cjs +50 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/pick.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/pipe.cjs +46 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/prop.cjs +43 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/propOr.cjs +46 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/reduce.cjs +71 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/reject.cjs +43 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/remove.cjs +37 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/reverse.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/slice.cjs +42 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/tail.cjs +46 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/times.cjs +49 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/toString.cjs +53 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/type.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/node_modules/ramda/es/values.cjs +42 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/artefacts.cjs +40 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/categorisation.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/categoryscheme.cjs +16 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/codelist.cjs +31 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/conceptscheme.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/contentconstraint.cjs +40 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/dataconstraint.cjs +39 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/dataflow.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/dataproviderscheme.cjs +16 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/datastructure.cjs +73 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/hierarchicalcodelist.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/metadatastructure.cjs +62 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/provisionagreement.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/types/sdmx.cjs +71 -0
- package/cjs/node_modules/@dbmx/sdmx/cjs/utils/url-regexp.cjs +30 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/_virtual/_commonjsHelpers.cjs +10 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/_virtual/url-join.cjs +5 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/core.cjs +554 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/datastructures.cjs +73 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/dependencyResolver.cjs +65 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/bind.cjs +39 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/compose.cjs +40 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/curryN.cjs +63 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/defaultTo.cjs +37 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/forEach.cjs +59 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/identity.cjs +32 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_arity.cjs +66 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_arrayReduce.cjs +15 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_checkForMethod.cjs +29 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_createReduce.cjs +36 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_curry1.cjs +24 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_curry2.cjs +36 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_curry3.cjs +54 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_curryN.cjs +50 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_dispatchable.cjs +51 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_has.cjs +7 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_identity.cjs +7 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isArguments.cjs +19 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isArray.cjs +19 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isArrayLike.cjs +58 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isInteger.cjs +15 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isPlaceholder.cjs +7 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isString.cjs +7 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_isTransformer.cjs +7 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_map.cjs +16 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_pipe.cjs +9 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_xArrayReduce.cjs +21 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_xReduce.cjs +34 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_xfBase.cjs +12 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_xmap.cjs +31 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/internal/_xwrap.cjs +29 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/is.cjs +38 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/keys.cjs +94 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/map.cjs +71 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/nth.cjs +42 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/path.cjs +39 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/pathOr.cjs +35 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/paths.cjs +50 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/pick.cjs +43 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/pipe.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/prop.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/propOr.cjs +43 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/reduce.cjs +68 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/reverse.cjs +39 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/slice.cjs +41 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/tail.cjs +45 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/ramda/es/values.cjs +42 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/node_modules/url-join/lib/url-join.cjs +89 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/query.cjs +85 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/artefacts.cjs +31 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/categorisation.cjs +19 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/categoryscheme.cjs +13 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/codelist.cjs +19 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/conceptscheme.cjs +29 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/contentconstraint.cjs +23 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/dataconstraint.cjs +22 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/dataflow.cjs +20 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/dataproviderscheme.cjs +13 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/datastructure.cjs +74 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/hierarchicalcodelist.cjs +22 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/metadatastructure.cjs +58 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/provisionagreement.cjs +19 -0
- package/cjs/node_modules/@dbmx/sdmx/esm/types/sdmx.cjs +51 -0
- package/cjs/node_modules/@dbmx/semver/dist/index.esm.cjs +584 -0
- package/cjs/node_modules/lru-cache/index.cjs +281 -0
- package/cjs/node_modules/yallist/iterator.cjs +20 -0
- package/cjs/node_modules/yallist/yallist.cjs +370 -0
- package/esm/index-FCPRKLj2.js +720 -0
- package/esm/index-FCPRKLj2.js.map +1 -0
- package/esm/index-Mh78z9aW.js +562 -0
- package/esm/index-Mh78z9aW.js.map +1 -0
- package/esm/index-T2bcfyHI.js +8510 -0
- package/esm/index-T2bcfyHI.js.map +1 -0
- package/esm/index-W7MLRHBf.js +87 -0
- package/esm/index-W7MLRHBf.js.map +1 -0
- package/esm/index-gBe37Ynf.js +8438 -0
- package/esm/index-gBe37Ynf.js.map +1 -0
- package/esm/index-ndYjFD6I.js +8438 -0
- package/esm/index-ndYjFD6I.js.map +1 -0
- package/esm/index.js +1 -1
- package/package.json +3 -3
- package/cjs/fake-ZW05emqw.js +0 -35
- package/cjs/fake-ZW05emqw.js.map +0 -1
- package/cjs/index.cjs.map +0 -1
- package/esm/fake-JHdVf8lQ.js +0 -14
- package/esm/fake-JHdVf8lQ.js.map +0 -1
- package/esm/index-lo-MKsEb.js +0 -556
- package/esm/index-lo-MKsEb.js.map +0 -1
- package/yarn-error.log +0 -7136
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _commonjsHelpers = require('../../_virtual/_commonjsHelpers.cjs');
|
|
4
|
+
var yallist = require('../yallist/yallist.cjs');
|
|
5
|
+
|
|
6
|
+
// A linked list to keep track of recently-used-ness
|
|
7
|
+
const Yallist = yallist.yallist;
|
|
8
|
+
const MAX = Symbol('max');
|
|
9
|
+
const LENGTH = Symbol('length');
|
|
10
|
+
const LENGTH_CALCULATOR = Symbol('lengthCalculator');
|
|
11
|
+
const ALLOW_STALE = Symbol('allowStale');
|
|
12
|
+
const MAX_AGE = Symbol('maxAge');
|
|
13
|
+
const DISPOSE = Symbol('dispose');
|
|
14
|
+
const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
|
|
15
|
+
const LRU_LIST = Symbol('lruList');
|
|
16
|
+
const CACHE = Symbol('cache');
|
|
17
|
+
const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
|
|
18
|
+
const naiveLength = () => 1;
|
|
19
|
+
|
|
20
|
+
// lruList is a yallist where the head is the youngest
|
|
21
|
+
// item, and the tail is the oldest. the list contains the Hit
|
|
22
|
+
// objects as the entries.
|
|
23
|
+
// Each Hit object has a reference to its Yallist.Node. This
|
|
24
|
+
// never changes.
|
|
25
|
+
//
|
|
26
|
+
// cache is a Map (or PseudoMap) that matches the keys to
|
|
27
|
+
// the Yallist.Node object.
|
|
28
|
+
class LRUCache {
|
|
29
|
+
constructor(options) {
|
|
30
|
+
if (typeof options === 'number') options = {
|
|
31
|
+
max: options
|
|
32
|
+
};
|
|
33
|
+
if (!options) options = {};
|
|
34
|
+
if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
|
|
35
|
+
// Kind of weird to have a default max of Infinity, but oh well.
|
|
36
|
+
this[MAX] = options.max || Infinity;
|
|
37
|
+
const lc = options.length || naiveLength;
|
|
38
|
+
this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
|
|
39
|
+
this[ALLOW_STALE] = options.stale || false;
|
|
40
|
+
if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
|
|
41
|
+
this[MAX_AGE] = options.maxAge || 0;
|
|
42
|
+
this[DISPOSE] = options.dispose;
|
|
43
|
+
this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
|
|
44
|
+
this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
|
|
45
|
+
this.reset();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// resize the cache when the max changes.
|
|
49
|
+
set max(mL) {
|
|
50
|
+
if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
|
|
51
|
+
this[MAX] = mL || Infinity;
|
|
52
|
+
trim(this);
|
|
53
|
+
}
|
|
54
|
+
get max() {
|
|
55
|
+
return this[MAX];
|
|
56
|
+
}
|
|
57
|
+
set allowStale(allowStale) {
|
|
58
|
+
this[ALLOW_STALE] = !!allowStale;
|
|
59
|
+
}
|
|
60
|
+
get allowStale() {
|
|
61
|
+
return this[ALLOW_STALE];
|
|
62
|
+
}
|
|
63
|
+
set maxAge(mA) {
|
|
64
|
+
if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
|
|
65
|
+
this[MAX_AGE] = mA;
|
|
66
|
+
trim(this);
|
|
67
|
+
}
|
|
68
|
+
get maxAge() {
|
|
69
|
+
return this[MAX_AGE];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// resize the cache when the lengthCalculator changes.
|
|
73
|
+
set lengthCalculator(lC) {
|
|
74
|
+
if (typeof lC !== 'function') lC = naiveLength;
|
|
75
|
+
if (lC !== this[LENGTH_CALCULATOR]) {
|
|
76
|
+
this[LENGTH_CALCULATOR] = lC;
|
|
77
|
+
this[LENGTH] = 0;
|
|
78
|
+
this[LRU_LIST].forEach(hit => {
|
|
79
|
+
hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
|
|
80
|
+
this[LENGTH] += hit.length;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
trim(this);
|
|
84
|
+
}
|
|
85
|
+
get lengthCalculator() {
|
|
86
|
+
return this[LENGTH_CALCULATOR];
|
|
87
|
+
}
|
|
88
|
+
get length() {
|
|
89
|
+
return this[LENGTH];
|
|
90
|
+
}
|
|
91
|
+
get itemCount() {
|
|
92
|
+
return this[LRU_LIST].length;
|
|
93
|
+
}
|
|
94
|
+
rforEach(fn, thisp) {
|
|
95
|
+
thisp = thisp || this;
|
|
96
|
+
for (let walker = this[LRU_LIST].tail; walker !== null;) {
|
|
97
|
+
const prev = walker.prev;
|
|
98
|
+
forEachStep(this, fn, walker, thisp);
|
|
99
|
+
walker = prev;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
forEach(fn, thisp) {
|
|
103
|
+
thisp = thisp || this;
|
|
104
|
+
for (let walker = this[LRU_LIST].head; walker !== null;) {
|
|
105
|
+
const next = walker.next;
|
|
106
|
+
forEachStep(this, fn, walker, thisp);
|
|
107
|
+
walker = next;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
keys() {
|
|
111
|
+
return this[LRU_LIST].toArray().map(k => k.key);
|
|
112
|
+
}
|
|
113
|
+
values() {
|
|
114
|
+
return this[LRU_LIST].toArray().map(k => k.value);
|
|
115
|
+
}
|
|
116
|
+
reset() {
|
|
117
|
+
if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
|
|
118
|
+
this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));
|
|
119
|
+
}
|
|
120
|
+
this[CACHE] = new Map(); // hash of items by key
|
|
121
|
+
this[LRU_LIST] = new Yallist(); // list of items in order of use recency
|
|
122
|
+
this[LENGTH] = 0; // length of items in the list
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
dump() {
|
|
126
|
+
return this[LRU_LIST].map(hit => isStale(this, hit) ? false : {
|
|
127
|
+
k: hit.key,
|
|
128
|
+
v: hit.value,
|
|
129
|
+
e: hit.now + (hit.maxAge || 0)
|
|
130
|
+
}).toArray().filter(h => h);
|
|
131
|
+
}
|
|
132
|
+
dumpLru() {
|
|
133
|
+
return this[LRU_LIST];
|
|
134
|
+
}
|
|
135
|
+
set(key, value, maxAge) {
|
|
136
|
+
maxAge = maxAge || this[MAX_AGE];
|
|
137
|
+
if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
|
|
138
|
+
const now = maxAge ? Date.now() : 0;
|
|
139
|
+
const len = this[LENGTH_CALCULATOR](value, key);
|
|
140
|
+
if (this[CACHE].has(key)) {
|
|
141
|
+
if (len > this[MAX]) {
|
|
142
|
+
del(this, this[CACHE].get(key));
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
const node = this[CACHE].get(key);
|
|
146
|
+
const item = node.value;
|
|
147
|
+
|
|
148
|
+
// dispose of the old one before overwriting
|
|
149
|
+
// split out into 2 ifs for better coverage tracking
|
|
150
|
+
if (this[DISPOSE]) {
|
|
151
|
+
if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
|
|
152
|
+
}
|
|
153
|
+
item.now = now;
|
|
154
|
+
item.maxAge = maxAge;
|
|
155
|
+
item.value = value;
|
|
156
|
+
this[LENGTH] += len - item.length;
|
|
157
|
+
item.length = len;
|
|
158
|
+
this.get(key);
|
|
159
|
+
trim(this);
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
const hit = new Entry(key, value, len, now, maxAge);
|
|
163
|
+
|
|
164
|
+
// oversized objects fall out of cache automatically.
|
|
165
|
+
if (hit.length > this[MAX]) {
|
|
166
|
+
if (this[DISPOSE]) this[DISPOSE](key, value);
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
this[LENGTH] += hit.length;
|
|
170
|
+
this[LRU_LIST].unshift(hit);
|
|
171
|
+
this[CACHE].set(key, this[LRU_LIST].head);
|
|
172
|
+
trim(this);
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
has(key) {
|
|
176
|
+
if (!this[CACHE].has(key)) return false;
|
|
177
|
+
const hit = this[CACHE].get(key).value;
|
|
178
|
+
return !isStale(this, hit);
|
|
179
|
+
}
|
|
180
|
+
get(key) {
|
|
181
|
+
return get(this, key, true);
|
|
182
|
+
}
|
|
183
|
+
peek(key) {
|
|
184
|
+
return get(this, key, false);
|
|
185
|
+
}
|
|
186
|
+
pop() {
|
|
187
|
+
const node = this[LRU_LIST].tail;
|
|
188
|
+
if (!node) return null;
|
|
189
|
+
del(this, node);
|
|
190
|
+
return node.value;
|
|
191
|
+
}
|
|
192
|
+
del(key) {
|
|
193
|
+
del(this, this[CACHE].get(key));
|
|
194
|
+
}
|
|
195
|
+
load(arr) {
|
|
196
|
+
// reset the cache
|
|
197
|
+
this.reset();
|
|
198
|
+
const now = Date.now();
|
|
199
|
+
// A previous serialized cache has the most recent items first
|
|
200
|
+
for (let l = arr.length - 1; l >= 0; l--) {
|
|
201
|
+
const hit = arr[l];
|
|
202
|
+
const expiresAt = hit.e || 0;
|
|
203
|
+
if (expiresAt === 0)
|
|
204
|
+
// the item was created without expiration in a non aged cache
|
|
205
|
+
this.set(hit.k, hit.v);else {
|
|
206
|
+
const maxAge = expiresAt - now;
|
|
207
|
+
// dont add already expired items
|
|
208
|
+
if (maxAge > 0) {
|
|
209
|
+
this.set(hit.k, hit.v, maxAge);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
prune() {
|
|
215
|
+
this[CACHE].forEach((value, key) => get(this, key, false));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const get = (self, key, doUse) => {
|
|
219
|
+
const node = self[CACHE].get(key);
|
|
220
|
+
if (node) {
|
|
221
|
+
const hit = node.value;
|
|
222
|
+
if (isStale(self, hit)) {
|
|
223
|
+
del(self, node);
|
|
224
|
+
if (!self[ALLOW_STALE]) return undefined;
|
|
225
|
+
} else {
|
|
226
|
+
if (doUse) {
|
|
227
|
+
if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
|
|
228
|
+
self[LRU_LIST].unshiftNode(node);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return hit.value;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
const isStale = (self, hit) => {
|
|
235
|
+
if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
|
|
236
|
+
const diff = Date.now() - hit.now;
|
|
237
|
+
return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
|
|
238
|
+
};
|
|
239
|
+
const trim = self => {
|
|
240
|
+
if (self[LENGTH] > self[MAX]) {
|
|
241
|
+
for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
|
|
242
|
+
// We know that we're about to delete this one, and also
|
|
243
|
+
// what the next least recently used key will be, so just
|
|
244
|
+
// go ahead and set it now.
|
|
245
|
+
const prev = walker.prev;
|
|
246
|
+
del(self, walker);
|
|
247
|
+
walker = prev;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const del = (self, node) => {
|
|
252
|
+
if (node) {
|
|
253
|
+
const hit = node.value;
|
|
254
|
+
if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
|
|
255
|
+
self[LENGTH] -= hit.length;
|
|
256
|
+
self[CACHE].delete(hit.key);
|
|
257
|
+
self[LRU_LIST].removeNode(node);
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
class Entry {
|
|
261
|
+
constructor(key, value, length, now, maxAge) {
|
|
262
|
+
this.key = key;
|
|
263
|
+
this.value = value;
|
|
264
|
+
this.length = length;
|
|
265
|
+
this.now = now;
|
|
266
|
+
this.maxAge = maxAge || 0;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const forEachStep = (self, fn, node, thisp) => {
|
|
270
|
+
let hit = node.value;
|
|
271
|
+
if (isStale(self, hit)) {
|
|
272
|
+
del(self, node);
|
|
273
|
+
if (!self[ALLOW_STALE]) hit = undefined;
|
|
274
|
+
}
|
|
275
|
+
if (hit) fn.call(thisp, hit.value, hit.key, self);
|
|
276
|
+
};
|
|
277
|
+
var lruCache = LRUCache;
|
|
278
|
+
|
|
279
|
+
var LRU = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(lruCache);
|
|
280
|
+
|
|
281
|
+
module.exports = LRU;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var iterator;
|
|
4
|
+
var hasRequiredIterator;
|
|
5
|
+
|
|
6
|
+
function requireIterator () {
|
|
7
|
+
if (hasRequiredIterator) return iterator;
|
|
8
|
+
hasRequiredIterator = 1;
|
|
9
|
+
|
|
10
|
+
iterator = function (Yallist) {
|
|
11
|
+
Yallist.prototype[Symbol.iterator] = function* () {
|
|
12
|
+
for (let walker = this.head; walker; walker = walker.next) {
|
|
13
|
+
yield walker.value;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
return iterator;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.__require = requireIterator;
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var iterator = require('./iterator.cjs');
|
|
4
|
+
|
|
5
|
+
var yallist = Yallist;
|
|
6
|
+
Yallist.Node = Node;
|
|
7
|
+
Yallist.create = Yallist;
|
|
8
|
+
function Yallist(list) {
|
|
9
|
+
var self = this;
|
|
10
|
+
if (!(self instanceof Yallist)) {
|
|
11
|
+
self = new Yallist();
|
|
12
|
+
}
|
|
13
|
+
self.tail = null;
|
|
14
|
+
self.head = null;
|
|
15
|
+
self.length = 0;
|
|
16
|
+
if (list && typeof list.forEach === 'function') {
|
|
17
|
+
list.forEach(function (item) {
|
|
18
|
+
self.push(item);
|
|
19
|
+
});
|
|
20
|
+
} else if (arguments.length > 0) {
|
|
21
|
+
for (var i = 0, l = arguments.length; i < l; i++) {
|
|
22
|
+
self.push(arguments[i]);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return self;
|
|
26
|
+
}
|
|
27
|
+
Yallist.prototype.removeNode = function (node) {
|
|
28
|
+
if (node.list !== this) {
|
|
29
|
+
throw new Error('removing node which does not belong to this list');
|
|
30
|
+
}
|
|
31
|
+
var next = node.next;
|
|
32
|
+
var prev = node.prev;
|
|
33
|
+
if (next) {
|
|
34
|
+
next.prev = prev;
|
|
35
|
+
}
|
|
36
|
+
if (prev) {
|
|
37
|
+
prev.next = next;
|
|
38
|
+
}
|
|
39
|
+
if (node === this.head) {
|
|
40
|
+
this.head = next;
|
|
41
|
+
}
|
|
42
|
+
if (node === this.tail) {
|
|
43
|
+
this.tail = prev;
|
|
44
|
+
}
|
|
45
|
+
node.list.length--;
|
|
46
|
+
node.next = null;
|
|
47
|
+
node.prev = null;
|
|
48
|
+
node.list = null;
|
|
49
|
+
return next;
|
|
50
|
+
};
|
|
51
|
+
Yallist.prototype.unshiftNode = function (node) {
|
|
52
|
+
if (node === this.head) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (node.list) {
|
|
56
|
+
node.list.removeNode(node);
|
|
57
|
+
}
|
|
58
|
+
var head = this.head;
|
|
59
|
+
node.list = this;
|
|
60
|
+
node.next = head;
|
|
61
|
+
if (head) {
|
|
62
|
+
head.prev = node;
|
|
63
|
+
}
|
|
64
|
+
this.head = node;
|
|
65
|
+
if (!this.tail) {
|
|
66
|
+
this.tail = node;
|
|
67
|
+
}
|
|
68
|
+
this.length++;
|
|
69
|
+
};
|
|
70
|
+
Yallist.prototype.pushNode = function (node) {
|
|
71
|
+
if (node === this.tail) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (node.list) {
|
|
75
|
+
node.list.removeNode(node);
|
|
76
|
+
}
|
|
77
|
+
var tail = this.tail;
|
|
78
|
+
node.list = this;
|
|
79
|
+
node.prev = tail;
|
|
80
|
+
if (tail) {
|
|
81
|
+
tail.next = node;
|
|
82
|
+
}
|
|
83
|
+
this.tail = node;
|
|
84
|
+
if (!this.head) {
|
|
85
|
+
this.head = node;
|
|
86
|
+
}
|
|
87
|
+
this.length++;
|
|
88
|
+
};
|
|
89
|
+
Yallist.prototype.push = function () {
|
|
90
|
+
for (var i = 0, l = arguments.length; i < l; i++) {
|
|
91
|
+
push(this, arguments[i]);
|
|
92
|
+
}
|
|
93
|
+
return this.length;
|
|
94
|
+
};
|
|
95
|
+
Yallist.prototype.unshift = function () {
|
|
96
|
+
for (var i = 0, l = arguments.length; i < l; i++) {
|
|
97
|
+
unshift(this, arguments[i]);
|
|
98
|
+
}
|
|
99
|
+
return this.length;
|
|
100
|
+
};
|
|
101
|
+
Yallist.prototype.pop = function () {
|
|
102
|
+
if (!this.tail) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
var res = this.tail.value;
|
|
106
|
+
this.tail = this.tail.prev;
|
|
107
|
+
if (this.tail) {
|
|
108
|
+
this.tail.next = null;
|
|
109
|
+
} else {
|
|
110
|
+
this.head = null;
|
|
111
|
+
}
|
|
112
|
+
this.length--;
|
|
113
|
+
return res;
|
|
114
|
+
};
|
|
115
|
+
Yallist.prototype.shift = function () {
|
|
116
|
+
if (!this.head) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
var res = this.head.value;
|
|
120
|
+
this.head = this.head.next;
|
|
121
|
+
if (this.head) {
|
|
122
|
+
this.head.prev = null;
|
|
123
|
+
} else {
|
|
124
|
+
this.tail = null;
|
|
125
|
+
}
|
|
126
|
+
this.length--;
|
|
127
|
+
return res;
|
|
128
|
+
};
|
|
129
|
+
Yallist.prototype.forEach = function (fn, thisp) {
|
|
130
|
+
thisp = thisp || this;
|
|
131
|
+
for (var walker = this.head, i = 0; walker !== null; i++) {
|
|
132
|
+
fn.call(thisp, walker.value, i, this);
|
|
133
|
+
walker = walker.next;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
Yallist.prototype.forEachReverse = function (fn, thisp) {
|
|
137
|
+
thisp = thisp || this;
|
|
138
|
+
for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
|
|
139
|
+
fn.call(thisp, walker.value, i, this);
|
|
140
|
+
walker = walker.prev;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
Yallist.prototype.get = function (n) {
|
|
144
|
+
for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
|
|
145
|
+
// abort out of the list early if we hit a cycle
|
|
146
|
+
walker = walker.next;
|
|
147
|
+
}
|
|
148
|
+
if (i === n && walker !== null) {
|
|
149
|
+
return walker.value;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
Yallist.prototype.getReverse = function (n) {
|
|
153
|
+
for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
|
|
154
|
+
// abort out of the list early if we hit a cycle
|
|
155
|
+
walker = walker.prev;
|
|
156
|
+
}
|
|
157
|
+
if (i === n && walker !== null) {
|
|
158
|
+
return walker.value;
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
Yallist.prototype.map = function (fn, thisp) {
|
|
162
|
+
thisp = thisp || this;
|
|
163
|
+
var res = new Yallist();
|
|
164
|
+
for (var walker = this.head; walker !== null;) {
|
|
165
|
+
res.push(fn.call(thisp, walker.value, this));
|
|
166
|
+
walker = walker.next;
|
|
167
|
+
}
|
|
168
|
+
return res;
|
|
169
|
+
};
|
|
170
|
+
Yallist.prototype.mapReverse = function (fn, thisp) {
|
|
171
|
+
thisp = thisp || this;
|
|
172
|
+
var res = new Yallist();
|
|
173
|
+
for (var walker = this.tail; walker !== null;) {
|
|
174
|
+
res.push(fn.call(thisp, walker.value, this));
|
|
175
|
+
walker = walker.prev;
|
|
176
|
+
}
|
|
177
|
+
return res;
|
|
178
|
+
};
|
|
179
|
+
Yallist.prototype.reduce = function (fn, initial) {
|
|
180
|
+
var acc;
|
|
181
|
+
var walker = this.head;
|
|
182
|
+
if (arguments.length > 1) {
|
|
183
|
+
acc = initial;
|
|
184
|
+
} else if (this.head) {
|
|
185
|
+
walker = this.head.next;
|
|
186
|
+
acc = this.head.value;
|
|
187
|
+
} else {
|
|
188
|
+
throw new TypeError('Reduce of empty list with no initial value');
|
|
189
|
+
}
|
|
190
|
+
for (var i = 0; walker !== null; i++) {
|
|
191
|
+
acc = fn(acc, walker.value, i);
|
|
192
|
+
walker = walker.next;
|
|
193
|
+
}
|
|
194
|
+
return acc;
|
|
195
|
+
};
|
|
196
|
+
Yallist.prototype.reduceReverse = function (fn, initial) {
|
|
197
|
+
var acc;
|
|
198
|
+
var walker = this.tail;
|
|
199
|
+
if (arguments.length > 1) {
|
|
200
|
+
acc = initial;
|
|
201
|
+
} else if (this.tail) {
|
|
202
|
+
walker = this.tail.prev;
|
|
203
|
+
acc = this.tail.value;
|
|
204
|
+
} else {
|
|
205
|
+
throw new TypeError('Reduce of empty list with no initial value');
|
|
206
|
+
}
|
|
207
|
+
for (var i = this.length - 1; walker !== null; i--) {
|
|
208
|
+
acc = fn(acc, walker.value, i);
|
|
209
|
+
walker = walker.prev;
|
|
210
|
+
}
|
|
211
|
+
return acc;
|
|
212
|
+
};
|
|
213
|
+
Yallist.prototype.toArray = function () {
|
|
214
|
+
var arr = new Array(this.length);
|
|
215
|
+
for (var i = 0, walker = this.head; walker !== null; i++) {
|
|
216
|
+
arr[i] = walker.value;
|
|
217
|
+
walker = walker.next;
|
|
218
|
+
}
|
|
219
|
+
return arr;
|
|
220
|
+
};
|
|
221
|
+
Yallist.prototype.toArrayReverse = function () {
|
|
222
|
+
var arr = new Array(this.length);
|
|
223
|
+
for (var i = 0, walker = this.tail; walker !== null; i++) {
|
|
224
|
+
arr[i] = walker.value;
|
|
225
|
+
walker = walker.prev;
|
|
226
|
+
}
|
|
227
|
+
return arr;
|
|
228
|
+
};
|
|
229
|
+
Yallist.prototype.slice = function (from, to) {
|
|
230
|
+
to = to || this.length;
|
|
231
|
+
if (to < 0) {
|
|
232
|
+
to += this.length;
|
|
233
|
+
}
|
|
234
|
+
from = from || 0;
|
|
235
|
+
if (from < 0) {
|
|
236
|
+
from += this.length;
|
|
237
|
+
}
|
|
238
|
+
var ret = new Yallist();
|
|
239
|
+
if (to < from || to < 0) {
|
|
240
|
+
return ret;
|
|
241
|
+
}
|
|
242
|
+
if (from < 0) {
|
|
243
|
+
from = 0;
|
|
244
|
+
}
|
|
245
|
+
if (to > this.length) {
|
|
246
|
+
to = this.length;
|
|
247
|
+
}
|
|
248
|
+
for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
|
|
249
|
+
walker = walker.next;
|
|
250
|
+
}
|
|
251
|
+
for (; walker !== null && i < to; i++, walker = walker.next) {
|
|
252
|
+
ret.push(walker.value);
|
|
253
|
+
}
|
|
254
|
+
return ret;
|
|
255
|
+
};
|
|
256
|
+
Yallist.prototype.sliceReverse = function (from, to) {
|
|
257
|
+
to = to || this.length;
|
|
258
|
+
if (to < 0) {
|
|
259
|
+
to += this.length;
|
|
260
|
+
}
|
|
261
|
+
from = from || 0;
|
|
262
|
+
if (from < 0) {
|
|
263
|
+
from += this.length;
|
|
264
|
+
}
|
|
265
|
+
var ret = new Yallist();
|
|
266
|
+
if (to < from || to < 0) {
|
|
267
|
+
return ret;
|
|
268
|
+
}
|
|
269
|
+
if (from < 0) {
|
|
270
|
+
from = 0;
|
|
271
|
+
}
|
|
272
|
+
if (to > this.length) {
|
|
273
|
+
to = this.length;
|
|
274
|
+
}
|
|
275
|
+
for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
|
|
276
|
+
walker = walker.prev;
|
|
277
|
+
}
|
|
278
|
+
for (; walker !== null && i > from; i--, walker = walker.prev) {
|
|
279
|
+
ret.push(walker.value);
|
|
280
|
+
}
|
|
281
|
+
return ret;
|
|
282
|
+
};
|
|
283
|
+
Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
|
|
284
|
+
if (start > this.length) {
|
|
285
|
+
start = this.length - 1;
|
|
286
|
+
}
|
|
287
|
+
if (start < 0) {
|
|
288
|
+
start = this.length + start;
|
|
289
|
+
}
|
|
290
|
+
for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
|
|
291
|
+
walker = walker.next;
|
|
292
|
+
}
|
|
293
|
+
var ret = [];
|
|
294
|
+
for (var i = 0; walker && i < deleteCount; i++) {
|
|
295
|
+
ret.push(walker.value);
|
|
296
|
+
walker = this.removeNode(walker);
|
|
297
|
+
}
|
|
298
|
+
if (walker === null) {
|
|
299
|
+
walker = this.tail;
|
|
300
|
+
}
|
|
301
|
+
if (walker !== this.head && walker !== this.tail) {
|
|
302
|
+
walker = walker.prev;
|
|
303
|
+
}
|
|
304
|
+
for (var i = 0; i < nodes.length; i++) {
|
|
305
|
+
walker = insert(this, walker, nodes[i]);
|
|
306
|
+
}
|
|
307
|
+
return ret;
|
|
308
|
+
};
|
|
309
|
+
Yallist.prototype.reverse = function () {
|
|
310
|
+
var head = this.head;
|
|
311
|
+
var tail = this.tail;
|
|
312
|
+
for (var walker = head; walker !== null; walker = walker.prev) {
|
|
313
|
+
var p = walker.prev;
|
|
314
|
+
walker.prev = walker.next;
|
|
315
|
+
walker.next = p;
|
|
316
|
+
}
|
|
317
|
+
this.head = tail;
|
|
318
|
+
this.tail = head;
|
|
319
|
+
return this;
|
|
320
|
+
};
|
|
321
|
+
function insert(self, node, value) {
|
|
322
|
+
var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
|
|
323
|
+
if (inserted.next === null) {
|
|
324
|
+
self.tail = inserted;
|
|
325
|
+
}
|
|
326
|
+
if (inserted.prev === null) {
|
|
327
|
+
self.head = inserted;
|
|
328
|
+
}
|
|
329
|
+
self.length++;
|
|
330
|
+
return inserted;
|
|
331
|
+
}
|
|
332
|
+
function push(self, item) {
|
|
333
|
+
self.tail = new Node(item, self.tail, null, self);
|
|
334
|
+
if (!self.head) {
|
|
335
|
+
self.head = self.tail;
|
|
336
|
+
}
|
|
337
|
+
self.length++;
|
|
338
|
+
}
|
|
339
|
+
function unshift(self, item) {
|
|
340
|
+
self.head = new Node(item, null, self.head, self);
|
|
341
|
+
if (!self.tail) {
|
|
342
|
+
self.tail = self.head;
|
|
343
|
+
}
|
|
344
|
+
self.length++;
|
|
345
|
+
}
|
|
346
|
+
function Node(value, prev, next, list) {
|
|
347
|
+
if (!(this instanceof Node)) {
|
|
348
|
+
return new Node(value, prev, next, list);
|
|
349
|
+
}
|
|
350
|
+
this.list = list;
|
|
351
|
+
this.value = value;
|
|
352
|
+
if (prev) {
|
|
353
|
+
prev.next = this;
|
|
354
|
+
this.prev = prev;
|
|
355
|
+
} else {
|
|
356
|
+
this.prev = null;
|
|
357
|
+
}
|
|
358
|
+
if (next) {
|
|
359
|
+
next.prev = this;
|
|
360
|
+
this.next = next;
|
|
361
|
+
} else {
|
|
362
|
+
this.next = null;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
try {
|
|
366
|
+
// add if support for Symbol.iterator is present
|
|
367
|
+
iterator.__require()(Yallist);
|
|
368
|
+
} catch (er) {}
|
|
369
|
+
|
|
370
|
+
exports.yallist = yallist;
|