rawsql-ts 0.10.9-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.
Files changed (52) hide show
  1. package/README.md +174 -44
  2. package/dist/esm/index.js +4 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +16 -14
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/src/index.js +4 -0
  7. package/dist/esm/src/index.js.map +1 -1
  8. package/dist/esm/src/transformers/DynamicQueryBuilder.js +155 -0
  9. package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -0
  10. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js +16 -12
  11. package/dist/esm/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  12. package/dist/esm/src/transformers/SqlFormatter.js +1 -2
  13. package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
  14. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +342 -0
  15. package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
  16. package/dist/esm/src/transformers/UnifiedJsonMapping.js +59 -0
  17. package/dist/esm/src/transformers/UnifiedJsonMapping.js.map +1 -0
  18. package/dist/esm/src/utils/JsonSchemaValidator.js +211 -0
  19. package/dist/esm/src/utils/JsonSchemaValidator.js.map +1 -0
  20. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  21. package/dist/esm/types/src/index.d.ts +4 -0
  22. package/dist/esm/types/src/transformers/DynamicQueryBuilder.d.ts +108 -0
  23. package/dist/esm/types/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -1
  24. package/dist/esm/types/src/transformers/SqlFormatter.d.ts +2 -3
  25. package/dist/esm/types/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
  26. package/dist/esm/types/src/transformers/UnifiedJsonMapping.d.ts +54 -0
  27. package/dist/esm/types/src/utils/JsonSchemaValidator.d.ts +81 -0
  28. package/dist/index.min.js +16 -14
  29. package/dist/index.min.js.map +4 -4
  30. package/dist/src/index.d.ts +4 -0
  31. package/dist/src/index.js +4 -0
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/transformers/DynamicQueryBuilder.d.ts +108 -0
  34. package/dist/src/transformers/DynamicQueryBuilder.js +159 -0
  35. package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -0
  36. package/dist/src/transformers/PostgresJsonQueryBuilder.d.ts +3 -1
  37. package/dist/src/transformers/PostgresJsonQueryBuilder.js +16 -12
  38. package/dist/src/transformers/PostgresJsonQueryBuilder.js.map +1 -1
  39. package/dist/src/transformers/SqlFormatter.d.ts +2 -3
  40. package/dist/src/transformers/SqlFormatter.js +1 -2
  41. package/dist/src/transformers/SqlFormatter.js.map +1 -1
  42. package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +108 -0
  43. package/dist/src/transformers/TypeTransformationPostProcessor.js +351 -0
  44. package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -0
  45. package/dist/src/transformers/UnifiedJsonMapping.d.ts +54 -0
  46. package/dist/src/transformers/UnifiedJsonMapping.js +62 -0
  47. package/dist/src/transformers/UnifiedJsonMapping.js.map +1 -0
  48. package/dist/src/utils/JsonSchemaValidator.d.ts +81 -0
  49. package/dist/src/utils/JsonSchemaValidator.js +215 -0
  50. package/dist/src/utils/JsonSchemaValidator.js.map +1 -0
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. 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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"}