@powerlines/core 0.9.0 → 0.9.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.
@@ -3,8 +3,11 @@ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
3
  const require_plugin_utils_helpers = require('./helpers.cjs');
4
4
  let defu = require("defu");
5
5
  defu = require_runtime.__toESM(defu);
6
+ let _stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
6
7
  let _stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
7
8
  let _stryke_type_checks_is_string = require("@stryke/type-checks/is-string");
9
+ let _stryke_type_checks_is_set = require("@stryke/type-checks/is-set");
10
+ let _stryke_type_checks_is_set_array = require("@stryke/type-checks/is-set-array");
8
11
 
9
12
  //#region src/plugin-utils/merge.ts
10
13
  const mergePlugin = (0, defu.createDefu)((obj, key, value) => {
@@ -48,6 +51,21 @@ function merge(pluginA, pluginB) {
48
51
  * @returns The merged configuration object.
49
52
  */
50
53
  const mergeConfig = (0, defu.createDefu)((obj, key, value) => {
54
+ if (key === "input" && (0, _stryke_type_checks_is_set.isSet)(value)) {
55
+ if ((0, _stryke_type_checks_is_string.isString)(obj[key]) && Array.isArray(value) && value.length === 0) return true;
56
+ obj[key] = value;
57
+ if ((0, _stryke_type_checks_is_set_array.isSetArray)(obj[key])) obj[key] = (0, _stryke_helpers_get_unique.getUnique)(obj[key]);
58
+ return true;
59
+ }
60
+ if (key === "compatibilityDate" && (0, _stryke_type_checks_is_set_string.isSetString)(value)) {
61
+ obj[key] = value;
62
+ return true;
63
+ }
64
+ if ((key === "format" || key === "output.format") && ((0, _stryke_type_checks_is_set_string.isSetString)(value) || (0, _stryke_type_checks_is_set_array.isSetArray)(value))) {
65
+ obj[key] = value;
66
+ if ((0, _stryke_type_checks_is_set_array.isSetArray)(obj[key])) obj[key] = (0, _stryke_helpers_get_unique.getUnique)(obj[key]);
67
+ return true;
68
+ }
51
69
  if ((0, _stryke_type_checks_is_string.isString)(obj[key]) && (0, _stryke_type_checks_is_string.isString)(value)) {
52
70
  if ((0, _stryke_type_checks_is_set_string.isSetString)(value)) obj[key] = value;
53
71
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.cts","names":[],"sources":["../../src/plugin-utils/merge.ts"],"mappings":";;;;;KA6BY,WAAA,kBACO,aAAA,mBACA,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,oBACjC,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,KAElD,QAAA,SAAiB,MAAA,CAAO,QAAA,IACpB,MAAA,CAAO,QAAA,IACP,QAAA,SAAiB,MAAA,CAAO,QAAA,IACtB,MAAA,CAAO,QAAA,IACP,aAAA,CAAc,QAAA;;;;AATtB;;;;iBAwCgB,KAAA,kBAAuB,aAAA,GAAgB,aAAA,CAAA,CACrD,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,GAC1C,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,IACzC,WAAA,CAAY,QAAA,SAAiB,OAAA,SAAgB,OAAA;;;;;;;;;;;;;;;;;cAwBnC,WAAA,MAUH,OAAA,gBAAuB,cAAA;AAAA"}
1
+ {"version":3,"file":"merge.d.cts","names":[],"sources":["../../src/plugin-utils/merge.ts"],"mappings":";;;;;KAgCY,WAAA,kBACO,aAAA,mBACA,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,oBACjC,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,KAElD,QAAA,SAAiB,MAAA,CAAO,QAAA,IACpB,MAAA,CAAO,QAAA,IACP,QAAA,SAAiB,MAAA,CAAO,QAAA,IACtB,MAAA,CAAO,QAAA,IACP,aAAA,CAAc,QAAA;;;;AATtB;;;;iBAwCgB,KAAA,kBAAuB,aAAA,GAAgB,aAAA,CAAA,CACrD,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,GAC1C,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,IACzC,WAAA,CAAY,QAAA,SAAiB,OAAA,SAAgB,OAAA;;;;;;;;;;;;;;;;;cAwBnC,WAAA,MAyCH,OAAA,gBAAuB,cAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.mts","names":[],"sources":["../../src/plugin-utils/merge.ts"],"mappings":";;;;KA6BY,WAAA,kBACO,aAAA,mBACA,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,oBACjC,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,KAElD,QAAA,SAAiB,MAAA,CAAO,QAAA,IACpB,MAAA,CAAO,QAAA,IACP,QAAA,SAAiB,MAAA,CAAO,QAAA,IACtB,MAAA,CAAO,QAAA,IACP,aAAA,CAAc,QAAA;;;;;AATtB;;;iBAwCgB,KAAA,kBAAuB,aAAA,GAAgB,aAAA,CAAA,CACrD,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,GAC1C,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,IACzC,WAAA,CAAY,QAAA,SAAiB,OAAA,SAAgB,OAAA;;;;;;;;;;;;;;;;;cAwBnC,WAAA,MAUH,OAAA,gBAAuB,cAAA;AAAA"}
1
+ {"version":3,"file":"merge.d.mts","names":[],"sources":["../../src/plugin-utils/merge.ts"],"mappings":";;;;KAgCY,WAAA,kBACO,aAAA,mBACA,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,oBACjC,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,KAElD,QAAA,SAAiB,MAAA,CAAO,QAAA,IACpB,MAAA,CAAO,QAAA,IACP,QAAA,SAAiB,MAAA,CAAO,QAAA,IACtB,MAAA,CAAO,QAAA,IACP,aAAA,CAAc,QAAA;;;;;AATtB;;;iBAwCgB,KAAA,kBAAuB,aAAA,GAAgB,aAAA,CAAA,CACrD,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,GAC1C,OAAA,EAAS,MAAA,CAAO,QAAA,IAAY,aAAA,CAAc,QAAA,IACzC,WAAA,CAAY,QAAA,SAAiB,OAAA,SAAgB,OAAA;;;;;;;;;;;;;;;;;cAwBnC,WAAA,MAyCH,OAAA,gBAAuB,cAAA;AAAA"}
@@ -1,7 +1,10 @@
1
1
  import { getHookHandler, isPluginHook } from "./helpers.mjs";
2
2
  import defu, { createDefu } from "defu";
3
+ import { getUnique } from "@stryke/helpers/get-unique";
3
4
  import { isSetString } from "@stryke/type-checks/is-set-string";
4
5
  import { isString } from "@stryke/type-checks/is-string";
6
+ import { isSet } from "@stryke/type-checks/is-set";
7
+ import { isSetArray } from "@stryke/type-checks/is-set-array";
5
8
 
6
9
  //#region src/plugin-utils/merge.ts
7
10
  const mergePlugin = createDefu((obj, key, value) => {
@@ -45,6 +48,21 @@ function merge(pluginA, pluginB) {
45
48
  * @returns The merged configuration object.
46
49
  */
47
50
  const mergeConfig = createDefu((obj, key, value) => {
51
+ if (key === "input" && isSet(value)) {
52
+ if (isString(obj[key]) && Array.isArray(value) && value.length === 0) return true;
53
+ obj[key] = value;
54
+ if (isSetArray(obj[key])) obj[key] = getUnique(obj[key]);
55
+ return true;
56
+ }
57
+ if (key === "compatibilityDate" && isSetString(value)) {
58
+ obj[key] = value;
59
+ return true;
60
+ }
61
+ if ((key === "format" || key === "output.format") && (isSetString(value) || isSetArray(value))) {
62
+ obj[key] = value;
63
+ if (isSetArray(obj[key])) obj[key] = getUnique(obj[key]);
64
+ return true;
65
+ }
48
66
  if (isString(obj[key]) && isString(value)) {
49
67
  if (isSetString(value)) obj[key] = value;
50
68
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"merge.mjs","names":[],"sources":["../../src/plugin-utils/merge.ts"],"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 { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport defu, { createDefu } from \"defu\";\nimport type {\n PartialPlugin,\n Plugin,\n PluginContext,\n ResolvedConfig\n} from \"../types\";\nimport { getHookHandler, isPluginHook } from \"./helpers\";\n\nexport type MergeResult<\n TContext extends PluginContext,\n TPluginA extends Plugin<TContext> | PartialPlugin<TContext>,\n TPluginB extends Plugin<TContext> | PartialPlugin<TContext>\n> =\n TPluginA extends Plugin<TContext>\n ? Plugin<TContext>\n : TPluginB extends Plugin<TContext>\n ? Plugin<TContext>\n : PartialPlugin<TContext>;\n\nconst mergePlugin = createDefu((obj, key, value) => {\n if (isPluginHook(obj[key]) && isPluginHook(value)) {\n obj[key] = {\n ...obj[key],\n ...value,\n handler: async (...params: any[]) => {\n const [resultA, resultB] = await Promise.all([\n // eslint-disable-next-line ts/no-unsafe-call\n (getHookHandler(obj[key]) as any)(...params),\n // eslint-disable-next-line ts/no-unsafe-call\n (getHookHandler(value) as any)(...params)\n ]);\n\n return resultB && resultA ? defu(resultA, resultB) : resultA || resultB;\n }\n };\n return true;\n }\n\n return false;\n});\n\n/**\n * Merges two {@link Plugin | plugins} or {@link PartialPlugin | partial plugins} together.\n *\n * @param pluginA - The first {@link Plugin | plugin} or {@link PartialPlugin | partial plugin} to merge.\n * @param pluginB - The second {@link Plugin | plugin} or {@link PartialPlugin | partial plugin} to merge.\n * @returns The merged {@link Plugin | plugin} or {@link PartialPlugin | partial plugin}.\n */\nexport function merge<TContext extends PluginContext = PluginContext>(\n pluginA: Plugin<TContext> | PartialPlugin<TContext>,\n pluginB: Plugin<TContext> | PartialPlugin<TContext>\n): MergeResult<TContext, typeof pluginA, typeof pluginB> {\n return mergePlugin(pluginA, pluginB) as MergeResult<\n TContext,\n typeof pluginA,\n typeof pluginB\n >;\n}\n\n/**\n * Merges two configuration objects together, with special handling for string values.\n * If the value from the second object is a non-empty string, it will overwrite the value from the first object.\n *\n * @example\n * ```ts\n * const configA = { name: \"Default\", version: \"1.0.0\" };\n * const configB = { name: \"Custom\", description: \"A custom config\" };\n * const mergedConfig = mergeConfig(configA, configB);\n * // Result: { name: \"Custom\", version: \"1.0.0\", description: \"A custom config\" }\n * ```\n *\n * @param objA - The first configuration object.\n * @param objB - The second configuration object.\n * @returns The merged configuration object.\n */\nexport const mergeConfig = createDefu((obj, key, value) => {\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n\n return true;\n }\n\n return false;\n}) as (...configs: unknown[]) => ResolvedConfig;\n"],"mappings":";;;;;;AAwCA,MAAM,cAAc,YAAY,KAAK,KAAK,UAAU;AAClD,KAAI,aAAa,IAAI,KAAK,IAAI,aAAa,MAAM,EAAE;AACjD,MAAI,OAAO;GACT,GAAG,IAAI;GACP,GAAG;GACH,SAAS,OAAO,GAAG,WAAkB;IACnC,MAAM,CAAC,SAAS,WAAW,MAAM,QAAQ,IAAI,CAE1C,eAAe,IAAI,KAAK,CAAS,GAAG,OAAO,EAE3C,eAAe,MAAM,CAAS,GAAG,OAAO,CAC1C,CAAC;AAEF,WAAO,WAAW,UAAU,KAAK,SAAS,QAAQ,GAAG,WAAW;;GAEnE;AACD,SAAO;;AAGT,QAAO;EACP;;;;;;;;AASF,SAAgB,MACd,SACA,SACuD;AACvD,QAAO,YAAY,SAAS,QAAQ;;;;;;;;;;;;;;;;;;AAuBtC,MAAa,cAAc,YAAY,KAAK,KAAK,UAAU;AACzD,KAAI,SAAS,IAAI,KAAK,IAAI,SAAS,MAAM,EAAE;AACzC,MAAI,YAAY,MAAM,CACpB,KAAI,OAAO;AAGb,SAAO;;AAGT,QAAO;EACP"}
1
+ {"version":3,"file":"merge.mjs","names":[],"sources":["../../src/plugin-utils/merge.ts"],"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 { getUnique } from \"@stryke/helpers/get-unique\";\nimport { isSet } from \"@stryke/type-checks/is-set\";\nimport { isSetArray } from \"@stryke/type-checks/is-set-array\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport defu, { createDefu } from \"defu\";\nimport type {\n PartialPlugin,\n Plugin,\n PluginContext,\n ResolvedConfig\n} from \"../types\";\nimport { getHookHandler, isPluginHook } from \"./helpers\";\n\nexport type MergeResult<\n TContext extends PluginContext,\n TPluginA extends Plugin<TContext> | PartialPlugin<TContext>,\n TPluginB extends Plugin<TContext> | PartialPlugin<TContext>\n> =\n TPluginA extends Plugin<TContext>\n ? Plugin<TContext>\n : TPluginB extends Plugin<TContext>\n ? Plugin<TContext>\n : PartialPlugin<TContext>;\n\nconst mergePlugin = createDefu((obj, key, value) => {\n if (isPluginHook(obj[key]) && isPluginHook(value)) {\n obj[key] = {\n ...obj[key],\n ...value,\n handler: async (...params: any[]) => {\n const [resultA, resultB] = await Promise.all([\n // eslint-disable-next-line ts/no-unsafe-call\n (getHookHandler(obj[key]) as any)(...params),\n // eslint-disable-next-line ts/no-unsafe-call\n (getHookHandler(value) as any)(...params)\n ]);\n\n return resultB && resultA ? defu(resultA, resultB) : resultA || resultB;\n }\n };\n return true;\n }\n\n return false;\n});\n\n/**\n * Merges two {@link Plugin | plugins} or {@link PartialPlugin | partial plugins} together.\n *\n * @param pluginA - The first {@link Plugin | plugin} or {@link PartialPlugin | partial plugin} to merge.\n * @param pluginB - The second {@link Plugin | plugin} or {@link PartialPlugin | partial plugin} to merge.\n * @returns The merged {@link Plugin | plugin} or {@link PartialPlugin | partial plugin}.\n */\nexport function merge<TContext extends PluginContext = PluginContext>(\n pluginA: Plugin<TContext> | PartialPlugin<TContext>,\n pluginB: Plugin<TContext> | PartialPlugin<TContext>\n): MergeResult<TContext, typeof pluginA, typeof pluginB> {\n return mergePlugin(pluginA, pluginB) as MergeResult<\n TContext,\n typeof pluginA,\n typeof pluginB\n >;\n}\n\n/**\n * Merges two configuration objects together, with special handling for string values.\n * If the value from the second object is a non-empty string, it will overwrite the value from the first object.\n *\n * @example\n * ```ts\n * const configA = { name: \"Default\", version: \"1.0.0\" };\n * const configB = { name: \"Custom\", description: \"A custom config\" };\n * const mergedConfig = mergeConfig(configA, configB);\n * // Result: { name: \"Custom\", version: \"1.0.0\", description: \"A custom config\" }\n * ```\n *\n * @param objA - The first configuration object.\n * @param objB - The second configuration object.\n * @returns The merged configuration object.\n */\nexport const mergeConfig = createDefu((obj, key, value) => {\n type TValue = (typeof obj)[typeof key];\n\n if (key === \"input\" && isSet(value)) {\n if (isString(obj[key]) && Array.isArray(value) && value.length === 0) {\n return true;\n }\n\n obj[key] = value;\n if (isSetArray(obj[key])) {\n obj[key] = getUnique(obj[key]) as TValue;\n }\n\n return true;\n }\n\n if (key === \"compatibilityDate\" && isSetString(value)) {\n obj[key] = value;\n return true;\n }\n\n if (\n (key === \"format\" || key === \"output.format\") &&\n (isSetString(value) || isSetArray(value))\n ) {\n obj[key] = value;\n if (isSetArray(obj[key])) {\n obj[key] = getUnique(obj[key]) as TValue;\n }\n\n return true;\n }\n\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n return true;\n }\n\n return false;\n}) as (...configs: unknown[]) => ResolvedConfig;\n"],"mappings":";;;;;;;;;AA2CA,MAAM,cAAc,YAAY,KAAK,KAAK,UAAU;AAClD,KAAI,aAAa,IAAI,KAAK,IAAI,aAAa,MAAM,EAAE;AACjD,MAAI,OAAO;GACT,GAAG,IAAI;GACP,GAAG;GACH,SAAS,OAAO,GAAG,WAAkB;IACnC,MAAM,CAAC,SAAS,WAAW,MAAM,QAAQ,IAAI,CAE1C,eAAe,IAAI,KAAK,CAAS,GAAG,OAAO,EAE3C,eAAe,MAAM,CAAS,GAAG,OAAO,CAC1C,CAAC;AAEF,WAAO,WAAW,UAAU,KAAK,SAAS,QAAQ,GAAG,WAAW;;GAEnE;AACD,SAAO;;AAGT,QAAO;EACP;;;;;;;;AASF,SAAgB,MACd,SACA,SACuD;AACvD,QAAO,YAAY,SAAS,QAAQ;;;;;;;;;;;;;;;;;;AAuBtC,MAAa,cAAc,YAAY,KAAK,KAAK,UAAU;AAGzD,KAAI,QAAQ,WAAW,MAAM,MAAM,EAAE;AACnC,MAAI,SAAS,IAAI,KAAK,IAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,WAAW,EACjE,QAAO;AAGT,MAAI,OAAO;AACX,MAAI,WAAW,IAAI,KAAK,CACtB,KAAI,OAAO,UAAU,IAAI,KAAK;AAGhC,SAAO;;AAGT,KAAI,QAAQ,uBAAuB,YAAY,MAAM,EAAE;AACrD,MAAI,OAAO;AACX,SAAO;;AAGT,MACG,QAAQ,YAAY,QAAQ,qBAC5B,YAAY,MAAM,IAAI,WAAW,MAAM,GACxC;AACA,MAAI,OAAO;AACX,MAAI,WAAW,IAAI,KAAK,CACtB,KAAI,OAAO,UAAU,IAAI,KAAK;AAGhC,SAAO;;AAGT,KAAI,SAAS,IAAI,KAAK,IAAI,SAAS,MAAM,EAAE;AACzC,MAAI,YAAY,MAAM,CACpB,KAAI,OAAO;AAEb,SAAO;;AAGT,QAAO;EACP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerlines/core",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "private": false,
5
5
  "description": "An internal core package for Powerlines - please use the `powerlines` package for public usage.",
6
6
  "homepage": "https://stormsoftware.com",
@@ -526,5 +526,5 @@
526
526
  "typescript": "^5.9.3"
527
527
  },
528
528
  "publishConfig": { "access": "public" },
529
- "gitHead": "4032e354b7e4d5b563c9e16a1cad6d8b666e9e37"
529
+ "gitHead": "70024122804dabcb2df4648d7fd7c6d266252b84"
530
530
  }