CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
helpers.mjs139 linesDownload Raw Back to dist
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 
basant307/AI_Governance_Project · CoolFace