Browse Source

小程序基础配置

main
kola 8 months ago
parent
commit
d2d1364643
  1. 3
      package.json
  2. 8
      pnpm-lock.yaml
  3. 19
      src/app.ts
  4. 244
      src/miniprogram_npm/miniprogram-licia/Benchmark.js
  5. 46
      src/miniprogram_npm/miniprogram-licia/BloomFilter.js
  6. 35
      src/miniprogram_npm/miniprogram-licia/Caseless.js
  7. 48
      src/miniprogram_npm/miniprogram-licia/Channel.js
  8. 64
      src/miniprogram_npm/miniprogram-licia/Class.js
  9. 95
      src/miniprogram_npm/miniprogram-licia/Color.js
  10. 48
      src/miniprogram_npm/miniprogram-licia/Delegator.js
  11. 55
      src/miniprogram_npm/miniprogram-licia/Dispatcher.js
  12. 65
      src/miniprogram_npm/miniprogram-licia/Emitter.js
  13. 31
      src/miniprogram_npm/miniprogram-licia/Enum.js
  14. 61
      src/miniprogram_npm/miniprogram-licia/HashTable.js
  15. 79
      src/miniprogram_npm/miniprogram-licia/Heap.js
  16. 111
      src/miniprogram_npm/miniprogram-licia/HeapSnapshot.js
  17. 38
      src/miniprogram_npm/miniprogram-licia/I18n.js
  18. 68
      src/miniprogram_npm/miniprogram-licia/JsonTransformer.js
  19. 112
      src/miniprogram_npm/miniprogram-licia/LinkedList.js
  20. 69
      src/miniprogram_npm/miniprogram-licia/Logger.js
  21. 63
      src/miniprogram_npm/miniprogram-licia/Lru.js
  22. 39
      src/miniprogram_npm/miniprogram-licia/PriorityQueue.js
  23. 178
      src/miniprogram_npm/miniprogram-licia/Promise.js
  24. 64
      src/miniprogram_npm/miniprogram-licia/PseudoMap.js
  25. 35
      src/miniprogram_npm/miniprogram-licia/Queue.js
  26. 49
      src/miniprogram_npm/miniprogram-licia/QuickLru.js
  27. 59
      src/miniprogram_npm/miniprogram-licia/Readiness.js
  28. 41
      src/miniprogram_npm/miniprogram-licia/ReduceStore.js
  29. 28
      src/miniprogram_npm/miniprogram-licia/Semaphore.js
  30. 48
      src/miniprogram_npm/miniprogram-licia/SingleEmitter.js
  31. 35
      src/miniprogram_npm/miniprogram-licia/Stack.js
  32. 45
      src/miniprogram_npm/miniprogram-licia/State.js
  33. 58
      src/miniprogram_npm/miniprogram-licia/Store.js
  34. 157
      src/miniprogram_npm/miniprogram-licia/Trace.js
  35. 227
      src/miniprogram_npm/miniprogram-licia/Tracing.js
  36. 90
      src/miniprogram_npm/miniprogram-licia/Trie.js
  37. 98
      src/miniprogram_npm/miniprogram-licia/Tween.js
  38. 125
      src/miniprogram_npm/miniprogram-licia/Url.js
  39. 82
      src/miniprogram_npm/miniprogram-licia/Validator.js
  40. 86
      src/miniprogram_npm/miniprogram-licia/Wrr.js
  41. 28
      src/miniprogram_npm/miniprogram-licia/abbrev.js
  42. 7
      src/miniprogram_npm/miniprogram-licia/after.js
  43. 42
      src/miniprogram_npm/miniprogram-licia/allKeys.js
  44. 14
      src/miniprogram_npm/miniprogram-licia/arrToMap.js
  45. 21
      src/miniprogram_npm/miniprogram-licia/atob.js
  46. 9
      src/miniprogram_npm/miniprogram-licia/average.js
  47. 83
      src/miniprogram_npm/miniprogram-licia/base64.js
  48. 10
      src/miniprogram_npm/miniprogram-licia/before.js
  49. 24
      src/miniprogram_npm/miniprogram-licia/binarySearch.js
  50. 8
      src/miniprogram_npm/miniprogram-licia/bind.js
  51. 23
      src/miniprogram_npm/miniprogram-licia/btoa.js
  52. 18
      src/miniprogram_npm/miniprogram-licia/bubbleSort.js
  53. 22
      src/miniprogram_npm/miniprogram-licia/bytesToStr.js
  54. 9
      src/miniprogram_npm/miniprogram-licia/bytesToWords.js
  55. 17
      src/miniprogram_npm/miniprogram-licia/callbackify.js
  56. 16
      src/miniprogram_npm/miniprogram-licia/camelCase.js
  57. 5
      src/miniprogram_npm/miniprogram-licia/capitalize.js
  58. 16
      src/miniprogram_npm/miniprogram-licia/castPath.js
  59. 21
      src/miniprogram_npm/miniprogram-licia/centerAlign.js
  60. 5
      src/miniprogram_npm/miniprogram-licia/char.js
  61. 12
      src/miniprogram_npm/miniprogram-licia/chunk.js
  62. 12
      src/miniprogram_npm/miniprogram-licia/clamp.js
  63. 20
      src/miniprogram_npm/miniprogram-licia/className.js
  64. 9
      src/miniprogram_npm/miniprogram-licia/clone.js
  65. 19
      src/miniprogram_npm/miniprogram-licia/cloneDeep.js
  66. 16
      src/miniprogram_npm/miniprogram-licia/cmpVersion.js
  67. 9
      src/miniprogram_npm/miniprogram-licia/combine.js
  68. 8
      src/miniprogram_npm/miniprogram-licia/compact.js
  69. 11
      src/miniprogram_npm/miniprogram-licia/compose.js
  70. 11
      src/miniprogram_npm/miniprogram-licia/concat.js
  71. 11
      src/miniprogram_npm/miniprogram-licia/contain.js
  72. 5
      src/miniprogram_npm/miniprogram-licia/convertBase.js
  73. 60
      src/miniprogram_npm/miniprogram-licia/convertBin.js
  74. 19
      src/miniprogram_npm/miniprogram-licia/crc1.js
  75. 276
      src/miniprogram_npm/miniprogram-licia/crc16.js
  76. 29
      src/miniprogram_npm/miniprogram-licia/crc32.js
  77. 276
      src/miniprogram_npm/miniprogram-licia/crc8.js
  78. 11
      src/miniprogram_npm/miniprogram-licia/create.js
  79. 16
      src/miniprogram_npm/miniprogram-licia/createAssigner.js
  80. 329
      src/miniprogram_npm/miniprogram-licia/css.js
  81. 63
      src/miniprogram_npm/miniprogram-licia/cssPriority.js
  82. 15
      src/miniprogram_npm/miniprogram-licia/curry.js
  83. 68
      src/miniprogram_npm/miniprogram-licia/dataUrl.js
  84. 142
      src/miniprogram_npm/miniprogram-licia/dateFormat.js
  85. 15
      src/miniprogram_npm/miniprogram-licia/debounce.js
  86. 206
      src/miniprogram_npm/miniprogram-licia/deburr.js
  87. 31
      src/miniprogram_npm/miniprogram-licia/decodeUriComponent.js
  88. 5
      src/miniprogram_npm/miniprogram-licia/defaults.js
  89. 17
      src/miniprogram_npm/miniprogram-licia/define.js
  90. 26
      src/miniprogram_npm/miniprogram-licia/defineProp.js
  91. 8
      src/miniprogram_npm/miniprogram-licia/defined.js
  92. 8
      src/miniprogram_npm/miniprogram-licia/delay.js
  93. 36
      src/miniprogram_npm/miniprogram-licia/deprecate.js
  94. 51
      src/miniprogram_npm/miniprogram-licia/detectBrowser.js
  95. 11
      src/miniprogram_npm/miniprogram-licia/detectMocha.js
  96. 39
      src/miniprogram_npm/miniprogram-licia/detectOs.js
  97. 12
      src/miniprogram_npm/miniprogram-licia/difference.js
  98. 6
      src/miniprogram_npm/miniprogram-licia/dotCase.js
  99. 39
      src/miniprogram_npm/miniprogram-licia/durationFormat.js
  100. 18
      src/miniprogram_npm/miniprogram-licia/each.js
  101. Some files were not shown because too many files have changed in this diff Show More

3
package.json

@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
"author": "",
"license": "",
"dependencies": {
"@vant/weapp": "^1.11.6"
"@vant/weapp": "^1.11.6",
"miniprogram-licia": "^1.39.2"
},
"devDependencies": {
"miniprogram-api-typings": "^2.8.3-1"

8
pnpm-lock.yaml

@ -11,6 +11,9 @@ importers: @@ -11,6 +11,9 @@ importers:
'@vant/weapp':
specifier: ^1.11.6
version: 1.11.6
miniprogram-licia:
specifier: ^1.39.2
version: 1.43.0
devDependencies:
miniprogram-api-typings:
specifier: ^2.8.3-1
@ -24,8 +27,13 @@ packages: @@ -24,8 +27,13 @@ packages:
miniprogram-api-typings@2.12.0:
resolution: {integrity: sha512-ibvbqeslVFur0IAvTxLMvsbtvVcMo6gwvOnj0YZHV7aeDLu091VQRrETT2QuiG9P6aZWRcxeNGJChRKVPCp9VQ==}
miniprogram-licia@1.43.0:
resolution: {integrity: sha512-NTQxO0LaoIv66I7civEqyUwtF36My7S0TwGyvMAFUpUqGXcQZsM9Ng2OWwHaBvlqdjjPHSacTMH3XqGpnieEow==}
snapshots:
'@vant/weapp@1.11.6': {}
miniprogram-api-typings@2.12.0: {}
miniprogram-licia@1.43.0: {}

19
src/app.ts

@ -1,7 +1,24 @@ @@ -1,7 +1,24 @@
// app.ts
const licia = require("miniprogram-licia");
import { request } from "./utils/request";
App<IAppOption>({
globalData: {},
globalData: {
// 测试号 wx2b0bb13edf717c1d
// dev
// appid:wxaae50c206446a964
url: "https://m.takeda.hbraas.com",
upFileUrl: "https://m.takeda.hbraas.com/",
imageUrl: "https://m.takeda.hbraas.com/zd/",
// pro
// appid:wx96f45ca4f1fa36ec
// url: 'https://m.takeda.hbraas.com',
// upFileUrl: 'https://m.takeda.hbraas.com/',
// imageUrl: 'https://m.takeda.hbraas.com/zd/',
},
onLaunch() {
wx.ajax = licia.curry(request)({ gUrl: this.globalData.url });
wx.login({
success: (res) => {
console.log("code", res);

244
src/miniprogram_npm/miniprogram-licia/Benchmark.js

@ -0,0 +1,244 @@ @@ -0,0 +1,244 @@
var Class = require('./Class');
var defaults = require('./defaults');
var Promise = require('./Promise');
var perfNow = require('./perfNow');
var delay = require('./delay');
var average = require('./average');
var reduce = require('./reduce');
var each = require('./each');
var map = require('./map');
var table = require('./table');
var toStr = require('./toStr');
exports = Class(
{
initialize: function Benchmark(fn) {
var options =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {};
defaults(options, defOpts);
this._fn = fn;
this._isRunning = false;
this._options = options;
},
run: function() {
var _this = this;
if (this._isRunning) {
return this._pendingPromise;
}
this._reset();
this._isRunning = true;
var options = this._options;
var pendingPromise = new Promise(function(resolve, reject) {
var runSample = function() {
var initCount =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 1;
delay(function() {
_this
._runSample(initCount)
.then(function(_ref) {
var period = _ref.period,
count = _ref.count;
var sample = _this._sample;
sample.push(period);
if (
perfNow() - _this._timeStamp <
options.maxTime ||
sample.length < options.minSamples
) {
runSample(count);
} else {
resolve(_this._calcResult());
}
})
.catch(function(err) {
reject(err);
});
}, options.delay);
};
runSample();
});
function complete() {
this._isRunning = false;
delete this._pendingPromise;
}
pendingPromise.then(complete).catch(complete);
this._pendingPromise = pendingPromise;
return pendingPromise;
},
_reset: function() {
this._timeStamp = perfNow();
this._sample = [];
},
_calcResult: function() {
var sample = this._sample;
var result = {
sample: sample,
toString: function() {
var hz = this.hz,
rme = this.rme,
name = this.name;
var size = this.sample.length;
return ''
.concat(name, ' x ')
.concat(
formatNumber(hz.toFixed(hz < 100 ? 2 : 0)),
' ops/sec \xB1'
)
.concat(rme.toFixed(2), '% (')
.concat(size, ' run')
.concat(size === 1 ? '' : 's', ' sampled)');
}
};
var size = sample.length;
result.name = this._options.name || this._fn.name || 'anonymous';
result.mean = average.apply(null, sample);
function varOf(sum, x) {
return sum + Math.pow(x - result.mean, 2);
}
result.variance = reduce(sample, varOf, 0) / (size - 1) || 0;
result.deviation = Math.sqrt(result.variance);
result.sem = result.deviation / Math.sqrt(size);
var critical = tTable[Math.round(size - 1) || 1] || tTable.infinity;
result.moe = result.sem * critical;
result.rme = (result.moe / result.mean) * 100 || 0;
result.hz = 1000 / result.mean;
return result;
},
_runSample: function(count) {
var _this2 = this;
var options = this._options;
var minTime = options.minTime;
return new Promise(function(resolve, reject) {
var runCycle = function(count) {
delay(function() {
var elapsed = 0;
try {
elapsed = _this2._runCycle(count);
} catch (e) {
return reject(e);
}
var period = elapsed / count;
if (elapsed < minTime) {
if (elapsed === 0) {
count *= 100;
} else {
count += Math.ceil(
(minTime - elapsed) / period
);
}
runCycle(count);
} else {
resolve({
count: count,
period: period
});
}
}, options.delay);
};
runCycle(count);
});
},
_runCycle: function(count) {
var fn = this._fn;
var now = perfNow();
while (count--) {
fn();
}
return perfNow() - now;
}
},
{
all: function(benches, options) {
var promises = [];
each(benches, function(bench) {
if (!(bench instanceof exports)) {
bench = new exports(bench, options);
}
promises.push(bench.run());
});
return Promise.all(promises).then(function(results) {
results.toString = function() {
var data = map(results, function(_ref2, idx) {
var name = _ref2.name,
sample = _ref2.sample,
hz = _ref2.hz,
rme = _ref2.rme;
var columns = [];
var size = sample.length;
columns.push(
toStr(idx + 1),
name || 'anonymous',
formatNumber(hz.toFixed(hz < 100 ? 2 : 0)),
'\xB1'.concat(rme.toFixed(2), '%'),
''
.concat(size, ' run')
.concat(size === 1 ? '' : 's')
);
return columns;
});
data.unshift([
'index',
'name',
'ops/sec',
'rme',
'sampled'
]);
return table(data);
};
return results;
});
}
}
);
var defOpts = {
minTime: 50,
maxTime: 5000,
minSamples: 5,
delay: 5,
name: ''
};
var tTable = {
'1': 12.706,
'2': 4.303,
'3': 3.182,
'4': 2.776,
'5': 2.571,
'6': 2.447,
'7': 2.365,
'8': 2.306,
'9': 2.262,
'10': 2.228,
'11': 2.201,
'12': 2.179,
'13': 2.16,
'14': 2.145,
'15': 2.131,
'16': 2.12,
'17': 2.11,
'18': 2.101,
'19': 2.093,
'20': 2.086,
'21': 2.08,
'22': 2.074,
'23': 2.069,
'24': 2.064,
'25': 2.06,
'26': 2.056,
'27': 2.052,
'28': 2.048,
'29': 2.045,
'30': 2.042,
infinity: 1.96
};
function formatNumber(number) {
number = String(number).split('.');
return (
number[0].replace(/(?=(?:\d{3})+$)(?!\b)/g, ',') +
(number[1] ? '.' + number[1] : '')
);
}
module.exports = exports;

46
src/miniprogram_npm/miniprogram-licia/BloomFilter.js

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
var Class = require('./Class');
var fill = require('./fill');
var fnv1a = require('./fnv1a');
var strHash = require('./strHash');
var each = require('./each');
var some = require('./some');
exports = Class({
initialize: function() {
var size =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 1024;
var k =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 3;
this._buckets = fill(new Array(size), 0);
this._k = k;
this._size = size;
},
add: function(val) {
var _this = this;
each(this._locations(val), function(location) {
return (_this._buckets[location] = 1);
});
},
test: function(val) {
var _this2 = this;
return !some(this._locations(val), function(location) {
return _this2._buckets[location] === 0;
});
},
_locations: function(val) {
var ret = [];
var size = this._size;
var a = fnv1a(val);
var b = strHash(val);
for (var i = 0; i < this._k; i++) {
ret[i] = (a + b * i) % size;
}
return ret;
}
});
module.exports = exports;

35
src/miniprogram_npm/miniprogram-licia/Caseless.js

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
var Class = require('./Class');
var lowerCase = require('./lowerCase');
var keys = require('./keys');
exports = Class({
initialize: function(obj) {
this._target = obj;
},
set: function(key, val) {
var name = this.getKey(key);
if (name) key = name;
this._target[key] = val;
},
get: function(key) {
key = this.getKey(key);
if (key) {
return this._target[key];
}
},
getKey: function(key) {
var name = lowerCase(key);
var _keys = keys(this._target);
for (var i = 0, len = _keys.length; i < len; i++) {
var _key = _keys[i];
if (lowerCase(_key) === name) return _key;
}
},
remove: function(key) {
delete this._target[this.getKey(key)];
},
has: function(key) {
return !!this.getKey(key);
}
});
module.exports = exports;

48
src/miniprogram_npm/miniprogram-licia/Channel.js

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
var Emitter = require('./Emitter');
var each = require('./each');
var remove = require('./remove');
var some = require('./some');
exports = Emitter.extend({
initialize: function Channel() {
this._connections = [];
this.callSuper(Emitter, 'initialize');
},
send: function(msg) {
var _this = this;
each(this._connections, function(connection) {
connection.emit('message', msg, _this);
});
},
connect: function(connection) {
if (this.isConnected(connection)) {
return;
}
this._connections.push(connection);
connection.connect(this);
},
disconnect: function(connection) {
if (!this.isConnected(connection)) {
return;
}
remove(this._connections, function(item) {
return item === connection;
});
connection.disconnect(this);
},
isConnected: function(connection) {
if (connection === this) {
throw new Error('Channel cannot be connected to itself.');
}
return some(this._connections, function(item) {
return item === connection;
});
},
destroy: function() {
var _this2 = this;
each(this._connections, function(connection) {
_this2.disconnect(connection);
});
}
});
module.exports = exports;

64
src/miniprogram_npm/miniprogram-licia/Class.js

@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
var extend = require('./extend');
var toArr = require('./toArr');
var inherits = require('./inherits');
var safeGet = require('./safeGet');
var isMiniProgram = require('./isMiniProgram');
exports = function(methods, statics) {
return Base.extend(methods, statics);
};
function makeClass(parent, methods, statics) {
statics = statics || {};
var className =
methods.className || safeGet(methods, 'initialize.name') || '';
delete methods.className;
var ctor = function() {
var args = toArr(arguments);
return this.initialize
? this.initialize.apply(this, args) || this
: this;
};
if (!isMiniProgram) {
try {
ctor = new Function(
'toArr',
'return function ' +
className +
'()' +
'{' +
'var args = toArr(arguments);' +
'return this.initialize ? this.initialize.apply(this, args) || this : this;' +
'};'
)(toArr);
} catch (e) {}
}
inherits(ctor, parent);
ctor.prototype.constructor = ctor;
ctor.extend = function(methods, statics) {
return makeClass(ctor, methods, statics);
};
ctor.inherits = function(Class) {
inherits(ctor, Class);
};
ctor.methods = function(methods) {
extend(ctor.prototype, methods);
return ctor;
};
ctor.statics = function(statics) {
extend(ctor, statics);
return ctor;
};
ctor.methods(methods).statics(statics);
return ctor;
}
var Base = (exports.Base = makeClass(Object, {
className: 'Base',
callSuper: function(parent, name, args) {
var superMethod = parent.prototype[name];
return superMethod.apply(this, args);
},
toString: function() {
return this.constructor.name;
}
}));
module.exports = exports;

95
src/miniprogram_npm/miniprogram-licia/Color.js

@ -0,0 +1,95 @@ @@ -0,0 +1,95 @@
var Class = require('./Class');
var isStr = require('./isStr');
var clamp = require('./clamp');
var rgbToHsl = require('./rgbToHsl');
var hslToRgb = require('./hslToRgb');
var hex = require('./hex');
exports = Class(
{
initialize: function Color(color) {
if (isStr(color)) color = exports.parse(color);
this.model = color.model;
this.val = color.val;
},
toRgb: function() {
var val = this.val;
if (this.model === 'hsl') val = hslToRgb(val);
var prefix = 'rgba';
if (val[3] === 1) {
prefix = 'rgb';
val = val.slice(0, 3);
}
return prefix + '(' + val.join(', ') + ')';
},
toHex: function() {
var val = this.val;
if (this.model === 'hsl') val = hslToRgb(val);
var ret = hex.encode(val.slice(0, 3));
if (ret[0] === ret[1] && ret[2] === ret[3] && ret[4] === ret[5]) {
ret = ret[0] + ret[2] + ret[5];
}
return '#' + ret;
},
toHsl: function() {
var val = this.val;
if (this.model === 'rgb') val = rgbToHsl(val);
var prefix = 'hsla';
if (val[3] === 1) {
prefix = 'hsl';
val = val.slice(0, 3);
}
val[1] = val[1] + '%';
val[2] = val[2] + '%';
return prefix + '(' + val.join(', ') + ')';
}
},
{
parse: function(colorStr) {
var i, match;
var val = [0, 0, 0, 1],
model = 'rgb';
if ((match = colorStr.match(regHexAbbr))) {
match = match[1];
for (i = 0; i < 3; i++) {
val[i] = parseInt(match[i] + match[i], 16);
}
} else if ((match = colorStr.match(regHex))) {
match = match[1];
for (i = 0; i < 3; i++) {
var i2 = i * 2;
val[i] = parseInt(match.slice(i2, i2 + 2), 16);
}
} else if ((match = colorStr.match(regRgba))) {
for (i = 0; i < 3; i++) {
val[i] = parseInt(match[i + 1], 0);
}
if (match[4]) val[3] = parseFloat(match[4]);
} else if ((match = colorStr.match(regRgbaPer))) {
for (i = 0; i < 3; i++) {
val[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
}
if (match[4]) val[3] = parseFloat(match[4]);
} else if ((match = colorStr.match(regHsla))) {
model = 'hsl';
val = [
((parseFloat(match[1]) % 360) + 360) % 360,
clamp(parseFloat(match[2]), 0, 100),
clamp(parseFloat(match[3]), 0, 100),
clamp(parseFloat(match[4]), 0, 1)
];
}
return {
val: val,
model: model
};
}
}
);
var regHexAbbr = /^#([a-fA-F0-9]{3})$/;
var regHex = /^#([a-fA-F0-9]{6})$/;
var regRgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/;
var regRgbaPer = /^rgba?\(\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/;
var regHsla = /^hsla?\(\s*([+-]?\d*[.]?\d+)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/;
module.exports = exports;

48
src/miniprogram_npm/miniprogram-licia/Delegator.js

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
var Class = require('./Class');
var safeGet = require('./safeGet');
var defineProp = require('./defineProp');
var isStr = require('./isStr');
exports = Class({
initialize: function Delegator(host, target) {
this._host = host;
if (isStr(target)) {
target = safeGet(host, target);
}
this._target = target;
},
method: function(name, targetName) {
var target = this._target;
var fn = target[targetName || name];
this._host[name] = function() {
return fn.apply(target, arguments);
};
return this;
},
getter: function(name, targetName) {
var target = this._target;
targetName = targetName || name;
defineProp(this._host, name, {
get: function() {
return target[targetName];
},
configurable: true
});
return this;
},
setter: function(name, targetName) {
var target = this._target;
targetName = targetName || name;
defineProp(this._host, name, {
set: function(val) {
return (target[targetName] = val);
},
configurable: true
});
return this;
},
access: function(name, targetName) {
return this.getter(name, targetName).setter(name, targetName);
}
});
module.exports = exports;

55
src/miniprogram_npm/miniprogram-licia/Dispatcher.js

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
var Class = require('./Class');
var uniqId = require('./uniqId');
exports = Class({
initialize: function Dispatcher() {
this._callbacks = {};
this._isDispatching = false;
this._isHandled = {};
this._isPending = {};
},
dispatch: function(payload) {
this._startDispatching(payload);
for (var id in this._callbacks) {
if (this._isPending[id]) continue;
this._invokeCb(id);
}
this._stopDispatching();
},
register: function(cb) {
var id = uniqId('ID_');
this._callbacks[id] = cb;
return id;
},
waitFor: function(ids) {
for (var i = 0, len = ids.length; i < len; i++) {
var id = ids[i];
if (this._isPending[id]) continue;
this._invokeCb(id);
}
},
unregister: function(id) {
delete this._callbacks[id];
},
isDispatching: function() {
return this._isDispatching;
},
_startDispatching: function(payload) {
for (var id in this._callbacks) {
this._isPending[id] = false;
this._isHandled[id] = false;
}
this._pendingPayload = payload;
this._isDispatching = true;
},
_stopDispatching: function() {
delete this._pendingPayload;
this._isDispatching = false;
},
_invokeCb: function(id) {
this._isPending[id] = true;
this._callbacks[id](this._pendingPayload);
this._isHandled[id] = true;
}
});
module.exports = exports;

65
src/miniprogram_npm/miniprogram-licia/Emitter.js

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
var Class = require('./Class');
var has = require('./has');
var each = require('./each');
var slice = require('./slice');
var once = require('./once');
var clone = require('./clone');
exports = Class(
{
initialize: function Emitter() {
this._events = this._events || {};
},
on: function(event, listener) {
this._events[event] = this._events[event] || [];
this._events[event].push(listener);
return this;
},
off: function(event, listener) {
var events = this._events;
if (!has(events, event)) return;
var idx = events[event].indexOf(listener);
if (idx > -1) {
events[event].splice(idx, 1);
}
return this;
},
once: function(event, listener) {
this.on(event, once(listener));
return this;
},
emit: function(event) {
var _this = this;
if (!has(this._events, event)) return;
var args = slice(arguments, 1);
var events = clone(this._events[event]);
each(
events,
function(val) {
return val.apply(_this, args);
},
this
);
return this;
},
removeAllListeners: function(event) {
if (!event) {
this._events = {};
} else {
delete this._events[event];
}
return this;
}
},
{
mixin: function(obj) {
each(['on', 'off', 'once', 'emit', 'removeAllListeners'], function(
val
) {
obj[val] = exports.prototype[val];
});
obj._events = obj._events || {};
}
}
);
module.exports = exports;

31
src/miniprogram_npm/miniprogram-licia/Enum.js

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
var Class = require('./Class');
var freeze = require('./freeze');
var isArr = require('./isArr');
var each = require('./each');
var keys = require('./keys');
exports = Class({
initialize: function Enum(map) {
if (isArr(map)) {
this.size = map.length;
each(
map,
function(member, val) {
this[member] = val;
},
this
);
} else {
this.size = keys(map).length;
each(
map,
function(val, member) {
this[member] = val;
},
this
);
}
freeze(this);
}
});
module.exports = exports;

61
src/miniprogram_npm/miniprogram-licia/HashTable.js

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
var Class = require('./Class');
var LinkedList = require('./LinkedList');
var map = require('./map');
var strHash = require('./strHash');
var has = require('./has');
exports = Class({
initialize: function HashTable() {
var size =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 32;
this._buckets = map(Array(size), function() {
return new LinkedList();
});
this._keys = {};
},
set: function(key, val) {
var keyHash = this._hash(key);
this._keys[key] = keyHash;
var linkedList = this._buckets[keyHash];
var node = linkedList.find(function(val) {
return val.key === key;
});
if (!node) {
linkedList.push({
key: key,
value: val
});
} else {
node.value.value = val;
}
},
get: function(key) {
var linkedList = this._buckets[this._hash(key)];
var node = linkedList.find(function(val) {
return val.key === key;
});
if (node) {
return node.value.value;
}
},
has: function(key) {
return has(this._keys, key);
},
delete: function(key) {
var keyHash = this._hash(key);
delete this._keys[key];
var linkedList = this._buckets[keyHash];
var node = linkedList.find(function(val) {
return val.key === key;
});
if (node) {
linkedList.rmNode(node);
}
},
_hash: function(key) {
return strHash(key) % this._buckets.length;
}
});
module.exports = exports;

79
src/miniprogram_npm/miniprogram-licia/Heap.js

@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
var Class = require('./Class');
var swap = require('./swap');
var isSorted = require('./isSorted');
exports = Class({
initialize: function Heap() {
var cmp =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: isSorted.defComparator;
this._cmp = cmp;
this.clear();
},
clear: function() {
this._data = [];
this.size = 0;
},
add: function(item) {
this._data.push(item);
this.size++;
this._heapifyUp(this.size - 1);
return this.size;
},
poll: function() {
var data = this._data;
if (this.size > 0) {
var item = data[0];
data[0] = data[this.size - 1];
this.size--;
this._heapifyDown(0);
return item;
}
},
peek: function() {
if (this.size > 0) {
return this._data[0];
}
},
_heapifyUp: function(idx) {
var data = this._data;
var parent = parentIdx(idx);
while (idx > 0 && this._cmp(data[parent], data[idx]) > 0) {
swap(data, parent, idx);
idx = parent;
parent = parentIdx(idx);
}
},
_heapifyDown: function(idx) {
var size = this.size;
var cmp = this._cmp;
var data = this._data;
while (leftChildIdx(idx) < size) {
var smallerIdx = leftChildIdx(idx);
var rightChild = rightChildIdx(idx);
if (
rightChild < size &&
cmp(data[rightChildIdx], data[smallerIdx]) < 0
) {
smallerIdx = rightChild;
}
if (cmp(data[idx], data[smallerIdx]) < 0) {
break;
} else {
swap(data, idx, smallerIdx);
}
idx = smallerIdx;
}
}
});
function parentIdx(idx) {
return Math.floor((idx - 1) / 2);
}
function leftChildIdx(idx) {
return 2 * idx + 1;
}
function rightChildIdx(idx) {
return 2 * idx + 2;
}
module.exports = exports;

111
src/miniprogram_npm/miniprogram-licia/HeapSnapshot.js

@ -0,0 +1,111 @@ @@ -0,0 +1,111 @@
var Class = require('./Class');
var toBool = require('./toBool');
var camelCase = require('./camelCase');
var LinkedList = require('./LinkedList');
var isStr = require('./isStr');
var each = require('./each');
var map = require('./map');
exports = Class({
initialize: function HeapSnapshot(profile) {
if (isStr(profile)) {
profile = JSON.parse(profile);
}
this.nodes = new LinkedList();
this.edges = new LinkedList();
var snapshot = profile.snapshot;
var meta = snapshot.meta;
this.nodeFields = map(meta.node_fields, camelCase);
this.nodeTypes = meta.node_types[this.nodeFields.indexOf('type')];
this.edgeFields = map(meta.edge_fields, camelCase);
this.edgeTypes = meta.edge_types[this.edgeFields.indexOf('type')];
this._init(profile);
},
_init: function(profile) {
var _this = this;
var nodes = profile.nodes,
edges = profile.edges,
strings = profile.strings;
var nodeFields = this.nodeFields,
edgeFields = this.edgeFields;
var curEdgeIdx = 0;
var nodeFieldCount = nodeFields.length;
var edgeFieldCount = edgeFields.length;
var nodeMap = {};
for (var i = 0, len = nodes.length; i < len; i += nodeFieldCount) {
var node = new Node(this);
node.init(nodes.slice(i, i + nodeFieldCount), strings);
this.nodes.push(node);
nodeMap[i] = node;
}
this.nodes.forEach(function(node) {
var edgeCount = node.edgeCount;
delete node.edgeCount;
var maxEdgeIdx = curEdgeIdx + edgeCount * edgeFieldCount;
for (var _i = curEdgeIdx; _i < maxEdgeIdx; _i += edgeFieldCount) {
var edge = new Edge(_this, node);
edge.init(
edges.slice(_i, _i + edgeFieldCount),
strings,
nodeMap
);
_this.edges.push(edge);
}
curEdgeIdx = maxEdgeIdx;
});
}
});
var Node = Class({
initialize: function Node(heapSnapshot) {
this._heapSnapshot = heapSnapshot;
},
init: function(fields, strings) {
var _this2 = this;
var heapSnapshot = this._heapSnapshot;
var nodeFields = heapSnapshot.nodeFields,
nodeTypes = heapSnapshot.nodeTypes;
each(nodeFields, function(field, idx) {
var val = fields[idx];
switch (field) {
case 'name':
val = strings[val];
break;
case 'detachedness':
val = toBool(val);
break;
case 'type':
val = nodeTypes[val];
break;
}
_this2[field] = val;
});
}
});
var Edge = Class({
initialize: function Edge(heapSnapshot, fromNode) {
this._heapSnapshot = heapSnapshot;
this.fromNode = fromNode;
},
init: function(fields, strings, nodeMap) {
var _this3 = this;
var heapSnapshot = this._heapSnapshot;
var edgeFields = heapSnapshot.edgeFields,
edgeTypes = heapSnapshot.edgeTypes;
each(edgeFields, function(field, idx) {
var val = fields[idx];
switch (field) {
case 'nameOrIndex':
val = strings[val];
break;
case 'type':
val = edgeTypes[val];
break;
case 'toNode':
val = nodeMap[val];
break;
}
_this3[field] = val;
});
}
});
module.exports = exports;

38
src/miniprogram_npm/miniprogram-licia/I18n.js

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
var Class = require('./Class');
var safeGet = require('./safeGet');
var extend = require('./extend');
var strTpl = require('./strTpl');
var isStr = require('./isStr');
var isFn = require('./isFn');
exports = Class({
initialize: function I18n(locale, langs) {
this._locale = locale;
this._langs = langs;
},
set: function(locale, lang) {
if (this._langs[locale]) {
extend(this._langs[locale], lang);
} else {
this._langs[locale] = lang;
}
},
t: function(path, data) {
var val = '';
var lang = this._langs[this._locale];
if (!lang) return '';
val = safeGet(lang, path);
if (data) {
if (isStr(val)) {
val = strTpl(val, data);
} else if (isFn(val)) {
val = val(data);
}
}
return val || '';
},
locale: function(locale) {
this._locale = locale;
}
});
module.exports = exports;

68
src/miniprogram_npm/miniprogram-licia/JsonTransformer.js

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
var Class = require('./Class');
var safeSet = require('./safeSet');
var safeGet = require('./safeGet');
var map = require('./map');
var filter = require('./filter');
var isFn = require('./isFn');
var safeDel = require('./safeDel');
var toArr = require('./toArr');
var each = require('./each');
exports = Class({
className: 'JsonTransformer',
initialize: function(data) {
this._data = data || {};
},
set: function(key, val) {
if (arguments.length === 1) {
this._data = key;
return this;
}
safeSet(this._data, key, val);
return this;
},
get: function(key) {
if (key == null) return this._data;
return safeGet(this._data, key);
},
map: function(from, to, fn) {
if (isFn(from)) return this.set(map(this._data, from, this));
if (isFn(to)) {
fn = to;
to = from;
}
return this.set(to, map(this.get(from), fn, this));
},
filter: function(from, to, fn) {
if (isFn(from)) return this.set(filter(this._data, from, this));
if (isFn(to)) {
fn = to;
to = from;
}
return this.set(to, filter(this.get(from), fn, this));
},
remove: function(keys) {
keys = toArr(keys);
var data = this._data;
each(keys, function(key) {
safeDel(data, key);
});
return this;
},
compute: function(from, to, fn) {
if (isFn(from)) return this.set(from.call(this, this._data));
if (isFn(to)) return this.set(from, to.call(this, this.get(from)));
from = map(
toArr(from),
function(key) {
return safeGet(this._data, key);
},
this
);
return this.set(to, fn.apply(this, from));
},
toString: function() {
return JSON.stringify(this._data);
}
});
module.exports = exports;

112
src/miniprogram_npm/miniprogram-licia/LinkedList.js

@ -0,0 +1,112 @@ @@ -0,0 +1,112 @@
var Class = require('./Class');
exports = Class({
initialize: function LinkedList() {
this.tail = null;
this.head = null;
this.size = 0;
},
push: function(val) {
var node = new Node(val, this.tail, null, this);
this.tail = node;
this.head = this.head || node;
this.size++;
return this.size;
},
pop: function() {
if (!this.tail) return;
var node = this.tail;
this.tail = node.prev;
if (this.tail) {
this.tail.next = null;
} else {
this.head = null;
}
this.size--;
return node.value;
},
unshift: function(val) {
var node = new Node(val, null, this.head, this);
this.head = node;
this.tail = this.tail || node;
this.size++;
return this.size;
},
shift: function() {
if (!this.head) return;
var node = this.head;
this.head = node.next;
if (this.head) {
this.head.prev = null;
} else {
this.tail = null;
}
this.size--;
return node.value;
},
rmNode: function(node) {
if (node.list !== this) {
throw Error('Node does not belong to this list');
}
var next = node.next,
prev = node.prev;
if (next) {
next.prev = prev;
}
if (prev) {
prev.next = next;
}
if (node === this.head) {
this.head = next;
}
if (node === this.tail) {
this.tail = prev;
}
node.list = null;
node.prev = null;
node.next = null;
this.size--;
},
find: function(fn) {
for (var i = 0, current = this.head; current !== null; i++) {
if (fn(current.value)) {
return current;
}
current = current.next;
}
},
forEach: function(iterator, ctx) {
ctx = arguments.length > 1 ? ctx : this;
for (var i = 0, current = this.head; current !== null; i++) {
iterator.call(ctx, current.value, i, this);
current = current.next;
}
},
toArr: function() {
var arr = new Array(this.size);
for (var i = 0, current = this.head; current !== null; i++) {
arr[i] = current.value;
current = current.next;
}
return arr;
}
});
var Node = (exports.Node = Class({
initialize: function Node(val, prev, next, list) {
this.value = val;
this.list = list;
if (prev) {
prev.next = this;
this.prev = prev;
} else {
this.prev = null;
}
if (next) {
next.prev = this;
this.next = next;
} else {
this.next = null;
}
}
}));
module.exports = exports;

69
src/miniprogram_npm/miniprogram-licia/Logger.js

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
var Emitter = require('./Emitter');
var Enum = require('./Enum');
var toArr = require('./toArr');
var isUndef = require('./isUndef');
var clone = require('./clone');
var isStr = require('./isStr');
var isNum = require('./isNum');
exports = Emitter.extend(
{
initialize: function Logger(name, level) {
this.name = name;
this.setLevel(isUndef(level) ? exports.level.DEBUG : level);
this.callSuper(Emitter, 'initialize', arguments);
},
setLevel: function(level) {
if (isStr(level)) {
level = exports.level[level.toUpperCase()];
if (level) this._level = level;
return this;
}
if (isNum(level)) this._level = level;
return this;
},
getLevel: function() {
return this._level;
},
formatter: function(type, argList) {
return argList;
},
trace: function() {
return this._log('trace', arguments);
},
debug: function() {
return this._log('debug', arguments);
},
info: function() {
return this._log('info', arguments);
},
warn: function() {
return this._log('warn', arguments);
},
error: function() {
return this._log('error', arguments);
},
_log: function(type, argList) {
argList = toArr(argList);
if (argList.length === 0) return this;
this.emit('all', type, clone(argList));
if (exports.level[type.toUpperCase()] < this._level) return this;
this.emit(type, clone(argList));
var consoleMethod = type === 'debug' ? console.log : console[type];
consoleMethod.apply(console, this.formatter(type, argList));
return this;
}
},
{
level: new Enum({
TRACE: 0,
DEBUG: 1,
INFO: 2,
WARN: 3,
ERROR: 4,
SILENT: 5
})
}
);
module.exports = exports;

63
src/miniprogram_npm/miniprogram-licia/Lru.js

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
var LinkedList = require('./LinkedList');
var PseudoMap = require('./PseudoMap');
var Class = require('./Class');
exports = Class({
initialize: function Lru(max) {
this._max = max;
this._list = new LinkedList();
this._map = new PseudoMap();
},
has: function(key) {
return this._map.has(key);
},
remove: function(key) {
var map = this._map;
if (this.has(key)) {
var node = map.get(key);
this._list.rmNode(node);
map.delete(key);
}
},
get: function(key) {
var list = this._list;
var map = this._map;
var ret;
if (this.has(key)) {
var node = map.get(key);
ret = node.value.val;
list.rmNode(node);
list.unshift(node.value);
map.set(key, list.head);
}
return ret;
},
set: function(key, val) {
var list = this._list;
var map = this._map;
if (this.has(key)) {
var node = map.get(key);
list.rmNode(node);
list.unshift({
key: key,
val: val
});
map.set(key, list.head);
} else {
list.unshift({
key: key,
val: val
});
map.set(key, list.head);
if (list.size > this._max) {
var item = list.pop();
map.delete(item.key);
}
}
},
clear: function() {
this._map = new PseudoMap();
this._list = new LinkedList();
}
});
module.exports = exports;

39
src/miniprogram_npm/miniprogram-licia/PriorityQueue.js

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
var Class = require('./Class');
var Heap = require('./Heap');
var isSorted = require('./isSorted');
var wrap = require('./wrap');
exports = Class({
initialize: function PriorityQueue() {
var cmp =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: isSorted.defComparator;
this._heap = new Heap(
wrap(cmp, function(fn, a, b) {
return fn(a, b) * -1;
})
);
this.size = 0;
},
clear: function() {
this._heap.clear();
this.size = 0;
},
enqueue: function(item) {
this._heap.add(item);
this.size++;
return this.size;
},
dequeue: function() {
var item = this._heap.poll();
if (item) {
this.size--;
return item;
}
},
peek: function() {
return this._heap.peek();
}
});
module.exports = exports;

178
src/miniprogram_npm/miniprogram-licia/Promise.js

@ -0,0 +1,178 @@ @@ -0,0 +1,178 @@
var Class = require('./Class');
var isObj = require('./isObj');
var isFn = require('./isFn');
var State = require('./State');
var bind = require('./bind');
var nextTick = require('./nextTick');
var noop = require('./noop');
var toArr = require('./toArr');
var Promise = (exports = Class(
{
initialize: function Promise(fn) {
if (!isObj(this))
throw new TypeError('Promises must be constructed via new');
if (!isFn(fn)) throw new TypeError(fn + ' is not a function');
var self = this;
this._state = new State('pending', {
fulfill: {
from: 'pending',
to: 'fulfilled'
},
reject: {
from: 'pending',
to: 'rejected'
},
adopt: {
from: 'pending',
to: 'adopted'
}
})
.on('fulfill', assignVal)
.on('reject', assignVal)
.on('adopt', assignVal);
function assignVal(val) {
self._value = val;
}
this._handled = false;
this._value = undefined;
this._deferreds = [];
doResolve(fn, this);
},
catch: function(onRejected) {
return this.then(null, onRejected);
},
then: function(onFulfilled, onRejected) {
var promise = new Promise(noop);
handle(this, new Handler(onFulfilled, onRejected, promise));
return promise;
}
},
{
all: function(arr) {
var args = toArr(arr);
return new Promise(function(resolve, reject) {
if (args.length === 0) return resolve([]);
var remaining = args.length;
function res(i, val) {
try {
if (val && (isObj(val) || isFn(val))) {
var then = val.then;
if (isFn(then)) {
then.call(
val,
function(val) {
res(i, val);
},
reject
);
return;
}
}
args[i] = val;
if (--remaining === 0) resolve(args);
} catch (e) {
reject(e);
}
}
for (var i = 0; i < args.length; i++) res(i, args[i]);
});
},
resolve: function(val) {
if (val && isObj(val) && val.constructor === Promise) return val;
return new Promise(function(resolve) {
resolve(val);
});
},
reject: function(val) {
return new Promise(function(resolve, reject) {
reject(val);
});
},
race: function(values) {
return new Promise(function(resolve, reject) {
for (var i = 0, len = values.length; i < len; i++) {
values[i].then(resolve, reject);
}
});
}
}
));
var Handler = Class({
initialize: function Handler(onFulfilled, onRejected, promise) {
this.onFulfilled = isFn(onFulfilled) ? onFulfilled : null;
this.onRejected = isFn(onRejected) ? onRejected : null;
this.promise = promise;
}
});
function reject(self, err) {
self._state.reject(err);
finale(self);
}
function resolve(self, val) {
try {
if (val === self)
throw new TypeError('A promise cannot be resolved with itself');
if (val && (isObj(val) || isFn(val))) {
var then = val.then;
if (val instanceof Promise) {
self._state.adopt(val);
return finale(self);
}
if (isFn(then)) return doResolve(bind(then, val), self);
}
self._state.fulfill(val);
finale(self);
} catch (e) {
reject(self, e);
}
}
function finale(self) {
for (var i = 0, len = self._deferreds.length; i < len; i++) {
handle(self, self._deferreds[i]);
}
self._deferreds = null;
}
function handle(self, deferred) {
while (self._state.is('adopted')) self = self._value;
if (self._state.is('pending')) return self._deferreds.push(deferred);
self._handled = true;
nextTick(function() {
var isFulfilled = self._state.is('fulfilled');
var cb = isFulfilled ? deferred.onFulfilled : deferred.onRejected;
if (cb === null)
return (isFulfilled ? resolve : reject)(
deferred.promise,
self._value
);
var ret;
try {
ret = cb(self._value);
} catch (e) {
return reject(deferred.promise, e);
}
resolve(deferred.promise, ret);
});
}
function doResolve(fn, self) {
var done = false;
try {
fn(
function(val) {
if (done) return;
done = true;
resolve(self, val);
},
function(reason) {
if (done) return;
done = true;
reject(self, reason);
}
);
} catch (e) {
if (done) return;
done = true;
reject(self, e);
}
}
module.exports = exports;

64
src/miniprogram_npm/miniprogram-licia/PseudoMap.js

@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
var Class = require('./Class');
var root = require('./root');
var defineProp = require('./defineProp');
var keys = require('./keys');
var each = require('./each');
var isArr = require('./isArr');
var isUndef = require('./isUndef');
if (root.Map && !false) {
exports = root.Map;
} else {
exports = Class({
initialize: function PseudoMap(data) {
this.clear();
var self = this;
defineProp(this, 'size', {
get: function() {
return keys(self._data).length;
},
set: function() {},
enumerable: true,
configurable: true
});
if (data instanceof exports) {
data.forEach(function(val, key) {
this.set(key, val);
}, this);
} else if (isArr(data)) {
each(
data,
function(val) {
this.set(val[0], val[1]);
},
this
);
}
},
forEach: function(fn, ctx) {
each(
this._data,
function(val, key) {
fn.call(this, val, key);
},
ctx
);
},
has: function(key) {
return !isUndef(this._data[key]);
},
get: function(key) {
return this._data[key];
},
set: function(key, val) {
this._data[key] = val;
},
delete: function(key) {
delete this._data[key];
},
clear: function() {
this._data = {};
}
});
}
module.exports = exports;

35
src/miniprogram_npm/miniprogram-licia/Queue.js

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
var Class = require('./Class');
exports = Class({
initialize: function Queue() {
this.clear();
},
clear: function() {
this._items = [];
this.size = 0;
},
enqueue: function(item) {
this._items.push(item);
return ++this.size;
},
dequeue: function() {
if (!this.size) return;
this.size--;
return this._items.shift();
},
peek: function() {
if (!this.size) return;
return this._items[0];
},
forEach: function(iterator, ctx) {
ctx = arguments.length > 1 ? ctx : this;
var items = this._items;
for (var i = 0, size = this.size; i < size; i++) {
iterator.call(ctx, items[i], i, this);
}
},
toArr: function() {
return this._items.slice(0);
}
});
module.exports = exports;

49
src/miniprogram_npm/miniprogram-licia/QuickLru.js

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
var isUndef = require('./isUndef');
var Class = require('./Class');
exports = Class({
initialize: function QuickLru(max) {
this._max = max;
this._cache = {};
this._oldCache = {};
this._size = 0;
},
has: function(key) {
return !isUndef(this._cache[key]) || !isUndef(this._oldCache[key]);
},
remove: function(key) {
if (!isUndef(this._cache[key])) this._cache[key] = undefined;
if (!isUndef(this._oldCache[key])) this._oldCache[key] = undefined;
},
get: function(key) {
if (!isUndef(this._cache[key])) {
return this._cache[key];
}
var val = this._oldCache[key];
if (!isUndef(val)) {
this._update(key, val);
return val;
}
},
set: function(key, val) {
if (!isUndef(this._cache[key])) {
this._cache[key] = val;
} else {
this._update(key, val);
}
},
clear: function() {
this._cache = {};
this._oldCache = {};
},
_update: function(key, val) {
this._cache[key] = val;
this._size++;
if (this._size > this._max) {
this._size = 0;
this._oldCache = this._cache;
this._cache = {};
}
}
});
module.exports = exports;

59
src/miniprogram_npm/miniprogram-licia/Readiness.js

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
var Class = require('./Class');
var toArr = require('./toArr');
var each = require('./each');
var map = require('./map');
var noop = require('./noop');
var some = require('./some');
exports = Class({
initialize: function Readiness() {
this._promises = {};
this._resolves = {};
this._states = {};
},
signal: function(tasks) {
var states = this._states;
each(this._getPromises(toArr(tasks)), function(val) {
if (!val.state) {
states[val.task] = true;
val.resolve();
}
});
},
isReady: function(tasks) {
return !some(this._getPromises(toArr(tasks)), function(val) {
return !val.state;
});
},
ready: function(tasks) {
var fn =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: noop;
return Promise.all(
map(this._getPromises(toArr(tasks)), function(val) {
return val.promise;
})
).then(fn);
},
_getPromises: function(tasks) {
var promises = this._promises;
var resolves = this._resolves;
var states = this._states;
return map(tasks, function(task) {
if (!promises[task]) {
promises[task] = new Promise(function(resolve) {
resolves[task] = resolve;
states[task] = false;
});
}
return {
task: task,
promise: promises[task],
resolve: resolves[task],
state: states[task]
};
});
}
});
module.exports = exports;

41
src/miniprogram_npm/miniprogram-licia/ReduceStore.js

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
var Class = require('./Class');
var clone = require('./clone');
var remove = require('./remove');
exports = Class({
initialize: function ReduceStore(reducer, initialState) {
this._reducer = reducer;
this._state = initialState;
this._curListeners = [];
this._nextListeners = this._curListeners;
},
subscribe: function(listener) {
var isSubscribed = true;
this._ensureCanMutateNextListeners();
this._nextListeners.push(listener);
var self = this;
return function() {
if (!isSubscribed) return;
isSubscribed = false;
self._ensureCanMutateNextListeners();
remove(self._nextListeners, function(val) {
return val === listener;
});
};
},
dispatch: function(action) {
this._state = this._reducer(this._state, action);
var listeners = (this._curListeners = this._nextListeners);
for (var i = 0, len = listeners.length; i < len; i++) listeners[i]();
return action;
},
getState: function() {
return this._state;
},
_ensureCanMutateNextListeners: function() {
if (this._nextListeners === this._curListeners) {
this._nextListeners = clone(this._curListeners);
}
}
});
module.exports = exports;

28
src/miniprogram_npm/miniprogram-licia/Semaphore.js

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
var Class = require('./Class');
var Queue = require('./Queue');
exports = Class({
initialize: function Semaphore() {
var counter =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 1;
this._counter = counter;
this._tasks = new Queue();
},
wait: function(fn) {
if (this._counter > 0) {
this._counter--;
return fn();
}
this._tasks.enqueue(fn);
},
signal: function() {
var task = this._tasks.dequeue();
if (task) {
return task();
}
this._counter++;
}
});
module.exports = exports;

48
src/miniprogram_npm/miniprogram-licia/SingleEmitter.js

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
var Class = require('./Class');
var clone = require('./clone');
var each = require('./each');
var toArr = require('./toArr');
exports = Class(
{
initialize: function SingleEmitter() {
this._listeners = [];
},
addListener: function(listener) {
this._listeners.push(listener);
},
rmListener: function(listener) {
var idx = this._listeners.indexOf(listener);
if (idx > -1) {
this._listeners.splice(idx, 1);
}
},
rmAllListeners: function() {
this._listeners = [];
},
emit: function() {
var _this = this;
var args = toArr(arguments);
var listeners = clone(this._listeners);
each(
listeners,
function(listener) {
return listener.apply(_this, args);
},
this
);
}
},
{
mixin: function(obj) {
each(
['addListener', 'rmListener', 'emit', 'rmAllListeners'],
function(val) {
obj[val] = exports.prototype[val];
}
);
obj._listeners = obj._listeners || [];
}
}
);
module.exports = exports;

35
src/miniprogram_npm/miniprogram-licia/Stack.js

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
var Class = require('./Class');
var reverse = require('./reverse');
exports = Class({
initialize: function Stack() {
this.clear();
},
clear: function() {
this._items = [];
this.size = 0;
},
push: function(item) {
this._items.push(item);
return ++this.size;
},
pop: function() {
if (!this.size) return;
this.size--;
return this._items.pop();
},
peek: function() {
return this._items[this.size - 1];
},
forEach: function(iterator, ctx) {
ctx = arguments.length > 1 ? ctx : this;
var items = this._items;
for (var i = this.size - 1, j = 0; i >= 0; i--, j++) {
iterator.call(ctx, items[i], j, this);
}
},
toArr: function() {
return reverse(this._items);
}
});
module.exports = exports;

45
src/miniprogram_npm/miniprogram-licia/State.js

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
var Emitter = require('./Emitter');
var each = require('./each');
var some = require('./some');
var toArr = require('./toArr');
exports = Emitter.extend({
className: 'State',
initialize: function(initial, events) {
this.callSuper(Emitter, 'initialize');
this.current = initial;
var self = this;
each(events, function(event, key) {
self[key] = buildEvent(key, event);
});
},
is: function(state) {
return this.current === state;
}
});
function buildEvent(name, event) {
var from = toArr(event.from);
var to = event.to;
return function() {
var args = toArr(arguments);
args.unshift(name);
var hasEvent = some(
from,
function(val) {
return this.current === val;
},
this
);
if (hasEvent) {
this.current = to;
this.emit.apply(this, args);
} else {
this.emit(
'error',
new Error(this.current + ' => ' + to + ' error'),
name
);
}
};
}
module.exports = exports;

58
src/miniprogram_npm/miniprogram-licia/Store.js

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
var Emitter = require('./Emitter');
var isStr = require('./isStr');
var isObj = require('./isObj');
var each = require('./each');
var toArr = require('./toArr');
exports = Emitter.extend({
initialize: function Store(data) {
this.callSuper(Emitter, 'initialize', arguments);
this._data = data || {};
this.save(this._data);
},
set: function(key, val) {
var data;
if (isStr(key)) {
data = {};
data[key] = val;
} else if (isObj(key)) {
data = key;
}
var self = this;
each(data, function(val, key) {
var oldVal = self._data[key];
self._data[key] = val;
self.emit('change', key, val, oldVal);
});
this.save(this._data);
},
get: function(key) {
var data = this._data;
if (isStr(key)) return data[key];
var ret = {};
each(key, function(val) {
ret[val] = data[val];
});
return ret;
},
remove: function(key) {
key = toArr(key);
var data = this._data;
each(key, function(val) {
delete data[val];
});
this.save(data);
},
clear: function() {
this._data = {};
this.save(this._data);
},
each: function(fn) {
each(this._data, fn);
},
save: function(data) {
this._data = data;
}
});
module.exports = exports;

157
src/miniprogram_npm/miniprogram-licia/Trace.js

@ -0,0 +1,157 @@ @@ -0,0 +1,157 @@
var Class = require('./Class');
var each = require('./each');
var map = require('./map');
exports = Class({
initialize: function Trace() {
var _this = this;
var events =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: [];
this._processes = {};
each(events, function(event) {
return _this.addEvent(event);
});
},
addEvent: function(event) {
var process = this.getProcess(event.pid);
process.addEvent(event);
},
rmEvent: function(event) {
var process = this.getProcess(event.pid);
process.rmEvent(event);
},
getProcess: function(id) {
var process = this._processes[id];
if (!process) {
process = new Process(id);
this._processes[id] = process;
}
return process;
},
rmProcess: function(id) {
delete this._processes[id];
},
processes: function() {
return map(this._processes);
},
toJSON: function() {
var events = [];
each(this.processes(), function(process) {
events.push.apply(events, process.toJSON());
});
return events;
}
});
var Process = Class({
initialize: function Process(id) {
this._id = id;
this._name = '';
this._threads = {};
this._metadata = {};
},
id: function() {
return this._id;
},
name: function() {
return this._name;
},
addEvent: function(event) {
if (event.cat === '__metadata') {
if (event.name === 'process_name') {
this._name = event.args.name;
}
if (event.tid === 0) {
this._metadata[event.name] = event.args;
return;
}
}
var thread = this.getThread(event.tid);
thread.addEvent(event);
},
rmEvent: function(event) {
var thread = this.getThread(event.tid);
thread.rmEvent(event);
},
getThread: function(id) {
var thread = this._threads[id];
if (!thread) {
thread = new Thread(id, this.id());
this._threads[id] = thread;
}
return thread;
},
rmThread: function(id) {
delete this._threads[id];
},
threads: function() {
return map(this._threads);
},
toJSON: function() {
var _this2 = this;
var events = [];
each(this._metadata, function(args, name) {
events.push(createMetaEvent(_this2._id, 0, name, args));
});
each(this.threads(), function(thread) {
events.push.apply(events, thread.toJSON());
});
return events;
}
});
var Thread = Class({
initialize: function Thread(id, pid) {
this._id = id;
this._pid = pid;
this._name = '';
this._events = [];
this._metadata = {};
},
id: function() {
return this._id;
},
name: function() {
return this._name;
},
addEvent: function(event) {
if (event.cat === '__metadata') {
if (event.name === 'thread_name') {
this._name = event.args.name;
}
this._metadata[event.name] = event.args;
return;
}
this._events.push(event);
},
rmEvent: function(event) {
var events = this._events;
events.splice(events.indexOf(event), 1);
},
events: function() {
return map(this._events);
},
toJSON: function() {
var _this3 = this;
var events = [];
each(this._metadata, function(args, name) {
events.push(createMetaEvent(_this3._pid, _this3._id, name, args));
});
each(this.events(), function(event) {
events.push(event);
});
return events;
}
});
function createMetaEvent(pid, tid, name, args) {
return {
args: args,
cat: '__metadata',
name: name,
ph: 'M',
pid: pid,
tid: tid,
ts: 0
};
}
module.exports = exports;

227
src/miniprogram_npm/miniprogram-licia/Tracing.js

@ -0,0 +1,227 @@ @@ -0,0 +1,227 @@
var Class = require('./Class');
var Trace = require('./Trace');
var perfNow = require('./perfNow');
var extend = require('./extend');
var isNode = require('./isNode');
var Stack = require('./Stack');
var map = require('./map');
var trim = require('./trim');
var isEmpty = require('./isEmpty');
var intersect = require('./intersect');
var convertBase = require('./convertBase');
var defPid = 0;
var defTid = 0;
var id = 0;
if (isNode) {
defPid = process.pid;
try {
defTid = eval('require')('worker_threads').threadId;
} catch (e) {}
}
exports = Class({
initialize: function Tracing() {
var _ref =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: {},
_ref$pid = _ref.pid,
pid = _ref$pid === void 0 ? defPid : _ref$pid,
_ref$tid = _ref.tid,
tid = _ref$tid === void 0 ? defTid : _ref$tid,
_ref$processName = _ref.processName,
processName =
_ref$processName === void 0 ? 'Process' : _ref$processName,
_ref$threadName = _ref.threadName,
threadName =
_ref$threadName === void 0 ? 'Thread' : _ref$threadName;
this._pid = pid;
this._tid = tid;
this._processName = processName;
this._threadName = threadName;
},
start: function() {
var cat =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: '';
this._targetCat = processCat(cat);
if (!isEmpty(this._targetCat)) {
this._targetCat.push('__metadata');
}
this._traceEventStack = new Stack();
this._asyncEventMap = {};
this._trace = new Trace();
this.metadata(
'process_name',
{
name: this._processName
},
{
tid: 0,
ts: 0
}
);
this.metadata(
'thread_name',
{
name: this._threadName
},
{
ts: 0
}
);
},
stop: function() {
var trace = this._trace;
if (!trace) {
throw Error('Need to call start first');
}
delete this._targetCat;
delete this._traceEventStack;
delete this._asyncEventMap;
delete this._trace;
return trace.toJSON();
},
metadata: function(name, args, extra) {
this._addEvent('__metadata', name, Phase.Metadata, args, extra);
},
begin: function(cat, name) {
var args =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: {};
if (!this._traceEventStack) {
return;
}
this._traceEventStack.push({
cat: cat,
name: name,
args: args,
ts: this._getCurTs()
});
},
end: function(args) {
if (!this._traceEventStack) {
return;
}
var beginEvent = this._traceEventStack.pop();
if (!beginEvent) {
throw Error('Need to call begin first');
}
var cat = beginEvent.cat,
name = beginEvent.name,
ts = beginEvent.ts;
args = extend(beginEvent.args, args);
this._addEvent(cat, name, Phase.Complete, args, {
dur: this._getCurTs() - ts,
ts: ts
});
},
asyncBegin: function(cat, name) {
var id =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: this.id();
var args =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: {};
if (!this._asyncEventMap) {
return id;
}
this._asyncEventMap[id] = {
cat: cat,
name: name
};
this._addEvent(cat, name, Phase.NestableAsyncBegin, args, {
id: id
});
return id;
},
asyncEnd: function(id) {
var args =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {};
if (!this._asyncEventMap) {
return;
}
var asyncBeginEvent = this._asyncEventMap[id];
if (!asyncBeginEvent) {
throw Error('Need to call async begin first');
}
var cat = asyncBeginEvent.cat,
name = asyncBeginEvent.name;
delete this._asyncEventMap[id];
this._addEvent(cat, name, Phase.NestableAsyncEnd, args, {
id: id
});
},
instant: function(cat, name) {
var scope =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: 't';
var args = arguments.length > 3 ? arguments[3] : undefined;
this._addEvent(cat, name, Phase.Instant, args, {
s: scope
});
},
id: function() {
return '0x' + convertBase(id++, 10, 16);
},
_addEvent: function(cat, name, ph) {
var args =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: {};
var extra =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: {};
if (!this._trace) {
return;
}
var targetCat = this._targetCat;
if (!isEmpty(targetCat)) {
var catArr = processCat(cat);
if (isEmpty(intersect(catArr, targetCat))) {
return;
}
}
var event = extend(
{
name: name,
cat: cat,
ph: ph,
ts: this._getCurTs(),
pid: this._pid,
tid: this._tid,
args: args
},
extra
);
this._trace.addEvent(event);
},
_getCurTs: function() {
return Math.round(perfNow() * 1000);
}
});
var Phase = {
Begin: 'B',
End: 'E',
Complete: 'X',
Instant: 'I',
NestableAsyncBegin: 'b',
NestableAsyncEnd: 'e',
Metadata: 'M'
};
function processCat(cat) {
cat = trim(cat);
if (cat === '') {
return [];
}
return map(cat.split(','), trim);
}
module.exports = exports;

90
src/miniprogram_npm/miniprogram-licia/Trie.js

@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
var Class = require('./Class');
var each = require('./each');
exports = Class({
initialize: function Trie() {
this.clear();
},
add: function(word) {
var edges = this._edges;
var node = this._root;
this._wordsInSubtree[node]++;
for (var i = 0, len = word.length; i < len; i++) {
var edge = word[i];
var next = edges[node][edge];
if (!next) {
if (this._freeNodes.length) {
next = this._freeNodes.pop();
} else {
next = this._idx++;
this._isWord.push(false);
this._wordsInSubtree.push(0);
edges.push({});
}
edges[node][edge] = next;
}
this._wordsInSubtree[next]++;
node = next;
}
this._isWord[node] = true;
},
remove: function(word) {
if (!this.has(word)) {
return;
}
var node = this._root;
this._wordsInSubtree[node]--;
for (var i = 0, len = word.length; i < len; i++) {
var edge = word[i];
var next = this._edges[node][edge];
if (!--this._wordsInSubtree[next]) {
delete this._edges[node][edge];
this._freeNodes.push(next);
}
node = next;
}
this._isWord[node] = false;
},
has: function(word) {
var node = this._root;
for (var i = 0, len = word.length; i < len; i++) {
node = this._edges[node][word[i]];
if (!node) {
return false;
}
}
return this._isWord[node];
},
words: function(prefix) {
var node = this._root;
for (var i = 0, len = prefix.length; i < len; i++) {
node = this._edges[node][prefix[i]];
if (!node) {
return [];
}
}
var result = [];
this._dfs(node, prefix, result);
return result;
},
clear: function() {
this._idx = 1;
this._root = 0;
this._edges = [{}];
this._isWord = [false];
this._wordsInSubtree = [0];
this._freeNodes = [];
},
_dfs: function(node, prefix, result) {
var _this = this;
if (this._isWord[node]) {
result.push(prefix);
}
var edges = this._edges[node];
each(edges, function(node, edge) {
return _this._dfs(node, prefix + edge, result);
});
}
});
module.exports = exports;

98
src/miniprogram_npm/miniprogram-licia/Tween.js

@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@
var Emitter = require('./Emitter');
var State = require('./State');
var easing = require('./easing');
var now = require('./now');
var each = require('./each');
var raf = require('./raf');
var isFn = require('./isFn');
exports = Emitter.extend({
className: 'Tween',
initialize: function(target) {
this.callSuper(Emitter, 'initialize', arguments);
this._target = target;
this._dest = {};
this._duration = 0;
this._progress = 0;
this._origin = {};
this._diff = {};
this._ease = easing['linear'];
this._state = new State('pause', {
play: {
from: 'pause',
to: 'play'
},
pause: {
from: 'play',
to: 'pause'
}
});
},
to: function(props, duration, ease) {
var origin = {};
var target = this._target;
var diff = {};
ease = ease || this._ease;
this._dest = props;
this._duration = duration || this._duration;
this._ease = isFn(ease) ? ease : easing[ease];
each(props, function(val, key) {
origin[key] = target[key];
diff[key] = val - origin[key];
});
this._origin = origin;
this._diff = diff;
return this;
},
progress: function(progress) {
var ease = this._ease;
var target = this._target;
var origin = this._origin;
var diff = this._diff;
var dest = this._dest;
var self = this;
if (progress != null) {
progress = progress < 1 ? progress : 1;
this._progress = progress;
each(dest, function(val, key) {
target[key] = origin[key] + diff[key] * ease(progress);
});
self.emit('update', target);
return this;
}
return this._progress;
},
play: function() {
var state = this._state;
if (state.is('play')) return;
state.play();
var startTime = now();
var progress = this._progress;
var duration = this._duration * (1 - progress);
var target = this._target;
var self = this;
function render() {
if (state.is('pause')) return;
var time = now();
self.progress(progress + (time - startTime) / duration);
if (self._progress === 1) {
state.pause();
self.emit('end', target);
return;
}
raf(render);
}
raf(render);
return this;
},
pause: function() {
var state = this._state;
if (state.is('pause')) return;
state.pause();
return this;
},
paused: function() {
return this._state.is('pause');
}
});
module.exports = exports;

125
src/miniprogram_npm/miniprogram-licia/Url.js

@ -0,0 +1,125 @@ @@ -0,0 +1,125 @@
var Class = require('./Class');
var extend = require('./extend');
var trim = require('./trim');
var query = require('./query');
var isEmpty = require('./isEmpty');
var each = require('./each');
var isArr = require('./isArr');
var toArr = require('./toArr');
var isBrowser = require('./isBrowser');
var isObj = require('./isObj');
var toStr = require('./toStr');
exports = Class(
{
className: 'Url',
initialize: function(url) {
if (!url && isBrowser) url = window.location.href;
extend(this, exports.parse(url || ''));
},
setQuery: function(name, val) {
var query = this.query;
if (isObj(name)) {
each(name, function(val, key) {
query[key] = toStr(val);
});
} else {
query[name] = toStr(val);
}
return this;
},
rmQuery: function(name) {
var query = this.query;
if (!isArr(name)) name = toArr(name);
each(name, function(key) {
delete query[key];
});
return this;
},
toString: function() {
return exports.stringify(this);
}
},
{
parse: function(url) {
var ret = {
protocol: '',
auth: '',
hostname: '',
hash: '',
query: {},
port: '',
pathname: '',
slashes: false
};
var rest = trim(url);
var slashes = false;
var proto = rest.match(regProto);
if (proto) {
proto = proto[0];
ret.protocol = proto.toLowerCase();
rest = rest.substr(proto.length);
}
if (proto) {
slashes = rest.substr(0, 2) === '//';
if (slashes) {
rest = rest.slice(2);
ret.slashes = true;
}
}
if (slashes) {
var host = rest;
var hostEnd = -1;
for (var i = 0, len = hostEndingChars.length; i < len; i++) {
var pos = rest.indexOf(hostEndingChars[i]);
if (pos !== -1 && (hostEnd === -1 || pos < hostEnd))
hostEnd = pos;
}
if (hostEnd > -1) {
host = rest.slice(0, hostEnd);
rest = rest.slice(hostEnd);
}
var atSign = host.lastIndexOf('@');
if (atSign !== -1) {
ret.auth = decodeURIComponent(host.slice(0, atSign));
host = host.slice(atSign + 1);
}
ret.hostname = host;
var port = host.match(regPort);
if (port) {
port = port[0];
if (port !== ':') ret.port = port.substr(1);
ret.hostname = host.substr(0, host.length - port.length);
}
}
var hash = rest.indexOf('#');
if (hash !== -1) {
ret.hash = rest.substr(hash);
rest = rest.slice(0, hash);
}
var queryMark = rest.indexOf('?');
if (queryMark !== -1) {
ret.query = query.parse(rest.substr(queryMark + 1));
rest = rest.slice(0, queryMark);
}
ret.pathname = rest || '/';
return ret;
},
stringify: function(obj) {
var ret =
obj.protocol +
(obj.slashes ? '//' : '') +
(obj.auth ? encodeURIComponent(obj.auth) + '@' : '') +
obj.hostname +
(obj.port ? ':' + obj.port : '') +
obj.pathname;
if (!isEmpty(obj.query)) ret += '?' + query.stringify(obj.query);
if (obj.hash) ret += obj.hash;
return ret;
}
}
);
var regProto = /^([a-z0-9.+-]+:)/i;
var regPort = /:[0-9]*$/;
var hostEndingChars = ['/', '?', '#'];
module.exports = exports;

82
src/miniprogram_npm/miniprogram-licia/Validator.js

@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
var Class = require('./Class');
var keys = require('./keys');
var safeGet = require('./safeGet');
var isFn = require('./isFn');
var isUndef = require('./isUndef');
var isNum = require('./isNum');
var isStr = require('./isStr');
var isBool = require('./isBool');
exports = Class(
{
className: 'Validator',
initialize: function(options) {
this._options = options;
this._optKeys = keys(options);
},
validate: function(obj) {
obj = obj || {};
var options = this._options;
var objKeys = this._optKeys;
for (var i = 0, len = objKeys.length; i < len; i++) {
var key = objKeys[i];
var result = this._validateVal(
safeGet(obj, key),
options[key],
key
);
if (result !== true) return result;
}
return true;
},
_validateVal: function(val, rules, objKey) {
var plugins = exports.plugins;
if (isFn(rules)) return rules(val);
var ruleKeys = keys(rules);
for (var i = 0, len = ruleKeys.length; i < len; i++) {
var key = ruleKeys[i];
var config = rules[key];
var result = true;
if (isFn(config)) result = config(val, objKey);
var plugin = plugins[key];
if (plugin) result = plugin(val, objKey, config);
if (result !== true) return result;
}
return true;
}
},
{
plugins: {
required: function(val, key, config) {
if (config && isUndef(val)) return key + ' is required';
return true;
},
number: function(val, key, config) {
if (config && !isUndef(val) && !isNum(val))
return key + ' should be a number';
return true;
},
boolean: function(val, key, config) {
if (config && !isUndef(val) && !isBool(val))
return key + ' should be a boolean';
return true;
},
string: function(val, key, config) {
if (config && !isUndef(val) && !isStr(val))
return key + ' should be a string';
return true;
},
regexp: function(val, key, config) {
if (isStr(val) && !config.test(val))
return (
key + ' should match given regexp ' + config.toString()
);
return true;
}
},
addPlugin: function(name, plugin) {
exports.plugins[name] = plugin;
}
}
);
module.exports = exports;

86
src/miniprogram_npm/miniprogram-licia/Wrr.js

@ -0,0 +1,86 @@ @@ -0,0 +1,86 @@
var Class = require('./Class');
var max = require('./max');
var map = require('./map');
var reduce = require('./reduce');
var gcd = require('./gcd');
var filter = require('./filter');
exports = Class({
initialize: function Wrr() {
this._peers = [];
},
set: function(val, weight) {
var peers = this._peers;
var size = this.size;
for (var i = 0; i < size; i++) {
var peer = peers[i];
if (peer.val === val) {
peer.weight = weight;
this._reset();
return;
}
}
peers.push({
val: val,
weight: weight
});
this._reset();
},
get: function(val) {
var peers = this._peers;
var size = this.size;
for (var i = 0; i < size; i++) {
var peer = peers[i];
if (peer.val === val) {
return peer.weight;
}
}
},
remove: function(val) {
this._peers = filter(this._peers, function(peer) {
return peer.val !== val;
});
this._reset();
},
next: function() {
var peers = this._peers;
var size = this.size;
if (size === 0) return;
while (true) {
this._i = (this._i + 1) % size;
if (this._i === 0) {
this._cw = this._cw - this._gcdS;
if (this._cw <= 0) {
this._cw = this._maxS;
}
}
if (this._cw === 0) return;
if (peers[this._i].weight >= this._cw) {
return peers[this._i].val;
}
}
},
clear: function() {
this._peers = [];
this._reset();
},
_reset: function() {
var peers = this._peers;
this.size = peers.length;
var weights = map(peers, function(peer) {
return peer.weight;
});
this._i = -1;
this._cw = 0;
this._maxS = max.apply(null, weights);
this._gcdS = reduce(
weights,
function(prev, weight) {
return gcd(prev, weight);
},
0
);
}
});
module.exports = exports;

28
src/miniprogram_npm/miniprogram-licia/abbrev.js

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
var restArgs = require('./restArgs');
var isSorted = require('./isSorted');
exports = restArgs(function(names) {
names = names.sort(isSorted.defComparator);
var ret = {};
var idleMap = {};
for (var i = 0, len = names.length; i < len; i++) {
var str = names[i];
var nextStr = names[i + 1] || '';
if (str === nextStr) continue;
var start = false;
var abbrev = '';
for (var j = 0, strLen = str.length; j < strLen; j++) {
abbrev += str[j];
if (!start && (str[j] !== nextStr[j] || j === strLen - 1)) {
start = true;
}
if (!start) {
idleMap[abbrev] = str;
} else if (!ret[abbrev] && !idleMap[abbrev]) {
ret[abbrev] = str;
}
}
}
return ret;
});
module.exports = exports;

7
src/miniprogram_npm/miniprogram-licia/after.js

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
exports = function(n, fn) {
return function() {
if (--n < 1) return fn.apply(this, arguments);
};
};
module.exports = exports;

42
src/miniprogram_npm/miniprogram-licia/allKeys.js

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
var keys = require('./keys');
var getProto = require('./getProto');
var unique = require('./unique');
var getOwnPropertyNames = Object.getOwnPropertyNames;
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
exports = function(obj) {
var _ref =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {},
_ref$prototype = _ref.prototype,
prototype = _ref$prototype === void 0 ? true : _ref$prototype,
_ref$unenumerable = _ref.unenumerable,
unenumerable = _ref$unenumerable === void 0 ? false : _ref$unenumerable,
_ref$symbol = _ref.symbol,
symbol = _ref$symbol === void 0 ? false : _ref$symbol;
var ret = [];
if ((unenumerable || symbol) && getOwnPropertyNames) {
var getKeys = keys;
if (unenumerable && getOwnPropertyNames) getKeys = getOwnPropertyNames;
do {
ret = ret.concat(getKeys(obj));
if (symbol && getOwnPropertySymbols) {
ret = ret.concat(getOwnPropertySymbols(obj));
}
} while (
prototype &&
(obj = getProto(obj)) &&
obj !== Object.prototype
);
ret = unique(ret);
} else {
if (prototype) {
for (var key in obj) ret.push(key);
} else {
ret = keys(obj);
}
}
return ret;
};
module.exports = exports;

14
src/miniprogram_npm/miniprogram-licia/arrToMap.js

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
var each = require('./each');
var isUndef = require('./isUndef');
var isFn = require('./isFn');
exports = function(arr, val) {
if (isUndef(val)) val = true;
var _isFn = isFn(val);
var ret = {};
each(arr, function(key) {
ret[key] = _isFn ? val(key) : val;
});
return ret;
};
module.exports = exports;

21
src/miniprogram_npm/miniprogram-licia/atob.js

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
var root = require('./root');
var isNode = require('./isNode');
var base64 = require('./base64');
var map = require('./map');
if (isNode) {
exports = function(str) {
return new Buffer(str, 'base64').toString('binary');
};
} else {
if (root.atob && !false) {
exports = root.atob;
} else {
exports = function(str) {
return map(base64.decode(str), function(c) {
return String.fromCharCode(c);
}).join('');
};
}
}
module.exports = exports;

9
src/miniprogram_npm/miniprogram-licia/average.js

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
exports = function() {
var arr = arguments;
var sum = 0;
var len = arr.length;
for (var i = 0; i < len; i++) sum += arr[i];
return sum / len;
};
module.exports = exports;

83
src/miniprogram_npm/miniprogram-licia/base64.js

@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
exports = {
encode: function(bytes) {
var ret = [];
var len = bytes.length;
var remain = len % 3;
len = len - remain;
for (var i = 0; i < len; i += 3) {
ret.push(
numToBase64(
(bytes[i] << 16) + (bytes[i + 1] << 8) + bytes[i + 2]
)
);
}
len = bytes.length;
var tmp;
if (remain === 1) {
tmp = bytes[len - 1];
ret.push(code[tmp >> 2]);
ret.push(code[(tmp << 4) & 0x3f]);
ret.push('==');
} else if (remain === 2) {
tmp = (bytes[len - 2] << 8) + bytes[len - 1];
ret.push(code[tmp >> 10]);
ret.push(code[(tmp >> 4) & 0x3f]);
ret.push(code[(tmp << 2) & 0x3f]);
ret.push('=');
}
return ret.join('');
},
decode: function(str) {
var len = str.length,
remain = 0;
if (str[len - 2] === '=') remain = 2;
else if (str[len - 1] === '=') remain = 1;
var ret = new Array((len * 3) / 4 - remain);
len = remain > 0 ? len - 4 : len;
var i, j;
for (i = 0, j = 0; i < len; i += 4) {
var num = base64ToNum(str[i], str[i + 1], str[i + 2], str[i + 3]);
ret[j++] = (num >> 16) & 0xff;
ret[j++] = (num >> 8) & 0xff;
ret[j++] = num & 0xff;
}
var tmp;
if (remain === 2) {
tmp =
(codeMap[str.charCodeAt(i)] << 2) |
(codeMap[str.charCodeAt(i + 1)] >> 4);
ret[j++] = tmp & 0xff;
} else if (remain === 1) {
tmp =
(codeMap[str.charCodeAt(i)] << 10) |
(codeMap[str.charCodeAt(i + 1)] << 4) |
(codeMap[str.charCodeAt(i + 2)] >> 2);
ret[j++] = (tmp >> 8) & 0xff;
ret[j++] = tmp & 0xff;
}
return ret;
}
};
var codeMap = [];
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var i = 0, len = code.length; i < len; i++) {
codeMap[code.charCodeAt(i)] = i;
}
function numToBase64(num) {
return (
code[(num >> 18) & 0x3f] +
code[(num >> 12) & 0x3f] +
code[(num >> 6) & 0x3f] +
code[num & 0x3f]
);
}
function base64ToNum(str1, str2, str3, str4) {
return (
(codeMap[str1.charCodeAt(0)] << 18) |
(codeMap[str2.charCodeAt(0)] << 12) |
(codeMap[str3.charCodeAt(0)] << 6) |
codeMap[str4.charCodeAt(0)]
);
}
module.exports = exports;

10
src/miniprogram_npm/miniprogram-licia/before.js

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
exports = function(n, fn) {
var memo;
return function() {
if (--n > 0) memo = fn.apply(this, arguments);
if (n <= 1) fn = null;
return memo;
};
};
module.exports = exports;

24
src/miniprogram_npm/miniprogram-licia/binarySearch.js

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
var isSorted = require('./isSorted');
exports = function(arr, val) {
var cmp =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: isSorted.defComparator;
var startIdx = 0;
var endIdx = arr.length - 1;
while (startIdx <= endIdx) {
var middleIdx = startIdx + Math.floor((endIdx - startIdx) / 2);
var middleVal = arr[middleIdx];
if (cmp(middleVal, val) === 0) {
return middleIdx;
}
if (cmp(middleVal, val) < 0) {
startIdx = middleIdx + 1;
} else {
endIdx = middleIdx - 1;
}
}
return -1;
};
module.exports = exports;

8
src/miniprogram_npm/miniprogram-licia/bind.js

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
var restArgs = require('./restArgs');
exports = restArgs(function(fn, ctx, args) {
return restArgs(function(callArgs) {
return fn.apply(ctx, args.concat(callArgs));
});
});
module.exports = exports;

23
src/miniprogram_npm/miniprogram-licia/btoa.js

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
var root = require('./root');
var isNode = require('./isNode');
var base64 = require('./base64');
var map = require('./map');
if (isNode) {
exports = function(str) {
return new Buffer(str, 'binary').toString('base64');
};
} else {
if (root.btoa && !false) {
exports = root.btoa;
} else {
exports = function(str) {
return base64.encode(
map(str, function(c) {
return c.charCodeAt(0);
})
);
};
}
}
module.exports = exports;

18
src/miniprogram_npm/miniprogram-licia/bubbleSort.js

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
var swap = require('./swap');
var isSorted = require('./isSorted');
exports = function(arr) {
var cmp =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: isSorted.defComparator;
for (var i = 0, len = arr.length; i < len; i++) {
for (var j = i; j > 0; j--) {
if (cmp(arr[j], arr[j - 1]) < 0) {
swap(arr, j, j - 1);
}
}
}
return arr;
};
module.exports = exports;

22
src/miniprogram_npm/miniprogram-licia/bytesToStr.js

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
var utf8 = require('./utf8');
var hex = require('./hex');
var base64 = require('./base64');
exports = function(bytes) {
var encoding =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'utf8';
if (encoding === 'hex') return hex.encode(bytes);
if (encoding === 'base64') return base64.encode(bytes);
var str = [];
for (var i = 0, len = bytes.length; i < len; i++) {
str.push(String.fromCharCode(bytes[i]));
}
str = str.join('');
if (encoding === 'utf8') {
str = utf8.decode(str);
}
return str;
};
module.exports = exports;

9
src/miniprogram_npm/miniprogram-licia/bytesToWords.js

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
exports = function(bytes) {
var words = [];
for (var i = 0, len = bytes.length; i < len; i++) {
words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8);
}
return words;
};
module.exports = exports;

17
src/miniprogram_npm/miniprogram-licia/callbackify.js

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
var restArgs = require('./restArgs');
exports = function(fn) {
return restArgs(function(args) {
var cb = args.pop();
fn.apply(this, args).then(
function(value) {
cb(null, value);
},
function(err) {
if (err === null) err = new Error();
cb(err);
}
);
});
};
module.exports = exports;

16
src/miniprogram_npm/miniprogram-licia/camelCase.js

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
var splitCase = require('./splitCase');
exports = function(str) {
var arr = splitCase(str);
var ret = arr[0];
arr.shift();
arr.forEach(capitalize, arr);
ret += arr.join('');
return ret;
};
function capitalize(val, idx) {
this[idx] = val.replace(/\w/, function(match) {
return match.toUpperCase();
});
}
module.exports = exports;

5
src/miniprogram_npm/miniprogram-licia/capitalize.js

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
exports = function(str) {
return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase();
};
module.exports = exports;

16
src/miniprogram_npm/miniprogram-licia/castPath.js

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
var has = require('./has');
var isArr = require('./isArr');
exports = function(str, obj) {
if (isArr(str)) return str;
if (obj && has(obj, str)) return [str];
var ret = [];
str.replace(regPropName, function(match, number, quote, str) {
ret.push(quote ? str.replace(regEscapeChar, '$1') : number || match);
});
return ret;
};
var regPropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var regEscapeChar = /\\(\\)?/g;
module.exports = exports;

21
src/miniprogram_npm/miniprogram-licia/centerAlign.js

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
var longest = require('./longest');
var isArr = require('./isArr');
var isUndef = require('./isUndef');
var map = require('./map');
var lpad = require('./lpad');
exports = function(str, width) {
var ret = str;
if (!isArr(ret)) {
ret = ret.split(regLineBreak);
}
if (isUndef(width)) width = longest(str);
ret = map(ret, function(str) {
var len = str.length;
return lpad(str, floor((width - len) / 2) + len);
});
return ret.join('\n');
};
var regLineBreak = /\n/g;
var floor = Math.floor;
module.exports = exports;

5
src/miniprogram_npm/miniprogram-licia/char.js

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
exports = function(num) {
return String.fromCodePoint(num);
};
module.exports = exports;

12
src/miniprogram_npm/miniprogram-licia/chunk.js

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
exports = function(arr, size) {
var ret = [];
size = size || 1;
for (var i = 0, len = Math.ceil(arr.length / size); i < len; i++) {
var start = i * size;
var end = start + size;
ret.push(arr.slice(start, end));
}
return ret;
};
module.exports = exports;

12
src/miniprogram_npm/miniprogram-licia/clamp.js

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
var isUndef = require('./isUndef');
exports = function(n, lower, upper) {
if (isUndef(upper)) {
upper = lower;
lower = undefined;
}
if (!isUndef(lower) && n < lower) return lower;
if (n > upper) return upper;
return n;
};
module.exports = exports;

20
src/miniprogram_npm/miniprogram-licia/className.js

@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
var each = require('./each');
var isStr = require('./isStr');
var isNum = require('./isNum');
var isArr = require('./isArr');
var isObj = require('./isObj');
exports = function() {
var ret = [];
each(arguments, function(arg) {
if (!arg) return;
if (isStr(arg) || isNum(arg)) return ret.push(arg);
if (isArr(arg)) return ret.push(exports.apply(null, arg));
if (!isObj(arg)) return;
each(arg, function(val, key) {
if (val) ret.push(key);
});
});
return ret.join(' ');
};
module.exports = exports;

9
src/miniprogram_npm/miniprogram-licia/clone.js

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
var isObj = require('./isObj');
var isArr = require('./isArr');
var extend = require('./extend');
exports = function(obj) {
if (!isObj(obj)) return obj;
return isArr(obj) ? obj.slice() : extend({}, obj);
};
module.exports = exports;

19
src/miniprogram_npm/miniprogram-licia/cloneDeep.js

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
var isObj = require('./isObj');
var isFn = require('./isFn');
var isArr = require('./isArr');
var mapObj = require('./mapObj');
exports = function(obj) {
if (isArr(obj)) {
return obj.map(function(val) {
return exports(val);
});
}
if (isObj(obj) && !isFn(obj)) {
return mapObj(obj, function(val) {
return exports(val);
});
}
return obj;
};
module.exports = exports;

16
src/miniprogram_npm/miniprogram-licia/cmpVersion.js

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
var toInt = require('./toInt');
var max = require('./max');
exports = function(v1, v2) {
v1 = v1.split('.');
v2 = v2.split('.');
var len = max(v1.length, v2.length);
for (var i = 0; i < len; i++) {
var num1 = toInt(v1[i]);
var num2 = toInt(v2[i]);
if (num1 > num2) return 1;
if (num1 < num2) return -1;
}
return 0;
};
module.exports = exports;

9
src/miniprogram_npm/miniprogram-licia/combine.js

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
exports = function(keys, values) {
var ret = {};
for (var i = 0, len = keys.length; i < len; i++) {
ret[keys[i]] = values[i];
}
return ret;
};
module.exports = exports;

8
src/miniprogram_npm/miniprogram-licia/compact.js

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
var filter = require('./filter');
exports = function(arr) {
return filter(arr, function(val) {
return !!val;
});
};
module.exports = exports;

11
src/miniprogram_npm/miniprogram-licia/compose.js

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
var restArgs = require('./restArgs');
exports = restArgs(function(fnList) {
return function() {
var i = fnList.length - 1;
var result = fnList[i].apply(this, arguments);
while (i--) result = fnList[i].call(this, result);
return result;
};
});
module.exports = exports;

11
src/miniprogram_npm/miniprogram-licia/concat.js

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
var toArr = require('./toArr');
exports = function() {
var args = toArr(arguments);
var ret = [];
for (var i = 0, len = args.length; i < len; i++) {
ret = ret.concat(toArr(args[i]));
}
return ret;
};
module.exports = exports;

11
src/miniprogram_npm/miniprogram-licia/contain.js

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
var idxOf = require('./idxOf');
var isStr = require('./isStr');
var isArrLike = require('./isArrLike');
var values = require('./values');
exports = function(arr, val) {
if (isStr(arr)) return arr.indexOf(val) > -1;
if (!isArrLike(arr)) arr = values(arr);
return idxOf(arr, val) >= 0;
};
module.exports = exports;

5
src/miniprogram_npm/miniprogram-licia/convertBase.js

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
exports = function(num, from, to) {
return parseInt(num, from).toString(to);
};
module.exports = exports;

60
src/miniprogram_npm/miniprogram-licia/convertBin.js

@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
var isStr = require('./isStr');
var base64 = require('./base64');
var isArrBuffer = require('./isArrBuffer');
var isArr = require('./isArr');
var isBuffer = require('./isBuffer');
var type = require('./type');
var lowerCase = require('./lowerCase');
exports = function(bin, t) {
var result;
t = lowerCase(t);
if (isStr(bin)) {
result = new Uint8Array(base64.decode(bin));
} else if (isArrBuffer(bin)) {
bin = bin.slice(0);
result = new Uint8Array(bin);
} else if (isArr(bin)) {
result = new Uint8Array(bin);
} else if (type(bin) === 'uint8array') {
result = bin.slice(0);
} else if (isBuffer(bin)) {
result = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) {
result[i] = bin[i];
}
}
if (result) {
switch (t) {
case 'base64':
result = base64.encode(result);
break;
case 'arraybuffer':
result = result.buffer;
break;
case 'array':
result = [].slice.call(result);
break;
case 'buffer':
result = Buffer.from(result);
break;
case 'blob':
result = new Blob([result.buffer]);
break;
}
}
return result;
};
exports.blobToArrBuffer = function(blob) {
return new Promise(function(resolve, reject) {
var fileReader = new FileReader();
fileReader.onload = function(e) {
resolve(e.target.result);
};
fileReader.onerror = function(err) {
reject(err);
};
fileReader.readAsArrayBuffer(blob);
});
};
module.exports = exports;

19
src/miniprogram_npm/miniprogram-licia/crc1.js

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
var isStr = require('./isStr');
var strToBytes = require('./strToBytes');
exports = function(input, previous) {
return exports.signed(input, previous) >>> 0;
};
exports.signed = function(input, previous) {
if (isStr(input)) input = strToBytes(input);
var crc = ~~previous;
var accum = 0;
for (var i = 0, len = input.length; i < len; i++) {
var byte = input[i];
accum += byte;
}
crc += accum % 256;
return crc % 256;
};
module.exports = exports;

276
src/miniprogram_npm/miniprogram-licia/crc16.js

@ -0,0 +1,276 @@ @@ -0,0 +1,276 @@
var isStr = require('./isStr');
var strToBytes = require('./strToBytes');
var TABLE = [
0x0000,
0xc0c1,
0xc181,
0x0140,
0xc301,
0x03c0,
0x0280,
0xc241,
0xc601,
0x06c0,
0x0780,
0xc741,
0x0500,
0xc5c1,
0xc481,
0x0440,
0xcc01,
0x0cc0,
0x0d80,
0xcd41,
0x0f00,
0xcfc1,
0xce81,
0x0e40,
0x0a00,
0xcac1,
0xcb81,
0x0b40,
0xc901,
0x09c0,
0x0880,
0xc841,
0xd801,
0x18c0,
0x1980,
0xd941,
0x1b00,
0xdbc1,
0xda81,
0x1a40,
0x1e00,
0xdec1,
0xdf81,
0x1f40,
0xdd01,
0x1dc0,
0x1c80,
0xdc41,
0x1400,
0xd4c1,
0xd581,
0x1540,
0xd701,
0x17c0,
0x1680,
0xd641,
0xd201,
0x12c0,
0x1380,
0xd341,
0x1100,
0xd1c1,
0xd081,
0x1040,
0xf001,
0x30c0,
0x3180,
0xf141,
0x3300,
0xf3c1,
0xf281,
0x3240,
0x3600,
0xf6c1,
0xf781,
0x3740,
0xf501,
0x35c0,
0x3480,
0xf441,
0x3c00,
0xfcc1,
0xfd81,
0x3d40,
0xff01,
0x3fc0,
0x3e80,
0xfe41,
0xfa01,
0x3ac0,
0x3b80,
0xfb41,
0x3900,
0xf9c1,
0xf881,
0x3840,
0x2800,
0xe8c1,
0xe981,
0x2940,
0xeb01,
0x2bc0,
0x2a80,
0xea41,
0xee01,
0x2ec0,
0x2f80,
0xef41,
0x2d00,
0xedc1,
0xec81,
0x2c40,
0xe401,
0x24c0,
0x2580,
0xe541,
0x2700,
0xe7c1,
0xe681,
0x2640,
0x2200,
0xe2c1,
0xe381,
0x2340,
0xe101,
0x21c0,
0x2080,
0xe041,
0xa001,
0x60c0,
0x6180,
0xa141,
0x6300,
0xa3c1,
0xa281,
0x6240,
0x6600,
0xa6c1,
0xa781,
0x6740,
0xa501,
0x65c0,
0x6480,
0xa441,
0x6c00,
0xacc1,
0xad81,
0x6d40,
0xaf01,
0x6fc0,
0x6e80,
0xae41,
0xaa01,
0x6ac0,
0x6b80,
0xab41,
0x6900,
0xa9c1,
0xa881,
0x6840,
0x7800,
0xb8c1,
0xb981,
0x7940,
0xbb01,
0x7bc0,
0x7a80,
0xba41,
0xbe01,
0x7ec0,
0x7f80,
0xbf41,
0x7d00,
0xbdc1,
0xbc81,
0x7c40,
0xb401,
0x74c0,
0x7580,
0xb541,
0x7700,
0xb7c1,
0xb681,
0x7640,
0x7200,
0xb2c1,
0xb381,
0x7340,
0xb101,
0x71c0,
0x7080,
0xb041,
0x5000,
0x90c1,
0x9181,
0x5140,
0x9301,
0x53c0,
0x5280,
0x9241,
0x9601,
0x56c0,
0x5780,
0x9741,
0x5500,
0x95c1,
0x9481,
0x5440,
0x9c01,
0x5cc0,
0x5d80,
0x9d41,
0x5f00,
0x9fc1,
0x9e81,
0x5e40,
0x5a00,
0x9ac1,
0x9b81,
0x5b40,
0x9901,
0x59c0,
0x5880,
0x9841,
0x8801,
0x48c0,
0x4980,
0x8941,
0x4b00,
0x8bc1,
0x8a81,
0x4a40,
0x4e00,
0x8ec1,
0x8f81,
0x4f40,
0x8d01,
0x4dc0,
0x4c80,
0x8c41,
0x4400,
0x84c1,
0x8581,
0x4540,
0x8701,
0x47c0,
0x4680,
0x8641,
0x8201,
0x42c0,
0x4380,
0x8341,
0x4100,
0x81c1,
0x8081,
0x4040
];
if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);
exports = function(input, previous) {
return exports.signed(input, previous) >>> 0;
};
exports.signed = function(input, previous) {
if (isStr(input)) input = strToBytes(input);
var crc = ~~previous;
for (var i = 0, len = input.length; i < len; i++) {
var byte = input[i];
crc = (TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)) & 0xffff;
}
return crc;
};
module.exports = exports;

29
src/miniprogram_npm/miniprogram-licia/crc32.js

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
var isStr = require('./isStr');
var strToBytes = require('./strToBytes');
var TABLE = [];
for (var n = 0; n < 256; n++) {
var c = n;
for (var k = 0; k < 8; k++) {
if (c & 1) {
c = 0xedb88320 ^ (c >>> 1);
} else {
c = c >>> 1;
}
}
TABLE[n] = c >>> 0;
}
if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);
exports = function(input, previous) {
return exports.signed(input, previous) >>> 0;
};
exports.signed = function(input, previous) {
if (isStr(input)) input = strToBytes(input);
var crc = previous === 0 ? 0 : ~~previous ^ -1;
for (var i = 0, len = input.length; i < len; i++) {
var byte = input[i];
crc = TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
}
return crc ^ -1;
};
module.exports = exports;

276
src/miniprogram_npm/miniprogram-licia/crc8.js

@ -0,0 +1,276 @@ @@ -0,0 +1,276 @@
var isStr = require('./isStr');
var strToBytes = require('./strToBytes');
var TABLE = [
0x00,
0x07,
0x0e,
0x09,
0x1c,
0x1b,
0x12,
0x15,
0x38,
0x3f,
0x36,
0x31,
0x24,
0x23,
0x2a,
0x2d,
0x70,
0x77,
0x7e,
0x79,
0x6c,
0x6b,
0x62,
0x65,
0x48,
0x4f,
0x46,
0x41,
0x54,
0x53,
0x5a,
0x5d,
0xe0,
0xe7,
0xee,
0xe9,
0xfc,
0xfb,
0xf2,
0xf5,
0xd8,
0xdf,
0xd6,
0xd1,
0xc4,
0xc3,
0xca,
0xcd,
0x90,
0x97,
0x9e,
0x99,
0x8c,
0x8b,
0x82,
0x85,
0xa8,
0xaf,
0xa6,
0xa1,
0xb4,
0xb3,
0xba,
0xbd,
0xc7,
0xc0,
0xc9,
0xce,
0xdb,
0xdc,
0xd5,
0xd2,
0xff,
0xf8,
0xf1,
0xf6,
0xe3,
0xe4,
0xed,
0xea,
0xb7,
0xb0,
0xb9,
0xbe,
0xab,
0xac,
0xa5,
0xa2,
0x8f,
0x88,
0x81,
0x86,
0x93,
0x94,
0x9d,
0x9a,
0x27,
0x20,
0x29,
0x2e,
0x3b,
0x3c,
0x35,
0x32,
0x1f,
0x18,
0x11,
0x16,
0x03,
0x04,
0x0d,
0x0a,
0x57,
0x50,
0x59,
0x5e,
0x4b,
0x4c,
0x45,
0x42,
0x6f,
0x68,
0x61,
0x66,
0x73,
0x74,
0x7d,
0x7a,
0x89,
0x8e,
0x87,
0x80,
0x95,
0x92,
0x9b,
0x9c,
0xb1,
0xb6,
0xbf,
0xb8,
0xad,
0xaa,
0xa3,
0xa4,
0xf9,
0xfe,
0xf7,
0xf0,
0xe5,
0xe2,
0xeb,
0xec,
0xc1,
0xc6,
0xcf,
0xc8,
0xdd,
0xda,
0xd3,
0xd4,
0x69,
0x6e,
0x67,
0x60,
0x75,
0x72,
0x7b,
0x7c,
0x51,
0x56,
0x5f,
0x58,
0x4d,
0x4a,
0x43,
0x44,
0x19,
0x1e,
0x17,
0x10,
0x05,
0x02,
0x0b,
0x0c,
0x21,
0x26,
0x2f,
0x28,
0x3d,
0x3a,
0x33,
0x34,
0x4e,
0x49,
0x40,
0x47,
0x52,
0x55,
0x5c,
0x5b,
0x76,
0x71,
0x78,
0x7f,
0x6a,
0x6d,
0x64,
0x63,
0x3e,
0x39,
0x30,
0x37,
0x22,
0x25,
0x2c,
0x2b,
0x06,
0x01,
0x08,
0x0f,
0x1a,
0x1d,
0x14,
0x13,
0xae,
0xa9,
0xa0,
0xa7,
0xb2,
0xb5,
0xbc,
0xbb,
0x96,
0x91,
0x98,
0x9f,
0x8a,
0x8d,
0x84,
0x83,
0xde,
0xd9,
0xd0,
0xd7,
0xc2,
0xc5,
0xcc,
0xcb,
0xe6,
0xe1,
0xe8,
0xef,
0xfa,
0xfd,
0xf4,
0xf3
];
if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE);
exports = function(input, previous) {
return exports.signed(input, previous) >>> 0;
};
exports.signed = function(input, previous) {
if (isStr(input)) input = strToBytes(input);
var crc = ~~previous;
for (var i = 0, len = input.length; i < len; i++) {
var byte = input[i];
crc = TABLE[(crc ^ byte) & 0xff] & 0xff;
}
return crc;
};
module.exports = exports;

11
src/miniprogram_npm/miniprogram-licia/create.js

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
var isObj = require('./isObj');
exports = function(proto) {
if (!isObj(proto)) return {};
if (objCreate && !false) return objCreate(proto);
function noop() {}
noop.prototype = proto;
return new noop();
};
var objCreate = Object.create;
module.exports = exports;

16
src/miniprogram_npm/miniprogram-licia/createAssigner.js

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
var isUndef = require('./isUndef');
var each = require('./each');
exports = function(keysFn, defaults) {
return function(obj) {
each(arguments, function(src, idx) {
if (idx === 0) return;
var keys = keysFn(src);
each(keys, function(key) {
if (!defaults || isUndef(obj[key])) obj[key] = src[key];
});
});
return obj;
};
};
module.exports = exports;

329
src/miniprogram_npm/miniprogram-licia/css.js

@ -0,0 +1,329 @@ @@ -0,0 +1,329 @@
var Class = require('./Class');
var trim = require('./trim');
var repeat = require('./repeat');
var defaults = require('./defaults');
var camelCase = require('./camelCase');
exports = {
parse: function(css) {
return new Parser(css).parse();
},
stringify: function(stylesheet, options) {
return new Compiler(stylesheet, options).compile();
}
};
var regComments = /(\/\*[\s\S]*?\*\/)/gi;
var regOpen = /^{\s*/;
var regClose = /^}/;
var regWhitespace = /^\s*/;
var regProperty = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
var regValue = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
var regSelector = /^([^{]+)/;
var regSemicolon = /^[;\s]*/;
var regColon = /^:\s*/;
var regMedia = /^@media *([^{]+)/;
var regKeyframes = /^@([-\w]+)?keyframes\s*/;
var regFontFace = /^@font-face\s*/;
var regSupports = /^@supports *([^{]+)/;
var regIdentifier = /^([-\w]+)\s*/;
var regKeyframeSelector = /^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/;
var regComma = /^,\s*/;
var Parser = Class({
initialize: function Parser(css) {
this.input = stripCmt(css);
this.open = this._createMatcher(regOpen);
this.close = this._createMatcher(regClose);
this.whitespace = this._createMatcher(regWhitespace);
this.atImport = this._createAtRule('import');
this.atCharset = this._createAtRule('charset');
this.atNamespace = this._createAtRule('namespace');
},
parse: function() {
return this.stylesheet();
},
stylesheet: function() {
return {
type: 'stylesheet',
rules: this.rules()
};
},
rules: function() {
var rule;
var rules = [];
this.whitespace();
while (
this.input.length &&
this.input[0] !== '}' &&
(rule = this.atRule() || this.rule())
) {
rules.push(rule);
this.whitespace();
}
return rules;
},
atRule: function() {
if (this.input[0] !== '@') return;
return (
this.atKeyframes() ||
this.atMedia() ||
this.atSupports() ||
this.atImport() ||
this.atCharset() ||
this.atNamespace() ||
this.atFontFace()
);
},
atKeyframes: function() {
var matched = this.match(regKeyframes);
if (!matched) return;
var vendor = matched[1] || '';
matched = this.match(regIdentifier);
if (!matched) throw Error('@keyframes missing name');
var name = matched[1];
if (!this.open()) throw Error("@keyframes missing '{'");
var keyframes = [];
var keyframe;
while ((keyframe = this.keyframe())) {
keyframes.push(keyframe);
}
if (!this.close()) throw Error("@keyframes missing '}'");
return {
type: 'keyframes',
name: name,
vendor: vendor,
keyframes: keyframes
};
},
keyframe: function() {
var selector = [];
var matched;
while ((matched = this.match(regKeyframeSelector))) {
selector.push(matched[1]);
this.match(regComma);
}
if (!selector.length) return;
this.whitespace();
return {
type: 'keyframe',
selector: selector.join(', '),
declarations: this.declarations()
};
},
atSupports: function() {
var matched = this.match(regSupports);
if (!matched) return;
var supports = trim(matched[1]);
if (!this.open()) throw Error("@supports missing '{'");
var rules = this.rules();
if (!this.close()) throw Error("@supports missing '}'");
return {
type: 'supports',
supports: supports,
rules: rules
};
},
atFontFace: function() {
var matched = this.match(regFontFace);
if (!matched) return;
if (!this.open()) throw Error("@font-face missing '{'");
var declaration;
var declarations = [];
while ((declaration = this.declaration())) {
declarations.push(declaration);
}
if (!this.close()) throw Error("@font-face missing '}'");
return {
type: 'font-face',
declarations: declarations
};
},
atMedia: function() {
var matched = this.match(regMedia);
if (!matched) return;
var media = trim(matched[1]);
if (!this.open()) throw Error("@media missing '{'");
this.whitespace();
var rules = this.rules();
if (!this.close()) throw Error("@media missing '}'");
return {
type: 'media',
media: media,
rules: rules
};
},
rule: function() {
var selector = this.selector();
if (!selector) throw Error('missing selector');
return {
type: 'rule',
selector: selector,
declarations: this.declarations()
};
},
declarations: function() {
var declarations = [];
if (!this.open()) throw Error("missing '{'");
this.whitespace();
var declaration;
while ((declaration = this.declaration())) {
declarations.push(declaration);
}
if (!this.close()) throw Error("missing '}'");
this.whitespace();
return declarations;
},
declaration: function() {
var property = this.match(regProperty);
if (!property) return;
property = trim(property[0]);
if (!this.match(regColon)) throw Error("property missing ':'");
var value = this.match(regValue);
this.match(regSemicolon);
this.whitespace();
return {
type: 'declaration',
property: property,
value: value ? trim(value[0]) : ''
};
},
selector: function() {
var matched = this.match(regSelector);
if (!matched) return;
return trim(matched[0]);
},
match: function(reg) {
var matched = reg.exec(this.input);
if (!matched) return;
this.input = this.input.slice(matched[0].length);
return matched;
},
_createMatcher: function(reg) {
var _this = this;
return function() {
return _this.match(reg);
};
},
_createAtRule: function(name) {
var reg = new RegExp('^@' + name + '\\s*([^;]+);');
return function() {
var matched = this.match(reg);
if (!matched) return;
var ret = {
type: name
};
ret[name] = trim(matched[1]);
return ret;
};
}
});
var Compiler = Class({
initialize: function Compiler(input) {
var options =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {};
defaults(options, {
indent: ' '
});
this.input = input;
this.indentLevel = 0;
this.indentation = options.indent;
},
compile: function() {
return this.stylesheet(this.input);
},
stylesheet: function(node) {
return this.mapVisit(node.rules, '\n\n');
},
media: function(node) {
return (
'@media ' +
node.media +
' {\n' +
this.indent(1) +
this.mapVisit(node.rules, '\n\n') +
this.indent(-1) +
'\n}'
);
},
keyframes: function(node) {
return (
'@'.concat(node.vendor, 'keyframes ') +
node.name +
' {\n' +
this.indent(1) +
this.mapVisit(node.keyframes, '\n') +
this.indent(-1) +
'\n}'
);
},
supports: function(node) {
return (
'@supports ' +
node.supports +
' {\n' +
this.indent(1) +
this.mapVisit(node.rules, '\n\n') +
this.indent(-1) +
'\n}'
);
},
keyframe: function(node) {
return this.rule(node);
},
mapVisit: function(nodes, delimiter) {
var str = '';
for (var i = 0, len = nodes.length; i < len; i++) {
var node = nodes[i];
str += this[camelCase(node.type)](node);
if (delimiter && i < len - 1) str += delimiter;
}
return str;
},
fontFace: function(node) {
return (
'@font-face {\n' +
this.indent(1) +
this.mapVisit(node.declarations, '\n') +
this.indent(-1) +
'\n}'
);
},
rule: function(node) {
return (
this.indent() +
node.selector +
' {\n' +
this.indent(1) +
this.mapVisit(node.declarations, '\n') +
this.indent(-1) +
'\n' +
this.indent() +
'}'
);
},
declaration: function(node) {
return this.indent() + node.property + ': ' + node.value + ';';
},
import: function(node) {
return '@import '.concat(node.import, ';');
},
charset: function(node) {
return '@charset '.concat(node.charset, ';');
},
namespace: function(node) {
return '@namespace '.concat(node.namespace, ';');
},
indent: function(level) {
if (level) {
this.indentLevel += level;
return '';
}
return repeat(this.indentation, this.indentLevel);
}
});
var stripCmt = function(str) {
return str.replace(regComments, '');
};
module.exports = exports;

63
src/miniprogram_npm/miniprogram-licia/cssPriority.js

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
var selector = require('./selector');
var each = require('./each');
var startWith = require('./startWith');
var contain = require('./contain');
var cmpVersion = require('./cmpVersion');
exports = function(sel) {
var _ref =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {},
_ref$important = _ref.important,
important = _ref$important === void 0 ? false : _ref$important,
_ref$inlineStyle = _ref.inlineStyle,
inlineStyle = _ref$inlineStyle === void 0 ? false : _ref$inlineStyle,
_ref$position = _ref.position,
position = _ref$position === void 0 ? 0 : _ref$position;
var ret = [0, 0, 0, 0, 0, position];
if (important) ret[0] = 1;
if (inlineStyle) ret[1] = 1;
var group = selector.parse(sel)[0];
each(group, function(_ref2) {
var type = _ref2.type,
value = _ref2.value;
switch (type) {
case 'id':
ret[2]++;
break;
case 'class':
case 'attribute':
ret[3]++;
break;
case 'pseudo':
if (contain(PSEUDO_ELEMS, value.replace(/:/g, ''))) {
ret[4]++;
} else if (!startWith(value, '::')) {
ret[3]++;
}
break;
case 'tag':
if (value !== '*') {
ret[4]++;
}
break;
}
});
return ret;
};
var PSEUDO_ELEMS = [
'first-letter',
'last-letter',
'first-line',
'last-line',
'first-child',
'last-child',
'before',
'after'
];
exports.compare = function(p1, p2) {
return cmpVersion(p1.join('.'), p2.join('.'));
};
module.exports = exports;

15
src/miniprogram_npm/miniprogram-licia/curry.js

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
var toArr = require('./toArr');
exports = function(fn) {
var len = fn.length;
return function curriedFn() {
var args = toArr(arguments);
if (args.length < len) {
return function() {
return curriedFn.apply(null, args.concat(toArr(arguments)));
};
}
return fn.apply(null, args);
};
};
module.exports = exports;

68
src/miniprogram_npm/miniprogram-licia/dataUrl.js

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
var isDataUrl = require('./isDataUrl');
var trim = require('./trim');
var endWith = require('./endWith');
var startWith = require('./startWith');
var contain = require('./contain');
var decodeUriComponent = require('./decodeUriComponent');
var defaults = require('./defaults');
var isStr = require('./isStr');
var convertBin = require('./convertBin');
exports = {
parse: function(dataUrl) {
if (!isDataUrl(dataUrl)) {
return null;
}
dataUrl = dataUrl.slice('data:'.length);
var commaIdx = dataUrl.indexOf(',');
var mime = trim(dataUrl.slice(0, commaIdx));
var data = trim(dataUrl.slice(commaIdx + 1));
var base64 = false;
if (endWith(mime, ';base64')) {
base64 = true;
mime = mime.slice(0, -';base64'.length);
}
var charset = '';
if (contain(mime, 'charset=')) {
charset = mime.split('charset=')[1];
mime = mime.split(';')[0];
}
if (!mime) {
mime = 'text/plain';
}
if (!base64 && startWith(mime, 'text/') && contain(data, '%')) {
data = decodeUriComponent(data);
}
return {
data: data,
mime: mime,
charset: charset,
base64: base64
};
},
stringify: function(data, mime) {
var options =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: {};
defaults(options, {
base64: true,
charset: ''
});
var result = 'data:' + mime;
if (options.charset && startWith(mime, 'text/')) {
result += ';charset=' + options.charset;
}
if (!isStr(data)) {
data = convertBin(data, 'base64');
options.base64 = true;
}
if (options.base64) {
result += ';base64';
} else if (startWith(mime, 'text/') || !mime) {
data = encodeURIComponent(data);
}
return result + ',' + data;
}
};
module.exports = exports;

142
src/miniprogram_npm/miniprogram-licia/dateFormat.js

@ -0,0 +1,142 @@ @@ -0,0 +1,142 @@
var isStr = require('./isStr');
var isDate = require('./isDate');
var toStr = require('./toStr');
var lpad = require('./lpad');
exports = function(date, mask, utc, gmt) {
if (arguments.length === 1 && isStr(date) && !regNum.test(date)) {
mask = date;
date = undefined;
}
date = date || new Date();
if (!isDate(date)) date = new Date(date);
mask = toStr(exports.masks[mask] || mask || exports.masks['default']);
var maskSlice = mask.slice(0, 4);
if (maskSlice === 'UTC:' || maskSlice === 'GMT:') {
mask = mask.slice(4);
utc = true;
if (maskSlice === 'GMT:') gmt = true;
}
var prefix = utc ? 'getUTC' : 'get';
var d = date[prefix + 'Date']();
var D = date[prefix + 'Day']();
var m = date[prefix + 'Month']();
var y = date[prefix + 'FullYear']();
var H = date[prefix + 'Hours']();
var M = date[prefix + 'Minutes']();
var s = date[prefix + 'Seconds']();
var L = date[prefix + 'Milliseconds']();
var o = utc ? 0 : date.getTimezoneOffset();
var flags = {
d: d,
dd: padZero(d),
ddd: exports.i18n.dayNames[D],
dddd: exports.i18n.dayNames[D + 7],
m: m + 1,
mm: padZero(m + 1),
mmm: exports.i18n.monthNames[m],
mmmm: exports.i18n.monthNames[m + 12],
yy: toStr(y).slice(2),
yyyy: y,
h: H % 12 || 12,
hh: padZero(H % 12 || 12),
H: H,
HH: padZero(H),
M: M,
MM: padZero(M),
s: s,
ss: padZero(s),
l: padZero(L, 3),
L: padZero(Math.round(L / 10)),
t: H < 12 ? 'a' : 'p',
tt: H < 12 ? 'am' : 'pm',
T: H < 12 ? 'A' : 'P',
TT: H < 12 ? 'AM' : 'PM',
Z: gmt
? 'GMT'
: utc
? 'UTC'
: (toStr(date).match(regTimezone) || [''])
.pop()
.replace(regTimezoneClip, ''),
o:
(o > 0 ? '-' : '+') +
padZero(Math.floor(Math.abs(o) / 60) * 100 + (Math.abs(o) % 60), 4),
S: ['th', 'st', 'nd', 'rd'][
d % 10 > 3 ? 0 : (((d % 100) - (d % 10) != 10) * d) % 10
]
};
return mask.replace(regToken, function(match) {
if (match in flags) return flags[match];
return match.slice(1, match.length - 1);
});
};
var padZero = function(str) {
var len =
arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
return lpad(toStr(str), len, '0');
};
var regToken = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|"[^"]*"|'[^']*'/g;
var regTimezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g;
var regNum = /\d/;
var regTimezoneClip = /[^-+\dA-Z]/g;
exports.masks = {
default: 'ddd mmm dd yyyy HH:MM:ss',
shortDate: 'm/d/yy',
mediumDate: 'mmm d, yyyy',
longDate: 'mmmm d, yyyy',
fullDate: 'dddd, mmmm d, yyyy',
shortTime: 'h:MM TT',
mediumTime: 'h:MM:ss TT',
longTime: 'h:MM:ss TT Z',
isoDate: 'yyyy-mm-dd',
isoTime: 'HH:MM:ss',
isoDateTime: "yyyy-mm-dd'T'HH:MM:sso",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",
expiresHeaderFormat: 'ddd, dd mmm yyyy HH:MM:ss Z'
};
exports.i18n = {
dayNames: [
'Sun',
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
],
monthNames: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec',
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
};
module.exports = exports;

15
src/miniprogram_npm/miniprogram-licia/debounce.js

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
exports = function(fn, wait, immediate) {
var timeout;
return function() {
var ctx = this;
var args = arguments;
var throttler = function() {
timeout = null;
fn.apply(ctx, args);
};
if (!immediate) clearTimeout(timeout);
if (!immediate || !timeout) timeout = setTimeout(throttler, wait);
};
};
module.exports = exports;

206
src/miniprogram_npm/miniprogram-licia/deburr.js

@ -0,0 +1,206 @@ @@ -0,0 +1,206 @@
exports = function(str) {
return str
.replace(regLatin, function(key) {
return deburredLetters[key];
})
.replace(regComboMark, '');
};
var regComboMark = /[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]/g;
var regLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var deburredLetters = {
À: 'A',
Á: 'A',
Â: 'A',
Ã: 'A',
Ä: 'A',
Å: 'A',
à: 'a',
á: 'a',
â: 'a',
ã: 'a',
ä: 'a',
å: 'a',
Ç: 'C',
ç: 'c',
Ð: 'D',
ð: 'd',
È: 'E',
É: 'E',
Ê: 'E',
Ë: 'E',
è: 'e',
é: 'e',
ê: 'e',
ë: 'e',
Ì: 'I',
Í: 'I',
Î: 'I',
Ï: 'I',
ì: 'i',
í: 'i',
î: 'i',
ï: 'i',
Ñ: 'N',
ñ: 'n',
Ò: 'O',
Ó: 'O',
Ô: 'O',
Õ: 'O',
Ö: 'O',
Ø: 'O',
ò: 'o',
ó: 'o',
ô: 'o',
õ: 'o',
ö: 'o',
ø: 'o',
Ù: 'U',
Ú: 'U',
Û: 'U',
Ü: 'U',
ù: 'u',
ú: 'u',
û: 'u',
ü: 'u',
Ý: 'Y',
ý: 'y',
ÿ: 'y',
Æ: 'Ae',
æ: 'ae',
Þ: 'Th',
þ: 'th',
ß: 'ss',
Ā: 'A',
Ă: 'A',
Ą: 'A',
ā: 'a',
ă: 'a',
ą: 'a',
Ć: 'C',
Ĉ: 'C',
Ċ: 'C',
Č: 'C',
ć: 'c',
ĉ: 'c',
ċ: 'c',
č: 'c',
Ď: 'D',
Đ: 'D',
ď: 'd',
đ: 'd',
Ē: 'E',
Ĕ: 'E',
Ė: 'E',
Ę: 'E',
Ě: 'E',
ē: 'e',
ĕ: 'e',
ė: 'e',
ę: 'e',
ě: 'e',
Ĝ: 'G',
Ğ: 'G',
Ġ: 'G',
Ģ: 'G',
ĝ: 'g',
ğ: 'g',
ġ: 'g',
ģ: 'g',
Ĥ: 'H',
Ħ: 'H',
ĥ: 'h',
ħ: 'h',
Ĩ: 'I',
Ī: 'I',
Ĭ: 'I',
Į: 'I',
İ: 'I',
ĩ: 'i',
ī: 'i',
ĭ: 'i',
į: 'i',
ı: 'i',
Ĵ: 'J',
ĵ: 'j',
Ķ: 'K',
ķ: 'k',
ĸ: 'k',
Ĺ: 'L',
Ļ: 'L',
Ľ: 'L',
Ŀ: 'L',
Ł: 'L',
ĺ: 'l',
ļ: 'l',
ľ: 'l',
ŀ: 'l',
ł: 'l',
Ń: 'N',
Ņ: 'N',
Ň: 'N',
Ŋ: 'N',
ń: 'n',
ņ: 'n',
ň: 'n',
ŋ: 'n',
Ō: 'O',
Ŏ: 'O',
Ő: 'O',
ō: 'o',
ŏ: 'o',
ő: 'o',
Ŕ: 'R',
Ŗ: 'R',
Ř: 'R',
ŕ: 'r',
ŗ: 'r',
ř: 'r',
Ś: 'S',
Ŝ: 'S',
Ş: 'S',
Š: 'S',
ś: 's',
ŝ: 's',
ş: 's',
š: 's',
Ţ: 'T',
Ť: 'T',
Ŧ: 'T',
ţ: 't',
ť: 't',
ŧ: 't',
Ũ: 'U',
Ū: 'U',
Ŭ: 'U',
Ů: 'U',
Ű: 'U',
Ų: 'U',
ũ: 'u',
ū: 'u',
ŭ: 'u',
ů: 'u',
ű: 'u',
ų: 'u',
Ŵ: 'W',
ŵ: 'w',
Ŷ: 'Y',
ŷ: 'y',
Ÿ: 'Y',
Ź: 'Z',
Ż: 'Z',
Ž: 'Z',
ź: 'z',
ż: 'z',
ž: 'z',
IJ: 'IJ',
ij: 'ij',
Œ: 'Oe',
œ: 'oe',
ʼn: "'n",
ſ: 's'
};
module.exports = exports;

31
src/miniprogram_npm/miniprogram-licia/decodeUriComponent.js

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
var each = require('./each');
var ucs2 = require('./ucs2');
var map = require('./map');
var utf8 = require('./utf8');
exports = function(str) {
try {
return decodeURIComponent(str);
} catch (e) {
var matches = str.match(regMatcher);
if (!matches) {
return str;
}
each(matches, function(match) {
str = str.replace(match, decode(match));
});
return str;
}
};
function decode(str) {
str = str.split('%').slice(1);
var bytes = map(str, hexToInt);
str = ucs2.encode(bytes);
str = utf8.decode(str, true);
return str;
}
function hexToInt(numStr) {
return +('0x' + numStr);
}
var regMatcher = /(%[a-f0-9]{2})+/gi;
module.exports = exports;

5
src/miniprogram_npm/miniprogram-licia/defaults.js

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
var createAssigner = require('./createAssigner');
var allKeys = require('./allKeys');
exports = createAssigner(allKeys, true);
module.exports = exports;

17
src/miniprogram_npm/miniprogram-licia/define.js

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
var toArr = require('./toArr');
exports = function(name, requires, method) {
if (arguments.length === 2) {
method = requires;
requires = [];
}
define(name, requires, method);
};
var modules = (exports._modules = {});
function define(name, requires, method) {
modules[name] = {
requires: toArr(requires),
body: method
};
}
module.exports = exports;

26
src/miniprogram_npm/miniprogram-licia/defineProp.js

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
var castPath = require('./castPath');
var isStr = require('./isStr');
var isObj = require('./isObj');
var each = require('./each');
exports = function(obj, prop, descriptor) {
if (isStr(prop)) {
defineProp(obj, prop, descriptor);
} else if (isObj(prop)) {
each(prop, function(descriptor, prop) {
defineProp(obj, prop, descriptor);
});
}
return obj;
};
function defineProp(obj, prop, descriptor) {
var path = castPath(prop, obj);
var lastProp = path.pop();
while ((prop = path.shift())) {
if (!obj[prop]) obj[prop] = {};
obj = obj[prop];
}
Object.defineProperty(obj, lastProp, descriptor);
}
module.exports = exports;

8
src/miniprogram_npm/miniprogram-licia/defined.js

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
var isUndef = require('./isUndef');
exports = function() {
for (var i = 0, len = arguments.length; i < len; i++) {
if (!isUndef(arguments[i])) return arguments[i];
}
};
module.exports = exports;

8
src/miniprogram_npm/miniprogram-licia/delay.js

@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
var restArgs = require('./restArgs');
exports = restArgs(function(fn, wait, args) {
return setTimeout(function() {
return fn.apply(null, args);
}, wait);
});
module.exports = exports;

36
src/miniprogram_npm/miniprogram-licia/deprecate.js

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
var isNode = require('./isNode');
var root = require('./root');
var memStorage = require('./memStorage');
if (isNode) {
exports = eval('require')('util').deprecate;
} else {
var localStorage = root.localStorage || memStorage;
exports = function(fn, msg) {
if (localStorage.getItem('noDeprecation')) {
return fn;
}
var warned = false;
function deprecated() {
if (!warned) {
warned = true;
console.warn(msg);
}
for (
var _len = arguments.length, args = new Array(_len), _key = 0;
_key < _len;
_key++
) {
args[_key] = arguments[_key];
}
return fn.apply(this, args);
}
Object.setPrototypeOf(deprecated, fn);
if (fn.prototype) {
deprecated.prototype = fn.prototype;
}
return deprecated;
};
}
module.exports = exports;

51
src/miniprogram_npm/miniprogram-licia/detectBrowser.js

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
var isBrowser = require('./isBrowser');
var toInt = require('./toInt');
var keys = require('./keys');
exports = function(ua) {
ua = ua || (isBrowser ? navigator.userAgent : '');
ua = ua.toLowerCase();
var ieVer = getVer(ua, 'msie ');
if (ieVer)
return {
version: ieVer,
name: 'ie'
};
if (regIe11.test(ua))
return {
version: 11,
name: 'ie'
};
for (var i = 0, len = browsers.length; i < len; i++) {
var name = browsers[i];
var match = ua.match(regBrowsers[name]);
if (match == null) continue;
var version = toInt(match[1].split('.')[0]);
if (name === 'opera') version = getVer(ua, 'version/') || version;
return {
name: name,
version: version
};
}
return {
name: 'unknown',
version: -1
};
};
var regBrowsers = {
edge: /edge\/([0-9._]+)/,
firefox: /firefox\/([0-9.]+)(?:\s|$)/,
opera: /opera\/([0-9.]+)(?:\s|$)/,
android: /android\s([0-9.]+)/,
ios: /version\/([0-9._]+).*mobile.*safari.*/,
safari: /version\/([0-9._]+).*safari/,
chrome: /(?!chrom.*opr)chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/
};
var regIe11 = /trident\/7\./;
var browsers = keys(regBrowsers);
function getVer(ua, mark) {
var idx = ua.indexOf(mark);
if (idx > -1)
return toInt(ua.substring(idx + mark.length, ua.indexOf('.', idx)));
}
module.exports = exports;

11
src/miniprogram_npm/miniprogram-licia/detectMocha.js

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
var root = require('./root');
exports = function() {
for (var i = 0, len = methods.length; i < len; i++) {
var method = methods[i];
if (typeof root[method] !== 'function') return false;
}
return true;
};
var methods = ['afterEach', 'after', 'beforeEach', 'before', 'describe', 'it'];
module.exports = exports;

39
src/miniprogram_npm/miniprogram-licia/detectOs.js

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
var isBrowser = require('./isBrowser');
var isNode = require('./isNode');
exports = function(ua) {
if (!ua && isBrowser) {
ua = navigator.userAgent;
}
function detect(keyword) {
return ua.indexOf(keyword) > -1;
}
if (ua) {
ua = ua.toLowerCase();
if (detect('windows phone')) return 'windows phone';
if (detect('win')) return 'windows';
if (detect('android')) return 'android';
if (detect('ipad') || detect('iphone') || detect('ipod')) return 'ios';
if (detect('mac')) return 'os x';
if (detect('linux')) return 'linux';
} else if (isNode) {
var _process = process,
platform = _process.platform,
env = _process.env;
if (
platform === 'win32' ||
env.OSTYPE === 'cygwin' ||
env.OSTYPE === 'msys'
) {
return 'windows';
}
if (platform === 'darwin') {
return 'os x';
}
if (platform === 'linux') {
return 'linux';
}
}
return 'unknown';
};
module.exports = exports;

12
src/miniprogram_npm/miniprogram-licia/difference.js

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
var restArgs = require('./restArgs');
var flatten = require('./flatten');
var filter = require('./filter');
var contain = require('./contain');
exports = restArgs(function(arr, args) {
args = flatten(args);
return filter(arr, function(val) {
return !contain(args, val);
});
});
module.exports = exports;

6
src/miniprogram_npm/miniprogram-licia/dotCase.js

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
var splitCase = require('./splitCase');
exports = function(str) {
return splitCase(str).join('.');
};
module.exports = exports;

39
src/miniprogram_npm/miniprogram-licia/durationFormat.js

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
var toInt = require('./toInt');
var lpad = require('./lpad');
var toStr = require('./toStr');
var floor = Math.floor;
exports = function(duration) {
var mask =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'hh:mm:ss';
duration = toInt(duration);
var d = floor(duration / 86400000);
var h = floor(duration / 3600000) % 24;
var m = floor(duration / 60000) % 60;
var s = floor(duration / 1000) % 60;
var l = floor(duration) % 1000;
var flags = {
d: d,
h: h,
hh: padZero(h),
m: m,
mm: padZero(m),
s: s,
ss: padZero(s),
l: l,
ll: padZero(l, 3)
};
return mask.replace(regToken, function(match) {
if (match in flags) return flags[match];
return match.slice(1, match.length - 1);
});
};
var padZero = function(str) {
var len =
arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
return lpad(toStr(str), len, '0');
};
var regToken = /d{1,2}|h{1,2}|m{1,2}|s{1,2}|l{1,2}|"[^"]*"|'[^']*'/g;
module.exports = exports;

18
src/miniprogram_npm/miniprogram-licia/each.js

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
var isArrLike = require('./isArrLike');
var keys = require('./keys');
var optimizeCb = require('./optimizeCb');
exports = function(obj, iterator, ctx) {
iterator = optimizeCb(iterator, ctx);
var i, len;
if (isArrLike(obj)) {
for (i = 0, len = obj.length; i < len; i++) iterator(obj[i], i, obj);
} else {
var _keys = keys(obj);
for (i = 0, len = _keys.length; i < len; i++) {
iterator(obj[_keys[i]], _keys[i], obj);
}
}
return obj;
};
module.exports = exports;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save