UNPKG

@kitmi/types

Version:

JavaScript semantic data types

90 lines (61 loc) 1.8 kB
# @kitmi/types ## JavaScript Semantic Data Types `@kitmi/types` defines semantic data types with validation and sanitization. ## Installation To install `@kitmi/types`, run the following command: ```bash bun install @kitmi/types ``` Or if you're using npm: ```bash npm install @kitmi/types ``` ## Conventions ### Types - any - array - bigint - binary - boolean - datetime - integer - number - object - text ### Type Interface ``` name: "type name", alias: ["type alias"], defaultValue: null, sanitize: (value, meta, i18n, context) => sanitized, serialize: (value, meta) => string ``` ### Common Type Meta - {boolean} plain - Keep raw value, don't try to preProcess and type cast before post processing - {boolean} optional - No error throw if value is null and default is null - {any} default - Default value if value is null - {array} enum - An array of values which the value of a enumerable type should be one of it - {any} const - The constant value of this field ### Enumerable Types - bigint - integer - number - text ### Validation Error - message - status = 400 - code = E_INVALID_DATA - info = { value, meta, [i18n], [path] } ### Plugins - datetimeParser - bigintWriter - preProcess - [sync/async] (value, meta, opts: { rawValue, i18n, path }) => [ finished, processedValue ] or [ false ] - postProcess - [sync/async] (value, meta, opts: { rawValue, i18n, path }) => processedValue Note: if preProcess or postProcess is async function, sanitize\_ should be called instead of sanitize See `@kitmi/validators` for semantic validation. ### Notes - Object sanitization Use `keepUnsanitized` for keeping those entries not defined in the object schema. ## License - MIT - Copyright (c) 2023 KITMI PTY LTD