@intlayer/config 1.0.2 → 1.2.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 (152) hide show
  1. package/dist/cjs/client.cjs +2 -10
  2. package/dist/cjs/client.cjs.map +1 -1
  3. package/dist/cjs/client.d.ts +1 -1
  4. package/dist/cjs/configFile/buildConfigurationFields.cjs +295 -39
  5. package/dist/cjs/configFile/buildConfigurationFields.cjs.map +1 -1
  6. package/dist/cjs/configFile/buildConfigurationFields.d.ts +3 -0
  7. package/dist/cjs/configFile/getConfiguration.cjs.map +1 -1
  8. package/dist/cjs/configFile/getConfiguration.d.ts +3 -0
  9. package/dist/cjs/configFile/index.cjs +3 -1
  10. package/dist/cjs/configFile/index.cjs.map +1 -1
  11. package/dist/cjs/configFile/index.d.ts +1 -0
  12. package/dist/cjs/configFile/loadConfigurationFile.cjs +8 -1
  13. package/dist/cjs/configFile/loadConfigurationFile.cjs.map +1 -1
  14. package/dist/cjs/configFile/loadConfigurationFile.d.ts +6 -0
  15. package/dist/cjs/configFile/searchConfigurationFile.cjs.map +1 -1
  16. package/dist/cjs/configFile/searchConfigurationFile.d.ts +11 -0
  17. package/dist/cjs/defaultValues/internationalization.cjs +1 -5
  18. package/dist/cjs/defaultValues/internationalization.cjs.map +1 -1
  19. package/dist/cjs/defaultValues/internationalization.d.ts +1 -1
  20. package/dist/cjs/defaultValues/server.cjs +15 -7
  21. package/dist/cjs/defaultValues/server.cjs.map +1 -1
  22. package/dist/cjs/defaultValues/server.d.ts +6 -3
  23. package/dist/cjs/envVariables/detectPlatform.cjs +56 -0
  24. package/dist/cjs/envVariables/detectPlatform.cjs.map +1 -0
  25. package/dist/cjs/envVariables/detectPlatform.d.ts +8 -0
  26. package/dist/cjs/envVariables/extractEnvVariable/index.cjs +44 -0
  27. package/dist/cjs/envVariables/extractEnvVariable/index.cjs.map +1 -0
  28. package/dist/cjs/envVariables/extractEnvVariable/index.d.ts +7 -0
  29. package/dist/cjs/envVariables/extractEnvVariable/next.cjs +70 -0
  30. package/dist/cjs/envVariables/extractEnvVariable/next.cjs.map +1 -0
  31. package/dist/cjs/envVariables/extractEnvVariable/next.d.ts +7 -0
  32. package/dist/cjs/envVariables/extractEnvVariable/react_app.cjs +70 -0
  33. package/dist/cjs/envVariables/extractEnvVariable/react_app.cjs.map +1 -0
  34. package/dist/cjs/envVariables/extractEnvVariable/react_app.d.ts +7 -0
  35. package/dist/cjs/envVariables/extractEnvVariable/types.cjs +17 -0
  36. package/dist/cjs/envVariables/extractEnvVariable/types.cjs.map +1 -0
  37. package/dist/cjs/envVariables/extractEnvVariable/types.d.ts +11 -0
  38. package/dist/cjs/envVariables/extractEnvVariable/undefined_platform.cjs +70 -0
  39. package/dist/cjs/envVariables/extractEnvVariable/undefined_platform.cjs.map +1 -0
  40. package/dist/cjs/envVariables/extractEnvVariable/undefined_platform.d.ts +7 -0
  41. package/dist/cjs/envVariables/extractEnvVariable/vite.cjs +78 -0
  42. package/dist/cjs/envVariables/extractEnvVariable/vite.cjs.map +1 -0
  43. package/dist/cjs/envVariables/extractEnvVariable/vite.d.ts +7 -0
  44. package/dist/cjs/envVariables/extractEnvVariable/vite_env.d.cjs +2 -0
  45. package/dist/cjs/envVariables/extractEnvVariable/vite_env.d.cjs.map +1 -0
  46. package/dist/cjs/envVariables/extractEnvVariable/vite_env.d.d.ts +2 -0
  47. package/dist/cjs/envVariables/formatEnvVariable.cjs +6 -4
  48. package/dist/cjs/envVariables/formatEnvVariable.cjs.map +1 -1
  49. package/dist/cjs/envVariables/formatEnvVariable.d.ts +6 -1
  50. package/dist/cjs/envVariables/getConfiguration.cjs +79 -116
  51. package/dist/cjs/envVariables/getConfiguration.cjs.map +1 -1
  52. package/dist/cjs/envVariables/getConfiguration.d.ts +7 -6
  53. package/dist/cjs/envVariables/index.cjs +2 -10
  54. package/dist/cjs/envVariables/index.cjs.map +1 -1
  55. package/dist/cjs/envVariables/index.d.ts +2 -1
  56. package/dist/cjs/envVariables/utils.cjs +7 -6
  57. package/dist/cjs/envVariables/utils.cjs.map +1 -1
  58. package/dist/cjs/envVariables/utils.d.ts +5 -5
  59. package/dist/cjs/index.cjs +2 -10
  60. package/dist/cjs/index.cjs.map +1 -1
  61. package/dist/cjs/index.d.ts +2 -1
  62. package/dist/cjs/types/config.cjs.map +1 -1
  63. package/dist/cjs/types/config.d.ts +253 -7
  64. package/dist/cjs/types/locales.cjs.map +1 -1
  65. package/dist/cjs/types/locales.d.ts +233 -0
  66. package/dist/esm/client.d.mts +1 -1
  67. package/dist/esm/client.mjs +2 -12
  68. package/dist/esm/client.mjs.map +1 -1
  69. package/dist/esm/configFile/buildConfigurationFields.d.mts +3 -0
  70. package/dist/esm/configFile/buildConfigurationFields.mjs +298 -42
  71. package/dist/esm/configFile/buildConfigurationFields.mjs.map +1 -1
  72. package/dist/esm/configFile/getConfiguration.d.mts +3 -0
  73. package/dist/esm/configFile/getConfiguration.mjs.map +1 -1
  74. package/dist/esm/configFile/index.d.mts +1 -0
  75. package/dist/esm/configFile/index.mjs +1 -0
  76. package/dist/esm/configFile/index.mjs.map +1 -1
  77. package/dist/esm/configFile/loadConfigurationFile.d.mts +6 -0
  78. package/dist/esm/configFile/loadConfigurationFile.mjs +8 -1
  79. package/dist/esm/configFile/loadConfigurationFile.mjs.map +1 -1
  80. package/dist/esm/configFile/searchConfigurationFile.d.mts +11 -0
  81. package/dist/esm/configFile/searchConfigurationFile.mjs.map +1 -1
  82. package/dist/esm/defaultValues/internationalization.d.mts +1 -1
  83. package/dist/esm/defaultValues/internationalization.mjs +1 -5
  84. package/dist/esm/defaultValues/internationalization.mjs.map +1 -1
  85. package/dist/esm/defaultValues/server.d.mts +6 -3
  86. package/dist/esm/defaultValues/server.mjs +13 -5
  87. package/dist/esm/defaultValues/server.mjs.map +1 -1
  88. package/dist/esm/envVariables/detectPlatform.d.mts +8 -0
  89. package/dist/esm/envVariables/detectPlatform.mjs +30 -0
  90. package/dist/esm/envVariables/detectPlatform.mjs.map +1 -0
  91. package/dist/esm/envVariables/extractEnvVariable/index.d.mts +7 -0
  92. package/dist/esm/envVariables/extractEnvVariable/index.mjs +20 -0
  93. package/dist/esm/envVariables/extractEnvVariable/index.mjs.map +1 -0
  94. package/dist/esm/envVariables/extractEnvVariable/next.d.mts +7 -0
  95. package/dist/esm/envVariables/extractEnvVariable/next.mjs +46 -0
  96. package/dist/esm/envVariables/extractEnvVariable/next.mjs.map +1 -0
  97. package/dist/esm/envVariables/extractEnvVariable/react_app.d.mts +7 -0
  98. package/dist/esm/envVariables/extractEnvVariable/react_app.mjs +46 -0
  99. package/dist/esm/envVariables/extractEnvVariable/react_app.mjs.map +1 -0
  100. package/dist/esm/envVariables/extractEnvVariable/types.d.mts +11 -0
  101. package/dist/esm/envVariables/extractEnvVariable/types.mjs +1 -0
  102. package/dist/esm/envVariables/extractEnvVariable/types.mjs.map +1 -0
  103. package/dist/esm/envVariables/extractEnvVariable/undefined_platform.d.mts +7 -0
  104. package/dist/esm/envVariables/extractEnvVariable/undefined_platform.mjs +46 -0
  105. package/dist/esm/envVariables/extractEnvVariable/undefined_platform.mjs.map +1 -0
  106. package/dist/esm/envVariables/extractEnvVariable/vite.d.mts +7 -0
  107. package/dist/esm/envVariables/extractEnvVariable/vite.mjs +53 -0
  108. package/dist/esm/envVariables/extractEnvVariable/vite.mjs.map +1 -0
  109. package/dist/esm/envVariables/extractEnvVariable/vite_env.d.d.mts +2 -0
  110. package/dist/esm/envVariables/extractEnvVariable/vite_env.d.mjs +1 -0
  111. package/dist/esm/envVariables/extractEnvVariable/vite_env.d.mjs.map +1 -0
  112. package/dist/esm/envVariables/formatEnvVariable.d.mts +6 -1
  113. package/dist/esm/envVariables/formatEnvVariable.mjs +6 -4
  114. package/dist/esm/envVariables/formatEnvVariable.mjs.map +1 -1
  115. package/dist/esm/envVariables/getConfiguration.d.mts +7 -6
  116. package/dist/esm/envVariables/getConfiguration.mjs +78 -111
  117. package/dist/esm/envVariables/getConfiguration.mjs.map +1 -1
  118. package/dist/esm/envVariables/index.d.mts +2 -1
  119. package/dist/esm/envVariables/index.mjs +2 -12
  120. package/dist/esm/envVariables/index.mjs.map +1 -1
  121. package/dist/esm/envVariables/utils.d.mts +5 -5
  122. package/dist/esm/envVariables/utils.mjs +7 -6
  123. package/dist/esm/envVariables/utils.mjs.map +1 -1
  124. package/dist/esm/index.d.mts +2 -1
  125. package/dist/esm/index.mjs +1 -9
  126. package/dist/esm/index.mjs.map +1 -1
  127. package/dist/esm/types/config.d.mts +253 -7
  128. package/dist/esm/types/locales.d.mts +233 -0
  129. package/dist/esm/types/locales.mjs.map +1 -1
  130. package/package.json +7 -7
  131. package/src/client.ts +1 -7
  132. package/src/configFile/buildConfigurationFields.ts +306 -46
  133. package/src/configFile/getConfiguration.ts +3 -0
  134. package/src/configFile/index.ts +1 -0
  135. package/src/configFile/loadConfigurationFile.ts +19 -1
  136. package/src/configFile/searchConfigurationFile.ts +11 -0
  137. package/src/defaultValues/server.ts +14 -4
  138. package/src/envVariables/detectPlatform.ts +41 -0
  139. package/src/envVariables/extractEnvVariable/index.ts +20 -0
  140. package/src/envVariables/extractEnvVariable/next.ts +57 -0
  141. package/src/envVariables/extractEnvVariable/react_app.ts +57 -0
  142. package/src/envVariables/extractEnvVariable/types.ts +10 -0
  143. package/src/envVariables/extractEnvVariable/undefined_platform.ts +52 -0
  144. package/src/envVariables/extractEnvVariable/vite.ts +65 -0
  145. package/src/envVariables/extractEnvVariable/vite_env.d.ts +9 -0
  146. package/src/envVariables/formatEnvVariable.ts +17 -11
  147. package/src/envVariables/getConfiguration.ts +85 -113
  148. package/src/envVariables/index.ts +1 -7
  149. package/src/envVariables/utils.ts +30 -14
  150. package/src/index.ts +0 -4
  151. package/src/types/config.ts +279 -63
  152. package/src/types/locales.ts +233 -233
@@ -0,0 +1,57 @@
1
+ import type {
2
+ InternationalizationConfig,
3
+ MiddlewareConfig,
4
+ ContentConfig,
5
+ } from '../../types/config';
6
+ import type { IntlayerConfigEnvVariable, ReplaceValue } from './types';
7
+
8
+ export const extractNextEnvVariable = (): IntlayerConfigEnvVariable => {
9
+ const internationalization: ReplaceValue<InternationalizationConfig> = {
10
+ locales: process.env.NEXT_PUBLIC_INTLAYER_LOCALES,
11
+ defaultLocale: process.env.NEXT_PUBLIC_INTLAYER_DEFAULT_LOCALE,
12
+ };
13
+
14
+ const middleware: ReplaceValue<MiddlewareConfig> = {
15
+ headerName: process.env.NEXT_PUBLIC_INTLAYER_HEADER_NAME,
16
+ cookieName: process.env.NEXT_PUBLIC_INTLAYER_COOKIE_NAME,
17
+ prefixDefault: process.env.NEXT_PUBLIC_INTLAYER_PREFIX_DEFAULT,
18
+ basePath: process.env.NEXT_PUBLIC_INTLAYER_BASE_PATH,
19
+ serverSetCookie: process.env.NEXT_PUBLIC_INTLAYER_SERVER_SET_COOKIE,
20
+ noPrefix: process.env.NEXT_PUBLIC_INTLAYER_NO_PREFIX,
21
+ };
22
+
23
+ const content: ReplaceValue<ContentConfig> = {
24
+ fileExtensions: process.env.NEXT_PUBLIC_INTLAYER_FILE_EXTENSIONS,
25
+ baseDir: process.env.NEXT_PUBLIC_INTLAYER_BASE_DIR,
26
+ contentDirName: process.env.NEXT_PUBLIC_INTLAYER_CONTENT_DIR_NAME,
27
+ contentDir: process.env.NEXT_PUBLIC_INTLAYER_CONTENT_DIR,
28
+ excludedPath: process.env.NEXT_PUBLIC_INTLAYER_EXCLUDED_PATH,
29
+ resultDirName: process.env.NEXT_PUBLIC_INTLAYER_RESULT_DIR_NAME,
30
+ moduleAugmentationDirName:
31
+ process.env.NEXT_PUBLIC_INTLAYER_MODULE_AUGMENTATION_DIR_NAME,
32
+ dictionariesDirName: process.env.NEXT_PUBLIC_INTLAYER_DICTIONARIES_DIR_NAME,
33
+ i18nDictionariesDir: process.env.NEXT_PUBLIC_INTLAYER_I18N_DICTIONARIES_DIR,
34
+ typeDirName: process.env.NEXT_PUBLIC_INTLAYER_TYPE_DIR_NAME,
35
+ mainDirName: process.env.NEXT_PUBLIC_INTLAYER_MAIN_DIR_NAME,
36
+ resultDir: process.env.NEXT_PUBLIC_INTLAYER_RESULT_DIR,
37
+ moduleAugmentationDir:
38
+ process.env.NEXT_PUBLIC_INTLAYER_MODULE_AUGMENTATION_DIR,
39
+ dictionariesDir: process.env.NEXT_PUBLIC_INTLAYER_DICTIONARIES_DIR,
40
+ i18nDictionariesDirName:
41
+ process.env.NEXT_PUBLIC_INTLAYER_I18N_DICTIONARIES_DIR_NAME,
42
+ typesDir: process.env.NEXT_PUBLIC_INTLAYER_TYPE_DIR,
43
+ mainDir: process.env.NEXT_PUBLIC_INTLAYER_MAIN_DIR,
44
+ watchedFilesPattern: process.env.NEXT_PUBLIC_INTLAYER_WATCHED_FILES_PATTERN,
45
+ watchedFilesPatternWithPath:
46
+ process.env.NEXT_PUBLIC_INTLAYER_WATCHED_FILES_PATTERN_WITH_PATH,
47
+ outputFilesPatternWithPath:
48
+ process.env.NEXT_PUBLIC_INTLAYER_OUTPUT_FILES_PATTERN_WITH_PATH,
49
+ dictionaryOutput: process.env.NEXT_PUBLIC_INTLAYER_DICTIONARY_OUTPUT,
50
+ };
51
+
52
+ return {
53
+ internationalization,
54
+ middleware,
55
+ content,
56
+ };
57
+ };
@@ -0,0 +1,57 @@
1
+ import type {
2
+ InternationalizationConfig,
3
+ MiddlewareConfig,
4
+ ContentConfig,
5
+ } from '../../types/config';
6
+ import type { IntlayerConfigEnvVariable, ReplaceValue } from './types';
7
+
8
+ export const extractReactAppEnvVariable = (): IntlayerConfigEnvVariable => {
9
+ const internationalization: ReplaceValue<InternationalizationConfig> = {
10
+ locales: process.env.REACT_APP_INTLAYER_LOCALES,
11
+ defaultLocale: process.env.REACT_APP_INTLAYER_DEFAULT_LOCALE,
12
+ };
13
+
14
+ const middleware: ReplaceValue<MiddlewareConfig> = {
15
+ headerName: process.env.REACT_APP_INTLAYER_HEADER_NAME,
16
+ cookieName: process.env.REACT_APP_INTLAYER_COOKIE_NAME,
17
+ prefixDefault: process.env.REACT_APP_INTLAYER_PREFIX_DEFAULT,
18
+ basePath: process.env.REACT_APP_INTLAYER_BASE_PATH,
19
+ serverSetCookie: process.env.REACT_APP_INTLAYER_SERVER_SET_COOKIE,
20
+ noPrefix: process.env.REACT_APP_INTLAYER_NO_PREFIX,
21
+ };
22
+
23
+ const content: ReplaceValue<ContentConfig> = {
24
+ fileExtensions: process.env.REACT_APP_INTLAYER_FILE_EXTENSIONS,
25
+ baseDir: process.env.REACT_APP_INTLAYER_BASE_DIR,
26
+ contentDirName: process.env.REACT_APP_INTLAYER_CONTENT_DIR_NAME,
27
+ contentDir: process.env.REACT_APP_INTLAYER_CONTENT_DIR,
28
+ excludedPath: process.env.REACT_APP_INTLAYER_EXCLUDED_PATH,
29
+ resultDirName: process.env.REACT_APP_INTLAYER_RESULT_DIR_NAME,
30
+ moduleAugmentationDirName:
31
+ process.env.REACT_APP_INTLAYER_MODULE_AUGMENTATION_DIR_NAME,
32
+ dictionariesDirName: process.env.REACT_APP_INTLAYER_DICTIONARIES_DIR_NAME,
33
+ i18nDictionariesDirName:
34
+ process.env.REACT_APP_INTLAYER_I18N_DICTIONARIES_DIR_NAME,
35
+ typeDirName: process.env.REACT_APP_INTLAYER_TYPE_DIR_NAME,
36
+ mainDirName: process.env.REACT_APP_INTLAYER_MAIN_DIR_NAME,
37
+ resultDir: process.env.REACT_APP_INTLAYER_RESULT_DIR,
38
+ moduleAugmentationDir:
39
+ process.env.REACT_APP_INTLAYER_MODULE_AUGMENTATION_DIR,
40
+ dictionariesDir: process.env.REACT_APP_INTLAYER_DICTIONARIES_DIR,
41
+ i18nDictionariesDir: process.env.REACT_APP_INTLAYER_I18N_DICTIONARIES_DIR,
42
+ typesDir: process.env.REACT_APP_INTLAYER_TYPE_DIR,
43
+ mainDir: process.env.REACT_APP_INTLAYER_MAIN_DIR,
44
+ watchedFilesPattern: process.env.REACT_APP_INTLAYER_WATCHED_FILES_PATTERN,
45
+ watchedFilesPatternWithPath:
46
+ process.env.REACT_APP_INTLAYER_WATCHED_FILES_PATTERN_WITH_PATH,
47
+ outputFilesPatternWithPath:
48
+ process.env.REACT_APP_INTLAYER_OUTPUT_FILES_PATTERN_WITH_PATH,
49
+ dictionaryOutput: process.env.REACT_APP_INTLAYER_DICTIONARY_OUTPUT,
50
+ };
51
+
52
+ return {
53
+ internationalization,
54
+ middleware,
55
+ content,
56
+ };
57
+ };
@@ -0,0 +1,10 @@
1
+ import type { IntlayerConfig } from '../../client';
2
+
3
+ // Utility type that replaces all values of a given type with another type
4
+ export type ReplaceValue<T> = {
5
+ [K in keyof T]: string | undefined;
6
+ };
7
+
8
+ export type IntlayerConfigEnvVariable = {
9
+ [K in keyof IntlayerConfig]: ReplaceValue<IntlayerConfig[K]>;
10
+ };
@@ -0,0 +1,52 @@
1
+ import type {
2
+ InternationalizationConfig,
3
+ MiddlewareConfig,
4
+ ContentConfig,
5
+ } from '../../types/config';
6
+ import type { ReplaceValue, IntlayerConfigEnvVariable } from './types';
7
+
8
+ export const extractEmptyEnvVariable = (): IntlayerConfigEnvVariable => {
9
+ const internationalization: ReplaceValue<InternationalizationConfig> = {
10
+ locales: undefined,
11
+ defaultLocale: undefined,
12
+ };
13
+
14
+ const middleware: ReplaceValue<MiddlewareConfig> = {
15
+ headerName: undefined,
16
+ cookieName: undefined,
17
+ prefixDefault: undefined,
18
+ basePath: undefined,
19
+ serverSetCookie: undefined,
20
+ noPrefix: undefined,
21
+ };
22
+
23
+ const content: ReplaceValue<ContentConfig> = {
24
+ fileExtensions: undefined,
25
+ baseDir: undefined,
26
+ contentDirName: undefined,
27
+ contentDir: undefined,
28
+ excludedPath: undefined,
29
+ resultDirName: undefined,
30
+ moduleAugmentationDirName: undefined,
31
+ dictionariesDirName: undefined,
32
+ i18nDictionariesDirName: undefined,
33
+ typeDirName: undefined,
34
+ mainDirName: undefined,
35
+ resultDir: undefined,
36
+ moduleAugmentationDir: undefined,
37
+ dictionariesDir: undefined,
38
+ i18nDictionariesDir: undefined,
39
+ typesDir: undefined,
40
+ mainDir: undefined,
41
+ watchedFilesPattern: undefined,
42
+ watchedFilesPatternWithPath: undefined,
43
+ outputFilesPatternWithPath: undefined,
44
+ dictionaryOutput: undefined,
45
+ };
46
+
47
+ return {
48
+ internationalization,
49
+ middleware,
50
+ content,
51
+ };
52
+ };
@@ -0,0 +1,65 @@
1
+ import type {
2
+ InternationalizationConfig,
3
+ MiddlewareConfig,
4
+ ContentConfig,
5
+ } from '../../types/config';
6
+ import type { IntlayerConfigEnvVariable, ReplaceValue } from './types';
7
+ import { extractEmptyEnvVariable } from './undefined_platform';
8
+
9
+ export const extractViteEnvVariable = (): IntlayerConfigEnvVariable => {
10
+ if (!import.meta.env) {
11
+ console.error(
12
+ 'Vite env variables cannot be loaded on a commonjs environment.'
13
+ );
14
+ return extractEmptyEnvVariable();
15
+ }
16
+
17
+ const internationalization: ReplaceValue<InternationalizationConfig> = {
18
+ locales: import.meta.env.VITE_INTLAYER_LOCALES,
19
+ defaultLocale: import.meta.env.VITE_INTLAYER_DEFAULT_LOCALE,
20
+ };
21
+
22
+ const middleware: ReplaceValue<MiddlewareConfig> = {
23
+ headerName: import.meta.env.VITE_INTLAYER_HEADER_NAME,
24
+ cookieName: import.meta.env.VITE_INTLAYER_COOKIE_NAME,
25
+ prefixDefault: import.meta.env.VITE_INTLAYER_PREFIX_DEFAULT,
26
+ basePath: import.meta.env.VITE_INTLAYER_BASE_PATH,
27
+ serverSetCookie: import.meta.env.VITE_INTLAYER_SERVER_SET_COOKIE,
28
+ noPrefix: import.meta.env.VITE_INTLAYER_NO_PREFIX,
29
+ };
30
+
31
+ const content: ReplaceValue<ContentConfig> = {
32
+ fileExtensions: import.meta.env.VITE_INTLAYER_FILE_EXTENSIONS,
33
+ baseDir: import.meta.env.VITE_INTLAYER_BASE_DIR,
34
+ contentDirName: import.meta.env.VITE_INTLAYER_CONTENT_DIR_NAME,
35
+ contentDir: import.meta.env.VITE_INTLAYER_CONTENT_DIR,
36
+ excludedPath: import.meta.env.VITE_INTLAYER_EXCLUDED_PATH,
37
+ resultDirName: import.meta.env.VITE_INTLAYER_RESULT_DIR_NAME,
38
+ moduleAugmentationDirName: import.meta.env
39
+ .VITE_INTLAYER_MODULE_AUGMENTATION_DIR_NAME,
40
+ dictionariesDirName: import.meta.env.VITE_INTLAYER_DICTIONARIES_DIR_NAME,
41
+ i18nDictionariesDirName: import.meta.env
42
+ .VITE_INTLAYER_I18N_DICTIONARIES_DIR_NAME,
43
+ typeDirName: import.meta.env.VITE_INTLAYER_TYPE_DIR_NAME,
44
+ mainDirName: import.meta.env.VITE_INTLAYER_MAIN_DIR_NAME,
45
+ resultDir: import.meta.env.VITE_INTLAYER_RESULT_DIR,
46
+ moduleAugmentationDir: import.meta.env
47
+ .VITE_INTLAYER_MODULE_AUGMENTATION_DIR,
48
+ dictionariesDir: import.meta.env.VITE_INTLAYER_DICTIONARIES_DIR,
49
+ i18nDictionariesDir: import.meta.env.VITE_INTLAYER_I18N_DICTIONARIES_DIR,
50
+ typesDir: import.meta.env.VITE_INTLAYER_TYPE_DIR,
51
+ mainDir: import.meta.env.VITE_INTLAYER_MAIN_DIR,
52
+ watchedFilesPattern: import.meta.env.VITE_INTLAYER_WATCHED_FILES_PATTERN,
53
+ watchedFilesPatternWithPath: import.meta.env
54
+ .VITE_INTLAYER_WATCHED_FILES_PATTERN_WITH_PATH,
55
+ outputFilesPatternWithPath: import.meta.env
56
+ .VITE_INTLAYER_OUTPUT_FILES_PATTERN_WITH_PATH,
57
+ dictionaryOutput: import.meta.env.VITE_INTLAYER_DICTIONARY_OUTPUT,
58
+ };
59
+
60
+ return {
61
+ internationalization,
62
+ middleware,
63
+ content,
64
+ };
65
+ };
@@ -0,0 +1,9 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
2
+ /**
3
+ * Module augmentation to add the `env` property to `import.meta`
4
+ *
5
+ * Simulate a vite environment
6
+ */
7
+ interface ImportMeta {
8
+ env: Record<string, string | undefined>;
9
+ }
@@ -1,18 +1,24 @@
1
1
  import { getConfiguration } from '../configFile/getConfiguration';
2
+ import { getPrefix, type Platform } from './detectPlatform';
2
3
 
4
+ /**
5
+ * Format a key to corresponding environment variable name
6
+ *
7
+ * Example:
8
+ * toEnvVariable('mainDir') => 'INTLAYER_MAIN_DIR'
9
+ */
10
+ const formatEnvName = (key: string, prefix: string): string =>
11
+ prefix + key.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();
12
+
13
+ /**
14
+ * Format all configuration values as environment variables
15
+ */
3
16
  export const formatEnvVariable = (
4
- prefix = 'NEXT_PUBLIC_INTLAYER_'
17
+ platform: Platform
5
18
  ): Record<string, string> => {
6
19
  const intlayerConfig = getConfiguration();
7
20
 
8
- /**
9
- * Format a key to corresponding environment variable name
10
- *
11
- * Example:
12
- * toEnvVariable('mainDir') => 'INTLAYER_MAIN_DIR'
13
- */
14
- const formatEnvName = (key: string): string =>
15
- prefix + key.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();
21
+ const prefix = getPrefix(platform);
16
22
 
17
23
  // Set all configuration values as environment variables
18
24
  const env: Record<string, string> = {};
@@ -22,9 +28,9 @@ export const formatEnvVariable = (
22
28
  ...intlayerConfig.middleware,
23
29
  })) {
24
30
  if (typeof value === 'string') {
25
- env[formatEnvName(key)] = value;
31
+ env[formatEnvName(key, prefix)] = value;
26
32
  } else {
27
- env[formatEnvName(key)] = JSON.stringify(value);
33
+ env[formatEnvName(key, prefix)] = JSON.stringify(value);
28
34
  }
29
35
  }
30
36
 
@@ -1,127 +1,99 @@
1
1
  import type {
2
2
  ContentConfig,
3
+ DictionaryOutput,
3
4
  InternationalizationConfig,
4
5
  IntlayerConfig,
5
6
  MiddlewareConfig,
6
7
  ServerSetCookieRule,
7
8
  } from '../types/config';
8
9
  import type { Locales } from '../types/locales';
10
+ import { extractEnvVariable } from './extractEnvVariable/index';
9
11
  import { getEnvValue } from './utils';
10
12
 
11
- export const intlayerIntlConfiguration: InternationalizationConfig = {
12
- locales: getEnvValue<Locales>(
13
- process.env.NEXT_PUBLIC_INTLAYER_LOCALES,
14
- 'array'
15
- )!,
16
- defaultLocale: getEnvValue<Locales>(
17
- process.env.NEXT_PUBLIC_INTLAYER_DEFAULT_LOCALE,
18
- 'string'
19
- )!,
20
- };
13
+ /**
14
+ * Get all configuration values using environment variables
15
+ * Can be used in the client side as the server side
16
+ * To use it, be sure to have the environment variables set
17
+ */
18
+ export const getConfiguration = (): IntlayerConfig => {
19
+ const env = extractEnvVariable();
21
20
 
22
- export const intlayerMiddlewareConfiguration: MiddlewareConfig = {
23
- headerName: getEnvValue(
24
- process.env.NEXT_PUBLIC_INTLAYER_HEADER_NAME,
25
- 'string'
26
- )!,
27
- cookieName: getEnvValue(
28
- process.env.NEXT_PUBLIC_INTLAYER_COOKIE_NAME,
29
- 'string'
30
- )!,
31
- prefixDefault: getEnvValue(
32
- process.env.NEXT_PUBLIC_INTLAYER_PREFIX_DEFAULT,
33
- 'boolean'
34
- )!,
35
- basePath: getEnvValue(process.env.NEXT_PUBLIC_INTLAYER_BASE_PATH, 'string')!,
36
- serverSetCookie: getEnvValue<ServerSetCookieRule>(
37
- process.env.NEXT_PUBLIC_INTLAYER_SERVER_SET_COOKIE,
38
- 'string'
39
- )!,
40
- noPrefix: getEnvValue(process.env.NEXT_PUBLIC_INTLAYER_NO_PREFIX, 'boolean')!,
41
- };
21
+ const intlayerIntlConfiguration: InternationalizationConfig = {
22
+ locales: getEnvValue<Locales>(env.internationalization.locales, 'array')!,
23
+ defaultLocale: getEnvValue<Locales>(
24
+ env?.internationalization.defaultLocale,
25
+ 'string'
26
+ )!,
27
+ };
42
28
 
43
- export const intlayerContentConfiguration: ContentConfig = {
44
- fileExtensions: getEnvValue<string>(
45
- process.env.NEXT_PUBLIC_INTLAYER_FILE_EXTENSIONS,
46
- 'array'
47
- )!,
48
- baseDir: getEnvValue(process.env.NEXT_PUBLIC_INTLAYER_BASE_DIR, 'string')!,
49
- contentDirName: getEnvValue(
50
- process.env.NEXT_PUBLIC_INTLAYER_CONTENT_DIR_NAME,
51
- 'string'
52
- )!,
53
- contentDir: getEnvValue(
54
- process.env.NEXT_PUBLIC_INTLAYER_CONTENT_DIR,
55
- 'string'
56
- )!,
57
- excludedPath: getEnvValue<string>(
58
- process.env.NEXT_PUBLIC_INTLAYER_EXCLUDED_PATH,
59
- 'array'
60
- )!,
61
- resultDirName: getEnvValue(
62
- process.env.NEXT_PUBLIC_INTLAYER_RESULT_DIR_NAME,
63
- 'string'
64
- )!,
65
- resultDir: getEnvValue(
66
- process.env.NEXT_PUBLIC_INTLAYER_RESULT_DIR,
67
- 'string'
68
- )!,
69
- moduleAugmentationDirName: getEnvValue(
70
- process.env.NEXT_PUBLIC_INTLAYER_MODULE_AUGMENTATION_DIR_NAME,
71
- 'string'
72
- )!,
73
- moduleAugmentationDir: getEnvValue(
74
- process.env.NEXT_PUBLIC_INTLAYER_MODULE_AUGMENTATION_DIR,
75
- 'string'
76
- )!,
77
- bundleDirName: getEnvValue(
78
- process.env.NEXT_PUBLIC_INTLAYER_BUNDLE_DIR_NAME,
79
- 'string'
80
- )!,
81
- bundleDir: getEnvValue(
82
- process.env.NEXT_PUBLIC_INTLAYER_BUNDLE_DIR,
83
- 'string'
84
- )!,
85
- bundleFileExtension: getEnvValue(
86
- process.env.NEXT_PUBLIC_INTLAYER_BUNDLE_FILE_EXTENSION,
87
- 'string'
88
- )!,
89
- dictionariesDirName: getEnvValue(
90
- process.env.NEXT_PUBLIC_INTLAYER_DICTIONARIES_DIR_NAME,
91
- 'string'
92
- )!,
93
- dictionariesDir: getEnvValue(
94
- process.env.NEXT_PUBLIC_INTLAYER_DICTIONARIES_DIR,
95
- 'string'
96
- )!,
97
- typeDirName: getEnvValue(
98
- process.env.NEXT_PUBLIC_INTLAYER_TYPES_DIR_NAME,
99
- 'string'
100
- )!,
101
- typesDir: getEnvValue(process.env.NEXT_PUBLIC_INTLAYER_TYPES_DIR, 'string')!,
102
- mainDirName: getEnvValue(
103
- process.env.NEXT_PUBLIC_INTLAYER_MAIN_DIR_NAME,
104
- 'string'
105
- )!,
106
- mainDir: getEnvValue(process.env.NEXT_PUBLIC_INTLAYER_MAIN_DIR, 'string')!,
107
- watchedFilesPattern: getEnvValue<string>(
108
- process.env.NEXT_PUBLIC_INTLAYER_WATCHED_FILES_PATTERN,
109
- 'array'
110
- )!,
111
- watchedFilesPatternWithPath: getEnvValue<string>(
112
- process.env.NEXT_PUBLIC_INTLAYER_WATCHED_FILES_PATTERN_WITH_PATH,
113
- 'array'
114
- )!,
115
- outputFilesPatternWithPath: getEnvValue(
116
- process.env.NEXT_PUBLIC_INTLAYER_OUTPUT_FILES_PATTERN,
117
- 'string'
118
- )!,
119
- };
29
+ const intlayerMiddlewareConfiguration: MiddlewareConfig = {
30
+ headerName: getEnvValue(env.middleware.headerName, 'string')!,
31
+ cookieName: getEnvValue(env.middleware.cookieName, 'string')!,
32
+ prefixDefault: getEnvValue(env.middleware.prefixDefault, 'boolean')!,
33
+ basePath: getEnvValue(env.middleware.basePath, 'string')!,
34
+ serverSetCookie: getEnvValue<ServerSetCookieRule>(
35
+ env.middleware.serverSetCookie,
36
+ 'string'
37
+ )!,
38
+ noPrefix: getEnvValue(env.middleware.noPrefix, 'boolean')!,
39
+ };
120
40
 
121
- export const intlayerConfiguration: IntlayerConfig = {
122
- internationalization: intlayerIntlConfiguration,
123
- middleware: intlayerMiddlewareConfiguration,
124
- content: intlayerContentConfiguration,
125
- };
41
+ const intlayerContentConfiguration: ContentConfig = {
42
+ fileExtensions: getEnvValue<string>(env.content.fileExtensions, 'array')!,
43
+ baseDir: getEnvValue(env.content.baseDir, 'string')!,
44
+ contentDirName: getEnvValue(env.content.contentDirName, 'string')!,
45
+ contentDir: getEnvValue(env.content.contentDir, 'string')!,
46
+ excludedPath: getEnvValue<string>(env.content.excludedPath, 'array')!,
47
+ resultDirName: getEnvValue(env.content.resultDirName, 'string')!,
48
+ resultDir: getEnvValue(env.content.resultDir, 'string')!,
49
+ moduleAugmentationDirName: getEnvValue(
50
+ env.content.moduleAugmentationDirName,
51
+ 'string'
52
+ )!,
53
+ moduleAugmentationDir: getEnvValue(
54
+ env.content.moduleAugmentationDir,
55
+ 'string'
56
+ )!,
57
+ dictionaryOutput: getEnvValue<DictionaryOutput>(
58
+ env.content.dictionaryOutput,
59
+ 'array'
60
+ )!,
61
+ dictionariesDirName: getEnvValue(
62
+ env.content.dictionariesDirName,
63
+ 'string'
64
+ )!,
65
+ dictionariesDir: getEnvValue(env.content.dictionariesDir, 'string')!,
66
+ i18nDictionariesDirName: getEnvValue(
67
+ env.content.i18nDictionariesDirName,
68
+ 'string'
69
+ )!,
70
+ i18nDictionariesDir: getEnvValue(
71
+ env.content.i18nDictionariesDir,
72
+ 'string'
73
+ )!,
74
+ typeDirName: getEnvValue(env.content.typeDirName, 'string')!,
75
+ typesDir: getEnvValue(env.content.typesDir, 'string')!,
76
+ mainDirName: getEnvValue(env.content.mainDirName, 'string')!,
77
+ mainDir: getEnvValue(env.content.mainDir, 'string')!,
78
+ watchedFilesPattern: getEnvValue<string>(
79
+ env.content.watchedFilesPattern,
80
+ 'array'
81
+ )!,
82
+ watchedFilesPatternWithPath: getEnvValue<string>(
83
+ env.content.watchedFilesPatternWithPath,
84
+ 'array'
85
+ )!,
86
+ outputFilesPatternWithPath: getEnvValue(
87
+ env.content.outputFilesPatternWithPath,
88
+ 'string'
89
+ )!,
90
+ };
91
+
92
+ const intlayerConfiguration: IntlayerConfig = {
93
+ internationalization: intlayerIntlConfiguration,
94
+ middleware: intlayerMiddlewareConfiguration,
95
+ content: intlayerContentConfiguration,
96
+ };
126
97
 
127
- export const getConfiguration = (): IntlayerConfig => intlayerConfiguration;
98
+ return intlayerConfiguration;
99
+ };
@@ -1,8 +1,2 @@
1
- export {
2
- intlayerIntlConfiguration,
3
- intlayerMiddlewareConfiguration,
4
- intlayerContentConfiguration,
5
- intlayerConfiguration,
6
- getConfiguration,
7
- } from './getConfiguration';
1
+ export { getConfiguration } from './getConfiguration';
8
2
  export { formatEnvVariable } from './formatEnvVariable';
@@ -1,14 +1,32 @@
1
- function getEnvValue(value: unknown, type: 'boolean'): boolean | undefined;
2
- function getEnvValue(value: unknown, type: 'number'): number | undefined;
1
+ function getEnvValue(
2
+ value: unknown,
3
+ type: 'boolean',
4
+ verbose?: boolean
5
+ ): boolean | undefined;
6
+ function getEnvValue(
7
+ value: unknown,
8
+ type: 'number',
9
+ verbose?: boolean
10
+ ): number | undefined;
3
11
  function getEnvValue<T extends string>(
4
12
  value: unknown,
5
- type: 'string'
13
+ type: 'string',
14
+ verbose?: boolean
6
15
  ): T | undefined;
7
- function getEnvValue<T>(value: unknown, type: 'object'): T | undefined;
8
- function getEnvValue<T>(value: unknown, type: 'array'): T[] | undefined;
16
+ function getEnvValue<T>(
17
+ value: unknown,
18
+ type: 'object',
19
+ verbose?: boolean
20
+ ): T | undefined;
21
+ function getEnvValue<T>(
22
+ value: unknown,
23
+ type: 'array',
24
+ verbose?: boolean
25
+ ): T[] | undefined;
9
26
  function getEnvValue(
10
27
  value: unknown,
11
- type: 'string' | 'boolean' | 'number' | 'object' | 'array'
28
+ type: 'string' | 'boolean' | 'number' | 'object' | 'array',
29
+ verbose = false
12
30
  ) {
13
31
  try {
14
32
  switch (type) {
@@ -27,20 +45,18 @@ function getEnvValue(
27
45
  case 'object':
28
46
  case 'array':
29
47
  // Attempt to parse the value as JSON
30
- try {
31
- return JSON.parse(value as string);
32
- } catch (error) {
33
- // Log error and return undefined if any error occurs during parsing
34
- console.error(`Error parsing environment variable`);
35
- return undefined;
36
- }
48
+ return JSON.parse(value as string);
37
49
 
38
50
  default:
39
51
  return undefined;
40
52
  }
41
53
  } catch (error) {
42
54
  // Log error and return undefined if any error occurs during parsing
43
- console.error(`Error parsing environment variable`);
55
+ if (verbose) {
56
+ console.error(
57
+ `Error parsing environment variable, parsing : ${((value ?? '') as string).toString()}`
58
+ );
59
+ }
44
60
  return undefined;
45
61
  }
46
62
  }
package/src/index.ts CHANGED
@@ -16,9 +16,5 @@ export type { LocalesValues } from './types/locales';
16
16
  export { Locales } from './types/locales';
17
17
  export {
18
18
  formatEnvVariable,
19
- intlayerIntlConfiguration,
20
- intlayerMiddlewareConfiguration,
21
- intlayerContentConfiguration,
22
- intlayerConfiguration,
23
19
  getConfiguration as getClientConfiguration,
24
20
  } from './envVariables/index';