@coherent.js/api 1.0.0-beta.2 → 1.0.0-beta.5

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../../../src/api/serialization.js"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Validate data against a schema
3
- * @param {Object} schema - JSON Schema
4
- * @param {any} data - Data to validate
5
- * @returns {Object} Validation result
6
- */
7
- export function validateAgainstSchema(schema: Object, data: any): Object;
8
- /**
9
- * Validate a single field
10
- * @param {Object} schema - Field schema
11
- * @param {any} value - Field value
12
- * @param {string} fieldName - Field name
13
- * @returns {Array} Validation errors
14
- */
15
- export function validateField(schema: Object, value: any, fieldName: string): any[];
16
- /**
17
- * Create validation middleware
18
- * @param {Object} schema - JSON Schema for validation
19
- * @returns {Function} Middleware function
20
- */
21
- export function withValidation(schema: Object): Function;
22
- /**
23
- * Validate query parameters
24
- * @param {Object} schema - JSON Schema for query parameters
25
- * @returns {Function} Middleware function
26
- */
27
- export function withQueryValidation(schema: Object): Function;
28
- /**
29
- * Validate path parameters
30
- * @param {Object} schema - JSON Schema for path parameters
31
- * @returns {Function} Middleware function
32
- */
33
- export function withParamsValidation(schema: Object): Function;
34
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/api/validation.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,8CAJW,MAAM,QACN,GAAG,GACD,MAAM,CA6ClB;AAED;;;;;;GAMG;AACH,sCALW,MAAM,SACN,GAAG,aACH,MAAM,SAyEhB;AAED;;;;GAIG;AACH,uCAHW,MAAM,YAchB;AAED;;;;GAIG;AACH,4CAHW,MAAM,YAchB;AAED;;;;GAIG;AACH,6CAHW,MAAM,YAchB"}
@@ -1,172 +0,0 @@
1
- /**
2
- * API Validation for Coherent.js
3
- * @fileoverview Schema-based validation utilities
4
- */
5
- import { ValidationError } from './errors.js';
6
- /**
7
- * Validate data against a schema
8
- * @param {Object} schema - JSON Schema
9
- * @param {any} data - Data to validate
10
- * @returns {Object} Validation result
11
- */
12
- function validateAgainstSchema(schema, data) {
13
- const errors = [];
14
- // Simple validation implementation
15
- // In a real implementation, this would use a proper JSON Schema validator
16
- if (schema.type === 'object') {
17
- if (typeof data !== 'object' || data === null || Array.isArray(data)) {
18
- errors.push({
19
- field: '',
20
- message: `Expected object, got ${typeof data}`
21
- });
22
- return { valid: false, errors };
23
- }
24
- // Check required fields
25
- if (schema.required && Array.isArray(schema.required)) {
26
- for (const field of schema.required) {
27
- if (!(field in data)) {
28
- errors.push({
29
- field,
30
- message: `Required field '${field}' is missing`
31
- });
32
- }
33
- }
34
- }
35
- // Validate properties
36
- if (schema.properties) {
37
- for (const [field, fieldSchema] of Object.entries(schema.properties)) {
38
- if (field in data) {
39
- const fieldValue = data[field];
40
- const fieldErrors = validateField(fieldSchema, fieldValue, field);
41
- errors.push(...fieldErrors);
42
- }
43
- }
44
- }
45
- }
46
- return {
47
- valid: errors.length === 0,
48
- errors
49
- };
50
- }
51
- /**
52
- * Validate a single field
53
- * @param {Object} schema - Field schema
54
- * @param {any} value - Field value
55
- * @param {string} fieldName - Field name
56
- * @returns {Array} Validation errors
57
- */
58
- function validateField(schema, value, fieldName) {
59
- const errors = [];
60
- // Type validation
61
- if (schema.type) {
62
- if (schema.type === 'string' && typeof value !== 'string') {
63
- errors.push({
64
- field: fieldName,
65
- message: `Expected string, got ${typeof value}`
66
- });
67
- }
68
- else if (schema.type === 'number' && typeof value !== 'number') {
69
- errors.push({
70
- field: fieldName,
71
- message: `Expected number, got ${typeof value}`
72
- });
73
- }
74
- else if (schema.type === 'boolean' && typeof value !== 'boolean') {
75
- errors.push({
76
- field: fieldName,
77
- message: `Expected boolean, got ${typeof value}`
78
- });
79
- }
80
- else if (schema.type === 'array' && !Array.isArray(value)) {
81
- errors.push({
82
- field: fieldName,
83
- message: `Expected array, got ${typeof value}`
84
- });
85
- }
86
- }
87
- // String-specific validations
88
- if (schema.type === 'string') {
89
- if (schema.minLength && value.length < schema.minLength) {
90
- errors.push({
91
- field: fieldName,
92
- message: `String must be at least ${schema.minLength} characters`
93
- });
94
- }
95
- if (schema.maxLength && value.length > schema.maxLength) {
96
- errors.push({
97
- field: fieldName,
98
- message: `String must be at most ${schema.maxLength} characters`
99
- });
100
- }
101
- if (schema.format === 'email' && !/^[^@]+@[^@]+\.[^@]+$/.test(value)) {
102
- errors.push({
103
- field: fieldName,
104
- message: 'Invalid email format'
105
- });
106
- }
107
- }
108
- // Number-specific validations
109
- if (schema.type === 'number') {
110
- if (schema.minimum !== undefined && value < schema.minimum) {
111
- errors.push({
112
- field: fieldName,
113
- message: `Number must be at least ${schema.minimum}`
114
- });
115
- }
116
- if (schema.maximum !== undefined && value > schema.maximum) {
117
- errors.push({
118
- field: fieldName,
119
- message: `Number must be at most ${schema.maximum}`
120
- });
121
- }
122
- }
123
- return errors;
124
- }
125
- /**
126
- * Create validation middleware
127
- * @param {Object} schema - JSON Schema for validation
128
- * @returns {Function} Middleware function
129
- */
130
- function withValidation(schema) {
131
- return (req, res, next) => {
132
- const data = req.body || {};
133
- const result = validateAgainstSchema(schema, data);
134
- if (!result.valid) {
135
- throw new ValidationError(result.errors);
136
- }
137
- next();
138
- };
139
- }
140
- /**
141
- * Validate query parameters
142
- * @param {Object} schema - JSON Schema for query parameters
143
- * @returns {Function} Middleware function
144
- */
145
- function withQueryValidation(schema) {
146
- return (req, res, next) => {
147
- const data = req.query || {};
148
- const result = validateAgainstSchema(schema, data);
149
- if (!result.valid) {
150
- throw new ValidationError(result.errors);
151
- }
152
- next();
153
- };
154
- }
155
- /**
156
- * Validate path parameters
157
- * @param {Object} schema - JSON Schema for path parameters
158
- * @returns {Function} Middleware function
159
- */
160
- function withParamsValidation(schema) {
161
- return (req, res, next) => {
162
- const data = req.params || {};
163
- const result = validateAgainstSchema(schema, data);
164
- if (!result.valid) {
165
- throw new ValidationError(result.errors);
166
- }
167
- next();
168
- };
169
- }
170
- // Export validation utilities
171
- export { validateAgainstSchema, validateField, withValidation, withQueryValidation, withParamsValidation };
172
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/api/validation.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,MAAM,EAAE,IAAI;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,mCAAmC;IACnC,0EAA0E;IAE1E,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,wBAAwB,OAAO,IAAI,EAAE;aAC/C,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QAED,wBAAwB;QACxB,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK;wBACL,OAAO,EAAE,mBAAmB,KAAK,cAAc;qBAChD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;oBAClE,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,kBAAkB;IAClB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,wBAAwB,OAAO,KAAK,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,wBAAwB,OAAO,KAAK,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,yBAAyB,OAAO,KAAK,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,uBAAuB,OAAO,KAAK,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,2BAA2B,MAAM,CAAC,SAAS,aAAa;aAClE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,0BAA0B,MAAM,CAAC,SAAS,aAAa;aACjE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,sBAAsB;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,2BAA2B,MAAM,CAAC,OAAO,EAAE;aACrD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,0BAA0B,MAAM,CAAC,OAAO,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAM;IAC5B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,MAAM;IACjC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAAM;IAClC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,8BAA8B;AAC9B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACrB,CAAC"}