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