\ No newline at end of file
+404: This page could not be found
404
This page could not be found.
\ No newline at end of file
diff --git a/404/index.html b/404/index.html
index 0aa1f63582..12e0b9deea 100644
--- a/404/index.html
+++ b/404/index.html
@@ -1 +1 @@
-404: This page could not be found
404
This page could not be found.
\ No newline at end of file
+404: This page could not be found
404
This page could not be found.
\ No newline at end of file
diff --git a/_next/static/5zz5unl6lNQvuSxJXhHgF/_buildManifest.js b/_next/static/Yzb5Sm4bwvXSR7qe2ZsP9/_buildManifest.js
similarity index 50%
rename from _next/static/5zz5unl6lNQvuSxJXhHgF/_buildManifest.js
rename to _next/static/Yzb5Sm4bwvXSR7qe2ZsP9/_buildManifest.js
index f1f5c94a8d..f58f1c8eb2 100644
--- a/_next/static/5zz5unl6lNQvuSxJXhHgF/_buildManifest.js
+++ b/_next/static/Yzb5Sm4bwvXSR7qe2ZsP9/_buildManifest.js
@@ -1 +1 @@
-self.__BUILD_MANIFEST=function(s,c,a,t,o){return{__rewrites:{afterFiles:[{has:void 0,source:"/api",destination:"/api/index.html"}],beforeFiles:[],fallback:[]},"/":[s,c,a,o,"static/chunks/571-1950a9f3db14980e.js","static/chunks/pages/index-542c1e104da23965.js"],"/_error":["static/chunks/pages/_error-77823ddac6993d35.js"],"/docs":[s,c,a,t,"static/chunks/pages/docs-cb0a58bed9854589.js"],"/docs/json/parse":[s,c,"static/chunks/pages/docs/json/parse-dde65e19ed0bedd5.js"],"/docs/json/schema":[s,c,"static/chunks/pages/docs/json/schema-5fddbc640d89e312.js"],"/docs/json/stringify":[s,c,a,t,"static/chunks/pages/docs/json/stringify-13e10f848cd0d82f.js"],"/docs/misc":[s,c,a,t,"static/chunks/pages/docs/misc-d0988e4903c910b8.js"],"/docs/protobuf/decode":[s,c,a,t,"static/chunks/pages/docs/protobuf/decode-fdf98cf3518df655.js"],"/docs/protobuf/encode":[s,c,a,t,"static/chunks/pages/docs/protobuf/encode-dd723efb52f7a103.js"],"/docs/protobuf/message":[s,c,a,t,"static/chunks/pages/docs/protobuf/message-d8b12a9783afbd21.js"],"/docs/pure":[s,c,"static/chunks/pages/docs/pure-315c34c515603bac.js"],"/docs/random":[s,c,"static/chunks/pages/docs/random-ef8d29423c2a6626.js"],"/docs/setup":[s,c,"static/chunks/pages/docs/setup-fc859b06028989fa.js"],"/docs/utilization/hono":[s,c,"static/chunks/pages/docs/utilization/hono-9a44c94c06730f2f.js"],"/docs/utilization/nestjs":[s,c,"static/chunks/pages/docs/utilization/nestjs-73c8b3ce2adc5db3.js"],"/docs/utilization/prisma":[s,c,"static/chunks/pages/docs/utilization/prisma-6d130c93777cec45.js"],"/docs/utilization/trpc":[s,c,"static/chunks/pages/docs/utilization/trpc-7945ab259bb63056.js"],"/docs/validators/assert":[s,c,a,t,"static/chunks/pages/docs/validators/assert-2e743ded24910675.js"],"/docs/validators/functional":[s,c,"static/chunks/pages/docs/validators/functional-2d5a64380fae4f03.js"],"/docs/validators/is":[s,c,a,t,"static/chunks/pages/docs/validators/is-2047fa6021d3d30c.js"],"/docs/validators/tags":[s,c,a,t,"static/chunks/pages/docs/validators/tags-85aa8993f8b6a395.js"],"/docs/validators/validate":[s,c,a,t,"static/chunks/pages/docs/validators/validate-71b62be57de907a5.js"],"/playground":["static/chunks/f0c08a40-1e34eb8599539a9b.js","static/chunks/d89928ee-dbcded82713eb362.js","static/chunks/46d2146f-79d4a6605b4fa584.js","static/chunks/8a526a12-d8c95b87fb4b6e8c.js","static/chunks/88682331-337186eb536906ba.js",s,c,a,o,"static/chunks/644-2e9950a9a3370c40.js","static/css/4c7eddb46f6655d2.css","static/chunks/pages/playground-00932e17e32d169a.js"],sortedPages:["/","/_app","/_error","/docs","/docs/json/parse","/docs/json/schema","/docs/json/stringify","/docs/misc","/docs/protobuf/decode","/docs/protobuf/encode","/docs/protobuf/message","/docs/pure","/docs/random","/docs/setup","/docs/utilization/hono","/docs/utilization/nestjs","/docs/utilization/prisma","/docs/utilization/trpc","/docs/validators/assert","/docs/validators/functional","/docs/validators/is","/docs/validators/tags","/docs/validators/validate","/playground"]}}("static/css/445c4173ffc2bf04.css","static/chunks/235-5014b7138c60f233.js","static/chunks/223-20a62fa4f851b34b.js","static/chunks/254-d035aacff1889eeb.js","static/chunks/36-e9048fcaad1228a3.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
\ No newline at end of file
+self.__BUILD_MANIFEST=function(s,c,a,t,o){return{__rewrites:{afterFiles:[{has:void 0,source:"/api",destination:"/api/index.html"}],beforeFiles:[],fallback:[]},"/":[s,c,a,o,"static/chunks/571-1950a9f3db14980e.js","static/chunks/pages/index-a8b68bf213b8d4c2.js"],"/_error":["static/chunks/pages/_error-77823ddac6993d35.js"],"/docs":[s,c,a,t,"static/chunks/pages/docs-68332e3c319730bf.js"],"/docs/json/parse":[s,c,"static/chunks/pages/docs/json/parse-ece33e5424073ae2.js"],"/docs/json/schema":[s,c,"static/chunks/pages/docs/json/schema-d3b3bde64b866d40.js"],"/docs/json/stringify":[s,c,a,t,"static/chunks/pages/docs/json/stringify-9482c8056440b4cc.js"],"/docs/misc":[s,c,a,t,"static/chunks/pages/docs/misc-beead67a382ce4d5.js"],"/docs/protobuf/decode":[s,c,a,t,"static/chunks/pages/docs/protobuf/decode-11fa4eb39a0f2100.js"],"/docs/protobuf/encode":[s,c,a,t,"static/chunks/pages/docs/protobuf/encode-c1907aea874a443d.js"],"/docs/protobuf/message":[s,c,a,t,"static/chunks/pages/docs/protobuf/message-f2f6cef6213e9dce.js"],"/docs/pure":[s,c,"static/chunks/pages/docs/pure-41b2ec73a98c8727.js"],"/docs/random":[s,c,"static/chunks/pages/docs/random-f42f90a181e6e1f4.js"],"/docs/setup":[s,c,"static/chunks/pages/docs/setup-f40821e8e584236c.js"],"/docs/utilization/hono":[s,c,"static/chunks/pages/docs/utilization/hono-1258e028dac31aa9.js"],"/docs/utilization/nestjs":[s,c,"static/chunks/pages/docs/utilization/nestjs-ee50bd4c39ec7805.js"],"/docs/utilization/prisma":[s,c,"static/chunks/pages/docs/utilization/prisma-442b877b5ad4fc32.js"],"/docs/utilization/trpc":[s,c,"static/chunks/pages/docs/utilization/trpc-130ee2c507133736.js"],"/docs/validators/assert":[s,c,a,t,"static/chunks/pages/docs/validators/assert-54d0d2f23e01abfb.js"],"/docs/validators/functional":[s,c,"static/chunks/pages/docs/validators/functional-37920e89f8d98caf.js"],"/docs/validators/is":[s,c,a,t,"static/chunks/pages/docs/validators/is-5758877a464f6e93.js"],"/docs/validators/tags":[s,c,a,t,"static/chunks/pages/docs/validators/tags-87d9aeee00a844ca.js"],"/docs/validators/validate":[s,c,a,t,"static/chunks/pages/docs/validators/validate-647157f955df2028.js"],"/playground":["static/chunks/f0c08a40-1e34eb8599539a9b.js","static/chunks/d89928ee-dbcded82713eb362.js","static/chunks/46d2146f-79d4a6605b4fa584.js","static/chunks/8a526a12-d8c95b87fb4b6e8c.js","static/chunks/88682331-337186eb536906ba.js",s,c,a,o,"static/chunks/644-2e9950a9a3370c40.js","static/css/4c7eddb46f6655d2.css","static/chunks/pages/playground-ed5f5d155c666f5f.js"],sortedPages:["/","/_app","/_error","/docs","/docs/json/parse","/docs/json/schema","/docs/json/stringify","/docs/misc","/docs/protobuf/decode","/docs/protobuf/encode","/docs/protobuf/message","/docs/pure","/docs/random","/docs/setup","/docs/utilization/hono","/docs/utilization/nestjs","/docs/utilization/prisma","/docs/utilization/trpc","/docs/validators/assert","/docs/validators/functional","/docs/validators/is","/docs/validators/tags","/docs/validators/validate","/playground"]}}("static/css/445c4173ffc2bf04.css","static/chunks/235-5014b7138c60f233.js","static/chunks/223-20a62fa4f851b34b.js","static/chunks/254-d035aacff1889eeb.js","static/chunks/36-e9048fcaad1228a3.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
\ No newline at end of file
diff --git a/_next/static/5zz5unl6lNQvuSxJXhHgF/_ssgManifest.js b/_next/static/Yzb5Sm4bwvXSR7qe2ZsP9/_ssgManifest.js
similarity index 100%
rename from _next/static/5zz5unl6lNQvuSxJXhHgF/_ssgManifest.js
rename to _next/static/Yzb5Sm4bwvXSR7qe2ZsP9/_ssgManifest.js
diff --git a/_next/static/chunks/nextra-data-en-US.json b/_next/static/chunks/nextra-data-en-US.json
index a226682a9c..259f3f3af2 100644
--- a/_next/static/chunks/nextra-data-en-US.json
+++ b/_next/static/chunks/nextra-data-en-US.json
@@ -1 +1 @@
-{"/docs":{"title":"Index","data":{"outline#Outline":"// RUNTIME VALIDATORS\nexport function is(input: unknown): input is T; // returns boolean\nexport function assert(input: unknown): T; // throws TypeGuardError\nexport function assertGuard(input: unknown): asserts input is T;\nexport function validate(input: unknown): IValidation; // detailed\n// JSON FUNCTIONS\nexport namespace json {\n export function application(): IJsonApplication; // JSON schema\n export function assertParse(input: string): T; // type safe parser\n export function assertStringify(input: T): string; // safe and faster\n}\n// PROTOCOL BUFFER\nexport namespace protobuf {\n export function message(): string; // Protocol Buffer message\n export function assertDecode(buffer: Uint8Array): T; // safe decoder\n export function assertEncode(input: T): Uint8Array; // safe encoder\n}\n// RANDOM GENERATOR\nexport function random(g?: Partial): T;\nTypia is a transformer library supporting below features:\nSuper-fast Runtime Validators\nEnhanced JSON functions\nProtocol Buffer encoder and decoder\nRandom data generator\nOnly one line required, with pure TypeScript type\nRuntime validator is 20,000x faster than class-validator\nJSON serialization is 200x faster than class-transformer","sponsors#Sponsors":"Thanks for your support.Your donation encourages typia development.Also, typia is re-distributing half of donations to core contributors of typia.\nnonara/ts-patch\nryoppippi/unplugin-typia"}},"/docs/misc":{"title":"Misc","data":{"misc-module#misc module":"","clone-functions#clone() functions":"export namespace misc {\n export function clone(input: T): T;\n export function assertClone(input: T | unknown): Resolved;\n export function isClone(input: T | unknown): Resolved | null;\n export function validateClone(input: T | unknown): IValidation>;\n export function createClone(): (input: T) => Resolved;\n export function createAssertClone(): (input: T | unknown) => Resolved;\n export function createIsClone(): (input: T | unknown) => Resolved | null;\n export function createValidateClone(): (\n input: T | unknown\n ) => IValidation>;\n}\nexport class TypeGuardError extends Error {\n public readonly method: string;\n public readonly path: string | undefined;\n public readonly expected: string;\n public readonly value: any;\n}\nexport type IValidation = IValidation.ISuccess | IValidation.IFailure;\nexport namespace IValidation {\n export interface ISuccess {\n success: true;\n data: T;\n }\n export interface IFailure {\n success: false;\n errors: IError[];\n }\n export interface IError {\n path: string;\n expected: string;\n value: any;\n }\n}\n/**\n * Resolved type erased every methods.\n *\n * `Resolved` is a type of TMP (Type Meta Programming) type which converts\n * its argument as a resolved type that erased every method properties.\n *\n * If the target argument is a built-in class which returns its origin primitive type\n * through the `valueOf()` method like the `String` or `Number`, its return type would\n * be the `string` or `number`. Otherwise, the built-in class does not have the\n * `valueOf()` method, the return type would be same with the target argument.\n *\n * Otherwise, the target argument is a type of custom class, all of its custom methods\n * would be erased and its prototype would be changed to the primitive `object`.\n * Therefore, return type of the TMP type finally be the resolved object.\n *\n * Before | After\n * ------------------------|----------------------------------------\n * `Boolean` | `boolean`\n * `Number` | `number`\n * `BigInt` | `bigint`\n * `String` | `string`\n * `Class` | `interface`\n * Native Class or Others | No change\n *\n * @template T Target argument type.\n * @author Jeongho Nam - https://github.com/samchon\n * @author Kyungsu Kang - https://github.com/kakasoo\n */\nexport type Resolved = Equal> extends true\n ? T\n : ResolvedMain;\ntype Equal = X extends Y ? (Y extends X ? true : false) : false;\ntype ResolvedMain = T extends [never]\n ? never // (special trick for jsonable | null) type\n : ValueOf extends boolean | number | bigint | string\n ? ValueOf\n : T extends Function\n ? never\n : T extends object\n ? ResolvedObject\n : ValueOf;\ntype ResolvedObject = T extends Array\n ? IsTuple extends true\n ? ResolvedTuple\n : ResolvedMain[]\n : T extends Set\n ? Set>\n : T extends Map\n ? Map, ResolvedMain>\n : T extends WeakSet | WeakMap\n ? never\n : T extends\n | Date\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | BigUint64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigInt64Array\n | Float32Array\n | Float64Array\n | ArrayBuffer\n | SharedArrayBuffer\n | DataView\n | Blob\n | File\n ? T\n : {\n [P in keyof T]: ResolvedMain;\n };\ntype ResolvedTuple = T extends []\n ? []\n : T extends [infer F]\n ? [ResolvedMain]\n : T extends [infer F, ...infer Rest extends readonly any[]]\n ? [ResolvedMain, ...ResolvedTuple]\n : T extends [(infer F)?]\n ? [ResolvedMain?]\n : T extends [(infer F)?, ...infer Rest extends readonly any[]]\n ? [ResolvedMain?, ...ResolvedTuple]\n : [];\ntype IsTuple = [T] extends [\n never,\n]\n ? false\n : T extends readonly any[]\n ? number extends T[\"length\"]\n ? false\n : true\n : false;\ntype ValueOf = IsValueOf extends true\n ? boolean\n : IsValueOf extends true\n ? number\n : IsValueOf extends true\n ? string\n : Instance;\ntype IsValueOf> = Instance extends Object\n ? Object extends IValueOf\n ? Instance extends Primitive\n ? false\n : true // not Primitive, but Object\n : false // cannot be\n : false;\ninterface IValueOf {\n valueOf(): T;\n}\nDeep copy functions.When you want to copy an instance, just call typia.misc.clone() function. It would perform deep copy including nested objects, so you can get a new instance with same values. Also, if you want type safe deep copy function, you can use typia.misc.isClone(), typia.misc.assertClone() or typia.misc.validateClone() functions instead.\ntypia.misc.assertClone(): typia.assert() + typia.misc.clone()\ntypia.misc.isClone(): typia.is() + typia.misc.clone()\ntypia.misc.validateClone(): typia.validate() + typia.misc.clone()\nimport typia from \"typia\";\nconst department: IDepartment = typia.random();\nconst cloned: IDepartment = typia.misc.assertClone(department);\nconsole.log(cloned);\ninterface IDepartment {\n /**\n * @format uuid\n */\n id: string;\n /**\n * @minLength 3\n */\n name: string;\n /**\n * @type int\n */\n limit: number;\n clerks: IClerk[];\n}\ninterface IClerk {\n name: string;\n /**\n * @exclusiveMinimum 19\n * @maximum 100\n */\n age: number;\n authority: number;\n /**\n * @format date\n */\n joined_at: string;\n}\nimport typia from \"typia\";\nconst department = ((generator) => {\n const $generator = typia.random.generator;\n const $ro0 = (_recursive = false, _depth = 0) => ({\n id:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: 'Format<\"uuid\">',\n kind: \"format\",\n value: \"uuid\",\n },\n ]) ?? (generator?.uuid ?? $generator.uuid)(),\n name:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: \"MinLength<3>\",\n kind: \"minLength\",\n value: 3,\n },\n ]) ??\n (generator?.string ?? $generator.string)(\n (generator?.integer ?? $generator.integer)(3, 25),\n ),\n limit:\n (generator?.customs ?? $generator.customs)?.number?.([\n {\n name: 'Type<\"int32\">',\n kind: \"type\",\n value: \"int32\",\n },\n ]) ?? (generator?.integer ?? $generator.integer)(0, 100),\n clerks: (generator?.array ?? $generator.array)(() =>\n $ro1(_recursive, _recursive ? 1 + _depth : _depth),\n ),\n });\n const $ro1 = (_recursive = false, _depth = 0) => ({\n name:\n (generator?.customs ?? $generator.customs)?.string?.([]) ??\n (generator?.string ?? $generator.string)(),\n age:\n (generator?.customs ?? $generator.customs)?.number?.([\n {\n name: \"ExclusiveMinimum<19>\",\n kind: \"exclusiveMinimum\",\n value: 19,\n },\n {\n name: \"Maximum<100>\",\n kind: \"maximum\",\n value: 100,\n },\n ]) ?? (generator?.number ?? $generator.number)(19, 100),\n authority:\n (generator?.customs ?? $generator.customs)?.number?.([]) ??\n (generator?.number ?? $generator.number)(0, 100),\n joined_at:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: 'Format<\"date\">',\n kind: \"format\",\n value: \"date\",\n },\n ]) ?? (generator?.date ?? $generator.date)(),\n });\n return $ro0();\n})();\nconst cloned = (() => {\n const $guard = typia.misc.assertClone.guard;\n const $cp0 = (input) =>\n input.map((elem) =>\n \"object\" === typeof elem && null !== elem ? $co1(elem) : elem,\n );\n const $io0 = (input) =>\n \"string\" === typeof input.id &&\n /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(\n input.id,\n ) &&\n \"string\" === typeof input.name &&\n 3 <= input.name.length &&\n \"number\" === typeof input.limit &&\n Math.floor(input.limit) === input.limit &&\n -2147483648 <= input.limit &&\n input.limit <= 2147483647 &&\n Array.isArray(input.clerks) &&\n input.clerks.every(\n (elem) => \"object\" === typeof elem && null !== elem && $io1(elem),\n );\n const $io1 = (input) =>\n \"string\" === typeof input.name &&\n \"number\" === typeof input.age &&\n 19 < input.age &&\n input.age <= 100 &&\n \"number\" === typeof input.authority &&\n \"string\" === typeof input.joined_at &&\n /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(input.joined_at);\n const $ao0 = (input, _path, _exceptionable = true) =>\n ((\"string\" === typeof input.id &&\n (/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(\n input.id,\n ) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".id\",\n expected: 'string & Format<\"uuid\">',\n value: input.id,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".id\",\n expected: '(string & Format<\"uuid\">)',\n value: input.id,\n },\n _errorFactory,\n )) &&\n ((\"string\" === typeof input.name &&\n (3 <= input.name.length ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"string & MinLength<3>\",\n value: input.name,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"(string & MinLength<3>)\",\n value: input.name,\n },\n _errorFactory,\n )) &&\n ((\"number\" === typeof input.limit &&\n ((Math.floor(input.limit) === input.limit &&\n -2147483648 <= input.limit &&\n input.limit <= 2147483647) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".limit\",\n expected: 'number & Type<\"int32\">',\n value: input.limit,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".limit\",\n expected: '(number & Type<\"int32\">)',\n value: input.limit,\n },\n _errorFactory,\n )) &&\n (((Array.isArray(input.clerks) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks\",\n expected: \"Array\",\n value: input.clerks,\n },\n _errorFactory,\n )) &&\n input.clerks.every(\n (elem, _index2) =>\n (((\"object\" === typeof elem && null !== elem) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks[\" + _index2 + \"]\",\n expected: \"IClerk\",\n value: elem,\n },\n _errorFactory,\n )) &&\n $ao1(\n elem,\n _path + \".clerks[\" + _index2 + \"]\",\n true && _exceptionable,\n )) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks[\" + _index2 + \"]\",\n expected: \"IClerk\",\n value: elem,\n },\n _errorFactory,\n ),\n )) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks\",\n expected: \"Array\",\n value: input.clerks,\n },\n _errorFactory,\n ));\n const $ao1 = (input, _path, _exceptionable = true) =>\n (\"string\" === typeof input.name ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"string\",\n value: input.name,\n },\n _errorFactory,\n )) &&\n ((\"number\" === typeof input.age &&\n (19 < input.age ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"number & ExclusiveMinimum<19>\",\n value: input.age,\n },\n _errorFactory,\n )) &&\n (input.age <= 100 ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"number & Maximum<100>\",\n value: input.age,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"(number & ExclusiveMinimum<19> & Maximum<100>)\",\n value: input.age,\n },\n _errorFactory,\n )) &&\n (\"number\" === typeof input.authority ||\n $guard(\n _exceptionable,\n {\n path: _path + \".authority\",\n expected: \"number\",\n value: input.authority,\n },\n _errorFactory,\n )) &&\n ((\"string\" === typeof input.joined_at &&\n (/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(\n input.joined_at,\n ) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".joined_at\",\n expected: 'string & Format<\"date\">',\n value: input.joined_at,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".joined_at\",\n expected: '(string & Format<\"date\">)',\n value: input.joined_at,\n },\n _errorFactory,\n ));\n const $co0 = (input) => ({\n id: input.id,\n name: input.name,\n limit: input.limit,\n clerks: Array.isArray(input.clerks) ? $cp0(input.clerks) : input.clerks,\n });\n const $co1 = (input) => ({\n name: input.name,\n age: input.age,\n authority: input.authority,\n joined_at: input.joined_at,\n });\n const __is = (input) =>\n \"object\" === typeof input && null !== input && $io0(input);\n let _errorFactory;\n const __assert = (input, errorFactory) => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input, _path, _exceptionable = true) =>\n (((\"object\" === typeof input && null !== input) ||\n $guard(\n true,\n {\n path: _path + \"\",\n expected: \"IDepartment\",\n value: input,\n },\n _errorFactory,\n )) &&\n $ao0(input, _path + \"\", true)) ||\n $guard(\n true,\n {\n path: _path + \"\",\n expected: \"IDepartment\",\n value: input,\n },\n _errorFactory,\n ))(input, \"$input\", true);\n }\n return input;\n };\n const __clone = (input) =>\n \"object\" === typeof input && null !== input ? $co0(input) : input;\n return (input, errorFactory) => __clone(__assert(input, errorFactory));\n})()(department);\nconsole.log(cloned);","prune-functions#prune() functions":"export function prune(input: T): void;\nexport function assertPrune(input: T | unknown): T;\nexport function isPrune(input: T | unknown): T | null;\nexport function validatePrune(input: T | unknown): IValidation;\nexport function createPrune(): (input: T) => void;\nexport function createAssertPrune(): (input: T | unknown) => T;\nexport function createIsPrune(): (input: T | unknown) => T | null;\nexport function createValidatePrune(): (input: T | unknown) => IValidation;\nexport class TypeGuardError extends Error {\n public readonly method: string;\n public readonly path: string | undefined;\n public readonly expected: string;\n public readonly value: any;\n}\nexport type IValidation =\n | IValidation.ISuccess\n | IValidation.IFailure;\nexport namespace IValidation {\n export interface ISuccess {\n success: true;\n data: T;\n errors: [];\n }\n export interface IFailure {\n success: false;\n errors: IError[];\n }\n export interface IError {\n path: string;\n expected: string;\n value: any;\n }\n}\nDeep prune functions.When you want to remove every extra properties that are not defined in the type including nested objects, you can use typia.misc.prune() function. Also, if you want to perform type safe pruning, you can use typia.misc.isPrune(), typia.misc.assertPrune() or typia.misc.validatePrune() functions instead.\ntypia.misc.isPrune(): typia.is() + typia.misc.prune()\ntypia.misc.assertPrune(): typia.assert() + typia.misc.prune()\ntypia.misc.validatePrune(): typia.validate() + typia.misc.prune()\nimport typia from \"typia\";\nconst department: IDepartment = typia.random();\nconst pruned: IDepartment = typia.misc.assertPrune(department);\nconsole.log(pruned);\ninterface IDepartment {\n /**\n * @format uuid\n */\n id: string;\n /**\n * @minLength 3\n */\n name: string;\n /**\n * @type int\n */\n limit: number;\n clerks: IClerk[];\n}\ninterface IClerk {\n name: string;\n /**\n * @exclusiveMinimum 19\n * @maximum 100\n */\n age: number;\n authority: number;\n /**\n * @format date\n */\n joined_at: string;\n}\nimport typia from \"typia\";\nconst department = ((generator) => {\n const $generator = typia.random.generator;\n const $ro0 = (_recursive = false, _depth = 0) => ({\n id:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: 'Format<\"uuid\">',\n kind: \"format\",\n value: \"uuid\",\n },\n ]) ?? (generator?.uuid ?? $generator.uuid)(),\n name:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: \"MinLength<3>\",\n kind: \"minLength\",\n value: 3,\n },\n ]) ??\n (generator?.string ?? $generator.string)(\n (generator?.integer ?? $generator.integer)(3, 25),\n ),\n limit:\n (generator?.customs ?? $generator.customs)?.number?.([\n {\n name: 'Type<\"int32\">',\n kind: \"type\",\n value: \"int32\",\n },\n ]) ?? (generator?.integer ?? $generator.integer)(0, 100),\n clerks: (generator?.array ?? $generator.array)(() =>\n $ro1(_recursive, _recursive ? 1 + _depth : _depth),\n ),\n });\n const $ro1 = (_recursive = false, _depth = 0) => ({\n name:\n (generator?.customs ?? $generator.customs)?.string?.([]) ??\n (generator?.string ?? $generator.string)(),\n age:\n (generator?.customs ?? $generator.customs)?.number?.([\n {\n name: \"ExclusiveMinimum<19>\",\n kind: \"exclusiveMinimum\",\n value: 19,\n },\n {\n name: \"Maximum<100>\",\n kind: \"maximum\",\n value: 100,\n },\n ]) ?? (generator?.number ?? $generator.number)(19, 100),\n authority:\n (generator?.customs ?? $generator.customs)?.number?.([]) ??\n (generator?.number ?? $generator.number)(0, 100),\n joined_at:\n (generator?.customs ?? $generator.customs)?.string?.([\n {\n name: 'Format<\"date\">',\n kind: \"format\",\n value: \"date\",\n },\n ]) ?? (generator?.date ?? $generator.date)(),\n });\n return $ro0();\n})();\nconst pruned = (() => {\n const $guard = typia.misc.assertPrune.guard;\n const $pp0 = (input) =>\n input.forEach((elem) => {\n if (\"object\" === typeof elem && null !== elem) $po1(elem);\n });\n const $io0 = (input) =>\n \"string\" === typeof input.id &&\n /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(\n input.id,\n ) &&\n \"string\" === typeof input.name &&\n 3 <= input.name.length &&\n \"number\" === typeof input.limit &&\n Math.floor(input.limit) === input.limit &&\n -2147483648 <= input.limit &&\n input.limit <= 2147483647 &&\n Array.isArray(input.clerks) &&\n input.clerks.every(\n (elem) => \"object\" === typeof elem && null !== elem && $io1(elem),\n );\n const $io1 = (input) =>\n \"string\" === typeof input.name &&\n \"number\" === typeof input.age &&\n 19 < input.age &&\n input.age <= 100 &&\n \"number\" === typeof input.authority &&\n \"string\" === typeof input.joined_at &&\n /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(input.joined_at);\n const $ao0 = (input, _path, _exceptionable = true) =>\n ((\"string\" === typeof input.id &&\n (/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i.test(\n input.id,\n ) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".id\",\n expected: 'string & Format<\"uuid\">',\n value: input.id,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".id\",\n expected: '(string & Format<\"uuid\">)',\n value: input.id,\n },\n _errorFactory,\n )) &&\n ((\"string\" === typeof input.name &&\n (3 <= input.name.length ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"string & MinLength<3>\",\n value: input.name,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"(string & MinLength<3>)\",\n value: input.name,\n },\n _errorFactory,\n )) &&\n ((\"number\" === typeof input.limit &&\n ((Math.floor(input.limit) === input.limit &&\n -2147483648 <= input.limit &&\n input.limit <= 2147483647) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".limit\",\n expected: 'number & Type<\"int32\">',\n value: input.limit,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".limit\",\n expected: '(number & Type<\"int32\">)',\n value: input.limit,\n },\n _errorFactory,\n )) &&\n (((Array.isArray(input.clerks) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks\",\n expected: \"Array\",\n value: input.clerks,\n },\n _errorFactory,\n )) &&\n input.clerks.every(\n (elem, _index2) =>\n (((\"object\" === typeof elem && null !== elem) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks[\" + _index2 + \"]\",\n expected: \"IClerk\",\n value: elem,\n },\n _errorFactory,\n )) &&\n $ao1(\n elem,\n _path + \".clerks[\" + _index2 + \"]\",\n true && _exceptionable,\n )) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks[\" + _index2 + \"]\",\n expected: \"IClerk\",\n value: elem,\n },\n _errorFactory,\n ),\n )) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".clerks\",\n expected: \"Array\",\n value: input.clerks,\n },\n _errorFactory,\n ));\n const $ao1 = (input, _path, _exceptionable = true) =>\n (\"string\" === typeof input.name ||\n $guard(\n _exceptionable,\n {\n path: _path + \".name\",\n expected: \"string\",\n value: input.name,\n },\n _errorFactory,\n )) &&\n ((\"number\" === typeof input.age &&\n (19 < input.age ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"number & ExclusiveMinimum<19>\",\n value: input.age,\n },\n _errorFactory,\n )) &&\n (input.age <= 100 ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"number & Maximum<100>\",\n value: input.age,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".age\",\n expected: \"(number & ExclusiveMinimum<19> & Maximum<100>)\",\n value: input.age,\n },\n _errorFactory,\n )) &&\n (\"number\" === typeof input.authority ||\n $guard(\n _exceptionable,\n {\n path: _path + \".authority\",\n expected: \"number\",\n value: input.authority,\n },\n _errorFactory,\n )) &&\n ((\"string\" === typeof input.joined_at &&\n (/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(\n input.joined_at,\n ) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".joined_at\",\n expected: 'string & Format<\"date\">',\n value: input.joined_at,\n },\n _errorFactory,\n ))) ||\n $guard(\n _exceptionable,\n {\n path: _path + \".joined_at\",\n expected: '(string & Format<\"date\">)',\n value: input.joined_at,\n },\n _errorFactory,\n ));\n const $po0 = (input) => {\n if (Array.isArray(input.clerks)) $pp0(input.clerks);\n for (const key of Object.keys(input)) {\n if (\"id\" === key || \"name\" === key || \"limit\" === key || \"clerks\" === key)\n continue;\n delete input[key];\n }\n };\n const $po1 = (input) => {\n for (const key of Object.keys(input)) {\n if (\n \"name\" === key ||\n \"age\" === key ||\n \"authority\" === key ||\n \"joined_at\" === key\n )\n continue;\n delete input[key];\n }\n };\n const __is = (input) =>\n \"object\" === typeof input && null !== input && $io0(input);\n let _errorFactory;\n const __assert = (input, errorFactory) => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input, _path, _exceptionable = true) =>\n (((\"object\" === typeof input && null !== input) ||\n $guard(\n true,\n {\n path: _path + \"\",\n expected: \"IDepartment\",\n value: input,\n },\n _errorFactory,\n )) &&\n $ao0(input, _path + \"\", true)) ||\n $guard(\n true,\n {\n path: _path + \"\",\n expected: \"IDepartment\",\n value: input,\n },\n _errorFactory,\n ))(input, \"$input\", true);\n }\n return input;\n };\n const __prune = (input) => {\n if (\"object\" === typeof input && null !== input) $po0(input);\n };\n return (input, errorFactory) => __prune(__assert(input, errorFactory));\n})()(department);\nconsole.log(pruned);","literals-function#literals() function":"export namespace misc {\n export function literals<\n T extends boolean | number | string | bigint | null,\n >(): T[];\n}\nUnion literal type to array.When you call typia.misc.literals() function with union literal type, it returns an array of literal values listed in the generic T argument. This typia.misc.literals function is useful when you are developing test program, especially handling some discriminated union types.\nimport typia from \"typia\";\ntypia.misc.literals<\"A\" | \"B\" | \"C\" | 1 | 2n>();\nimport typia from \"typia\";\n[\"A\", \"B\", \"C\", 1, BigInt(2)];","notations-module#notations module":"","camel-functions#camel() functions":"export namespace notations {\n export function camel(input: T): CamelCase;\n export function assertCamel(input: T | unknown): CamelCase;\n export function isCamel(input: T | unknown): CamelCase | null;\n export function validateCamel(\n input: T | unknown,\n ): IValidation>;\n export function createCamel(): (input: T) => CamelCase;\n export function createAssertCamel(): (input: T | unknown) => CamelCase;\n export function createIsCamel(): (\n input: T | unknown,\n ) => CamelCase | null;\n export function createValidateCamel(): (\n input: T | unknown,\n ) => IValidation>;\n}\nexport class TypeGuardError extends Error {\n public readonly method: string;\n public readonly path: string | undefined;\n public readonly expected: string;\n public readonly value: any;\n}\nexport type IValidation = IValidation.ISuccess | IValidation.IFailure;\nexport namespace IValidation {\n export interface ISuccess {\n success: true;\n data: T;\n }\n export interface IFailure {\n success: false;\n errors: IError[];\n }\n export interface IError {\n path: string;\n expected: string;\n value: any;\n }\n}\n/**\n * Camel case type.\n *\n * `CamelCase` type is a type that all keys of an object are camelized.\n *\n * It also erase every method properties like {@link Resolved} type.\n *\n * @template T Target type to be camelized\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport type CamelCase = Equal> extends true\n ? T\n : CamelizeMain;\n/* -----------------------------------------------------------\n OBJECT CONVERSION\n----------------------------------------------------------- */\ntype Equal = X extends Y ? (Y extends X ? true : false) : false;\ntype CamelizeMain = T extends [never]\n ? never // special trick for (jsonable | null) type\n : T extends { valueOf(): boolean | bigint | number | string }\n ? ValueOf\n : T extends Function\n ? never\n : T extends object\n ? CamelizeObject\n : T;\ntype CamelizeObject = T extends Array\n ? IsTuple extends true\n ? CamelizeTuple\n : CamelizeMain[]\n : T extends Set\n ? Set>\n : T extends Map\n ? Map, CamelizeMain>\n : T extends WeakSet | WeakMap\n ? never\n : T extends\n | Date\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | BigUint64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigInt64Array\n | Float32Array\n | Float64Array\n | ArrayBuffer\n | SharedArrayBuffer\n | DataView\n | Blob\n | File\n ? T\n : {\n [Key in keyof T as CamelizeString]: CamelizeMain;\n };\n/* -----------------------------------------------------------\n SPECIAL CASES\n----------------------------------------------------------- */\ntype IsTuple = [T] extends [\n never,\n]\n ? false\n : T extends readonly any[]\n ? number extends T[\"length\"]\n ? false\n : true\n : false;\ntype CamelizeTuple = T extends []\n ? []\n : T extends [infer F]\n ? [CamelizeMain]\n : T extends [infer F, ...infer Rest extends readonly any[]]\n ? [CamelizeMain, ...CamelizeTuple]\n : T extends [(infer F)?]\n ? [CamelizeMain?]\n : T extends [(infer F)?, ...infer Rest extends readonly any[]]\n ? [CamelizeMain?, ...CamelizeTuple]\n : [];\ntype ValueOf = IsValueOf extends true\n ? boolean\n : IsValueOf extends true\n ? number\n : IsValueOf extends true\n ? string\n : Instance;\ntype IsValueOf> = Instance extends Object\n ? Object extends IValueOf\n ? Instance extends Primitive\n ? false\n : true // not Primitive, but Object\n : false // cannot be\n : false;\ninterface IValueOf {\n valueOf(): T;\n}\n/* -----------------------------------------------------------\n STRING CONVERTER\n----------------------------------------------------------- */\ntype CamelizeString = Key extends `_${infer R}`\n ? `_${CamelizeString}`\n : Key extends `${infer F}${infer R}`\n ? `${Lowercase}${CamelizeStringRepeatedly}`\n : Key;\ntype CamelizeStringRepeatedly =\n Key extends `${infer F}_${infer R}`\n ? `${F}${Capitalize>}`\n : Key;\nCamel case converters.Convert every property names of nested objects to be camel case notation.When you need type safe functions, you can utilize below them.\ntypia.notations.assertCamel(): typia.assert() + typia.notations.camel()\ntypia.notations.isCamel: typia.is() + typia.notations.camel()\ntypia.notations.validateCamel: typia.validate() + typia.notations.camel()\nimport typia from \"typia\";\ninterface IPerson {\n is_my_name_samchon?: boolean;\n HelloTheNewWorld: string;\n ToHTML: string;\n}\ntypia.notations.createCamel();\nimport typia from \"typia\";\n(() => {\n const $co0 = (input) => ({\n isMyNameSamchon: input.is_my_name_samchon,\n helloTheNewWorld: input.HelloTheNewWorld,\n toHTML: input.ToHTML,\n });\n return (input) =>\n \"object\" === typeof input && null !== input ? $co0(input) : input;\n})();","pascal-functions#pascal() functions":"export namespace notations {\n export function pascal(input: T): PascalCase;\n export function assertPascal(input: T | unknown): PascalCase;\n export function isPascal(input: T | unknown): PascalCase | null;\n export function validatePascal(\n input: T | unknown,\n ): IValidation>;\n export function createPascal(): (input: T) => PascalCase;\n export function createAssertPascal(): (\n input: T | unknown,\n ) => PascalCase;\n export function createIsPascal(): (\n input: T | unknown,\n ) => PascalCase | null;\n export function createValidatePascal(): (\n input: T | unknown,\n ) => IValidation>;\n}\nexport class TypeGuardError extends Error {\n public readonly method: string;\n public readonly path: string | undefined;\n public readonly expected: string;\n public readonly value: any;\n}\nexport type IValidation = IValidation.ISuccess | IValidation.IFailure;\nexport namespace IValidation {\n export interface ISuccess {\n success: true;\n data: T;\n }\n export interface IFailure {\n success: false;\n errors: IError[];\n }\n export interface IError {\n path: string;\n expected: string;\n value: any;\n }\n}\n/**\n * Pascal case type.\n *\n * `PascalCase` type is a type that all keys of an object are pascalized.\n *\n * It also erase every method properties like {@link Resolved} type.\n *\n * @template T Target type to be pascalized\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport type PascalCase = Equal> extends true\n ? T\n : PascalizeMain;\n/* -----------------------------------------------------------\n OBJECT CONVERSION\n----------------------------------------------------------- */\ntype Equal = X extends Y ? (Y extends X ? true : false) : false;\ntype PascalizeMain = T extends [never]\n ? never // special trick for (jsonable | null) type\n : T extends { valueOf(): boolean | bigint | number | string }\n ? ValueOf\n : T extends Function\n ? never\n : T extends object\n ? PascalizeObject\n : T;\ntype PascalizeObject = T extends Array\n ? IsTuple extends true\n ? PascalizeTuple\n : PascalizeMain[]\n : T extends Set\n ? Set>\n : T extends Map\n ? Map, PascalizeMain>\n : T extends WeakSet | WeakMap\n ? never\n : T extends\n | Date\n | Uint8Array\n | Uint8ClampedArray\n | Uint16Array\n | Uint32Array\n | BigUint64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | BigInt64Array\n | Float32Array\n | Float64Array\n | ArrayBuffer\n | SharedArrayBuffer\n | DataView\n | Blob\n | File\n ? T\n : {\n [Key in keyof T as PascalizeString]: PascalizeMain;\n };\n/* -----------------------------------------------------------\n SPECIAL CASES\n----------------------------------------------------------- */\ntype IsTuple = [T] extends [\n never,\n]\n ? false\n : T extends readonly any[]\n ? number extends T[\"length\"]\n ? false\n : true\n : false;\ntype PascalizeTuple = T extends []\n ? []\n : T extends [infer F]\n ? [PascalizeMain]\n : T extends [infer F, ...infer Rest extends readonly any[]]\n ? [PascalizeMain, ...PascalizeTuple]\n : T extends [(infer F)?]\n ? [PascalizeMain?]\n : T extends [(infer F)?, ...infer Rest extends readonly any[]]\n ? [PascalizeMain?, ...PascalizeTuple]\n : [];\ntype ValueOf = IsValueOf extends true\n ? boolean\n : IsValueOf extends true\n ? number\n : IsValueOf extends true\n ? string\n : Instance;\ntype IsValueOf> = Instance extends Object\n ? Object extends IValueOf\n ? Instance extends Primitive\n ? false\n : true // not Primitive, but Object\n : false // cannot be\n : false;\ninterface IValueOf {\n valueOf(): T;\n}\n/* -----------------------------------------------------------\n STRING CONVERTER\n----------------------------------------------------------- */\ntype PascalizeString = Key extends `_${infer R}`\n ? `_${PascalizeString}`\n : Key extends `${infer F}${infer R}`\n ? `${Uppercase}${PascalizeStringRepeatedly}`\n : Key;\ntype PascalizeStringRepeatedly =\n Key extends `${infer F}_${infer R}`\n ? `${F}${Capitalize>}`\n : Key;\nPascal case converters.Convert every property names of nested objects to be pascal case notation.When you need type safe functions, you can utilize below them.\ntypia.notations.assertPascal(): typia.assert() + typia.notations.pascal()\ntypia.notations.isPascal: typia.is() + typia.notations.pascal()\ntypia.notations.validatePascal: typia.validate() + typia.notations.pascal()\nimport typia from \"typia\";\ninterface IPerson {\n is_my_name_samchon?: boolean;\n helloTheNewWorld: string;\n toHTML: string;\n}\ntypia.notations.createPascal();\nimport typia from \"typia\";\n(() => {\n const $co0 = (input) => ({\n IsMyNameSamchon: input.is_my_name_samchon,\n HelloTheNewWorld: input.helloTheNewWorld,\n ToHTML: input.toHTML,\n });\n return (input) =>\n \"object\" === typeof input && null !== input ? $co0(input) : input;\n})();","snake-functions#snake() functions":"export namespace notations {\n export function snake(input: T): SnakeCase;\n export function assertSnake(input: T | unknown): SnakeCase;\n export function isSnake(input: T | unknown): SnakeCase | null;\n export function validateSnake(\n input: T | unknown,\n ): IValidation>;\n export function createSnake