UNPKG

typia

Version:

Superfast runtime validators with only one line

1 lines 2.37 kB
{"version":3,"file":"_randomFormatDuration.mjs","names":[],"sources":["../../src/internal/_randomFormatDuration.ts"],"sourcesContent":["import { _randomInteger } from \"./_randomInteger\";\nimport {\n _ILengthProps,\n _randomLengthPick,\n _randomLengthWindow,\n} from \"./_randomStringLength\";\nimport { __randomNumeric } from \"./private/__randomComposition\";\n\nexport const _randomFormatDuration = (props?: _ILengthProps): string => {\n if (props?.minLength === undefined && props?.maxLength === undefined) {\n const period: string = durate([\n [\"Y\", random(0, 100)],\n [\"M\", random(0, 12)],\n [\"D\", random(0, 31)],\n ]);\n const time: string = durate([\n [\"H\", random(0, 24)],\n [\"M\", random(0, 60)],\n [\"S\", random(0, 60)],\n ]);\n if (period.length + time.length === 0) return \"PT0S\";\n return `P${period}${time.length ? \"T\" : \"\"}${time}`;\n }\n // A single designator carries an unbounded digit count, so `P<n>Y` expresses\n // every length from three upward and `P1Y` is the shortest duration there is.\n const length: number = _randomLengthPick(\n _randomLengthWindow(props, { minimum: MINIMUM, spread: 6 }),\n );\n return `P${__randomNumeric(length - MINIMUM + 1)}Y`;\n};\n\nconst MINIMUM = \"P1Y\".length;\n\nconst durate = (elements: [string, number][]) =>\n elements\n .filter(([_unit, value]) => value !== 0)\n .map(([unit, value]) => `${value}${unit}`)\n .join(\"\");\nconst random = (minimum: number, maximum: number) =>\n _randomInteger({\n type: \"integer\",\n minimum,\n maximum,\n });\n"],"mappings":";;;;AAQA,MAAa,yBAAyB,UAAkC;CACtE,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GAAW;EACpE,MAAM,SAAiB,OAAO;GAC5B,CAAC,KAAK,OAAO,GAAG,GAAG,CAAC;GACpB,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC;GACnB,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC;EACrB,CAAC;EACD,MAAM,OAAe,OAAO;GAC1B,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC;GACnB,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC;GACnB,CAAC,KAAK,OAAO,GAAG,EAAE,CAAC;EACrB,CAAC;EACD,IAAI,OAAO,SAAS,KAAK,WAAW,GAAG,OAAO;EAC9C,OAAO,IAAI,SAAS,KAAK,SAAS,MAAM,KAAK;CAC/C;CAMA,OAAO,IAAI,gBAHY,kBACrB,oBAAoB,OAAO;EAAE,SAAS;EAAS,QAAQ;CAAE,CAAC,CAE5B,IAAI,UAAU,CAAC,EAAE;AACnD;AAEA,MAAM,UAAU;AAEhB,MAAM,UAAU,aACd,SACG,QAAQ,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC,CACvC,KAAK,CAAC,MAAM,WAAW,GAAG,QAAQ,MAAM,CAAC,CACzC,KAAK,EAAE;AACZ,MAAM,UAAU,SAAiB,YAC/B,eAAe;CACb,MAAM;CACN;CACA;AACF,CAAC"}