hexo-adsense 1.0.21 → 1.0.25

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 (99) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +20 -6
  3. package/lib/index.js +8 -1
  4. package/lib/source/adblock.css +2 -83
  5. package/lib/source/adblock.js +1 -31
  6. package/lib/source/article-ads.css +2 -11
  7. package/lib/source/article-ads.js +1 -270
  8. package/lib/source/blogger-redirect.html +1 -14
  9. package/lib/source/https.js +1 -4
  10. package/lib/src/article-ads.d.ts +1 -1
  11. package/lib/src/article-ads.js +6 -6
  12. package/lib/src/config.d.ts +12 -19
  13. package/lib/src/config.js +3 -5
  14. package/lib/src/utils.d.ts +9 -1
  15. package/lib/src/utils.js +2 -2
  16. package/package.json +20 -5
  17. package/packages/hexo-cli-extras/.eslintrc +13 -0
  18. package/packages/hexo-cli-extras/LICENSE.md +20 -0
  19. package/packages/hexo-cli-extras/README.md +146 -0
  20. package/packages/hexo-cli-extras/docs/basic.gif +0 -0
  21. package/packages/hexo-cli-extras/docs/gui.gif +0 -0
  22. package/packages/hexo-cli-extras/docs/remove.png +0 -0
  23. package/packages/hexo-cli-extras/docs/rename.png +0 -0
  24. package/packages/hexo-cli-extras/index.js +48 -0
  25. package/packages/hexo-cli-extras/lib/edit.js +209 -0
  26. package/packages/hexo-cli-extras/lib/env.js +52 -0
  27. package/packages/hexo-cli-extras/lib/extensions.js +23 -0
  28. package/packages/hexo-cli-extras/lib/integrate.js +87 -0
  29. package/packages/hexo-cli-extras/lib/isolate.js +179 -0
  30. package/packages/hexo-cli-extras/lib/remove.js +145 -0
  31. package/packages/hexo-cli-extras/lib/rename.js +171 -0
  32. package/packages/hexo-cli-extras/package.json +34 -0
  33. package/packages/hexo-extend-injector2/.eslintrc +4 -0
  34. package/packages/hexo-extend-injector2/.github/workflows/linter.yml +27 -0
  35. package/packages/hexo-extend-injector2/.github/workflows/tester.yml +24 -0
  36. package/packages/hexo-extend-injector2/.vscode/settings.json +10 -0
  37. package/packages/hexo-extend-injector2/LICENSE +165 -0
  38. package/packages/hexo-extend-injector2/README-ZH.md +189 -0
  39. package/packages/hexo-extend-injector2/README.md +191 -0
  40. package/packages/hexo-extend-injector2/USAGE.md +38 -0
  41. package/packages/hexo-extend-injector2/index.js +13 -0
  42. package/packages/hexo-extend-injector2/lib/bundle/css-bundle.js +79 -0
  43. package/packages/hexo-extend-injector2/lib/bundle/css-generator.js +13 -0
  44. package/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.js +29 -0
  45. package/packages/hexo-extend-injector2/lib/bundle/js-bundle.js +42 -0
  46. package/packages/hexo-extend-injector2/lib/bundle/js-generator.js +10 -0
  47. package/packages/hexo-extend-injector2/lib/default-config.js +52 -0
  48. package/packages/hexo-extend-injector2/lib/filter.js +24 -0
  49. package/packages/hexo-extend-injector2/lib/helper/injector.js +6 -0
  50. package/packages/hexo-extend-injector2/lib/helper/next-inject.js +14 -0
  51. package/packages/hexo-extend-injector2/lib/injector.js +128 -0
  52. package/packages/hexo-extend-injector2/lib/load.js +45 -0
  53. package/packages/hexo-extend-injector2/lib/next-point.js +19 -0
  54. package/packages/hexo-extend-injector2/lib/next.js +87 -0
  55. package/packages/hexo-extend-injector2/lib/order.js +9 -0
  56. package/packages/hexo-extend-injector2/package.json +49 -0
  57. package/packages/hexo-extend-injector2/renovate.json +6 -0
  58. package/packages/hexo-extend-injector2/test/.eslintrc +3 -0
  59. package/packages/hexo-extend-injector2/test/index.js +18 -0
  60. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-css.js +86 -0
  61. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-js.js +36 -0
  62. package/packages/hexo-extend-injector2/test/lib/bundle/test.css +3 -0
  63. package/packages/hexo-extend-injector2/test/lib/bundle/test.js +5 -0
  64. package/packages/hexo-extend-injector2/test/lib/helper/injector.js +45 -0
  65. package/packages/hexo-extend-injector2/test/lib/helper/next-inject.js +69 -0
  66. package/packages/hexo-extend-injector2/test/lib/hexo-compatible.js +250 -0
  67. package/packages/hexo-extend-injector2/test/lib/hexo-injector.js +37 -0
  68. package/packages/hexo-extend-injector2/test/lib/injector.js +93 -0
  69. package/packages/memoize/CHANGELOG.md +82 -0
  70. package/packages/memoize/CHANGES +124 -0
  71. package/packages/memoize/LICENSE +15 -0
  72. package/packages/memoize/README.md +503 -0
  73. package/packages/memoize/ext/async.js +154 -0
  74. package/packages/memoize/ext/dispose.js +33 -0
  75. package/packages/memoize/ext/max-age.js +90 -0
  76. package/packages/memoize/ext/max.js +27 -0
  77. package/packages/memoize/ext/promise.js +147 -0
  78. package/packages/memoize/ext/ref-counter.js +48 -0
  79. package/packages/memoize/index.js +34 -0
  80. package/packages/memoize/lib/configure-map.js +182 -0
  81. package/packages/memoize/lib/methods.js +32 -0
  82. package/packages/memoize/lib/registered-extensions.js +1 -0
  83. package/packages/memoize/lib/resolve-length.js +15 -0
  84. package/packages/memoize/lib/resolve-normalize.js +17 -0
  85. package/packages/memoize/lib/resolve-resolve.js +21 -0
  86. package/packages/memoize/lib/weak.js +134 -0
  87. package/packages/memoize/methods-plain.js +3 -0
  88. package/packages/memoize/methods.js +3 -0
  89. package/packages/memoize/normalizers/get-1.js +29 -0
  90. package/packages/memoize/normalizers/get-fixed.js +71 -0
  91. package/packages/memoize/normalizers/get-primitive-fixed.js +16 -0
  92. package/packages/memoize/normalizers/get.js +90 -0
  93. package/packages/memoize/normalizers/primitive.js +9 -0
  94. package/packages/memoize/package.json +60 -0
  95. package/packages/memoize/plain.js +37 -0
  96. package/packages/memoize/profile.js +107 -0
  97. package/packages/memoize/repository.md +1 -0
  98. package/packages/memoize/weak-plain.js +3 -0
  99. package/packages/memoize/weak.js +3 -0
@@ -0,0 +1,182 @@
1
+ /* eslint no-eq-null: 0, eqeqeq: 0, no-unused-vars: 0 */
2
+
3
+ "use strict";
4
+
5
+ var customError = require("es5-ext/error/custom")
6
+ , defineLength = require("es5-ext/function/_define-length")
7
+ , d = require("d")
8
+ , ee = require("event-emitter").methods
9
+ , resolveResolve = require("./resolve-resolve")
10
+ , resolveNormalize = require("./resolve-normalize");
11
+
12
+ var apply = Function.prototype.apply
13
+ , call = Function.prototype.call
14
+ , create = Object.create
15
+ , defineProperties = Object.defineProperties
16
+ , on = ee.on
17
+ , emit = ee.emit;
18
+
19
+ module.exports = function (original, length, options) {
20
+ var cache = create(null)
21
+ , conf
22
+ , memLength
23
+ , get
24
+ , set
25
+ , del
26
+ , clear
27
+ , extDel
28
+ , extGet
29
+ , extHas
30
+ , normalizer
31
+ , getListeners
32
+ , setListeners
33
+ , deleteListeners
34
+ , memoized
35
+ , resolve;
36
+ if (length !== false) memLength = length;
37
+ else if (isNaN(original.length)) memLength = 1;
38
+ else memLength = original.length;
39
+
40
+ if (options.normalizer) {
41
+ normalizer = resolveNormalize(options.normalizer);
42
+ get = normalizer.get;
43
+ set = normalizer.set;
44
+ del = normalizer.delete;
45
+ clear = normalizer.clear;
46
+ }
47
+ if (options.resolvers != null) resolve = resolveResolve(options.resolvers);
48
+
49
+ if (get) {
50
+ memoized = defineLength(function (arg) {
51
+ var id, result, args = arguments;
52
+ if (resolve) args = resolve(args);
53
+ id = get(args);
54
+ if (id !== null) {
55
+ if (hasOwnProperty.call(cache, id)) {
56
+ if (getListeners) conf.emit("get", id, args, this);
57
+ return cache[id];
58
+ }
59
+ }
60
+ if (args.length === 1) result = call.call(original, this, args[0]);
61
+ else result = apply.call(original, this, args);
62
+ if (id === null) {
63
+ id = get(args);
64
+ if (id !== null) throw customError("Circular invocation", "CIRCULAR_INVOCATION");
65
+ id = set(args);
66
+ } else if (hasOwnProperty.call(cache, id)) {
67
+ throw customError("Circular invocation", "CIRCULAR_INVOCATION");
68
+ }
69
+ cache[id] = result;
70
+ if (setListeners) conf.emit("set", id, null, result);
71
+ return result;
72
+ }, memLength);
73
+ } else if (length === 0) {
74
+ memoized = function () {
75
+ var result;
76
+ if (hasOwnProperty.call(cache, "data")) {
77
+ if (getListeners) conf.emit("get", "data", arguments, this);
78
+ return cache.data;
79
+ }
80
+ if (arguments.length) result = apply.call(original, this, arguments);
81
+ else result = call.call(original, this);
82
+ if (hasOwnProperty.call(cache, "data")) {
83
+ throw customError("Circular invocation", "CIRCULAR_INVOCATION");
84
+ }
85
+ cache.data = result;
86
+ if (setListeners) conf.emit("set", "data", null, result);
87
+ return result;
88
+ };
89
+ } else {
90
+ memoized = function (arg) {
91
+ var result, args = arguments, id;
92
+ if (resolve) args = resolve(arguments);
93
+ id = String(args[0]);
94
+ if (hasOwnProperty.call(cache, id)) {
95
+ if (getListeners) conf.emit("get", id, args, this);
96
+ return cache[id];
97
+ }
98
+ if (args.length === 1) result = call.call(original, this, args[0]);
99
+ else result = apply.call(original, this, args);
100
+ if (hasOwnProperty.call(cache, id)) {
101
+ throw customError("Circular invocation", "CIRCULAR_INVOCATION");
102
+ }
103
+ cache[id] = result;
104
+ if (setListeners) conf.emit("set", id, null, result);
105
+ return result;
106
+ };
107
+ }
108
+ conf = {
109
+ original: original,
110
+ memoized: memoized,
111
+ profileName: options.profileName,
112
+ get: function (args) {
113
+ if (resolve) args = resolve(args);
114
+ if (get) return get(args);
115
+ return String(args[0]);
116
+ },
117
+ has: function (id) { return hasOwnProperty.call(cache, id); },
118
+ delete: function (id) {
119
+ var result;
120
+ if (!hasOwnProperty.call(cache, id)) return;
121
+ if (del) del(id);
122
+ result = cache[id];
123
+ delete cache[id];
124
+ if (deleteListeners) conf.emit("delete", id, result);
125
+ },
126
+ clear: function () {
127
+ var oldCache = cache;
128
+ if (clear) clear();
129
+ cache = create(null);
130
+ conf.emit("clear", oldCache);
131
+ },
132
+ on: function (type, listener) {
133
+ if (type === "get") getListeners = true;
134
+ else if (type === "set") setListeners = true;
135
+ else if (type === "delete") deleteListeners = true;
136
+ return on.call(this, type, listener);
137
+ },
138
+ emit: emit,
139
+ updateEnv: function () { original = conf.original; }
140
+ };
141
+ if (get) {
142
+ extDel = defineLength(function (arg) {
143
+ var id, args = arguments;
144
+ if (resolve) args = resolve(args);
145
+ id = get(args);
146
+ if (id === null) return;
147
+ conf.delete(id);
148
+ }, memLength);
149
+ } else if (length === 0) {
150
+ extDel = function () { return conf.delete("data"); };
151
+ } else {
152
+ extDel = function (arg) {
153
+ if (resolve) arg = resolve(arguments)[0];
154
+ return conf.delete(arg);
155
+ };
156
+ }
157
+ extGet = defineLength(function () {
158
+ var id, args = arguments;
159
+ if (length === 0) return cache.data;
160
+ if (resolve) args = resolve(args);
161
+ if (get) id = get(args);
162
+ else id = String(args[0]);
163
+ return cache[id];
164
+ });
165
+ extHas = defineLength(function () {
166
+ var id, args = arguments;
167
+ if (length === 0) return conf.has("data");
168
+ if (resolve) args = resolve(args);
169
+ if (get) id = get(args);
170
+ else id = String(args[0]);
171
+ if (id === null) return false;
172
+ return conf.has(id);
173
+ });
174
+ defineProperties(memoized, {
175
+ __memoized__: d(true),
176
+ delete: d(extDel),
177
+ clear: d(conf.clear),
178
+ _get: d(extGet),
179
+ _has: d(extHas)
180
+ });
181
+ return conf;
182
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var forEach = require("es5-ext/object/for-each")
4
+ , normalizeOpts = require("es5-ext/object/normalize-options")
5
+ , callable = require("es5-ext/object/valid-callable")
6
+ , lazy = require("d/lazy")
7
+ , resolveLength = require("./resolve-length")
8
+ , extensions = require("./registered-extensions");
9
+
10
+ module.exports = function (memoize) {
11
+ return function (props) {
12
+ forEach(props, function (desc) {
13
+ var fn = callable(desc.value), length;
14
+ desc.value = function (options) {
15
+ if (options.getNormalizer) {
16
+ options = normalizeOpts(options);
17
+ if (length === undefined) {
18
+ length = resolveLength(
19
+ options.length,
20
+ fn.length,
21
+ options.async && extensions.async
22
+ );
23
+ }
24
+ options.normalizer = options.getNormalizer(length);
25
+ delete options.getNormalizer;
26
+ }
27
+ return memoize(fn.bind(this), options);
28
+ };
29
+ });
30
+ return lazy(props);
31
+ };
32
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var toPosInt = require("es5-ext/number/to-pos-integer");
4
+
5
+ module.exports = function (optsLength, fnLength, isAsync) {
6
+ var length;
7
+ if (isNaN(optsLength)) {
8
+ length = fnLength;
9
+ if (!(length >= 0)) return 1;
10
+ if (isAsync && length) return length - 1;
11
+ return length;
12
+ }
13
+ if (optsLength === false) return false;
14
+ return toPosInt(optsLength);
15
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var callable = require("es5-ext/object/valid-callable");
4
+
5
+ module.exports = function (userNormalizer) {
6
+ var normalizer;
7
+ if (typeof userNormalizer === "function") return { set: userNormalizer, get: userNormalizer };
8
+ normalizer = { get: callable(userNormalizer.get) };
9
+ if (userNormalizer.set !== undefined) {
10
+ normalizer.set = callable(userNormalizer.set);
11
+ if (userNormalizer.delete) normalizer.delete = callable(userNormalizer.delete);
12
+ if (userNormalizer.clear) normalizer.clear = callable(userNormalizer.clear);
13
+ return normalizer;
14
+ }
15
+ normalizer.set = normalizer.get;
16
+ return normalizer;
17
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var toArray = require("es5-ext/array/to-array")
4
+ , isValue = require("es5-ext/object/is-value")
5
+ , callable = require("es5-ext/object/valid-callable");
6
+
7
+ var slice = Array.prototype.slice, resolveArgs;
8
+
9
+ resolveArgs = function (args) {
10
+ return this.map(function (resolve, i) {
11
+ return resolve ? resolve(args[i]) : args[i];
12
+ }).concat(slice.call(args, this.length));
13
+ };
14
+
15
+ module.exports = function (resolvers) {
16
+ resolvers = toArray(resolvers);
17
+ resolvers.forEach(function (resolve) {
18
+ if (isValue(resolve)) callable(resolve);
19
+ });
20
+ return resolveArgs.bind(resolvers);
21
+ };
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var customError = require("es5-ext/error/custom")
4
+ , defineLength = require("es5-ext/function/_define-length")
5
+ , partial = require("es5-ext/function/#/partial")
6
+ , copy = require("es5-ext/object/copy")
7
+ , normalizeOpts = require("es5-ext/object/normalize-options")
8
+ , callable = require("es5-ext/object/valid-callable")
9
+ , d = require("d")
10
+ , WeakMap = require("es6-weak-map")
11
+ , resolveLength = require("./resolve-length")
12
+ , extensions = require("./registered-extensions")
13
+ , resolveResolve = require("./resolve-resolve")
14
+ , resolveNormalize = require("./resolve-normalize");
15
+
16
+ var slice = Array.prototype.slice, defineProperties = Object.defineProperties;
17
+
18
+ module.exports = function (memoize) {
19
+ return function (fn/*, options*/) {
20
+ var map, length, options = normalizeOpts(arguments[1]), memoized, resolve, normalizer;
21
+
22
+ callable(fn);
23
+
24
+ // Do not memoize already memoized function
25
+ if (hasOwnProperty.call(fn, "__memoized__") && !options.force) return fn;
26
+
27
+ length = resolveLength(options.length, fn.length, options.async && extensions.async);
28
+ options.length = length ? length - 1 : 0;
29
+ map = new WeakMap();
30
+
31
+ if (options.resolvers) resolve = resolveResolve(options.resolvers);
32
+ if (options.normalizer) normalizer = resolveNormalize(options.normalizer);
33
+
34
+ if (
35
+ length === 1 &&
36
+ !normalizer &&
37
+ !options.async &&
38
+ !options.dispose &&
39
+ !options.maxAge &&
40
+ !options.max &&
41
+ !options.refCounter
42
+ ) {
43
+ return defineProperties(
44
+ function (obj) {
45
+ var result, args = arguments;
46
+ if (resolve) args = resolve(args);
47
+ obj = args[0];
48
+ if (map.has(obj)) return map.get(obj);
49
+ result = fn.apply(this, args);
50
+ if (map.has(obj)) {
51
+ throw customError("Circular invocation", "CIRCULAR_INVOCATION");
52
+ }
53
+ map.set(obj, result);
54
+ return result;
55
+ },
56
+ {
57
+ __memoized__: d(true),
58
+ delete: d(function (obj) {
59
+ if (resolve) obj = resolve(arguments)[0];
60
+ return map.delete(obj);
61
+ })
62
+ }
63
+ );
64
+ }
65
+ memoized = defineProperties(
66
+ defineLength(function (obj) {
67
+ var memoizer, args = arguments;
68
+ if (resolve) {
69
+ args = resolve(args);
70
+ obj = args[0];
71
+ }
72
+ memoizer = map.get(obj);
73
+ if (!memoizer) {
74
+ if (normalizer) {
75
+ options = copy(options);
76
+ options.normalizer = copy(normalizer);
77
+ options.normalizer.get = partial.call(options.normalizer.get, obj);
78
+ options.normalizer.set = partial.call(options.normalizer.set, obj);
79
+ if (options.normalizer.delete) {
80
+ options.normalizer.delete = partial.call(
81
+ options.normalizer.delete, obj
82
+ );
83
+ }
84
+ }
85
+ map.set(obj, memoizer = memoize(partial.call(fn, obj), options));
86
+ }
87
+ return memoizer.apply(this, slice.call(args, 1));
88
+ }, length),
89
+ {
90
+ __memoized__: d(true),
91
+ delete: d(
92
+ defineLength(function (obj) {
93
+ var memoizer, args = arguments;
94
+ if (resolve) {
95
+ args = resolve(args);
96
+ obj = args[0];
97
+ }
98
+ memoizer = map.get(obj);
99
+ if (!memoizer) return;
100
+ memoizer.delete.apply(this, slice.call(args, 1));
101
+ }, length)
102
+ )
103
+ }
104
+ );
105
+ if (!options.refCounter) return memoized;
106
+ defineProperties(memoized, {
107
+ deleteRef: d(
108
+ defineLength(function (obj) {
109
+ var memoizer, args = arguments;
110
+ if (resolve) {
111
+ args = resolve(args);
112
+ obj = args[0];
113
+ }
114
+ memoizer = map.get(obj);
115
+ if (!memoizer) return null;
116
+ return memoizer.deleteRef.apply(this, slice.call(args, 1));
117
+ }, length)
118
+ ),
119
+ getRefCount: d(
120
+ defineLength(function (obj) {
121
+ var memoizer, args = arguments;
122
+ if (resolve) {
123
+ args = resolve(args);
124
+ obj = args[0];
125
+ }
126
+ memoizer = map.get(obj);
127
+ if (!memoizer) return 0;
128
+ return memoizer.getRefCount.apply(this, slice.call(args, 1));
129
+ }, length)
130
+ )
131
+ });
132
+ return memoized;
133
+ };
134
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ module.exports = require("./lib/methods")(require("./plain"));
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ module.exports = require("./lib/methods")(require("./"));
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var indexOf = require("es5-ext/array/#/e-index-of");
4
+
5
+ module.exports = function () {
6
+ var lastId = 0, argsMap = [], cache = [];
7
+ return {
8
+ get: function (args) {
9
+ var index = indexOf.call(argsMap, args[0]);
10
+ return index === -1 ? null : cache[index];
11
+ },
12
+ set: function (args) {
13
+ argsMap.push(args[0]);
14
+ cache.push(++lastId);
15
+ return lastId;
16
+ },
17
+ delete: function (id) {
18
+ var index = indexOf.call(cache, id);
19
+ if (index !== -1) {
20
+ argsMap.splice(index, 1);
21
+ cache.splice(index, 1);
22
+ }
23
+ },
24
+ clear: function () {
25
+ argsMap = [];
26
+ cache = [];
27
+ }
28
+ };
29
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var indexOf = require("es5-ext/array/#/e-index-of")
4
+ , create = Object.create;
5
+
6
+ module.exports = function (length) {
7
+ var lastId = 0, map = [[], []], cache = create(null);
8
+ return {
9
+ get: function (args) {
10
+ var index = 0, set = map, i;
11
+ while (index < length - 1) {
12
+ i = indexOf.call(set[0], args[index]);
13
+ if (i === -1) return null;
14
+ set = set[1][i];
15
+ ++index;
16
+ }
17
+ i = indexOf.call(set[0], args[index]);
18
+ if (i === -1) return null;
19
+ return set[1][i] || null;
20
+ },
21
+ set: function (args) {
22
+ var index = 0, set = map, i;
23
+ while (index < length - 1) {
24
+ i = indexOf.call(set[0], args[index]);
25
+ if (i === -1) {
26
+ i = set[0].push(args[index]) - 1;
27
+ set[1].push([[], []]);
28
+ }
29
+ set = set[1][i];
30
+ ++index;
31
+ }
32
+ i = indexOf.call(set[0], args[index]);
33
+ if (i === -1) {
34
+ i = set[0].push(args[index]) - 1;
35
+ }
36
+ set[1][i] = ++lastId;
37
+ cache[lastId] = args;
38
+ return lastId;
39
+ },
40
+ delete: function (id) {
41
+ var index = 0, set = map, i, path = [], args = cache[id];
42
+ while (index < length - 1) {
43
+ i = indexOf.call(set[0], args[index]);
44
+ if (i === -1) {
45
+ return;
46
+ }
47
+ path.push(set, i);
48
+ set = set[1][i];
49
+ ++index;
50
+ }
51
+ i = indexOf.call(set[0], args[index]);
52
+ if (i === -1) {
53
+ return;
54
+ }
55
+ id = set[1][i];
56
+ set[0].splice(i, 1);
57
+ set[1].splice(i, 1);
58
+ while (!set[0].length && path.length) {
59
+ i = path.pop();
60
+ set = path.pop();
61
+ set[0].splice(i, 1);
62
+ set[1].splice(i, 1);
63
+ }
64
+ delete cache[id];
65
+ },
66
+ clear: function () {
67
+ map = [[], []];
68
+ cache = create(null);
69
+ }
70
+ };
71
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ module.exports = function (length) {
4
+ if (!length) {
5
+ return function () {
6
+ return "";
7
+ };
8
+ }
9
+ return function (args) {
10
+ var id = String(args[0]), i = 0, currentLength = length;
11
+ while (--currentLength) {
12
+ id += "\u0001" + args[++i];
13
+ }
14
+ return id;
15
+ };
16
+ };
@@ -0,0 +1,90 @@
1
+ /* eslint max-statements: 0 */
2
+
3
+ "use strict";
4
+
5
+ var indexOf = require("es5-ext/array/#/e-index-of");
6
+
7
+ var create = Object.create;
8
+
9
+ module.exports = function () {
10
+ var lastId = 0, map = [], cache = create(null);
11
+ return {
12
+ get: function (args) {
13
+ var index = 0, set = map, i, length = args.length;
14
+ if (length === 0) return set[length] || null;
15
+ if ((set = set[length])) {
16
+ while (index < length - 1) {
17
+ i = indexOf.call(set[0], args[index]);
18
+ if (i === -1) return null;
19
+ set = set[1][i];
20
+ ++index;
21
+ }
22
+ i = indexOf.call(set[0], args[index]);
23
+ if (i === -1) return null;
24
+ return set[1][i] || null;
25
+ }
26
+ return null;
27
+ },
28
+ set: function (args) {
29
+ var index = 0, set = map, i, length = args.length;
30
+ if (length === 0) {
31
+ set[length] = ++lastId;
32
+ } else {
33
+ if (!set[length]) {
34
+ set[length] = [[], []];
35
+ }
36
+ set = set[length];
37
+ while (index < length - 1) {
38
+ i = indexOf.call(set[0], args[index]);
39
+ if (i === -1) {
40
+ i = set[0].push(args[index]) - 1;
41
+ set[1].push([[], []]);
42
+ }
43
+ set = set[1][i];
44
+ ++index;
45
+ }
46
+ i = indexOf.call(set[0], args[index]);
47
+ if (i === -1) {
48
+ i = set[0].push(args[index]) - 1;
49
+ }
50
+ set[1][i] = ++lastId;
51
+ }
52
+ cache[lastId] = args;
53
+ return lastId;
54
+ },
55
+ delete: function (id) {
56
+ var index = 0, set = map, i, args = cache[id], length = args.length, path = [];
57
+ if (length === 0) {
58
+ delete set[length];
59
+ } else if ((set = set[length])) {
60
+ while (index < length - 1) {
61
+ i = indexOf.call(set[0], args[index]);
62
+ if (i === -1) {
63
+ return;
64
+ }
65
+ path.push(set, i);
66
+ set = set[1][i];
67
+ ++index;
68
+ }
69
+ i = indexOf.call(set[0], args[index]);
70
+ if (i === -1) {
71
+ return;
72
+ }
73
+ id = set[1][i];
74
+ set[0].splice(i, 1);
75
+ set[1].splice(i, 1);
76
+ while (!set[0].length && path.length) {
77
+ i = path.pop();
78
+ set = path.pop();
79
+ set[0].splice(i, 1);
80
+ set[1].splice(i, 1);
81
+ }
82
+ }
83
+ delete cache[id];
84
+ },
85
+ clear: function () {
86
+ map = [];
87
+ cache = create(null);
88
+ }
89
+ };
90
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ module.exports = function (args) {
4
+ var id, i, length = args.length;
5
+ if (!length) return "\u0002";
6
+ id = String(args[i = 0]);
7
+ while (--length) id += "\u0001" + args[++i];
8
+ return id;
9
+ };
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "memoizee",
3
+ "version": "0.4.15",
4
+ "description": "Memoize/cache function results",
5
+ "author": "Mariusz Nowak <medikoo@medikoo.com> (http://www.medikoo.com/)",
6
+ "keywords": [
7
+ "memoize",
8
+ "memoizer",
9
+ "cache",
10
+ "memoization",
11
+ "memo",
12
+ "memcached",
13
+ "hashing.",
14
+ "storage",
15
+ "caching",
16
+ "memory",
17
+ "gc",
18
+ "weak",
19
+ "garbage",
20
+ "collector",
21
+ "async"
22
+ ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git://github.com/medikoo/memoizee.git"
26
+ },
27
+ "dependencies": {
28
+ "d": "^1.0.1",
29
+ "es5-ext": "^0.10.53",
30
+ "es6-weak-map": "^2.0.3",
31
+ "event-emitter": "^0.3.5",
32
+ "is-promise": "^2.2.2",
33
+ "lru-queue": "^0.1.0",
34
+ "next-tick": "^1.1.0",
35
+ "timers-ext": "^0.1.7"
36
+ },
37
+ "devDependencies": {
38
+ "bluebird": "^3.7.2",
39
+ "eslint": "^5.16.0",
40
+ "eslint-config-medikoo-es5": "^1.7.3",
41
+ "plain-promise": "^0.1.1",
42
+ "tad": "^2.0.1"
43
+ },
44
+ "eslintConfig": {
45
+ "extends": "medikoo-es5",
46
+ "root": true,
47
+ "globals": {
48
+ "setTimeout": true,
49
+ "clearTimeout": true
50
+ },
51
+ "rules": {
52
+ "max-lines-per-function": "off"
53
+ }
54
+ },
55
+ "scripts": {
56
+ "lint": "eslint --ignore-path=.gitignore .",
57
+ "test": "tad"
58
+ },
59
+ "license": "ISC"
60
+ }