basant307/AI_Governance_Project
048
1import { MagicastError, generateCode, parseExpression, builders } from './index.mjs';2import 'node:fs';3import 'fs';4import 'source-map-js';5import '@babel/parser';6 7function deepMergeObject(magicast, object) {8 if (typeof object === "object") {9 for (const key in object) {10 if (typeof magicast[key] === "object" && typeof object[key] === "object") {11 deepMergeObject(magicast[key], object[key]);12 } else {13 magicast[key] = object[key];14 }15 }16 }17}18 19function getDefaultExportOptions(magicast) {20 return configFromNode(magicast.exports.default);21}22function getConfigFromVariableDeclaration(magicast) {23 if (magicast.exports.default.$type !== "identifier") {24 throw new MagicastError(25 `Not supported: Cannot modify this kind of default export (${magicast.exports.default.$type})`26 );27 }28 const configDecalarationId = magicast.exports.default.$name;29 for (const node of magicast.$ast.body) {30 if (node.type === "VariableDeclaration") {31 for (const declaration of node.declarations) {32 if (declaration.id.type === "Identifier" && declaration.id.name === configDecalarationId && declaration.init) {33 const init = declaration.init.type === "TSSatisfiesExpression" ? declaration.init.expression : declaration.init;34 const code = generateCode(init).code;35 const configExpression = parseExpression(code);36 return {37 declaration,38 config: configFromNode(configExpression)39 };40 }41 }42 }43 }44 throw new MagicastError("Couldn't find config declaration");45}46function configFromNode(node) {47 if (node.$type === "function-call") {48 return node.$args[0];49 }50 return node;51}52 53function addNuxtModule(magicast, name, optionsKey, options) {54 const config = getDefaultExportOptions(magicast);55 config.modules || (config.modules = []);56 if (!config.modules.includes(name)) {57 config.modules.push(name);58 }59 if (optionsKey) {60 config[optionsKey] || (config[optionsKey] = {});61 deepMergeObject(config[optionsKey], options);62 }63}64 65function addVitePlugin(magicast, plugin) {66 const config = getDefaultExportOptions(magicast);67 if (config.$type === "identifier") {68 insertPluginIntoVariableDeclarationConfig(magicast, plugin);69 } else {70 insertPluginIntoConfig(plugin, config);71 }72 magicast.imports.$prepend({73 from: plugin.from,74 local: plugin.constructor,75 imported: plugin.imported || "default"76 });77 return true;78}79function findVitePluginCall(magicast, plugin) {80 const _plugin = typeof plugin === "string" ? { from: plugin, imported: "default" } : plugin;81 const config = getDefaultExportOptions(magicast);82 const constructor = magicast.imports.$items.find(83 (i) => i.from === _plugin.from && i.imported === (_plugin.imported || "default")84 )?.local;85 return config.plugins?.find(86 (p) => p && p.$type === "function-call" && p.$callee === constructor87 );88}89function updateVitePluginConfig(magicast, plugin, handler) {90 const item = findVitePluginCall(magicast, plugin);91 if (!item) {92 return false;93 }94 if (typeof handler === "function") {95 item.$args = handler(item.$args);96 } else if (item.$args[0]) {97 deepMergeObject(item.$args[0], handler);98 } else {99 item.$args[0] = handler;100 }101 return true;102}103function insertPluginIntoVariableDeclarationConfig(magicast, plugin) {104 const { config: configObject, declaration } = getConfigFromVariableDeclaration(magicast);105 insertPluginIntoConfig(plugin, configObject);106 if (declaration.init) {107 if (declaration.init.type === "ObjectExpression") {108 declaration.init = generateCode(configObject).code;109 } else if (declaration.init.type === "CallExpression" && declaration.init.callee.type === "Identifier") {110 declaration.init = generateCode(111 builders.functionCall(declaration.init.callee.name, configObject)112 ).code;113 } else if (declaration.init.type === "TSSatisfiesExpression") {114 if (declaration.init.expression.type === "ObjectExpression") {115 declaration.init.expression = generateCode(configObject).code;116 }117 if (declaration.init.expression.type === "CallExpression" && declaration.init.expression.callee.type === "Identifier") {118 declaration.init.expression = generateCode(119 builders.functionCall(120 declaration.init.expression.callee.name,121 configObject122 )123 ).code;124 }125 }126 }127}128function insertPluginIntoConfig(plugin, config) {129 const insertionIndex = plugin.index ?? config.plugins?.length ?? 0;130 config.plugins || (config.plugins = []);131 config.plugins.splice(132 insertionIndex,133 0,134 plugin.options ? builders.functionCall(plugin.constructor, plugin.options) : builders.functionCall(plugin.constructor)135 );136}137 138export { addNuxtModule, addVitePlugin, deepMergeObject, findVitePluginCall, getConfigFromVariableDeclaration, getDefaultExportOptions, updateVitePluginConfig };139 