MCPcopy Index your code
hub / github.com/lingodotdev/lingo.dev / createDenormalizeLoader

Function createDenormalizeLoader

packages/cli/src/cli/loaders/flat.ts:47–91  ·  view source on GitHub ↗
(
  options?: FlatLoaderOptions,
)

Source from the content-addressed store, hash-verified

45};
46
47function createDenormalizeLoader(
48 options?: FlatLoaderOptions,
49): ILoader<Record<string, any>, DenormalizeResult> {
50 return createLoader({
51 pull: async (locale, input) => {
52 const inputDenormalized = denormalizeObjectKeys(input || {});
53
54 // First pass: extract preserved objects before flattening (if predicate provided)
55 const preservedObjects: Record<string, any> = {};
56 const nonPreservedInput: Record<string, any> = {};
57
58 for (const [key, value] of Object.entries(inputDenormalized)) {
59 if (options?.shouldPreserveObject?.(value)) {
60 preservedObjects[key] = value;
61 } else {
62 nonPreservedInput[key] = value;
63 }
64 }
65
66 // Flatten only non-preserved objects
67 const flattened: Record<string, string> = flatten(nonPreservedInput, {
68 delimiter: "/",
69 transformKey(key) {
70 return encodeURIComponent(String(key));
71 },
72 });
73
74 // Merge preserved objects back (they stay as objects, not flattened)
75 // BUT: encode their keys too!
76 const denormalized: Record<string, any> = { ...flattened };
77
78 for (const [key, value] of Object.entries(preservedObjects)) {
79 const encodedKey = encodeURIComponent(String(key));
80 denormalized[encodedKey] = value;
81 }
82
83 const keysMap = buildDenormalizedKeysMap(denormalized);
84 return { denormalized, keysMap };
85 },
86 push: async (locale, { denormalized }) => {
87 const normalized = normalizeObjectKeys(denormalized);
88 return normalized;
89 },
90 });
91}
92
93function createNormalizeLoader(): ILoader<
94 DenormalizeResult,

Callers 1

createFlatLoaderFunction · 0.85

Calls 4

createLoaderFunction · 0.90
denormalizeObjectKeysFunction · 0.85
buildDenormalizedKeysMapFunction · 0.85
normalizeObjectKeysFunction · 0.85

Tested by

no test coverage detected