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.
Files changed (60) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +1 -1
  3. package/dist/esm/apps/Helper/src/lib/project.js +7 -7
  4. package/dist/esm/convention.d.ts +2 -0
  5. package/dist/esm/convention.js +2 -0
  6. package/dist/esm/dt/Validation.js +1 -1
  7. package/dist/esm/dt/final/TGitSSHURL.d.ts +4 -3
  8. package/dist/esm/dt/final/TGitSSHURL.js +1 -1
  9. package/dist/esm/dt/final/TSSHPrivateKey.js +1 -3
  10. package/dist/esm/std/ShellCommandExecutor.d.ts +1 -0
  11. package/dist/esm/std/impl/ConsoleLogger.js +2 -2
  12. package/dist/esm/std/impl/FetchHTTPAPICallExecutor.js +1 -1
  13. package/dist/esm/std/impl/NodeFormDataBuilder.js +3 -1
  14. package/dist/esm/std/impl/NodeSpawnShellCommandExecutor.js +6 -0
  15. package/dist/esm/std/impl/SimpleHTTPAPICaller.js +1 -1
  16. package/dist/esm/target/lib/cli/CommandExecutor.js +2 -2
  17. package/dist/esm/target/lib/react/UCContainer.js +1 -1
  18. package/dist/esm/target/lib/react/UCPanel.js +0 -4
  19. package/dist/esm/target/lib/react/form.d.ts +5 -6
  20. package/dist/esm/target/lib/react/form.js +7 -10
  21. package/dist/esm/target/lib/react/useUC.d.ts +4 -4
  22. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +1 -0
  23. package/dist/esm/target/react-native-pure/UCForm.d.ts +1 -1
  24. package/dist/esm/target/react-native-pure/UCForm.js +2 -2
  25. package/dist/esm/target/react-native-pure/UCFormField.d.ts +1 -1
  26. package/dist/esm/target/react-native-pure/UCFormField.js +3 -4
  27. package/dist/esm/target/react-native-pure/UCFormFieldControl.js +13 -7
  28. package/dist/esm/target/react-web-pure/UCForm.d.ts +1 -1
  29. package/dist/esm/target/react-web-pure/UCForm.js +2 -2
  30. package/dist/esm/target/react-web-pure/UCFormField.d.ts +1 -1
  31. package/dist/esm/target/react-web-pure/UCFormField.js +3 -4
  32. package/dist/esm/target/react-web-pure/UCFormFieldControl.js +7 -4
  33. package/dist/esm/testing/AppTester.d.ts +6 -3
  34. package/dist/esm/testing/AppTester.js +20 -6
  35. package/dist/esm/testing/impl/SimpleHTMLAppTestReportEmitter.js +1 -1
  36. package/dist/esm/testing/impl/TypeScriptLibUCDefASTParser.js +2 -2
  37. package/dist/esm/testing/impl/VitestAppTestSuiteEmitter.js +135 -115
  38. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.d.ts +2 -3
  39. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.js +6 -8
  40. package/dist/esm/testing/uc-input.js +13 -12
  41. package/dist/esm/testing/workers/UCExecutor.js +2 -2
  42. package/dist/esm/testing/workers/checkers/UCDefChecker.d.ts +2 -0
  43. package/dist/esm/testing/workers/checkers/UCDefChecker.js +4 -1
  44. package/dist/esm/uc/UC.d.ts +7 -7
  45. package/dist/esm/uc/UC.js +4 -3
  46. package/dist/esm/uc/UCInputField.d.ts +6 -3
  47. package/dist/esm/uc/UCInputField.js +39 -29
  48. package/dist/esm/uc/index.d.ts +0 -1
  49. package/dist/esm/uc/index.js +0 -1
  50. package/dist/esm/uc/input-field.d.ts +2 -19
  51. package/dist/esm/uc/input-field.js +0 -19
  52. package/dist/esm/uc/input.d.ts +13 -7
  53. package/dist/esm/uc/utils/rInput.js +4 -3
  54. package/dist/esm/uc/utils/rVal.d.ts +5 -5
  55. package/dist/esm/uc/utils/rVal.js +1 -12
  56. package/dist/esm/uc/value.d.ts +1 -2
  57. package/dist/esm/uc/workers/UCInputFilesProcessor.js +3 -3
  58. package/package.json +16 -16
  59. package/pnpm-workspace.yaml +1 -1
  60. 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 { UCInputFieldChangeOperator, type UCInputFieldDef, type UCInputFieldValue } from './input-field.js';
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
- * Require the value as an array
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
- setValue(op: UCInputFieldChangeOperator, value: UCInputFieldValue<T>): void;
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 { UCInputFieldChangeOperator, ucifIsMandatory, ucifMustBeFilledManually, ucifRepeatability, } from './input-field.js';
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
- * Require the value as an array
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
- setValue(op, value) {
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
- return;
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
- switch (op) {
127
- // We are not really forced to use immutability here, but it's better for consistency
128
- case UCInputFieldChangeOperator.ADD:
129
- this.value = current.concat([val]);
130
- break;
131
- case UCInputFieldChangeOperator.REMOVE:
132
- this.value = current.filter((v) => v !== val);
133
- break;
134
- default:
135
- ((_) => { })(op);
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;
@@ -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';
@@ -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 extends DataType> = Value<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
  /**
@@ -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 interface UCInput {
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<StringKeys<I>, StringKeys<I>[]>>;
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<StringKeys<I>, UCInputFieldDef<any>>;
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?: StringKeys<I>[];
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?: StringKeys<I>[];
40
+ or?: UCInputKey<I>[];
35
41
  };
36
42
  }
@@ -1,5 +1,5 @@
1
1
  import { TBoolean } from '../../dt/index.js';
2
- import { UCInputFieldChangeOperator, ucifIsMandatory, ucifRepeatability, } from '../input-field.js';
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.setValue(UCInputFieldChangeOperator.SET, value);
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.setValue(UCInputFieldChangeOperator.SET, value);
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 extends DataType>(value: Value<T>, or?: T): T | null;
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 extends DataType>(value: Value<T>): T;
21
+ export declare function reqVal0<T>(value: Value<T>): T;
22
22
  /**
23
- * Get the value as an array
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 extends DataType>(value: Value<T>): 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
- * Get the value as an array
24
+ * Read the value as an array
36
25
  *
37
26
  * To be used when the field has a 0..* cardinality.
38
27
  *
@@ -1,2 +1 @@
1
- import type { DataType } from '../dt/index.js';
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 { UCInputFieldChangeOperator, ucifRepeatability, } from '../input-field.js';
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.setValue(UCInputFieldChangeOperator.SET, fileNameRefs);
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.setValue(UCInputFieldChangeOperator.SET, fileNameRef);
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.19.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.0.0"
84
+ "@biomejs/biome": "^2.2.0"
85
85
  },
86
86
  "peerDependencies": {
87
- "@hono/node-server": "^1.14.4",
88
- "@modelcontextprotocol/sdk": "^1.13.0",
89
- "@stricli/core": "^1.1.2",
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.1",
94
- "fast-check": "^4.1.1",
93
+ "express-fileupload": "^1.5.2",
94
+ "fast-check": "^4.2.0",
95
95
  "helmet": "^8.1.0",
96
- "hono": "^4.8.1",
97
- "inversify": "^7.5.2",
98
- "jose": "^6.0.11",
96
+ "hono": "^4.9.2",
97
+ "inversify": "^7.8.1",
98
+ "jose": "^6.0.12",
99
99
  "knex": "^3.1.0",
100
- "next": "^15.3.4",
101
- "pg": "^8.16.2",
102
- "react": "^19.1.0",
103
- "react-dom": "^19.1.0",
104
- "react-native": "^0.79.4",
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.8.3",
107
+ "typescript": "^5.9.2",
108
108
  "vite": "^6.3.5",
109
109
  "vitest": "^3.2.4"
110
110
  },
@@ -1,6 +1,6 @@
1
1
  packages:
2
- - docs-fd
3
2
  - examples/basic
3
+ - examples/standalone
4
4
  - examples/supertrader
5
5
  onlyBuiltDependencies:
6
6
  - '@biomejs/biome'
package/tsconfig.json CHANGED
@@ -28,7 +28,6 @@
28
28
  },
29
29
  "exclude": [
30
30
  "dist",
31
- "docs-fd",
32
31
  "examples/**/dist",
33
32
  "examples/**/node_modules",
34
33
  "node_modules"