🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@focus4/entities

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@focus4/entities - npm Package Compare versions

Comparing version
12.10.2
to
12.10.3
+13
lib/rolldown-runtime-D7D4PA-g.js
//#region \0rolldown/runtime.js
var __defProp = Object.defineProperty;
var __exportAll = (all, no_symbols) => {
let target = {};
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
return target;
};
//#endregion
export { __exportAll as t };
+9
-1

@@ -73,2 +73,10 @@ import { ZodArray, ZodBoolean, ZodISODate, ZodISODateTime, ZodInt, ZodInt32, ZodNumber, ZodString, ZodType, output } from "zod";

interface Entity extends Record<string, FieldEntry | ObjectEntry | ListEntry | RecursiveListEntry | Entity | [Entity]> {}
/** Récupère le nom des propriétés d'une entité qui sont des champs. */
type FieldsOf<E extends Entity> = { [P in keyof E]: E[P] extends FieldEntry ? P : never }[keyof E];
/** Récupère le nom des propriétés d'une entité qui sont des objets. */
type ObjectsOf<E extends Entity> = { [P in keyof E]: E[P] extends ObjectEntry ? P : never }[keyof E];
/** Récupère le nom des propriétés d'une entité qui sont des listes. */
type ListsOf<E extends Entity> = { [P in keyof E]: E[P] extends ListEntry | RecursiveListEntry ? P : never }[keyof E];
/** Récupère l'entité correspondant à une entrée d'entité. */
type EntryToEntity<E> = E extends ObjectEntry<infer E1> ? E1 : E extends ListEntry<infer E2> ? E2 : E extends RecursiveListEntry ? E : never;
//#endregion

@@ -202,3 +210,3 @@ //#region src/builders/entity.d.ts

//#endregion
export { type Entity, type EntityToType, type FieldEntry, type ListEntry, type ObjectEntry, type RecursiveListEntry, type SingleZodType, type ZodTypeMultiple, type ZodTypeSingle, entries_d_exports as e, entity, isArraySchema, isBooleanSchema, isDateSchema, isDateTimeSchema, isIntSchema, isNumberSchema, isStringSchema, stringToSchemaOutput };
export { type Entity, type EntityToType, type EntryToEntity, type FieldEntry, type FieldsOf, type ListEntry, type ListsOf, type ObjectEntry, type ObjectsOf, type RecursiveListEntry, type SingleZodType, type ZodTypeMultiple, type ZodTypeSingle, entries_d_exports as e, entity, isArraySchema, isBooleanSchema, isDateSchema, isDateTimeSchema, isIntSchema, isNumberSchema, isStringSchema, stringToSchemaOutput };
//# sourceMappingURL=focus4.entities.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"focus4.entities.d.ts","names":[],"sources":["../src/types.ts","../src/builders/entity.ts","../src/builders/entry-builders.ts","../src/builders/entries.ts","../src/utils.ts"],"mappings":"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"}
{"version":3,"file":"focus4.entities.d.ts","names":[],"sources":["../src/types.ts","../src/builders/entity.ts","../src/builders/entry-builders.ts","../src/builders/entries.ts","../src/utils.ts"],"mappings":";;;;KAGY,aAAA,GAAgB,OAAA,YAAmB,OAAA,WAAkB,OAAA;;KAGrD,eAAA,GAAkB,QAAA,CAAS,OAAA,aAAoB,QAAA,CAAS,OAAA,YAAmB,QAAA,CAAS,OAAA;;KAGpF,aAAA,MAAmB,CAAA,SAAU,QAAA,aAAqB,EAAA,GAAK,CAAA;;QAG3D,MAAA;EAAA,UACM,MAAA,WAAiB,OAAA;IAVyC;IAYhE,MAAA,EAAQ,CAAC;EAAA;AAAA;;UAKA,UAAA,WAAqB,MAAA,kBAAwB,MAAA,CAAO,CAAA,cAAe,MAAA,CAAO,CAAA;EAAA,SAC9E,IAAA;EAfD;EAAA,SAkBC,SAAA,GAAY,CAAA;;WAGZ,MAAA,EAAQ,CAAA;EArBS;EAAA,SAwBjB,UAAA;EAxB8C;EAAA,SA2B9C,IAAA;EA3B0E;EAAA,SA8B1E,KAAA;EA9BkF;EAAA,SAiClF,OAAA;EAjC0B;EAAA,SAoC1B,YAAA,GAAe,CAAA;AAAA;;UAIX,WAAA,WAAsB,MAAA;EAAA,SAC1B,IAAA;EAzC0F;EAAA,SA4C1F,MAAA,EAAQ,CAAC;EAzCG;EAAA,SA4CZ,UAAA;EA5CkB;EAAA,SA+ClB,KAAA;EA/CsD;EAAA,SAkDtD,OAAA;AAAA;;UAII,SAAA,WAAoB,MAAA;EAAA,SACxB,IAAA;EAvD2C;EAAA,SA0D3C,MAAA,EAAQ,CAAC;EA1D6C;EAAA,SA6DtD,UAAA;EA7DuD;EAAA,SAgEvD,KAAA;EAhEwD;EAAA,SAmExD,OAAA;AAAA;;UAII,kBAAA;EAAA,SACJ,IAAA;EApEkB;EAAA,SAuElB,UAAA;EArEG;EAAA,SAwEH,KAAA;EAxEI;EAAA,SA2EJ,OAAA;AAAA;;KAID,YAAA,WAAuB,MAAA,4BACT,CAAA,IAAK,CAAA,CAAE,CAAA,UAAW,UAAA,GAClC,CAAA,CAAE,CAAA,iBACF,CAAA,CAAE,CAAA,UAAW,WAAA,aACX,YAAA,CAAa,EAAA,IACb,CAAA,CAAE,CAAA,UAAW,SAAA,aACX,YAAA,CAAa,EAAA,MACb,CAAA,CAAE,CAAA,UAAW,kBAAA,GACX,YAAA,CAAa,CAAA,MACb,CAAA,CAAE,CAAA,WAAY,MAAA,IACZ,YAAA,CAAa,CAAA,CAAE,CAAA,UACf,CAAA,CAAE,CAAA,UAAW,MAAA,GACX,YAAA,CAAa,CAAA,CAAE,CAAA;;UAMlB,MAAA,SAAe,MAAA,SAE5B,UAAA,GAAa,WAAA,GAAc,SAAA,GAAY,kBAAA,GAAqB,MAAA,IAAU,MAAA;;KAI9D,QAAA,WAAmB,MAAA,kBAAuB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,UAAA,GAAa,CAAA,iBAAiB,CAAA;;KAGzF,SAAA,WAAoB,MAAA,kBAAuB,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,WAAA,GAAc,CAAA,iBAAiB,CAAA;;KAG3F,OAAA,WAAkB,MAAA,kBACd,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,SAAA,GAAY,kBAAA,GAAqB,CAAA,iBAC1D,CAAA;;KAGI,aAAA,MACR,CAAA,SAAU,WAAA,aACJ,EAAA,GACA,CAAA,SAAU,SAAA,aACR,EAAA,GACA,CAAA,SAAU,kBAAA,GACR,CAAA;;;;;;AApId;;iBCIgB,MAAA,iBAAuB,MAAA,EAAQ,OAAA,EAAS,CAAA,GAAI,CAAA;;;cCDtD,YAAA;cAIU,IAAA;;EAKZ,QAAA;EFZqB;;;;EEqBrB,KAAA,CAAM,KAAA;EFrB8D;;;;EE6BpE,OAAA,CAAQ,OAAA;AAAA;AAAA,cAMC,iBAAA,kBAAmC,YAAA;cAIhC,MAAA,EAAQ,MAAA;EFpCG;;;;EE6CvB,YAAA,CAAa,YAAA,EAAc,CAAA;EF7C4B;;;;EEsDvD,IAAA,CAAK,IAAA;EFtDqB;EE4D1B,IAAA,YAAgB,CAAA,KAAM,iBAAA,CAAkB,EAAA;AAAA;AAAA,cAK/B,kBAAA,SAA2B,YAAY;cAGpC,CAAA,EAAG,MAAA;AAAA;AAAA,cAMN,gBAAA,SAAyB,YAAY;cAGlC,CAAA,EAAG,MAAA;AAAA;AAAA,cAMN,yBAAA,SAAkC,YAAY;EAC/C,KAAA,EAAO,kBAAA;;;;;;;AFvFnB;;;;;iBGSgB,KAAA,WAAgB,MAAA,EAAQ,MAAA,EAAQ,CAAA,GAAI,UAAA,CAAW,CAAA;;;;;;;AHTS;iBGiBxD,KAAA,WAAgB,MAAA,YAAkB,MAAA,CAAO,CAAA,cAAe,MAAA,CAAO,CAAA,aAC3E,MAAA,EAAQ,CAAA,EACR,OAAA,GAAU,CAAA,EAAG,iBAAA,CAAkB,MAAA,CAAO,CAAA,iBAAkB,iBAAA,CAAkB,CAAA,IAC3E,UAAA,CAAW,CAAA,EAAG,CAAA;;;;;;iBASD,MAAA,iBAAuB,MAAA,EACnC,MAAA,EAAQ,CAAA,EACR,OAAA,IAAU,CAAA,EAAG,kBAAA,KAAuB,kBAAA,GAEoB,WAAA,CAAY,CAAA;;;;;;iBAQxD,IAAA,iBAAqB,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,OAAA,IAAU,CAAA,EAAG,gBAAA,KAAqB,gBAAA,GAChC,SAAA,CAAU,CAAA;;;;;iBAOpD,aAAA,CAAc,OAAA,IAAU,CAAA,EAAG,yBAAA,KAA8B,yBAAA,GAAkC,kBAAA;;;;;;AHjD3G;iBIcgB,oBAAA,WAA+B,OAAA,EAAS,KAAA,sBAA2B,MAAA,EAAQ,CAAA,GAAC,MAAA,CAAA,CAAA;;;;;iBAoB5E,aAAA,CAAc,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,QAAA,CAAS,OAAA;;;;;iBAQnD,eAAA,CAAgB,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,UAAU;AJ1CE;AAGxE;;;AAHwE,iBIkDxD,YAAA,CAAa,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,UAAU;;;;;iBAQnD,gBAAA,CAAiB,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,cAAc;;;;;iBAQ3D,WAAA,CAAY,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,QAAA,GAAW,MAAA;;;;;iBASnD,cAAA,CAAe,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,SAAS;AJrEpE;;;;AAAA,iBI6EgB,cAAA,CAAe,MAAA,EAAQ,OAAA,GAAU,MAAA,IAAU,SAAS"}

@@ -1,2 +0,2 @@

import { t as __exportAll } from "./chunk-pbuEa-1d.js";
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
//#region src/builders/entity.ts

@@ -132,3 +132,3 @@ /**

if (schema.type === "string" && value) return value;
if (schema.type === "number" && value) return Number.parseFloat(value);
if (schema.type === "number" && value) return +value;
if (schema.type === "boolean") return value === "true" ? true : value === "false" ? false : void 0;

@@ -135,0 +135,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"focus4.entities.js","names":[],"sources":["../src/builders/entity.ts","../src/builders/entry-builders.ts","../src/builders/entries.ts","../src/utils.ts"],"sourcesContent":["import {Entity, FieldEntry} from \"../types\";\r\n\r\n/**\r\n * Crée une entité à partir d'une définition d'entrées.\r\n *\r\n * La seule valeur ajoutée de cette fonction (pour l'instant) est de renseigner automatiquement le nom des champs créés.\r\n */\r\nexport function entity<const E extends Entity>(entries: E): E {\r\n for (const key in entries) {\r\n if ((entries[key] as FieldEntry).type === \"field\" && !(entries[key] as FieldEntry).name) {\r\n (entries[key] as any).name = key;\r\n }\r\n }\r\n\r\n return entries;\r\n}\r\n","import {Entity, FieldEntry, ListEntry, ObjectEntry, RecursiveListEntry} from \"../types\";\r\n\r\nimport {entity} from \"./entity\";\r\n\r\ntype PartialNonReadonly<T> = {-readonly [P in keyof T]?: T[P]};\r\n\r\nclass EntryBuilder {\r\n /** @internal */\r\n entry: PartialNonReadonly<ObjectEntry | FieldEntry | ListEntry | RecursiveListEntry>;\r\n\r\n constructor(type: \"field\" | \"object\" | \"list\" | \"recursive-list\") {\r\n this.entry = {type, label: \"\", isRequired: true};\r\n }\r\n\r\n /** Rend l'entrée d'entité non-obligatoire. */\r\n optional() {\r\n this.entry.isRequired = false;\r\n return this;\r\n }\r\n\r\n /**\r\n * Renseigne le libellé de l'entrée d'entité\r\n * @param label Le libellé.\r\n */\r\n label(label: string) {\r\n this.entry.label = label;\r\n return this;\r\n }\r\n /**\r\n * Renseigne le commentaire de l'entrée d'entité\r\n * @param comment Le commentaire.\r\n */\r\n comment(comment: string) {\r\n this.entry.comment = comment;\r\n return this;\r\n }\r\n}\r\n\r\nexport class FieldEntryBuilder<T = any> extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<FieldEntry>;\r\n\r\n constructor(domain: Domain) {\r\n super(\"field\");\r\n this.entry.name = \"\";\r\n this.entry.domain = domain;\r\n }\r\n /**\r\n * Renseigne la valeur par défaut du champ.\r\n * @param defaultValue La valeur par défaut.\r\n */\r\n defaultValue(defaultValue: T) {\r\n this.entry.defaultValue = defaultValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Renseigne le nom du champ. Si non renseigné, il sera renseigné par la fonction `entity` avec le nom de la propriété dans l'objet.\r\n * @param name Le nom du champ.\r\n */\r\n name(name: string) {\r\n this.entry.name = name;\r\n return this;\r\n }\r\n\r\n /** Précise le type du champ, au delà du type déduit de son schéma. Le nouveau type doit y être assignable à l'ancien. */\r\n type<NT extends T>(): FieldEntryBuilder<NT> {\r\n return this;\r\n }\r\n}\r\n\r\nexport class ObjectEntryBuilder extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ObjectEntry>;\r\n constructor(e: Entity) {\r\n super(\"object\");\r\n this.entry.entity = entity(e);\r\n }\r\n}\r\n\r\nexport class ListEntryBuilder extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ListEntry>;\r\n constructor(e: Entity) {\r\n super(\"list\");\r\n this.entry.entity = entity(e);\r\n }\r\n}\r\n\r\nexport class RecursiveListEntryBuilder extends EntryBuilder {\r\n declare entry: RecursiveListEntry;\r\n constructor() {\r\n super(\"recursive-list\");\r\n }\r\n}\r\n","import {output} from \"zod\";\r\n\r\nimport {Entity, FieldEntry, ListEntry, ObjectEntry} from \"../types\";\r\n\r\nimport {FieldEntryBuilder, ListEntryBuilder, ObjectEntryBuilder, RecursiveListEntryBuilder} from \"./entry-builders\";\r\n\r\n/**\r\n * Crée un champ pour une entité.\r\n *\r\n * (Le champ sera obligatoire par défaut)\r\n * @param domain Le domaine du champ.\r\n */\r\nexport function field<D extends Domain>(domain: D): FieldEntry<D>;\r\n/**\r\n * Crée un champ pour une entité.\r\n *\r\n * (Le champ sera obligatoire par défaut)\r\n * @param domain Le domaine du champ.\r\n * @param builder Le configurateur du champ.\r\n */\r\nexport function field<D extends Domain, T extends output<D[\"schema\"]> = output<D[\"schema\"]>>(\r\n domain: D,\r\n builder: (f: FieldEntryBuilder<output<D[\"schema\"]>>) => FieldEntryBuilder<T>\r\n): FieldEntry<D, T>;\r\nexport function field(domain: Domain, builder: (f: FieldEntryBuilder) => FieldEntryBuilder = f => f) {\r\n return builder(new FieldEntryBuilder(domain)).entry;\r\n}\r\n/**\r\n * Crée un composition simple pour une entité.\r\n * @param entity L'entité pour la composition.\r\n * @param builder Le configurateur.\r\n */\r\nexport function object<const E extends Entity>(\r\n entity: E,\r\n builder: (f: ObjectEntryBuilder) => ObjectEntryBuilder = f => f\r\n) {\r\n return builder(new ObjectEntryBuilder(entity)).entry as ObjectEntry<E>;\r\n}\r\n\r\n/**\r\n * Crée un composition liste pour une entité.\r\n * @param entity L'entité pour la composition.\r\n * @param builder Le configurateur.\r\n */\r\nexport function list<const E extends Entity>(entity: E, builder: (f: ListEntryBuilder) => ListEntryBuilder = f => f) {\r\n return builder(new ListEntryBuilder(entity)).entry as ListEntry<E>;\r\n}\r\n\r\n/**\r\n * Crée un composition de liste récursive (une liste de l'entité qui la contient).\r\n * @param builder Le configurateur.\r\n */\r\nexport function recursiveList(builder: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder = f => f) {\r\n return builder(new RecursiveListEntryBuilder()).entry;\r\n}\r\n","import {\r\n output,\r\n ZodArray,\r\n ZodBoolean,\r\n ZodInt,\r\n ZodInt32,\r\n ZodISODate,\r\n ZodISODateTime,\r\n ZodNumber,\r\n ZodString,\r\n ZodType\r\n} from \"zod\";\r\n\r\n/**\r\n * Convertit une valeur string dans le type du schéma demandé.\r\n * @param value Valeur à convertir.\r\n */\r\nexport function stringToSchemaOutput<S extends ZodType>(value: string | undefined, schema: S) {\r\n if (schema.type === \"string\" && value) {\r\n return value as output<S>;\r\n }\r\n\r\n if (schema.type === \"number\" && value) {\r\n return Number.parseFloat(value) as output<S>;\r\n }\r\n\r\n if (schema.type === \"boolean\") {\r\n return (value === \"true\" ? true : value === \"false\" ? false : undefined) as output<S>;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma array.\r\n * @param schema Le schéma.\r\n */\r\nexport function isArraySchema(schema: ZodType): schema is ZodArray<ZodType> {\r\n return schema.type === \"array\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma boolean.\r\n * @param schema Le schéma.\r\n */\r\nexport function isBooleanSchema(schema: ZodType): schema is ZodBoolean {\r\n return schema.type === \"boolean\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma date.\r\n * @param schema Le schéma.\r\n */\r\nexport function isDateSchema(schema: ZodType): schema is ZodISODate {\r\n return (schema as ZodString).format === \"date\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma datetime.\r\n * @param schema Le schéma.\r\n */\r\nexport function isDateTimeSchema(schema: ZodType): schema is ZodISODateTime {\r\n return (schema as ZodString).format === \"datetime\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma int.\r\n * @param schema Le schéma.\r\n */\r\nexport function isIntSchema(schema: ZodType): schema is ZodInt32 | ZodInt {\r\n const {format} = schema as ZodNumber;\r\n return format === \"int32\" || format === \"safeint\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma number.\r\n * @param schema Le schéma.\r\n */\r\nexport function isNumberSchema(schema: ZodType): schema is ZodNumber {\r\n return schema.type === \"number\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma string.\r\n * @param schema Le schéma.\r\n */\r\nexport function isStringSchema(schema: ZodType): schema is ZodString {\r\n return schema.type === \"string\";\r\n}\r\n"],"mappings":";;;;;;;AAOA,SAAgB,OAA+B,SAAe;AAC1D,MAAK,MAAM,OAAO,QACd,KAAK,QAAQ,KAAoB,SAAS,WAAW,CAAE,QAAQ,KAAoB,KAC9E,SAAQ,KAAa,OAAO;AAIrC,QAAO;;;;ACRX,IAAM,eAAN,MAAmB;;CAEf;CAEA,YAAY,MAAsD;AAC9D,OAAK,QAAQ;GAAC;GAAM,OAAO;GAAI,YAAY;GAAK;;;CAIpD,WAAW;AACP,OAAK,MAAM,aAAa;AACxB,SAAO;;;;;;CAOX,MAAM,OAAe;AACjB,OAAK,MAAM,QAAQ;AACnB,SAAO;;;;;;CAMX,QAAQ,SAAiB;AACrB,OAAK,MAAM,UAAU;AACrB,SAAO;;;AAIf,IAAa,oBAAb,cAAgD,aAAa;CAIzD,YAAY,QAAgB;AACxB,QAAM,QAAQ;AACd,OAAK,MAAM,OAAO;AAClB,OAAK,MAAM,SAAS;;;;;;CAMxB,aAAa,cAAiB;AAC1B,OAAK,MAAM,eAAe;AAC1B,SAAO;;;;;;CAOX,KAAK,MAAc;AACf,OAAK,MAAM,OAAO;AAClB,SAAO;;;CAIX,OAA4C;AACxC,SAAO;;;AAIf,IAAa,qBAAb,cAAwC,aAAa;CAGjD,YAAY,GAAW;AACnB,QAAM,SAAS;AACf,OAAK,MAAM,SAAS,OAAO,EAAE;;;AAIrC,IAAa,mBAAb,cAAsC,aAAa;CAG/C,YAAY,GAAW;AACnB,QAAM,OAAO;AACb,OAAK,MAAM,SAAS,OAAO,EAAE;;;AAIrC,IAAa,4BAAb,cAA+C,aAAa;CAExD,cAAc;AACV,QAAM,iBAAiB;;;;;;;;;;;ACpE/B,SAAgB,MAAM,QAAgB,WAAuD,MAAK,GAAG;AACjG,QAAO,QAAQ,IAAI,kBAAkB,OAAO,CAAC,CAAC;;;;;;;AAOlD,SAAgB,OACZ,QACA,WAAyD,MAAK,GAChE;AACE,QAAO,QAAQ,IAAI,mBAAmB,OAAO,CAAC,CAAC;;;;;;;AAQnD,SAAgB,KAA6B,QAAW,WAAqD,MAAK,GAAG;AACjH,QAAO,QAAQ,IAAI,iBAAiB,OAAO,CAAC,CAAC;;;;;;AAOjD,SAAgB,cAAc,WAAuE,MAAK,GAAG;AACzG,QAAO,QAAQ,IAAI,2BAA2B,CAAC,CAAC;;;;;;;;ACpCpD,SAAgB,qBAAwC,OAA2B,QAAW;AAC1F,KAAI,OAAO,SAAS,YAAY,MAC5B,QAAO;AAGX,KAAI,OAAO,SAAS,YAAY,MAC5B,QAAO,OAAO,WAAW,MAAM;AAGnC,KAAI,OAAO,SAAS,UAChB,QAAQ,UAAU,SAAS,OAAO,UAAU,UAAU,QAAQ,KAAA;;;;;;AAUtE,SAAgB,cAAc,QAA8C;AACxE,QAAO,OAAO,SAAS;;;;;;AAO3B,SAAgB,gBAAgB,QAAuC;AACnE,QAAO,OAAO,SAAS;;;;;;AAO3B,SAAgB,aAAa,QAAuC;AAChE,QAAQ,OAAqB,WAAW;;;;;;AAO5C,SAAgB,iBAAiB,QAA2C;AACxE,QAAQ,OAAqB,WAAW;;;;;;AAO5C,SAAgB,YAAY,QAA8C;CACtE,MAAM,EAAC,WAAU;AACjB,QAAO,WAAW,WAAW,WAAW;;;;;;AAO5C,SAAgB,eAAe,QAAsC;AACjE,QAAO,OAAO,SAAS;;;;;;AAO3B,SAAgB,eAAe,QAAsC;AACjE,QAAO,OAAO,SAAS"}
{"version":3,"file":"focus4.entities.js","names":[],"sources":["../src/builders/entity.ts","../src/builders/entry-builders.ts","../src/builders/entries.ts","../src/utils.ts"],"sourcesContent":["import {Entity, FieldEntry} from \"../types\";\r\n\r\n/**\r\n * Crée une entité à partir d'une définition d'entrées.\r\n *\r\n * La seule valeur ajoutée de cette fonction (pour l'instant) est de renseigner automatiquement le nom des champs créés.\r\n */\r\nexport function entity<const E extends Entity>(entries: E): E {\r\n for (const key in entries) {\r\n if ((entries[key] as FieldEntry).type === \"field\" && !(entries[key] as FieldEntry).name) {\r\n (entries[key] as any).name = key;\r\n }\r\n }\r\n\r\n return entries;\r\n}\r\n","import {Entity, FieldEntry, ListEntry, ObjectEntry, RecursiveListEntry} from \"../types\";\r\n\r\nimport {entity} from \"./entity\";\r\n\r\ntype PartialNonReadonly<T> = {-readonly [P in keyof T]?: T[P]};\r\n\r\nclass EntryBuilder {\r\n /** @internal */\r\n entry: PartialNonReadonly<ObjectEntry | FieldEntry | ListEntry | RecursiveListEntry>;\r\n\r\n constructor(type: \"field\" | \"object\" | \"list\" | \"recursive-list\") {\r\n this.entry = {type, label: \"\", isRequired: true};\r\n }\r\n\r\n /** Rend l'entrée d'entité non-obligatoire. */\r\n optional() {\r\n this.entry.isRequired = false;\r\n return this;\r\n }\r\n\r\n /**\r\n * Renseigne le libellé de l'entrée d'entité\r\n * @param label Le libellé.\r\n */\r\n label(label: string) {\r\n this.entry.label = label;\r\n return this;\r\n }\r\n /**\r\n * Renseigne le commentaire de l'entrée d'entité\r\n * @param comment Le commentaire.\r\n */\r\n comment(comment: string) {\r\n this.entry.comment = comment;\r\n return this;\r\n }\r\n}\r\n\r\nexport class FieldEntryBuilder<T = any> extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<FieldEntry>;\r\n\r\n constructor(domain: Domain) {\r\n super(\"field\");\r\n this.entry.name = \"\";\r\n this.entry.domain = domain;\r\n }\r\n /**\r\n * Renseigne la valeur par défaut du champ.\r\n * @param defaultValue La valeur par défaut.\r\n */\r\n defaultValue(defaultValue: T) {\r\n this.entry.defaultValue = defaultValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Renseigne le nom du champ. Si non renseigné, il sera renseigné par la fonction `entity` avec le nom de la propriété dans l'objet.\r\n * @param name Le nom du champ.\r\n */\r\n name(name: string) {\r\n this.entry.name = name;\r\n return this;\r\n }\r\n\r\n /** Précise le type du champ, au delà du type déduit de son schéma. Le nouveau type doit y être assignable à l'ancien. */\r\n type<NT extends T>(): FieldEntryBuilder<NT> {\r\n return this;\r\n }\r\n}\r\n\r\nexport class ObjectEntryBuilder extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ObjectEntry>;\r\n constructor(e: Entity) {\r\n super(\"object\");\r\n this.entry.entity = entity(e);\r\n }\r\n}\r\n\r\nexport class ListEntryBuilder extends EntryBuilder {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ListEntry>;\r\n constructor(e: Entity) {\r\n super(\"list\");\r\n this.entry.entity = entity(e);\r\n }\r\n}\r\n\r\nexport class RecursiveListEntryBuilder extends EntryBuilder {\r\n declare entry: RecursiveListEntry;\r\n constructor() {\r\n super(\"recursive-list\");\r\n }\r\n}\r\n","import {output} from \"zod\";\r\n\r\nimport {Entity, FieldEntry, ListEntry, ObjectEntry} from \"../types\";\r\n\r\nimport {FieldEntryBuilder, ListEntryBuilder, ObjectEntryBuilder, RecursiveListEntryBuilder} from \"./entry-builders\";\r\n\r\n/**\r\n * Crée un champ pour une entité.\r\n *\r\n * (Le champ sera obligatoire par défaut)\r\n * @param domain Le domaine du champ.\r\n */\r\nexport function field<D extends Domain>(domain: D): FieldEntry<D>;\r\n/**\r\n * Crée un champ pour une entité.\r\n *\r\n * (Le champ sera obligatoire par défaut)\r\n * @param domain Le domaine du champ.\r\n * @param builder Le configurateur du champ.\r\n */\r\nexport function field<D extends Domain, T extends output<D[\"schema\"]> = output<D[\"schema\"]>>(\r\n domain: D,\r\n builder: (f: FieldEntryBuilder<output<D[\"schema\"]>>) => FieldEntryBuilder<T>\r\n): FieldEntry<D, T>;\r\nexport function field(domain: Domain, builder: (f: FieldEntryBuilder) => FieldEntryBuilder = f => f) {\r\n return builder(new FieldEntryBuilder(domain)).entry;\r\n}\r\n/**\r\n * Crée un composition simple pour une entité.\r\n * @param entity L'entité pour la composition.\r\n * @param builder Le configurateur.\r\n */\r\nexport function object<const E extends Entity>(\r\n entity: E,\r\n builder: (f: ObjectEntryBuilder) => ObjectEntryBuilder = f => f\r\n) {\r\n return builder(new ObjectEntryBuilder(entity)).entry as ObjectEntry<E>;\r\n}\r\n\r\n/**\r\n * Crée un composition liste pour une entité.\r\n * @param entity L'entité pour la composition.\r\n * @param builder Le configurateur.\r\n */\r\nexport function list<const E extends Entity>(entity: E, builder: (f: ListEntryBuilder) => ListEntryBuilder = f => f) {\r\n return builder(new ListEntryBuilder(entity)).entry as ListEntry<E>;\r\n}\r\n\r\n/**\r\n * Crée un composition de liste récursive (une liste de l'entité qui la contient).\r\n * @param builder Le configurateur.\r\n */\r\nexport function recursiveList(builder: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder = f => f) {\r\n return builder(new RecursiveListEntryBuilder()).entry;\r\n}\r\n","import {\r\n output,\r\n ZodArray,\r\n ZodBoolean,\r\n ZodInt,\r\n ZodInt32,\r\n ZodISODate,\r\n ZodISODateTime,\r\n ZodNumber,\r\n ZodString,\r\n ZodType\r\n} from \"zod\";\r\n\r\n/**\r\n * Convertit une valeur string dans le type du schéma demandé.\r\n * @param value Valeur à convertir.\r\n */\r\nexport function stringToSchemaOutput<S extends ZodType>(value: string | undefined, schema: S) {\r\n if (schema.type === \"string\" && value) {\r\n return value as output<S>;\r\n }\r\n\r\n if (schema.type === \"number\" && value) {\r\n return +value as output<S>;\r\n }\r\n\r\n if (schema.type === \"boolean\") {\r\n return (value === \"true\" ? true : value === \"false\" ? false : undefined) as output<S>;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma array.\r\n * @param schema Le schéma.\r\n */\r\nexport function isArraySchema(schema: ZodType): schema is ZodArray<ZodType> {\r\n return schema.type === \"array\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma boolean.\r\n * @param schema Le schéma.\r\n */\r\nexport function isBooleanSchema(schema: ZodType): schema is ZodBoolean {\r\n return schema.type === \"boolean\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma date.\r\n * @param schema Le schéma.\r\n */\r\nexport function isDateSchema(schema: ZodType): schema is ZodISODate {\r\n return (schema as ZodString).format === \"date\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma datetime.\r\n * @param schema Le schéma.\r\n */\r\nexport function isDateTimeSchema(schema: ZodType): schema is ZodISODateTime {\r\n return (schema as ZodString).format === \"datetime\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma int.\r\n * @param schema Le schéma.\r\n */\r\nexport function isIntSchema(schema: ZodType): schema is ZodInt32 | ZodInt {\r\n const {format} = schema as ZodNumber;\r\n return format === \"int32\" || format === \"safeint\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma number.\r\n * @param schema Le schéma.\r\n */\r\nexport function isNumberSchema(schema: ZodType): schema is ZodNumber {\r\n return schema.type === \"number\";\r\n}\r\n\r\n/**\r\n * Teste si le schéma est un schéma string.\r\n * @param schema Le schéma.\r\n */\r\nexport function isStringSchema(schema: ZodType): schema is ZodString {\r\n return schema.type === \"string\";\r\n}\r\n"],"mappings":";;;;;;;AAOA,SAAgB,OAA+B,SAAe;CAC1D,KAAK,MAAM,OAAO,SACd,IAAK,QAAQ,IAAI,CAAgB,SAAS,WAAW,CAAE,QAAQ,IAAI,CAAgB,MAC/E,QAAS,IAAI,CAAS,OAAO;CAIrC,OAAO;AACX;;;ACTA,IAAM,eAAN,MAAmB;;CAEf;CAEA,YAAY,MAAsD;EAC9D,KAAK,QAAQ;GAAC;GAAM,OAAO;GAAI,YAAY;EAAI;CACnD;;CAGA,WAAW;EACP,KAAK,MAAM,aAAa;EACxB,OAAO;CACX;;;;;CAMA,MAAM,OAAe;EACjB,KAAK,MAAM,QAAQ;EACnB,OAAO;CACX;;;;;CAKA,QAAQ,SAAiB;EACrB,KAAK,MAAM,UAAU;EACrB,OAAO;CACX;AACJ;AAEA,IAAa,oBAAb,cAAgD,aAAa;CAIzD,YAAY,QAAgB;EACxB,MAAM,OAAO;EACb,KAAK,MAAM,OAAO;EAClB,KAAK,MAAM,SAAS;CACxB;;;;;CAKA,aAAa,cAAiB;EAC1B,KAAK,MAAM,eAAe;EAC1B,OAAO;CACX;;;;;CAMA,KAAK,MAAc;EACf,KAAK,MAAM,OAAO;EAClB,OAAO;CACX;;CAGA,OAA4C;EACxC,OAAO;CACX;AACJ;AAEA,IAAa,qBAAb,cAAwC,aAAa;CAGjD,YAAY,GAAW;EACnB,MAAM,QAAQ;EACd,KAAK,MAAM,SAAS,OAAO,CAAC;CAChC;AACJ;AAEA,IAAa,mBAAb,cAAsC,aAAa;CAG/C,YAAY,GAAW;EACnB,MAAM,MAAM;EACZ,KAAK,MAAM,SAAS,OAAO,CAAC;CAChC;AACJ;AAEA,IAAa,4BAAb,cAA+C,aAAa;CAExD,cAAc;EACV,MAAM,gBAAgB;CAC1B;AACJ;;;;;;;;;ACtEA,SAAgB,MAAM,QAAgB,WAAuD,MAAK,GAAG;CACjG,OAAO,QAAQ,IAAI,kBAAkB,MAAM,CAAC,CAAC,CAAC;AAClD;;;;;;AAMA,SAAgB,OACZ,QACA,WAAyD,MAAK,GAChE;CACE,OAAO,QAAQ,IAAI,mBAAmB,MAAM,CAAC,CAAC,CAAC;AACnD;;;;;;AAOA,SAAgB,KAA6B,QAAW,WAAqD,MAAK,GAAG;CACjH,OAAO,QAAQ,IAAI,iBAAiB,MAAM,CAAC,CAAC,CAAC;AACjD;;;;;AAMA,SAAgB,cAAc,WAAuE,MAAK,GAAG;CACzG,OAAO,QAAQ,IAAI,0BAA0B,CAAC,CAAC,CAAC;AACpD;;;;;;;ACrCA,SAAgB,qBAAwC,OAA2B,QAAW;CAC1F,IAAI,OAAO,SAAS,YAAY,OAC5B,OAAO;CAGX,IAAI,OAAO,SAAS,YAAY,OAC5B,OAAO,CAAC;CAGZ,IAAI,OAAO,SAAS,WAChB,OAAQ,UAAU,SAAS,OAAO,UAAU,UAAU,QAAQ,KAAA;AAItE;;;;;AAMA,SAAgB,cAAc,QAA8C;CACxE,OAAO,OAAO,SAAS;AAC3B;;;;;AAMA,SAAgB,gBAAgB,QAAuC;CACnE,OAAO,OAAO,SAAS;AAC3B;;;;;AAMA,SAAgB,aAAa,QAAuC;CAChE,OAAQ,OAAqB,WAAW;AAC5C;;;;;AAMA,SAAgB,iBAAiB,QAA2C;CACxE,OAAQ,OAAqB,WAAW;AAC5C;;;;;AAMA,SAAgB,YAAY,QAA8C;CACtE,MAAM,EAAC,WAAU;CACjB,OAAO,WAAW,WAAW,WAAW;AAC5C;;;;;AAMA,SAAgB,eAAe,QAAsC;CACjE,OAAO,OAAO,SAAS;AAC3B;;;;;AAMA,SAAgB,eAAe,QAAsC;CACjE,OAAO,OAAO,SAAS;AAC3B"}
{
"name": "@focus4/entities",
"version": "12.10.2",
"version": "12.10.3",
"description": "Focus v4, entities module",

@@ -20,2 +20,2 @@ "main": "lib/focus4.entities.js",

}
}
}
//#region \0rolldown/runtime.js
var __defProp = Object.defineProperty;
var __exportAll = (all, no_symbols) => {
let target = {};
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
return target;
};
//#endregion
export { __exportAll as t };