@stndrds/schema 1.0.0-alpha.328 → 1.0.0-alpha.330
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/dist/all-CWDgBPuS.d.ts +1186 -0
- package/dist/all-DilIWUev.d.mts +1186 -0
- package/dist/capabilities.d.mts +94 -94
- package/dist/capabilities.d.ts +94 -94
- package/dist/capabilities.js +2 -2
- package/dist/capabilities.mjs +2 -2
- package/dist/checkbox-CjnTd8DE.d.ts +11 -0
- package/dist/checkbox-preO352q.d.mts +11 -0
- package/dist/config-BQJJHopR.js +13 -0
- package/dist/config-_sOeudpS.mjs +13 -0
- package/dist/core-397tQy5q.js +2 -0
- package/dist/core-BLHhNykL.mjs +2 -0
- package/dist/date-BL3UHIXs.d.mts +24 -0
- package/dist/date-CxwHkbid.d.ts +24 -0
- package/dist/exceptions-DGCzCc9t.d.mts +1405 -0
- package/dist/exceptions-DGCzCc9t.d.ts +1405 -0
- package/dist/exceptions.d.mts +3 -2
- package/dist/exceptions.d.ts +3 -2
- package/dist/exceptions.js +3 -1
- package/dist/exceptions.mjs +3 -1
- package/dist/index-B7HmBsUS.d.ts +53 -0
- package/dist/{helpers-JGJLPkwG.d.ts → index-BoUwfrDH.d.mts} +172 -145
- package/dist/index-C8M7Amy9.d.mts +254 -0
- package/dist/{helpers-Cic6nWBr.d.mts → index-DqwNrDSp.d.ts} +172 -145
- package/dist/index-Uwy7CTKo.d.ts +254 -0
- package/dist/index-XtmC-C7J.d.mts +53 -0
- package/dist/index.d.mts +9203 -9111
- package/dist/index.d.ts +9203 -9111
- package/dist/index.js +21 -27
- package/dist/index.mjs +21 -27
- package/dist/number-Ddi_YYfm.d.mts +11 -0
- package/dist/number-GmD5PM5s.d.ts +11 -0
- package/dist/object-BQuWeYKA.js +4 -0
- package/dist/object-tz3P8Pgh.mjs +4 -0
- package/dist/phone-C0QEfySq.js +2 -0
- package/dist/phone-DHUJN7SI.mjs +2 -0
- package/dist/text-A9AJ1wUO.js +2 -0
- package/dist/text-C8Lb-NFo.mjs +2 -0
- package/dist/text-CxwF5K4k.d.mts +11 -0
- package/dist/text-D6UypN8p.d.ts +11 -0
- package/dist/utils-fXIvFFl6.mjs +2 -0
- package/dist/utils-gY3d9Dwp.js +2 -0
- package/dist/utils.d.mts +3 -2
- package/dist/utils.d.ts +3 -2
- package/dist/utils.js +2 -1
- package/dist/utils.mjs +2 -1
- package/dist/validation/all.d.mts +6 -8
- package/dist/validation/all.d.ts +6 -8
- package/dist/validation/all.js +2 -1
- package/dist/validation/all.mjs +2 -1
- package/dist/validation/complex/currency.d.mts +8 -9
- package/dist/validation/complex/currency.d.ts +8 -9
- package/dist/validation/complex/currency.js +2 -1
- package/dist/validation/complex/currency.mjs +2 -1
- package/dist/validation/complex/location.d.mts +14 -15
- package/dist/validation/complex/location.d.ts +14 -15
- package/dist/validation/complex/location.js +2 -1
- package/dist/validation/complex/location.mjs +2 -1
- package/dist/validation/complex/phone.d.mts +8 -9
- package/dist/validation/complex/phone.d.ts +8 -9
- package/dist/validation/complex/phone.js +2 -1
- package/dist/validation/complex/phone.mjs +2 -1
- package/dist/validation/complex/relation.d.mts +8 -9
- package/dist/validation/complex/relation.d.ts +8 -9
- package/dist/validation/complex/relation.js +2 -1
- package/dist/validation/complex/relation.mjs +2 -1
- package/dist/validation/complex/richtext.d.mts +6 -7
- package/dist/validation/complex/richtext.d.ts +6 -7
- package/dist/validation/complex/richtext.js +2 -1
- package/dist/validation/complex/richtext.mjs +2 -1
- package/dist/validation/complex/select.d.mts +8 -9
- package/dist/validation/complex/select.d.ts +8 -9
- package/dist/validation/complex/select.js +2 -1
- package/dist/validation/complex/select.mjs +2 -1
- package/dist/validation/complex/user.d.mts +6 -7
- package/dist/validation/complex/user.d.ts +6 -7
- package/dist/validation/complex/user.js +2 -1
- package/dist/validation/complex/user.mjs +2 -1
- package/dist/validation/computed/formula.d.mts +6 -7
- package/dist/validation/computed/formula.d.ts +6 -7
- package/dist/validation/computed/formula.js +2 -1
- package/dist/validation/computed/formula.mjs +2 -1
- package/dist/validation/computed/rollup.d.mts +6 -7
- package/dist/validation/computed/rollup.d.ts +6 -7
- package/dist/validation/computed/rollup.js +2 -1
- package/dist/validation/computed/rollup.mjs +2 -1
- package/dist/validation/config/index.d.mts +3 -4
- package/dist/validation/config/index.d.ts +3 -4
- package/dist/validation/config/index.js +2 -1
- package/dist/validation/config/index.mjs +2 -1
- package/dist/validation/core/index.d.mts +2 -17
- package/dist/validation/core/index.d.ts +2 -17
- package/dist/validation/core/index.js +2 -1
- package/dist/validation/core/index.mjs +2 -1
- package/dist/validation/object/index.d.mts +2 -29
- package/dist/validation/object/index.d.ts +2 -29
- package/dist/validation/object/index.js +2 -1
- package/dist/validation/object/index.mjs +2 -1
- package/dist/validation/primitives/checkbox.d.mts +2 -10
- package/dist/validation/primitives/checkbox.d.ts +2 -10
- package/dist/validation/primitives/checkbox.js +2 -1
- package/dist/validation/primitives/checkbox.mjs +2 -1
- package/dist/validation/primitives/date.d.mts +2 -23
- package/dist/validation/primitives/date.d.ts +2 -23
- package/dist/validation/primitives/date.js +2 -1
- package/dist/validation/primitives/date.mjs +2 -1
- package/dist/validation/primitives/number.d.mts +2 -10
- package/dist/validation/primitives/number.d.ts +2 -10
- package/dist/validation/primitives/number.js +2 -1
- package/dist/validation/primitives/number.mjs +2 -1
- package/dist/validation/primitives/text.d.mts +2 -10
- package/dist/validation/primitives/text.d.ts +2 -10
- package/dist/validation/primitives/text.js +2 -1
- package/dist/validation/primitives/text.mjs +2 -1
- package/dist/view-config.schema-B4AkqLKQ.mjs +2 -0
- package/dist/view-config.schema-to6p1m8L.js +2 -0
- package/package.json +11 -9
- package/dist/all-DPW8A7kG.d.ts +0 -1178
- package/dist/all-yrWOkrj0.d.mts +0 -1178
- package/dist/attributes-B9zZJdoT.d.mts +0 -1365
- package/dist/attributes-B9zZJdoT.d.ts +0 -1365
- package/dist/chunk-23KPS33D.js +0 -2
- package/dist/chunk-2FJ45VYQ.js +0 -2
- package/dist/chunk-2M4YXNYZ.js +0 -15
- package/dist/chunk-47KVYDKG.js +0 -2
- package/dist/chunk-4OTKOCGB.mjs +0 -2
- package/dist/chunk-4VCADZK4.mjs +0 -2
- package/dist/chunk-DPD6ZWL2.js +0 -2
- package/dist/chunk-EZCWO4XV.mjs +0 -15
- package/dist/chunk-GKXTXH4Y.mjs +0 -2
- package/dist/chunk-GXSNLYRR.js +0 -2
- package/dist/chunk-IBM4ID4Y.js +0 -6
- package/dist/chunk-JFSQ24XR.js +0 -2
- package/dist/chunk-JOS2XMXY.js +0 -2
- package/dist/chunk-JSKLP4GI.js +0 -12
- package/dist/chunk-JVLH3DVZ.js +0 -2
- package/dist/chunk-KG2ADZG6.mjs +0 -2
- package/dist/chunk-KLR22JMC.js +0 -2
- package/dist/chunk-KSPJP74K.mjs +0 -2
- package/dist/chunk-KYPEBOPW.mjs +0 -2
- package/dist/chunk-LB4TNMZU.mjs +0 -2
- package/dist/chunk-LSCBR4VS.js +0 -2
- package/dist/chunk-LWSOKXPF.js +0 -2
- package/dist/chunk-O34B5KOW.mjs +0 -2
- package/dist/chunk-PFO7NWQW.mjs +0 -2
- package/dist/chunk-Q7TQCRSD.mjs +0 -2
- package/dist/chunk-RTHLB6T6.js +0 -2
- package/dist/chunk-SLYRQ72J.js +0 -2
- package/dist/chunk-UXISKZ5Y.js +0 -2
- package/dist/chunk-VKFLXFPP.mjs +0 -2
- package/dist/chunk-WMQRTFOP.mjs +0 -2
- package/dist/chunk-WUFUIJRX.mjs +0 -2
- package/dist/chunk-XAVRKIBE.mjs +0 -6
- package/dist/chunk-XHEBV2HE.js +0 -2
- package/dist/chunk-XMQV2WFY.mjs +0 -2
- package/dist/chunk-XRDP2Y4J.mjs +0 -2
- package/dist/chunk-XRWRECDA.mjs +0 -12
- package/dist/chunk-XUAP7KWK.js +0 -2
- package/dist/chunk-XXTKNIBK.js +0 -2
- package/dist/chunk-YIXNAWH6.mjs +0 -2
- package/dist/chunk-YJSVWV3Z.mjs +0 -2
- package/dist/index-BbYKy1fQ.d.mts +0 -252
- package/dist/index-BjKaOUx3.d.ts +0 -252
- package/dist/types-BpuX5PuM.d.mts +0 -38
- package/dist/types-DLwv9Jgf.d.ts +0 -38
package/dist/capabilities.d.mts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
|
|
2
|
+
import { z as z$1 } from "zod";
|
|
3
|
+
//#region src/capabilities.d.ts
|
|
3
4
|
/** Accepted forms of the object identifier every object-scoped capability takes. */
|
|
4
|
-
declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
5
|
+
export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
5
6
|
/** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
|
|
6
|
-
declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value
|
|
7
|
+
export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
|
|
7
8
|
/**
|
|
8
9
|
* The LLM-facing filter shape, deliberately looser than its two siblings:
|
|
9
10
|
* `types/filters.ts` (`FilterState`, the canonical TS model — its `quantifier`
|
|
@@ -14,25 +15,25 @@ declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), wr
|
|
|
14
15
|
* `filters/normalize-operator.ts` (`SYNONYM_ALIASES`) — those are the source
|
|
15
16
|
* of truth; keep the prose in sync when adding an operator.
|
|
16
17
|
*/
|
|
17
|
-
declare const filtersSchema: z.ZodObject<{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}, z.core.$strip>;
|
|
29
|
-
declare const sortsSchema: z.ZodArray<z.ZodObject<{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, z.core.$strip>>;
|
|
18
|
+
export declare const filtersSchema: z$1.ZodObject<{
|
|
19
|
+
combinator: z$1.ZodDefault<z$1.ZodEnum<{
|
|
20
|
+
and: "and";
|
|
21
|
+
or: "or";
|
|
22
|
+
}>>;
|
|
23
|
+
rules: z$1.ZodArray<z$1.ZodObject<{
|
|
24
|
+
attribute: z$1.ZodString;
|
|
25
|
+
property: z$1.ZodOptional<z$1.ZodString>;
|
|
26
|
+
operator: z$1.ZodString;
|
|
27
|
+
value: z$1.ZodNullable<z$1.ZodUnknown>;
|
|
28
|
+
}, z$1.core.$strip>>;
|
|
29
|
+
}, z$1.core.$strip>;
|
|
30
|
+
export declare const sortsSchema: z$1.ZodArray<z$1.ZodObject<{
|
|
31
|
+
attribute: z$1.ZodString;
|
|
32
|
+
direction: z$1.ZodEnum<{
|
|
33
|
+
asc: "asc";
|
|
34
|
+
desc: "desc";
|
|
35
|
+
}>;
|
|
36
|
+
}, z$1.core.$strip>>;
|
|
36
37
|
/**
|
|
37
38
|
* Filter shapes derived from {@link filtersSchema} so the capability schema stays
|
|
38
39
|
* the single source of truth.
|
|
@@ -41,10 +42,10 @@ declare const sortsSchema: z.ZodArray<z.ZodObject<{
|
|
|
41
42
|
* validation, when `combinator` has already been defaulted. What a caller may
|
|
42
43
|
* omit is `z.input`, and that is what {@link CapabilityInput} exposes.
|
|
43
44
|
*/
|
|
44
|
-
type FilterStateInput = z.infer<typeof filtersSchema>;
|
|
45
|
-
type FilterRuleInput = FilterStateInput["rules"][number];
|
|
45
|
+
export type FilterStateInput = z$1.infer<typeof filtersSchema>;
|
|
46
|
+
export type FilterRuleInput = FilterStateInput["rules"][number];
|
|
46
47
|
/** How a capability mutates data, which decides whether a rehearsal captures it. */
|
|
47
|
-
type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
48
|
+
export type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
48
49
|
/**
|
|
49
50
|
* Every capability a Reflex may call, defined once.
|
|
50
51
|
*
|
|
@@ -60,72 +61,72 @@ type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
|
60
61
|
* pins both variants. The name, the kind and the input schema are what must exist
|
|
61
62
|
* exactly once, and they do.
|
|
62
63
|
*/
|
|
63
|
-
declare const RECORD_CAPABILITIES: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
64
|
+
export declare const RECORD_CAPABILITIES: {
|
|
65
|
+
readonly get_record: {
|
|
66
|
+
readonly name: "get_record";
|
|
67
|
+
readonly kind: "read";
|
|
68
|
+
readonly input: z$1.ZodObject<{
|
|
69
|
+
recordId: z$1.ZodString;
|
|
70
|
+
fields: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
|
|
71
|
+
}, z$1.core.$strip>;
|
|
72
|
+
};
|
|
73
|
+
readonly search_records: {
|
|
74
|
+
readonly name: "search_records";
|
|
75
|
+
readonly kind: "read";
|
|
76
|
+
readonly input: z$1.ZodObject<{
|
|
77
|
+
objectId: z$1.ZodString;
|
|
78
|
+
_displayLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
79
|
+
query: z$1.ZodOptional<z$1.ZodString>;
|
|
80
|
+
limit: z$1.ZodOptional<z$1.ZodNumber>;
|
|
81
|
+
offset: z$1.ZodOptional<z$1.ZodNumber>;
|
|
82
|
+
fields: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
|
|
83
|
+
filters: z$1.ZodOptional<z$1.ZodObject<{
|
|
84
|
+
combinator: z$1.ZodDefault<z$1.ZodEnum<{
|
|
85
|
+
and: "and";
|
|
86
|
+
or: "or";
|
|
87
|
+
}>>;
|
|
88
|
+
rules: z$1.ZodArray<z$1.ZodObject<{
|
|
89
|
+
attribute: z$1.ZodString;
|
|
90
|
+
property: z$1.ZodOptional<z$1.ZodString>;
|
|
91
|
+
operator: z$1.ZodString;
|
|
92
|
+
value: z$1.ZodNullable<z$1.ZodUnknown>;
|
|
93
|
+
}, z$1.core.$strip>>;
|
|
94
|
+
}, z$1.core.$strip>>;
|
|
95
|
+
sorts: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
|
|
96
|
+
attribute: z$1.ZodString;
|
|
97
|
+
direction: z$1.ZodEnum<{
|
|
98
|
+
asc: "asc";
|
|
99
|
+
desc: "desc";
|
|
100
|
+
}>;
|
|
101
|
+
}, z$1.core.$strip>>>;
|
|
102
|
+
}, z$1.core.$strip>;
|
|
103
|
+
};
|
|
104
|
+
readonly create_record: {
|
|
105
|
+
readonly name: "create_record";
|
|
106
|
+
readonly kind: "create";
|
|
107
|
+
readonly input: z$1.ZodObject<{
|
|
108
|
+
objectId: z$1.ZodString;
|
|
109
|
+
_displayLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
110
|
+
data: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;
|
|
111
|
+
}, z$1.core.$strip>;
|
|
112
|
+
};
|
|
113
|
+
readonly update_record: {
|
|
114
|
+
readonly name: "update_record";
|
|
115
|
+
readonly kind: "update";
|
|
116
|
+
readonly input: z$1.ZodObject<{
|
|
117
|
+
recordId: z$1.ZodString;
|
|
118
|
+
data: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;
|
|
119
|
+
}, z$1.core.$strip>;
|
|
120
|
+
};
|
|
121
|
+
readonly delete_record: {
|
|
122
|
+
readonly name: "delete_record";
|
|
123
|
+
readonly kind: "delete";
|
|
124
|
+
readonly input: z$1.ZodObject<{
|
|
125
|
+
recordId: z$1.ZodString;
|
|
126
|
+
}, z$1.core.$strip>;
|
|
127
|
+
};
|
|
127
128
|
};
|
|
128
|
-
type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
129
|
+
export type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
129
130
|
/**
|
|
130
131
|
* A capability's argument type, inferred from the very schema the runtime
|
|
131
132
|
* validates against.
|
|
@@ -136,11 +137,10 @@ type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
|
136
137
|
* arguments with the output side made the SDK demand a `combinator` the runtime
|
|
137
138
|
* would have filled in anyway.
|
|
138
139
|
*/
|
|
139
|
-
type CapabilityInput<N extends RecordCapabilityName> = z.input<(typeof RECORD_CAPABILITIES)[N]["input"]>;
|
|
140
|
+
export type CapabilityInput<N extends RecordCapabilityName> = z$1.input<(typeof RECORD_CAPABILITIES)[N]["input"]>;
|
|
140
141
|
/**
|
|
141
142
|
* The capability → kind projection, derived rather than restated. The reflexes
|
|
142
143
|
* module reads this instead of maintaining its own table (D26/D28).
|
|
143
144
|
*/
|
|
144
|
-
declare const RECORD_CAPABILITY_KINDS: Readonly<Record<RecordCapabilityName, CapabilityKind>>;
|
|
145
|
-
|
|
146
|
-
export { type CapabilityInput, type CapabilityKind, type FilterRuleInput, type FilterStateInput, OBJECT_ID_DESCRIPTION, RECORD_CAPABILITIES, RECORD_CAPABILITY_KINDS, type RecordCapabilityName, SANDBOX_FILE_DATA_HINT, filtersSchema, sortsSchema };
|
|
145
|
+
export declare const RECORD_CAPABILITY_KINDS: Readonly<Record<RecordCapabilityName, CapabilityKind>>;
|
|
146
|
+
//#endregion
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
|
|
2
|
+
import { z as z$1 } from "zod";
|
|
3
|
+
//#region src/capabilities.d.ts
|
|
3
4
|
/** Accepted forms of the object identifier every object-scoped capability takes. */
|
|
4
|
-
declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
5
|
+
export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
5
6
|
/** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
|
|
6
|
-
declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value
|
|
7
|
+
export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
|
|
7
8
|
/**
|
|
8
9
|
* The LLM-facing filter shape, deliberately looser than its two siblings:
|
|
9
10
|
* `types/filters.ts` (`FilterState`, the canonical TS model — its `quantifier`
|
|
@@ -14,25 +15,25 @@ declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), wr
|
|
|
14
15
|
* `filters/normalize-operator.ts` (`SYNONYM_ALIASES`) — those are the source
|
|
15
16
|
* of truth; keep the prose in sync when adding an operator.
|
|
16
17
|
*/
|
|
17
|
-
declare const filtersSchema: z.ZodObject<{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}, z.core.$strip>;
|
|
29
|
-
declare const sortsSchema: z.ZodArray<z.ZodObject<{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, z.core.$strip>>;
|
|
18
|
+
export declare const filtersSchema: z$1.ZodObject<{
|
|
19
|
+
combinator: z$1.ZodDefault<z$1.ZodEnum<{
|
|
20
|
+
and: "and";
|
|
21
|
+
or: "or";
|
|
22
|
+
}>>;
|
|
23
|
+
rules: z$1.ZodArray<z$1.ZodObject<{
|
|
24
|
+
attribute: z$1.ZodString;
|
|
25
|
+
property: z$1.ZodOptional<z$1.ZodString>;
|
|
26
|
+
operator: z$1.ZodString;
|
|
27
|
+
value: z$1.ZodNullable<z$1.ZodUnknown>;
|
|
28
|
+
}, z$1.core.$strip>>;
|
|
29
|
+
}, z$1.core.$strip>;
|
|
30
|
+
export declare const sortsSchema: z$1.ZodArray<z$1.ZodObject<{
|
|
31
|
+
attribute: z$1.ZodString;
|
|
32
|
+
direction: z$1.ZodEnum<{
|
|
33
|
+
asc: "asc";
|
|
34
|
+
desc: "desc";
|
|
35
|
+
}>;
|
|
36
|
+
}, z$1.core.$strip>>;
|
|
36
37
|
/**
|
|
37
38
|
* Filter shapes derived from {@link filtersSchema} so the capability schema stays
|
|
38
39
|
* the single source of truth.
|
|
@@ -41,10 +42,10 @@ declare const sortsSchema: z.ZodArray<z.ZodObject<{
|
|
|
41
42
|
* validation, when `combinator` has already been defaulted. What a caller may
|
|
42
43
|
* omit is `z.input`, and that is what {@link CapabilityInput} exposes.
|
|
43
44
|
*/
|
|
44
|
-
type FilterStateInput = z.infer<typeof filtersSchema>;
|
|
45
|
-
type FilterRuleInput = FilterStateInput["rules"][number];
|
|
45
|
+
export type FilterStateInput = z$1.infer<typeof filtersSchema>;
|
|
46
|
+
export type FilterRuleInput = FilterStateInput["rules"][number];
|
|
46
47
|
/** How a capability mutates data, which decides whether a rehearsal captures it. */
|
|
47
|
-
type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
48
|
+
export type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
48
49
|
/**
|
|
49
50
|
* Every capability a Reflex may call, defined once.
|
|
50
51
|
*
|
|
@@ -60,72 +61,72 @@ type CapabilityKind = "read" | "create" | "update" | "delete";
|
|
|
60
61
|
* pins both variants. The name, the kind and the input schema are what must exist
|
|
61
62
|
* exactly once, and they do.
|
|
62
63
|
*/
|
|
63
|
-
declare const RECORD_CAPABILITIES: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
64
|
+
export declare const RECORD_CAPABILITIES: {
|
|
65
|
+
readonly get_record: {
|
|
66
|
+
readonly name: "get_record";
|
|
67
|
+
readonly kind: "read";
|
|
68
|
+
readonly input: z$1.ZodObject<{
|
|
69
|
+
recordId: z$1.ZodString;
|
|
70
|
+
fields: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
|
|
71
|
+
}, z$1.core.$strip>;
|
|
72
|
+
};
|
|
73
|
+
readonly search_records: {
|
|
74
|
+
readonly name: "search_records";
|
|
75
|
+
readonly kind: "read";
|
|
76
|
+
readonly input: z$1.ZodObject<{
|
|
77
|
+
objectId: z$1.ZodString;
|
|
78
|
+
_displayLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
79
|
+
query: z$1.ZodOptional<z$1.ZodString>;
|
|
80
|
+
limit: z$1.ZodOptional<z$1.ZodNumber>;
|
|
81
|
+
offset: z$1.ZodOptional<z$1.ZodNumber>;
|
|
82
|
+
fields: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
|
|
83
|
+
filters: z$1.ZodOptional<z$1.ZodObject<{
|
|
84
|
+
combinator: z$1.ZodDefault<z$1.ZodEnum<{
|
|
85
|
+
and: "and";
|
|
86
|
+
or: "or";
|
|
87
|
+
}>>;
|
|
88
|
+
rules: z$1.ZodArray<z$1.ZodObject<{
|
|
89
|
+
attribute: z$1.ZodString;
|
|
90
|
+
property: z$1.ZodOptional<z$1.ZodString>;
|
|
91
|
+
operator: z$1.ZodString;
|
|
92
|
+
value: z$1.ZodNullable<z$1.ZodUnknown>;
|
|
93
|
+
}, z$1.core.$strip>>;
|
|
94
|
+
}, z$1.core.$strip>>;
|
|
95
|
+
sorts: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{
|
|
96
|
+
attribute: z$1.ZodString;
|
|
97
|
+
direction: z$1.ZodEnum<{
|
|
98
|
+
asc: "asc";
|
|
99
|
+
desc: "desc";
|
|
100
|
+
}>;
|
|
101
|
+
}, z$1.core.$strip>>>;
|
|
102
|
+
}, z$1.core.$strip>;
|
|
103
|
+
};
|
|
104
|
+
readonly create_record: {
|
|
105
|
+
readonly name: "create_record";
|
|
106
|
+
readonly kind: "create";
|
|
107
|
+
readonly input: z$1.ZodObject<{
|
|
108
|
+
objectId: z$1.ZodString;
|
|
109
|
+
_displayLabel: z$1.ZodOptional<z$1.ZodString>;
|
|
110
|
+
data: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;
|
|
111
|
+
}, z$1.core.$strip>;
|
|
112
|
+
};
|
|
113
|
+
readonly update_record: {
|
|
114
|
+
readonly name: "update_record";
|
|
115
|
+
readonly kind: "update";
|
|
116
|
+
readonly input: z$1.ZodObject<{
|
|
117
|
+
recordId: z$1.ZodString;
|
|
118
|
+
data: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;
|
|
119
|
+
}, z$1.core.$strip>;
|
|
120
|
+
};
|
|
121
|
+
readonly delete_record: {
|
|
122
|
+
readonly name: "delete_record";
|
|
123
|
+
readonly kind: "delete";
|
|
124
|
+
readonly input: z$1.ZodObject<{
|
|
125
|
+
recordId: z$1.ZodString;
|
|
126
|
+
}, z$1.core.$strip>;
|
|
127
|
+
};
|
|
127
128
|
};
|
|
128
|
-
type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
129
|
+
export type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
129
130
|
/**
|
|
130
131
|
* A capability's argument type, inferred from the very schema the runtime
|
|
131
132
|
* validates against.
|
|
@@ -136,11 +137,10 @@ type RecordCapabilityName = keyof typeof RECORD_CAPABILITIES;
|
|
|
136
137
|
* arguments with the output side made the SDK demand a `combinator` the runtime
|
|
137
138
|
* would have filled in anyway.
|
|
138
139
|
*/
|
|
139
|
-
type CapabilityInput<N extends RecordCapabilityName> = z.input<(typeof RECORD_CAPABILITIES)[N]["input"]>;
|
|
140
|
+
export type CapabilityInput<N extends RecordCapabilityName> = z$1.input<(typeof RECORD_CAPABILITIES)[N]["input"]>;
|
|
140
141
|
/**
|
|
141
142
|
* The capability → kind projection, derived rather than restated. The reflexes
|
|
142
143
|
* module reads this instead of maintaining its own table (D26/D28).
|
|
143
144
|
*/
|
|
144
|
-
declare const RECORD_CAPABILITY_KINDS: Readonly<Record<RecordCapabilityName, CapabilityKind>>;
|
|
145
|
-
|
|
146
|
-
export { type CapabilityInput, type CapabilityKind, type FilterRuleInput, type FilterStateInput, OBJECT_ID_DESCRIPTION, RECORD_CAPABILITIES, RECORD_CAPABILITY_KINDS, type RecordCapabilityName, SANDBOX_FILE_DATA_HINT, filtersSchema, sortsSchema };
|
|
145
|
+
export declare const RECORD_CAPABILITY_KINDS: Readonly<Record<RecordCapabilityName, CapabilityKind>>;
|
|
146
|
+
//#endregion
|
package/dist/capabilities.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("zod");const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,r=e.z.object({combinator:e.z.enum([`and`,`or`]).default(`and`),rules:e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name on the object being searched`),property:e.z.string().optional().describe(`Optional. Only valid when 'attribute' is a relation / document / user attribute declared with .qualifyWith({...}). When set, the rule filters on the named EDGE property (not the linked record) and the operator must be valid for that property's type. See <filter_operators>.`),operator:e.z.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.z.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),i=e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name`),direction:e.z.enum([`asc`,`desc`])})),a=e.z.object({recordId:e.z.string().describe(`Record UUID`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to return`)}),o=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),query:e.z.string().optional().describe(`Full-text search query (omit to browse/list)`),limit:e.z.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.z.number().optional().describe(`Skip N records (default 0)`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to include in values`),filters:r.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:i.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),s=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Record data.${n}`)}),c=e.z.object({recordId:e.z.string().describe(`Record UUID`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Fields to update.${n}`)}),l=e.z.object({recordId:e.z.string().describe(`Record UUID`)}),u={get_record:{name:`get_record`,kind:`read`,input:a},search_records:{name:`search_records`,kind:`read`,input:o},create_record:{name:`create_record`,kind:`create`,input:s},update_record:{name:`update_record`,kind:`update`,input:c},delete_record:{name:`delete_record`,kind:`delete`,input:l}},d=Object.freeze(Object.fromEntries(Object.values(u).map(e=>[e.name,e.kind])));exports.OBJECT_ID_DESCRIPTION=t,exports.RECORD_CAPABILITIES=u,exports.RECORD_CAPABILITY_KINDS=d,exports.SANDBOX_FILE_DATA_HINT=n,exports.filtersSchema=r,exports.sortsSchema=i;
|
package/dist/capabilities.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
+
import{z as e}from"zod";const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,r=e.object({combinator:e.enum([`and`,`or`]).default(`and`),rules:e.array(e.object({attribute:e.string().describe(`Attribute name on the object being searched`),property:e.string().optional().describe(`Optional. Only valid when 'attribute' is a relation / document / user attribute declared with .qualifyWith({...}). When set, the rule filters on the named EDGE property (not the linked record) and the operator must be valid for that property's type. See <filter_operators>.`),operator:e.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),i=e.array(e.object({attribute:e.string().describe(`Attribute name`),direction:e.enum([`asc`,`desc`])})),a=e.object({recordId:e.string().describe(`Record UUID`),fields:e.array(e.string()).optional().describe(`Attribute names to return`)}),o=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),query:e.string().optional().describe(`Full-text search query (omit to browse/list)`),limit:e.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.number().optional().describe(`Skip N records (default 0)`),fields:e.array(e.string()).optional().describe(`Attribute names to include in values`),filters:r.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:i.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),s=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),data:e.record(e.string(),e.unknown()).describe(`Record data.${n}`)}),c=e.object({recordId:e.string().describe(`Record UUID`),data:e.record(e.string(),e.unknown()).describe(`Fields to update.${n}`)}),l=e.object({recordId:e.string().describe(`Record UUID`)}),u={get_record:{name:`get_record`,kind:`read`,input:a},search_records:{name:`search_records`,kind:`read`,input:o},create_record:{name:`create_record`,kind:`create`,input:s},update_record:{name:`update_record`,kind:`update`,input:c},delete_record:{name:`delete_record`,kind:`delete`,input:l}},d=Object.freeze(Object.fromEntries(Object.values(u).map(e=>[e.name,e.kind])));export{t as OBJECT_ID_DESCRIPTION,u as RECORD_CAPABILITIES,d as RECORD_CAPABILITY_KINDS,n as SANDBOX_FILE_DATA_HINT,r as filtersSchema,i as sortsSchema};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
import { et as CheckboxAttribute } from "./exceptions-DGCzCc9t.js";
|
|
3
|
+
import { r as ValidationMessages } from "./index-B7HmBsUS.js";
|
|
4
|
+
import { z as z$1 } from "zod";
|
|
5
|
+
//#region src/validation/primitives/checkbox.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Create a Zod schema for a checkbox attribute
|
|
8
|
+
*/
|
|
9
|
+
declare function createCheckboxValidator(_attr: CheckboxAttribute, _messages?: ValidationMessages): z$1.ZodBoolean;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createCheckboxValidator as t };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
import { et as CheckboxAttribute } from "./exceptions-DGCzCc9t.mjs";
|
|
3
|
+
import { r as ValidationMessages } from "./index-XtmC-C7J.mjs";
|
|
4
|
+
import { z as z$1 } from "zod";
|
|
5
|
+
//#region src/validation/primitives/checkbox.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Create a Zod schema for a checkbox attribute
|
|
8
|
+
*/
|
|
9
|
+
declare function createCheckboxValidator(_attr: CheckboxAttribute, _messages?: ValidationMessages): z$1.ZodBoolean;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createCheckboxValidator as t };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,__copyProps=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},__toESM=(n,r,o)=>(o=n==null?{}:e(i(n)),__copyProps(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));const o=require("./exceptions.js");let s=require("@stndrds/constants"),c=require("zod");c=__toESM(c);const l=[`skill`,`memory`,`drives`,`artifact`,`meeting`];function isNativeObjectName(e){return l.includes(e)}const u=[`workspace`,`private`],d=[`all`,...u];function parseResourceVisibility(e){if(typeof e==`string`&&u.includes(e))return e;throw new o.ValidationError(`visibility must be one of: ${u.join(`, `)} (received: ${String(e)})`,[])}const f=[`id`,`createdAt`,`updatedAt`,`createdBy`,`lastUpdatedBy`,`visibility`,`ownedBy`],p=[...f,`objectId`,`label`,`embeddingText`,`values`,`metadata`,`deletedAt`,`deletedBy`,`schemaVersion`,`owned_by`],ee=l,m=new Set(s.ICONS),h=/^[a-zA-Z_][a-zA-Z0-9_]*$/,te=/^[a-z][a-z0-9-]*$/,g=c.default.string().min(1,`Object name cannot be empty`).max(63,`Object name is too long (max 63 characters)`).regex(/^[a-z][a-z0-9-]*$/,{message:`Invalid object name format.
|
|
3
|
+
Name must be in kebab-case (slug format):
|
|
4
|
+
✅ Valid: 'products', 'user-profiles', 'order-items'
|
|
5
|
+
❌ Invalid: 'Products', 'userProfiles', 'user_profiles'`});function validateObjectName(e){try{g.parse(e)}catch(e){throw e instanceof c.default.ZodError?new o.SchemaError(e.issues[0].message,o.SchemaErrorCode.INVALID_OBJECT_NAME):e}}function validateViewName(e){if(!e||e.length===0)throw new o.ValidationError(`View name cannot be empty`,[{path:[`name`],message:`View name cannot be empty`}]);if(e.length>63)throw new o.ValidationError(`View name is too long`,[{path:[`name`],message:`View name is too long (max 63 characters)`}]);if(!te.test(e))throw new o.ValidationError(`Invalid view name format`,[{path:[`name`],message:`View name must be in kebab-case (e.g., 'detail', 'list-view')`}])}function assertUniqueBy(e,t,n){let r=new Set;for(let i of e){let e=t(i);if(r.has(e))throw n(e);r.add(e)}}const _=c.default.string().min(1,`Attribute name cannot be empty`).max(63,`Attribute name is too long (max 63 characters)`).regex(h,{message:`Invalid attribute name format.
|
|
6
|
+
Name must be a valid variable identifier:
|
|
7
|
+
✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
|
|
8
|
+
❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`}).refine(e=>!p.includes(e),{message:`This is a reserved attribute name. Reserved names: ${p.join(`, `)}`});function validateAttributeName(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute name cannot be empty`);if(e.length>63)throw Error(`[AttributeBuilder] Attribute name is too long (max 63 characters)`);if(!h.test(e))throw Error(`[AttributeBuilder] Invalid attribute name format.
|
|
9
|
+
Name must be a valid variable identifier:
|
|
10
|
+
✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
|
|
11
|
+
❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`);if(p.includes(e))throw Error(`[AttributeBuilder] "${e}" is a reserved name and cannot be used as an attribute name.\nReserved names: ${p.join(`, `)}`)}function validateLabel(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute label cannot be empty`);if(e.length>128)throw Error(`[AttributeBuilder] Attribute label is too long (max 128 characters)`)}function validateIconName(e,t){if(!m.has(e))throw Error(`[AttributeBuilder] Invalid icon "${e}" in ${t}.\nIcon must be one of the predefined icons from @stndrds/constants.`)}function validateOptions(e,t){let n=new Set;for(let r of t){if(!r.value?.trim())throw Error(`[AttributeBuilder] Option in "${e}" has an empty or missing value.`);if(!r.label?.trim())throw Error(`[AttributeBuilder] Option "${r.value}" in "${e}" has an empty or missing label.`);if(n.has(r.value))throw Error(`[AttributeBuilder] Duplicate option value "${r.value}" in "${e}".`);n.add(r.value)}for(let n of t){if(n.inverse===void 0)continue;let r=t.find(e=>e.value===n.inverse);if(!r)throw Error(`[AttributeBuilder] Option "${n.value}" in "${e}" has inverse "${n.inverse}" which does not match any option value.`);if(r.inverse!==n.value)throw Error(`[AttributeBuilder] Inverse mismatch in "${e}": "${n.value}" points to "${n.inverse}", but "${n.inverse}" points to "${r.inverse??`(none)`}". Inverse pairs must be symmetric.`)}}const v={attributesPerObject:300,tabsPerView:24,groupsPerFormTab:12,fieldsPerGroup:60,fieldsPerFormTab:150,columnsPerTab:50,optionsPerAttribute:200,sidePanelAttributes:100,sidePanelPanes:20,filterRulesPerTab:50,sortsPerTab:20,emailAttributesPerTab:30,objectsPerPlan:20,mutationsPerPlan:500,planBytes:524288,historyDefault:20,historyMax:50,iconQueries:5,iconResults:20},ne=Object.keys(s.COLORS),re=new Set(s.ICONS),y=c.z.enum(ne).describe(`A color id from the palette`),b=c.z.string().superRefine((e,t)=>{re.has(e)||t.addIssue({code:`custom`,message:`Invalid icon name`})}).transform(e=>e);var ComputedFormulaParseError=class extends Error{constructor(e){super(e),this.name=`ComputedFormulaParseError`}};function parseComputedFormula(e){let t=new Parser(tokenize(e)),n=t.parseExpression();return t.expectEnd(),n}function tokenize(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
|
|
12
|
+
`||r===`\r`){n+=1;continue}if(r===`"`||r===`'`){let i=scanString(e,n,r);t.push({kind:`string`,value:i.value,position:n}),n=i.nextIndex;continue}if(isDigit(r)){let r=scanNumber(e,n);t.push({kind:`number`,value:r.value,position:n}),n=r.nextIndex;continue}if(isIdentifierStart(r)){let r=scanIdentifier(e,n),i=r.value.toLowerCase();i===`true`?t.push({kind:`boolean`,value:!0,position:n}):i===`false`?t.push({kind:`boolean`,value:!1,position:n}):i===`null`?t.push({kind:`null`,position:n}):t.push({kind:`identifier`,value:r.value,position:n}),n=r.nextIndex;continue}let i=e.slice(n,n+2);if(i===`>=`||i===`<=`||i===`==`||i===`!=`){t.push({kind:`operator`,value:i,position:n}),n+=2;continue}if(r===`>`||r===`<`||r===`+`||r===`-`||r===`*`||r===`/`){t.push({kind:`operator`,value:r,position:n}),n+=1;continue}if(r===`(`||r===`)`||r===`,`||r===`.`){t.push({kind:`punctuation`,value:r,position:n}),n+=1;continue}throw new ComputedFormulaParseError(`Unexpected character "${r}" at position ${n}`)}return t}function scanString(e,t,n=`"`){let r=``,i=t+1;for(;i<e.length;){let t=e[i];if(t===n)return{value:r,nextIndex:i+1};if(t===`\\`){let t=e[i+1];if(t===void 0)throw new ComputedFormulaParseError(`Unterminated string literal at position ${i}`);r+=decodeEscape(t,i),i+=2;continue}r+=t,i+=1}throw new ComputedFormulaParseError(`Unterminated string literal at position ${t}`)}function decodeEscape(e,t){switch(e){case`"`:case`\\`:return e;case`n`:return`
|
|
13
|
+
`;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const x=c.z.object({placeholder:c.z.string().optional(),description:c.z.string().optional(),defaultValue:c.z.unknown().optional(),icon:c.z.string().optional(),order:c.z.number().int().optional(),hidden:c.z.boolean().optional(),archived:c.z.boolean().optional(),deprecated:c.z.boolean().optional(),metadata:c.z.record(c.z.string(),c.z.unknown()).optional()}),S=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const C=c.z.object({value:c.z.string().min(1).describe(`Stored value`),label:c.z.string().min(1).describe(`Label people see`),description:c.z.string().describe(`Extra context`).optional(),inverse:c.z.string().describe(`Paired option's value (symmetric)`).optional(),archived:c.z.boolean().describe(`Hides without deleting`).optional()}),w=c.z.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),T=C.extend({color:y}).strict(),E=T,D=C.extend({color:y,group:w}).strict(),O=C.extend({color:c.z.string().optional().describe(`A color id`),group:w.optional()}).strict(),k=c.z.array(O).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return c.z.array(e).min(1).max(v.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const A=writeOptionsArraySchema(T),j=writeOptionsArraySchema(E),M=writeOptionsArraySchema(D),ie=c.z.object({object:c.z.string().min(1).describe(`Target object`),displayTemplate:c.z.string().optional().describe(`Linked record label template`),filter:c.z.record(c.z.string(),c.z.unknown()).optional().describe(`Restricts linkable records`)}),ae=c.z.object({object:c.z.string().min(1).describe(`Other side's object`),attribute:c.z.string().min(1).describe(`Other side's attribute`),cardinality:c.z.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:c.z.string().min(1).optional().describe(`Other side's label`),storageOwner:c.z.boolean().optional().describe(`Owns the join storage`)}),N=c.z.object({objectName:c.z.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:c.z.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:c.z.string().optional().describe(`Id of the source attribute, resolved by the server`)}),P=x.extend({multiline:c.z.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:c.z.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:c.z.number().int().min(1).describe(`Maximum character count`).optional(),pattern:c.z.string().describe(`Regular expression the value must match`).optional(),format:c.z.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=x,F=x.extend({renderAs:c.z.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:c.z.number().describe(`Minimum allowed value`).optional(),max:c.z.number().describe(`Maximum allowed value`).optional(),unit:c.z.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:c.z.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),I=x,L=x.extend({dateFormat:c.z.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:c.z.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:c.z.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:c.z.boolean().describe(`Also captures a time of day`).optional(),endDate:c.z.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:c.z.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),R=x.extend({defaultCountryCode:c.z.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),z=x.extend({defaultCurrency:c.z.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:c.z.array(c.z.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:c.z.boolean().describe(`Whether a negative amount is accepted`).optional()}),B=x.extend({options:k.describe(`The workflow statuses, in order`)}),V=x.extend({granularity:c.z.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:c.z.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:c.z.array(c.z.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),H=x.extend({options:k.describe(`Options`),renderAs:c.z.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),U=x.extend({options:k.describe(`Options`),renderAs:c.z.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),W=x.extend({types:c.z.array(c.z.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:c.z.boolean().optional().describe(`Whether more than one actor can be picked`)}),G={name:_.describe(`Property API name`),label:c.z.string().min(1).describe(`Label people see`),required:c.z.boolean().describe(`Required on every edge`).optional()},K={id:c.z.string().optional(),objectId:c.z.string().optional(),system:c.z.boolean().optional(),unique:c.z.boolean().optional()},se=Object.fromEntries(S.map(e=>[e,!0])),q=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],J=[...q,`select`,`multiselect`,`status`],Y={text:P,number:F,checkbox:I,date:L,phone:R,currency:z,location:V,select:H,multiselect:U,status:B},ce={...Y,select:H.extend({options:A.describe(`Options`)}),multiselect:U.extend({options:j.describe(`Options`)}),status:B.extend({options:M.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>ce[e].omit(se).shape,storedPropertyMember=e=>c.z.object({...G,...K,type:c.z.literal(e).describe(`Property type`),...Y[e].shape}).strip(),X=c.z.discriminatedUnion(`type`,J.map(storedPropertyMember)),Z=c.z.object({definitions:c.z.array(X).min(1).max(v.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),le=refuseForeignKeys(Object.fromEntries(J.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(G),`type`]);function refuseForeignPropertyKeys(e,t){le(e.type,e,t)}const ue=q.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>c.z.object({...G,type:e.length===1?c.z.literal(e[0]).describe(`Property type`):c.z.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=c.z.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),c.z.object({...G,type:c.z.enum(q).describe(`Property type`),...ue}).strict().superRefine(refuseForeignPropertyKeys)]),de=c.z.object({definitions:c.z.array(Q).min(1).max(v.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),$={text:P,richtext:oe,number:F,checkbox:I,date:L,phone:R,currency:z,status:B,location:V,select:H,multiselect:U,user:W,relation:x.extend({targets:c.z.array(ie).min(1).describe(`Target object(s)`),cardinality:c.z.enum([`one`,`many`]).describe(`one or many`),maxItems:c.z.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:Z.optional()}),formula:x.extend({expression:c.z.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:c.z.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:c.z.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:c.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),allowRelations:c.z.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:N.optional().describe(`Mirrors an option set`)}),rollup:x.extend({relationAttribute:c.z.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:c.z.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:c.z.string().min(1).describe(`API name of the attribute aggregated on the relation's target object`),function:c.z.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:c.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:c.z.string().optional().describe(`Server-set`),targetAttributeOptions:c.z.array(O).optional().describe(`Server-set`),targetCurrencyCode:c.z.string().length(3).optional().describe(`Server-set`),optionsSource:N.optional().describe(`Mirrors an option set`)}),document:x.extend({properties:Z.optional(),accepts:c.z.array(c.z.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:c.z.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new o.ValidationError(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){return getAttributeConfigSchema(e).strip().parse(t)}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:b.optional()});switch(e){case`select`:return t.extend({options:A.describe(`Options`)});case`multiselect`:return t.extend({options:j.describe(`Options`)});case`status`:return t.extend({options:M.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return o.ValidationError.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=b.optional().safeParse(e.icon);if(!t.success)throw o.ValidationError.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return validateOptions}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return validateIconName}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return validateAttributeName}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return parseResourceVisibility}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return validateLabel}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return assertUniqueBy}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return getAttributeConfigWriteSchema}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return parseAttributeConfigForCreate}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return getAttributeConfigSchema}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return validateViewName}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return validateObjectName}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return parseAttributeConfigForUpdate}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return refuseForeignKeys}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return parseAttributeConfig}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ComputedFormulaParseError}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return parseComputedFormula}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isNativeObjectName}});
|