@ezpaarse-project/ezreeport-sdk-js 1.3.0 → 2.0.0-beta.2

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 (205) hide show
  1. package/README.md +9 -10
  2. package/dist/api-C_g0ldUn.d.ts +24 -0
  3. package/dist/api-D8l8Ds3U.mjs +19 -0
  4. package/dist/api-D8l8Ds3U.mjs.map +1 -0
  5. package/dist/api-DVzOqMA2.js +2 -0
  6. package/dist/api-DVzOqMA2.js.map +1 -0
  7. package/dist/auth.d.ts +47 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/auth.mjs +7 -0
  11. package/dist/auth.mjs.map +1 -0
  12. package/dist/body-BqAn9vHJ.d.ts +16 -0
  13. package/dist/crons.d.ts +16 -0
  14. package/dist/crons.js +2 -0
  15. package/dist/crons.js.map +1 -0
  16. package/dist/crons.mjs +90 -0
  17. package/dist/crons.mjs.map +1 -0
  18. package/dist/decorator-C2gcn2rK.js +2 -0
  19. package/dist/decorator-C2gcn2rK.js.map +1 -0
  20. package/dist/decorator-DBkj--6g.mjs +26 -0
  21. package/dist/decorator-DBkj--6g.mjs.map +1 -0
  22. package/dist/elastic.d.ts +26 -0
  23. package/dist/elastic.js +2 -0
  24. package/dist/elastic.js.map +1 -0
  25. package/dist/elastic.mjs +45 -0
  26. package/dist/elastic.mjs.map +1 -0
  27. package/dist/fetch-Hd-ajPIl.js +2 -0
  28. package/dist/fetch-Hd-ajPIl.js.map +1 -0
  29. package/dist/fetch-xZFTa3q1.mjs +16 -0
  30. package/dist/fetch-xZFTa3q1.mjs.map +1 -0
  31. package/dist/health.d.ts +47 -0
  32. package/dist/health.js +2 -0
  33. package/dist/health.js.map +1 -0
  34. package/dist/health.mjs +41 -0
  35. package/dist/health.mjs.map +1 -0
  36. package/dist/helpers/aggregations.d.ts +109 -0
  37. package/dist/helpers/aggregations.js +2 -0
  38. package/dist/helpers/aggregations.js.map +1 -0
  39. package/dist/helpers/aggregations.mjs +42 -0
  40. package/dist/helpers/aggregations.mjs.map +1 -0
  41. package/dist/helpers/figures.d.ts +221 -0
  42. package/dist/helpers/figures.js +2 -0
  43. package/dist/helpers/figures.js.map +1 -0
  44. package/dist/helpers/figures.mjs +33 -0
  45. package/dist/helpers/figures.mjs.map +1 -0
  46. package/dist/helpers/filters.d.ts +8 -0
  47. package/dist/helpers/filters.js +2 -0
  48. package/dist/helpers/filters.js.map +1 -0
  49. package/dist/helpers/filters.mjs +7 -0
  50. package/dist/helpers/filters.mjs.map +1 -0
  51. package/dist/helpers/jobs.d.ts +109 -0
  52. package/dist/helpers/jobs.js +2 -0
  53. package/dist/helpers/jobs.js.map +1 -0
  54. package/dist/helpers/jobs.mjs +390 -0
  55. package/dist/helpers/jobs.mjs.map +1 -0
  56. package/dist/helpers/layouts.d.ts +19 -0
  57. package/dist/helpers/layouts.js +2 -0
  58. package/dist/helpers/layouts.js.map +1 -0
  59. package/dist/helpers/layouts.mjs +44 -0
  60. package/dist/helpers/layouts.mjs.map +1 -0
  61. package/dist/helpers/permissions.d.ts +15 -0
  62. package/dist/helpers/permissions.js +2 -0
  63. package/dist/helpers/permissions.js.map +1 -0
  64. package/dist/helpers/permissions.mjs +40 -0
  65. package/dist/helpers/permissions.mjs.map +1 -0
  66. package/dist/helpers/task-presets.d.ts +16 -0
  67. package/dist/helpers/task-presets.js +2 -0
  68. package/dist/helpers/task-presets.js.map +1 -0
  69. package/dist/helpers/task-presets.mjs +36 -0
  70. package/dist/helpers/task-presets.mjs.map +1 -0
  71. package/dist/helpers/tasks.d.ts +56 -0
  72. package/dist/helpers/tasks.js +2 -0
  73. package/dist/helpers/tasks.js.map +1 -0
  74. package/dist/helpers/tasks.mjs +195 -0
  75. package/dist/helpers/tasks.mjs.map +1 -0
  76. package/dist/helpers/templates.d.ts +34 -0
  77. package/dist/helpers/templates.js +2 -0
  78. package/dist/helpers/templates.js.map +1 -0
  79. package/dist/helpers/templates.mjs +130 -0
  80. package/dist/helpers/templates.mjs.map +1 -0
  81. package/dist/index-6ma-WCUD.d.ts +109 -0
  82. package/dist/index-btsFMVmd.js +2 -0
  83. package/dist/index-btsFMVmd.js.map +1 -0
  84. package/dist/index-niBfS4wD.mjs +331 -0
  85. package/dist/index-niBfS4wD.mjs.map +1 -0
  86. package/dist/index.d.ts +16 -0
  87. package/dist/index.js +2 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/index.mjs +7 -0
  90. package/dist/index.mjs.map +1 -0
  91. package/dist/methods-BBsb3M5p.mjs +142 -0
  92. package/dist/methods-BBsb3M5p.mjs.map +1 -0
  93. package/dist/methods-BJfwYB1p.mjs +126 -0
  94. package/dist/methods-BJfwYB1p.mjs.map +1 -0
  95. package/dist/methods-CGdoP4Hi.js +2 -0
  96. package/dist/methods-CGdoP4Hi.js.map +1 -0
  97. package/dist/methods-CO0p8irP.js +2 -0
  98. package/dist/methods-CO0p8irP.js.map +1 -0
  99. package/dist/methods-DOB4Ry8E.mjs +147 -0
  100. package/dist/methods-DOB4Ry8E.mjs.map +1 -0
  101. package/dist/methods-DU5cbtLn.js +2 -0
  102. package/dist/methods-DU5cbtLn.js.map +1 -0
  103. package/dist/methods-DUqC5qzU.mjs +146 -0
  104. package/dist/methods-DUqC5qzU.mjs.map +1 -0
  105. package/dist/methods-DY2VLwGd.mjs +116 -0
  106. package/dist/methods-DY2VLwGd.mjs.map +1 -0
  107. package/dist/methods-Jar1Wkpj.js +2 -0
  108. package/dist/methods-Jar1Wkpj.js.map +1 -0
  109. package/dist/methods-M4GU2OL5.mjs +51 -0
  110. package/dist/methods-M4GU2OL5.mjs.map +1 -0
  111. package/dist/methods-cUjyNkoK.js +2 -0
  112. package/dist/methods-cUjyNkoK.js.map +1 -0
  113. package/dist/methods-uWDk6_pk.js +2 -0
  114. package/dist/methods-uWDk6_pk.js.map +1 -0
  115. package/dist/namespaces.d.ts +28 -0
  116. package/dist/namespaces.js +2 -0
  117. package/dist/namespaces.js.map +1 -0
  118. package/dist/namespaces.mjs +2 -0
  119. package/dist/namespaces.mjs.map +1 -0
  120. package/dist/queues.d.ts +6 -0
  121. package/dist/queues.js +2 -0
  122. package/dist/queues.js.map +1 -0
  123. package/dist/queues.mjs +10 -0
  124. package/dist/queues.mjs.map +1 -0
  125. package/dist/reports.d.ts +85 -0
  126. package/dist/reports.js +2 -0
  127. package/dist/reports.js.map +1 -0
  128. package/dist/reports.mjs +12 -0
  129. package/dist/reports.mjs.map +1 -0
  130. package/dist/task-activity.d.ts +33 -0
  131. package/dist/task-activity.js +2 -0
  132. package/dist/task-activity.js.map +1 -0
  133. package/dist/task-activity.mjs +66 -0
  134. package/dist/task-activity.mjs.map +1 -0
  135. package/dist/task-presets.d.ts +61 -0
  136. package/dist/task-presets.js +2 -0
  137. package/dist/task-presets.js.map +1 -0
  138. package/dist/task-presets.mjs +10 -0
  139. package/dist/task-presets.mjs.map +1 -0
  140. package/dist/tasks-1x680qAf.mjs +34 -0
  141. package/dist/tasks-1x680qAf.mjs.map +1 -0
  142. package/dist/tasks-BDFAJ6Oi.d.ts +12 -0
  143. package/dist/tasks-hn70eL7B.js +2 -0
  144. package/dist/tasks-hn70eL7B.js.map +1 -0
  145. package/dist/tasks.d.ts +60 -0
  146. package/dist/tasks.js +2 -0
  147. package/dist/tasks.js.map +1 -0
  148. package/dist/tasks.mjs +10 -0
  149. package/dist/tasks.mjs.map +1 -0
  150. package/dist/templates-BgRTZc5c.d.ts +14 -0
  151. package/dist/templates-yZjsVuN9.js +2 -0
  152. package/dist/templates-yZjsVuN9.js.map +1 -0
  153. package/dist/templates-zMmVXt6k.mjs +30 -0
  154. package/dist/templates-zMmVXt6k.mjs.map +1 -0
  155. package/dist/templates.d.ts +51 -0
  156. package/dist/templates.js +2 -0
  157. package/dist/templates.js.map +1 -0
  158. package/dist/templates.mjs +9 -0
  159. package/dist/templates.mjs.map +1 -0
  160. package/dist/transform-DzLAfSJo.js +2 -0
  161. package/dist/transform-DzLAfSJo.js.map +1 -0
  162. package/dist/transform-EpMTJExd.mjs +26 -0
  163. package/dist/transform-EpMTJExd.mjs.map +1 -0
  164. package/dist/types-BGlpjxH9.d.ts +50 -0
  165. package/dist/types-C4AhJDkW.d.ts +77 -0
  166. package/dist/types-DcoMmjs3.d.ts +101 -0
  167. package/dist/types-jXqGnCKQ.d.ts +79 -0
  168. package/package.json +126 -25
  169. package/dist/browser/ezreeport-sdk-js.mjs +0 -979
  170. package/dist/browser/ezreeport-sdk-js.mjs.map +0 -1
  171. package/dist/browser/ezreeport-sdk-js.umd.js +0 -2
  172. package/dist/browser/ezreeport-sdk-js.umd.js.map +0 -1
  173. package/dist/node/ezreeport-sdk-js.js +0 -2
  174. package/dist/node/ezreeport-sdk-js.js.map +0 -1
  175. package/dist/node/ezreeport-sdk-js.mjs +0 -979
  176. package/dist/node/ezreeport-sdk-js.mjs.map +0 -1
  177. package/dist/types/index.d.ts +0 -32
  178. package/dist/types/lib/axios.d.ts +0 -51
  179. package/dist/types/lib/promises.d.ts +0 -21
  180. package/dist/types/lib/utils.d.ts +0 -27
  181. package/dist/types/modules/auth.d.ts +0 -90
  182. package/dist/types/modules/auth.public.d.ts +0 -1
  183. package/dist/types/modules/crons.d.ts +0 -102
  184. package/dist/types/modules/crons.public.d.ts +0 -1
  185. package/dist/types/modules/elastic.d.ts +0 -33
  186. package/dist/types/modules/elastic.public.d.ts +0 -1
  187. package/dist/types/modules/health.d.ts +0 -53
  188. package/dist/types/modules/health.public.d.ts +0 -1
  189. package/dist/types/modules/namespaces.d.ts +0 -29
  190. package/dist/types/modules/namespaces.public.d.ts +0 -1
  191. package/dist/types/modules/queues.d.ts +0 -120
  192. package/dist/types/modules/queues.public.d.ts +0 -1
  193. package/dist/types/modules/reports.d.ts +0 -204
  194. package/dist/types/modules/reports.public.d.ts +0 -1
  195. package/dist/types/modules/setup.d.ts +0 -17
  196. package/dist/types/modules/setup.public.d.ts +0 -2
  197. package/dist/types/modules/tasks.base.d.ts +0 -48
  198. package/dist/types/modules/tasks.d.ts +0 -249
  199. package/dist/types/modules/tasks.public.d.ts +0 -2
  200. package/dist/types/modules/tasksActivity.d.ts +0 -36
  201. package/dist/types/modules/tasksActivity.public.d.ts +0 -5
  202. package/dist/types/modules/tasksPresets.d.ts +0 -87
  203. package/dist/types/modules/tasksPresets.public.d.ts +0 -1
  204. package/dist/types/modules/templates.d.ts +0 -155
  205. package/dist/types/modules/templates.public.d.ts +0 -1
@@ -0,0 +1,44 @@
1
+ import { h as i } from "../templates-zMmVXt6k.mjs";
2
+ import { c as h, a as m, l as L } from "../templates-zMmVXt6k.mjs";
3
+ import { c as T, a as O, t as k } from "../tasks-1x680qAf.mjs";
4
+ function n(e) {
5
+ return "at" in e;
6
+ }
7
+ function f(e) {
8
+ return !n(e);
9
+ }
10
+ function p(e) {
11
+ return e.hash !== i(e);
12
+ }
13
+ function c(e, r, t) {
14
+ if (e.figures.some((a) => a.id === r.id))
15
+ throw new Error(`Figure "${r.id}" already exists`);
16
+ return e.figures.splice(t != null ? t : e.figures.length, 0, r), r;
17
+ }
18
+ function l(e, r) {
19
+ const t = e;
20
+ return t.figures = e.figures.filter((a) => a.id !== r.id), e;
21
+ }
22
+ function d(e, r, t) {
23
+ const a = e.figures.findIndex((s) => s.id === r.id);
24
+ if (a < 0)
25
+ throw new Error(`Figure "${r.id}" not found`);
26
+ const o = e;
27
+ return o.figures[a] = t, e;
28
+ }
29
+ export {
30
+ c as addFigureOfHelper,
31
+ h as createLayoutHelper,
32
+ m as createLayoutHelperFrom,
33
+ T as createTaskLayoutHelper,
34
+ O as createTaskLayoutHelperFrom,
35
+ p as hasLayoutHelperChanged,
36
+ i as hashLayout,
37
+ n as isTaskLayoutHelper,
38
+ f as isTemplateLayoutHelper,
39
+ L as layoutHelperToJSON,
40
+ l as removeFigureOfHelper,
41
+ k as taskLayoutHelperToJSON,
42
+ d as updateFigureOfHelper
43
+ };
44
+ //# sourceMappingURL=layouts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.mjs","sources":["../../src/helpers/templates/editor/layouts/index.ts"],"sourcesContent":["import { hashLayout, type LayoutHelper } from './templates';\nimport type { TaskLayoutHelper } from './tasks';\nimport type { AnyFigureHelper } from '../figures';\n\nexport type AnyLayoutHelper = LayoutHelper | TaskLayoutHelper;\n\nexport function isTaskLayoutHelper(layout: AnyLayoutHelper): layout is TaskLayoutHelper {\n return 'at' in layout;\n}\n\nexport function isTemplateLayoutHelper(layout: AnyLayoutHelper): layout is LayoutHelper {\n return !isTaskLayoutHelper(layout);\n}\n\nexport function hasLayoutHelperChanged(layout: AnyLayoutHelper): boolean {\n return layout.hash !== hashLayout(layout);\n}\n\nexport function addFigureOfHelper(\n layout: AnyLayoutHelper,\n figure: AnyFigureHelper,\n index?: number,\n): AnyFigureHelper {\n if (layout.figures.some((f) => f.id === figure.id)) {\n throw new Error(`Figure \"${figure.id}\" already exists`);\n }\n layout.figures.splice(index ?? layout.figures.length, 0, figure);\n return figure;\n}\n\nexport function removeFigureOfHelper(\n layout: AnyLayoutHelper,\n figure: AnyFigureHelper,\n): AnyLayoutHelper {\n const l = layout;\n l.figures = layout.figures.filter((f) => f.id !== figure.id);\n return layout;\n}\n\nexport function updateFigureOfHelper(\n layout: AnyLayoutHelper,\n oldFigure: AnyFigureHelper,\n newFigure: AnyFigureHelper,\n): AnyLayoutHelper {\n const index = layout.figures.findIndex((f) => f.id === oldFigure.id);\n if (index < 0) {\n throw new Error(`Figure \"${oldFigure.id}\" not found`);\n }\n const l = layout;\n l.figures[index] = newFigure;\n return layout;\n}\n\nexport * from './templates';\nexport * from './tasks';\n"],"names":["isTaskLayoutHelper","layout","isTemplateLayoutHelper","hasLayoutHelperChanged","hashLayout","addFigureOfHelper","figure","index","f","removeFigureOfHelper","l","updateFigureOfHelper","oldFigure","newFigure"],"mappings":";;;AAMO,SAASA,EAAmBC,GAAqD;AACtF,SAAO,QAAQA;AACjB;AAEO,SAASC,EAAuBD,GAAiD;AAC/E,SAAA,CAACD,EAAmBC,CAAM;AACnC;AAEO,SAASE,EAAuBF,GAAkC;AAChE,SAAAA,EAAO,SAASG,EAAWH,CAAM;AAC1C;AAEgB,SAAAI,EACdJ,GACAK,GACAC,GACiB;AACb,MAAAN,EAAO,QAAQ,KAAK,CAACO,MAAMA,EAAE,OAAOF,EAAO,EAAE;AAC/C,UAAM,IAAI,MAAM,WAAWA,EAAO,EAAE,kBAAkB;AAExD,SAAAL,EAAO,QAAQ,OAAOM,KAAA,OAAAA,IAASN,EAAO,QAAQ,QAAQ,GAAGK,CAAM,GACxDA;AACT;AAEgB,SAAAG,EACdR,GACAK,GACiB;AACjB,QAAMI,IAAIT;AACR,SAAAS,EAAA,UAAUT,EAAO,QAAQ,OAAO,CAACO,MAAMA,EAAE,OAAOF,EAAO,EAAE,GACpDL;AACT;AAEgB,SAAAU,EACdV,GACAW,GACAC,GACiB;AACX,QAAAN,IAAQN,EAAO,QAAQ,UAAU,CAACO,MAAMA,EAAE,OAAOI,EAAU,EAAE;AACnE,MAAIL,IAAQ;AACV,UAAM,IAAI,MAAM,WAAWK,EAAU,EAAE,aAAa;AAEtD,QAAMF,IAAIT;AACR,SAAAS,EAAA,QAAQH,CAAK,IAAIM,GACZZ;AACT;"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Refresh current user permissions
3
+ */
4
+ declare function refreshPermissions(): Promise<void>;
5
+ /**
6
+ * Check if the user have the permission to use the function
7
+ *
8
+ * @param fnc The function
9
+ * @param namespaceId The namespaces where the function can be used, check if at least one is true
10
+ *
11
+ * @returns If the user have the permission
12
+ */
13
+ declare function hasPermission(fnc: Function, namespaceIds?: string[]): boolean;
14
+
15
+ export { hasPermission, refreshPermissions };
@@ -0,0 +1,2 @@
1
+ "use strict";var m=(s,i,r)=>new Promise((t,n)=>{var u=e=>{try{o(r.next(e))}catch(a){n(a)}},l=e=>{try{o(r.throw(e))}catch(a){n(a)}},o=e=>e.done?t(e.value):Promise.resolve(e.value).then(u,l);o((r=r.apply(s,i)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../methods-Jar1Wkpj.js"),f=require("../decorator-C2gcn2rK.js");let c;function h(){return m(this,null,function*(){c=yield P.getCurrentPermissions()})}function y(s,i){if(!f.isSDKFunction(s))return console.warn(`[ezr][hasPermission] Function ${s.name} is not compatible with ezrPermission decorator`),!0;if(!c)return console.warn("[ezr][hasPermission] No current permissions set, please call refreshPermissions() first"),!1;const{general:r,namespaces:t}=c;return s.ezrPermissions.every(({permission:n,isNamespaced:u})=>u?(i!=null?i:Object.keys(t)).some(o=>{var e;return((e=t[o])==null?void 0:e[n])||!1}):r[n]||!1)}exports.hasPermission=y;exports.refreshPermissions=h;
2
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sources":["../../src/helpers/permissions/index.ts"],"sourcesContent":["import { getCurrentPermissions } from '~/modules/auth/methods';\nimport type { UserPermissions } from '~/modules/auth/types';\n\nimport { isSDKFunction } from './decorator';\n\nlet currentUserPermissions: UserPermissions | undefined;\n\n/**\n * Refresh current user permissions\n */\nexport async function refreshPermissions(): Promise<void> {\n currentUserPermissions = await getCurrentPermissions();\n}\n\n/**\n * Check if the user have the permission to use the function\n *\n * @param fnc The function\n * @param namespaceId The namespaces where the function can be used, check if at least one is true\n *\n * @returns If the user have the permission\n */\nexport function hasPermission(fnc: Function, namespaceIds?: string[]): boolean {\n if (!isSDKFunction(fnc)) {\n // eslint-disable-next-line no-console\n console.warn(`[ezr][hasPermission] Function ${fnc.name} is not compatible with ezrPermission decorator`);\n return true;\n }\n\n if (!currentUserPermissions) {\n // eslint-disable-next-line no-console\n console.warn('[ezr][hasPermission] No current permissions set, please call refreshPermissions() first');\n return false;\n }\n\n const { general, namespaces } = currentUserPermissions;\n return fnc.ezrPermissions.every(({ permission, isNamespaced }) => {\n if (!isNamespaced) {\n return general[permission] || false;\n }\n\n // If no namespace provided, check if at least one is true\n const nIds = namespaceIds ?? Object.keys(namespaces);\n\n return nIds.some((id) => namespaces[id]?.[permission] || false);\n });\n}\n"],"names":["currentUserPermissions","refreshPermissions","__async","getCurrentPermissions","hasPermission","fnc","namespaceIds","isSDKFunction","general","namespaces","permission","isNamespaced","id","_a"],"mappings":"6WAKA,IAAIA,EAKJ,SAAsBC,GAAoC,QAAAC,EAAA,sBACxDF,EAAyB,MAAMG,EAAAA,sBAAsB,CACvD,GAUgB,SAAAC,EAAcC,EAAeC,EAAkC,CACzE,GAAA,CAACC,EAAAA,cAAcF,CAAG,EAEpB,eAAQ,KAAK,iCAAiCA,EAAI,IAAI,iDAAiD,EAChG,GAGT,GAAI,CAACL,EAEH,eAAQ,KAAK,yFAAyF,EAC/F,GAGH,KAAA,CAAE,QAAAQ,EAAS,WAAAC,CAAA,EAAeT,EAChC,OAAOK,EAAI,eAAe,MAAM,CAAC,CAAE,WAAAK,EAAY,aAAAC,KACxCA,GAKQL,GAAA,KAAAA,EAAgB,OAAO,KAAKG,CAAU,GAEvC,KAAMG,GAAA,OAAO,QAAAC,EAAAJ,EAAWG,CAAE,IAAb,YAAAC,EAAiBH,KAAe,GAAK,EANrDF,EAAQE,CAAU,GAAK,EAOjC,CACH"}
@@ -0,0 +1,40 @@
1
+ var l = (e, i, s) => new Promise((t, n) => {
2
+ var a = (r) => {
3
+ try {
4
+ o(s.next(r));
5
+ } catch (m) {
6
+ n(m);
7
+ }
8
+ }, f = (r) => {
9
+ try {
10
+ o(s.throw(r));
11
+ } catch (m) {
12
+ n(m);
13
+ }
14
+ }, o = (r) => r.done ? t(r.value) : Promise.resolve(r.value).then(a, f);
15
+ o((s = s.apply(e, i)).next());
16
+ });
17
+ import { a as c } from "../methods-M4GU2OL5.mjs";
18
+ import { i as P } from "../decorator-DBkj--6g.mjs";
19
+ let u;
20
+ function y() {
21
+ return l(this, null, function* () {
22
+ u = yield c();
23
+ });
24
+ }
25
+ function b(e, i) {
26
+ if (!P(e))
27
+ return console.warn(`[ezr][hasPermission] Function ${e.name} is not compatible with ezrPermission decorator`), !0;
28
+ if (!u)
29
+ return console.warn("[ezr][hasPermission] No current permissions set, please call refreshPermissions() first"), !1;
30
+ const { general: s, namespaces: t } = u;
31
+ return e.ezrPermissions.every(({ permission: n, isNamespaced: a }) => a ? (i != null ? i : Object.keys(t)).some((o) => {
32
+ var r;
33
+ return ((r = t[o]) == null ? void 0 : r[n]) || !1;
34
+ }) : s[n] || !1);
35
+ }
36
+ export {
37
+ b as hasPermission,
38
+ y as refreshPermissions
39
+ };
40
+ //# sourceMappingURL=permissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.mjs","sources":["../../src/helpers/permissions/index.ts"],"sourcesContent":["import { getCurrentPermissions } from '~/modules/auth/methods';\nimport type { UserPermissions } from '~/modules/auth/types';\n\nimport { isSDKFunction } from './decorator';\n\nlet currentUserPermissions: UserPermissions | undefined;\n\n/**\n * Refresh current user permissions\n */\nexport async function refreshPermissions(): Promise<void> {\n currentUserPermissions = await getCurrentPermissions();\n}\n\n/**\n * Check if the user have the permission to use the function\n *\n * @param fnc The function\n * @param namespaceId The namespaces where the function can be used, check if at least one is true\n *\n * @returns If the user have the permission\n */\nexport function hasPermission(fnc: Function, namespaceIds?: string[]): boolean {\n if (!isSDKFunction(fnc)) {\n // eslint-disable-next-line no-console\n console.warn(`[ezr][hasPermission] Function ${fnc.name} is not compatible with ezrPermission decorator`);\n return true;\n }\n\n if (!currentUserPermissions) {\n // eslint-disable-next-line no-console\n console.warn('[ezr][hasPermission] No current permissions set, please call refreshPermissions() first');\n return false;\n }\n\n const { general, namespaces } = currentUserPermissions;\n return fnc.ezrPermissions.every(({ permission, isNamespaced }) => {\n if (!isNamespaced) {\n return general[permission] || false;\n }\n\n // If no namespace provided, check if at least one is true\n const nIds = namespaceIds ?? Object.keys(namespaces);\n\n return nIds.some((id) => namespaces[id]?.[permission] || false);\n });\n}\n"],"names":["currentUserPermissions","refreshPermissions","__async","getCurrentPermissions","hasPermission","fnc","namespaceIds","isSDKFunction","general","namespaces","permission","isNamespaced","id","_a"],"mappings":";;;;;;;;;;;;;;;;;;AAKA,IAAIA;AAKJ,SAAsBC,IAAoC;AAAA,SAAAC,EAAA;AACxD,IAAAF,IAAyB,MAAMG,EAAsB;AAAA,EACvD;AAAA;AAUgB,SAAAC,EAAcC,GAAeC,GAAkC;AACzE,MAAA,CAACC,EAAcF,CAAG;AAEpB,mBAAQ,KAAK,iCAAiCA,EAAI,IAAI,iDAAiD,GAChG;AAGT,MAAI,CAACL;AAEH,mBAAQ,KAAK,yFAAyF,GAC/F;AAGH,QAAA,EAAE,SAAAQ,GAAS,YAAAC,EAAA,IAAeT;AAChC,SAAOK,EAAI,eAAe,MAAM,CAAC,EAAE,YAAAK,GAAY,cAAAC,QACxCA,KAKQL,KAAA,OAAAA,IAAgB,OAAO,KAAKG,CAAU,GAEvC,KAAK,CAACG,MAAA;;AAAO,aAAAC,IAAAJ,EAAWG,CAAE,MAAb,gBAAAC,EAAiBH,OAAe;AAAA,GAAK,IANrDF,EAAQE,CAAU,KAAK,EAOjC;AACH;"}
@@ -0,0 +1,16 @@
1
+ import { T as TaskPreset } from '../types-BGlpjxH9.js';
2
+ import '../types-DcoMmjs3.js';
3
+ import '../types-C4AhJDkW.js';
4
+ import '../namespaces.js';
5
+
6
+ /**
7
+ * Change visibility of a preset
8
+ *
9
+ * @param presetOrId Preset or Preset's id
10
+ * @param hidden New state
11
+ *
12
+ * @returns Updated preset
13
+ */
14
+ declare function changeTaskPresetVisibility(presetOrId: TaskPreset | string, hidden: boolean): Promise<TaskPreset>;
15
+
16
+ export { changeTaskPresetVisibility };
@@ -0,0 +1,2 @@
1
+ "use strict";var u=(s,i,e)=>new Promise((c,o)=>{var d=t=>{try{a(e.next(t))}catch(n){o(n)}},g=t=>{try{a(e.throw(t))}catch(n){o(n)}},a=t=>t.done?c(t.value):Promise.resolve(t.value).then(d,g);a((e=e.apply(s,i)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../methods-CO0p8irP.js"),l=require("../decorator-C2gcn2rK.js");function p(s,i){return u(this,null,function*(){let e=s;return typeof e=="string"&&(e=yield r.getTaskPreset(s)),yield r.upsertTaskPreset({id:e.id,name:e.name,templateId:e.templateId,recurrence:e.recurrence,fetchOptions:e.fetchOptions,hidden:i})})}l.assignDependencies(p,[r.getTaskPreset,r.upsertTaskPreset]);exports.changeTaskPresetVisibility=p;
2
+ //# sourceMappingURL=task-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-presets.js","sources":["../../src/helpers/task-presets/index.ts"],"sourcesContent":["import { getTaskPreset, upsertTaskPreset, type TaskPreset } from '~/modules/task-presets';\n\nimport { assignDependencies } from '~/helpers/permissions/decorator';\n\n/**\n * Change visibility of a preset\n *\n * @param presetOrId Preset or Preset's id\n * @param hidden New state\n *\n * @returns Updated preset\n */\n// eslint-disable-next-line import/prefer-default-export\nexport async function changeTaskPresetVisibility(\n presetOrId: TaskPreset | string,\n hidden: boolean,\n): Promise<TaskPreset> {\n let base = presetOrId;\n if (typeof base === 'string') {\n base = await getTaskPreset(presetOrId);\n }\n\n const preset = await upsertTaskPreset({\n id: base.id,\n name: base.name,\n templateId: base.templateId,\n recurrence: base.recurrence,\n fetchOptions: base.fetchOptions,\n hidden,\n });\n\n return preset;\n}\nassignDependencies(changeTaskPresetVisibility, [getTaskPreset, upsertTaskPreset]);\n"],"names":["changeTaskPresetVisibility","presetOrId","hidden","__async","base","getTaskPreset","upsertTaskPreset","assignDependencies"],"mappings":"6WAasB,SAAAA,EACpBC,EACAC,EACqB,QAAAC,EAAA,sBACrB,IAAIC,EAAOH,EACP,OAAA,OAAOG,GAAS,WACXA,EAAA,MAAMC,gBAAcJ,CAAU,GAGxB,MAAMK,mBAAiB,CACpC,GAAIF,EAAK,GACT,KAAMA,EAAK,KACX,WAAYA,EAAK,WACjB,WAAYA,EAAK,WACjB,aAAcA,EAAK,aACnB,OAAAF,CAAA,CACD,CAGH,GACAK,EAAA,mBAAmBP,EAA4B,CAACK,gBAAeC,EAAAA,gBAAgB,CAAC"}
@@ -0,0 +1,36 @@
1
+ var p = (s, a, e) => new Promise((n, c) => {
2
+ var f = (t) => {
3
+ try {
4
+ r(e.next(t));
5
+ } catch (i) {
6
+ c(i);
7
+ }
8
+ }, u = (t) => {
9
+ try {
10
+ r(e.throw(t));
11
+ } catch (i) {
12
+ c(i);
13
+ }
14
+ }, r = (t) => t.done ? n(t.value) : Promise.resolve(t.value).then(f, u);
15
+ r((e = e.apply(s, a)).next());
16
+ });
17
+ import { a as o, u as m } from "../methods-BBsb3M5p.mjs";
18
+ import { b as d } from "../decorator-DBkj--6g.mjs";
19
+ function g(s, a) {
20
+ return p(this, null, function* () {
21
+ let e = s;
22
+ return typeof e == "string" && (e = yield o(s)), yield m({
23
+ id: e.id,
24
+ name: e.name,
25
+ templateId: e.templateId,
26
+ recurrence: e.recurrence,
27
+ fetchOptions: e.fetchOptions,
28
+ hidden: a
29
+ });
30
+ });
31
+ }
32
+ d(g, [o, m]);
33
+ export {
34
+ g as changeTaskPresetVisibility
35
+ };
36
+ //# sourceMappingURL=task-presets.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-presets.mjs","sources":["../../src/helpers/task-presets/index.ts"],"sourcesContent":["import { getTaskPreset, upsertTaskPreset, type TaskPreset } from '~/modules/task-presets';\n\nimport { assignDependencies } from '~/helpers/permissions/decorator';\n\n/**\n * Change visibility of a preset\n *\n * @param presetOrId Preset or Preset's id\n * @param hidden New state\n *\n * @returns Updated preset\n */\n// eslint-disable-next-line import/prefer-default-export\nexport async function changeTaskPresetVisibility(\n presetOrId: TaskPreset | string,\n hidden: boolean,\n): Promise<TaskPreset> {\n let base = presetOrId;\n if (typeof base === 'string') {\n base = await getTaskPreset(presetOrId);\n }\n\n const preset = await upsertTaskPreset({\n id: base.id,\n name: base.name,\n templateId: base.templateId,\n recurrence: base.recurrence,\n fetchOptions: base.fetchOptions,\n hidden,\n });\n\n return preset;\n}\nassignDependencies(changeTaskPresetVisibility, [getTaskPreset, upsertTaskPreset]);\n"],"names":["changeTaskPresetVisibility","presetOrId","hidden","__async","base","getTaskPreset","upsertTaskPreset","assignDependencies"],"mappings":";;;;;;;;;;;;;;;;;;AAasB,SAAAA,EACpBC,GACAC,GACqB;AAAA,SAAAC,EAAA;AACrB,QAAIC,IAAOH;AACP,WAAA,OAAOG,KAAS,aACXA,IAAA,MAAMC,EAAcJ,CAAU,IAGxB,MAAMK,EAAiB;AAAA,MACpC,IAAIF,EAAK;AAAA,MACT,MAAMA,EAAK;AAAA,MACX,YAAYA,EAAK;AAAA,MACjB,YAAYA,EAAK;AAAA,MACjB,cAAcA,EAAK;AAAA,MACnB,QAAAF;AAAA,IAAA,CACD;AAAA,EAGH;AAAA;AACAK,EAAmBP,GAA4B,CAACK,GAAeC,CAAgB,CAAC;"}
@@ -0,0 +1,56 @@
1
+ import { a as TaskRecurrence, L as LastExtended, T as Task } from '../types-C4AhJDkW.js';
2
+ import { T as TemplateBodyHelper } from '../body-BqAn9vHJ.js';
3
+ import { L as LayoutHelper } from '../templates-BgRTZc5c.js';
4
+ import { c as TemplateFilter } from '../types-DcoMmjs3.js';
5
+ import { T as TaskLayoutHelper } from '../tasks-BDFAJ6Oi.js';
6
+ import '../namespaces.js';
7
+ import './figures.js';
8
+ import './aggregations.js';
9
+
10
+ interface TaskBodyHelper {
11
+ readonly version: number;
12
+ filters: Map<string, TemplateFilter>;
13
+ index: string;
14
+ dateField?: string;
15
+ inserts: TaskLayoutHelper[];
16
+ }
17
+ declare function addLayoutOfHelper(body: TaskBodyHelper, layout: TaskLayoutHelper): TaskBodyHelper;
18
+ declare function removeLayoutOfHelper(body: TaskBodyHelper, layout: TaskLayoutHelper): TaskBodyHelper;
19
+ declare function updateLayoutOfHelper(body: TaskBodyHelper, oldLayout: TaskLayoutHelper, newLayout: TaskLayoutHelper): TaskBodyHelper;
20
+
21
+ interface TaskHelper {
22
+ readonly id: string;
23
+ name: string;
24
+ description: string;
25
+ namespaceId: string;
26
+ extendedId: string;
27
+ template: TaskBodyHelper;
28
+ targets: string[];
29
+ recurrence: TaskRecurrence;
30
+ nextRun: Date;
31
+ enabled: boolean;
32
+ readonly lastExtended?: LastExtended | null;
33
+ readonly lastRun?: Date;
34
+ readonly createdAt: Date;
35
+ readonly updatedAt?: Date;
36
+ readonly hash: string;
37
+ }
38
+ declare function createTaskHelper(name?: string, description?: string, namespaceId?: string, extendedId?: string, template?: TaskBodyHelper, targets?: string[], recurrence?: TaskRecurrence, nextRun?: Date, enabled?: boolean, lastExtended?: LastExtended, lastRun?: Date, id?: string, createdAt?: Date, updatedAt?: Date): TaskHelper;
39
+ declare function createTaskHelperFrom(task: Task): TaskHelper;
40
+ declare function taskHelperToJSON(task: TaskHelper): Task;
41
+ declare function hasTaskChanged(task: TaskHelper): boolean;
42
+ declare function getLayoutsOfHelpers(taskBody: TaskBodyHelper, templateBody: TemplateBodyHelper): (LayoutHelper & {
43
+ readonly: boolean;
44
+ })[];
45
+
46
+ /**
47
+ * Change enable state of a task
48
+ *
49
+ * @param taskOrId Task or Task's id
50
+ * @param enabled New state
51
+ *
52
+ * @returns Updated task
53
+ */
54
+ declare function changeTaskEnableState(taskOrId: Omit<Task, 'template'> | string, enabled: boolean): Promise<Task>;
55
+
56
+ export { type TaskBodyHelper, type TaskHelper, addLayoutOfHelper, changeTaskEnableState, createTaskHelper, createTaskHelperFrom, getLayoutsOfHelpers, hasTaskChanged, removeLayoutOfHelper, taskHelperToJSON, updateLayoutOfHelper };
@@ -0,0 +1,2 @@
1
+ "use strict";var F=Object.defineProperty,R=Object.defineProperties;var b=Object.getOwnPropertyDescriptors;var u=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var x=(e,r,n)=>r in e?F(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n,f=(e,r)=>{for(var n in r||(r={}))T.call(r,n)&&x(e,n,r[n]);if(u)for(var n of u(r))H.call(r,n)&&x(e,n,r[n]);return e},m=(e,r)=>R(e,b(r));var g=(e,r)=>{var n={};for(var t in e)T.call(e,t)&&r.indexOf(t)<0&&(n[t]=e[t]);if(e!=null&&u)for(var t of u(e))r.indexOf(t)<0&&H.call(e,t)&&(n[t]=e[t]);return n};var h=(e,r,n)=>new Promise((t,a)=>{var d=s=>{try{i(n.next(s))}catch(c){a(c)}},o=s=>{try{i(n.throw(s))}catch(c){a(c)}},i=s=>s.done?t(s.value):Promise.resolve(s.value).then(d,o);i((n=n.apply(e,r)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("../decorator-C2gcn2rK.js"),l=require("../methods-cUjyNkoK.js"),D=require("object-hash"),y=require("../tasks-hn70eL7B.js");function I(e="",r="",n=[],t=[]){var a;return{version:2,dateField:r,inserts:n,filters:new Map((a=t==null?void 0:t.map(d=>[d.name,d]))!=null?a:[]),index:e}}function J(e){return I(e.index,e.dateField,e.inserts.map(r=>y.createTaskLayoutHelperFrom(r)),e.filters)}function N(e){return{version:e.version,index:e.index,inserts:e.inserts.map(r=>y.taskLayoutHelperToJSON(r)),dateField:e.dateField,filters:Array.from(e.filters.values())}}function B(e,r){if(e.inserts.some(n=>n.id===r.id))throw new Error(`Layout "${r.id}" already exists`);return e.inserts.splice(r.at,0,r),e}function j(e,r){const n=e;return n.inserts=e.inserts.filter(t=>t.id!==r.id),e}function C(e,r,n){const t=e.inserts.findIndex(d=>d.id===r.id);if(t<0)throw new Error(`Layout "${r.id}" not found`);const a=e;return a.inserts[t]=n,e}function O(e){return D({name:e.name,extendedId:e.extendedId,template:e.template,targets:e.targets,recurrence:e.recurrence,nextRun:e.nextRun,enabled:e.enabled})}function L(e="",r="",n="",t="",a,d=[],o="DAILY",i,s=!0,c,E,v="",A=new Date,S){const p={id:v,name:e,description:r,namespaceId:n,extendedId:t,template:a!=null?a:I(),targets:d,recurrence:o,nextRun:i!=null?i:new Date,enabled:s,lastExtended:c,lastRun:E,createdAt:A,updatedAt:S,hash:""};return p.hash=O(p),p}function M(e){var r;return L(e.name,e.description,e.namespaceId,e.extendedId,J(e.template),e.targets,e.recurrence,e.nextRun,e.enabled,(r=e.lastExtended)!=null?r:void 0,e.lastRun,e.id,e.createdAt,e.updatedAt)}function $(e){return{id:e.id,name:e.name,description:e.description,namespaceId:e.namespaceId,extendedId:e.extendedId,template:N(e.template),targets:e.targets,recurrence:e.recurrence,nextRun:e.nextRun,enabled:e.enabled,lastExtended:e.lastExtended,lastRun:e.lastRun,createdAt:e.createdAt,updatedAt:e.updatedAt}}function P(e){return e.hash!==O(e)}function Y(e,r){const n=r.layouts.map(d=>m(f({},d),{readonly:!0}));for(const t of e.inserts){const a=t,{at:d}=a,o=g(a,["at"]);n.splice(d,0,m(f({},o),{readonly:!1}))}return n}function w(e,r){return h(this,null,function*(){const n=yield l.getTask(e);return yield l.upsertTask({id:n.id,name:n.name,description:n.description,extendedId:n.extendedId,namespaceId:n.namespaceId,nextRun:n.nextRun,recurrence:n.recurrence,targets:n.targets,template:n.template,lastExtended:n.lastExtended,enabled:r})})}q.assignDependencies(w,[l.getTask,l.upsertTask]);exports.addLayoutOfHelper=B;exports.changeTaskEnableState=w;exports.createTaskHelper=L;exports.createTaskHelperFrom=M;exports.getLayoutsOfHelpers=Y;exports.hasTaskChanged=P;exports.removeLayoutOfHelper=j;exports.taskHelperToJSON=$;exports.updateLayoutOfHelper=C;
2
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sources":["../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import type { TemplateFilter } from '~/modules/templates';\nimport type { Task } from '~/modules/tasks';\n\nimport {\n createTaskLayoutHelperFrom,\n taskLayoutHelperToJSON,\n type TaskLayoutHelper,\n} from '../../templates/editor/layouts';\n\nexport interface TaskBodyHelper {\n readonly version: number;\n filters: Map<string, TemplateFilter>;\n index: string;\n dateField?: string;\n inserts: TaskLayoutHelper[];\n}\n\nexport function createTaskBodyHelper(\n index: string = '',\n dateField: string = '',\n inserts: TaskLayoutHelper[] = [],\n filters: TemplateFilter[] = [],\n): TaskBodyHelper {\n return {\n version: 2,\n dateField,\n inserts,\n filters: new Map(filters?.map((filter) => [filter.name, filter]) ?? []),\n index,\n };\n}\n\nexport function createTaskBodyHelperFrom(template: Task['template']): TaskBodyHelper {\n return createTaskBodyHelper(\n template.index,\n template.dateField,\n template.inserts.map((l) => createTaskLayoutHelperFrom(l)),\n template.filters,\n );\n}\n\nexport function taskBodyHelperToJSON(template: TaskBodyHelper): Task['template'] {\n return {\n version: template.version,\n index: template.index,\n inserts: template.inserts.map((l) => taskLayoutHelperToJSON(l)),\n dateField: template.dateField,\n filters: Array.from(template.filters.values()),\n };\n}\n\nexport function addLayoutOfHelper(\n body: TaskBodyHelper,\n layout: TaskLayoutHelper,\n): TaskBodyHelper {\n if (body.inserts.some((l) => l.id === layout.id)) {\n throw new Error(`Layout \"${layout.id}\" already exists`);\n }\n body.inserts.splice(layout.at, 0, layout);\n return body;\n}\n\nexport function removeLayoutOfHelper(\n body: TaskBodyHelper,\n layout: TaskLayoutHelper,\n): TaskBodyHelper {\n const template = body;\n template.inserts = body.inserts.filter((l) => l.id !== layout.id);\n return body;\n}\n\nexport function updateLayoutOfHelper(\n body: TaskBodyHelper,\n oldLayout: TaskLayoutHelper,\n newLayout: TaskLayoutHelper,\n): TaskBodyHelper {\n const index = body.inserts.findIndex((l) => l.id === oldLayout.id);\n if (index < 0) {\n throw new Error(`Layout \"${oldLayout.id}\" not found`);\n }\n const template = body;\n template.inserts[index] = newLayout;\n return body;\n}\n","import objectHash from 'object-hash';\n\nimport type { Task } from '~/modules/tasks';\nimport type { LastExtended, TaskRecurrence } from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { LayoutHelper } from '../../templates/editor/layouts';\nimport {\n createTaskBodyHelper,\n createTaskBodyHelperFrom,\n taskBodyHelperToJSON,\n type TaskBodyHelper,\n} from './body';\n\nexport interface TaskHelper {\n readonly id: string;\n name: string;\n description: string;\n namespaceId: string;\n extendedId: string;\n template: TaskBodyHelper;\n targets: string[];\n recurrence: TaskRecurrence;\n nextRun: Date;\n enabled: boolean;\n readonly lastExtended?: LastExtended | null;\n readonly lastRun?: Date;\n readonly createdAt: Date;\n readonly updatedAt?: Date;\n readonly hash: string;\n}\n\nfunction hashTask(task: TaskHelper | Task): string {\n return objectHash({\n name: task.name,\n extendedId: task.extendedId,\n template: task.template,\n targets: task.targets,\n recurrence: task.recurrence,\n nextRun: task.nextRun,\n enabled: task.enabled,\n });\n}\n\nexport function createTaskHelper(\n name: string = '',\n description: string = '',\n namespaceId: string = '',\n extendedId: string = '',\n template?: TaskBodyHelper,\n targets: string[] = [],\n recurrence: TaskRecurrence = 'DAILY',\n nextRun?: Date,\n enabled: boolean = true,\n lastExtended?: LastExtended,\n lastRun?: Date,\n id: string = '',\n createdAt: Date = new Date(),\n updatedAt?: Date,\n): TaskHelper {\n const task = {\n id,\n name,\n description,\n namespaceId,\n extendedId,\n template: template ?? createTaskBodyHelper(),\n targets,\n recurrence,\n nextRun: nextRun ?? new Date(), // TODO: recurrence\n enabled,\n lastExtended,\n lastRun,\n createdAt,\n updatedAt,\n hash: '',\n };\n\n task.hash = hashTask(task);\n\n return task;\n}\n\nexport function createTaskHelperFrom(task: Task): TaskHelper {\n return createTaskHelper(\n task.name,\n task.description,\n task.namespaceId,\n task.extendedId,\n createTaskBodyHelperFrom(task.template),\n task.targets,\n task.recurrence,\n task.nextRun,\n task.enabled,\n task.lastExtended ?? undefined,\n task.lastRun,\n task.id,\n task.createdAt,\n task.updatedAt,\n );\n}\n\nexport function taskHelperToJSON(task: TaskHelper): Task {\n return {\n id: task.id,\n name: task.name,\n description: task.description,\n namespaceId: task.namespaceId,\n extendedId: task.extendedId,\n template: taskBodyHelperToJSON(task.template),\n targets: task.targets,\n recurrence: task.recurrence,\n nextRun: task.nextRun,\n enabled: task.enabled,\n lastExtended: task.lastExtended,\n lastRun: task.lastRun,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n };\n}\n\nexport function hasTaskChanged(task: TaskHelper): boolean {\n return task.hash !== hashTask(task);\n}\n\nexport function getLayoutsOfHelpers(\n taskBody: TaskBodyHelper,\n templateBody: TemplateBodyHelper,\n): (LayoutHelper & { readonly: boolean })[] {\n const layouts = templateBody.layouts.map((l) => ({ ...l, readonly: true }));\n // eslint-disable-next-line no-restricted-syntax\n for (const { at, ...layout } of taskBody.inserts) {\n layouts.splice(at, 0, { ...layout, readonly: false });\n }\n return layouts;\n}\n\nexport {\n type TaskBodyHelper,\n addLayoutOfHelper,\n removeLayoutOfHelper,\n updateLayoutOfHelper,\n} from './body';\n","import { assignDependencies } from '~/helpers/permissions/decorator';\n\nimport { getTask, upsertTask, type Task } from '~/modules/tasks';\n\nexport * from './editor';\n\n/**\n * Change enable state of a task\n *\n * @param taskOrId Task or Task's id\n * @param enabled New state\n *\n * @returns Updated task\n */\n// eslint-disable-next-line import/prefer-default-export\nexport async function changeTaskEnableState(\n taskOrId: Omit<Task, 'template'> | string,\n enabled: boolean,\n): Promise<Task> {\n const base = await getTask(taskOrId);\n\n const task = await upsertTask({\n id: base.id,\n name: base.name,\n description: base.description,\n extendedId: base.extendedId,\n namespaceId: base.namespaceId,\n nextRun: base.nextRun,\n recurrence: base.recurrence,\n targets: base.targets,\n template: base.template,\n lastExtended: base.lastExtended,\n enabled,\n });\n\n return task;\n}\nassignDependencies(changeTaskEnableState, [getTask, upsertTask]);\n"],"names":["createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","l","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","recurrence","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","_b","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ var R = Object.defineProperty, v = Object.defineProperties;
2
+ var F = Object.getOwnPropertyDescriptors;
3
+ var u = Object.getOwnPropertySymbols;
4
+ var x = Object.prototype.hasOwnProperty, h = Object.prototype.propertyIsEnumerable;
5
+ var f = (e, r, n) => r in e ? R(e, r, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[r] = n, l = (e, r) => {
6
+ for (var n in r || (r = {}))
7
+ x.call(r, n) && f(e, n, r[n]);
8
+ if (u)
9
+ for (var n of u(r))
10
+ h.call(r, n) && f(e, n, r[n]);
11
+ return e;
12
+ }, m = (e, r) => v(e, F(r));
13
+ var I = (e, r) => {
14
+ var n = {};
15
+ for (var t in e)
16
+ x.call(e, t) && r.indexOf(t) < 0 && (n[t] = e[t]);
17
+ if (e != null && u)
18
+ for (var t of u(e))
19
+ r.indexOf(t) < 0 && h.call(e, t) && (n[t] = e[t]);
20
+ return n;
21
+ };
22
+ var H = (e, r, n) => new Promise((t, d) => {
23
+ var a = (i) => {
24
+ try {
25
+ s(n.next(i));
26
+ } catch (c) {
27
+ d(c);
28
+ }
29
+ }, o = (i) => {
30
+ try {
31
+ s(n.throw(i));
32
+ } catch (c) {
33
+ d(c);
34
+ }
35
+ }, s = (i) => i.done ? t(i.value) : Promise.resolve(i.value).then(a, o);
36
+ s((n = n.apply(e, r)).next());
37
+ });
38
+ import { b as D } from "../decorator-DBkj--6g.mjs";
39
+ import { a as T, u as g } from "../methods-DOB4Ry8E.mjs";
40
+ import S from "object-hash";
41
+ import { a as b, t as B } from "../tasks-1x680qAf.mjs";
42
+ function w(e = "", r = "", n = [], t = []) {
43
+ var d;
44
+ return {
45
+ version: 2,
46
+ dateField: r,
47
+ inserts: n,
48
+ filters: new Map((d = t == null ? void 0 : t.map((a) => [a.name, a])) != null ? d : []),
49
+ index: e
50
+ };
51
+ }
52
+ function J(e) {
53
+ return w(
54
+ e.index,
55
+ e.dateField,
56
+ e.inserts.map((r) => b(r)),
57
+ e.filters
58
+ );
59
+ }
60
+ function N(e) {
61
+ return {
62
+ version: e.version,
63
+ index: e.index,
64
+ inserts: e.inserts.map((r) => B(r)),
65
+ dateField: e.dateField,
66
+ filters: Array.from(e.filters.values())
67
+ };
68
+ }
69
+ function G(e, r) {
70
+ if (e.inserts.some((n) => n.id === r.id))
71
+ throw new Error(`Layout "${r.id}" already exists`);
72
+ return e.inserts.splice(r.at, 0, r), e;
73
+ }
74
+ function K(e, r) {
75
+ const n = e;
76
+ return n.inserts = e.inserts.filter((t) => t.id !== r.id), e;
77
+ }
78
+ function P(e, r, n) {
79
+ const t = e.inserts.findIndex((a) => a.id === r.id);
80
+ if (t < 0)
81
+ throw new Error(`Layout "${r.id}" not found`);
82
+ const d = e;
83
+ return d.inserts[t] = n, e;
84
+ }
85
+ function y(e) {
86
+ return S({
87
+ name: e.name,
88
+ extendedId: e.extendedId,
89
+ template: e.template,
90
+ targets: e.targets,
91
+ recurrence: e.recurrence,
92
+ nextRun: e.nextRun,
93
+ enabled: e.enabled
94
+ });
95
+ }
96
+ function $(e = "", r = "", n = "", t = "", d, a = [], o = "DAILY", s, i = !0, c, A, E = "", L = /* @__PURE__ */ new Date(), O) {
97
+ const p = {
98
+ id: E,
99
+ name: e,
100
+ description: r,
101
+ namespaceId: n,
102
+ extendedId: t,
103
+ template: d != null ? d : w(),
104
+ targets: a,
105
+ recurrence: o,
106
+ nextRun: s != null ? s : /* @__PURE__ */ new Date(),
107
+ // TODO: recurrence
108
+ enabled: i,
109
+ lastExtended: c,
110
+ lastRun: A,
111
+ createdAt: L,
112
+ updatedAt: O,
113
+ hash: ""
114
+ };
115
+ return p.hash = y(p), p;
116
+ }
117
+ function Q(e) {
118
+ var r;
119
+ return $(
120
+ e.name,
121
+ e.description,
122
+ e.namespaceId,
123
+ e.extendedId,
124
+ J(e.template),
125
+ e.targets,
126
+ e.recurrence,
127
+ e.nextRun,
128
+ e.enabled,
129
+ (r = e.lastExtended) != null ? r : void 0,
130
+ e.lastRun,
131
+ e.id,
132
+ e.createdAt,
133
+ e.updatedAt
134
+ );
135
+ }
136
+ function U(e) {
137
+ return {
138
+ id: e.id,
139
+ name: e.name,
140
+ description: e.description,
141
+ namespaceId: e.namespaceId,
142
+ extendedId: e.extendedId,
143
+ template: N(e.template),
144
+ targets: e.targets,
145
+ recurrence: e.recurrence,
146
+ nextRun: e.nextRun,
147
+ enabled: e.enabled,
148
+ lastExtended: e.lastExtended,
149
+ lastRun: e.lastRun,
150
+ createdAt: e.createdAt,
151
+ updatedAt: e.updatedAt
152
+ };
153
+ }
154
+ function V(e) {
155
+ return e.hash !== y(e);
156
+ }
157
+ function W(e, r) {
158
+ const n = r.layouts.map((a) => m(l({}, a), { readonly: !0 }));
159
+ for (const t of e.inserts) {
160
+ const d = t, { at: a } = d, o = I(d, ["at"]);
161
+ n.splice(a, 0, m(l({}, o), { readonly: !1 }));
162
+ }
163
+ return n;
164
+ }
165
+ function j(e, r) {
166
+ return H(this, null, function* () {
167
+ const n = yield T(e);
168
+ return yield g({
169
+ id: n.id,
170
+ name: n.name,
171
+ description: n.description,
172
+ extendedId: n.extendedId,
173
+ namespaceId: n.namespaceId,
174
+ nextRun: n.nextRun,
175
+ recurrence: n.recurrence,
176
+ targets: n.targets,
177
+ template: n.template,
178
+ lastExtended: n.lastExtended,
179
+ enabled: r
180
+ });
181
+ });
182
+ }
183
+ D(j, [T, g]);
184
+ export {
185
+ G as addLayoutOfHelper,
186
+ j as changeTaskEnableState,
187
+ $ as createTaskHelper,
188
+ Q as createTaskHelperFrom,
189
+ W as getLayoutsOfHelpers,
190
+ V as hasTaskChanged,
191
+ K as removeLayoutOfHelper,
192
+ U as taskHelperToJSON,
193
+ P as updateLayoutOfHelper
194
+ };
195
+ //# sourceMappingURL=tasks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.mjs","sources":["../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import type { TemplateFilter } from '~/modules/templates';\nimport type { Task } from '~/modules/tasks';\n\nimport {\n createTaskLayoutHelperFrom,\n taskLayoutHelperToJSON,\n type TaskLayoutHelper,\n} from '../../templates/editor/layouts';\n\nexport interface TaskBodyHelper {\n readonly version: number;\n filters: Map<string, TemplateFilter>;\n index: string;\n dateField?: string;\n inserts: TaskLayoutHelper[];\n}\n\nexport function createTaskBodyHelper(\n index: string = '',\n dateField: string = '',\n inserts: TaskLayoutHelper[] = [],\n filters: TemplateFilter[] = [],\n): TaskBodyHelper {\n return {\n version: 2,\n dateField,\n inserts,\n filters: new Map(filters?.map((filter) => [filter.name, filter]) ?? []),\n index,\n };\n}\n\nexport function createTaskBodyHelperFrom(template: Task['template']): TaskBodyHelper {\n return createTaskBodyHelper(\n template.index,\n template.dateField,\n template.inserts.map((l) => createTaskLayoutHelperFrom(l)),\n template.filters,\n );\n}\n\nexport function taskBodyHelperToJSON(template: TaskBodyHelper): Task['template'] {\n return {\n version: template.version,\n index: template.index,\n inserts: template.inserts.map((l) => taskLayoutHelperToJSON(l)),\n dateField: template.dateField,\n filters: Array.from(template.filters.values()),\n };\n}\n\nexport function addLayoutOfHelper(\n body: TaskBodyHelper,\n layout: TaskLayoutHelper,\n): TaskBodyHelper {\n if (body.inserts.some((l) => l.id === layout.id)) {\n throw new Error(`Layout \"${layout.id}\" already exists`);\n }\n body.inserts.splice(layout.at, 0, layout);\n return body;\n}\n\nexport function removeLayoutOfHelper(\n body: TaskBodyHelper,\n layout: TaskLayoutHelper,\n): TaskBodyHelper {\n const template = body;\n template.inserts = body.inserts.filter((l) => l.id !== layout.id);\n return body;\n}\n\nexport function updateLayoutOfHelper(\n body: TaskBodyHelper,\n oldLayout: TaskLayoutHelper,\n newLayout: TaskLayoutHelper,\n): TaskBodyHelper {\n const index = body.inserts.findIndex((l) => l.id === oldLayout.id);\n if (index < 0) {\n throw new Error(`Layout \"${oldLayout.id}\" not found`);\n }\n const template = body;\n template.inserts[index] = newLayout;\n return body;\n}\n","import objectHash from 'object-hash';\n\nimport type { Task } from '~/modules/tasks';\nimport type { LastExtended, TaskRecurrence } from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { LayoutHelper } from '../../templates/editor/layouts';\nimport {\n createTaskBodyHelper,\n createTaskBodyHelperFrom,\n taskBodyHelperToJSON,\n type TaskBodyHelper,\n} from './body';\n\nexport interface TaskHelper {\n readonly id: string;\n name: string;\n description: string;\n namespaceId: string;\n extendedId: string;\n template: TaskBodyHelper;\n targets: string[];\n recurrence: TaskRecurrence;\n nextRun: Date;\n enabled: boolean;\n readonly lastExtended?: LastExtended | null;\n readonly lastRun?: Date;\n readonly createdAt: Date;\n readonly updatedAt?: Date;\n readonly hash: string;\n}\n\nfunction hashTask(task: TaskHelper | Task): string {\n return objectHash({\n name: task.name,\n extendedId: task.extendedId,\n template: task.template,\n targets: task.targets,\n recurrence: task.recurrence,\n nextRun: task.nextRun,\n enabled: task.enabled,\n });\n}\n\nexport function createTaskHelper(\n name: string = '',\n description: string = '',\n namespaceId: string = '',\n extendedId: string = '',\n template?: TaskBodyHelper,\n targets: string[] = [],\n recurrence: TaskRecurrence = 'DAILY',\n nextRun?: Date,\n enabled: boolean = true,\n lastExtended?: LastExtended,\n lastRun?: Date,\n id: string = '',\n createdAt: Date = new Date(),\n updatedAt?: Date,\n): TaskHelper {\n const task = {\n id,\n name,\n description,\n namespaceId,\n extendedId,\n template: template ?? createTaskBodyHelper(),\n targets,\n recurrence,\n nextRun: nextRun ?? new Date(), // TODO: recurrence\n enabled,\n lastExtended,\n lastRun,\n createdAt,\n updatedAt,\n hash: '',\n };\n\n task.hash = hashTask(task);\n\n return task;\n}\n\nexport function createTaskHelperFrom(task: Task): TaskHelper {\n return createTaskHelper(\n task.name,\n task.description,\n task.namespaceId,\n task.extendedId,\n createTaskBodyHelperFrom(task.template),\n task.targets,\n task.recurrence,\n task.nextRun,\n task.enabled,\n task.lastExtended ?? undefined,\n task.lastRun,\n task.id,\n task.createdAt,\n task.updatedAt,\n );\n}\n\nexport function taskHelperToJSON(task: TaskHelper): Task {\n return {\n id: task.id,\n name: task.name,\n description: task.description,\n namespaceId: task.namespaceId,\n extendedId: task.extendedId,\n template: taskBodyHelperToJSON(task.template),\n targets: task.targets,\n recurrence: task.recurrence,\n nextRun: task.nextRun,\n enabled: task.enabled,\n lastExtended: task.lastExtended,\n lastRun: task.lastRun,\n createdAt: task.createdAt,\n updatedAt: task.updatedAt,\n };\n}\n\nexport function hasTaskChanged(task: TaskHelper): boolean {\n return task.hash !== hashTask(task);\n}\n\nexport function getLayoutsOfHelpers(\n taskBody: TaskBodyHelper,\n templateBody: TemplateBodyHelper,\n): (LayoutHelper & { readonly: boolean })[] {\n const layouts = templateBody.layouts.map((l) => ({ ...l, readonly: true }));\n // eslint-disable-next-line no-restricted-syntax\n for (const { at, ...layout } of taskBody.inserts) {\n layouts.splice(at, 0, { ...layout, readonly: false });\n }\n return layouts;\n}\n\nexport {\n type TaskBodyHelper,\n addLayoutOfHelper,\n removeLayoutOfHelper,\n updateLayoutOfHelper,\n} from './body';\n","import { assignDependencies } from '~/helpers/permissions/decorator';\n\nimport { getTask, upsertTask, type Task } from '~/modules/tasks';\n\nexport * from './editor';\n\n/**\n * Change enable state of a task\n *\n * @param taskOrId Task or Task's id\n * @param enabled New state\n *\n * @returns Updated task\n */\n// eslint-disable-next-line import/prefer-default-export\nexport async function changeTaskEnableState(\n taskOrId: Omit<Task, 'template'> | string,\n enabled: boolean,\n): Promise<Task> {\n const base = await getTask(taskOrId);\n\n const task = await upsertTask({\n id: base.id,\n name: base.name,\n description: base.description,\n extendedId: base.extendedId,\n namespaceId: base.namespaceId,\n nextRun: base.nextRun,\n recurrence: base.recurrence,\n targets: base.targets,\n template: base.template,\n lastExtended: base.lastExtended,\n enabled,\n });\n\n return task;\n}\nassignDependencies(changeTaskEnableState, [getTask, upsertTask]);\n"],"names":["createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","l","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","recurrence","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","_b","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { f as TemplateTag, T as Template, I as InputTemplate } from '../types-DcoMmjs3.js';
2
+ import { T as TemplateBodyHelper } from '../body-BqAn9vHJ.js';
3
+ export { a as addLayoutOfHelper, r as removeLayoutOfHelper, u as updateLayoutOfHelper } from '../body-BqAn9vHJ.js';
4
+ import '../templates-BgRTZc5c.js';
5
+ import './figures.js';
6
+ import './aggregations.js';
7
+
8
+ type TemplateTagMap = Map<string, TemplateTag>;
9
+
10
+ interface TemplateHelper {
11
+ readonly id: string;
12
+ name: string;
13
+ body: TemplateBodyHelper;
14
+ tags: TemplateTagMap;
15
+ readonly createdAt: Date;
16
+ readonly updatedAt?: Date;
17
+ readonly hash: string;
18
+ }
19
+ declare function createTemplateHelper(name?: string, body?: TemplateBodyHelper, tags?: TemplateTagMap, id?: string, createdAt?: Date, updatedAt?: Date): TemplateHelper;
20
+ declare function createTemplateHelperFrom(template: Template): TemplateHelper;
21
+ declare function templateHelperToJSON(template: TemplateHelper): InputTemplate;
22
+ declare function hasTemplateChanged(template: TemplateHelper): boolean;
23
+
24
+ /**
25
+ * Change visibility of a template
26
+ *
27
+ * @param templateOrId Template or Template's id
28
+ * @param hidden New state
29
+ *
30
+ * @returns Updated template
31
+ */
32
+ declare function changeTemplateVisibility(templateOrId: Omit<Template, 'body'> | string, hidden: boolean): Promise<Template>;
33
+
34
+ export { TemplateBodyHelper, type TemplateHelper, TemplateTag, type TemplateTagMap, changeTemplateVisibility, createTemplateHelper, createTemplateHelperFrom, hasTemplateChanged, templateHelperToJSON };
@@ -0,0 +1,2 @@
1
+ "use strict";var c=(e,t,a)=>new Promise((r,n)=>{var o=s=>{try{l(a.next(s))}catch(p){n(p)}},i=s=>{try{l(a.throw(s))}catch(p){n(p)}},l=s=>s.done?r(s.value):Promise.resolve(s.value).then(o,i);l((a=a.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../methods-uWDk6_pk.js"),h=require("../decorator-C2gcn2rK.js"),H=require("object-hash"),m=require("../templates-yZjsVuN9.js");function d(e,t="",a=[],r=[],n){var o;return{version:2,dateField:t,layouts:a,filters:new Map((o=r==null?void 0:r.map(i=>[i.name,i]))!=null?o:[]),grid:n,index:e}}function y(e){return d(e.index,e.dateField,e.layouts.map(t=>m.createLayoutHelperFrom(t)),e.filters,e.grid)}function O(e){return{version:e.version,dateField:e.dateField,layouts:e.layouts.map(t=>m.layoutHelperToJSON(t)),filters:Array.from(e.filters.values()),grid:e.grid,index:e.index}}function w(e,t,a){if(e.layouts.some(r=>r.id===t.id))throw new Error(`Layout "${t.id}" already exists`);return e.layouts.splice(a!=null?a:e.layouts.length,0,t),e}function v(e,t){const a=e;return a.layouts=e.layouts.filter(r=>r.id!==t.id),e}function L(e,t,a){const r=e.layouts.findIndex(o=>o.id===t.id);if(r<0)throw new Error(`Layout "${t.id}" not found`);const n=e;return n.layouts[r]=a,e}function f(e){return H({name:e.name,body:e.body,tags:e.tags})}function g(e="",t,a=new Map,r="",n=new Date,o){const i={id:r,name:e,body:t!=null?t:d(),tags:a,createdAt:n,updatedAt:o,hash:""};return i.hash=f(i),i}function F(e){var t,a;return g(e.name,y(e.body),new Map((a=(t=e.tags)==null?void 0:t.map(r=>[r.name,r]))!=null?a:[]),e.id,e.createdAt,e.updatedAt)}function S(e){return{name:e.name,body:O(e.body),tags:Array.from(e.tags.values())}}function q(e){return e.hash!==f(e)}function T(e,t){return c(this,null,function*(){const a=yield u.getTemplate(e);return yield u.upsertTemplate({id:a.id,name:a.name,tags:a.tags,body:a.body,hidden:t})})}h.assignDependencies(T,[u.getTemplate,u.upsertTemplate]);exports.addLayoutOfHelper=w;exports.changeTemplateVisibility=T;exports.createTemplateHelper=g;exports.createTemplateHelperFrom=F;exports.hasTemplateChanged=q;exports.removeLayoutOfHelper=v;exports.templateHelperToJSON=S;exports.updateLayoutOfHelper=L;
2
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sources":["../../src/helpers/templates/editor/body.ts","../../src/helpers/templates/editor/index.ts","../../src/helpers/templates/index.ts"],"sourcesContent":["import type { TemplateBody, TemplateFilter, TemplateBodyGrid } from '~/modules/templates';\nimport { createLayoutHelperFrom, layoutHelperToJSON, type LayoutHelper } from './layouts';\n\nexport interface TemplateBodyHelper {\n readonly version: number;\n filters: Map<string, TemplateFilter>;\n index?: string;\n dateField: string;\n layouts: LayoutHelper[];\n grid?: TemplateBodyGrid;\n}\n\nexport function createTemplateBodyHelper(\n index?: string,\n dateField: string = '',\n layouts: LayoutHelper[] = [],\n filters: TemplateFilter[] = [],\n grid?: TemplateBodyGrid,\n): TemplateBodyHelper {\n return {\n version: 2,\n dateField,\n layouts,\n filters: new Map(filters?.map((filter) => [filter.name, filter]) ?? []),\n grid,\n index,\n };\n}\n\nexport function createTemplateBodyHelperFrom(body: TemplateBody): TemplateBodyHelper {\n return createTemplateBodyHelper(\n body.index,\n body.dateField,\n body.layouts.map((l) => createLayoutHelperFrom(l)),\n body.filters,\n body.grid,\n );\n}\n\nexport function templateHelperBodyToJSON(body: TemplateBodyHelper): TemplateBody {\n return {\n version: body.version,\n dateField: body.dateField,\n layouts: body.layouts.map((l) => layoutHelperToJSON(l)),\n filters: Array.from(body.filters.values()),\n grid: body.grid,\n index: body.index,\n };\n}\n\nexport function addLayoutOfHelper(\n body: TemplateBodyHelper,\n layout: LayoutHelper,\n index?: number,\n): TemplateBodyHelper {\n if (body.layouts.some((l) => l.id === layout.id)) {\n throw new Error(`Layout \"${layout.id}\" already exists`);\n }\n body.layouts.splice(index ?? body.layouts.length, 0, layout);\n return body;\n}\n\nexport function removeLayoutOfHelper(\n body: TemplateBodyHelper,\n layout: LayoutHelper,\n): TemplateBodyHelper {\n const template = body;\n template.layouts = body.layouts.filter((l) => l.id !== layout.id);\n return body;\n}\n\nexport function updateLayoutOfHelper(\n body: TemplateBodyHelper,\n oldLayout: LayoutHelper,\n newLayout: LayoutHelper,\n): TemplateBodyHelper {\n const index = body.layouts.findIndex((l) => l.id === oldLayout.id);\n if (index < 0) {\n throw new Error(`Layout \"${oldLayout.id}\" not found`);\n }\n const template = body;\n template.layouts[index] = newLayout;\n return body;\n}\n","import objectHash from 'object-hash';\nimport type { InputTemplate, Template } from '~/modules/templates';\n\nimport type { TemplateTagMap } from './tags';\nimport {\n createTemplateBodyHelper,\n createTemplateBodyHelperFrom,\n templateHelperBodyToJSON,\n type TemplateBodyHelper,\n} from './body';\n\nexport interface TemplateHelper {\n readonly id: string;\n name: string;\n body: TemplateBodyHelper;\n tags: TemplateTagMap;\n readonly createdAt: Date;\n readonly updatedAt?: Date;\n readonly hash: string;\n}\n\nfunction hashTemplate(template: Template | TemplateHelper): string {\n return objectHash({\n name: template.name,\n body: template.body,\n tags: template.tags,\n });\n}\n\nexport function createTemplateHelper(\n name: string = '',\n body?: TemplateBodyHelper,\n tags: TemplateTagMap = new Map(),\n id: string = '',\n createdAt: Date = new Date(),\n updatedAt?: Date,\n): TemplateHelper {\n const template = {\n id,\n name,\n body: body ?? createTemplateBodyHelper(),\n tags,\n createdAt,\n updatedAt,\n hash: '',\n };\n\n template.hash = hashTemplate(template);\n\n return template;\n}\n\nexport function createTemplateHelperFrom(template: Template): TemplateHelper {\n return createTemplateHelper(\n template.name,\n createTemplateBodyHelperFrom(template.body),\n new Map(template.tags?.map((t) => [t.name, t]) ?? []),\n template.id,\n template.createdAt,\n template.updatedAt,\n );\n}\n\nexport function templateHelperToJSON(template: TemplateHelper): InputTemplate {\n return {\n name: template.name,\n body: templateHelperBodyToJSON(template.body),\n tags: Array.from(template.tags.values()),\n };\n}\n\nexport function hasTemplateChanged(template: TemplateHelper): boolean {\n return template.hash !== hashTemplate(template);\n}\n\nexport {\n type TemplateBodyHelper,\n addLayoutOfHelper,\n removeLayoutOfHelper,\n updateLayoutOfHelper,\n} from './body';\nexport * from './tags';\n","import { type Template, getTemplate, upsertTemplate } from '~/modules/templates';\n\nimport { assignDependencies } from '~/helpers/permissions/decorator';\n\nexport * from './editor';\n\n/**\n * Change visibility of a template\n *\n * @param templateOrId Template or Template's id\n * @param hidden New state\n *\n * @returns Updated template\n */\nexport async function changeTemplateVisibility(\n templateOrId: Omit<Template, 'body'> | string,\n hidden: boolean,\n): Promise<Template> {\n const base = await getTemplate(templateOrId);\n\n const template = await upsertTemplate({\n id: base.id,\n name: base.name,\n tags: base.tags,\n body: base.body,\n hidden,\n });\n\n return template;\n}\nassignDependencies(changeTemplateVisibility, [getTemplate, upsertTemplate]);\n"],"names":["createTemplateBodyHelper","index","dateField","layouts","filters","grid","_a","filter","createTemplateBodyHelperFrom","body","l","createLayoutHelperFrom","templateHelperBodyToJSON","layoutHelperToJSON","addLayoutOfHelper","layout","removeLayoutOfHelper","template","updateLayoutOfHelper","oldLayout","newLayout","hashTemplate","objectHash","createTemplateHelper","name","tags","id","createdAt","updatedAt","createTemplateHelperFrom","_b","t","templateHelperToJSON","hasTemplateChanged","changeTemplateVisibility","templateOrId","hidden","__async","base","getTemplate","upsertTemplate","assignDependencies"],"mappings":"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"}