powerlines 0.37.52 → 0.37.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/api.cjs +2 -2
  2. package/dist/api.js +1 -1
  3. package/dist/astro.cjs +4 -4
  4. package/dist/astro.js +3 -3
  5. package/dist/{chunk-QUFFWJL6.js → chunk-4DWSMUC2.js} +3 -3
  6. package/dist/chunk-5WCKSLT7.cjs +12 -0
  7. package/dist/{chunk-5PK5TFXO.js → chunk-C25WKEO2.js} +3 -3
  8. package/dist/{chunk-7UVRZMWS.js → chunk-DKYPRXSW.js} +3 -3
  9. package/dist/{chunk-TOYVEYRZ.cjs → chunk-DMSPAYHA.cjs} +7 -6
  10. package/dist/{chunk-N66TID6P.cjs → chunk-EHGIUEFJ.cjs} +4 -4
  11. package/dist/{chunk-FSKKL3DG.js → chunk-FBPHSZXY.js} +3 -3
  12. package/dist/{chunk-SRFAONEI.cjs → chunk-G5QXE5QH.cjs} +5 -5
  13. package/dist/chunk-KE67B233.cjs +12 -0
  14. package/dist/{chunk-VF3RHRYB.cjs → chunk-PTMMULXX.cjs} +4 -4
  15. package/dist/{chunk-YNYZ2JDG.js → chunk-RPEWOQOR.js} +3 -3
  16. package/dist/{chunk-AMGXLODB.js → chunk-WVLRUTAI.js} +7 -6
  17. package/dist/esbuild.cjs +6 -6
  18. package/dist/esbuild.js +3 -3
  19. package/dist/farm.cjs +3 -3
  20. package/dist/farm.js +2 -2
  21. package/dist/index.cjs +10 -10
  22. package/dist/index.js +2 -2
  23. package/dist/lib/{chunk-PH7RTWRA.cjs → chunk-4DLYGQZC.cjs} +6 -6
  24. package/dist/lib/{chunk-PH7RTWRA.cjs.map → chunk-4DLYGQZC.cjs.map} +1 -1
  25. package/dist/lib/{chunk-XKEHVYDR.cjs → chunk-5RGBODNU.cjs} +3 -3
  26. package/dist/lib/chunk-5RGBODNU.cjs.map +1 -0
  27. package/dist/lib/{chunk-W6GDOBDD.cjs → chunk-6CXIQSZI.cjs} +19 -19
  28. package/dist/lib/{chunk-W6GDOBDD.cjs.map → chunk-6CXIQSZI.cjs.map} +1 -1
  29. package/dist/lib/{chunk-2XCDEMMO.cjs → chunk-C2SIHISU.cjs} +4 -4
  30. package/dist/lib/{chunk-2XCDEMMO.cjs.map → chunk-C2SIHISU.cjs.map} +1 -1
  31. package/dist/lib/{chunk-RUYBF2C4.js → chunk-CJI6MHJH.js} +3 -3
  32. package/dist/lib/{chunk-RUYBF2C4.js.map → chunk-CJI6MHJH.js.map} +1 -1
  33. package/dist/lib/{chunk-DBDWDFCZ.js → chunk-DSQDA3AX.js} +6 -5
  34. package/dist/lib/chunk-DSQDA3AX.js.map +1 -0
  35. package/dist/lib/{chunk-N7V7ZMRG.cjs → chunk-DUROA7IY.cjs} +17 -17
  36. package/dist/lib/{chunk-N7V7ZMRG.cjs.map → chunk-DUROA7IY.cjs.map} +1 -1
  37. package/dist/lib/{chunk-VZCNKJBT.js → chunk-GQNZENVF.js} +3 -3
  38. package/dist/lib/{chunk-VZCNKJBT.js.map → chunk-GQNZENVF.js.map} +1 -1
  39. package/dist/lib/{chunk-2LZ2KCSP.js → chunk-O3TMMYSA.js} +3 -3
  40. package/dist/lib/chunk-O3TMMYSA.js.map +1 -0
  41. package/dist/lib/{chunk-7MN6TDXE.js → chunk-P5JP3DHH.js} +5 -5
  42. package/dist/lib/{chunk-7MN6TDXE.js.map → chunk-P5JP3DHH.js.map} +1 -1
  43. package/dist/lib/{chunk-BBQKBOUU.js → chunk-S52XMZ4T.js} +4 -4
  44. package/dist/lib/{chunk-BBQKBOUU.js.map → chunk-S52XMZ4T.js.map} +1 -1
  45. package/dist/lib/{chunk-S7QVA3TS.cjs → chunk-XOLWPP4K.cjs} +8 -7
  46. package/dist/lib/chunk-XOLWPP4K.cjs.map +1 -0
  47. package/dist/lib/contexts/api-context.cjs +7 -7
  48. package/dist/lib/contexts/api-context.js +6 -6
  49. package/dist/lib/contexts/context.cjs +4 -4
  50. package/dist/lib/contexts/context.js +3 -3
  51. package/dist/lib/contexts/environment-context.cjs +5 -5
  52. package/dist/lib/contexts/environment-context.js +4 -4
  53. package/dist/lib/contexts/index.cjs +9 -9
  54. package/dist/lib/contexts/index.js +6 -6
  55. package/dist/lib/fs/index.cjs +3 -3
  56. package/dist/lib/fs/index.js +2 -2
  57. package/dist/lib/fs/storage/file-system.cjs +2 -2
  58. package/dist/lib/fs/storage/file-system.js +1 -1
  59. package/dist/lib/fs/storage/index.cjs +2 -2
  60. package/dist/lib/fs/storage/index.js +1 -1
  61. package/dist/lib/fs/vfs.cjs +3 -3
  62. package/dist/lib/fs/vfs.js +2 -2
  63. package/dist/lib/index.cjs +16 -16
  64. package/dist/lib/index.js +8 -8
  65. package/dist/lib/unplugin/factory.cjs +8 -8
  66. package/dist/lib/unplugin/factory.js +7 -7
  67. package/dist/lib/unplugin/index.cjs +8 -8
  68. package/dist/lib/unplugin/index.js +7 -7
  69. package/dist/next.cjs +4 -4
  70. package/dist/next.js +3 -3
  71. package/dist/nuxt.cjs +8 -8
  72. package/dist/nuxt.js +4 -4
  73. package/dist/rolldown.cjs +6 -6
  74. package/dist/rolldown.js +3 -3
  75. package/dist/rollup.cjs +3 -3
  76. package/dist/rollup.js +2 -2
  77. package/dist/rspack.cjs +3 -3
  78. package/dist/rspack.js +2 -2
  79. package/dist/tsdown.cjs +4 -4
  80. package/dist/tsdown.js +3 -3
  81. package/dist/tsup.cjs +4 -4
  82. package/dist/tsup.js +3 -3
  83. package/dist/unloader.cjs +3 -3
  84. package/dist/unloader.js +2 -2
  85. package/dist/unplugin.cjs +8 -8
  86. package/dist/unplugin.js +4 -4
  87. package/dist/vite.cjs +6 -6
  88. package/dist/vite.js +3 -3
  89. package/dist/webpack.cjs +6 -6
  90. package/dist/webpack.js +3 -3
  91. package/package.json +3 -3
  92. package/dist/chunk-7D34DSP6.cjs +0 -12
  93. package/dist/chunk-XTHKTQU5.cjs +0 -12
  94. package/dist/lib/chunk-2LZ2KCSP.js.map +0 -1
  95. package/dist/lib/chunk-DBDWDFCZ.js.map +0 -1
  96. package/dist/lib/chunk-S7QVA3TS.cjs.map +0 -1
  97. package/dist/lib/chunk-XKEHVYDR.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/contexts/environment-context.ts"],"names":["PowerlinesEnvironmentContext","PowerlinesContext","fromConfig","workspaceConfig","config","context","init","powerlinesPath","resolvePackage","Error","environment","plugins","hooks","addPlugin","plugin","resolvedPlugin","isFunction","applyToEnvironment","result","Promise","resolve","isObject","Object","keys","length","isPluginConfig","$$internal","isPlugin","createPluginContext","push","filter","key","PLUGIN_NON_HOOK_FIELDS","includes","reduce","ret","hook","isPluginHookField","pluginHook","isPluginHook","preEnforced","preOrdered","normal","postEnforced","postOrdered","enforce","hookListOrder","bucket","addPluginHook","order","isUnpluginHookField","unpluginPlugin","isSetObject","field","variantField","warn","String","selectHooks","options","isUnpluginHookKey","variant","split","isUnpluginBuilderVariant","fieldHooks","mapHooksToResult","hooksList","map","find","p","name","handler","resolvedConfig"],"mappings":"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","file":"chunk-RUYBF2C4.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isObject } from \"@stryke/type-checks/is-object\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { ArrayValues } from \"@stryke/types/array\";\nimport { AnyFunction } from \"@stryke/types/base\";\nimport {\n addPluginHook,\n isPlugin,\n isPluginConfig,\n isPluginHook,\n isPluginHookField,\n isUnpluginHookField,\n isUnpluginHookKey\n} from \"../../plugin-utils/helpers\";\nimport { PluginConfig, WorkspaceConfig } from \"../../types/config\";\nimport {\n EnvironmentContext,\n EnvironmentContextPlugin,\n PluginContext,\n SelectHookResult,\n SelectHookResultItem,\n SelectHooksOptions\n} from \"../../types/context\";\nimport {\n HookFields,\n HookListOrders,\n HooksList,\n InferHooksListItem,\n PluginHooksListItem,\n UnpluginHookList,\n UnpluginHooksListItem\n} from \"../../types/hooks\";\nimport {\n Plugin,\n PLUGIN_NON_HOOK_FIELDS,\n PluginHook,\n PluginHookFields\n} from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { UnpluginOptions } from \"../../types/unplugin\";\nimport { isUnpluginBuilderVariant } from \"../unplugin/helpers\";\nimport { PowerlinesContext } from \"./context\";\nimport { createPluginContext } from \"./plugin-context\";\n\nexport class PowerlinesEnvironmentContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements EnvironmentContext<TResolvedConfig>\n{\n /**\n * The hooks registered by plugins in this environment\n */\n #hooks: HooksList<PluginContext<TResolvedConfig>> = {} as HooksList<\n PluginContext<TResolvedConfig>\n >;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceConfig - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static async fromConfig<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceConfig: WorkspaceConfig,\n config: TResolvedConfig\n ): Promise<PowerlinesEnvironmentContext<TResolvedConfig>> {\n const context = new PowerlinesEnvironmentContext<TResolvedConfig>(\n config,\n workspaceConfig\n );\n await context.init();\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * The resolved environment configuration\n */\n public environment!: EnvironmentResolvedConfig;\n\n /**\n * The list of plugins applied to this environment\n */\n public plugins: EnvironmentContextPlugin<TResolvedConfig>[] = [];\n\n /**\n * The resolved configuration options\n */\n public override get config(): TResolvedConfig {\n return super.config;\n }\n\n public get hooks(): HooksList<PluginContext<TResolvedConfig>> {\n return this.#hooks;\n }\n\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n let resolvedPlugin = plugin;\n if (isFunction(plugin.applyToEnvironment)) {\n const result = (await Promise.resolve(\n plugin.applyToEnvironment(this.environment) as Promise<any>\n )) as boolean | PluginConfig<PluginContext<TResolvedConfig>>;\n\n if (!result || (isObject(result) && Object.keys(result).length === 0)) {\n return;\n }\n\n if (isPluginConfig<PluginContext<TResolvedConfig>>(result)) {\n return this.$$internal.addPlugin(result);\n }\n\n resolvedPlugin = isPlugin<PluginContext<TResolvedConfig>>(result)\n ? result\n : plugin;\n }\n\n const context = createPluginContext<TResolvedConfig>(resolvedPlugin, this);\n\n this.plugins.push({\n plugin: resolvedPlugin,\n context\n });\n\n this.#hooks = Object.keys(resolvedPlugin)\n .filter(\n key =>\n !PLUGIN_NON_HOOK_FIELDS.includes(\n key as ArrayValues<typeof PLUGIN_NON_HOOK_FIELDS>\n )\n )\n .reduce((ret, key) => {\n const hook = key as HookFields<PluginContext<TResolvedConfig>>;\n\n if (isPluginHookField<PluginContext<TResolvedConfig>>(hook)) {\n const pluginHook = resolvedPlugin[hook];\n if (!isPluginHook(pluginHook)) {\n return ret;\n }\n\n ret[hook] ??= {\n preEnforced: [],\n preOrdered: [],\n normal: [],\n postEnforced: [],\n postOrdered: []\n };\n\n if (resolvedPlugin.enforce) {\n const hookListOrder =\n `${resolvedPlugin.enforce}Enforced` as HookListOrders;\n ret[hook][hookListOrder] ??= [];\n\n const bucket = ret[hook][hookListOrder];\n addPluginHook<\n PluginContext<TResolvedConfig>,\n PluginHookFields<PluginContext<TResolvedConfig>>\n >(context, resolvedPlugin, pluginHook, bucket);\n\n return ret;\n }\n\n if (isFunction(pluginHook) || !pluginHook.order) {\n ret[hook].normal ??= [];\n\n const bucket = ret[hook].normal;\n addPluginHook<\n PluginContext<TResolvedConfig>,\n PluginHookFields<PluginContext<TResolvedConfig>>\n >(context, resolvedPlugin, pluginHook, bucket);\n\n return ret;\n }\n\n const hookListOrder = `${pluginHook.order}Ordered` as HookListOrders;\n ret[hook][hookListOrder] ??= [];\n\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][hookListOrder] as PluginHooksListItem<\n PluginContext<TResolvedConfig>\n >[]\n );\n\n return ret;\n } else if (isUnpluginHookField(hook)) {\n const unpluginPlugin = resolvedPlugin[hook];\n if (!isSetObject(unpluginPlugin)) {\n return ret;\n }\n\n for (const field of Object.keys(unpluginPlugin)) {\n const variantField = field as keyof UnpluginOptions[typeof hook];\n\n const pluginHook = unpluginPlugin[\n variantField\n ] as PluginHook<AnyFunction>;\n if (!isPluginHook(pluginHook)) {\n continue;\n }\n\n ret[hook] ??= {};\n (ret[hook][variantField] as UnpluginHookList<\n PluginContext<TResolvedConfig>,\n typeof variantField\n >) ??= {\n preEnforced: [],\n preOrdered: [],\n normal: [],\n postEnforced: [],\n postOrdered: []\n };\n\n if (resolvedPlugin.enforce) {\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][variantField][\n `${resolvedPlugin.enforce}Enforced`\n ] as UnpluginHooksListItem<PluginContext<TResolvedConfig>>[]\n );\n\n return ret;\n }\n\n if (isFunction(pluginHook) || !pluginHook.order) {\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n (\n ret[hook][variantField] as UnpluginHookList<\n PluginContext<TResolvedConfig>,\n typeof variantField\n >\n ).normal!\n );\n\n return ret;\n }\n\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][variantField][\n `${pluginHook.order}Ordered`\n ] as UnpluginHooksListItem<PluginContext<TResolvedConfig>>[]\n );\n }\n } else {\n this.warn(`Unknown plugin hook field: ${String(hook)}`);\n }\n\n return ret;\n }, this.hooks);\n }\n\n /**\n * Retrieves the hook handlers for a specific hook name\n */\n public selectHooks<TKey extends string>(\n key: TKey,\n options?: SelectHooksOptions\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> {\n const result = [] as SelectHookResult<PluginContext<TResolvedConfig>, TKey>;\n\n if (isUnpluginHookKey(key)) {\n const variant = String(key).split(\":\")[0];\n if (isUnpluginBuilderVariant(variant)) {\n const hooks = this.hooks[variant];\n if (hooks) {\n const field = String(key).split(\":\")[1] as keyof typeof hooks;\n if (field && hooks[field]) {\n const fieldHooks = hooks[field] as Record<\n HookListOrders,\n InferHooksListItem<PluginContext<TResolvedConfig>, TKey>[]\n >;\n\n if (options?.order) {\n const mapHooksToResult = (\n hooksList: InferHooksListItem<\n PluginContext<TResolvedConfig>,\n TKey\n >[]\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> =>\n hooksList.map(hook => {\n const plugin = this.plugins.find(\n p => p.plugin.name === hook.plugin.name\n );\n if (!plugin) {\n throw new Error(\n `Could not find plugin context for plugin \"${\n hook.plugin.name\n }\".`\n );\n }\n\n return {\n handler: hook.handler,\n plugin: hook.plugin,\n context: plugin.context\n } as SelectHookResultItem<\n PluginContext<TResolvedConfig>,\n TKey\n >;\n });\n\n if (options?.order === \"pre\") {\n result.push(...mapHooksToResult(fieldHooks.preOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.preEnforced ?? []));\n } else if (options?.order === \"post\") {\n result.push(...mapHooksToResult(fieldHooks.postOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.postEnforced ?? []));\n } else {\n result.push(...mapHooksToResult(fieldHooks.normal ?? []));\n }\n } else {\n result.push(...this.selectHooks(key, { order: \"pre\" }));\n result.push(...this.selectHooks(key, { order: \"normal\" }));\n result.push(...this.selectHooks(key, { order: \"post\" }));\n }\n }\n }\n }\n } else if (isPluginHookField<PluginContext<TResolvedConfig>>(key)) {\n if (this.hooks[key]) {\n const fieldHooks = this.hooks[key] as Record<\n HookListOrders,\n InferHooksListItem<PluginContext<TResolvedConfig>, TKey>[]\n >;\n\n if (options?.order) {\n const mapHooksToResult = (\n hooksList: InferHooksListItem<\n PluginContext<TResolvedConfig>,\n TKey\n >[]\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> =>\n hooksList.map(hook => {\n const plugin = this.plugins.find(\n p => p.plugin.name === hook.plugin.name\n );\n if (!plugin) {\n throw new Error(\n `Could not find plugin context for plugin \"${\n hook.plugin.name\n }\".`\n );\n }\n\n return {\n handler: hook.handler,\n plugin: hook.plugin,\n context: plugin.context\n } as SelectHookResultItem<PluginContext<TResolvedConfig>, TKey>;\n });\n\n if (options?.order === \"pre\") {\n result.push(...mapHooksToResult(fieldHooks.preOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.preEnforced ?? []));\n } else if (options?.order === \"post\") {\n result.push(...mapHooksToResult(fieldHooks.postOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.postEnforced ?? []));\n } else {\n result.push(...mapHooksToResult(fieldHooks.normal ?? []));\n }\n } else {\n result.push(...this.selectHooks(key, { order: \"pre\" }));\n result.push(...this.selectHooks(key, { order: \"normal\" }));\n result.push(...this.selectHooks(key, { order: \"post\" }));\n }\n }\n } else {\n throw new Error(`Unknown plugin hook key: ${String(key)}`);\n }\n\n return result;\n }\n\n protected constructor(\n config: TResolvedConfig,\n workspaceConfig: WorkspaceConfig\n ) {\n super(workspaceConfig);\n\n this.resolvedConfig = config;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/contexts/environment-context.ts"],"names":["PowerlinesEnvironmentContext","PowerlinesContext","fromConfig","workspaceConfig","config","context","init","powerlinesPath","resolvePackage","Error","environment","plugins","hooks","addPlugin","plugin","resolvedPlugin","isFunction","applyToEnvironment","result","Promise","resolve","isObject","Object","keys","length","isPluginConfig","$$internal","isPlugin","createPluginContext","push","filter","key","PLUGIN_NON_HOOK_FIELDS","includes","reduce","ret","hook","isPluginHookField","pluginHook","isPluginHook","preEnforced","preOrdered","normal","postEnforced","postOrdered","enforce","hookListOrder","bucket","addPluginHook","order","isUnpluginHookField","unpluginPlugin","isSetObject","field","variantField","warn","String","selectHooks","options","isUnpluginHookKey","variant","split","isUnpluginBuilderVariant","fieldHooks","mapHooksToResult","hooksList","map","find","p","name","handler","resolvedConfig"],"mappings":"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","file":"chunk-CJI6MHJH.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isObject } from \"@stryke/type-checks/is-object\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { ArrayValues } from \"@stryke/types/array\";\nimport { AnyFunction } from \"@stryke/types/base\";\nimport {\n addPluginHook,\n isPlugin,\n isPluginConfig,\n isPluginHook,\n isPluginHookField,\n isUnpluginHookField,\n isUnpluginHookKey\n} from \"../../plugin-utils/helpers\";\nimport { PluginConfig, WorkspaceConfig } from \"../../types/config\";\nimport {\n EnvironmentContext,\n EnvironmentContextPlugin,\n PluginContext,\n SelectHookResult,\n SelectHookResultItem,\n SelectHooksOptions\n} from \"../../types/context\";\nimport {\n HookFields,\n HookListOrders,\n HooksList,\n InferHooksListItem,\n PluginHooksListItem,\n UnpluginHookList,\n UnpluginHooksListItem\n} from \"../../types/hooks\";\nimport {\n Plugin,\n PLUGIN_NON_HOOK_FIELDS,\n PluginHook,\n PluginHookFields\n} from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { UnpluginOptions } from \"../../types/unplugin\";\nimport { isUnpluginBuilderVariant } from \"../unplugin/helpers\";\nimport { PowerlinesContext } from \"./context\";\nimport { createPluginContext } from \"./plugin-context\";\n\nexport class PowerlinesEnvironmentContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements EnvironmentContext<TResolvedConfig>\n{\n /**\n * The hooks registered by plugins in this environment\n */\n #hooks: HooksList<PluginContext<TResolvedConfig>> = {} as HooksList<\n PluginContext<TResolvedConfig>\n >;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceConfig - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static async fromConfig<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceConfig: WorkspaceConfig,\n config: TResolvedConfig\n ): Promise<PowerlinesEnvironmentContext<TResolvedConfig>> {\n const context = new PowerlinesEnvironmentContext<TResolvedConfig>(\n config,\n workspaceConfig\n );\n await context.init();\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * The resolved environment configuration\n */\n public environment!: EnvironmentResolvedConfig;\n\n /**\n * The list of plugins applied to this environment\n */\n public plugins: EnvironmentContextPlugin<TResolvedConfig>[] = [];\n\n /**\n * The resolved configuration options\n */\n public override get config(): TResolvedConfig {\n return super.config;\n }\n\n public get hooks(): HooksList<PluginContext<TResolvedConfig>> {\n return this.#hooks;\n }\n\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n let resolvedPlugin = plugin;\n if (isFunction(plugin.applyToEnvironment)) {\n const result = (await Promise.resolve(\n plugin.applyToEnvironment(this.environment) as Promise<any>\n )) as boolean | PluginConfig<PluginContext<TResolvedConfig>>;\n\n if (!result || (isObject(result) && Object.keys(result).length === 0)) {\n return;\n }\n\n if (isPluginConfig<PluginContext<TResolvedConfig>>(result)) {\n return this.$$internal.addPlugin(result);\n }\n\n resolvedPlugin = isPlugin<PluginContext<TResolvedConfig>>(result)\n ? result\n : plugin;\n }\n\n const context = createPluginContext<TResolvedConfig>(resolvedPlugin, this);\n\n this.plugins.push({\n plugin: resolvedPlugin,\n context\n });\n\n this.#hooks = Object.keys(resolvedPlugin)\n .filter(\n key =>\n !PLUGIN_NON_HOOK_FIELDS.includes(\n key as ArrayValues<typeof PLUGIN_NON_HOOK_FIELDS>\n )\n )\n .reduce((ret, key) => {\n const hook = key as HookFields<PluginContext<TResolvedConfig>>;\n\n if (isPluginHookField<PluginContext<TResolvedConfig>>(hook)) {\n const pluginHook = resolvedPlugin[hook];\n if (!isPluginHook(pluginHook)) {\n return ret;\n }\n\n ret[hook] ??= {\n preEnforced: [],\n preOrdered: [],\n normal: [],\n postEnforced: [],\n postOrdered: []\n };\n\n if (resolvedPlugin.enforce) {\n const hookListOrder =\n `${resolvedPlugin.enforce}Enforced` as HookListOrders;\n ret[hook][hookListOrder] ??= [];\n\n const bucket = ret[hook][hookListOrder];\n addPluginHook<\n PluginContext<TResolvedConfig>,\n PluginHookFields<PluginContext<TResolvedConfig>>\n >(context, resolvedPlugin, pluginHook, bucket);\n\n return ret;\n }\n\n if (isFunction(pluginHook) || !pluginHook.order) {\n ret[hook].normal ??= [];\n\n const bucket = ret[hook].normal;\n addPluginHook<\n PluginContext<TResolvedConfig>,\n PluginHookFields<PluginContext<TResolvedConfig>>\n >(context, resolvedPlugin, pluginHook, bucket);\n\n return ret;\n }\n\n const hookListOrder = `${pluginHook.order}Ordered` as HookListOrders;\n ret[hook][hookListOrder] ??= [];\n\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][hookListOrder] as PluginHooksListItem<\n PluginContext<TResolvedConfig>\n >[]\n );\n\n return ret;\n } else if (isUnpluginHookField(hook)) {\n const unpluginPlugin = resolvedPlugin[hook];\n if (!isSetObject(unpluginPlugin)) {\n return ret;\n }\n\n for (const field of Object.keys(unpluginPlugin)) {\n const variantField = field as keyof UnpluginOptions[typeof hook];\n\n const pluginHook = unpluginPlugin[\n variantField\n ] as PluginHook<AnyFunction>;\n if (!isPluginHook(pluginHook)) {\n continue;\n }\n\n ret[hook] ??= {};\n (ret[hook][variantField] as UnpluginHookList<\n PluginContext<TResolvedConfig>,\n typeof variantField\n >) ??= {\n preEnforced: [],\n preOrdered: [],\n normal: [],\n postEnforced: [],\n postOrdered: []\n };\n\n if (resolvedPlugin.enforce) {\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][variantField][\n `${resolvedPlugin.enforce}Enforced`\n ] as UnpluginHooksListItem<PluginContext<TResolvedConfig>>[]\n );\n\n return ret;\n }\n\n if (isFunction(pluginHook) || !pluginHook.order) {\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n (\n ret[hook][variantField] as UnpluginHookList<\n PluginContext<TResolvedConfig>,\n typeof variantField\n >\n ).normal!\n );\n\n return ret;\n }\n\n addPluginHook(\n context,\n resolvedPlugin,\n pluginHook,\n ret[hook][variantField][\n `${pluginHook.order}Ordered`\n ] as UnpluginHooksListItem<PluginContext<TResolvedConfig>>[]\n );\n }\n } else {\n this.warn(`Unknown plugin hook field: ${String(hook)}`);\n }\n\n return ret;\n }, this.hooks);\n }\n\n /**\n * Retrieves the hook handlers for a specific hook name\n */\n public selectHooks<TKey extends string>(\n key: TKey,\n options?: SelectHooksOptions\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> {\n const result = [] as SelectHookResult<PluginContext<TResolvedConfig>, TKey>;\n\n if (isUnpluginHookKey(key)) {\n const variant = String(key).split(\":\")[0];\n if (isUnpluginBuilderVariant(variant)) {\n const hooks = this.hooks[variant];\n if (hooks) {\n const field = String(key).split(\":\")[1] as keyof typeof hooks;\n if (field && hooks[field]) {\n const fieldHooks = hooks[field] as Record<\n HookListOrders,\n InferHooksListItem<PluginContext<TResolvedConfig>, TKey>[]\n >;\n\n if (options?.order) {\n const mapHooksToResult = (\n hooksList: InferHooksListItem<\n PluginContext<TResolvedConfig>,\n TKey\n >[]\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> =>\n hooksList.map(hook => {\n const plugin = this.plugins.find(\n p => p.plugin.name === hook.plugin.name\n );\n if (!plugin) {\n throw new Error(\n `Could not find plugin context for plugin \"${\n hook.plugin.name\n }\".`\n );\n }\n\n return {\n handler: hook.handler,\n plugin: hook.plugin,\n context: plugin.context\n } as SelectHookResultItem<\n PluginContext<TResolvedConfig>,\n TKey\n >;\n });\n\n if (options?.order === \"pre\") {\n result.push(...mapHooksToResult(fieldHooks.preOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.preEnforced ?? []));\n } else if (options?.order === \"post\") {\n result.push(...mapHooksToResult(fieldHooks.postOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.postEnforced ?? []));\n } else {\n result.push(...mapHooksToResult(fieldHooks.normal ?? []));\n }\n } else {\n result.push(...this.selectHooks(key, { order: \"pre\" }));\n result.push(...this.selectHooks(key, { order: \"normal\" }));\n result.push(...this.selectHooks(key, { order: \"post\" }));\n }\n }\n }\n }\n } else if (isPluginHookField<PluginContext<TResolvedConfig>>(key)) {\n if (this.hooks[key]) {\n const fieldHooks = this.hooks[key] as Record<\n HookListOrders,\n InferHooksListItem<PluginContext<TResolvedConfig>, TKey>[]\n >;\n\n if (options?.order) {\n const mapHooksToResult = (\n hooksList: InferHooksListItem<\n PluginContext<TResolvedConfig>,\n TKey\n >[]\n ): SelectHookResult<PluginContext<TResolvedConfig>, TKey> =>\n hooksList.map(hook => {\n const plugin = this.plugins.find(\n p => p.plugin.name === hook.plugin.name\n );\n if (!plugin) {\n throw new Error(\n `Could not find plugin context for plugin \"${\n hook.plugin.name\n }\".`\n );\n }\n\n return {\n handler: hook.handler,\n plugin: hook.plugin,\n context: plugin.context\n } as SelectHookResultItem<PluginContext<TResolvedConfig>, TKey>;\n });\n\n if (options?.order === \"pre\") {\n result.push(...mapHooksToResult(fieldHooks.preOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.preEnforced ?? []));\n } else if (options?.order === \"post\") {\n result.push(...mapHooksToResult(fieldHooks.postOrdered ?? []));\n result.push(...mapHooksToResult(fieldHooks.postEnforced ?? []));\n } else {\n result.push(...mapHooksToResult(fieldHooks.normal ?? []));\n }\n } else {\n result.push(...this.selectHooks(key, { order: \"pre\" }));\n result.push(...this.selectHooks(key, { order: \"normal\" }));\n result.push(...this.selectHooks(key, { order: \"post\" }));\n }\n }\n } else {\n throw new Error(`Unknown plugin hook key: ${String(key)}`);\n }\n\n return result;\n }\n\n protected constructor(\n config: TResolvedConfig,\n workspaceConfig: WorkspaceConfig\n ) {\n super(workspaceConfig);\n\n this.resolvedConfig = config;\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { CACHE_HASH_LENGTH, PROJECT_ROOT_HASH_LENGTH, getPrefixedProjectRootHash
2
2
  import { createProgram } from './chunk-ZLWW2MXD.js';
3
3
  import { getTsconfigFilePath } from './chunk-FPFPUYXS.js';
4
4
  import { BUILDER_VARIANTS, UNPLUGIN_BUILDER_VARIANTS } from './chunk-HGE5DAZF.js';
5
- import { VirtualFileSystem } from './chunk-VZCNKJBT.js';
5
+ import { VirtualFileSystem } from './chunk-GQNZENVF.js';
6
6
  import { loadWorkspaceConfig, loadUserConfigFile } from './chunk-Q25ZPXA7.js';
7
7
  import { createLog, extendLog } from './chunk-F5GKG7AF.js';
8
8
  import { resolveEntriesSync, getUniqueEntries } from './chunk-M4Q6V2EL.js';
@@ -762,8 +762,9 @@ var PowerlinesContext = class _PowerlinesContext {
762
762
  * Get the builtin virtual files that exist in the Powerlines virtual file system
763
763
  */
764
764
  async getBuiltins() {
765
- return Promise.all(Object.entries(this.fs.metadata).filter(([, meta]) => meta && meta.type === "builtin").map(async ([path, meta]) => {
766
- const code = await this.fs.read(path);
765
+ return Promise.all(Object.entries(this.fs.metadata).filter(([, meta]) => meta && meta.type === "builtin").map(async ([id, meta]) => {
766
+ const code = await this.fs.read(id);
767
+ const path = this.fs.paths[id];
767
768
  return {
768
769
  ...meta,
769
770
  path,
@@ -1246,5 +1247,5 @@ var PowerlinesContext = class _PowerlinesContext {
1246
1247
  };
1247
1248
 
1248
1249
  export { PLUGIN_NON_HOOK_FIELDS, PowerlinesContext, addPluginHook, checkDedupe, findInvalidPluginConfig, isPlugin, isPluginConfig, isPluginConfigObject, isPluginConfigTuple, isPluginHook, isPluginHookField, isUnpluginHookField, isUnpluginHookKey };
1249
- //# sourceMappingURL=chunk-DBDWDFCZ.js.map
1250
- //# sourceMappingURL=chunk-DBDWDFCZ.js.map
1250
+ //# sourceMappingURL=chunk-DSQDA3AX.js.map
1251
+ //# sourceMappingURL=chunk-DSQDA3AX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/internal/helpers/resolver.ts","../../src/types/commands.ts","../../src/types/plugin.ts","../../src/plugin-utils/helpers.ts","../../src/lib/contexts/context.ts"],"names":["resolveOptions","options","defu","interopDefault","fsCache","mode","joinPaths","cacheDir","moduleCache","createPluginResolver","createJiti","workspaceRoot","projectRoot","createResolver","baseResolver","plugin","SUPPORTED_COMMANDS","PLUGIN_NON_HOOK_FIELDS","PLUGIN_HOOKS_FIELDS","BUILDER_VARIANTS","isPlugin","value","isSetObject","isSetString","name","isUndefined","api","applyToEnvironment","isFunction","dedupe","every","hook","isPluginHookFunction","variant","isPluginConfigObject","isPluginConfigTuple","Array","isArray","length","isPluginConfig","item","isPluginHookObject","handler","isPluginHook","getHookHandler","pluginHook","isUnpluginHookKey","keys","UNPLUGIN_BUILDER_VARIANTS","some","startsWith","isPluginHookField","includes","isUnpluginHookField","field","checkDedupe","plugins","p","addPluginHook","context","hooksList","map","filter","Boolean","args","apply","push","findInvalidPluginConfig","config","invalidItems","forEach","invalid","i","JSON","stringify","configCache","WeakMap","envPathCache","agent","Agent","keepAliveTimeout","setGlobalDispatcher","compose","interceptors","retry","maxRetries","minTimeout","maxTimeout","timeoutFactor","retryAfter","PowerlinesContext","uuid","Date","now","build","projectType","type","root","title","organization","compatibilityDate","description","sourceRoot","configFile","customLogger","logLevel","tsconfig","tsconfigRaw","skipCache","autoInstall","entry","output","lint","transform","framework","artifactsPath","dts","builtinPrefix","from","loadWorkspaceConfig","withUserConfig","powerlinesPath","resolvePackage","Error","dependencies","devDependencies","persistedMeta","undefined","packageJson","projectJson","resolver","resolvePatterns","$$internal","_entry","resolveEntriesSync","toArray","tsconfigFilePath","tsconfigPathsToRegExp","paths","fs","VirtualFileSystem","createSync","checksum","meta","buildId","releaseId","timestamp","projectRootHash","murmurhash","workspaceConfig","maxLength","PROJECT_ROOT_HASH_LENGTH","configHash","CACHE_HASH_LENGTH","resolvedConfig","log","logFn","createLog","envPaths","has","get","getEnvPaths","orgId","appId","set","builtinsPath","entryPath","dataPath","data","getPrefixedProjectRootHash","cachePath","cache","dtsPath","appendPath","relativeToWorkspaceRoot","builtins","Object","values","metadata","id","program","createProgram","skipAddingFilesFromTsConfig","parserCache","create","cacheId","ttl","lruSize","persistInterval","requestCache","entries","path","typeDefinition","file","properties","input","fetch","cacheKey","toString","cached","Response","body","status","statusText","headers","response","fetchRequest","timeout","result","text","fromEntries","parse","code","lang","sourceType","showSemanticErrors","resolve","importer","moduleId","alias","find","a","match","replacement","isVirtual","conditions","extensions","external","skipNodeModulesBundle","noExternal","test","load","resolvedId","read","getBuiltins","Promise","all","emit","filePath","extension","findFileExtensionSafe","replace","findFileDotExtensionSafe","emitFile","emitWithBundler","needsCodeReference","originalFileName","fileName","source","write","emitSync","writeSync","emitEntry","omit","emitEntrySync","emitBuiltin","String","emitBuiltinSync","userConfig","isHighPriority","mergeUserConfig","init","withInlineConfig","inlineConfig","command","workspacePackageJsonPath","existsSync","readJsonFile","repository","url","fatal","message","LogLevelLabel","FATAL","isString","StormJSON","error","ERROR","warn","WARN","info","INFO","debug","DEBUG","trace","TRACE","isNull","extendLog","generateChecksum","hashDirectory","ignore","projectJsonPath","packageJsonPath","loadUserConfigFile","getTsconfigFilePath","version","outputPath","directories","assets","glob","platform","preview","environments","babel","presets","eslint","target","override","getUniqueEntries","split","titleCase","author","getUnique","format","buildPath","getUniqueBy","asset","isParentPath","replacePath","reduce","ret","replacePathTokens","polyfill","into"],"mappings":"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","file":"chunk-DSQDA3AX.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { joinPaths } from \"@stryke/path/join-paths\";\nimport defu from \"defu\";\nimport { Jiti, JitiOptions, createJiti } from \"jiti\";\nimport { Resolver } from \"../../types/context\";\nimport { ResolvedConfig } from \"../../types/resolved\";\n\nexport type CreateResolverOptions = Omit<\n JitiOptions,\n \"fsCache\" | \"moduleCache\" | \"interopDefault\"\n> &\n Pick<ResolvedConfig, \"mode\" | \"logLevel\" | \"skipCache\"> & {\n workspaceRoot: string;\n projectRoot: string;\n cacheDir: string;\n };\n\n/**\n * Create a Jiti resolver for the given workspace and project root.\n *\n * @param options - The options for creating the resolver.\n * @returns A Jiti instance configured for the specified workspace and project root.\n */\nfunction resolveOptions(options: CreateResolverOptions): JitiOptions {\n return defu(options, {\n interopDefault: true,\n fsCache:\n options.mode !== \"development\"\n ? joinPaths(options.cacheDir, \"jiti\")\n : false,\n moduleCache: options.mode !== \"development\"\n });\n}\n\n/**\n * Create a Jiti resolver for the given workspace and project root.\n *\n * @param options - The options for creating the resolver.\n * @returns A Jiti instance configured for the specified workspace and project root.\n */\nfunction createPluginResolver(options: CreateResolverOptions): Jiti {\n return createJiti(\n joinPaths(options.workspaceRoot, options.projectRoot),\n resolveOptions({\n ...options\n\n // transform: (params: TransformOptions): TransformResult => {\n // if (!params.filename) {\n // return {\n // code: params.source\n // };\n // }\n\n // const babelOptions = {\n // babelrc: false,\n // configFile: false,\n // compact: false,\n // retainLines: isBoolean(params.retainLines)\n // ? params.retainLines\n // : true,\n // filename: params.filename,\n // plugins: [\n // [\n // transformModuleBabelPlugin,\n // {\n // allowTopLevelThis: true,\n // noInterop: !params.interopDefault,\n // async: params.async\n // }\n // ],\n // [importMetaPathsBabelPlugin, { filename: params.filename }],\n // [importMetaEnvBabelPlugin],\n // [transformMetadataBabelPlugin],\n // [syntaxClassPropertiesPlugin],\n // [transformExportNamespaceFromPlugin]\n // ]\n // } as BabelTransformOptions;\n\n // if (\n // findFileExtension(params.filename) === \"jsx\" ||\n // findFileExtension(params.filename) === \"tsx\"\n // ) {\n // babelOptions.plugins!.push([syntaxJSXPlugin]);\n // babelOptions.plugins!.push([\n // alloyPlugin,\n // {\n // alloyModuleName: \"@alloy-js/core\"\n // }\n // ]);\n // babelOptions.plugins!.push([\n // jsxDomExpressionsPlugin,\n // {\n // alloyModuleName: \"@alloy-js/core\",\n // moduleName: \"@alloy-js/core/jsx-runtime\",\n // generate: \"universal\",\n // wrapConditionals: true,\n // preserveWhitespace: true\n // }\n // ]);\n // }\n\n // if (\n // findFileExtension(params.filename) === \"ts\" ||\n // findFileExtension(params.filename) === \"tsx\"\n // ) {\n // babelOptions.plugins!.push([\n // typescriptPlugin,\n // {\n // allowDeclareFields: true,\n // isTSX: findFileExtension(params.filename) === \"tsx\"\n // }\n // ]);\n\n // babelOptions.plugins!.unshift([transformMetadataBabelPlugin]);\n // babelOptions.plugins!.unshift([\n // proposalDecoratorsPlugin,\n // { legacy: true }\n // ]);\n\n // babelOptions.plugins!.push([parameterDecoratorPlugin]);\n // babelOptions.plugins!.push([syntaxImportAssertionsPlugin]);\n // }\n\n // const result = transformSync(params.source, babelOptions);\n // if (!result?.code) {\n // return {\n // code: params.source,\n // error: new Error(\"Failed to transform source code.\")\n // };\n // }\n\n // return {\n // code: result.code\n // };\n // }\n } as CreateResolverOptions)\n );\n}\n\n/**\n * Create a Jiti resolver for the given workspace and project root.\n *\n * @param options - The options for creating the resolver.\n * @returns A Jiti instance configured for the specified workspace and project root.\n */\nexport function createResolver(options: CreateResolverOptions): Resolver {\n const baseResolver = createJiti(\n joinPaths(options.workspaceRoot, options.projectRoot),\n resolveOptions(options)\n ) as Resolver;\n baseResolver.plugin = createPluginResolver(options);\n\n return baseResolver;\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { ArrayValues } from \"@stryke/types/array\";\nimport type { MaybePromise } from \"@stryke/types/base\";\nimport type { Context } from \"./context\";\n\nexport const SUPPORTED_COMMANDS = [\n \"new\",\n \"clean\",\n \"prepare\",\n \"lint\",\n \"test\",\n \"build\",\n \"docs\",\n \"deploy\",\n \"finalize\"\n] as const;\n\nexport type CommandType = ArrayValues<typeof SUPPORTED_COMMANDS>;\nexport type Commands<TContext extends Context = Context> = Record<\n CommandType,\n (this: TContext) => MaybePromise<void>\n>;\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { ArrayValues } from \"@stryke/types/array\";\nimport type { AnyFunction, MaybePromise } from \"@stryke/types/base\";\nimport { LoadResult } from \"rollup\";\nimport type { ExternalIdResult, HookFilter, TransformResult } from \"unplugin\";\nimport type { BuilderVariant, UnpluginBuilderVariant } from \"./build\";\nimport { BUILDER_VARIANTS } from \"./build\";\nimport type { CommandType } from \"./commands\";\nimport { SUPPORTED_COMMANDS } from \"./commands\";\nimport type { EnvironmentConfig, PluginConfig } from \"./config\";\nimport type {\n BuildPluginContext,\n PluginContext,\n UnresolvedContext\n} from \"./context\";\nimport type { EnvironmentResolvedConfig, ResolvedConfig } from \"./resolved\";\nimport { InferUnpluginOptions } from \"./unplugin\";\n\nexport interface PluginHookObject<\n THookFunction extends AnyFunction,\n TFilter extends keyof HookFilter = never\n> {\n /**\n * The order in which the plugin should be applied.\n */\n order?: \"pre\" | \"post\" | null | undefined;\n\n /**\n * A filter to determine when the hook should be called.\n */\n filter?: Pick<HookFilter, TFilter>;\n\n /**\n * The hook function to be called.\n */\n handler: THookFunction;\n}\n\nexport type PluginHook<\n THookFunction extends AnyFunction,\n TFilter extends keyof HookFilter = never\n> = THookFunction | PluginHookObject<THookFunction, TFilter>;\n\n/**\n * A result returned by the plugin from the `types` hook that describes the declaration types output file.\n */\nexport interface TypesResult {\n directives?: string[];\n code: string;\n}\n\nexport type PluginHookFunctions<TContext extends PluginContext> = {\n [TCommandType in CommandType]: (this: TContext) => MaybePromise<void>;\n} & {\n /**\n * A function that returns configuration options to be merged with the build context's options.\n *\n * @remarks\n * Modify config before it's resolved. The hook can either mutate {@link Context.config} on the passed-in context directly, or return a partial config object that will be deeply merged into existing config.\n *\n * @warning User plugins are resolved before running this hook so injecting other plugins inside the config hook will have no effect.\n *\n * @see https://vitejs.dev/guide/api-plugin#config\n *\n * @param this - The build context.\n * @param config - The partial configuration object to be modified.\n * @returns A promise that resolves to a partial configuration object.\n */\n config: (\n this: UnresolvedContext<TContext[\"config\"]>\n ) => MaybePromise<DeepPartial<TContext[\"config\"]> & Record<string, any>>;\n\n /**\n * Modify environment configs before it's resolved. The hook can either mutate the passed-in environment config directly, or return a partial config object that will be deeply merged into existing config.\n *\n * @remarks\n * This hook is called for each environment with a partially resolved environment config that already accounts for the default environment config values set at the root level. If plugins need to modify the config of a given environment, they should do it in this hook instead of the config hook. Leaving the config hook only for modifying the root default environment config.\n *\n * @see https://vitejs.dev/guide/api-plugin#configenvironment\n *\n * @param this - The build context.\n * @param name - The name of the environment being configured.\n * @param environment - The Vite-like environment object containing information about the current build environment.\n * @returns A promise that resolves when the hook is complete.\n */\n configEnvironment: (\n this: TContext,\n name: string,\n environment: EnvironmentConfig\n ) => MaybePromise<Partial<EnvironmentResolvedConfig> | undefined | null>;\n\n /**\n * A hook that is called when the plugin is resolved.\n *\n * @see https://vitejs.dev/guide/api-plugin#configresolved\n *\n * @param this - The build context.\n * @returns A promise that resolves when the hook is complete.\n */\n configResolved: (this: TContext) => MaybePromise<void>;\n\n /**\n * A hook that is called to overwrite the generated declaration types file (.d.ts). The generated type definitions should describe the built-in modules/logic added during the `prepare` task.\n *\n * @param this - The build context.\n * @param code - The source code to generate types for.\n * @returns A promise that resolves when the hook is complete.\n */\n types: (\n this: TContext,\n code: string\n ) => MaybePromise<TypesResult | string | undefined | null>;\n\n /**\n * A hook that is called at the start of the build process.\n *\n * @param this - The build context and unplugin build context.\n * @returns A promise that resolves when the hook is complete.\n */\n buildStart: (\n this: BuildPluginContext<TContext[\"config\"]> & TContext\n ) => MaybePromise<void>;\n\n /**\n * A hook that is called at the end of the build process.\n *\n * @param this - The build context and unplugin build context.\n * @returns A promise that resolves when the hook is complete.\n */\n buildEnd: (\n this: BuildPluginContext<TContext[\"config\"]> & TContext\n ) => MaybePromise<void>;\n\n /**\n * A hook that is called to transform the source code.\n *\n * @param this - The build context, unplugin build context, and unplugin context.\n * @param code - The source code to transform.\n * @param id - The identifier of the source code.\n * @returns A promise that resolves when the hook is complete.\n */\n transform: (\n this: BuildPluginContext<TContext[\"config\"]> & TContext,\n code: string,\n id: string\n ) => MaybePromise<TransformResult>;\n\n /**\n * A hook that is called to load the source code.\n *\n * @param this - The build context, unplugin build context, and unplugin context.\n * @param id - The identifier of the source code.\n * @returns A promise that resolves when the hook is complete.\n */\n load: (\n this: BuildPluginContext<TContext[\"config\"]> & TContext,\n id: string\n ) => MaybePromise<LoadResult>;\n\n /**\n * A hook that is called to resolve the identifier of the source code.\n *\n * @param this - The build context, unplugin build context, and unplugin context.\n * @param id - The identifier of the source code.\n * @param importer - The importer of the source code.\n * @param options - The options for resolving the identifier.\n * @returns A promise that resolves when the hook is complete.\n */\n resolveId: (\n this: BuildPluginContext<TContext[\"config\"]> & TContext,\n id: string,\n importer: string | undefined,\n options: { isEntry: boolean }\n ) => MaybePromise<string | ExternalIdResult | null | undefined>;\n\n /**\n * A hook that is called to write the bundle to disk.\n *\n * @param this - The build context.\n * @returns A promise that resolves when the hook is complete.\n */\n writeBundle: (this: TContext) => MaybePromise<void>;\n};\n\nexport type PluginHooks<TContext extends PluginContext> = {\n [TPluginHook in keyof PluginHookFunctions<TContext>]?: PluginHook<\n PluginHookFunctions<TContext>[TPluginHook]\n >;\n} & {\n transform: PluginHook<\n PluginHookFunctions<TContext>[\"transform\"],\n \"code\" | \"id\"\n >;\n load: PluginHook<PluginHookFunctions<TContext>[\"load\"], \"id\">;\n resolveId: PluginHook<PluginHookFunctions<TContext>[\"resolveId\"], \"id\">;\n};\n\ntype DeepPartial<T> = {\n [K in keyof T]?: DeepPartial<T[K]>;\n};\n\nexport type Plugin<\n TContext extends PluginContext<ResolvedConfig> = PluginContext<ResolvedConfig>\n> = Partial<PluginHooks<TContext>> & {\n /**\n * The name of the plugin, for use in deduplication, error messages and logs.\n */\n name: string;\n\n /**\n * An API object that can be used for inter-plugin communication.\n *\n * @see https://rollupjs.org/plugin-development/#direct-plugin-communication\n */\n api?: Record<string, any>;\n\n /**\n * Enforce plugin invocation tier similar to webpack loaders. Hooks ordering is still subject to the `order` property in the hook object.\n *\n * @remarks\n * The Plugin invocation order is as follows:\n * - `enforce: 'pre'` plugins\n * - `order: 'pre'` plugin hooks\n * - any other plugins (normal)\n * - `order: 'post'` plugin hooks\n * - `enforce: 'post'` plugins\n *\n * @see https://vitejs.dev/guide/api-plugin.html#plugin-ordering\n * @see https://rollupjs.org/plugin-development/#build-hooks\n * @see https://webpack.js.org/concepts/loaders/#enforce---pre-and-post\n * @see https://esbuild.github.io/plugins/#concepts\n */\n enforce?: \"pre\" | \"post\";\n\n /**\n * A function to determine if two plugins are the same and can be de-duplicated.\n *\n * @remarks\n * If this is not provided, plugins are de-duplicated by comparing their names.\n *\n * @param other - The other plugin to compare against.\n * @returns `true` if the two plugins are the same, `false` otherwise.\n */\n dedupe?: false | ((other: Plugin<any>) => boolean);\n\n /**\n * A list of pre-requisite plugins that must be loaded before this plugin can be used.\n */\n // dependsOn?: PluginConfig<TContext>[];\n\n /**\n * Define environments where this plugin should be active. By default, the plugin is active in all environments.\n *\n * @param environment - The environment to check.\n * @returns `true` if the plugin should be active in the specified environment, `false` otherwise.\n */\n applyToEnvironment?: (\n environment: EnvironmentResolvedConfig\n ) => boolean | PluginConfig<TContext>;\n\n /**\n * A function that returns configuration options to be merged with the build context's options.\n *\n * @remarks\n * Modify config before it's resolved. The hook can either mutate {@link Context.config} on the passed-in context directly, or return a partial config object that will be deeply merged into existing config.\n *\n * @warning User plugins are resolved before running this hook so injecting other plugins inside the config hook will have no effect. If you want to add plugins, consider doing so in the {@link Plugin.dependsOn} property instead.\n *\n * @see https://vitejs.dev/guide/api-plugin#config\n *\n * @param this - The build context.\n * @param config - The partial configuration object to be modified.\n * @returns A promise that resolves to a partial configuration object.\n */\n config?:\n | PluginHook<\n (\n this: UnresolvedContext<TContext[\"config\"]>\n ) => MaybePromise<DeepPartial<TContext[\"config\"]> & Record<string, any>>\n >\n | (DeepPartial<TContext[\"config\"]> & Record<string, any>);\n} & {\n [TBuilderVariant in BuilderVariant]?: InferUnpluginOptions<\n TContext,\n TBuilderVariant\n >;\n};\n\nexport const PLUGIN_NON_HOOK_FIELDS = [\n \"name\",\n \"api\",\n \"enforce\",\n \"dedupe\",\n \"applyToEnvironment\"\n] as const;\n\nexport type PluginNonHookFields =\n | ArrayValues<typeof PLUGIN_NON_HOOK_FIELDS>\n | UnpluginBuilderVariant;\n\nexport const PLUGIN_HOOKS_FIELDS = [\n ...SUPPORTED_COMMANDS,\n \"config\",\n \"configEnvironment\",\n \"configResolved\",\n \"types\",\n \"buildStart\",\n \"buildEnd\",\n \"transform\",\n \"load\",\n \"resolveId\",\n \"writeBundle\"\n] as const;\n\nexport type PluginHookFields<TContext extends PluginContext = PluginContext> =\n keyof PluginHookFunctions<TContext>;\n\nexport const KNOWN_PLUGIN_FIELDS = [\n ...PLUGIN_NON_HOOK_FIELDS,\n ...PLUGIN_HOOKS_FIELDS,\n ...BUILDER_VARIANTS\n] as const;\n\nexport type PluginFields = ArrayValues<typeof KNOWN_PLUGIN_FIELDS>;\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isUndefined } from \"@stryke/type-checks/is-undefined\";\nimport { AnyFunction } from \"@stryke/types/base\";\nimport {\n BUILDER_VARIANTS,\n UNPLUGIN_BUILDER_VARIANTS,\n UnpluginBuilderVariant\n} from \"../types/build\";\nimport {\n PluginConfig,\n PluginConfigObject,\n PluginConfigTuple\n} from \"../types/config\";\nimport { PluginContext, WithUnpluginBuildContext } from \"../types/context\";\nimport {\n HookFields,\n PluginHooksListItem,\n UnpluginHooksListItem\n} from \"../types/hooks\";\nimport {\n PLUGIN_HOOKS_FIELDS,\n Plugin,\n PluginHook,\n PluginHookFields,\n PluginHookObject,\n PluginHooks\n} from \"../types/plugin\";\nimport { ResolvedConfig } from \"../types/resolved\";\nimport { UnpluginOptions } from \"../types/unplugin\";\n\n/**\n * Type guard to check if an object is a {@link Plugin}\n *\n * @param value - The object to check\n * @returns True if the object is a {@link Plugin}, false otherwise\n */\nexport function isPlugin<\n TContext extends PluginContext = PluginContext<ResolvedConfig>\n>(value: unknown): value is Plugin<TContext> {\n return (\n isSetObject(value) &&\n \"name\" in value &&\n isSetString(value.name) &&\n (isUndefined((value as Plugin<TContext>).api) ||\n (\"api\" in value && isSetObject(value.api))) &&\n (isUndefined((value as Plugin<TContext>).applyToEnvironment) ||\n (\"applyToEnvironment\" in value &&\n isFunction(value.applyToEnvironment))) &&\n (isUndefined((value as Plugin<TContext>).dedupe) ||\n (\"dedupe\" in value && isFunction(value.dedupe))) &&\n PLUGIN_HOOKS_FIELDS.every(\n hook =>\n isUndefined((value as Plugin<TContext>)[hook]) ||\n (hook in value &&\n (isPluginHookFunction((value as Plugin<TContext>)[hook]) ||\n (hook === \"config\" &&\n isSetObject((value as Plugin<TContext>)[hook]))))\n ) &&\n BUILDER_VARIANTS.every(\n variant =>\n isUndefined((value as Plugin<TContext>)[variant]) ||\n (variant in value && isSetObject((value as Plugin<TContext>)[variant]))\n )\n );\n}\n\n/**\n * Type guard to check if an object is a {@link PluginConfigObject}\n *\n * @param value - The object to check\n * @returns True if the object is a {@link PluginConfigObject}, false otherwise\n */\nexport function isPluginConfigObject<\n TContext extends PluginContext = PluginContext<ResolvedConfig>\n>(value: unknown): value is PluginConfigObject<TContext> {\n return (\n isSetObject(value) &&\n \"plugin\" in value &&\n (((isSetString(value.plugin) || isFunction(value.plugin)) &&\n \"options\" in value &&\n isSetObject(value.options)) ||\n isPlugin(value.plugin))\n );\n}\n\n/**\n * Type guard to check if an object is a {@link PluginConfigTuple}\n *\n * @param value - The object to check\n * @returns True if the object is a {@link PluginConfigTuple}, false otherwise\n */\nexport function isPluginConfigTuple<\n TContext extends PluginContext = PluginContext<ResolvedConfig>\n>(value: unknown): value is PluginConfigTuple<TContext> {\n return (\n Array.isArray(value) &&\n (value.length === 1 || value.length === 2) &&\n (((isSetString(value[0]) || isFunction(value[0])) &&\n value.length > 1 &&\n isSetObject(value[1])) ||\n isPlugin(value[0]))\n );\n}\n\n/**\n * Type guard to check if an object is a {@link PluginConfig}\n *\n * @param value - The object to check\n * @returns True if the object is a {@link PluginConfig}, false otherwise\n */\nexport function isPluginConfig<\n TContext extends PluginContext = PluginContext<ResolvedConfig>\n>(value: unknown): value is PluginConfig<TContext> {\n return (\n isSetString(value) ||\n isFunction(value) ||\n isPlugin<TContext>(value) ||\n isPluginConfigObject(value) ||\n isPluginConfigTuple(value) ||\n (Array.isArray(value) && value.every(item => isPluginConfig(item)))\n );\n}\n\n/**\n * Type guard to check if an value is a {@link PluginHook} function\n *\n * @param value - The value to check\n * @returns True if the value is a {@link PluginHook} function, false otherwise\n */\nexport function isPluginHookObject(\n value: unknown\n): value is PluginHookObject<AnyFunction> {\n return isSetObject(value) && \"handler\" in value && isFunction(value.handler);\n}\n\n/**\n * Type guard to check if an value is a {@link PluginHook} function\n *\n * @param value - The value to check\n * @returns True if the value is a {@link PluginHook} function, false otherwise\n */\nexport function isPluginHookFunction(value: unknown): value is AnyFunction {\n return isFunction(value) || isPluginHookObject(value);\n}\n\n/**\n * Type guard to check if an object is a {@link PluginHook}\n *\n * @param value - The object to check\n * @returns True if the object is a {@link PluginHook}, false otherwise\n */\nexport function isPluginHook(value: unknown): value is PluginHook<AnyFunction> {\n return isPluginHookFunction(value) || isPluginHookObject(value);\n}\n\nexport type GetHookHandlerReturnType<\n TContext extends PluginContext = PluginContext,\n TField extends HookFields<TContext> = HookFields<TContext>\n> = TField extends PluginHookFields\n ? PluginHooksListItem<TContext, TField>[\"handler\"]\n : TField extends UnpluginBuilderVariant\n ? UnpluginHooksListItem<TContext, TField>[\"handler\"]\n : never;\n\ntype HooksListItemForField<\n TContext extends PluginContext = PluginContext,\n TField extends HookFields<TContext> = HookFields<TContext>\n> =\n TField extends PluginHookFields<TContext>\n ? PluginHooksListItem<TContext, Extract<TField, PluginHookFields<TContext>>>\n : TField extends UnpluginBuilderVariant\n ? UnpluginHooksListItem<TContext, Extract<TField, UnpluginBuilderVariant>>\n : never;\n\n/**\n * Extract the hook handler function from a plugin hook\n *\n * @param pluginHook - The plugin hook to extract the handler function from\n * @returns The hook handler function\n */\nexport function getHookHandler<\n TContext extends PluginContext = PluginContext,\n TField extends HookFields<TContext> = HookFields<TContext>\n>(\n pluginHook: PluginHook<AnyFunction>\n): GetHookHandlerReturnType<TContext, TField> {\n return (\n isFunction(pluginHook) ? pluginHook : pluginHook.handler\n ) as GetHookHandlerReturnType<TContext, TField>;\n}\n\n/**\n * Extract a plugin hook from a plugin\n *\n * @param context - The build context\n * @param plugin - The plugin to extract the hook from\n * @param hook - The name of the hook to extract\n * @returns The extracted hook, or undefined if the hook does not exist\n */\nexport function extractPluginHook<\n TContext extends PluginContext = PluginContext,\n TPlugin extends Plugin<TContext> = Plugin<TContext>\n>(context: TContext, plugin: TPlugin, hook: keyof PluginHooks<TContext>) {\n const pluginHook = plugin[hook];\n if (!isPluginHook(pluginHook)) {\n return undefined;\n }\n\n return isFunction(pluginHook)\n ? {\n normal: pluginHook.bind(context)\n }\n : {\n [pluginHook.order ? pluginHook.order : \"normal\"]:\n pluginHook.handler.bind(context)\n };\n}\n\n/**\n * Check if a hook is external.\n *\n * @param keys - The name of the hook to check.\n * @returns True if the hook is external, false otherwise.\n */\nexport function isUnpluginHookKey<\n TUnpluginBuilderVariant extends UnpluginBuilderVariant =\n UnpluginBuilderVariant\n>(\n keys: string\n): keys is `${TUnpluginBuilderVariant}:${keyof UnpluginOptions[TUnpluginBuilderVariant] & string}` {\n return UNPLUGIN_BUILDER_VARIANTS.some(variant =>\n keys.startsWith(`${variant}:`)\n );\n}\n\n/**\n * Check if a hook is internal.\n *\n * @param keys - The name of the hook to check.\n * @returns True if the hook is external, false otherwise.\n */\nexport function isPluginHookField<TContext extends PluginContext>(\n keys: string\n): keys is PluginHookFields<TContext> {\n return (\n !isUnpluginHookKey(keys) &&\n PLUGIN_HOOKS_FIELDS.includes(keys as PluginHookFields<TContext>)\n );\n}\n\n/**\n * Check if a hook is external.\n *\n * @param field - The name of the hook to check.\n * @returns True if the hook is external, false otherwise.\n */\nexport function isUnpluginHookField<\n TUnpluginBuilderVariant extends UnpluginBuilderVariant =\n UnpluginBuilderVariant\n>(field: string): field is TUnpluginBuilderVariant {\n return (\n !isPluginHookField(field) &&\n UNPLUGIN_BUILDER_VARIANTS.includes(field as UnpluginBuilderVariant)\n );\n}\n\n/**\n * Check if a plugin should be deduplicated.\n *\n * @param plugin - The plugin to check\n * @param plugins - The list of plugins to check against\n * @returns True if the plugin should be deduplicated, false otherwise\n */\nexport function checkDedupe<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig,\n TContext extends PluginContext<TResolvedConfig> =\n PluginContext<TResolvedConfig>\n>(plugin: Plugin<TContext>, plugins: Plugin<TContext>[]) {\n return (\n plugin.dedupe === false ||\n plugins.some(\n p =>\n p.dedupe !== false &&\n ((isFunction(p.dedupe) && p.dedupe(plugin)) || p.name === plugin.name)\n )\n );\n}\n\n/**\n * Add a plugin hook to the hooks list.\n *\n * @param context - The plugin context\n * @param plugin - The plugin to add the hook from\n * @param pluginHook - The plugin hook to add\n * @param hooksList - The list of hooks to add to\n */\nexport function addPluginHook<\n TContext extends PluginContext = PluginContext,\n TField extends PluginHookFields<TContext> = PluginHookFields<TContext>,\n TList extends PluginHooksListItem<TContext, TField> = PluginHooksListItem<\n TContext,\n TField\n >\n>(\n context: TContext,\n plugin: Plugin<TContext>,\n pluginHook: PluginHook<AnyFunction>,\n hooksList: TList[]\n) {\n if (\n !checkDedupe(plugin, hooksList.map(hook => hook.plugin).filter(Boolean))\n ) {\n const handler = ((...args: unknown[]) =>\n (\n getHookHandler<WithUnpluginBuildContext<TContext>, TField>(\n pluginHook\n ) as unknown as (...args: unknown[]) => unknown\n ).apply(context, args)) as HooksListItemForField<\n TContext,\n TField\n >[\"handler\"];\n if (!handler) {\n return;\n }\n\n hooksList.push({\n plugin,\n handler\n } as any);\n }\n}\n\n/**\n * Check the provided {@link PluginConfig}, and return a stringified version of the invalid configuration. If an array is provided, check each item in the array.\n *\n * @param config - The plugin configuration to check\n * @returns Null if the configuration is valid, otherwise an array of stringified invalid configurations\n */\nexport function findInvalidPluginConfig<\n TContext extends PluginContext = PluginContext<ResolvedConfig>\n>(config: PluginConfig<TContext>): string[] | null {\n if (isPluginConfig<TContext>(config)) {\n return null;\n }\n\n if (Array.isArray(config as PluginConfig<TContext>[])) {\n const invalidItems: string[] = [];\n (config as PluginConfig<TContext>[]).forEach(item => {\n const invalid = findInvalidPluginConfig<TContext>(item);\n if (invalid) {\n invalidItems.push(...invalid.map(i => JSON.stringify(i, null, 2)));\n }\n });\n\n return invalidItems.length > 0 ? invalidItems : null;\n }\n\n return [JSON.stringify(config, null, 2)];\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { EnvPaths, getEnvPaths } from \"@stryke/env/get-env-paths\";\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { relativeToWorkspaceRoot } from \"@stryke/fs/get-workspace-root\";\nimport { readJsonFile } from \"@stryke/fs/json\";\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { hashDirectory } from \"@stryke/hash/hash-files\";\nimport { murmurhash } from \"@stryke/hash/murmurhash\";\nimport { getUnique, getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { omit } from \"@stryke/helpers/omit\";\nimport { fetchRequest } from \"@stryke/http/fetch\";\nimport { StormJSON } from \"@stryke/json/storm-json\";\nimport { appendPath } from \"@stryke/path/append\";\nimport {\n findFileDotExtensionSafe,\n findFileExtensionSafe\n} from \"@stryke/path/file-path-fns\";\nimport { isParentPath } from \"@stryke/path/is-parent-path\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replacePath } from \"@stryke/path/replace\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isNull } from \"@stryke/type-checks/is-null\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { TypeDefinition } from \"@stryke/types/configuration\";\nimport { PackageJson } from \"@stryke/types/package-json\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport { match, tsconfigPathsToRegExp } from \"bundle-require\";\nimport defu from \"defu\";\nimport { create, FlatCache } from \"flat-cache\";\nimport { parse, ParseResult } from \"oxc-parser\";\nimport { Range } from \"semver\";\nimport { Project } from \"ts-morph\";\nimport {\n Agent,\n BodyInit,\n interceptors,\n RequestInfo,\n Response,\n setGlobalDispatcher\n} from \"undici\";\nimport {\n ExternalIdResult,\n UnpluginBuildContext,\n UnpluginMessage\n} from \"unplugin\";\nimport {\n createResolver,\n CreateResolverOptions\n} from \"../../internal/helpers/resolver\";\nimport { checkDedupe, isPlugin } from \"../../plugin-utils/helpers\";\nimport { replacePathTokens } from \"../../plugin-utils/paths\";\nimport {\n InitialUserConfig,\n LogFn,\n ParsedUserConfig,\n PluginConfig,\n PowerlinesCommand,\n WorkspaceConfig\n} from \"../../types/config\";\nimport {\n Context,\n EmitEntryOptions,\n EmitOptions,\n FetchOptions,\n InitContextOptions,\n MetaInfo,\n ParseOptions,\n Resolver,\n TransformResult\n} from \"../../types/context\";\nimport {\n ResolveOptions,\n VirtualFile,\n VirtualFileSystemInterface\n} from \"../../types/fs\";\nimport { UNSAFE_ContextInternal } from \"../../types/internal\";\nimport {\n ResolvedAssetGlob,\n ResolvedConfig,\n ResolvedEntryTypeDefinition\n} from \"../../types/resolved\";\nimport { ParsedTypeScriptConfig } from \"../../types/tsconfig\";\nimport { loadUserConfigFile, loadWorkspaceConfig } from \"../config-file\";\nimport { getUniqueEntries, resolveEntriesSync } from \"../entry\";\nimport { VirtualFileSystem } from \"../fs/vfs\";\nimport { createLog, extendLog } from \"../logger\";\nimport { createProgram } from \"../typescript/ts-morph\";\nimport { getTsconfigFilePath } from \"../typescript/tsconfig\";\nimport {\n CACHE_HASH_LENGTH,\n getPrefixedProjectRootHash,\n PROJECT_ROOT_HASH_LENGTH\n} from \"../utilities/meta\";\n\ninterface ConfigCacheKey {\n projectRoot: string;\n mode: \"test\" | \"development\" | \"production\";\n skipCache: boolean;\n configFile?: string;\n framework: string;\n command?: string;\n}\n\ninterface ConfigCacheResult {\n projectJson: Context[\"projectJson\"];\n packageJson: Context[\"packageJson\"];\n checksum: string;\n resolver: Resolver;\n userConfig: ParsedUserConfig;\n}\n\nconst configCache = new WeakMap<ConfigCacheKey, ConfigCacheResult>();\n\ninterface EnvPathCacheKey {\n framework: string;\n workspaceRoot: string;\n}\n\nconst envPathCache = new WeakMap<EnvPathCacheKey, EnvPaths>();\n\nconst agent = new Agent({ keepAliveTimeout: 10000 });\nsetGlobalDispatcher(\n agent.compose(\n interceptors.retry({\n maxRetries: 3,\n minTimeout: 1000,\n maxTimeout: 10000,\n timeoutFactor: 2,\n retryAfter: true\n })\n )\n);\n\nexport class PowerlinesContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n> implements Context<TResolvedConfig> {\n /**\n * Internal references storage\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n #internal = {} as UNSAFE_ContextInternal<TResolvedConfig>;\n\n #workspaceConfig: WorkspaceConfig;\n\n #checksum: string | null = null;\n\n #buildId: string = uuid();\n\n #releaseId: string = uuid();\n\n #timestamp: number = Date.now();\n\n #fs!: VirtualFileSystemInterface;\n\n #tsconfig!: ParsedTypeScriptConfig;\n\n #program!: Project;\n\n #parserCache!: FlatCache;\n\n #requestCache!: FlatCache;\n\n #getConfigProps(config: Partial<TResolvedConfig[\"userConfig\"]> = {}) {\n return defu(\n {\n variant: config.build?.variant,\n projectType: config.type,\n projectRoot: config.root,\n name: config.name,\n title: config.title,\n organization: config.organization,\n compatibilityDate: config.compatibilityDate,\n description: config.description,\n sourceRoot: config.sourceRoot,\n configFile: config.configFile,\n customLogger: config.customLogger,\n logLevel: config.logLevel,\n tsconfig: config.tsconfig,\n tsconfigRaw: config.tsconfigRaw,\n skipCache: config.skipCache,\n autoInstall: config.autoInstall,\n entry: config.entry,\n output: config.output,\n plugins: config.plugins,\n mode: config.mode,\n lint: config.lint,\n transform: config.transform,\n build: config.build,\n framework: config.framework,\n ...config\n },\n {\n output: config.framework\n ? {\n artifactsPath: `.${config.framework ?? \"powerlines\"}`,\n dts: joinPaths(\n config.root ?? this.config.projectRoot,\n `${config.framework ?? \"powerlines\"}.d.ts`\n ),\n builtinPrefix: config.framework ?? \"powerlines\"\n }\n : {}\n }\n );\n }\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static async from<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceRoot: string,\n config: InitialUserConfig<TResolvedConfig[\"userConfig\"]>\n ): Promise<Context> {\n const context = new PowerlinesContext<TResolvedConfig>(\n await loadWorkspaceConfig(workspaceRoot, config.root)\n );\n await context.withUserConfig(config);\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * An object containing the dependencies that should be installed for the project\n */\n public dependencies: Record<string, string | Range> = {};\n\n /**\n * An object containing the development dependencies that should be installed for the project\n */\n public devDependencies: Record<string, string | Range> = {};\n\n /**\n * The persisted meta information about the current build\n */\n public persistedMeta: MetaInfo | undefined = undefined;\n\n /**\n * The path to the Powerlines package\n */\n public powerlinesPath!: string;\n\n /**\n * The parsed `package.json` file for the project\n */\n public packageJson!: PackageJson;\n\n /**\n * The parsed `project.json` file for the project\n */\n public projectJson: Record<string, any> | undefined = undefined;\n\n /**\n * The module resolver for the project\n */\n public resolver!: Resolver;\n\n /**\n * The resolved configuration options\n */\n private resolvePatterns: RegExp[] = [];\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public get $$internal(): UNSAFE_ContextInternal<TResolvedConfig> {\n return this.#internal;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public set $$internal(value: UNSAFE_ContextInternal<TResolvedConfig>) {\n this.#internal = value;\n }\n\n /**\n * The resolved entry type definitions for the project\n */\n public get entry(): ResolvedEntryTypeDefinition[] {\n const entry = this._entry;\n\n return resolveEntriesSync(\n this,\n !entry || entry.length === 0 ? toArray(this.config.entry) : entry\n );\n }\n\n /**\n * The TypeScript configuration parsed from the tsconfig file\n */\n public get tsconfig(): ParsedTypeScriptConfig {\n if (!this.#tsconfig) {\n this.tsconfig = {\n tsconfigFilePath: this.config.tsconfig\n } as ParsedTypeScriptConfig;\n }\n\n return this.#tsconfig;\n }\n\n /**\n * Sets the TypeScript configuration parsed from the tsconfig file\n */\n public set tsconfig(value: ParsedTypeScriptConfig) {\n this.#tsconfig = value;\n this.resolvePatterns = tsconfigPathsToRegExp(value?.options?.paths ?? {});\n }\n\n /**\n * The virtual file system interface for the project\n */\n public get fs(): VirtualFileSystemInterface {\n if (!this.#fs) {\n this.#fs = VirtualFileSystem.createSync(this);\n }\n\n return this.#fs;\n }\n\n /**\n * Get the checksum of the project's current state\n */\n public get checksum(): string | null {\n return this.#checksum;\n }\n\n /**\n * The meta information about the current build\n */\n public get meta() {\n return {\n buildId: this.#buildId,\n releaseId: this.#releaseId,\n checksum: this.#checksum,\n timestamp: this.#timestamp,\n projectRootHash: murmurhash(\n {\n workspaceRoot: this.workspaceConfig?.workspaceRoot,\n projectRoot: this.config?.projectRoot\n },\n {\n maxLength: PROJECT_ROOT_HASH_LENGTH\n }\n ),\n configHash: murmurhash(this.config, {\n maxLength: CACHE_HASH_LENGTH\n })\n } as MetaInfo;\n }\n\n /**\n * The resolved configuration options\n */\n public get config(): TResolvedConfig {\n return this.resolvedConfig ?? {};\n }\n\n /**\n * The logger function\n */\n public get log(): LogFn {\n if (!this.logFn) {\n this.logFn = this.createLog();\n }\n\n return this.logFn;\n }\n\n /**\n * The workspace configuration\n */\n public get workspaceConfig(): WorkspaceConfig {\n return this.#workspaceConfig;\n }\n\n /**\n * The environment paths for the project\n */\n public get envPaths(): EnvPaths {\n if (\n envPathCache.has({\n workspaceRoot: this.workspaceConfig.workspaceRoot,\n framework: this.config?.framework || \"powerlines\"\n })\n ) {\n return envPathCache.get({\n workspaceRoot: this.workspaceConfig.workspaceRoot,\n framework: this.config?.framework || \"powerlines\"\n })!;\n }\n\n const envPaths = getEnvPaths({\n orgId: \"storm-software\",\n appId: this.config?.framework || \"powerlines\",\n workspaceRoot: this.workspaceConfig.workspaceRoot\n });\n envPathCache.set(\n {\n workspaceRoot: this.workspaceConfig.workspaceRoot,\n framework: this.config?.framework || \"powerlines\"\n },\n envPaths\n );\n\n return envPaths;\n }\n\n /**\n * Get the path to the artifacts directory for the project\n */\n public get artifactsPath(): string {\n return joinPaths(\n this.workspaceConfig.workspaceRoot,\n this.config.projectRoot,\n this.config.output.artifactsPath\n );\n }\n\n /**\n * Get the path to the builtin modules used by the project\n */\n public get builtinsPath(): string {\n return joinPaths(this.artifactsPath, \"builtins\");\n }\n\n /**\n * Get the path to the entry directory for the project\n */\n public get entryPath(): string {\n return joinPaths(this.artifactsPath, \"entry\");\n }\n\n /**\n * Get the path to the data directory for the project\n */\n public get dataPath(): string {\n return joinPaths(\n this.envPaths.data,\n \"projects\",\n getPrefixedProjectRootHash(this.config.name, this.meta.projectRootHash)\n );\n }\n\n /**\n * Get the path to the cache directory for the project\n */\n public get cachePath(): string {\n return joinPaths(\n this.envPaths.cache,\n \"projects\",\n murmurhash(\n {\n checksum: this.#checksum,\n config: this.meta.configHash\n },\n {\n maxLength: CACHE_HASH_LENGTH\n }\n )\n );\n }\n\n /**\n * Get the path to the generated declaration file for the project\n */\n public get dtsPath(): string {\n return this.config.output.dts\n ? appendPath(this.config.output.dts, this.workspaceConfig.workspaceRoot)\n : joinPaths(\n this.workspaceConfig.workspaceRoot,\n this.config.projectRoot,\n \"powerlines.d.ts\"\n );\n }\n\n /**\n * Get the project root relative to the workspace root\n */\n public get relativeToWorkspaceRoot() {\n return relativeToWorkspaceRoot(this.config.projectRoot);\n }\n\n /**\n * The builtin module id that exist in the Powerlines virtual file system\n */\n public get builtins(): string[] {\n return Object.values(this.fs.metadata)\n .filter(meta => meta && meta.type === \"builtin\")\n .map(meta => meta?.id)\n .filter(Boolean);\n }\n\n /**\n * The {@link Project} instance used for type reflection and module manipulation\n *\n * @see https://ts-morph.com/\n *\n * @remarks\n * This instance is created lazily on first access.\n */\n public get program(): Project {\n if (!this.#program) {\n this.#program = createProgram(this, {\n skipAddingFilesFromTsConfig: true\n });\n }\n\n return this.#program;\n }\n\n /**\n * Gets the parser cache.\n */\n protected get parserCache(): FlatCache {\n if (!this.#parserCache) {\n this.#parserCache = create({\n cacheId: \"parser\",\n cacheDir: this.cachePath,\n ttl: 2 * 60 * 60 * 1000,\n lruSize: 5000,\n persistInterval: 250\n });\n }\n\n return this.#parserCache;\n }\n\n /**\n * Gets the request cache.\n */\n protected get requestCache(): FlatCache {\n if (!this.#requestCache) {\n this.#requestCache = create({\n cacheId: \"http\",\n cacheDir: this.cachePath,\n ttl: 6 * 60 * 60 * 1000,\n lruSize: 5000,\n persistInterval: 250\n });\n }\n\n return this.#requestCache;\n }\n\n /**\n * The entry points that exist in the Powerlines virtual file system\n */\n protected get _entry(): ResolvedEntryTypeDefinition[] {\n return Object.entries(this.fs.metadata)\n .filter(([, meta]) => meta && meta.type === \"entry\")\n .map(([path, meta]) => {\n const typeDefinition = {\n file: path\n } as ResolvedEntryTypeDefinition;\n\n if (meta.properties) {\n if (isSetString(meta.properties.file)) {\n typeDefinition.file = meta.properties.file;\n }\n if (isSetString(meta.properties.name)) {\n typeDefinition.name = meta.properties.name;\n }\n if (\n isSetString(meta.properties[\"input.file\"]) ||\n isSetString(meta.properties[\"input.name\"])\n ) {\n typeDefinition.input ??= {} as TypeDefinition;\n if (isSetString(meta.properties[\"input.file\"])) {\n typeDefinition.input.file = meta.properties[\"input.file\"];\n }\n if (isSetString(meta.properties[\"input.name\"])) {\n typeDefinition.input.name = meta.properties[\"input.name\"];\n }\n }\n if (isSetString(meta.properties.output)) {\n typeDefinition.output = meta.properties.output;\n }\n }\n\n return typeDefinition;\n })\n .filter(Boolean);\n }\n\n /**\n * A function to perform HTTP fetch requests\n *\n * @remarks\n * This function uses a caching layer to avoid duplicate requests during the Powerlines process.\n *\n * @example\n * ```ts\n * const response = await context.fetch(\"https://api.example.com/data\");\n * const data = await response.json();\n * ```\n *\n * @see https://github.com/nodejs/undici\n *\n * @param input - The URL to fetch.\n * @param options - The fetch request options.\n * @returns A promise that resolves to a response returned by the fetch.\n */\n public async fetch(\n input: RequestInfo,\n options: FetchOptions = {}\n ): Promise<Response> {\n const cacheKey = murmurhash({\n input: input.toString(),\n options: JSON.stringify(options)\n });\n\n if (!this.config.skipCache && !options.skipCache) {\n const cached = this.requestCache.get<\n {\n body: BodyInit;\n } & Pick<Response, \"status\" | \"statusText\" | \"headers\">\n >(cacheKey);\n if (cached) {\n return new Response(cached.body, {\n status: cached.status,\n statusText: cached.statusText,\n headers: cached.headers\n });\n }\n }\n\n const response = await fetchRequest(input, { timeout: 12_000, ...options });\n const result = {\n body: await response.text(),\n status: response.status,\n statusText: response.statusText,\n headers: Object.fromEntries(response.headers.entries())\n };\n\n if (!this.config.skipCache && !options.skipCache) {\n try {\n this.requestCache.set(cacheKey, result);\n } catch {\n // Do nothing\n }\n }\n\n return new Response(result.body, {\n status: result.status,\n statusText: result.statusText,\n headers: result.headers\n });\n }\n\n /**\n * Parse code using [Oxc-Parser](https://github.com/oxc/oxc) into an (ESTree-compatible)[https://github.com/estree/estree] AST object.\n *\n * @remarks\n * This function can be used to parse TypeScript code into an AST for further analysis or transformation.\n *\n * @example\n * ```ts\n * const ast = context.parse(\"const x: number = 42;\");\n * ```\n *\n * @see https://rollupjs.org/plugin-development/#this-parse\n * @see https://github.com/oxc/oxc\n *\n * @param code - The source code to parse.\n * @param options - The options to pass to the parser.\n * @returns An (ESTree-compatible)[https://github.com/estree/estree] AST object.\n */\n public async parse(code: string, options: ParseOptions = {}) {\n const cacheKey = murmurhash({\n code,\n options\n });\n\n let result!: ParseResult;\n if (!this.config.skipCache) {\n result = this.parserCache.get<ParseResult>(cacheKey);\n if (result) {\n return result;\n }\n }\n\n result = await parse(`source.${options.lang || \"ts\"}`, code, {\n ...options,\n sourceType: \"module\",\n showSemanticErrors: this.config.mode === \"development\"\n });\n\n if (!this.config.skipCache) {\n this.parserCache.set(cacheKey, result);\n }\n\n return result;\n }\n\n /**\n * A helper function to resolve modules in the Virtual File System\n *\n * @remarks\n * This function can be used to resolve modules relative to the project root directory.\n *\n * @example\n * ```ts\n * const resolved = await context.resolve(\"some-module\", \"/path/to/importer\");\n * ```\n *\n * @param id - The module to resolve.\n * @param importer - An optional path to the importer module.\n * @param options - Additional resolution options.\n * @returns A promise that resolves to the resolved module path.\n */\n public async resolve(\n id: string,\n importer?: string,\n options: ResolveOptions = {}\n ): Promise<ExternalIdResult | undefined> {\n let moduleId = id;\n if (this.config.build.alias) {\n if (Array.isArray(this.config.build.alias)) {\n const alias = this.config.build.alias.find(a =>\n match(moduleId, [a.find])\n );\n if (alias) {\n moduleId = alias.replacement;\n }\n } else if (\n isSetObject(this.config.build.alias) &&\n this.config.build.alias[id]\n ) {\n moduleId = this.config.build.alias[id];\n }\n }\n\n if (this.fs.isVirtual(moduleId)) {\n const result = await this.fs.resolve(moduleId, importer, {\n conditions: this.config.build.conditions,\n extensions: this.config.build.extensions,\n ...options\n });\n if (!result) {\n return undefined;\n }\n\n return {\n id: `\\0${result}`,\n external: this.config.projectType !== \"application\"\n };\n }\n\n if (this.config.build.skipNodeModulesBundle) {\n if (\n match(moduleId, this.resolvePatterns) ||\n match(moduleId, this.config.build.noExternal)\n ) {\n return undefined;\n }\n\n if (\n match(moduleId, this.config.build.external) ||\n moduleId.startsWith(\"node:\")\n ) {\n return { id: moduleId, external: true };\n }\n\n // Exclude any other import that looks like a Node module\n if (!/^[A-Z]:[/\\\\]|^\\.{0,2}\\/|^\\.{1,2}$/.test(moduleId)) {\n return {\n id: moduleId,\n external: true\n };\n }\n } else {\n if (match(moduleId, this.config.build.noExternal)) {\n return undefined;\n }\n\n if (\n match(moduleId, this.config.build.external) ||\n moduleId.startsWith(\"node:\")\n ) {\n return { id: moduleId, external: true };\n }\n }\n\n return undefined;\n }\n\n /**\n * A helper function to load modules from the Virtual File System\n *\n * @remarks\n * This function can be used to load modules relative to the project root directory.\n *\n * @example\n * ```ts\n * const module = await context.load(\"some-module\", \"/path/to/importer\");\n * ```\n *\n * @param id - The module to load.\n * @returns A promise that resolves to the loaded module.\n */\n public async load(id: string): Promise<TransformResult | undefined> {\n const resolvedId = await this.fs.resolve(id);\n if (!resolvedId) {\n return undefined;\n }\n\n const code = await this.fs.read(resolvedId);\n if (!code) {\n return undefined;\n }\n\n return { code, map: null };\n }\n\n /**\n * Get the builtin virtual files that exist in the Powerlines virtual file system\n */\n public async getBuiltins() {\n return Promise.all(\n Object.entries(this.fs.metadata)\n .filter(([, meta]) => meta && meta.type === \"builtin\")\n .map(async ([id, meta]) => {\n const code = await this.fs.read(id);\n const path = this.fs.paths[id];\n\n return { ...meta, path, code } as VirtualFile;\n })\n );\n }\n\n /**\n * Resolves a file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the file\n * @param path - The path to write the file to\n * @param options - Additional options for writing the file\n */\n public async emit(\n code: string,\n path: string,\n options: EmitOptions = {}\n ): Promise<void> {\n const filePath = options.extension\n ? findFileExtensionSafe(path)\n ? options.extension.startsWith(\".\")\n ? path.replace(findFileDotExtensionSafe(path), options.extension)\n : path.replace(findFileExtensionSafe(path), options.extension)\n : options.extension.startsWith(\".\")\n ? `${path}${options.extension}`\n : `${path}.${options.extension}`\n : findFileExtensionSafe(path)\n ? path\n : `${path}.ts`;\n\n if (\n isFunction((this as unknown as UnpluginBuildContext).emitFile) &&\n options.emitWithBundler\n ) {\n return (this as unknown as UnpluginBuildContext).emitFile({\n needsCodeReference: options.needsCodeReference,\n originalFileName: options.originalFileName,\n fileName: filePath,\n source: code,\n type: \"asset\"\n });\n }\n\n return this.fs.write(filePath, code, options);\n }\n\n /**\n * Synchronously resolves a file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the file\n * @param path - The path to write the file to\n * @param options - Additional options for writing the file\n */\n public emitSync(code: string, path: string, options: EmitOptions = {}) {\n const filePath = options.extension\n ? findFileExtensionSafe(path)\n ? options.extension.startsWith(\".\")\n ? path.replace(findFileDotExtensionSafe(path), options.extension)\n : path.replace(findFileExtensionSafe(path), options.extension)\n : options.extension.startsWith(\".\")\n ? `${path}${options.extension}`\n : `${path}.${options.extension}`\n : findFileExtensionSafe(path)\n ? path\n : `${path}.ts`;\n\n if (\n isFunction((this as unknown as UnpluginBuildContext).emitFile) &&\n options.emitWithBundler\n ) {\n return (this as unknown as UnpluginBuildContext).emitFile({\n needsCodeReference: options.needsCodeReference,\n originalFileName: options.originalFileName,\n fileName: filePath,\n source: code,\n type: \"asset\"\n });\n }\n\n return this.fs.writeSync(filePath, code, options);\n }\n\n /**\n * Resolves a entry virtual file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the entry file\n * @param path - A path to write the entry file to\n * @param options - Optional write file options\n */\n public async emitEntry(\n code: string,\n path: string,\n options: EmitEntryOptions = {}\n ): Promise<void> {\n return this.emit(\n code,\n appendPath(path, this.entryPath),\n defu(\n {\n meta: {\n type: \"entry\",\n properties: {\n file: appendPath(path, this.entryPath),\n name: options?.name,\n output: options?.output,\n \"input.file\": options?.input?.file,\n \"input.name\": options?.input?.name\n }\n }\n },\n omit(options, [\"name\"])\n )\n );\n }\n\n /**\n * Synchronously resolves a entry virtual file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the entry file\n * @param path - A path to write the entry file to\n * @param options - Optional write file options\n */\n public emitEntrySync(\n code: string,\n path: string,\n options: EmitEntryOptions = {}\n ): void {\n return this.emitSync(\n code,\n appendPath(path, this.entryPath),\n defu(\n {\n meta: {\n type: \"entry\",\n properties: {\n file: appendPath(path, this.entryPath),\n name: options?.name,\n output: options?.output,\n \"input.file\": options?.input?.file,\n \"input.name\": options?.input?.name\n }\n }\n },\n omit(options, [\"name\"])\n )\n );\n }\n\n /**\n * Resolves a builtin virtual file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the builtin file\n * @param id - The unique identifier of the builtin file\n * @param options - Optional write file options\n */\n public async emitBuiltin(\n code: string,\n id: string,\n options: EmitOptions = {}\n ): Promise<void> {\n if (!this.builtinsPath) {\n throw new Error(\n `The builtins path is not set. Cannot emit builtin file with id \"${id}\".`\n );\n }\n\n if (!isSetString(id)) {\n throw new Error(\n `The builtin id must be a non-empty string. Received: ${String(id)}`\n );\n }\n\n return this.emit(\n code,\n appendPath(id, this.builtinsPath),\n defu(options, { meta: { type: \"builtin\", id } })\n );\n }\n\n /**\n * Synchronously resolves a builtin virtual file and writes it to the VFS if it does not already exist\n *\n * @param code - The source code of the builtin file\n * @param id - The unique identifier of the builtin file\n * @param options - Optional write file options\n */\n public emitBuiltinSync(code: string, id: string, options: EmitOptions = {}) {\n if (!this.builtinsPath) {\n throw new Error(\n `The builtins path is not set. Cannot emit builtin file with id \"${id}\".`\n );\n }\n\n if (!isSetString(id)) {\n throw new Error(\n `The builtin id must be a non-empty string. Received: ${String(id)}`\n );\n }\n\n return this.emitSync(\n code,\n appendPath(id, this.builtinsPath),\n defu(options, { meta: { type: \"builtin\", id } })\n );\n }\n\n /**\n * Update the context using a new user configuration options\n *\n * @param userConfig - The new user configuration options.\n */\n public async withUserConfig(\n userConfig: InitialUserConfig<TResolvedConfig[\"userConfig\"]>,\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n this.mergeUserConfig(userConfig as Partial<TResolvedConfig[\"userConfig\"]>);\n\n await this.init(this.config.userConfig, options);\n }\n\n /**\n * Update the context using a new inline configuration options\n *\n * @param inlineConfig - The new inline configuration options.\n */\n public async withInlineConfig(\n inlineConfig: TResolvedConfig[\"inlineConfig\"],\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n this.config.inlineConfig = inlineConfig;\n\n if (inlineConfig.command === \"new\") {\n const workspacePackageJsonPath = joinPaths(\n this.workspaceConfig.workspaceRoot,\n \"package.json\"\n );\n if (!existsSync(workspacePackageJsonPath)) {\n throw new Error(\n `The workspace package.json file could not be found at ${workspacePackageJsonPath}`\n );\n }\n\n this.packageJson = await readJsonFile<PackageJson>(\n workspacePackageJsonPath\n );\n\n this.workspaceConfig.repository ??= isSetString(\n this.packageJson?.repository\n )\n ? this.packageJson.repository\n : this.packageJson?.repository?.url;\n }\n\n await this.init(this.config.inlineConfig, options);\n }\n\n /**\n * A logging function for fatal messages\n *\n * @param message - The message to log.\n */\n public fatal(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.FATAL,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * A logging function for error messages\n *\n * @param message - The message to log.\n */\n public error(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.ERROR,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * A logging function for warning messages\n *\n * @param message - The message to log.\n */\n public warn(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.WARN,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * A logging function for informational messages\n *\n * @param message - The message to log.\n */\n public info(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.INFO,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * A logging function for debug messages\n *\n * @param message - The message to log.\n */\n public debug(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.DEBUG,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * A logging function for trace messages\n *\n * @param message - The message to log.\n */\n public trace(message: string | UnpluginMessage) {\n this.log(\n LogLevelLabel.TRACE,\n isString(message) ? message : StormJSON.stringify(message)\n );\n }\n\n /**\n * Create a new logger instance\n *\n * @param name - The name to use for the logger instance\n * @returns A logger function\n */\n public createLog(name: string | null = null): LogFn {\n return createLog(name, {\n ...this.config,\n logLevel: isNull(this.config.logLevel) ? \"silent\" : this.config.logLevel\n });\n }\n\n /**\n * Extend the current logger instance with a new name\n *\n * @param name - The name to use for the extended logger instance\n * @returns A logger function\n */\n public extendLog(name: string): LogFn {\n return extendLog(this.log, name);\n }\n\n /**\n * Generates a checksum representing the current context state\n *\n * @param root - The root directory of the project to generate the checksum for\n * @returns A promise that resolves to a string representing the checksum\n */\n public async generateChecksum(\n root = this.config.projectRoot\n ): Promise<string> {\n this.#checksum = await hashDirectory(root, {\n ignore: [\"node_modules\", \".git\", \".nx\", \".cache\", \".storm\", \"tmp\", \"dist\"]\n });\n\n return this.#checksum;\n }\n\n /**\n * Creates a new StormContext instance.\n *\n * @param workspaceConfig - The workspace configuration.\n */\n protected constructor(workspaceConfig: WorkspaceConfig) {\n this.#workspaceConfig = workspaceConfig;\n\n envPathCache.set(\n {\n workspaceRoot: workspaceConfig.workspaceRoot,\n framework: \"powerlines\"\n },\n getEnvPaths({\n orgId:\n (isSetObject(workspaceConfig.organization)\n ? workspaceConfig.organization.name\n : workspaceConfig.organization) || \"storm-software\",\n appId: \"powerlines\",\n workspaceRoot: workspaceConfig.workspaceRoot\n })\n );\n }\n\n /**\n * The resolved configuration for this context\n */\n protected resolvedConfig: TResolvedConfig = {} as TResolvedConfig;\n\n /**\n * A logger function specific to this context\n */\n protected logFn!: LogFn;\n\n /**\n * Initialize the context with the provided configuration options\n *\n * @param config - The partial user configuration to use for initialization.\n */\n protected async init(\n config: Partial<TResolvedConfig[\"userConfig\"]> = {},\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n const cacheKey: ConfigCacheKey = {\n projectRoot:\n config.root ??\n this.config.projectRoot ??\n this.config.userConfig?.root ??\n this.config.inlineConfig?.root,\n mode: (config.mode ?? this.config.mode) || this.workspaceConfig.mode,\n skipCache: config.skipCache ?? this.config.skipCache ?? false,\n configFile: config.configFile ?? this.config.configFile,\n framework: config.framework ?? this.config.framework ?? \"powerlines\",\n command: this.config.inlineConfig?.command\n };\n\n if (configCache.has(cacheKey)) {\n const result = configCache.get(cacheKey)!;\n\n this.projectJson = result.projectJson;\n this.packageJson = result.packageJson;\n this.#checksum = result.checksum;\n this.resolver = result.resolver;\n\n this.mergeUserConfig(result.userConfig.config, this.config.userConfig);\n } else {\n const projectJsonPath = joinPaths(cacheKey.projectRoot, \"project.json\");\n if (existsSync(projectJsonPath)) {\n this.projectJson = await readJsonFile(projectJsonPath);\n }\n\n const packageJsonPath = joinPaths(cacheKey.projectRoot, \"package.json\");\n if (existsSync(packageJsonPath)) {\n this.packageJson = await readJsonFile<PackageJson>(packageJsonPath);\n }\n\n this.#checksum = await this.generateChecksum(cacheKey.projectRoot);\n this.resolver = createResolver({\n workspaceRoot: this.workspaceConfig.workspaceRoot,\n projectRoot: cacheKey.projectRoot,\n cacheDir: this.cachePath,\n mode: cacheKey.mode,\n logLevel: (config.logLevel ||\n this.config?.logLevel ||\n this.workspaceConfig.logLevel ||\n \"info\") as CreateResolverOptions[\"logLevel\"],\n skipCache: cacheKey.skipCache\n });\n\n const userConfig = await loadUserConfigFile(\n cacheKey.projectRoot,\n this.workspaceConfig.workspaceRoot,\n this.resolver,\n cacheKey.command as PowerlinesCommand | undefined,\n cacheKey.mode,\n cacheKey.configFile,\n cacheKey.framework\n );\n this.mergeUserConfig(userConfig.config);\n\n configCache.set(cacheKey, {\n projectJson: this.projectJson,\n packageJson: this.packageJson,\n checksum: this.#checksum,\n resolver: this.resolver,\n userConfig\n });\n }\n\n config.tsconfig ??= getTsconfigFilePath(\n this.workspaceConfig.workspaceRoot,\n cacheKey.projectRoot,\n config.tsconfig\n );\n\n if (isSetObject(config)) {\n this.resolvedConfig = defu(\n {\n inlineConfig: this.config.inlineConfig,\n userConfig: this.config.userConfig\n },\n options.isHighPriority ? this.#getConfigProps(config) : {},\n {\n command: this.config.inlineConfig?.command,\n ...this.#getConfigProps(this.config.inlineConfig)\n },\n this.#getConfigProps(this.config.userConfig),\n {\n mode: this.workspaceConfig?.mode,\n logLevel: this.workspaceConfig?.logLevel,\n skipCache: this.workspaceConfig?.skipCache\n },\n {\n name: this.projectJson?.name || this.packageJson?.name,\n version: this.packageJson?.version,\n description: this.packageJson?.description,\n sourceRoot:\n this.projectJson?.sourceRoot ||\n appendPath(\"src\", cacheKey.projectRoot),\n output: defu(config.output ?? {}, {\n outputPath: cacheKey.projectRoot\n ? joinPaths(\n this.workspaceConfig?.directories?.build || \"dist\",\n cacheKey.projectRoot\n )\n : this.workspaceConfig?.directories?.build || \"dist\",\n artifactsPath: `.${config.framework ?? \"powerlines\"}`,\n dts: joinPaths(\n cacheKey.projectRoot,\n `${config.framework ?? \"powerlines\"}.d.ts`\n ),\n builtinPrefix: config.framework ?? \"powerlines\",\n assets: [\n {\n glob: \"LICENSE\"\n },\n {\n input: cacheKey.projectRoot,\n glob: \"*.md\"\n },\n {\n input: cacheKey.projectRoot,\n glob: \"package.json\"\n }\n ]\n })\n },\n options.isHighPriority ? {} : this.#getConfigProps(config),\n {\n inlineConfig: {},\n userConfig: {},\n framework: \"powerlines\",\n platform: \"neutral\",\n mode: \"production\",\n projectType: \"application\",\n logLevel: \"info\",\n preview: false,\n environments: {},\n transform: {\n babel: {\n plugins: [],\n presets: []\n }\n },\n lint: {\n eslint: {}\n },\n build: {\n target: \"esnext\",\n override: {}\n }\n }\n ) as any;\n }\n\n this.config.entry = getUniqueEntries(this.config.entry);\n\n if (\n this.config.name?.startsWith(\"@\") &&\n this.config.name.split(\"/\").filter(Boolean).length > 1\n ) {\n this.config.name = this.config.name.split(\"/\").filter(Boolean)[1]!;\n }\n\n this.config.title ??= titleCase(this.config.name);\n\n this.config.organization ??=\n (isSetObject(this.workspaceConfig.organization)\n ? this.workspaceConfig.organization.name\n : this.workspaceConfig.organization) ||\n (isSetObject(this.packageJson?.author)\n ? this.packageJson?.author?.name\n : this.packageJson?.author) ||\n this.config.name;\n\n if (this.config.userConfig.build?.external) {\n this.config.userConfig.build.external = getUnique(\n this.config.userConfig.build.external\n );\n }\n if (this.config.userConfig.build?.noExternal) {\n this.config.userConfig.build.noExternal = getUnique(\n this.config.userConfig.build.noExternal\n );\n }\n\n if (this.config.build.external) {\n this.config.build.external = getUnique(this.config.build.external);\n }\n if (this.config.build.noExternal) {\n this.config.build.noExternal = getUnique(this.config.build.noExternal);\n }\n\n this.config.output.format = getUnique(\n toArray(\n this.config.output?.format ??\n (this.config.projectType === \"library\" ? [\"cjs\", \"esm\"] : [\"esm\"])\n )\n );\n\n if (\n this.config.projectRoot &&\n this.config.projectRoot !== \".\" &&\n this.config.projectRoot !== \"./\" &&\n this.config.projectRoot !== this.workspaceConfig.workspaceRoot\n ) {\n this.config.output.outputPath ??= joinPaths(\n \"dist\",\n this.config.projectRoot\n );\n this.config.output.buildPath ??= joinPaths(\n this.config.projectRoot,\n \"dist\"\n );\n } else {\n this.config.output.outputPath ??= \"dist\";\n this.config.output.buildPath ??= \"dist\";\n }\n\n this.config.output.assets = getUniqueBy(\n this.config.output.assets.map(asset => {\n return {\n glob: isSetObject(asset) ? asset.glob : asset,\n input:\n isString(asset) ||\n !asset.input ||\n asset.input === \".\" ||\n asset.input === \"/\" ||\n asset.input === \"./\"\n ? this.workspaceConfig.workspaceRoot\n : isParentPath(asset.input, this.workspaceConfig.workspaceRoot) ||\n asset.input === this.workspaceConfig.workspaceRoot\n ? asset.input\n : appendPath(asset.input, this.workspaceConfig.workspaceRoot),\n output:\n isSetObject(asset) && asset.output\n ? isParentPath(asset.output, this.workspaceConfig.workspaceRoot)\n ? asset.output\n : appendPath(\n joinPaths(\n this.config.output.outputPath,\n replacePath(\n replacePath(\n asset.output,\n replacePath(\n this.config.output.outputPath,\n this.workspaceConfig.workspaceRoot\n )\n ),\n this.config.output.outputPath\n )\n ),\n this.workspaceConfig.workspaceRoot\n )\n : appendPath(\n this.config.output.outputPath,\n this.workspaceConfig.workspaceRoot\n ),\n ignore:\n isSetObject(asset) && asset.ignore\n ? toArray(asset.ignore)\n : undefined\n };\n }),\n (a: ResolvedAssetGlob) => `${a.input}-${a.glob}-${a.output}`\n );\n\n this.config.plugins = (this.config.plugins ?? [])\n .filter(Boolean)\n .reduce((ret, plugin) => {\n if (\n isPlugin(plugin) &&\n checkDedupe(\n plugin,\n ret.filter(p => isPlugin(p))\n )\n ) {\n return ret;\n }\n\n ret.push(plugin);\n\n return ret;\n }, [] as PluginConfig[]);\n\n // Apply path token replacements\n\n if (this.config.tsconfig) {\n this.config.tsconfig = replacePathTokens(this, this.config.tsconfig);\n }\n\n if (this.config.output.dts) {\n if (isSetString(this.config.output.dts)) {\n this.config.output.dts = replacePathTokens(\n this,\n this.config.output.dts\n );\n } else {\n this.config.output.dts = joinPaths(\n this.config.projectRoot,\n `${this.config.framework ?? \"powerlines\"}.d.ts`\n );\n }\n }\n\n if (this.config.build.polyfill) {\n this.config.build.polyfill = this.config.build.polyfill.map(polyfill =>\n replacePathTokens(this, polyfill)\n );\n }\n\n if (this.config.output.assets) {\n this.config.output.assets = this.config.output.assets.map(asset => ({\n ...asset,\n glob: replacePathTokens(this, asset.glob),\n ignore: asset.ignore\n ? asset.ignore.map(ignore => replacePathTokens(this, ignore))\n : undefined,\n input: replacePathTokens(this, asset.input),\n output: replacePathTokens(this, asset.output)\n }));\n }\n\n this.#fs ??= await VirtualFileSystem.create(this);\n }\n\n protected mergeUserConfig(\n from: Partial<TResolvedConfig[\"userConfig\"]> = {},\n into: Partial<TResolvedConfig[\"userConfig\"]> = this.config.userConfig ?? {}\n ) {\n this.config.userConfig = defu(\n {\n entry:\n Array.isArray(from.entry) && from.entry.length > 0\n ? from.entry\n : Array.isArray(into?.entry) && into.entry.length > 0\n ? into.entry\n : []\n },\n omit(from ?? {}, [\"entry\"]),\n omit(into ?? {}, [\"entry\"])\n ) as TResolvedConfig[\"userConfig\"];\n\n if (this.config.userConfig.output?.format) {\n this.config.userConfig.output.format = getUnique(\n toArray(this.config.userConfig.output?.format)\n );\n }\n\n this.config.userConfig.plugins = (this.config.userConfig.plugins ?? [])\n .filter(Boolean)\n .reduce((ret, plugin) => {\n if (\n isPlugin(plugin) &&\n checkDedupe(\n plugin,\n ret.filter(p => isPlugin(p))\n )\n ) {\n return ret;\n }\n\n ret.push(plugin);\n\n return ret;\n }, [] as PluginConfig[]);\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMFC7UJHT_cjs = require('./chunk-MFC7UJHT.cjs');
4
- var chunkPH7RTWRA_cjs = require('./chunk-PH7RTWRA.cjs');
5
- var chunkS7QVA3TS_cjs = require('./chunk-S7QVA3TS.cjs');
4
+ var chunk4DLYGQZC_cjs = require('./chunk-4DLYGQZC.cjs');
5
+ var chunkXOLWPP4K_cjs = require('./chunk-XOLWPP4K.cjs');
6
6
  var chunkBJGMF356_cjs = require('./chunk-BJGMF356.cjs');
7
7
  var chunkZWLSNYIN_cjs = require('./chunk-ZWLSNYIN.cjs');
8
8
  var chunkQHTL2U3L_cjs = require('./chunk-QHTL2U3L.cjs');
@@ -75,7 +75,7 @@ var t__namespace = /*#__PURE__*/_interopNamespace(t);
75
75
 
76
76
  // package.json
77
77
  var package_default = {
78
- version: "0.37.51"};
78
+ version: "0.37.53"};
79
79
  function resolveModulePath(nodePath, state) {
80
80
  if (!t__namespace.isStringLiteral(nodePath.node)) {
81
81
  return;
@@ -499,7 +499,7 @@ var PowerlinesAPI = class _PowerlinesAPI {
499
499
  * @returns A new instance of the Powerlines API
500
500
  */
501
501
  static async from(workspaceRoot, config) {
502
- const api = new _PowerlinesAPI(await chunkPH7RTWRA_cjs.PowerlinesAPIContext.from(workspaceRoot, config));
502
+ const api = new _PowerlinesAPI(await chunk4DLYGQZC_cjs.PowerlinesAPIContext.from(workspaceRoot, config));
503
503
  api.#context.$$internal = {
504
504
  api,
505
505
  addPlugin: api.#addPlugin.bind(api)
@@ -1029,8 +1029,8 @@ ${formatTypes(types)}
1029
1029
  if (isPromise.isPromiseLike(config)) {
1030
1030
  awaited = await Promise.resolve(config);
1031
1031
  }
1032
- if (!chunkS7QVA3TS_cjs.isPluginConfig(awaited)) {
1033
- const invalid = chunkS7QVA3TS_cjs.findInvalidPluginConfig(awaited);
1032
+ if (!chunkXOLWPP4K_cjs.isPluginConfig(awaited)) {
1033
+ const invalid = chunkXOLWPP4K_cjs.findInvalidPluginConfig(awaited);
1034
1034
  throw new Error(`Invalid ${invalid && invalid.length > 1 ? "plugins" : "plugin"} specified in the configuration - ${invalid && invalid.length > 0 ? JSON.stringify(awaited) : invalid?.join("\n\n")}
1035
1035
 
1036
1036
  Please ensure the value is one of the following:
@@ -1042,7 +1042,7 @@ Please ensure the value is one of the following:
1042
1042
  - an array of plugins or plugin configurations`);
1043
1043
  }
1044
1044
  let plugins;
1045
- if (chunkS7QVA3TS_cjs.isPlugin(awaited)) {
1045
+ if (chunkXOLWPP4K_cjs.isPlugin(awaited)) {
1046
1046
  plugins = [
1047
1047
  awaited
1048
1048
  ];
@@ -1055,9 +1055,9 @@ Please ensure the value is one of the following:
1055
1055
  } else {
1056
1056
  plugins = toArray.toArray(resolved);
1057
1057
  }
1058
- } else if (Array.isArray(awaited) && awaited.every(chunkS7QVA3TS_cjs.isPlugin)) {
1058
+ } else if (Array.isArray(awaited) && awaited.every(chunkXOLWPP4K_cjs.isPlugin)) {
1059
1059
  plugins = awaited;
1060
- } else if (Array.isArray(awaited) && awaited.every(chunkS7QVA3TS_cjs.isPluginConfig)) {
1060
+ } else if (Array.isArray(awaited) && awaited.every(chunkXOLWPP4K_cjs.isPluginConfig)) {
1061
1061
  plugins = [];
1062
1062
  for (const pluginConfig of awaited) {
1063
1063
  const initialized = await this.#initPlugin(pluginConfig);
@@ -1065,10 +1065,10 @@ Please ensure the value is one of the following:
1065
1065
  plugins.push(...initialized);
1066
1066
  }
1067
1067
  }
1068
- } else if (chunkS7QVA3TS_cjs.isPluginConfigTuple(awaited) || chunkS7QVA3TS_cjs.isPluginConfigObject(awaited)) {
1068
+ } else if (chunkXOLWPP4K_cjs.isPluginConfigTuple(awaited) || chunkXOLWPP4K_cjs.isPluginConfigObject(awaited)) {
1069
1069
  let pluginConfig;
1070
1070
  let pluginOptions;
1071
- if (chunkS7QVA3TS_cjs.isPluginConfigTuple(awaited)) {
1071
+ if (chunkXOLWPP4K_cjs.isPluginConfigTuple(awaited)) {
1072
1072
  pluginConfig = awaited[0];
1073
1073
  pluginOptions = awaited?.length === 2 ? awaited[1] : void 0;
1074
1074
  } else {
@@ -1084,21 +1084,21 @@ Please ensure the value is one of the following:
1084
1084
  }
1085
1085
  } else if (isFunction.isFunction(pluginConfig)) {
1086
1086
  plugins = toArray.toArray(await Promise.resolve(pluginConfig(pluginOptions)));
1087
- } else if (Array.isArray(pluginConfig) && pluginConfig.every(chunkS7QVA3TS_cjs.isPlugin)) {
1087
+ } else if (Array.isArray(pluginConfig) && pluginConfig.every(chunkXOLWPP4K_cjs.isPlugin)) {
1088
1088
  plugins = pluginConfig;
1089
- } else if (chunkS7QVA3TS_cjs.isPlugin(pluginConfig)) {
1089
+ } else if (chunkXOLWPP4K_cjs.isPlugin(pluginConfig)) {
1090
1090
  plugins = toArray.toArray(pluginConfig);
1091
1091
  }
1092
1092
  }
1093
1093
  if (!plugins) {
1094
1094
  throw new Error(`The plugin configuration ${JSON.stringify(awaited)} is invalid. This configuration must point to a valid Powerlines plugin module.`);
1095
1095
  }
1096
- if (plugins.length > 0 && !plugins.every(chunkS7QVA3TS_cjs.isPlugin)) {
1096
+ if (plugins.length > 0 && !plugins.every(chunkXOLWPP4K_cjs.isPlugin)) {
1097
1097
  throw new Error(`The plugin option ${JSON.stringify(plugins)} does not export a valid module. This configuration must point to a valid Powerlines plugin module.`);
1098
1098
  }
1099
1099
  const result = [];
1100
1100
  for (const plugin of plugins) {
1101
- if (chunkS7QVA3TS_cjs.checkDedupe(plugin, this.context.plugins)) {
1101
+ if (chunkXOLWPP4K_cjs.checkDedupe(plugin, this.context.plugins)) {
1102
1102
  this.context.trace(`Duplicate ${chalk3__default.default.bold.cyanBright(plugin.name)} plugin dependency detected - Skipping initialization.`);
1103
1103
  } else {
1104
1104
  result.push(plugin);
@@ -1269,5 +1269,5 @@ function createUnpluginFactory(variant, decorate) {
1269
1269
  chunkPK6SKIKE_cjs.__name(createUnpluginFactory, "createUnpluginFactory");
1270
1270
 
1271
1271
  exports.createUnpluginFactory = createUnpluginFactory;
1272
- //# sourceMappingURL=chunk-N7V7ZMRG.cjs.map
1273
- //# sourceMappingURL=chunk-N7V7ZMRG.cjs.map
1272
+ //# sourceMappingURL=chunk-DUROA7IY.cjs.map
1273
+ //# sourceMappingURL=chunk-DUROA7IY.cjs.map