@commercelayer/organization-config 2.1.0 → 2.3.0

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.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var L=(l,t)=>{for(var e in t)n(l,e,{get:t[e],enumerable:!0})},P=(l,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of O(t))!D.call(l,f)&&f!==e&&n(l,f,{get:()=>t[f],enumerable:!(i=I(t,f))||i.enumerable});return l};var x=l=>P(n({},"__esModule",{value:!0}),l);var J={};L(J,{getMfeConfig:()=>C});module.exports=x(J);var k=require("merge-anything");function C({jsonConfig:l,market:t,params:e}){var u,g,r;if((l==null?void 0:l.mfe)==null)return null;let i=(g=(u=l==null?void 0:l.mfe)==null?void 0:u.default)!=null?g:{},f=t!=null?(r=l==null?void 0:l.mfe[t])!=null?r:{}:{};function T(_){var o,c,d,y,N,M;let s=JSON.stringify(_).replace(/:lang/g,(o=e==null?void 0:e.lang)!=null?o:":lang").replace(/:slug/g,(c=e==null?void 0:e.slug)!=null?c:":slug").replace(/:access_token/g,(d=e==null?void 0:e.accessToken)!=null?d:":access_token").replace(/:order_id/g,(y=e==null?void 0:e.orderId)!=null?y:":order_id").replace(/:sku_list_id/g,(N=e==null?void 0:e.skuListId)!=null?N:":sku_list_id").replace(/:sku_id/g,(M=e==null?void 0:e.skuId)!=null?M:":sku_id");return JSON.parse(s)}let b=(0,k.merge)(JSON.parse(JSON.stringify(i)),f);return T(b)}0&&(module.exports={getMfeConfig});
1
+ "use strict";var f=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var P=(l,t)=>{for(var e in t)f(l,e,{get:t[e],enumerable:!0})},x=(l,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of D(t))!L.call(l,n)&&n!==e&&f(l,n,{get:()=>t[n],enumerable:!(i=O(t,n))||i.enumerable});return l};var J=l=>x(f({},"__esModule",{value:!0}),l);var S={};P(S,{getMfeConfig:()=>T});module.exports=J(S);var C=require("merge-anything");function T({jsonConfig:l,market:t,params:e}){var u,g,o;if((l==null?void 0:l.mfe)==null)return null;let i=(g=(u=l==null?void 0:l.mfe)==null?void 0:u.default)!=null?g:{},n=t!=null?(o=l==null?void 0:l.mfe[t])!=null?o:{}:{};function b(I){var r,c,d,y,N,k,M;let s=JSON.stringify(I).replace(/:lang/g,(r=e==null?void 0:e.lang)!=null?r:":lang").replace(/:slug/g,(c=e==null?void 0:e.slug)!=null?c:":slug").replace(/:token/g,(d=e==null?void 0:e.token)!=null?d:":token").replace(/:access_token/g,(y=e==null?void 0:e.accessToken)!=null?y:":access_token").replace(/:order_id/g,(N=e==null?void 0:e.orderId)!=null?N:":order_id").replace(/:sku_list_id/g,(k=e==null?void 0:e.skuListId)!=null?k:":sku_list_id").replace(/:sku_id/g,(M=e==null?void 0:e.skuId)!=null?M:":sku_id");return JSON.parse(s)}let _=(0,C.merge)(JSON.parse(JSON.stringify(i)),n);return b(_)}0&&(module.exports={getMfeConfig});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/getMfeConfig.ts"],"sourcesContent":["export {\n getMfeConfig,\n type MfeConfigs,\n type DefaultMfeConfig\n} from './getMfeConfig'\n","import { merge } from 'merge-anything'\nimport { type ValidConfigForOrganizationsInCommerceLayer } from './schema/types'\n\n/**\n * Represents a type that can be null or undefined, making it optional in use.\n * @template T The type that is being made nullable.\n */\ntype NullableType<T> = T | null | undefined\n\n/**\n * Params used by the getConfig function\n */\ninterface ConfigParams {\n /**\n * Language code (e.g., 'en', 'fr') used to dynamically replace the `:lang` placeholder in URLs.\n */\n lang?: NullableType<string>\n /**\n * Organization slug used to replace the `:slug` placeholder in URLs.\n */\n slug?: NullableType<string>\n /**\n * Access token string used to replace the `:access_token` placeholder in URLs.\n */\n accessToken?: NullableType<string>\n /**\n * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.\n */\n orderId?: NullableType<string>\n /**\n * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.\n */\n skuListId?: NullableType<string>\n /**\n * Unique identifier for an SKU used to replace the `:sku_id` placeholder in URLs.\n */\n skuId?: NullableType<string>\n}\n\ninterface GetMfeConfigProps {\n /**\n * `config` attribute of the organization\n */\n jsonConfig?: { mfe?: MfeConfigs }\n /**\n * Market identifier for fetching specific configuration overrides. (`market:id:hashid`)\n */\n market?: string\n /**\n * Parameters for replacing URL placeholders.\n */\n params?: ConfigParams\n}\n\nexport type MfeConfigs = NonNullable<\n ValidConfigForOrganizationsInCommerceLayer['mfe']\n>\n\nexport type DefaultMfeConfig = NonNullable<\n NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>['default']\n>\n\n/**\n * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.\n * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.\n *\n * @param jsonConfig The complete configuration object of the organization.\n * @param market The market identifier used to get market-specific configuration overrides.\n * @param params The object containing replacement values for URL placeholders, such as language and access token.\n * @returns The merged configuration object for the specified market, or null if no configuration is found.\n */\nexport function getMfeConfig({\n jsonConfig,\n market,\n params\n}: GetMfeConfigProps): DefaultMfeConfig | null {\n if (jsonConfig?.mfe == null) {\n return null\n }\n\n const defaultConfig = jsonConfig?.mfe?.default ?? {}\n const overrideConfig = market != null ? (jsonConfig?.mfe[market] ?? {}) : {}\n\n // Replace placeholders in all string values within the object\n function replacePlaceholders(config: DefaultMfeConfig): DefaultMfeConfig {\n const replacedConfig = JSON.stringify(config)\n .replace(/:lang/g, params?.lang ?? ':lang')\n .replace(/:slug/g, params?.slug ?? ':slug')\n .replace(/:access_token/g, params?.accessToken ?? ':access_token')\n .replace(/:order_id/g, params?.orderId ?? ':order_id')\n .replace(/:sku_list_id/g, params?.skuListId ?? ':sku_list_id')\n .replace(/:sku_id/g, params?.skuId ?? ':sku_id')\n\n return JSON.parse(replacedConfig)\n }\n\n const mergedConfig: DefaultMfeConfig = merge(\n JSON.parse(JSON.stringify(defaultConfig)),\n overrideConfig\n )\n return replacePlaceholders(mergedConfig)\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAsB,0BAuEf,SAASC,EAAa,CAC3B,WAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAA+C,CA3E/C,IAAAC,EAAAC,EAAAC,EA4EE,IAAIL,GAAA,YAAAA,EAAY,MAAO,KACrB,OAAO,KAGT,IAAMM,GAAgBF,GAAAD,EAAAH,GAAA,YAAAA,EAAY,MAAZ,YAAAG,EAAiB,UAAjB,KAAAC,EAA4B,CAAC,EAC7CG,EAAiBN,GAAU,MAAQI,EAAAL,GAAA,YAAAA,EAAY,IAAIC,KAAhB,KAAAI,EAA2B,CAAC,EAAK,CAAC,EAG3E,SAASG,EAAoBC,EAA4C,CApF3E,IAAAN,EAAAC,EAAAC,EAAAK,EAAAC,EAAAC,EAqFI,IAAMC,EAAiB,KAAK,UAAUJ,CAAM,EACzC,QAAQ,UAAUN,EAAAD,GAAA,YAAAA,EAAQ,OAAR,KAAAC,EAAgB,OAAO,EACzC,QAAQ,UAAUC,EAAAF,GAAA,YAAAA,EAAQ,OAAR,KAAAE,EAAgB,OAAO,EACzC,QAAQ,kBAAkBC,EAAAH,GAAA,YAAAA,EAAQ,cAAR,KAAAG,EAAuB,eAAe,EAChE,QAAQ,cAAcK,EAAAR,GAAA,YAAAA,EAAQ,UAAR,KAAAQ,EAAmB,WAAW,EACpD,QAAQ,iBAAiBC,EAAAT,GAAA,YAAAA,EAAQ,YAAR,KAAAS,EAAqB,cAAc,EAC5D,QAAQ,YAAYC,EAAAV,GAAA,YAAAA,EAAQ,QAAR,KAAAU,EAAiB,SAAS,EAEjD,OAAO,KAAK,MAAMC,CAAc,CAClC,CAEA,IAAMC,KAAiC,SACrC,KAAK,MAAM,KAAK,UAAUR,CAAa,CAAC,EACxCC,CACF,EACA,OAAOC,EAAoBM,CAAY,CACzC","names":["src_exports","__export","getMfeConfig","__toCommonJS","import_merge_anything","getMfeConfig","jsonConfig","market","params","_a","_b","_c","defaultConfig","overrideConfig","replacePlaceholders","config","_d","_e","_f","replacedConfig","mergedConfig"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/getMfeConfig.ts"],"sourcesContent":["export {\n getMfeConfig,\n type MfeConfigs,\n type DefaultMfeConfig,\n} from \"./getMfeConfig\"\n","import { merge } from \"merge-anything\"\nimport type { ValidConfigForOrganizationsInCommerceLayer } from \"./schema/types\"\n\n/**\n * Represents a type that can be null or undefined, making it optional in use.\n * @template T The type that is being made nullable.\n */\ntype NullableType<T> = T | null | undefined\n\n/**\n * Params used by the getConfig function\n */\ninterface ConfigParams {\n /**\n * Language code (e.g., 'en', 'fr') used to dynamically replace the `:lang` placeholder in URLs.\n */\n lang?: NullableType<string>\n /**\n * Organization slug used to replace the `:slug` placeholder in URLs.\n */\n slug?: NullableType<string>\n /**\n * Access token string used to replace the `:access_token` placeholder in URLs.\n */\n accessToken?: NullableType<string>\n /**\n * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.\n */\n orderId?: NullableType<string>\n /**\n * Order token string used to replace the `:token` placeholder in URLs.\n */\n token?: NullableType<string>\n /**\n * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.\n */\n skuListId?: NullableType<string>\n /**\n * Unique identifier for an SKU used to replace the `:sku_id` placeholder in URLs.\n */\n skuId?: NullableType<string>\n}\n\ninterface GetMfeConfigProps {\n /**\n * `config` attribute of the organization\n */\n jsonConfig?: { mfe?: MfeConfigs }\n /**\n * Market identifier for fetching specific configuration overrides. (`market:id:hashid`)\n */\n market?: string\n /**\n * Parameters for replacing URL placeholders.\n */\n params?: ConfigParams\n}\n\nexport type MfeConfigs = NonNullable<\n ValidConfigForOrganizationsInCommerceLayer[\"mfe\"]\n>\n\nexport type DefaultMfeConfig = NonNullable<\n NonNullable<ValidConfigForOrganizationsInCommerceLayer[\"mfe\"]>[\"default\"]\n>\n\n/**\n * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.\n * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.\n *\n * @param jsonConfig The complete configuration object of the organization.\n * @param market The market identifier used to get market-specific configuration overrides.\n * @param params The object containing replacement values for URL placeholders, such as language and access token.\n * @returns The merged configuration object for the specified market, or null if no configuration is found.\n */\nexport function getMfeConfig({\n jsonConfig,\n market,\n params,\n}: GetMfeConfigProps): DefaultMfeConfig | null {\n if (jsonConfig?.mfe == null) {\n return null\n }\n\n const defaultConfig = jsonConfig?.mfe?.default ?? {}\n const overrideConfig = market != null ? (jsonConfig?.mfe[market] ?? {}) : {}\n\n // Replace placeholders in all string values within the object\n function replacePlaceholders(config: DefaultMfeConfig): DefaultMfeConfig {\n const replacedConfig = JSON.stringify(config)\n .replace(/:lang/g, params?.lang ?? \":lang\")\n .replace(/:slug/g, params?.slug ?? \":slug\")\n .replace(/:token/g, params?.token ?? \":token\")\n .replace(/:access_token/g, params?.accessToken ?? \":access_token\")\n .replace(/:order_id/g, params?.orderId ?? \":order_id\")\n .replace(/:sku_list_id/g, params?.skuListId ?? \":sku_list_id\")\n .replace(/:sku_id/g, params?.skuId ?? \":sku_id\")\n\n return JSON.parse(replacedConfig)\n }\n\n const mergedConfig: DefaultMfeConfig = merge(\n JSON.parse(JSON.stringify(defaultConfig)),\n overrideConfig,\n )\n return replacePlaceholders(mergedConfig)\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GCAA,IAAAI,EAAsB,0BA2Ef,SAASC,EAAa,CAC3B,WAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAA+C,CA/E/C,IAAAC,EAAAC,EAAAC,EAgFE,IAAIL,GAAA,YAAAA,EAAY,MAAO,KACrB,OAAO,KAGT,IAAMM,GAAgBF,GAAAD,EAAAH,GAAA,YAAAA,EAAY,MAAZ,YAAAG,EAAiB,UAAjB,KAAAC,EAA4B,CAAC,EAC7CG,EAAiBN,GAAU,MAAQI,EAAAL,GAAA,YAAAA,EAAY,IAAIC,KAAhB,KAAAI,EAA2B,CAAC,EAAK,CAAC,EAG3E,SAASG,EAAoBC,EAA4C,CAxF3E,IAAAN,EAAAC,EAAAC,EAAAK,EAAAC,EAAAC,EAAAC,EAyFI,IAAMC,EAAiB,KAAK,UAAUL,CAAM,EACzC,QAAQ,UAAUN,EAAAD,GAAA,YAAAA,EAAQ,OAAR,KAAAC,EAAgB,OAAO,EACzC,QAAQ,UAAUC,EAAAF,GAAA,YAAAA,EAAQ,OAAR,KAAAE,EAAgB,OAAO,EACzC,QAAQ,WAAWC,EAAAH,GAAA,YAAAA,EAAQ,QAAR,KAAAG,EAAiB,QAAQ,EAC5C,QAAQ,kBAAkBK,EAAAR,GAAA,YAAAA,EAAQ,cAAR,KAAAQ,EAAuB,eAAe,EAChE,QAAQ,cAAcC,EAAAT,GAAA,YAAAA,EAAQ,UAAR,KAAAS,EAAmB,WAAW,EACpD,QAAQ,iBAAiBC,EAAAV,GAAA,YAAAA,EAAQ,YAAR,KAAAU,EAAqB,cAAc,EAC5D,QAAQ,YAAYC,EAAAX,GAAA,YAAAA,EAAQ,QAAR,KAAAW,EAAiB,SAAS,EAEjD,OAAO,KAAK,MAAMC,CAAc,CAClC,CAEA,IAAMC,KAAiC,SACrC,KAAK,MAAM,KAAK,UAAUT,CAAa,CAAC,EACxCC,CACF,EACA,OAAOC,EAAoBO,CAAY,CACzC","names":["index_exports","__export","getMfeConfig","__toCommonJS","import_merge_anything","getMfeConfig","jsonConfig","market","params","_a","_b","_c","defaultConfig","overrideConfig","replacePlaceholders","config","_d","_e","_f","_g","replacedConfig","mergedConfig"]}
package/dist/index.d.cts CHANGED
@@ -86,6 +86,7 @@ interface MfeConfig {
86
86
  */
87
87
  checkout?: {
88
88
  thankyou_page?: Url;
89
+ optional_billing_info?: boolean;
89
90
  billing_countries?: StateCountry;
90
91
  shipping_countries?: StateCountry1;
91
92
  default_country?: CountryCode;
@@ -140,6 +141,10 @@ interface ConfigParams {
140
141
  * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.
141
142
  */
142
143
  orderId?: NullableType<string>;
144
+ /**
145
+ * Order token string used to replace the `:token` placeholder in URLs.
146
+ */
147
+ token?: NullableType<string>;
143
148
  /**
144
149
  * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.
145
150
  */
@@ -165,8 +170,8 @@ interface GetMfeConfigProps {
165
170
  */
166
171
  params?: ConfigParams;
167
172
  }
168
- type MfeConfigs = NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>;
169
- type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>['default']>;
173
+ type MfeConfigs = NonNullable<ValidConfigForOrganizationsInCommerceLayer["mfe"]>;
174
+ type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCommerceLayer["mfe"]>["default"]>;
170
175
  /**
171
176
  * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.
172
177
  * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.
@@ -176,6 +181,6 @@ type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCom
176
181
  * @param params The object containing replacement values for URL placeholders, such as language and access token.
177
182
  * @returns The merged configuration object for the specified market, or null if no configuration is found.
178
183
  */
179
- declare function getMfeConfig({ jsonConfig, market, params }: GetMfeConfigProps): DefaultMfeConfig | null;
184
+ declare function getMfeConfig({ jsonConfig, market, params, }: GetMfeConfigProps): DefaultMfeConfig | null;
180
185
 
181
186
  export { type DefaultMfeConfig, type MfeConfigs, getMfeConfig };
package/dist/index.d.ts CHANGED
@@ -86,6 +86,7 @@ interface MfeConfig {
86
86
  */
87
87
  checkout?: {
88
88
  thankyou_page?: Url;
89
+ optional_billing_info?: boolean;
89
90
  billing_countries?: StateCountry;
90
91
  shipping_countries?: StateCountry1;
91
92
  default_country?: CountryCode;
@@ -140,6 +141,10 @@ interface ConfigParams {
140
141
  * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.
141
142
  */
142
143
  orderId?: NullableType<string>;
144
+ /**
145
+ * Order token string used to replace the `:token` placeholder in URLs.
146
+ */
147
+ token?: NullableType<string>;
143
148
  /**
144
149
  * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.
145
150
  */
@@ -165,8 +170,8 @@ interface GetMfeConfigProps {
165
170
  */
166
171
  params?: ConfigParams;
167
172
  }
168
- type MfeConfigs = NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>;
169
- type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>['default']>;
173
+ type MfeConfigs = NonNullable<ValidConfigForOrganizationsInCommerceLayer["mfe"]>;
174
+ type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCommerceLayer["mfe"]>["default"]>;
170
175
  /**
171
176
  * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.
172
177
  * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.
@@ -176,6 +181,6 @@ type DefaultMfeConfig = NonNullable<NonNullable<ValidConfigForOrganizationsInCom
176
181
  * @param params The object containing replacement values for URL placeholders, such as language and access token.
177
182
  * @returns The merged configuration object for the specified market, or null if no configuration is found.
178
183
  */
179
- declare function getMfeConfig({ jsonConfig, market, params }: GetMfeConfigProps): DefaultMfeConfig | null;
184
+ declare function getMfeConfig({ jsonConfig, market, params, }: GetMfeConfigProps): DefaultMfeConfig | null;
180
185
 
181
186
  export { type DefaultMfeConfig, type MfeConfigs, getMfeConfig };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{merge as b}from"merge-anything";function _({jsonConfig:l,market:t,params:e}){var f,i,n;if((l==null?void 0:l.mfe)==null)return null;let y=(i=(f=l==null?void 0:l.mfe)==null?void 0:f.default)!=null?i:{},N=t!=null?(n=l==null?void 0:l.mfe[t])!=null?n:{}:{};function M(C){var u,g,r,o,c,d;let T=JSON.stringify(C).replace(/:lang/g,(u=e==null?void 0:e.lang)!=null?u:":lang").replace(/:slug/g,(g=e==null?void 0:e.slug)!=null?g:":slug").replace(/:access_token/g,(r=e==null?void 0:e.accessToken)!=null?r:":access_token").replace(/:order_id/g,(o=e==null?void 0:e.orderId)!=null?o:":order_id").replace(/:sku_list_id/g,(c=e==null?void 0:e.skuListId)!=null?c:":sku_list_id").replace(/:sku_id/g,(d=e==null?void 0:e.skuId)!=null?d:":sku_id");return JSON.parse(T)}let k=b(JSON.parse(JSON.stringify(y)),N);return M(k)}export{_ as getMfeConfig};
1
+ import{merge as _}from"merge-anything";function I({jsonConfig:l,market:t,params:e}){var n,i,f;if((l==null?void 0:l.mfe)==null)return null;let N=(i=(n=l==null?void 0:l.mfe)==null?void 0:n.default)!=null?i:{},k=t!=null?(f=l==null?void 0:l.mfe[t])!=null?f:{}:{};function M(T){var u,g,o,r,c,d,y;let b=JSON.stringify(T).replace(/:lang/g,(u=e==null?void 0:e.lang)!=null?u:":lang").replace(/:slug/g,(g=e==null?void 0:e.slug)!=null?g:":slug").replace(/:token/g,(o=e==null?void 0:e.token)!=null?o:":token").replace(/:access_token/g,(r=e==null?void 0:e.accessToken)!=null?r:":access_token").replace(/:order_id/g,(c=e==null?void 0:e.orderId)!=null?c:":order_id").replace(/:sku_list_id/g,(d=e==null?void 0:e.skuListId)!=null?d:":sku_list_id").replace(/:sku_id/g,(y=e==null?void 0:e.skuId)!=null?y:":sku_id");return JSON.parse(b)}let C=_(JSON.parse(JSON.stringify(N)),k);return M(C)}export{I as getMfeConfig};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/getMfeConfig.ts"],"sourcesContent":["import { merge } from 'merge-anything'\nimport { type ValidConfigForOrganizationsInCommerceLayer } from './schema/types'\n\n/**\n * Represents a type that can be null or undefined, making it optional in use.\n * @template T The type that is being made nullable.\n */\ntype NullableType<T> = T | null | undefined\n\n/**\n * Params used by the getConfig function\n */\ninterface ConfigParams {\n /**\n * Language code (e.g., 'en', 'fr') used to dynamically replace the `:lang` placeholder in URLs.\n */\n lang?: NullableType<string>\n /**\n * Organization slug used to replace the `:slug` placeholder in URLs.\n */\n slug?: NullableType<string>\n /**\n * Access token string used to replace the `:access_token` placeholder in URLs.\n */\n accessToken?: NullableType<string>\n /**\n * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.\n */\n orderId?: NullableType<string>\n /**\n * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.\n */\n skuListId?: NullableType<string>\n /**\n * Unique identifier for an SKU used to replace the `:sku_id` placeholder in URLs.\n */\n skuId?: NullableType<string>\n}\n\ninterface GetMfeConfigProps {\n /**\n * `config` attribute of the organization\n */\n jsonConfig?: { mfe?: MfeConfigs }\n /**\n * Market identifier for fetching specific configuration overrides. (`market:id:hashid`)\n */\n market?: string\n /**\n * Parameters for replacing URL placeholders.\n */\n params?: ConfigParams\n}\n\nexport type MfeConfigs = NonNullable<\n ValidConfigForOrganizationsInCommerceLayer['mfe']\n>\n\nexport type DefaultMfeConfig = NonNullable<\n NonNullable<ValidConfigForOrganizationsInCommerceLayer['mfe']>['default']\n>\n\n/**\n * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.\n * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.\n *\n * @param jsonConfig The complete configuration object of the organization.\n * @param market The market identifier used to get market-specific configuration overrides.\n * @param params The object containing replacement values for URL placeholders, such as language and access token.\n * @returns The merged configuration object for the specified market, or null if no configuration is found.\n */\nexport function getMfeConfig({\n jsonConfig,\n market,\n params\n}: GetMfeConfigProps): DefaultMfeConfig | null {\n if (jsonConfig?.mfe == null) {\n return null\n }\n\n const defaultConfig = jsonConfig?.mfe?.default ?? {}\n const overrideConfig = market != null ? (jsonConfig?.mfe[market] ?? {}) : {}\n\n // Replace placeholders in all string values within the object\n function replacePlaceholders(config: DefaultMfeConfig): DefaultMfeConfig {\n const replacedConfig = JSON.stringify(config)\n .replace(/:lang/g, params?.lang ?? ':lang')\n .replace(/:slug/g, params?.slug ?? ':slug')\n .replace(/:access_token/g, params?.accessToken ?? ':access_token')\n .replace(/:order_id/g, params?.orderId ?? ':order_id')\n .replace(/:sku_list_id/g, params?.skuListId ?? ':sku_list_id')\n .replace(/:sku_id/g, params?.skuId ?? ':sku_id')\n\n return JSON.parse(replacedConfig)\n }\n\n const mergedConfig: DefaultMfeConfig = merge(\n JSON.parse(JSON.stringify(defaultConfig)),\n overrideConfig\n )\n return replacePlaceholders(mergedConfig)\n}\n"],"mappings":"AAAA,OAAS,SAAAA,MAAa,iBAuEf,SAASC,EAAa,CAC3B,WAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAA+C,CA3E/C,IAAAC,EAAAC,EAAAC,EA4EE,IAAIL,GAAA,YAAAA,EAAY,MAAO,KACrB,OAAO,KAGT,IAAMM,GAAgBF,GAAAD,EAAAH,GAAA,YAAAA,EAAY,MAAZ,YAAAG,EAAiB,UAAjB,KAAAC,EAA4B,CAAC,EAC7CG,EAAiBN,GAAU,MAAQI,EAAAL,GAAA,YAAAA,EAAY,IAAIC,KAAhB,KAAAI,EAA2B,CAAC,EAAK,CAAC,EAG3E,SAASG,EAAoBC,EAA4C,CApF3E,IAAAN,EAAAC,EAAAC,EAAAK,EAAAC,EAAAC,EAqFI,IAAMC,EAAiB,KAAK,UAAUJ,CAAM,EACzC,QAAQ,UAAUN,EAAAD,GAAA,YAAAA,EAAQ,OAAR,KAAAC,EAAgB,OAAO,EACzC,QAAQ,UAAUC,EAAAF,GAAA,YAAAA,EAAQ,OAAR,KAAAE,EAAgB,OAAO,EACzC,QAAQ,kBAAkBC,EAAAH,GAAA,YAAAA,EAAQ,cAAR,KAAAG,EAAuB,eAAe,EAChE,QAAQ,cAAcK,EAAAR,GAAA,YAAAA,EAAQ,UAAR,KAAAQ,EAAmB,WAAW,EACpD,QAAQ,iBAAiBC,EAAAT,GAAA,YAAAA,EAAQ,YAAR,KAAAS,EAAqB,cAAc,EAC5D,QAAQ,YAAYC,EAAAV,GAAA,YAAAA,EAAQ,QAAR,KAAAU,EAAiB,SAAS,EAEjD,OAAO,KAAK,MAAMC,CAAc,CAClC,CAEA,IAAMC,EAAiCC,EACrC,KAAK,MAAM,KAAK,UAAUT,CAAa,CAAC,EACxCC,CACF,EACA,OAAOC,EAAoBM,CAAY,CACzC","names":["merge","getMfeConfig","jsonConfig","market","params","_a","_b","_c","defaultConfig","overrideConfig","replacePlaceholders","config","_d","_e","_f","replacedConfig","mergedConfig","merge"]}
1
+ {"version":3,"sources":["../src/getMfeConfig.ts"],"sourcesContent":["import { merge } from \"merge-anything\"\nimport type { ValidConfigForOrganizationsInCommerceLayer } from \"./schema/types\"\n\n/**\n * Represents a type that can be null or undefined, making it optional in use.\n * @template T The type that is being made nullable.\n */\ntype NullableType<T> = T | null | undefined\n\n/**\n * Params used by the getConfig function\n */\ninterface ConfigParams {\n /**\n * Language code (e.g., 'en', 'fr') used to dynamically replace the `:lang` placeholder in URLs.\n */\n lang?: NullableType<string>\n /**\n * Organization slug used to replace the `:slug` placeholder in URLs.\n */\n slug?: NullableType<string>\n /**\n * Access token string used to replace the `:access_token` placeholder in URLs.\n */\n accessToken?: NullableType<string>\n /**\n * Unique identifier for an order used to replace the `:order_id` placeholder in URLs.\n */\n orderId?: NullableType<string>\n /**\n * Order token string used to replace the `:token` placeholder in URLs.\n */\n token?: NullableType<string>\n /**\n * Unique identifier for an SKU list used to replace the `:sku_list_id` placeholder in URLs.\n */\n skuListId?: NullableType<string>\n /**\n * Unique identifier for an SKU used to replace the `:sku_id` placeholder in URLs.\n */\n skuId?: NullableType<string>\n}\n\ninterface GetMfeConfigProps {\n /**\n * `config` attribute of the organization\n */\n jsonConfig?: { mfe?: MfeConfigs }\n /**\n * Market identifier for fetching specific configuration overrides. (`market:id:hashid`)\n */\n market?: string\n /**\n * Parameters for replacing URL placeholders.\n */\n params?: ConfigParams\n}\n\nexport type MfeConfigs = NonNullable<\n ValidConfigForOrganizationsInCommerceLayer[\"mfe\"]\n>\n\nexport type DefaultMfeConfig = NonNullable<\n NonNullable<ValidConfigForOrganizationsInCommerceLayer[\"mfe\"]>[\"default\"]\n>\n\n/**\n * Retrieves and merges the default organization configuration with market-specific overrides based on the provided market identifier.\n * Placeholder values in the configuration URLs can be replaced with actual values from the `params`.\n *\n * @param jsonConfig The complete configuration object of the organization.\n * @param market The market identifier used to get market-specific configuration overrides.\n * @param params The object containing replacement values for URL placeholders, such as language and access token.\n * @returns The merged configuration object for the specified market, or null if no configuration is found.\n */\nexport function getMfeConfig({\n jsonConfig,\n market,\n params,\n}: GetMfeConfigProps): DefaultMfeConfig | null {\n if (jsonConfig?.mfe == null) {\n return null\n }\n\n const defaultConfig = jsonConfig?.mfe?.default ?? {}\n const overrideConfig = market != null ? (jsonConfig?.mfe[market] ?? {}) : {}\n\n // Replace placeholders in all string values within the object\n function replacePlaceholders(config: DefaultMfeConfig): DefaultMfeConfig {\n const replacedConfig = JSON.stringify(config)\n .replace(/:lang/g, params?.lang ?? \":lang\")\n .replace(/:slug/g, params?.slug ?? \":slug\")\n .replace(/:token/g, params?.token ?? \":token\")\n .replace(/:access_token/g, params?.accessToken ?? \":access_token\")\n .replace(/:order_id/g, params?.orderId ?? \":order_id\")\n .replace(/:sku_list_id/g, params?.skuListId ?? \":sku_list_id\")\n .replace(/:sku_id/g, params?.skuId ?? \":sku_id\")\n\n return JSON.parse(replacedConfig)\n }\n\n const mergedConfig: DefaultMfeConfig = merge(\n JSON.parse(JSON.stringify(defaultConfig)),\n overrideConfig,\n )\n return replacePlaceholders(mergedConfig)\n}\n"],"mappings":"AAAA,OAAS,SAAAA,MAAa,iBA2Ef,SAASC,EAAa,CAC3B,WAAAC,EACA,OAAAC,EACA,OAAAC,CACF,EAA+C,CA/E/C,IAAAC,EAAAC,EAAAC,EAgFE,IAAIL,GAAA,YAAAA,EAAY,MAAO,KACrB,OAAO,KAGT,IAAMM,GAAgBF,GAAAD,EAAAH,GAAA,YAAAA,EAAY,MAAZ,YAAAG,EAAiB,UAAjB,KAAAC,EAA4B,CAAC,EAC7CG,EAAiBN,GAAU,MAAQI,EAAAL,GAAA,YAAAA,EAAY,IAAIC,KAAhB,KAAAI,EAA2B,CAAC,EAAK,CAAC,EAG3E,SAASG,EAAoBC,EAA4C,CAxF3E,IAAAN,EAAAC,EAAAC,EAAAK,EAAAC,EAAAC,EAAAC,EAyFI,IAAMC,EAAiB,KAAK,UAAUL,CAAM,EACzC,QAAQ,UAAUN,EAAAD,GAAA,YAAAA,EAAQ,OAAR,KAAAC,EAAgB,OAAO,EACzC,QAAQ,UAAUC,EAAAF,GAAA,YAAAA,EAAQ,OAAR,KAAAE,EAAgB,OAAO,EACzC,QAAQ,WAAWC,EAAAH,GAAA,YAAAA,EAAQ,QAAR,KAAAG,EAAiB,QAAQ,EAC5C,QAAQ,kBAAkBK,EAAAR,GAAA,YAAAA,EAAQ,cAAR,KAAAQ,EAAuB,eAAe,EAChE,QAAQ,cAAcC,EAAAT,GAAA,YAAAA,EAAQ,UAAR,KAAAS,EAAmB,WAAW,EACpD,QAAQ,iBAAiBC,EAAAV,GAAA,YAAAA,EAAQ,YAAR,KAAAU,EAAqB,cAAc,EAC5D,QAAQ,YAAYC,EAAAX,GAAA,YAAAA,EAAQ,QAAR,KAAAW,EAAiB,SAAS,EAEjD,OAAO,KAAK,MAAMC,CAAc,CAClC,CAEA,IAAMC,EAAiCjB,EACrC,KAAK,MAAM,KAAK,UAAUQ,CAAa,CAAC,EACxCC,CACF,EACA,OAAOC,EAAoBO,CAAY,CACzC","names":["merge","getMfeConfig","jsonConfig","market","params","_a","_b","_c","defaultConfig","overrideConfig","replacePlaceholders","config","_d","_e","_f","_g","replacedConfig","mergedConfig"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercelayer/organization-config",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "Organization config utils for extracting config by market",
5
5
  "author": {
6
6
  "name": "Matteo Alessani",
@@ -35,25 +35,24 @@
35
35
  "url": "https://github.com/commercelayer/common-utils/issues"
36
36
  },
37
37
  "devDependencies": {
38
- "@types/lodash": "^4.17.6",
39
- "@types/node": "^22.10.5",
38
+ "@biomejs/biome": "^1.9.4",
39
+ "@types/lodash": "^4.17.16",
40
+ "@types/node": "^22.15.16",
40
41
  "deepmerge": "^4.3.1",
41
- "deepmerge-ts": "^7.0.3",
42
- "eslint": "^8.57.0",
43
- "json-schema-to-typescript": "^15.0.3",
42
+ "deepmerge-ts": "^7.1.5",
43
+ "json-schema-to-typescript": "^15.0.4",
44
44
  "lodash": "^4.17.21",
45
- "tsup": "^8.1.0",
46
- "type-fest": "^4.32.0",
47
- "typescript": "^5.5.2",
48
- "vitest": "^1.6.0",
49
- "@commercelayer/eslint-config-ts": "^2.1.0"
45
+ "tsup": "^8.4.0",
46
+ "type-fest": "^4.41.0",
47
+ "typescript": "^5.8.3",
48
+ "vitest": "^3.1.3"
50
49
  },
51
50
  "dependencies": {
52
51
  "merge-anything": "^5.1.7"
53
52
  },
54
53
  "scripts": {
55
- "lint": "eslint src --ext .ts,.tsx",
56
- "lint:fix": "eslint src --ext .ts,.tsx --fix",
54
+ "lint": "pnpm biome check src",
55
+ "lint:fix": "pnpm biome check src --write",
57
56
  "test": "pnpm run lint && vitest run --silent",
58
57
  "test:verbose": "pnpm run lint && vitest run --silent=false",
59
58
  "bench": "vitest bench",