libmodulor 0.19.0 → 0.21.0
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.
- package/CHANGELOG.md +36 -0
- package/README.md +1 -1
- package/dist/esm/apps/Helper/src/lib/project.js +7 -7
- package/dist/esm/convention.d.ts +2 -0
- package/dist/esm/convention.js +2 -0
- package/dist/esm/dt/Validation.js +1 -1
- package/dist/esm/dt/final/TGitSSHURL.d.ts +4 -3
- package/dist/esm/dt/final/TGitSSHURL.js +1 -1
- package/dist/esm/dt/final/TSSHPrivateKey.js +1 -3
- package/dist/esm/std/ShellCommandExecutor.d.ts +1 -0
- package/dist/esm/std/impl/ConsoleLogger.js +2 -2
- package/dist/esm/std/impl/FetchHTTPAPICallExecutor.js +1 -1
- package/dist/esm/std/impl/NodeFormDataBuilder.js +3 -1
- package/dist/esm/std/impl/NodeSpawnShellCommandExecutor.js +6 -0
- package/dist/esm/std/impl/SimpleHTTPAPICaller.js +1 -1
- package/dist/esm/target/lib/cli/CommandExecutor.js +2 -2
- package/dist/esm/target/lib/react/UCContainer.js +1 -1
- package/dist/esm/target/lib/react/UCPanel.js +0 -4
- package/dist/esm/target/lib/react/form.d.ts +5 -6
- package/dist/esm/target/lib/react/form.js +7 -10
- package/dist/esm/target/lib/react/useUC.d.ts +4 -4
- package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +1 -0
- package/dist/esm/target/react-native-pure/UCForm.d.ts +1 -1
- package/dist/esm/target/react-native-pure/UCForm.js +2 -2
- package/dist/esm/target/react-native-pure/UCFormField.d.ts +1 -1
- package/dist/esm/target/react-native-pure/UCFormField.js +3 -4
- package/dist/esm/target/react-native-pure/UCFormFieldControl.js +13 -7
- package/dist/esm/target/react-web-pure/UCForm.d.ts +1 -1
- package/dist/esm/target/react-web-pure/UCForm.js +2 -2
- package/dist/esm/target/react-web-pure/UCFormField.d.ts +1 -1
- package/dist/esm/target/react-web-pure/UCFormField.js +3 -4
- package/dist/esm/target/react-web-pure/UCFormFieldControl.js +7 -4
- package/dist/esm/testing/AppTester.d.ts +6 -3
- package/dist/esm/testing/AppTester.js +20 -6
- package/dist/esm/testing/impl/SimpleHTMLAppTestReportEmitter.js +1 -1
- package/dist/esm/testing/impl/TypeScriptLibUCDefASTParser.js +2 -2
- package/dist/esm/testing/impl/VitestAppTestSuiteEmitter.js +135 -115
- package/dist/esm/testing/impl/VitestAppTestSuiteRunner.d.ts +2 -3
- package/dist/esm/testing/impl/VitestAppTestSuiteRunner.js +6 -8
- package/dist/esm/testing/uc-input.js +13 -12
- package/dist/esm/testing/workers/UCExecutor.js +2 -2
- package/dist/esm/testing/workers/checkers/UCDefChecker.d.ts +2 -0
- package/dist/esm/testing/workers/checkers/UCDefChecker.js +4 -1
- package/dist/esm/uc/UC.d.ts +7 -7
- package/dist/esm/uc/UC.js +4 -3
- package/dist/esm/uc/UCInputField.d.ts +6 -3
- package/dist/esm/uc/UCInputField.js +39 -29
- package/dist/esm/uc/index.d.ts +0 -1
- package/dist/esm/uc/index.js +0 -1
- package/dist/esm/uc/input-field.d.ts +2 -19
- package/dist/esm/uc/input-field.js +0 -19
- package/dist/esm/uc/input.d.ts +13 -7
- package/dist/esm/uc/utils/rInput.js +4 -3
- package/dist/esm/uc/utils/rVal.d.ts +5 -5
- package/dist/esm/uc/utils/rVal.js +1 -12
- package/dist/esm/uc/value.d.ts +1 -2
- package/dist/esm/uc/workers/UCInputFilesProcessor.js +3 -3
- package/package.json +16 -16
- package/pnpm-workspace.yaml +1 -1
- package/tsconfig.json +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type DataType, Validation } from '../dt/index.js';
|
|
2
2
|
import type { UCFieldKey, UCWording } from './def.js';
|
|
3
|
-
import {
|
|
3
|
+
import { type UCInputFieldDef, type UCInputFieldValue } from './input-field.js';
|
|
4
4
|
import { type reqVal0, rVal0, rValArr } from './utils/rVal.js';
|
|
5
5
|
export declare class UCInputField<T extends DataType> {
|
|
6
6
|
key: UCFieldKey;
|
|
@@ -13,7 +13,9 @@ export declare class UCInputField<T extends DataType> {
|
|
|
13
13
|
private dynamicWording;
|
|
14
14
|
private value;
|
|
15
15
|
constructor(key: UCFieldKey, def: UCInputFieldDef<T>);
|
|
16
|
+
addVal(value: UCInputFieldValue<T>): void;
|
|
16
17
|
clear(): void;
|
|
18
|
+
fillWithExample(): void;
|
|
17
19
|
getDynamicWording(): Partial<UCWording> | undefined;
|
|
18
20
|
getValue(): UCInputFieldValue<T>;
|
|
19
21
|
/**
|
|
@@ -35,14 +37,15 @@ export declare class UCInputField<T extends DataType> {
|
|
|
35
37
|
*/
|
|
36
38
|
reqVal0(): ReturnType<typeof reqVal0<T>>;
|
|
37
39
|
/**
|
|
38
|
-
*
|
|
40
|
+
* Read the value as an array
|
|
39
41
|
*
|
|
40
42
|
* Unlink the standalone {@link rValArr}, it returns the default value in an array if present.
|
|
41
43
|
*
|
|
42
44
|
* @returns
|
|
43
45
|
*/
|
|
44
46
|
rValArr(): ReturnType<typeof rValArr<T>>;
|
|
45
|
-
|
|
47
|
+
rmVal(value: UCInputFieldValue<T>): void;
|
|
48
|
+
setVal(value: UCInputFieldValue<T>): void;
|
|
46
49
|
updateDef(def: UCInputFieldDef<T>): void;
|
|
47
50
|
updateDynamicWording(dynamicWording: Partial<UCWording> | undefined): void;
|
|
48
51
|
updateType(type: UCInputFieldDef<T>['type']): void;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Validation } from '../dt/index.js';
|
|
2
2
|
import { isBlank } from '../utils/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ucifIsMandatory, ucifMustBeFilledManually, ucifRepeatability, } from './input-field.js';
|
|
4
4
|
import { rVal0, rValArr } from './utils/rVal.js';
|
|
5
|
-
import { ucifcoIsForArray } from './utils/ucifcoIsForArray.js';
|
|
6
5
|
export class UCInputField {
|
|
7
6
|
key;
|
|
8
7
|
def;
|
|
@@ -21,6 +20,18 @@ export class UCInputField {
|
|
|
21
20
|
this.value = initialValue;
|
|
22
21
|
}
|
|
23
22
|
}
|
|
23
|
+
addVal(value) {
|
|
24
|
+
const { type } = this.def;
|
|
25
|
+
type.assign(value);
|
|
26
|
+
const val = type.val();
|
|
27
|
+
if (val === undefined) {
|
|
28
|
+
// The value is invalid for T (we might want to throw an error here)
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const current = Array.isArray(this.value) ? this.value : [];
|
|
32
|
+
// We are not really forced to use immutability here, to be reconsidered
|
|
33
|
+
this.value = current.concat([val]);
|
|
34
|
+
}
|
|
24
35
|
clear() {
|
|
25
36
|
this.value = undefined;
|
|
26
37
|
const initialValue = this.def.type.getInitialValue();
|
|
@@ -28,6 +39,18 @@ export class UCInputField {
|
|
|
28
39
|
this.value = initialValue;
|
|
29
40
|
}
|
|
30
41
|
}
|
|
42
|
+
fillWithExample() {
|
|
43
|
+
this.clear();
|
|
44
|
+
const [isRepeatable] = ucifRepeatability(this.def);
|
|
45
|
+
const { type } = this.def;
|
|
46
|
+
const val = type.getExamples()?.[0] ?? type.example();
|
|
47
|
+
if (isRepeatable) {
|
|
48
|
+
this.addVal(val);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.setVal(val);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
31
54
|
getDynamicWording() {
|
|
32
55
|
return this.dynamicWording;
|
|
33
56
|
}
|
|
@@ -77,7 +100,7 @@ export class UCInputField {
|
|
|
77
100
|
throw new Error(`${this.key.toString()} is not set and has no default value. Do not require it.`);
|
|
78
101
|
}
|
|
79
102
|
/**
|
|
80
|
-
*
|
|
103
|
+
* Read the value as an array
|
|
81
104
|
*
|
|
82
105
|
* Unlink the standalone {@link rValArr}, it returns the default value in an array if present.
|
|
83
106
|
*
|
|
@@ -100,40 +123,27 @@ export class UCInputField {
|
|
|
100
123
|
// Otherwise, we could not get the value of an optional repeatable field (see remark above on the defaultValue).
|
|
101
124
|
return [];
|
|
102
125
|
}
|
|
103
|
-
|
|
104
|
-
if (op === UCInputFieldChangeOperator.RESET) {
|
|
105
|
-
this.clear();
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
126
|
+
rmVal(value) {
|
|
108
127
|
const { type } = this.def;
|
|
109
128
|
type.assign(value);
|
|
110
129
|
const val = type.val();
|
|
111
130
|
if (val === undefined) {
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
if (!ucifcoIsForArray(op)) {
|
|
115
|
-
// Using a switch, even for just one case, to have it trigger an error if we miss to handle an enum value
|
|
116
|
-
switch (op) {
|
|
117
|
-
case UCInputFieldChangeOperator.SET:
|
|
118
|
-
this.value = val;
|
|
119
|
-
break;
|
|
120
|
-
default:
|
|
121
|
-
((_) => { })(op);
|
|
122
|
-
}
|
|
131
|
+
// The value is invalid for T (we might want to throw an error here)
|
|
123
132
|
return;
|
|
124
133
|
}
|
|
125
134
|
const current = Array.isArray(this.value) ? this.value : [];
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
// We are not really forced to use immutability here, to be reconsidered
|
|
136
|
+
this.value = current.filter((v) => v !== val);
|
|
137
|
+
}
|
|
138
|
+
setVal(value) {
|
|
139
|
+
const { type } = this.def;
|
|
140
|
+
type.assign(value);
|
|
141
|
+
const val = type.val();
|
|
142
|
+
if (val === undefined) {
|
|
143
|
+
// The value is invalid for T (we might want to throw an error here)
|
|
144
|
+
return;
|
|
136
145
|
}
|
|
146
|
+
this.value = val;
|
|
137
147
|
}
|
|
138
148
|
updateDef(def) {
|
|
139
149
|
this.def = def;
|
package/dist/esm/uc/index.d.ts
CHANGED
|
@@ -50,7 +50,6 @@ export * from './utils/rInput.js';
|
|
|
50
50
|
export * from './utils/rVal.js';
|
|
51
51
|
export * from './utils/stripUCDLifecycleServer.js';
|
|
52
52
|
export * from './utils/ucHTTPContract.js';
|
|
53
|
-
export * from './utils/ucifcoIsForArray.js';
|
|
54
53
|
export * from './utils/ucMountingPoint.js';
|
|
55
54
|
export * from './value.js';
|
|
56
55
|
export * from './workers/SimpleAggregateFinder.js';
|
package/dist/esm/uc/index.js
CHANGED
|
@@ -50,7 +50,6 @@ export * from './utils/rInput.js';
|
|
|
50
50
|
export * from './utils/rVal.js';
|
|
51
51
|
export * from './utils/stripUCDLifecycleServer.js';
|
|
52
52
|
export * from './utils/ucHTTPContract.js';
|
|
53
|
-
export * from './utils/ucifcoIsForArray.js';
|
|
54
53
|
export * from './utils/ucMountingPoint.js';
|
|
55
54
|
export * from './value.js';
|
|
56
55
|
export * from './workers/SimpleAggregateFinder.js';
|
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
import type { DataType, TBase, UIntQuantity } from '../dt/index.js';
|
|
2
2
|
import type { UCFieldKey } from './def.js';
|
|
3
3
|
import type { Value } from './value.js';
|
|
4
|
-
export declare enum UCInputFieldChangeOperator {
|
|
5
|
-
/**
|
|
6
|
-
* Considering the cardinality of the field (min > 1), add a new value
|
|
7
|
-
*/
|
|
8
|
-
ADD = "ADD",
|
|
9
|
-
/**
|
|
10
|
-
* Considering the cardinality of the field (min > 1), remove a value
|
|
11
|
-
*/
|
|
12
|
-
REMOVE = "REMOVE",
|
|
13
|
-
/**
|
|
14
|
-
* Reset the value of the field
|
|
15
|
-
*/
|
|
16
|
-
RESET = "RESET",
|
|
17
|
-
/**
|
|
18
|
-
* Considering the cardinality of the field (max <= 1), set the value
|
|
19
|
-
*/
|
|
20
|
-
SET = "SET"
|
|
21
|
-
}
|
|
22
4
|
export declare enum UCInputFieldFillingMode {
|
|
23
5
|
/**
|
|
24
6
|
* Set programmatically on behalf of the user (e.g. a foreign key id for a given object)
|
|
@@ -72,7 +54,8 @@ export interface UCInputFieldDef<T extends DataType> {
|
|
|
72
54
|
transient?: boolean;
|
|
73
55
|
type: TBase<T>;
|
|
74
56
|
}
|
|
75
|
-
export type UCInputFieldValue<T
|
|
57
|
+
export type UCInputFieldValue<T> = Value<T>;
|
|
58
|
+
export type UCInputFieldValueUnwrapped<T> = T extends UCInputFieldValue<infer U> ? U : never;
|
|
76
59
|
export declare function ucifExamples<T extends DataType>(def: UCInputFieldDef<T>): T[] | undefined;
|
|
77
60
|
export declare function ucifHint<T extends DataType>(def: UCInputFieldDef<T>): string | undefined;
|
|
78
61
|
/**
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
export var UCInputFieldChangeOperator;
|
|
2
|
-
(function (UCInputFieldChangeOperator) {
|
|
3
|
-
/**
|
|
4
|
-
* Considering the cardinality of the field (min > 1), add a new value
|
|
5
|
-
*/
|
|
6
|
-
UCInputFieldChangeOperator["ADD"] = "ADD";
|
|
7
|
-
/**
|
|
8
|
-
* Considering the cardinality of the field (min > 1), remove a value
|
|
9
|
-
*/
|
|
10
|
-
UCInputFieldChangeOperator["REMOVE"] = "REMOVE";
|
|
11
|
-
/**
|
|
12
|
-
* Reset the value of the field
|
|
13
|
-
*/
|
|
14
|
-
UCInputFieldChangeOperator["RESET"] = "RESET";
|
|
15
|
-
/**
|
|
16
|
-
* Considering the cardinality of the field (max <= 1), set the value
|
|
17
|
-
*/
|
|
18
|
-
UCInputFieldChangeOperator["SET"] = "SET";
|
|
19
|
-
})(UCInputFieldChangeOperator || (UCInputFieldChangeOperator = {}));
|
|
20
1
|
export var UCInputFieldFillingMode;
|
|
21
2
|
(function (UCInputFieldFillingMode) {
|
|
22
3
|
/**
|
package/dist/esm/uc/input.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import type { DataType } from '../dt/index.js';
|
|
1
2
|
import type { StringKeys } from '../utils/index.js';
|
|
2
|
-
import type { UCInputFieldDef } from './input-field.js';
|
|
3
|
+
import type { UCInputFieldDef, UCInputFieldValue, UCInputFieldValueUnwrapped } from './input-field.js';
|
|
3
4
|
/**
|
|
4
5
|
* Base interface all the use case input interfaces must extend
|
|
5
6
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
7
|
+
export type UCInput = {};
|
|
8
|
+
export type UCInputUnwrapped<I extends UCInput | undefined> = {
|
|
9
|
+
[K in keyof I]: UCInputFieldValueUnwrapped<I[K]>;
|
|
10
|
+
};
|
|
11
|
+
export type UCInputKey<I extends UCInput | undefined> = StringKeys<UCInputUnwrapped<I>>;
|
|
12
|
+
export type UCInputPartial<I extends UCInput | undefined> = Partial<Record<UCInputKey<I>, UCInputFieldValue<DataType>>>;
|
|
13
|
+
export type UCInputKeyDataType<I extends UCInput | undefined, K extends UCInputKey<I>> = NonNullable<UCInputUnwrapped<I>[K]>;
|
|
8
14
|
/**
|
|
9
15
|
* Definition of a use case input
|
|
10
16
|
*/
|
|
@@ -12,11 +18,11 @@ export interface UCInputDef<I extends UCInput> {
|
|
|
12
18
|
/**
|
|
13
19
|
* This is useful when you want to render a given field only after its dependent fields have been set.
|
|
14
20
|
*/
|
|
15
|
-
dependencies?: Partial<Record<
|
|
21
|
+
dependencies?: Partial<Record<UCInputKey<I>, UCInputKey<I>[]>>;
|
|
16
22
|
/**
|
|
17
23
|
* It must follow strictly the shape of the corresponding {@link UCInput} with fields sorted alphabetically.
|
|
18
24
|
*/
|
|
19
|
-
fields: Record<
|
|
25
|
+
fields: Record<UCInputKey<I>, UCInputFieldDef<any>>;
|
|
20
26
|
/**
|
|
21
27
|
* By default, the fields are displayed in the same order as in {@link fields} (i.e. alphabetically).
|
|
22
28
|
*
|
|
@@ -24,13 +30,13 @@ export interface UCInputDef<I extends UCInput> {
|
|
|
24
30
|
*
|
|
25
31
|
* For example, when rendering a form, this is used.
|
|
26
32
|
*/
|
|
27
|
-
order?:
|
|
33
|
+
order?: UCInputKey<I>[];
|
|
28
34
|
/**
|
|
29
35
|
* Cross-field validation rules
|
|
30
36
|
*
|
|
31
37
|
* For example, if you want the user to provide `a` OR `b` but not both.
|
|
32
38
|
*/
|
|
33
39
|
validation?: {
|
|
34
|
-
or?:
|
|
40
|
+
or?: UCInputKey<I>[];
|
|
35
41
|
};
|
|
36
42
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TBoolean } from '../../dt/index.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ucifIsMandatory, ucifRepeatability } from '../input-field.js';
|
|
3
3
|
const DEFAULT_OPTS = {
|
|
4
4
|
forceArrayAsEmpty: false,
|
|
5
5
|
forceBooleanAsFalse: true,
|
|
@@ -24,18 +24,19 @@ export function rInput(uc, opts) {
|
|
|
24
24
|
ucifIsMandatory(f.def) &&
|
|
25
25
|
(value === null || value === undefined)) {
|
|
26
26
|
value = false;
|
|
27
|
-
f.
|
|
27
|
+
f.setVal(value);
|
|
28
28
|
}
|
|
29
29
|
const [isRepeatable] = ucifRepeatability(f.def);
|
|
30
30
|
if (forceArrayAsEmpty &&
|
|
31
31
|
isRepeatable &&
|
|
32
32
|
(value === null || value === undefined)) {
|
|
33
33
|
value = [];
|
|
34
|
-
f.
|
|
34
|
+
f.setVal(value);
|
|
35
35
|
}
|
|
36
36
|
if (!ignoreUndefined || (ignoreUndefined && value !== undefined)) {
|
|
37
37
|
// Useful when we get the input before persisting for example.
|
|
38
38
|
// Otherwise it will persist `undefined` as a string in the database, for nothing.
|
|
39
|
+
// @ts-expect-error
|
|
39
40
|
input[f.key] = value;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { DataType } from '../../dt/index.js';
|
|
2
1
|
import type { Value } from '../value.js';
|
|
3
2
|
/**
|
|
4
3
|
* Read the value as a primitive
|
|
@@ -9,7 +8,8 @@ import type { Value } from '../value.js';
|
|
|
9
8
|
* @param or
|
|
10
9
|
* @returns
|
|
11
10
|
*/
|
|
12
|
-
export declare function rVal0<T
|
|
11
|
+
export declare function rVal0<T>(value: Value<T>, or: T): T;
|
|
12
|
+
export declare function rVal0<T>(value: Value<T>, or?: undefined): T | null;
|
|
13
13
|
/**
|
|
14
14
|
* Require the value as a primitive
|
|
15
15
|
*
|
|
@@ -18,13 +18,13 @@ export declare function rVal0<T extends DataType>(value: Value<T>, or?: T): T |
|
|
|
18
18
|
* @param value
|
|
19
19
|
* @returns
|
|
20
20
|
*/
|
|
21
|
-
export declare function reqVal0<T
|
|
21
|
+
export declare function reqVal0<T>(value: Value<T>): T;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Read the value as an array
|
|
24
24
|
*
|
|
25
25
|
* To be used when the field has a 0..* cardinality.
|
|
26
26
|
*
|
|
27
27
|
* @param value
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
|
-
export declare function rValArr<T
|
|
30
|
+
export declare function rValArr<T>(value: Value<T>): T[];
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
import { isBlank } from '../../utils/index.js';
|
|
2
|
-
// NOTE : the "r" prefix stands for "read" and the "req" prefix stands for "require"
|
|
3
|
-
/**
|
|
4
|
-
* Read the value as a primitive
|
|
5
|
-
*
|
|
6
|
-
* To be used when the field has a 0..1 cardinality.
|
|
7
|
-
*
|
|
8
|
-
* @param value
|
|
9
|
-
* @param or
|
|
10
|
-
* @returns
|
|
11
|
-
*/
|
|
12
|
-
// TODO : Find a way to return `T` when `or` is set (function override does not work)
|
|
13
2
|
export function rVal0(value, or) {
|
|
14
3
|
if (isBlank(value)) {
|
|
15
4
|
return or ?? null;
|
|
@@ -32,7 +21,7 @@ export function reqVal0(value) {
|
|
|
32
21
|
return val;
|
|
33
22
|
}
|
|
34
23
|
/**
|
|
35
|
-
*
|
|
24
|
+
* Read the value as an array
|
|
36
25
|
*
|
|
37
26
|
* To be used when the field has a 0..* cardinality.
|
|
38
27
|
*
|
package/dist/esm/uc/value.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export type Value<T extends DataType> = T | T[] | null | undefined;
|
|
1
|
+
export type Value<T> = T | T[] | null | undefined;
|
|
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { inject, injectable } from 'inversify';
|
|
14
14
|
import { TFile } from '../../dt/index.js';
|
|
15
|
-
import {
|
|
15
|
+
import { ucifRepeatability } from '../input-field.js';
|
|
16
16
|
import { rVal0, rValArr } from '../utils/rVal.js';
|
|
17
17
|
let UCInputFilesProcessor = class UCInputFilesProcessor {
|
|
18
18
|
clockManager;
|
|
@@ -45,13 +45,13 @@ let UCInputFilesProcessor = class UCInputFilesProcessor {
|
|
|
45
45
|
// Although the field is a file, here we fill it with the refs (for persistence)
|
|
46
46
|
// TODO : Improve the mgmt of FileNameRef vs actual File at the use case level
|
|
47
47
|
// I think we need to introduce another value, something like `setValueSerialized` or similar.
|
|
48
|
-
field.
|
|
48
|
+
field.setVal(fileNameRefs);
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
51
|
const file = rVal0(field.getValue());
|
|
52
52
|
if (file) {
|
|
53
53
|
const fileNameRef = await this.processFile(file);
|
|
54
|
-
field.
|
|
54
|
+
field.setVal(fileNameRef);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libmodulor",
|
|
3
3
|
"description": "A TypeScript library to create platform-agnostic applications",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.21.0",
|
|
5
5
|
"license": "LGPL-3.0",
|
|
6
6
|
"author": "Chafik H'nini <chafik.hnini@gmail.com>",
|
|
7
7
|
"homepage": "https://libmodulor.c100k.eu",
|
|
@@ -81,30 +81,30 @@
|
|
|
81
81
|
"lint:ci": "biome check"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
|
-
"@biomejs/biome": "^2.
|
|
84
|
+
"@biomejs/biome": "^2.2.0"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@hono/node-server": "^1.
|
|
88
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
89
|
-
"@stricli/core": "^1.
|
|
87
|
+
"@hono/node-server": "^1.19.0",
|
|
88
|
+
"@modelcontextprotocol/sdk": "^1.17.3",
|
|
89
|
+
"@stricli/core": "^1.2.0",
|
|
90
90
|
"buffer": "^6.0.3",
|
|
91
91
|
"cookie-parser": "^1.4.7",
|
|
92
92
|
"express": "^5.1.0",
|
|
93
|
-
"express-fileupload": "^1.5.
|
|
94
|
-
"fast-check": "^4.
|
|
93
|
+
"express-fileupload": "^1.5.2",
|
|
94
|
+
"fast-check": "^4.2.0",
|
|
95
95
|
"helmet": "^8.1.0",
|
|
96
|
-
"hono": "^4.
|
|
97
|
-
"inversify": "^7.
|
|
98
|
-
"jose": "^6.0.
|
|
96
|
+
"hono": "^4.9.2",
|
|
97
|
+
"inversify": "^7.8.1",
|
|
98
|
+
"jose": "^6.0.12",
|
|
99
99
|
"knex": "^3.1.0",
|
|
100
|
-
"next": "^15.
|
|
101
|
-
"pg": "^8.16.
|
|
102
|
-
"react": "^19.1.
|
|
103
|
-
"react-dom": "^19.1.
|
|
104
|
-
"react-native": "^0.79.
|
|
100
|
+
"next": "^15.4.7",
|
|
101
|
+
"pg": "^8.16.3",
|
|
102
|
+
"react": "^19.1.1",
|
|
103
|
+
"react-dom": "^19.1.1",
|
|
104
|
+
"react-native": "^0.79.6",
|
|
105
105
|
"reflect-metadata": "^0.2.2",
|
|
106
106
|
"sqlite3": "^5.1.7",
|
|
107
|
-
"typescript": "^5.
|
|
107
|
+
"typescript": "^5.9.2",
|
|
108
108
|
"vite": "^6.3.5",
|
|
109
109
|
"vitest": "^3.2.4"
|
|
110
110
|
},
|
package/pnpm-workspace.yaml
CHANGED