rawsql-ts 0.10.8-beta → 0.11.0-beta
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 +174 -44
- package/dist/esm/index.js +30 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.min.js +16 -14
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/src/index.js +4 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/transformers/DynamicQueryBuilder.js +155 -0
- package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -0
- package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js +16 -12
- package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.js +1 -2
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +342 -0
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
- package/dist/esm/src/transformers/UnifiedJsonMapping.js +59 -0
- package/dist/esm/src/transformers/UnifiedJsonMapping.js.map +1 -0
- package/dist/esm/src/utils/JsonSchemaValidator.js +211 -0
- package/dist/esm/src/utils/JsonSchemaValidator.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/esm/types/src/index.d.ts +4 -0
- package/dist/esm/types/src/transformers/DynamicQueryBuilder.d.ts +108 -0
- package/dist/esm/types/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -1
- package/dist/esm/types/src/transformers/SqlFormatter.d.ts +2 -3
- package/dist/esm/types/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
- package/dist/esm/types/src/transformers/UnifiedJsonMapping.d.ts +54 -0
- package/dist/esm/types/src/utils/JsonSchemaValidator.d.ts +81 -0
- package/dist/index.min.js +16 -14
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/transformers/DynamicQueryBuilder.d.ts +108 -0
- package/dist/src/transformers/DynamicQueryBuilder.js +159 -0
- package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -0
- package/dist/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -1
- package/dist/src/transformers/PostgresJsonQueryBuilder.js +16 -12
- package/dist/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +2 -3
- package/dist/src/transformers/SqlFormatter.js +1 -2
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
- package/dist/src/transformers/TypeTransformationPostProcessor.js +351 -0
- package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
- package/dist/src/transformers/UnifiedJsonMapping.d.ts +54 -0
- package/dist/src/transformers/UnifiedJsonMapping.js +62 -0
- package/dist/src/transformers/UnifiedJsonMapping.js.map +1 -0
- package/dist/src/utils/JsonSchemaValidator.d.ts +81 -0
- package/dist/src/utils/JsonSchemaValidator.js +215 -0
- package/dist/src/utils/JsonSchemaValidator.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeTransformationPostProcessor.js","sourceRoot":"","sources":["../../../../src/transformers/TypeTransformationPostProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced JSON mapping structure that integrates column mapping and type protection configuration.
|
|
3
|
+
* This unified approach eliminates the need for separate .types.json files.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Convert a unified JSON mapping to separate JsonMapping and TypeProtectionConfig.
|
|
7
|
+
* This enables backward compatibility with existing code while supporting the new unified structure.
|
|
8
|
+
*/
|
|
9
|
+
export function convertUnifiedMapping(unified) {
|
|
10
|
+
const protectedStringFields = [];
|
|
11
|
+
// Helper function to process columns and extract string protection settings
|
|
12
|
+
const processColumns = (columns) => {
|
|
13
|
+
const result = {};
|
|
14
|
+
for (const [key, config] of Object.entries(columns)) {
|
|
15
|
+
if (typeof config === 'string') {
|
|
16
|
+
result[key] = config;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
result[key] = config.column;
|
|
20
|
+
if (config.type === 'string') {
|
|
21
|
+
protectedStringFields.push(config.column);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
// Convert the unified mapping to traditional JsonMapping
|
|
28
|
+
const jsonMapping = {
|
|
29
|
+
rootName: unified.rootName,
|
|
30
|
+
rootEntity: {
|
|
31
|
+
id: unified.rootEntity.id,
|
|
32
|
+
name: unified.rootEntity.name,
|
|
33
|
+
columns: processColumns(unified.rootEntity.columns)
|
|
34
|
+
},
|
|
35
|
+
nestedEntities: [], // Initialize as empty array
|
|
36
|
+
useJsonb: unified.useJsonb
|
|
37
|
+
};
|
|
38
|
+
// Add typeInfo if it exists
|
|
39
|
+
if (unified.typeInfo) {
|
|
40
|
+
// Note: JsonMapping doesn't have typeInfo in core, but we preserve it for backward compatibility
|
|
41
|
+
jsonMapping.typeInfo = unified.typeInfo;
|
|
42
|
+
}
|
|
43
|
+
// Process nested entities if they exist
|
|
44
|
+
if (unified.nestedEntities) {
|
|
45
|
+
jsonMapping.nestedEntities = unified.nestedEntities.map(entity => ({
|
|
46
|
+
id: entity.id,
|
|
47
|
+
name: entity.name,
|
|
48
|
+
parentId: entity.parentId,
|
|
49
|
+
propertyName: entity.propertyName,
|
|
50
|
+
relationshipType: entity.relationshipType,
|
|
51
|
+
columns: processColumns(entity.columns)
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
jsonMapping,
|
|
56
|
+
typeProtection: { protectedStringFields }
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=UnifiedJsonMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnifiedJsonMapping.js","sourceRoot":"","sources":["../../../../src/transformers/UnifiedJsonMapping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiDH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAI7D,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAE3C,4EAA4E;IAC5E,MAAM,cAAc,GAAG,CAAC,OAA4C,EAA0B,EAAE;QAC5F,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IAEF,yDAAyD;IACzD,MAAM,WAAW,GAAgB;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE;YACR,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YACzB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;YAC7B,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;SACtD;QACD,cAAc,EAAE,EAAE,EAAG,4BAA4B;QACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC7B,CAAC;IAEF,4BAA4B;IAC5B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,iGAAiG;QAChG,WAAmB,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrD,CAAC;IAED,wCAAwC;IACxC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,WAAW,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/D,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO;QACH,WAAW;QACX,cAAc,EAAE,EAAE,qBAAqB,EAAE;KAC5C,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
export class JsonSchemaValidator {
|
|
2
|
+
/**
|
|
3
|
+
* Validates JsonMapping structure against an expected type structure.
|
|
4
|
+
* Checks if the JsonMapping covers all required properties and relationships.
|
|
5
|
+
*
|
|
6
|
+
* @param jsonMapping The JsonMapping configuration to validate
|
|
7
|
+
* @param expectedStructure The expected type structure to validate against
|
|
8
|
+
* @returns ValidationResult containing validation status and detailed errors
|
|
9
|
+
*/
|
|
10
|
+
static validate(jsonMapping, expectedStructure) {
|
|
11
|
+
const extractedStructure = this.extractStructureFromJsonMapping(jsonMapping);
|
|
12
|
+
return this.compareStructures(extractedStructure, expectedStructure);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validates JsonMapping structure and throws an error if validation fails.
|
|
16
|
+
* Convenience method for strict validation scenarios.
|
|
17
|
+
*
|
|
18
|
+
* @param jsonMapping The JsonMapping configuration to validate
|
|
19
|
+
* @param expectedStructure The expected type structure to validate against
|
|
20
|
+
* @throws Error if validation fails with detailed error messages
|
|
21
|
+
*/
|
|
22
|
+
static validateStrict(jsonMapping, expectedStructure) {
|
|
23
|
+
const result = this.validate(jsonMapping, expectedStructure);
|
|
24
|
+
if (!result.isValid) {
|
|
25
|
+
const errorMessage = [
|
|
26
|
+
'JsonMapping validation failed:',
|
|
27
|
+
...result.errors
|
|
28
|
+
].join('\n');
|
|
29
|
+
throw new Error(errorMessage);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extracts structure information from JsonMapping configuration.
|
|
34
|
+
* Analyzes rootEntity and nestedEntities to build complete structure map.
|
|
35
|
+
*
|
|
36
|
+
* @param jsonMapping The JsonMapping to analyze
|
|
37
|
+
* @returns ExtractedStructure representing the mapping structure
|
|
38
|
+
*/
|
|
39
|
+
static extractStructureFromJsonMapping(jsonMapping) {
|
|
40
|
+
const structure = {};
|
|
41
|
+
// Extract root entity properties
|
|
42
|
+
if (jsonMapping.rootEntity && jsonMapping.rootEntity.columns) {
|
|
43
|
+
Object.keys(jsonMapping.rootEntity.columns).forEach(propertyName => {
|
|
44
|
+
structure[propertyName] = 'primitive';
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// Extract nested entities
|
|
48
|
+
if (jsonMapping.nestedEntities) {
|
|
49
|
+
// Process direct children of root entity first
|
|
50
|
+
jsonMapping.nestedEntities
|
|
51
|
+
.filter((entity) => entity.parentId === jsonMapping.rootEntity.id)
|
|
52
|
+
.forEach((entity) => {
|
|
53
|
+
if (entity.propertyName && entity.columns) {
|
|
54
|
+
if (entity.relationshipType === 'object') {
|
|
55
|
+
// Single object relationship
|
|
56
|
+
structure[entity.propertyName] = this.extractNestedEntityStructure(entity, jsonMapping);
|
|
57
|
+
}
|
|
58
|
+
else if (entity.relationshipType === 'array') {
|
|
59
|
+
// Array relationship
|
|
60
|
+
structure[entity.propertyName] = [this.extractNestedEntityStructure(entity, jsonMapping)];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return structure;
|
|
66
|
+
} /**
|
|
67
|
+
* Extracts structure from a nested entity, including its children.
|
|
68
|
+
*/
|
|
69
|
+
static extractNestedEntityStructure(entity, jsonMapping) {
|
|
70
|
+
const entityStructure = {};
|
|
71
|
+
// Add entity's own columns
|
|
72
|
+
if (entity.columns) {
|
|
73
|
+
Object.keys(entity.columns).forEach(propName => {
|
|
74
|
+
entityStructure[propName] = 'primitive';
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Add nested children of this entity
|
|
78
|
+
if (jsonMapping.nestedEntities) {
|
|
79
|
+
jsonMapping.nestedEntities
|
|
80
|
+
.filter((childEntity) => childEntity.parentId === entity.id)
|
|
81
|
+
.forEach((childEntity) => {
|
|
82
|
+
if (childEntity.propertyName && childEntity.columns) {
|
|
83
|
+
if (childEntity.relationshipType === 'object') {
|
|
84
|
+
entityStructure[childEntity.propertyName] = this.extractNestedEntityStructure(childEntity, jsonMapping);
|
|
85
|
+
}
|
|
86
|
+
else if (childEntity.relationshipType === 'array') {
|
|
87
|
+
entityStructure[childEntity.propertyName] = [this.extractNestedEntityStructure(childEntity, jsonMapping)];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return entityStructure;
|
|
93
|
+
} /**
|
|
94
|
+
* Compares extracted structure with expected structure with proper type guards.
|
|
95
|
+
*/
|
|
96
|
+
static compareStructures(extracted, expected, path = '') {
|
|
97
|
+
const errors = [];
|
|
98
|
+
const missingProperties = [];
|
|
99
|
+
const extraProperties = [];
|
|
100
|
+
// Handle primitive comparison
|
|
101
|
+
if (extracted === 'primitive' && expected === 'primitive') {
|
|
102
|
+
return { isValid: true, errors: [], missingProperties: [], extraProperties: [] };
|
|
103
|
+
}
|
|
104
|
+
// Handle array types
|
|
105
|
+
if (Array.isArray(expected) && Array.isArray(extracted)) {
|
|
106
|
+
if (expected.length > 0 && extracted.length > 0) {
|
|
107
|
+
const nestedResult = this.compareStructures(extracted[0], expected[0], `${path}[]`);
|
|
108
|
+
errors.push(...nestedResult.errors);
|
|
109
|
+
missingProperties.push(...nestedResult.missingProperties);
|
|
110
|
+
extraProperties.push(...nestedResult.extraProperties);
|
|
111
|
+
}
|
|
112
|
+
return { isValid: errors.length === 0, errors, missingProperties, extraProperties };
|
|
113
|
+
} // Both should be objects for property comparison
|
|
114
|
+
if (typeof extracted !== 'object' || typeof expected !== 'object' ||
|
|
115
|
+
Array.isArray(extracted) || Array.isArray(expected) ||
|
|
116
|
+
extracted === null || expected === null) {
|
|
117
|
+
return { isValid: true, errors: [], missingProperties: [], extraProperties: [] };
|
|
118
|
+
}
|
|
119
|
+
// Now we know both are object types, safe to access properties
|
|
120
|
+
const extractedObj = extracted;
|
|
121
|
+
const expectedObj = expected;
|
|
122
|
+
// Check for missing properties in extracted structure
|
|
123
|
+
Object.keys(expectedObj).forEach(key => {
|
|
124
|
+
const currentPath = path ? `${path}.${key}` : key;
|
|
125
|
+
if (!(key in extractedObj)) {
|
|
126
|
+
missingProperties.push(currentPath);
|
|
127
|
+
errors.push(`Missing property: ${currentPath}`);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const extractedValue = extractedObj[key];
|
|
131
|
+
const expectedValue = expectedObj[key];
|
|
132
|
+
// Recursively compare nested structures
|
|
133
|
+
const nestedResult = this.compareStructures(extractedValue, expectedValue, currentPath);
|
|
134
|
+
errors.push(...nestedResult.errors);
|
|
135
|
+
missingProperties.push(...nestedResult.missingProperties);
|
|
136
|
+
extraProperties.push(...nestedResult.extraProperties);
|
|
137
|
+
});
|
|
138
|
+
// Check for extra properties in extracted structure
|
|
139
|
+
Object.keys(extractedObj).forEach(key => {
|
|
140
|
+
const currentPath = path ? `${path}.${key}` : key;
|
|
141
|
+
if (!(key in expectedObj)) {
|
|
142
|
+
extraProperties.push(currentPath);
|
|
143
|
+
// Note: Extra properties are not considered errors in this implementation
|
|
144
|
+
// as JsonMapping might include additional metadata
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return {
|
|
148
|
+
isValid: errors.length === 0,
|
|
149
|
+
errors,
|
|
150
|
+
missingProperties,
|
|
151
|
+
extraProperties
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validates JsonMapping structure against a sample object that implements the expected type.
|
|
156
|
+
* This method extracts structure from the sample object and compares it with JsonMapping.
|
|
157
|
+
*
|
|
158
|
+
* @param jsonMapping The JsonMapping configuration to validate
|
|
159
|
+
* @param sampleObject A sample object that implements the expected interface/type
|
|
160
|
+
* @returns ValidationResult containing validation status and detailed errors
|
|
161
|
+
*/
|
|
162
|
+
static validateAgainstSample(jsonMapping, sampleObject) {
|
|
163
|
+
const expectedStructure = this.extractStructureFromSample(sampleObject);
|
|
164
|
+
return this.validate(jsonMapping, expectedStructure);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Validates JsonMapping structure against a sample object and throws an error if validation fails.
|
|
168
|
+
* Convenience method for strict validation scenarios with sample objects.
|
|
169
|
+
*
|
|
170
|
+
* @param jsonMapping The JsonMapping configuration to validate
|
|
171
|
+
* @param sampleObject A sample object that implements the expected interface/type
|
|
172
|
+
* @throws Error if validation fails with detailed error messages
|
|
173
|
+
*/
|
|
174
|
+
static validateAgainstSampleStrict(jsonMapping, sampleObject) {
|
|
175
|
+
const result = this.validateAgainstSample(jsonMapping, sampleObject);
|
|
176
|
+
if (!result.isValid) {
|
|
177
|
+
const errorMessage = [
|
|
178
|
+
'JsonMapping validation against sample object failed:',
|
|
179
|
+
...result.errors
|
|
180
|
+
].join('\n');
|
|
181
|
+
throw new Error(errorMessage);
|
|
182
|
+
}
|
|
183
|
+
} /**
|
|
184
|
+
* Extracts structure information from a sample object.
|
|
185
|
+
* Recursively analyzes the object properties to build a structure map.
|
|
186
|
+
*
|
|
187
|
+
* @param sampleObject The sample object to analyze
|
|
188
|
+
* @returns ExpectedTypeStructure representing the object structure
|
|
189
|
+
*/
|
|
190
|
+
static extractStructureFromSample(sampleObject) {
|
|
191
|
+
if (sampleObject === null || sampleObject === undefined) {
|
|
192
|
+
return 'primitive';
|
|
193
|
+
}
|
|
194
|
+
if (Array.isArray(sampleObject)) {
|
|
195
|
+
if (sampleObject.length === 0) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
return [this.extractStructureFromSample(sampleObject[0])];
|
|
199
|
+
}
|
|
200
|
+
if (typeof sampleObject === 'object') {
|
|
201
|
+
const structure = {};
|
|
202
|
+
Object.keys(sampleObject).forEach(key => {
|
|
203
|
+
structure[key] = this.extractStructureFromSample(sampleObject[key]);
|
|
204
|
+
});
|
|
205
|
+
return structure;
|
|
206
|
+
}
|
|
207
|
+
// Primitive types (string, number, boolean, etc.)
|
|
208
|
+
return 'primitive';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=JsonSchemaValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonSchemaValidator.js","sourceRoot":"","sources":["../../../../src/utils/JsonSchemaValidator.ts"],"names":[],"mappings":"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"}
|