🎩 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.3
to
12.13.0-rc.0
+52
-30
lib/focus4.entities.d.ts
import { ZodArray, ZodBoolean, ZodISODate, ZodISODateTime, ZodInt, ZodInt32, ZodNumber, ZodString, ZodType, output } from "zod";
//#region src/types.d.ts

@@ -18,3 +17,3 @@ /** Correspond à un type de schéma pour un type primitif. */

/** Métadonnées d'une entrée de type "field" pour une entité. */
interface FieldEntry<D extends Domain = any, T extends output<D["schema"]> = output<D["schema"]>> {
interface FieldEntry<D extends Domain = any, T extends output<D["schema"]> = output<D["schema"]>, R extends boolean = boolean> {
readonly type: "field";

@@ -26,3 +25,3 @@ /** Type du champ, s'il est plus précis que celui du domaine. */

/** Champ obligatoire. */
readonly isRequired: boolean;
readonly isRequired: R;
/** Nom de l'entrée. */

@@ -38,8 +37,8 @@ readonly name: string;

/** Métadonnées d'une entrée de type "object" pour une entité. */
interface ObjectEntry<E extends Entity = any> {
interface ObjectEntry<E extends Entity = any, R extends boolean = boolean> {
readonly type: "object";
/** Entité de l'entrée */
readonly entity: E;
/** Objet obligatoire. Sera `true` si non renseigné. */
readonly isRequired?: boolean;
/** Objet obligatoire. */
readonly isRequired: R;
/** Libellé de l'entrée (non utilisé). */

@@ -51,8 +50,8 @@ readonly label?: string;

/** Métadonnées d'une entrée de type "list" pour une entité. */
interface ListEntry<E extends Entity = any> {
interface ListEntry<E extends Entity = any, R extends boolean = boolean> {
readonly type: "list";
/** Entité de l'entrée */
readonly entity: E;
/** Liste obligatoire. Sera `true` si non renseigné. */
readonly isRequired?: boolean;
/** Liste obligatoire. */
readonly isRequired: R;
/** Libellé de l'entrée (non utilisé). */

@@ -64,6 +63,6 @@ readonly label?: string;

/** Métadonnées d'une entrée de type "recursive-list" pour une entité. */
interface RecursiveListEntry {
interface RecursiveListEntry<R extends boolean = boolean> {
readonly type: "recursive-list";
/** Liste obligatoire. Sera `true` si non renseigné. */
readonly isRequired?: boolean;
/** Liste obligatoire. */
readonly isRequired: R;
/** Libellé de l'entrée (non utilisé). */

@@ -75,13 +74,18 @@ readonly label?: string;

/** Génère le type associé à une entité, avec toutes ses propriétés en optionnel. */
type EntityToType<E extends Entity> = { -readonly [P in keyof E]?: E[P] extends FieldEntry ? E[P]["fieldType"] : E[P] extends ObjectEntry<infer OE> ? EntityToType<OE> : E[P] extends ListEntry<infer LE> ? EntityToType<LE>[] : E[P] extends RecursiveListEntry ? EntityToType<E>[] : E[P] extends [Entity] ? EntityToType<E[P][0]>[] : E[P] extends Entity ? EntityToType<E[P]> : never };
type EntityToPartialType<E extends Entity> = { -readonly [P in keyof E]?: E[P] extends FieldEntry<infer _, infer T> ? T : E[P] extends ObjectEntry<infer OE> ? EntityToPartialType<OE> : E[P] extends ListEntry<infer LE> ? EntityToPartialType<LE>[] : E[P] extends RecursiveListEntry ? EntityToPartialType<E>[] : E[P] extends [Entity] ? EntityToPartialType<E[P][0]>[] : E[P] extends Entity ? EntityToPartialType<E[P]> : never; };
/** Génère le type associé à une entité, avec les champs obligatoires non optionnels. */
type EntityToType<E extends Entity> = { -readonly [P in keyof E as EntryToRequired<E[P]> extends true ? P : never]: EntityEntryToType<E, P>; } & { -readonly [P in keyof E as EntryToRequired<E[P]> extends false ? P : never]?: EntityEntryToType<E, P>; };
type EntityEntryToType<E extends Entity, P extends keyof E> = E[P] extends FieldEntry<infer _, infer T> ? T : E[P] extends ObjectEntry<infer OE> ? EntityToType<OE> : E[P] extends ListEntry<infer LE> ? EntityToType<LE>[] : E[P] extends RecursiveListEntry ? EntityToType<E>[] : E[P] extends [Entity] ? EntityToType<E[P][0]>[] : E[P] extends Entity ? EntityToType<E[P]> : never;
/** Définition d'une entité. */
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];
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];
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];
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;
/** Récupère le caractère obligatoire d'une entrée d'entité. */
type EntryToRequired<E> = E extends FieldEntry<infer _, infer __, infer R> ? R : E extends ObjectEntry<infer _, infer R> ? R : E extends ListEntry<infer _, infer R> ? R : E extends RecursiveListEntry<infer R> ? R : boolean;
//#endregion

@@ -97,6 +101,6 @@ //#region src/builders/entity.d.ts

//#region src/builders/entry-builders.d.ts
declare class EntryBuilder {
declare class EntryBuilder<R extends boolean = true> {
constructor(type: "field" | "object" | "list" | "recursive-list");
/** Rend l'entrée d'entité non-obligatoire. */
optional(): this;
optional(): EntryBuilder<false>;
/**

@@ -113,4 +117,5 @@ * Renseigne le libellé de l'entrée d'entité

}
declare class FieldEntryBuilder<T = any> extends EntryBuilder {
declare class FieldEntryBuilder<T = any, R extends boolean = true> extends EntryBuilder<R> {
constructor(domain: Domain);
optional: () => FieldEntryBuilder<T, false>;
/**

@@ -127,13 +132,16 @@ * Renseigne la valeur par défaut du champ.

/** 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. */
type<NT extends T>(): FieldEntryBuilder<NT>;
type<NT extends T>(): FieldEntryBuilder<NT, R>;
}
declare class ObjectEntryBuilder extends EntryBuilder {
declare class ObjectEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {
constructor(e: Entity);
optional: () => ObjectEntryBuilder<false>;
}
declare class ListEntryBuilder extends EntryBuilder {
declare class ListEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {
constructor(e: Entity);
optional: () => ListEntryBuilder<false>;
}
declare class RecursiveListEntryBuilder extends EntryBuilder {
entry: RecursiveListEntry;
declare class RecursiveListEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {
entry: RecursiveListEntry<R>;
constructor();
optional: () => RecursiveListEntryBuilder<false>;
}

@@ -149,3 +157,3 @@ declare namespace entries_d_exports {

*/
declare function field<D extends Domain>(domain: D): FieldEntry<D>;
declare function field<D extends Domain>(domain: D): FieldEntry<D, output<D["schema"]>, true>;
/**

@@ -158,20 +166,34 @@ * Crée un champ pour une entité.

*/
declare function field<D extends Domain, T extends output<D["schema"]> = output<D["schema"]>>(domain: D, builder: (f: FieldEntryBuilder<output<D["schema"]>>) => FieldEntryBuilder<T>): FieldEntry<D, T>;
declare function field<D extends Domain, T extends output<D["schema"]> = output<D["schema"]>, const R extends boolean = true>(domain: D, builder: (f: FieldEntryBuilder<output<D["schema"]>>) => FieldEntryBuilder<T, R>): FieldEntry<D, T, R>;
/**
* Crée un composition simple pour une entité.
* @param entity L'entité pour la composition.
*/
declare function object<const E extends Entity>(entity: E): ObjectEntry<E, true>;
/**
* Crée un composition simple pour une entité.
* @param entity L'entité pour la composition.
* @param builder Le configurateur.
*/
declare function object<const E extends Entity>(entity: E, builder?: (f: ObjectEntryBuilder) => ObjectEntryBuilder): ObjectEntry<E>;
declare function object<const E extends Entity, const R extends boolean = true>(entity: E, builder: (f: ObjectEntryBuilder) => ObjectEntryBuilder<R>): ObjectEntry<E, R>;
/**
* Crée un composition liste pour une entité.
* @param entity L'entité pour la composition.
*/
declare function list<const E extends Entity>(entity: E): ListEntry<E, true>;
/**
* Crée un composition liste pour une entité.
* @param entity L'entité pour la composition.
* @param builder Le configurateur.
*/
declare function list<const E extends Entity>(entity: E, builder?: (f: ListEntryBuilder) => ListEntryBuilder): ListEntry<E>;
declare function list<const E extends Entity, const R extends boolean = true>(entity: E, builder: (f: ListEntryBuilder) => ListEntryBuilder<R>): ListEntry<E, R>;
/**
* Crée un composition de liste récursive (une liste de l'entité qui la contient).
*/
declare function recursiveList(): RecursiveListEntry<true>;
/**
* Crée un composition de liste récursive (une liste de l'entité qui la contient).
* @param builder Le configurateur.
*/
declare function recursiveList(builder?: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder): RecursiveListEntry;
declare function recursiveList<const R extends boolean = true>(builder: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder<R>): RecursiveListEntry<R>;
//#endregion

@@ -220,3 +242,3 @@ //#region src/utils.d.ts

//#endregion
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 };
export { type Entity, type EntityToPartialType, type EntityToType, type EntryToEntity, type EntryToRequired, 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 +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":"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"}

@@ -101,22 +101,8 @@ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";

}
/**
* Crée un composition simple pour une entité.
* @param entity L'entité pour la composition.
* @param builder Le configurateur.
*/
function object(entity, builder = (f) => f) {
return builder(new ObjectEntryBuilder(entity)).entry;
}
/**
* Crée un composition liste pour une entité.
* @param entity L'entité pour la composition.
* @param builder Le configurateur.
*/
function list(entity, builder = (f) => f) {
return builder(new ListEntryBuilder(entity)).entry;
}
/**
* Crée un composition de liste récursive (une liste de l'entité qui la contient).
* @param builder Le configurateur.
*/
function recursiveList(builder = (f) => f) {

@@ -123,0 +109,0 @@ return builder(new RecursiveListEntryBuilder()).entry;

@@ -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 +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"}
{"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 extends boolean = true> {\r\n /** @internal */\r\n entry: PartialNonReadonly<\r\n ObjectEntry<any, R> | FieldEntry<any, any, R> | ListEntry<any, R> | RecursiveListEntry<R>\r\n >;\r\n\r\n constructor(type: \"field\" | \"object\" | \"list\" | \"recursive-list\") {\r\n this.entry = {type, label: \"\", isRequired: true as any};\r\n }\r\n\r\n /** Rend l'entrée d'entité non-obligatoire. */\r\n optional(): EntryBuilder<false> {\r\n // @ts-expect-error - Justement, on change le type de R.\r\n this.entry.isRequired = false;\r\n // @ts-expect-error - Justement, on change le type de R.\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, R extends boolean = true> extends EntryBuilder<R> {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<FieldEntry<any, any, R>>;\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 declare optional: () => FieldEntryBuilder<T, false>;\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> {\r\n return this;\r\n }\r\n}\r\n\r\nexport class ObjectEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ObjectEntry<any, R>>;\r\n constructor(e: Entity) {\r\n super(\"object\");\r\n this.entry.entity = entity(e);\r\n }\r\n\r\n declare optional: () => ObjectEntryBuilder<false>;\r\n}\r\n\r\nexport class ListEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {\r\n /** @internal */\r\n declare entry: PartialNonReadonly<ListEntry<any, R>>;\r\n constructor(e: Entity) {\r\n super(\"list\");\r\n this.entry.entity = entity(e);\r\n }\r\n\r\n declare optional: () => ListEntryBuilder<false>;\r\n}\r\n\r\nexport class RecursiveListEntryBuilder<R extends boolean = true> extends EntryBuilder<R> {\r\n declare entry: RecursiveListEntry<R>;\r\n constructor() {\r\n super(\"recursive-list\");\r\n }\r\n\r\n declare optional: () => RecursiveListEntryBuilder<false>;\r\n}\r\n","import {output} from \"zod\";\r\n\r\nimport {Entity, FieldEntry, ListEntry, ObjectEntry, RecursiveListEntry} 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, output<D[\"schema\"]>, true>;\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<\r\n D extends Domain,\r\n T extends output<D[\"schema\"]> = output<D[\"schema\"]>,\r\n const R extends boolean = true\r\n>(domain: D, builder: (f: FieldEntryBuilder<output<D[\"schema\"]>>) => FieldEntryBuilder<T, R>): FieldEntry<D, T, R>;\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 */\r\nexport function object<const E extends Entity>(entity: E): ObjectEntry<E, true>;\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, const R extends boolean = true>(\r\n entity: E,\r\n builder: (f: ObjectEntryBuilder) => ObjectEntryBuilder<R>\r\n): ObjectEntry<E, R>;\r\nexport function object<const E extends Entity, const R extends boolean = true>(\r\n entity: E,\r\n builder: (f: ObjectEntryBuilder) => ObjectEntryBuilder<R> = f => f as ObjectEntryBuilder<R>\r\n) {\r\n return builder(new ObjectEntryBuilder(entity)).entry as ObjectEntry<E, R>;\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 */\r\nexport function list<const E extends Entity>(entity: E): ListEntry<E, true>;\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, const R extends boolean = true>(\r\n entity: E,\r\n builder: (f: ListEntryBuilder) => ListEntryBuilder<R>\r\n): ListEntry<E, R>;\r\nexport function list<const E extends Entity, const R extends boolean = true>(\r\n entity: E,\r\n builder: (f: ListEntryBuilder) => ListEntryBuilder<R> = f => f as ListEntryBuilder<R>\r\n) {\r\n return builder(new ListEntryBuilder(entity)).entry as ListEntry<E, R>;\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 */\r\nexport function recursiveList(): RecursiveListEntry<true>;\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<const R extends boolean = true>(\r\n builder: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder<R>\r\n): RecursiveListEntry<R>;\r\nexport function recursiveList<const R extends boolean = true>(\r\n builder: (f: RecursiveListEntryBuilder) => RecursiveListEntryBuilder<R> = f => f as RecursiveListEntryBuilder<R>\r\n) {\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,MAA6C;;CAEzC;CAIA,YAAY,MAAsD;EAC9D,KAAK,QAAQ;GAAC;GAAM,OAAO;GAAI,YAAY;EAAW;CAC1D;;CAGA,WAAgC;EAE5B,KAAK,MAAM,aAAa;EAExB,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,cAA0E,aAAgB;CAItF,YAAY,QAAgB;EACxB,MAAM,OAAO;EACb,KAAK,MAAM,OAAO;EAClB,KAAK,MAAM,SAAS;CACxB;;;;;CAQA,aAAa,cAAiB;EAC1B,KAAK,MAAM,eAAe;EAC1B,OAAO;CACX;;;;;CAMA,KAAK,MAAc;EACf,KAAK,MAAM,OAAO;EAClB,OAAO;CACX;;CAGA,OAA+C;EAC3C,OAAO;CACX;AACJ;AAEA,IAAa,qBAAb,cAAkE,aAAgB;CAG9E,YAAY,GAAW;EACnB,MAAM,QAAQ;EACd,KAAK,MAAM,SAAS,OAAO,CAAC;CAChC;AAGJ;AAEA,IAAa,mBAAb,cAAgE,aAAgB;CAG5E,YAAY,GAAW;EACnB,MAAM,MAAM;EACZ,KAAK,MAAM,SAAS,OAAO,CAAC;CAChC;AAGJ;AAEA,IAAa,4BAAb,cAAyE,aAAgB;CAErF,cAAc;EACV,MAAM,gBAAgB;CAC1B;AAGJ;;;;;;;;;AClFA,SAAgB,MAAM,QAAgB,WAAuD,MAAK,GAAG;CACjG,OAAO,QAAQ,IAAI,kBAAkB,MAAM,CAAC,CAAC,CAAC;AAClD;AAeA,SAAgB,OACZ,QACA,WAA4D,MAAK,GACnE;CACE,OAAO,QAAQ,IAAI,mBAAmB,MAAM,CAAC,CAAC,CAAC;AACnD;AAgBA,SAAgB,KACZ,QACA,WAAwD,MAAK,GAC/D;CACE,OAAO,QAAQ,IAAI,iBAAiB,MAAM,CAAC,CAAC,CAAC;AACjD;AAaA,SAAgB,cACZ,WAA0E,MAAK,GACjF;CACE,OAAO,QAAQ,IAAI,0BAA0B,CAAC,CAAC,CAAC;AACpD;;;;;;;ACpEA,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.3",
"version": "12.13.0-rc.0",
"description": "Focus v4, entities module",

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

}
}
}