{"version":3,"file":"config.mjs","sources":["../../src/services/config.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { get, set, has, isString, isNumber, isArray, type PropertyPath } from 'lodash';\n\ntype State = {\n  config: Config;\n};\n\ntype Config = Record<string, unknown>;\n\nexport const createConfigProvider = (\n  initialConfig: Record<string, unknown> = {},\n  strapi?: Core.Strapi\n): Core.ConfigProvider => {\n  const state: State = {\n    config: { ...initialConfig }, // not deep clone because it would break some config\n  };\n\n  // Accessing model configs with dot (.) was deprecated between v4->v5, but to avoid a major breaking change\n  // we will still support certain namespaces, currently only 'plugin.'\n  const transformPathString = (path: string) => {\n    if (path.startsWith('plugin.')) {\n      const newPath = path.replace('plugin.', 'plugin::');\n\n      // strapi logger may not be loaded yet, so fall back to console\n      (strapi?.log?.warn ?? console.warn)(\n        `Using dot notation for model config namespaces is deprecated, for example \"plugin::myplugin\" should be used instead of \"plugin.myplugin\". Modifying requested path ${path} to ${newPath}`\n      );\n      return newPath;\n    }\n\n    return path;\n  };\n\n  const transformDeprecatedPaths = (path: PropertyPath): PropertyPath => {\n    if (isString(path)) {\n      return transformPathString(path);\n    }\n    if (isArray(path)) {\n      // if the path is not joinable, we won't apply our deprecation support\n      if (path.some((part) => !(isString(part) || isNumber(part)))) {\n        return path;\n      }\n\n      return transformPathString(path.join('.'));\n    }\n\n    return path;\n  };\n\n  return {\n    ...state.config, // TODO: to remove\n    get(path: PropertyPath, defaultValue?: unknown) {\n      return get(state.config, transformDeprecatedPaths(path), defaultValue);\n    },\n    set(path: PropertyPath, val: unknown) {\n      set(state.config, transformDeprecatedPaths(path), val);\n      return this;\n    },\n    has(path: PropertyPath) {\n      return has(state.config, transformDeprecatedPaths(path));\n    },\n  };\n};\n"],"names":["createConfigProvider","initialConfig","strapi","state","config","transformPathString","path","startsWith","newPath","replace","log","warn","console","transformDeprecatedPaths","isString","isArray","some","part","isNumber","join","get","defaultValue","set","val","has"],"mappings":";;MASaA,oBAAAA,GAAuB,CAClCC,aAAAA,GAAyC,EAAE,EAC3CC,MAAAA,GAAAA;AAEA,IAAA,MAAMC,KAAAA,GAAe;QACnBC,MAAAA,EAAQ;AAAE,YAAA,GAAGH;AAAc;AAC7B,KAAA;;;AAIA,IAAA,MAAMI,sBAAsB,CAACC,IAAAA,GAAAA;QAC3B,IAAIA,IAAAA,CAAKC,UAAU,CAAC,SAAA,CAAA,EAAY;AAC9B,YAAA,MAAMC,OAAAA,GAAUF,IAAAA,CAAKG,OAAO,CAAC,SAAA,EAAW,UAAA,CAAA;;AAGvCP,YAAAA,CAAAA,MAAAA,EAAQQ,GAAAA,EAAKC,IAAAA,IAAQC,OAAAA,CAAQD,IAAG,EAC/B,CAAC,mKAAmK,EAAEL,IAAAA,CAAK,IAAI,EAAEE,OAAAA,CAAAA,CAAS,CAAA;YAE5L,OAAOA,OAAAA;AACT,QAAA;QAEA,OAAOF,IAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAMO,2BAA2B,CAACP,IAAAA,GAAAA;AAChC,QAAA,IAAIQ,SAASR,IAAAA,CAAAA,EAAO;AAClB,YAAA,OAAOD,mBAAAA,CAAoBC,IAAAA,CAAAA;AAC7B,QAAA;AACA,QAAA,IAAIS,QAAQT,IAAAA,CAAAA,EAAO;;YAEjB,IAAIA,IAAAA,CAAKU,IAAI,CAAC,CAACC,IAAAA,GAAS,EAAEH,QAAAA,CAASG,IAAAA,CAAAA,IAASC,QAAAA,CAASD,IAAAA,CAAI,CAAA,CAAA,EAAK;gBAC5D,OAAOX,IAAAA;AACT,YAAA;YAEA,OAAOD,mBAAAA,CAAoBC,IAAAA,CAAKa,IAAI,CAAC,GAAA,CAAA,CAAA;AACvC,QAAA;QAEA,OAAOb,IAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACL,QAAA,GAAGH,MAAMC,MAAM;QACfgB,GAAAA,CAAAA,CAAId,IAAkB,EAAEe,YAAsB,EAAA;AAC5C,YAAA,OAAOD,GAAAA,CAAIjB,KAAAA,CAAMC,MAAM,EAAES,yBAAyBP,IAAAA,CAAAA,EAAOe,YAAAA,CAAAA;AAC3D,QAAA,CAAA;QACAC,GAAAA,CAAAA,CAAIhB,IAAkB,EAAEiB,GAAY,EAAA;AAClCD,YAAAA,GAAAA,CAAInB,KAAAA,CAAMC,MAAM,EAAES,wBAAAA,CAAyBP,IAAAA,CAAAA,EAAOiB,GAAAA,CAAAA;AAClD,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AACAC,QAAAA,GAAAA,CAAAA,CAAIlB,IAAkB,EAAA;AACpB,YAAA,OAAOkB,GAAAA,CAAIrB,KAAAA,CAAMC,MAAM,EAAES,wBAAAA,CAAyBP,IAAAA,CAAAA,CAAAA;AACpD,QAAA;AACF,KAAA;AACF;;;;"}