@forestadmin-experimental/datasource-cosmos 1.0.3 → 1.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/dist/introspection/container-introspector.d.ts +2 -2
- package/dist/introspection/container-introspector.js +2 -2
- package/dist/model-builder/model.d.ts.map +1 -1
- package/dist/model-builder/model.js +3 -6
- package/dist/utils/aggregation-converter.d.ts +4 -0
- package/dist/utils/aggregation-converter.d.ts.map +1 -1
- package/dist/utils/aggregation-converter.js +24 -13
- package/dist/utils/query-converter.d.ts.map +1 -1
- package/dist/utils/query-converter.js +16 -9
- package/dist/utils/serializer.d.ts +20 -4
- package/dist/utils/serializer.d.ts.map +1 -1
- package/dist/utils/serializer.js +63 -12
- package/package.json +1 -1
|
@@ -3,8 +3,8 @@ import { OverrideTypeConverter } from './builder';
|
|
|
3
3
|
import ModelCosmos from '../model-builder/model';
|
|
4
4
|
export interface IntrospectionOptions {
|
|
5
5
|
/**
|
|
6
|
-
* Whether to flatten nested objects into
|
|
7
|
-
* Example: { address: { city: 'NYC' } } becomes { 'address
|
|
6
|
+
* Whether to flatten nested objects into arrow-notation fields
|
|
7
|
+
* Example: { address: { city: 'NYC' } } becomes { 'address->city': 'NYC' }
|
|
8
8
|
* Default: true (recommended for Forest Admin compatibility)
|
|
9
9
|
*/
|
|
10
10
|
flattenNestedObjects?: boolean;
|
|
@@ -130,7 +130,7 @@ obj, fieldTypes, prefix, depth, maxDepth, flattenNestedObjects, introspectArrayI
|
|
|
130
130
|
}
|
|
131
131
|
// Regular object - recursively analyze properties
|
|
132
132
|
for (const [key, value] of Object.entries(obj)) {
|
|
133
|
-
const fieldName = prefix ? `${prefix}
|
|
133
|
+
const fieldName = prefix ? `${prefix}->${key}` : key;
|
|
134
134
|
if (value &&
|
|
135
135
|
typeof value === 'object' &&
|
|
136
136
|
!Array.isArray(value) &&
|
|
@@ -165,4 +165,4 @@ function isGeoPoint(value) {
|
|
|
165
165
|
Array.isArray(value.coordinates) &&
|
|
166
166
|
value.coordinates.length === 2);
|
|
167
167
|
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWludHJvc3BlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRyb3NwZWN0aW9uL2NvbnRhaW5lci1pbnRyb3NwZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxtRUFBbUU7QUFDbkUsNkVBQXdFO0FBdUJ4RTs7O0dBR0c7QUFDWSxLQUFLLFVBQVUscUJBQXFCLENBQ2pELFlBQTBCLEVBQzFCLGNBQXNCLEVBQ3RCLFlBQW9CLEVBQ3BCLGFBQXFCLEVBQ3JCLGdCQUF5QixFQUN6QixVQUFVLEdBQUcsR0FBRyxFQUNoQixxQkFBNkMsRUFDN0MsV0FBcUIsRUFDckIsVUFBZ0MsRUFBRTtJQUVsQyxNQUFNLEVBQUUsb0JBQW9CLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTVGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRCxvRUFBb0U7SUFDcEUsSUFBSSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUU5QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM1QixNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFELHNCQUFzQixHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxTQUFTLEdBQUc7UUFDaEIsS0FBSyxFQUFFLGNBQWMsVUFBVSxXQUFXO0tBQzNDLENBQUM7SUFFRixNQUFNLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFekYsZ0VBQWdFO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLHdCQUF3QixDQUNyQyxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixvQkFBb0IsQ0FDckIsQ0FBQztJQUVGLE9BQU8sSUFBSSxlQUFXLENBQ3BCLFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxFQUNaLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixXQUFXLENBQ1osQ0FBQztBQUNKLENBQUM7QUFqREQsd0NBaURDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLHdCQUF3QjtBQUMvQiw4REFBOEQ7QUFDOUQsU0FBZ0IsRUFDaEIsb0JBQTZCLEVBQzdCLFFBQWdCLEVBQ2hCLG9CQUE2QjtJQUU3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztJQUNoQyxNQUFNLFVBQVUsR0FBcUMsRUFBRSxDQUFDO0lBQ3hELE1BQU0sYUFBYSxHQUEyQixFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7SUFFeEYsK0NBQStDO0lBQy9DLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0QyxlQUFlLENBQ2IsR0FBRyxFQUNILFVBQVUsRUFDVixFQUFFLEVBQ0YsQ0FBQyxFQUNELFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFdBQVcsQ0FDWixDQUFDO1FBRUYsdUJBQXVCO1FBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEQsb0NBQW9DO1lBQ3BDLE1BQU0sVUFBVSxHQUFHLHdCQUFhLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsMkVBQTJFO1lBQzNFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFFdkYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO2dCQUNsQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUTtnQkFDUixPQUFPLEVBQUUsSUFBSSxFQUFFLGdEQUFnRDthQUNoRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWU7QUFDdEIsOERBQThEO0FBQzlELEdBQVEsRUFDUixVQUE0QyxFQUM1QyxNQUFjLEVBQ2QsS0FBYSxFQUNiLFFBQWdCLEVBQ2hCLG9CQUE2QixFQUM3QixvQkFBNkIsRUFDN0IsV0FBeUI7SUFFekIsZ0NBQWdDO0lBQ2hDLE1BQU0sV0FBVyxHQUFHLENBQUMsU0FBaUIsRUFBRSxJQUFvQixFQUFFLEVBQUU7UUFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakMsSUFBSSxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7UUFDdEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU87SUFDVCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxvQkFBb0IsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLG1EQUFtRDtZQUNuRCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUU3RCxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzlDLGVBQWUsQ0FDYixJQUFJLEVBQ0osVUFBVSxFQUNWLEdBQUcsTUFBTSxJQUFJLEVBQ2IsS0FBSyxHQUFHLENBQUMsRUFDVCxRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixXQUFXLENBQ1osQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO0lBQ1QsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLGdDQUFnQztRQUNoQyxJQUFJLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBRUQsa0RBQWtEO1FBQ2xELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRXJELElBQ0UsS0FBSztnQkFDTCxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUN6QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNyQixvQkFBb0I7Z0JBQ3BCLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDO2dCQUN4QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFDbEIsQ0FBQztnQkFDRCw4REFBOEQ7Z0JBQzlELGVBQWUsQ0FDYixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxLQUFLLEdBQUcsQ0FBQyxFQUNULFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFdBQVcsQ0FDWixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHFDQUFxQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsd0JBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFN0QsV0FBVyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87SUFDVCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLFlBQVksR0FBRyx3QkFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNELFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDcEMsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILDhEQUE4RDtBQUM5RCxTQUFTLFVBQVUsQ0FBQyxLQUFVO0lBQzVCLE9BQU8sQ0FDTCxLQUFLO1FBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU87UUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FDL0IsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,IAAI,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAY;IAEtB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,WAAW,CAAC,EAAE,OAAO,CAAC;gBAG3B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,qBAAqB,CAAC,EAAE,qBAAqB,EAC7C,WAAW,CAAC,EAAE,OAAO;IAcV,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model-builder/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,CAAC,OAAO,OAAO,WAAW;IACvB,IAAI,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAe;IAE7B;;OAEG;IACH,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAY;IAEtB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,WAAW,CAAC,EAAE,OAAO,CAAC;gBAG3B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,qBAAqB,CAAC,EAAE,qBAAqB,EAC7C,WAAW,CAAC,EAAE,OAAO;IAcV,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapC,KAAK,CAChB,SAAS,EAAE,YAAY,EACvB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC;IAsBX,cAAc,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM9D,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7D;;OAEG;YACW,aAAa;IAgB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACI,aAAa,IAAI,YAAY;IAIpC;;OAEG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,mBAAmB,IAAI,MAAM;IAIpC;;OAEG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,gBAAgB,IAAI,MAAM;CAGlC"}
|
|
@@ -51,11 +51,8 @@ class ModelCosmos {
|
|
|
51
51
|
// eslint-disable-next-line no-restricted-syntax
|
|
52
52
|
for (const item of itemsToUpdate) {
|
|
53
53
|
const partitionKeyValue = this.getPartitionKeyValue(item);
|
|
54
|
-
//
|
|
55
|
-
const updatedItem =
|
|
56
|
-
...item,
|
|
57
|
-
...unflattenedPatch,
|
|
58
|
-
};
|
|
54
|
+
// Deep merge the unflattened patch with the existing item
|
|
55
|
+
const updatedItem = serializer_1.default.deepMerge(item, unflattenedPatch);
|
|
59
56
|
// eslint-disable-next-line no-await-in-loop
|
|
60
57
|
await this.container.item(item.id, partitionKeyValue).replace(updatedItem);
|
|
61
58
|
}
|
|
@@ -178,4 +175,4 @@ class ModelCosmos {
|
|
|
178
175
|
}
|
|
179
176
|
}
|
|
180
177
|
exports.default = ModelCosmos;
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwtYnVpbGRlci9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLHFFQUE2QztBQVU3QyxNQUFxQixXQUFXO0lBcUM5QixZQUNFLFlBQTBCLEVBQzFCLElBQVksRUFDWixZQUFvQixFQUNwQixhQUFxQixFQUNyQixnQkFBd0IsRUFDeEIsTUFBb0IsRUFDcEIscUJBQTZDLEVBQzdDLFdBQXFCO1FBRXJCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBa0I7UUFDcEMsTUFBTSxjQUFjLEdBQWlCLEVBQUUsQ0FBQztRQUV4Qyx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FB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
|
|
@@ -2,6 +2,10 @@ import { SqlQuerySpec } from '@azure/cosmos';
|
|
|
2
2
|
import { AggregateResult, Aggregation, AggregationOperation, ConditionTree } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export default class AggregationConverter {
|
|
4
4
|
private static AGGREGATION_OPERATION;
|
|
5
|
+
/**
|
|
6
|
+
* Convert Forest Admin field notation (arrow ->) to Cosmos DB notation (dot .)
|
|
7
|
+
*/
|
|
8
|
+
private static toCosmosField;
|
|
5
9
|
/**
|
|
6
10
|
* Build SQL aggregation query for Cosmos DB
|
|
7
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregation-converter.d.ts","sourceRoot":"","sources":["../../src/utils/aggregation-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,aAAa,EAEd,MAAM,iCAAiC,CAAC;AAKzC,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAMlC;IAEF;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,WAAW,EAAE,WAAW,EACxB,aAAa,CAAC,EAAE,aAAa,EAC7B,KAAK,CAAC,EAAE,MAAM,GACb,YAAY;IAiBf;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"aggregation-converter.d.ts","sourceRoot":"","sources":["../../src/utils/aggregation-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,aAAa,EAEd,MAAM,iCAAiC,CAAC;AAKzC,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAMlC;IAEF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAC1B,WAAW,EAAE,WAAW,EACxB,aAAa,CAAC,EAAE,aAAa,EAC7B,KAAK,CAAC,EAAE,MAAM,GACb,YAAY;IAiBf;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAavC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IA8D3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA0BvC;;OAEG;IACH,MAAM,CAAC,yBAAyB,CAE9B,UAAU,EAAE,GAAG,EAAE,EACjB,WAAW,EAAE,WAAW,GACvB,eAAe,EAAE;IAkCpB;;OAEG;IACH,MAAM,CAAC,2BAA2B,CAChC,SAAS,EAAE,oBAAoB,EAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,KAAK,CAAC,EAAE,MAAM,GACb,YAAY;CAuChB"}
|
|
@@ -6,6 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const query_converter_1 = __importDefault(require("./query-converter"));
|
|
7
7
|
const serializer_1 = __importDefault(require("./serializer"));
|
|
8
8
|
class AggregationConverter {
|
|
9
|
+
/**
|
|
10
|
+
* Convert Forest Admin field notation (arrow ->) to Cosmos DB notation (dot .)
|
|
11
|
+
*/
|
|
12
|
+
static toCosmosField(field) {
|
|
13
|
+
return field.replace(/->/g, '.');
|
|
14
|
+
}
|
|
9
15
|
/**
|
|
10
16
|
* Build SQL aggregation query for Cosmos DB
|
|
11
17
|
*/
|
|
@@ -31,7 +37,8 @@ class AggregationConverter {
|
|
|
31
37
|
return 'COUNT(1)';
|
|
32
38
|
}
|
|
33
39
|
const operation = this.AGGREGATION_OPERATION[aggregation.operation];
|
|
34
|
-
const
|
|
40
|
+
const cosmosField = this.toCosmosField(aggregation.field);
|
|
41
|
+
const fieldPath = `c.${cosmosField}`;
|
|
35
42
|
return `${operation}(${fieldPath})`;
|
|
36
43
|
}
|
|
37
44
|
/**
|
|
@@ -47,7 +54,8 @@ class AggregationConverter {
|
|
|
47
54
|
// For now, we'll use VALUE syntax with DISTINCT for simple grouping
|
|
48
55
|
if (groups.length === 1 && !groups[0].operation) {
|
|
49
56
|
// Simple single field grouping
|
|
50
|
-
const
|
|
57
|
+
const cosmosGroupField = this.toCosmosField(groups[0].field);
|
|
58
|
+
const groupField = `c.${cosmosGroupField}`;
|
|
51
59
|
// For Count operation without field, we need a different approach
|
|
52
60
|
if (aggregation.operation === 'Count' && !aggregation.field) {
|
|
53
61
|
const query = `
|
|
@@ -86,7 +94,8 @@ class AggregationConverter {
|
|
|
86
94
|
* Build date grouping expression
|
|
87
95
|
*/
|
|
88
96
|
static buildDateGroupExpression(field, operation, alias) {
|
|
89
|
-
const
|
|
97
|
+
const cosmosField = this.toCosmosField(field);
|
|
98
|
+
const fieldPath = `c.${cosmosField}`;
|
|
90
99
|
switch (operation) {
|
|
91
100
|
case 'Year':
|
|
92
101
|
return `DateTimeYear(${fieldPath}) as ${alias}`;
|
|
@@ -146,22 +155,24 @@ class AggregationConverter {
|
|
|
146
155
|
let selectClause;
|
|
147
156
|
let groupByClause = '';
|
|
148
157
|
let orderByClause = '';
|
|
149
|
-
|
|
158
|
+
const cosmosField = field ? this.toCosmosField(field) : null;
|
|
159
|
+
const cosmosGroupByField = groupByField ? this.toCosmosField(groupByField) : null;
|
|
160
|
+
if (!cosmosField) {
|
|
150
161
|
// COUNT(*) case
|
|
151
|
-
selectClause =
|
|
152
|
-
? `c.${
|
|
162
|
+
selectClause = cosmosGroupByField
|
|
163
|
+
? `c.${cosmosGroupByField} as groupKey, COUNT(1) as aggregateValue`
|
|
153
164
|
: 'COUNT(1) as aggregateValue';
|
|
154
165
|
}
|
|
155
166
|
else {
|
|
156
167
|
const op = this.AGGREGATION_OPERATION[operation];
|
|
157
|
-
const fieldPath = `c.${
|
|
158
|
-
selectClause =
|
|
159
|
-
? `c.${
|
|
168
|
+
const fieldPath = `c.${cosmosField}`;
|
|
169
|
+
selectClause = cosmosGroupByField
|
|
170
|
+
? `c.${cosmosGroupByField} as groupKey, ${op}(${fieldPath}) as aggregateValue`
|
|
160
171
|
: `${op}(${fieldPath}) as aggregateValue`;
|
|
161
172
|
}
|
|
162
|
-
if (
|
|
163
|
-
groupByClause = `GROUP BY c.${
|
|
164
|
-
orderByClause = `ORDER BY c.${
|
|
173
|
+
if (cosmosGroupByField) {
|
|
174
|
+
groupByClause = `GROUP BY c.${cosmosGroupByField}`;
|
|
175
|
+
orderByClause = `ORDER BY c.${cosmosGroupByField}`;
|
|
165
176
|
}
|
|
166
177
|
const limitClause = limit && groupByField ? `OFFSET 0 LIMIT ${limit}` : '';
|
|
167
178
|
const queryString = `SELECT ${selectClause} FROM c ${whereFragment} ${groupByClause} ` +
|
|
@@ -178,4 +189,4 @@ AggregationConverter.AGGREGATION_OPERATION = {
|
|
|
178
189
|
Min: 'MIN',
|
|
179
190
|
};
|
|
180
191
|
exports.default = AggregationConverter;
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FnZ3JlZ2F0aW9uLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLHdFQUErQztBQUMvQyw4REFBc0M7QUFFdEMsTUFBcUIsb0JBQW9CO0lBU3ZDOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUMxQixXQUF3QixFQUN4QixhQUE2QixFQUM3QixLQUFjO1FBRWQsTUFBTSxjQUFjLEdBQUcsSUFBSSx5QkFBYyxFQUFFLENBQUM7UUFDNUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXBELDZDQUE2QztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEUsTUFBTSxLQUFLLEdBQUcsVUFBVSxZQUFZLDZCQUE2QixhQUFhLEVBQUUsQ0FBQztZQUVqRixPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsS0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-converter.d.ts","sourceRoot":"","sources":["../../src/utils/query-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,aAAa,EAIb,IAAI,EACL,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,UAAU,CAAsB;IAExC;;OAEG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"query-converter.d.ts","sourceRoot":"","sources":["../../src/utils/query-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,aAAa,EAIb,IAAI,EACL,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,UAAU,CAAsB;IAExC;;OAEG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4HvB;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAyCvC;;OAEG;IACI,eAAe,CACpB,aAAa,CAAC,EAAE,aAAa,EAC7B,IAAI,CAAC,EAAE,IAAI,EACX,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,YAAY;IA8Cf;;OAEG;IACI,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;IAiB5C;;OAEG;IACI,cAAc,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG;QACpD,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,YAAY,EAAE,CAAC;KAC5B;CAMF"}
|
|
@@ -27,7 +27,9 @@ class QueryConverter {
|
|
|
27
27
|
*/
|
|
28
28
|
makeWhereClause(field, operator, value) {
|
|
29
29
|
// Use 'c' as the root alias for Cosmos DB queries
|
|
30
|
-
|
|
30
|
+
// Convert arrow notation (->) back to dot notation (.) for Cosmos DB
|
|
31
|
+
const cosmosField = field.replace(/->/g, '.');
|
|
32
|
+
const fieldPath = field === 'id' ? 'c.id' : `c.${cosmosField}`;
|
|
31
33
|
switch (operator) {
|
|
32
34
|
// Presence
|
|
33
35
|
case 'Present':
|
|
@@ -155,19 +157,22 @@ class QueryConverter {
|
|
|
155
157
|
// Reset state for new query
|
|
156
158
|
this.reset();
|
|
157
159
|
// Build SELECT clause
|
|
158
|
-
// For nested fields like 'address
|
|
159
|
-
//
|
|
160
|
+
// For nested fields like 'address->city', we need to convert to Cosmos notation
|
|
161
|
+
// and alias them to preserve the arrow notation in results
|
|
162
|
+
// e.g., "c.address.city AS 'address->city'" so the result has the flattened field name
|
|
160
163
|
const selectClause = projection && projection.length > 0
|
|
161
164
|
? projection
|
|
162
165
|
.map(field => {
|
|
163
166
|
if (field === 'id') {
|
|
164
167
|
return 'c.id';
|
|
165
168
|
}
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
+
// Convert arrow notation (->) to dot notation (.) for Cosmos DB
|
|
170
|
+
const cosmosField = field.replace(/->/g, '.');
|
|
171
|
+
// If field contains arrows (nested field), use an alias to preserve the original name
|
|
172
|
+
if (field.includes('->')) {
|
|
173
|
+
return `c.${cosmosField} AS '${field}'`;
|
|
169
174
|
}
|
|
170
|
-
return `c.${
|
|
175
|
+
return `c.${cosmosField}`;
|
|
171
176
|
})
|
|
172
177
|
.join(', ')
|
|
173
178
|
: 'c';
|
|
@@ -192,7 +197,9 @@ class QueryConverter {
|
|
|
192
197
|
return '';
|
|
193
198
|
const sortClauses = sort
|
|
194
199
|
.map(({ field, ascending }) => {
|
|
195
|
-
|
|
200
|
+
// Convert arrow notation (->) to dot notation (.) for Cosmos DB
|
|
201
|
+
const cosmosField = field.replace(/->/g, '.');
|
|
202
|
+
const fieldPath = field === 'id' ? 'c.id' : `c.${cosmosField}`;
|
|
196
203
|
const direction = ascending ? 'ASC' : 'DESC';
|
|
197
204
|
return `${fieldPath} ${direction}`;
|
|
198
205
|
})
|
|
@@ -209,4 +216,4 @@ class QueryConverter {
|
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
218
|
exports.default = QueryConverter;
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3F1ZXJ5LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLE1BQXFCLGNBQWM7SUFBbkM7UUFDVSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDckIsZUFBVSxHQUFtQixFQUFFLENBQUM7SUFzUjFDLENBQUM7SUFwUkM7O09BRUc7SUFDSyxLQUFLO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsS0FBYztRQUNqQyxNQUFNLFNBQVMsR0FBRyxTQUFTLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7UUFDM0IsOERBQThEO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBWSxFQUFFLENBQUMsQ0FBQztRQUUvRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlLENBQUMsS0FBYSxFQUFFLFFBQWtCLEVBQUUsS0FBZTtRQUN4RSxrREFBa0Q7UUFDbEQscUVBQXFFO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUUvRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLFdBQVc7WUFDWCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLFNBQVMsU0FBUyxTQUFTLFVBQVUsQ0FBQztZQUU3RCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxtQkFBbUIsU0FBUyxRQUFRLFNBQVMsVUFBVSxDQUFDO1lBRWpFLFdBQVc7WUFDWCxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDMUMsT0FBTyxtQkFBbUIsU0FBUyxRQUFRLFNBQVMsVUFBVSxDQUFDO2dCQUNqRSxDQUFDO2dCQUVELE9BQU8sR0FBRyxTQUFTLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRXRELEtBQUssVUFBVTtnQkFDYixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUMxQyxPQUFPLGNBQWMsU0FBUyxTQUFTLFNBQVMsVUFBVSxDQUFDO2dCQUM3RCxDQUFDO2dCQUVELE9BQU8sR0FBRyxTQUFTLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRXZELEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDVixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUFFLE9BQU8sT0FBTyxDQUFDLENBQUMsZUFBZTtnQkFFeEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO29CQUV4RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE9BQU8sbUJBQW1CLFNBQVMsUUFBUSxTQUFTLFVBQVUsQ0FBQztvQkFDakUsQ0FBQztvQkFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUVuRCxPQUFPLENBQ0wsbUJBQW1CLFNBQVMsS0FBSyxTQUFTLE9BQU87d0JBQ2pELGtCQUFrQixTQUFTLFFBQVEsU0FBUyxVQUFVLENBQ3ZELENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUU1QyxPQUFPLGtCQUFrQixTQUFTLEtBQUssU0FBUyxHQUFHLENBQUM7WUFDdEQsQ0FBQztZQUVELEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUFFLE9BQU8sT0FBTyxDQUFDLENBQUMsY0FBYztnQkFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFNUMsT0FBTyxzQkFBc0IsU0FBUyxLQUFLLFNBQVMsR0FBRyxDQUFDO1lBQzFELENBQUM7WUFFRCxTQUFTO1lBQ1QsS0FBSyxVQUFVO2dCQUNiLE9BQU8sR0FBRyxTQUFTLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRXRELEtBQUssYUFBYTtnQkFDaEIsT0FBTyxHQUFHLFNBQVMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFdEQsVUFBVTtZQUNWLEtBQUssTUFBTSxDQUFDO1lBRVosY0FBYztZQUNkLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUU3QyxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxrQkFBa0IsU0FBUyxZQUFZLFNBQVMsSUFBSSxDQUFDO2dCQUM5RCxDQUFDO2dCQUVELE9BQU8sWUFBWSxTQUFTLEtBQUssU0FBUyxHQUFHLENBQUM7WUFDaEQsQ0FBQztZQUVELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsT0FBTyxZQUFZLFNBQVMsS0FBSyxTQUFTLEdBQUcsQ0FBQztZQUNoRCxDQUFDO1lBRUQsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzQyxPQUFPLGdCQUFnQixTQUFTLEtBQUssU0FBUyxHQUFHLENBQUM7WUFDcEQsQ0FBQztZQUVELEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsT0FBTyxjQUFjLFNBQVMsS0FBSyxTQUFTLEdBQUcsQ0FBQztZQUNsRCxDQUFDO1lBRUQsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzQyxPQUFPLFlBQVksU0FBUyxLQUFLLFNBQVMsR0FBRyxDQUFDO1lBQ2hELENBQUM7WUFFRCxtQkFBbUI7WUFDbkIsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXZDLE9BQU8sa0JBQWtCLFNBQVMsS0FBSyxTQUFTLEdBQUcsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN6QyxDQUFDO1lBRUQ7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssK0JBQStCLENBQUMsYUFBNkI7UUFDbkUsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU5QixJQUFLLGFBQXFDLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsYUFBb0MsQ0FBQztZQUV4RSxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3pELE1BQU0sT0FBTyxHQUFHLFVBQVU7aUJBQ3ZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBRW5DLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUssYUFBbUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsYUFBa0MsQ0FBQztZQUV0RSxnREFBZ0Q7WUFDaEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2QyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQ3BCLGFBQTZCLEVBQzdCLElBQVcsRUFDWCxVQUFxQjtRQUVyQiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsc0JBQXNCO1FBQ3RCLGdGQUFnRjtRQUNoRiwyREFBMkQ7UUFDM0QsdUZBQXVGO1FBQ3ZGLE1BQU0sWUFBWSxHQUNoQixVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxVQUFVO2lCQUNQLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUM7Z0JBRUQsZ0VBQWdFO2dCQUNoRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFOUMsc0ZBQXNGO2dCQUN0RixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxLQUFLLFdBQVcsUUFBUSxLQUFLLEdBQUcsQ0FBQztnQkFDMUMsQ0FBQztnQkFFRCxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZixDQUFDLENBQUMsR0FBRyxDQUFDO1FBRVYscUJBQXFCO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RSxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVoRSx3QkFBd0I7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXpFLDBCQUEwQjtRQUMxQixNQUFNLEtBQUssR0FBRyxVQUFVLFlBQVksV0FBVyxhQUFhLElBQUksZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFekYsT0FBTztZQUNMLEtBQUs7WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLElBQVc7UUFDakMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQyxNQUFNLFdBQVcsR0FBRyxJQUFJO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDNUIsZ0VBQWdFO1lBQ2hFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sU0FBUyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMvRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRTdDLE9BQU8sR0FBRyxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5CLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsYUFBNkI7UUFJakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUF4UkQsaUNBd1JDIn0=
|
|
@@ -7,8 +7,12 @@ export default class Serializer {
|
|
|
7
7
|
*/
|
|
8
8
|
static serialize(record: RecordData, shouldFlatten?: boolean): RecordData;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
|
|
10
|
+
* Remove Cosmos DB system fields that start with underscore
|
|
11
|
+
*/
|
|
12
|
+
private static removeCosmosSystemFields;
|
|
13
|
+
/**
|
|
14
|
+
* Flatten nested objects into arrow-notation fields and serialize values
|
|
15
|
+
* Example: {address: {city: "Paris"}} -> {"address->city": "Paris"}
|
|
12
16
|
*/
|
|
13
17
|
static flattenAndSerialize(record: RecordData): RecordData;
|
|
14
18
|
/**
|
|
@@ -20,11 +24,23 @@ export default class Serializer {
|
|
|
20
24
|
*/
|
|
21
25
|
private static isGeoPoint;
|
|
22
26
|
/**
|
|
23
|
-
* Unflatten
|
|
24
|
-
* Example: {"address
|
|
27
|
+
* Unflatten arrow-notation fields back to nested objects
|
|
28
|
+
* Example: {"address->city": "Paris"} -> {address: {city: "Paris"}}
|
|
25
29
|
* Used when writing data back to Cosmos DB
|
|
26
30
|
*/
|
|
27
31
|
static unflatten(record: RecordData): RecordData;
|
|
28
32
|
static serializeValue(value: unknown): unknown;
|
|
33
|
+
/**
|
|
34
|
+
* Deep merge two objects, properly handling nested objects
|
|
35
|
+
* Used when updating documents to preserve nested fields that aren't being modified
|
|
36
|
+
* @param target The original object
|
|
37
|
+
* @param source The patch to apply
|
|
38
|
+
* @returns Deeply merged object
|
|
39
|
+
*/
|
|
40
|
+
static deepMerge(target: RecordData, source: RecordData): RecordData;
|
|
41
|
+
/**
|
|
42
|
+
* Check if a value is a plain object (not an array, Date, or other special object)
|
|
43
|
+
*/
|
|
44
|
+
private static isPlainObject;
|
|
29
45
|
}
|
|
30
46
|
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/utils/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,UAAO,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/utils/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,UAAO,GAAG,UAAU;IAkBtE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAYvC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAoD1D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;OAEG;IAEH,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IA8BhD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAa9C;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU;IA2BpE;;OAEG;IAEH,OAAO,CAAC,MAAM,CAAC,aAAa;CAS7B"}
|
package/dist/utils/serializer.js
CHANGED
|
@@ -7,29 +7,43 @@ class Serializer {
|
|
|
7
7
|
* @param shouldFlatten Whether to flatten nested objects (default: true)
|
|
8
8
|
*/
|
|
9
9
|
static serialize(record, shouldFlatten = true) {
|
|
10
|
+
// Remove Cosmos DB system fields before serialization
|
|
11
|
+
const cleanedRecord = this.removeCosmosSystemFields(record);
|
|
10
12
|
if (shouldFlatten) {
|
|
11
|
-
return this.flattenAndSerialize(
|
|
13
|
+
return this.flattenAndSerialize(cleanedRecord);
|
|
12
14
|
}
|
|
13
15
|
// Legacy behavior: only serialize dates
|
|
14
|
-
Object.entries(
|
|
16
|
+
Object.entries(cleanedRecord).forEach(([name, value]) => {
|
|
15
17
|
if (value instanceof Date)
|
|
16
|
-
|
|
18
|
+
cleanedRecord[name] = this.serializeValue(value);
|
|
17
19
|
if (Array.isArray(value))
|
|
18
20
|
this.serializeValue(value); // the change is by references
|
|
19
21
|
if (value instanceof Object)
|
|
20
|
-
return this.serialize(
|
|
22
|
+
return this.serialize(cleanedRecord[name], false);
|
|
21
23
|
});
|
|
22
|
-
return
|
|
24
|
+
return cleanedRecord;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
|
-
*
|
|
26
|
-
|
|
27
|
+
* Remove Cosmos DB system fields that start with underscore
|
|
28
|
+
*/
|
|
29
|
+
static removeCosmosSystemFields(record) {
|
|
30
|
+
const result = {};
|
|
31
|
+
Object.entries(record).forEach(([key, value]) => {
|
|
32
|
+
if (!key.startsWith('_')) {
|
|
33
|
+
result[key] = value;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Flatten nested objects into arrow-notation fields and serialize values
|
|
40
|
+
* Example: {address: {city: "Paris"}} -> {"address->city": "Paris"}
|
|
27
41
|
*/
|
|
28
42
|
static flattenAndSerialize(record) {
|
|
29
43
|
const flattened = {};
|
|
30
44
|
const flatten = (obj, prefix = '') => {
|
|
31
45
|
Object.entries(obj).forEach(([key, value]) => {
|
|
32
|
-
const fullKey = prefix ? `${prefix}
|
|
46
|
+
const fullKey = prefix ? `${prefix}->${key}` : key;
|
|
33
47
|
// Handle null and undefined
|
|
34
48
|
if (value === null || value === undefined) {
|
|
35
49
|
flattened[fullKey] = value;
|
|
@@ -85,14 +99,14 @@ class Serializer {
|
|
|
85
99
|
value.coordinates.length === 2);
|
|
86
100
|
}
|
|
87
101
|
/**
|
|
88
|
-
* Unflatten
|
|
89
|
-
* Example: {"address
|
|
102
|
+
* Unflatten arrow-notation fields back to nested objects
|
|
103
|
+
* Example: {"address->city": "Paris"} -> {address: {city: "Paris"}}
|
|
90
104
|
* Used when writing data back to Cosmos DB
|
|
91
105
|
*/
|
|
92
106
|
static unflatten(record) {
|
|
93
107
|
const result = {};
|
|
94
108
|
Object.entries(record).forEach(([key, value]) => {
|
|
95
|
-
const keys = key.split('
|
|
109
|
+
const keys = key.split('->');
|
|
96
110
|
if (keys.length === 1) {
|
|
97
111
|
// No nesting, direct assignment
|
|
98
112
|
result[key] = value;
|
|
@@ -124,6 +138,43 @@ class Serializer {
|
|
|
124
138
|
}
|
|
125
139
|
return value;
|
|
126
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Deep merge two objects, properly handling nested objects
|
|
143
|
+
* Used when updating documents to preserve nested fields that aren't being modified
|
|
144
|
+
* @param target The original object
|
|
145
|
+
* @param source The patch to apply
|
|
146
|
+
* @returns Deeply merged object
|
|
147
|
+
*/
|
|
148
|
+
static deepMerge(target, source) {
|
|
149
|
+
const result = { ...target };
|
|
150
|
+
Object.entries(source).forEach(([key, sourceValue]) => {
|
|
151
|
+
const targetValue = result[key];
|
|
152
|
+
// If source value is null or undefined, use it directly
|
|
153
|
+
if (sourceValue === null || sourceValue === undefined) {
|
|
154
|
+
result[key] = sourceValue;
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// If both values are plain objects, merge them recursively
|
|
158
|
+
if (this.isPlainObject(targetValue) && this.isPlainObject(sourceValue)) {
|
|
159
|
+
result[key] = this.deepMerge(targetValue, sourceValue);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Otherwise, source value overwrites target value
|
|
163
|
+
result[key] = sourceValue;
|
|
164
|
+
});
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check if a value is a plain object (not an array, Date, or other special object)
|
|
169
|
+
*/
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
171
|
+
static isPlainObject(value) {
|
|
172
|
+
return (value !== null &&
|
|
173
|
+
typeof value === 'object' &&
|
|
174
|
+
!Array.isArray(value) &&
|
|
175
|
+
!(value instanceof Date) &&
|
|
176
|
+
!this.isGeoPoint(value));
|
|
177
|
+
}
|
|
127
178
|
}
|
|
128
179
|
exports.default = Serializer;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBcUIsVUFBVTtJQUM3Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFrQixFQUFFLGFBQWEsR0FBRyxJQUFJO1FBQ3ZELHNEQUFzRDtRQUN0RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEtBQUssWUFBWSxJQUFJO2dCQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtZQUNwRixJQUFJLEtBQUssWUFBWSxNQUFNO2dCQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBa0I7UUFDeEQsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFB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
|