screw-up 1.26.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.
Files changed (46) hide show
  1. package/dist/index.cjs +3014 -1096
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.mjs +770 -1113
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/main.cjs +3745 -1565
  6. package/dist/main.cjs.map +1 -1
  7. package/dist/main.mjs +1202 -1508
  8. package/dist/main.mjs.map +1 -1
  9. package/dist/metadata-file-Djz8vanJ.js +2514 -0
  10. package/dist/metadata-file-Djz8vanJ.js.map +1 -0
  11. package/dist/packageMetadata-B3dAY9Pw.js +29 -0
  12. package/dist/packageMetadata-B3dAY9Pw.js.map +1 -0
  13. package/dist/packageMetadata-BZlXZqjz.cjs +15 -0
  14. package/dist/packageMetadata-BwJnVnNu.cjs +55 -0
  15. package/dist/packageMetadata-BwJnVnNu.cjs.map +1 -0
  16. package/dist/src/analyzer.d.ts +38 -0
  17. package/dist/src/analyzer.d.ts.map +1 -0
  18. package/dist/src/cli-internal.d.ts +62 -0
  19. package/dist/src/cli-internal.d.ts.map +1 -0
  20. package/dist/src/cli.d.ts +13 -0
  21. package/dist/src/cli.d.ts.map +1 -0
  22. package/dist/src/default-import-fix.d.ts +22 -0
  23. package/dist/src/default-import-fix.d.ts.map +1 -0
  24. package/dist/src/fast-tags.d.ts +42 -0
  25. package/dist/src/fast-tags.d.ts.map +1 -0
  26. package/dist/src/generated/packageMetadata.d.ts +18 -0
  27. package/dist/src/generated/packageMetadata.d.ts.map +1 -0
  28. package/dist/src/git-operations.d.ts +69 -0
  29. package/dist/src/git-operations.d.ts.map +1 -0
  30. package/dist/src/index.d.ts +14 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/internal.d.ts +115 -0
  33. package/dist/src/internal.d.ts.map +1 -0
  34. package/dist/{main.d.ts → src/main.d.ts} +5 -3
  35. package/dist/src/main.d.ts.map +1 -0
  36. package/dist/src/metadata-file.d.ts +22 -0
  37. package/dist/src/metadata-file.d.ts.map +1 -0
  38. package/dist/{index.d.ts → src/types.d.ts} +72 -85
  39. package/dist/src/types.d.ts.map +1 -0
  40. package/dist/src/vite-plugin.d.ts +26 -0
  41. package/dist/src/vite-plugin.d.ts.map +1 -0
  42. package/package.json +19 -19
  43. package/dist/metadata-file-6Y1AngPB.cjs +0 -2358
  44. package/dist/metadata-file-6Y1AngPB.cjs.map +0 -1
  45. package/dist/metadata-file-B4RbKbol.js +0 -2343
  46. package/dist/metadata-file-B4RbKbol.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