@medusajs/utils
Version:
Medusa utilities functions shared by Medusa core and Modules
73 lines • 1.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.objectFromStringPath = objectFromStringPath;
/**
* Convert a collection of dot string into a nested object
* @example
* input: [
* order,
* order.items,
* order.swaps,
* order.swaps.additional_items,
* order.discounts,
* order.discounts.rule,
* order.claims,
* order.claims.additional_items,
* additional_items,
* additional_items.variant,
* return_order,
* return_order.items,
* return_order.shipping_method,
* return_order.shipping_method.tax_lines
* ]
* output: {
* "order": {
* "items": true,
* "swaps": {
* "additional_items": true
* },
* "discounts": {
* "rule": true
* },
* "claims": {
* "additional_items": true
* }
* },
* "additional_items": {
* "variant": true
* },
* "return_order": {
* "items": true,
* "shipping_method": {
* "tax_lines": true
* }
* }
* }
* @param collection
*/
function objectFromStringPath(collection) {
collection = collection.sort();
const output = {};
for (const relation of collection) {
if (!relation) {
continue;
}
if (relation.indexOf(".") > -1) {
const nestedRelations = relation.split(".");
let parent = output;
while (nestedRelations.length > 1) {
const nestedRelation = nestedRelations.shift();
parent = parent[nestedRelation] =
parent[nestedRelation] !== true &&
typeof parent[nestedRelation] === "object"
? parent[nestedRelation]
: {};
}
parent[nestedRelations[0]] = true;
continue;
}
output[relation] = output[relation] ?? true;
}
return output;
}
//# sourceMappingURL=object-from-string-path.js.map