@j2inn/fin5-ui-utils 8.1.1-beta.6 → 8.1.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 (210) 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 -165
  17. package/dist/fin5Top/fin5Top.js +61 -61
  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 -35
  29. package/dist/index.js +69 -69
  30. package/dist/jobs/jobUtils.d.ts +14 -14
  31. package/dist/jobs/jobUtils.js +15 -15
  32. package/dist/react/app/Fin5AppContainer.d.ts +36 -36
  33. package/dist/react/app/Fin5AppContainer.js +145 -145
  34. package/dist/react/app/Fin5AppRootStore.d.ts +40 -40
  35. package/dist/react/app/Fin5AppRootStore.js +90 -90
  36. package/dist/react/components/ErrorBoundary.d.ts +57 -57
  37. package/dist/react/components/ErrorBoundary.js +150 -150
  38. package/dist/react/components/ErrorDisplayer.d.ts +19 -19
  39. package/dist/react/components/ErrorDisplayer.js +36 -36
  40. package/dist/react/components/Loader.d.ts +9 -9
  41. package/dist/react/components/Loader.js +17 -17
  42. package/dist/react/components/LoadingSpinner.d.ts +2 -2
  43. package/dist/react/components/LoadingSpinner.js +27 -27
  44. package/dist/react/components/RecordImage.d.ts +20 -20
  45. package/dist/react/components/RecordImage.js +51 -51
  46. package/dist/react/components/charts/QRCode.d.ts +25 -25
  47. package/dist/react/components/charts/QRCode.js +82 -82
  48. package/dist/react/components/charts/line-bar/Chart.d.ts +166 -166
  49. package/dist/react/components/charts/line-bar/Chart.js +442 -442
  50. package/dist/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  51. package/dist/react/components/charts/line-bar/HGridChart.js +285 -285
  52. package/dist/react/components/charts/pie/PieChart.d.ts +94 -94
  53. package/dist/react/components/charts/pie/PieChart.js +204 -204
  54. package/dist/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  55. package/dist/react/components/charts/pie/SimplePieChart.js +55 -55
  56. package/dist/react/components/graphics/GraphicViewer.d.ts +10 -10
  57. package/dist/react/components/graphics/GraphicViewer.js +29 -29
  58. package/dist/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  59. package/dist/react/components/graphics/GraphicsTabViewer.js +90 -90
  60. package/dist/react/components/makeCustomElement.d.ts +16 -16
  61. package/dist/react/components/makeCustomElement.js +150 -150
  62. package/dist/react/components/navigation/BasicLayout.d.ts +41 -41
  63. package/dist/react/components/navigation/BasicLayout.js +155 -155
  64. package/dist/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  65. package/dist/react/components/navigation/HeaderSiderLayout.js +110 -110
  66. package/dist/react/components/navigation/MenuPage.d.ts +37 -37
  67. package/dist/react/components/navigation/MenuPage.js +36 -36
  68. package/dist/react/components/navigation/MenuTrigger.d.ts +9 -9
  69. package/dist/react/components/navigation/MenuTrigger.js +33 -33
  70. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  71. package/dist/react/components/navigation/ReactRouterHeaderSiderLayout.js +25 -25
  72. package/dist/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  73. package/dist/react/components/navigation/ReactRouterLayout.js +132 -132
  74. package/dist/react/components/navigation/customRouting/Router.d.ts +12 -12
  75. package/dist/react/components/navigation/customRouting/Router.js +45 -45
  76. package/dist/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  77. package/dist/react/components/navigation/customRouting/RouterLayout.js +61 -61
  78. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  79. package/dist/react/components/resolvable/configurationForm/ConfigurationForm.js +95 -95
  80. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  81. package/dist/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +88 -88
  82. package/dist/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  83. package/dist/react/components/resolvable/configurationForm/getSectionDefault.js +99 -99
  84. package/dist/react/hooks/useFin5BinUrl.d.ts +6 -6
  85. package/dist/react/hooks/useFin5BinUrl.js +15 -15
  86. package/dist/react/hooks/useFin5ColorScheme.d.ts +2 -2
  87. package/dist/react/hooks/useFin5ColorScheme.js +56 -56
  88. package/dist/react/hooks/useScreenSize.d.ts +7 -7
  89. package/dist/react/hooks/useScreenSize.js +31 -31
  90. package/dist_es/fantomProps/createFin5Props/index.d.ts +12 -12
  91. package/dist_es/fantomProps/createFin5Props/index.js +140 -140
  92. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.d.ts +2 -2
  93. package/dist_es/fantomProps/createFin5Props/runCreateFin5Props.js +15 -15
  94. package/dist_es/fantomProps/fantomPropsToObject.d.ts +8 -8
  95. package/dist_es/fantomProps/fantomPropsToObject.js +178 -178
  96. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.d.ts +4 -4
  97. package/dist_es/fantomProps/generateJsonFromFantomPropsFile.js +12 -12
  98. package/dist_es/fantomProps/localePropsToJson.d.ts +1 -1
  99. package/dist_es/fantomProps/localePropsToJson.js +21 -21
  100. package/dist_es/fantomProps/readFantomPropsFile.d.ts +5 -5
  101. package/dist_es/fantomProps/readFantomPropsFile.js +39 -39
  102. package/dist_es/fin5Top/fin5FileUpload.d.ts +24 -24
  103. package/dist_es/fin5Top/fin5FileUpload.js +47 -47
  104. package/dist_es/fin5Top/fin5Top.d.ts +165 -165
  105. package/dist_es/fin5Top/fin5Top.js +57 -57
  106. package/dist_es/fin5Top/finEdge2Cloud.d.ts +6 -6
  107. package/dist_es/fin5Top/finEdge2Cloud.js +11 -11
  108. package/dist_es/fin5Top/getFin5BinUrl.d.ts +2 -2
  109. package/dist_es/fin5Top/getFin5BinUrl.js +5 -5
  110. package/dist_es/fin5Top/openFin5Alarm.d.ts +22 -22
  111. package/dist_es/fin5Top/openFin5Alarm.js +19 -19
  112. package/dist_es/fin5Top/openFin5Historian.d.ts +3 -3
  113. package/dist_es/fin5Top/openFin5Historian.js +15 -15
  114. package/dist_es/fin5Top/useFin5AppURLHashParameter.d.ts +18 -18
  115. package/dist_es/fin5Top/useFin5AppURLHashParameter.js +124 -124
  116. package/dist_es/index.d.ts +35 -35
  117. package/dist_es/index.js +53 -53
  118. package/dist_es/jobs/jobUtils.d.ts +14 -14
  119. package/dist_es/jobs/jobUtils.js +9 -9
  120. package/dist_es/react/app/Fin5AppContainer.d.ts +36 -36
  121. package/dist_es/react/app/Fin5AppContainer.js +116 -116
  122. package/dist_es/react/app/Fin5AppRootStore.d.ts +40 -40
  123. package/dist_es/react/app/Fin5AppRootStore.js +86 -86
  124. package/dist_es/react/components/ErrorBoundary.d.ts +57 -57
  125. package/dist_es/react/components/ErrorBoundary.js +123 -123
  126. package/dist_es/react/components/ErrorDisplayer.d.ts +19 -19
  127. package/dist_es/react/components/ErrorDisplayer.js +28 -28
  128. package/dist_es/react/components/Loader.d.ts +9 -9
  129. package/dist_es/react/components/Loader.js +12 -12
  130. package/dist_es/react/components/LoadingSpinner.d.ts +2 -2
  131. package/dist_es/react/components/LoadingSpinner.js +20 -20
  132. package/dist_es/react/components/RecordImage.d.ts +20 -20
  133. package/dist_es/react/components/RecordImage.js +24 -24
  134. package/dist_es/react/components/charts/QRCode.d.ts +25 -25
  135. package/dist_es/react/components/charts/QRCode.js +52 -52
  136. package/dist_es/react/components/charts/line-bar/Chart.d.ts +166 -166
  137. package/dist_es/react/components/charts/line-bar/Chart.js +415 -415
  138. package/dist_es/react/components/charts/line-bar/HGridChart.d.ts +58 -58
  139. package/dist_es/react/components/charts/line-bar/HGridChart.js +250 -250
  140. package/dist_es/react/components/charts/pie/PieChart.d.ts +94 -94
  141. package/dist_es/react/components/charts/pie/PieChart.js +177 -177
  142. package/dist_es/react/components/charts/pie/SimplePieChart.d.ts +21 -21
  143. package/dist_es/react/components/charts/pie/SimplePieChart.js +25 -25
  144. package/dist_es/react/components/graphics/GraphicViewer.d.ts +10 -10
  145. package/dist_es/react/components/graphics/GraphicViewer.js +22 -22
  146. package/dist_es/react/components/graphics/GraphicsTabViewer.d.ts +17 -17
  147. package/dist_es/react/components/graphics/GraphicsTabViewer.js +60 -60
  148. package/dist_es/react/components/makeCustomElement.d.ts +16 -16
  149. package/dist_es/react/components/makeCustomElement.js +142 -142
  150. package/dist_es/react/components/navigation/BasicLayout.d.ts +41 -41
  151. package/dist_es/react/components/navigation/BasicLayout.js +124 -124
  152. package/dist_es/react/components/navigation/HeaderSiderLayout.d.ts +13 -13
  153. package/dist_es/react/components/navigation/HeaderSiderLayout.js +80 -80
  154. package/dist_es/react/components/navigation/MenuPage.d.ts +37 -37
  155. package/dist_es/react/components/navigation/MenuPage.js +30 -30
  156. package/dist_es/react/components/navigation/MenuTrigger.d.ts +9 -9
  157. package/dist_es/react/components/navigation/MenuTrigger.js +28 -28
  158. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.d.ts +11 -11
  159. package/dist_es/react/components/navigation/ReactRouterHeaderSiderLayout.js +18 -18
  160. package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +46 -46
  161. package/dist_es/react/components/navigation/ReactRouterLayout.js +99 -99
  162. package/dist_es/react/components/navigation/customRouting/Router.d.ts +12 -12
  163. package/dist_es/react/components/navigation/customRouting/Router.js +18 -18
  164. package/dist_es/react/components/navigation/customRouting/RouterLayout.d.ts +11 -11
  165. package/dist_es/react/components/navigation/customRouting/RouterLayout.js +34 -34
  166. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.d.ts +27 -27
  167. package/dist_es/react/components/resolvable/configurationForm/ConfigurationForm.js +64 -64
  168. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.d.ts +16 -16
  169. package/dist_es/react/components/resolvable/configurationForm/ConfigurationFormEntry.js +58 -58
  170. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.d.ts +16 -16
  171. package/dist_es/react/components/resolvable/configurationForm/getSectionDefault.js +94 -94
  172. package/dist_es/react/hooks/useFin5BinUrl.d.ts +6 -6
  173. package/dist_es/react/hooks/useFin5BinUrl.js +11 -11
  174. package/dist_es/react/hooks/useFin5ColorScheme.d.ts +2 -2
  175. package/dist_es/react/hooks/useFin5ColorScheme.js +52 -52
  176. package/dist_es/react/hooks/useScreenSize.d.ts +7 -7
  177. package/dist_es/react/hooks/useScreenSize.js +27 -27
  178. package/package.json +1 -1
  179. package/dist_es/react/app/Fin5AppContainer.jsx +0 -82
  180. package/dist_es/react/app/Fin5AppContainer.jsx.map +0 -1
  181. package/dist_es/react/components/ErrorBoundary.jsx +0 -150
  182. package/dist_es/react/components/ErrorBoundary.jsx.map +0 -1
  183. package/dist_es/react/components/ErrorDisplayer.jsx +0 -36
  184. package/dist_es/react/components/ErrorDisplayer.jsx.map +0 -1
  185. package/dist_es/react/components/Loader.jsx +0 -13
  186. package/dist_es/react/components/Loader.jsx.map +0 -1
  187. package/dist_es/react/components/LoadingSpinner.jsx +0 -22
  188. package/dist_es/react/components/LoadingSpinner.jsx.map +0 -1
  189. package/dist_es/react/components/charts/line-bar/ZincGridChart.d.ts +0 -12
  190. package/dist_es/react/components/charts/line-bar/ZincGridChart.js +0 -17
  191. package/dist_es/react/components/charts/line-bar/ZincGridChart.js.map +0 -1
  192. package/dist_es/react/components/graphics/GraphicViewer.jsx +0 -23
  193. package/dist_es/react/components/graphics/GraphicViewer.jsx.map +0 -1
  194. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +0 -63
  195. package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +0 -1
  196. package/dist_es/react/components/navigation/BasicLayout.jsx +0 -133
  197. package/dist_es/react/components/navigation/BasicLayout.jsx.map +0 -1
  198. package/dist_es/react/components/navigation/MenuPage.jsx +0 -31
  199. package/dist_es/react/components/navigation/MenuPage.jsx.map +0 -1
  200. package/dist_es/react/components/navigation/Router.d.ts +0 -12
  201. package/dist_es/react/components/navigation/Router.js +0 -19
  202. package/dist_es/react/components/navigation/Router.js.map +0 -1
  203. package/dist_es/react/components/navigation/Router.jsx +0 -19
  204. package/dist_es/react/components/navigation/Router.jsx.map +0 -1
  205. package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +0 -23
  206. package/dist_es/react/components/navigation/react-router/BasicLayout.js +0 -82
  207. package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +0 -1
  208. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +0 -24
  209. package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +0 -82
  210. 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,21 +1,21 @@
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
- const srcDir = process.argv[2] ? path_1.default.resolve(process.argv[2]) : path_1.default.resolve();
16
- const outDir = process.argv[3]
17
- ? path_1.default.resolve(process.argv[3])
18
- : path_1.default.resolve('fin5/locale');
19
- console.log(`Creating FIN5 property language files from '${srcDir}' to '${outDir}'...`);
20
- (0, _1.default)(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
+ "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
+ const srcDir = process.argv[2] ? path_1.default.resolve(process.argv[2]) : path_1.default.resolve();
16
+ const outDir = process.argv[3]
17
+ ? path_1.default.resolve(process.argv[3])
18
+ : path_1.default.resolve('fin5/locale');
19
+ console.log(`Creating FIN5 property language files from '${srcDir}' to '${outDir}'...`);
20
+ (0, _1.default)(srcDir, outDir).then(() => console.log('Successfully completed property file creation'), (error) => console.error('Failed to create property file', error));
21
21
  //# 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;