/
dimamir
/
medusa
Обзор
Документация
Войти
/
dimamir
/
medusa
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/core/utils/src/common/object-from-string-path.ts
78 строк
2 KB
Adrien de Peretti
chore(): start moving some packages to the core directory (#7215)
03 май 2024, 14:37
Не верифицирован
03 май 2024, 14:37
bbccd64
Код
Авторство
О чём код?
/** * 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 */ export function objectFromStringPath( collection: string[] ): Record<string, any> { collection = collection.sort() const output: Record<string, any> = {} 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() as string parent = parent[nestedRelation] = parent[nestedRelation] !== true && typeof parent[nestedRelation] === "object" ? parent[nestedRelation] : {} } parent[nestedRelations[0]] = true continue } output[relation] = output[relation] ?? true } return output }