{"version":3,"file":"utils2.cjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["/**\n * Derive the middle key, i.e. the segment of the render key located between\n * the initial key (path to parameters root) and the property to render.\n *\n * Used by `nodeText()` to handle nested params.\n *\n * Location: `n8n-nodes-base.nodes.github.nodeView.<middleKey>.placeholder`\n */\nexport function deriveMiddleKey(path: string, parameter: { name: string; type?: string }) {\n\tlet middleKey = parameter.name;\n\n\tif (isTopLevelCollection(path, parameter) || isNestedInCollectionLike(path)) {\n\t\tconst pathSegments = normalize(path).split('.');\n\t\tmiddleKey = insertOptionsAndValues(pathSegments).join('.');\n\t}\n\n\tif (isNestedCollection(path, parameter) || isFixedCollection(path, parameter)) {\n\t\tconst pathSegments = [...normalize(path).split('.'), parameter.name];\n\t\tmiddleKey = insertOptionsAndValues(pathSegments).join('.');\n\t}\n\n\treturn middleKey;\n}\n\n/**\n * Check if a param path is for a param nested inside a `collection` or\n * `fixedCollection` param.\n */\nexport const isNestedInCollectionLike = (path: string) => path.split('.').length >= 3;\n\nconst isTopLevelCollection = (path: string, parameter: { type?: string }) =>\n\tpath.split('.').length === 2 && parameter.type === 'collection';\n\nconst isNestedCollection = (path: string, parameter: { type?: string }) =>\n\tpath.split('.').length > 2 && parameter.type === 'collection';\n\n/**\n * Check if the param is a normal `fixedCollection`, i.e. a FC other than the wrapper\n * that sits at the root of a node's top-level param and contains all of them.\n */\nconst isFixedCollection = (path: string, parameter: { type?: string }) =>\n\tparameter.type === 'fixedCollection' && path !== 'parameters';\n\n/**\n * Remove all indices and the `parameters.` prefix from a parameter path.\n *\n * Example: `parameters.a[0].b` → `a.b`\n */\nexport const normalize = (path: string) => path.replace(/\\[.*?\\]/g, '').replace('parameters.', '');\n\n/**\n * Insert `'options'` and `'values'` on an alternating basis in a string array of\n * indefinite length. Helper to create a valid render key for a collection-like param.\n *\n * Example: `['a', 'b', 'c']` → `['a', 'options', 'b', 'values', 'c']`\n */\nexport const insertOptionsAndValues = (pathSegments: string[]) => {\n\treturn pathSegments.reduce<string[]>((acc, cur, i) => {\n\t\tacc.push(cur);\n\n\t\tif (i === pathSegments.length - 1) return acc;\n\n\t\tacc.push(i % 2 === 0 ? 'options' : 'values');\n\n\t\treturn acc;\n\t}, []);\n};\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,gBAAgB,MAAc,WAA4C;CACzF,IAAI,YAAY,UAAU;AAE1B,KAAI,qBAAqB,MAAM,UAAU,IAAI,yBAAyB,KAAK,CAE1E,aAAY,uBADS,UAAU,KAAK,CAAC,MAAM,IAAI,CACC,CAAC,KAAK,IAAI;AAG3D,KAAI,mBAAmB,MAAM,UAAU,IAAI,kBAAkB,MAAM,UAAU,CAE5E,aAAY,uBADS,CAAC,GAAG,UAAU,KAAK,CAAC,MAAM,IAAI,EAAE,UAAU,KAAK,CACpB,CAAC,KAAK,IAAI;AAG3D,QAAO;;;;;;AAOR,MAAa,4BAA4B,SAAiB,KAAK,MAAM,IAAI,CAAC,UAAU;AAEpF,MAAM,wBAAwB,MAAc,cAC3C,KAAK,MAAM,IAAI,CAAC,WAAW,KAAK,UAAU,SAAS;AAEpD,MAAM,sBAAsB,MAAc,cACzC,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,UAAU,SAAS;;;;;AAMlD,MAAM,qBAAqB,MAAc,cACxC,UAAU,SAAS,qBAAqB,SAAS;;;;;;AAOlD,MAAa,aAAa,SAAiB,KAAK,QAAQ,YAAY,GAAG,CAAC,QAAQ,eAAe,GAAG;;;;;;;AAQlG,MAAa,0BAA0B,iBAA2B;AACjE,QAAO,aAAa,QAAkB,KAAK,KAAK,MAAM;AACrD,MAAI,KAAK,IAAI;AAEb,MAAI,MAAM,aAAa,SAAS,EAAG,QAAO;AAE1C,MAAI,KAAK,IAAI,MAAM,IAAI,YAAY,SAAS;AAE5C,SAAO;IACL,EAAE,CAAC"}