{"version":3,"sources":["../../../src/configFile/buildConfigurationFields.ts"],"sourcesContent":["import { join } from 'path';\nimport {\n  ACTIVATE_DYNAMIC_IMPORT,\n  OPTIMIZE,\n  TRAVERSE_PATTERN,\n} from '../defaultValues/build';\nimport {\n  CONFIG_DIR,\n  CONTENT_DIR,\n  DICTIONARIES_DIR,\n  DICTIONARY_OUTPUT,\n  DYNAMIC_DICTIONARIES_DIR,\n  EXCLUDED_PATHS,\n  FILE_EXTENSIONS,\n  I18NEXT_DICTIONARIES_DIR,\n  MAIN_DIR,\n  MODULE_AUGMENTATION_DIR,\n  REACT_INTL_MESSAGES_DIR,\n  TYPES_DIR,\n  UNMERGED_DICTIONARIES_DIR,\n  WATCH,\n} from '../defaultValues/content';\nimport {\n  APPLICATION_URL,\n  BACKEND_URL,\n  CMS_URL,\n  DICTIONARY_PRIORITY_STRATEGY,\n  EDITOR_URL,\n  HOT_RELOAD,\n  IS_ENABLED,\n  PORT,\n} from '../defaultValues/editor';\nimport {\n  DEFAULT_LOCALE,\n  LOCALES,\n  REQUIRED_LOCALES,\n  STRICT_MODE,\n} from '../defaultValues/internationalization';\nimport { MODE, PREFIX } from '../defaultValues/log';\nimport {\n  BASE_PATH,\n  COOKIE_NAME,\n  HEADER_NAME,\n  NO_PREFIX,\n  PREFIX_DEFAULT,\n  SERVER_SET_COOKIE,\n} from '../defaultValues/middleware';\nimport type {\n  AiConfig,\n  BaseContentConfig,\n  BaseDerivedConfig,\n  BuildConfig,\n  ContentConfig,\n  CustomIntlayerConfig,\n  EditorConfig,\n  InternationalizationConfig,\n  IntlayerConfig,\n  LogConfig,\n  MiddlewareConfig,\n  PatternsContentConfig,\n  ResultDirDerivedConfig,\n} from '../types/config';\nimport { normalizePath } from '../utils/normalizePath';\n\nlet storedConfiguration: IntlayerConfig;\n\n// @TODO - Add possibility of directories configurations to be arrays to allow multiple packages management\n\nconst buildInternationalizationFields = (\n  customConfiguration?: Partial<InternationalizationConfig>\n): InternationalizationConfig => ({\n  /**\n   * Locales available in the application\n   *\n   * Default: ['en']\n   *\n   */\n  locales: customConfiguration?.locales ?? LOCALES,\n\n  /**\n   * Locales required by TypeScript to ensure strong implementations of internationalized content using typescript.\n   *\n   * Default: []\n   *\n   * If empty, all locales are required in `strict` mode.\n   *\n   * Ensure required locales are also defined in the `locales` field.\n   */\n  requiredLocales: customConfiguration?.requiredLocales ?? REQUIRED_LOCALES,\n\n  /**\n   * Ensure strong implementations of internationalized content using typescript.\n   * - If set to \"strict\", the translation `t` function will require each declared locales to be defined. If one locale is missing, or if a locale is not declared in your config, it will throw an error.\n   * - If set to \"inclusive\", the translation `t` function will require each declared locales to be defined. If one locale is missing, it will throw a warning. But will accept if a locale is not declared in your config, but exist.\n   * - If set to \"loose\", the translation `t` function will accept any existing locale.\n   *\n   * Default: \"inclusive\"\n   */\n  strictMode: customConfiguration?.strictMode ?? STRICT_MODE,\n\n  /**\n   * Default locale of the application for fallback\n   *\n   * Default: 'en'\n   */\n  defaultLocale: customConfiguration?.defaultLocale ?? DEFAULT_LOCALE,\n});\n\nconst buildMiddlewareFields = (\n  customConfiguration?: Partial<MiddlewareConfig>\n): MiddlewareConfig => ({\n  /**\n   * Header name to get the locale\n   *\n   * Default: 'x-intlayer-locale'\n   */\n  headerName: customConfiguration?.headerName ?? HEADER_NAME,\n\n  /**\n   * Cookie name to get the locale\n   *\n   * Default: 'intlayer-locale'\n   */\n  cookieName: customConfiguration?.cookieName ?? COOKIE_NAME,\n\n  /**\n   * Prefix default prefix the default locale to the path as other locales.\n   *\n   * Example with prefixDefault = true and defaultLocale = 'en':\n   * path = /en/dashboard or /fr/dashboard\n   *\n   * Example with prefixDefault = false and defaultLocale = 'en':\n   * path = /dashboard or /fr/dashboard\n   *\n   *\n   * Default: false\n   */\n  prefixDefault: customConfiguration?.prefixDefault ?? PREFIX_DEFAULT,\n\n  /**\n   * Base path of the application URL\n   *\n   * Default: ''\n   *\n   * Example:\n   * - If the application is hosted at https://example.com/my-app\n   * - The base path is '/my-app'\n   * - The URL will be https://example.com/my-app/en\n   * - If the base path is not set, the URL will be https://example.com/en\n   */\n  basePath: customConfiguration?.basePath ?? BASE_PATH,\n\n  /**\n   * Rule to set the cookie on the server\n   * - 'always': Set the cookie on every request\n   * - 'never': Never set the cookie\n   */\n  serverSetCookie: customConfiguration?.serverSetCookie ?? SERVER_SET_COOKIE,\n\n  /**\n   * No prefix in the URL\n   * - true: No prefix in the URL\n   * - false: Prefix in the URL\n   *\n   * Example:\n   * - If the application is hosted at https://example.com/my-app\n   * - The base path is '/my-app'\n   * - The URL will be https://example.com/my-app/en\n   * - If the base path is not set, the URL will be https://example.com/en\n   * - If no prefix is set, the URL will be https://example.com/en\n   * - If the no prefix is set to true, the URL will be https://example.com\n   *\n   * Default: false\n   */\n  noPrefix: customConfiguration?.noPrefix ?? NO_PREFIX,\n});\n\nconst buildContentFields = (\n  customConfiguration?: Partial<ContentConfig>,\n  baseDir?: string\n): ContentConfig => {\n  const notDerivedContentConfig: BaseContentConfig = {\n    /**\n     * File extensions of content to look for to build the dictionaries\n     *\n     * - Default: ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.tsx', '.content.jsx']\n     *\n     * - Example: ['.data.ts', '.data.js', '.data.json']\n     *\n     * Note:\n     * - Can exclude unused file extensions to improve performance\n     * - Avoid using common file extensions like '.ts', '.js', '.json' to avoid conflicts\n     */\n    fileExtensions: customConfiguration?.fileExtensions ?? FILE_EXTENSIONS,\n\n    /**\n     * Absolute path of the directory of the project\n     * - Default: process.cwd()\n     * - Example: '\n     *\n     * Will be used to resolve all intlayer directories\n     *\n     * Note:\n     * - The base directory should be the root of the project\n     * - Can be changed to a custom directory to externalize either the content used in the project, or the intlayer application from the project\n     */\n    baseDir: customConfiguration?.baseDir ?? baseDir ?? process.cwd(),\n\n    /**\n     * Should exclude some directories from the content search\n     *\n     * Default: ['node_modules']\n     *\n     * Not used yet\n     * @TODO Implement the exclusion or remove it\n     */\n    excludedPath: customConfiguration?.excludedPath ?? EXCLUDED_PATHS,\n\n    /**\n     * Indicates if Intlayer should watch for changes in the content declaration files in the app to rebuild the related dictionaries.\n     *\n     * Default: process.env.NODE_ENV === 'development'\n     */\n    watch: customConfiguration?.watch ?? WATCH,\n  };\n\n  const baseDirDerivedConfiguration: BaseDerivedConfig = {\n    /**\n     * Directory where the content is stored\n     *\n     * Relative to the base directory of the project\n     *\n     * Default: ./src\n     *\n     * Example: 'src'\n     *\n     * Note:\n     * - Can be changed to a custom directory to externalize the content used in the project\n     * - If the content is not at the base directory level, update the contentDirName field instead\n     */\n    contentDir: (customConfiguration?.contentDir ?? CONTENT_DIR).map(\n      (contentDir) => join(notDerivedContentConfig.baseDir, contentDir)\n    ),\n\n    /**\n     * Directory where the result will be stored\n     *\n     * Relative to the base directory of the project\n     *\n     * Default: .intlayer/dictionary\n     *\n     * Example: '.intlayer'\n     *\n     * Note:\n     * - Can be changed to a custom directory to externalize the intlayer application from the project\n     * - If the result is not at the base directory level, update the dictionariesDirName field instead\n     */\n    dictionariesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.dictionariesDir ?? DICTIONARIES_DIR\n    ),\n\n    /**\n     * Directory where the module augmentation will be stored\n     *\n     * Module augmentation allow better IDE suggestions and type checking\n     *\n     * Relative to the base directory of the project\n     *\n     * Default: .intlayer/types\n     *\n     * Example: 'types'\n     *\n     * Note:\n     * - If this path changed, be sure to include it from the tsconfig.json file\n     * - If the module augmentation is not at the base directory level, update the moduleAugmentationDirName field instead\n     *\n     */\n    moduleAugmentationDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.moduleAugmentationDir ?? MODULE_AUGMENTATION_DIR\n    ),\n\n    /**\n     * Output format of the dictionary\n     *\n     * Default: ['intlayer']\n     *\n     * Note:\n     * - 'i18next' is not yet ensure a 1:1 mapping with the i18next library.\n     * - Removing 'intlayer' will break the compatibility with react-intlayer or next-intlayer\n     */\n    dictionaryOutput:\n      customConfiguration?.dictionaryOutput ?? DICTIONARY_OUTPUT,\n  };\n\n  const dictionariesDirDerivedConfiguration: ResultDirDerivedConfig = {\n    /**\n     * Directory where the unmerged dictionaries will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: '.intlayer/unmerged_dictionary'\n     *\n     */\n    unmergedDictionariesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.unmergedDictionariesDir ?? UNMERGED_DICTIONARIES_DIR\n    ),\n\n    /**\n     * Directory where the final dictionaries will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: .intlayer/dictionary\n     *\n     * Example: '.intlayer/dictionary'\n     *\n     * Note:\n     * - If the types are not at the result directory level, update the dictionariesDirName field instead\n     * - The dictionaries are stored in JSON format\n     * - The dictionaries are used to translate the content\n     * - The dictionaries are built from the content files\n     */\n    dictionariesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.dictionariesDir ?? DICTIONARIES_DIR\n    ),\n\n    /**\n     * Directory where the dynamic dictionaries will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: .intlayer/dynamic_dictionary\n     */\n    dynamicDictionariesDir: join(\n      notDerivedContentConfig.baseDir,\n      customConfiguration?.dynamicDictionariesDir ?? DYNAMIC_DICTIONARIES_DIR\n    ),\n\n    /**\n     * Directory where the 18n dictionaries will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: i18next_resources\n     *\n     * Example: '.intlayer/dictionary/i18n'\n     *\n     * Note:\n     * - If the types are not at the result directory level, update the i18nextResourcesDirName field instead\n     */\n    i18nextResourcesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.i18nextResourcesDir ?? I18NEXT_DICTIONARIES_DIR\n    ),\n\n    /**\n     * Directory where the dictionaries will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: intl_messages\n     *\n     * Example: '.intlayer/react-intl_dictionary'\n     *\n     * Note:\n     * - If the types are not at the result directory level, update the dictionariesDirName field instead\n     */\n    reactIntlMessagesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.reactIntlMessagesDir ?? REACT_INTL_MESSAGES_DIR\n    ),\n\n    /**\n     * Directory where the dictionaries types will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: .intlayer/types\n     *\n     * Example: 'types'\n     *\n     * Note:\n     * - If the types are not at the result directory level, update the typesDirName field instead\n     */\n    typesDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.typesDir ?? TYPES_DIR\n    ),\n\n    /**\n     * Directory where the main files will be stored\n     *\n     * Relative to the result directory\n     *\n     * Default: .intlayer/main\n     *\n     * Example: '.intlayer/main'\n     *\n     * Note:\n     *\n     * - If the main files are not at the result directory level, update the mainDirName field instead\n     */\n    mainDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.mainDir ?? MAIN_DIR\n    ),\n\n    /**\n     * Directory where the configuration files are stored\n     *\n     * Relative to the result directory\n     *\n     * Default: .intlayer/config\n     *\n     * Example: '.intlayer/config'\n     *\n     * Note:\n     *\n     * - If the configuration files are not at the result directory level, update the configDirName field instead\n     */\n    configDir: join(\n      notDerivedContentConfig.baseDir,\n\n      customConfiguration?.configDir ?? CONFIG_DIR\n    ),\n  };\n\n  const patternsConfiguration: PatternsContentConfig = {\n    /**\n     * Pattern of files to watch\n     *\n     * Default: ['/**\\/*.content.ts', '/**\\/*.content.js', '/**\\/*.content.json', '/**\\/*.content.cjs', '/**\\/*.content.mjs', '/**\\/*.content.tsx', '/**\\/*.content.jsx']\n     */\n    watchedFilesPattern: notDerivedContentConfig.fileExtensions.map(\n      (ext) => `/**/*${ext}`\n    ),\n\n    /**\n     * Pattern of files to watch including the relative path\n     *\n     * Default: ['src/**\\/*.content.ts', 'src/**\\/*.content.js', 'src/**\\/*.content.json', 'src/**\\/*.content.cjs', 'src/**\\/*.content.mjs', 'src/**\\/*.content.tsx', 'src/**\\/*.content.jsx']\n     */\n    watchedFilesPatternWithPath: notDerivedContentConfig.fileExtensions.flatMap(\n      (ext) =>\n        baseDirDerivedConfiguration.contentDir.map(\n          (contentDir) => `${normalizePath(contentDir)}/**/*${ext}`\n        )\n    ),\n\n    /**\n     * Pattern of dictionary to interpret\n     *\n     * Default: '.intlayer/dictionary/**\\/*.json'\n     */\n    outputFilesPatternWithPath: `${normalizePath(\n      dictionariesDirDerivedConfiguration.dictionariesDir\n    )}/**/*.json`,\n  };\n\n  return {\n    ...notDerivedContentConfig,\n    ...baseDirDerivedConfiguration,\n    ...dictionariesDirDerivedConfiguration,\n    ...patternsConfiguration,\n  };\n};\n\nconst buildEditorFields = (\n  customConfiguration?: Partial<EditorConfig>\n): EditorConfig => ({\n  /**\n   * URL of the application. Used to restrict the origin of the editor for security reasons.\n   *\n   * > '*' means that the editor is accessible from any origin\n   *\n   * Default: '*'\n   */\n  applicationURL: customConfiguration?.applicationURL ?? APPLICATION_URL,\n\n  /**\n   * URL of the editor server. Used to restrict the origin of the editor for security reasons.\n   *\n   * > '*' means that the editor is accessible from any origin\n   *\n   * Default: '*'\n   */\n  editorURL: customConfiguration?.editorURL ?? EDITOR_URL,\n\n  /**\n   * URL of the CMS server. Used to restrict the origin of the editor for security reasons.\n   */\n  cmsURL: customConfiguration?.cmsURL ?? CMS_URL,\n\n  /**\n   * URL of the editor server\n   *\n   * Default: 'https://back.intlayer.org'\n   */\n  backendURL: customConfiguration?.backendURL ?? BACKEND_URL,\n\n  /** Port of the editor server\n   *\n   * Default: 8000\n   */\n  port: customConfiguration?.port ?? PORT,\n\n  /**\n   * Indicates if the application interact with the visual editor\n   *\n   * Default: true;\n   *\n   * If true, the editor will be able to interact with the application.\n   * If false, the editor will not be able to interact with the application.\n   * In any case, the editor can only be enabled by the visual editor.\n   * Disabling the editor for specific environments is a way to enforce the security.\n   *\n   * Usage:\n   * ```js\n   * {\n   *  // Other configurations\n   *  editor: {\n   *   enabled: process.env.NODE_ENV !== 'production',\n   *  }\n   * };\n   * ```\n   */\n  enabled: customConfiguration?.enabled ?? IS_ENABLED,\n\n  /**\n   * clientId and clientSecret allow the intlayer packages to authenticate with the backend using oAuth2 authentication.\n   * An access token is use to authenticate the user related to the project.\n   * To get an access token, go to https://intlayer.org/dashboard/project and create an account.\n   *\n   * Default: undefined\n   *\n   * > Important: The clientId and clientSecret should be kept secret and not shared publicly. Please ensure to keep them in a secure location, such as environment variables.\n   */\n  clientId: customConfiguration?.clientId ?? undefined,\n\n  /**\n   * clientId and clientSecret allow the intlayer packages to authenticate with the backend using oAuth2 authentication.\n   * An access token is use to authenticate the user related to the project.\n   * To get an access token, go to https://intlayer.org/dashboard/project and create an account.\n   *\n   * Default: undefined\n   *\n   * > Important: The clientId and clientSecret should be kept secret and not shared publicly. Please ensure to keep them in a secure location, such as environment variables.\n   */\n  clientSecret: customConfiguration?.clientSecret ?? undefined,\n\n  /**\n   * Strategy for prioritizing dictionaries. If a dictionary is both present online and locally, the content will be merge.\n   * However, is a field is defined in both dictionary, this setting determines which fields takes the priority over the other.\n   *\n   * Default: 'local_first'\n   *\n   * The strategy for prioritizing dictionaries. It can be either 'local_first' or 'distant_first'.\n   * - 'local_first': The first dictionary found in the locale is used.\n   * - 'distant_first': The first dictionary found in the distant locales is used.\n   */\n  dictionaryPriorityStrategy:\n    customConfiguration?.dictionaryPriorityStrategy ??\n    DICTIONARY_PRIORITY_STRATEGY,\n\n  /**\n   * Indicates if the application should hot reload the locale configurations when a change is detected.\n   * For example, when a new dictionary is added or updated, the application will update the content tu display in the page.\n   *\n   * The hot reload is only available for clients of the `enterprise` plan.\n   *\n   * Default: false\n   */\n  hotReload: customConfiguration?.hotReload ?? HOT_RELOAD,\n});\n\nconst buildLogFields = (\n  customConfiguration?: Partial<LogConfig>\n): LogConfig => ({\n  /**\n   * Indicates if the logger is enabled\n   *\n   * Default: 'default'\n   *\n   * If 'default', the logger is enabled and can be used.\n   * If 'verbose', the logger will be enabled and can be used, but will log more information.\n   * If 'disabled', the logger is disabled and cannot be used.\n   */\n  mode: customConfiguration?.mode ?? MODE,\n\n  /**\n   * Prefix of the logger\n   *\n   * Default: '[intlayer]'\n   *\n   * The prefix of the logger.\n   */\n  prefix: customConfiguration?.prefix ?? PREFIX,\n});\n\nconst buildAiFields = (customConfiguration?: Partial<AiConfig>): AiConfig => ({\n  /**\n   * AI configuration\n   */\n  provider: customConfiguration?.provider,\n\n  /**\n   * API key\n   */\n  apiKey: customConfiguration?.apiKey,\n\n  /**\n   * API model\n   */\n  model: customConfiguration?.model,\n\n  /**\n   * Temperature\n   */\n  temperature: customConfiguration?.temperature,\n\n  /**\n   * Application context\n   */\n  applicationContext: customConfiguration?.applicationContext,\n});\n\nconst buildBuildFields = (\n  customConfiguration?: Partial<BuildConfig>\n): BuildConfig => ({\n  /**\n   * Indicates if the build should be optimized\n   *\n   * Default: process.env.NODE_ENV === 'production'\n   *\n   * If true, the build will be optimized.\n   * If false, the build will not be optimized.\n   *\n   * Intlayer will replace all calls of dictionaries to optimize chunking. That way the final bundle will import only the dictionaries that are used.\n   * All imports will stay as static import to avoid async processing when loading the dictionaries.\n   *\n   * Note:\n   * - Intlayer will replace all call of `useIntlayer` with `useDictionary`, `getIntlayer` with `getDictionary`.\n   * - This option relies on the `@intlayer/babel` and `@intlayer/swc` plugins.\n   * - Ensure all keys are declared statically in the `useIntlayer` calls. e.g. `useIntlayer('navbar')`.\n   */\n  optimize: customConfiguration?.optimize ?? OPTIMIZE,\n\n  /**\n   * Indicates if the dynamic import should be activated\n   *\n   * Default: false\n   *\n   * By default, when a dictionary is loaded, it imports content for all locales as it's imported statically.\n   * If this option is set to true, only the current locale's dictionary content\n   * will be fetched via dynamic import. In that case, Intlayer will replace all\n   * calls to `useIntlayer` with `useDynamicDictionary`.\n   *\n   * Note:\n   * - Dynamic imports rely on React Suspense and may slightly impact rendering performance. But if desabled all locales will be loaded at once, even if they are not used.\n   * - This option relies on the `@intlayer/babel` and `@intlayer/swc` plugins.\n   * - Ensure all keys are declared statically in the `useIntlayer` calls. e.g. `useIntlayer('navbar')`.\n   * - This option will be ignored if `optimize` is disabled.\n   */\n  activateDynamicImport:\n    customConfiguration?.activateDynamicImport ?? ACTIVATE_DYNAMIC_IMPORT,\n\n  /**\n   * Pattern to traverse the code to optimize.\n   *\n   * Allows to avoid to traverse the code that is not relevant to the optimization.\n   * Improve build performance.\n   *\n   * Default: ['**\\/*.{js,ts,mjs,cjs,jsx,tsx,mjx,cjx}', '!**\\/node_modules/**']\n   *\n   * Example: `['src/**\\/*.{ts,tsx}', '../ui-library/**\\/*.{ts,tsx}']`\n   *\n   * Note:\n   * - This option will be ignored if `optimize` is disabled.\n   * - Use glob pattern.\n   */\n  traversePattern: customConfiguration?.traversePattern ?? TRAVERSE_PATTERN,\n});\n\n/**\n * Build the configuration fields by merging the default values with the custom configuration\n */\nexport const buildConfigurationFields = (\n  customConfiguration?: CustomIntlayerConfig,\n  baseDir?: string\n): IntlayerConfig => {\n  const internationalizationConfig = buildInternationalizationFields(\n    customConfiguration?.internationalization\n  );\n\n  const middlewareConfig = buildMiddlewareFields(\n    customConfiguration?.middleware\n  );\n\n  const contentConfig = buildContentFields(\n    customConfiguration?.content,\n    baseDir\n  );\n\n  const editorConfig = buildEditorFields(customConfiguration?.editor);\n\n  const logConfig = buildLogFields(customConfiguration?.log);\n\n  const aiConfig = buildAiFields(customConfiguration?.ai);\n\n  const buildConfig = buildBuildFields(customConfiguration?.build);\n\n  storedConfiguration = {\n    internationalization: internationalizationConfig,\n    middleware: middlewareConfig,\n    content: contentConfig,\n    editor: editorConfig,\n    log: logConfig,\n    ai: aiConfig,\n    build: buildConfig,\n  };\n\n  return storedConfiguration;\n};\n"],"mappings":"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","names":[]}