hexo-adsense 1.0.26 → 2.0.0

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 (157) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +0 -0
  3. package/dist/index.cjs +757 -0
  4. package/dist/index.d.cts +2 -0
  5. package/dist/index.d.mts +2 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +740 -0
  8. package/dist/index.mjs +740 -0
  9. package/dist/source/adblock.css +2 -0
  10. package/{lib → dist}/source/adblock.js +0 -0
  11. package/{lib → dist}/source/article-ads.css +0 -0
  12. package/dist/source/article-ads.js +1 -0
  13. package/{lib/source/article-ads.js → dist/source/article-ads.old.js} +0 -0
  14. package/{lib → dist}/source/blogger-redirect.html +0 -0
  15. package/{lib → dist}/source/https.js +0 -0
  16. package/{lib → dist}/source/in_article_ads_test.html +0 -0
  17. package/package.json +122 -37
  18. package/{README.md → readme.md} +29 -11
  19. package/lib/index.d.ts +0 -1
  20. package/lib/index.js +0 -85
  21. package/lib/packages/hexo-cli-extras/lib/env.d.ts +0 -3
  22. package/lib/packages/hexo-cli-extras/lib/env.js +0 -49
  23. package/lib/packages/hexo-extend-injector2/index.d.ts +0 -2
  24. package/lib/packages/hexo-extend-injector2/index.js +0 -12
  25. package/lib/packages/hexo-extend-injector2/lib/bundle/css-bundle.d.ts +0 -2
  26. package/lib/packages/hexo-extend-injector2/lib/bundle/css-bundle.js +0 -64
  27. package/lib/packages/hexo-extend-injector2/lib/bundle/css-generator.d.ts +0 -2
  28. package/lib/packages/hexo-extend-injector2/lib/bundle/css-generator.js +0 -12
  29. package/lib/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.d.ts +0 -2
  30. package/lib/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.js +0 -28
  31. package/lib/packages/hexo-extend-injector2/lib/bundle/js-bundle.d.ts +0 -2
  32. package/lib/packages/hexo-extend-injector2/lib/bundle/js-bundle.js +0 -32
  33. package/lib/packages/hexo-extend-injector2/lib/bundle/js-generator.d.ts +0 -2
  34. package/lib/packages/hexo-extend-injector2/lib/bundle/js-generator.js +0 -8
  35. package/lib/packages/hexo-extend-injector2/lib/default-config.d.ts +0 -39
  36. package/lib/packages/hexo-extend-injector2/lib/default-config.js +0 -46
  37. package/lib/packages/hexo-extend-injector2/lib/filter.d.ts +0 -2
  38. package/lib/packages/hexo-extend-injector2/lib/filter.js +0 -22
  39. package/lib/packages/hexo-extend-injector2/lib/helper/injector.d.ts +0 -2
  40. package/lib/packages/hexo-extend-injector2/lib/helper/injector.js +0 -5
  41. package/lib/packages/hexo-extend-injector2/lib/helper/next-inject.d.ts +0 -2
  42. package/lib/packages/hexo-extend-injector2/lib/helper/next-inject.js +0 -12
  43. package/lib/packages/hexo-extend-injector2/lib/injector.d.ts +0 -29
  44. package/lib/packages/hexo-extend-injector2/lib/injector.js +0 -125
  45. package/lib/packages/hexo-extend-injector2/lib/load.d.ts +0 -3
  46. package/lib/packages/hexo-extend-injector2/lib/load.js +0 -37
  47. package/lib/packages/hexo-extend-injector2/lib/next-point.d.ts +0 -2
  48. package/lib/packages/hexo-extend-injector2/lib/next-point.js +0 -18
  49. package/lib/packages/hexo-extend-injector2/lib/next.d.ts +0 -2
  50. package/lib/packages/hexo-extend-injector2/lib/next.js +0 -99
  51. package/lib/packages/hexo-extend-injector2/lib/order.d.ts +0 -5
  52. package/lib/packages/hexo-extend-injector2/lib/order.js +0 -8
  53. package/lib/source/adblock.css +0 -2
  54. package/lib/src/article-ads.d.ts +0 -20
  55. package/lib/src/article-ads.js +0 -304
  56. package/lib/src/checkLocalHost.d.ts +0 -10
  57. package/lib/src/checkLocalHost.js +0 -37
  58. package/lib/src/config.d.ts +0 -13
  59. package/lib/src/config.js +0 -42
  60. package/lib/src/html-parser.d.ts +0 -9
  61. package/lib/src/html-parser.js +0 -26
  62. package/lib/src/log.d.ts +0 -1
  63. package/lib/src/log.js +0 -11
  64. package/lib/src/logger.d.ts +0 -3
  65. package/lib/src/logger.js +0 -25
  66. package/lib/src/md5.d.ts +0 -2
  67. package/lib/src/md5.js +0 -165
  68. package/lib/src/safestringify.d.ts +0 -2
  69. package/lib/src/safestringify.js +0 -125
  70. package/lib/src/utils.d.ts +0 -31
  71. package/lib/src/utils.js +0 -159
  72. package/lib/src/versionParser.d.ts +0 -27
  73. package/lib/src/versionParser.js +0 -40
  74. package/packages/hexo-cli-extras/.eslintrc +0 -13
  75. package/packages/hexo-cli-extras/LICENSE.md +0 -20
  76. package/packages/hexo-cli-extras/README.md +0 -146
  77. package/packages/hexo-cli-extras/docs/basic.gif +0 -0
  78. package/packages/hexo-cli-extras/docs/gui.gif +0 -0
  79. package/packages/hexo-cli-extras/docs/remove.png +0 -0
  80. package/packages/hexo-cli-extras/docs/rename.png +0 -0
  81. package/packages/hexo-cli-extras/index.js +0 -48
  82. package/packages/hexo-cli-extras/lib/edit.js +0 -209
  83. package/packages/hexo-cli-extras/lib/env.js +0 -52
  84. package/packages/hexo-cli-extras/lib/extensions.js +0 -23
  85. package/packages/hexo-cli-extras/lib/integrate.js +0 -87
  86. package/packages/hexo-cli-extras/lib/isolate.js +0 -179
  87. package/packages/hexo-cli-extras/lib/remove.js +0 -145
  88. package/packages/hexo-cli-extras/lib/rename.js +0 -171
  89. package/packages/hexo-cli-extras/package.json +0 -34
  90. package/packages/hexo-extend-injector2/.eslintrc +0 -4
  91. package/packages/hexo-extend-injector2/.github/workflows/linter.yml +0 -27
  92. package/packages/hexo-extend-injector2/.github/workflows/tester.yml +0 -24
  93. package/packages/hexo-extend-injector2/.vscode/settings.json +0 -10
  94. package/packages/hexo-extend-injector2/LICENSE +0 -165
  95. package/packages/hexo-extend-injector2/README-ZH.md +0 -189
  96. package/packages/hexo-extend-injector2/README.md +0 -191
  97. package/packages/hexo-extend-injector2/USAGE.md +0 -38
  98. package/packages/hexo-extend-injector2/index.js +0 -14
  99. package/packages/hexo-extend-injector2/lib/bundle/css-bundle.js +0 -79
  100. package/packages/hexo-extend-injector2/lib/bundle/css-generator.js +0 -13
  101. package/packages/hexo-extend-injector2/lib/bundle/handle-data-pre.js +0 -29
  102. package/packages/hexo-extend-injector2/lib/bundle/js-bundle.js +0 -42
  103. package/packages/hexo-extend-injector2/lib/bundle/js-generator.js +0 -10
  104. package/packages/hexo-extend-injector2/lib/default-config.js +0 -52
  105. package/packages/hexo-extend-injector2/lib/filter.js +0 -24
  106. package/packages/hexo-extend-injector2/lib/helper/injector.js +0 -6
  107. package/packages/hexo-extend-injector2/lib/helper/next-inject.js +0 -14
  108. package/packages/hexo-extend-injector2/lib/injector.js +0 -128
  109. package/packages/hexo-extend-injector2/lib/load.js +0 -45
  110. package/packages/hexo-extend-injector2/lib/next-point.js +0 -19
  111. package/packages/hexo-extend-injector2/lib/next.js +0 -87
  112. package/packages/hexo-extend-injector2/lib/order.js +0 -9
  113. package/packages/hexo-extend-injector2/package.json +0 -49
  114. package/packages/hexo-extend-injector2/renovate.json +0 -6
  115. package/packages/hexo-extend-injector2/test/.eslintrc +0 -3
  116. package/packages/hexo-extend-injector2/test/index.js +0 -18
  117. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-css.js +0 -86
  118. package/packages/hexo-extend-injector2/test/lib/bundle/bundle-js.js +0 -36
  119. package/packages/hexo-extend-injector2/test/lib/bundle/test.css +0 -3
  120. package/packages/hexo-extend-injector2/test/lib/bundle/test.js +0 -5
  121. package/packages/hexo-extend-injector2/test/lib/helper/injector.js +0 -45
  122. package/packages/hexo-extend-injector2/test/lib/helper/next-inject.js +0 -69
  123. package/packages/hexo-extend-injector2/test/lib/hexo-compatible.js +0 -250
  124. package/packages/hexo-extend-injector2/test/lib/hexo-injector.js +0 -37
  125. package/packages/hexo-extend-injector2/test/lib/injector.js +0 -93
  126. package/packages/memoize/CHANGELOG.md +0 -82
  127. package/packages/memoize/CHANGES +0 -124
  128. package/packages/memoize/LICENSE +0 -15
  129. package/packages/memoize/README.md +0 -503
  130. package/packages/memoize/ext/async.js +0 -154
  131. package/packages/memoize/ext/dispose.js +0 -33
  132. package/packages/memoize/ext/max-age.js +0 -90
  133. package/packages/memoize/ext/max.js +0 -27
  134. package/packages/memoize/ext/promise.js +0 -147
  135. package/packages/memoize/ext/ref-counter.js +0 -48
  136. package/packages/memoize/index.js +0 -34
  137. package/packages/memoize/lib/configure-map.js +0 -182
  138. package/packages/memoize/lib/methods.js +0 -32
  139. package/packages/memoize/lib/registered-extensions.js +0 -1
  140. package/packages/memoize/lib/resolve-length.js +0 -15
  141. package/packages/memoize/lib/resolve-normalize.js +0 -17
  142. package/packages/memoize/lib/resolve-resolve.js +0 -21
  143. package/packages/memoize/lib/weak.js +0 -134
  144. package/packages/memoize/methods-plain.js +0 -3
  145. package/packages/memoize/methods.js +0 -3
  146. package/packages/memoize/normalizers/get-1.js +0 -29
  147. package/packages/memoize/normalizers/get-fixed.js +0 -71
  148. package/packages/memoize/normalizers/get-primitive-fixed.js +0 -16
  149. package/packages/memoize/normalizers/get.js +0 -90
  150. package/packages/memoize/normalizers/primitive.js +0 -9
  151. package/packages/memoize/package.json +0 -60
  152. package/packages/memoize/plain.js +0 -37
  153. package/packages/memoize/profile.js +0 -107
  154. package/packages/memoize/repository.md +0 -1
  155. package/packages/memoize/weak-plain.js +0 -3
  156. package/packages/memoize/weak.js +0 -3
  157. package/unused.md +0 -12
@@ -1,90 +0,0 @@
1
- /* eslint consistent-this: 0 */
2
-
3
- // Timeout cached values
4
-
5
- "use strict";
6
-
7
- var aFrom = require("es5-ext/array/from")
8
- , forEach = require("es5-ext/object/for-each")
9
- , nextTick = require("next-tick")
10
- , isPromise = require("is-promise")
11
- , timeout = require("timers-ext/valid-timeout")
12
- , extensions = require("../lib/registered-extensions");
13
-
14
- var noop = Function.prototype, max = Math.max, min = Math.min, create = Object.create;
15
-
16
- extensions.maxAge = function (maxAge, conf, options) {
17
- var timeouts, postfix, preFetchAge, preFetchTimeouts;
18
-
19
- maxAge = timeout(maxAge);
20
- if (!maxAge) return;
21
-
22
- timeouts = create(null);
23
- postfix =
24
- (options.async && extensions.async) || (options.promise && extensions.promise)
25
- ? "async"
26
- : "";
27
- conf.on("set" + postfix, function (id) {
28
- timeouts[id] = setTimeout(function () { conf.delete(id); }, maxAge);
29
- if (typeof timeouts[id].unref === "function") timeouts[id].unref();
30
- if (!preFetchTimeouts) return;
31
- if (preFetchTimeouts[id]) {
32
- if (preFetchTimeouts[id] !== "nextTick") clearTimeout(preFetchTimeouts[id]);
33
- }
34
- preFetchTimeouts[id] = setTimeout(function () {
35
- delete preFetchTimeouts[id];
36
- }, preFetchAge);
37
- if (typeof preFetchTimeouts[id].unref === "function") preFetchTimeouts[id].unref();
38
- });
39
- conf.on("delete" + postfix, function (id) {
40
- clearTimeout(timeouts[id]);
41
- delete timeouts[id];
42
- if (!preFetchTimeouts) return;
43
- if (preFetchTimeouts[id] !== "nextTick") clearTimeout(preFetchTimeouts[id]);
44
- delete preFetchTimeouts[id];
45
- });
46
-
47
- if (options.preFetch) {
48
- if (options.preFetch === true || isNaN(options.preFetch)) {
49
- preFetchAge = 0.333;
50
- } else {
51
- preFetchAge = max(min(Number(options.preFetch), 1), 0);
52
- }
53
- if (preFetchAge) {
54
- preFetchTimeouts = {};
55
- preFetchAge = (1 - preFetchAge) * maxAge;
56
- conf.on("get" + postfix, function (id, args, context) {
57
- if (!preFetchTimeouts[id]) {
58
- preFetchTimeouts[id] = "nextTick";
59
- nextTick(function () {
60
- var result;
61
- if (preFetchTimeouts[id] !== "nextTick") return;
62
- delete preFetchTimeouts[id];
63
- conf.delete(id);
64
- if (options.async) {
65
- args = aFrom(args);
66
- args.push(noop);
67
- }
68
- result = conf.memoized.apply(context, args);
69
- if (options.promise) {
70
- // Supress eventual error warnings
71
- if (isPromise(result)) {
72
- if (typeof result.done === "function") result.done(noop, noop);
73
- else result.then(noop, noop);
74
- }
75
- }
76
- });
77
- }
78
- });
79
- }
80
- }
81
-
82
- conf.on("clear" + postfix, function () {
83
- forEach(timeouts, function (id) { clearTimeout(id); });
84
- timeouts = {};
85
- if (preFetchTimeouts) {
86
- forEach(preFetchTimeouts, function (id) { if (id !== "nextTick") clearTimeout(id); });
87
- preFetchTimeouts = {};
88
- }
89
- });
90
- };
@@ -1,27 +0,0 @@
1
- // Limit cache size, LRU (least recently used) algorithm.
2
-
3
- "use strict";
4
-
5
- var toPosInteger = require("es5-ext/number/to-pos-integer")
6
- , lruQueue = require("lru-queue")
7
- , extensions = require("../lib/registered-extensions");
8
-
9
- extensions.max = function (max, conf, options) {
10
- var postfix, queue, hit;
11
-
12
- max = toPosInteger(max);
13
- if (!max) return;
14
-
15
- queue = lruQueue(max);
16
- postfix = (options.async && extensions.async) || (options.promise && extensions.promise)
17
- ? "async" : "";
18
-
19
- conf.on("set" + postfix, hit = function (id) {
20
- id = queue.hit(id);
21
- if (id === undefined) return;
22
- conf.delete(id);
23
- });
24
- conf.on("get" + postfix, hit);
25
- conf.on("delete" + postfix, queue.delete);
26
- conf.on("clear" + postfix, queue.clear);
27
- };
@@ -1,147 +0,0 @@
1
- /* eslint max-statements: 0 */
2
-
3
- // Support for functions returning promise
4
-
5
- "use strict";
6
-
7
- var objectMap = require("es5-ext/object/map")
8
- , primitiveSet = require("es5-ext/object/primitive-set")
9
- , ensureString = require("es5-ext/object/validate-stringifiable-value")
10
- , toShortString = require("es5-ext/to-short-string-representation")
11
- , isPromise = require("is-promise")
12
- , nextTick = require("next-tick");
13
-
14
- var create = Object.create
15
- , supportedModes = primitiveSet("then", "then:finally", "done", "done:finally");
16
-
17
- require("../lib/registered-extensions").promise = function (mode, conf) {
18
- var waiting = create(null), cache = create(null), promises = create(null);
19
-
20
- if (mode === true) {
21
- mode = null;
22
- } else {
23
- mode = ensureString(mode);
24
- if (!supportedModes[mode]) {
25
- throw new TypeError("'" + toShortString(mode) + "' is not valid promise mode");
26
- }
27
- }
28
-
29
- // After not from cache call
30
- conf.on("set", function (id, ignore, promise) {
31
- var isFailed = false;
32
-
33
- if (!isPromise(promise)) {
34
- // Non promise result
35
- cache[id] = promise;
36
- conf.emit("setasync", id, 1);
37
- return;
38
- }
39
- waiting[id] = 1;
40
- promises[id] = promise;
41
- var onSuccess = function (result) {
42
- var count = waiting[id];
43
- if (isFailed) {
44
- throw new Error(
45
- "Memoizee error: Detected unordered then|done & finally resolution, which " +
46
- "in turn makes proper detection of success/failure impossible (when in " +
47
- "'done:finally' mode)\n" +
48
- "Consider to rely on 'then' or 'done' mode instead."
49
- );
50
- }
51
- if (!count) return; // Deleted from cache before resolved
52
- delete waiting[id];
53
- cache[id] = result;
54
- conf.emit("setasync", id, count);
55
- };
56
- var onFailure = function () {
57
- isFailed = true;
58
- if (!waiting[id]) return; // Deleted from cache (or succeed in case of finally)
59
- delete waiting[id];
60
- delete promises[id];
61
- conf.delete(id);
62
- };
63
-
64
- var resolvedMode = mode;
65
- if (!resolvedMode) resolvedMode = "then";
66
-
67
- if (resolvedMode === "then") {
68
- var nextTickFailure = function () { nextTick(onFailure); };
69
- // Eventual finally needs to be attached to non rejected promise
70
- // (so we not force propagation of unhandled rejection)
71
- promise = promise.then(function (result) {
72
- nextTick(onSuccess.bind(this, result));
73
- }, nextTickFailure);
74
- // If `finally` is a function we attach to it to remove cancelled promises.
75
- if (typeof promise.finally === "function") {
76
- promise.finally(nextTickFailure);
77
- }
78
- } else if (resolvedMode === "done") {
79
- // Not recommended, as it may mute any eventual "Unhandled error" events
80
- if (typeof promise.done !== "function") {
81
- throw new Error(
82
- "Memoizee error: Retrieved promise does not implement 'done' " +
83
- "in 'done' mode"
84
- );
85
- }
86
- promise.done(onSuccess, onFailure);
87
- } else if (resolvedMode === "done:finally") {
88
- // The only mode with no side effects assuming library does not throw unconditionally
89
- // for rejected promises.
90
- if (typeof promise.done !== "function") {
91
- throw new Error(
92
- "Memoizee error: Retrieved promise does not implement 'done' " +
93
- "in 'done:finally' mode"
94
- );
95
- }
96
- if (typeof promise.finally !== "function") {
97
- throw new Error(
98
- "Memoizee error: Retrieved promise does not implement 'finally' " +
99
- "in 'done:finally' mode"
100
- );
101
- }
102
- promise.done(onSuccess);
103
- promise.finally(onFailure);
104
- }
105
- });
106
-
107
- // From cache (sync)
108
- conf.on("get", function (id, args, context) {
109
- var promise;
110
- if (waiting[id]) {
111
- ++waiting[id]; // Still waiting
112
- return;
113
- }
114
- promise = promises[id];
115
- var emit = function () { conf.emit("getasync", id, args, context); };
116
- if (isPromise(promise)) {
117
- if (typeof promise.done === "function") promise.done(emit);
118
- else {
119
- promise.then(function () { nextTick(emit); });
120
- }
121
- } else {
122
- emit();
123
- }
124
- });
125
-
126
- // On delete
127
- conf.on("delete", function (id) {
128
- delete promises[id];
129
- if (waiting[id]) {
130
- delete waiting[id];
131
- return; // Not yet resolved
132
- }
133
- if (!hasOwnProperty.call(cache, id)) return;
134
- var result = cache[id];
135
- delete cache[id];
136
- conf.emit("deleteasync", id, [result]);
137
- });
138
-
139
- // On clear
140
- conf.on("clear", function () {
141
- var oldCache = cache;
142
- cache = create(null);
143
- waiting = create(null);
144
- promises = create(null);
145
- conf.emit("clearasync", objectMap(oldCache, function (data) { return [data]; }));
146
- });
147
- };
@@ -1,48 +0,0 @@
1
- // Reference counter, useful for garbage collector like functionality
2
-
3
- "use strict";
4
-
5
- var d = require("d")
6
- , extensions = require("../lib/registered-extensions")
7
-
8
- , create = Object.create, defineProperties = Object.defineProperties;
9
-
10
- extensions.refCounter = function (ignore, conf, options) {
11
- var cache, postfix;
12
-
13
- cache = create(null);
14
- postfix = (options.async && extensions.async) || (options.promise && extensions.promise)
15
- ? "async" : "";
16
-
17
- conf.on("set" + postfix, function (id, length) {
18
- cache[id] = length || 1;
19
- });
20
- conf.on("get" + postfix, function (id) {
21
- ++cache[id];
22
- });
23
- conf.on("delete" + postfix, function (id) {
24
- delete cache[id];
25
- });
26
- conf.on("clear" + postfix, function () {
27
- cache = {};
28
- });
29
-
30
- defineProperties(conf.memoized, {
31
- deleteRef: d(function () {
32
- var id = conf.get(arguments);
33
- if (id === null) return null;
34
- if (!cache[id]) return null;
35
- if (!--cache[id]) {
36
- conf.delete(id);
37
- return true;
38
- }
39
- return false;
40
- }),
41
- getRefCount: d(function () {
42
- var id = conf.get(arguments);
43
- if (id === null) return 0;
44
- if (!cache[id]) return 0;
45
- return cache[id];
46
- })
47
- });
48
- };
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- var normalizeOpts = require("es5-ext/object/normalize-options")
4
- , resolveLength = require("./lib/resolve-length")
5
- , plain = require("./plain");
6
-
7
- module.exports = function (fn/*, options*/) {
8
- var options = normalizeOpts(arguments[1]), length;
9
-
10
- if (!options.normalizer) {
11
- length = options.length = resolveLength(options.length, fn.length, options.async);
12
- if (length !== 0) {
13
- if (options.primitive) {
14
- if (length === false) {
15
- options.normalizer = require("./normalizers/primitive");
16
- } else if (length > 1) {
17
- options.normalizer = require("./normalizers/get-primitive-fixed")(length);
18
- }
19
- } else if (length === false) options.normalizer = require("./normalizers/get")();
20
- else if (length === 1) options.normalizer = require("./normalizers/get-1")();
21
- else options.normalizer = require("./normalizers/get-fixed")(length);
22
- }
23
- }
24
-
25
- // Assure extensions
26
- if (options.async) require("./ext/async");
27
- if (options.promise) require("./ext/promise");
28
- if (options.dispose) require("./ext/dispose");
29
- if (options.maxAge) require("./ext/max-age");
30
- if (options.max) require("./ext/max");
31
- if (options.refCounter) require("./ext/ref-counter");
32
-
33
- return plain(fn, options);
34
- };
@@ -1,182 +0,0 @@
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
- };
@@ -1,32 +0,0 @@
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
- };
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,15 +0,0 @@
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
- };
@@ -1,17 +0,0 @@
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
- };
@@ -1,21 +0,0 @@
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
- };