inferred-types 0.54.9 → 0.55.1

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.
@@ -93,11 +93,15 @@ __export(src_exports, {
93
93
  MARKED: () => MARKED,
94
94
  MASS_METRICS_LOOKUP: () => MASS_METRICS_LOOKUP,
95
95
  MEXICAN_NEWS: () => MEXICAN_NEWS,
96
+ MIME_TYPES: () => MIME_TYPES,
96
97
  MONTH_ABBR: () => MONTH_ABBR,
97
98
  MONTH_NAME: () => MONTH_NAME,
98
99
  MapCardinality: () => MapCardinality,
99
100
  NARROW_CONTAINER_TYPE_KINDS: () => NARROW_CONTAINER_TYPE_KINDS,
101
+ NETWORK_PROTOCOL: () => NETWORK_PROTOCOL,
102
+ NETWORK_PROTOCOL_INSECURE: () => NETWORK_PROTOCOL_INSECURE,
100
103
  NETWORK_PROTOCOL_LOOKUP: () => NETWORK_PROTOCOL_LOOKUP,
104
+ NETWORK_PROTOCOL_SECURE: () => NETWORK_PROTOCOL_SECURE,
101
105
  NIKE_DNS: () => NIKE_DNS,
102
106
  NON_ZERO_NUMERIC_CHAR: () => NON_ZERO_NUMERIC_CHAR,
103
107
  NORWEGIAN_NEWS: () => NORWEGIAN_NEWS,
@@ -114,6 +118,7 @@ __export(src_exports, {
114
118
  PLURAL_EXCEPTIONS_OLD: () => PLURAL_EXCEPTIONS_OLD,
115
119
  POWER_METRICS_LOOKUP: () => POWER_METRICS_LOOKUP,
116
120
  PRESSURE_METRICS_LOOKUP: () => PRESSURE_METRICS_LOOKUP,
121
+ PROTOCOL_DEFAULT_PORTS: () => PROTOCOL_DEFAULT_PORTS,
117
122
  PROXMOX_CT_STATE: () => PROXMOX_CT_STATE,
118
123
  REPO_PAGE_TYPES: () => REPO_PAGE_TYPES,
119
124
  REPO_SOURCES: () => REPO_SOURCES,
@@ -277,6 +282,9 @@ __export(src_exports, {
277
282
  getTokenKind: () => getTokenKind,
278
283
  getTomorrow: () => getTomorrow,
279
284
  getTypeSubtype: () => getTypeSubtype,
285
+ getUrlBase: () => getUrlBase,
286
+ getUrlDefaultPort: () => getUrlDefaultPort,
287
+ getUrlDynamics: () => getUrlDynamics,
280
288
  getUrlPath: () => getUrlPath,
281
289
  getUrlPort: () => getUrlPort,
282
290
  getUrlProtocol: () => getUrlProtocol,
@@ -289,6 +297,9 @@ __export(src_exports, {
289
297
  hasDefaultValue: () => hasDefaultValue,
290
298
  hasIndexOf: () => hasIndexOf,
291
299
  hasKeys: () => hasKeys,
300
+ hasOverlappingKeys: () => hasOverlappingKeys,
301
+ hasProtocol: () => hasProtocol,
302
+ hasProtocolPrefix: () => hasProtocolPrefix,
292
303
  hasUrlPort: () => hasUrlPort,
293
304
  hasUrlQueryParameter: () => hasUrlQueryParameter,
294
305
  hasWhiteSpace: () => hasWhiteSpace,
@@ -354,6 +365,7 @@ __export(src_exports, {
354
365
  isCountryCode3: () => isCountryCode3,
355
366
  isCountryName: () => isCountryName,
356
367
  isCssAspectRatio: () => isCssAspectRatio,
368
+ isCsv: () => isCsv,
357
369
  isCurrentMetric: () => isCurrentMetric,
358
370
  isCurrentUom: () => isCurrentUom,
359
371
  isCvsUrl: () => isCvsUrl,
@@ -369,6 +381,7 @@ __export(src_exports, {
369
381
  isDutchNewsUrl: () => isDutchNewsUrl,
370
382
  isEbayUrl: () => isEbayUrl,
371
383
  isEmail: () => isEmail,
384
+ isEmpty: () => isEmpty,
372
385
  isEnergyMetric: () => isEnergyMetric,
373
386
  isEnergyUom: () => isEnergyUom,
374
387
  isEqual: () => isEqual,
@@ -457,6 +470,8 @@ __export(src_exports, {
457
470
  isPowerUom: () => isPowerUom,
458
471
  isPressureMetric: () => isPressureMetric,
459
472
  isPressureUom: () => isPressureUom,
473
+ isProtocol: () => isProtocol,
474
+ isProtocolPrefix: () => isProtocolPrefix,
460
475
  isReadonlyArray: () => isReadonlyArray,
461
476
  isRecordToken: () => isRecordToken,
462
477
  isRef: () => isRef,
@@ -535,6 +550,7 @@ __export(src_exports, {
535
550
  isUsNewsUrl: () => isUsNewsUrl,
536
551
  isUsStateAbbreviation: () => isUsStateAbbreviation,
537
552
  isUsStateName: () => isUsStateName,
553
+ isVariable: () => isVariable,
538
554
  isVoltageMetric: () => isVoltageMetric,
539
555
  isVoltageUom: () => isVoltageUom,
540
556
  isVolumeMetric: () => isVolumeMetric,
@@ -1178,6 +1194,73 @@ var HASH_TABLE_CHAR = {
1178
1194
  ...HASH_TABLE_SPECIAL
1179
1195
  };
1180
1196
  var HASH_TABLE_OTHER = "999";
1197
+ var MIME_TYPES = [
1198
+ // Application MIME Types
1199
+ "application/json",
1200
+ "application/xml",
1201
+ "application/javascript",
1202
+ "application/pdf",
1203
+ "application/ld+json",
1204
+ "application/octet-stream",
1205
+ "application/x-www-form-urlencoded",
1206
+ "application/vnd.api+json",
1207
+ "application/msword",
1208
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
1209
+ "application/vnd.ms-excel",
1210
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
1211
+ "application/vnd.ms-powerpoint",
1212
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
1213
+ // Text MIME Types
1214
+ "text/plain",
1215
+ "text/html",
1216
+ "text/css",
1217
+ "text/csv",
1218
+ "text/javascript",
1219
+ "text/markdown",
1220
+ // Image MIME Types
1221
+ "image/jpeg",
1222
+ "image/png",
1223
+ "image/gif",
1224
+ "image/bmp",
1225
+ "image/webp",
1226
+ "image/svg+xml",
1227
+ "image/tiff",
1228
+ // Audio MIME Types
1229
+ "audio/mpeg",
1230
+ "audio/ogg",
1231
+ "audio/wav",
1232
+ "audio/webm",
1233
+ "audio/flac",
1234
+ // Video MIME Types
1235
+ "video/mp4",
1236
+ "video/mpeg",
1237
+ "video/ogg",
1238
+ "video/webm",
1239
+ "video/quicktime",
1240
+ // Multipart MIME Types
1241
+ "multipart/form-data",
1242
+ "multipart/mixed",
1243
+ "multipart/alternative",
1244
+ "multipart/related",
1245
+ // Font MIME Types
1246
+ "font/woff",
1247
+ "font/woff2",
1248
+ "font/ttf",
1249
+ "font/otf",
1250
+ // Other Common MIME Types
1251
+ "application/rss+xml",
1252
+ "application/atom+xml",
1253
+ "application/x-pkcs12",
1254
+ "application/x-shockwave-flash",
1255
+ "application/x-www-form-urlencoded",
1256
+ "application/x-font-ttf",
1257
+ "application/x-font-opentype",
1258
+ "application/x-font-woff",
1259
+ "application/x-font-woff2",
1260
+ "application/vnd.rar",
1261
+ "application/zip",
1262
+ "application/x-7z-compressed"
1263
+ ];
1181
1264
  var IMAGE_FORMAT_LOOKUP = [
1182
1265
  { ext: "jpg", webFormat: true, other_ext: ["jpeg"] },
1183
1266
  { ext: "png", webFormat: true, other_ext: [] },
@@ -1518,13 +1601,51 @@ var IPv6 = {
1518
1601
  var IPv4 = {
1519
1602
  Loopback: "127.0.0.1"
1520
1603
  };
1604
+ var NETWORK_PROTOCOL_INSECURE = [
1605
+ "http",
1606
+ "ftp",
1607
+ "ws",
1608
+ "dns",
1609
+ "telnet",
1610
+ "imap",
1611
+ "pop3",
1612
+ "smtp"
1613
+ ];
1614
+ var NETWORK_PROTOCOL_SECURE = [
1615
+ "https",
1616
+ "sftp",
1617
+ "wss",
1618
+ "sdns",
1619
+ "ssh"
1620
+ ];
1621
+ var NETWORK_PROTOCOL = [
1622
+ ...NETWORK_PROTOCOL_INSECURE,
1623
+ ...NETWORK_PROTOCOL_SECURE
1624
+ ];
1521
1625
  var NETWORK_PROTOCOL_LOOKUP = {
1522
1626
  http: ["http", "https"],
1523
1627
  ftp: ["ftp", "sftp"],
1524
1628
  file: ["", "file"],
1525
1629
  ws: ["ws", "wss"],
1526
1630
  ssh: ["", "ssh"],
1527
- scp: ["", "scp"]
1631
+ scp: ["", "scp"],
1632
+ telnet: ["telnet", ""],
1633
+ dns: ["dns", "sdns"]
1634
+ };
1635
+ var PROTOCOL_DEFAULT_PORTS = {
1636
+ http: 80,
1637
+ https: 443,
1638
+ ws: 80,
1639
+ wss: 443,
1640
+ ssh: 22,
1641
+ telnet: 23,
1642
+ dns: 53,
1643
+ sdns: 853,
1644
+ smtp: 25,
1645
+ imap: 142,
1646
+ pop3: 110,
1647
+ ftp: 21,
1648
+ sftp: 22
1528
1649
  };
1529
1650
  var TOP_LEVEL_DOMAINS = [
1530
1651
  "com",
@@ -3826,13 +3947,51 @@ var AREA_METRICS_LOOKUP2 = [
3826
3947
  { abbrev: "acre", name: "acre" },
3827
3948
  { abbrev: "ha", name: "hectare" }
3828
3949
  ];
3950
+ var NETWORK_PROTOCOL_INSECURE2 = [
3951
+ "http",
3952
+ "ftp",
3953
+ "ws",
3954
+ "dns",
3955
+ "telnet",
3956
+ "imap",
3957
+ "pop3",
3958
+ "smtp"
3959
+ ];
3960
+ var NETWORK_PROTOCOL_SECURE2 = [
3961
+ "https",
3962
+ "sftp",
3963
+ "wss",
3964
+ "sdns",
3965
+ "ssh"
3966
+ ];
3967
+ var NETWORK_PROTOCOL2 = [
3968
+ ...NETWORK_PROTOCOL_INSECURE2,
3969
+ ...NETWORK_PROTOCOL_SECURE2
3970
+ ];
3829
3971
  var NETWORK_PROTOCOL_LOOKUP2 = {
3830
3972
  http: ["http", "https"],
3831
3973
  ftp: ["ftp", "sftp"],
3832
3974
  file: ["", "file"],
3833
3975
  ws: ["ws", "wss"],
3834
3976
  ssh: ["", "ssh"],
3835
- scp: ["", "scp"]
3977
+ scp: ["", "scp"],
3978
+ telnet: ["telnet", ""],
3979
+ dns: ["dns", "sdns"]
3980
+ };
3981
+ var PROTOCOL_DEFAULT_PORTS2 = {
3982
+ http: 80,
3983
+ https: 443,
3984
+ ws: 80,
3985
+ wss: 443,
3986
+ ssh: 22,
3987
+ telnet: 23,
3988
+ dns: 53,
3989
+ sdns: 853,
3990
+ smtp: 25,
3991
+ imap: 142,
3992
+ pop3: 110,
3993
+ ftp: 21,
3994
+ sftp: 22
3836
3995
  };
3837
3996
  var Never2 = createConstant2("never");
3838
3997
  var US_NEWS2 = [
@@ -5493,7 +5652,7 @@ var filter = "NOT READY";
5493
5652
  function find(list2, deref = null) {
5494
5653
  return (comparator) => {
5495
5654
  return list2.find((i) => {
5496
- const val = deref ? isContainer(i) ? deref in i ? i[deref] : void 0 : i : i;
5655
+ const val = deref ? isObject(i) || isArray(i) ? deref in i ? i[deref] : void 0 : i : i;
5497
5656
  return val === comparator;
5498
5657
  });
5499
5658
  };
@@ -6167,6 +6326,9 @@ var isRatio = (val) => /\d{1,4}\s*\/\s*\d{1,4}/.test(val);
6167
6326
  function isCssAspectRatio(val) {
6168
6327
  return isString(val) && val.split(/\s+/).every((i) => tokens.includes(i) || isRatio(i));
6169
6328
  }
6329
+ function isCsv(val) {
6330
+ return isString(val) && val.includes(",") && !val.startsWith(",");
6331
+ }
6170
6332
  function isDefined(value) {
6171
6333
  return typeof value !== "undefined";
6172
6334
  }
@@ -6183,6 +6345,9 @@ function isEmail(val) {
6183
6345
  const firstChar = val[0].toLowerCase();
6184
6346
  return isString(val) && (LOWER_ALPHA_CHARS2.includes(firstChar) && parts.length === 2 && domain.length >= 1 && tld.length >= 2);
6185
6347
  }
6348
+ function isEmpty(val) {
6349
+ return isUndefined(val) || isNull(val) || isString(val) && val.length === 0 || isObject(val) && Object.keys(val).length === 0 || isArray(val) && val.length === 0;
6350
+ }
6186
6351
  function isErrorCondition(value, kind = null) {
6187
6352
  return isObject(value) && "__kind" in value && value.__kind === "ErrorCondition" && "kind" in value ? kind !== null ? value.kind === kind : true : false;
6188
6353
  }
@@ -6220,7 +6385,7 @@ function isPhoneNumber(val) {
6220
6385
  const svelte = String(val).trim();
6221
6386
  const chars = svelte.split("");
6222
6387
  const numeric = retainChars(svelte, ...NUMERIC_CHAR2);
6223
- const valid = ["+", "(", ...NUMERIC_CHAR2];
6388
+ const valid2 = ["+", "(", ...NUMERIC_CHAR2];
6224
6389
  const nothing = stripChars(svelte, ...[
6225
6390
  ...NUMERIC_CHAR2,
6226
6391
  ...WHITESPACE_CHARS2,
@@ -6230,7 +6395,7 @@ function isPhoneNumber(val) {
6230
6395
  ".",
6231
6396
  "-"
6232
6397
  ]);
6233
- return chars.every((i) => valid.includes(i)) && svelte.startsWith(`+`) ? numeric.length >= 8 : svelte.startsWith(`00`) ? numeric.length >= 10 : numeric.length >= 7 && nothing === "";
6398
+ return chars.every((i) => valid2.includes(i)) && svelte.startsWith(`+`) ? numeric.length >= 8 : svelte.startsWith(`00`) ? numeric.length >= 10 : numeric.length >= 7 && nothing === "";
6234
6399
  }
6235
6400
  function isReadonlyArray(value) {
6236
6401
  return Array.isArray(value) === true;
@@ -6293,6 +6458,19 @@ function isUrl(val, ...protocols) {
6293
6458
  const p = protocols.length === 0 ? ["http", "https"] : protocols;
6294
6459
  return isString(val) && p.some((i) => val.startsWith(`${i}://`));
6295
6460
  }
6461
+ var VALID = [
6462
+ ...ALPHA_CHARS2,
6463
+ ...NUMERIC_CHAR2,
6464
+ "_",
6465
+ "."
6466
+ ];
6467
+ var alpha = null;
6468
+ function valid(chars) {
6469
+ return chars.every((i) => VALID.includes(i));
6470
+ }
6471
+ function isVariable(val) {
6472
+ return isString(val) && startsWith(alpha)(val) && valid(asChars(val));
6473
+ }
6296
6474
  function separate(s) {
6297
6475
  return stripWhile(s.toLowerCase(), ...NUMERIC_CHAR2).trim();
6298
6476
  }
@@ -6431,6 +6609,18 @@ function hasUrlQueryParameter(val, prop) {
6431
6609
  function isNumericArray(val) {
6432
6610
  return Array.isArray(val) && val.every((i) => isNumber(i));
6433
6611
  }
6612
+ function hasProtocol(val, ...protocols) {
6613
+ return isString(val) && protocols.length === 0 ? NETWORK_PROTOCOL2.some((i) => val.startsWith(i)) : protocols.some((i) => val.startsWith(i));
6614
+ }
6615
+ function isProtocol(val, ...protocols) {
6616
+ return isString(val) && protocols.length === 0 ? NETWORK_PROTOCOL2.includes(val) : protocols.includes(val);
6617
+ }
6618
+ function hasProtocolPrefix(val, ...protocols) {
6619
+ return isString(val) && protocols.length === 0 ? NETWORK_PROTOCOL2.map((i) => `${i}://`).some((i) => val.startsWith(i)) : protocols.map((i) => `${i}://`).some((i) => val.startsWith(i));
6620
+ }
6621
+ function isProtocolPrefix(val, ...protocols) {
6622
+ return isString(val) && protocols.length === 0 ? NETWORK_PROTOCOL2.map((i) => `${i}://`).includes(val) : protocols.map((i) => `${i}://`).includes(val);
6623
+ }
6434
6624
  function isTypeToken(val, kind) {
6435
6625
  if (isString(val) && val.startsWith("<<") && val.endsWith(">>")) {
6436
6626
  const stripped = stripSurround("<<", ">>")(val);
@@ -6662,24 +6852,24 @@ function isNewsUrl(val) {
6662
6852
  return isAustralianNewsUrl(val) || isBelgiumNewsUrl(val) || isCanadianNewsUrl(val) || isDanishNewsUrl(val) || isDutchNewsUrl(val) || isFrenchNewsUrl(val) || isGermanNewsUrl(val) || isIndianNewsUrl(val) || isItalianNewsUrl(val) || isJapaneseNewsUrl(val) || isMexicanNewsUrl(val) || isNorwegianNewsUrl(val) || isSouthKoreanNewsUrl(val) || isSpanishNewsUrl(val) || isSwissNewsUrl(val) || isTurkishNewsUrl(val) || isUkNewsUrl(val) || isUsNewsUrl(val);
6663
6853
  }
6664
6854
  function isBitbucketUrl(val) {
6665
- const valid = REPO_SOURCE_LOOKUP2.bitbucket;
6666
- return isString(val) && valid.some(
6855
+ const valid2 = REPO_SOURCE_LOOKUP2.bitbucket;
6856
+ return isString(val) && valid2.some(
6667
6857
  (i) => val === i || val.startsWith(`${i}/`) || val.startsWith(`${i}?`)
6668
6858
  );
6669
6859
  }
6670
6860
  function isCodeCommitUrl(val) {
6671
- const valid = REPO_SOURCE_LOOKUP2.codecommit;
6672
- return isString(val) && valid.some(
6861
+ const valid2 = REPO_SOURCE_LOOKUP2.codecommit;
6862
+ return isString(val) && valid2.some(
6673
6863
  (i) => val === i || val.startsWith(`${i}/`) || val.startsWith(`${i}?`)
6674
6864
  );
6675
6865
  }
6676
6866
  function isGithubUrl(val) {
6677
- const valid = [
6867
+ const valid2 = [
6678
6868
  "https://github.com",
6679
6869
  "https://www.github.com",
6680
6870
  "https://github.io"
6681
6871
  ];
6682
- return isString(val) && valid.some(
6872
+ return isString(val) && valid2.some(
6683
6873
  (i) => val === i || val.startsWith(`${i}/`) || val.startsWith(`${i}?`)
6684
6874
  );
6685
6875
  }
@@ -7223,16 +7413,77 @@ function getUrlQueryParams(url, specific = void 0) {
7223
7413
  }
7224
7414
  return qp === "" ? qp : `?${qp}`;
7225
7415
  }
7226
- function getUrlPort(url) {
7227
- const candidate = takeNumericCharacters(
7228
- stripBefore(removeUrlProtocol(url), ":")
7229
- );
7230
- return candidate === "" ? "default" : Number(candidate);
7416
+ function getUrlDefaultPort(url) {
7417
+ const proto = getUrlProtocol(url);
7418
+ return proto in PROTOCOL_DEFAULT_PORTS2 ? PROTOCOL_DEFAULT_PORTS2[proto] : null;
7419
+ }
7420
+ function getUrlPort(url, resolve = false) {
7421
+ const re = /.*:(\d{2,3})/;
7422
+ const match = url.match(re);
7423
+ return re.test(url) && match && isNumberLike(Array.from(match)[1]) ? Number(Array.from(match)[1]) : resolve ? getUrlDefaultPort(url) : hasProtocol(url) ? `default` : null;
7231
7424
  }
7232
7425
  function getUrlSource(url) {
7233
7426
  const candidate = stripAfter(stripAfter(stripAfter(removeUrlProtocol(url), "/"), "?"), ":");
7234
7427
  return isIpAddress(candidate) || isDomainName(candidate) ? candidate : Never2;
7235
7428
  }
7429
+ function getUrlBase(url) {
7430
+ const path = getUrlPath(url);
7431
+ const remaining = stripAfter(url, path);
7432
+ return remaining;
7433
+ }
7434
+ function getUrlDynamics(url) {
7435
+ const path = getUrlPath(url);
7436
+ const qp = getUrlQueryParams(url);
7437
+ const pathParts = path.startsWith("<") ? path.split("<").map((i) => ensureLeading(i, "<")) : path.split("<").map((i) => ensureLeading(i, "<")).slice(1);
7438
+ const segmentTypes = [
7439
+ "string",
7440
+ "number",
7441
+ "boolean",
7442
+ "Opt<string>",
7443
+ "Opt<number>",
7444
+ "Opt<boolean>"
7445
+ ];
7446
+ const pathVars = {};
7447
+ const findPathTyped = infer(`<{{infer name}} as {{infer type}}>`);
7448
+ const findPathUnion = infer(`<{{infer name}} as string({{infer union}})>`);
7449
+ const findPathNamed = infer(`<{{infer name}}>`);
7450
+ for (const part of pathParts) {
7451
+ const union4 = findPathUnion(part);
7452
+ const typed = findPathTyped(part);
7453
+ const named = findPathNamed(part);
7454
+ if (union4) {
7455
+ if (isVariable(union4.name) && isCsv(union4.union)) {
7456
+ pathVars[union4.name] = `string(${union4.union})`;
7457
+ }
7458
+ } else if (typed && segmentTypes.includes(typed.type) && isVariable(typed.name)) {
7459
+ pathVars[typed.name] = typed.type;
7460
+ } else if (named && isVariable(named.name)) {
7461
+ pathVars[named.name] = "string";
7462
+ }
7463
+ }
7464
+ const qpVars = {};
7465
+ const qpParts = stripLeading(qp, "?").split("&");
7466
+ for (const p of qpParts) {
7467
+ const union4 = infer(`{{infer var}}=<string({{infer params}})>`)(p);
7468
+ const dynamic = infer(`{{infer var}}=<{{infer val}}>`)(p);
7469
+ const fixed = infer(`{{infer var}}={{infer val}}`)(p);
7470
+ if (union4 && isVariable(union4.var) && isCsv(union4.params)) {
7471
+ qpVars[union4.var] = `string(${union4.params})`;
7472
+ } else if (dynamic && isVariable(dynamic.var) && segmentTypes.includes(dynamic.val)) {
7473
+ qpVars[dynamic.var] = dynamic.val;
7474
+ } else if (fixed && isVariable(fixed.var)) {
7475
+ qpVars[fixed.var] = fixed.val;
7476
+ }
7477
+ }
7478
+ return {
7479
+ pathVars,
7480
+ qpVars,
7481
+ allVars: hasOverlappingKeys(pathVars, qpVars) ? null : {
7482
+ ...pathVars,
7483
+ ...qpVars
7484
+ }
7485
+ };
7486
+ }
7236
7487
  function urlMeta(url) {
7237
7488
  return {
7238
7489
  url,
@@ -7240,6 +7491,7 @@ function urlMeta(url) {
7240
7491
  protocol: getUrlProtocol(url),
7241
7492
  path: getUrlPath(url),
7242
7493
  queryParameters: getUrlQueryParams(url),
7494
+ params: getUrlDynamics,
7243
7495
  port: getUrlPort(url),
7244
7496
  source: getUrlSource(url),
7245
7497
  isIpAddress: isIpAddress(getUrlSource(url)),
@@ -7640,6 +7892,15 @@ function simpleType(token) {
7640
7892
  const value = isSimpleScalarToken(token) ? simpleScalarType(token) : isSimpleContainerToken(token) ? simpleContainerToken(token) : Never2;
7641
7893
  return value;
7642
7894
  }
7895
+ function hasOverlappingKeys(a, b) {
7896
+ const keys = Object.keys(a);
7897
+ for (const k of keys) {
7898
+ if (k in b) {
7899
+ return true;
7900
+ }
7901
+ }
7902
+ return false;
7903
+ }
7643
7904
  function uniqueKeys(left, right) {
7644
7905
  const isNumeric = !!(isArray(left) && isArray(right));
7645
7906
  if (isArray(left) && !isArray(right) || isArray(right) && !isArray(left)) {
@@ -7928,11 +8189,15 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
7928
8189
  MARKED,
7929
8190
  MASS_METRICS_LOOKUP,
7930
8191
  MEXICAN_NEWS,
8192
+ MIME_TYPES,
7931
8193
  MONTH_ABBR,
7932
8194
  MONTH_NAME,
7933
8195
  MapCardinality,
7934
8196
  NARROW_CONTAINER_TYPE_KINDS,
8197
+ NETWORK_PROTOCOL,
8198
+ NETWORK_PROTOCOL_INSECURE,
7935
8199
  NETWORK_PROTOCOL_LOOKUP,
8200
+ NETWORK_PROTOCOL_SECURE,
7936
8201
  NIKE_DNS,
7937
8202
  NON_ZERO_NUMERIC_CHAR,
7938
8203
  NORWEGIAN_NEWS,
@@ -7949,6 +8214,7 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
7949
8214
  PLURAL_EXCEPTIONS_OLD,
7950
8215
  POWER_METRICS_LOOKUP,
7951
8216
  PRESSURE_METRICS_LOOKUP,
8217
+ PROTOCOL_DEFAULT_PORTS,
7952
8218
  PROXMOX_CT_STATE,
7953
8219
  REPO_PAGE_TYPES,
7954
8220
  REPO_SOURCES,
@@ -8112,6 +8378,9 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8112
8378
  getTokenKind,
8113
8379
  getTomorrow,
8114
8380
  getTypeSubtype,
8381
+ getUrlBase,
8382
+ getUrlDefaultPort,
8383
+ getUrlDynamics,
8115
8384
  getUrlPath,
8116
8385
  getUrlPort,
8117
8386
  getUrlProtocol,
@@ -8124,6 +8393,9 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8124
8393
  hasDefaultValue,
8125
8394
  hasIndexOf,
8126
8395
  hasKeys,
8396
+ hasOverlappingKeys,
8397
+ hasProtocol,
8398
+ hasProtocolPrefix,
8127
8399
  hasUrlPort,
8128
8400
  hasUrlQueryParameter,
8129
8401
  hasWhiteSpace,
@@ -8189,6 +8461,7 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8189
8461
  isCountryCode3,
8190
8462
  isCountryName,
8191
8463
  isCssAspectRatio,
8464
+ isCsv,
8192
8465
  isCurrentMetric,
8193
8466
  isCurrentUom,
8194
8467
  isCvsUrl,
@@ -8204,6 +8477,7 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8204
8477
  isDutchNewsUrl,
8205
8478
  isEbayUrl,
8206
8479
  isEmail,
8480
+ isEmpty,
8207
8481
  isEnergyMetric,
8208
8482
  isEnergyUom,
8209
8483
  isEqual,
@@ -8292,6 +8566,8 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8292
8566
  isPowerUom,
8293
8567
  isPressureMetric,
8294
8568
  isPressureUom,
8569
+ isProtocol,
8570
+ isProtocolPrefix,
8295
8571
  isReadonlyArray,
8296
8572
  isRecordToken,
8297
8573
  isRef,
@@ -8370,6 +8646,7 @@ var ExifSaturation = /* @__PURE__ */ ((ExifSaturation2) => {
8370
8646
  isUsNewsUrl,
8371
8647
  isUsStateAbbreviation,
8372
8648
  isUsStateName,
8649
+ isVariable,
8373
8650
  isVoltageMetric,
8374
8651
  isVoltageUom,
8375
8652
  isVolumeMetric,