@reverso/core 0.1.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/README.md +45 -0
- package/dist/config/defaults.d.ts +35 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +104 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/define-config.d.ts +40 -0
- package/dist/config/define-config.d.ts.map +1 -0
- package/dist/config/define-config.js +44 -0
- package/dist/config/define-config.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +41 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +99 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/validation.d.ts +325 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +185 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/constants.d.ts +84 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +120 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/types/config.d.ts +285 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/content.d.ts +288 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +6 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/fields.d.ts +187 -0
- package/dist/types/fields.d.ts.map +1 -0
- package/dist/types/fields.js +6 -0
- package/dist/types/fields.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/schema.d.ts +193 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +6 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/naming.d.ts +122 -0
- package/dist/utils/naming.d.ts.map +1 -0
- package/dist/utils/naming.js +302 -0
- package/dist/utils/naming.js.map +1 -0
- package/dist/utils/path.d.ts +79 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +219 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/validation.d.ts +256 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +245 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation schemas and utilities using Zod.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { PATH_SEPARATOR, REPEATER_PLACEHOLDER, VALID_ATTRIBUTES } from '../constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* All valid field types.
|
|
8
|
+
*/
|
|
9
|
+
export const FIELD_TYPES = [
|
|
10
|
+
'text',
|
|
11
|
+
'textarea',
|
|
12
|
+
'number',
|
|
13
|
+
'range',
|
|
14
|
+
'email',
|
|
15
|
+
'url',
|
|
16
|
+
'phone',
|
|
17
|
+
'wysiwyg',
|
|
18
|
+
'markdown',
|
|
19
|
+
'code',
|
|
20
|
+
'blocks',
|
|
21
|
+
'select',
|
|
22
|
+
'multiselect',
|
|
23
|
+
'checkbox',
|
|
24
|
+
'checkboxgroup',
|
|
25
|
+
'radio',
|
|
26
|
+
'boolean',
|
|
27
|
+
'image',
|
|
28
|
+
'file',
|
|
29
|
+
'gallery',
|
|
30
|
+
'video',
|
|
31
|
+
'audio',
|
|
32
|
+
'oembed',
|
|
33
|
+
'date',
|
|
34
|
+
'datetime',
|
|
35
|
+
'time',
|
|
36
|
+
'relation',
|
|
37
|
+
'taxonomy',
|
|
38
|
+
'link',
|
|
39
|
+
'pagelink',
|
|
40
|
+
'user',
|
|
41
|
+
'color',
|
|
42
|
+
'map',
|
|
43
|
+
'repeater',
|
|
44
|
+
'group',
|
|
45
|
+
'flexible',
|
|
46
|
+
'message',
|
|
47
|
+
'tab',
|
|
48
|
+
'accordion',
|
|
49
|
+
'buttongroup',
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Zod schema for field type validation.
|
|
53
|
+
*/
|
|
54
|
+
export const fieldTypeSchema = z.enum(FIELD_TYPES);
|
|
55
|
+
/**
|
|
56
|
+
* Zod schema for field path validation.
|
|
57
|
+
*/
|
|
58
|
+
export const fieldPathSchema = z.string().refine((path) => {
|
|
59
|
+
const parts = path.split(PATH_SEPARATOR);
|
|
60
|
+
if (parts.length < 3)
|
|
61
|
+
return false;
|
|
62
|
+
// All parts must be non-empty (except $ for repeaters)
|
|
63
|
+
return parts.every((part) => part === REPEATER_PLACEHOLDER || part.length > 0);
|
|
64
|
+
}, {
|
|
65
|
+
message: 'Path must have at least 3 parts (page.section.field) and no empty parts',
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Zod schema for field attributes validation.
|
|
69
|
+
*/
|
|
70
|
+
export const fieldAttributesSchema = z.object({
|
|
71
|
+
type: fieldTypeSchema.optional(),
|
|
72
|
+
label: z.string().optional(),
|
|
73
|
+
placeholder: z.string().optional(),
|
|
74
|
+
required: z.coerce.boolean().optional(),
|
|
75
|
+
validation: z.string().optional(),
|
|
76
|
+
options: z.string().optional(),
|
|
77
|
+
condition: z.string().optional(),
|
|
78
|
+
default: z.string().optional(),
|
|
79
|
+
help: z.string().optional(),
|
|
80
|
+
min: z.coerce.number().optional(),
|
|
81
|
+
max: z.coerce.number().optional(),
|
|
82
|
+
step: z.coerce.number().optional(),
|
|
83
|
+
accept: z.string().optional(),
|
|
84
|
+
multiple: z.coerce.boolean().optional(),
|
|
85
|
+
rows: z.coerce.number().optional(),
|
|
86
|
+
width: z.coerce.number().min(1).max(12).optional(),
|
|
87
|
+
readonly: z.coerce.boolean().optional(),
|
|
88
|
+
hidden: z.coerce.boolean().optional(),
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Zod schema for a complete field schema.
|
|
92
|
+
*/
|
|
93
|
+
export const fieldSchema = fieldAttributesSchema.extend({
|
|
94
|
+
path: fieldPathSchema,
|
|
95
|
+
type: fieldTypeSchema,
|
|
96
|
+
file: z.string(),
|
|
97
|
+
line: z.number().positive(),
|
|
98
|
+
column: z.number().nonnegative(),
|
|
99
|
+
element: z.string().optional(),
|
|
100
|
+
defaultContent: z.string().optional(),
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Validate a field type string.
|
|
104
|
+
*/
|
|
105
|
+
export function isValidFieldType(type) {
|
|
106
|
+
return FIELD_TYPES.includes(type);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Validate a field path string.
|
|
110
|
+
*/
|
|
111
|
+
export function isValidFieldPath(path) {
|
|
112
|
+
return fieldPathSchema.safeParse(path).success;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Validate field attributes.
|
|
116
|
+
*/
|
|
117
|
+
export function validateFieldAttributes(attrs) {
|
|
118
|
+
const result = fieldAttributesSchema.safeParse(attrs);
|
|
119
|
+
if (result.success) {
|
|
120
|
+
return { success: true, data: result.data };
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
errors: result.error.issues.map((e) => `${e.path.join('.')}: ${e.message}`),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Validate a complete field schema.
|
|
129
|
+
*/
|
|
130
|
+
export function validateFieldSchema(schema) {
|
|
131
|
+
const result = fieldSchema.safeParse(schema);
|
|
132
|
+
if (result.success) {
|
|
133
|
+
return { success: true, data: result.data };
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
success: false,
|
|
137
|
+
errors: result.error.issues.map((e) => `${e.path.join('.')}: ${e.message}`),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if an attribute name is a valid data-reverso-* attribute.
|
|
142
|
+
*/
|
|
143
|
+
export function isValidAttribute(name) {
|
|
144
|
+
return VALID_ATTRIBUTES.includes(name);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Extract the attribute name from a data-reverso-* attribute.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* extractAttributeName('data-reverso-type') // 'type'
|
|
152
|
+
* extractAttributeName('data-reverso') // null
|
|
153
|
+
* extractAttributeName('data-other') // null
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export function extractAttributeName(attr) {
|
|
157
|
+
if (attr === 'data-reverso') {
|
|
158
|
+
return null; // This is the path attribute, not a named attribute
|
|
159
|
+
}
|
|
160
|
+
if (attr.startsWith('data-reverso-')) {
|
|
161
|
+
return attr.slice('data-reverso-'.length);
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Parse options string into array of option objects.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```ts
|
|
170
|
+
* parseOptions('red,green,blue')
|
|
171
|
+
* // [{ label: 'Red', value: 'red' }, { label: 'Green', value: 'green' }, { label: 'Blue', value: 'blue' }]
|
|
172
|
+
*
|
|
173
|
+
* parseOptions('[{"label":"Red","value":"#f00"}]')
|
|
174
|
+
* // [{ label: 'Red', value: '#f00' }]
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export function parseOptions(optionsStr) {
|
|
178
|
+
// Handle empty/whitespace-only strings
|
|
179
|
+
const trimmed = optionsStr.trim();
|
|
180
|
+
if (!trimmed) {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
// Try JSON first
|
|
184
|
+
if (trimmed.startsWith('[')) {
|
|
185
|
+
try {
|
|
186
|
+
const parsed = JSON.parse(trimmed);
|
|
187
|
+
return parsed
|
|
188
|
+
.filter((opt) => opt != null) // Filter out null/undefined
|
|
189
|
+
.map((opt) => {
|
|
190
|
+
if (typeof opt === 'string') {
|
|
191
|
+
const value = opt.trim();
|
|
192
|
+
return { label: formatOptionLabel(value), value };
|
|
193
|
+
}
|
|
194
|
+
if (typeof opt === 'object' && opt !== null && 'value' in opt) {
|
|
195
|
+
const o = opt;
|
|
196
|
+
const value = String(o.value ?? '').trim();
|
|
197
|
+
const label = typeof o.label === 'string' && o.label.trim()
|
|
198
|
+
? o.label.trim()
|
|
199
|
+
: formatOptionLabel(value);
|
|
200
|
+
return { label, value };
|
|
201
|
+
}
|
|
202
|
+
// For numbers and other primitives
|
|
203
|
+
const value = String(opt).trim();
|
|
204
|
+
return { label: formatOptionLabel(value), value };
|
|
205
|
+
})
|
|
206
|
+
.filter((opt) => opt.value !== ''); // Filter out empty values
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// Fall through to comma-separated
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Comma-separated values
|
|
213
|
+
return trimmed
|
|
214
|
+
.split(',')
|
|
215
|
+
.map((opt) => opt.trim())
|
|
216
|
+
.filter((opt) => opt !== '') // Filter out empty values
|
|
217
|
+
.map((value) => ({
|
|
218
|
+
label: formatOptionLabel(value),
|
|
219
|
+
value,
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Format an option value as a label.
|
|
224
|
+
*/
|
|
225
|
+
function formatOptionLabel(value) {
|
|
226
|
+
return value.replace(/[_-]/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase());
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Parse a condition string (basic format: field=value or field!=value).
|
|
230
|
+
*/
|
|
231
|
+
export function parseCondition(conditionStr) {
|
|
232
|
+
const operators = ['!=', '>=', '<=', '=', '>', '<'];
|
|
233
|
+
for (const op of operators) {
|
|
234
|
+
const index = conditionStr.indexOf(op);
|
|
235
|
+
if (index !== -1) {
|
|
236
|
+
return {
|
|
237
|
+
field: conditionStr.slice(0, index).trim(),
|
|
238
|
+
operator: op,
|
|
239
|
+
value: conditionStr.slice(index + op.length).trim(),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reverso/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core types, utilities, and configuration system for Reverso CMS",
|
|
5
|
+
"homepage": "https://reverso.dev/docs/packages/core",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/hogrid/reverso/issues"
|
|
8
|
+
},
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=20.0.0"
|
|
11
|
+
},
|
|
12
|
+
"type": "module",
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc -p tsconfig.build.json",
|
|
27
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
28
|
+
"typecheck": "tsc --noEmit",
|
|
29
|
+
"lint": "biome check src/",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:watch": "vitest",
|
|
32
|
+
"clean": "rm -rf dist .turbo"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"zod": "^4.3.6"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^22.10.7",
|
|
39
|
+
"typescript": "^5.7.3",
|
|
40
|
+
"vitest": "^2.1.8"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/hogrid/reverso.git",
|
|
48
|
+
"directory": "packages/core"
|
|
49
|
+
},
|
|
50
|
+
"keywords": [
|
|
51
|
+
"reverso",
|
|
52
|
+
"cms",
|
|
53
|
+
"core",
|
|
54
|
+
"types"
|
|
55
|
+
],
|
|
56
|
+
"author": "Emerson Nunes <emerson@hogrid.com>",
|
|
57
|
+
"license": "MIT"
|
|
58
|
+
}
|