miqro 5.0.5 → 6.0.3

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 (353) hide show
  1. package/.eslintrc +15 -0
  2. package/README.md +618 -20
  3. package/build/editor.bundle.js +61154 -0
  4. package/build/esm/editor/auth.d.ts +6 -0
  5. package/build/esm/editor/auth.js +42 -0
  6. package/build/esm/editor/auth.js.map +1 -0
  7. package/build/esm/editor/common/admin-interface.d.ts +36 -0
  8. package/build/esm/editor/common/admin-interface.js +45 -0
  9. package/build/esm/editor/common/admin-interface.js.map +1 -0
  10. package/build/esm/editor/common/constants.d.ts +4 -0
  11. package/build/esm/editor/common/constants.js +21 -0
  12. package/build/esm/editor/common/constants.js.map +1 -0
  13. package/build/esm/editor/common/constants.server.d.ts +2 -0
  14. package/build/esm/editor/common/constants.server.js +5 -0
  15. package/build/esm/editor/common/constants.server.js.map +1 -0
  16. package/build/esm/editor/common/editor-index.d.ts +2 -0
  17. package/build/esm/editor/common/editor-index.js +15 -0
  18. package/build/esm/editor/common/editor-index.js.map +1 -0
  19. package/build/esm/editor/common/html-encode.d.ts +1 -0
  20. package/build/esm/editor/common/html-encode.js +15 -0
  21. package/build/esm/editor/common/html-encode.js.map +1 -0
  22. package/build/esm/editor/common/log-socket.d.ts +13 -0
  23. package/build/esm/editor/common/log-socket.js +68 -0
  24. package/build/esm/editor/common/log-socket.js.map +1 -0
  25. package/build/esm/editor/common/templates.d.ts +11 -0
  26. package/build/esm/editor/common/templates.js +444 -0
  27. package/build/esm/editor/common/templates.js.map +1 -0
  28. package/build/esm/editor/components/api-preview.d.ts +11 -0
  29. package/build/esm/editor/components/api-preview.js +91 -0
  30. package/build/esm/editor/components/api-preview.js.map +1 -0
  31. package/build/esm/editor/components/editor.d.ts +16 -0
  32. package/build/esm/editor/components/editor.js +355 -0
  33. package/build/esm/editor/components/editor.js.map +1 -0
  34. package/build/esm/editor/components/file-browser.d.ts +37 -0
  35. package/build/esm/editor/components/file-browser.js +122 -0
  36. package/build/esm/editor/components/file-browser.js.map +1 -0
  37. package/build/esm/editor/components/file-editor-toolbar.d.ts +22 -0
  38. package/build/esm/editor/components/file-editor-toolbar.js +94 -0
  39. package/build/esm/editor/components/file-editor-toolbar.js.map +1 -0
  40. package/build/esm/editor/components/file-editor.d.ts +32 -0
  41. package/build/esm/editor/components/file-editor.js +60 -0
  42. package/build/esm/editor/components/file-editor.js.map +1 -0
  43. package/build/esm/editor/components/filter-query.d.ts +1 -0
  44. package/build/esm/editor/components/filter-query.js +23 -0
  45. package/build/esm/editor/components/filter-query.js.map +1 -0
  46. package/build/esm/editor/components/highlight-text-area.d.ts +11 -0
  47. package/build/esm/editor/components/highlight-text-area.js +139 -0
  48. package/build/esm/editor/components/highlight-text-area.js.map +1 -0
  49. package/build/esm/editor/components/log-viewer.d.ts +6 -0
  50. package/build/esm/editor/components/log-viewer.js +70 -0
  51. package/build/esm/editor/components/log-viewer.js.map +1 -0
  52. package/build/esm/editor/components/new-file.d.ts +10 -0
  53. package/build/esm/editor/components/new-file.js +118 -0
  54. package/build/esm/editor/components/new-file.js.map +1 -0
  55. package/build/esm/editor/components/scroll-query.d.ts +7 -0
  56. package/build/esm/editor/components/scroll-query.js +22 -0
  57. package/build/esm/editor/components/scroll-query.js.map +1 -0
  58. package/build/esm/editor/components/start-page.d.ts +13 -0
  59. package/build/esm/editor/components/start-page.js +31 -0
  60. package/build/esm/editor/components/start-page.js.map +1 -0
  61. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +3 -0
  62. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +30 -0
  63. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js.map +1 -0
  64. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +5 -0
  65. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +50 -0
  66. package/build/esm/editor/http/admin/editor/api/fs/read.api.js.map +1 -0
  67. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +4 -0
  68. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +40 -0
  69. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js.map +1 -0
  70. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +26 -0
  71. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +150 -0
  72. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js.map +1 -0
  73. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +3 -0
  74. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +39 -0
  75. package/build/esm/editor/http/admin/editor/api/fs/write.api.js.map +1 -0
  76. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +10 -0
  77. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +46 -0
  78. package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +1 -0
  79. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +10 -0
  80. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +46 -0
  81. package/build/esm/editor/http/admin/editor/api/server/restart.api.js.map +1 -0
  82. package/build/esm/editor/http/admin/editor/editor.js +8 -0
  83. package/build/esm/editor/http/admin/editor/editor.js.map +1 -0
  84. package/build/esm/editor/http/admin/editor/index.api.d.ts +3 -0
  85. package/build/esm/editor/http/admin/editor/index.api.js +22 -0
  86. package/build/esm/editor/http/admin/editor/index.api.js.map +1 -0
  87. package/build/esm/editor/server.d.ts +3 -0
  88. package/build/esm/editor/server.js +50 -0
  89. package/build/esm/editor/server.js.map +1 -0
  90. package/build/esm/editor/ws.d.ts +3 -0
  91. package/build/esm/editor/ws.js +12 -0
  92. package/build/esm/editor/ws.js.map +1 -0
  93. package/build/esm/src/cluster.js +11 -0
  94. package/build/esm/src/cluster.js.map +1 -0
  95. package/build/esm/src/common/arguments.d.ts +22 -0
  96. package/build/esm/src/common/arguments.js +310 -0
  97. package/build/esm/src/common/arguments.js.map +1 -0
  98. package/build/esm/src/common/assets.d.ts +11 -0
  99. package/build/esm/src/common/assets.js +121 -0
  100. package/build/esm/src/common/assets.js.map +1 -0
  101. package/build/esm/src/common/checksum.d.ts +19 -0
  102. package/build/esm/src/common/checksum.js +57 -0
  103. package/build/esm/src/common/checksum.js.map +1 -0
  104. package/build/esm/src/common/constants.d.ts +10 -0
  105. package/build/esm/src/common/constants.js +14 -0
  106. package/build/esm/src/common/constants.js.map +1 -0
  107. package/build/esm/src/common/content-type.d.ts +4 -0
  108. package/build/esm/src/common/content-type.js +82 -0
  109. package/build/esm/src/common/content-type.js.map +1 -0
  110. package/build/esm/src/common/esbuild.d.ts +17 -0
  111. package/build/esm/src/common/esbuild.js +79 -0
  112. package/build/esm/src/common/esbuild.js.map +1 -0
  113. package/build/esm/src/common/exit.d.ts +2 -0
  114. package/build/esm/src/common/exit.js +84 -0
  115. package/build/esm/src/common/exit.js.map +1 -0
  116. package/build/esm/src/common/fs.d.ts +8 -0
  117. package/build/esm/src/common/fs.js +17 -0
  118. package/build/esm/src/common/fs.js.map +1 -0
  119. package/build/esm/src/common/help.d.ts +3 -0
  120. package/build/esm/src/common/help.js +44 -0
  121. package/build/esm/src/common/help.js.map +1 -0
  122. package/build/esm/src/common/jsx.d.ts +52 -0
  123. package/build/esm/src/common/jsx.js +365 -0
  124. package/build/esm/src/common/jsx.js.map +1 -0
  125. package/build/esm/src/common/paths.d.ts +14 -0
  126. package/build/esm/src/common/paths.js +110 -0
  127. package/build/esm/src/common/paths.js.map +1 -0
  128. package/build/esm/src/common/watch.d.ts +3 -0
  129. package/build/esm/src/common/watch.js +74 -0
  130. package/build/esm/src/common/watch.js.map +1 -0
  131. package/build/esm/src/inflate/inflate-sea.d.ts +5 -0
  132. package/build/esm/src/inflate/inflate-sea.js +175 -0
  133. package/build/esm/src/inflate/inflate-sea.js.map +1 -0
  134. package/build/esm/src/inflate/inflate.d.ts +14 -0
  135. package/build/esm/src/inflate/inflate.js +65 -0
  136. package/build/esm/src/inflate/inflate.js.map +1 -0
  137. package/build/esm/src/inflate/md.d.ts +2 -0
  138. package/build/esm/src/inflate/md.js +19 -0
  139. package/build/esm/src/inflate/md.js.map +1 -0
  140. package/build/esm/src/inflate/setup-auth.d.ts +3 -0
  141. package/build/esm/src/inflate/setup-auth.js +38 -0
  142. package/build/esm/src/inflate/setup-auth.js.map +1 -0
  143. package/build/esm/src/inflate/setup-cors.d.ts +3 -0
  144. package/build/esm/src/inflate/setup-cors.js +38 -0
  145. package/build/esm/src/inflate/setup-cors.js.map +1 -0
  146. package/build/esm/src/inflate/setup-db.d.ts +8 -0
  147. package/build/esm/src/inflate/setup-db.js +99 -0
  148. package/build/esm/src/inflate/setup-db.js.map +1 -0
  149. package/build/esm/src/inflate/setup-http.d.ts +37 -0
  150. package/build/esm/src/inflate/setup-http.js +543 -0
  151. package/build/esm/src/inflate/setup-http.js.map +1 -0
  152. package/build/esm/src/inflate/setup-log.d.ts +7 -0
  153. package/build/esm/src/inflate/setup-log.js +37 -0
  154. package/build/esm/src/inflate/setup-log.js.map +1 -0
  155. package/build/esm/src/inflate/setup-server-config.d.ts +7 -0
  156. package/build/esm/src/inflate/setup-server-config.js +37 -0
  157. package/build/esm/src/inflate/setup-server-config.js.map +1 -0
  158. package/build/esm/src/inflate/setup-test.d.ts +2 -0
  159. package/build/esm/src/inflate/setup-test.js +22 -0
  160. package/build/esm/src/inflate/setup-test.js.map +1 -0
  161. package/build/esm/src/inflate/setup-ws.d.ts +4 -0
  162. package/build/esm/src/inflate/setup-ws.js +46 -0
  163. package/build/esm/src/inflate/setup-ws.js.map +1 -0
  164. package/build/esm/src/inflate/utils/sea-utils.d.ts +2 -0
  165. package/build/esm/src/inflate/utils/sea-utils.js +13 -0
  166. package/build/esm/src/inflate/utils/sea-utils.js.map +1 -0
  167. package/build/esm/src/lib.d.ts +13 -0
  168. package/build/esm/src/lib.js +17 -0
  169. package/build/esm/src/lib.js.map +1 -0
  170. package/build/esm/src/main.d.ts +2 -0
  171. package/build/esm/src/main.js +92 -0
  172. package/build/esm/src/main.js.map +1 -0
  173. package/build/esm/src/services/app.d.ts +88 -0
  174. package/build/esm/src/services/app.js +619 -0
  175. package/build/esm/src/services/app.js.map +1 -0
  176. package/build/esm/src/services/editor.d.ts +3 -0
  177. package/build/esm/src/services/editor.js +61 -0
  178. package/build/esm/src/services/editor.js.map +1 -0
  179. package/build/esm/src/services/globals.d.ts +3 -0
  180. package/build/esm/src/services/globals.js +139 -0
  181. package/build/esm/src/services/globals.js.map +1 -0
  182. package/build/esm/src/services/hot-reload.d.ts +1 -0
  183. package/build/esm/src/services/hot-reload.js +45 -0
  184. package/build/esm/src/services/hot-reload.js.map +1 -0
  185. package/build/esm/src/services/migrations.d.ts +4 -0
  186. package/build/esm/src/services/migrations.js +61 -0
  187. package/build/esm/src/services/migrations.js.map +1 -0
  188. package/build/esm/src/services/utils/cache.d.ts +19 -0
  189. package/build/esm/src/services/utils/cache.js +85 -0
  190. package/build/esm/src/services/utils/cache.js.map +1 -0
  191. package/build/esm/src/services/utils/cluster-cache.d.ts +20 -0
  192. package/build/esm/src/services/utils/cluster-cache.js +211 -0
  193. package/build/esm/src/services/utils/cluster-cache.js.map +1 -0
  194. package/build/esm/src/services/utils/cluster-ws.d.ts +24 -0
  195. package/build/esm/src/services/utils/cluster-ws.js +176 -0
  196. package/build/esm/src/services/utils/cluster-ws.js.map +1 -0
  197. package/build/esm/src/services/utils/db-manager.d.ts +20 -0
  198. package/build/esm/src/services/utils/db-manager.js +59 -0
  199. package/build/esm/src/services/utils/db-manager.js.map +1 -0
  200. package/build/esm/src/services/utils/get-route.d.ts +9 -0
  201. package/build/esm/src/services/utils/get-route.js +58 -0
  202. package/build/esm/src/services/utils/get-route.js.map +1 -0
  203. package/build/esm/src/services/utils/log.d.ts +17 -0
  204. package/build/esm/src/services/utils/log.js +74 -0
  205. package/build/esm/src/services/utils/log.js.map +1 -0
  206. package/build/esm/src/services/utils/server-interface.d.ts +41 -0
  207. package/build/esm/src/services/utils/server-interface.js +74 -0
  208. package/build/esm/src/services/utils/server-interface.js.map +1 -0
  209. package/build/esm/src/services/utils/websocketmanager.d.ts +23 -0
  210. package/build/esm/src/services/utils/websocketmanager.js +128 -0
  211. package/build/esm/src/services/utils/websocketmanager.js.map +1 -0
  212. package/build/esm/src/types.d.ts +166 -0
  213. package/build/esm/src/types.js +2 -0
  214. package/build/esm/src/types.js.map +1 -0
  215. package/build/jsx.dom.js +1585 -0
  216. package/build/lib.cjs +14009 -0
  217. package/build/postject.base64.cjs +1 -0
  218. package/editor/auth.ts +51 -0
  219. package/editor/common/admin-interface.ts +84 -0
  220. package/editor/common/constants.server.ts +5 -0
  221. package/editor/common/constants.ts +21 -0
  222. package/editor/common/editor-index.tsx +17 -0
  223. package/editor/common/html-encode.ts +14 -0
  224. package/editor/common/log-socket.tsx +82 -0
  225. package/editor/common/templates.ts +448 -0
  226. package/editor/components/api-preview.tsx +116 -0
  227. package/editor/components/editor.tsx +483 -0
  228. package/editor/components/file-browser.tsx +295 -0
  229. package/editor/components/file-editor-toolbar.tsx +187 -0
  230. package/editor/components/file-editor.tsx +122 -0
  231. package/editor/components/filter-query.tsx +22 -0
  232. package/editor/components/highlight-text-area.tsx +159 -0
  233. package/editor/components/log-viewer.tsx +110 -0
  234. package/editor/components/new-file.tsx +169 -0
  235. package/editor/components/scroll-query.tsx +22 -0
  236. package/editor/components/start-page.tsx +49 -0
  237. package/editor/http/admin/editor/api/fs/delete.api.tsx +32 -0
  238. package/editor/http/admin/editor/api/fs/read.api.tsx +55 -0
  239. package/editor/http/admin/editor/api/fs/rename.api.tsx +41 -0
  240. package/editor/http/admin/editor/api/fs/scan.api.tsx +181 -0
  241. package/editor/http/admin/editor/api/fs/write.api.tsx +41 -0
  242. package/editor/http/admin/editor/api/server/reload.api.ts +52 -0
  243. package/editor/http/admin/editor/api/server/restart.api.tsx +52 -0
  244. package/editor/http/admin/editor/editor.tsx +8 -0
  245. package/editor/http/admin/editor/font.ttf +0 -0
  246. package/editor/http/admin/editor/index.api.tsx +39 -0
  247. package/editor/http/admin/editor/style.css +620 -0
  248. package/editor/server.ts +57 -0
  249. package/editor/static/android-chrome-192x192.png +0 -0
  250. package/editor/static/android-chrome-512x512.png +0 -0
  251. package/editor/static/apple-touch-icon.png +0 -0
  252. package/editor/static/editor.bundle.in.mjs +20 -0
  253. package/editor/static/favicon-16x16.png +0 -0
  254. package/editor/static/favicon-32x32.png +0 -0
  255. package/editor/static/favicon.ico +0 -0
  256. package/editor/static/site.webmanifest +19 -0
  257. package/editor/ws.ts +15 -0
  258. package/package.json +43 -24
  259. package/package.json--OLD +36 -0
  260. package/sea/app.sh +33 -0
  261. package/sea/base64.js +3 -0
  262. package/sea/basic-compile.base64.sh +1 -0
  263. package/sea/basic-compile.sh +73 -0
  264. package/sea/basic-config.json +9 -0
  265. package/sea/compile.sh +124 -0
  266. package/sea/copy-types.sh +46 -0
  267. package/sea/editor-assets/editor.bundle.in.mjs +19 -0
  268. package/sea/esbuild.sh +31 -0
  269. package/sea/generate-global-types-asset-json.js +34 -0
  270. package/sea/install-esbuild.sh +53 -0
  271. package/sea/install-nodejs.sh +49 -0
  272. package/sea/main.sh +34 -0
  273. package/sea/node.sh +33 -0
  274. package/sea/node.version.tag +1 -0
  275. package/sea/precompile.sh +7 -0
  276. package/sea/release-tar.sh +5 -0
  277. package/sea/sign-add.sh +22 -0
  278. package/sea/sign-remove.sh +22 -0
  279. package/sea/tsc.sh +1 -0
  280. package/sea/types.json +1 -0
  281. package/src/cluster.ts +16 -0
  282. package/src/common/arguments.ts +366 -0
  283. package/src/common/assets.ts +124 -0
  284. package/src/common/checksum.ts +58 -0
  285. package/src/common/constants.ts +18 -0
  286. package/src/common/content-type.ts +84 -0
  287. package/src/common/esbuild.ts +94 -0
  288. package/src/common/exit.ts +91 -0
  289. package/src/common/fs.ts +17 -0
  290. package/src/common/help.ts +46 -0
  291. package/src/common/jsx.ts +414 -0
  292. package/src/common/paths.ts +117 -0
  293. package/src/common/watch.ts +80 -0
  294. package/src/inflate/inflate-sea.ts +193 -0
  295. package/src/inflate/inflate.ts +96 -0
  296. package/src/inflate/md.ts +20 -0
  297. package/src/inflate/setup-auth.ts +40 -0
  298. package/src/inflate/setup-cors.ts +40 -0
  299. package/src/inflate/setup-db.ts +113 -0
  300. package/src/inflate/setup-http.ts +643 -0
  301. package/src/inflate/setup-log.ts +44 -0
  302. package/src/inflate/setup-server-config.ts +47 -0
  303. package/src/inflate/setup-test.ts +23 -0
  304. package/src/inflate/setup-ws.ts +48 -0
  305. package/src/inflate/utils/sea-utils.ts +14 -0
  306. package/src/lib.ts +19 -0
  307. package/src/main.ts +87 -0
  308. package/src/services/app.ts +718 -0
  309. package/src/services/editor.tsx +93 -0
  310. package/src/services/globals.ts +143 -0
  311. package/src/services/hot-reload.ts +46 -0
  312. package/src/services/migrations.ts +66 -0
  313. package/src/services/utils/cache.ts +88 -0
  314. package/src/services/utils/cluster-cache.ts +225 -0
  315. package/src/services/utils/cluster-ws.ts +192 -0
  316. package/src/services/utils/db-manager.ts +79 -0
  317. package/src/services/utils/get-route.ts +70 -0
  318. package/src/services/utils/log.ts +91 -0
  319. package/src/services/utils/server-interface.ts +166 -0
  320. package/src/services/utils/websocketmanager.ts +139 -0
  321. package/src/types/@esbuild.d.ts +1 -0
  322. package/src/types/@miqro/core.d.ts +2 -0
  323. package/src/types/@miqro/jsx.d.ts +2 -0
  324. package/src/types/@miqro/parser.d.ts +2 -0
  325. package/src/types/@miqro/query.d.ts +2 -0
  326. package/src/types/@miqro/request.d.ts +2 -0
  327. package/src/types/@miqro/test.d.ts +2 -0
  328. package/src/types/@miqro.d.ts +1 -0
  329. package/src/types/@types.d.ts +1 -0
  330. package/src/types/browser.globals.d.ts +9 -0
  331. package/src/types/globals.d.ts +2 -0
  332. package/src/types/jsx.globals.d.ts +37 -0
  333. package/src/types/miqro.d.ts +109 -0
  334. package/src/types/postject.d.ts +1 -0
  335. package/src/types/server.globals.d.ts +72 -0
  336. package/src/types.ts +199 -0
  337. package/tsconfig.json +35 -0
  338. package/build/cli.js +0 -4
  339. package/build/cmd-map.d.ts +0 -90
  340. package/build/cmd-map.js +0 -460
  341. package/build/index.js +0 -2
  342. package/build/utils/doc/json.d.ts +0 -7
  343. package/build/utils/doc/json.js +0 -12
  344. package/build/utils/doc/md.d.ts +0 -19
  345. package/build/utils/doc/md.js +0 -173
  346. package/build/utils/exec.d.ts +0 -32
  347. package/build/utils/exec.js +0 -102
  348. package/build/utils/templates.d.ts +0 -33
  349. package/build/utils/templates.js +0 -302
  350. package/build/utils/watch.d.ts +0 -1
  351. package/build/utils/watch.js +0 -35
  352. /package/build/{index.d.ts → esm/editor/http/admin/editor/editor.d.ts} +0 -0
  353. /package/build/{cli.d.ts → esm/src/cluster.d.ts} +0 -0
@@ -1,173 +0,0 @@
1
- import { getDOCJSON } from "./json.js";
2
- /*interface SchemaProperties {
3
- [key: string]: Schema | string;
4
- }
5
-
6
- type ParserMode = "add_extra" | "no_extra" | "remove_extra"*/
7
- export async function getMDDoc(args, logger) {
8
- const jsonDOC = await getDOCJSON(args, logger);
9
- const pathList = Object.keys(jsonDOC);
10
- let outMD = "";
11
- const tableIndexItems = [];
12
- for (const path of pathList) {
13
- const pathData = jsonDOC[path];
14
- const methods = Object.keys(pathData);
15
- for (const method of methods) {
16
- if (method) {
17
- const apiDataList = pathData[method];
18
- for (const apiData of apiDataList) {
19
- tableIndexItems.push({
20
- apiData
21
- });
22
- outMD += `## ${apiData.identifier}\n\n`;
23
- outMD += `${args.showFilePath ? apiData.___filePath + "\n\n" : ""}`;
24
- if (apiData.name) {
25
- outMD += `${apiData.name}\n\n`;
26
- }
27
- if (apiData.description) {
28
- outMD += `${apiData.description}\n\n`;
29
- }
30
- outMD += `[${method}] ${path}\n\n`;
31
- if (apiData.policy) {
32
- outMD += `### policy\n\n`;
33
- outMD += policyToString(apiData.policy);
34
- }
35
- if (apiData.request) {
36
- const requestOutMD = parserToString(apiData.request);
37
- outMD += requestOutMD !== "" ? `### request\n\n${requestOutMD}` : "";
38
- }
39
- if (apiData.response && typeof apiData.response !== "boolean") {
40
- const responseOutMD = parserToString(apiData.response);
41
- outMD += responseOutMD !== "" ? `### response\n\n${responseOutMD}` : "";
42
- }
43
- }
44
- }
45
- }
46
- }
47
- const indexTable = getIndexTable(tableIndexItems);
48
- return `${indexTable}\n\n# endoints\n\n${outMD}`;
49
- }
50
- function getIndexTable(data) {
51
- return `# endpoint list\n\n${data.map(api => `[${api.apiData.identifier}](#${api.apiData.identifier.toLocaleLowerCase()})${api.apiData.name || api.apiData.description ? `\n\n\t${api.apiData.name ? api.apiData.name + " " : ""}${api.apiData.description ? api.apiData.description : ""}` : ""}`).join("\n\n")}`;
52
- }
53
- function policyToString(policy) {
54
- let outMD = "| groups | policy |\n";
55
- outMD += "|--------|--------|\n";
56
- outMD += `| ${(policy.groups instanceof Array ? policy.groups : [policy.groups]).join(",")} | ${policy.groupPolicy} |\n\n`;
57
- return outMD;
58
- }
59
- export function parserToString(parser) {
60
- let outMD = "";
61
- if (parser.status) {
62
- outMD += `#### status\n\n${parser.status instanceof Array ? parser.status.join(",") : parser.status}\n\n`;
63
- }
64
- if (parser.params && typeof parser.params !== "boolean") {
65
- outMD += `#### path params\n\n`;
66
- outMD += parserPartToString(parser.params, parser.paramsMode);
67
- }
68
- if (parser.headers) {
69
- outMD += `#### headers\n\n`;
70
- outMD += parserPartToString(parser.headers, parser.headersMode);
71
- }
72
- if (parser.query && parser.query !== true) {
73
- outMD += `#### query\n\n`;
74
- outMD += parserPartToString(parser.query, parser.queryMode);
75
- }
76
- if (parser.body && parser.body !== true) {
77
- outMD += `#### body\n\n`;
78
- outMD += parserPartToString(parser.body, parser.bodyMode);
79
- }
80
- return outMD;
81
- }
82
- function parserPartToString(arg, mode) {
83
- if (arg === false) {
84
- return "not allowed";
85
- }
86
- let outMD = "";
87
- let maxTabulation = 1;
88
- const parsers = arg instanceof Array ? arg : typeof arg === "string" ? [arg] : [arg];
89
- for (const parser of parsers) {
90
- const ret = internalParserToString(parser);
91
- if (ret.maxTabulation > maxTabulation) {
92
- maxTabulation = ret.maxTabulation;
93
- }
94
- outMD += `| | | | ${getTabulation(ret.maxTabulation * 2)}\n`;
95
- outMD += `|--------|-------|-------|${getTabulation(ret.maxTabulation * 2, true)}\n`;
96
- outMD += `${ret.out}\n\n`;
97
- }
98
- return outMD;
99
- }
100
- function internalParserToString(parser, tabulation = 1) {
101
- let outMD = "";
102
- let maxTabulation = tabulation;
103
- if (typeof parser === "string") {
104
- outMD += `${getTabulation(tabulation)}${parser}|\n`;
105
- }
106
- else {
107
- const attrNames = Object.keys(parser);
108
- for (const name of attrNames) {
109
- const p = parser[name];
110
- const description = typeof p === "string" ? "" : p.description ? p.description : "";
111
- if (typeof p === "string") {
112
- outMD += `${getTabulation(tabulation)}${name} | ${p}|\n`;
113
- }
114
- else if (p.type === "object") {
115
- outMD += `${getTabulation(tabulation)}${name} | ${p.type}| ${description}|\n`;
116
- const ret = parserBaseObjectTypeToString(p, tabulation + 1);
117
- if (maxTabulation < ret.maxTabulation) {
118
- maxTabulation = ret.maxTabulation;
119
- }
120
- outMD += `${ret.out}`;
121
- }
122
- else if (p.type === "dict") {
123
- outMD += `${getTabulation(tabulation)}${name} | Dict\\<${p.dictType}\\>| ${description}|\n`;
124
- if (p.dictType === "object") {
125
- const ret = parserBaseObjectTypeToString(p, tabulation + 1);
126
- if (maxTabulation < ret.maxTabulation) {
127
- maxTabulation = ret.maxTabulation;
128
- }
129
- outMD += `${ret.out}`;
130
- }
131
- }
132
- else if (p.type === "array") {
133
- outMD += `${getTabulation(tabulation)}${name} | Array\\<${p.arrayType}\\>| ${description}|\n`;
134
- if (p.arrayType === "object") {
135
- const ret = parserBaseObjectTypeToString(p, tabulation + 1);
136
- if (maxTabulation < ret.maxTabulation) {
137
- maxTabulation = ret.maxTabulation;
138
- }
139
- outMD += `${ret.out}`;
140
- }
141
- }
142
- else if (p.type === "regex") {
143
- outMD += `${getTabulation(tabulation)}${name} | ${p.regex}| ${description}|\n`;
144
- }
145
- else if (p.type === "enum") {
146
- outMD += `${getTabulation(tabulation)}${name} | ${p.type}| ${description}|\n`;
147
- outMD += `${getTabulation(tabulation + 1)}| ${p.enumValues?.join(",")}|\n`;
148
- if (maxTabulation < tabulation + 1) {
149
- maxTabulation = tabulation + 1;
150
- }
151
- }
152
- else {
153
- outMD += `${getTabulation(tabulation)}${name} | ${p.type}| ${description}|\n`;
154
- }
155
- }
156
- }
157
- return {
158
- out: outMD,
159
- maxTabulation
160
- };
161
- }
162
- function parserBaseObjectTypeToString(arg, tabulation) {
163
- const options = arg.properties ? arg.properties : {};
164
- //const outMD = `${getTabulation(tabulation)}name | type |\n${getTabulation(tabulation)}--------|--------|\n`;
165
- return internalParserToString(options, tabulation + 1);
166
- }
167
- function getTabulation(n, header = false) {
168
- let out = "";
169
- for (let i = 0; i < n; i++) {
170
- out += header ? "-|" : "| ";
171
- }
172
- return out;
173
- }
@@ -1,32 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { ExecSyncOptionsWithBufferEncoding } from "child_process";
4
- export declare const execSync: (cmd: string, options?: ExecSyncOptionsWithBufferEncoding) => void;
5
- export type Callback<T = any> = (...args: any[]) => T;
6
- export declare const extractFlags: (args: string[], options?: {
7
- flags: {
8
- [name: string]: {
9
- description?: string | undefined;
10
- hasValue?: boolean | undefined;
11
- };
12
- };
13
- } | undefined) => {
14
- flags: {
15
- [key: string]: string | (string | null)[] | null;
16
- };
17
- files: string[];
18
- };
19
- export declare function getUsage(cmds: CMDMap, usage: string): string;
20
- interface CMDMap {
21
- [key: string]: {
22
- cb: Callback<void> | Callback<Promise<void>>;
23
- description: string;
24
- section?: string;
25
- tabs?: number;
26
- };
27
- }
28
- export declare const mainCMD: (cmds: CMDMap, usage: string, logger: Console | {
29
- error: (...args: any[]) => void;
30
- info: (...args: any[]) => void;
31
- }, cmdArg?: string, exit?: boolean) => void;
32
- export {};
@@ -1,102 +0,0 @@
1
- import { execSync as cpExec } from "child_process";
2
- export const execSync = (cmd, options) => {
3
- console.log(cmd);
4
- cpExec(cmd, options ? { stdio: 'inherit', ...options } : { stdio: 'inherit' });
5
- };
6
- // noinspection SpellCheckingInspection
7
- const routeCMDModule = async (cmdArg, cmds, logger, exit = true) => {
8
- if (!cmdArg) {
9
- throw new Error("no command");
10
- }
11
- else {
12
- if (!cmds.hasOwnProperty(cmdArg)) {
13
- throw new Error("command " + cmdArg + " not found!");
14
- }
15
- else {
16
- try {
17
- await cmds[cmdArg].cb();
18
- }
19
- catch (e) {
20
- if (e && e.message) {
21
- logger.error("Error running command. " + e.message);
22
- }
23
- if (exit) {
24
- process.exit(1);
25
- }
26
- }
27
- }
28
- }
29
- };
30
- export const extractFlags = (args, options) => {
31
- const flags = Object.create(null);
32
- const files = [];
33
- for (let i = 0; i < args.length; i++) {
34
- const arg = args[i];
35
- if (arg.indexOf("-") === 0) {
36
- const argName = arg.substring(arg.indexOf("--") === 0 ? 2 : 1);
37
- const ignoreValue = options && options.flags && options.flags[argName] && options.flags[argName].hasValue === false ? true : false;
38
- const argValue = !ignoreValue && args.length > i + 1 && args[i + 1] && args[i + 1].indexOf("-") != 0 ? args[i + 1] : null;
39
- const flag = flags[argName];
40
- if (flag instanceof Array) {
41
- flag.push(argValue);
42
- }
43
- else if (flag) {
44
- flags[argName] = [flag, argValue];
45
- }
46
- else {
47
- flags[argName] = argValue;
48
- }
49
- if (argValue !== null) {
50
- i++;
51
- }
52
- }
53
- else {
54
- files.push(arg);
55
- }
56
- }
57
- return { flags, files };
58
- };
59
- const getTabs = (n) => {
60
- n = n ? n : 1;
61
- let ret = "";
62
- for (let i = 0; i < n; i++) {
63
- ret += "\t";
64
- }
65
- return ret;
66
- };
67
- export function getUsage(cmds, usage) {
68
- let out = "";
69
- out += `${usage}`;
70
- out += `Available commands:\n\n`;
71
- for (const cmd of Object.keys(cmds)) {
72
- if (cmds[cmd].section) {
73
- out += `\n==${cmds[cmd].section}==\n\n`;
74
- }
75
- //const description = cmds[cmd].description.split("\n").map(s => `${getTabs(/*cmds[cmd].tabs*/2)}${s}`).join("\n");
76
- //const description = cmds[cmd].description.split("\n").map(s => `${getTabs(/*cmds[cmd].tabs*/1)}${s}`).join("\n");
77
- const description = cmds[cmd].description.split("\n").map(s => `${getTabs(cmds[cmd].tabs)}${s}`).join("\n");
78
- out += `${cmd}${description}\n`;
79
- //logger.info(`${cmd}\n${description}`);
80
- }
81
- out += "\n";
82
- return out;
83
- }
84
- export const mainCMD = (cmds, usage, logger, cmdArg = process.argv[2], exit = true) => {
85
- const flow = async () => {
86
- try {
87
- await routeCMDModule(cmdArg, cmds, logger, exit);
88
- }
89
- catch (e) {
90
- if (e && e.message) {
91
- logger.error(e.message);
92
- }
93
- logger.info(getUsage(cmds, usage));
94
- if (exit) {
95
- process.exit(1);
96
- }
97
- }
98
- };
99
- flow().catch((e) => {
100
- logger.error(e);
101
- });
102
- };
@@ -1,33 +0,0 @@
1
- export declare const testTemplates: {
2
- js: (category: string) => string;
3
- };
4
- export declare const apiRouteTemplate: {
5
- ts: (noMethod?: boolean) => "import { APIRoute } from \"@miqro/core\";\n\nexport default {\n method: \"GET\",\n handler: async (req, res) => {\n return {\n text: `Hello`\n }\n }\n} as APIRoute;\n" | "import { APIRoute } from \"@miqro/core\";\n\nexport default {\n handler: async (req, res) => {\n return {\n text: `Hello`\n }\n }\n} as APIRoute;\n";
6
- js: (noMethod?: boolean) => "module.exports = {\n method: \"GET\n handler: async (req, res) => {\n return {\n text: `Hello`\n }\n }\n};\n" | "module.exports = {\n handler: async (req, res) => {\n return {\n text: `Hello`\n }\n }\n};\n";
7
- };
8
- export declare const mainTemplates: {
9
- ts: () => string;
10
- js: () => string;
11
- };
12
- export declare const gitignoreTemplate: {
13
- ts: () => string;
14
- js: () => string;
15
- };
16
- export declare const packageTemplate: {
17
- ts: (name: string) => string;
18
- js: (name: string) => string;
19
- };
20
- export declare const logEnvFile = "####################\n## logging\nLOG_LEVEL=info\nLOG_LEVEL_Database=error\n#LOG_FILE=./logs/dev.log\n";
21
- export declare const featuresEnvFile = "####################\n## features\n#MY_CUSTOM_FEATURE=false\n";
22
- export declare const dbEnvFile = "####################\n## db\nDB_URI=sqlite://user:password@localhost:3306/devdb\nDB_POOL=false\nDB_DIALECT_SSL=true\nDB_POOL_MAX=5\nDB_POOL_MIN=0\nDB_POOL_ACQUIRE=30000\nDB_POOL_IDLE=10000\nDB_STORAGE=./dev.sqlite3\n";
23
- export declare const authEnvFile = "####################\n## Auth\nTOKEN_LOCATION=header\n#TOKEN_LOCATION=query\nTOKEN_VERIFY_LOCATION=header\n#TOKEN_VERIFY_LOCATION=query\nTOKEN_HEADER=Authorization\n#TOKEN_QUERY=Authorization\n#TOKEN_VERIFY_ENDPOINT=\nTOKEN_VERIFY_ENDPOINT_METHOD=GET\n";
24
- export declare const templates: {
25
- modelsIndex: string;
26
- dbConfig: string;
27
- sequelizerc: (typescript?: boolean) => string;
28
- exampleModel: (modelName: string) => string;
29
- logEnvFile: string;
30
- authEnvFile: string;
31
- dbEnvFile: string;
32
- featuresEnvFile: string;
33
- };
@@ -1,302 +0,0 @@
1
- // noinspection SpellCheckingInspection
2
- export const testTemplates = {
3
- js: (category) => `import { it } from "node:test";
4
- import { TestHelper } from "@miqro/test-http";
5
- import { Server, APIRouter } from "@miqro/core";
6
- import { resolve } from "path";
7
- import { strictEqual } from "assert";
8
-
9
- it("happy path health", async () => {
10
- const response = await TestHelper(new Server().use(await APIRouter({
11
- dirname: resolve("./build/api")
12
- })), {
13
- url: "/health"
14
- });
15
- strictEqual(response.status, 200);
16
- });
17
- `
18
- };
19
- export const apiRouteTemplate = {
20
- ts: (noMethod = false) => noMethod ? `import { APIRoute } from "@miqro/core";
21
-
22
- export default {
23
- method: "GET",
24
- handler: async (req, res) => {
25
- return {
26
- text: \`Hello\`
27
- }
28
- }
29
- } as APIRoute;
30
- ` : `import { APIRoute } from "@miqro/core";
31
-
32
- export default {
33
- handler: async (req, res) => {
34
- return {
35
- text: \`Hello\`
36
- }
37
- }
38
- } as APIRoute;
39
- `,
40
- js: (noMethod = false) => noMethod ? `module.exports = {
41
- method: "GET
42
- handler: async (req, res) => {
43
- return {
44
- text: \`Hello\`
45
- }
46
- }
47
- };
48
- ` : `module.exports = {
49
- handler: async (req, res) => {
50
- return {
51
- text: \`Hello\`
52
- }
53
- }
54
- };
55
- `
56
- };
57
- export const mainTemplates = {
58
- ts: () => `import { APIRouter, Server, checkEnvVariables, getLogger } from "@miqro/core";
59
- import { resolve } from "path";
60
-
61
- /*
62
- To be start as a main file
63
- node file.js
64
- */
65
-
66
- const [PORT] = checkEnvVariables(["PORT"], ["8080"]);
67
-
68
- const logger = getLogger("server");
69
-
70
- async function main() {
71
- const server = new Server();
72
- server.use(await APIRouter({
73
- dirname: resolve("./build/api")
74
- }), "/api");
75
- await server.listen(PORT);
76
- server.logPaths(logger);
77
- logger.info("listening on " + PORT);
78
- }
79
-
80
- main().catch(e => logger.error(e));
81
- `,
82
- js: () => `const { APIRouter, App, checkEnvVariables, getLogger } = require("@miqro/core");
83
- const { resolve } = require("path");
84
-
85
- /*
86
- To be start as a main file
87
- node file.js
88
- */
89
-
90
- const [PORT] = checkEnvVariables(["PORT"], ["8080"]);
91
-
92
- const logger = getLogger("server");
93
-
94
- async function main() {
95
- const server = new App();
96
- server.use(await APIRouter({
97
- dirname: resolve(__dirname, "api")
98
- }), "/api");
99
- await server.listen(PORT);
100
- server.logPaths(logger);
101
- logger.info("listening on " + PORT);
102
- }
103
-
104
- main().catch(e => logger.error(e));
105
- `
106
- };
107
- export const gitignoreTemplate = {
108
- ts: () => `node_modules/
109
- dist/
110
- `,
111
- js: () => `node_modules/`
112
- };
113
- export const packageTemplate = {
114
- ts: (name) => `{
115
- "name": "${name}",
116
- "type": "module",
117
- "version": "1.0.0",
118
- "description": "",
119
- "private": true,
120
- "scripts": {
121
- "prebuild": "rm -Rf build/;",
122
- "build": "tsc",
123
- "prestart": "npm run build",
124
- "start": "node --enable-source-maps build/main.js",
125
- "cluster": "NODE_OPTIONS=--enable-source-maps miqro cluster build/main.js",
126
- "pretest": "npm run build",
127
- "test": "node --enable-source-maps --test test/**/*.test.js",
128
- "coverage": "node --enable-source-maps --experimental-test-coverage --test test/**/*.test.js"
129
- },
130
- "devDependencies": {
131
- },
132
- "dependencies": {
133
- },
134
- "author": ""
135
- }`,
136
- js: (name) => `{
137
- "name": "${name}",
138
- "type": "module",
139
- "version": "1.0.0",
140
- "description": "",
141
- "private": true,
142
- "scripts": {
143
- "start": "node src/main.js",
144
- "cluster": "miqro cluster src/main.js",
145
- "test": "node --test test/**/*.test.js",
146
- "coverage": "node --experimental-test-coverage --test test/**/*.test.js"
147
- },
148
- "devDependencies": {
149
- },
150
- "dependencies": {
151
- },
152
- "author": ""
153
- }`
154
- };
155
- export const logEnvFile = `####################
156
- ## logging
157
- LOG_LEVEL=info
158
- LOG_LEVEL_Database=error
159
- #LOG_FILE=./logs/dev.log
160
- `;
161
- export const featuresEnvFile = `####################
162
- ## features
163
- #MY_CUSTOM_FEATURE=false
164
- `;
165
- export const dbEnvFile = `####################
166
- ## db
167
- DB_URI=sqlite://user:password@localhost:3306/devdb
168
- DB_POOL=false
169
- DB_DIALECT_SSL=true
170
- DB_POOL_MAX=5
171
- DB_POOL_MIN=0
172
- DB_POOL_ACQUIRE=30000
173
- DB_POOL_IDLE=10000
174
- DB_STORAGE=./dev.sqlite3
175
- `;
176
- export const authEnvFile = `####################
177
- ## Auth
178
- TOKEN_LOCATION=header
179
- #TOKEN_LOCATION=query
180
- TOKEN_VERIFY_LOCATION=header
181
- #TOKEN_VERIFY_LOCATION=query
182
- TOKEN_HEADER=Authorization
183
- #TOKEN_QUERY=Authorization
184
- #TOKEN_VERIFY_ENDPOINT=
185
- TOKEN_VERIFY_ENDPOINT_METHOD=GET
186
- `;
187
- // noinspection SpellCheckingInspection
188
- const modelsIndex = `'use strict';
189
-
190
- const fs = require('fs');
191
- const path = require('path');
192
- const Sequelize = require('sequelize');
193
- const basename = path.basename(__filename);
194
-
195
- const sequelizerc = require(path.resolve(__dirname, "..", "..", ".sequelizerc"));
196
-
197
- const config = require(sequelizerc.config);
198
- const modelsPath = sequelizerc['models-path'];
199
- const db = {};
200
-
201
- let sequelize;
202
- if (config.use_env_variable) {
203
- sequelize = new Sequelize(process.env[config.use_env_variable], config);
204
- } else {
205
- sequelize = new Sequelize(config.database, config.username, config.password, config);
206
- }
207
-
208
- fs
209
- .readdirSync(modelsPath)
210
- .filter(file => {
211
- return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
212
- })
213
- .forEach(file => {
214
- const model = require(path.join(modelsPath, file))(sequelize, Sequelize.DataTypes);
215
- db[model.name] = model;
216
- });
217
-
218
- Object.keys(db).forEach(modelName => {
219
- if (db[modelName].associate) {
220
- db[modelName].associate(db);
221
- }
222
- });
223
-
224
- module.exports = db;
225
- module.exports.sequelize = sequelize;
226
- module.exports.Sequelize = Sequelize;
227
-
228
- `;
229
- // noinspection SpellCheckingInspection
230
- const dbConfig = `const { URL } = require("url");
231
-
232
- const DB_URI = process.env.DB_URI;
233
- const DB_POOL = process.env.DB_POOL ? process.env.DB_POOL : "false";
234
- const DB_POOL_ACQUIRE = process.env.DB_POOL_ACQUIRE ? process.env.DB_POOL_ACQUIRE : "30000";
235
- const DB_POOL_IDLE = process.env.DB_POOL_IDLE ? process.env.DB_POOL_IDLE : "10000";
236
- const DB_POOL_MAX = process.env.DB_POOL_MAX ? process.env.DB_POOL_MAX : "5";
237
- const DB_POOL_MIN = process.env.DB_POOL_MIN ? process.env.DB_POOL_MIN : "0";
238
- const DB_DIALECT_SSL = process.env.DB_DIALECT_SSL === "true" || process.env.DB_DIALECT_SSL === undefined ? true : false;
239
-
240
- const pool = DB_POOL === "true" ? {
241
- acquire: parseInt(DB_POOL_ACQUIRE, 10),
242
- idle: parseInt(DB_POOL_IDLE, 10),
243
- max: parseInt(DB_POOL_MAX, 10),
244
- min: parseInt(DB_POOL_MIN, 10)
245
- } : undefined;
246
-
247
- const parsed = new URL(process.env.DB_URI);
248
-
249
- module.exports = {
250
- database: parsed.pathname.substr(1),
251
- host: parsed.hostname,
252
- port: parsed.port,
253
- username: parsed.username,
254
- password: parsed.password,
255
- dialect: parsed.protocol.substring(0, parsed.protocol.length - 1),
256
- dialectOptions: {
257
- ssl: DB_DIALECT_SSL
258
- },
259
- pool,
260
- storage: process.env.DB_STORAGE
261
- };
262
- `;
263
- // noinspection SpellCheckingInspection
264
- const sequelizerc = (typescript) => `const path = require("path");
265
-
266
- module.exports = {
267
- "config": path.resolve(__dirname, "db", "connection.js"),
268
- "migrations-path": path.resolve(__dirname, "db", "migrations"),
269
- "seeders-path": path.resolve(__dirname, "db", "seeders"),
270
- ${typescript ? `"models-path": path.resolve(__dirname, "dist", "models")` : `"models-path": path.resolve(__dirname, "db", "models")`},
271
- };
272
- `;
273
- const exampleModel = (modelName) => {
274
- return `module.exports = (sequelize, DataTypes) => {
275
- const ${modelName} = sequelize.define("${modelName}", {
276
- name: {
277
- type: DataTypes.STRING,
278
- allowNull: false,
279
- defaultValue: ""
280
- },
281
- surname: DataTypes.STRING,
282
- email: DataTypes.STRING,
283
- password: DataTypes.STRING
284
- }, {});
285
- ${modelName}.associate = function(models) {
286
- // associations can be defined here
287
- // ${modelName}.belongsTo(models.....)
288
- };
289
- return ${modelName};
290
- };`;
291
- };
292
- // noinspection SpellCheckingInspection
293
- export const templates = {
294
- modelsIndex,
295
- dbConfig,
296
- sequelizerc,
297
- exampleModel,
298
- logEnvFile,
299
- authEnvFile,
300
- dbEnvFile,
301
- featuresEnvFile
302
- };
@@ -1 +0,0 @@
1
- export declare function setupWatch(directory: string, cmd: string, timeout?: number): void;
@@ -1,35 +0,0 @@
1
- import { execSync } from "child_process";
2
- import { watch, watchFile } from "fs";
3
- export function setupWatch(directory, cmd, timeout = 1000) {
4
- watchFile(directory, () => {
5
- queueRunCMD(cmd, timeout);
6
- });
7
- watch(directory, {
8
- recursive: true
9
- }, () => {
10
- queueRunCMD(cmd, timeout);
11
- });
12
- }
13
- let cmdTimeout = null;
14
- let running = false;
15
- function queueRunCMD(cmd, timeout) {
16
- if (running) {
17
- return;
18
- }
19
- if (cmdTimeout) {
20
- clearTimeout(cmdTimeout);
21
- }
22
- cmdTimeout = setTimeout(() => {
23
- running = true;
24
- try {
25
- execSync(cmd, {
26
- cwd: process.cwd(),
27
- env: process.env
28
- });
29
- }
30
- catch (e) {
31
- console.error(e);
32
- }
33
- running = false;
34
- }, timeout);
35
- }
File without changes