{"version":3,"file":"standard.mjs","names":[],"sources":["../../src/functions/standard.ts"],"sourcesContent":["import type {\n    StandardSchemaDictionary,\n    StandardSchemaV1,\n} from \"#/@types/standard\";\n\nfunction ensureSynchronous<T>(\n    value: T | Promise<T>,\n    message: string,\n): asserts value is T {\n    if (value instanceof Promise) {\n        throw new Error(message);\n    }\n}\n\n/**\n * Validate a record against a dictionary of Standard Schema validators.\n */\nconst parseWithDictionary = <Dict extends StandardSchemaDictionary>(\n    dictionary: Dict,\n    value: Record<string, unknown>,\n): StandardSchemaV1.Result<StandardSchemaDictionary.InferOutput<Dict>> => {\n    const result: Record<string, unknown> = {};\n\n    const issues: StandardSchemaV1.Issue[] = [];\n\n    for (const key in dictionary) {\n        const schema = dictionary[key];\n\n        if (!schema) continue;\n\n        const propResult = schema[\"~standard\"].validate(value[key]);\n\n        ensureSynchronous(\n            propResult,\n            `Validation must be synchronous, but ${key} returned a Promise.`,\n        );\n\n        if (propResult.issues) {\n            for (const issue of propResult.issues) {\n                issues.push({\n                    message: issue.message,\n                    path: [\n                        key,\n                        ...(issue.path ?? []),\n                    ],\n                });\n            }\n\n            continue;\n        }\n\n        result[key] = propResult.value;\n    }\n\n    if (issues.length > 0) {\n        return {\n            issues,\n        };\n    }\n\n    return {\n        value: result as never,\n    };\n};\n\nexport { ensureSynchronous, parseWithDictionary };\n"],"mappings":"AAKA,SAAS,kBACL,OACA,SACkB;CAClB,IAAI,iBAAiB,SACjB,MAAM,IAAI,MAAM,OAAO;AAE/B;;;;AAKA,MAAM,uBACF,YACA,UACsE;CACtE,MAAM,SAAkC,CAAC;CAEzC,MAAM,SAAmC,CAAC;CAE1C,KAAK,MAAM,OAAO,YAAY;EAC1B,MAAM,SAAS,WAAW;EAE1B,IAAI,CAAC,QAAQ;EAEb,MAAM,aAAa,OAAO,YAAY,CAAC,SAAS,MAAM,IAAI;EAE1D,kBACI,YACA,uCAAuC,IAAI,qBAC/C;EAEA,IAAI,WAAW,QAAQ;GACnB,KAAK,MAAM,SAAS,WAAW,QAC3B,OAAO,KAAK;IACR,SAAS,MAAM;IACf,MAAM,CACF,KACA,GAAI,MAAM,QAAQ,CAAC,CACvB;GACJ,CAAC;GAGL;EACJ;EAEA,OAAO,OAAO,WAAW;CAC7B;CAEA,IAAI,OAAO,SAAS,GAChB,OAAO,EACH,OACJ;CAGJ,OAAO,EACH,OAAO,OACX;AACJ"}