flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
1 lines • 5.09 kB
Source Map (JSON)
{"version":3,"file":"update-build-config.cjs","sources":["../../../src/cli/utils/update-build-config.ts"],"sourcesContent":["import { parse } from \"@typescript-eslint/typescript-estree\";\nimport * as recast from \"recast\";\nimport { addImport } from \"./add-import\";\n\n/**\n * Updates the build configuration by adding a plugin to the build options.\n *\n * @param {Object} options - The options for updating the build config.\n * @param {string} options.content - The source code content to modify.\n * @param {string} [options.pluginName='flowbiteReact'] - The name to use for the imported plugin.\n * @param {string} options.pluginImportPath - The import path for the plugin.\n * @returns {string} The modified source code with the plugin added.\n */\nexport function updateBuildConfig({\n content,\n pluginName,\n pluginImportPath,\n}: {\n content: string;\n pluginName: string;\n pluginImportPath: string;\n}): string {\n // Parse the content first\n const ast = recast.parse(content, {\n parser: {\n parse: (source: string) =>\n parse(source, {\n loc: true,\n range: true,\n tokens: true,\n comment: true,\n }),\n },\n });\n\n const b = recast.types.builders;\n\n // Visit the AST to find build({...}) calls\n recast.types.visit(ast, {\n visitCallExpression(path) {\n const { node } = path;\n\n // Check if this is a build() call\n if (\n node.callee.type === \"Identifier\" &&\n node.callee.name === \"build\" &&\n node.arguments.length > 0 &&\n node.arguments[0].type === \"ObjectExpression\"\n ) {\n const buildOptions = node.arguments[0];\n\n // Find or create plugins property\n let pluginsProperty = buildOptions.properties.find(\n (p): p is recast.types.namedTypes.Property =>\n p.type === \"Property\" &&\n ((p.key.type === \"Identifier\" && p.key.name === \"plugins\") ||\n (p.key.type === \"Literal\" && p.key.value === \"plugins\")),\n );\n\n if (!pluginsProperty) {\n // Create new plugins array with our plugin\n pluginsProperty = b.property(\"init\", b.identifier(\"plugins\"), b.arrayExpression([b.identifier(pluginName)]));\n buildOptions.properties.push(pluginsProperty);\n } else if (pluginsProperty.value.type === \"ArrayExpression\") {\n // Check if plugin already exists in array\n const hasPlugin = pluginsProperty.value.elements.some(\n (el) => el?.type === \"Identifier\" && el.name === pluginName,\n );\n\n if (!hasPlugin) {\n // Add plugin to existing array\n pluginsProperty.value.elements.push(b.identifier(pluginName));\n }\n }\n }\n\n return false;\n },\n });\n\n // Get the modified code\n let modifiedCode = recast.print(ast).code;\n\n // Now add the import using the existing utility\n modifiedCode = addImport({\n content: modifiedCode,\n importName: pluginName,\n importPath: pluginImportPath,\n });\n\n return modifiedCode;\n}\n"],"names":["recast","parse","addImport"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,iBAAiB,CAAC;AAClC,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE;AACF,CAAC,EAAE;AACH,EAAE,MAAM,GAAG,GAAGA,iBAAM,CAAC,KAAK,CAAC,OAAO,EAAE;AACpC,IAAI,MAAM,EAAE;AACZ,MAAM,KAAK,EAAE,CAAC,MAAM,KAAKC,sBAAK,CAAC,MAAM,EAAE;AACvC,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,OAAO,EAAE;AACjB,OAAO;AACP;AACA,GAAG,CAAC;AACJ,EAAE,MAAM,CAAC,GAAGD,iBAAM,CAAC,KAAK,CAAC,QAAQ;AACjC,EAAEA,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AAC1B,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;AAC3B,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE;AAC3J,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI;AAC1D,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;AAC3J,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,UAAU,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtH,UAAU,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;AACvD,SAAS,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACrE,UAAU,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;AAC/D,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC,IAAI,KAAK;AAC7D,WAAW;AACX,UAAU,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAY,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzE;AACA;AACA;AACA,MAAM,OAAO,KAAK;AAClB;AACA,GAAG,CAAC;AACJ,EAAE,IAAI,YAAY,GAAGA,iBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;AAC3C,EAAE,YAAY,GAAGE,mBAAS,CAAC;AAC3B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO,YAAY;AACrB;;;;"}