@nuka9510/simple-validation 1.1.4 → 1.2.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/README.md +55 -42
- package/dist/esm/index.min.mjs +1 -0
- package/dist/esm/index.mjs +397 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/js-util.min.mjs +1 -0
- package/dist/esm/js-util.mjs +92 -0
- package/dist/esm/js-util.mjs.map +1 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -819
- package/dist/js/index.js +401 -0
- package/dist/js/index.js.map +1 -0
- package/dist/js/index.min.js +2 -0
- package/dist/js-util.d.ts +2 -0
- package/dist/js-util.js +2 -0
- package/dist/{validation.mjs → validation.js} +16 -16
- package/package.json +24 -7
- package/dist/index.d.mts +0 -3
- package/dist/index.min.js +0 -1
- package/dist/index.mjs +0 -3
- package/src/index.mts +0 -7
- package/src/index.ts +0 -7
- package/src/validation.mts +0 -344
- package/tsconfig.json +0 -18
- /package/dist/{validation.d.mts → validation.d.ts} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** @type {import("../index.d.ts")} */
|
|
2
|
+
var simpleValidation;(()=>{"use strict";var r={d:(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o:(r,e)=>Object.prototype.hasOwnProperty.call(r,e),r:r=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})}},e={};r.r(e),r.d(e,{Validation:()=>w});var t=function(){return t=Object.assign||function(r){for(var e,t=1,a=arguments.length;t<a;t++)for(var s in e=arguments[t])Object.prototype.hasOwnProperty.call(e,s)&&(r[s]=e[s]);return r},t.apply(this,arguments)};function a(r,e){for(var a={},s={},i=r.split("~~"),o=!1,l=0;i.length>l;l++){for(var c=i[l].split("~"),n=0;n<c.length;n+=2){var u=c[n],p=c[n+1],g="&"+u+";";a[g]=p,o&&(a["&"+u]=p),s[p]=g}o=!0}return e?{entities:t(t({},a),e.entities),characters:t(t({},s),e.characters)}:{entities:a,characters:s}}var s={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},i={};i.xml=a("lt~<~gt~>~quot~\"~apos~'~amp~&"),i.html4=a("apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~~zwj~~lrm~~rlm~~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~\"~amp~&~lt~<~gt~>"),i.html5=a('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~~InvisibleTimes~~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~~NegativeThickSpace~~NegativeThinSpace~~NegativeVeryThinSpace~~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~\t~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~ ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®',i.html4);var o={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},l=String.fromCodePoint||function(r){return String.fromCharCode(Math.floor((r-65536)/1024)+55296,(r-65536)%1024+56320)},c=String.prototype.codePointAt?function(r,e){return r.codePointAt(e)}:function(r,e){return 1024*(r.charCodeAt(e)-55296)+r.charCodeAt(e+1)-56320+65536},n=function(){return n=Object.assign||function(r){for(var e,t=1,a=arguments.length;t<a;t++)for(var s in e=arguments[t])Object.prototype.hasOwnProperty.call(e,s)&&(r[s]=e[s]);return r},n.apply(this,arguments)},u=n(n({},i),{all:i.html5}),p={specialChars:/[<>'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF\uDC00-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]?/g},g="specialChars",d="body",m=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,h=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,f={xml:{strict:m,attribute:h,body:s.xml},html4:{strict:m,attribute:h,body:s.html4},html5:{strict:m,attribute:h,body:s.html5}},b=n(n({},f),{all:f.html5}),q=String.fromCharCode,y=q(65533);class v{static empty(r){let e=[void 0,null,0,""].includes(r);if(!e){if(r.constructor==Object)return 0==Object.keys(r).length&&0==Object.keys(Object.getPrototypeOf(r)).length;try{if(r.constructor==NodeList)return 0==r.length}catch(r){}if(Array.isArray(r))return 0==r.length}return e}static isNumber(r,e=!1){let t=!Number.isNaN(Number(r))&&["number","string"].includes(typeof r)&&!/^\s*$/.test(`${r}`);return t&&e&&(t="number"==typeof r),t}static isObject(r){return r?.constructor==Object}static numberFormat(r,e=0,t=".",a=","){if(!v.isNumber(r,!0)||!v.isNumber(e,!0))return null;const s=String(r).split(".");return s[0]=s[0].replace(/\B(?=(\d{3})+(?!\d))/g,a),v.empty(s[1])||(s[1]=s[1].substring(0,e)),v.empty(s[1])?s[0]:s[0].concat(t,s[1])}static strftime(r,e){const t=["January","February","March","April","May","June","July","August","September","October","November","December"],a=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];return(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/(%{1})/g,"\\$1")).replace(/(\\%){2}/g,"%")).replace(/\\%Y/g,String(r.getFullYear()))).replace(/\\%y/g,String(r.getFullYear()).replace(/^\d+(\d{2})$/,"$1"))).replace(/\\%B/g,t[r.getMonth()])).replace(/\\%b/g,t[r.getMonth()].replace(/^(\w{3})\w*$/,"$1"))).replace(/\\%m/g,String(r.getMonth()+1).replace(/^(\d{1})$/,"0$1"))).replace(/\\%d/g,String(r.getDate()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%A/g,a[r.getDay()])).replace(/\\%a/g,a[r.getDay()].replace(/^(\w{3})\w*$/,"$1"))).replace(/\\%H/g,String(r.getHours()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%I/g,String(r.getHours()>12?r.getHours()-12:r.getHours()).replace(/^0$/,"12").replace(/^(\d{1})$/,"0$1"))).replace(/\\%p/g,r.getHours()<12?"AM":"PM")).replace(/\\%M/g,String(r.getMinutes()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%S/g,String(r.getSeconds()).replace(/^(\d{1})$/,"0$1"))}static checkdate(r,e,t){const a=new Date(r,e-1,t);return a.getFullYear()==r&&a.getMonth()+1==e&&a.getDate()==t}static equaldate(r,e=new Date){return v.strftime(r,"%Y-%m-%d")==v.strftime(e,"%Y-%m-%d")}static getWeek(r,e=!0){const t=["일요일","월요일","화요일","수요일","목요일","금요일","토요일"][r.getDay()];return e?t:t.replace(/^([ㄱ-ㅎㅏ-ㅣ가-힣]{1})[ㄱ-ㅎㅏ-ㅣ가-힣]+$/,"$1")}static addDate(r,e){return new Date(r.getFullYear()+(v.isNumber(e.year,!0)?e.year:0),r.getMonth()+(v.isNumber(e.month,!0)?e.month:0),r.getDate()+(v.isNumber(e.day,!0)?e.day:0),r.getHours()+(v.isNumber(e.hour,!0)?e.hour:0),r.getMinutes()+(v.isNumber(e.minute,!0)?e.minute:0),r.getSeconds()+(v.isNumber(e.second,!0)?e.second:0),r.getMilliseconds()+(v.isNumber(e.millisecond,!0)?e.millisecond:0))}static subDate(r,e){return new Date(r.getFullYear()-(v.isNumber(e.year,!0)?e.year:0),r.getMonth()-(v.isNumber(e.month,!0)?e.month:0),r.getDate()-(v.isNumber(e.day,!0)?e.day:0),r.getHours()-(v.isNumber(e.hour,!0)?e.hour:0),r.getMinutes()-(v.isNumber(e.minute,!0)?e.minute:0),r.getSeconds()-(v.isNumber(e.second,!0)?e.second:0),r.getMilliseconds()-(v.isNumber(e.millisecond,!0)?e.millisecond:0))}static xor(r,e){return!(r&&e)&&(r||e)}static formDataToJson(r){return JSON.stringify(Object.fromEntries([...new Set(r.keys())].map(((...e)=>[e[0],r.getAll(e[0]).length>1?r.getAll(e[0]):r.get(e[0])]))))}static percentage(r,e){return r*(e/100)}static ratio(r,e,t=!0){const a=t?[1,0]:[0,1];return e*r[a[0]]/r[a[1]]}static arithmeticSequence(r,e,t,a){return r+(a-e)*t}static geometricSequence(r,e,t,a){return r/t**(e-1)*t**(a-1)}static decimalAdjust(r,e,t=0){const[a,s="0"]=e.toString().split("e"),i=Math[r](Number(`${a}e${parseInt(s)+t}`)),[o,l="0"]=i.toString().split("e");return Number(`${o}e${parseInt(l)-t}`)}static encodeHtmlEntity(r){return function(r){if(!r)return"";var e=p[g],t=u.all.characters;return String.prototype.replace.call(r,e,(function(r){var e=t[r];if(!e){var a=r.length>1?c(r,0):r.charCodeAt(0);e="&#"+a+";"}return e}))}(r)}static decodeHtmlEntity(r){return function(r){var e="all",t=d;if(!r)return"";var a=b[e][t],s=u[e].entities;return r.replace(a,(function(r){return function(r,e){var t=r,a=(r[r.length-1],e[r]);if(a)t=a;else if("&"===r[0]&&"#"===r[1]){var s=r[2],i="x"==s||"X"==s?parseInt(r.substr(3),16):parseInt(r.substr(2));t=i>=1114111?y:i>65535?l(i):q(o[i]||i)}return t}(r,s)}))}(r)}static copy(r){if(v.isObject(r)){const e={};for(const t in r)e[t]=v.copy(r[t]);return e}if(Array.isArray(r)){const e=[];for(const t of r)e.push(v.copy(t));return e}return r}static numRange(r,e){let t=e-r;const a=t>0;return t=Math.abs(t)+1,[...new Array(t)].map(((...e)=>e[1]*(a?1:-1)+r))}static arrayChunk(r,e){if(!v.isNumber(e,!0))throw new TypeError("size는 숫자 타입 이어야 합니다.");if(e<=0&&Number.isInteger(e))throw new RangeError("size는 0보다 큰 정수여야 합니다.");const t=[];return v.numRange(0,v.decimalAdjust("ceil",r.length/e)+(r.length>0?-1:0)).forEach(((...a)=>{t.push(r.slice(a[0]*e,(a[0]+1)*e))})),t}static get(r,e){return e(r)}static getOrElse(r,e,t=r=>r){return t(r)??e}}class w{result;#r;#e;#t;constructor(r){this.init(r)}init(r=null){this.#a(),this.#s(),this.#i(),this.#o(r?.regex)}#a(){this.result={flag:!0,alertMsg:null,el:null}}#s(){this.#r={}}#i(){this.#e={}}#o(r=null){this.#t=!v.empty(r)&&v.isObject(r)?{...this.#t,...r}:{...this.#t}}#l(r){const e=r.getAttribute("required");v.empty(e)||("radio"==r.type?this.#c(r):v.empty(r.value)&&(this.result.flag=!1,this.result.alertMsg=`'${e}'을/를 입력해 주세요.`,this.result.el=r))}#n(){for(const r in this.#e){const e=this.#e[r][0];if(!this.#e[r].some(((...r)=>r[0].checked))){this.result.flag=!1,this.result.alertMsg=`'${r}'을/를 선택해주세요.`,this.result.el=e;break}}}#u(r){const e=r.dataset.svPattern,t=r.dataset.svDate;if(v.empty(e)||(v.empty(this.#r.el)&&(this.#r.el=[]),this.#r.el?.push(r)),!v.empty(t)){const e=r.dataset.svDateState;switch(e){case"S":case"E":v.empty(this.#r.date)&&(this.#r.date={}),v.empty(this.#r.date[t])&&(this.#r.date[t]={}),this.#r.date[t][e]=r}}}#c(r){const e=r.getAttribute("required");v.empty(e)||(v.empty(this.#e[e])?this.#e[e]=[r]:this.#e[e].push(r))}#p(){for(const r in this.#r){if(!this.result.flag)break;switch(r){case"date":this.#g(this.#r[r]);break;case"el":this.#d(this.#r[r])}}}#g(r){for(const e in r){if(!this.result.flag)break;{const t=r[e].S.value,a=r[e].E.value;if(!v.empty(t)&&!v.empty(a)){const s=r[e].S.dataset.svInputName||r[e].E.dataset.svInputName,i=r[e].S.getAttribute("required")||r[e].E.getAttribute("required");new Date(t).getTime()>new Date(a).getTime()&&(this.result.flag=!1,this.result.alertMsg=`'${s||i}'의 시작일이 종료일 보다 늦습니다.`,this.result.el=r[e].S)}}}}#d(r){if(Array.isArray(r))for(const e of r){const r=e.dataset.svPattern,t=e.dataset.svInputName,a=e.getAttribute("required"),s=e.value;if(Object.keys(this.#t).includes(r)&&!v.empty(s)&&!this.#t[r].test(s)){this.result.flag=!1,this.result.alertMsg=`'${t||a}'의 형식이 올바르지 않습니다.`,this.result.el=e;break}}else{const e=r.dataset.svPattern,t=r.dataset.svInputName,a=r.getAttribute("required"),s=r.value;Object.keys(this.#t).includes(e)&&(v.empty(s)||this.#t[e].test(s)||(this.result.flag=!1,this.result.alertMsg=`'${t||a}'의 형식이 올바르지 않습니다.`,this.result.el=r))}}#m(){for(const r in this.#r)if("el"==r&&this.result.flag)for(const e of this.#r[r]){const r=e.dataset.svInputName,t=e.getAttribute("required"),a=e.value.length;if(!(e instanceof HTMLSelectElement))if(e.minLength>=0&&e.maxLength>=0){if(a<e.minLength||a>e.maxLength){this.result.flag=!1,this.result.alertMsg=`'${r||t}'은/는 ${e.minLength}~${e.maxLength}자 이내로 입력해주세요.`,this.result.el=e;break}}else if(e.minLength>=0&&e.maxLength<0){if(a<e.minLength){this.result.flag=!1,this.result.alertMsg=`'${r||t}'은/는 ${e.minLength}자 이상으로 입력해주세요.`,this.result.el=e;break}}else if(e.minLength<0&&e.maxLength>=0&&a>e.maxLength){this.result.flag=!1,this.result.alertMsg=`'${r||t}'은/는 ${e.maxLength}자 이하로 입력해주세요.`,this.result.el=e;break}}else if(!this.result.flag)break}run(r){this.init();for(const e of r.elements){if(!this.result.flag)break;["INPUT","SELECT","TEXTAREA"].includes(e.tagName)&&(e.disabled||(this.#l(e),this.#u(e)))}this.result.flag&&this.#n(),this.result.flag&&this.#p(),this.result.flag&&this.#m()}}simpleValidation=e})();
|
package/dist/js-util.js
ADDED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Util } from "@nuka9510/js-util";
|
|
2
2
|
/**
|
|
3
3
|
* Validation Check를 위한 객체
|
|
4
4
|
*/
|
|
@@ -70,8 +70,8 @@ export default class Validation {
|
|
|
70
70
|
#radioInit() { this.#radio = {}; }
|
|
71
71
|
/** validation check에 사용할 정규식을 담은 객체 초기화 */
|
|
72
72
|
#regexInit(regex = null) {
|
|
73
|
-
this.#regex = (!
|
|
74
|
-
|
|
73
|
+
this.#regex = (!Util.empty(regex) &&
|
|
74
|
+
Util.isObject(regex))
|
|
75
75
|
? {
|
|
76
76
|
...this.#regex,
|
|
77
77
|
...regex
|
|
@@ -81,11 +81,11 @@ export default class Validation {
|
|
|
81
81
|
/** el에 있는 Element들을 required check한다. */
|
|
82
82
|
#required(el) {
|
|
83
83
|
const required = el.getAttribute('required');
|
|
84
|
-
if (!
|
|
84
|
+
if (!Util.empty(required)) {
|
|
85
85
|
if (el.type == 'radio') {
|
|
86
86
|
this.#setRadio(el);
|
|
87
87
|
}
|
|
88
|
-
else if (
|
|
88
|
+
else if (Util.empty(el.value)) {
|
|
89
89
|
this.result.flag = false;
|
|
90
90
|
this.result.alertMsg = `'${required}'을/를 입력해 주세요.`;
|
|
91
91
|
this.result.el = el;
|
|
@@ -107,21 +107,21 @@ export default class Validation {
|
|
|
107
107
|
/** el에 Element를 담는다. */
|
|
108
108
|
#setEl(el) {
|
|
109
109
|
const pattern = el.dataset['svPattern'], date = el.dataset['svDate'];
|
|
110
|
-
if (!
|
|
111
|
-
if (
|
|
110
|
+
if (!Util.empty(pattern)) {
|
|
111
|
+
if (Util.empty(this.#el.el)) {
|
|
112
112
|
this.#el.el = [];
|
|
113
113
|
}
|
|
114
114
|
this.#el.el?.push(el);
|
|
115
115
|
}
|
|
116
|
-
if (!
|
|
116
|
+
if (!Util.empty(date)) {
|
|
117
117
|
const state = el.dataset['svDateState'];
|
|
118
118
|
switch (state) {
|
|
119
119
|
case 'S':
|
|
120
120
|
case 'E':
|
|
121
|
-
if (
|
|
121
|
+
if (Util.empty(this.#el.date)) {
|
|
122
122
|
this.#el.date = {};
|
|
123
123
|
}
|
|
124
|
-
if (
|
|
124
|
+
if (Util.empty(this.#el.date[date])) {
|
|
125
125
|
this.#el.date[date] = {};
|
|
126
126
|
}
|
|
127
127
|
this.#el.date[date][state] = el;
|
|
@@ -132,8 +132,8 @@ export default class Validation {
|
|
|
132
132
|
/** `#radio`에 type이 'radio'인 Element를 담는다. */
|
|
133
133
|
#setRadio(el) {
|
|
134
134
|
const required = el.getAttribute('required');
|
|
135
|
-
if (!
|
|
136
|
-
if (
|
|
135
|
+
if (!Util.empty(required)) {
|
|
136
|
+
if (Util.empty(this.#radio[required])) {
|
|
137
137
|
this.#radio[required] = [el];
|
|
138
138
|
}
|
|
139
139
|
else {
|
|
@@ -172,8 +172,8 @@ export default class Validation {
|
|
|
172
172
|
for (const i in el) {
|
|
173
173
|
if (this.result.flag) {
|
|
174
174
|
const sdate = el[i].S.value, edate = el[i].E.value;
|
|
175
|
-
if (!
|
|
176
|
-
!
|
|
175
|
+
if (!Util.empty(sdate) &&
|
|
176
|
+
!Util.empty(edate)) {
|
|
177
177
|
const inputName = el[i].S.dataset['svInputName'] ||
|
|
178
178
|
el[i].E.dataset['svInputName'], required = el[i].S.getAttribute('required') ||
|
|
179
179
|
el[i].E.getAttribute('required');
|
|
@@ -195,7 +195,7 @@ export default class Validation {
|
|
|
195
195
|
for (const i of el) {
|
|
196
196
|
const pattern = i.dataset['svPattern'], inputName = i.dataset['svInputName'], required = i.getAttribute('required'), val = i.value;
|
|
197
197
|
if (Object.keys(this.#regex).includes(pattern)) {
|
|
198
|
-
if (!
|
|
198
|
+
if (!Util.empty(val) &&
|
|
199
199
|
!this.#regex[pattern].test(val)) {
|
|
200
200
|
this.result.flag = false;
|
|
201
201
|
this.result.alertMsg = `'${inputName || required}'의 형식이 올바르지 않습니다.`;
|
|
@@ -208,7 +208,7 @@ export default class Validation {
|
|
|
208
208
|
else {
|
|
209
209
|
const pattern = el.dataset['svPattern'], inputName = el.dataset['svInputName'], required = el.getAttribute('required'), val = el.value;
|
|
210
210
|
if (Object.keys(this.#regex).includes(pattern)) {
|
|
211
|
-
if (!
|
|
211
|
+
if (!Util.empty(val) &&
|
|
212
212
|
!this.#regex[pattern].test(val)) {
|
|
213
213
|
this.result.flag = false;
|
|
214
214
|
this.result.alertMsg = `'${inputName || required}'의 형식이 올바르지 않습니다.`;
|
package/package.json
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuka9510/simple-validation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "simple validation util for web front-end",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"module": "./dist/esm/index.min.mjs",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/esm/index.min.mjs"
|
|
11
|
+
},
|
|
12
|
+
"./js-util": {
|
|
13
|
+
"types": "./dist/js-util.d.ts",
|
|
14
|
+
"import": "./dist/esm/js-util.min.mjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"@types",
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
6
21
|
"scripts": {
|
|
7
22
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
|
-
"build": "rm -r -f dist && tsc && webpack --config webpack.config.
|
|
23
|
+
"build": "rm -r -f dist && tsc && webpack --config webpack.config.cjs",
|
|
9
24
|
"postversion": "git push && git push --tag && npm publish --access=public"
|
|
10
25
|
},
|
|
11
26
|
"repository": {
|
|
@@ -13,11 +28,13 @@
|
|
|
13
28
|
"url": "git+https://github.com/nuka9510/simple-validation.git"
|
|
14
29
|
},
|
|
15
30
|
"keywords": [
|
|
31
|
+
"util",
|
|
16
32
|
"web",
|
|
17
|
-
"module",
|
|
18
33
|
"front-end",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
34
|
+
"validation",
|
|
35
|
+
"module",
|
|
36
|
+
"ES Module",
|
|
37
|
+
"esm"
|
|
21
38
|
],
|
|
22
39
|
"author": "nuka9510",
|
|
23
40
|
"license": "MIT",
|
|
@@ -33,6 +50,6 @@
|
|
|
33
50
|
"webpack-cli": "^6.0.1"
|
|
34
51
|
},
|
|
35
52
|
"dependencies": {
|
|
36
|
-
"@nuka9510/js-util": "^1.
|
|
53
|
+
"@nuka9510/js-util": "^1.2.2"
|
|
37
54
|
}
|
|
38
55
|
}
|
package/dist/index.d.mts
DELETED
package/dist/index.min.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var simpleValidation;(()=>{"use strict";var e={d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{JUtil:()=>r,Validation:()=>s});class r{static empty(e){let t=[void 0,null,0,""].includes(e);return t||(e.constructor==Object?t=0==Object.keys(e).length&&0==Object.keys(Object.getPrototypeOf(e)).length:(e.constructor==NodeList||Array.isArray(e))&&(t=0==e.length)),t}static isNumber(e,t=!1){let r=!Number.isNaN(Number(e))&&["number","string"].includes(typeof e)&&!/^\s*$/.test(`${e}`);return r&&t&&(r="number"==typeof e),r}static isObject(e){return e?.constructor==Object}static numberFormat(e,t=0,s=".",i=","){if(!r.isNumber(e,!0)||!r.isNumber(t,!0))return null;const a=String(e).split(".");return a[0]=a[0].replace(/\B(?=(\d{3})+(?!\d))/g,i),r.empty(a[1])||(a[1]=a[1].substring(0,t)),r.empty(a[1])?a[0]:a[0].concat(s,a[1])}static strftime(e,t){const r=["January","February","March","April","May","June","July","August","September","October","November","December"],s=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace(/(%{1})/g,"\\$1")).replace(/(\\%){2}/g,"%")).replace(/\\%Y/g,String(e.getFullYear()))).replace(/\\%y/g,String(e.getFullYear()).replace(/^\d+(\d{2})$/,"$1"))).replace(/\\%B/g,r[e.getMonth()])).replace(/\\%b/g,r[e.getMonth()].replace(/^(\w{3})\w*$/,"$1"))).replace(/\\%m/g,String(e.getMonth()+1).replace(/^(\d{1})$/,"0$1"))).replace(/\\%d/g,String(e.getDate()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%A/g,s[e.getDay()])).replace(/\\%a/g,s[e.getDay()].replace(/^(\w{3})\w*$/,"$1"))).replace(/\\%H/g,String(e.getHours()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%I/g,String(e.getHours()>12?e.getHours()-12:e.getHours()).replace(/^0$/,"12").replace(/^(\d{1})$/,"0$1"))).replace(/\\%p/g,e.getHours()<12?"AM":"PM")).replace(/\\%M/g,String(e.getMinutes()).replace(/^(\d{1})$/,"0$1"))).replace(/\\%S/g,String(e.getSeconds()).replace(/^(\d{1})$/,"0$1"))}static checkdate(e,t,r){const s=new Date(e,t-1,r);return s.getFullYear()==e&&s.getMonth()+1==t&&s.getDate()==r}static equaldate(e,t=new Date){return r.strftime(e,"%Y-%m-%d")==r.strftime(t,"%Y-%m-%d")}static getWeek(e,t=!0){const r=["일요일","월요일","화요일","수요일","목요일","금요일","토요일"][e.getDay()];return t?r:r.replace(/^([ㄱ-ㅎㅏ-ㅣ가-힣]{1})[ㄱ-ㅎㅏ-ㅣ가-힣]+$/,"$1")}static addDate(e,t){return new Date(e.getFullYear()+(r.isNumber(t.year,!0)?t.year:0),e.getMonth()+(r.isNumber(t.month,!0)?t.month:0),e.getDate()+(r.isNumber(t.day,!0)?t.day:0),e.getHours()+(r.isNumber(t.hour,!0)?t.hour:0),e.getMinutes()+(r.isNumber(t.minute,!0)?t.minute:0),e.getSeconds()+(r.isNumber(t.second,!0)?t.second:0),e.getMilliseconds()+(r.isNumber(t.millisecond,!0)?t.millisecond:0))}static subDate(e,t){return new Date(e.getFullYear()-(r.isNumber(t.year,!0)?t.year:0),e.getMonth()-(r.isNumber(t.month,!0)?t.month:0),e.getDate()-(r.isNumber(t.day,!0)?t.day:0),e.getHours()-(r.isNumber(t.hour,!0)?t.hour:0),e.getMinutes()-(r.isNumber(t.minute,!0)?t.minute:0),e.getSeconds()-(r.isNumber(t.second,!0)?t.second:0),e.getMilliseconds()-(r.isNumber(t.millisecond,!0)?t.millisecond:0))}static xor(e,t){return!(e&&t)&&(e||t)}static formDataToJson(e){return JSON.stringify(Object.fromEntries([...new Set(e.keys())].map(((...t)=>[t[0],e.getAll(t[0]).length>1?e.getAll(t[0]):e.get(t[0])]))))}static percentage(e,t){return e*(t/100)}static ratio(e,t,r=!0){const s=r?[1,0]:[0,1];return t*e[s[0]]/e[s[1]]}static arithmeticSequence(e,t,r,s){return e+(s-t)*r}static geometricSequence(e,t,r,s){return e/r**(t-1)*r**(s-1)}static decimalAdjust(e,t,r=0){const[s,i="0"]=t.toString().split("e"),a=Math[e](Number(`${s}e${parseInt(i)+r}`)),[n,l="0"]=a.toString().split("e");return Number(`${n}e${parseInt(l)-r}`)}static encodeHtmlEntity(e){const t=document.createElement("textarea");return t.innerText=e,t.innerHTML}static decodeHtmlEntity(e){const t=document.createElement("textarea");return t.innerHTML=e,t.innerText}static copy(e){if(r.isObject(e)){const t={};for(const s in e)t[s]=r.copy(e[s]);return t}if(Array.isArray(e)){const t=[];for(const s of e)t.push(r.copy(s));return t}return e}static numRange(e,t){let r=t-e;const s=r>0;return r=Math.abs(r)+1,[...new Array(r)].map(((...t)=>t[1]*(s?1:-1)+e))}static arrayChunk(e,t){if(!r.isNumber(t,!0))throw new TypeError("size는 숫자 타입 이어야 합니다.");if(t<=0&&Number.isInteger(t))throw new RangeError("size는 0보다 큰 정수여야 합니다.");const s=[];return r.numRange(0,r.decimalAdjust("ceil",e.length/t)+(e.length>0?-1:0)).forEach(((...r)=>{s.push(e.slice(r[0]*t,(r[0]+1)*t))})),s}}class s{result;#e;#t;#r;constructor(e){this.init(e)}init(e=null){this.#s(),this.#i(),this.#a(),this.#n(e?.regex)}#s(){this.result={flag:!0,alertMsg:null,el:null}}#i(){this.#e={}}#a(){this.#t={}}#n(e=null){this.#r=!r.empty(e)&&r.isObject(e)?{...this.#r,...e}:{...this.#r}}#l(e){const t=e.getAttribute("required");r.empty(t)||("radio"==e.type?this.#u(e):r.empty(e.value)&&(this.result.flag=!1,this.result.alertMsg=`'${t}'을/를 입력해 주세요.`,this.result.el=e))}#c(){for(const e in this.#t){const t=this.#t[e][0];if(!this.#t[e].some(((...e)=>e[0].checked))){this.result.flag=!1,this.result.alertMsg=`'${e}'을/를 선택해주세요.`,this.result.el=t;break}}}#o(e){const t=e.dataset.svPattern,s=e.dataset.svDate;if(r.empty(t)||(r.empty(this.#e.el)&&(this.#e.el=[]),this.#e.el?.push(e)),!r.empty(s)){const t=e.dataset.svDateState;switch(t){case"S":case"E":r.empty(this.#e.date)&&(this.#e.date={}),r.empty(this.#e.date[s])&&(this.#e.date[s]={}),this.#e.date[s][t]=e}}}#u(e){const t=e.getAttribute("required");r.empty(t)||(r.empty(this.#t[t])?this.#t[t]=[e]:this.#t[t].push(e))}#g(){for(const e in this.#e){if(!this.result.flag)break;switch(e){case"date":this.#h(this.#e[e]);break;case"el":this.#d(this.#e[e])}}}#h(e){for(const t in e){if(!this.result.flag)break;{const s=e[t].S.value,i=e[t].E.value;if(!r.empty(s)&&!r.empty(i)){const r=e[t].S.dataset.svInputName||e[t].E.dataset.svInputName,a=e[t].S.getAttribute("required")||e[t].E.getAttribute("required");new Date(s).getTime()>new Date(i).getTime()&&(this.result.flag=!1,this.result.alertMsg=`'${r||a}'의 시작일이 종료일 보다 늦습니다.`,this.result.el=e[t].S)}}}}#d(e){if(Array.isArray(e))for(const t of e){const e=t.dataset.svPattern,s=t.dataset.svInputName,i=t.getAttribute("required"),a=t.value;if(Object.keys(this.#r).includes(e)&&!r.empty(a)&&!this.#r[e].test(a)){this.result.flag=!1,this.result.alertMsg=`'${s||i}'의 형식이 올바르지 않습니다.`,this.result.el=t;break}}else{const t=e.dataset.svPattern,s=e.dataset.svInputName,i=e.getAttribute("required"),a=e.value;Object.keys(this.#r).includes(t)&&(r.empty(a)||this.#r[t].test(a)||(this.result.flag=!1,this.result.alertMsg=`'${s||i}'의 형식이 올바르지 않습니다.`,this.result.el=e))}}#m(){for(const e in this.#e)if("el"==e&&this.result.flag)for(const t of this.#e[e]){const e=t.dataset.svInputName,r=t.getAttribute("required"),s=t.value.length;if(!(t instanceof HTMLSelectElement))if(t.minLength>=0&&t.maxLength>=0){if(s<t.minLength||s>t.maxLength){this.result.flag=!1,this.result.alertMsg=`'${e||r}'은/는 ${t.minLength}~${t.maxLength}자 이내로 입력해주세요.`,this.result.el=t;break}}else if(t.minLength>=0&&t.maxLength<0){if(s<t.minLength){this.result.flag=!1,this.result.alertMsg=`'${e||r}'은/는 ${t.minLength}자 이상으로 입력해주세요.`,this.result.el=t;break}}else if(t.minLength<0&&t.maxLength>=0&&s>t.maxLength){this.result.flag=!1,this.result.alertMsg=`'${e||r}'은/는 ${t.maxLength}자 이하로 입력해주세요.`,this.result.el=t;break}}else if(!this.result.flag)break}run(e){this.init();for(const t of e.elements){if(!this.result.flag)break;["INPUT","SELECT","TEXTAREA"].includes(t.tagName)&&(t.disabled||(this.#l(t),this.#o(t)))}this.result.flag&&this.#c(),this.result.flag&&this.#g(),this.result.flag&&this.#m()}}simpleValidation=t})();
|
package/dist/index.mjs
DELETED
package/src/index.mts
DELETED
package/src/index.ts
DELETED
package/src/validation.mts
DELETED
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
import { config, el, InputElement, radio, regex, result } from "../@types/validation";
|
|
2
|
-
import { JUtil } from "@nuka9510/js-util";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Validation Check를 위한 객체
|
|
6
|
-
*/
|
|
7
|
-
export default class Validation {
|
|
8
|
-
/** 결과 값 객체 */
|
|
9
|
-
result: result;
|
|
10
|
-
|
|
11
|
-
/** validation check할 Element를 담는 객체 */
|
|
12
|
-
#el: el;
|
|
13
|
-
|
|
14
|
-
/** validation check할 radio Element를 담는 객체 */
|
|
15
|
-
#radio: radio;
|
|
16
|
-
|
|
17
|
-
/** validation check에 사용할 정규식을 담은 객체 */
|
|
18
|
-
#regex: regex;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Validation Check를 위한 객체
|
|
22
|
-
*
|
|
23
|
-
* ```
|
|
24
|
-
* <form name="form">
|
|
25
|
-
* <input type="text" name="text" data-sv-pattern="password" data-sv-input-name="비밀번호" minlength="0" maxlength="10">
|
|
26
|
-
* <input type="text" name="text" data-sv-pattern="password" minlength="0" maxlength="10" required="비밀번호">
|
|
27
|
-
* <input type="date" name="sdate1" data-sv-date="date1" data-sv-date-state="S" data-sv-input-name="검색일1">
|
|
28
|
-
* <input type="date" name="edate1" data-sv-date="date1" data-sv-date-state="E" data-sv-input-name="검색일1">
|
|
29
|
-
* <input type="date" name="sdate2" data-sv-date="date2" data-sv-date-state="S" required="검색일2">
|
|
30
|
-
* <input type="date" name="edate2" data-sv-date="date2" data-sv-date-state="E" required="검색일2">
|
|
31
|
-
* </form>
|
|
32
|
-
* <script type="importmap">
|
|
33
|
-
* {
|
|
34
|
-
* "imports": {
|
|
35
|
-
* "@nuka9510/js-util": "https://cdn.jsdelivr.net/npm/@nuka9510/js-util/dist/index.js",
|
|
36
|
-
* "@nuka9510/simple-validation": "https://cdn.jsdelivr.net/npm/@nuka9510/simple-validation/dist/index.js"
|
|
37
|
-
* }
|
|
38
|
-
* }
|
|
39
|
-
* </script>
|
|
40
|
-
* <script type="module">
|
|
41
|
-
* import { SValidation } from "@nuka9510/simple-validation";
|
|
42
|
-
*
|
|
43
|
-
* const validation = new SValidation({regex: {password: /^[\S!?@#$%^&*():;+-=~{}<>\_\[\]\|\\\"\'\,\.\/\`]{6,10}$/}});
|
|
44
|
-
*
|
|
45
|
-
* validation.run(form);
|
|
46
|
-
*
|
|
47
|
-
* if (validation.result.flag) {
|
|
48
|
-
* form.submit();
|
|
49
|
-
* } else {
|
|
50
|
-
* alert(validation.result.alertMsg);
|
|
51
|
-
* validation.result.el.focus();
|
|
52
|
-
* }
|
|
53
|
-
* </script>
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
constructor(
|
|
57
|
-
config?: config
|
|
58
|
-
) { this.init(config); }
|
|
59
|
-
|
|
60
|
-
/** 객체 초기화 */
|
|
61
|
-
init(
|
|
62
|
-
/** validation 초기화를 위한 객체 */ config: config | null = null
|
|
63
|
-
): void {
|
|
64
|
-
this.#resultInit();
|
|
65
|
-
this.#elInit();
|
|
66
|
-
this.#radioInit();
|
|
67
|
-
this.#regexInit(config?.regex);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/** 결과 값 초기화 */
|
|
71
|
-
#resultInit(): void {
|
|
72
|
-
this.result = {
|
|
73
|
-
flag: true,
|
|
74
|
-
alertMsg: null,
|
|
75
|
-
el: null
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** validation check할 Element를 담는 객체 초기화 */
|
|
80
|
-
#elInit(): void { this.#el = {}; }
|
|
81
|
-
|
|
82
|
-
/** validation check할 radio Element를 담는 객체 초기화 */
|
|
83
|
-
#radioInit(): void { this.#radio = {}; }
|
|
84
|
-
|
|
85
|
-
/** validation check에 사용할 정규식을 담은 객체 초기화 */
|
|
86
|
-
#regexInit(
|
|
87
|
-
regex: regex | null = null
|
|
88
|
-
): void {
|
|
89
|
-
this.#regex = (
|
|
90
|
-
!JUtil.empty(regex) &&
|
|
91
|
-
JUtil.isObject(regex)
|
|
92
|
-
)
|
|
93
|
-
? {
|
|
94
|
-
...this.#regex,
|
|
95
|
-
...regex
|
|
96
|
-
}
|
|
97
|
-
: { ...this.#regex };
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/** el에 있는 Element들을 required check한다. */
|
|
101
|
-
#required(
|
|
102
|
-
el: InputElement
|
|
103
|
-
): void {
|
|
104
|
-
const required = el.getAttribute('required');
|
|
105
|
-
|
|
106
|
-
if (!JUtil.empty(required)) {
|
|
107
|
-
if (el.type == 'radio') {
|
|
108
|
-
this.#setRadio(el);
|
|
109
|
-
} else if (JUtil.empty(el.value)) {
|
|
110
|
-
this.result.flag = false;
|
|
111
|
-
this.result.alertMsg = `'${required}'을/를 입력해 주세요.`;
|
|
112
|
-
this.result.el = el;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/** radio에 있는 Element들을 required check한다. */
|
|
118
|
-
#requiredRadio(): void {
|
|
119
|
-
for (const i in this.#radio) {
|
|
120
|
-
const el = this.#radio[i][0],
|
|
121
|
-
flag = this.#radio[i].some((...arg) => (arg[0] as HTMLInputElement).checked);
|
|
122
|
-
|
|
123
|
-
if (!flag) {
|
|
124
|
-
this.result.flag = false;
|
|
125
|
-
this.result.alertMsg = `'${i}'을/를 선택해주세요.`;
|
|
126
|
-
this.result.el = el;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/** el에 Element를 담는다. */
|
|
133
|
-
#setEl(
|
|
134
|
-
el: InputElement
|
|
135
|
-
): void {
|
|
136
|
-
const pattern = el.dataset['svPattern'],
|
|
137
|
-
date = el.dataset['svDate'];
|
|
138
|
-
|
|
139
|
-
if (!JUtil.empty(pattern)) {
|
|
140
|
-
if (JUtil.empty(this.#el.el)) { this.#el.el = []; }
|
|
141
|
-
|
|
142
|
-
this.#el.el?.push(el);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
if (!JUtil.empty(date)) {
|
|
146
|
-
const state = el.dataset['svDateState'];
|
|
147
|
-
|
|
148
|
-
switch (state) {
|
|
149
|
-
case 'S':
|
|
150
|
-
case 'E':
|
|
151
|
-
if (JUtil.empty(this.#el.date)) { this.#el.date = {}; }
|
|
152
|
-
if (JUtil.empty((this.#el.date as NonNullable<el['date']>)[date as string])) { (this.#el.date as NonNullable<el['date']>)[date as string] = {}; }
|
|
153
|
-
|
|
154
|
-
(this.#el.date as NonNullable<el['date']>)[date as string][state] = el;
|
|
155
|
-
break;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/** `#radio`에 type이 'radio'인 Element를 담는다. */
|
|
161
|
-
#setRadio(
|
|
162
|
-
el: InputElement
|
|
163
|
-
): void {
|
|
164
|
-
const required = el.getAttribute('required');
|
|
165
|
-
|
|
166
|
-
if (!JUtil.empty(required)) {
|
|
167
|
-
if (JUtil.empty(this.#radio[required as string])) {
|
|
168
|
-
this.#radio[required as string] = [el];
|
|
169
|
-
} else { this.#radio[required as string].push(el); }
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Element들을 validation check 한다.
|
|
175
|
-
* ```
|
|
176
|
-
* -----------------------
|
|
177
|
-
* date : isDate
|
|
178
|
-
* -----------------------
|
|
179
|
-
* el : isPattern
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
#match(): void {
|
|
183
|
-
for (const i in this.#el) {
|
|
184
|
-
if (this.result.flag) {
|
|
185
|
-
switch (i) {
|
|
186
|
-
case 'date':
|
|
187
|
-
this.#isDate(this.#el[i]);
|
|
188
|
-
break;
|
|
189
|
-
case 'el':
|
|
190
|
-
this.#isPattern(this.#el[i]);
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
} else { break; }
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/** date check */
|
|
198
|
-
#isDate(
|
|
199
|
-
el: el['date']
|
|
200
|
-
): void {
|
|
201
|
-
for (const i in el) {
|
|
202
|
-
if (this.result.flag) {
|
|
203
|
-
const sdate = (el[i].S as InputElement).value,
|
|
204
|
-
edate = (el[i].E as InputElement).value;
|
|
205
|
-
|
|
206
|
-
if (
|
|
207
|
-
!JUtil.empty(sdate) &&
|
|
208
|
-
!JUtil.empty(edate)
|
|
209
|
-
) {
|
|
210
|
-
const inputName = (el[i].S as InputElement).dataset['svInputName'] ||
|
|
211
|
-
(el[i].E as InputElement).dataset['svInputName'],
|
|
212
|
-
required = (el[i].S as InputElement).getAttribute('required') ||
|
|
213
|
-
(el[i].E as InputElement).getAttribute('required');
|
|
214
|
-
|
|
215
|
-
if ((new Date(sdate)).getTime() > (new Date(edate)).getTime()) {
|
|
216
|
-
this.result.flag = false;
|
|
217
|
-
this.result.alertMsg = `'${inputName || required}'의 시작일이 종료일 보다 늦습니다.`;
|
|
218
|
-
this.result.el = el[i].S as InputElement;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
} else { break; }
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/** regex check */
|
|
226
|
-
#isPattern(
|
|
227
|
-
el: el['el'] | InputElement
|
|
228
|
-
): void {
|
|
229
|
-
if (Array.isArray(el)) {
|
|
230
|
-
for (const i of el) {
|
|
231
|
-
const pattern = i.dataset['svPattern'] as string,
|
|
232
|
-
inputName = i.dataset['svInputName'],
|
|
233
|
-
required = i.getAttribute('required'),
|
|
234
|
-
val = i.value;
|
|
235
|
-
|
|
236
|
-
if (Object.keys(this.#regex).includes(pattern)) {
|
|
237
|
-
if (
|
|
238
|
-
!JUtil.empty(val) &&
|
|
239
|
-
!this.#regex[pattern].test(val)
|
|
240
|
-
) {
|
|
241
|
-
this.result.flag = false;
|
|
242
|
-
this.result.alertMsg = `'${inputName || required}'의 형식이 올바르지 않습니다.`;
|
|
243
|
-
this.result.el = i;
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
} else {
|
|
249
|
-
const pattern = (el as InputElement).dataset['svPattern'] as string,
|
|
250
|
-
inputName = (el as InputElement).dataset['svInputName'],
|
|
251
|
-
required = (el as InputElement).getAttribute('required'),
|
|
252
|
-
val = (el as InputElement).value;
|
|
253
|
-
|
|
254
|
-
if (Object.keys(this.#regex).includes(pattern)) {
|
|
255
|
-
if (
|
|
256
|
-
!JUtil.empty(val) &&
|
|
257
|
-
!this.#regex[pattern].test(val)
|
|
258
|
-
) {
|
|
259
|
-
this.result.flag = false;
|
|
260
|
-
this.result.alertMsg = `'${inputName || required}'의 형식이 올바르지 않습니다.`;
|
|
261
|
-
this.result.el = el as InputElement;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/** Element value의 length를 check 한다. */
|
|
268
|
-
#length(): void {
|
|
269
|
-
for (const i in this.#el) {
|
|
270
|
-
if (
|
|
271
|
-
i == 'el' &&
|
|
272
|
-
this.result.flag
|
|
273
|
-
) {
|
|
274
|
-
for (const j of (this.#el[i] as NonNullable<el['el']>)) {
|
|
275
|
-
const inputName = j.dataset['svInputName'],
|
|
276
|
-
required = j.getAttribute('required'),
|
|
277
|
-
val = j.value.length;
|
|
278
|
-
|
|
279
|
-
if (!(j instanceof HTMLSelectElement)) {
|
|
280
|
-
if (
|
|
281
|
-
j.minLength >= 0 &&
|
|
282
|
-
j.maxLength >= 0
|
|
283
|
-
) {
|
|
284
|
-
if (
|
|
285
|
-
val < j.minLength ||
|
|
286
|
-
val > j.maxLength
|
|
287
|
-
) {
|
|
288
|
-
this.result.flag = false;
|
|
289
|
-
this.result.alertMsg = `'${inputName || required}'은/는 ${j.minLength}~${j.maxLength}자 이내로 입력해주세요.`;
|
|
290
|
-
this.result.el = j;
|
|
291
|
-
break;
|
|
292
|
-
}
|
|
293
|
-
} else if (
|
|
294
|
-
j.minLength >= 0 &&
|
|
295
|
-
j.maxLength < 0
|
|
296
|
-
) {
|
|
297
|
-
if (val < j.minLength) {
|
|
298
|
-
this.result.flag = false;
|
|
299
|
-
this.result.alertMsg = `'${inputName || required}'은/는 ${j.minLength}자 이상으로 입력해주세요.`;
|
|
300
|
-
this.result.el = j;
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
} else if (
|
|
304
|
-
j.minLength < 0 &&
|
|
305
|
-
j.maxLength >= 0
|
|
306
|
-
) {
|
|
307
|
-
if (val > j.maxLength) {
|
|
308
|
-
this.result.flag = false;
|
|
309
|
-
this.result.alertMsg = `'${inputName || required}'은/는 ${j.maxLength}자 이하로 입력해주세요.`;
|
|
310
|
-
this.result.el = j;
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
} else if (!this.result.flag) { break; }
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
/** validation을 실행한다. */
|
|
321
|
-
run(
|
|
322
|
-
form: HTMLFormElement
|
|
323
|
-
): void {
|
|
324
|
-
this.init();
|
|
325
|
-
|
|
326
|
-
for (const el of form.elements) {
|
|
327
|
-
if (this.result.flag) {
|
|
328
|
-
if (['INPUT', 'SELECT', 'TEXTAREA'].includes(el.tagName)) {
|
|
329
|
-
if (!(el as InputElement).disabled) {
|
|
330
|
-
this.#required(el as InputElement);
|
|
331
|
-
this.#setEl(el as InputElement);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
} else { break; }
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
if (this.result.flag) { this.#requiredRadio(); }
|
|
338
|
-
|
|
339
|
-
if (this.result.flag) { this.#match(); }
|
|
340
|
-
|
|
341
|
-
if (this.result.flag) { this.#length(); }
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"checkJs": true,
|
|
4
|
-
"strictNullChecks": false,
|
|
5
|
-
"noPropertyAccessFromIndexSignature": true,
|
|
6
|
-
"noUncheckedIndexedAccess": true,
|
|
7
|
-
"moduleResolution": "node",
|
|
8
|
-
"useDefineForClassFields": true,
|
|
9
|
-
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
|
10
|
-
"target": "ESNext",
|
|
11
|
-
"declaration": true,
|
|
12
|
-
"outDir": "dist"
|
|
13
|
-
},
|
|
14
|
-
"include": [
|
|
15
|
-
"src/index.mts",
|
|
16
|
-
"src/index.ts"
|
|
17
|
-
]
|
|
18
|
-
}
|
|
File without changes
|