]>
Lady’s Gitweb - Pisces/blob - i·r·i.js
   1 // ♓🌟 Piscēs ∷ i·r·i.js 
   2 // ==================================================================== 
   4 // Copyright © 2020, 2022 Lady [@ Lady’s Computer]. 
   6 // This Source Code Form is subject to the terms of the Mozilla Public 
   7 // License, v. 2.0. If a copy of the MPL was not distributed with this 
   8 // file, You can obtain one at <https://mozilla.org/MPL/2.0/>. 
  10 //deno-lint-ignore-file no-unused-vars 
  12 const sub
·delims 
= String
.raw
`[!\$&'()*+,;=]`; 
  13 const gen
·delims 
= String
.raw
`[:/?#\[\]@]`; 
  14 const reserved 
= String
.raw
`${gen·delims}|${sub·delims}`; 
  15 const unreserved 
= String
.raw
`[A-Za-z0-9\-\._~]`; 
  16 const pct
·encoded 
= String
.raw
`%[0-9A-Fa-f][0-9A-Fa-f]`; 
  17 const dec
·octet 
= String
.raw
 
  18   `[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]`; 
  19 const IPv4address 
= String
.raw
 
  20   `(?:${dec·octet})\.(?:${dec·octet})\.(?:${dec·octet})\.(?:${dec·octet})`; 
  21 const h16 
= String
.raw
`[0-9A-Fa-f]{1,4}`; 
  22 const ls32 
= String
.raw
`(?:${h16}):(?:${h16})|${IPv4address}`; 
  23 const IPv6address 
= String
.raw
 
  24   `(?:(?:${h16}):){6}(?:${ls32})|::(?:(?:${h16}):){5}(?:${ls32})|(?:${h16})?::(?:(?:${h16}):){4}(?:${ls32})|(?:(?:(?:${h16}):){0,1}(?:${h16}))?::(?:(?:${h16}):){3}(?:${ls32})|(?:(?:(?:${h16}):){0,2}(?:${h16}))?::(?:(?:${h16}):){2}(?:${ls32})|(?:(?:(?:${h16}):){0,3}(?:${h16}))?::(?:${h16}):(?:${ls32})|(?:(?:(?:${h16}):){0,4}(?:${h16}))?::(?:${ls32})|(?:(?:(?:${h16}):){0,5}(?:${h16}))?::(?:${h16})|(?:(?:(?:${h16}):){0,6}(?:${h16}))?::`; 
  25 const IPvFuture 
= String
.raw
 
  26   `v[0-9A-Fa-f]{1,}\.(?:${unreserved}|${sub·delims}|:)`; 
  27 const IP
·literal 
= String
.raw
`\[(?:${IPv6address}|${IPvFuture})\]`; 
  28 const port 
= String
.raw
`[0-9]*`; 
  29 const scheme 
= String
.raw
`[A-Za-z][A-Za-z0-9+\-\.]*`; 
  30 const iprivate 
= String
.raw
 
  31   `[\u{E000}-\u{F8FF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]`; 
  32 const ucschar 
= String
.raw
 
  33   `[\u{A0}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFEF}\u{10000}-\u{1FFFD}\u{20000}-\u{2FFFD}\u{30000}-\u{3FFFD}\u{40000}-\u{4FFFD}\u{50000}-\u{5FFFD}\u{60000}-\u{6FFFD}\u{70000}-\u{7FFFD}\u{80000}-\u{8FFFD}\u{90000}-\u{9FFFD}\u{A0000}-\u{AFFFD}\u{B0000}-\u{BFFFD}\u{C0000}-\u{CFFFD}\u{D0000}-\u{DFFFD}\u{E0000}-\u{EFFFD}]`; 
  34 const iunreserved 
= String
.raw
`[A-Za-z0-9\-\._~]|${ucschar}`; 
  35 const ipchar 
= String
.raw
 
  36   `${iunreserved}|${pct·encoded}|${sub·delims}|[:@]`; 
  37 const ifragment 
= String
.raw
`(?:${ipchar}|[/?])*`; 
  38 const iquery 
= String
.raw
`(?:${ipchar}|${iprivate}|[/?])*`; 
  39 const isegment
·nz
·nc 
= String
.raw
 
  40   `(?:${iunreserved}|${pct·encoded}|${sub·delims}|@)+`; 
  41 const isegment
·nz 
= String
.raw
`(?:${ipchar})+`; 
  42 const isegment 
= String
.raw
`(?:${ipchar})*`; 
  43 const ipath
·empty 
= String
.raw
``; 
  44 const ipath
·rootless 
= String
.raw
 
  45   `(?:${isegment·nz})(?:/(?:${isegment}))*`; 
  46 const ipath
·noscheme 
= String
.raw
 
  47   `(?:${isegment·nz·nc})(?:/(?:${isegment}))*`; 
  48 const ipath
·absolute 
= String
.raw
 
  49   `/(?:(?:${isegment·nz})(?:/(?:${isegment}))*)?`; 
  50 const ipath
·abempty 
= String
.raw
`(?:/(?:${isegment}))*`; 
  51 const ipath 
= String
.raw
 
  52   `${ipath·abempty}|${ipath·absolute}|${ipath·noscheme}|${ipath·rootless}|${ipath·empty}`; 
  53 const ireg
·name 
= String
.raw
 
  54   `(?:${iunreserved}|${pct·encoded}|${sub·delims})*`; 
  55 const ihost 
= String
.raw
`${IP·literal}|${IPv4address}|${ireg·name}`; 
  56 const iuserinfo 
= String
.raw
 
  57   `(?:${iunreserved}|${pct·encoded}|${sub·delims}|:)*`; 
  58 const iauthority 
= String
.raw
 
  59   `(?:(${iuserinfo})@)?(${ihost})(?::(${port}))?`; 
  60 const irelative
·part 
= String
.raw
 
  61   `//(${iauthority})(${ipath·abempty})|(${ipath·absolute})|(${ipath·noscheme})|(${ipath·empty})`; 
  62 const irelative
·ref 
= String
.raw
 
  63   `(${irelative·part})(?:\?(${iquery}))?(?:#(${ifragment}))?`; 
  64 const ihier
·part 
= String
.raw
 
  65   `//(${iauthority})(${ipath·abempty})|(${ipath·absolute})|(${ipath·rootless})|(${ipath·empty})`; 
  66 const absolute
·IRI 
= String
.raw
 
  67   `(${scheme}):(${ihier·part})(?:\?(${iquery}))?`; 
  68 const IRI 
= String
.raw
 
  69   `(${scheme}):(${ihier·part})(?:\?(${iquery}))?(?:#(${ifragment}))?`; 
  70 const IRI
·reference 
= String
.raw
`(${IRI})|(${irelative·ref})`; 
  72 export const isI
·R
·I 
= ($) => 
  73   typeof $ == "string" && isI
·R
·I
.regExp
.test($); 
  74 Object
.defineProperty(isI
·R
·I
, "regExp", { 
  77   get: () => new RegExp(`^(?:${IRI})$`, "u"), 
 
This page took 0.072623 seconds  and 5 git commands  to generate.