@j2inn/fin5-ui-utils 8.1.1-beta.5 → 8.1.1-beta.6

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 (216) hide show
  1. package/README.md +5 -5
  2. package/dist/fantomProps/createFin5Props/index.d.ts +12 -12
  3. package/dist/fantomProps/createFin5Props/index.js +146 -146
  4. package/dist/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  5. package/dist/fantomProps/createFin5Props/runCreateFin5Props.js +20 -20
  6. package/dist/fantomProps/fantomPropsToObject.d.ts +8 -8
  7. package/dist/fantomProps/fantomPropsToObject.js +183 -183
  8. package/dist/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  9. package/dist/fantomProps/generateJsonFromFantomPropsFile.js +41 -41
  10. package/dist/fantomProps/localePropsToJson.d.ts +1 -1
  11. package/dist/fantomProps/localePropsToJson.js +50 -50
  12. package/dist/fantomProps/readFantomPropsFile.d.ts +5 -5
  13. package/dist/fantomProps/readFantomPropsFile.js +65 -65
  14. package/dist/fin5Top/fin5FileUpload.d.ts +24 -24
  15. package/dist/fin5Top/fin5FileUpload.js +51 -51
  16. package/dist/fin5Top/fin5Top.d.ts +165 -124
  17. package/dist/fin5Top/fin5Top.js +61 -53
  18. package/dist/fin5Top/fin5Top.js.map +1 -1
  19. package/dist/fin5Top/finEdge2Cloud.d.ts +6 -6
  20. package/dist/fin5Top/finEdge2Cloud.js +15 -15
  21. package/dist/fin5Top/getFin5BinUrl.d.ts +2 -2
  22. package/dist/fin5Top/getFin5BinUrl.js +9 -9
  23. package/dist/fin5Top/openFin5Alarm.d.ts +22 -22
  24. package/dist/fin5Top/openFin5Alarm.js +23 -23
  25. package/dist/fin5Top/openFin5Historian.d.ts +3 -3
  26. package/dist/fin5Top/openFin5Historian.js +19 -19
  27. package/dist/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  28. package/dist/fin5Top/useFin5AppURLHashParameter.js +133 -133
  29. package/dist/index.d.ts +35 -35
  30. package/dist/index.js +69 -69
  31. package/dist/jobs/jobUtils.d.ts +14 -14
  32. package/dist/jobs/jobUtils.js +15 -15
  33. package/dist/react/app/Fin5AppContainer.d.ts +36 -36
  34. package/dist/react/app/Fin5AppContainer.js +145 -161
  35. package/dist/react/app/Fin5AppContainer.js.map +1 -1
  36. package/dist/react/app/Fin5AppRootStore.d.ts +40 -42
  37. package/dist/react/app/Fin5AppRootStore.js +90 -114
  38. package/dist/react/app/Fin5AppRootStore.js.map +1 -1
  39. package/dist/react/components/ErrorBoundary.d.ts +57 -57
  40. package/dist/react/components/ErrorBoundary.js +150 -150
  41. package/dist/react/components/ErrorDisplayer.d.ts +19 -19
  42. package/dist/react/components/ErrorDisplayer.js +36 -36
  43. package/dist/react/components/Loader.d.ts +9 -9
  44. package/dist/react/components/Loader.js +17 -17
  45. package/dist/react/components/LoadingSpinner.d.ts +2 -2
  46. package/dist/react/components/LoadingSpinner.js +27 -27
  47. package/dist/react/components/RecordImage.d.ts +20 -20
  48. package/dist/react/components/RecordImage.js +51 -51
  49. package/dist/react/components/charts/QRCode.d.ts +25 -25
  50. package/dist/react/components/charts/QRCode.js +82 -82
  51. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
  52. package/dist/react/components/charts/line-bar/Chart.js +442 -442
  53. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  54. package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
  55. package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
  56. package/dist/react/components/charts/pie/PieChart.js +204 -204
  57. package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  58. package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
  59. package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
  60. package/dist/react/components/graphics/GraphicViewer.js +29 -29
  61. package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  62. package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
  63. package/dist/react/components/makeCustomElement.d.ts +16 -16
  64. package/dist/react/components/makeCustomElement.js +150 -150
  65. package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
  66. package/dist/react/components/navigation/BasicLayout.js +155 -155
  67. package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  68. package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
  69. package/dist/react/components/navigation/MenuPage.d.ts +37 -37
  70. package/dist/react/components/navigation/MenuPage.js +36 -36
  71. package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
  72. package/dist/react/components/navigation/MenuTrigger.js +33 -33
  73. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  74. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
  75. package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  76. package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
  77. package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
  78. package/dist/react/components/navigation/customRouting/Router.js +45 -45
  79. package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  80. package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
  81. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  82. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
  83. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  84. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
  85. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  86. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
  87. package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
  88. package/dist/react/hooks/useFin5BinUrl.js +15 -15
  89. package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
  90. package/dist/react/hooks/useFin5ColorScheme.js +56 -56
  91. package/dist/react/hooks/useScreenSize.d.ts +7 -7
  92. package/dist/react/hooks/useScreenSize.js +31 -31
  93. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
  94. package/dist_es/fantomProps/createFin5Props/index.js +140 -140
  95. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  96. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +15 -15
  97. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
  98. package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
  99. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  100. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
  101. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
  102. package/dist_es/fantomProps/localePropsToJson.js +21 -21
  103. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
  104. package/dist_es/fantomProps/readFantomPropsFile.js +39 -39
  105. package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
  106. package/dist_es/fin5Top/fin5FileUpload.js +47 -47
  107. package/dist_es/fin5Top/fin5Top.d.ts +165 -124
  108. package/dist_es/fin5Top/fin5Top.js +57 -49
  109. package/dist_es/fin5Top/fin5Top.js.map +1 -1
  110. package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
  111. package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
  112. package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
  113. package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
  114. package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
  115. package/dist_es/fin5Top/openFin5Alarm.js +19 -19
  116. package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
  117. package/dist_es/fin5Top/openFin5Historian.js +15 -15
  118. package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  119. package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
  120. package/dist_es/index.d.ts +35 -35
  121. package/dist_es/index.js +53 -53
  122. package/dist_es/jobs/jobUtils.d.ts +14 -14
  123. package/dist_es/jobs/jobUtils.js +9 -9
  124. package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
  125. package/dist_es/react/app/Fin5AppContainer.js +116 -132
  126. package/dist_es/react/app/Fin5AppContainer.js.map +1 -1
  127. package/dist_es/react/app/Fin5AppContainer.jsx +82 -0
  128. package/dist_es/react/app/Fin5AppContainer.jsx.map +1 -0
  129. package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -42
  130. package/dist_es/react/app/Fin5AppRootStore.js +86 -110
  131. package/dist_es/react/app/Fin5AppRootStore.js.map +1 -1
  132. package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
  133. package/dist_es/react/components/ErrorBoundary.js +123 -123
  134. package/dist_es/react/components/ErrorBoundary.jsx +150 -0
  135. package/dist_es/react/components/ErrorBoundary.jsx.map +1 -0
  136. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
  137. package/dist_es/react/components/ErrorDisplayer.js +28 -28
  138. package/dist_es/react/components/ErrorDisplayer.jsx +36 -0
  139. package/dist_es/react/components/ErrorDisplayer.jsx.map +1 -0
  140. package/dist_es/react/components/Loader.d.ts +9 -9
  141. package/dist_es/react/components/Loader.js +12 -12
  142. package/dist_es/react/components/Loader.jsx +13 -0
  143. package/dist_es/react/components/Loader.jsx.map +1 -0
  144. package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
  145. package/dist_es/react/components/LoadingSpinner.js +20 -20
  146. package/dist_es/react/components/LoadingSpinner.jsx +22 -0
  147. package/dist_es/react/components/LoadingSpinner.jsx.map +1 -0
  148. package/dist_es/react/components/RecordImage.d.ts +20 -20
  149. package/dist_es/react/components/RecordImage.js +24 -24
  150. package/dist_es/react/components/charts/QRCode.d.ts +25 -25
  151. package/dist_es/react/components/charts/QRCode.js +52 -52
  152. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
  153. package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
  154. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  155. package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
  156. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +12 -0
  157. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +17 -0
  158. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +1 -0
  159. package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
  160. package/dist_es/react/components/charts/pie/PieChart.js +177 -177
  161. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  162. package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
  163. package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
  164. package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
  165. package/dist_es/react/components/graphics/GraphicViewer.jsx +23 -0
  166. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +1 -0
  167. package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  168. package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
  169. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +63 -0
  170. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +1 -0
  171. package/dist_es/react/components/makeCustomElement.d.ts +16 -16
  172. package/dist_es/react/components/makeCustomElement.js +142 -142
  173. package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
  174. package/dist_es/react/components/navigation/BasicLayout.js +124 -124
  175. package/dist_es/react/components/navigation/BasicLayout.jsx +133 -0
  176. package/dist_es/react/components/navigation/BasicLayout.jsx.map +1 -0
  177. package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  178. package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
  179. package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
  180. package/dist_es/react/components/navigation/MenuPage.js +30 -30
  181. package/dist_es/react/components/navigation/MenuPage.jsx +31 -0
  182. package/dist_es/react/components/navigation/MenuPage.jsx.map +1 -0
  183. package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
  184. package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
  185. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  186. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
  187. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  188. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  189. package/dist_es/react/components/navigation/Router.d.ts +12 -0
  190. package/dist_es/react/components/navigation/Router.js +19 -0
  191. package/dist_es/react/components/navigation/Router.js.map +1 -0
  192. package/dist_es/react/components/navigation/Router.jsx +19 -0
  193. package/dist_es/react/components/navigation/Router.jsx.map +1 -0
  194. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  195. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  196. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  197. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  198. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +23 -0
  199. package/dist_es/react/components/navigation/react-router/BasicLayout.js +82 -0
  200. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +1 -0
  201. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +24 -0
  202. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +82 -0
  203. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +1 -0
  204. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  205. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  206. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  207. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  208. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  209. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  210. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  211. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  212. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  213. package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
  214. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  215. package/dist_es/react/hooks/useScreenSize.js +27 -27
  216. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
- /**
2
- * Create the FIN5 language prop files from the locale JSON files.
3
- *
4
- * This function assumes the app directory has a sub-directory named `locale` that contains
5
- * the language files in a JSON format (i.e. `en.json`). It also assumes there's a `lib` directory
6
- * containing the defs for the app. This is used to look up the app name that's used to prefix the
7
- * entries in the properties file.
8
- *
9
- * @param appDir The directory that contains the application.
10
- * @param propsDir The directory the properties file will output too.
11
- */
12
- export default function createFin5Props(appDir: string, propsDir: string): Promise<void>;
1
+ /**
2
+ * Create the FIN5 language prop files from the locale JSON files.
3
+ *
4
+ * This function assumes the app directory has a sub-directory named `locale` that contains
5
+ * the language files in a JSON format (i.e. `en.json`). It also assumes there's a `lib` directory
6
+ * containing the defs for the app. This is used to look up the app name that's used to prefix the
7
+ * entries in the properties file.
8
+ *
9
+ * @param appDir The directory that contains the application.
10
+ * @param propsDir The directory the properties file will output too.
11
+ */
12
+ export default function createFin5Props(appDir: string, propsDir: string): Promise<void>;
@@ -1,141 +1,141 @@
1
- /*
2
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
- */
4
- import fs from 'fs';
5
- import path from 'path';
6
- import yaml from 'js-yaml';
7
- import { promisify } from 'util';
8
- import { makeValue, HNamespace } from 'haystack-core';
9
- const readFile = promisify(fs.readFile);
10
- const writeFile = promisify(fs.writeFile);
11
- const exists = promisify(fs.exists);
12
- const mkdir = promisify(fs.mkdir);
13
- const readdir = promisify(fs.readdir);
14
- const unlink = promisify(fs.unlink);
15
- /**
16
- * The FIN locale path where all the JSON files reside.
17
- */
18
- const LOCALE_PATH = 'locale';
19
- /**
20
- * The application defs YAML file path.
21
- */
22
- const APP_DEF_YAML = 'lib/app.hayson.yaml';
23
- /**
24
- * Return the app name.
25
- *
26
- * @param baseDir The base directory to run from.
27
- * @returns The name of the app.
28
- */
29
- async function getAppName(baseDir) {
30
- const buffer = await readFile(path.join(baseDir, APP_DEF_YAML));
31
- // Find the name of the app to prefix all the keys with.
32
- const appHayson = yaml.loadAll(buffer.toString('utf8'))?.[0];
33
- const value = makeValue(appHayson);
34
- return HNamespace.getFeatureName(value.get('def')?.value ?? '');
35
- }
36
- /**
37
- * Return the language from the file path.
38
- *
39
- * @param path The file path.
40
- * @return The language.
41
- */
42
- function getLanguageFromFile(path) {
43
- return /^([^.]+)/.exec(path)?.[1] ?? '';
44
- }
45
- /**
46
- * Build a tree of nodes.
47
- *
48
- * @param parent The parent to add the nodes too.
49
- * @param obj The object to example.
50
- * @param leads An array of leaf nodes to build up.
51
- */
52
- function buildNode(parent, obj, leafs) {
53
- for (const key of Object.keys(obj)) {
54
- const child = { name: key, parent };
55
- const value = obj[key];
56
- if (typeof value === 'string') {
57
- child.value = value;
58
- leafs.push(child);
59
- }
60
- else {
61
- buildNode(child, value, leafs);
62
- }
63
- }
64
- }
65
- /**
66
- * Create properties from the object.
67
- *
68
- * @param appName The application name.
69
- * @param obj The object.
70
- * @returns The properties.
71
- */
72
- function createProps(appName, obj) {
73
- // Build a tree node of nodes for the JSON object. Record all the leafs.
74
- const leafs = [];
75
- buildNode({ name: appName }, obj, leafs);
76
- let props = '';
77
- // For each leaf, walk all the parents to build up a list of names.
78
- // Reverse the list of names to create the entry.
79
- for (const node of leafs) {
80
- const pathNames = [];
81
- let n = node;
82
- while (n) {
83
- if (n.name) {
84
- pathNames.push(n.name);
85
- }
86
- n = n.parent;
87
- }
88
- if (pathNames.length) {
89
- props += `${pathNames.reverse().join('.')}=${node.value}\n`;
90
- }
91
- }
92
- return props;
93
- }
94
- /**
95
- * Clean the properties directory of any properties files.
96
- *
97
- * @param dir The directory to check.
98
- */
99
- async function cleanPropsDir(dir) {
100
- for (const file of await readdir(dir)) {
101
- if (file.toLowerCase().endsWith('.props')) {
102
- await unlink(path.join(dir, file));
103
- }
104
- }
105
- }
106
- /**
107
- * Create the directory.
108
- *
109
- * @param dir The directory to create.
110
- */
111
- async function createDir(dir) {
112
- if (!(await exists(dir))) {
113
- await mkdir(dir, { recursive: true });
114
- }
115
- }
116
- /**
117
- * Create the FIN5 language prop files from the locale JSON files.
118
- *
119
- * This function assumes the app directory has a sub-directory named `locale` that contains
120
- * the language files in a JSON format (i.e. `en.json`). It also assumes there's a `lib` directory
121
- * containing the defs for the app. This is used to look up the app name that's used to prefix the
122
- * entries in the properties file.
123
- *
124
- * @param appDir The directory that contains the application.
125
- * @param propsDir The directory the properties file will output too.
126
- */
127
- export default async function createFin5Props(appDir, propsDir) {
128
- const appName = await getAppName(appDir);
129
- await createDir(propsDir);
130
- await cleanPropsDir(propsDir);
131
- // For each language file, create a properties file.
132
- for (const file of await readdir(path.join(appDir, LOCALE_PATH))) {
133
- const filePath = path.join(appDir, LOCALE_PATH, file);
134
- const obj = JSON.parse((await readFile(filePath)).toString('utf8'));
135
- const props = createProps(appName, obj);
136
- const language = getLanguageFromFile(file);
137
- const propFilePath = path.join(propsDir, `${language}.props`);
138
- await writeFile(propFilePath, props);
139
- }
140
- }
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import yaml from 'js-yaml';
7
+ import { promisify } from 'util';
8
+ import { makeValue, HNamespace } from 'haystack-core';
9
+ const readFile = promisify(fs.readFile);
10
+ const writeFile = promisify(fs.writeFile);
11
+ const exists = promisify(fs.exists);
12
+ const mkdir = promisify(fs.mkdir);
13
+ const readdir = promisify(fs.readdir);
14
+ const unlink = promisify(fs.unlink);
15
+ /**
16
+ * The FIN locale path where all the JSON files reside.
17
+ */
18
+ const LOCALE_PATH = 'locale';
19
+ /**
20
+ * The application defs YAML file path.
21
+ */
22
+ const APP_DEF_YAML = 'lib/app.hayson.yaml';
23
+ /**
24
+ * Return the app name.
25
+ *
26
+ * @param baseDir The base directory to run from.
27
+ * @returns The name of the app.
28
+ */
29
+ async function getAppName(baseDir) {
30
+ const buffer = await readFile(path.join(baseDir, APP_DEF_YAML));
31
+ // Find the name of the app to prefix all the keys with.
32
+ const appHayson = yaml.loadAll(buffer.toString('utf8'))?.[0];
33
+ const value = makeValue(appHayson);
34
+ return HNamespace.getFeatureName(value.get('def')?.value ?? '');
35
+ }
36
+ /**
37
+ * Return the language from the file path.
38
+ *
39
+ * @param path The file path.
40
+ * @return The language.
41
+ */
42
+ function getLanguageFromFile(path) {
43
+ return /^([^.]+)/.exec(path)?.[1] ?? '';
44
+ }
45
+ /**
46
+ * Build a tree of nodes.
47
+ *
48
+ * @param parent The parent to add the nodes too.
49
+ * @param obj The object to example.
50
+ * @param leads An array of leaf nodes to build up.
51
+ */
52
+ function buildNode(parent, obj, leafs) {
53
+ for (const key of Object.keys(obj)) {
54
+ const child = { name: key, parent };
55
+ const value = obj[key];
56
+ if (typeof value === 'string') {
57
+ child.value = value;
58
+ leafs.push(child);
59
+ }
60
+ else {
61
+ buildNode(child, value, leafs);
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * Create properties from the object.
67
+ *
68
+ * @param appName The application name.
69
+ * @param obj The object.
70
+ * @returns The properties.
71
+ */
72
+ function createProps(appName, obj) {
73
+ // Build a tree node of nodes for the JSON object. Record all the leafs.
74
+ const leafs = [];
75
+ buildNode({ name: appName }, obj, leafs);
76
+ let props = '';
77
+ // For each leaf, walk all the parents to build up a list of names.
78
+ // Reverse the list of names to create the entry.
79
+ for (const node of leafs) {
80
+ const pathNames = [];
81
+ let n = node;
82
+ while (n) {
83
+ if (n.name) {
84
+ pathNames.push(n.name);
85
+ }
86
+ n = n.parent;
87
+ }
88
+ if (pathNames.length) {
89
+ props += `${pathNames.reverse().join('.')}=${node.value}\n`;
90
+ }
91
+ }
92
+ return props;
93
+ }
94
+ /**
95
+ * Clean the properties directory of any properties files.
96
+ *
97
+ * @param dir The directory to check.
98
+ */
99
+ async function cleanPropsDir(dir) {
100
+ for (const file of await readdir(dir)) {
101
+ if (file.toLowerCase().endsWith('.props')) {
102
+ await unlink(path.join(dir, file));
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Create the directory.
108
+ *
109
+ * @param dir The directory to create.
110
+ */
111
+ async function createDir(dir) {
112
+ if (!(await exists(dir))) {
113
+ await mkdir(dir, { recursive: true });
114
+ }
115
+ }
116
+ /**
117
+ * Create the FIN5 language prop files from the locale JSON files.
118
+ *
119
+ * This function assumes the app directory has a sub-directory named `locale` that contains
120
+ * the language files in a JSON format (i.e. `en.json`). It also assumes there's a `lib` directory
121
+ * containing the defs for the app. This is used to look up the app name that's used to prefix the
122
+ * entries in the properties file.
123
+ *
124
+ * @param appDir The directory that contains the application.
125
+ * @param propsDir The directory the properties file will output too.
126
+ */
127
+ export default async function createFin5Props(appDir, propsDir) {
128
+ const appName = await getAppName(appDir);
129
+ await createDir(propsDir);
130
+ await cleanPropsDir(propsDir);
131
+ // For each language file, create a properties file.
132
+ for (const file of await readdir(path.join(appDir, LOCALE_PATH))) {
133
+ const filePath = path.join(appDir, LOCALE_PATH, file);
134
+ const obj = JSON.parse((await readFile(filePath)).toString('utf8'));
135
+ const props = createProps(appName, obj);
136
+ const language = getLanguageFromFile(file);
137
+ const propFilePath = path.join(propsDir, `${language}.props`);
138
+ await writeFile(propFilePath, props);
139
+ }
140
+ }
141
141
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node
2
- export {};
1
+ #!/usr/bin/env node
2
+ export {};
@@ -1,16 +1,16 @@
1
- #!/usr/bin/env node
2
- import createFin5Props from '.';
3
- import path from 'path';
4
- /*
5
- * Copyright (c) 2022, J2 Innovations. All Rights Reserved
6
- */
7
- /**
8
- * Run the creation of the FIN5 properties as a script.
9
- */
10
- const srcDir = process.argv[2] ? path.resolve(process.argv[2]) : path.resolve();
11
- const outDir = process.argv[3]
12
- ? path.resolve(process.argv[3])
13
- : path.resolve('fin5/locale');
14
- console.log(`Creating FIN5 property language files from '${srcDir}' to '${outDir}'...`);
15
- createFin5Props(srcDir, outDir).then(() => console.log('Successfully completed property file creation'), (error) => console.error('Failed to create property file', error));
1
+ #!/usr/bin/env node
2
+ import createFin5Props from '.';
3
+ import path from 'path';
4
+ /*
5
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
6
+ */
7
+ /**
8
+ * Run the creation of the FIN5 properties as a script.
9
+ */
10
+ const srcDir = process.argv[2] ? path.resolve(process.argv[2]) : path.resolve();
11
+ const outDir = process.argv[3]
12
+ ? path.resolve(process.argv[3])
13
+ : path.resolve('fin5/locale');
14
+ console.log(`Creating FIN5 property language files from '${srcDir}' to '${outDir}'...`);
15
+ createFin5Props(srcDir, outDir).then(() => console.log('Successfully completed property file creation'), (error) => console.error('Failed to create property file', error));
16
16
  //# sourceMappingURL=runCreateFin5Props.js.map
@@ -1,8 +1,8 @@
1
- export interface Props {
2
- [key: string]: string;
3
- }
4
- /**
5
- * Convert the given fantom props as string to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
6
- */
7
- export default function fantomPropsToObject(props: string): Props;
8
- export declare function parseFantomProps(readChar: () => number, unreadChar: (char: number) => void): Props;
1
+ export interface Props {
2
+ [key: string]: string;
3
+ }
4
+ /**
5
+ * Convert the given fantom props as string to JS object (@see https://fantom.org/doc/sys/InStream#readProps)
6
+ */
7
+ export default function fantomPropsToObject(props: string): Props;
8
+ export declare function parseFantomProps(readChar: () => number, unreadChar: (char: number) => void): Props;