@powerlines/core 0.45.3 → 0.46.1

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 (54) hide show
  1. package/dist/constants/virtual-modules.cjs +4 -2
  2. package/dist/constants/virtual-modules.d.cts +1 -1
  3. package/dist/constants/virtual-modules.d.cts.map +1 -1
  4. package/dist/constants/virtual-modules.d.mts +1 -1
  5. package/dist/constants/virtual-modules.d.mts.map +1 -1
  6. package/dist/constants/virtual-modules.mjs +4 -2
  7. package/dist/constants/virtual-modules.mjs.map +1 -1
  8. package/dist/index.d.cts +5 -5
  9. package/dist/index.d.mts +5 -5
  10. package/dist/lib/config.d.cts +2 -1
  11. package/dist/lib/config.d.cts.map +1 -1
  12. package/dist/lib/config.d.mts +2 -1
  13. package/dist/lib/config.d.mts.map +1 -1
  14. package/dist/lib/config.mjs.map +1 -1
  15. package/dist/lib/unplugin/module-resolution.cjs +10 -10
  16. package/dist/lib/unplugin/module-resolution.mjs +10 -10
  17. package/dist/lib/unplugin/module-resolution.mjs.map +1 -1
  18. package/dist/lib/unplugin/plugin.cjs +6 -6
  19. package/dist/lib/unplugin/plugin.mjs +6 -6
  20. package/dist/lib/unplugin/plugin.mjs.map +1 -1
  21. package/dist/plugin-utils/helpers.d.cts +10 -9
  22. package/dist/plugin-utils/helpers.d.cts.map +1 -1
  23. package/dist/plugin-utils/helpers.d.mts +10 -9
  24. package/dist/plugin-utils/helpers.d.mts.map +1 -1
  25. package/dist/plugin-utils/paths.cjs +6 -2
  26. package/dist/plugin-utils/paths.mjs +6 -2
  27. package/dist/plugin-utils/paths.mjs.map +1 -1
  28. package/dist/types/_internal.d.cts +3 -18
  29. package/dist/types/_internal.d.cts.map +1 -1
  30. package/dist/types/_internal.d.mts +3 -18
  31. package/dist/types/_internal.d.mts.map +1 -1
  32. package/dist/types/api.d.cts +4 -3
  33. package/dist/types/api.d.cts.map +1 -1
  34. package/dist/types/api.d.mts +4 -3
  35. package/dist/types/api.d.mts.map +1 -1
  36. package/dist/types/config.d.cts +106 -73
  37. package/dist/types/config.d.cts.map +1 -1
  38. package/dist/types/config.d.mts +106 -73
  39. package/dist/types/config.d.mts.map +1 -1
  40. package/dist/types/context.d.cts +66 -84
  41. package/dist/types/context.d.cts.map +1 -1
  42. package/dist/types/context.d.mts +66 -84
  43. package/dist/types/context.d.mts.map +1 -1
  44. package/dist/types/index.d.cts +4 -4
  45. package/dist/types/index.d.mts +4 -4
  46. package/dist/types/plugin.d.cts +3 -6
  47. package/dist/types/plugin.d.cts.map +1 -1
  48. package/dist/types/plugin.d.mts +3 -6
  49. package/dist/types/plugin.d.mts.map +1 -1
  50. package/dist/types/unplugin.d.cts +9 -9
  51. package/dist/types/unplugin.d.cts.map +1 -1
  52. package/dist/types/unplugin.d.mts +9 -9
  53. package/dist/types/unplugin.d.mts.map +1 -1
  54. package/package.json +14 -13
@@ -1,9 +1,11 @@
1
- import { ResolveOptions, VirtualFile, VirtualFileSystemInterface, WriteOptions } from "./fs.cjs";
2
1
  import { Plugin } from "./plugin.cjs";
3
2
  import { HooksList, HooksListItem } from "./hooks.cjs";
3
+ import { API } from "./api.cjs";
4
+ import { ResolveOptions, VirtualFile, VirtualFileSystemInterface, WriteOptions } from "./fs.cjs";
4
5
  import { LogFn, LogLevelResolvedConfig, LogMessage, Logger, LoggerOptions } from "./logging.cjs";
5
6
  import { ParsedTypeScriptConfig } from "./tsconfig.cjs";
6
- import { EngineOptions, EnvironmentResolvedConfig, ExecutionOptions, InitialConfig, ParsedUserConfig, ResolvedConfig, ResolvedEntryTypeDefinition } from "./config.cjs";
7
+ import { EngineOptions, EnvironmentResolvedConfig, ExecutionOptions, ParsedUserConfig, ResolvedConfig, ResolvedEntryTypeDefinition, UserConfig } from "./config.cjs";
8
+ import { DeepPartial, DeepReadonly, RequiredKeys } from "@stryke/types/base";
7
9
  import { Jiti } from "jiti";
8
10
  import { EnvPaths } from "@stryke/env/get-env-paths";
9
11
  import { FetchRequestOptions } from "@stryke/http/fetch";
@@ -136,10 +138,6 @@ interface ResolveResult extends ExternalIdResult {
136
138
  * This context provides the foundational structure for interacting with the Powerlines engine.
137
139
  */
138
140
  interface BaseContext {
139
- /**
140
- * The options provided to the Powerlines process
141
- */
142
- options: EngineOptions;
143
141
  /**
144
142
  * The timestamp when the context was initialized
145
143
  */
@@ -157,9 +155,9 @@ interface BaseContext {
157
155
  */
158
156
  configFile: ParsedUserConfig;
159
157
  /**
160
- * The initial configuration provided when initializing the context, which may be used during the setup process to ensure that the configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
158
+ * The options provided to the Powerlines process, resolved with default values and merged with any configuration provided by plugins or other sources. This is typically the final configuration used during the build process, but may also include additional options that are relevant to the context and its interactions with the Powerlines engine.
161
159
  */
162
- initialConfig: InitialConfig<any>;
160
+ options: RequiredKeys<EngineOptions, "mode" | "cwd" | "root" | "framework">;
163
161
  /**
164
162
  * The log level to use for the Powerlines processes.
165
163
  */
@@ -220,13 +218,6 @@ interface BaseContext {
220
218
  * @returns A logger client instance that extends the current logger with the provided configuration options.
221
219
  */
222
220
  extendLogger: (options: LoggerOptions, logFn?: LogFn) => Logger;
223
- /**
224
- * A function to create a deep clone of the context
225
- *
226
- * @remarks
227
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
228
- */
229
- clone: () => Promise<BaseContext>;
230
221
  }
231
222
  interface ExecutionStateItem {
232
223
  /**
@@ -278,6 +269,23 @@ interface ExecutionState {
278
269
  * This context is used during the execution of the Powerlines engine, providing access to the input user configurations.
279
270
  */
280
271
  interface EngineContext extends BaseContext {
272
+ /**
273
+ * The initial options provided to the Powerlines process before any resolution or merging. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
274
+ */
275
+ readonly initialOptions: EngineOptions;
276
+ /**
277
+ * The options provided to the Powerlines process
278
+ */
279
+ options: RequiredKeys<Omit<EngineOptions, "logLevel">, "name" | "root" | "cwd" | "mode" | "framework"> & {
280
+ /**
281
+ * The log level to use for logging messages during the build process. This can be a string indicating the log level or a more detailed configuration object that allows for specifying different log levels for different categories of logs.
282
+ */
283
+ logLevel: LogLevelResolvedConfig;
284
+ };
285
+ /**
286
+ * The initial user configuration provided to the Powerlines process before any resolution or merging. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
287
+ */
288
+ readonly initialConfig: DeepPartial<UserConfig>;
281
289
  /**
282
290
  * A list of all command executions that will be run during the lifecycle of the engine
283
291
  */
@@ -291,22 +299,25 @@ interface EngineContext extends BaseContext {
291
299
  */
292
300
  interface UnresolvedContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends BaseContext {
293
301
  /**
294
- * The options provided to the Powerlines process
295
- */
296
- options: ExecutionOptions;
297
- /**
298
- * The input options used to initialize the context, which may be used when cloning the context to ensure the same configuration is applied to the new context
302
+ * The options provided to the Powerlines process, resolved with default values and merged with any configuration provided by plugins or other sources. This is typically the final configuration used during the build process, but may also include additional options that are relevant to the context and its interactions with the Powerlines engine.
299
303
  */
300
- initialOptions: Partial<EngineOptions>;
301
- /**
302
- * The initial configuration provided when initializing the context, which may be used during the setup process to ensure that the configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
303
- */
304
- initialConfig: InitialConfig<TResolvedConfig["userConfig"]>;
304
+ options: RequiredKeys<ExecutionOptions, "mode" | "cwd" | "root" | "framework" | "logLevel">;
305
305
  /**
306
306
  * An object containing the options provided to Powerlines
307
307
  */
308
- config: Omit<TResolvedConfig["userConfig"], "output"> & Required<Pick<TResolvedConfig["userConfig"], "output">> & {
308
+ config: Omit<TResolvedConfig["userConfig"], "output"> & Required<Pick<TResolvedConfig["userConfig"], "output">> & Pick<TResolvedConfig, "cwd" | "root" | "mode" | "framework" | "configFile" | "name"> & {
309
+ /**
310
+ * The output configuration options for the Powerlines process, which may include settings related to the output directory, file naming conventions, and other options that affect how the compiled output is generated and structured. This is typically derived from the user configuration but may also include additional options provided by plugins or other sources.
311
+ */
309
312
  output: TResolvedConfig["output"];
313
+ /**
314
+ * The original configuration options that were provided by the user to the Powerlines process, which may be used during the configuration resolution process to ensure that the final configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
315
+ */
316
+ readonly initialConfig: DeepReadonly<TResolvedConfig["initialConfig"]>;
317
+ /**
318
+ * The configuration options that were provided inline to the Powerlines CLI.
319
+ */
320
+ readonly inlineConfig: DeepReadonly<TResolvedConfig["inlineConfig"]>;
310
321
  };
311
322
  /**
312
323
  * The metadata information
@@ -319,31 +330,31 @@ interface UnresolvedContext<TResolvedConfig extends ResolvedConfig = ResolvedCon
319
330
  /**
320
331
  * The path to a directory where the reflection data buffers (used by the build processes) are stored
321
332
  */
322
- dataPath: string;
333
+ readonly dataPath: string;
323
334
  /**
324
335
  * The path to a directory where the project cache (used by the build processes) is stored
325
336
  */
326
- cachePath: string;
337
+ readonly cachePath: string;
327
338
  /**
328
339
  * The Powerlines artifacts directory
329
340
  */
330
- artifactsPath: string;
341
+ readonly artifactsPath: string;
331
342
  /**
332
343
  * The path to the Powerlines builtin runtime modules directory
333
344
  */
334
- builtinsPath: string;
345
+ readonly builtinsPath: string;
335
346
  /**
336
347
  * The path to the Powerlines entry modules directory
337
348
  */
338
- entryPath: string;
349
+ readonly entryPath: string;
339
350
  /**
340
351
  * The path to the Powerlines infrastructure modules directory
341
352
  */
342
- infrastructurePath: string;
353
+ readonly infrastructurePath: string;
343
354
  /**
344
355
  * The path to the Powerlines TypeScript declaration files directory
345
356
  */
346
- typesPath: string;
357
+ readonly typesPath: string;
347
358
  /**
348
359
  * The project's `package.json` file content
349
360
  */
@@ -551,23 +562,12 @@ type Context<TResolvedConfig extends ResolvedConfig = ResolvedConfig> = Omit<Unr
551
562
  * The fully resolved Powerlines configuration
552
563
  */
553
564
  config: TResolvedConfig;
554
- /**
555
- * Initialize the context with the provided configuration options
556
- */
557
- setup: () => Promise<void>;
558
- /**
559
- * A function to create a deep clone of the context
560
- *
561
- * @remarks
562
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
563
- */
564
- clone: () => Promise<Context<TResolvedConfig>>;
565
565
  };
566
566
  interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
567
567
  /**
568
568
  * The unique identifier of the execution context, which can be used for logging and other purposes to distinguish between different executions in the same process.
569
569
  */
570
- id: string;
570
+ readonly id: string;
571
571
  /**
572
572
  * The expected plugins options for the Powerlines project.
573
573
  *
@@ -575,14 +575,14 @@ interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConf
575
575
  * This is a record of plugin identifiers to their respective options. This field is populated by the Powerlines engine during both plugin initialization and the `init` command.
576
576
  */
577
577
  plugins: Plugin<PluginContext<TResolvedConfig>>[];
578
- /**
579
- * A function to add a plugin to the context and update the configuration options
580
- */
581
- addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
582
578
  /**
583
579
  * A table for storing the current context for each configured environment
584
580
  */
585
581
  environments: Record<string, EnvironmentContext<TResolvedConfig>>;
582
+ /**
583
+ * A function to add a plugin to the context and update the configuration options
584
+ */
585
+ addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
586
586
  /**
587
587
  * Retrieves the context for a specific environment by name
588
588
  *
@@ -632,26 +632,19 @@ interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConf
632
632
  * @param environment - The environment configuration to use.
633
633
  * @returns A new context instance with the updated environment.
634
634
  */
635
- in: (environment: EnvironmentResolvedConfig) => Promise<EnvironmentContext<TResolvedConfig>>;
635
+ createEnvironment: (environment: EnvironmentResolvedConfig<TResolvedConfig>["environment"]) => Promise<EnvironmentContext<TResolvedConfig>>;
636
636
  /**
637
637
  * A function to merge all configured environments into a single context
638
638
  *
639
639
  * @returns A promise that resolves to the merged environment context.
640
640
  */
641
641
  toEnvironment: () => Promise<EnvironmentContext<TResolvedConfig>>;
642
- /**
643
- * A function to create a deep clone of the context
644
- *
645
- * @remarks
646
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
647
- */
648
- clone: () => Promise<ExecutionContext<TResolvedConfig>>;
649
642
  }
650
643
  interface EnvironmentContextPlugin<TResolvedConfig extends ResolvedConfig = ResolvedConfig> {
651
644
  /**
652
645
  * The unique identifier of the plugin, which can be used for logging and other purposes to distinguish between different plugins in the same process.
653
646
  */
654
- pluginId: string;
647
+ readonly id: string;
655
648
  /**
656
649
  * The plugin instance associated with this context, which can be used to access the plugin's options and other properties.
657
650
  */
@@ -668,11 +661,11 @@ type SelectHookResultItem<TContext extends PluginContext, TKey extends string> =
668
661
  context: TContext;
669
662
  };
670
663
  type SelectHookResult<TContext extends PluginContext, TKey extends string> = SelectHookResultItem<TContext, TKey>[];
671
- interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
664
+ interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<EnvironmentResolvedConfig<TResolvedConfig>> {
672
665
  /**
673
666
  * The unique identifier of the environment associated with this context, which can be used for logging and other purposes to distinguish between different environments in the same process.
674
667
  */
675
- id: string;
668
+ readonly id: string;
676
669
  /**
677
670
  * The expected plugins options for the Powerlines project.
678
671
  *
@@ -680,46 +673,35 @@ interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedCo
680
673
  * This is a record of plugin identifiers to their respective options. This field is populated by the Powerlines engine during both plugin initialization and the `init` command.
681
674
  */
682
675
  plugins: EnvironmentContextPlugin<TResolvedConfig>[];
683
- /**
684
- * A function to add a plugin to the context and update the configuration options
685
- */
686
- addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
687
- /**
688
- * The environment specific resolved configuration
689
- */
690
- environment: EnvironmentResolvedConfig;
691
676
  /**
692
677
  * A table holding references to hook functions registered by plugins
693
678
  */
694
679
  hooks: HooksList<PluginContext<TResolvedConfig>>;
695
680
  /**
696
- * Retrieves the hook handlers for a specific hook name
681
+ * A function to add a plugin to the context and update the configuration options
697
682
  */
698
- selectHooks: <TKey extends string>(key: TKey, options?: SelectHooksOptions) => SelectHookResult<PluginContext<TResolvedConfig>, TKey>;
683
+ addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
699
684
  /**
700
- * A function to create a deep clone of the context
701
- *
702
- * @remarks
703
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
685
+ * Retrieves the hook handlers for a specific hook name
704
686
  */
705
- clone: () => Promise<EnvironmentContext<TResolvedConfig>>;
687
+ selectHooks: <TKey extends string>(key: TKey, options?: SelectHooksOptions) => SelectHookResult<PluginContext<TResolvedConfig>, TKey>;
706
688
  }
707
- interface PluginContext<out TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
689
+ interface PluginContext<out TResolvedConfig extends ResolvedConfig = ResolvedConfig, TApi extends API<any> = API<any>> extends Context<EnvironmentResolvedConfig<TResolvedConfig>> {
708
690
  /**
709
691
  * The unique identifier of the plugin associated with this context, which can be used for logging and other purposes to distinguish between different plugins in the same process.
710
692
  */
711
- id: string;
712
- /**
713
- * The environment specific resolved configuration
714
- */
715
- environment: EnvironmentResolvedConfig;
693
+ readonly id: string;
716
694
  /**
717
- * A function to create a deep clone of the context
695
+ * The API instance available to the plugin during execution, which provides access to the shared context and the ability to call plugin hooks. This API is specific to the plugin and environment, allowing for environment-specific interactions with the Powerlines engine.
718
696
  *
719
697
  * @remarks
720
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
698
+ * The API instance provided in the plugin context may include additional functionality specific to command execution, and it extends the base API with any additional methods or properties that are relevant to the plugin's interactions with the Powerlines engine.
699
+ */
700
+ readonly api: TApi;
701
+ /**
702
+ * The context for the environment associated with this plugin context, which provides access to the Powerlines engine and other utilities for interacting with the build process. This context is specific to the plugin and environment, allowing for environment-specific modifications without affecting the global context.
721
703
  */
722
- clone: () => Promise<PluginContext<TResolvedConfig>>;
704
+ readonly environment: EnvironmentContext;
723
705
  }
724
706
  type BuildPluginContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> = UnpluginBuildContext & PluginContext<TResolvedConfig>;
725
707
  type WithUnpluginBuildContext<TContext extends PluginContext> = UnpluginBuildContext & TContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.cts","names":[],"sources":["../../src/types/context.ts"],"mappings":"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"}
1
+ {"version":3,"file":"context.d.cts","names":[],"sources":["../../src/types/context.ts"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
- import { ResolveOptions, VirtualFile, VirtualFileSystemInterface, WriteOptions } from "./fs.mjs";
2
1
  import { Plugin } from "./plugin.mjs";
3
2
  import { HooksList, HooksListItem } from "./hooks.mjs";
3
+ import { API } from "./api.mjs";
4
+ import { ResolveOptions, VirtualFile, VirtualFileSystemInterface, WriteOptions } from "./fs.mjs";
4
5
  import { LogFn, LogLevelResolvedConfig, LogMessage, Logger, LoggerOptions } from "./logging.mjs";
5
6
  import { ParsedTypeScriptConfig } from "./tsconfig.mjs";
6
- import { EngineOptions, EnvironmentResolvedConfig, ExecutionOptions, InitialConfig, ParsedUserConfig, ResolvedConfig, ResolvedEntryTypeDefinition } from "./config.mjs";
7
+ import { EngineOptions, EnvironmentResolvedConfig, ExecutionOptions, ParsedUserConfig, ResolvedConfig, ResolvedEntryTypeDefinition, UserConfig } from "./config.mjs";
7
8
  import { ExternalIdResult, UnpluginBuildContext } from "unplugin";
8
9
  import MagicString, { SourceMap } from "magic-string";
10
+ import { DeepPartial, DeepReadonly, RequiredKeys } from "@stryke/types/base";
9
11
  import { Jiti } from "jiti";
10
12
  import { EnvPaths } from "@stryke/env/get-env-paths";
11
13
  import { FetchRequestOptions } from "@stryke/http/fetch";
@@ -136,10 +138,6 @@ interface ResolveResult extends ExternalIdResult {
136
138
  * This context provides the foundational structure for interacting with the Powerlines engine.
137
139
  */
138
140
  interface BaseContext {
139
- /**
140
- * The options provided to the Powerlines process
141
- */
142
- options: EngineOptions;
143
141
  /**
144
142
  * The timestamp when the context was initialized
145
143
  */
@@ -157,9 +155,9 @@ interface BaseContext {
157
155
  */
158
156
  configFile: ParsedUserConfig;
159
157
  /**
160
- * The initial configuration provided when initializing the context, which may be used during the setup process to ensure that the configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
158
+ * The options provided to the Powerlines process, resolved with default values and merged with any configuration provided by plugins or other sources. This is typically the final configuration used during the build process, but may also include additional options that are relevant to the context and its interactions with the Powerlines engine.
161
159
  */
162
- initialConfig: InitialConfig<any>;
160
+ options: RequiredKeys<EngineOptions, "mode" | "cwd" | "root" | "framework">;
163
161
  /**
164
162
  * The log level to use for the Powerlines processes.
165
163
  */
@@ -220,13 +218,6 @@ interface BaseContext {
220
218
  * @returns A logger client instance that extends the current logger with the provided configuration options.
221
219
  */
222
220
  extendLogger: (options: LoggerOptions, logFn?: LogFn) => Logger;
223
- /**
224
- * A function to create a deep clone of the context
225
- *
226
- * @remarks
227
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
228
- */
229
- clone: () => Promise<BaseContext>;
230
221
  }
231
222
  interface ExecutionStateItem {
232
223
  /**
@@ -278,6 +269,23 @@ interface ExecutionState {
278
269
  * This context is used during the execution of the Powerlines engine, providing access to the input user configurations.
279
270
  */
280
271
  interface EngineContext extends BaseContext {
272
+ /**
273
+ * The initial options provided to the Powerlines process before any resolution or merging. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
274
+ */
275
+ readonly initialOptions: EngineOptions;
276
+ /**
277
+ * The options provided to the Powerlines process
278
+ */
279
+ options: RequiredKeys<Omit<EngineOptions, "logLevel">, "name" | "root" | "cwd" | "mode" | "framework"> & {
280
+ /**
281
+ * The log level to use for logging messages during the build process. This can be a string indicating the log level or a more detailed configuration object that allows for specifying different log levels for different categories of logs.
282
+ */
283
+ logLevel: LogLevelResolvedConfig;
284
+ };
285
+ /**
286
+ * The initial user configuration provided to the Powerlines process before any resolution or merging. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
287
+ */
288
+ readonly initialConfig: DeepPartial<UserConfig>;
281
289
  /**
282
290
  * A list of all command executions that will be run during the lifecycle of the engine
283
291
  */
@@ -291,22 +299,25 @@ interface EngineContext extends BaseContext {
291
299
  */
292
300
  interface UnresolvedContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends BaseContext {
293
301
  /**
294
- * The options provided to the Powerlines process
295
- */
296
- options: ExecutionOptions;
297
- /**
298
- * The input options used to initialize the context, which may be used when cloning the context to ensure the same configuration is applied to the new context
302
+ * The options provided to the Powerlines process, resolved with default values and merged with any configuration provided by plugins or other sources. This is typically the final configuration used during the build process, but may also include additional options that are relevant to the context and its interactions with the Powerlines engine.
299
303
  */
300
- initialOptions: Partial<EngineOptions>;
301
- /**
302
- * The initial configuration provided when initializing the context, which may be used during the setup process to ensure that the configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
303
- */
304
- initialConfig: InitialConfig<TResolvedConfig["userConfig"]>;
304
+ options: RequiredKeys<ExecutionOptions, "mode" | "cwd" | "root" | "framework" | "logLevel">;
305
305
  /**
306
306
  * An object containing the options provided to Powerlines
307
307
  */
308
- config: Omit<TResolvedConfig["userConfig"], "output"> & Required<Pick<TResolvedConfig["userConfig"], "output">> & {
308
+ config: Omit<TResolvedConfig["userConfig"], "output"> & Required<Pick<TResolvedConfig["userConfig"], "output">> & Pick<TResolvedConfig, "cwd" | "root" | "mode" | "framework" | "configFile" | "name"> & {
309
+ /**
310
+ * The output configuration options for the Powerlines process, which may include settings related to the output directory, file naming conventions, and other options that affect how the compiled output is generated and structured. This is typically derived from the user configuration but may also include additional options provided by plugins or other sources.
311
+ */
309
312
  output: TResolvedConfig["output"];
313
+ /**
314
+ * The original configuration options that were provided by the user to the Powerlines process, which may be used during the configuration resolution process to ensure that the final configuration is properly merged and applied to the context. This is typically the user configuration provided in the Powerlines configuration file, but may also include additional configuration options provided by plugins or other sources.
315
+ */
316
+ readonly initialConfig: DeepReadonly<TResolvedConfig["initialConfig"]>;
317
+ /**
318
+ * The configuration options that were provided inline to the Powerlines CLI.
319
+ */
320
+ readonly inlineConfig: DeepReadonly<TResolvedConfig["inlineConfig"]>;
310
321
  };
311
322
  /**
312
323
  * The metadata information
@@ -319,31 +330,31 @@ interface UnresolvedContext<TResolvedConfig extends ResolvedConfig = ResolvedCon
319
330
  /**
320
331
  * The path to a directory where the reflection data buffers (used by the build processes) are stored
321
332
  */
322
- dataPath: string;
333
+ readonly dataPath: string;
323
334
  /**
324
335
  * The path to a directory where the project cache (used by the build processes) is stored
325
336
  */
326
- cachePath: string;
337
+ readonly cachePath: string;
327
338
  /**
328
339
  * The Powerlines artifacts directory
329
340
  */
330
- artifactsPath: string;
341
+ readonly artifactsPath: string;
331
342
  /**
332
343
  * The path to the Powerlines builtin runtime modules directory
333
344
  */
334
- builtinsPath: string;
345
+ readonly builtinsPath: string;
335
346
  /**
336
347
  * The path to the Powerlines entry modules directory
337
348
  */
338
- entryPath: string;
349
+ readonly entryPath: string;
339
350
  /**
340
351
  * The path to the Powerlines infrastructure modules directory
341
352
  */
342
- infrastructurePath: string;
353
+ readonly infrastructurePath: string;
343
354
  /**
344
355
  * The path to the Powerlines TypeScript declaration files directory
345
356
  */
346
- typesPath: string;
357
+ readonly typesPath: string;
347
358
  /**
348
359
  * The project's `package.json` file content
349
360
  */
@@ -551,23 +562,12 @@ type Context<TResolvedConfig extends ResolvedConfig = ResolvedConfig> = Omit<Unr
551
562
  * The fully resolved Powerlines configuration
552
563
  */
553
564
  config: TResolvedConfig;
554
- /**
555
- * Initialize the context with the provided configuration options
556
- */
557
- setup: () => Promise<void>;
558
- /**
559
- * A function to create a deep clone of the context
560
- *
561
- * @remarks
562
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
563
- */
564
- clone: () => Promise<Context<TResolvedConfig>>;
565
565
  };
566
566
  interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
567
567
  /**
568
568
  * The unique identifier of the execution context, which can be used for logging and other purposes to distinguish between different executions in the same process.
569
569
  */
570
- id: string;
570
+ readonly id: string;
571
571
  /**
572
572
  * The expected plugins options for the Powerlines project.
573
573
  *
@@ -575,14 +575,14 @@ interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConf
575
575
  * This is a record of plugin identifiers to their respective options. This field is populated by the Powerlines engine during both plugin initialization and the `init` command.
576
576
  */
577
577
  plugins: Plugin<PluginContext<TResolvedConfig>>[];
578
- /**
579
- * A function to add a plugin to the context and update the configuration options
580
- */
581
- addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
582
578
  /**
583
579
  * A table for storing the current context for each configured environment
584
580
  */
585
581
  environments: Record<string, EnvironmentContext<TResolvedConfig>>;
582
+ /**
583
+ * A function to add a plugin to the context and update the configuration options
584
+ */
585
+ addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
586
586
  /**
587
587
  * Retrieves the context for a specific environment by name
588
588
  *
@@ -632,26 +632,19 @@ interface ExecutionContext<TResolvedConfig extends ResolvedConfig = ResolvedConf
632
632
  * @param environment - The environment configuration to use.
633
633
  * @returns A new context instance with the updated environment.
634
634
  */
635
- in: (environment: EnvironmentResolvedConfig) => Promise<EnvironmentContext<TResolvedConfig>>;
635
+ createEnvironment: (environment: EnvironmentResolvedConfig<TResolvedConfig>["environment"]) => Promise<EnvironmentContext<TResolvedConfig>>;
636
636
  /**
637
637
  * A function to merge all configured environments into a single context
638
638
  *
639
639
  * @returns A promise that resolves to the merged environment context.
640
640
  */
641
641
  toEnvironment: () => Promise<EnvironmentContext<TResolvedConfig>>;
642
- /**
643
- * A function to create a deep clone of the context
644
- *
645
- * @remarks
646
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
647
- */
648
- clone: () => Promise<ExecutionContext<TResolvedConfig>>;
649
642
  }
650
643
  interface EnvironmentContextPlugin<TResolvedConfig extends ResolvedConfig = ResolvedConfig> {
651
644
  /**
652
645
  * The unique identifier of the plugin, which can be used for logging and other purposes to distinguish between different plugins in the same process.
653
646
  */
654
- pluginId: string;
647
+ readonly id: string;
655
648
  /**
656
649
  * The plugin instance associated with this context, which can be used to access the plugin's options and other properties.
657
650
  */
@@ -668,11 +661,11 @@ type SelectHookResultItem<TContext extends PluginContext, TKey extends string> =
668
661
  context: TContext;
669
662
  };
670
663
  type SelectHookResult<TContext extends PluginContext, TKey extends string> = SelectHookResultItem<TContext, TKey>[];
671
- interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
664
+ interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<EnvironmentResolvedConfig<TResolvedConfig>> {
672
665
  /**
673
666
  * The unique identifier of the environment associated with this context, which can be used for logging and other purposes to distinguish between different environments in the same process.
674
667
  */
675
- id: string;
668
+ readonly id: string;
676
669
  /**
677
670
  * The expected plugins options for the Powerlines project.
678
671
  *
@@ -680,46 +673,35 @@ interface EnvironmentContext<TResolvedConfig extends ResolvedConfig = ResolvedCo
680
673
  * This is a record of plugin identifiers to their respective options. This field is populated by the Powerlines engine during both plugin initialization and the `init` command.
681
674
  */
682
675
  plugins: EnvironmentContextPlugin<TResolvedConfig>[];
683
- /**
684
- * A function to add a plugin to the context and update the configuration options
685
- */
686
- addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
687
- /**
688
- * The environment specific resolved configuration
689
- */
690
- environment: EnvironmentResolvedConfig;
691
676
  /**
692
677
  * A table holding references to hook functions registered by plugins
693
678
  */
694
679
  hooks: HooksList<PluginContext<TResolvedConfig>>;
695
680
  /**
696
- * Retrieves the hook handlers for a specific hook name
681
+ * A function to add a plugin to the context and update the configuration options
697
682
  */
698
- selectHooks: <TKey extends string>(key: TKey, options?: SelectHooksOptions) => SelectHookResult<PluginContext<TResolvedConfig>, TKey>;
683
+ addPlugin: (plugin: Plugin<PluginContext<TResolvedConfig>>) => Promise<void>;
699
684
  /**
700
- * A function to create a deep clone of the context
701
- *
702
- * @remarks
703
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
685
+ * Retrieves the hook handlers for a specific hook name
704
686
  */
705
- clone: () => Promise<EnvironmentContext<TResolvedConfig>>;
687
+ selectHooks: <TKey extends string>(key: TKey, options?: SelectHooksOptions) => SelectHookResult<PluginContext<TResolvedConfig>, TKey>;
706
688
  }
707
- interface PluginContext<out TResolvedConfig extends ResolvedConfig = ResolvedConfig> extends Context<TResolvedConfig> {
689
+ interface PluginContext<out TResolvedConfig extends ResolvedConfig = ResolvedConfig, TApi extends API<any> = API<any>> extends Context<EnvironmentResolvedConfig<TResolvedConfig>> {
708
690
  /**
709
691
  * The unique identifier of the plugin associated with this context, which can be used for logging and other purposes to distinguish between different plugins in the same process.
710
692
  */
711
- id: string;
712
- /**
713
- * The environment specific resolved configuration
714
- */
715
- environment: EnvironmentResolvedConfig;
693
+ readonly id: string;
716
694
  /**
717
- * A function to create a deep clone of the context
695
+ * The API instance available to the plugin during execution, which provides access to the shared context and the ability to call plugin hooks. This API is specific to the plugin and environment, allowing for environment-specific interactions with the Powerlines engine.
718
696
  *
719
697
  * @remarks
720
- * This function is used to create a copy of the context for a specific environment, allowing for environment-specific modifications without affecting the global context.
698
+ * The API instance provided in the plugin context may include additional functionality specific to command execution, and it extends the base API with any additional methods or properties that are relevant to the plugin's interactions with the Powerlines engine.
699
+ */
700
+ readonly api: TApi;
701
+ /**
702
+ * The context for the environment associated with this plugin context, which provides access to the Powerlines engine and other utilities for interacting with the build process. This context is specific to the plugin and environment, allowing for environment-specific modifications without affecting the global context.
721
703
  */
722
- clone: () => Promise<PluginContext<TResolvedConfig>>;
704
+ readonly environment: EnvironmentContext;
723
705
  }
724
706
  type BuildPluginContext<TResolvedConfig extends ResolvedConfig = ResolvedConfig> = UnpluginBuildContext & PluginContext<TResolvedConfig>;
725
707
  type WithUnpluginBuildContext<TContext extends PluginContext> = UnpluginBuildContext & TContext;