@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.
Files changed (66) hide show
  1. package/README.md +45 -0
  2. package/dist/config/defaults.d.ts +35 -0
  3. package/dist/config/defaults.d.ts.map +1 -0
  4. package/dist/config/defaults.js +104 -0
  5. package/dist/config/defaults.js.map +1 -0
  6. package/dist/config/define-config.d.ts +40 -0
  7. package/dist/config/define-config.d.ts.map +1 -0
  8. package/dist/config/define-config.js +44 -0
  9. package/dist/config/define-config.js.map +1 -0
  10. package/dist/config/index.d.ts +8 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +8 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/loader.d.ts +41 -0
  15. package/dist/config/loader.d.ts.map +1 -0
  16. package/dist/config/loader.js +99 -0
  17. package/dist/config/loader.js.map +1 -0
  18. package/dist/config/validation.d.ts +325 -0
  19. package/dist/config/validation.d.ts.map +1 -0
  20. package/dist/config/validation.js +185 -0
  21. package/dist/config/validation.js.map +1 -0
  22. package/dist/constants.d.ts +84 -0
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/constants.js +120 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/index.d.ts +29 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +37 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/types/config.d.ts +285 -0
  31. package/dist/types/config.d.ts.map +1 -0
  32. package/dist/types/config.js +5 -0
  33. package/dist/types/config.js.map +1 -0
  34. package/dist/types/content.d.ts +288 -0
  35. package/dist/types/content.d.ts.map +1 -0
  36. package/dist/types/content.js +6 -0
  37. package/dist/types/content.js.map +1 -0
  38. package/dist/types/fields.d.ts +187 -0
  39. package/dist/types/fields.d.ts.map +1 -0
  40. package/dist/types/fields.js +6 -0
  41. package/dist/types/fields.js.map +1 -0
  42. package/dist/types/index.d.ts +8 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +5 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/types/schema.d.ts +193 -0
  47. package/dist/types/schema.d.ts.map +1 -0
  48. package/dist/types/schema.js +6 -0
  49. package/dist/types/schema.js.map +1 -0
  50. package/dist/utils/index.d.ts +7 -0
  51. package/dist/utils/index.d.ts.map +1 -0
  52. package/dist/utils/index.js +10 -0
  53. package/dist/utils/index.js.map +1 -0
  54. package/dist/utils/naming.d.ts +122 -0
  55. package/dist/utils/naming.d.ts.map +1 -0
  56. package/dist/utils/naming.js +302 -0
  57. package/dist/utils/naming.js.map +1 -0
  58. package/dist/utils/path.d.ts +79 -0
  59. package/dist/utils/path.d.ts.map +1 -0
  60. package/dist/utils/path.js +219 -0
  61. package/dist/utils/path.js.map +1 -0
  62. package/dist/utils/validation.d.ts +256 -0
  63. package/dist/utils/validation.d.ts.map +1 -0
  64. package/dist/utils/validation.js +245 -0
  65. package/dist/utils/validation.js.map +1 -0
  66. 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
+ }