@rnaga/wp-node 1.1.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 (517) hide show
  1. package/application.d.ts +76 -0
  2. package/application.d.ts.map +1 -0
  3. package/application.js +132 -0
  4. package/common/async-constructor.d.ts +2 -0
  5. package/common/async-constructor.d.ts.map +1 -0
  6. package/common/async-constructor.js +7 -0
  7. package/common/config/define-post-status.config.d.ts +4 -0
  8. package/common/config/define-post-status.config.d.ts.map +1 -0
  9. package/common/config/define-post-status.config.js +26 -0
  10. package/common/config/define-post-type.config.d.ts +4 -0
  11. package/common/config/define-post-type.config.d.ts.map +1 -0
  12. package/common/config/define-post-type.config.js +39 -0
  13. package/common/config/define-taxonomies.config.d.ts +4 -0
  14. package/common/config/define-taxonomies.config.d.ts.map +1 -0
  15. package/common/config/define-taxonomies.config.js +26 -0
  16. package/common/config/define-wp.config..d.ts +12 -0
  17. package/common/config/define-wp.config..d.ts.map +1 -0
  18. package/common/config/define-wp.config..js +110 -0
  19. package/common/config/index.d.ts +5 -0
  20. package/common/config/index.d.ts.map +1 -0
  21. package/common/config/index.js +20 -0
  22. package/common/date.d.ts +19 -0
  23. package/common/date.d.ts.map +1 -0
  24. package/common/date.js +116 -0
  25. package/common/define-hooks.d.ts +4 -0
  26. package/common/define-hooks.d.ts.map +1 -0
  27. package/common/define-hooks.js +16 -0
  28. package/common/diff.d.ts +3 -0
  29. package/common/diff.d.ts.map +1 -0
  30. package/common/diff.js +23 -0
  31. package/common/files.d.ts +14 -0
  32. package/common/files.d.ts.map +1 -0
  33. package/common/files.js +160 -0
  34. package/common/formatting.d.ts +47 -0
  35. package/common/formatting.d.ts.map +1 -0
  36. package/common/formatting.js +218 -0
  37. package/common/hierarchy.d.ts +21 -0
  38. package/common/hierarchy.d.ts.map +1 -0
  39. package/common/hierarchy.js +78 -0
  40. package/common/hooks-command.d.ts +7 -0
  41. package/common/hooks-command.d.ts.map +1 -0
  42. package/common/hooks-command.js +21 -0
  43. package/common/index.d.ts +11 -0
  44. package/common/index.d.ts.map +1 -0
  45. package/common/index.js +49 -0
  46. package/common/password.d.ts +4 -0
  47. package/common/password.d.ts.map +1 -0
  48. package/common/password.js +224 -0
  49. package/common/php-serialize.d.ts +3 -0
  50. package/common/php-serialize.d.ts.map +1 -0
  51. package/common/php-serialize.js +17 -0
  52. package/common/validating.d.ts +10 -0
  53. package/common/validating.d.ts.map +1 -0
  54. package/common/validating.js +65 -0
  55. package/config.d.ts +99 -0
  56. package/config.d.ts.map +1 -0
  57. package/config.js +76 -0
  58. package/constants/async-init.d.ts +2 -0
  59. package/constants/async-init.d.ts.map +1 -0
  60. package/constants/async-init.js +4 -0
  61. package/constants/component.d.ts +3 -0
  62. package/constants/component.d.ts.map +1 -0
  63. package/constants/component.js +5 -0
  64. package/constants/database.d.ts +2 -0
  65. package/constants/database.d.ts.map +1 -0
  66. package/constants/database.js +9 -0
  67. package/constants/default-database-tables.d.ts +7 -0
  68. package/constants/default-database-tables.d.ts.map +1 -0
  69. package/constants/default-database-tables.js +26 -0
  70. package/constants/index.d.ts +9 -0
  71. package/constants/index.d.ts.map +1 -0
  72. package/constants/index.js +24 -0
  73. package/constants/role-capabilities.d.ts +3 -0
  74. package/constants/role-capabilities.d.ts.map +1 -0
  75. package/constants/role-capabilities.js +67 -0
  76. package/constants/role-capability-actions.d.ts +2 -0
  77. package/constants/role-capability-actions.d.ts.map +1 -0
  78. package/constants/role-capability-actions.js +90 -0
  79. package/constants/role-names.d.ts +2 -0
  80. package/constants/role-names.d.ts.map +1 -0
  81. package/constants/role-names.js +12 -0
  82. package/constants/scope.d.ts +6 -0
  83. package/constants/scope.d.ts.map +1 -0
  84. package/constants/scope.js +9 -0
  85. package/core/async-init-reflect.d.ts +5 -0
  86. package/core/async-init-reflect.d.ts.map +1 -0
  87. package/core/async-init-reflect.js +18 -0
  88. package/core/blog.d.ts +20 -0
  89. package/core/blog.d.ts.map +1 -0
  90. package/core/blog.js +123 -0
  91. package/core/capabilities.d.ts +12 -0
  92. package/core/capabilities.d.ts.map +1 -0
  93. package/core/capabilities.js +625 -0
  94. package/core/comment.d.ts +111 -0
  95. package/core/comment.d.ts.map +1 -0
  96. package/core/comment.js +173 -0
  97. package/core/components.d.ts +13 -0
  98. package/core/components.d.ts.map +1 -0
  99. package/core/components.js +129 -0
  100. package/core/context.d.ts +38 -0
  101. package/core/context.d.ts.map +1 -0
  102. package/core/context.js +77 -0
  103. package/core/current.d.ts +33 -0
  104. package/core/current.d.ts.map +1 -0
  105. package/core/current.js +229 -0
  106. package/core/date-time.d.ts +18 -0
  107. package/core/date-time.d.ts.map +1 -0
  108. package/core/date-time.js +71 -0
  109. package/core/hooks/action.d.ts +16 -0
  110. package/core/hooks/action.d.ts.map +1 -0
  111. package/core/hooks/action.js +44 -0
  112. package/core/hooks/actions/init.d.ts +5 -0
  113. package/core/hooks/actions/init.d.ts.map +1 -0
  114. package/core/hooks/actions/init.js +28 -0
  115. package/core/hooks/default-hooks.d.ts +7 -0
  116. package/core/hooks/default-hooks.d.ts.map +1 -0
  117. package/core/hooks/default-hooks.js +19 -0
  118. package/core/hooks/filter.d.ts +12 -0
  119. package/core/hooks/filter.d.ts.map +1 -0
  120. package/core/hooks/filter.js +76 -0
  121. package/core/hooks/filters/capabilities.d.ts +16 -0
  122. package/core/hooks/filters/capabilities.d.ts.map +1 -0
  123. package/core/hooks/filters/capabilities.js +395 -0
  124. package/core/hooks/hooks-command.d.ts +9 -0
  125. package/core/hooks/hooks-command.d.ts.map +1 -0
  126. package/core/hooks/hooks-command.js +28 -0
  127. package/core/hooks/hooks-reflect.d.ts +42 -0
  128. package/core/hooks/hooks-reflect.d.ts.map +1 -0
  129. package/core/hooks/hooks-reflect.js +73 -0
  130. package/core/hooks/hooks.d.ts +61 -0
  131. package/core/hooks/hooks.d.ts.map +1 -0
  132. package/core/hooks/hooks.js +82 -0
  133. package/core/hooks/index.d.ts +4 -0
  134. package/core/hooks/index.d.ts.map +1 -0
  135. package/core/hooks/index.js +19 -0
  136. package/core/installer.d.ts +56 -0
  137. package/core/installer.d.ts.map +1 -0
  138. package/core/installer.js +395 -0
  139. package/core/logger.d.ts +22 -0
  140. package/core/logger.d.ts.map +1 -0
  141. package/core/logger.js +65 -0
  142. package/core/meta.d.ts +20 -0
  143. package/core/meta.d.ts.map +1 -0
  144. package/core/meta.js +123 -0
  145. package/core/options.d.ts +20 -0
  146. package/core/options.d.ts.map +1 -0
  147. package/core/options.js +148 -0
  148. package/core/post.d.ts +39 -0
  149. package/core/post.d.ts.map +1 -0
  150. package/core/post.js +164 -0
  151. package/core/query.d.ts +14 -0
  152. package/core/query.d.ts.map +1 -0
  153. package/core/query.js +39 -0
  154. package/core/role.d.ts +21 -0
  155. package/core/role.d.ts.map +1 -0
  156. package/core/role.js +71 -0
  157. package/core/roles.d.ts +16 -0
  158. package/core/roles.d.ts.map +1 -0
  159. package/core/roles.js +84 -0
  160. package/core/schema.d.ts +13 -0
  161. package/core/schema.d.ts.map +1 -0
  162. package/core/schema.js +83 -0
  163. package/core/site.d.ts +28 -0
  164. package/core/site.d.ts.map +1 -0
  165. package/core/site.js +105 -0
  166. package/core/tables.d.ts +18 -0
  167. package/core/tables.d.ts.map +1 -0
  168. package/core/tables.js +64 -0
  169. package/core/taxonomy.d.ts +23 -0
  170. package/core/taxonomy.d.ts.map +1 -0
  171. package/core/taxonomy.js +83 -0
  172. package/core/term.d.ts +104 -0
  173. package/core/term.d.ts.map +1 -0
  174. package/core/term.js +136 -0
  175. package/core/user.d.ts +32 -0
  176. package/core/user.d.ts.map +1 -0
  177. package/core/user.js +273 -0
  178. package/core/utils/blog.util.d.ts +14 -0
  179. package/core/utils/blog.util.d.ts.map +1 -0
  180. package/core/utils/blog.util.js +97 -0
  181. package/core/utils/comment.util.d.ts +23 -0
  182. package/core/utils/comment.util.d.ts.map +1 -0
  183. package/core/utils/comment.util.js +312 -0
  184. package/core/utils/crud.util.d.ts +40 -0
  185. package/core/utils/crud.util.d.ts.map +1 -0
  186. package/core/utils/crud.util.js +97 -0
  187. package/core/utils/date-time.util.d.ts +9 -0
  188. package/core/utils/date-time.util.d.ts.map +1 -0
  189. package/core/utils/date-time.util.js +29 -0
  190. package/core/utils/link.util.d.ts +23 -0
  191. package/core/utils/link.util.d.ts.map +1 -0
  192. package/core/utils/link.util.js +148 -0
  193. package/core/utils/meta.util.d.ts +13 -0
  194. package/core/utils/meta.util.d.ts.map +1 -0
  195. package/core/utils/meta.util.js +73 -0
  196. package/core/utils/post.util.d.ts +34 -0
  197. package/core/utils/post.util.d.ts.map +1 -0
  198. package/core/utils/post.util.js +272 -0
  199. package/core/utils/query.util.d.ts +36 -0
  200. package/core/utils/query.util.d.ts.map +1 -0
  201. package/core/utils/query.util.js +168 -0
  202. package/core/utils/revision.util.d.ts +67 -0
  203. package/core/utils/revision.util.d.ts.map +1 -0
  204. package/core/utils/revision.util.js +105 -0
  205. package/core/utils/roles.util.d.ts +30 -0
  206. package/core/utils/roles.util.d.ts.map +1 -0
  207. package/core/utils/roles.util.js +189 -0
  208. package/core/utils/signup.util.d.ts +33 -0
  209. package/core/utils/signup.util.d.ts.map +1 -0
  210. package/core/utils/signup.util.js +227 -0
  211. package/core/utils/site.util.d.ts +22 -0
  212. package/core/utils/site.util.d.ts.map +1 -0
  213. package/core/utils/site.util.js +122 -0
  214. package/core/utils/taxonomy.util.d.ts +19 -0
  215. package/core/utils/taxonomy.util.d.ts.map +1 -0
  216. package/core/utils/taxonomy.util.js +52 -0
  217. package/core/utils/term.util.d.ts +13 -0
  218. package/core/utils/term.util.d.ts.map +1 -0
  219. package/core/utils/term.util.js +113 -0
  220. package/core/utils/trx.util.d.ts +24 -0
  221. package/core/utils/trx.util.d.ts.map +1 -0
  222. package/core/utils/trx.util.js +86 -0
  223. package/core/utils/user-self-registration.util.d.ts +46 -0
  224. package/core/utils/user-self-registration.util.d.ts.map +1 -0
  225. package/core/utils/user-self-registration.util.js +171 -0
  226. package/core/utils/user.util.d.ts +153 -0
  227. package/core/utils/user.util.d.ts.map +1 -0
  228. package/core/utils/user.util.js +550 -0
  229. package/core/utils/utils.d.ts +36 -0
  230. package/core/utils/utils.d.ts.map +1 -0
  231. package/core/utils/utils.js +85 -0
  232. package/core/validator.d.ts +11 -0
  233. package/core/validator.d.ts.map +1 -0
  234. package/core/validator.js +40 -0
  235. package/core/vars.d.ts +19 -0
  236. package/core/vars.d.ts.map +1 -0
  237. package/core/vars.js +54 -0
  238. package/crud/blog.crud.d.ts +56 -0
  239. package/crud/blog.crud.d.ts.map +1 -0
  240. package/crud/blog.crud.js +301 -0
  241. package/crud/comment.crud.d.ts +104 -0
  242. package/crud/comment.crud.d.ts.map +1 -0
  243. package/crud/comment.crud.js +431 -0
  244. package/crud/crud.d.ts +63 -0
  245. package/crud/crud.d.ts.map +1 -0
  246. package/crud/crud.js +278 -0
  247. package/crud/error.d.ts +23 -0
  248. package/crud/error.d.ts.map +1 -0
  249. package/crud/error.js +51 -0
  250. package/crud/meta.crud.d.ts +69 -0
  251. package/crud/meta.crud.d.ts.map +1 -0
  252. package/crud/meta.crud.js +244 -0
  253. package/crud/options.crud.d.ts +37 -0
  254. package/crud/options.crud.d.ts.map +1 -0
  255. package/crud/options.crud.js +178 -0
  256. package/crud/post.crud.d.ts +225 -0
  257. package/crud/post.crud.d.ts.map +1 -0
  258. package/crud/post.crud.js +589 -0
  259. package/crud/revision.crud.d.ts +76 -0
  260. package/crud/revision.crud.d.ts.map +1 -0
  261. package/crud/revision.crud.js +155 -0
  262. package/crud/roles.crud.d.ts +50 -0
  263. package/crud/roles.crud.d.ts.map +1 -0
  264. package/crud/roles.crud.js +198 -0
  265. package/crud/settings.crud.d.ts +50 -0
  266. package/crud/settings.crud.d.ts.map +1 -0
  267. package/crud/settings.crud.js +153 -0
  268. package/crud/site.crud.d.ts +62 -0
  269. package/crud/site.crud.d.ts.map +1 -0
  270. package/crud/site.crud.js +241 -0
  271. package/crud/sitemeta.crud.d.ts +55 -0
  272. package/crud/sitemeta.crud.d.ts.map +1 -0
  273. package/crud/sitemeta.crud.js +97 -0
  274. package/crud/term.crud.d.ts +85 -0
  275. package/crud/term.crud.d.ts.map +1 -0
  276. package/crud/term.crud.js +285 -0
  277. package/crud/user-self-registration.crud.d.ts +57 -0
  278. package/crud/user-self-registration.crud.d.ts.map +1 -0
  279. package/crud/user-self-registration.crud.js +173 -0
  280. package/crud/user.crud.d.ts +147 -0
  281. package/crud/user.crud.d.ts.map +1 -0
  282. package/crud/user.crud.js +626 -0
  283. package/database.d.ts +18 -0
  284. package/database.d.ts.map +1 -0
  285. package/database.js +80 -0
  286. package/decorators/async-init.d.ts +2 -0
  287. package/decorators/async-init.d.ts.map +1 -0
  288. package/decorators/async-init.js +7 -0
  289. package/decorators/component.d.ts +12 -0
  290. package/decorators/component.d.ts.map +1 -0
  291. package/decorators/component.js +47 -0
  292. package/decorators/hooks.d.ts +5 -0
  293. package/decorators/hooks.d.ts.map +1 -0
  294. package/decorators/hooks.js +30 -0
  295. package/defaults/extensions.d.ts +4 -0
  296. package/defaults/extensions.d.ts.map +1 -0
  297. package/defaults/extensions.js +34 -0
  298. package/defaults/index.d.ts +11 -0
  299. package/defaults/index.d.ts.map +1 -0
  300. package/defaults/index.js +49 -0
  301. package/defaults/options.d.ts +6 -0
  302. package/defaults/options.d.ts.map +1 -0
  303. package/defaults/options.js +267 -0
  304. package/defaults/post-status.d.ts +10 -0
  305. package/defaults/post-status.d.ts.map +1 -0
  306. package/defaults/post-status.js +83 -0
  307. package/defaults/post-types.d.ts +4 -0
  308. package/defaults/post-types.d.ts.map +1 -0
  309. package/defaults/post-types.js +72 -0
  310. package/defaults/roles.d.ts +31 -0
  311. package/defaults/roles.d.ts.map +1 -0
  312. package/defaults/roles.js +213 -0
  313. package/defaults/seeder.d.ts +34 -0
  314. package/defaults/seeder.d.ts.map +1 -0
  315. package/defaults/seeder.js +201 -0
  316. package/defaults/sitemeta.d.ts +2 -0
  317. package/defaults/sitemeta.d.ts.map +1 -0
  318. package/defaults/sitemeta.js +38 -0
  319. package/defaults/subdirectory-reserved-names.d.ts +2 -0
  320. package/defaults/subdirectory-reserved-names.d.ts.map +1 -0
  321. package/defaults/subdirectory-reserved-names.js +16 -0
  322. package/defaults/taxonomies.d.ts +5 -0
  323. package/defaults/taxonomies.d.ts.map +1 -0
  324. package/defaults/taxonomies.js +57 -0
  325. package/defaults/timezone.d.ts +2 -0
  326. package/defaults/timezone.d.ts.map +1 -0
  327. package/defaults/timezone.js +353 -0
  328. package/package.json +51 -0
  329. package/query-builder/alias.d.ts +24 -0
  330. package/query-builder/alias.d.ts.map +1 -0
  331. package/query-builder/alias.js +64 -0
  332. package/query-builder/blogs.query.d.ts +22 -0
  333. package/query-builder/blogs.query.d.ts.map +1 -0
  334. package/query-builder/blogs.query.js +85 -0
  335. package/query-builder/comments.query.d.ts +35 -0
  336. package/query-builder/comments.query.d.ts.map +1 -0
  337. package/query-builder/comments.query.js +211 -0
  338. package/query-builder/common.query.d.ts +18 -0
  339. package/query-builder/common.query.d.ts.map +1 -0
  340. package/query-builder/common.query.js +58 -0
  341. package/query-builder/index.d.ts +12 -0
  342. package/query-builder/index.d.ts.map +1 -0
  343. package/query-builder/index.js +27 -0
  344. package/query-builder/meta.query.d.ts +45 -0
  345. package/query-builder/meta.query.d.ts.map +1 -0
  346. package/query-builder/meta.query.js +188 -0
  347. package/query-builder/options.query.d.ts +19 -0
  348. package/query-builder/options.query.d.ts.map +1 -0
  349. package/query-builder/options.query.js +57 -0
  350. package/query-builder/posts.query.d.ts +30 -0
  351. package/query-builder/posts.query.d.ts.map +1 -0
  352. package/query-builder/posts.query.js +208 -0
  353. package/query-builder/query-builder.d.ts +21 -0
  354. package/query-builder/query-builder.d.ts.map +1 -0
  355. package/query-builder/query-builder.js +70 -0
  356. package/query-builder/query-builders.d.ts +18 -0
  357. package/query-builder/query-builders.d.ts.map +1 -0
  358. package/query-builder/query-builders.js +64 -0
  359. package/query-builder/site.query.d.ts +22 -0
  360. package/query-builder/site.query.d.ts.map +1 -0
  361. package/query-builder/site.query.js +85 -0
  362. package/query-builder/terms.query.d.ts +47 -0
  363. package/query-builder/terms.query.d.ts.map +1 -0
  364. package/query-builder/terms.query.js +233 -0
  365. package/query-builder/users.query.d.ts +37 -0
  366. package/query-builder/users.query.d.ts.map +1 -0
  367. package/query-builder/users.query.js +188 -0
  368. package/schema-builder/proxy.d.ts +10 -0
  369. package/schema-builder/proxy.d.ts.map +1 -0
  370. package/schema-builder/proxy.js +19 -0
  371. package/schema-builder/schema-builder.d.ts +21 -0
  372. package/schema-builder/schema-builder.d.ts.map +1 -0
  373. package/schema-builder/schema-builder.js +207 -0
  374. package/schema-builder/schema.d.ts +20 -0
  375. package/schema-builder/schema.d.ts.map +1 -0
  376. package/schema-builder/schema.js +527 -0
  377. package/transactions/blog.trx.d.ts +37 -0
  378. package/transactions/blog.trx.d.ts.map +1 -0
  379. package/transactions/blog.trx.js +296 -0
  380. package/transactions/comment.trx.d.ts +22 -0
  381. package/transactions/comment.trx.d.ts.map +1 -0
  382. package/transactions/comment.trx.js +311 -0
  383. package/transactions/index.d.ts +15 -0
  384. package/transactions/index.d.ts.map +1 -0
  385. package/transactions/index.js +30 -0
  386. package/transactions/link.trx.d.ts +22 -0
  387. package/transactions/link.trx.d.ts.map +1 -0
  388. package/transactions/link.trx.js +208 -0
  389. package/transactions/meta.trx.d.ts +30 -0
  390. package/transactions/meta.trx.d.ts.map +1 -0
  391. package/transactions/meta.trx.js +197 -0
  392. package/transactions/options.trx.d.ts +31 -0
  393. package/transactions/options.trx.d.ts.map +1 -0
  394. package/transactions/options.trx.js +192 -0
  395. package/transactions/post.trx.d.ts +48 -0
  396. package/transactions/post.trx.d.ts.map +1 -0
  397. package/transactions/post.trx.js +906 -0
  398. package/transactions/registration-log.trx.d.ts +14 -0
  399. package/transactions/registration-log.trx.d.ts.map +1 -0
  400. package/transactions/registration-log.trx.js +103 -0
  401. package/transactions/revision.trx.d.ts +32 -0
  402. package/transactions/revision.trx.d.ts.map +1 -0
  403. package/transactions/revision.trx.js +278 -0
  404. package/transactions/roles.trx.d.ts +20 -0
  405. package/transactions/roles.trx.d.ts.map +1 -0
  406. package/transactions/roles.trx.js +144 -0
  407. package/transactions/seeder.trx.d.ts +43 -0
  408. package/transactions/seeder.trx.d.ts.map +1 -0
  409. package/transactions/seeder.trx.js +530 -0
  410. package/transactions/signup.trx.d.ts +53 -0
  411. package/transactions/signup.trx.d.ts.map +1 -0
  412. package/transactions/signup.trx.js +305 -0
  413. package/transactions/site.trx.d.ts +21 -0
  414. package/transactions/site.trx.d.ts.map +1 -0
  415. package/transactions/site.trx.js +167 -0
  416. package/transactions/term.trx.d.ts +51 -0
  417. package/transactions/term.trx.d.ts.map +1 -0
  418. package/transactions/term.trx.js +838 -0
  419. package/transactions/trx.d.ts +9 -0
  420. package/transactions/trx.d.ts.map +1 -0
  421. package/transactions/trx.js +20 -0
  422. package/transactions/user.trx.d.ts +45 -0
  423. package/transactions/user.trx.d.ts.map +1 -0
  424. package/transactions/user.trx.js +535 -0
  425. package/types/capabilities.d.ts +71 -0
  426. package/types/common.d.ts +16 -0
  427. package/types/component.d.ts +3 -0
  428. package/types/config.d.ts +33 -0
  429. package/types/crud.d.ts +230 -0
  430. package/types/database.d.ts +50 -0
  431. package/types/hooks/actions.d.ts +67 -0
  432. package/types/hooks/command.d.ts +17 -0
  433. package/types/hooks/filters.d.ts +86 -0
  434. package/types/hooks/index.d.ts +11 -0
  435. package/types/index.d.ts +18 -0
  436. package/types/logging.d.ts +1 -0
  437. package/types/meta.d.ts +9 -0
  438. package/types/options.d.ts +3 -0
  439. package/types/post.d.ts +54 -0
  440. package/types/query-builder.d.ts +11 -0
  441. package/types/role.d.ts +34 -0
  442. package/types/schema.d.ts +11 -0
  443. package/types/schema.d.ts.map +1 -0
  444. package/types/schema.js +2 -0
  445. package/types/taxonomy.d.ts +29 -0
  446. package/types/timezone.d.ts +3 -0
  447. package/types/transactions.d.ts +32 -0
  448. package/types/user.d.ts +12 -0
  449. package/types/validating.d.ts +9 -0
  450. package/types/validating.d.ts.map +1 -0
  451. package/types/validating.js +2 -0
  452. package/validators/config.d.ts +948 -0
  453. package/validators/config.d.ts.map +1 -0
  454. package/validators/config.js +149 -0
  455. package/validators/crud.d.ts +571 -0
  456. package/validators/crud.d.ts.map +1 -0
  457. package/validators/crud.js +281 -0
  458. package/validators/database.d.ts +958 -0
  459. package/validators/database.d.ts.map +1 -0
  460. package/validators/database.js +245 -0
  461. package/validators/date.d.ts +4 -0
  462. package/validators/date.d.ts.map +1 -0
  463. package/validators/date.js +15 -0
  464. package/validators/helpers.d.ts +16 -0
  465. package/validators/helpers.d.ts.map +1 -0
  466. package/validators/helpers.js +86 -0
  467. package/validators/index.d.ts +10 -0
  468. package/validators/index.d.ts.map +1 -0
  469. package/validators/index.js +48 -0
  470. package/validators/options.d.ts +303 -0
  471. package/validators/options.d.ts.map +1 -0
  472. package/validators/options.js +106 -0
  473. package/validators/post-status.d.ts +42 -0
  474. package/validators/post-status.d.ts.map +1 -0
  475. package/validators/post-status.js +18 -0
  476. package/validators/query.d.ts +534 -0
  477. package/validators/query.d.ts.map +1 -0
  478. package/validators/query.js +110 -0
  479. package/validators/roles.d.ts +22 -0
  480. package/validators/roles.d.ts.map +1 -0
  481. package/validators/roles.js +9 -0
  482. package/validators/sitemeta.d.ts +105 -0
  483. package/validators/sitemeta.d.ts.map +1 -0
  484. package/validators/sitemeta.js +39 -0
  485. package/validators/transactions/blog.d.ts +225 -0
  486. package/validators/transactions/blog.d.ts.map +1 -0
  487. package/validators/transactions/blog.js +63 -0
  488. package/validators/transactions/comment.d.ts +155 -0
  489. package/validators/transactions/comment.d.ts.map +1 -0
  490. package/validators/transactions/comment.js +68 -0
  491. package/validators/transactions/index.d.ts +11 -0
  492. package/validators/transactions/index.d.ts.map +1 -0
  493. package/validators/transactions/index.js +26 -0
  494. package/validators/transactions/link.d.ts +128 -0
  495. package/validators/transactions/link.d.ts.map +1 -0
  496. package/validators/transactions/link.js +60 -0
  497. package/validators/transactions/meta.d.ts +23 -0
  498. package/validators/transactions/meta.d.ts.map +1 -0
  499. package/validators/transactions/meta.js +18 -0
  500. package/validators/transactions/post.d.ts +234 -0
  501. package/validators/transactions/post.d.ts.map +1 -0
  502. package/validators/transactions/post.js +100 -0
  503. package/validators/transactions/roles.d.ts +18 -0
  504. package/validators/transactions/roles.d.ts.map +1 -0
  505. package/validators/transactions/roles.js +13 -0
  506. package/validators/transactions/signup.d.ts +35 -0
  507. package/validators/transactions/signup.d.ts.map +1 -0
  508. package/validators/transactions/signup.js +51 -0
  509. package/validators/transactions/site.d.ts +36 -0
  510. package/validators/transactions/site.d.ts.map +1 -0
  511. package/validators/transactions/site.js +49 -0
  512. package/validators/transactions/term.d.ts +57 -0
  513. package/validators/transactions/term.d.ts.map +1 -0
  514. package/validators/transactions/term.js +44 -0
  515. package/validators/transactions/user.d.ts +182 -0
  516. package/validators/transactions/user.d.ts.map +1 -0
  517. package/validators/transactions/user.js +104 -0
@@ -0,0 +1,9 @@
1
+ import { Components } from "../core/components";
2
+ import { Tables } from "../core/tables";
3
+ export declare abstract class Trx {
4
+ #private;
5
+ tables: Tables;
6
+ constructor(components: Components);
7
+ usingBlog(blogId: number): this;
8
+ }
9
+ //# sourceMappingURL=trx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trx.d.ts","sourceRoot":"","sources":["../../src/transactions/trx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,8BAAsB,GAAG;;IACvB,MAAM,EAAE,MAAM,CAAC;gBAEH,UAAU,EAAE,UAAU;IAMlC,SAAS,CAAC,MAAM,EAAE,MAAM;CAKzB"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Trx = void 0;
4
+ const current_1 = require("../core/current");
5
+ const tables_1 = require("../core/tables");
6
+ class Trx {
7
+ tables;
8
+ #components;
9
+ constructor(components) {
10
+ this.#components = components;
11
+ const current = this.#components.get(current_1.Current);
12
+ this.tables = current.tables;
13
+ }
14
+ usingBlog(blogId) {
15
+ this.tables = this.#components.get(tables_1.Tables);
16
+ this.tables.index = blogId;
17
+ return this;
18
+ }
19
+ }
20
+ exports.Trx = Trx;
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { Config } from "../config";
3
+ import { Components } from "../core/components";
4
+ import { Logger } from "../core/logger";
5
+ import { User } from "../core/user";
6
+ import { Validator } from "../core/validator";
7
+ import { Vars } from "../core/vars";
8
+ import Database from "../database";
9
+ import * as val from "../validators";
10
+ import { Trx } from "./trx";
11
+ import type * as types from "../types";
12
+ type DataUpsert = z.infer<typeof val.trx.userUpsert>;
13
+ export declare class UserTrx extends Trx {
14
+ private database;
15
+ private logger;
16
+ private components;
17
+ private config;
18
+ private validator;
19
+ private vars;
20
+ constructor(database: Database, logger: Logger, components: Components, config: Config, validator: Validator, vars: Vars);
21
+ upsert(input: Partial<DataUpsert>, options?: {
22
+ attachRole?: boolean;
23
+ removeRole?: boolean;
24
+ }): Promise<number>;
25
+ upsertRole(userId: number, roleNameOrNames?: types.UpsertRoleName): Promise<boolean>;
26
+ upsertRole(userId: number, roleNameOrNames?: string): Promise<boolean>;
27
+ upsertRole(userId: number, roleNameOrNames?: string[]): Promise<boolean>;
28
+ upsertRole(userId: number, roleNameOrNames?: types.UpsertRoleName[]): Promise<boolean>;
29
+ syncSuperAdmin(userId: number, options?: Partial<{
30
+ siteId: number;
31
+ blogId: number;
32
+ remove: boolean;
33
+ }>): Promise<void>;
34
+ remove(userId: number, reassign?: number): Promise<boolean>;
35
+ removeFromAllBlogs(userId: number, reassignList?: Record<number, number>): Promise<boolean>;
36
+ removeMeta(userIdOrUser: number | User): Promise<void>;
37
+ removeRole(userId: number, options?: Partial<{
38
+ removeSuperAdmin: boolean;
39
+ }>): Promise<boolean>;
40
+ registerNew(userLogin: string, email: string): Promise<number>;
41
+ resetActivationKey(user: User): Promise<string>;
42
+ revokeActivationKey(user: User): Promise<void>;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=user.trx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.trx.d.ts","sourceRoot":"","sources":["../../src/transactions/user.trx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAKpC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAKrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,KAAK,KAAK,KAAK,MAAM,UAAU,CAAC;AACvC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAyBrD,qBACa,OAAQ,SAAQ,GAAG;IAE5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,IAAI;gBALJ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI;IAOd,MAAM,CACV,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,EAC1B,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAyNG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,GACrC,OAAO,CAAC,OAAO,CAAC;IACb,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACtE,UAAU,CACd,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,OAAO,CAAC;IACb,UAAU,CACd,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,GACvC,OAAO,CAAC,OAAO,CAAC;IAiCb,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IA+DE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAiFxC,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAuCjC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IA+BtC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IAmBE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IA2C5C,kBAAkB,CAAC,IAAI,EAAE,IAAI;IAuB7B,mBAAmB,CAAC,IAAI,EAAE,IAAI;CAerC"}
@@ -0,0 +1,535 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.UserTrx = void 0;
49
+ const common_1 = require("../common/");
50
+ const config_1 = require("../config");
51
+ const components_1 = require("../core/components");
52
+ const current_1 = require("../core/current");
53
+ const logger_1 = require("../core/logger");
54
+ const options_1 = require("../core/options");
55
+ const blog_util_1 = require("../core/utils/blog.util");
56
+ const query_util_1 = require("../core/utils/query.util");
57
+ const roles_util_1 = require("../core/utils/roles.util");
58
+ const user_util_1 = require("../core/utils/user.util");
59
+ const validator_1 = require("../core/validator");
60
+ const vars_1 = require("../core/vars");
61
+ const database_1 = __importDefault(require("../database"));
62
+ const component_1 = require("../decorators/component");
63
+ const val = __importStar(require("../validators"));
64
+ const blog_trx_1 = require("./blog.trx");
65
+ const link_trx_1 = require("./link.trx");
66
+ const meta_trx_1 = require("./meta.trx");
67
+ const post_trx_1 = require("./post.trx");
68
+ const trx_1 = require("./trx");
69
+ let UserTrx = class UserTrx extends trx_1.Trx {
70
+ database;
71
+ logger;
72
+ components;
73
+ config;
74
+ validator;
75
+ vars;
76
+ constructor(database, logger, components, config, validator, vars) {
77
+ super(components);
78
+ this.database = database;
79
+ this.logger = logger;
80
+ this.components = components;
81
+ this.config = config;
82
+ this.validator = validator;
83
+ this.vars = vars;
84
+ }
85
+ // wpmu_create_user
86
+ //
87
+ async upsert(input, options) {
88
+ const { attachRole = true, removeRole = false } = options ?? {};
89
+ const userUtil = this.components.get(user_util_1.UserUtil);
90
+ let update = false;
91
+ let userBefore = undefined;
92
+ if (input.ID) {
93
+ update = true;
94
+ userBefore = await userUtil.get(input.ID);
95
+ const roleBefore = await userBefore.role();
96
+ if (!userBefore.props) {
97
+ throw Error(`User not found - ${input.ID}`);
98
+ }
99
+ // Combine input with existing record
100
+ input = {
101
+ ...userBefore.props,
102
+ ...(await userBefore.meta.props()),
103
+ role: Array.from(roleBefore.names),
104
+ ...input,
105
+ };
106
+ }
107
+ const queryUtil = this.components.get(query_util_1.QueryUtil);
108
+ const parsedInput = val.trx.userUpsert.parse(input);
109
+ const data = {
110
+ ID: parsedInput.ID ?? 0,
111
+ user_url: parsedInput.user_url ?? "",
112
+ user_registered: parsedInput.user_registered ?? common_1.formatting.dateMySQL(),
113
+ user_activation_key: parsedInput.user_activation_key,
114
+ first_name: parsedInput.first_name,
115
+ user_pass: parsedInput?.user_pass ?? "",
116
+ };
117
+ let metaInput = {
118
+ nickname: parsedInput.nickname,
119
+ comment_shortcuts: parsedInput.comment_shortcuts,
120
+ first_name: parsedInput.first_name,
121
+ last_name: parsedInput.last_name,
122
+ description: parsedInput.description,
123
+ rich_editing: parsedInput.rich_editing,
124
+ syntax_highlighting: parsedInput.syntax_highlighting,
125
+ admin_color: parsedInput.admin_color.replace(/[^a-z0-9 _.\-@]/gi, ""),
126
+ use_ssl: parsedInput.use_ssl,
127
+ show_admin_bar_front: parsedInput.show_admin_bar_front,
128
+ locale: parsedInput.locale,
129
+ };
130
+ if (!update) {
131
+ data.user_login = val.trx.userLogin.parse(parsedInput.user_login);
132
+ data.user_pass = (0, common_1.hashPassword)(parsedInput.user_pass);
133
+ }
134
+ data.user_login = common_1.formatting.username(parsedInput.user_login);
135
+ if (0 >= data.user_login.length || 60 < data.user_login.length) {
136
+ throw new Error(`user_loign is too short or long - ${data.user_login}`);
137
+ }
138
+ const userLogin = parsedInput.user_login;
139
+ if (0 <= metaInput.nickname.length) {
140
+ metaInput.nickname = userLogin;
141
+ }
142
+ if (!update &&
143
+ (await queryUtil.users((query) => query.where("user_login", userLogin)))) {
144
+ throw new Error(`username already exists - ${userLogin}`);
145
+ }
146
+ /*
147
+ * If a nicename is provided, remove unsafe user characters before using it.
148
+ * Otherwise build a nicename from the user_login.
149
+ */
150
+ const userNicename = 0 < parsedInput.user_nicename.length
151
+ ? common_1.formatting.username(parsedInput.user_nicename, true)
152
+ : userLogin.substring(0, 50);
153
+ data.user_nicename = await userUtil.getUniqueNicename(userNicename, userLogin);
154
+ /*
155
+ * If there is no update, just check for `email_exists`. If there is an update,
156
+ * check if current email and new email are the same, and check `email_exists`
157
+ * accordingly.
158
+ */
159
+ if ((!update ||
160
+ (userBefore &&
161
+ parsedInput.user_email !== userBefore.props?.user_email)) &&
162
+ (await queryUtil.users((query) => query.where("user_email", parsedInput.user_email)))) {
163
+ throw new Error(`Email is already used - ${parsedInput.user_email} ${userBefore ? userBefore.props?.user_email : ""}`);
164
+ }
165
+ data.user_email = parsedInput.user_email;
166
+ if (100 < data.user_url.length) {
167
+ throw new Error(`user url is too long - ${data.user_url}`);
168
+ }
169
+ if (parsedInput.spam && !this.config.isMultiSite()) {
170
+ throw new Error("Marking a user as spam is only supported on Multisite.");
171
+ }
172
+ if (this.config.isMultiSite()) {
173
+ data.spam = parsedInput.spam ?? 0;
174
+ }
175
+ metaInput.nickname = parsedInput.nickname ?? userLogin;
176
+ data.display_name = parsedInput.display_name;
177
+ if (0 === data.display_name.length) {
178
+ data.display_name =
179
+ `${metaInput.first_name} ${metaInput.last_name}`.trim();
180
+ }
181
+ if (0 === data.display_name.length) {
182
+ data.display_name = userLogin;
183
+ }
184
+ let dataUpsert = {};
185
+ try {
186
+ dataUpsert = this.validator.execAny(update ? val.trx.userUpdate : val.trx.userInsert, Object.entries(data)
187
+ .map(([key, value]) => ({
188
+ [key]: common_1.formatting.unslash(value),
189
+ }))
190
+ .reduce((obj, item) => ({ ...obj, ...item }), {}));
191
+ }
192
+ catch (e) {
193
+ this.logger.warn(`parse error: ${e}`, { data });
194
+ throw e;
195
+ }
196
+ if (!dataUpsert) {
197
+ throw new Error(`Invalid post data - ${JSON.stringify(data)}`);
198
+ }
199
+ if (this.config.isMultiSite()) {
200
+ dataUpsert.spam = data.spam;
201
+ }
202
+ const trx = await this.database.transaction;
203
+ try {
204
+ if (update) {
205
+ if (userBefore &&
206
+ (data.user_email !== userBefore.props?.user_email ||
207
+ data.user_pass !== userBefore.props.user_pass)) {
208
+ dataUpsert.user_activation_key = "";
209
+ }
210
+ await trx
211
+ .table(this.tables.get("users"))
212
+ .where("ID", data.ID)
213
+ .update(dataUpsert);
214
+ }
215
+ else {
216
+ await trx
217
+ .insert(dataUpsert)
218
+ .into(this.tables.get("users"))
219
+ .then((v) => {
220
+ data.ID = v[0];
221
+ });
222
+ }
223
+ }
224
+ catch (e) {
225
+ await trx.rollback();
226
+ throw new Error(`Failed to insert user - ${e}`);
227
+ }
228
+ await trx.commit();
229
+ const user = await userUtil.get(data.ID);
230
+ if (!user.props) {
231
+ throw new Error(`User not found - ${data.ID}`);
232
+ }
233
+ const userId = user.props.ID;
234
+ metaInput = { ...metaInput, ...parsedInput.meta_input };
235
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
236
+ for (const [key, value] of Object.entries(metaInput)) {
237
+ if (!value) {
238
+ continue;
239
+ }
240
+ await metaTrx.upsert("user", userId, key, value, {
241
+ serialize: typeof value == "object" || Array.isArray(value),
242
+ });
243
+ }
244
+ if (update && removeRole) {
245
+ await this.removeRole(userId);
246
+ }
247
+ else if (attachRole) {
248
+ await this.upsertRole(userId, parsedInput.role);
249
+ }
250
+ return userId;
251
+ }
252
+ async upsertRole(userId, roleNameOrNames) {
253
+ const optionsComponent = this.components.get(options_1.Options);
254
+ let roleNames = {};
255
+ if (!roleNameOrNames) {
256
+ roleNameOrNames =
257
+ (await optionsComponent.get("default_role")) ?? "subscriber";
258
+ }
259
+ if ("string" === typeof roleNameOrNames) {
260
+ roleNames = { [roleNameOrNames]: true };
261
+ }
262
+ else if (Array.isArray(roleNameOrNames)) {
263
+ for (const roleName of roleNameOrNames) {
264
+ roleNames = { ...roleNames, [roleName]: true };
265
+ }
266
+ }
267
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
268
+ const result = await metaTrx.upsert("user", userId, `${this.tables.prefix}capabilities`, roleNames, {
269
+ serialize: true,
270
+ });
271
+ return result;
272
+ }
273
+ async syncSuperAdmin(userId, options) {
274
+ const userUtil = this.components.get(user_util_1.UserUtil);
275
+ const { remove = false, blogId } = options ?? {};
276
+ let { siteId } = options ?? {};
277
+ if (blogId) {
278
+ const blogUtil = this.components.get(blog_util_1.BlogUtil);
279
+ const blog = await blogUtil.get(blogId);
280
+ if (!blog.props?.site_id) {
281
+ throw new Error("Invalid Blog");
282
+ }
283
+ siteId = blog.props?.site_id;
284
+ }
285
+ if (!siteId) {
286
+ const current = this.components.get(current_1.Current);
287
+ siteId = current.siteId;
288
+ }
289
+ const user = await userUtil.get(userId);
290
+ if (!user.props?.user_login) {
291
+ throw new Error("User not found");
292
+ }
293
+ const userLogin = user.props.user_login;
294
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
295
+ const rolesUtil = this.components.get(roles_util_1.RolesUtil);
296
+ const superAdmins = await rolesUtil.getSuperAdmins({
297
+ siteId,
298
+ });
299
+ const newSuperAdmins = new Set();
300
+ if (remove) {
301
+ // Skip if there's only one super admin in site.
302
+ // i.e. make sure there's at least one super admin.
303
+ superAdmins.length > 1 &&
304
+ superAdmins.map((superAdmin) => superAdmin !== userLogin && newSuperAdmins.add(superAdmin));
305
+ }
306
+ else {
307
+ superAdmins.map((superAdmin) => newSuperAdmins.add(superAdmin));
308
+ newSuperAdmins.add(userLogin);
309
+ }
310
+ newSuperAdmins.size > 0 &&
311
+ newSuperAdmins.size !== superAdmins.length &&
312
+ (await metaTrx.upsert("site", siteId, "site_admins", Array.from(newSuperAdmins), {
313
+ serialize: true,
314
+ }));
315
+ }
316
+ // wp_delete_user
317
+ async remove(userId, reassign) {
318
+ const userUtil = this.components.get(user_util_1.UserUtil);
319
+ const queryUtil = this.components.get(query_util_1.QueryUtil);
320
+ const user = await userUtil.get(userId);
321
+ if (!user.props) {
322
+ throw new Error(`User not found - ${userId}`);
323
+ }
324
+ let reassignUser = undefined;
325
+ if (reassign) {
326
+ reassignUser = await userUtil.get(reassign);
327
+ if (!reassignUser.props) {
328
+ throw new Error(`User not found - ${reassign}`);
329
+ }
330
+ }
331
+ const postTypeObject = this.config.config.posts.types;
332
+ if (!reassign) {
333
+ const postTypesToDelete = [];
334
+ for (const [type, typeObject] of Object.entries(postTypeObject)) {
335
+ if (typeObject.deleteWithUser ||
336
+ typeObject.supports.includes("author")) {
337
+ postTypesToDelete.push(type);
338
+ }
339
+ }
340
+ const postsToDelete = (await queryUtil.posts((query) => {
341
+ query
342
+ .where("post_author", userId)
343
+ .whereIn("post_type", postTypesToDelete);
344
+ })) ?? [];
345
+ const postTrx = this.components.get(post_trx_1.PostTrx);
346
+ for (const post of postsToDelete) {
347
+ await postTrx.remove(post.ID);
348
+ }
349
+ const linksToDelete = (await queryUtil.common("links", (query) => {
350
+ query.where("link_owner", userId);
351
+ })) ?? [];
352
+ const linkTrx = this.components.get(link_trx_1.LinkTrx);
353
+ for (const link of linksToDelete) {
354
+ await linkTrx.remove(link.link_id);
355
+ }
356
+ }
357
+ else {
358
+ const postTrx = this.components.get(post_trx_1.PostTrx);
359
+ const linkTrx = this.components.get(link_trx_1.LinkTrx);
360
+ // Re-assign posts and links
361
+ await postTrx.changeAuthor(userId, reassign);
362
+ await linkTrx.changeUser(userId, reassign);
363
+ }
364
+ // FINALLY, delete user.
365
+ if (this.config.isMultiSite()) {
366
+ const blogTrx = this.components.get(blog_trx_1.BlogTrx);
367
+ const current = this.components.get(current_1.Current);
368
+ await blogTrx.removeUser(current.blogId, userId);
369
+ }
370
+ else {
371
+ await this.removeMeta(user);
372
+ const trx = await this.database.transaction;
373
+ try {
374
+ await trx.table(this.tables.get("users")).where("ID", userId).del();
375
+ }
376
+ catch (e) {
377
+ await trx.rollback();
378
+ throw new Error("Failed to delete user");
379
+ }
380
+ await trx.commit();
381
+ }
382
+ return true;
383
+ }
384
+ // Remove user from entire blogs
385
+ async removeFromAllBlogs(userId, reassignList // <blogId, userId to reassign>
386
+ ) {
387
+ if (!this.config.isMultiSite()) {
388
+ throw new Error("Multisite mode is disabled");
389
+ }
390
+ const userUtil = this.components.get(user_util_1.UserUtil);
391
+ const sites = await userUtil.getSites(userId);
392
+ const CONTEXT = this.vars.CONTEXT;
393
+ for (const site of sites.sites ?? []) {
394
+ for (const blog of site.blogs ?? []) {
395
+ const blogId = blog.blog_id;
396
+ const siteId = blog.site_id;
397
+ const clonedContext = await CONTEXT.clone();
398
+ await clonedContext.current.switchSite(siteId, blogId);
399
+ const reassign = reassignList ? reassignList[blogId] : undefined;
400
+ await clonedContext.utils.trx.user.remove(userId, reassign);
401
+ }
402
+ }
403
+ // Remove user meta
404
+ await this.removeMeta(userId);
405
+ // Remove user wp_users
406
+ const trx = await this.database.transaction;
407
+ try {
408
+ await trx.table(this.tables.get("users")).where("ID", userId).del();
409
+ }
410
+ catch (e) {
411
+ await trx.rollback();
412
+ throw new Error("Failed to delete user");
413
+ }
414
+ await trx.commit();
415
+ return true;
416
+ }
417
+ async removeMeta(userIdOrUser) {
418
+ const userUtil = this.components.get(user_util_1.UserUtil);
419
+ const queryUtil = this.components.get(query_util_1.QueryUtil);
420
+ const user = typeof userIdOrUser === "number"
421
+ ? await userUtil.get(userIdOrUser)
422
+ : userIdOrUser;
423
+ if (!user.props) {
424
+ throw new Error("User not found");
425
+ }
426
+ const userId = user.props.ID;
427
+ const metaToDelete = (await queryUtil.meta("user", (query) => {
428
+ query.withIds([userId]);
429
+ })) ?? [];
430
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
431
+ for (const meta of metaToDelete) {
432
+ if (typeof meta.meta_key !== "string") {
433
+ continue;
434
+ }
435
+ await metaTrx.remove("user", {
436
+ key: meta.meta_key,
437
+ objectId: userId,
438
+ });
439
+ }
440
+ }
441
+ async removeRole(userId, options) {
442
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
443
+ const { removeSuperAdmin = true } = options ?? {};
444
+ // Remove from super admins list
445
+ if (removeSuperAdmin) {
446
+ await this.syncSuperAdmin(userId, {
447
+ remove: true,
448
+ });
449
+ }
450
+ return await metaTrx.remove("user", {
451
+ objectId: userId,
452
+ key: `${this.tables.prefix}capabilities`,
453
+ });
454
+ }
455
+ // register_new_user
456
+ async registerNew(userLogin, email) {
457
+ userLogin = common_1.formatting.username(userLogin);
458
+ if (0 >= userLogin.length) {
459
+ throw new Error(`Please enter a username.`);
460
+ }
461
+ const userUtil = this.components.get(user_util_1.UserUtil);
462
+ let user = await userUtil.get(userLogin);
463
+ if (user.props) {
464
+ throw new Error(`This username is already registered. - ${userLogin}`);
465
+ }
466
+ // Check the email address.
467
+ if (0 >= email.length) {
468
+ throw new Error(`Please type your email address.`);
469
+ }
470
+ if (!this.validator.fieldSafe("users", "user_email", email)) {
471
+ throw new Error(`The email address is not correct. - ${email}`);
472
+ }
473
+ user = await userUtil.get(email);
474
+ if (user.props) {
475
+ throw new Error(`This email address is already registered. - ${email}`);
476
+ }
477
+ const userIdOrError = await this.upsert({
478
+ user_login: userLogin,
479
+ user_email: email,
480
+ }).catch((e) => e);
481
+ if (typeof userIdOrError !== "number") {
482
+ throw new Error(userIdOrError);
483
+ }
484
+ const userId = userIdOrError;
485
+ const metaTrx = this.components.get(meta_trx_1.MetaTrx);
486
+ await metaTrx.upsert("user", userId, "default_password_nag", true); // Set up the password change nag.
487
+ return userId;
488
+ }
489
+ // get_password_reset_key
490
+ async resetActivationKey(user) {
491
+ const userUtil = this.components.get(user_util_1.UserUtil);
492
+ if (!user.props || !userUtil.isPasswordResetAllowed(user)) {
493
+ throw new Error("Password reset is not allowed for this user");
494
+ }
495
+ // Generate something random for a password reset key.
496
+ const resetKey = (0, common_1.generatePassword)(20, false);
497
+ const hash = (0, common_1.hashPassword)(resetKey);
498
+ const activationKey = `${Math.floor(Date.now() / 1000)}:${hash}`;
499
+ try {
500
+ await this.upsert({
501
+ ID: user.props.ID,
502
+ user_activation_key: activationKey,
503
+ });
504
+ }
505
+ catch (e) {
506
+ throw new Error(`Failed to save activation key - ${e}`);
507
+ }
508
+ return resetKey;
509
+ }
510
+ async revokeActivationKey(user) {
511
+ if (!user.props) {
512
+ throw new Error("Invalid User");
513
+ }
514
+ const userId = user.props?.ID;
515
+ try {
516
+ await this.upsert({
517
+ ID: userId,
518
+ user_activation_key: "",
519
+ });
520
+ }
521
+ catch (e) {
522
+ throw new Error(`Failed to revoke activation key - ${e}`);
523
+ }
524
+ }
525
+ };
526
+ exports.UserTrx = UserTrx;
527
+ exports.UserTrx = UserTrx = __decorate([
528
+ (0, component_1.transactions)(),
529
+ __metadata("design:paramtypes", [database_1.default,
530
+ logger_1.Logger,
531
+ components_1.Components,
532
+ config_1.Config,
533
+ validator_1.Validator,
534
+ vars_1.Vars])
535
+ ], UserTrx);