@mnaoumov/typescript-lib 0.0.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/debug/package.json +4 -0
- package/LICENSE +21 -0
- package/README.md +7 -1
- package/dist/lib/cjs/@types/debug.d.cts +21 -0
- package/dist/lib/cjs/abort-controller.cjs +202 -0
- package/dist/lib/cjs/abort-controller.d.cts +135 -0
- package/dist/lib/cjs/aggregate-error.cjs +98 -0
- package/dist/lib/cjs/aggregate-error.d.cts +24 -0
- package/dist/lib/cjs/array-buffer.cjs +96 -0
- package/dist/lib/cjs/array-buffer.d.cts +16 -0
- package/dist/lib/cjs/array.cjs +134 -0
- package/dist/lib/cjs/array.d.cts +46 -0
- package/dist/lib/cjs/async-events.cjs +466 -0
- package/dist/lib/cjs/async-events.d.cts +456 -0
- package/dist/lib/cjs/async-operation-hook.cjs +113 -0
- package/dist/lib/cjs/async-operation-hook.d.cts +59 -0
- package/dist/lib/cjs/async.cjs +521 -0
- package/dist/lib/cjs/async.d.cts +414 -0
- package/dist/lib/cjs/beeper.cjs +126 -0
- package/dist/lib/cjs/beeper.d.cts +21 -0
- package/dist/lib/cjs/blob.cjs +160 -0
- package/dist/lib/cjs/blob.d.cts +59 -0
- package/dist/lib/cjs/bytes.cjs +114 -0
- package/dist/lib/cjs/bytes.d.cts +17 -0
- package/dist/lib/cjs/debug-controller.cjs +80 -0
- package/dist/lib/cjs/debug-controller.d.cts +87 -0
- package/dist/lib/cjs/debug.cjs +235 -0
- package/dist/lib/cjs/debug.d.cts +66 -0
- package/dist/lib/cjs/desktop-zip-extractor.cjs +215 -0
- package/dist/lib/cjs/desktop-zip-extractor.d.cts +95 -0
- package/dist/lib/cjs/disposable.cjs +414 -0
- package/dist/lib/cjs/disposable.d.cts +387 -0
- package/dist/lib/cjs/enum.cjs +100 -0
- package/dist/lib/cjs/enum.d.cts +24 -0
- package/dist/lib/cjs/error.cjs +297 -0
- package/dist/lib/cjs/error.d.cts +181 -0
- package/dist/lib/cjs/function.cjs +141 -0
- package/dist/lib/cjs/function.d.cts +128 -0
- package/dist/lib/cjs/html-element.cjs +341 -0
- package/dist/lib/cjs/html-element.d.cts +199 -0
- package/dist/lib/cjs/index.cjs +195 -0
- package/dist/lib/cjs/index.d.cts +33 -0
- package/dist/lib/cjs/jpeg-metadata.cjs +228 -0
- package/dist/lib/cjs/jpeg-metadata.d.cts +42 -0
- package/dist/lib/cjs/library.cjs +158 -0
- package/dist/lib/cjs/library.d.cts +96 -0
- package/dist/lib/cjs/object-utils.cjs +617 -0
- package/dist/lib/cjs/object-utils.d.cts +298 -0
- package/dist/lib/cjs/path.cjs +202 -0
- package/dist/lib/cjs/path.d.cts +154 -0
- package/dist/lib/cjs/reg-exp.cjs +254 -0
- package/dist/lib/cjs/reg-exp.d.cts +87 -0
- package/dist/lib/cjs/string.cjs +326 -0
- package/dist/lib/cjs/string.d.cts +361 -0
- package/dist/lib/cjs/transformers/date-transformer.cjs +129 -0
- package/dist/lib/cjs/transformers/date-transformer.d.cts +39 -0
- package/dist/lib/cjs/transformers/group-transformer.cjs +173 -0
- package/dist/lib/cjs/transformers/group-transformer.d.cts +70 -0
- package/dist/lib/cjs/transformers/index.cjs +123 -0
- package/dist/lib/cjs/transformers/index.d.cts +9 -0
- package/dist/lib/cjs/transformers/map-transformer.cjs +129 -0
- package/dist/lib/cjs/transformers/map-transformer.d.cts +41 -0
- package/dist/lib/cjs/transformers/set-transformer.cjs +129 -0
- package/dist/lib/cjs/transformers/set-transformer.d.cts +39 -0
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +127 -0
- package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +36 -0
- package/dist/lib/cjs/transformers/transformer.cjs +170 -0
- package/dist/lib/cjs/transformers/transformer.d.cts +70 -0
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +130 -0
- package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +42 -0
- package/dist/lib/cjs/transformers/typed-transformer.cjs +94 -0
- package/dist/lib/cjs/transformers/typed-transformer.d.cts +39 -0
- package/dist/lib/cjs/two-way-map.cjs +208 -0
- package/dist/lib/cjs/two-way-map.d.cts +101 -0
- package/dist/lib/cjs/type-guards.cjs +128 -0
- package/dist/lib/cjs/type-guards.d.cts +84 -0
- package/dist/lib/cjs/type.cjs +121 -0
- package/dist/lib/cjs/type.d.cts +122 -0
- package/dist/lib/cjs/typescript-lib-state.cjs +126 -0
- package/dist/lib/cjs/typescript-lib-state.d.cts +56 -0
- package/dist/lib/cjs/url.cjs +136 -0
- package/dist/lib/cjs/url.d.cts +74 -0
- package/dist/lib/cjs/value-provider.cjs +100 -0
- package/dist/lib/cjs/value-provider.d.cts +28 -0
- package/dist/lib/cjs/value-wrapper.cjs +144 -0
- package/dist/lib/cjs/value-wrapper.d.cts +47 -0
- package/dist/lib/esm/@types/debug.d.mts +21 -0
- package/dist/lib/esm/abort-controller.d.mts +135 -0
- package/dist/lib/esm/abort-controller.mjs +159 -0
- package/dist/lib/esm/aggregate-error.d.mts +24 -0
- package/dist/lib/esm/aggregate-error.mjs +60 -0
- package/dist/lib/esm/array-buffer.d.mts +16 -0
- package/dist/lib/esm/array-buffer.mjs +58 -0
- package/dist/lib/esm/array.d.mts +46 -0
- package/dist/lib/esm/array.mjs +93 -0
- package/dist/lib/esm/async-events.d.mts +456 -0
- package/dist/lib/esm/async-events.mjs +427 -0
- package/dist/lib/esm/async-operation-hook.d.mts +59 -0
- package/dist/lib/esm/async-operation-hook.mjs +71 -0
- package/dist/lib/esm/async.d.mts +414 -0
- package/dist/lib/esm/async.mjs +479 -0
- package/dist/lib/esm/beeper.d.mts +21 -0
- package/dist/lib/esm/beeper.mjs +88 -0
- package/dist/lib/esm/blob.d.mts +59 -0
- package/dist/lib/esm/blob.mjs +121 -0
- package/dist/lib/esm/bytes.d.mts +17 -0
- package/dist/lib/esm/bytes.mjs +76 -0
- package/dist/lib/esm/debug-controller.d.mts +87 -0
- package/dist/lib/esm/debug-controller.mjs +50 -0
- package/dist/lib/esm/debug.d.mts +66 -0
- package/dist/lib/esm/debug.mjs +185 -0
- package/dist/lib/esm/desktop-zip-extractor.d.mts +95 -0
- package/dist/lib/esm/desktop-zip-extractor.mjs +180 -0
- package/dist/lib/esm/disposable.d.mts +387 -0
- package/dist/lib/esm/disposable.mjs +360 -0
- package/dist/lib/esm/enum.d.mts +24 -0
- package/dist/lib/esm/enum.mjs +61 -0
- package/dist/lib/esm/error.d.mts +181 -0
- package/dist/lib/esm/error.mjs +248 -0
- package/dist/lib/esm/function.d.mts +128 -0
- package/dist/lib/esm/function.mjs +96 -0
- package/dist/lib/esm/html-element.d.mts +199 -0
- package/dist/lib/esm/html-element.mjs +291 -0
- package/dist/lib/esm/index.d.mts +33 -0
- package/dist/lib/esm/index.mjs +116 -0
- package/dist/lib/esm/jpeg-metadata.d.mts +42 -0
- package/dist/lib/esm/jpeg-metadata.mjs +189 -0
- package/dist/lib/esm/library.d.mts +96 -0
- package/dist/lib/esm/library.mjs +118 -0
- package/dist/lib/esm/object-utils.d.mts +298 -0
- package/dist/lib/esm/object-utils.mjs +567 -0
- package/dist/lib/esm/path.d.mts +154 -0
- package/dist/lib/esm/path.mjs +139 -0
- package/dist/lib/esm/reg-exp.d.mts +87 -0
- package/dist/lib/esm/reg-exp.mjs +213 -0
- package/dist/lib/esm/string.d.mts +361 -0
- package/dist/lib/esm/string.mjs +274 -0
- package/dist/lib/esm/transformers/date-transformer.d.mts +39 -0
- package/dist/lib/esm/transformers/date-transformer.mjs +91 -0
- package/dist/lib/esm/transformers/group-transformer.d.mts +70 -0
- package/dist/lib/esm/transformers/group-transformer.mjs +138 -0
- package/dist/lib/esm/transformers/index.d.mts +9 -0
- package/dist/lib/esm/transformers/index.mjs +68 -0
- package/dist/lib/esm/transformers/map-transformer.d.mts +41 -0
- package/dist/lib/esm/transformers/map-transformer.mjs +91 -0
- package/dist/lib/esm/transformers/set-transformer.d.mts +39 -0
- package/dist/lib/esm/transformers/set-transformer.mjs +91 -0
- package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +36 -0
- package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +89 -0
- package/dist/lib/esm/transformers/transformer.d.mts +70 -0
- package/dist/lib/esm/transformers/transformer.mjs +132 -0
- package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +42 -0
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +92 -0
- package/dist/lib/esm/transformers/typed-transformer.d.mts +39 -0
- package/dist/lib/esm/transformers/typed-transformer.mjs +56 -0
- package/dist/lib/esm/two-way-map.d.mts +101 -0
- package/dist/lib/esm/two-way-map.mjs +170 -0
- package/dist/lib/esm/type-guards.d.mts +84 -0
- package/dist/lib/esm/type-guards.mjs +85 -0
- package/dist/lib/esm/type.d.mts +122 -0
- package/dist/lib/esm/type.mjs +83 -0
- package/dist/lib/esm/typescript-lib-state.d.mts +56 -0
- package/dist/lib/esm/typescript-lib-state.mjs +84 -0
- package/dist/lib/esm/url.d.mts +74 -0
- package/dist/lib/esm/url.mjs +94 -0
- package/dist/lib/esm/value-provider.d.mts +28 -0
- package/dist/lib/esm/value-provider.mjs +62 -0
- package/dist/lib/esm/value-wrapper.d.mts +47 -0
- package/dist/lib/esm/value-wrapper.mjs +106 -0
- package/package.json +111 -13
- package/transformers/date-transformer/package.json +6 -0
- package/transformers/group-transformer/package.json +6 -0
- package/transformers/index/package.json +6 -0
- package/transformers/map-transformer/package.json +6 -0
- package/transformers/package.json +6 -0
- package/transformers/set-transformer/package.json +6 -0
- package/transformers/skip-private-property-transformer/package.json +6 -0
- package/transformers/transformer/package.json +6 -0
- package/transformers/two-way-map-transformer/package.json +6 -0
- package/transformers/typed-transformer/package.json +6 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return '/';
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: 'android'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
+
const existingProcess = globalThis.process;
|
|
24
|
+
|
|
25
|
+
if (!existingProcess) {
|
|
26
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
+
globalThis.process = browserProcess;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (existingProcess.versions?.node) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const existingProcessRecord = existingProcess;
|
|
36
|
+
|
|
37
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
+
existingProcessRecord[key] ??= value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
existingProcessRecord['browser'] = true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function keepName($unknown) {
|
|
45
|
+
return $unknown;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
(function initCjs() {
|
|
49
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
50
|
+
const globalThisRecord = globalThis;
|
|
51
|
+
ensureDisposeSymbols();
|
|
52
|
+
globalThisRecord['__name'] ??= keepName;
|
|
53
|
+
globalThisRecord['__extractDefault'] ??= extractDefault;
|
|
54
|
+
|
|
55
|
+
ensureBrowserProcess();
|
|
56
|
+
|
|
57
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
58
|
+
function extractDefault(module) {
|
|
59
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
60
|
+
}
|
|
61
|
+
})();
|
|
62
|
+
})();
|
|
63
|
+
|
|
64
|
+
"use strict";
|
|
65
|
+
var __defProp = Object.defineProperty;
|
|
66
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
67
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
68
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
69
|
+
var __export = (target, all) => {
|
|
70
|
+
for (var name in all)
|
|
71
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
72
|
+
};
|
|
73
|
+
var __copyProps = (to, from, except, desc) => {
|
|
74
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
75
|
+
for (let key of __getOwnPropNames(from))
|
|
76
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
77
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
78
|
+
}
|
|
79
|
+
return to;
|
|
80
|
+
};
|
|
81
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
82
|
+
var reg_exp_exports = {};
|
|
83
|
+
__export(reg_exp_exports, {
|
|
84
|
+
ALWAYS_MATCH_REG_EXP: () => ALWAYS_MATCH_REG_EXP,
|
|
85
|
+
NEVER_MATCH_REG_EXP: () => NEVER_MATCH_REG_EXP,
|
|
86
|
+
RegExpMergeFlagsConflictStrategy: () => RegExpMergeFlagsConflictStrategy,
|
|
87
|
+
escapeRegExp: () => escapeRegExp,
|
|
88
|
+
getMandatoryNamedGroup: () => getMandatoryNamedGroup,
|
|
89
|
+
getOptionalNamedGroup: () => getOptionalNamedGroup,
|
|
90
|
+
isValidRegExp: () => isValidRegExp,
|
|
91
|
+
oneOf: () => oneOf
|
|
92
|
+
});
|
|
93
|
+
module.exports = __toCommonJS(reg_exp_exports);
|
|
94
|
+
var import_type_guards = require('./type-guards.cjs');
|
|
95
|
+
var RegExpMergeFlagsConflictStrategy = /* @__PURE__ */ ((RegExpMergeFlagsConflictStrategy2) => {
|
|
96
|
+
RegExpMergeFlagsConflictStrategy2["Intersect"] = "Intersect";
|
|
97
|
+
RegExpMergeFlagsConflictStrategy2["Throw"] = "Throw";
|
|
98
|
+
RegExpMergeFlagsConflictStrategy2["Union"] = "Union";
|
|
99
|
+
return RegExpMergeFlagsConflictStrategy2;
|
|
100
|
+
})(RegExpMergeFlagsConflictStrategy || {});
|
|
101
|
+
function escapeRegExp($string) {
|
|
102
|
+
return $string.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
|
|
103
|
+
}
|
|
104
|
+
function getMandatoryNamedGroup(match, groupName) {
|
|
105
|
+
return (0, import_type_guards.ensureNonNullable)(getOptionalNamedGroup(match, groupName));
|
|
106
|
+
}
|
|
107
|
+
function getOptionalNamedGroup(match, groupName) {
|
|
108
|
+
return match.groups?.[groupName] ?? null;
|
|
109
|
+
}
|
|
110
|
+
function isValidRegExp($string) {
|
|
111
|
+
try {
|
|
112
|
+
new RegExp($string);
|
|
113
|
+
return true;
|
|
114
|
+
} catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function hasFlag(regExp, flag) {
|
|
119
|
+
return regExp.flags.includes(flag);
|
|
120
|
+
}
|
|
121
|
+
const ALWAYS_MATCH_REG_EXP = /(?:)/;
|
|
122
|
+
const NEVER_MATCH_REG_EXP = /.^/;
|
|
123
|
+
class RegExpFlagMerger {
|
|
124
|
+
/**
|
|
125
|
+
* Creates a new merger.
|
|
126
|
+
*
|
|
127
|
+
* @param regExps - The regexes whose flags are merged.
|
|
128
|
+
* @param strategy - The strategy to use when flags conflict.
|
|
129
|
+
*/
|
|
130
|
+
constructor(regExps, strategy) {
|
|
131
|
+
this.regExps = regExps;
|
|
132
|
+
this.strategy = strategy;
|
|
133
|
+
}
|
|
134
|
+
regExps;
|
|
135
|
+
strategy;
|
|
136
|
+
finalFlags = /* @__PURE__ */ new Set();
|
|
137
|
+
/**
|
|
138
|
+
* Computes the merged flag string for the configured regexes.
|
|
139
|
+
*
|
|
140
|
+
* @returns The merged flags joined into a single string.
|
|
141
|
+
*/
|
|
142
|
+
computeFlags() {
|
|
143
|
+
this.addSemanticFlags();
|
|
144
|
+
this.addUnicodeFlags();
|
|
145
|
+
this.addMetaFlags();
|
|
146
|
+
return [...this.finalFlags].join("");
|
|
147
|
+
}
|
|
148
|
+
addMetaFlags() {
|
|
149
|
+
const META_FLAGS = ["g", "d"];
|
|
150
|
+
for (const flag of META_FLAGS) {
|
|
151
|
+
if (this.regExps.some((regExp) => hasFlag(regExp, flag))) {
|
|
152
|
+
this.finalFlags.add(flag);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
addSemanticFlags() {
|
|
157
|
+
const SEMANTIC_FLAGS = ["i", "m", "s", "y"];
|
|
158
|
+
for (const flag of SEMANTIC_FLAGS) {
|
|
159
|
+
if (this.shouldPickFlag(flag)) {
|
|
160
|
+
this.finalFlags.add(flag);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
addUnicodeFlags() {
|
|
165
|
+
const countU = this.regExps.filter((regExp) => hasFlag(regExp, "u")).length;
|
|
166
|
+
const countV = this.regExps.filter((regExp) => hasFlag(regExp, "v")).length;
|
|
167
|
+
let shouldUseUFlag;
|
|
168
|
+
let shouldUseVFlag;
|
|
169
|
+
switch (this.strategy) {
|
|
170
|
+
/* v8 ignore stop */
|
|
171
|
+
case "Intersect" /* Intersect */: {
|
|
172
|
+
shouldUseUFlag = countU === this.regExps.length;
|
|
173
|
+
shouldUseVFlag = countV === this.regExps.length;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case "Throw" /* Throw */: {
|
|
177
|
+
const haveAllUFlag = countU === this.regExps.length;
|
|
178
|
+
const haveNoUFlag = countU === 0;
|
|
179
|
+
const haveAllVFlag = countV === this.regExps.length;
|
|
180
|
+
const haveNoVFlag = countV === 0;
|
|
181
|
+
if (!(haveAllUFlag || haveNoUFlag) || !(haveAllVFlag || haveNoVFlag)) {
|
|
182
|
+
throw new Error("Conflicting 'u'/'v' flags across patterns.");
|
|
183
|
+
}
|
|
184
|
+
shouldUseUFlag = haveAllUFlag;
|
|
185
|
+
shouldUseVFlag = haveAllVFlag;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case "Union" /* Union */: {
|
|
189
|
+
shouldUseUFlag = countU > 0;
|
|
190
|
+
shouldUseVFlag = countV > 0;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
default: {
|
|
194
|
+
(0, import_type_guards.assertNever)(this.strategy);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (shouldUseUFlag && shouldUseVFlag) {
|
|
198
|
+
(0, import_type_guards.assert)(this.strategy !== "Throw" /* Throw */, "Cannot combine both 'u'/'v' flags in one RegExp.");
|
|
199
|
+
shouldUseUFlag = false;
|
|
200
|
+
}
|
|
201
|
+
if (shouldUseUFlag) {
|
|
202
|
+
this.finalFlags.add("u");
|
|
203
|
+
}
|
|
204
|
+
if (shouldUseVFlag) {
|
|
205
|
+
this.finalFlags.add("v");
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
shouldPickFlag(flag) {
|
|
209
|
+
const count = this.regExps.filter((regExp) => hasFlag(regExp, flag)).length;
|
|
210
|
+
switch (this.strategy) {
|
|
211
|
+
/* v8 ignore stop */
|
|
212
|
+
case "Intersect" /* Intersect */: {
|
|
213
|
+
return count === this.regExps.length;
|
|
214
|
+
}
|
|
215
|
+
case "Throw" /* Throw */: {
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case "Union" /* Union */: {
|
|
219
|
+
return count > 0;
|
|
220
|
+
}
|
|
221
|
+
default: {
|
|
222
|
+
(0, import_type_guards.assertNever)(this.strategy);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const haveAllSameFlag = count === 0 || count === this.regExps.length;
|
|
226
|
+
if (!haveAllSameFlag) {
|
|
227
|
+
throw new Error(`Conflicting flag '${flag}' across patterns.`);
|
|
228
|
+
}
|
|
229
|
+
return count === this.regExps.length;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function oneOf(regExps, strategy = "Throw" /* Throw */) {
|
|
233
|
+
if (regExps.length === 0) {
|
|
234
|
+
return ALWAYS_MATCH_REG_EXP;
|
|
235
|
+
}
|
|
236
|
+
if (regExps.length === 1 && regExps[0] !== void 0) {
|
|
237
|
+
return regExps[0];
|
|
238
|
+
}
|
|
239
|
+
const source = regExps.map((regExp) => `(?:${regExp.source})`).join("|");
|
|
240
|
+
const flags = new RegExpFlagMerger(regExps, strategy).computeFlags();
|
|
241
|
+
return new RegExp(source, flags);
|
|
242
|
+
}
|
|
243
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
244
|
+
0 && (module.exports = {
|
|
245
|
+
ALWAYS_MATCH_REG_EXP,
|
|
246
|
+
NEVER_MATCH_REG_EXP,
|
|
247
|
+
RegExpMergeFlagsConflictStrategy,
|
|
248
|
+
escapeRegExp,
|
|
249
|
+
getMandatoryNamedGroup,
|
|
250
|
+
getOptionalNamedGroup,
|
|
251
|
+
isValidRegExp,
|
|
252
|
+
oneOf
|
|
253
|
+
});
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlZy1leHAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydE5ldmVyLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgbXVsdGlwbGUgcmVnZXggZmxhZ3MgaW50byBvbmUgYWx0ZXJuYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbGwgcmVnZXhlcy5cbiAgICovXG4gIEludGVyc2VjdCA9ICdJbnRlcnNlY3QnLFxuICAvKipcbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHJlZ2V4ZXMgaGF2ZSBjb25mbGljdGluZyBmbGFncy5cbiAgICovXG4gIFRocm93ID0gJ1Rocm93JyxcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbnkgcmVnZXguXG4gICAqL1xuICBVbmlvbiA9ICdVbmlvbidcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZyB0byBzYWZlbHkgdXNlIGl0IHdpdGhpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHByZWZpeGVkIHdpdGggYSBiYWNrc2xhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gTk9URTogV2UgY2FuJ3QgdXNlIGByZXBsYWNlQWxsKClgIGZyb20gYFN0cmluZy50c2AgaGVyZSBiZWNhdXNlIGl0IGludHJvZHVjZXMgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICByZXR1cm4gJHN0cmluZy5yZXBsYWNlQWxsKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgU3RyaW5nLnJhd2BcXCQmYCk7XG59XG5cbi8qKlxuICogUmVhZHMgYSBtYW5kYXRvcnkgbmFtZWQgY2FwdHVyZSBncm91cCBmcm9tIGEgcmVnZXggbWF0Y2guXG4gKlxuICogVXNlIHRoaXMgZm9yIGEgbmFtZWQgZ3JvdXAgdGhhdCBpcyBBTFdBWVMgcHJlc2VudCB3aGVuIHRoZSBwYXR0ZXJuIG1hdGNoZXMgXHUyMDE0IG5vdCB3cmFwcGVkIGluIGFuIG9wdGlvbmFsXG4gKiBgKD86XHUyMDI2KT9gIC8gYChcdTIwMjYpP2AuIFJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZyAod2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aCBtYXRjaCBzdWNoIGFzIGBcXHcqYCksXG4gKiB0aHJvd2luZyBpZiB0aGUgZ3JvdXAgXHUyMDE0IG9yIHRoZSBtYXRjaCdzIGBncm91cHNgIG9iamVjdCBcdTIwMTQgaXMgYWJzZW50LCBzbyBhIHBhdHRlcm4gY2hhbmdlIHRoYXQgZHJvcHMgdGhlXG4gKiBncm91cCBmYWlscyBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSB5aWVsZGluZyBhIHdyb25nIHZhbHVlLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYG1hdGNoLmdyb3Vwcz8uW25hbWVdID8/ICcnYDogZm9yIGEgbWFuZGF0b3J5IGdyb3VwIHRoYXQgZmFsbGJhY2sgaXMgYSBuZXZlci10YWtlbiAoZGVhZClcbiAqIGJyYW5jaCB0aGF0IGZhaWxzIGEgMTAwJS1icmFuY2ggY292ZXJhZ2UgZ2F0ZSwgd2hlcmVhcyB0aGUgdGhyb3cgaGVyZSBsaXZlcyBpbnNpZGUgYGVuc3VyZU5vbk51bGxhYmxlYFxuICogKGFscmVhZHkgY292ZXJlZCksIGxlYXZpbmcgbm8gaW5saW5lIGJyYW5jaCBhdCB0aGUgY2FsbCBzaXRlLiBGb3IgYSBncm91cCB0aGF0IG1heSBsZWdpdGltYXRlbHkgYmUgYWJzZW50LFxuICogdXNlIHtAbGluayBnZXRPcHRpb25hbE5hbWVkR3JvdXB9IGFuZCBkZWZhdWx0IGl0cyBgbnVsbGAgd2l0aCBgPz8gXHUyMDI2YC5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLlxuICogQHRocm93cyBXaGVuIHRoZSBuYW1lZCBncm91cCBpcyBhYnNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShnZXRPcHRpb25hbE5hbWVkR3JvdXAobWF0Y2gsIGdyb3VwTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuIG9wdGlvbmFsIG5hbWVkIGNhcHR1cmUgZ3JvdXAgZnJvbSBhIHJlZ2V4IG1hdGNoLCBkaXN0aW5ndWlzaGluZyBhbiBhYnNlbnQgZ3JvdXAgZnJvbSBhIHByZXNlbnRcbiAqIGVtcHR5IG9uZS5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcgd2hlbiB0aGUgZ3JvdXAgcGFydGljaXBhdGVkIGluIHRoZSBtYXRjaCBcdTIwMTQgd2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aFxuICogbWF0Y2ggc3VjaCBhcyBgXFx3KmAgXHUyMDE0IG9yIGBudWxsYCB3aGVuIHRoZSBncm91cCwgb3IgdGhlIG1hdGNoJ3MgYGdyb3Vwc2Agb2JqZWN0LCBpcyBhYnNlbnQgKGUuZy4gYW4gb3B0aW9uYWxcbiAqIGAoPzpcdTIwMjYpP2AgZ3JvdXAgdGhhdCBkaWQgbm90IG1hdGNoKS4gQmVjYXVzZSBgbnVsbGAgaXMgcmV0dXJuZWQgb25seSBmb3IgYSBnZW51aW5lbHktYWJzZW50IGdyb3VwLCBhXG4gKiBjYWxsZXIncyBgPz8gPGRlZmF1bHQ+YCBpcyBhIGxpdmUgYnJhbmNoIHJhdGhlciB0aGFuIHRoZSBkZWFkIG9uZSB0aGF0IGBtYXRjaC5ncm91cHM/LltuYW1lXSA/PyAnJ2AgbGVhdmVzXG4gKiBmb3IgYSBtYW5kYXRvcnkgZ3JvdXAuIEZvciBhIGdyb3VwIHRoYXQgbXVzdCBhbHdheXMgYmUgcHJlc2VudCwgdXNlIHtAbGluayBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwfS5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLCBvciBgbnVsbGAgd2hlbiB0aGUgZ3JvdXAgaXMgYWJzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uYWxOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICByZXR1cm4gbWF0Y2guZ3JvdXBzPy5bZ3JvdXBOYW1lXSA/PyBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmVnRXhwKCRzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoJHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNGbGFnKHJlZ0V4cDogUmVnRXhwLCBmbGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZ0V4cC5mbGFncy5pbmNsdWRlcyhmbGFnKTtcbn1cblxuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGFsd2F5cyBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgQUxXQVlTX01BVENIX1JFR19FWFAgPSAvKD86KS87XG5cbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBuZXZlciBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgTkVWRVJfTUFUQ0hfUkVHX0VYUCA9IC8uXi87XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBmbGFncyBvZiBtdWx0aXBsZSByZWdleGVzIGludG8gYSBzaW5nbGUgZmxhZyBzdHJpbmcsIGFwcGx5aW5nIGEgY29uZmxpY3Qgc3RyYXRlZ3kuXG4gKlxuICogVGhlIGNvb3BlcmF0aW5nIHBlci1mbGFnIGhlbHBlcnMgc2hhcmUgdGhlIHNhbWUgcmVnZXhlcywgc3RyYXRlZ3ksIGFuZCBhY2N1bXVsYXRlZCBmbGFnIHNldCwgc29cbiAqIHRoZXkgYXJlIGdyb3VwZWQgaGVyZSBhcyBtZXRob2RzIG92ZXIgdGhvc2UgZmllbGRzIHJhdGhlciB0aGFuIHRocmVhZGluZyB0aGUgc3RhdGUgdGhyb3VnaFxuICogcG9zaXRpb25hbCBhcmd1bWVudHMuXG4gKi9cbmNsYXNzIFJlZ0V4cEZsYWdNZXJnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbmFsRmxhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtZXJnZXIuXG4gICAqXG4gICAqIEBwYXJhbSByZWdFeHBzIC0gVGhlIHJlZ2V4ZXMgd2hvc2UgZmxhZ3MgYXJlIG1lcmdlZC5cbiAgICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGZsYWdzIGNvbmZsaWN0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVnRXhwczogUmVnRXhwW10sIHByaXZhdGUgcmVhZG9ubHkgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5KSB7fVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbWVyZ2VkIGZsYWcgc3RyaW5nIGZvciB0aGUgY29uZmlndXJlZCByZWdleGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbWVyZ2VkIGZsYWdzIGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBjb21wdXRlRmxhZ3MoKTogc3RyaW5nIHtcbiAgICB0aGlzLmFkZFNlbWFudGljRmxhZ3MoKTtcbiAgICB0aGlzLmFkZFVuaWNvZGVGbGFncygpO1xuICAgIHRoaXMuYWRkTWV0YUZsYWdzKCk7XG4gICAgcmV0dXJuIFsuLi50aGlzLmZpbmFsRmxhZ3NdLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNZXRhRmxhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgTUVUQV9GTEFHUyA9IFsnZycsICdkJ107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIE1FVEFfRkxBR1MpIHtcbiAgICAgIGlmICh0aGlzLnJlZ0V4cHMuc29tZSgocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgZmxhZykpKSB7XG4gICAgICAgIHRoaXMuZmluYWxGbGFncy5hZGQoZmxhZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZW1hbnRpY0ZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IFNFTUFOVElDX0ZMQUdTID0gWydpJywgJ20nLCAncycsICd5J107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIFNFTUFOVElDX0ZMQUdTKSB7XG4gICAgICBpZiAodGhpcy5zaG91bGRQaWNrRmxhZyhmbGFnKSkge1xuICAgICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKGZsYWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVW5pY29kZUZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50VSA9IHRoaXMucmVnRXhwcy5maWx0ZXIoKHJlZ0V4cCkgPT4gaGFzRmxhZyhyZWdFeHAsICd1JykpLmxlbmd0aDtcbiAgICBjb25zdCBjb3VudFYgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCAndicpKS5sZW5ndGg7XG5cbiAgICBsZXQgc2hvdWxkVXNlVUZsYWc6IGJvb2xlYW47XG4gICAgbGV0IHNob3VsZFVzZVZGbGFnOiBib29sZWFuO1xuXG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IGNvdW50cyB0aGUgaW1wbGljaXQgZGVmYXVsdCBicmFuY2ggYXMgdW5jb3ZlcmVkIGV2ZW4gd2hlbiBhbGwgZW51bSBjYXNlcyBhcmUgaGFuZGxlZC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3kpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LkludGVyc2VjdDoge1xuICAgICAgICBzaG91bGRVc2VVRmxhZyA9IGNvdW50VSA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICAgICAgc2hvdWxkVXNlVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBjb25zdCBoYXZlQWxsVUZsYWcgPSBjb3VudFUgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1VGbGFnID0gY291bnRVID09PSAwO1xuICAgICAgICBjb25zdCBoYXZlQWxsVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1ZGbGFnID0gY291bnRWID09PSAwO1xuXG4gICAgICAgIGlmICghKGhhdmVBbGxVRmxhZyB8fCBoYXZlTm9VRmxhZykgfHwgIShoYXZlQWxsVkZsYWcgfHwgaGF2ZU5vVkZsYWcpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25mbGljdGluZyBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgYWNyb3NzIHBhdHRlcm5zLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBoYXZlQWxsVUZsYWc7XG4gICAgICAgIHNob3VsZFVzZVZGbGFnID0gaGF2ZUFsbFZGbGFnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBjb3VudFUgPiAwO1xuICAgICAgICBzaG91bGRVc2VWRmxhZyA9IGNvdW50ViA+IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQuICovXG4gICAgICAgIGFzc2VydE5ldmVyKHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cblxuICAgIGlmIChzaG91bGRVc2VVRmxhZyAmJiBzaG91bGRVc2VWRmxhZykge1xuICAgICAgYXNzZXJ0KHRoaXMuc3RyYXRlZ3kgIT09IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93LCAnQ2Fubm90IGNvbWJpbmUgYm90aCBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgaW4gb25lIFJlZ0V4cC4nKTtcbiAgICAgIHNob3VsZFVzZVVGbGFnID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVzZVVGbGFnKSB7XG4gICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKCd1Jyk7XG4gICAgfVxuICAgIGlmIChzaG91bGRVc2VWRmxhZykge1xuICAgICAgdGhpcy5maW5hbEZsYWdzLmFkZCgndicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUGlja0ZsYWcoZmxhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCBmbGFnKSkubGVuZ3RoO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBjb3VudHMgdGhlIGltcGxpY2l0IGRlZmF1bHQgYnJhbmNoIGFzIHVuY292ZXJlZCBldmVuIHdoZW4gYWxsIGVudW0gY2FzZXMgYXJlIGhhbmRsZWQuICovXG4gICAgc3dpdGNoICh0aGlzLnN0cmF0ZWd5KSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5JbnRlcnNlY3Q6IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID09PSB0aGlzLnJlZ0V4cHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID4gMDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnN0cmF0ZWd5KTtcbiAgICAgIH1cbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG5cbiAgICBjb25zdCBoYXZlQWxsU2FtZUZsYWcgPSBjb3VudCA9PT0gMCB8fCBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICBpZiAoIWhhdmVBbGxTYW1lRmxhZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25mbGljdGluZyBmbGFnICcke2ZsYWd9JyBhY3Jvc3MgcGF0dGVybnMuYCk7XG4gICAgfVxuICAgIHJldHVybiBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgfVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgcmVnZXhlcyBpbnRvIG9uZSBhbHRlcm5hdGlvbiwgaGFuZGxpbmcgZmxhZ3MuXG4gKlxuICogQHBhcmFtIHJlZ0V4cHMgLSBUaGUgcmVnZXhlcyB0byBjb21iaW5lLlxuICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgZmxhZ3MgKGRlZmF1bHQ6IGBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd2ApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHJlZ2V4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lT2YoXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kgPSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd1xuKTogUmVnRXhwIHtcbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEFMV0FZU19NQVRDSF9SRUdfRVhQO1xuICB9XG5cbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAxICYmIHJlZ0V4cHNbMF0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZWdFeHBzWzBdO1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gcmVnRXhwcy5tYXAoKHJlZ0V4cCkgPT4gYCg/OiR7cmVnRXhwLnNvdXJjZX0pYCkuam9pbignfCcpO1xuICBjb25zdCBmbGFncyA9IG5ldyBSZWdFeHBGbGFnTWVyZ2VyKHJlZ0V4cHMsIHN0cmF0ZWd5KS5jb21wdXRlRmxhZ3MoKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoc291cmNlLCBmbGFncyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx5QkFJTztBQUtBLElBQUssbUNBQUwsa0JBQUtBLHNDQUFMO0FBSUwsRUFBQUEsa0NBQUEsZUFBWTtBQUlaLEVBQUFBLGtDQUFBLFdBQVE7QUFJUixFQUFBQSxrQ0FBQSxXQUFRO0FBWkUsU0FBQUE7QUFBQSxHQUFBO0FBcUJMLFNBQVMsYUFBYSxTQUF5QjtBQUVwRCxTQUFPLFFBQVEsV0FBVyx1QkFBdUIsT0FBTyxRQUFRO0FBQ2xFO0FBb0JPLFNBQVMsdUJBQXVCLE9BQXlCLFdBQTJCO0FBQ3pGLGFBQU8sc0NBQWtCLHNCQUFzQixPQUFPLFNBQVMsQ0FBQztBQUNsRTtBQWdCTyxTQUFTLHNCQUFzQixPQUF5QixXQUFrQztBQUMvRixTQUFPLE1BQU0sU0FBUyxTQUFTLEtBQUs7QUFDdEM7QUFRTyxTQUFTLGNBQWMsU0FBMEI7QUFDdEQsTUFBSTtBQUNGLFFBQUksT0FBTyxPQUFPO0FBQ2xCLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FB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
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/// <reference path="./library.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Contains utility functions for regular expressions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A strategy to use when merging multiple regex flags into one alternation.
|
|
9
|
+
*/
|
|
10
|
+
export declare enum RegExpMergeFlagsConflictStrategy {
|
|
11
|
+
/**
|
|
12
|
+
* Keep only the flags present in all regexes.
|
|
13
|
+
*/
|
|
14
|
+
Intersect = "Intersect",
|
|
15
|
+
/**
|
|
16
|
+
* Throw an error if the regexes have conflicting flags.
|
|
17
|
+
*/
|
|
18
|
+
Throw = "Throw",
|
|
19
|
+
/**
|
|
20
|
+
* Keep only the flags present in any regex.
|
|
21
|
+
*/
|
|
22
|
+
Union = "Union"
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Escapes special characters in a string to safely use it within a regular expression.
|
|
26
|
+
*
|
|
27
|
+
* @param $string - The string to escape.
|
|
28
|
+
* @returns The escaped string with special characters prefixed with a backslash.
|
|
29
|
+
*/
|
|
30
|
+
export declare function escapeRegExp($string: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Reads a mandatory named capture group from a regex match.
|
|
33
|
+
*
|
|
34
|
+
* Use this for a named group that is ALWAYS present when the pattern matches — not wrapped in an optional
|
|
35
|
+
* `(?:…)?` / `(…)?`. Returns the captured string (which may be `''` for a zero-width match such as `\w*`),
|
|
36
|
+
* throwing if the group — or the match's `groups` object — is absent, so a pattern change that drops the
|
|
37
|
+
* group fails loudly instead of silently yielding a wrong value.
|
|
38
|
+
*
|
|
39
|
+
* Prefer this over `match.groups?.[name] ?? ''`: for a mandatory group that fallback is a never-taken (dead)
|
|
40
|
+
* branch that fails a 100%-branch coverage gate, whereas the throw here lives inside `ensureNonNullable`
|
|
41
|
+
* (already covered), leaving no inline branch at the call site. For a group that may legitimately be absent,
|
|
42
|
+
* use {@link getOptionalNamedGroup} and default its `null` with `?? …`.
|
|
43
|
+
*
|
|
44
|
+
* @param match - The match returned by `RegExp.exec`, `String.matchAll`, or `String.match`.
|
|
45
|
+
* @param groupName - The name of the capture group to read.
|
|
46
|
+
* @returns The captured string.
|
|
47
|
+
* @throws When the named group is absent.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getMandatoryNamedGroup(match: RegExpMatchArray, groupName: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Reads an optional named capture group from a regex match, distinguishing an absent group from a present
|
|
52
|
+
* empty one.
|
|
53
|
+
*
|
|
54
|
+
* Returns the captured string when the group participated in the match — which may be `''` for a zero-width
|
|
55
|
+
* match such as `\w*` — or `null` when the group, or the match's `groups` object, is absent (e.g. an optional
|
|
56
|
+
* `(?:…)?` group that did not match). Because `null` is returned only for a genuinely-absent group, a
|
|
57
|
+
* caller's `?? <default>` is a live branch rather than the dead one that `match.groups?.[name] ?? ''` leaves
|
|
58
|
+
* for a mandatory group. For a group that must always be present, use {@link getMandatoryNamedGroup}.
|
|
59
|
+
*
|
|
60
|
+
* @param match - The match returned by `RegExp.exec`, `String.matchAll`, or `String.match`.
|
|
61
|
+
* @param groupName - The name of the capture group to read.
|
|
62
|
+
* @returns The captured string, or `null` when the group is absent.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getOptionalNamedGroup(match: RegExpMatchArray, groupName: string): null | string;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if a string is a valid regular expression.
|
|
67
|
+
*
|
|
68
|
+
* @param $string - The string to check.
|
|
69
|
+
* @returns `true` if the string is a valid regular expression, `false` otherwise.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isValidRegExp($string: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* A regular expression that always matches.
|
|
74
|
+
*/
|
|
75
|
+
export declare const ALWAYS_MATCH_REG_EXP: RegExp;
|
|
76
|
+
/**
|
|
77
|
+
* A regular expression that never matches.
|
|
78
|
+
*/
|
|
79
|
+
export declare const NEVER_MATCH_REG_EXP: RegExp;
|
|
80
|
+
/**
|
|
81
|
+
* Combine multiple regexes into one alternation, handling flags.
|
|
82
|
+
*
|
|
83
|
+
* @param regExps - The regexes to combine.
|
|
84
|
+
* @param strategy - The strategy to use when merging flags (default: `RegExpMergeFlagsConflictStrategy.Throw`).
|
|
85
|
+
* @returns The combined regex.
|
|
86
|
+
*/
|
|
87
|
+
export declare function oneOf(regExps: RegExp[], strategy?: RegExpMergeFlagsConflictStrategy): RegExp;
|