This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

1 line
4.8 KiB
Plaintext
Raw Normal View History

2021-04-02 02:24:13 +03:00
{"version":3,"file":"mod-compiler.js","sourceRoot":"","sources":["../../src/plugins/mod-compiler.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AAGxB,sDAA6D;AAC7D,yDAAqE;AAErE;;;;GAIG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAsB,EACtB,KAAyD;IAEzD,MAAM,GAAG,+BAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAND,4CAMC;AAED,SAAS,QAAQ,CAAC,QAAyB,EAAE,KAAe;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,OAAO,aAAa,CAAC,MAAM,EAAE;QAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAG,CAAC;QACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAC3D,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACzB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,MAAM,GAA6B;IACvC,GAAG,EAAE;QACH,uBAAuB;QACvB,WAAW;QACX,gFAAgF;QAChF,WAAW;KACZ;IACD,OAAO,EAAE,CAAC,WAAW,CAAC;CACvB,CAAC;AACF;;;;GAIG;AACI,KAAK,UAAU,aAAa,CACjC,MAAsB,EACtB,EAAE,WAAW,EAAE,SAAS,EAAsD;;IAE9E,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,OAAC,MAAM,CAAC,IAAI,mCAAK,EAAgB,CAAC,EAAE;QACvF,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAmB,CAAC,EAAE;YACzD,SAAS;SACV;QAED,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,2GAA2G;YAC3G,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAE,CAAC,CAAC;YAEnD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACjE,MAAM,WAAW,GACf,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,+BAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEhF,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE;gBACpC,MAAM,UAAU,GAAG;oBACjB,WAAW;oBACX,WAAW;oBACX,mBAAmB;oBACnB,QAAQ,EAAE,YAA2B;oBACrC,OAAO;iBACR,CAAC;gBAEF,MAAM,OAAO,GAAG,MAAO,GAAW,iCAC7B,MAAM,KACT,UAAU,EAAE,IAAI,EAChB,UAAU,IACV,CAAC;gBAEH,kDAAkD;gBAClD,MAAM,GAAG,oCAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;gBAC3D,8CAA8C;gBAC9C,OAAO,MAAM,CAAC,UAAU,CAAC;gBACzB,8CAA8C;gBAC9C,OAAO,MAAM,CAAC,UAAU,CAAC;aAC1B;SACF;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA5CD,sCA4CC","sourcesContent":["import path from 'path';\n\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { resolveModResults, withBaseMods } from './compiler-plugins';\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: { projectRoot: string; platforms?: ModPlatform[] }\n): Promise<ExportedConfig> {\n config = withBaseMods(config);\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n android: ['dangerous'],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n { projectRoot, platforms }: { projectRoot: string; platforms?: ModPlatform[] }\n): Promise<ExportedConfig> {\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName]!);\n\n const platformProjectRoot = path.join(projectRoot, platformName)