jopi-toolkit 3.0.12 → 3.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/jk_data/index.d.ts +40 -0
  2. package/dist/jk_data/index.js +76 -0
  3. package/dist/jk_data/index.js.map +1 -0
  4. package/dist/jk_schemas/index.d.ts +76 -6
  5. package/dist/jk_schemas/index.js +82 -47
  6. package/dist/jk_schemas/index.js.map +1 -1
  7. package/dist/jk_schemas/jkSchemas.d.ts +188 -0
  8. package/dist/jk_schemas/jkSchemas.js +257 -0
  9. package/dist/jk_schemas/jkSchemas.js.map +1 -0
  10. package/dist/jk_timer/index.d.ts +2 -0
  11. package/dist/jk_timer/index.js +2 -0
  12. package/dist/jk_timer/index.js.map +1 -1
  13. package/dist/jk_tools/jBundler_ifServer.d.ts +1 -0
  14. package/dist/jk_tools/jBundler_ifServer.js +40 -10
  15. package/dist/jk_tools/jBundler_ifServer.js.map +1 -1
  16. package/package.json +10 -5
  17. package/src/jk_app/common.js +442 -0
  18. package/src/jk_crypto/jBundler_ifServer.js +16 -0
  19. package/src/jk_data/index.js +117 -0
  20. package/src/jk_data/index.ts +129 -0
  21. package/src/jk_events/index.js +213 -0
  22. package/src/jk_fs/index.js +2 -0
  23. package/src/jk_fs/jBundler_ifServer.js +729 -0
  24. package/src/jk_logs/index.js +371 -0
  25. package/src/jk_logs/jBundler_ifServer.js +24 -0
  26. package/src/jk_schemas/index.js +84 -47
  27. package/src/jk_schemas/index.ts +196 -69
  28. package/src/jk_thread/common.js +7 -0
  29. package/src/jk_timer/index.js +2 -0
  30. package/src/jk_timer/index.ts +3 -0
  31. package/src/jk_tools/common.js +101 -0
  32. package/src/jk_tools/index.js +1 -0
  33. package/src/jk_tools/jBundler_ifServer.js +215 -0
  34. package/src/jk_tools/jBundler_ifServer.ts +49 -11
  35. package/src/jk_translate/index.js +56 -0
  36. package/src/jk_what/jBundler_ifServer.js +5 -0
  37. package/src/jk_os/jBundler_ifServer.js +0 -132
@@ -0,0 +1,40 @@
1
+ import type { Schema } from "jopi-toolkit/jk_schema";
2
+ export interface JFieldSorting {
3
+ field: string;
4
+ direction: "asc" | "desc";
5
+ }
6
+ export interface JRowsFilter {
7
+ field?: string;
8
+ value: string;
9
+ }
10
+ export interface JFieldFilter {
11
+ value?: string | number | boolean;
12
+ constraint: JFieldConstraintType;
13
+ caseSensitive?: boolean;
14
+ }
15
+ export type JFieldConstraintType = "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$like";
16
+ export interface JRowArrayFilter {
17
+ offset: number;
18
+ count: number;
19
+ filter?: JRowsFilter;
20
+ sorting?: JFieldSorting[];
21
+ fieldFilters?: Record<string, JFieldFilter[]>;
22
+ }
23
+ export interface JDataRowSource_ReadParams extends JRowArrayFilter {
24
+ }
25
+ export interface JDataRowSource_ReadResult {
26
+ rows: any[];
27
+ total?: number;
28
+ offset?: number;
29
+ }
30
+ export interface JDataRowSource {
31
+ get schema(): Schema;
32
+ read(params: JDataRowSource_ReadParams): Promise<JDataRowSource_ReadResult>;
33
+ }
34
+ export declare class JDataRowSource_UseArray implements JDataRowSource {
35
+ readonly schema: Schema;
36
+ private readonly rows;
37
+ constructor(schema: Schema, rows: any[]);
38
+ read(params: JDataRowSource_ReadParams): Promise<JDataRowSource_ReadResult>;
39
+ }
40
+ export declare function simpleRowArrayFilter(rows: any[], params: JRowArrayFilter): JDataRowSource_ReadResult;
@@ -0,0 +1,76 @@
1
+ export class JDataRowSource_UseArray {
2
+ schema;
3
+ rows;
4
+ constructor(schema, rows) {
5
+ this.schema = schema;
6
+ this.rows = rows;
7
+ }
8
+ async read(params) {
9
+ return simpleRowArrayFilter(this.rows, params);
10
+ }
11
+ }
12
+ export function simpleRowArrayFilter(rows, params) {
13
+ // > Apply filter.
14
+ if (params.filter) {
15
+ const f = params.filter;
16
+ rows = rows.filter(r => {
17
+ if (f.field) {
18
+ let v = r[f.field];
19
+ if (v === undefined)
20
+ return false;
21
+ return String(v).includes(f.value);
22
+ }
23
+ else {
24
+ for (let v of Object.values(r)) {
25
+ if (v === undefined)
26
+ continue;
27
+ if (String(v).includes(f.value))
28
+ return true;
29
+ }
30
+ return false;
31
+ }
32
+ });
33
+ }
34
+ // > Apply sorting.
35
+ if (params.sorting && params.sorting.length) {
36
+ debugger;
37
+ const sorting = params.sorting[0];
38
+ const sortField = sorting.field;
39
+ const sortDir = sorting.direction;
40
+ rows = rows.sort((a, b) => {
41
+ let av = a[sortField];
42
+ let bv = b[sortField];
43
+ if (av === undefined)
44
+ av = "";
45
+ if (bv === undefined)
46
+ bv = "";
47
+ const avIsNumber = typeof av === "number";
48
+ const bvIsNumber = typeof bv === "number";
49
+ if (avIsNumber && bvIsNumber) {
50
+ if (sortDir === "asc") {
51
+ return av - bv;
52
+ }
53
+ else {
54
+ return bv - av;
55
+ }
56
+ }
57
+ else {
58
+ const avStr = String(av);
59
+ const bvStr = String(bv);
60
+ if (sortDir === "asc") {
61
+ return avStr.localeCompare(bvStr);
62
+ }
63
+ else {
64
+ return bvStr.localeCompare(avStr);
65
+ }
66
+ }
67
+ });
68
+ }
69
+ const totalWithoutPagination = rows.length;
70
+ rows = rows.slice(params.offset, params.offset + params.count);
71
+ return {
72
+ rows, total: totalWithoutPagination,
73
+ offset: params.offset
74
+ };
75
+ }
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jk_data/index.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,57 @@ export type SchemaToType<S extends Schema> = {
59
59
  } & {
60
60
  [K in keyof S['desc'] as S['desc'][K] extends ScField<any, true> ? K : never]?: S['desc'][K] extends ScField<infer T, any> ? T : never;
61
61
  };
62
- export interface ScField<T, Opt extends boolean> {
62
+ export interface ScOnTableRenderingInfo {
63
+ /**
64
+ * The title to use if rendering with a Table.
65
+ */
66
+ title?: string;
67
+ /**
68
+ * If true, then allows hiding the column
69
+ * when rendering into a UI table component.
70
+ */
71
+ enableHiding?: boolean;
72
+ /**
73
+ * If true, then the table column is hidden by default.
74
+ */
75
+ defaultHidden?: boolean;
76
+ /**
77
+ * If true, then the table column is hidden and remain hidden.
78
+ */
79
+ alwaysHidden?: boolean;
80
+ /**
81
+ * If true, then allows sorting the column
82
+ * when rendering into a UI table component.
83
+ */
84
+ enableSorting?: boolean;
85
+ /**
86
+ * If true, then allows editing the column
87
+ * when rendering into a UI table component.
88
+ */
89
+ enableEditing?: boolean;
90
+ /**
91
+ * Contains the name of the renderer to user for the header.
92
+ */
93
+ rendererForHeader?: string;
94
+ /**
95
+ * Contains the name of the renderer to user for the cell.
96
+ */
97
+ rendererForCell?: string;
98
+ /**
99
+ * Allows setting the column grow rule.
100
+ */
101
+ columnGrow?: "takeAllPlace" | "takeMinPlace";
102
+ /**
103
+ * Allows defining extra-css class for rendering the cells.
104
+ */
105
+ cellCssClass?: string;
106
+ /**
107
+ * Allows defining extra-css class for rendering the header.
108
+ */
109
+ headerCssClass?: string;
110
+ textAlign?: "left" | "center" | "right";
111
+ }
112
+ interface ScField<T, Opt extends boolean> {
63
113
  title: string;
64
114
  type: string;
65
115
  description?: string;
@@ -71,10 +121,12 @@ export interface ScField<T, Opt extends boolean> {
71
121
  normalize?: (value: T, allValues: any) => void;
72
122
  validator?: (value: T, allValues: any) => void;
73
123
  metas?: Record<string, string>;
124
+ onTableRendering?: ScOnTableRenderingInfo;
74
125
  }
75
- export type SchemaFieldInfos = ScField<any, any>;
76
- type OnlyInfos<T> = Omit<Omit<Omit<T, "title">, "optional">, "type">;
77
- export interface ScString<Opt extends boolean> extends ScField<string, Opt> {
126
+ export type Field = ScField<any, any>;
127
+ export type SchemaFieldInfos = Field;
128
+ type OnlyInfos<T> = Omit<T, "title" | "optional" | "type">;
129
+ export interface ScString<Opt extends boolean = boolean> extends ScField<string, Opt> {
78
130
  minLength?: number;
79
131
  errorMessage_minLength?: string;
80
132
  maxLength?: number;
@@ -82,14 +134,14 @@ export interface ScString<Opt extends boolean> extends ScField<string, Opt> {
82
134
  placeholder?: string;
83
135
  }
84
136
  export declare function string<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScString<Opt>>): ScString<Opt>;
85
- export interface ScBoolean<Opt extends boolean> extends ScField<boolean, Opt> {
137
+ export interface ScBoolean<Opt extends boolean = boolean> extends ScField<boolean, Opt> {
86
138
  requireTrue?: boolean;
87
139
  errorMessage_requireTrue?: string;
88
140
  requireFalse?: boolean;
89
141
  errorMessage_requireFalse?: string;
90
142
  }
91
143
  export declare function boolean<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScBoolean<Opt>>): ScBoolean<Opt>;
92
- export interface ScNumber<Opt extends boolean> extends ScField<number, Opt> {
144
+ export interface ScNumber<Opt extends boolean = boolean> extends ScField<number, Opt> {
93
145
  minValue?: number;
94
146
  errorMessage_minValue?: string;
95
147
  maxValue?: number;
@@ -99,8 +151,26 @@ export interface ScNumber<Opt extends boolean> extends ScField<number, Opt> {
99
151
  errorMessage_dontAllowDecimal?: string;
100
152
  incrStep?: number;
101
153
  placeholder?: string;
154
+ /**
155
+ * Allows displaying this value as a simple
156
+ * number, or a current, or a percent.
157
+ */
158
+ displayType?: "decimal" | "currency" | "percent";
159
+ /**
160
+ * The regional currency format to use for formating.
161
+ * Ex: "en-US", "fr-FR".
162
+ */
163
+ localFormat?: string;
164
+ /**
165
+ * The type of currency.
166
+ * Ex: "USD".
167
+ */
168
+ currency?: string;
102
169
  }
103
170
  export declare function number<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
171
+ export declare function formatNumber(value: string, fieldNumber: ScNumber, defaultLocalFormat?: string, defaultCurrency?: string): string;
172
+ export declare function currency<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
173
+ export declare function percent<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
104
174
  export interface File extends Blob {
105
175
  readonly lastModified: number;
106
176
  readonly name: string;
@@ -21,54 +21,10 @@ class SchemaError extends Error {
21
21
  export function declareError(message, errorCode) {
22
22
  throw new SchemaError(message, errorCode);
23
23
  }
24
- const byTypeValidator = {
25
- "string": (v, f) => {
26
- if (typeof v !== "string") {
27
- declareError(f.errorMessage_theValueIsInvalid || `Value must be a string`, "INVALID_TYPE");
28
- return;
29
- }
30
- let sf = f;
31
- if ((sf.minLength !== undefined) && (v.length < sf.minLength)) {
32
- declareError(sf.errorMessage_minLength || `Value must be at least ${sf.minLength} characters long`, "INVALID_LENGTH");
33
- return;
34
- }
35
- if ((sf.maxLength !== undefined) && (v.length > sf.maxLength)) {
36
- declareError(sf.errorMessage_maxLength || `Value must be less than ${sf.maxLength} characters long`, "INVALID_LENGTH");
37
- return;
38
- }
39
- },
40
- "number": (v, f) => {
41
- if (typeof v !== "number") {
42
- declareError(f.errorMessage_theValueIsInvalid || `Value must be a number`, "INVALID_TYPE");
43
- }
44
- let sf = f;
45
- if ((sf.minValue !== undefined) && (v < sf.minValue)) {
46
- declareError(sf.errorMessage_minValue || `Value must be at least ${sf.minValue}`, "INVALID_LENGTH");
47
- return;
48
- }
49
- if ((sf.maxValue !== undefined) && (v > sf.maxValue)) {
50
- declareError(sf.errorMessage_maxValue || `Value must be less than ${sf.maxValue}`, "INVALID_LENGTH");
51
- return;
52
- }
53
- },
54
- "boolean": (v, f) => {
55
- if (typeof v !== "boolean") {
56
- declareError(f.errorMessage_theValueIsInvalid || `Value must be a boolean`, "INVALID_TYPE");
57
- }
58
- let sf = f;
59
- if (sf.requireTrue) {
60
- if (v !== true) {
61
- declareError(sf.errorMessage_requireTrue || `Value must be true`, "INVALID_VALUE");
62
- }
63
- }
64
- else if (sf.requireFalse) {
65
- if (v !== false) {
66
- declareError(sf.errorMessage_requireFalse || `Value must be false`, "INVALID_VALUE");
67
- }
68
- }
69
- }
70
- };
71
24
  export function validateSchema(data, schema) {
25
+ // Normalize the data.
26
+ // It's a step where we apply automatic corrections.
27
+ //
72
28
  if (schema.schemaMeta.normalize) {
73
29
  try {
74
30
  schema.schemaMeta.normalize(data);
@@ -85,6 +41,11 @@ export function validateSchema(data, schema) {
85
41
  }
86
42
  }
87
43
  }
44
+ // >>> Check each field individually.
45
+ // Each time it will:
46
+ // - Normalize the value.
47
+ // - Check if optional + undefined.
48
+ // - Apply validator for the field type.
88
49
  let fieldErrors;
89
50
  for (let fieldName in schema.desc) {
90
51
  let defaultErrorMessage;
@@ -132,6 +93,8 @@ export function validateSchema(data, schema) {
132
93
  }
133
94
  }
134
95
  }
96
+ // >>> Validate the whole fields.
97
+ // Allow validating if values are ok with each others.
135
98
  if (schema.schemaMeta.validate) {
136
99
  try {
137
100
  schema.schemaMeta.validate(data);
@@ -149,10 +112,14 @@ export function validateSchema(data, schema) {
149
112
  }
150
113
  }
151
114
  }
115
+ // No error ? --> undefined.
116
+ // Otherwise returns the errors.
117
+ //
152
118
  if (!fieldErrors)
153
119
  return undefined;
154
120
  return { fields: fieldErrors };
155
121
  }
122
+ const byTypeValidator = {};
156
123
  export function registerSchema(schemaId, schema, meta) {
157
124
  if (!schemaId) {
158
125
  throw new Error("jk_schemas - Schema id required. If you need an uid you can use: " + generateUUIDv4());
@@ -196,12 +163,80 @@ export function string(title, optional, infos) {
196
163
  }
197
164
  return { ...infos, title, optional, type: "string" };
198
165
  }
166
+ byTypeValidator["string"] = (v, f) => {
167
+ if (typeof v !== "string") {
168
+ declareError(f.errorMessage_theValueIsInvalid || `Value must be a string`, "INVALID_TYPE");
169
+ return;
170
+ }
171
+ let sf = f;
172
+ if ((sf.minLength !== undefined) && (v.length < sf.minLength)) {
173
+ declareError(sf.errorMessage_minLength || `Value must be at least ${sf.minLength} characters long`, "INVALID_LENGTH");
174
+ return;
175
+ }
176
+ if ((sf.maxLength !== undefined) && (v.length > sf.maxLength)) {
177
+ declareError(sf.errorMessage_maxLength || `Value must be less than ${sf.maxLength} characters long`, "INVALID_LENGTH");
178
+ return;
179
+ }
180
+ };
199
181
  export function boolean(title, optional, infos) {
200
182
  return { ...infos, title, optional, type: "boolean" };
201
183
  }
184
+ byTypeValidator["boolean"] = (v, f) => {
185
+ if (typeof v !== "boolean") {
186
+ declareError(f.errorMessage_theValueIsInvalid || `Value must be a boolean`, "INVALID_TYPE");
187
+ }
188
+ let sf = f;
189
+ if (sf.requireTrue) {
190
+ if (v !== true) {
191
+ declareError(sf.errorMessage_requireTrue || `Value must be true`, "INVALID_VALUE");
192
+ }
193
+ }
194
+ else if (sf.requireFalse) {
195
+ if (v !== false) {
196
+ declareError(sf.errorMessage_requireFalse || `Value must be false`, "INVALID_VALUE");
197
+ }
198
+ }
199
+ };
202
200
  export function number(title, optional, infos) {
203
201
  return { ...infos, title, optional, type: "number" };
204
202
  }
203
+ export function formatNumber(value, fieldNumber, defaultLocalFormat = "en-US", defaultCurrency = "USD") {
204
+ const amount = parseFloat(value);
205
+ let localFormat = fieldNumber.localFormat || defaultLocalFormat;
206
+ switch (fieldNumber.displayType) {
207
+ case "currency":
208
+ return new Intl.NumberFormat(localFormat, {
209
+ style: "currency",
210
+ currency: fieldNumber.currency || defaultCurrency,
211
+ }).format(amount);
212
+ default:
213
+ return new Intl.NumberFormat(localFormat, { style: fieldNumber.displayType || "decimal" }).format(amount);
214
+ }
215
+ }
216
+ byTypeValidator["number"] = (v, f) => {
217
+ if (typeof v !== "number") {
218
+ declareError(f.errorMessage_theValueIsInvalid || `Value must be a number`, "INVALID_TYPE");
219
+ }
220
+ let sf = f;
221
+ if ((sf.minValue !== undefined) && (v < sf.minValue)) {
222
+ declareError(sf.errorMessage_minValue || `Value must be at least ${sf.minValue}`, "INVALID_LENGTH");
223
+ return;
224
+ }
225
+ if ((sf.maxValue !== undefined) && (v > sf.maxValue)) {
226
+ declareError(sf.errorMessage_maxValue || `Value must be less than ${sf.maxValue}`, "INVALID_LENGTH");
227
+ return;
228
+ }
229
+ };
230
+ //endregion
231
+ //region Currency
232
+ export function currency(title, optional, infos) {
233
+ return number(title, optional, { ...infos, displayType: "currency" });
234
+ }
235
+ //endregion
236
+ //region Percent
237
+ export function percent(title, optional, infos) {
238
+ return number(title, optional, { ...infos, displayType: "percent" });
239
+ }
205
240
  export function file(title, optional, infos) {
206
241
  return { ...infos, title, optional, type: "file" };
207
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jk_schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jk_schemas/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Declare an error when validating a schema.
3
+ * Must be called when validating or normalizing.
4
+ */
5
+ export declare function declareError(message?: string, errorCode?: string): void;
6
+ export interface FieldError {
7
+ fieldName: string;
8
+ message: string;
9
+ code?: string;
10
+ }
11
+ export interface ValidationErrors {
12
+ /**
13
+ * An error about the whole schema.
14
+ */
15
+ globalError?: string;
16
+ globalErrorCode?: string;
17
+ /**
18
+ * An error per field.
19
+ */
20
+ fields?: Record<string, FieldError>;
21
+ }
22
+ export declare function validateSchema(data: any, schema: Schema): ValidationErrors | undefined;
23
+ export declare function registerSchema(schemaId: string | undefined, schema: Schema, meta?: any): void;
24
+ export declare function getSchemaMeta(schemaId: string): Schema | undefined;
25
+ export declare function getSchema(schemaId: string): Schema | undefined;
26
+ export declare function requireSchema(schemaId: string): Schema;
27
+ export declare function schema<T extends SchemaDescriptor>(descriptor: T, meta?: SchemaMeta): Schema & {
28
+ desc: T;
29
+ };
30
+ export interface SchemaDescriptor {
31
+ [field: string]: ScField<any, any>;
32
+ }
33
+ export interface SchemaMeta {
34
+ title?: string;
35
+ description?: string;
36
+ [key: string]: any;
37
+ normalize?: (allValues: any) => void;
38
+ validate?: (allValues: any) => void;
39
+ }
40
+ export interface SchemaInfo {
41
+ desc: SchemaDescriptor;
42
+ schemaMeta: SchemaMeta;
43
+ }
44
+ export interface Schema extends SchemaInfo {
45
+ }
46
+ export declare function toJson(schema: Schema): SchemaInfo;
47
+ /**
48
+ * Allow getting a valid TypeScript type for our schema.
49
+ *
50
+ * **Example**
51
+ * ```
52
+ * const UserSchema = { name: string("The name", false), test: string("Test", true) };
53
+ * type UserDataType = SchemaToType<typeof UserSchema>;
54
+ * let ud: UserDataType = {name:"ok", test: "5"};
55
+ * ```
56
+ */
57
+ export type SchemaToType<S extends Schema> = {
58
+ [K in keyof S['desc'] as S['desc'][K] extends ScField<any, false> ? K : never]: S['desc'][K] extends ScField<infer T, any> ? T : never;
59
+ } & {
60
+ [K in keyof S['desc'] as S['desc'][K] extends ScField<any, true> ? K : never]?: S['desc'][K] extends ScField<infer T, any> ? T : never;
61
+ };
62
+ export interface ScOnTableRenderingInfo {
63
+ /**
64
+ * The title to use if rendering with a Table.
65
+ */
66
+ title?: string;
67
+ /**
68
+ * If true, then allows hiding the column
69
+ * when rendering into a UI table component.
70
+ */
71
+ enableHiding?: boolean;
72
+ /**
73
+ * If true, then the table column is hidden by default.
74
+ */
75
+ defaultHidden?: boolean;
76
+ /**
77
+ * If true, then the table column is hidden and remain hidden.
78
+ */
79
+ alwaysHidden?: boolean;
80
+ /**
81
+ * If true, then allows sorting the column
82
+ * when rendering into a UI table component.
83
+ */
84
+ enableSorting?: boolean;
85
+ /**
86
+ * If true, then allows editing the column
87
+ * when rendering into a UI table component.
88
+ */
89
+ enableEditing?: boolean;
90
+ /**
91
+ * Contains the name of the renderer to user for the header.
92
+ */
93
+ rendererForHeader?: string;
94
+ /**
95
+ * Contains the name of the renderer to user for the cell.
96
+ */
97
+ rendererForCell?: string;
98
+ /**
99
+ * Allows setting the column grow rule.
100
+ */
101
+ columnGrow?: "takeAllPlace" | "takeMinPlace";
102
+ /**
103
+ * Allows defining extra-css class for rendering the cells.
104
+ */
105
+ cellCssClass?: string;
106
+ /**
107
+ * Allows defining extra-css class for rendering the header.
108
+ */
109
+ headerCssClass?: string;
110
+ textAlign?: "left" | "center" | "right";
111
+ }
112
+ interface ScField<T, Opt extends boolean> {
113
+ title: string;
114
+ type: string;
115
+ description?: string;
116
+ default?: T;
117
+ optional?: Opt;
118
+ errorMessage_isRequired?: string;
119
+ errorMessage_theDataTypeIsInvalid?: string;
120
+ errorMessage_theValueIsInvalid?: string;
121
+ normalize?: (value: T, allValues: any) => void;
122
+ validator?: (value: T, allValues: any) => void;
123
+ metas?: Record<string, string>;
124
+ onTableRendering?: ScOnTableRenderingInfo;
125
+ }
126
+ export type Field = ScField<any, any>;
127
+ export type SchemaFieldInfos = Field;
128
+ type OnlyInfos<T> = Omit<T, "title" | "optional" | "type">;
129
+ export interface ScString<Opt extends boolean = boolean> extends ScField<string, Opt> {
130
+ minLength?: number;
131
+ errorMessage_minLength?: string;
132
+ maxLength?: number;
133
+ errorMessage_maxLength?: string;
134
+ placeholder?: string;
135
+ }
136
+ export declare function string<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScString<Opt>>): ScString<Opt>;
137
+ export interface ScBoolean<Opt extends boolean = boolean> extends ScField<boolean, Opt> {
138
+ requireTrue?: boolean;
139
+ errorMessage_requireTrue?: string;
140
+ requireFalse?: boolean;
141
+ errorMessage_requireFalse?: string;
142
+ }
143
+ export declare function boolean<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScBoolean<Opt>>): ScBoolean<Opt>;
144
+ export interface ScNumber<Opt extends boolean = boolean> extends ScField<number, Opt> {
145
+ minValue?: number;
146
+ errorMessage_minValue?: string;
147
+ maxValue?: number;
148
+ errorMessage_maxValue?: string;
149
+ allowDecimal?: boolean;
150
+ roundMethod?: "round" | "floor" | "ceil";
151
+ errorMessage_dontAllowDecimal?: string;
152
+ incrStep?: number;
153
+ placeholder?: string;
154
+ /**
155
+ * Allows displaying this value as a simple
156
+ * number, or a current, or a percent.
157
+ */
158
+ displayType?: "decimal" | "currency" | "percent";
159
+ /**
160
+ * The regional currency format to use for formating.
161
+ * Ex: "en-US", "fr-FR".
162
+ */
163
+ localFormat?: string;
164
+ /**
165
+ * The type of currency.
166
+ * Ex: "USD".
167
+ */
168
+ currency?: string;
169
+ }
170
+ export declare function number<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
171
+ export declare function formatNumber(value: string, fieldNumber: ScNumber, defaultLocalFormat?: string, defaultCurrency?: string): string;
172
+ export declare function currency<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
173
+ export declare function percent<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScNumber<Opt>>): ScNumber<Opt>;
174
+ export interface File extends Blob {
175
+ readonly lastModified: number;
176
+ readonly name: string;
177
+ readonly webkitRelativePath: string;
178
+ }
179
+ export interface ScFile<Opt extends boolean> extends ScField<File[], Opt> {
180
+ maxFileCount?: number;
181
+ errorMessage_maxFileCount?: string;
182
+ acceptFileType?: string;
183
+ errorMessage_invalidFileType?: string;
184
+ maxFileSize?: number;
185
+ errorMessage_maxFileSize?: string;
186
+ }
187
+ export declare function file<Opt extends boolean>(title: string, optional: Opt, infos?: OnlyInfos<ScFile<Opt>>): ScFile<Opt>;
188
+ export {};