@bsm-form/schema 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,163 @@
1
+ // src/nodes/field.ts
2
+ var FIELD_TYPES_WITH_CHANGE_EVENT = [
3
+ "select",
4
+ "radio",
5
+ "segment-button",
6
+ "checkbox",
7
+ "switch"
8
+ ];
9
+ var FIELD_TYPES_WITH_COMMIT_EVENT = [
10
+ "slider"
11
+ ];
12
+ function fieldAllowsChangeEvent(type) {
13
+ return FIELD_TYPES_WITH_CHANGE_EVENT.includes(type);
14
+ }
15
+ function fieldAllowsCommitEvent(type) {
16
+ return FIELD_TYPES_WITH_COMMIT_EVENT.includes(type);
17
+ }
18
+ function fieldAllowsBlurEvent(type) {
19
+ return !fieldAllowsChangeEvent(type) && !fieldAllowsCommitEvent(type);
20
+ }
21
+ function fieldAllowsEvent(type, event) {
22
+ if (event === "blur") {
23
+ return fieldAllowsBlurEvent(type);
24
+ }
25
+ if (event === "change") {
26
+ return fieldAllowsChangeEvent(type);
27
+ }
28
+ return event === "commit" && fieldAllowsCommitEvent(type);
29
+ }
30
+
31
+ // src/nodes/layout.ts
32
+ var REPEAT_MAX_COUNT = 50;
33
+
34
+ // src/conditions/condition.ts
35
+ function isValuelessConditionOperator(operator) {
36
+ return operator === "exists" || operator === "empty" || operator === "notEmpty";
37
+ }
38
+ function isInvokeCondition(condition) {
39
+ return typeof condition === "object" && condition !== null && "type" in condition && condition.type === "invoke";
40
+ }
41
+ function isFieldCondition(condition) {
42
+ return !isInvokeCondition(condition);
43
+ }
44
+
45
+ // src/conditions/state-refs.ts
46
+ var STATE_CONDITION_FIELDS = [
47
+ "$state.isLoading",
48
+ "$state.isValid",
49
+ "$state.initializationStatus"
50
+ ];
51
+ var STATE_IS_LOADING_VALUES = [true, false];
52
+ var STATE_BOOLEAN_VALUES = [true, false];
53
+ var STATE_INITIALIZATION_STATUS_VALUES = [
54
+ "idle",
55
+ "loading",
56
+ "ready",
57
+ "failed"
58
+ ];
59
+ var LOADING_PROP_BINDINGS = ["$state.isLoading"];
60
+ var PENDING_ACTION_CONDITION_PREFIX = "$pending.action.";
61
+ var PENDING_RESOURCE_CONDITION_PREFIX = "$pending.resource.";
62
+ var PENDING_BOOLEAN_VALUES = [true, false];
63
+ function isStateConditionField(field) {
64
+ return STATE_CONDITION_FIELDS.includes(field);
65
+ }
66
+ function isBooleanStateConditionField(field) {
67
+ return field === "$state.isLoading" || field === "$state.isValid";
68
+ }
69
+ function isPendingActionConditionField(field) {
70
+ return field.startsWith(PENDING_ACTION_CONDITION_PREFIX) && field.length > PENDING_ACTION_CONDITION_PREFIX.length;
71
+ }
72
+ function isPendingResourceConditionField(field) {
73
+ return field.startsWith(PENDING_RESOURCE_CONDITION_PREFIX) && field.length > PENDING_RESOURCE_CONDITION_PREFIX.length;
74
+ }
75
+ function isPendingConditionField(field) {
76
+ return isPendingActionConditionField(field) || isPendingResourceConditionField(field);
77
+ }
78
+ function isReservedConditionField(field) {
79
+ return isStateConditionField(field) || isPendingConditionField(field);
80
+ }
81
+ function pendingActionIdFromField(field) {
82
+ if (!isPendingActionConditionField(field)) {
83
+ return void 0;
84
+ }
85
+ return field.slice(PENDING_ACTION_CONDITION_PREFIX.length);
86
+ }
87
+ function pendingResourcePathFromField(field) {
88
+ if (!isPendingResourceConditionField(field)) {
89
+ return void 0;
90
+ }
91
+ return field.slice(PENDING_RESOURCE_CONDITION_PREFIX.length);
92
+ }
93
+ function pendingActionConditionField(actionId) {
94
+ return `${PENDING_ACTION_CONDITION_PREFIX}${actionId}`;
95
+ }
96
+ function pendingResourceConditionField(relativePath) {
97
+ return `${PENDING_RESOURCE_CONDITION_PREFIX}${relativePath}`;
98
+ }
99
+ function isLoadingPropBinding(value) {
100
+ if (typeof value !== "string") {
101
+ return false;
102
+ }
103
+ if (LOADING_PROP_BINDINGS.includes(value)) {
104
+ return true;
105
+ }
106
+ return isPendingConditionField(value);
107
+ }
108
+ function defaultStateConditionValue(field) {
109
+ if (field === "$state.isLoading") {
110
+ return true;
111
+ }
112
+ if (field === "$state.isValid") {
113
+ return false;
114
+ }
115
+ return "ready";
116
+ }
117
+ function defaultPendingConditionValue() {
118
+ return true;
119
+ }
120
+ function isValidStateConditionValue(field, value) {
121
+ if (isBooleanStateConditionField(field)) {
122
+ return value === true || value === false;
123
+ }
124
+ return typeof value === "string" && STATE_INITIALIZATION_STATUS_VALUES.includes(value);
125
+ }
126
+ function isValidPendingConditionValue(value) {
127
+ return value === true || value === false;
128
+ }
129
+ export {
130
+ FIELD_TYPES_WITH_CHANGE_EVENT,
131
+ FIELD_TYPES_WITH_COMMIT_EVENT,
132
+ LOADING_PROP_BINDINGS,
133
+ PENDING_ACTION_CONDITION_PREFIX,
134
+ PENDING_BOOLEAN_VALUES,
135
+ PENDING_RESOURCE_CONDITION_PREFIX,
136
+ REPEAT_MAX_COUNT,
137
+ STATE_BOOLEAN_VALUES,
138
+ STATE_CONDITION_FIELDS,
139
+ STATE_INITIALIZATION_STATUS_VALUES,
140
+ STATE_IS_LOADING_VALUES,
141
+ defaultPendingConditionValue,
142
+ defaultStateConditionValue,
143
+ fieldAllowsBlurEvent,
144
+ fieldAllowsChangeEvent,
145
+ fieldAllowsCommitEvent,
146
+ fieldAllowsEvent,
147
+ isBooleanStateConditionField,
148
+ isFieldCondition,
149
+ isInvokeCondition,
150
+ isLoadingPropBinding,
151
+ isPendingActionConditionField,
152
+ isPendingConditionField,
153
+ isPendingResourceConditionField,
154
+ isReservedConditionField,
155
+ isStateConditionField,
156
+ isValidPendingConditionValue,
157
+ isValidStateConditionValue,
158
+ isValuelessConditionOperator,
159
+ pendingActionConditionField,
160
+ pendingActionIdFromField,
161
+ pendingResourceConditionField,
162
+ pendingResourcePathFromField
163
+ };
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@bsm-form/schema",
3
+ "version": "0.39.0",
4
+ "description": "Serializable FormSchema contracts for the BSM form platform",
5
+ "type": "module",
6
+ "license": "UNLICENSED",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.cjs"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "sideEffects": false,
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "scripts": {
25
+ "build": "tsup src/index.ts --dts --format esm,cjs",
26
+ "typecheck": "tsc --noEmit"
27
+ }
28
+ }