screw-up 1.25.0 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3014 -1083
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +770 -1100
- package/dist/index.mjs.map +1 -1
- package/dist/main.cjs +3745 -1565
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +1202 -1508
- package/dist/main.mjs.map +1 -1
- package/dist/metadata-file-Djz8vanJ.js +2514 -0
- package/dist/metadata-file-Djz8vanJ.js.map +1 -0
- package/dist/packageMetadata-B3dAY9Pw.js +29 -0
- package/dist/packageMetadata-B3dAY9Pw.js.map +1 -0
- package/dist/packageMetadata-BZlXZqjz.cjs +15 -0
- package/dist/packageMetadata-BwJnVnNu.cjs +55 -0
- package/dist/packageMetadata-BwJnVnNu.cjs.map +1 -0
- package/dist/src/analyzer.d.ts +38 -0
- package/dist/src/analyzer.d.ts.map +1 -0
- package/dist/src/cli-internal.d.ts +62 -0
- package/dist/src/cli-internal.d.ts.map +1 -0
- package/dist/src/cli.d.ts +13 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/default-import-fix.d.ts +22 -0
- package/dist/src/default-import-fix.d.ts.map +1 -0
- package/dist/src/fast-tags.d.ts +42 -0
- package/dist/src/fast-tags.d.ts.map +1 -0
- package/dist/src/generated/packageMetadata.d.ts +18 -0
- package/dist/src/generated/packageMetadata.d.ts.map +1 -0
- package/dist/src/git-operations.d.ts +69 -0
- package/dist/src/git-operations.d.ts.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/internal.d.ts +115 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/{main.d.ts → src/main.d.ts} +5 -3
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/metadata-file.d.ts +22 -0
- package/dist/src/metadata-file.d.ts.map +1 -0
- package/dist/{index.d.ts → src/types.d.ts} +72 -85
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/vite-plugin.d.ts +26 -0
- package/dist/src/vite-plugin.d.ts.map +1 -0
- package/package.json +19 -19
- package/dist/metadata-file-3UqfivKm.cjs +0 -2385
- package/dist/metadata-file-3UqfivKm.cjs.map +0 -1
- package/dist/metadata-file-CV4Jy39y.js +0 -2369
- package/dist/metadata-file-CV4Jy39y.js.map +0 -1
|
@@ -0,0 +1,2514 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* name: screw-up
|
|
3
|
+
* version: 1.27.0
|
|
4
|
+
* description: Simply package metadata inserter on Vite plugin
|
|
5
|
+
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
|
+
* license: MIT
|
|
7
|
+
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
+
* git.commit.hash: eb1634007fc12b0ddd13928d7688758bdfe32624
|
|
9
|
+
*/
|
|
10
|
+
import fs, { mkdir, readFile, readdir, stat, writeFile } from "fs/promises";
|
|
11
|
+
import { existsSync } from "fs";
|
|
12
|
+
import { basename, dirname, isAbsolute, join } from "path";
|
|
13
|
+
import { glob } from "glob";
|
|
14
|
+
import * as git from "isomorphic-git";
|
|
15
|
+
import __screwUpDefaultImportModule0 from "isomorphic-git";
|
|
16
|
+
//#region \0rolldown/runtime.js
|
|
17
|
+
var __create = Object.create;
|
|
18
|
+
var __defProp = Object.defineProperty;
|
|
19
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
20
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
21
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
22
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
23
|
+
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
24
|
+
var __exportAll = (all, no_symbols) => {
|
|
25
|
+
let target = {};
|
|
26
|
+
for (var name in all) __defProp(target, name, {
|
|
27
|
+
get: all[name],
|
|
28
|
+
enumerable: true
|
|
29
|
+
});
|
|
30
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
31
|
+
return target;
|
|
32
|
+
};
|
|
33
|
+
var __copyProps = (to, from, except, desc) => {
|
|
34
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
35
|
+
key = keys[i];
|
|
36
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
37
|
+
get: ((k) => from[k]).bind(null, key),
|
|
38
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return to;
|
|
42
|
+
};
|
|
43
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
44
|
+
value: mod,
|
|
45
|
+
enumerable: true
|
|
46
|
+
}) : target, mod));
|
|
47
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) {
|
|
48
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
49
|
+
throw Error("Calling `require` for \"" + x + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
|
|
50
|
+
});
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region node_modules/json5/dist/index.js
|
|
53
|
+
var require_dist = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
54
|
+
(function(global, factory) {
|
|
55
|
+
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.JSON5 = factory();
|
|
56
|
+
})(exports, (function() {
|
|
57
|
+
"use strict";
|
|
58
|
+
function createCommonjsModule(fn, module$1) {
|
|
59
|
+
return module$1 = { exports: {} }, fn(module$1, module$1.exports), module$1.exports;
|
|
60
|
+
}
|
|
61
|
+
var _global = createCommonjsModule(function(module$2) {
|
|
62
|
+
var global = module$2.exports = typeof window != "undefined" && window.Math == Math ? window : typeof self != "undefined" && self.Math == Math ? self : Function("return this")();
|
|
63
|
+
if (typeof __g == "number") __g = global;
|
|
64
|
+
});
|
|
65
|
+
var _core = createCommonjsModule(function(module$3) {
|
|
66
|
+
var core = module$3.exports = { version: "2.6.5" };
|
|
67
|
+
if (typeof __e == "number") __e = core;
|
|
68
|
+
});
|
|
69
|
+
_core.version;
|
|
70
|
+
var _isObject = function(it) {
|
|
71
|
+
return typeof it === "object" ? it !== null : typeof it === "function";
|
|
72
|
+
};
|
|
73
|
+
var _anObject = function(it) {
|
|
74
|
+
if (!_isObject(it)) throw TypeError(it + " is not an object!");
|
|
75
|
+
return it;
|
|
76
|
+
};
|
|
77
|
+
var _fails = function(exec) {
|
|
78
|
+
try {
|
|
79
|
+
return !!exec();
|
|
80
|
+
} catch (e) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
var _descriptors = !_fails(function() {
|
|
85
|
+
return Object.defineProperty({}, "a", { get: function() {
|
|
86
|
+
return 7;
|
|
87
|
+
} }).a != 7;
|
|
88
|
+
});
|
|
89
|
+
var document = _global.document;
|
|
90
|
+
var is = _isObject(document) && _isObject(document.createElement);
|
|
91
|
+
var _domCreate = function(it) {
|
|
92
|
+
return is ? document.createElement(it) : {};
|
|
93
|
+
};
|
|
94
|
+
var _ie8DomDefine = !_descriptors && !_fails(function() {
|
|
95
|
+
return Object.defineProperty(_domCreate("div"), "a", { get: function() {
|
|
96
|
+
return 7;
|
|
97
|
+
} }).a != 7;
|
|
98
|
+
});
|
|
99
|
+
var _toPrimitive = function(it, S) {
|
|
100
|
+
if (!_isObject(it)) return it;
|
|
101
|
+
var fn, val;
|
|
102
|
+
if (S && typeof (fn = it.toString) == "function" && !_isObject(val = fn.call(it))) return val;
|
|
103
|
+
if (typeof (fn = it.valueOf) == "function" && !_isObject(val = fn.call(it))) return val;
|
|
104
|
+
if (!S && typeof (fn = it.toString) == "function" && !_isObject(val = fn.call(it))) return val;
|
|
105
|
+
throw TypeError("Can't convert object to primitive value");
|
|
106
|
+
};
|
|
107
|
+
var dP = Object.defineProperty;
|
|
108
|
+
var _objectDp = { f: _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
|
|
109
|
+
_anObject(O);
|
|
110
|
+
P = _toPrimitive(P, true);
|
|
111
|
+
_anObject(Attributes);
|
|
112
|
+
if (_ie8DomDefine) try {
|
|
113
|
+
return dP(O, P, Attributes);
|
|
114
|
+
} catch (e) {}
|
|
115
|
+
if ("get" in Attributes || "set" in Attributes) throw TypeError("Accessors not supported!");
|
|
116
|
+
if ("value" in Attributes) O[P] = Attributes.value;
|
|
117
|
+
return O;
|
|
118
|
+
} };
|
|
119
|
+
var _propertyDesc = function(bitmap, value) {
|
|
120
|
+
return {
|
|
121
|
+
enumerable: !(bitmap & 1),
|
|
122
|
+
configurable: !(bitmap & 2),
|
|
123
|
+
writable: !(bitmap & 4),
|
|
124
|
+
value
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
var _hide = _descriptors ? function(object, key, value) {
|
|
128
|
+
return _objectDp.f(object, key, _propertyDesc(1, value));
|
|
129
|
+
} : function(object, key, value) {
|
|
130
|
+
object[key] = value;
|
|
131
|
+
return object;
|
|
132
|
+
};
|
|
133
|
+
var hasOwnProperty = {}.hasOwnProperty;
|
|
134
|
+
var _has = function(it, key) {
|
|
135
|
+
return hasOwnProperty.call(it, key);
|
|
136
|
+
};
|
|
137
|
+
var id = 0;
|
|
138
|
+
var px = Math.random();
|
|
139
|
+
var _uid = function(key) {
|
|
140
|
+
return "Symbol(".concat(key === void 0 ? "" : key, ")_", (++id + px).toString(36));
|
|
141
|
+
};
|
|
142
|
+
var _library = false;
|
|
143
|
+
var _functionToString = createCommonjsModule(function(module$4) {
|
|
144
|
+
var SHARED = "__core-js_shared__";
|
|
145
|
+
var store = _global[SHARED] || (_global[SHARED] = {});
|
|
146
|
+
(module$4.exports = function(key, value) {
|
|
147
|
+
return store[key] || (store[key] = value !== void 0 ? value : {});
|
|
148
|
+
})("versions", []).push({
|
|
149
|
+
version: _core.version,
|
|
150
|
+
mode: _library ? "pure" : "global",
|
|
151
|
+
copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
|
|
152
|
+
});
|
|
153
|
+
})("native-function-to-string", Function.toString);
|
|
154
|
+
var _redefine = createCommonjsModule(function(module$5) {
|
|
155
|
+
var SRC = _uid("src");
|
|
156
|
+
var TO_STRING = "toString";
|
|
157
|
+
var TPL = ("" + _functionToString).split(TO_STRING);
|
|
158
|
+
_core.inspectSource = function(it) {
|
|
159
|
+
return _functionToString.call(it);
|
|
160
|
+
};
|
|
161
|
+
(module$5.exports = function(O, key, val, safe) {
|
|
162
|
+
var isFunction = typeof val == "function";
|
|
163
|
+
if (isFunction) _has(val, "name") || _hide(val, "name", key);
|
|
164
|
+
if (O[key] === val) return;
|
|
165
|
+
if (isFunction) _has(val, SRC) || _hide(val, SRC, O[key] ? "" + O[key] : TPL.join(String(key)));
|
|
166
|
+
if (O === _global) O[key] = val;
|
|
167
|
+
else if (!safe) {
|
|
168
|
+
delete O[key];
|
|
169
|
+
_hide(O, key, val);
|
|
170
|
+
} else if (O[key]) O[key] = val;
|
|
171
|
+
else _hide(O, key, val);
|
|
172
|
+
})(Function.prototype, TO_STRING, function toString() {
|
|
173
|
+
return typeof this == "function" && this[SRC] || _functionToString.call(this);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
var _aFunction = function(it) {
|
|
177
|
+
if (typeof it != "function") throw TypeError(it + " is not a function!");
|
|
178
|
+
return it;
|
|
179
|
+
};
|
|
180
|
+
var _ctx = function(fn, that, length) {
|
|
181
|
+
_aFunction(fn);
|
|
182
|
+
if (that === void 0) return fn;
|
|
183
|
+
switch (length) {
|
|
184
|
+
case 1: return function(a) {
|
|
185
|
+
return fn.call(that, a);
|
|
186
|
+
};
|
|
187
|
+
case 2: return function(a, b) {
|
|
188
|
+
return fn.call(that, a, b);
|
|
189
|
+
};
|
|
190
|
+
case 3: return function(a, b, c) {
|
|
191
|
+
return fn.call(that, a, b, c);
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return function() {
|
|
195
|
+
return fn.apply(that, arguments);
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
var PROTOTYPE = "prototype";
|
|
199
|
+
var $export = function(type, name, source) {
|
|
200
|
+
var IS_FORCED = type & $export.F;
|
|
201
|
+
var IS_GLOBAL = type & $export.G;
|
|
202
|
+
var IS_STATIC = type & $export.S;
|
|
203
|
+
var IS_PROTO = type & $export.P;
|
|
204
|
+
var IS_BIND = type & $export.B;
|
|
205
|
+
var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
|
|
206
|
+
var exports$1 = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
|
|
207
|
+
var expProto = exports$1[PROTOTYPE] || (exports$1[PROTOTYPE] = {});
|
|
208
|
+
var key, own, out, exp;
|
|
209
|
+
if (IS_GLOBAL) source = name;
|
|
210
|
+
for (key in source) {
|
|
211
|
+
own = !IS_FORCED && target && target[key] !== void 0;
|
|
212
|
+
out = (own ? target : source)[key];
|
|
213
|
+
exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == "function" ? _ctx(Function.call, out) : out;
|
|
214
|
+
if (target) _redefine(target, key, out, type & $export.U);
|
|
215
|
+
if (exports$1[key] != out) _hide(exports$1, key, exp);
|
|
216
|
+
if (IS_PROTO && expProto[key] != out) expProto[key] = out;
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
_global.core = _core;
|
|
220
|
+
$export.F = 1;
|
|
221
|
+
$export.G = 2;
|
|
222
|
+
$export.S = 4;
|
|
223
|
+
$export.P = 8;
|
|
224
|
+
$export.B = 16;
|
|
225
|
+
$export.W = 32;
|
|
226
|
+
$export.U = 64;
|
|
227
|
+
$export.R = 128;
|
|
228
|
+
var _export = $export;
|
|
229
|
+
var ceil = Math.ceil;
|
|
230
|
+
var floor = Math.floor;
|
|
231
|
+
var _toInteger = function(it) {
|
|
232
|
+
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
|
|
233
|
+
};
|
|
234
|
+
var _defined = function(it) {
|
|
235
|
+
if (it == void 0) throw TypeError("Can't call method on " + it);
|
|
236
|
+
return it;
|
|
237
|
+
};
|
|
238
|
+
var _stringAt = function(TO_STRING) {
|
|
239
|
+
return function(that, pos) {
|
|
240
|
+
var s = String(_defined(that));
|
|
241
|
+
var i = _toInteger(pos);
|
|
242
|
+
var l = s.length;
|
|
243
|
+
var a, b;
|
|
244
|
+
if (i < 0 || i >= l) return TO_STRING ? "" : void 0;
|
|
245
|
+
a = s.charCodeAt(i);
|
|
246
|
+
return a < 55296 || a > 56319 || i + 1 === l || (b = s.charCodeAt(i + 1)) < 56320 || b > 57343 ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 55296 << 10) + (b - 56320) + 65536;
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
var $at = _stringAt(false);
|
|
250
|
+
_export(_export.P, "String", { codePointAt: function codePointAt(pos) {
|
|
251
|
+
return $at(this, pos);
|
|
252
|
+
} });
|
|
253
|
+
_core.String.codePointAt;
|
|
254
|
+
var max = Math.max;
|
|
255
|
+
var min = Math.min;
|
|
256
|
+
var _toAbsoluteIndex = function(index, length) {
|
|
257
|
+
index = _toInteger(index);
|
|
258
|
+
return index < 0 ? max(index + length, 0) : min(index, length);
|
|
259
|
+
};
|
|
260
|
+
var fromCharCode = String.fromCharCode;
|
|
261
|
+
var $fromCodePoint = String.fromCodePoint;
|
|
262
|
+
_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), "String", { fromCodePoint: function fromCodePoint(x) {
|
|
263
|
+
var arguments$1 = arguments;
|
|
264
|
+
var res = [];
|
|
265
|
+
var aLen = arguments.length;
|
|
266
|
+
var i = 0;
|
|
267
|
+
var code;
|
|
268
|
+
while (aLen > i) {
|
|
269
|
+
code = +arguments$1[i++];
|
|
270
|
+
if (_toAbsoluteIndex(code, 1114111) !== code) throw RangeError(code + " is not a valid code point");
|
|
271
|
+
res.push(code < 65536 ? fromCharCode(code) : fromCharCode(((code -= 65536) >> 10) + 55296, code % 1024 + 56320));
|
|
272
|
+
}
|
|
273
|
+
return res.join("");
|
|
274
|
+
} });
|
|
275
|
+
_core.String.fromCodePoint;
|
|
276
|
+
var unicode = {
|
|
277
|
+
Space_Separator: /[\u1680\u2000-\u200A\u202F\u205F\u3000]/,
|
|
278
|
+
ID_Start: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,
|
|
279
|
+
ID_Continue: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
|
|
280
|
+
};
|
|
281
|
+
var util = {
|
|
282
|
+
isSpaceSeparator: function isSpaceSeparator(c) {
|
|
283
|
+
return typeof c === "string" && unicode.Space_Separator.test(c);
|
|
284
|
+
},
|
|
285
|
+
isIdStartChar: function isIdStartChar(c) {
|
|
286
|
+
return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c === "$" || c === "_" || unicode.ID_Start.test(c));
|
|
287
|
+
},
|
|
288
|
+
isIdContinueChar: function isIdContinueChar(c) {
|
|
289
|
+
return typeof c === "string" && (c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "$" || c === "_" || c === "" || c === "" || unicode.ID_Continue.test(c));
|
|
290
|
+
},
|
|
291
|
+
isDigit: function isDigit(c) {
|
|
292
|
+
return typeof c === "string" && /[0-9]/.test(c);
|
|
293
|
+
},
|
|
294
|
+
isHexDigit: function isHexDigit(c) {
|
|
295
|
+
return typeof c === "string" && /[0-9A-Fa-f]/.test(c);
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
var source;
|
|
299
|
+
var parseState;
|
|
300
|
+
var stack;
|
|
301
|
+
var pos;
|
|
302
|
+
var line;
|
|
303
|
+
var column;
|
|
304
|
+
var token;
|
|
305
|
+
var key;
|
|
306
|
+
var root;
|
|
307
|
+
var parse = function parse(text, reviver) {
|
|
308
|
+
source = String(text);
|
|
309
|
+
parseState = "start";
|
|
310
|
+
stack = [];
|
|
311
|
+
pos = 0;
|
|
312
|
+
line = 1;
|
|
313
|
+
column = 0;
|
|
314
|
+
token = void 0;
|
|
315
|
+
key = void 0;
|
|
316
|
+
root = void 0;
|
|
317
|
+
do {
|
|
318
|
+
token = lex();
|
|
319
|
+
parseStates[parseState]();
|
|
320
|
+
} while (token.type !== "eof");
|
|
321
|
+
if (typeof reviver === "function") return internalize({ "": root }, "", reviver);
|
|
322
|
+
return root;
|
|
323
|
+
};
|
|
324
|
+
function internalize(holder, name, reviver) {
|
|
325
|
+
var value = holder[name];
|
|
326
|
+
if (value != null && typeof value === "object") if (Array.isArray(value)) for (var i = 0; i < value.length; i++) {
|
|
327
|
+
var key = String(i);
|
|
328
|
+
var replacement = internalize(value, key, reviver);
|
|
329
|
+
if (replacement === void 0) delete value[key];
|
|
330
|
+
else Object.defineProperty(value, key, {
|
|
331
|
+
value: replacement,
|
|
332
|
+
writable: true,
|
|
333
|
+
enumerable: true,
|
|
334
|
+
configurable: true
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
else for (var key$1 in value) {
|
|
338
|
+
var replacement$1 = internalize(value, key$1, reviver);
|
|
339
|
+
if (replacement$1 === void 0) delete value[key$1];
|
|
340
|
+
else Object.defineProperty(value, key$1, {
|
|
341
|
+
value: replacement$1,
|
|
342
|
+
writable: true,
|
|
343
|
+
enumerable: true,
|
|
344
|
+
configurable: true
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
return reviver.call(holder, name, value);
|
|
348
|
+
}
|
|
349
|
+
var lexState;
|
|
350
|
+
var buffer;
|
|
351
|
+
var doubleQuote;
|
|
352
|
+
var sign;
|
|
353
|
+
var c;
|
|
354
|
+
function lex() {
|
|
355
|
+
lexState = "default";
|
|
356
|
+
buffer = "";
|
|
357
|
+
doubleQuote = false;
|
|
358
|
+
sign = 1;
|
|
359
|
+
for (;;) {
|
|
360
|
+
c = peek();
|
|
361
|
+
var token = lexStates[lexState]();
|
|
362
|
+
if (token) return token;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function peek() {
|
|
366
|
+
if (source[pos]) return String.fromCodePoint(source.codePointAt(pos));
|
|
367
|
+
}
|
|
368
|
+
function read() {
|
|
369
|
+
var c = peek();
|
|
370
|
+
if (c === "\n") {
|
|
371
|
+
line++;
|
|
372
|
+
column = 0;
|
|
373
|
+
} else if (c) column += c.length;
|
|
374
|
+
else column++;
|
|
375
|
+
if (c) pos += c.length;
|
|
376
|
+
return c;
|
|
377
|
+
}
|
|
378
|
+
var lexStates = {
|
|
379
|
+
default: function default$1() {
|
|
380
|
+
switch (c) {
|
|
381
|
+
case " ":
|
|
382
|
+
case "\v":
|
|
383
|
+
case "\f":
|
|
384
|
+
case " ":
|
|
385
|
+
case "\xA0":
|
|
386
|
+
case "":
|
|
387
|
+
case "\n":
|
|
388
|
+
case "\r":
|
|
389
|
+
case "\u2028":
|
|
390
|
+
case "\u2029":
|
|
391
|
+
read();
|
|
392
|
+
return;
|
|
393
|
+
case "/":
|
|
394
|
+
read();
|
|
395
|
+
lexState = "comment";
|
|
396
|
+
return;
|
|
397
|
+
case void 0:
|
|
398
|
+
read();
|
|
399
|
+
return newToken("eof");
|
|
400
|
+
}
|
|
401
|
+
if (util.isSpaceSeparator(c)) {
|
|
402
|
+
read();
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
return lexStates[parseState]();
|
|
406
|
+
},
|
|
407
|
+
comment: function comment() {
|
|
408
|
+
switch (c) {
|
|
409
|
+
case "*":
|
|
410
|
+
read();
|
|
411
|
+
lexState = "multiLineComment";
|
|
412
|
+
return;
|
|
413
|
+
case "/":
|
|
414
|
+
read();
|
|
415
|
+
lexState = "singleLineComment";
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
throw invalidChar(read());
|
|
419
|
+
},
|
|
420
|
+
multiLineComment: function multiLineComment() {
|
|
421
|
+
switch (c) {
|
|
422
|
+
case "*":
|
|
423
|
+
read();
|
|
424
|
+
lexState = "multiLineCommentAsterisk";
|
|
425
|
+
return;
|
|
426
|
+
case void 0: throw invalidChar(read());
|
|
427
|
+
}
|
|
428
|
+
read();
|
|
429
|
+
},
|
|
430
|
+
multiLineCommentAsterisk: function multiLineCommentAsterisk() {
|
|
431
|
+
switch (c) {
|
|
432
|
+
case "*":
|
|
433
|
+
read();
|
|
434
|
+
return;
|
|
435
|
+
case "/":
|
|
436
|
+
read();
|
|
437
|
+
lexState = "default";
|
|
438
|
+
return;
|
|
439
|
+
case void 0: throw invalidChar(read());
|
|
440
|
+
}
|
|
441
|
+
read();
|
|
442
|
+
lexState = "multiLineComment";
|
|
443
|
+
},
|
|
444
|
+
singleLineComment: function singleLineComment() {
|
|
445
|
+
switch (c) {
|
|
446
|
+
case "\n":
|
|
447
|
+
case "\r":
|
|
448
|
+
case "\u2028":
|
|
449
|
+
case "\u2029":
|
|
450
|
+
read();
|
|
451
|
+
lexState = "default";
|
|
452
|
+
return;
|
|
453
|
+
case void 0:
|
|
454
|
+
read();
|
|
455
|
+
return newToken("eof");
|
|
456
|
+
}
|
|
457
|
+
read();
|
|
458
|
+
},
|
|
459
|
+
value: function value() {
|
|
460
|
+
switch (c) {
|
|
461
|
+
case "{":
|
|
462
|
+
case "[": return newToken("punctuator", read());
|
|
463
|
+
case "n":
|
|
464
|
+
read();
|
|
465
|
+
literal("ull");
|
|
466
|
+
return newToken("null", null);
|
|
467
|
+
case "t":
|
|
468
|
+
read();
|
|
469
|
+
literal("rue");
|
|
470
|
+
return newToken("boolean", true);
|
|
471
|
+
case "f":
|
|
472
|
+
read();
|
|
473
|
+
literal("alse");
|
|
474
|
+
return newToken("boolean", false);
|
|
475
|
+
case "-":
|
|
476
|
+
case "+":
|
|
477
|
+
if (read() === "-") sign = -1;
|
|
478
|
+
lexState = "sign";
|
|
479
|
+
return;
|
|
480
|
+
case ".":
|
|
481
|
+
buffer = read();
|
|
482
|
+
lexState = "decimalPointLeading";
|
|
483
|
+
return;
|
|
484
|
+
case "0":
|
|
485
|
+
buffer = read();
|
|
486
|
+
lexState = "zero";
|
|
487
|
+
return;
|
|
488
|
+
case "1":
|
|
489
|
+
case "2":
|
|
490
|
+
case "3":
|
|
491
|
+
case "4":
|
|
492
|
+
case "5":
|
|
493
|
+
case "6":
|
|
494
|
+
case "7":
|
|
495
|
+
case "8":
|
|
496
|
+
case "9":
|
|
497
|
+
buffer = read();
|
|
498
|
+
lexState = "decimalInteger";
|
|
499
|
+
return;
|
|
500
|
+
case "I":
|
|
501
|
+
read();
|
|
502
|
+
literal("nfinity");
|
|
503
|
+
return newToken("numeric", Infinity);
|
|
504
|
+
case "N":
|
|
505
|
+
read();
|
|
506
|
+
literal("aN");
|
|
507
|
+
return newToken("numeric", NaN);
|
|
508
|
+
case "\"":
|
|
509
|
+
case "'":
|
|
510
|
+
doubleQuote = read() === "\"";
|
|
511
|
+
buffer = "";
|
|
512
|
+
lexState = "string";
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
throw invalidChar(read());
|
|
516
|
+
},
|
|
517
|
+
identifierNameStartEscape: function identifierNameStartEscape() {
|
|
518
|
+
if (c !== "u") throw invalidChar(read());
|
|
519
|
+
read();
|
|
520
|
+
var u = unicodeEscape();
|
|
521
|
+
switch (u) {
|
|
522
|
+
case "$":
|
|
523
|
+
case "_": break;
|
|
524
|
+
default:
|
|
525
|
+
if (!util.isIdStartChar(u)) throw invalidIdentifier();
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
buffer += u;
|
|
529
|
+
lexState = "identifierName";
|
|
530
|
+
},
|
|
531
|
+
identifierName: function identifierName() {
|
|
532
|
+
switch (c) {
|
|
533
|
+
case "$":
|
|
534
|
+
case "_":
|
|
535
|
+
case "":
|
|
536
|
+
case "":
|
|
537
|
+
buffer += read();
|
|
538
|
+
return;
|
|
539
|
+
case "\\":
|
|
540
|
+
read();
|
|
541
|
+
lexState = "identifierNameEscape";
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
if (util.isIdContinueChar(c)) {
|
|
545
|
+
buffer += read();
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
return newToken("identifier", buffer);
|
|
549
|
+
},
|
|
550
|
+
identifierNameEscape: function identifierNameEscape() {
|
|
551
|
+
if (c !== "u") throw invalidChar(read());
|
|
552
|
+
read();
|
|
553
|
+
var u = unicodeEscape();
|
|
554
|
+
switch (u) {
|
|
555
|
+
case "$":
|
|
556
|
+
case "_":
|
|
557
|
+
case "":
|
|
558
|
+
case "": break;
|
|
559
|
+
default:
|
|
560
|
+
if (!util.isIdContinueChar(u)) throw invalidIdentifier();
|
|
561
|
+
break;
|
|
562
|
+
}
|
|
563
|
+
buffer += u;
|
|
564
|
+
lexState = "identifierName";
|
|
565
|
+
},
|
|
566
|
+
sign: function sign$1() {
|
|
567
|
+
switch (c) {
|
|
568
|
+
case ".":
|
|
569
|
+
buffer = read();
|
|
570
|
+
lexState = "decimalPointLeading";
|
|
571
|
+
return;
|
|
572
|
+
case "0":
|
|
573
|
+
buffer = read();
|
|
574
|
+
lexState = "zero";
|
|
575
|
+
return;
|
|
576
|
+
case "1":
|
|
577
|
+
case "2":
|
|
578
|
+
case "3":
|
|
579
|
+
case "4":
|
|
580
|
+
case "5":
|
|
581
|
+
case "6":
|
|
582
|
+
case "7":
|
|
583
|
+
case "8":
|
|
584
|
+
case "9":
|
|
585
|
+
buffer = read();
|
|
586
|
+
lexState = "decimalInteger";
|
|
587
|
+
return;
|
|
588
|
+
case "I":
|
|
589
|
+
read();
|
|
590
|
+
literal("nfinity");
|
|
591
|
+
return newToken("numeric", sign * Infinity);
|
|
592
|
+
case "N":
|
|
593
|
+
read();
|
|
594
|
+
literal("aN");
|
|
595
|
+
return newToken("numeric", NaN);
|
|
596
|
+
}
|
|
597
|
+
throw invalidChar(read());
|
|
598
|
+
},
|
|
599
|
+
zero: function zero() {
|
|
600
|
+
switch (c) {
|
|
601
|
+
case ".":
|
|
602
|
+
buffer += read();
|
|
603
|
+
lexState = "decimalPoint";
|
|
604
|
+
return;
|
|
605
|
+
case "e":
|
|
606
|
+
case "E":
|
|
607
|
+
buffer += read();
|
|
608
|
+
lexState = "decimalExponent";
|
|
609
|
+
return;
|
|
610
|
+
case "x":
|
|
611
|
+
case "X":
|
|
612
|
+
buffer += read();
|
|
613
|
+
lexState = "hexadecimal";
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
return newToken("numeric", sign * 0);
|
|
617
|
+
},
|
|
618
|
+
decimalInteger: function decimalInteger() {
|
|
619
|
+
switch (c) {
|
|
620
|
+
case ".":
|
|
621
|
+
buffer += read();
|
|
622
|
+
lexState = "decimalPoint";
|
|
623
|
+
return;
|
|
624
|
+
case "e":
|
|
625
|
+
case "E":
|
|
626
|
+
buffer += read();
|
|
627
|
+
lexState = "decimalExponent";
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
if (util.isDigit(c)) {
|
|
631
|
+
buffer += read();
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
return newToken("numeric", sign * Number(buffer));
|
|
635
|
+
},
|
|
636
|
+
decimalPointLeading: function decimalPointLeading() {
|
|
637
|
+
if (util.isDigit(c)) {
|
|
638
|
+
buffer += read();
|
|
639
|
+
lexState = "decimalFraction";
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
throw invalidChar(read());
|
|
643
|
+
},
|
|
644
|
+
decimalPoint: function decimalPoint() {
|
|
645
|
+
switch (c) {
|
|
646
|
+
case "e":
|
|
647
|
+
case "E":
|
|
648
|
+
buffer += read();
|
|
649
|
+
lexState = "decimalExponent";
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
if (util.isDigit(c)) {
|
|
653
|
+
buffer += read();
|
|
654
|
+
lexState = "decimalFraction";
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
return newToken("numeric", sign * Number(buffer));
|
|
658
|
+
},
|
|
659
|
+
decimalFraction: function decimalFraction() {
|
|
660
|
+
switch (c) {
|
|
661
|
+
case "e":
|
|
662
|
+
case "E":
|
|
663
|
+
buffer += read();
|
|
664
|
+
lexState = "decimalExponent";
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
if (util.isDigit(c)) {
|
|
668
|
+
buffer += read();
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
return newToken("numeric", sign * Number(buffer));
|
|
672
|
+
},
|
|
673
|
+
decimalExponent: function decimalExponent() {
|
|
674
|
+
switch (c) {
|
|
675
|
+
case "+":
|
|
676
|
+
case "-":
|
|
677
|
+
buffer += read();
|
|
678
|
+
lexState = "decimalExponentSign";
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
if (util.isDigit(c)) {
|
|
682
|
+
buffer += read();
|
|
683
|
+
lexState = "decimalExponentInteger";
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
throw invalidChar(read());
|
|
687
|
+
},
|
|
688
|
+
decimalExponentSign: function decimalExponentSign() {
|
|
689
|
+
if (util.isDigit(c)) {
|
|
690
|
+
buffer += read();
|
|
691
|
+
lexState = "decimalExponentInteger";
|
|
692
|
+
return;
|
|
693
|
+
}
|
|
694
|
+
throw invalidChar(read());
|
|
695
|
+
},
|
|
696
|
+
decimalExponentInteger: function decimalExponentInteger() {
|
|
697
|
+
if (util.isDigit(c)) {
|
|
698
|
+
buffer += read();
|
|
699
|
+
return;
|
|
700
|
+
}
|
|
701
|
+
return newToken("numeric", sign * Number(buffer));
|
|
702
|
+
},
|
|
703
|
+
hexadecimal: function hexadecimal() {
|
|
704
|
+
if (util.isHexDigit(c)) {
|
|
705
|
+
buffer += read();
|
|
706
|
+
lexState = "hexadecimalInteger";
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
throw invalidChar(read());
|
|
710
|
+
},
|
|
711
|
+
hexadecimalInteger: function hexadecimalInteger() {
|
|
712
|
+
if (util.isHexDigit(c)) {
|
|
713
|
+
buffer += read();
|
|
714
|
+
return;
|
|
715
|
+
}
|
|
716
|
+
return newToken("numeric", sign * Number(buffer));
|
|
717
|
+
},
|
|
718
|
+
string: function string() {
|
|
719
|
+
switch (c) {
|
|
720
|
+
case "\\":
|
|
721
|
+
read();
|
|
722
|
+
buffer += escape();
|
|
723
|
+
return;
|
|
724
|
+
case "\"":
|
|
725
|
+
if (doubleQuote) {
|
|
726
|
+
read();
|
|
727
|
+
return newToken("string", buffer);
|
|
728
|
+
}
|
|
729
|
+
buffer += read();
|
|
730
|
+
return;
|
|
731
|
+
case "'":
|
|
732
|
+
if (!doubleQuote) {
|
|
733
|
+
read();
|
|
734
|
+
return newToken("string", buffer);
|
|
735
|
+
}
|
|
736
|
+
buffer += read();
|
|
737
|
+
return;
|
|
738
|
+
case "\n":
|
|
739
|
+
case "\r": throw invalidChar(read());
|
|
740
|
+
case "\u2028":
|
|
741
|
+
case "\u2029":
|
|
742
|
+
separatorChar(c);
|
|
743
|
+
break;
|
|
744
|
+
case void 0: throw invalidChar(read());
|
|
745
|
+
}
|
|
746
|
+
buffer += read();
|
|
747
|
+
},
|
|
748
|
+
start: function start() {
|
|
749
|
+
switch (c) {
|
|
750
|
+
case "{":
|
|
751
|
+
case "[": return newToken("punctuator", read());
|
|
752
|
+
}
|
|
753
|
+
lexState = "value";
|
|
754
|
+
},
|
|
755
|
+
beforePropertyName: function beforePropertyName() {
|
|
756
|
+
switch (c) {
|
|
757
|
+
case "$":
|
|
758
|
+
case "_":
|
|
759
|
+
buffer = read();
|
|
760
|
+
lexState = "identifierName";
|
|
761
|
+
return;
|
|
762
|
+
case "\\":
|
|
763
|
+
read();
|
|
764
|
+
lexState = "identifierNameStartEscape";
|
|
765
|
+
return;
|
|
766
|
+
case "}": return newToken("punctuator", read());
|
|
767
|
+
case "\"":
|
|
768
|
+
case "'":
|
|
769
|
+
doubleQuote = read() === "\"";
|
|
770
|
+
lexState = "string";
|
|
771
|
+
return;
|
|
772
|
+
}
|
|
773
|
+
if (util.isIdStartChar(c)) {
|
|
774
|
+
buffer += read();
|
|
775
|
+
lexState = "identifierName";
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
throw invalidChar(read());
|
|
779
|
+
},
|
|
780
|
+
afterPropertyName: function afterPropertyName() {
|
|
781
|
+
if (c === ":") return newToken("punctuator", read());
|
|
782
|
+
throw invalidChar(read());
|
|
783
|
+
},
|
|
784
|
+
beforePropertyValue: function beforePropertyValue() {
|
|
785
|
+
lexState = "value";
|
|
786
|
+
},
|
|
787
|
+
afterPropertyValue: function afterPropertyValue() {
|
|
788
|
+
switch (c) {
|
|
789
|
+
case ",":
|
|
790
|
+
case "}": return newToken("punctuator", read());
|
|
791
|
+
}
|
|
792
|
+
throw invalidChar(read());
|
|
793
|
+
},
|
|
794
|
+
beforeArrayValue: function beforeArrayValue() {
|
|
795
|
+
if (c === "]") return newToken("punctuator", read());
|
|
796
|
+
lexState = "value";
|
|
797
|
+
},
|
|
798
|
+
afterArrayValue: function afterArrayValue() {
|
|
799
|
+
switch (c) {
|
|
800
|
+
case ",":
|
|
801
|
+
case "]": return newToken("punctuator", read());
|
|
802
|
+
}
|
|
803
|
+
throw invalidChar(read());
|
|
804
|
+
},
|
|
805
|
+
end: function end() {
|
|
806
|
+
throw invalidChar(read());
|
|
807
|
+
}
|
|
808
|
+
};
|
|
809
|
+
function newToken(type, value) {
|
|
810
|
+
return {
|
|
811
|
+
type,
|
|
812
|
+
value,
|
|
813
|
+
line,
|
|
814
|
+
column
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
function literal(s) {
|
|
818
|
+
for (var i = 0, list = s; i < list.length; i += 1) {
|
|
819
|
+
var c = list[i];
|
|
820
|
+
if (peek() !== c) throw invalidChar(read());
|
|
821
|
+
read();
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
function escape() {
|
|
825
|
+
switch (peek()) {
|
|
826
|
+
case "b":
|
|
827
|
+
read();
|
|
828
|
+
return "\b";
|
|
829
|
+
case "f":
|
|
830
|
+
read();
|
|
831
|
+
return "\f";
|
|
832
|
+
case "n":
|
|
833
|
+
read();
|
|
834
|
+
return "\n";
|
|
835
|
+
case "r":
|
|
836
|
+
read();
|
|
837
|
+
return "\r";
|
|
838
|
+
case "t":
|
|
839
|
+
read();
|
|
840
|
+
return " ";
|
|
841
|
+
case "v":
|
|
842
|
+
read();
|
|
843
|
+
return "\v";
|
|
844
|
+
case "0":
|
|
845
|
+
read();
|
|
846
|
+
if (util.isDigit(peek())) throw invalidChar(read());
|
|
847
|
+
return "\0";
|
|
848
|
+
case "x":
|
|
849
|
+
read();
|
|
850
|
+
return hexEscape();
|
|
851
|
+
case "u":
|
|
852
|
+
read();
|
|
853
|
+
return unicodeEscape();
|
|
854
|
+
case "\n":
|
|
855
|
+
case "\u2028":
|
|
856
|
+
case "\u2029":
|
|
857
|
+
read();
|
|
858
|
+
return "";
|
|
859
|
+
case "\r":
|
|
860
|
+
read();
|
|
861
|
+
if (peek() === "\n") read();
|
|
862
|
+
return "";
|
|
863
|
+
case "1":
|
|
864
|
+
case "2":
|
|
865
|
+
case "3":
|
|
866
|
+
case "4":
|
|
867
|
+
case "5":
|
|
868
|
+
case "6":
|
|
869
|
+
case "7":
|
|
870
|
+
case "8":
|
|
871
|
+
case "9": throw invalidChar(read());
|
|
872
|
+
case void 0: throw invalidChar(read());
|
|
873
|
+
}
|
|
874
|
+
return read();
|
|
875
|
+
}
|
|
876
|
+
function hexEscape() {
|
|
877
|
+
var buffer = "";
|
|
878
|
+
var c = peek();
|
|
879
|
+
if (!util.isHexDigit(c)) throw invalidChar(read());
|
|
880
|
+
buffer += read();
|
|
881
|
+
c = peek();
|
|
882
|
+
if (!util.isHexDigit(c)) throw invalidChar(read());
|
|
883
|
+
buffer += read();
|
|
884
|
+
return String.fromCodePoint(parseInt(buffer, 16));
|
|
885
|
+
}
|
|
886
|
+
function unicodeEscape() {
|
|
887
|
+
var buffer = "";
|
|
888
|
+
var count = 4;
|
|
889
|
+
while (count-- > 0) {
|
|
890
|
+
var c = peek();
|
|
891
|
+
if (!util.isHexDigit(c)) throw invalidChar(read());
|
|
892
|
+
buffer += read();
|
|
893
|
+
}
|
|
894
|
+
return String.fromCodePoint(parseInt(buffer, 16));
|
|
895
|
+
}
|
|
896
|
+
var parseStates = {
|
|
897
|
+
start: function start() {
|
|
898
|
+
if (token.type === "eof") throw invalidEOF();
|
|
899
|
+
push();
|
|
900
|
+
},
|
|
901
|
+
beforePropertyName: function beforePropertyName() {
|
|
902
|
+
switch (token.type) {
|
|
903
|
+
case "identifier":
|
|
904
|
+
case "string":
|
|
905
|
+
key = token.value;
|
|
906
|
+
parseState = "afterPropertyName";
|
|
907
|
+
return;
|
|
908
|
+
case "punctuator":
|
|
909
|
+
pop();
|
|
910
|
+
return;
|
|
911
|
+
case "eof": throw invalidEOF();
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
afterPropertyName: function afterPropertyName() {
|
|
915
|
+
if (token.type === "eof") throw invalidEOF();
|
|
916
|
+
parseState = "beforePropertyValue";
|
|
917
|
+
},
|
|
918
|
+
beforePropertyValue: function beforePropertyValue() {
|
|
919
|
+
if (token.type === "eof") throw invalidEOF();
|
|
920
|
+
push();
|
|
921
|
+
},
|
|
922
|
+
beforeArrayValue: function beforeArrayValue() {
|
|
923
|
+
if (token.type === "eof") throw invalidEOF();
|
|
924
|
+
if (token.type === "punctuator" && token.value === "]") {
|
|
925
|
+
pop();
|
|
926
|
+
return;
|
|
927
|
+
}
|
|
928
|
+
push();
|
|
929
|
+
},
|
|
930
|
+
afterPropertyValue: function afterPropertyValue() {
|
|
931
|
+
if (token.type === "eof") throw invalidEOF();
|
|
932
|
+
switch (token.value) {
|
|
933
|
+
case ",":
|
|
934
|
+
parseState = "beforePropertyName";
|
|
935
|
+
return;
|
|
936
|
+
case "}": pop();
|
|
937
|
+
}
|
|
938
|
+
},
|
|
939
|
+
afterArrayValue: function afterArrayValue() {
|
|
940
|
+
if (token.type === "eof") throw invalidEOF();
|
|
941
|
+
switch (token.value) {
|
|
942
|
+
case ",":
|
|
943
|
+
parseState = "beforeArrayValue";
|
|
944
|
+
return;
|
|
945
|
+
case "]": pop();
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
end: function end() {}
|
|
949
|
+
};
|
|
950
|
+
function push() {
|
|
951
|
+
var value;
|
|
952
|
+
switch (token.type) {
|
|
953
|
+
case "punctuator":
|
|
954
|
+
switch (token.value) {
|
|
955
|
+
case "{":
|
|
956
|
+
value = {};
|
|
957
|
+
break;
|
|
958
|
+
case "[":
|
|
959
|
+
value = [];
|
|
960
|
+
break;
|
|
961
|
+
}
|
|
962
|
+
break;
|
|
963
|
+
case "null":
|
|
964
|
+
case "boolean":
|
|
965
|
+
case "numeric":
|
|
966
|
+
case "string":
|
|
967
|
+
value = token.value;
|
|
968
|
+
break;
|
|
969
|
+
}
|
|
970
|
+
if (root === void 0) root = value;
|
|
971
|
+
else {
|
|
972
|
+
var parent = stack[stack.length - 1];
|
|
973
|
+
if (Array.isArray(parent)) parent.push(value);
|
|
974
|
+
else Object.defineProperty(parent, key, {
|
|
975
|
+
value,
|
|
976
|
+
writable: true,
|
|
977
|
+
enumerable: true,
|
|
978
|
+
configurable: true
|
|
979
|
+
});
|
|
980
|
+
}
|
|
981
|
+
if (value !== null && typeof value === "object") {
|
|
982
|
+
stack.push(value);
|
|
983
|
+
if (Array.isArray(value)) parseState = "beforeArrayValue";
|
|
984
|
+
else parseState = "beforePropertyName";
|
|
985
|
+
} else {
|
|
986
|
+
var current = stack[stack.length - 1];
|
|
987
|
+
if (current == null) parseState = "end";
|
|
988
|
+
else if (Array.isArray(current)) parseState = "afterArrayValue";
|
|
989
|
+
else parseState = "afterPropertyValue";
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
function pop() {
|
|
993
|
+
stack.pop();
|
|
994
|
+
var current = stack[stack.length - 1];
|
|
995
|
+
if (current == null) parseState = "end";
|
|
996
|
+
else if (Array.isArray(current)) parseState = "afterArrayValue";
|
|
997
|
+
else parseState = "afterPropertyValue";
|
|
998
|
+
}
|
|
999
|
+
function invalidChar(c) {
|
|
1000
|
+
if (c === void 0) return syntaxError("JSON5: invalid end of input at " + line + ":" + column);
|
|
1001
|
+
return syntaxError("JSON5: invalid character '" + formatChar(c) + "' at " + line + ":" + column);
|
|
1002
|
+
}
|
|
1003
|
+
function invalidEOF() {
|
|
1004
|
+
return syntaxError("JSON5: invalid end of input at " + line + ":" + column);
|
|
1005
|
+
}
|
|
1006
|
+
function invalidIdentifier() {
|
|
1007
|
+
column -= 5;
|
|
1008
|
+
return syntaxError("JSON5: invalid identifier character at " + line + ":" + column);
|
|
1009
|
+
}
|
|
1010
|
+
function separatorChar(c) {
|
|
1011
|
+
console.warn("JSON5: '" + formatChar(c) + "' in strings is not valid ECMAScript; consider escaping");
|
|
1012
|
+
}
|
|
1013
|
+
function formatChar(c) {
|
|
1014
|
+
var replacements = {
|
|
1015
|
+
"'": "\\'",
|
|
1016
|
+
"\"": "\\\"",
|
|
1017
|
+
"\\": "\\\\",
|
|
1018
|
+
"\b": "\\b",
|
|
1019
|
+
"\f": "\\f",
|
|
1020
|
+
"\n": "\\n",
|
|
1021
|
+
"\r": "\\r",
|
|
1022
|
+
" ": "\\t",
|
|
1023
|
+
"\v": "\\v",
|
|
1024
|
+
"\0": "\\0",
|
|
1025
|
+
"\u2028": "\\u2028",
|
|
1026
|
+
"\u2029": "\\u2029"
|
|
1027
|
+
};
|
|
1028
|
+
if (replacements[c]) return replacements[c];
|
|
1029
|
+
if (c < " ") {
|
|
1030
|
+
var hexString = c.charCodeAt(0).toString(16);
|
|
1031
|
+
return "\\x" + ("00" + hexString).substring(hexString.length);
|
|
1032
|
+
}
|
|
1033
|
+
return c;
|
|
1034
|
+
}
|
|
1035
|
+
function syntaxError(message) {
|
|
1036
|
+
var err = new SyntaxError(message);
|
|
1037
|
+
err.lineNumber = line;
|
|
1038
|
+
err.columnNumber = column;
|
|
1039
|
+
return err;
|
|
1040
|
+
}
|
|
1041
|
+
return {
|
|
1042
|
+
parse,
|
|
1043
|
+
stringify: function stringify(value, replacer, space) {
|
|
1044
|
+
var stack = [];
|
|
1045
|
+
var indent = "";
|
|
1046
|
+
var propertyList;
|
|
1047
|
+
var replacerFunc;
|
|
1048
|
+
var gap = "";
|
|
1049
|
+
var quote;
|
|
1050
|
+
if (replacer != null && typeof replacer === "object" && !Array.isArray(replacer)) {
|
|
1051
|
+
space = replacer.space;
|
|
1052
|
+
quote = replacer.quote;
|
|
1053
|
+
replacer = replacer.replacer;
|
|
1054
|
+
}
|
|
1055
|
+
if (typeof replacer === "function") replacerFunc = replacer;
|
|
1056
|
+
else if (Array.isArray(replacer)) {
|
|
1057
|
+
propertyList = [];
|
|
1058
|
+
for (var i = 0, list = replacer; i < list.length; i += 1) {
|
|
1059
|
+
var v = list[i];
|
|
1060
|
+
var item = void 0;
|
|
1061
|
+
if (typeof v === "string") item = v;
|
|
1062
|
+
else if (typeof v === "number" || v instanceof String || v instanceof Number) item = String(v);
|
|
1063
|
+
if (item !== void 0 && propertyList.indexOf(item) < 0) propertyList.push(item);
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
if (space instanceof Number) space = Number(space);
|
|
1067
|
+
else if (space instanceof String) space = String(space);
|
|
1068
|
+
if (typeof space === "number") {
|
|
1069
|
+
if (space > 0) {
|
|
1070
|
+
space = Math.min(10, Math.floor(space));
|
|
1071
|
+
gap = " ".substr(0, space);
|
|
1072
|
+
}
|
|
1073
|
+
} else if (typeof space === "string") gap = space.substr(0, 10);
|
|
1074
|
+
return serializeProperty("", { "": value });
|
|
1075
|
+
function serializeProperty(key, holder) {
|
|
1076
|
+
var value = holder[key];
|
|
1077
|
+
if (value != null) {
|
|
1078
|
+
if (typeof value.toJSON5 === "function") value = value.toJSON5(key);
|
|
1079
|
+
else if (typeof value.toJSON === "function") value = value.toJSON(key);
|
|
1080
|
+
}
|
|
1081
|
+
if (replacerFunc) value = replacerFunc.call(holder, key, value);
|
|
1082
|
+
if (value instanceof Number) value = Number(value);
|
|
1083
|
+
else if (value instanceof String) value = String(value);
|
|
1084
|
+
else if (value instanceof Boolean) value = value.valueOf();
|
|
1085
|
+
switch (value) {
|
|
1086
|
+
case null: return "null";
|
|
1087
|
+
case true: return "true";
|
|
1088
|
+
case false: return "false";
|
|
1089
|
+
}
|
|
1090
|
+
if (typeof value === "string") return quoteString(value, false);
|
|
1091
|
+
if (typeof value === "number") return String(value);
|
|
1092
|
+
if (typeof value === "object") return Array.isArray(value) ? serializeArray(value) : serializeObject(value);
|
|
1093
|
+
}
|
|
1094
|
+
function quoteString(value) {
|
|
1095
|
+
var quotes = {
|
|
1096
|
+
"'": .1,
|
|
1097
|
+
"\"": .2
|
|
1098
|
+
};
|
|
1099
|
+
var replacements = {
|
|
1100
|
+
"'": "\\'",
|
|
1101
|
+
"\"": "\\\"",
|
|
1102
|
+
"\\": "\\\\",
|
|
1103
|
+
"\b": "\\b",
|
|
1104
|
+
"\f": "\\f",
|
|
1105
|
+
"\n": "\\n",
|
|
1106
|
+
"\r": "\\r",
|
|
1107
|
+
" ": "\\t",
|
|
1108
|
+
"\v": "\\v",
|
|
1109
|
+
"\0": "\\0",
|
|
1110
|
+
"\u2028": "\\u2028",
|
|
1111
|
+
"\u2029": "\\u2029"
|
|
1112
|
+
};
|
|
1113
|
+
var product = "";
|
|
1114
|
+
for (var i = 0; i < value.length; i++) {
|
|
1115
|
+
var c = value[i];
|
|
1116
|
+
switch (c) {
|
|
1117
|
+
case "'":
|
|
1118
|
+
case "\"":
|
|
1119
|
+
quotes[c]++;
|
|
1120
|
+
product += c;
|
|
1121
|
+
continue;
|
|
1122
|
+
case "\0": if (util.isDigit(value[i + 1])) {
|
|
1123
|
+
product += "\\x00";
|
|
1124
|
+
continue;
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
if (replacements[c]) {
|
|
1128
|
+
product += replacements[c];
|
|
1129
|
+
continue;
|
|
1130
|
+
}
|
|
1131
|
+
if (c < " ") {
|
|
1132
|
+
var hexString = c.charCodeAt(0).toString(16);
|
|
1133
|
+
product += "\\x" + ("00" + hexString).substring(hexString.length);
|
|
1134
|
+
continue;
|
|
1135
|
+
}
|
|
1136
|
+
product += c;
|
|
1137
|
+
}
|
|
1138
|
+
var quoteChar = quote || Object.keys(quotes).reduce(function(a, b) {
|
|
1139
|
+
return quotes[a] < quotes[b] ? a : b;
|
|
1140
|
+
});
|
|
1141
|
+
product = product.replace(new RegExp(quoteChar, "g"), replacements[quoteChar]);
|
|
1142
|
+
return quoteChar + product + quoteChar;
|
|
1143
|
+
}
|
|
1144
|
+
function serializeObject(value) {
|
|
1145
|
+
if (stack.indexOf(value) >= 0) throw TypeError("Converting circular structure to JSON5");
|
|
1146
|
+
stack.push(value);
|
|
1147
|
+
var stepback = indent;
|
|
1148
|
+
indent = indent + gap;
|
|
1149
|
+
var keys = propertyList || Object.keys(value);
|
|
1150
|
+
var partial = [];
|
|
1151
|
+
for (var i = 0, list = keys; i < list.length; i += 1) {
|
|
1152
|
+
var key = list[i];
|
|
1153
|
+
var propertyString = serializeProperty(key, value);
|
|
1154
|
+
if (propertyString !== void 0) {
|
|
1155
|
+
var member = serializeKey(key) + ":";
|
|
1156
|
+
if (gap !== "") member += " ";
|
|
1157
|
+
member += propertyString;
|
|
1158
|
+
partial.push(member);
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
var final;
|
|
1162
|
+
if (partial.length === 0) final = "{}";
|
|
1163
|
+
else {
|
|
1164
|
+
var properties;
|
|
1165
|
+
if (gap === "") {
|
|
1166
|
+
properties = partial.join(",");
|
|
1167
|
+
final = "{" + properties + "}";
|
|
1168
|
+
} else {
|
|
1169
|
+
var separator = ",\n" + indent;
|
|
1170
|
+
properties = partial.join(separator);
|
|
1171
|
+
final = "{\n" + indent + properties + ",\n" + stepback + "}";
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
stack.pop();
|
|
1175
|
+
indent = stepback;
|
|
1176
|
+
return final;
|
|
1177
|
+
}
|
|
1178
|
+
function serializeKey(key) {
|
|
1179
|
+
if (key.length === 0) return quoteString(key, true);
|
|
1180
|
+
var firstChar = String.fromCodePoint(key.codePointAt(0));
|
|
1181
|
+
if (!util.isIdStartChar(firstChar)) return quoteString(key, true);
|
|
1182
|
+
for (var i = firstChar.length; i < key.length; i++) if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) return quoteString(key, true);
|
|
1183
|
+
return key;
|
|
1184
|
+
}
|
|
1185
|
+
function serializeArray(value) {
|
|
1186
|
+
if (stack.indexOf(value) >= 0) throw TypeError("Converting circular structure to JSON5");
|
|
1187
|
+
stack.push(value);
|
|
1188
|
+
var stepback = indent;
|
|
1189
|
+
indent = indent + gap;
|
|
1190
|
+
var partial = [];
|
|
1191
|
+
for (var i = 0; i < value.length; i++) {
|
|
1192
|
+
var propertyString = serializeProperty(String(i), value);
|
|
1193
|
+
partial.push(propertyString !== void 0 ? propertyString : "null");
|
|
1194
|
+
}
|
|
1195
|
+
var final;
|
|
1196
|
+
if (partial.length === 0) final = "[]";
|
|
1197
|
+
else if (gap === "") final = "[" + partial.join(",") + "]";
|
|
1198
|
+
else {
|
|
1199
|
+
var separator = ",\n" + indent;
|
|
1200
|
+
var properties$1 = partial.join(separator);
|
|
1201
|
+
final = "[\n" + indent + properties$1 + ",\n" + stepback + "]";
|
|
1202
|
+
}
|
|
1203
|
+
stack.pop();
|
|
1204
|
+
indent = stepback;
|
|
1205
|
+
return final;
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
};
|
|
1209
|
+
}));
|
|
1210
|
+
}));
|
|
1211
|
+
//#endregion
|
|
1212
|
+
//#region node_modules/dayjs/dayjs.min.js
|
|
1213
|
+
var require_dayjs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1214
|
+
(function(t, e) {
|
|
1215
|
+
"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e();
|
|
1216
|
+
})(exports, (function() {
|
|
1217
|
+
"use strict";
|
|
1218
|
+
var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", c = "month", f = "quarter", h = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = {
|
|
1219
|
+
name: "en",
|
|
1220
|
+
weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
|
|
1221
|
+
months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
|
|
1222
|
+
ordinal: function(t) {
|
|
1223
|
+
var e = [
|
|
1224
|
+
"th",
|
|
1225
|
+
"st",
|
|
1226
|
+
"nd",
|
|
1227
|
+
"rd"
|
|
1228
|
+
], n = t % 100;
|
|
1229
|
+
return "[" + t + (e[(n - 20) % 10] || e[n] || e[0]) + "]";
|
|
1230
|
+
}
|
|
1231
|
+
}, m = function(t, e, n) {
|
|
1232
|
+
var r = String(t);
|
|
1233
|
+
return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t;
|
|
1234
|
+
}, v = {
|
|
1235
|
+
s: m,
|
|
1236
|
+
z: function(t) {
|
|
1237
|
+
var e = -t.utcOffset(), n = Math.abs(e), r = Math.floor(n / 60), i = n % 60;
|
|
1238
|
+
return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0");
|
|
1239
|
+
},
|
|
1240
|
+
m: function t(e, n) {
|
|
1241
|
+
if (e.date() < n.date()) return -t(n, e);
|
|
1242
|
+
var r = 12 * (n.year() - e.year()) + (n.month() - e.month()), i = e.clone().add(r, c), s = n - i < 0, u = e.clone().add(r + (s ? -1 : 1), c);
|
|
1243
|
+
return +(-(r + (n - i) / (s ? i - u : u - i)) || 0);
|
|
1244
|
+
},
|
|
1245
|
+
a: function(t) {
|
|
1246
|
+
return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
|
|
1247
|
+
},
|
|
1248
|
+
p: function(t) {
|
|
1249
|
+
return {
|
|
1250
|
+
M: c,
|
|
1251
|
+
y: h,
|
|
1252
|
+
w: o,
|
|
1253
|
+
d: a,
|
|
1254
|
+
D: d,
|
|
1255
|
+
h: u,
|
|
1256
|
+
m: s,
|
|
1257
|
+
s: i,
|
|
1258
|
+
ms: r,
|
|
1259
|
+
Q: f
|
|
1260
|
+
}[t] || String(t || "").toLowerCase().replace(/s$/, "");
|
|
1261
|
+
},
|
|
1262
|
+
u: function(t) {
|
|
1263
|
+
return void 0 === t;
|
|
1264
|
+
}
|
|
1265
|
+
}, g = "en", D = {};
|
|
1266
|
+
D[g] = M;
|
|
1267
|
+
var p = "$isDayjsObject", S = function(t) {
|
|
1268
|
+
return t instanceof _ || !(!t || !t[p]);
|
|
1269
|
+
}, w = function t(e, n, r) {
|
|
1270
|
+
var i;
|
|
1271
|
+
if (!e) return g;
|
|
1272
|
+
if ("string" == typeof e) {
|
|
1273
|
+
var s = e.toLowerCase();
|
|
1274
|
+
D[s] && (i = s), n && (D[s] = n, i = s);
|
|
1275
|
+
var u = e.split("-");
|
|
1276
|
+
if (!i && u.length > 1) return t(u[0]);
|
|
1277
|
+
} else {
|
|
1278
|
+
var a = e.name;
|
|
1279
|
+
D[a] = e, i = a;
|
|
1280
|
+
}
|
|
1281
|
+
return !r && i && (g = i), i || !r && g;
|
|
1282
|
+
}, O = function(t, e) {
|
|
1283
|
+
if (S(t)) return t.clone();
|
|
1284
|
+
var n = "object" == typeof e ? e : {};
|
|
1285
|
+
return n.date = t, n.args = arguments, new _(n);
|
|
1286
|
+
}, b = v;
|
|
1287
|
+
b.l = w, b.i = S, b.w = function(t, e) {
|
|
1288
|
+
return O(t, {
|
|
1289
|
+
locale: e.$L,
|
|
1290
|
+
utc: e.$u,
|
|
1291
|
+
x: e.$x,
|
|
1292
|
+
$offset: e.$offset
|
|
1293
|
+
});
|
|
1294
|
+
};
|
|
1295
|
+
var _ = function() {
|
|
1296
|
+
function M(t) {
|
|
1297
|
+
this.$L = w(t.locale, null, !0), this.parse(t), this.$x = this.$x || t.x || {}, this[p] = !0;
|
|
1298
|
+
}
|
|
1299
|
+
var m = M.prototype;
|
|
1300
|
+
return m.parse = function(t) {
|
|
1301
|
+
this.$d = function(t) {
|
|
1302
|
+
var e = t.date, n = t.utc;
|
|
1303
|
+
if (null === e) return /* @__PURE__ */ new Date(NaN);
|
|
1304
|
+
if (b.u(e)) return /* @__PURE__ */ new Date();
|
|
1305
|
+
if (e instanceof Date) return new Date(e);
|
|
1306
|
+
if ("string" == typeof e && !/Z$/i.test(e)) {
|
|
1307
|
+
var r = e.match($);
|
|
1308
|
+
if (r) {
|
|
1309
|
+
var i = r[2] - 1 || 0, s = (r[7] || "0").substring(0, 3);
|
|
1310
|
+
return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s);
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
return new Date(e);
|
|
1314
|
+
}(t), this.init();
|
|
1315
|
+
}, m.init = function() {
|
|
1316
|
+
var t = this.$d;
|
|
1317
|
+
this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();
|
|
1318
|
+
}, m.$utils = function() {
|
|
1319
|
+
return b;
|
|
1320
|
+
}, m.isValid = function() {
|
|
1321
|
+
return !(this.$d.toString() === l);
|
|
1322
|
+
}, m.isSame = function(t, e) {
|
|
1323
|
+
var n = O(t);
|
|
1324
|
+
return this.startOf(e) <= n && n <= this.endOf(e);
|
|
1325
|
+
}, m.isAfter = function(t, e) {
|
|
1326
|
+
return O(t) < this.startOf(e);
|
|
1327
|
+
}, m.isBefore = function(t, e) {
|
|
1328
|
+
return this.endOf(e) < O(t);
|
|
1329
|
+
}, m.$g = function(t, e, n) {
|
|
1330
|
+
return b.u(t) ? this[e] : this.set(n, t);
|
|
1331
|
+
}, m.unix = function() {
|
|
1332
|
+
return Math.floor(this.valueOf() / 1e3);
|
|
1333
|
+
}, m.valueOf = function() {
|
|
1334
|
+
return this.$d.getTime();
|
|
1335
|
+
}, m.startOf = function(t, e) {
|
|
1336
|
+
var n = this, r = !!b.u(e) || e, f = b.p(t), l = function(t, e) {
|
|
1337
|
+
var i = b.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n);
|
|
1338
|
+
return r ? i : i.endOf(a);
|
|
1339
|
+
}, $ = function(t, e) {
|
|
1340
|
+
return b.w(n.toDate()[t].apply(n.toDate("s"), (r ? [
|
|
1341
|
+
0,
|
|
1342
|
+
0,
|
|
1343
|
+
0,
|
|
1344
|
+
0
|
|
1345
|
+
] : [
|
|
1346
|
+
23,
|
|
1347
|
+
59,
|
|
1348
|
+
59,
|
|
1349
|
+
999
|
|
1350
|
+
]).slice(e)), n);
|
|
1351
|
+
}, y = this.$W, M = this.$M, m = this.$D, v = "set" + (this.$u ? "UTC" : "");
|
|
1352
|
+
switch (f) {
|
|
1353
|
+
case h: return r ? l(1, 0) : l(31, 11);
|
|
1354
|
+
case c: return r ? l(1, M) : l(0, M + 1);
|
|
1355
|
+
case o:
|
|
1356
|
+
var g = this.$locale().weekStart || 0, D = (y < g ? y + 7 : y) - g;
|
|
1357
|
+
return l(r ? m - D : m + (6 - D), M);
|
|
1358
|
+
case a:
|
|
1359
|
+
case d: return $(v + "Hours", 0);
|
|
1360
|
+
case u: return $(v + "Minutes", 1);
|
|
1361
|
+
case s: return $(v + "Seconds", 2);
|
|
1362
|
+
case i: return $(v + "Milliseconds", 3);
|
|
1363
|
+
default: return this.clone();
|
|
1364
|
+
}
|
|
1365
|
+
}, m.endOf = function(t) {
|
|
1366
|
+
return this.startOf(t, !1);
|
|
1367
|
+
}, m.$set = function(t, e) {
|
|
1368
|
+
var n, o = b.p(t), f = "set" + (this.$u ? "UTC" : ""), l = (n = {}, n[a] = f + "Date", n[d] = f + "Date", n[c] = f + "Month", n[h] = f + "FullYear", n[u] = f + "Hours", n[s] = f + "Minutes", n[i] = f + "Seconds", n[r] = f + "Milliseconds", n)[o], $ = o === a ? this.$D + (e - this.$W) : e;
|
|
1369
|
+
if (o === c || o === h) {
|
|
1370
|
+
var y = this.clone().set(d, 1);
|
|
1371
|
+
y.$d[l]($), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d;
|
|
1372
|
+
} else l && this.$d[l]($);
|
|
1373
|
+
return this.init(), this;
|
|
1374
|
+
}, m.set = function(t, e) {
|
|
1375
|
+
return this.clone().$set(t, e);
|
|
1376
|
+
}, m.get = function(t) {
|
|
1377
|
+
return this[b.p(t)]();
|
|
1378
|
+
}, m.add = function(r, f) {
|
|
1379
|
+
var d, l = this;
|
|
1380
|
+
r = Number(r);
|
|
1381
|
+
var $ = b.p(f), y = function(t) {
|
|
1382
|
+
var e = O(l);
|
|
1383
|
+
return b.w(e.date(e.date() + Math.round(t * r)), l);
|
|
1384
|
+
};
|
|
1385
|
+
if ($ === c) return this.set(c, this.$M + r);
|
|
1386
|
+
if ($ === h) return this.set(h, this.$y + r);
|
|
1387
|
+
if ($ === a) return y(1);
|
|
1388
|
+
if ($ === o) return y(7);
|
|
1389
|
+
var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[$] || 1, m = this.$d.getTime() + r * M;
|
|
1390
|
+
return b.w(m, this);
|
|
1391
|
+
}, m.subtract = function(t, e) {
|
|
1392
|
+
return this.add(-1 * t, e);
|
|
1393
|
+
}, m.format = function(t) {
|
|
1394
|
+
var e = this, n = this.$locale();
|
|
1395
|
+
if (!this.isValid()) return n.invalidDate || l;
|
|
1396
|
+
var r = t || "YYYY-MM-DDTHH:mm:ssZ", i = b.z(this), s = this.$H, u = this.$m, a = this.$M, o = n.weekdays, c = n.months, f = n.meridiem, h = function(t, n, i, s) {
|
|
1397
|
+
return t && (t[n] || t(e, r)) || i[n].slice(0, s);
|
|
1398
|
+
}, d = function(t) {
|
|
1399
|
+
return b.s(s % 12 || 12, t, "0");
|
|
1400
|
+
}, $ = f || function(t, e, n) {
|
|
1401
|
+
var r = t < 12 ? "AM" : "PM";
|
|
1402
|
+
return n ? r.toLowerCase() : r;
|
|
1403
|
+
};
|
|
1404
|
+
return r.replace(y, (function(t, r) {
|
|
1405
|
+
return r || function(t) {
|
|
1406
|
+
switch (t) {
|
|
1407
|
+
case "YY": return String(e.$y).slice(-2);
|
|
1408
|
+
case "YYYY": return b.s(e.$y, 4, "0");
|
|
1409
|
+
case "M": return a + 1;
|
|
1410
|
+
case "MM": return b.s(a + 1, 2, "0");
|
|
1411
|
+
case "MMM": return h(n.monthsShort, a, c, 3);
|
|
1412
|
+
case "MMMM": return h(c, a);
|
|
1413
|
+
case "D": return e.$D;
|
|
1414
|
+
case "DD": return b.s(e.$D, 2, "0");
|
|
1415
|
+
case "d": return String(e.$W);
|
|
1416
|
+
case "dd": return h(n.weekdaysMin, e.$W, o, 2);
|
|
1417
|
+
case "ddd": return h(n.weekdaysShort, e.$W, o, 3);
|
|
1418
|
+
case "dddd": return o[e.$W];
|
|
1419
|
+
case "H": return String(s);
|
|
1420
|
+
case "HH": return b.s(s, 2, "0");
|
|
1421
|
+
case "h": return d(1);
|
|
1422
|
+
case "hh": return d(2);
|
|
1423
|
+
case "a": return $(s, u, !0);
|
|
1424
|
+
case "A": return $(s, u, !1);
|
|
1425
|
+
case "m": return String(u);
|
|
1426
|
+
case "mm": return b.s(u, 2, "0");
|
|
1427
|
+
case "s": return String(e.$s);
|
|
1428
|
+
case "ss": return b.s(e.$s, 2, "0");
|
|
1429
|
+
case "SSS": return b.s(e.$ms, 3, "0");
|
|
1430
|
+
case "Z": return i;
|
|
1431
|
+
}
|
|
1432
|
+
return null;
|
|
1433
|
+
}(t) || i.replace(":", "");
|
|
1434
|
+
}));
|
|
1435
|
+
}, m.utcOffset = function() {
|
|
1436
|
+
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
|
|
1437
|
+
}, m.diff = function(r, d, l) {
|
|
1438
|
+
var $, y = this, M = b.p(d), m = O(r), v = (m.utcOffset() - this.utcOffset()) * e, g = this - m, D = function() {
|
|
1439
|
+
return b.m(y, m);
|
|
1440
|
+
};
|
|
1441
|
+
switch (M) {
|
|
1442
|
+
case h:
|
|
1443
|
+
$ = D() / 12;
|
|
1444
|
+
break;
|
|
1445
|
+
case c:
|
|
1446
|
+
$ = D();
|
|
1447
|
+
break;
|
|
1448
|
+
case f:
|
|
1449
|
+
$ = D() / 3;
|
|
1450
|
+
break;
|
|
1451
|
+
case o:
|
|
1452
|
+
$ = (g - v) / 6048e5;
|
|
1453
|
+
break;
|
|
1454
|
+
case a:
|
|
1455
|
+
$ = (g - v) / 864e5;
|
|
1456
|
+
break;
|
|
1457
|
+
case u:
|
|
1458
|
+
$ = g / n;
|
|
1459
|
+
break;
|
|
1460
|
+
case s:
|
|
1461
|
+
$ = g / e;
|
|
1462
|
+
break;
|
|
1463
|
+
case i:
|
|
1464
|
+
$ = g / t;
|
|
1465
|
+
break;
|
|
1466
|
+
default: $ = g;
|
|
1467
|
+
}
|
|
1468
|
+
return l ? $ : b.a($);
|
|
1469
|
+
}, m.daysInMonth = function() {
|
|
1470
|
+
return this.endOf(c).$D;
|
|
1471
|
+
}, m.$locale = function() {
|
|
1472
|
+
return D[this.$L];
|
|
1473
|
+
}, m.locale = function(t, e) {
|
|
1474
|
+
if (!t) return this.$L;
|
|
1475
|
+
var n = this.clone(), r = w(t, e, !0);
|
|
1476
|
+
return r && (n.$L = r), n;
|
|
1477
|
+
}, m.clone = function() {
|
|
1478
|
+
return b.w(this.$d, this);
|
|
1479
|
+
}, m.toDate = function() {
|
|
1480
|
+
return new Date(this.valueOf());
|
|
1481
|
+
}, m.toJSON = function() {
|
|
1482
|
+
return this.isValid() ? this.toISOString() : null;
|
|
1483
|
+
}, m.toISOString = function() {
|
|
1484
|
+
return this.$d.toISOString();
|
|
1485
|
+
}, m.toString = function() {
|
|
1486
|
+
return this.$d.toUTCString();
|
|
1487
|
+
}, M;
|
|
1488
|
+
}(), k = _.prototype;
|
|
1489
|
+
return O.prototype = k, [
|
|
1490
|
+
["$ms", r],
|
|
1491
|
+
["$s", i],
|
|
1492
|
+
["$m", s],
|
|
1493
|
+
["$H", u],
|
|
1494
|
+
["$W", a],
|
|
1495
|
+
["$M", c],
|
|
1496
|
+
["$y", h],
|
|
1497
|
+
["$D", d]
|
|
1498
|
+
].forEach((function(t) {
|
|
1499
|
+
k[t[1]] = function(e) {
|
|
1500
|
+
return this.$g(e, t[0], t[1]);
|
|
1501
|
+
};
|
|
1502
|
+
})), O.extend = function(t, e) {
|
|
1503
|
+
return t.$i || (t(e, _, O), t.$i = !0), O;
|
|
1504
|
+
}, O.locale = w, O.isDayjs = S, O.unix = function(t) {
|
|
1505
|
+
return O(1e3 * t);
|
|
1506
|
+
}, O.en = D[g], O.Ls = D, O.p = {}, O;
|
|
1507
|
+
}));
|
|
1508
|
+
}));
|
|
1509
|
+
//#endregion
|
|
1510
|
+
//#region src/internal.ts
|
|
1511
|
+
var import_dist = /* @__PURE__ */ __toESM(require_dist(), 1);
|
|
1512
|
+
var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min(), 1);
|
|
1513
|
+
var JSON5 = __resolveDefaultExport$2(import_dist.default, false);
|
|
1514
|
+
var dayjs$1 = __resolveDefaultExport$2(import_dayjs_min.default, false);
|
|
1515
|
+
globalThis.__screwUpIsInCJS_db7919f73ec9 = false;
|
|
1516
|
+
function __resolveDefaultExport$2(module, isESM) {
|
|
1517
|
+
const __isInCJS = typeof globalThis !== "undefined" && globalThis.__screwUpIsInCJS_db7919f73ec9 === true;
|
|
1518
|
+
const maybe = module;
|
|
1519
|
+
const hasDefault = !!(maybe && typeof maybe === "object" && "default" in maybe);
|
|
1520
|
+
const unwrapNamespaceDefault = (value) => {
|
|
1521
|
+
if (!value || typeof value !== "object") return value;
|
|
1522
|
+
const inner = value;
|
|
1523
|
+
if ((inner.__esModule === true || typeof Symbol !== "undefined" && inner[Symbol.toStringTag] === "Module") && "default" in inner) return inner.default;
|
|
1524
|
+
return value;
|
|
1525
|
+
};
|
|
1526
|
+
const resolvedDefault = hasDefault ? unwrapNamespaceDefault(maybe.default) : void 0;
|
|
1527
|
+
if (__isInCJS) return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
1528
|
+
if (isESM) {
|
|
1529
|
+
if (hasDefault) return resolvedDefault;
|
|
1530
|
+
throw new Error("Default export not found.");
|
|
1531
|
+
}
|
|
1532
|
+
return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
1533
|
+
}
|
|
1534
|
+
/**
|
|
1535
|
+
* Default console logger implementation
|
|
1536
|
+
* @param prefix - Log prefix
|
|
1537
|
+
* @param driver - Console logging driver instance
|
|
1538
|
+
*/
|
|
1539
|
+
var createConsoleLogger = (prefix, driver) => {
|
|
1540
|
+
var _driver$debug, _driver$info, _driver$warn, _driver$error;
|
|
1541
|
+
const d = (_driver$debug = driver === null || driver === void 0 ? void 0 : driver.debug) !== null && _driver$debug !== void 0 ? _driver$debug : (() => {});
|
|
1542
|
+
const i = (_driver$info = driver === null || driver === void 0 ? void 0 : driver.info) !== null && _driver$info !== void 0 ? _driver$info : globalThis.console.info;
|
|
1543
|
+
const w = (_driver$warn = driver === null || driver === void 0 ? void 0 : driver.warn) !== null && _driver$warn !== void 0 ? _driver$warn : globalThis.console.warn;
|
|
1544
|
+
const e = (_driver$error = driver === null || driver === void 0 ? void 0 : driver.error) !== null && _driver$error !== void 0 ? _driver$error : globalThis.console.error;
|
|
1545
|
+
if (prefix) return {
|
|
1546
|
+
debug: (msg) => d(`[${prefix}]: ${msg}`),
|
|
1547
|
+
info: (msg) => i(`[${prefix}]: ${msg}`),
|
|
1548
|
+
warn: (msg) => w(`[${prefix}]: ${msg}`),
|
|
1549
|
+
error: (msg) => e(`[${prefix}]: ${msg}`)
|
|
1550
|
+
};
|
|
1551
|
+
else return {
|
|
1552
|
+
debug: (msg) => d(`${msg}`),
|
|
1553
|
+
info: (msg) => i(`${msg}`),
|
|
1554
|
+
warn: (msg) => w(`${msg}`),
|
|
1555
|
+
error: (msg) => e(`${msg}`)
|
|
1556
|
+
};
|
|
1557
|
+
};
|
|
1558
|
+
var collectStringArray = (value) => {
|
|
1559
|
+
if (!Array.isArray(value)) return;
|
|
1560
|
+
const entries = value.filter((entry) => typeof entry === "string");
|
|
1561
|
+
return entries.length > 0 ? entries : void 0;
|
|
1562
|
+
};
|
|
1563
|
+
var resolveWorkspacePatternsFromPackageJson = (packageJson) => {
|
|
1564
|
+
var _packageJson$workspac;
|
|
1565
|
+
const directPatterns = collectStringArray(packageJson === null || packageJson === void 0 ? void 0 : packageJson.workspaces);
|
|
1566
|
+
if (directPatterns) return directPatterns;
|
|
1567
|
+
return collectStringArray(packageJson === null || packageJson === void 0 || (_packageJson$workspac = packageJson.workspaces) === null || _packageJson$workspac === void 0 ? void 0 : _packageJson$workspac.packages);
|
|
1568
|
+
};
|
|
1569
|
+
var parseYamlScalar = (value) => {
|
|
1570
|
+
const trimmed = value.trim();
|
|
1571
|
+
if (!trimmed) return;
|
|
1572
|
+
try {
|
|
1573
|
+
const parsed = JSON5.parse(trimmed);
|
|
1574
|
+
return typeof parsed === "string" ? parsed : void 0;
|
|
1575
|
+
} catch (_unused) {
|
|
1576
|
+
const commentIndex = trimmed.indexOf(" #");
|
|
1577
|
+
return (commentIndex >= 0 ? trimmed.slice(0, commentIndex).trim() : trimmed) || void 0;
|
|
1578
|
+
}
|
|
1579
|
+
};
|
|
1580
|
+
var parsePnpmWorkspacePatterns = (content) => {
|
|
1581
|
+
const patterns = [];
|
|
1582
|
+
const lines = content.split(/\r?\n/);
|
|
1583
|
+
let inPackagesSection = false;
|
|
1584
|
+
let packagesIndent = -1;
|
|
1585
|
+
for (const rawLine of lines) {
|
|
1586
|
+
const line = rawLine.replace(/\t/g, " ");
|
|
1587
|
+
const trimmed = line.trim();
|
|
1588
|
+
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
1589
|
+
const indent = line.length - line.trimStart().length;
|
|
1590
|
+
if (!inPackagesSection) {
|
|
1591
|
+
const match = trimmed.match(/^packages\s*:\s*(.*)$/);
|
|
1592
|
+
if (!match) continue;
|
|
1593
|
+
const remaining = match[1].trim();
|
|
1594
|
+
if (remaining) {
|
|
1595
|
+
const parsed = JSON5.parse(remaining);
|
|
1596
|
+
if (Array.isArray(parsed)) {
|
|
1597
|
+
const inlinePatterns = parsed.filter((entry) => typeof entry === "string");
|
|
1598
|
+
patterns.push(...inlinePatterns);
|
|
1599
|
+
}
|
|
1600
|
+
break;
|
|
1601
|
+
}
|
|
1602
|
+
inPackagesSection = true;
|
|
1603
|
+
packagesIndent = indent;
|
|
1604
|
+
continue;
|
|
1605
|
+
}
|
|
1606
|
+
if (indent <= packagesIndent && !trimmed.startsWith("-")) break;
|
|
1607
|
+
const match = trimmed.match(/^-\s*(.+)$/);
|
|
1608
|
+
if (!match) continue;
|
|
1609
|
+
const pattern = parseYamlScalar(match[1]);
|
|
1610
|
+
if (pattern) patterns.push(pattern);
|
|
1611
|
+
}
|
|
1612
|
+
return patterns;
|
|
1613
|
+
};
|
|
1614
|
+
var resolveWorkspacePatterns = async (workspaceRoot, logger) => {
|
|
1615
|
+
try {
|
|
1616
|
+
const rootPackageJsonPath = join(workspaceRoot, "package.json");
|
|
1617
|
+
if (existsSync(rootPackageJsonPath)) {
|
|
1618
|
+
const content = await readFile(rootPackageJsonPath, "utf-8");
|
|
1619
|
+
const workspacePatterns = resolveWorkspacePatternsFromPackageJson(JSON5.parse(content));
|
|
1620
|
+
if (workspacePatterns === null || workspacePatterns === void 0 ? void 0 : workspacePatterns.length) return workspacePatterns;
|
|
1621
|
+
}
|
|
1622
|
+
const pnpmWorkspacePath = join(workspaceRoot, "pnpm-workspace.yaml");
|
|
1623
|
+
if (!existsSync(pnpmWorkspacePath)) return [];
|
|
1624
|
+
return parsePnpmWorkspacePatterns(await readFile(pnpmWorkspacePath, "utf-8"));
|
|
1625
|
+
} catch (error) {
|
|
1626
|
+
logger.warn(`Failed to resolve workspace patterns from ${workspaceRoot}: ${error}`);
|
|
1627
|
+
return [];
|
|
1628
|
+
}
|
|
1629
|
+
};
|
|
1630
|
+
/**
|
|
1631
|
+
* Recursively flatten an object into dot-notation key-value pairs
|
|
1632
|
+
* @param obj - Object to flatten
|
|
1633
|
+
* @param prefix - Current key prefix
|
|
1634
|
+
* @param map - Store key-value entries into this
|
|
1635
|
+
*/
|
|
1636
|
+
var flattenObject = (obj, prefix, map) => {
|
|
1637
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
1638
|
+
if (!value) continue;
|
|
1639
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
1640
|
+
if (typeof value === "string") map[fullKey] = value;
|
|
1641
|
+
else if (Array.isArray(value)) map[fullKey] = value.map((v) => String(v)).join(",");
|
|
1642
|
+
else if (typeof value === "object") flattenObject(value, fullKey, map);
|
|
1643
|
+
else map[fullKey] = String(value);
|
|
1644
|
+
}
|
|
1645
|
+
};
|
|
1646
|
+
/**
|
|
1647
|
+
* Find workspace root by looking for workspace configuration files
|
|
1648
|
+
* @param startPath - Starting directory path
|
|
1649
|
+
* @param logger - Logger instance
|
|
1650
|
+
* @returns Promise resolving to workspace root path or undefined if not found
|
|
1651
|
+
*/
|
|
1652
|
+
var findWorkspaceRoot = async (startPath, logger) => {
|
|
1653
|
+
let currentPath = startPath;
|
|
1654
|
+
while (currentPath !== dirname(currentPath)) {
|
|
1655
|
+
const packageJsonPath = join(currentPath, "package.json");
|
|
1656
|
+
if (existsSync(packageJsonPath)) try {
|
|
1657
|
+
const content = await readFile(packageJsonPath, "utf-8");
|
|
1658
|
+
if (JSON5.parse(content).workspaces || existsSync(join(currentPath, "pnpm-workspace.yaml")) || existsSync(join(currentPath, "lerna.json"))) return currentPath;
|
|
1659
|
+
} catch (error) {
|
|
1660
|
+
logger.warn(`Failed to parse package.json at ${packageJsonPath}: ${error}`);
|
|
1661
|
+
}
|
|
1662
|
+
currentPath = dirname(currentPath);
|
|
1663
|
+
}
|
|
1664
|
+
};
|
|
1665
|
+
/**
|
|
1666
|
+
* Collect workspace sibling projects
|
|
1667
|
+
* @param workspaceRoot - Workspace root directory
|
|
1668
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
1669
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
1670
|
+
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
1671
|
+
* @param logger - Logger instance
|
|
1672
|
+
* @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)
|
|
1673
|
+
*/
|
|
1674
|
+
var collectWorkspaceSiblings = async (workspaceRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger) => {
|
|
1675
|
+
const siblings = /* @__PURE__ */ new Map();
|
|
1676
|
+
try {
|
|
1677
|
+
const workspacePatterns = await resolveWorkspacePatterns(workspaceRoot, logger);
|
|
1678
|
+
if (workspacePatterns.length <= 0) return siblings;
|
|
1679
|
+
const workspaceDirs = /* @__PURE__ */ new Set();
|
|
1680
|
+
for (const pattern of workspacePatterns) (await glob(pattern, { cwd: workspaceRoot })).forEach((match) => workspaceDirs.add(match));
|
|
1681
|
+
for (const workspaceDir of workspaceDirs) {
|
|
1682
|
+
const packageJsonPath = join(workspaceRoot, workspaceDir, "package.json");
|
|
1683
|
+
if (existsSync(packageJsonPath)) try {
|
|
1684
|
+
const packagePath = join(workspaceRoot, workspaceDir);
|
|
1685
|
+
const packageJson = (await resolveRawPackageJsonObject(packagePath, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger)).metadata;
|
|
1686
|
+
if (packageJson.name && packageJson.version) siblings.set(packageJson.name, {
|
|
1687
|
+
name: packageJson.name,
|
|
1688
|
+
version: packageJson.version,
|
|
1689
|
+
path: packagePath
|
|
1690
|
+
});
|
|
1691
|
+
} catch (error) {
|
|
1692
|
+
logger.warn(`Failed to resolve package.json from ${packageJsonPath}: ${error}`);
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
} catch (error) {
|
|
1696
|
+
logger.warn(`Failed to collect workspace siblings from ${workspaceRoot}: ${error}`);
|
|
1697
|
+
}
|
|
1698
|
+
return siblings;
|
|
1699
|
+
};
|
|
1700
|
+
/**
|
|
1701
|
+
* Replace "*" wildcards in peerDependencies with actual workspace sibling versions
|
|
1702
|
+
* @param packageJson - Package.json object to modify
|
|
1703
|
+
* @param siblings - Map of workspace sibling projects
|
|
1704
|
+
* @param versionPrefix - Version prefix to add (e.g., "^", "~", "")
|
|
1705
|
+
* @returns Modified package.json object
|
|
1706
|
+
*/
|
|
1707
|
+
var replacePeerDependenciesWildcards = (packageJson, siblings, versionPrefix) => {
|
|
1708
|
+
const modifiedPackageJson = JSON5.parse(JSON.stringify(packageJson));
|
|
1709
|
+
if (!modifiedPackageJson.peerDependencies || typeof modifiedPackageJson.peerDependencies !== "object") return modifiedPackageJson;
|
|
1710
|
+
for (const [depName, depVersion] of Object.entries(modifiedPackageJson.peerDependencies)) if (depVersion === "*" && siblings.has(depName)) {
|
|
1711
|
+
const sibling = siblings.get(depName);
|
|
1712
|
+
modifiedPackageJson.peerDependencies[depName] = `${versionPrefix}${sibling.version}`;
|
|
1713
|
+
}
|
|
1714
|
+
return modifiedPackageJson;
|
|
1715
|
+
};
|
|
1716
|
+
/**
|
|
1717
|
+
* Merge package metadata with inheritance (child overrides parent)
|
|
1718
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
1719
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
1720
|
+
* @param sourceMap - Map to track field sources
|
|
1721
|
+
* @param parentMetadata - Parent package metadata
|
|
1722
|
+
* @param childMetadata - Child package metadata
|
|
1723
|
+
* @param parentSourceDir - Parent package.json directory (for source tracking)
|
|
1724
|
+
* @param childSourceDir - Child package.json directory (for source tracking)
|
|
1725
|
+
* @returns Merged package metadata
|
|
1726
|
+
*/
|
|
1727
|
+
var mergePackageMetadata = async (fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, _repositoryPath) => {
|
|
1728
|
+
const metadata = await fetchGitMetadata();
|
|
1729
|
+
const merged = {};
|
|
1730
|
+
flattenObject(metadata, "", merged);
|
|
1731
|
+
for (const key in parentMetadata) {
|
|
1732
|
+
const value = parentMetadata[key];
|
|
1733
|
+
if (value !== void 0) {
|
|
1734
|
+
merged[key] = value;
|
|
1735
|
+
sourceMap.set(key, parentSourceDir);
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
for (const key in childMetadata) {
|
|
1739
|
+
const value = childMetadata[key];
|
|
1740
|
+
if (value !== void 0) {
|
|
1741
|
+
merged[key] = value;
|
|
1742
|
+
sourceMap.set(key, childSourceDir);
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
if (alwaysOverrideVersionFromGit && metadata.version) merged.version = metadata.version;
|
|
1746
|
+
merged.buildDate = dayjs$1().format();
|
|
1747
|
+
return merged;
|
|
1748
|
+
};
|
|
1749
|
+
/**
|
|
1750
|
+
* Merge raw package.json objects with inheritance (child overrides parent)
|
|
1751
|
+
* Only inherits package metadata fields, not project-specific configurations
|
|
1752
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
1753
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
1754
|
+
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
1755
|
+
* @param sourceMap - Map to track field sources
|
|
1756
|
+
* @param parentMetadata - Parent package object
|
|
1757
|
+
* @param childMetadata - Child package object
|
|
1758
|
+
* @param parentSourceDir - Parent package.json directory (for source tracking)
|
|
1759
|
+
* @param childSourceDir - Child package.json directory (for source tracking)
|
|
1760
|
+
* @param repositoryPath - Path to Git repository root
|
|
1761
|
+
* @returns Merged package object with only metadata fields
|
|
1762
|
+
*/
|
|
1763
|
+
var mergeRawPackageJson = async (fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap, parentMetadata, childMetadata, parentSourceDir, childSourceDir, repositoryPath) => {
|
|
1764
|
+
const gitMetadata = await fetchGitMetadata();
|
|
1765
|
+
const merged = { ...gitMetadata };
|
|
1766
|
+
for (const key in parentMetadata) if (inheritableFields.has(key)) {
|
|
1767
|
+
const value = parentMetadata[key];
|
|
1768
|
+
if (value !== void 0) {
|
|
1769
|
+
merged[key] = value;
|
|
1770
|
+
sourceMap.set(key, parentSourceDir);
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
for (const key in childMetadata) {
|
|
1774
|
+
const value = childMetadata[key];
|
|
1775
|
+
if (value !== void 0) {
|
|
1776
|
+
merged[key] = value;
|
|
1777
|
+
sourceMap.set(key, childSourceDir);
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
if (alwaysOverrideVersionFromGit && gitMetadata.version) {
|
|
1781
|
+
merged.version = gitMetadata.version;
|
|
1782
|
+
sourceMap.set("version", repositoryPath);
|
|
1783
|
+
}
|
|
1784
|
+
if (!merged.version) {
|
|
1785
|
+
var _gitInfo$version, _gitInfo$commit, _gitInfo$tags, _gitInfo$branches;
|
|
1786
|
+
merged.version = "0.0.1";
|
|
1787
|
+
const gitInfo = typeof merged.git === "object" && merged.git !== null ? merged.git : {};
|
|
1788
|
+
gitInfo.version = (_gitInfo$version = gitInfo.version) !== null && _gitInfo$version !== void 0 ? _gitInfo$version : merged.version;
|
|
1789
|
+
gitInfo.commit = (_gitInfo$commit = gitInfo.commit) !== null && _gitInfo$commit !== void 0 ? _gitInfo$commit : {
|
|
1790
|
+
hash: "unknown",
|
|
1791
|
+
shortHash: "unknown"
|
|
1792
|
+
};
|
|
1793
|
+
gitInfo.tags = (_gitInfo$tags = gitInfo.tags) !== null && _gitInfo$tags !== void 0 ? _gitInfo$tags : [];
|
|
1794
|
+
gitInfo.branches = (_gitInfo$branches = gitInfo.branches) !== null && _gitInfo$branches !== void 0 ? _gitInfo$branches : [];
|
|
1795
|
+
merged.git = gitInfo;
|
|
1796
|
+
}
|
|
1797
|
+
merged.buildDate = dayjs$1().format();
|
|
1798
|
+
return merged;
|
|
1799
|
+
};
|
|
1800
|
+
/**
|
|
1801
|
+
* Resolve package metadata for current project with workspace inheritance
|
|
1802
|
+
* @param projectRoot - Current project root
|
|
1803
|
+
* @param logger - Logger instance
|
|
1804
|
+
* @param readPackageMetadataFn - Function to read package metadata
|
|
1805
|
+
* @param mergePackageMetadataFn - Function to merge package metadata
|
|
1806
|
+
* @returns Promise resolving to resolved package metadata
|
|
1807
|
+
*/
|
|
1808
|
+
var resolvePackageMetadataT = async (projectRoot, logger, readPackageMetadataFn, mergePackageMetadataFn) => {
|
|
1809
|
+
const workspaceRoot = await findWorkspaceRoot(projectRoot, logger);
|
|
1810
|
+
if (!workspaceRoot) return mergePackageMetadataFn({}, await readPackageMetadataFn(join(projectRoot, "package.json")), "", projectRoot, projectRoot);
|
|
1811
|
+
const projectPackagePath = join(projectRoot, "package.json");
|
|
1812
|
+
const rootPackagePath = join(workspaceRoot, "package.json");
|
|
1813
|
+
const metadata = await readPackageMetadataFn(rootPackagePath);
|
|
1814
|
+
if (projectPackagePath !== rootPackagePath && existsSync(projectPackagePath)) return mergePackageMetadataFn(metadata, await readPackageMetadataFn(projectPackagePath), workspaceRoot, projectRoot, projectRoot);
|
|
1815
|
+
else return mergePackageMetadataFn({}, metadata, "", workspaceRoot, projectRoot);
|
|
1816
|
+
};
|
|
1817
|
+
/**
|
|
1818
|
+
* Read and parse package.json file
|
|
1819
|
+
* @param logger - Logger instance
|
|
1820
|
+
* @param packagePath - Path to package.json
|
|
1821
|
+
* @returns Promise resolving to package metadata
|
|
1822
|
+
*/
|
|
1823
|
+
var readPackageMetadata = async (logger, packagePath) => {
|
|
1824
|
+
try {
|
|
1825
|
+
const content = await readFile(packagePath, "utf-8");
|
|
1826
|
+
const json = JSON5.parse(content);
|
|
1827
|
+
const map = {};
|
|
1828
|
+
flattenObject(json, "", map);
|
|
1829
|
+
return map;
|
|
1830
|
+
} catch (error) {
|
|
1831
|
+
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1832
|
+
return {};
|
|
1833
|
+
}
|
|
1834
|
+
};
|
|
1835
|
+
/**
|
|
1836
|
+
* Resolve package metadata for current project with workspace inheritance
|
|
1837
|
+
* @param projectRoot - Current project root
|
|
1838
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
1839
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
1840
|
+
* @param logger - Logger instance
|
|
1841
|
+
* @returns Promise resolving to resolved package metadata
|
|
1842
|
+
*/
|
|
1843
|
+
var resolvePackageMetadata = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger) => {
|
|
1844
|
+
const sourceMap = /* @__PURE__ */ new Map();
|
|
1845
|
+
return {
|
|
1846
|
+
metadata: await resolvePackageMetadataT(projectRoot, logger, readPackageMetadata.bind(void 0, logger), mergePackageMetadata.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, sourceMap)),
|
|
1847
|
+
sourceMap
|
|
1848
|
+
};
|
|
1849
|
+
};
|
|
1850
|
+
/**
|
|
1851
|
+
* Read and parse package.json file without flattening
|
|
1852
|
+
* @param logger - Logger instance
|
|
1853
|
+
* @param packagePath - Path to package.json
|
|
1854
|
+
* @returns Promise resolving to raw package object
|
|
1855
|
+
*/
|
|
1856
|
+
var readRawPackageJson = async (logger, packagePath, ignoreNotExist = false) => {
|
|
1857
|
+
if (ignoreNotExist && !existsSync(packagePath)) return {};
|
|
1858
|
+
try {
|
|
1859
|
+
const content = await readFile(packagePath, "utf-8");
|
|
1860
|
+
return JSON5.parse(content);
|
|
1861
|
+
} catch (error) {
|
|
1862
|
+
if (ignoreNotExist && (error === null || error === void 0 ? void 0 : error.code) === "ENOENT") return {};
|
|
1863
|
+
logger.error(`Failed to read package.json from ${packagePath}: ${error}`);
|
|
1864
|
+
throw error;
|
|
1865
|
+
}
|
|
1866
|
+
};
|
|
1867
|
+
/**
|
|
1868
|
+
* Resolve raw package.json for current project with workspace inheritance
|
|
1869
|
+
* @param projectRoot - Current project root
|
|
1870
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
1871
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
1872
|
+
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
1873
|
+
* @param logger - Logger instance
|
|
1874
|
+
* @returns Promise resolving to resolved raw package.json object with source tracking
|
|
1875
|
+
*/
|
|
1876
|
+
var resolveRawPackageJsonObject = async (projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger, ignoreNotExist = false) => {
|
|
1877
|
+
const sourceMap = /* @__PURE__ */ new Map();
|
|
1878
|
+
const readRawPackageJsonFn = async (packagePath) => readRawPackageJson(logger, packagePath, ignoreNotExist);
|
|
1879
|
+
return {
|
|
1880
|
+
metadata: await resolvePackageMetadataT(projectRoot, logger, readRawPackageJsonFn, mergeRawPackageJson.bind(void 0, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, sourceMap)),
|
|
1881
|
+
sourceMap
|
|
1882
|
+
};
|
|
1883
|
+
};
|
|
1884
|
+
//#endregion
|
|
1885
|
+
//#region src/fast-tags.ts
|
|
1886
|
+
/**
|
|
1887
|
+
* Fast tag listing implementation that reads tags directly from filesystem
|
|
1888
|
+
* instead of using isomorphic-git's `listTags`
|
|
1889
|
+
*/
|
|
1890
|
+
/**
|
|
1891
|
+
* Parse packed-refs file to extract tags
|
|
1892
|
+
* @param packedRefsPath - Path to packed-refs file
|
|
1893
|
+
* @returns Array of tag names
|
|
1894
|
+
*/
|
|
1895
|
+
var parsePackedRefs = async (packedRefsPath) => {
|
|
1896
|
+
try {
|
|
1897
|
+
const lines = (await readFile(packedRefsPath, "utf-8")).split("\n");
|
|
1898
|
+
const tags = [];
|
|
1899
|
+
for (const line of lines) {
|
|
1900
|
+
if (line.startsWith("#") || !line.trim()) continue;
|
|
1901
|
+
const match = line.match(/^[0-9a-f]{40}\s+refs\/tags\/(.+)$/);
|
|
1902
|
+
if (match) {
|
|
1903
|
+
const tagName = match[1];
|
|
1904
|
+
if (!tagName.endsWith("^{}")) tags.push(tagName);
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
return tags;
|
|
1908
|
+
} catch (error) {
|
|
1909
|
+
if (error.code === "ENOENT") return [];
|
|
1910
|
+
throw error;
|
|
1911
|
+
}
|
|
1912
|
+
};
|
|
1913
|
+
/**
|
|
1914
|
+
* Read loose tag refs from refs/tags directory
|
|
1915
|
+
* @param refsTagsPath - Path to refs/tags directory
|
|
1916
|
+
* @returns Array of tag names
|
|
1917
|
+
*/
|
|
1918
|
+
var readLooseTags = async (refsTagsPath) => {
|
|
1919
|
+
try {
|
|
1920
|
+
const entries = await readdir(refsTagsPath, { withFileTypes: true });
|
|
1921
|
+
const tags = [];
|
|
1922
|
+
for (const entry of entries) if (entry.isFile()) tags.push(entry.name);
|
|
1923
|
+
return tags;
|
|
1924
|
+
} catch (error) {
|
|
1925
|
+
if (error.code === "ENOENT") return [];
|
|
1926
|
+
throw error;
|
|
1927
|
+
}
|
|
1928
|
+
};
|
|
1929
|
+
/**
|
|
1930
|
+
* Fast implementation of listTags that reads directly from filesystem
|
|
1931
|
+
* @param repoPath - Repository path
|
|
1932
|
+
* @returns Array of all tag names
|
|
1933
|
+
*/
|
|
1934
|
+
var listTagsFast = async (repoPath) => {
|
|
1935
|
+
const gitDir = join(repoPath, ".git");
|
|
1936
|
+
const gitStat = await stat(gitDir).catch(() => null);
|
|
1937
|
+
let actualGitDir = gitDir;
|
|
1938
|
+
if (gitStat === null || gitStat === void 0 ? void 0 : gitStat.isFile()) {
|
|
1939
|
+
const match = (await readFile(gitDir, "utf-8")).match(/^gitdir:\s*(.+)$/m);
|
|
1940
|
+
if (match) actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);
|
|
1941
|
+
}
|
|
1942
|
+
const [packedTags, looseTags] = await Promise.all([parsePackedRefs(join(actualGitDir, "packed-refs")), readLooseTags(join(actualGitDir, "refs", "tags"))]);
|
|
1943
|
+
const allTags = new Set([...packedTags, ...looseTags]);
|
|
1944
|
+
return Array.from(allTags).sort();
|
|
1945
|
+
};
|
|
1946
|
+
/**
|
|
1947
|
+
* Batch resolve multiple tags with their commit hashes for better performance
|
|
1948
|
+
* @param repoPath - Repository path
|
|
1949
|
+
* @param tagNames - Array of tag names to resolve
|
|
1950
|
+
* @returns Map of tag name to {oid, commitOid}
|
|
1951
|
+
*/
|
|
1952
|
+
var resolveTagsBatchWithCommit = async (repoPath, tagNames, logger) => {
|
|
1953
|
+
const startTime = Date.now();
|
|
1954
|
+
const gitDir = join(repoPath, ".git");
|
|
1955
|
+
const result = /* @__PURE__ */ new Map();
|
|
1956
|
+
const gitStat = await stat(gitDir).catch(() => null);
|
|
1957
|
+
let actualGitDir = gitDir;
|
|
1958
|
+
if (gitStat === null || gitStat === void 0 ? void 0 : gitStat.isFile()) {
|
|
1959
|
+
const match = (await readFile(gitDir, "utf-8")).match(/^gitdir:\s*(.+)$/m);
|
|
1960
|
+
if (match) actualGitDir = isAbsolute(match[1]) ? match[1] : join(repoPath, match[1]);
|
|
1961
|
+
}
|
|
1962
|
+
const tagSet = new Set(tagNames);
|
|
1963
|
+
const packedRefsStart = Date.now();
|
|
1964
|
+
try {
|
|
1965
|
+
const lines = (await readFile(join(actualGitDir, "packed-refs"), "utf-8")).split("\n");
|
|
1966
|
+
for (let i = 0; i < lines.length; i++) {
|
|
1967
|
+
const line = lines[i];
|
|
1968
|
+
if (line.startsWith("#") || !line.trim()) continue;
|
|
1969
|
+
const match = line.match(/^([0-9a-f]{40})\s+refs\/tags\/(.+)$/);
|
|
1970
|
+
if (match && tagSet.has(match[2])) {
|
|
1971
|
+
const tagName = match[2];
|
|
1972
|
+
const oid = match[1];
|
|
1973
|
+
let commitOid = oid;
|
|
1974
|
+
if (i + 1 < lines.length && lines[i + 1].startsWith("^")) commitOid = lines[i + 1].substring(1, 41);
|
|
1975
|
+
result.set(tagName, {
|
|
1976
|
+
oid,
|
|
1977
|
+
commitOid
|
|
1978
|
+
});
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
} catch (error) {
|
|
1982
|
+
if (error.code !== "ENOENT") throw error;
|
|
1983
|
+
}
|
|
1984
|
+
logger.debug(`[fast-tags] read packed-refs: ${Date.now() - packedRefsStart}ms`);
|
|
1985
|
+
const remainingTags = tagNames.filter((tag) => !result.has(tag));
|
|
1986
|
+
if (remainingTags.length > 0) {
|
|
1987
|
+
const looseRefsStart = Date.now();
|
|
1988
|
+
await Promise.all(remainingTags.map(async (tagName) => {
|
|
1989
|
+
const looseRefPath = join(actualGitDir, "refs", "tags", tagName);
|
|
1990
|
+
try {
|
|
1991
|
+
const oid = (await readFile(looseRefPath, "utf-8")).trim();
|
|
1992
|
+
let commitOid = oid;
|
|
1993
|
+
try {
|
|
1994
|
+
const { execSync } = __require("child_process");
|
|
1995
|
+
if (execSync(`git -C "${repoPath}" cat-file -t ${oid}`, { encoding: "utf-8" }).trim() === "tag") {
|
|
1996
|
+
const objectMatch = execSync(`git -C "${repoPath}" cat-file -p ${oid}`, { encoding: "utf-8" }).match(/^object ([0-9a-f]{40})$/m);
|
|
1997
|
+
if (objectMatch) commitOid = objectMatch[1];
|
|
1998
|
+
}
|
|
1999
|
+
} catch (error) {
|
|
2000
|
+
logger.debug(`[fast-tags] Could not determine object type for ${tagName}: ${error}`);
|
|
2001
|
+
}
|
|
2002
|
+
result.set(tagName, {
|
|
2003
|
+
oid,
|
|
2004
|
+
commitOid
|
|
2005
|
+
});
|
|
2006
|
+
} catch (error) {
|
|
2007
|
+
if (error.code !== "ENOENT") throw error;
|
|
2008
|
+
}
|
|
2009
|
+
}));
|
|
2010
|
+
logger.debug(`[fast-tags] read loose refs: ${Date.now() - looseRefsStart}ms`);
|
|
2011
|
+
}
|
|
2012
|
+
const totalTime = Date.now() - startTime;
|
|
2013
|
+
logger.debug(`[fast-tags] resolveTagsBatchWithCommit total: ${totalTime}ms`);
|
|
2014
|
+
logger.debug(`[fast-tags] Resolved ${result.size}/${tagNames.length} tags`);
|
|
2015
|
+
return result;
|
|
2016
|
+
};
|
|
2017
|
+
__resolveDefaultExport$1(__screwUpDefaultImportModule0, false);
|
|
2018
|
+
globalThis.__screwUpIsInCJS_63e978cf45c3 = false;
|
|
2019
|
+
function __resolveDefaultExport$1(module, isESM) {
|
|
2020
|
+
const __isInCJS = typeof globalThis !== "undefined" && globalThis.__screwUpIsInCJS_63e978cf45c3 === true;
|
|
2021
|
+
const maybe = module;
|
|
2022
|
+
const hasDefault = !!(maybe && typeof maybe === "object" && "default" in maybe);
|
|
2023
|
+
const unwrapNamespaceDefault = (value) => {
|
|
2024
|
+
if (!value || typeof value !== "object") return value;
|
|
2025
|
+
const inner = value;
|
|
2026
|
+
if ((inner.__esModule === true || typeof Symbol !== "undefined" && inner[Symbol.toStringTag] === "Module") && "default" in inner) return inner.default;
|
|
2027
|
+
return value;
|
|
2028
|
+
};
|
|
2029
|
+
const resolvedDefault = hasDefault ? unwrapNamespaceDefault(maybe.default) : void 0;
|
|
2030
|
+
if (__isInCJS) return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
2031
|
+
if (isESM) {
|
|
2032
|
+
if (hasDefault) return resolvedDefault;
|
|
2033
|
+
throw new Error("Default export not found.");
|
|
2034
|
+
}
|
|
2035
|
+
return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
2036
|
+
}
|
|
2037
|
+
/**
|
|
2038
|
+
* Build complete tag cache from repository
|
|
2039
|
+
* @param repoPath - Repository path
|
|
2040
|
+
* @param parseVersion - Function to parse version from tag name
|
|
2041
|
+
* @returns Map of commit hash to TagInfo array
|
|
2042
|
+
*/
|
|
2043
|
+
var buildCompleteTagCache = async (repoPath, parseVersion, logger) => {
|
|
2044
|
+
const totalStart = Date.now();
|
|
2045
|
+
const cache = /* @__PURE__ */ new Map();
|
|
2046
|
+
const listStart = Date.now();
|
|
2047
|
+
const tags = await listTagsFast(repoPath);
|
|
2048
|
+
logger.debug(`[git-ops] listTagsFast: ${Date.now() - listStart}ms`);
|
|
2049
|
+
logger.debug(`[git-ops] Found ${tags.length} tags`);
|
|
2050
|
+
const resolveStart = Date.now();
|
|
2051
|
+
const tagData = await resolveTagsBatchWithCommit(repoPath, tags, logger);
|
|
2052
|
+
logger.debug(`[git-ops] resolveTagsBatchWithCommit: ${Date.now() - resolveStart}ms`);
|
|
2053
|
+
const buildStart = Date.now();
|
|
2054
|
+
for (const tagName of tags) {
|
|
2055
|
+
const data = tagData.get(tagName);
|
|
2056
|
+
if (!data) continue;
|
|
2057
|
+
const { commitOid } = data;
|
|
2058
|
+
const tagInfo = {
|
|
2059
|
+
name: tagName,
|
|
2060
|
+
hash: commitOid,
|
|
2061
|
+
version: parseVersion(tagName)
|
|
2062
|
+
};
|
|
2063
|
+
if (!cache.has(commitOid)) cache.set(commitOid, []);
|
|
2064
|
+
cache.get(commitOid).push(tagInfo);
|
|
2065
|
+
}
|
|
2066
|
+
logger.debug(`[git-ops] build cache map: ${Date.now() - buildStart}ms`);
|
|
2067
|
+
const sortStart = Date.now();
|
|
2068
|
+
for (const tags of cache.values()) tags.sort((a, b) => a.name.localeCompare(b.name));
|
|
2069
|
+
logger.debug(`[git-ops] sort tags: ${Date.now() - sortStart}ms`);
|
|
2070
|
+
logger.debug(`[git-ops] buildCompleteTagCache total: ${Date.now() - totalStart}ms`);
|
|
2071
|
+
logger.debug(`[git-ops] Built cache with ${cache.size} unique commits`);
|
|
2072
|
+
return cache;
|
|
2073
|
+
};
|
|
2074
|
+
//#endregion
|
|
2075
|
+
//#region src/analyzer.ts
|
|
2076
|
+
var dayjs = __resolveDefaultExport(import_dayjs_min.default, false);
|
|
2077
|
+
globalThis.__screwUpIsInCJS_0fccafd118cb = false;
|
|
2078
|
+
function __resolveDefaultExport(module, isESM) {
|
|
2079
|
+
const __isInCJS = typeof globalThis !== "undefined" && globalThis.__screwUpIsInCJS_0fccafd118cb === true;
|
|
2080
|
+
const maybe = module;
|
|
2081
|
+
const hasDefault = !!(maybe && typeof maybe === "object" && "default" in maybe);
|
|
2082
|
+
const unwrapNamespaceDefault = (value) => {
|
|
2083
|
+
if (!value || typeof value !== "object") return value;
|
|
2084
|
+
const inner = value;
|
|
2085
|
+
if ((inner.__esModule === true || typeof Symbol !== "undefined" && inner[Symbol.toStringTag] === "Module") && "default" in inner) return inner.default;
|
|
2086
|
+
return value;
|
|
2087
|
+
};
|
|
2088
|
+
const resolvedDefault = hasDefault ? unwrapNamespaceDefault(maybe.default) : void 0;
|
|
2089
|
+
if (__isInCJS) return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
2090
|
+
if (isESM) {
|
|
2091
|
+
if (hasDefault) return resolvedDefault;
|
|
2092
|
+
throw new Error("Default export not found.");
|
|
2093
|
+
}
|
|
2094
|
+
return hasDefault ? resolvedDefault !== null && resolvedDefault !== void 0 ? resolvedDefault : module : module;
|
|
2095
|
+
}
|
|
2096
|
+
/**
|
|
2097
|
+
* Parse and validate a version component
|
|
2098
|
+
* @param value - The string value to parse
|
|
2099
|
+
* @returns The parsed number or undefined if invalid (negative or > 65535)
|
|
2100
|
+
*/
|
|
2101
|
+
var parseVersionComponent = (value) => {
|
|
2102
|
+
const num = parseInt(value, 10);
|
|
2103
|
+
return num < 0 || num > 65535 ? void 0 : num;
|
|
2104
|
+
};
|
|
2105
|
+
/**
|
|
2106
|
+
* Parse a version tag name
|
|
2107
|
+
* @param tagName - The version tag name
|
|
2108
|
+
* @returns The parsed version or undefined if the tag name is invalid
|
|
2109
|
+
*/
|
|
2110
|
+
var parseVersion = (tagName) => {
|
|
2111
|
+
const match = tagName.replace(/^v/i, "").match(/^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?$/);
|
|
2112
|
+
if (!match) return;
|
|
2113
|
+
const major = parseVersionComponent(match[1]);
|
|
2114
|
+
if (major === void 0) return;
|
|
2115
|
+
const version = {
|
|
2116
|
+
major,
|
|
2117
|
+
original: tagName
|
|
2118
|
+
};
|
|
2119
|
+
if (match[2] !== void 0) {
|
|
2120
|
+
const minor = parseVersionComponent(match[2]);
|
|
2121
|
+
if (minor === void 0) return;
|
|
2122
|
+
version.minor = minor;
|
|
2123
|
+
}
|
|
2124
|
+
if (match[3] !== void 0) {
|
|
2125
|
+
const build = parseVersionComponent(match[3]);
|
|
2126
|
+
if (build === void 0) return;
|
|
2127
|
+
version.build = build;
|
|
2128
|
+
}
|
|
2129
|
+
if (match[4] !== void 0) {
|
|
2130
|
+
const revision = parseVersionComponent(match[4]);
|
|
2131
|
+
if (revision === void 0) return;
|
|
2132
|
+
version.revision = revision;
|
|
2133
|
+
}
|
|
2134
|
+
return version;
|
|
2135
|
+
};
|
|
2136
|
+
/**
|
|
2137
|
+
* Check if a version is valid
|
|
2138
|
+
* @param version - The version to check
|
|
2139
|
+
* @returns True if the version is valid, false otherwise
|
|
2140
|
+
*/
|
|
2141
|
+
var isValidVersion = (version) => {
|
|
2142
|
+
return version.major >= 0 && (version.minor === void 0 || version.minor >= 0);
|
|
2143
|
+
};
|
|
2144
|
+
/**
|
|
2145
|
+
* Compare two versions
|
|
2146
|
+
* @param a - The first version
|
|
2147
|
+
* @param b - The second version
|
|
2148
|
+
* @returns A negative number if a is less than b, a positive number if a is greater than b, or 0 if they are equal
|
|
2149
|
+
*/
|
|
2150
|
+
var compareVersions = (a, b) => {
|
|
2151
|
+
var _a$minor, _b$minor, _a$build, _b$build, _a$revision, _b$revision;
|
|
2152
|
+
if (a.major !== b.major) return b.major - a.major;
|
|
2153
|
+
const aMinor = (_a$minor = a.minor) !== null && _a$minor !== void 0 ? _a$minor : 0;
|
|
2154
|
+
const bMinor = (_b$minor = b.minor) !== null && _b$minor !== void 0 ? _b$minor : 0;
|
|
2155
|
+
if (aMinor !== bMinor) return bMinor - aMinor;
|
|
2156
|
+
const aBuild = (_a$build = a.build) !== null && _a$build !== void 0 ? _a$build : 0;
|
|
2157
|
+
const bBuild = (_b$build = b.build) !== null && _b$build !== void 0 ? _b$build : 0;
|
|
2158
|
+
if (aBuild !== bBuild) return bBuild - aBuild;
|
|
2159
|
+
const aRevision = (_a$revision = a.revision) !== null && _a$revision !== void 0 ? _a$revision : 0;
|
|
2160
|
+
const bRevision = (_b$revision = b.revision) !== null && _b$revision !== void 0 ? _b$revision : 0;
|
|
2161
|
+
if (aRevision !== bRevision) return bRevision - aRevision;
|
|
2162
|
+
return 0;
|
|
2163
|
+
};
|
|
2164
|
+
/**
|
|
2165
|
+
* Increment the last version component
|
|
2166
|
+
* @param version - The version to increment
|
|
2167
|
+
* @returns The incremented version
|
|
2168
|
+
*/
|
|
2169
|
+
var incrementLastVersionComponent = (version) => {
|
|
2170
|
+
if (version.revision !== void 0) return {
|
|
2171
|
+
...version,
|
|
2172
|
+
revision: version.revision + 1
|
|
2173
|
+
};
|
|
2174
|
+
if (version.build !== void 0) return {
|
|
2175
|
+
...version,
|
|
2176
|
+
build: version.build + 1
|
|
2177
|
+
};
|
|
2178
|
+
if (version.minor !== void 0) return {
|
|
2179
|
+
...version,
|
|
2180
|
+
minor: version.minor + 1
|
|
2181
|
+
};
|
|
2182
|
+
return {
|
|
2183
|
+
...version,
|
|
2184
|
+
major: version.major + 1,
|
|
2185
|
+
original: `${version.major + 1}`
|
|
2186
|
+
};
|
|
2187
|
+
};
|
|
2188
|
+
/**
|
|
2189
|
+
* Format a version
|
|
2190
|
+
* @param version - The version to format
|
|
2191
|
+
* @returns The formatted version
|
|
2192
|
+
*/
|
|
2193
|
+
var formatVersion = (version) => {
|
|
2194
|
+
let result = `${version.major}`;
|
|
2195
|
+
if (version.minor !== void 0) {
|
|
2196
|
+
result += `.${version.minor}`;
|
|
2197
|
+
if (version.build !== void 0) {
|
|
2198
|
+
result += `.${version.build}`;
|
|
2199
|
+
if (version.revision !== void 0) result += `.${version.revision}`;
|
|
2200
|
+
}
|
|
2201
|
+
}
|
|
2202
|
+
return result;
|
|
2203
|
+
};
|
|
2204
|
+
/**
|
|
2205
|
+
* Get a commit by hash
|
|
2206
|
+
* @param repositoryPath - Local Git repository directory
|
|
2207
|
+
* @param hash - The hash of the commit
|
|
2208
|
+
* @returns The commit or undefined if the commit is not found
|
|
2209
|
+
*/
|
|
2210
|
+
var getCommit = async (repositoryPath, hash) => {
|
|
2211
|
+
try {
|
|
2212
|
+
const commit = await git.readCommit({
|
|
2213
|
+
fs,
|
|
2214
|
+
dir: repositoryPath,
|
|
2215
|
+
oid: hash
|
|
2216
|
+
});
|
|
2217
|
+
return {
|
|
2218
|
+
hash: commit.oid,
|
|
2219
|
+
shortHash: commit.oid.substring(0, 7),
|
|
2220
|
+
date: (/* @__PURE__ */ new Date(commit.commit.author.timestamp * 1e3)).toISOString(),
|
|
2221
|
+
message: commit.commit.message.trim(),
|
|
2222
|
+
parents: commit.commit.parent || []
|
|
2223
|
+
};
|
|
2224
|
+
} catch (_unused) {
|
|
2225
|
+
return;
|
|
2226
|
+
}
|
|
2227
|
+
};
|
|
2228
|
+
/**
|
|
2229
|
+
* Get the current commit
|
|
2230
|
+
* @param repositoryPath - Local Git repository directory
|
|
2231
|
+
* @returns The current commit or undefined if the current commit is not found
|
|
2232
|
+
*/
|
|
2233
|
+
var getCurrentCommit = async (repositoryPath) => {
|
|
2234
|
+
try {
|
|
2235
|
+
const currentOid = await git.resolveRef({
|
|
2236
|
+
fs,
|
|
2237
|
+
dir: repositoryPath,
|
|
2238
|
+
ref: "HEAD"
|
|
2239
|
+
});
|
|
2240
|
+
const commit = await git.readCommit({
|
|
2241
|
+
fs,
|
|
2242
|
+
dir: repositoryPath,
|
|
2243
|
+
oid: currentOid
|
|
2244
|
+
});
|
|
2245
|
+
return {
|
|
2246
|
+
hash: commit.oid,
|
|
2247
|
+
shortHash: commit.oid.substring(0, 7),
|
|
2248
|
+
date: (/* @__PURE__ */ new Date(commit.commit.author.timestamp * 1e3)).toISOString(),
|
|
2249
|
+
message: commit.commit.message.trim(),
|
|
2250
|
+
parents: commit.commit.parent || []
|
|
2251
|
+
};
|
|
2252
|
+
} catch (_unused2) {
|
|
2253
|
+
return;
|
|
2254
|
+
}
|
|
2255
|
+
};
|
|
2256
|
+
/**
|
|
2257
|
+
* Get related tags from commit map
|
|
2258
|
+
* @param commitToTags - Map of commit hash to tags
|
|
2259
|
+
* @param commitHash - The hash of the commit
|
|
2260
|
+
* @returns The related tags or an empty array if no tags are found
|
|
2261
|
+
*/
|
|
2262
|
+
var getRelatedTagsFromMap = (commitToTags, commitHash) => {
|
|
2263
|
+
return commitToTags.get(commitHash) || [];
|
|
2264
|
+
};
|
|
2265
|
+
/**
|
|
2266
|
+
* Get the commit related branch name.
|
|
2267
|
+
* @param repositoryPath - Local Git repository directory
|
|
2268
|
+
* @param commitHash - The hash of the commit
|
|
2269
|
+
* @returns The commit related branch name or undefined if not found
|
|
2270
|
+
*/
|
|
2271
|
+
var getRelatedBranches = async (repositoryPath, commitHash) => {
|
|
2272
|
+
try {
|
|
2273
|
+
const branches = await git.listBranches({
|
|
2274
|
+
fs,
|
|
2275
|
+
dir: repositoryPath
|
|
2276
|
+
});
|
|
2277
|
+
const relatedBranches = [];
|
|
2278
|
+
for (const branch of branches) try {
|
|
2279
|
+
if (await git.resolveRef({
|
|
2280
|
+
fs,
|
|
2281
|
+
dir: repositoryPath,
|
|
2282
|
+
ref: branch
|
|
2283
|
+
}) === commitHash) relatedBranches.push(branch);
|
|
2284
|
+
} catch (_unused3) {}
|
|
2285
|
+
return relatedBranches;
|
|
2286
|
+
} catch (_unused4) {
|
|
2287
|
+
return [];
|
|
2288
|
+
}
|
|
2289
|
+
};
|
|
2290
|
+
/**
|
|
2291
|
+
* Check if the repository has modified files (following RelaxVersioner logic).
|
|
2292
|
+
* Checks for staged files, unstaged files, and untracked files (respecting .gitignore).
|
|
2293
|
+
* @param repositoryPath - Local Git repository directory
|
|
2294
|
+
* @returns Modified files
|
|
2295
|
+
*/
|
|
2296
|
+
var getModifiedFiles = async (repositoryPath) => {
|
|
2297
|
+
try {
|
|
2298
|
+
return (await git.statusMatrix({
|
|
2299
|
+
fs,
|
|
2300
|
+
dir: repositoryPath
|
|
2301
|
+
})).filter(([, head, workdir, stage]) => workdir === 2 || stage === 2 || stage === 3 || head === 1 && workdir === 0 || head === 0 && workdir === 1);
|
|
2302
|
+
} catch (_unused5) {
|
|
2303
|
+
return [];
|
|
2304
|
+
}
|
|
2305
|
+
};
|
|
2306
|
+
var formatModifiedFile = (modifiedFile) => {
|
|
2307
|
+
return `'${modifiedFile[0]}':${modifiedFile[1]}:${modifiedFile[2]}:${modifiedFile[3]}`;
|
|
2308
|
+
};
|
|
2309
|
+
/**
|
|
2310
|
+
* Lookup version label recursively core analyzer
|
|
2311
|
+
* @param cwd - The directory to check
|
|
2312
|
+
* @param commit - The commit to lookup
|
|
2313
|
+
* @param reachedCommits - The map of reached commits
|
|
2314
|
+
* @param commitToTags - Map of commit hash to tags for performance
|
|
2315
|
+
* @returns The version or undefined if no version is found
|
|
2316
|
+
*/
|
|
2317
|
+
var lookupVersionLabelRecursive = async (cwd, commit, reachedCommits, commitToTags) => {
|
|
2318
|
+
const scheduledStack = [];
|
|
2319
|
+
let version = {
|
|
2320
|
+
major: 0,
|
|
2321
|
+
minor: 0,
|
|
2322
|
+
build: 1,
|
|
2323
|
+
original: "0.0.1"
|
|
2324
|
+
};
|
|
2325
|
+
let currentCommit = commit;
|
|
2326
|
+
while (true) {
|
|
2327
|
+
if (reachedCommits.has(currentCommit.hash)) {
|
|
2328
|
+
version = reachedCommits.get(currentCommit.hash);
|
|
2329
|
+
break;
|
|
2330
|
+
}
|
|
2331
|
+
const versionCandidates = getRelatedTagsFromMap(commitToTags, currentCommit.hash).filter((tag) => tag.version && isValidVersion(tag.version)).filter((tag) => tag.version.minor !== void 0).sort((a, b) => compareVersions(a.version, b.version));
|
|
2332
|
+
if (versionCandidates.length >= 1) {
|
|
2333
|
+
version = versionCandidates[0].version;
|
|
2334
|
+
reachedCommits.set(currentCommit.hash, version);
|
|
2335
|
+
break;
|
|
2336
|
+
}
|
|
2337
|
+
let parentCommits = [];
|
|
2338
|
+
try {
|
|
2339
|
+
const parentHashes = (await git.readCommit({
|
|
2340
|
+
fs,
|
|
2341
|
+
dir: cwd,
|
|
2342
|
+
oid: currentCommit.hash
|
|
2343
|
+
})).commit.parent || [];
|
|
2344
|
+
parentCommits = (await Promise.all(parentHashes.map((parentHash) => getCommit(cwd, parentHash)))).filter((ci) => ci !== void 0);
|
|
2345
|
+
} catch (_unused6) {}
|
|
2346
|
+
if (parentCommits.length === 0) {
|
|
2347
|
+
reachedCommits.set(currentCommit.hash, version);
|
|
2348
|
+
break;
|
|
2349
|
+
}
|
|
2350
|
+
scheduledStack.push({
|
|
2351
|
+
commit: currentCommit,
|
|
2352
|
+
parents: parentCommits
|
|
2353
|
+
});
|
|
2354
|
+
currentCommit = parentCommits[0];
|
|
2355
|
+
}
|
|
2356
|
+
while (scheduledStack.length >= 1) {
|
|
2357
|
+
const { commit: scheduledCommit, parents } = scheduledStack.pop();
|
|
2358
|
+
if (parents.length >= 2) for (let index = 1; index < parents.length; index++) {
|
|
2359
|
+
const alternateParentVersion = await lookupVersionLabelRecursive(cwd, parents[index], reachedCommits, commitToTags);
|
|
2360
|
+
if (alternateParentVersion && compareVersions(alternateParentVersion, version) < 0) version = alternateParentVersion;
|
|
2361
|
+
}
|
|
2362
|
+
version = incrementLastVersionComponent(version);
|
|
2363
|
+
reachedCommits.set(scheduledCommit.hash, version);
|
|
2364
|
+
}
|
|
2365
|
+
return version;
|
|
2366
|
+
};
|
|
2367
|
+
/**
|
|
2368
|
+
* Get default Git metadata from local repository.
|
|
2369
|
+
* @param repositoryPath - Local Git repository directory
|
|
2370
|
+
* @param checkWorkingDirectoryStatus - Check working directory status to increase version
|
|
2371
|
+
* @param logger - Logger instance
|
|
2372
|
+
* @returns The metadata object with git metadata
|
|
2373
|
+
*/
|
|
2374
|
+
var getGitMetadata = async (repositoryPath, checkWorkingDirectoryStatus, logger) => {
|
|
2375
|
+
const startTime = Date.now();
|
|
2376
|
+
const metadata = {};
|
|
2377
|
+
let gitRootPath;
|
|
2378
|
+
try {
|
|
2379
|
+
gitRootPath = await git.findRoot({
|
|
2380
|
+
fs,
|
|
2381
|
+
filepath: repositoryPath
|
|
2382
|
+
});
|
|
2383
|
+
} catch (_unused7) {
|
|
2384
|
+
logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
|
|
2385
|
+
return metadata;
|
|
2386
|
+
}
|
|
2387
|
+
try {
|
|
2388
|
+
const currentCommit = await getCurrentCommit(gitRootPath);
|
|
2389
|
+
if (!currentCommit) {
|
|
2390
|
+
logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
|
|
2391
|
+
return metadata;
|
|
2392
|
+
}
|
|
2393
|
+
const buildStart = Date.now();
|
|
2394
|
+
const commitToTags = await buildCompleteTagCache(gitRootPath, (tagName) => {
|
|
2395
|
+
const version = parseVersion(tagName);
|
|
2396
|
+
return version && isValidVersion(version) ? version : void 0;
|
|
2397
|
+
}, logger);
|
|
2398
|
+
logger.debug(`[screw-up] buildCompleteTagCache: ${Date.now() - buildStart}ms`);
|
|
2399
|
+
logger.debug(`Built tag map with ${commitToTags.size} commits`);
|
|
2400
|
+
let version = await lookupVersionLabelRecursive(gitRootPath, currentCommit, /* @__PURE__ */ new Map(), commitToTags);
|
|
2401
|
+
const gitMetadata = {
|
|
2402
|
+
tags: [],
|
|
2403
|
+
branches: []
|
|
2404
|
+
};
|
|
2405
|
+
metadata.git = gitMetadata;
|
|
2406
|
+
if (version) {
|
|
2407
|
+
if (checkWorkingDirectoryStatus) {
|
|
2408
|
+
const modifiedFiles = await getModifiedFiles(gitRootPath);
|
|
2409
|
+
if (modifiedFiles.length >= 1) {
|
|
2410
|
+
const newVersion = incrementLastVersionComponent(version);
|
|
2411
|
+
logger.debug(`Increased git version by detected modified items: ${formatVersion(version)} ---> ${formatVersion(newVersion)}, Files=[${modifiedFiles.map(formatModifiedFile).join(", ")}]`);
|
|
2412
|
+
version = newVersion;
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
const gitVersion = formatVersion(version);
|
|
2416
|
+
gitMetadata.version = gitVersion;
|
|
2417
|
+
metadata.version = gitVersion;
|
|
2418
|
+
}
|
|
2419
|
+
gitMetadata.commit = {
|
|
2420
|
+
hash: currentCommit.hash,
|
|
2421
|
+
shortHash: currentCommit.shortHash,
|
|
2422
|
+
date: dayjs(currentCommit.date).format("YYYY-MM-DDTHH:mm:ssZ"),
|
|
2423
|
+
message: currentCommit.message
|
|
2424
|
+
};
|
|
2425
|
+
gitMetadata.tags = getRelatedTagsFromMap(commitToTags, currentCommit.hash).map((tag) => tag.name);
|
|
2426
|
+
gitMetadata.branches = await getRelatedBranches(gitRootPath, currentCommit.hash);
|
|
2427
|
+
} catch (error) {
|
|
2428
|
+
logger.warn(`Failed to extract git metadata: ${error}`);
|
|
2429
|
+
}
|
|
2430
|
+
logger.debug(`[screw-up] Total getGitMetadata: ${Date.now() - startTime}ms`);
|
|
2431
|
+
return metadata;
|
|
2432
|
+
};
|
|
2433
|
+
/**
|
|
2434
|
+
* Get cached Git metadata fetcher function
|
|
2435
|
+
* @param targetDir - Target directory to resolve Git metadata
|
|
2436
|
+
* @param checkWorkingDirectoryStatus - Check working directory status
|
|
2437
|
+
* @param logger - Logger
|
|
2438
|
+
* @returns Git metadata fetcher function
|
|
2439
|
+
*/
|
|
2440
|
+
var getFetchGitMetadata = (targetDir, checkWorkingDirectoryStatus, logger) => {
|
|
2441
|
+
let cachedMetadata;
|
|
2442
|
+
return async () => {
|
|
2443
|
+
if (!cachedMetadata) cachedMetadata = await getGitMetadata(targetDir, checkWorkingDirectoryStatus, logger);
|
|
2444
|
+
return cachedMetadata;
|
|
2445
|
+
};
|
|
2446
|
+
};
|
|
2447
|
+
//#endregion
|
|
2448
|
+
//#region src/metadata-file.ts
|
|
2449
|
+
/**
|
|
2450
|
+
* Convert string key to valid TypeScript identifier
|
|
2451
|
+
* @param key - The key to convert
|
|
2452
|
+
* @returns Valid TypeScript identifier
|
|
2453
|
+
*/
|
|
2454
|
+
var sanitizeKey = (key) => {
|
|
2455
|
+
return key.replace(/[^a-zA-Z0-9_]/g, "_").replace(/^(\d)/, "_$1");
|
|
2456
|
+
};
|
|
2457
|
+
/**
|
|
2458
|
+
* Generate TypeScript metadata file content from package metadata
|
|
2459
|
+
* @param metadata - Package metadata
|
|
2460
|
+
* @param outputKeys - Array of keys to output
|
|
2461
|
+
* @returns TypeScript file content
|
|
2462
|
+
*/
|
|
2463
|
+
var generateMetadataFileContent = (metadata, outputKeys) => {
|
|
2464
|
+
const lines = [];
|
|
2465
|
+
lines.push("// @ts-nocheck");
|
|
2466
|
+
lines.push("// This file is auto-generated by screw-up plugin");
|
|
2467
|
+
lines.push("// Do not edit manually");
|
|
2468
|
+
lines.push("");
|
|
2469
|
+
for (const key of outputKeys) {
|
|
2470
|
+
const value = metadata[key];
|
|
2471
|
+
if (value) {
|
|
2472
|
+
const sanitizedKey = sanitizeKey(key);
|
|
2473
|
+
const escapedValue = JSON.stringify(value);
|
|
2474
|
+
lines.push(`export const ${sanitizedKey} = ${escapedValue};`);
|
|
2475
|
+
}
|
|
2476
|
+
}
|
|
2477
|
+
lines.push("");
|
|
2478
|
+
return lines.join("\n");
|
|
2479
|
+
};
|
|
2480
|
+
var writeFileIfChanged = async (filePath, content, description, logger) => {
|
|
2481
|
+
try {
|
|
2482
|
+
let shouldWrite = !existsSync(filePath);
|
|
2483
|
+
if (!shouldWrite) try {
|
|
2484
|
+
shouldWrite = await readFile(filePath, "utf-8") !== content;
|
|
2485
|
+
} catch (_unused) {
|
|
2486
|
+
shouldWrite = true;
|
|
2487
|
+
}
|
|
2488
|
+
if (shouldWrite) {
|
|
2489
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
2490
|
+
await writeFile(filePath, content);
|
|
2491
|
+
return true;
|
|
2492
|
+
} else return false;
|
|
2493
|
+
} catch (error) {
|
|
2494
|
+
logger.warn(`Failed to write ${description}: ${filePath}: ${error}`);
|
|
2495
|
+
return false;
|
|
2496
|
+
}
|
|
2497
|
+
};
|
|
2498
|
+
var ensureMetadataGitignore = async (metadataSourcePath, logger) => {
|
|
2499
|
+
const metadataDirectory = dirname(metadataSourcePath);
|
|
2500
|
+
const gitignorePath = join(metadataDirectory, ".gitignore");
|
|
2501
|
+
if (existsSync(gitignorePath)) return false;
|
|
2502
|
+
try {
|
|
2503
|
+
await mkdir(metadataDirectory, { recursive: true });
|
|
2504
|
+
await writeFile(gitignorePath, `# Auto-generated by screw-up plugin\n${basename(metadataSourcePath)}\n`);
|
|
2505
|
+
return true;
|
|
2506
|
+
} catch (error) {
|
|
2507
|
+
logger.warn(`Failed to write .gitignore for metadata source: ${gitignorePath}: ${error}`);
|
|
2508
|
+
return false;
|
|
2509
|
+
}
|
|
2510
|
+
};
|
|
2511
|
+
//#endregion
|
|
2512
|
+
export { collectWorkspaceSiblings as a, replacePeerDependenciesWildcards as c, require_dist as d, __exportAll as f, getFetchGitMetadata as i, resolvePackageMetadata as l, generateMetadataFileContent as n, createConsoleLogger as o, __toESM as p, writeFileIfChanged as r, findWorkspaceRoot as s, ensureMetadataGitignore as t, resolveRawPackageJsonObject as u };
|
|
2513
|
+
|
|
2514
|
+
//# sourceMappingURL=metadata-file-Djz8vanJ.js.map
|