@jxsuite/studio 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{2020-xp8vnwma.js → 2020-n6tfwnda.js} +2 -2
- package/dist/chunks/{Overlay.dev-723bv0df.js → Overlay.dev-etqjwyf9.js} +4 -4
- package/dist/chunks/cf-account-picker-en86v7x7.js +163 -0
- package/dist/chunks/{content-source-t88vb2dr.js → content-source-48xg86wj.js} +17 -17
- package/dist/chunks/{convert-to-repeater-dhw1nrz9.js → convert-to-repeater-43tfn7cs.js} +24 -24
- package/dist/chunks/{entry-commands-6z6bhxg0.js → entry-commands-e63f1xc0.js} +20 -20
- package/dist/chunks/{extension-sections-3ydgjbdy.js → extension-sections-txv08xxg.js} +23 -23
- package/dist/chunks/{file-ops-rskmhxyq.js → file-ops-wbh4hhsx.js} +16 -16
- package/dist/chunks/{files-0cratsr0.js → files-3kfkwhk4.js} +25 -24
- package/dist/chunks/{focus-trap.esm-ggawf1hy.js → focus-trap.esm-9t2drp0g.js} +6 -5
- package/dist/chunks/{format-host-tgcmfs4p.js → format-host-w16q81tf.js} +2 -2
- package/dist/chunks/fs-events-hrrg328g.js +1 -1
- package/dist/chunks/{git-panel-0yywyk76.js → git-panel-532whr1y.js} +16 -15
- package/dist/chunks/{index-nj44jpzj.js → index-wcnt3r9g.js} +2 -2
- package/dist/chunks/{jx-validate-8q2g05x1.js → jx-validate-8er6gbxy.js} +3 -3
- package/dist/chunks/{layers-panel-z3tqe5cd.js → layers-panel-07hm7g5j.js} +19 -19
- package/dist/chunks/{monaco-setup-rws7k4br.js → monaco-setup-vx9bhp1d.js} +2 -2
- package/dist/chunks/{publish-panel-54jvhskq.js → publish-panel-v9st96ja.js} +11 -10
- package/dist/chunks/{quick-search-cgfmjwq5.js → quick-search-zccjp6gv.js} +26 -25
- package/dist/chunks/{right-panel-cqp8bc4v.js → right-panel-vm3b6kwy.js} +17 -17
- package/dist/chunks/{sp-overlay.dev-yztmtrs1.js → sp-overlay.dev-qgvhnxf4.js} +5 -5
- package/dist/chunks/{sp-tooltip.dev-xcvpnqr0.js → sp-tooltip.dev-4sastdnw.js} +3 -3
- package/dist/chunks/{studio-txwkm6p9.js → studio-0bq6eh7v.js} +2 -2
- package/dist/chunks/studio-1ngbejft.js +181 -0
- package/dist/chunks/{studio-gv8vvshc.js → studio-1wagb550.js} +3 -3
- package/dist/chunks/{studio-kjjsjak4.js → studio-2b946z26.js} +58 -57
- package/dist/chunks/{studio-4pqqxbrt.js → studio-3bqpr0zh.js} +16 -16
- package/dist/chunks/{studio-v38hmvx1.js → studio-4b5z1x43.js} +42 -8
- package/dist/chunks/{studio-9c4k4vhv.js → studio-4n2b5gzb.js} +4 -4
- package/dist/chunks/{studio-p8j86wag.js → studio-4r1pv6zf.js} +2 -2
- package/dist/chunks/{studio-mmv72a27.js → studio-5fx3g9jg.js} +29 -48
- package/dist/chunks/{studio-5rywrkxz.js → studio-5myknm0a.js} +42 -42
- package/dist/chunks/{studio-sf7zjgv1.js → studio-6yw4y3my.js} +3 -3
- package/dist/chunks/{studio-pdfjntbk.js → studio-950k0dx6.js} +35 -35
- package/dist/chunks/{studio-eenfkt4e.js → studio-ahn3pdgx.js} +5 -5
- package/dist/chunks/{studio-eesa1myv.js → studio-b55y6ewx.js} +9 -9
- package/dist/chunks/{studio-cb12yz9w.js → studio-cmb03bg5.js} +99 -1264
- package/dist/chunks/studio-dm19q43r.js +195 -0
- package/dist/chunks/{studio-ahjfdy6e.js → studio-ef49pnzx.js} +6 -6
- package/dist/chunks/{studio-wx5609xd.js → studio-ew0djmhg.js} +10 -10
- package/dist/chunks/{studio-9r6j5ev1.js → studio-f3wqjtk5.js} +4 -3
- package/dist/chunks/{studio-8swrjbny.js → studio-fbf92ckf.js} +14 -14
- package/dist/chunks/{studio-4q0wznzf.js → studio-gcye7qka.js} +442 -126
- package/dist/chunks/{studio-ex8zyp98.js → studio-gfgb8pe6.js} +23 -184
- package/dist/chunks/{studio-r1r7afxx.js → studio-jc994dnr.js} +24 -24
- package/dist/chunks/{studio-yxrkyv8a.js → studio-jkftxyvz.js} +52 -3416
- package/dist/chunks/{studio-hbtp0eh1.js → studio-msd847zn.js} +13 -13
- package/dist/chunks/{studio-kyk2v92a.js → studio-mtfnaqs9.js} +14 -14
- package/dist/chunks/{studio-vadzgkrz.js → studio-n6j9t10q.js} +2 -2
- package/dist/chunks/{studio-68n67094.js → studio-q9jd1a60.js} +4 -4
- package/dist/chunks/studio-qcy05dp8.js +1743 -0
- package/dist/chunks/{studio-htsf0w6m.js → studio-qjy2z9bv.js} +12 -30
- package/dist/chunks/{studio-2zkz8evn.js → studio-trxrabqf.js} +12 -12
- package/dist/chunks/{studio-5q69gfag.js → studio-x4qkdat5.js} +12 -11
- package/dist/chunks/studio-x813zp48.js +195 -0
- package/dist/chunks/{studio-1hbqnt19.js → studio-zqazsct2.js} +29 -29
- package/dist/chunks/{workspace-xpres40v.js → workspace-fjx52ryv.js} +4 -4
- package/dist/iframe-entry.js +34 -33
- package/dist/manifest.json +7 -0
- package/dist/studio.js +534 -546
- package/favicon.ico +0 -0
- package/index.html +1 -0
- package/package.json +15 -14
- package/src/about/about-modal.ts +4 -3
- package/src/files/files.ts +6 -4
- package/src/files/media-paths.ts +13 -42
- package/src/files/media-usage.ts +41 -131
- package/src/hosting/document.ts +2 -0
- package/src/hosting/layout.ts +8 -0
- package/src/new-project/import-tab.ts +37 -15
- package/src/new-project/location-fields.ts +8 -5
- package/src/panels/ai-chat/composer.ts +10 -0
- package/src/platforms/cloud.ts +241 -70
- package/src/publish/publish-panel.ts +62 -2
- package/src/services/ai-import-tools.ts +50 -12
- package/src/services/ai-models.ts +108 -1
- package/src/services/context-manager.ts +12 -1
- package/src/services/tool-executor.ts +11 -0
- package/src/settings/preferences-accounts.ts +193 -12
- package/src/settings/preferences-dialog.ts +75 -18
- package/src/types.ts +27 -3
- package/src/ui/ai-managed-connect.ts +62 -13
- package/src/ui/ai-model-picker.ts +29 -2
- package/src/ui/cf-account-picker.ts +200 -0
- package/styles/shell.css +36 -0
- package/dist/chunks/studio-bw5dz6km.js +0 -608
|
@@ -3010,7 +3010,25 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3010
3010
|
var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
|
|
3011
3011
|
var isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
|
|
3012
3012
|
var isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu);
|
|
3013
|
-
var isPathCharacter = RegExp.prototype.test.bind(/^[
|
|
3013
|
+
var isPathCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u);
|
|
3014
|
+
var isQueryFragmentCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u);
|
|
3015
|
+
var isUserinfoCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u);
|
|
3016
|
+
var BYTE_HEX = new Array(256);
|
|
3017
|
+
{
|
|
3018
|
+
const HEX_DIGITS = "0123456789ABCDEF";
|
|
3019
|
+
for (let i = 0;i < 256; i++) {
|
|
3020
|
+
BYTE_HEX[i] = "%" + HEX_DIGITS[i >> 4] + HEX_DIGITS[i & 15];
|
|
3021
|
+
}
|
|
3022
|
+
}
|
|
3023
|
+
function percentEncodeNonAscii(cp) {
|
|
3024
|
+
if (cp < 2048) {
|
|
3025
|
+
return BYTE_HEX[192 | cp >> 6] + BYTE_HEX[128 | cp & 63];
|
|
3026
|
+
}
|
|
3027
|
+
if (cp < 65536) {
|
|
3028
|
+
return BYTE_HEX[224 | cp >> 12] + BYTE_HEX[128 | cp >> 6 & 63] + BYTE_HEX[128 | cp & 63];
|
|
3029
|
+
}
|
|
3030
|
+
return BYTE_HEX[240 | cp >> 18] + BYTE_HEX[128 | cp >> 12 & 63] + BYTE_HEX[128 | cp >> 6 & 63] + BYTE_HEX[128 | cp & 63];
|
|
3031
|
+
}
|
|
3014
3032
|
function stringArrayToHexStripped(input) {
|
|
3015
3033
|
let acc = "";
|
|
3016
3034
|
let code = 0;
|
|
@@ -3035,91 +3053,122 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3035
3053
|
}
|
|
3036
3054
|
return acc;
|
|
3037
3055
|
}
|
|
3056
|
+
var isHextet = RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/);
|
|
3057
|
+
var isIPvFuture = RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/);
|
|
3058
|
+
var isZoneCharacter = RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/);
|
|
3038
3059
|
var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
|
|
3039
|
-
function
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
} else {
|
|
3049
|
-
output.error = true;
|
|
3050
|
-
return false;
|
|
3060
|
+
function isZoneIdentifier(zone) {
|
|
3061
|
+
if (zone.length === 0)
|
|
3062
|
+
return false;
|
|
3063
|
+
for (let i = 0;i < zone.length; i++) {
|
|
3064
|
+
if (isZoneCharacter(zone[i]))
|
|
3065
|
+
continue;
|
|
3066
|
+
if (zone[i] === "%" && i + 2 < zone.length && isHexPair(zone.slice(i + 1, i + 3))) {
|
|
3067
|
+
i += 2;
|
|
3068
|
+
continue;
|
|
3051
3069
|
}
|
|
3052
|
-
|
|
3070
|
+
return false;
|
|
3053
3071
|
}
|
|
3054
3072
|
return true;
|
|
3055
3073
|
}
|
|
3056
|
-
function
|
|
3057
|
-
let
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
let
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
if (cursor === ":") {
|
|
3070
|
-
if (endipv6Encountered === true) {
|
|
3071
|
-
endIpv6 = true;
|
|
3072
|
-
}
|
|
3073
|
-
if (!consume(buffer, address, output)) {
|
|
3074
|
-
break;
|
|
3075
|
-
}
|
|
3076
|
-
if (++tokenCount > 7) {
|
|
3077
|
-
output.error = true;
|
|
3078
|
-
break;
|
|
3079
|
-
}
|
|
3080
|
-
if (i > 0 && input[i - 1] === ":") {
|
|
3081
|
-
endipv6Encountered = true;
|
|
3082
|
-
}
|
|
3083
|
-
address.push(":");
|
|
3084
|
-
continue;
|
|
3085
|
-
} else if (cursor === "%") {
|
|
3086
|
-
if (!consume(buffer, address, output)) {
|
|
3087
|
-
break;
|
|
3074
|
+
function compressIPv6ZeroRun(hextets) {
|
|
3075
|
+
let bestStart = -1;
|
|
3076
|
+
let bestLength = 0;
|
|
3077
|
+
let runStart = -1;
|
|
3078
|
+
let runLength = 0;
|
|
3079
|
+
for (let i = 0;i < hextets.length; i++) {
|
|
3080
|
+
if (hextets[i] === "0") {
|
|
3081
|
+
if (runStart === -1)
|
|
3082
|
+
runStart = i;
|
|
3083
|
+
runLength++;
|
|
3084
|
+
if (runLength > bestLength) {
|
|
3085
|
+
bestLength = runLength;
|
|
3086
|
+
bestStart = runStart;
|
|
3088
3087
|
}
|
|
3089
|
-
consume = consumeIsZone;
|
|
3090
3088
|
} else {
|
|
3091
|
-
|
|
3092
|
-
|
|
3089
|
+
runStart = -1;
|
|
3090
|
+
runLength = 0;
|
|
3093
3091
|
}
|
|
3094
3092
|
}
|
|
3095
|
-
if (
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3093
|
+
if (bestLength < 2)
|
|
3094
|
+
return hextets.join(":");
|
|
3095
|
+
const head = hextets.slice(0, bestStart).join(":");
|
|
3096
|
+
const tail = hextets.slice(bestStart + bestLength).join(":");
|
|
3097
|
+
return head + "::" + tail;
|
|
3098
|
+
}
|
|
3099
|
+
function normalizeIPv6Address(input) {
|
|
3100
|
+
const compression = input.indexOf("::");
|
|
3101
|
+
if (compression !== -1 && input.indexOf("::", compression + 1) !== -1)
|
|
3102
|
+
return;
|
|
3103
|
+
const left = compression === -1 ? input.split(":") : input.slice(0, compression).split(":");
|
|
3104
|
+
const right = compression === -1 ? [] : input.slice(compression + 2).split(":");
|
|
3105
|
+
if (compression !== -1) {
|
|
3106
|
+
if (left.length === 1 && left[0] === "")
|
|
3107
|
+
left.length = 0;
|
|
3108
|
+
if (right.length === 1 && right[0] === "")
|
|
3109
|
+
right.length = 0;
|
|
3110
|
+
}
|
|
3111
|
+
const parts = left.concat(right);
|
|
3112
|
+
let hextetCount = 0;
|
|
3113
|
+
for (let i = 0;i < parts.length; i++) {
|
|
3114
|
+
const part = parts[i];
|
|
3115
|
+
if (part === "")
|
|
3116
|
+
return;
|
|
3117
|
+
if (part.indexOf(".") !== -1) {
|
|
3118
|
+
if (i !== parts.length - 1 || compression !== -1 && right.length === 0 || !isIPv4(part))
|
|
3119
|
+
return;
|
|
3120
|
+
hextetCount += 2;
|
|
3121
|
+
continue;
|
|
3102
3122
|
}
|
|
3123
|
+
if (!isHextet(part))
|
|
3124
|
+
return;
|
|
3125
|
+
parts[i] = parseInt(part, 16).toString(16);
|
|
3126
|
+
hextetCount++;
|
|
3103
3127
|
}
|
|
3104
|
-
|
|
3105
|
-
|
|
3128
|
+
if (compression === -1) {
|
|
3129
|
+
if (hextetCount !== 8)
|
|
3130
|
+
return;
|
|
3131
|
+
return compressIPv6ZeroRun(parts);
|
|
3132
|
+
}
|
|
3133
|
+
if (hextetCount >= 8)
|
|
3134
|
+
return;
|
|
3135
|
+
const expanded = parts.slice(0, left.length);
|
|
3136
|
+
for (let i = hextetCount;i < 8; i++)
|
|
3137
|
+
expanded.push("0");
|
|
3138
|
+
for (let i = left.length;i < parts.length; i++)
|
|
3139
|
+
expanded.push(parts[i]);
|
|
3140
|
+
return compressIPv6ZeroRun(expanded);
|
|
3106
3141
|
}
|
|
3107
3142
|
function normalizeIPv6(host) {
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
}
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3143
|
+
const bracketed = host[0] === "[" && host[host.length - 1] === "]";
|
|
3144
|
+
const hasBracket = host[0] === "[" || host[host.length - 1] === "]";
|
|
3145
|
+
if (hasBracket && !bracketed)
|
|
3146
|
+
return { host, isIPV6: false, error: true };
|
|
3147
|
+
let input = bracketed ? host.slice(1, -1) : host;
|
|
3148
|
+
if (bracketed && isIPvFuture(input)) {
|
|
3149
|
+
input = input.toLowerCase();
|
|
3150
|
+
return { host: `[${input}]`, escapedHost: input, isIPV6: false, isIPVFuture: true };
|
|
3151
|
+
}
|
|
3152
|
+
if (findToken(input, ":") < 2) {
|
|
3153
|
+
return { host, isIPV6: false, error: bracketed };
|
|
3154
|
+
}
|
|
3155
|
+
let zoneIdentifier = "";
|
|
3156
|
+
const zoneSeparator = input.indexOf("%");
|
|
3157
|
+
if (zoneSeparator !== -1) {
|
|
3158
|
+
const separatorLength = input.slice(zoneSeparator, zoneSeparator + 3).toLowerCase() === "%25" ? 3 : 1;
|
|
3159
|
+
zoneIdentifier = input.slice(zoneSeparator + separatorLength);
|
|
3160
|
+
if (!isZoneIdentifier(zoneIdentifier))
|
|
3161
|
+
return { host, isIPV6: false, error: true };
|
|
3162
|
+
input = input.slice(0, zoneSeparator);
|
|
3163
|
+
}
|
|
3164
|
+
const address = normalizeIPv6Address(input);
|
|
3165
|
+
if (address === undefined)
|
|
3166
|
+
return { host, isIPV6: false, error: true };
|
|
3167
|
+
return {
|
|
3168
|
+
host: address + (zoneIdentifier ? "%" + zoneIdentifier : ""),
|
|
3169
|
+
escapedHost: address + (zoneIdentifier ? "%25" + zoneIdentifier : ""),
|
|
3170
|
+
isIPV6: true
|
|
3171
|
+
};
|
|
3123
3172
|
}
|
|
3124
3173
|
function findToken(str, token) {
|
|
3125
3174
|
let ind = 0;
|
|
@@ -3239,7 +3288,8 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3239
3288
|
function normalizePathEncoding(input) {
|
|
3240
3289
|
let output = "";
|
|
3241
3290
|
for (let i = 0;i < input.length; i++) {
|
|
3242
|
-
|
|
3291
|
+
const ch = input[i];
|
|
3292
|
+
if (ch === "%" && i + 2 < input.length) {
|
|
3243
3293
|
const hex = input.slice(i + 1, i + 3);
|
|
3244
3294
|
if (isHexPair(hex)) {
|
|
3245
3295
|
const normalizedHex = hex.toUpperCase();
|
|
@@ -3253,10 +3303,152 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3253
3303
|
continue;
|
|
3254
3304
|
}
|
|
3255
3305
|
}
|
|
3256
|
-
if (isPathCharacter(
|
|
3257
|
-
output +=
|
|
3306
|
+
if (isPathCharacter(ch)) {
|
|
3307
|
+
output += ch;
|
|
3308
|
+
} else {
|
|
3309
|
+
const code = input.charCodeAt(i);
|
|
3310
|
+
if (code < 128) {
|
|
3311
|
+
output += isEscapeSafe(code) ? ch : BYTE_HEX[code];
|
|
3312
|
+
} else if (code < 55296 || code > 57343) {
|
|
3313
|
+
output += percentEncodeNonAscii(code);
|
|
3314
|
+
} else if (code <= 56319 && i + 1 < input.length) {
|
|
3315
|
+
const low = input.charCodeAt(i + 1);
|
|
3316
|
+
if (low >= 56320 && low <= 57343) {
|
|
3317
|
+
output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
|
|
3318
|
+
i++;
|
|
3319
|
+
} else {
|
|
3320
|
+
output += percentEncodeNonAscii(65533);
|
|
3321
|
+
}
|
|
3322
|
+
} else {
|
|
3323
|
+
output += percentEncodeNonAscii(65533);
|
|
3324
|
+
}
|
|
3325
|
+
}
|
|
3326
|
+
}
|
|
3327
|
+
return output;
|
|
3328
|
+
}
|
|
3329
|
+
function serializePathEncoding(input, pathNoScheme = false) {
|
|
3330
|
+
let output = "";
|
|
3331
|
+
let firstSegment = pathNoScheme && input[0] !== "/";
|
|
3332
|
+
for (let i = 0;i < input.length; i++) {
|
|
3333
|
+
const ch = input[i];
|
|
3334
|
+
if (ch === "%" && i + 2 < input.length) {
|
|
3335
|
+
const hex = input.slice(i + 1, i + 3);
|
|
3336
|
+
if (isHexPair(hex)) {
|
|
3337
|
+
output += "%" + hex.toUpperCase();
|
|
3338
|
+
i += 2;
|
|
3339
|
+
continue;
|
|
3340
|
+
}
|
|
3341
|
+
}
|
|
3342
|
+
if (ch === "/") {
|
|
3343
|
+
firstSegment = false;
|
|
3344
|
+
}
|
|
3345
|
+
if (isPathCharacter(ch) && (ch !== ":" || !firstSegment)) {
|
|
3346
|
+
output += ch;
|
|
3347
|
+
} else {
|
|
3348
|
+
const code = input.charCodeAt(i);
|
|
3349
|
+
if (code < 128) {
|
|
3350
|
+
output += BYTE_HEX[code];
|
|
3351
|
+
} else if (code < 55296 || code > 57343) {
|
|
3352
|
+
output += percentEncodeNonAscii(code);
|
|
3353
|
+
} else if (code <= 56319 && i + 1 < input.length) {
|
|
3354
|
+
const low = input.charCodeAt(i + 1);
|
|
3355
|
+
if (low >= 56320 && low <= 57343) {
|
|
3356
|
+
output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
|
|
3357
|
+
i++;
|
|
3358
|
+
} else {
|
|
3359
|
+
output += percentEncodeNonAscii(65533);
|
|
3360
|
+
}
|
|
3361
|
+
} else {
|
|
3362
|
+
output += percentEncodeNonAscii(65533);
|
|
3363
|
+
}
|
|
3364
|
+
}
|
|
3365
|
+
}
|
|
3366
|
+
return output;
|
|
3367
|
+
}
|
|
3368
|
+
function encodeComponent(input, isAllowed) {
|
|
3369
|
+
let output = "";
|
|
3370
|
+
for (let i = 0;i < input.length; i++) {
|
|
3371
|
+
const ch = input[i];
|
|
3372
|
+
if (ch === "%" && i + 2 < input.length) {
|
|
3373
|
+
const hex = input.slice(i + 1, i + 3);
|
|
3374
|
+
if (isHexPair(hex)) {
|
|
3375
|
+
output += "%" + hex.toUpperCase();
|
|
3376
|
+
i += 2;
|
|
3377
|
+
continue;
|
|
3378
|
+
}
|
|
3379
|
+
}
|
|
3380
|
+
if (isAllowed(ch)) {
|
|
3381
|
+
output += ch;
|
|
3382
|
+
} else {
|
|
3383
|
+
const code = input.charCodeAt(i);
|
|
3384
|
+
if (code < 128) {
|
|
3385
|
+
output += BYTE_HEX[code];
|
|
3386
|
+
} else if (code < 55296 || code > 57343) {
|
|
3387
|
+
output += percentEncodeNonAscii(code);
|
|
3388
|
+
} else if (code <= 56319 && i + 1 < input.length) {
|
|
3389
|
+
const low = input.charCodeAt(i + 1);
|
|
3390
|
+
if (low >= 56320 && low <= 57343) {
|
|
3391
|
+
output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
|
|
3392
|
+
i++;
|
|
3393
|
+
} else {
|
|
3394
|
+
output += percentEncodeNonAscii(65533);
|
|
3395
|
+
}
|
|
3396
|
+
} else {
|
|
3397
|
+
output += percentEncodeNonAscii(65533);
|
|
3398
|
+
}
|
|
3399
|
+
}
|
|
3400
|
+
}
|
|
3401
|
+
return output;
|
|
3402
|
+
}
|
|
3403
|
+
function encodeUserinfo(input) {
|
|
3404
|
+
return encodeComponent(input, isUserinfoCharacter);
|
|
3405
|
+
}
|
|
3406
|
+
function encodeQuery(input) {
|
|
3407
|
+
return encodeComponent(input, isQueryFragmentCharacter);
|
|
3408
|
+
}
|
|
3409
|
+
function encodeFragment(input) {
|
|
3410
|
+
return encodeComponent(input, isQueryFragmentCharacter);
|
|
3411
|
+
}
|
|
3412
|
+
function isEscapeSafe(cp) {
|
|
3413
|
+
return cp >= 48 && cp <= 57 || cp >= 65 && cp <= 90 || cp >= 97 && cp <= 122 || cp === 42 || cp === 43 || cp === 45 || cp === 46 || cp === 47 || cp === 64 || cp === 95;
|
|
3414
|
+
}
|
|
3415
|
+
function normalizeQueryFragmentEncoding(input) {
|
|
3416
|
+
let output = "";
|
|
3417
|
+
for (let i = 0;i < input.length; i++) {
|
|
3418
|
+
const ch = input[i];
|
|
3419
|
+
if (ch === "%" && i + 2 < input.length) {
|
|
3420
|
+
const hex = input.slice(i + 1, i + 3);
|
|
3421
|
+
if (isHexPair(hex)) {
|
|
3422
|
+
const normalizedHex = hex.toUpperCase();
|
|
3423
|
+
const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
|
|
3424
|
+
if (isUnreserved(decoded)) {
|
|
3425
|
+
output += decoded;
|
|
3426
|
+
} else {
|
|
3427
|
+
output += "%" + normalizedHex;
|
|
3428
|
+
}
|
|
3429
|
+
i += 2;
|
|
3430
|
+
continue;
|
|
3431
|
+
}
|
|
3432
|
+
}
|
|
3433
|
+
if (isQueryFragmentCharacter(ch)) {
|
|
3434
|
+
output += ch;
|
|
3258
3435
|
} else {
|
|
3259
|
-
|
|
3436
|
+
const code = input.charCodeAt(i);
|
|
3437
|
+
if (code < 128) {
|
|
3438
|
+
output += isEscapeSafe(code) ? ch : BYTE_HEX[code];
|
|
3439
|
+
} else if (code < 55296 || code > 57343) {
|
|
3440
|
+
output += percentEncodeNonAscii(code);
|
|
3441
|
+
} else if (code <= 56319 && i + 1 < input.length) {
|
|
3442
|
+
const low = input.charCodeAt(i + 1);
|
|
3443
|
+
if (low >= 56320 && low <= 57343) {
|
|
3444
|
+
output += percentEncodeNonAscii(65536 + (code - 55296 << 10) + (low - 56320));
|
|
3445
|
+
i++;
|
|
3446
|
+
} else {
|
|
3447
|
+
output += percentEncodeNonAscii(65533);
|
|
3448
|
+
}
|
|
3449
|
+
} else {
|
|
3450
|
+
output += percentEncodeNonAscii(65533);
|
|
3451
|
+
}
|
|
3260
3452
|
}
|
|
3261
3453
|
}
|
|
3262
3454
|
return output;
|
|
@@ -3279,14 +3471,18 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3279
3471
|
function recomposeAuthority(component) {
|
|
3280
3472
|
const uriTokens = [];
|
|
3281
3473
|
if (component.userinfo !== undefined) {
|
|
3282
|
-
uriTokens.push(component.userinfo);
|
|
3474
|
+
uriTokens.push(encodeUserinfo(component.userinfo));
|
|
3283
3475
|
uriTokens.push("@");
|
|
3284
3476
|
}
|
|
3285
3477
|
if (component.host !== undefined) {
|
|
3286
|
-
let host =
|
|
3478
|
+
let host = component.host;
|
|
3287
3479
|
if (!isIPv4(host)) {
|
|
3288
|
-
|
|
3289
|
-
if (ipV6res.isIPV6
|
|
3480
|
+
let ipV6res = normalizeIPv6(host);
|
|
3481
|
+
if (ipV6res.isIPV6 !== true && ipV6res.isIPVFuture !== true) {
|
|
3482
|
+
host = normalizePercentEncoding(host, true);
|
|
3483
|
+
ipV6res = normalizeIPv6(host);
|
|
3484
|
+
}
|
|
3485
|
+
if (ipV6res.isIPV6 === true || ipV6res.isIPVFuture === true) {
|
|
3290
3486
|
host = `[${ipV6res.escapedHost}]`;
|
|
3291
3487
|
} else {
|
|
3292
3488
|
host = reescapeHostDelimiters(host, false);
|
|
@@ -3306,6 +3502,11 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3306
3502
|
reescapeHostDelimiters,
|
|
3307
3503
|
normalizePercentEncoding,
|
|
3308
3504
|
normalizePathEncoding,
|
|
3505
|
+
serializePathEncoding,
|
|
3506
|
+
normalizeQueryFragmentEncoding,
|
|
3507
|
+
encodeUserinfo,
|
|
3508
|
+
encodeQuery,
|
|
3509
|
+
encodeFragment,
|
|
3309
3510
|
escapePreservingEscapes,
|
|
3310
3511
|
removeDotSegments,
|
|
3311
3512
|
isIPv4,
|
|
@@ -3318,7 +3519,7 @@ var require_utils = __commonJS(function(exports, module) {
|
|
|
3318
3519
|
// ../../node_modules/fast-uri/lib/schemes.js
|
|
3319
3520
|
var require_schemes = __commonJS(function(exports, module) {
|
|
3320
3521
|
var { isUUID } = require_utils();
|
|
3321
|
-
var URN_REG =
|
|
3522
|
+
var URN_REG = /^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu;
|
|
3322
3523
|
var supportedSchemeNames = [
|
|
3323
3524
|
"http",
|
|
3324
3525
|
"https",
|
|
@@ -3373,9 +3574,10 @@ var require_schemes = __commonJS(function(exports, module) {
|
|
|
3373
3574
|
wsComponent.secure = undefined;
|
|
3374
3575
|
}
|
|
3375
3576
|
if (wsComponent.resourceName) {
|
|
3376
|
-
const
|
|
3577
|
+
const queryIndex = wsComponent.resourceName.indexOf("?");
|
|
3578
|
+
const path = queryIndex === -1 ? wsComponent.resourceName : wsComponent.resourceName.slice(0, queryIndex);
|
|
3377
3579
|
wsComponent.path = path && path !== "/" ? path : undefined;
|
|
3378
|
-
wsComponent.query =
|
|
3580
|
+
wsComponent.query = queryIndex === -1 ? undefined : wsComponent.resourceName.slice(queryIndex + 1);
|
|
3379
3581
|
wsComponent.resourceName = undefined;
|
|
3380
3582
|
}
|
|
3381
3583
|
wsComponent.fragment = undefined;
|
|
@@ -3387,7 +3589,7 @@ var require_schemes = __commonJS(function(exports, module) {
|
|
|
3387
3589
|
return urnComponent;
|
|
3388
3590
|
}
|
|
3389
3591
|
const matches = urnComponent.path.match(URN_REG);
|
|
3390
|
-
if (matches) {
|
|
3592
|
+
if (matches && matches[0] === urnComponent.path) {
|
|
3391
3593
|
const scheme = options.scheme || urnComponent.scheme || "urn";
|
|
3392
3594
|
urnComponent.nid = matches[1].toLowerCase();
|
|
3393
3595
|
urnComponent.nss = matches[2];
|
|
@@ -3491,8 +3693,17 @@ var require_schemes = __commonJS(function(exports, module) {
|
|
|
3491
3693
|
|
|
3492
3694
|
// ../../node_modules/fast-uri/index.js
|
|
3493
3695
|
var require_fast_uri = __commonJS(function(exports, module) {
|
|
3494
|
-
var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding,
|
|
3696
|
+
var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, serializePathEncoding, normalizeQueryFragmentEncoding, encodeQuery, encodeFragment, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
|
|
3495
3697
|
var { SCHEMES, getSchemeHandler } = require_schemes();
|
|
3698
|
+
var VALID_SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*$/u;
|
|
3699
|
+
var MALFORMED_SCHEME_ERROR = "URI scheme is malformed.";
|
|
3700
|
+
function decodeValidScheme(scheme) {
|
|
3701
|
+
const decodedScheme = unescape(String(scheme));
|
|
3702
|
+
if (!VALID_SCHEME.test(decodedScheme)) {
|
|
3703
|
+
throw new TypeError(MALFORMED_SCHEME_ERROR);
|
|
3704
|
+
}
|
|
3705
|
+
return decodedScheme;
|
|
3706
|
+
}
|
|
3496
3707
|
function normalize(uri, options) {
|
|
3497
3708
|
if (typeof uri === "string") {
|
|
3498
3709
|
uri = normalizeString(uri, options);
|
|
@@ -3503,7 +3714,34 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3503
3714
|
}
|
|
3504
3715
|
function resolve(baseURI, relativeURI, options) {
|
|
3505
3716
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
3506
|
-
const
|
|
3717
|
+
const {
|
|
3718
|
+
parsed: baseParsed,
|
|
3719
|
+
malformedAuthorityOrPort: baseMalformed,
|
|
3720
|
+
malformedPercentEncoding: baseMalformedPercentEncoding,
|
|
3721
|
+
malformedSchemeSpecific: baseMalformedSchemeSpecific,
|
|
3722
|
+
malformedHost: baseMalformedHost,
|
|
3723
|
+
malformedScheme: baseMalformedScheme
|
|
3724
|
+
} = parseWithStatus(baseURI, schemelessOptions);
|
|
3725
|
+
const {
|
|
3726
|
+
parsed: relativeParsed,
|
|
3727
|
+
malformedAuthorityOrPort: relativeMalformed,
|
|
3728
|
+
malformedPercentEncoding: relativeMalformedPercentEncoding,
|
|
3729
|
+
malformedSchemeSpecific: relativeMalformedSchemeSpecific,
|
|
3730
|
+
malformedHost: relativeMalformedHost,
|
|
3731
|
+
malformedScheme: relativeMalformedScheme
|
|
3732
|
+
} = parseWithStatus(relativeURI, schemelessOptions);
|
|
3733
|
+
if (baseMalformed || relativeMalformed || baseMalformedPercentEncoding || relativeMalformedPercentEncoding || baseMalformedSchemeSpecific || relativeMalformedSchemeSpecific || baseMalformedHost || relativeMalformedHost || baseMalformedScheme || relativeMalformedScheme) {
|
|
3734
|
+
throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
|
|
3735
|
+
}
|
|
3736
|
+
const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
|
|
3737
|
+
const resolvedSchemeHandler = getSchemeHandler(options && options.scheme || resolved.scheme);
|
|
3738
|
+
const resolvedHost = resolved.host;
|
|
3739
|
+
const resolvedHostIsIP = resolvedHost !== undefined && resolvedHost !== "" && (isIPv4(resolvedHost) || normalizeIPv6(resolvedHost).isIPV6);
|
|
3740
|
+
canonicalizeHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP);
|
|
3741
|
+
const encodedASCIIHost = resolvedHost && resolvedHost.indexOf("%") !== -1 && !/\P{ASCII}/u.test(resolvedHost);
|
|
3742
|
+
if (resolved.error && !encodedASCIIHost) {
|
|
3743
|
+
throw new Error(resolved.error);
|
|
3744
|
+
}
|
|
3507
3745
|
schemelessOptions.skipEscape = true;
|
|
3508
3746
|
return serialize(resolved, schemelessOptions);
|
|
3509
3747
|
}
|
|
@@ -3563,7 +3801,7 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3563
3801
|
function equal(uriA, uriB, options) {
|
|
3564
3802
|
const normalizedA = normalizeComparableURI(uriA, options);
|
|
3565
3803
|
const normalizedB = normalizeComparableURI(uriB, options);
|
|
3566
|
-
return normalizedA !== undefined && normalizedB !== undefined && normalizedA
|
|
3804
|
+
return normalizedA !== undefined && normalizedB !== undefined && normalizedA === normalizedB;
|
|
3567
3805
|
}
|
|
3568
3806
|
function serialize(cmpts, opts) {
|
|
3569
3807
|
const component = {
|
|
@@ -3584,20 +3822,23 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3584
3822
|
};
|
|
3585
3823
|
const options = Object.assign({}, opts);
|
|
3586
3824
|
const uriTokens = [];
|
|
3825
|
+
if (component.scheme) {
|
|
3826
|
+
component.scheme = decodeValidScheme(component.scheme);
|
|
3827
|
+
}
|
|
3587
3828
|
const schemeHandler = getSchemeHandler(options.scheme || component.scheme);
|
|
3588
3829
|
if (schemeHandler && schemeHandler.serialize)
|
|
3589
3830
|
schemeHandler.serialize(component, options);
|
|
3831
|
+
const hasAuthority = component.userinfo !== undefined || component.host !== undefined || component.port !== undefined;
|
|
3832
|
+
const pathNoScheme = !options.skipEscape && component.scheme === undefined && !hasAuthority;
|
|
3590
3833
|
if (component.path !== undefined) {
|
|
3591
3834
|
if (!options.skipEscape) {
|
|
3592
|
-
component.path =
|
|
3593
|
-
if (component.scheme !== undefined) {
|
|
3594
|
-
component.path = component.path.split("%3A").join(":");
|
|
3595
|
-
}
|
|
3835
|
+
component.path = serializePathEncoding(component.path, pathNoScheme);
|
|
3596
3836
|
} else {
|
|
3597
3837
|
component.path = normalizePercentEncoding(component.path);
|
|
3598
3838
|
}
|
|
3599
3839
|
}
|
|
3600
3840
|
if (options.reference !== "suffix" && component.scheme) {
|
|
3841
|
+
component.scheme = decodeValidScheme(component.scheme);
|
|
3601
3842
|
uriTokens.push(component.scheme, ":");
|
|
3602
3843
|
}
|
|
3603
3844
|
const authority = recomposeAuthority(component);
|
|
@@ -3615,20 +3856,25 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3615
3856
|
if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
|
|
3616
3857
|
s = removeDotSegments(s);
|
|
3617
3858
|
}
|
|
3859
|
+
if (pathNoScheme) {
|
|
3860
|
+
s = serializePathEncoding(s, true);
|
|
3861
|
+
}
|
|
3618
3862
|
if (authority === undefined && s[0] === "/" && s[1] === "/") {
|
|
3619
3863
|
s = "/%2F" + s.slice(2);
|
|
3620
3864
|
}
|
|
3621
3865
|
uriTokens.push(s);
|
|
3622
3866
|
}
|
|
3623
3867
|
if (component.query !== undefined) {
|
|
3624
|
-
uriTokens.push("?", component.query);
|
|
3868
|
+
uriTokens.push("?", encodeQuery(component.query));
|
|
3625
3869
|
}
|
|
3626
3870
|
if (component.fragment !== undefined) {
|
|
3627
|
-
uriTokens.push("#", component.fragment);
|
|
3871
|
+
uriTokens.push("#", encodeFragment(component.fragment));
|
|
3628
3872
|
}
|
|
3629
3873
|
return uriTokens.join("");
|
|
3630
3874
|
}
|
|
3631
3875
|
var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
|
|
3876
|
+
var AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/;
|
|
3877
|
+
var AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;
|
|
3632
3878
|
function getParseError(parsed, matches) {
|
|
3633
3879
|
if (matches[2] !== undefined && parsed.path && parsed.path[0] !== "/") {
|
|
3634
3880
|
return 'URI path must start with "/" when authority is present.';
|
|
@@ -3638,6 +3884,33 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3638
3884
|
}
|
|
3639
3885
|
return;
|
|
3640
3886
|
}
|
|
3887
|
+
function hasMalformedPercentEncoding(component) {
|
|
3888
|
+
if (component === undefined)
|
|
3889
|
+
return false;
|
|
3890
|
+
let percent = component.indexOf("%");
|
|
3891
|
+
while (percent !== -1) {
|
|
3892
|
+
if (percent + 2 >= component.length || !/^[\da-f]{2}$/iu.test(component.slice(percent + 1, percent + 3))) {
|
|
3893
|
+
return true;
|
|
3894
|
+
}
|
|
3895
|
+
percent = component.indexOf("%", percent + 3);
|
|
3896
|
+
}
|
|
3897
|
+
return false;
|
|
3898
|
+
}
|
|
3899
|
+
function hasMalformedComponentPercentEncoding(matches) {
|
|
3900
|
+
const host = matches[4];
|
|
3901
|
+
return hasMalformedPercentEncoding(matches[3]) || host !== undefined && !(host[0] === "[" && host[host.length - 1] === "]") && hasMalformedPercentEncoding(host) || hasMalformedPercentEncoding(matches[6]) || hasMalformedPercentEncoding(matches[7]) || hasMalformedPercentEncoding(matches[8]);
|
|
3902
|
+
}
|
|
3903
|
+
function canonicalizeHost(parsed, options, schemeHandler, isIP) {
|
|
3904
|
+
if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport) && parsed.host && parsed.host[0] !== "[" && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
|
|
3905
|
+
try {
|
|
3906
|
+
parsed.host = new URL("http://" + parsed.host).hostname;
|
|
3907
|
+
} catch (e) {
|
|
3908
|
+
parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
|
|
3909
|
+
return true;
|
|
3910
|
+
}
|
|
3911
|
+
}
|
|
3912
|
+
return false;
|
|
3913
|
+
}
|
|
3641
3914
|
function parseWithStatus(uri, opts) {
|
|
3642
3915
|
const options = Object.assign({}, opts);
|
|
3643
3916
|
const parsed = {
|
|
@@ -3650,6 +3923,11 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3650
3923
|
fragment: undefined
|
|
3651
3924
|
};
|
|
3652
3925
|
let malformedAuthorityOrPort = false;
|
|
3926
|
+
let malformedPercentEncoding = false;
|
|
3927
|
+
let malformedSchemeSpecific = false;
|
|
3928
|
+
let malformedHost = false;
|
|
3929
|
+
let malformedIPLiteral = false;
|
|
3930
|
+
let malformedScheme = false;
|
|
3653
3931
|
let isIP = false;
|
|
3654
3932
|
if (options.reference === "suffix") {
|
|
3655
3933
|
if (options.scheme) {
|
|
@@ -3658,6 +3936,25 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3658
3936
|
uri = "//" + uri;
|
|
3659
3937
|
}
|
|
3660
3938
|
}
|
|
3939
|
+
const authorityMatch = uri.match(AUTHORITY_PREFIX);
|
|
3940
|
+
if (authorityMatch !== null && authorityMatch[1].indexOf("\\") !== -1) {
|
|
3941
|
+
parsed.error = "URI authority must not contain a literal backslash.";
|
|
3942
|
+
malformedAuthorityOrPort = true;
|
|
3943
|
+
}
|
|
3944
|
+
const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION);
|
|
3945
|
+
if (introducerMatch !== null) {
|
|
3946
|
+
const region = introducerMatch[1];
|
|
3947
|
+
const normalizedRegion = region.replace(/[\t\n\r]/g, "");
|
|
3948
|
+
if (normalizedRegion.length >= 2) {
|
|
3949
|
+
if (normalizedRegion.slice(0, 2) !== "//") {
|
|
3950
|
+
parsed.error = parsed.error || "URI authority must not contain a literal backslash.";
|
|
3951
|
+
malformedAuthorityOrPort = true;
|
|
3952
|
+
} else if (region.length !== normalizedRegion.length) {
|
|
3953
|
+
parsed.error = parsed.error || "URI authority introducer must not contain whitespace.";
|
|
3954
|
+
malformedAuthorityOrPort = true;
|
|
3955
|
+
}
|
|
3956
|
+
}
|
|
3957
|
+
}
|
|
3661
3958
|
const matches = uri.match(URI_PARSE);
|
|
3662
3959
|
if (matches) {
|
|
3663
3960
|
parsed.scheme = matches[1];
|
|
@@ -3667,6 +3964,19 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3667
3964
|
parsed.path = matches[6] || "";
|
|
3668
3965
|
parsed.query = matches[7];
|
|
3669
3966
|
parsed.fragment = matches[8];
|
|
3967
|
+
if (parsed.scheme !== undefined) {
|
|
3968
|
+
const decodedScheme = unescape(parsed.scheme);
|
|
3969
|
+
if (VALID_SCHEME.test(decodedScheme)) {
|
|
3970
|
+
parsed.scheme = decodedScheme.toLowerCase();
|
|
3971
|
+
} else {
|
|
3972
|
+
parsed.error = parsed.error || MALFORMED_SCHEME_ERROR;
|
|
3973
|
+
malformedScheme = true;
|
|
3974
|
+
}
|
|
3975
|
+
}
|
|
3976
|
+
malformedPercentEncoding = hasMalformedComponentPercentEncoding(matches);
|
|
3977
|
+
if (malformedPercentEncoding) {
|
|
3978
|
+
parsed.error = parsed.error || "URI contains malformed percent-encoding.";
|
|
3979
|
+
}
|
|
3670
3980
|
if (isNaN(parsed.port)) {
|
|
3671
3981
|
parsed.port = matches[5];
|
|
3672
3982
|
}
|
|
@@ -3678,9 +3988,15 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3678
3988
|
if (parsed.host) {
|
|
3679
3989
|
const ipv4result = isIPv4(parsed.host);
|
|
3680
3990
|
if (ipv4result === false) {
|
|
3991
|
+
const bracketedIPLiteral = parsed.host[0] === "[" && parsed.host[parsed.host.length - 1] === "]";
|
|
3681
3992
|
const ipv6result = normalizeIPv6(parsed.host);
|
|
3682
|
-
|
|
3683
|
-
|
|
3993
|
+
isIP = ipv6result.isIPV6 || ipv6result.isIPVFuture === true;
|
|
3994
|
+
malformedIPLiteral = bracketedIPLiteral && ipv6result.error === true;
|
|
3995
|
+
parsed.host = isIP ? ipv6result.host : ipv6result.host.toLowerCase();
|
|
3996
|
+
if (malformedIPLiteral) {
|
|
3997
|
+
parsed.error = parsed.error || "URI host is malformed.";
|
|
3998
|
+
malformedAuthorityOrPort = true;
|
|
3999
|
+
}
|
|
3684
4000
|
} else {
|
|
3685
4001
|
isIP = true;
|
|
3686
4002
|
}
|
|
@@ -3698,42 +4014,34 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3698
4014
|
parsed.error = parsed.error || "URI is not a " + options.reference + " reference.";
|
|
3699
4015
|
}
|
|
3700
4016
|
const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme);
|
|
3701
|
-
|
|
3702
|
-
if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
|
|
3703
|
-
try {
|
|
3704
|
-
parsed.host = URL.domainToASCII(parsed.host.toLowerCase());
|
|
3705
|
-
} catch (e) {
|
|
3706
|
-
parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
|
|
3707
|
-
}
|
|
3708
|
-
}
|
|
3709
|
-
}
|
|
4017
|
+
malformedHost = canonicalizeHost(parsed, options, schemeHandler, isIP);
|
|
3710
4018
|
if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) {
|
|
3711
4019
|
if (uri.indexOf("%") !== -1) {
|
|
3712
|
-
if (parsed.
|
|
3713
|
-
parsed.
|
|
3714
|
-
|
|
3715
|
-
if (parsed.host !== undefined) {
|
|
3716
|
-
parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP);
|
|
4020
|
+
if (parsed.host !== undefined && !malformedIPLiteral) {
|
|
4021
|
+
const host = isIP ? parsed.host : normalizePercentEncoding(parsed.host, true);
|
|
4022
|
+
parsed.host = reescapeHostDelimiters(host, isIP);
|
|
3717
4023
|
}
|
|
3718
4024
|
}
|
|
3719
4025
|
if (parsed.path) {
|
|
3720
4026
|
parsed.path = normalizePathEncoding(parsed.path);
|
|
3721
4027
|
}
|
|
4028
|
+
if (parsed.query) {
|
|
4029
|
+
parsed.query = normalizeQueryFragmentEncoding(parsed.query);
|
|
4030
|
+
}
|
|
3722
4031
|
if (parsed.fragment) {
|
|
3723
|
-
|
|
3724
|
-
parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment));
|
|
3725
|
-
} catch {
|
|
3726
|
-
parsed.error = parsed.error || "URI malformed";
|
|
3727
|
-
}
|
|
4032
|
+
parsed.fragment = normalizeQueryFragmentEncoding(parsed.fragment);
|
|
3728
4033
|
}
|
|
3729
4034
|
}
|
|
3730
4035
|
if (schemeHandler && schemeHandler.parse) {
|
|
3731
4036
|
schemeHandler.parse(parsed, options);
|
|
4037
|
+
if (schemeHandler === SCHEMES.urn && parsed.nid === undefined) {
|
|
4038
|
+
malformedSchemeSpecific = true;
|
|
4039
|
+
}
|
|
3732
4040
|
}
|
|
3733
4041
|
} else {
|
|
3734
4042
|
parsed.error = parsed.error || "URI can not be parsed.";
|
|
3735
4043
|
}
|
|
3736
|
-
return { parsed, malformedAuthorityOrPort };
|
|
4044
|
+
return { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme };
|
|
3737
4045
|
}
|
|
3738
4046
|
function parse(uri, opts) {
|
|
3739
4047
|
return parseWithStatus(uri, opts).parsed;
|
|
@@ -3742,20 +4050,28 @@ var require_fast_uri = __commonJS(function(exports, module) {
|
|
|
3742
4050
|
return normalizeStringWithStatus(uri, opts).normalized;
|
|
3743
4051
|
}
|
|
3744
4052
|
function normalizeStringWithStatus(uri, opts) {
|
|
3745
|
-
const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts);
|
|
4053
|
+
const { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = parseWithStatus(uri, opts);
|
|
3746
4054
|
return {
|
|
3747
|
-
normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),
|
|
3748
|
-
malformedAuthorityOrPort
|
|
4055
|
+
normalized: malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? uri : serialize(parsed, opts),
|
|
4056
|
+
malformedAuthorityOrPort,
|
|
4057
|
+
malformedPercentEncoding,
|
|
4058
|
+
malformedSchemeSpecific,
|
|
4059
|
+
malformedHost,
|
|
4060
|
+
malformedScheme
|
|
3749
4061
|
};
|
|
3750
4062
|
}
|
|
3751
4063
|
function normalizeComparableURI(uri, opts) {
|
|
3752
|
-
if (typeof uri
|
|
3753
|
-
|
|
3754
|
-
return malformedAuthorityOrPort ? undefined : normalized;
|
|
4064
|
+
if (typeof uri !== "string" && typeof uri !== "object") {
|
|
4065
|
+
return;
|
|
3755
4066
|
}
|
|
3756
|
-
|
|
3757
|
-
|
|
4067
|
+
let value;
|
|
4068
|
+
try {
|
|
4069
|
+
value = typeof uri === "string" ? uri : serialize(uri, opts);
|
|
4070
|
+
} catch {
|
|
4071
|
+
return;
|
|
3758
4072
|
}
|
|
4073
|
+
const { normalized, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = normalizeStringWithStatus(value, opts);
|
|
4074
|
+
return malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? undefined : normalized;
|
|
3759
4075
|
}
|
|
3760
4076
|
var fastUri = {
|
|
3761
4077
|
SCHEMES,
|
|
@@ -6036,5 +6352,5 @@ var require_metadata = __commonJS(function(exports) {
|
|
|
6036
6352
|
|
|
6037
6353
|
export { require_codegen, require_util, require_names, require_validate, require_validation_error, require_ref_error, require_compile, require_core, require_ref, require_core2 as require_core1, require_validation, require_dependencies, require_applicator, require_format2 as require_format, require_metadata, require_discriminator };
|
|
6038
6354
|
|
|
6039
|
-
//# debugId=
|
|
6040
|
-
//# sourceMappingURL=studio-
|
|
6355
|
+
//# debugId=27BACE53E31E516464756E2164756E21
|
|
6356
|
+
//# sourceMappingURL=studio-gcye7qka.js.map
|