@gogocat/data-bind 1.12.0 → 2.0.0

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 (271) hide show
  1. package/.editorconfig +14 -14
  2. package/.vscode/launch.json +12 -12
  3. package/CONFIGURATION.md +294 -0
  4. package/REACTIVE_MODE.md +553 -0
  5. package/README.md +266 -829
  6. package/babel.config.json +30 -0
  7. package/dist/js/_escape.d.ts +14 -0
  8. package/dist/js/_escape.d.ts.map +1 -0
  9. package/dist/js/applyBinding.d.ts +11 -0
  10. package/dist/js/applyBinding.d.ts.map +1 -0
  11. package/dist/js/attrBinding.d.ts +12 -0
  12. package/dist/js/attrBinding.d.ts.map +1 -0
  13. package/dist/js/binder.d.ts +67 -0
  14. package/dist/js/binder.d.ts.map +1 -0
  15. package/dist/js/changeBinding.d.ts +19 -0
  16. package/dist/js/changeBinding.d.ts.map +1 -0
  17. package/dist/js/commentWrapper.d.ts +39 -0
  18. package/dist/js/commentWrapper.d.ts.map +1 -0
  19. package/dist/js/config.d.ts +55 -0
  20. package/dist/js/config.d.ts.map +1 -0
  21. package/dist/js/createBindingOption.d.ts +32 -0
  22. package/dist/js/createBindingOption.d.ts.map +1 -0
  23. package/dist/js/createEventBinding.d.ts +10 -0
  24. package/dist/js/createEventBinding.d.ts.map +1 -0
  25. package/dist/js/cssBinding.d.ts +15 -0
  26. package/dist/js/cssBinding.d.ts.map +1 -0
  27. package/dist/js/dataBind.js +2756 -2530
  28. package/dist/js/dataBind.min.js +8 -1
  29. package/dist/js/dataBind.min.js.map +1 -1
  30. package/dist/js/domWalker.d.ts +9 -0
  31. package/dist/js/domWalker.d.ts.map +1 -0
  32. package/dist/js/forOfBinding.d.ts +12 -0
  33. package/dist/js/forOfBinding.d.ts.map +1 -0
  34. package/dist/js/hoverBinding.d.ts +13 -0
  35. package/dist/js/hoverBinding.d.ts.map +1 -0
  36. package/dist/js/ifBinding.d.ts +12 -0
  37. package/dist/js/ifBinding.d.ts.map +1 -0
  38. package/dist/js/index.d.ts +10 -0
  39. package/dist/js/index.d.ts.map +1 -0
  40. package/dist/js/modelBinding.d.ts +12 -0
  41. package/dist/js/modelBinding.d.ts.map +1 -0
  42. package/dist/js/postProcess.d.ts +3 -0
  43. package/dist/js/postProcess.d.ts.map +1 -0
  44. package/dist/js/pubSub.d.ts +11 -0
  45. package/dist/js/pubSub.d.ts.map +1 -0
  46. package/dist/js/reactiveProxy.d.ts +28 -0
  47. package/dist/js/reactiveProxy.d.ts.map +1 -0
  48. package/dist/js/renderForOfBinding.d.ts +8 -0
  49. package/dist/js/renderForOfBinding.d.ts.map +1 -0
  50. package/dist/js/renderIfBinding.d.ts +22 -0
  51. package/dist/js/renderIfBinding.d.ts.map +1 -0
  52. package/dist/js/renderIteration.d.ts +16 -0
  53. package/dist/js/renderIteration.d.ts.map +1 -0
  54. package/dist/js/renderTemplate.d.ts +14 -0
  55. package/dist/js/renderTemplate.d.ts.map +1 -0
  56. package/dist/js/renderTemplatesBinding.d.ts +19 -0
  57. package/dist/js/renderTemplatesBinding.d.ts.map +1 -0
  58. package/dist/js/showBinding.d.ts +13 -0
  59. package/dist/js/showBinding.d.ts.map +1 -0
  60. package/dist/js/switchBinding.d.ts +13 -0
  61. package/dist/js/switchBinding.d.ts.map +1 -0
  62. package/dist/js/textBinding.d.ts +13 -0
  63. package/dist/js/textBinding.d.ts.map +1 -0
  64. package/dist/js/types/_escape.d.ts +14 -0
  65. package/dist/js/types/_escape.d.ts.map +1 -0
  66. package/dist/js/types/applyBinding.d.ts +11 -0
  67. package/dist/js/types/applyBinding.d.ts.map +1 -0
  68. package/dist/js/types/attrBinding.d.ts +12 -0
  69. package/dist/js/types/attrBinding.d.ts.map +1 -0
  70. package/dist/js/types/binder.d.ts +67 -0
  71. package/dist/js/types/binder.d.ts.map +1 -0
  72. package/dist/js/types/changeBinding.d.ts +19 -0
  73. package/dist/js/types/changeBinding.d.ts.map +1 -0
  74. package/dist/js/types/commentWrapper.d.ts +39 -0
  75. package/dist/js/types/commentWrapper.d.ts.map +1 -0
  76. package/dist/js/types/config.d.ts +55 -0
  77. package/dist/js/types/config.d.ts.map +1 -0
  78. package/dist/js/types/createBindingOption.d.ts +32 -0
  79. package/dist/js/types/createBindingOption.d.ts.map +1 -0
  80. package/dist/js/types/createEventBinding.d.ts +10 -0
  81. package/dist/js/types/createEventBinding.d.ts.map +1 -0
  82. package/dist/js/types/cssBinding.d.ts +15 -0
  83. package/dist/js/types/cssBinding.d.ts.map +1 -0
  84. package/dist/js/types/domWalker.d.ts +9 -0
  85. package/dist/js/types/domWalker.d.ts.map +1 -0
  86. package/dist/js/types/forOfBinding.d.ts +12 -0
  87. package/dist/js/types/forOfBinding.d.ts.map +1 -0
  88. package/dist/js/types/hoverBinding.d.ts +13 -0
  89. package/dist/js/types/hoverBinding.d.ts.map +1 -0
  90. package/dist/js/types/ifBinding.d.ts +12 -0
  91. package/dist/js/types/ifBinding.d.ts.map +1 -0
  92. package/dist/js/types/index.d.ts +10 -0
  93. package/dist/js/types/index.d.ts.map +1 -0
  94. package/dist/js/types/modelBinding.d.ts +12 -0
  95. package/dist/js/types/modelBinding.d.ts.map +1 -0
  96. package/dist/js/types/postProcess.d.ts +3 -0
  97. package/dist/js/types/postProcess.d.ts.map +1 -0
  98. package/dist/js/types/pubSub.d.ts +11 -0
  99. package/dist/js/types/pubSub.d.ts.map +1 -0
  100. package/dist/js/types/reactiveProxy.d.ts +28 -0
  101. package/dist/js/types/reactiveProxy.d.ts.map +1 -0
  102. package/dist/js/types/renderForOfBinding.d.ts +8 -0
  103. package/dist/js/types/renderForOfBinding.d.ts.map +1 -0
  104. package/dist/js/types/renderIfBinding.d.ts +22 -0
  105. package/dist/js/types/renderIfBinding.d.ts.map +1 -0
  106. package/dist/js/types/renderIteration.d.ts +16 -0
  107. package/dist/js/types/renderIteration.d.ts.map +1 -0
  108. package/dist/js/types/renderTemplate.d.ts +14 -0
  109. package/dist/js/types/renderTemplate.d.ts.map +1 -0
  110. package/dist/js/types/renderTemplatesBinding.d.ts +19 -0
  111. package/dist/js/types/renderTemplatesBinding.d.ts.map +1 -0
  112. package/dist/js/types/showBinding.d.ts +13 -0
  113. package/dist/js/types/showBinding.d.ts.map +1 -0
  114. package/dist/js/types/switchBinding.d.ts +13 -0
  115. package/dist/js/types/switchBinding.d.ts.map +1 -0
  116. package/dist/js/types/textBinding.d.ts +13 -0
  117. package/dist/js/types/textBinding.d.ts.map +1 -0
  118. package/dist/js/types/types.d.ts +111 -0
  119. package/dist/js/types/types.d.ts.map +1 -0
  120. package/dist/js/types/util.d.ts +119 -0
  121. package/dist/js/types/util.d.ts.map +1 -0
  122. package/dist/js/types.d.ts +111 -0
  123. package/dist/js/types.d.ts.map +1 -0
  124. package/dist/js/util.d.ts +119 -0
  125. package/dist/js/util.d.ts.map +1 -0
  126. package/eslint.config.js +124 -0
  127. package/examples/DBMONSTER_COMPARISON.md +123 -0
  128. package/examples/afterRenderDemo.html +119 -0
  129. package/examples/bootstrap/css/animate.css +1579 -1579
  130. package/examples/bootstrap/css/bootstrap.min.css +6 -6
  131. package/examples/bootstrap/css/homeservices.css +378 -390
  132. package/examples/bootstrap/css/open-iconic.css +511 -511
  133. package/examples/bootstrap/fonts/open-iconic.svg +543 -543
  134. package/examples/bootstrap/js/compMessageDialog.js +20 -19
  135. package/examples/bootstrap/js/compSearchBar.js +12 -19
  136. package/examples/bootstrap/js/compSearchResults.js +50 -46
  137. package/examples/bootstrap/js/featureAdsResult.json +65 -65
  138. package/examples/bootstrap/js/searchResult.json +57 -57
  139. package/examples/bootstrap.html +343 -332
  140. package/examples/css/baseTodo.css +141 -141
  141. package/examples/css/dbMonsterStyles.css +27 -27
  142. package/examples/css/indexTodo.css +374 -374
  143. package/examples/dbmonsterForOfReactive.html +40 -0
  144. package/examples/dbmonsterReact.html +19 -0
  145. package/examples/forOfBindingSimpleDebug.html +45 -0
  146. package/examples/globalConfig.html +131 -0
  147. package/examples/js/afterRenderDemo.js +190 -0
  148. package/examples/js/appTodo.js +46 -46
  149. package/examples/js/attrBindingDemo.js +2 -2
  150. package/examples/js/dbMonApp.js +24 -26
  151. package/examples/js/dbMonAppReact.jsx +79 -0
  152. package/examples/js/dbMonAppReactive.js +28 -0
  153. package/examples/js/fiberDemo.js +4 -4
  154. package/examples/js/filtersDemo.js +8 -8
  155. package/examples/js/forOfDemo.js +7 -9
  156. package/examples/js/forOfDemoComplex.js +44 -17
  157. package/examples/js/form.js +14 -14
  158. package/examples/js/globalConfig.js +117 -0
  159. package/examples/js/ifBindingDemo.js +16 -16
  160. package/examples/js/reactiveDemo.js +119 -0
  161. package/examples/js/switchBindingDemo.js +8 -8
  162. package/examples/react-dbmonster/dist/bundle.js +43 -0
  163. package/examples/react-dbmonster/package-lock.json +537 -0
  164. package/examples/react-dbmonster/package.json +16 -0
  165. package/examples/react-dbmonster/src/index.jsx +80 -0
  166. package/examples/reactiveDemo.html +127 -0
  167. package/examples/refreshRateTest.html +75 -75
  168. package/index.html +841 -0
  169. package/package.json +31 -34
  170. package/rollup.config.js +79 -36
  171. package/src/{_escape.js → _escape.ts} +19 -17
  172. package/src/{applyBinding.js → applyBinding.ts} +27 -18
  173. package/src/{attrBinding.js → attrBinding.ts} +14 -13
  174. package/src/{binder.js → binder.ts} +289 -181
  175. package/src/changeBinding.ts +93 -0
  176. package/src/{commentWrapper.js → commentWrapper.ts} +33 -30
  177. package/src/config.ts +107 -0
  178. package/src/{createBindingOption.js → createBindingOption.ts} +39 -15
  179. package/src/createEventBinding.ts +88 -0
  180. package/src/{cssBinding.js → cssBinding.ts} +13 -11
  181. package/src/{domWalker.js → domWalker.ts} +44 -30
  182. package/src/{forOfBinding.js → forOfBinding.ts} +4 -3
  183. package/src/hoverBinding.ts +84 -0
  184. package/src/{ifBinding.js → ifBinding.ts} +14 -12
  185. package/src/index.ts +53 -0
  186. package/src/{modelBinding.js → modelBinding.ts} +11 -9
  187. package/src/{postProcess.js → postProcess.ts} +6 -4
  188. package/src/{pubSub.js → pubSub.ts} +24 -21
  189. package/src/reactiveProxy.ts +285 -0
  190. package/src/{renderForOfBinding.js → renderForOfBinding.ts} +54 -32
  191. package/src/{renderIfBinding.js → renderIfBinding.ts} +41 -19
  192. package/src/{renderIteration.js → renderIteration.ts} +24 -8
  193. package/src/renderTemplate.ts +165 -0
  194. package/src/renderTemplatesBinding.ts +73 -0
  195. package/src/{showBinding.js → showBinding.ts} +4 -3
  196. package/src/{switchBinding.js → switchBinding.ts} +18 -15
  197. package/src/{textBinding.js → textBinding.ts} +5 -4
  198. package/src/types.ts +124 -0
  199. package/src/util.ts +810 -0
  200. package/test/css/reporter.css +9 -9
  201. package/test/globals.d.ts +19 -0
  202. package/test/helpers/testHelper.js +46 -11
  203. package/test/mocks/featureAdsResult.json +65 -65
  204. package/test/mocks/searchResult.json +57 -57
  205. package/test/specs/{attrBinding.spec.js → attrBinding.spec.ts} +103 -106
  206. package/test/specs/{binder.spec.js → binder.spec.ts} +29 -27
  207. package/test/specs/blurBinding.spec.ts +60 -0
  208. package/test/specs/chainableUse.spec.ts +125 -0
  209. package/test/specs/clickBinding.spec.ts +194 -0
  210. package/test/specs/{cssBinding.spec.js → cssBinding.spec.ts} +72 -79
  211. package/test/specs/{dataBindBootstrap.spec.js → dataBindBootstrap.spec.ts} +332 -313
  212. package/test/specs/{filter.spec.js → filter.spec.ts} +75 -76
  213. package/test/specs/{forOfBinding.spec.js → forOfBinding.spec.ts} +208 -219
  214. package/test/specs/formBinding.spec.ts +272 -0
  215. package/test/specs/ifBinding.spec.ts +165 -0
  216. package/test/specs/{nestedComponent.spec.js → nestedComponent.spec.ts} +88 -88
  217. package/test/specs/reactiveProxy.spec.ts +465 -0
  218. package/test/specs/{showBinding.spec.js → showBinding.spec.ts} +148 -149
  219. package/test/specs/{switchBinding.spec.js → switchBinding.spec.ts} +172 -173
  220. package/test/specs/templateBinding.spec.ts +273 -0
  221. package/test/specs/{textBinding.spec.js → textBinding.spec.ts} +47 -48
  222. package/test/tsconfig.json +31 -0
  223. package/test-output.txt +200 -0
  224. package/test-reactive.html +224 -0
  225. package/tsconfig.json +28 -0
  226. package/vendors/lodash.custom.js +4577 -4577
  227. package/vendors/lodash.custom.min.js +45 -45
  228. package/vitest.config.js +27 -0
  229. package/.eslintrc.js +0 -1
  230. package/.grunt/grunt-contrib-jasmine/boot.js +0 -161
  231. package/.grunt/grunt-contrib-jasmine/dist/js/dataBind.js +0 -9
  232. package/.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js +0 -23
  233. package/.grunt/grunt-contrib-jasmine/jasmine-html.js +0 -853
  234. package/.grunt/grunt-contrib-jasmine/jasmine.css +0 -271
  235. package/.grunt/grunt-contrib-jasmine/jasmine.js +0 -9761
  236. package/.grunt/grunt-contrib-jasmine/jasmine_favicon.png +0 -0
  237. package/.grunt/grunt-contrib-jasmine/json2.js +0 -489
  238. package/.grunt/grunt-contrib-jasmine/reporter.js +0 -107
  239. package/coverage/coverage.json +0 -1
  240. package/coverage/lcov/lcov-report/base.css +0 -213
  241. package/coverage/lcov/lcov-report/index.html +0 -93
  242. package/coverage/lcov/lcov-report/js/dataBind.js.html +0 -6596
  243. package/coverage/lcov/lcov-report/js/index.html +0 -93
  244. package/coverage/lcov/lcov-report/prettify.css +0 -1
  245. package/coverage/lcov/lcov-report/prettify.js +0 -1
  246. package/coverage/lcov/lcov-report/sort-arrow-sprite.png +0 -0
  247. package/coverage/lcov/lcov-report/sorter.js +0 -158
  248. package/coverage/lcov/lcov.info +0 -1991
  249. package/eslintrc.json +0 -40
  250. package/examples/bootstrap/js/bootstrap.min.js +0 -6
  251. package/examples/bootstrap/js/popper.min.js +0 -5
  252. package/examples/bootstrap/js/searchSuggestion.js +0 -58
  253. package/examples/bootstrap/js/typeahead.jquery.js +0 -1538
  254. package/gruntfile.js +0 -92
  255. package/gulpfile.js +0 -32
  256. package/src/applyBindingExport.js +0 -5
  257. package/src/changeBinding.js +0 -63
  258. package/src/config.js +0 -66
  259. package/src/createEventBinding.js +0 -46
  260. package/src/eventSystem.js +0 -46
  261. package/src/hoverBinding.js +0 -57
  262. package/src/index.js +0 -26
  263. package/src/renderTemplate.js +0 -128
  264. package/src/renderTemplatesBinding.js +0 -44
  265. package/src/util.js +0 -648
  266. package/test/specs/blurBinding.spec.js +0 -57
  267. package/test/specs/formBinding.spec.js +0 -316
  268. package/test/specs/ifBinding.spec.js +0 -169
  269. package/test/specs/templateBinding.spec.js +0 -117
  270. package/vendors/jasmine-jquery.js +0 -841
  271. package/vendors/jquery-3.2.1.min.js +0 -4
@@ -0,0 +1,537 @@
1
+ {
2
+ "name": "react-dbmonster",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "react-dbmonster",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "react": "^18.2.0",
12
+ "react-dom": "^18.2.0"
13
+ },
14
+ "devDependencies": {
15
+ "esbuild": "^0.25.0"
16
+ }
17
+ },
18
+ "node_modules/@esbuild/aix-ppc64": {
19
+ "version": "0.25.0",
20
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
21
+ "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
22
+ "cpu": [
23
+ "ppc64"
24
+ ],
25
+ "dev": true,
26
+ "license": "MIT",
27
+ "optional": true,
28
+ "os": [
29
+ "aix"
30
+ ],
31
+ "engines": {
32
+ "node": ">=18"
33
+ }
34
+ },
35
+ "node_modules/@esbuild/android-arm": {
36
+ "version": "0.25.0",
37
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
38
+ "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
39
+ "cpu": [
40
+ "arm"
41
+ ],
42
+ "dev": true,
43
+ "license": "MIT",
44
+ "optional": true,
45
+ "os": [
46
+ "android"
47
+ ],
48
+ "engines": {
49
+ "node": ">=18"
50
+ }
51
+ },
52
+ "node_modules/@esbuild/android-arm64": {
53
+ "version": "0.25.0",
54
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
55
+ "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
56
+ "cpu": [
57
+ "arm64"
58
+ ],
59
+ "dev": true,
60
+ "license": "MIT",
61
+ "optional": true,
62
+ "os": [
63
+ "android"
64
+ ],
65
+ "engines": {
66
+ "node": ">=18"
67
+ }
68
+ },
69
+ "node_modules/@esbuild/android-x64": {
70
+ "version": "0.25.0",
71
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
72
+ "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
73
+ "cpu": [
74
+ "x64"
75
+ ],
76
+ "dev": true,
77
+ "license": "MIT",
78
+ "optional": true,
79
+ "os": [
80
+ "android"
81
+ ],
82
+ "engines": {
83
+ "node": ">=18"
84
+ }
85
+ },
86
+ "node_modules/@esbuild/darwin-arm64": {
87
+ "version": "0.25.0",
88
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
89
+ "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
90
+ "cpu": [
91
+ "arm64"
92
+ ],
93
+ "dev": true,
94
+ "license": "MIT",
95
+ "optional": true,
96
+ "os": [
97
+ "darwin"
98
+ ],
99
+ "engines": {
100
+ "node": ">=18"
101
+ }
102
+ },
103
+ "node_modules/@esbuild/darwin-x64": {
104
+ "version": "0.25.0",
105
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
106
+ "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
107
+ "cpu": [
108
+ "x64"
109
+ ],
110
+ "dev": true,
111
+ "license": "MIT",
112
+ "optional": true,
113
+ "os": [
114
+ "darwin"
115
+ ],
116
+ "engines": {
117
+ "node": ">=18"
118
+ }
119
+ },
120
+ "node_modules/@esbuild/freebsd-arm64": {
121
+ "version": "0.25.0",
122
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
123
+ "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
124
+ "cpu": [
125
+ "arm64"
126
+ ],
127
+ "dev": true,
128
+ "license": "MIT",
129
+ "optional": true,
130
+ "os": [
131
+ "freebsd"
132
+ ],
133
+ "engines": {
134
+ "node": ">=18"
135
+ }
136
+ },
137
+ "node_modules/@esbuild/freebsd-x64": {
138
+ "version": "0.25.0",
139
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
140
+ "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
141
+ "cpu": [
142
+ "x64"
143
+ ],
144
+ "dev": true,
145
+ "license": "MIT",
146
+ "optional": true,
147
+ "os": [
148
+ "freebsd"
149
+ ],
150
+ "engines": {
151
+ "node": ">=18"
152
+ }
153
+ },
154
+ "node_modules/@esbuild/linux-arm": {
155
+ "version": "0.25.0",
156
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
157
+ "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
158
+ "cpu": [
159
+ "arm"
160
+ ],
161
+ "dev": true,
162
+ "license": "MIT",
163
+ "optional": true,
164
+ "os": [
165
+ "linux"
166
+ ],
167
+ "engines": {
168
+ "node": ">=18"
169
+ }
170
+ },
171
+ "node_modules/@esbuild/linux-arm64": {
172
+ "version": "0.25.0",
173
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
174
+ "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
175
+ "cpu": [
176
+ "arm64"
177
+ ],
178
+ "dev": true,
179
+ "license": "MIT",
180
+ "optional": true,
181
+ "os": [
182
+ "linux"
183
+ ],
184
+ "engines": {
185
+ "node": ">=18"
186
+ }
187
+ },
188
+ "node_modules/@esbuild/linux-ia32": {
189
+ "version": "0.25.0",
190
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
191
+ "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
192
+ "cpu": [
193
+ "ia32"
194
+ ],
195
+ "dev": true,
196
+ "license": "MIT",
197
+ "optional": true,
198
+ "os": [
199
+ "linux"
200
+ ],
201
+ "engines": {
202
+ "node": ">=18"
203
+ }
204
+ },
205
+ "node_modules/@esbuild/linux-loong64": {
206
+ "version": "0.25.0",
207
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
208
+ "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
209
+ "cpu": [
210
+ "loong64"
211
+ ],
212
+ "dev": true,
213
+ "license": "MIT",
214
+ "optional": true,
215
+ "os": [
216
+ "linux"
217
+ ],
218
+ "engines": {
219
+ "node": ">=18"
220
+ }
221
+ },
222
+ "node_modules/@esbuild/linux-mips64el": {
223
+ "version": "0.25.0",
224
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
225
+ "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
226
+ "cpu": [
227
+ "mips64el"
228
+ ],
229
+ "dev": true,
230
+ "license": "MIT",
231
+ "optional": true,
232
+ "os": [
233
+ "linux"
234
+ ],
235
+ "engines": {
236
+ "node": ">=18"
237
+ }
238
+ },
239
+ "node_modules/@esbuild/linux-ppc64": {
240
+ "version": "0.25.0",
241
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
242
+ "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
243
+ "cpu": [
244
+ "ppc64"
245
+ ],
246
+ "dev": true,
247
+ "license": "MIT",
248
+ "optional": true,
249
+ "os": [
250
+ "linux"
251
+ ],
252
+ "engines": {
253
+ "node": ">=18"
254
+ }
255
+ },
256
+ "node_modules/@esbuild/linux-riscv64": {
257
+ "version": "0.25.0",
258
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
259
+ "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
260
+ "cpu": [
261
+ "riscv64"
262
+ ],
263
+ "dev": true,
264
+ "license": "MIT",
265
+ "optional": true,
266
+ "os": [
267
+ "linux"
268
+ ],
269
+ "engines": {
270
+ "node": ">=18"
271
+ }
272
+ },
273
+ "node_modules/@esbuild/linux-s390x": {
274
+ "version": "0.25.0",
275
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
276
+ "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
277
+ "cpu": [
278
+ "s390x"
279
+ ],
280
+ "dev": true,
281
+ "license": "MIT",
282
+ "optional": true,
283
+ "os": [
284
+ "linux"
285
+ ],
286
+ "engines": {
287
+ "node": ">=18"
288
+ }
289
+ },
290
+ "node_modules/@esbuild/linux-x64": {
291
+ "version": "0.25.0",
292
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
293
+ "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
294
+ "cpu": [
295
+ "x64"
296
+ ],
297
+ "dev": true,
298
+ "license": "MIT",
299
+ "optional": true,
300
+ "os": [
301
+ "linux"
302
+ ],
303
+ "engines": {
304
+ "node": ">=18"
305
+ }
306
+ },
307
+ "node_modules/@esbuild/netbsd-arm64": {
308
+ "version": "0.25.0",
309
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
310
+ "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
311
+ "cpu": [
312
+ "arm64"
313
+ ],
314
+ "dev": true,
315
+ "license": "MIT",
316
+ "optional": true,
317
+ "os": [
318
+ "netbsd"
319
+ ],
320
+ "engines": {
321
+ "node": ">=18"
322
+ }
323
+ },
324
+ "node_modules/@esbuild/netbsd-x64": {
325
+ "version": "0.25.0",
326
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
327
+ "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
328
+ "cpu": [
329
+ "x64"
330
+ ],
331
+ "dev": true,
332
+ "license": "MIT",
333
+ "optional": true,
334
+ "os": [
335
+ "netbsd"
336
+ ],
337
+ "engines": {
338
+ "node": ">=18"
339
+ }
340
+ },
341
+ "node_modules/@esbuild/openbsd-arm64": {
342
+ "version": "0.25.0",
343
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
344
+ "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
345
+ "cpu": [
346
+ "arm64"
347
+ ],
348
+ "dev": true,
349
+ "license": "MIT",
350
+ "optional": true,
351
+ "os": [
352
+ "openbsd"
353
+ ],
354
+ "engines": {
355
+ "node": ">=18"
356
+ }
357
+ },
358
+ "node_modules/@esbuild/openbsd-x64": {
359
+ "version": "0.25.0",
360
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
361
+ "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
362
+ "cpu": [
363
+ "x64"
364
+ ],
365
+ "dev": true,
366
+ "license": "MIT",
367
+ "optional": true,
368
+ "os": [
369
+ "openbsd"
370
+ ],
371
+ "engines": {
372
+ "node": ">=18"
373
+ }
374
+ },
375
+ "node_modules/@esbuild/sunos-x64": {
376
+ "version": "0.25.0",
377
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
378
+ "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
379
+ "cpu": [
380
+ "x64"
381
+ ],
382
+ "dev": true,
383
+ "license": "MIT",
384
+ "optional": true,
385
+ "os": [
386
+ "sunos"
387
+ ],
388
+ "engines": {
389
+ "node": ">=18"
390
+ }
391
+ },
392
+ "node_modules/@esbuild/win32-arm64": {
393
+ "version": "0.25.0",
394
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
395
+ "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
396
+ "cpu": [
397
+ "arm64"
398
+ ],
399
+ "dev": true,
400
+ "license": "MIT",
401
+ "optional": true,
402
+ "os": [
403
+ "win32"
404
+ ],
405
+ "engines": {
406
+ "node": ">=18"
407
+ }
408
+ },
409
+ "node_modules/@esbuild/win32-ia32": {
410
+ "version": "0.25.0",
411
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
412
+ "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
413
+ "cpu": [
414
+ "ia32"
415
+ ],
416
+ "dev": true,
417
+ "license": "MIT",
418
+ "optional": true,
419
+ "os": [
420
+ "win32"
421
+ ],
422
+ "engines": {
423
+ "node": ">=18"
424
+ }
425
+ },
426
+ "node_modules/@esbuild/win32-x64": {
427
+ "version": "0.25.0",
428
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
429
+ "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
430
+ "cpu": [
431
+ "x64"
432
+ ],
433
+ "dev": true,
434
+ "license": "MIT",
435
+ "optional": true,
436
+ "os": [
437
+ "win32"
438
+ ],
439
+ "engines": {
440
+ "node": ">=18"
441
+ }
442
+ },
443
+ "node_modules/esbuild": {
444
+ "version": "0.25.0",
445
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
446
+ "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
447
+ "dev": true,
448
+ "hasInstallScript": true,
449
+ "license": "MIT",
450
+ "bin": {
451
+ "esbuild": "bin/esbuild"
452
+ },
453
+ "engines": {
454
+ "node": ">=18"
455
+ },
456
+ "optionalDependencies": {
457
+ "@esbuild/aix-ppc64": "0.25.0",
458
+ "@esbuild/android-arm": "0.25.0",
459
+ "@esbuild/android-arm64": "0.25.0",
460
+ "@esbuild/android-x64": "0.25.0",
461
+ "@esbuild/darwin-arm64": "0.25.0",
462
+ "@esbuild/darwin-x64": "0.25.0",
463
+ "@esbuild/freebsd-arm64": "0.25.0",
464
+ "@esbuild/freebsd-x64": "0.25.0",
465
+ "@esbuild/linux-arm": "0.25.0",
466
+ "@esbuild/linux-arm64": "0.25.0",
467
+ "@esbuild/linux-ia32": "0.25.0",
468
+ "@esbuild/linux-loong64": "0.25.0",
469
+ "@esbuild/linux-mips64el": "0.25.0",
470
+ "@esbuild/linux-ppc64": "0.25.0",
471
+ "@esbuild/linux-riscv64": "0.25.0",
472
+ "@esbuild/linux-s390x": "0.25.0",
473
+ "@esbuild/linux-x64": "0.25.0",
474
+ "@esbuild/netbsd-arm64": "0.25.0",
475
+ "@esbuild/netbsd-x64": "0.25.0",
476
+ "@esbuild/openbsd-arm64": "0.25.0",
477
+ "@esbuild/openbsd-x64": "0.25.0",
478
+ "@esbuild/sunos-x64": "0.25.0",
479
+ "@esbuild/win32-arm64": "0.25.0",
480
+ "@esbuild/win32-ia32": "0.25.0",
481
+ "@esbuild/win32-x64": "0.25.0"
482
+ }
483
+ },
484
+ "node_modules/js-tokens": {
485
+ "version": "4.0.0",
486
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
487
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
488
+ "license": "MIT"
489
+ },
490
+ "node_modules/loose-envify": {
491
+ "version": "1.4.0",
492
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
493
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
494
+ "license": "MIT",
495
+ "dependencies": {
496
+ "js-tokens": "^3.0.0 || ^4.0.0"
497
+ },
498
+ "bin": {
499
+ "loose-envify": "cli.js"
500
+ }
501
+ },
502
+ "node_modules/react": {
503
+ "version": "18.3.1",
504
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
505
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
506
+ "license": "MIT",
507
+ "dependencies": {
508
+ "loose-envify": "^1.1.0"
509
+ },
510
+ "engines": {
511
+ "node": ">=0.10.0"
512
+ }
513
+ },
514
+ "node_modules/react-dom": {
515
+ "version": "18.3.1",
516
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
517
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
518
+ "license": "MIT",
519
+ "dependencies": {
520
+ "loose-envify": "^1.1.0",
521
+ "scheduler": "^0.23.2"
522
+ },
523
+ "peerDependencies": {
524
+ "react": "^18.3.1"
525
+ }
526
+ },
527
+ "node_modules/scheduler": {
528
+ "version": "0.23.2",
529
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
530
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
531
+ "license": "MIT",
532
+ "dependencies": {
533
+ "loose-envify": "^1.1.0"
534
+ }
535
+ }
536
+ }
537
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "react-dbmonster",
3
+ "version": "1.0.0",
4
+ "description": "React DBMonster benchmark",
5
+ "private": true,
6
+ "scripts": {
7
+ "build": "esbuild src/index.jsx --bundle --outfile=dist/bundle.js --minify --loader:.jsx=jsx"
8
+ },
9
+ "dependencies": {
10
+ "react": "^18.2.0",
11
+ "react-dom": "^18.2.0"
12
+ },
13
+ "devDependencies": {
14
+ "esbuild": "^0.25.0"
15
+ }
16
+ }
@@ -0,0 +1,80 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+
4
+ // Query component
5
+ function Query({ query }) {
6
+ return (
7
+ <td className={query.elapsedClassName}>
8
+ <span>{query.formatElapsed}</span>
9
+ <div className="popover left">
10
+ <div className="popover-content">{query.query}</div>
11
+ <div className="arrow"></div>
12
+ </div>
13
+ </td>
14
+ );
15
+ }
16
+
17
+ // Database row component
18
+ function Database({ database }) {
19
+ return (
20
+ <tr>
21
+ <td className="dbname">{database.dbname}</td>
22
+ <td className="query-count">
23
+ <span className={database.lastSample.countClassName}>
24
+ {database.lastSample.nbQueries}
25
+ </span>
26
+ </td>
27
+ {database.lastSample.topFiveQueries.map((query, index) => (
28
+ <Query key={index} query={query} />
29
+ ))}
30
+ </tr>
31
+ );
32
+ }
33
+
34
+ // Main app component
35
+ function App() {
36
+ const [databases, setDatabases] = useState([]);
37
+ const performanceEnv = useRef(window.ENV);
38
+ const performanceMonitoring = useRef(window.Monitoring);
39
+ const timeoutId = useRef(null);
40
+
41
+ const refreshApp = () => {
42
+ const newData = performanceEnv.current.generateData().toArray();
43
+ setDatabases(newData);
44
+
45
+ performanceMonitoring.current.renderRate.ping();
46
+ timeoutId.current = setTimeout(refreshApp, performanceEnv.current.timeout);
47
+ };
48
+
49
+ useEffect(() => {
50
+ // Initial render
51
+ const initialData = performanceEnv.current.generateData().toArray();
52
+ setDatabases(initialData);
53
+
54
+ console.log('dbMonApp (React) initialized');
55
+
56
+ // Start the refresh loop
57
+ timeoutId.current = setTimeout(refreshApp, performanceEnv.current.timeout);
58
+
59
+ // Cleanup on unmount
60
+ return () => {
61
+ if (timeoutId.current) {
62
+ clearTimeout(timeoutId.current);
63
+ }
64
+ };
65
+ }, []);
66
+
67
+ return (
68
+ <table className="table table-striped latest-data">
69
+ <tbody>
70
+ {databases.map((database, index) => (
71
+ <Database key={index} database={database} />
72
+ ))}
73
+ </tbody>
74
+ </table>
75
+ );
76
+ }
77
+
78
+ // Render the app
79
+ const root = createRoot(document.getElementById('app'));
80
+ root.render(<App />);