web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

commit d6f7c31053d69cb5d76042ca3466c0e802990b84
parent e773d8de346c4073f46d7bb6c15cb76f59134994
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Thu, 13 Feb 2025 06:24:39 +0000

utils: edit i18n config utils, add validation schemas, update resolve enums

Diffstat:
Mutils/package.json | 1+
Mutils/src/*validation.ts | 8++++++--
Autils/src/app/i18n-icu.ts | 23+++++++++++++++++++++++
Mutils/src/app/i18n.ts | 36+++++++++++++++++-------------------
Mutils/src/app/types/resolve.ts | 20++++++++++----------
Mutils/src/app/util/resolve-enum.ts | 60++++++++++++++++++++++++++++++------------------------------
Mutils/src/index.ts | 1+
7 files changed, 88 insertions(+), 61 deletions(-)

diff --git a/utils/package.json b/utils/package.json @@ -38,6 +38,7 @@ "geohashing": "^2.0.1", "nostr-geotags": "^0.7.1", "nostr-tools": "^2.10.4", + "sveltekit-i18n": "^2.4.2", "uuid": "^10.0.0", "zod": "^3.23.8" } diff --git a/utils/src/*validation.ts b/utils/src/*validation.ts @@ -46,4 +46,8 @@ export const zod_numf_price = z.number().positive().multipleOf(0.01); export const zod_numi_pos = z.number().int().positive(); -export const zod_numf_pos = z.number().positive(); -\ No newline at end of file +export const zod_numf_pos = z.number().positive(); + +export const vf_email = z.string().email(); + +export const vf_username = z.string().regex(util_rxp.profile_name); +\ No newline at end of file diff --git a/utils/src/app/i18n-icu.ts b/utils/src/app/i18n-icu.ts @@ -0,0 +1,22 @@ +import i18n, { type Loader } from "@sveltekit-i18n/base"; +import type { Config, Parser } from "@sveltekit-i18n/parser-icu"; +import parser from "@sveltekit-i18n/parser-icu"; + +type LanguageConfig = { + default?: string; + value?: string; +}; +export const i18n_conf_icu = <T extends string>(opts: { + default_locale: T; + translations: Record<T, any>; + loaders: Loader.LoaderModule[] +}): i18n<Parser.Params<LanguageConfig>> => { + const { default_locale: initLocale, translations, loaders } = opts; + const config: Config<LanguageConfig> = { + initLocale, + translations, + parser: parser(), + loaders, + }; + return new i18n(config); +}; +\ No newline at end of file diff --git a/utils/src/app/i18n.ts b/utils/src/app/i18n.ts @@ -1,22 +1,21 @@ -import i18n, { type Loader } from "@sveltekit-i18n/base"; -import type { Config, Parser } from "@sveltekit-i18n/parser-icu"; -import parser from "@sveltekit-i18n/parser-icu"; +import { Loader } from '@sveltekit-i18n/base'; +import i18n, { type Config } from 'sveltekit-i18n'; type LanguageConfig = { - default?: string; - value?: string; + default?: string; + value?: string; }; + export const i18n_conf = <T extends string>(opts: { - default_locale: T; - translations: Record<T, any>; - loaders: Loader.LoaderModule[] -}): i18n<Parser.Params<LanguageConfig>> => { - const { default_locale: initLocale, translations, loaders } = opts; - const config: Config<LanguageConfig> = { - initLocale, - translations, - parser: parser(), - loaders, - }; - return new i18n(config); -}; -\ No newline at end of file + default_locale: T; + translations: Record<T, any>; + loaders: Loader.LoaderModule[] +}) => { + const { default_locale: initLocale, translations, loaders } = opts; + const config: Config<LanguageConfig> = { + initLocale, + translations, + loaders, + }; + return new i18n(config); +}; diff --git a/utils/src/app/types/resolve.ts b/utils/src/app/types/resolve.ts @@ -1,29 +1,29 @@ +export type ResolveEnumAccount_Role = 'admin' | 'guest' | 'internal' | 'member'; export type ResolveEnumArea_Unit = 'ac' | 'ft2' | 'ha' | 'm2'; +export type ResolveEnumAuth_Credential = 'email' | 'phone'; export type ResolveEnumBudget_Item_Type = 'capital_investment' | 'equipment' | 'fees' | 'infrastructure' | 'insurance' | 'labor' | 'materials' | 'other' | 'supplies'; export type ResolveEnumBudget_Spending_Type = 'equipment' | 'labor' | 'maintenance' | 'other' | 'supplies' | 'utilities'; -export type ResolveEnumCredential = 'email' | 'phone'; export type ResolveEnumPayment_Method = 'cash'; export type ResolveEnumPayment_Period = 'biweekly' | 'hourly' | 'monthly' | 'weekly'; export type ResolveEnumPayment_Status = 'confirmed' | 'pending'; export type ResolveEnumQuantity_Unit = 'g' | 'kg' | 'lb' | 'ton'; -export type ResolveEnumRole = 'admin' | 'guest' | 'internal' | 'member'; export type ResolveEnumWorker_Type = 'contractor' | 'laborer'; -export type ResolveAccountInfo = { id: string, created_at: string, updated_at: string, role: ResolveEnumRole, auth_ref: { credential: ResolveEnumCredential, email: { id: string, created_at: string, updated_at: string, address: string } }, profiles?: Array<{ id: string, created_at: string, updated_at: string, name: string, display_name?: string | null, primary: boolean, about?: string | null, emails: Array<{ id: string, created_at: string, updated_at: string, address: string }>, profile_photos?: Array<{ id: string, created_at: string, updated_at: string, primary: boolean, title?: string | null, description?: string | null, media_image: { id: string, created_at: string, updated_at: string, url: string } }> | null, nostr_keys: Array<{ id: string, created_at: string, updated_at: string, public_key: string }> }> | null, farms?: Array<{ id: string, created_at: string, updated_at: string, name: string, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_products?: Array<{ id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }> | null, farm_lots?: Array<{ id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_unit: ResolveEnumQuantity_Unit, quantity_harvested: number }> | null }> | null }> | null }> | null }; -export type ResolveAuthRefInfo = { credential: ResolveEnumCredential, email: { id: string, created_at: string, updated_at: string, address: string } }; +export type ResolveAccountInfo = { id: string, created_at: string, updated_at: string, role: ResolveEnumAccount_Role, auth_ref: { credential: ResolveEnumAuth_Credential, email: { id: string, created_at: string, updated_at: string, address: string } }, profiles?: Array<{ id: string, created_at: string, updated_at: string, name: string, display_name?: string | null, primary: boolean, about?: string | null, emails: Array<{ id: string, created_at: string, updated_at: string, address: string }>, profile_photos?: Array<{ id: string, created_at: string, updated_at: string, primary: boolean, title?: string | null, description?: string | null, media_image: { id: string, created_at: string, updated_at: string, url: string } }> | null, nostr_keys: Array<{ id: string, created_at: string, updated_at: string, public_key: string }> }> | null, farms?: Array<{ id: string, created_at: string, updated_at: string, name: string, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_products?: Array<{ id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }> | null, farm_lots?: Array<{ id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_planted_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_harvested: number, quantity_harvested_unit: ResolveEnumQuantity_Unit }> | null }> | null }> | null }> | null }; +export type ResolveAuthRefInfo = { credential: ResolveEnumAuth_Credential, email: { id: string, created_at: string, updated_at: string, address: string } }; export type ResolveEmailInfo = { id: string, created_at: string, updated_at: string, address: string }; export type ResolveProfileInfo = { id: string, created_at: string, updated_at: string, name: string, display_name?: string | null, primary: boolean, about?: string | null, emails: Array<{ id: string, created_at: string, updated_at: string, address: string }>, profile_photos?: Array<{ id: string, created_at: string, updated_at: string, primary: boolean, title?: string | null, description?: string | null, media_image: { id: string, created_at: string, updated_at: string, url: string } }> | null, nostr_keys: Array<{ id: string, created_at: string, updated_at: string, public_key: string }> }; export type ResolveProfilePhotoInfo = { id: string, created_at: string, updated_at: string, primary: boolean, title?: string | null, description?: string | null, media_image: { id: string, created_at: string, updated_at: string, url: string } }; export type ResolveMediaImageInfo = { id: string, created_at: string, updated_at: string, url: string }; export type ResolveNostrKeyInfo = { id: string, created_at: string, updated_at: string, public_key: string }; -export type ResolveFarmInfo = { id: string, created_at: string, updated_at: string, name: string, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_products?: Array<{ id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }> | null, farm_lots?: Array<{ id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_unit: ResolveEnumQuantity_Unit, quantity_harvested: number }> | null }> | null }> | null }; +export type ResolveFarmInfo = { id: string, created_at: string, updated_at: string, name: string, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_products?: Array<{ id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }> | null, farm_lots?: Array<{ id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_planted_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_harvested: number, quantity_harvested_unit: ResolveEnumQuantity_Unit }> | null }> | null }> | null }; export type ResolveGeolocationInfo = { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }; export type ResolveAddressInfo = { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string }; -export type ResolveFarmLotInfo = { id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_unit: ResolveEnumQuantity_Unit, quantity_harvested: number }> | null }> | null }; -export type ResolveFarmLotProductInfo = { id: string, created_at: string, updated_at: string, area_planted?: number | null, area_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_unit: ResolveEnumQuantity_Unit, quantity_harvested: number }> | null }; +export type ResolveFarmLotInfo = { id: string, created_at: string, updated_at: string, name?: string | null, area?: number | null, area_unit: ResolveEnumArea_Unit, geolocation: { id: string, created_at: string, updated_at: string, point: { type: string, coordinates: Array<number> }, polygon?: { type: string, coordinates: Array<Array<Array<number>>> } | null, address: { id: string, created_at: string, updated_at: string, primary: string, admin: string, country: string } }, farm_lot_products?: Array<{ id: string, created_at: string, updated_at: string, area_planted?: number | null, area_planted_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_harvested: number, quantity_harvested_unit: ResolveEnumQuantity_Unit }> | null }> | null }; +export type ResolveFarmLotProductInfo = { id: string, created_at: string, updated_at: string, area_planted?: number | null, area_planted_unit: ResolveEnumArea_Unit, date_planted?: string | null, days_to_maturity?: number | null, farm_product: { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }, farm_trade_products?: Array<{ id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }> | null }> | null, farm_lot_harvests?: Array<{ id: string, created_at: string, updated_at: string, quantity_harvested: number, quantity_harvested_unit: ResolveEnumQuantity_Unit }> | null }; export type ResolveFarmProductInfo = { id: string, created_at: string, updated_at: string, name: string, farm_lot_products?: Array<{ id: string }> | null }; -export type ResolveFarmTradeProductInfo = { id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null }; +export type ResolveFarmTradeProductInfo = { id: string, created_at: string, updated_at: string, title: string, description: string, process?: string | null, trade_product_prices?: Array<{ id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }> | null, trade_product_quantitys?: Array<{ id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }> | null }; export type ResolveTradeProductPriceInfo = { id: string, created_at: string, updated_at: string, amount: number, currency: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }; -export type ResolveTradeProductQuantityInfo = { id: string, created_at: string, updated_at: string, quantity_amount?: number | null, quantity_unit: ResolveEnumQuantity_Unit, quantity_label?: string | null }; -export type ResolveFarmLotHarvestInfo = { id: string, created_at: string, updated_at: string, quantity_unit: ResolveEnumQuantity_Unit, quantity_harvested: number }; +export type ResolveTradeProductQuantityInfo = { id: string, created_at: string, updated_at: string, amount?: number | null, unit: ResolveEnumQuantity_Unit, label?: string | null }; +export type ResolveFarmLotHarvestInfo = { id: string, created_at: string, updated_at: string, quantity_harvested: number, quantity_harvested_unit: ResolveEnumQuantity_Unit }; export type ResolveGeometryPoint = { type: string, coordinates: Array<number> }; export type ResolveGeometryPolygon = { type: string, coordinates: Array<Array<Array<number>>> }; diff --git a/utils/src/app/util/resolve-enum.ts b/utils/src/app/util/resolve-enum.ts @@ -1,3 +1,20 @@ +export type ResolveEnumAccountRoleKey = `Admin` | `Guest` | `Internal` | `Member`; + +export const parse_enum_account_role_key = (val: string): ResolveEnumAccountRoleKey | undefined => { + switch (val) { + case `admin`: + return `Admin`; + case `guest`: + return `Guest`; + case `internal`: + return `Internal`; + case `member`: + return `Member`; + default: + return undefined; + } +}; + export type ResolveEnumAreaUnitKey = `Ac` | `Ft2` | `Ha` | `M2`; export const parse_enum_area_unit_key = (val: string): ResolveEnumAreaUnitKey | undefined => { @@ -15,6 +32,19 @@ export const parse_enum_area_unit_key = (val: string): ResolveEnumAreaUnitKey | } }; +export type ResolveEnumAuthCredentialKey = `Email` | `Phone`; + +export const parse_enum_auth_credential_key = (val: string): ResolveEnumAuthCredentialKey | undefined => { + switch (val) { + case `email`: + return `Email`; + case `phone`: + return `Phone`; + default: + return undefined; + } +}; + export type ResolveEnumBudgetItemTypeKey = `CapitalInvestment` | `Equipment` | `Fees` | `Infrastructure` | `Insurance` | `Labor` | `Materials` | `Other` | `Supplies`; export const parse_enum_budget_item_type_key = (val: string): ResolveEnumBudgetItemTypeKey | undefined => { @@ -63,19 +93,6 @@ export const parse_enum_budget_spending_type_key = (val: string): ResolveEnumBud } }; -export type ResolveEnumCredentialKey = `Email` | `Phone`; - -export const parse_enum_credential_key = (val: string): ResolveEnumCredentialKey | undefined => { - switch (val) { - case `email`: - return `Email`; - case `phone`: - return `Phone`; - default: - return undefined; - } -}; - export type ResolveEnumPaymentMethodKey = `Cash`; export const parse_enum_payment_method_key = (val: string): ResolveEnumPaymentMethodKey | undefined => { @@ -134,23 +151,6 @@ export const parse_enum_quantity_unit_key = (val: string): ResolveEnumQuantityUn } }; -export type ResolveEnumRoleKey = `Admin` | `Guest` | `Internal` | `Member`; - -export const parse_enum_role_key = (val: string): ResolveEnumRoleKey | undefined => { - switch (val) { - case `admin`: - return `Admin`; - case `guest`: - return `Guest`; - case `internal`: - return `Internal`; - case `member`: - return `Member`; - default: - return undefined; - } -}; - export type ResolveEnumWorkerTypeKey = `Contractor` | `Laborer`; export const parse_enum_worker_type_key = (val: string): ResolveEnumWorkerTypeKey | undefined => { diff --git a/utils/src/index.ts b/utils/src/index.ts @@ -1,6 +1,7 @@ export * from "./*regex.js" export * from "./*validation.js" export * from "./app/document.js" +export * from "./app/i18n-icu.js" export * from "./app/i18n.js" export * from "./app/lib.js" export * from "./app/styles.js"