akanjs 3.0.0-alpha.53 → 3.0.0-alpha.54
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/constant/fieldInfo.ts +11 -3
- package/constant/textFieldPaths.ts +13 -7
- package/local/apps/serverLifecycle/serverLifecycle-local.db-shm +0 -0
- package/local/apps/serverLifecycle/serverLifecycle-local_solid.db-shm +0 -0
- package/package.json +1 -1
- package/store/agentic/AgentValue.ts +12 -5
- package/types/constant/fieldInfo.d.ts +10 -3
- package/types/store/agentic/AgentValue.d.ts +8 -0
package/constant/fieldInfo.ts
CHANGED
|
@@ -505,6 +505,14 @@ export interface FieldObject {
|
|
|
505
505
|
[key: string]: ConstantField;
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
+
/**
|
|
509
|
+
* `text` names a column in the plaintext search mirror, so a masked field carrying one would publish what it
|
|
510
|
+
* masks through search — the class build refuses it (`TextFieldPaths`). Removing the key from the option type
|
|
511
|
+
* moves that refusal to the call site, where the fix is obvious. Distributive because `FieldOption` is a union:
|
|
512
|
+
* a plain `Omit` over it would collapse to the keys the members share.
|
|
513
|
+
*/
|
|
514
|
+
type WithoutTextRole<Option> = Option extends unknown ? Omit<Option, "text"> : never;
|
|
515
|
+
|
|
508
516
|
type FieldOption<
|
|
509
517
|
Value extends ConstantFieldTypeInput,
|
|
510
518
|
MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never,
|
|
@@ -568,7 +576,7 @@ field.hidden = <
|
|
|
568
576
|
MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never,
|
|
569
577
|
>(
|
|
570
578
|
value: Value,
|
|
571
|
-
option: FieldOption<Value, MapValue
|
|
579
|
+
option: WithoutTextRole<FieldOption<Value, MapValue>> = {},
|
|
572
580
|
) =>
|
|
573
581
|
new FieldInfo<"hidden", Value, ExplicitType, MapValue>(value, {
|
|
574
582
|
...option,
|
|
@@ -581,7 +589,7 @@ field.secret = <
|
|
|
581
589
|
MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never,
|
|
582
590
|
>(
|
|
583
591
|
value: Value,
|
|
584
|
-
option: FieldOption<Value, MapValue
|
|
592
|
+
option: WithoutTextRole<FieldOption<Value, MapValue>> = {},
|
|
585
593
|
) =>
|
|
586
594
|
new FieldInfo<"secret", Value | null, ExplicitType | null, MapValue>(value, {
|
|
587
595
|
...option,
|
|
@@ -596,7 +604,7 @@ export const resolve = <
|
|
|
596
604
|
MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never,
|
|
597
605
|
>(
|
|
598
606
|
value: Value,
|
|
599
|
-
option: FieldOption<Value, MapValue
|
|
607
|
+
option: WithoutTextRole<FieldOption<Value, MapValue>> = {},
|
|
600
608
|
) =>
|
|
601
609
|
new FieldInfo<"resolve", Value, ExplicitType, MapValue>(value, {
|
|
602
610
|
...option,
|
|
@@ -34,17 +34,23 @@ export class TextFieldPaths extends TextFieldPathSet {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
#assertReachable(path: string, parent: ConstantField) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (parent.fieldType === "
|
|
37
|
+
|
|
38
|
+
const fix = `Drop the text role on "${path}", or leave the parent unmasked.`;
|
|
39
|
+
if (parent.fieldType === "secret") throw new Error(`Text field "${path}" is under a secret field. ${fix}`);
|
|
40
|
+
if (parent.fieldType === "hidden") throw new Error(`Text field "${path}" is under a hidden field. ${fix}`);
|
|
41
|
+
if (parent.fieldType === "resolve") throw new Error(`Text field "${path}" is under a resolved field. ${fix}`);
|
|
40
42
|
if (parent.arrDepth > 1) throw new Error(`Text field "${path}" is under a nested array and cannot be indexed`);
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
#assertIndexable(key: string, role: TextFieldRole, field: ConstantField) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (field.fieldType === "
|
|
47
|
-
|
|
46
|
+
|
|
47
|
+
const masked = `The search mirror stores plaintext. Drop the text role on "${key}", or make the field plain.`;
|
|
48
|
+
if (field.fieldType === "secret")
|
|
49
|
+
throw new Error(`Text field "${key}" is secret and must not be indexed. ${masked}`);
|
|
50
|
+
if (field.fieldType === "hidden")
|
|
51
|
+
throw new Error(`Text field "${key}" is hidden and must not be indexed. ${masked}`);
|
|
52
|
+
if (field.fieldType === "resolve")
|
|
53
|
+
throw new Error(`Text field "${key}" is resolved and is absent from _doc. Drop the text role on "${key}".`);
|
|
48
54
|
if (field.isMap) throw new Error(`Text field "${key}" is a Map and cannot be indexed`);
|
|
49
55
|
if (field.arrDepth > 1) throw new Error(`Text field "${key}" is a nested array and cannot be indexed`);
|
|
50
56
|
const modelRef = field.modelRef as unknown as Cls;
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -22,6 +22,11 @@ export type AgentFieldType = AgentSingleType | AgentSingleType[];
|
|
|
22
22
|
* A model class resolves to its state object rather than its instance type, so a component may hand over either
|
|
23
23
|
* the hydrated document or the plain data copied out of one — masking reads the model that was named, not the
|
|
24
24
|
* class the value still carries.
|
|
25
|
+
*
|
|
26
|
+
* A scalar is recognised by `refName` and has to be matched before `FIELD_META`: `via.ts` augments the global
|
|
27
|
+
* `String`, `Boolean`, `Date` and `Map` constructors with `DatabaseConstantStatics`, so those four carry field
|
|
28
|
+
* metadata and would otherwise read as models. A model carries no `refName`, and `Map` — carrying neither — falls
|
|
29
|
+
* through to the model branch and is refused at declaration time instead.
|
|
25
30
|
*/
|
|
26
31
|
export type AgentValueOf<T> = T extends readonly (infer F)[]
|
|
27
32
|
? AgentValueOf<F>[]
|
|
@@ -31,11 +36,13 @@ export type AgentValueOf<T> = T extends readonly (infer F)[]
|
|
|
31
36
|
? V
|
|
32
37
|
: T extends DateConstructor
|
|
33
38
|
? Dayjs | Date | string
|
|
34
|
-
: T extends { [
|
|
35
|
-
?
|
|
36
|
-
: T extends { [
|
|
37
|
-
?
|
|
38
|
-
:
|
|
39
|
+
: T extends { refName: string; [CLIENT_VALUE]: infer V }
|
|
40
|
+
? V
|
|
41
|
+
: T extends { [FIELD_META]: unknown }
|
|
42
|
+
? GetStateObject<UnCls<T>>
|
|
43
|
+
: T extends { [CLIENT_VALUE]: infer V }
|
|
44
|
+
? V
|
|
45
|
+
: unknown;
|
|
39
46
|
|
|
40
47
|
type ValueKind = "any" | "date" | "scalar" | "enum" | "model";
|
|
41
48
|
|
|
@@ -172,6 +172,13 @@ export declare class ConstantField<FieldType extends ConstantFieldKind = Constan
|
|
|
172
172
|
export interface FieldObject {
|
|
173
173
|
[key: string]: ConstantField;
|
|
174
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* `text` names a column in the plaintext search mirror, so a masked field carrying one would publish what it
|
|
177
|
+
* masks through search — the class build refuses it (`TextFieldPaths`). Removing the key from the option type
|
|
178
|
+
* moves that refusal to the call site, where the fix is obvious. Distributive because `FieldOption` is a union:
|
|
179
|
+
* a plain `Omit` over it would collapse to the keys the members share.
|
|
180
|
+
*/
|
|
181
|
+
type WithoutTextRole<Option> = Option extends unknown ? Omit<Option, "text"> : never;
|
|
175
182
|
type FieldOption<Value extends ConstantFieldTypeInput, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never, Metadata extends {
|
|
176
183
|
[key: string]: any;
|
|
177
184
|
} = {
|
|
@@ -182,11 +189,11 @@ export type PlainTypeToFieldType<PlainType> = PlainType extends [infer First, ..
|
|
|
182
189
|
export declare const field: {
|
|
183
190
|
<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"property", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, false>;
|
|
184
191
|
visual<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"property", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, false>;
|
|
185
|
-
hidden<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue
|
|
186
|
-
secret<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue
|
|
192
|
+
hidden<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: WithoutTextRole<FieldOption<Value, MapValue>>): FieldInfo<"hidden", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, true, false>;
|
|
193
|
+
secret<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: WithoutTextRole<FieldOption<Value, MapValue>>): FieldInfo<"secret", Value | null, ExplicitType | null, MapValue, SingleValue<Value> & {}, UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false, SingleValue<Value> & {} extends infer T ? T extends SingleValue<Value> & {} ? T extends EnumInstance<string, any> ? true : false : never : never, SingleValue<Value> & {} extends infer T_1 ? T_1 extends SingleValue<Value> & {} ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, SingleValue<Value> & {} extends infer T_2 ? T_2 extends SingleValue<Value> & {} ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) ? T_3 extends true ? false : (SingleValue<Value> & {} extends infer T_4 ? T_4 extends SingleValue<Value> & {} ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (SingleValue<Value> & {} extends infer T_12 ? T_12 extends SingleValue<Value> & {} ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (SingleValue<Value> & {} extends infer T_6 ? T_6 extends SingleValue<Value> & {} ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (SingleValue<Value> & {} extends infer T_11 ? T_11 extends SingleValue<Value> & {} ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (SingleValue<Value> & {} extends infer T_8 ? T_8 extends SingleValue<Value> & {} ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (SingleValue<Value> & {} extends infer T_10 ? T_10 extends SingleValue<Value> & {} ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, true>;
|
|
187
194
|
};
|
|
188
195
|
/** Builds a resolved field that is derived rather than treated as a stored property. */
|
|
189
|
-
export declare const resolve: <ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue
|
|
196
|
+
export declare const resolve: <ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: WithoutTextRole<FieldOption<Value, MapValue>>) => FieldInfo<"resolve", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, false>;
|
|
190
197
|
export type FieldBuilder = typeof field;
|
|
191
198
|
export type FieldResolver = typeof resolve;
|
|
192
199
|
export {};
|
|
@@ -7,10 +7,18 @@ export type AgentFieldType = AgentSingleType | AgentSingleType[];
|
|
|
7
7
|
* A model class resolves to its state object rather than its instance type, so a component may hand over either
|
|
8
8
|
* the hydrated document or the plain data copied out of one — masking reads the model that was named, not the
|
|
9
9
|
* class the value still carries.
|
|
10
|
+
*
|
|
11
|
+
* A scalar is recognised by `refName` and has to be matched before `FIELD_META`: `via.ts` augments the global
|
|
12
|
+
* `String`, `Boolean`, `Date` and `Map` constructors with `DatabaseConstantStatics`, so those four carry field
|
|
13
|
+
* metadata and would otherwise read as models. A model carries no `refName`, and `Map` — carrying neither — falls
|
|
14
|
+
* through to the model branch and is refused at declaration time instead.
|
|
10
15
|
*/
|
|
11
16
|
export type AgentValueOf<T> = T extends readonly (infer F)[] ? AgentValueOf<F>[] : T extends {
|
|
12
17
|
refName: "Any";
|
|
13
18
|
} ? unknown : T extends EnumInstance<string, infer V> ? V : T extends DateConstructor ? Dayjs | Date | string : T extends {
|
|
19
|
+
refName: string;
|
|
20
|
+
[CLIENT_VALUE]: infer V;
|
|
21
|
+
} ? V : T extends {
|
|
14
22
|
[FIELD_META]: unknown;
|
|
15
23
|
} ? GetStateObject<UnCls<T>> : T extends {
|
|
16
24
|
[CLIENT_VALUE]: infer V;
|