@ezpaarse-project/ezreeport-sdk-js 2.1.0 → 2.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{api-DVzOqMA2.js → api-BSUnyE6V.js} +2 -2
- package/dist/api-BSUnyE6V.js.map +1 -0
- package/dist/{api-C_g0ldUn.d.ts → api-Beaugm6M.d.ts} +2 -2
- package/dist/{api-D8l8Ds3U.mjs → api-Cwb98wAh.mjs} +2 -3
- package/dist/api-Cwb98wAh.mjs.map +1 -0
- package/dist/auth.js +1 -1
- package/dist/auth.mjs +1 -1
- package/dist/crons.js +1 -1
- package/dist/crons.js.map +1 -1
- package/dist/crons.mjs +41 -39
- package/dist/crons.mjs.map +1 -1
- package/dist/decorator-C2gcn2rK.js.map +1 -1
- package/dist/{decorator-DBkj--6g.mjs → decorator-DCiVxI72.mjs} +2 -4
- package/dist/decorator-DCiVxI72.mjs.map +1 -0
- package/dist/elastic.js +1 -1
- package/dist/elastic.js.map +1 -1
- package/dist/elastic.mjs +2 -2
- package/dist/elastic.mjs.map +1 -1
- package/dist/fetch-Cp3-cNix.mjs +44 -0
- package/dist/fetch-Cp3-cNix.mjs.map +1 -0
- package/dist/fetch-DA1lo0q0.js +2 -0
- package/dist/fetch-DA1lo0q0.js.map +1 -0
- package/dist/generations.d.ts +17 -0
- package/dist/generations.js +2 -0
- package/dist/generations.js.map +1 -0
- package/dist/generations.mjs +7 -0
- package/dist/generations.mjs.map +1 -0
- package/dist/health.d.ts +20 -32
- package/dist/health.js +1 -1
- package/dist/health.js.map +1 -1
- package/dist/health.mjs +33 -31
- package/dist/health.mjs.map +1 -1
- package/dist/helpers/aggregations.d.ts +4 -4
- package/dist/helpers/aggregations.js.map +1 -1
- package/dist/helpers/aggregations.mjs.map +1 -1
- package/dist/helpers/figures.d.ts +19 -19
- package/dist/helpers/figures.js +1 -1
- package/dist/helpers/figures.mjs +1 -1
- package/dist/helpers/filters.js.map +1 -1
- package/dist/helpers/filters.mjs.map +1 -1
- package/dist/helpers/generations.d.ts +55 -0
- package/dist/helpers/generations.js +2 -0
- package/dist/helpers/generations.js.map +1 -0
- package/dist/helpers/generations.mjs +310 -0
- package/dist/helpers/generations.mjs.map +1 -0
- package/dist/helpers/layouts.d.ts +3 -3
- package/dist/helpers/layouts.js +1 -1
- package/dist/helpers/layouts.js.map +1 -1
- package/dist/helpers/layouts.mjs +6 -6
- package/dist/helpers/layouts.mjs.map +1 -1
- package/dist/helpers/permissions.d.ts +3 -1
- package/dist/helpers/permissions.js +1 -1
- package/dist/helpers/permissions.js.map +1 -1
- package/dist/helpers/permissions.mjs +8 -4
- package/dist/helpers/permissions.mjs.map +1 -1
- package/dist/helpers/task-presets.d.ts +2 -2
- package/dist/helpers/task-presets.js +1 -1
- package/dist/helpers/task-presets.js.map +1 -1
- package/dist/helpers/task-presets.mjs +6 -3
- package/dist/helpers/task-presets.mjs.map +1 -1
- package/dist/helpers/tasks.d.ts +4 -1
- package/dist/helpers/tasks.js +1 -1
- package/dist/helpers/tasks.js.map +1 -1
- package/dist/helpers/tasks.mjs +6 -4
- package/dist/helpers/tasks.mjs.map +1 -1
- package/dist/helpers/templates.js +1 -1
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/templates.mjs +6 -6
- package/dist/helpers/templates.mjs.map +1 -1
- package/dist/{index-btsFMVmd.js → index-Cc9-CotA.js} +2 -2
- package/dist/index-Cc9-CotA.js.map +1 -0
- package/dist/{index-niBfS4wD.mjs → index-D6K5zKgZ.mjs} +28 -29
- package/dist/index-D6K5zKgZ.mjs.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{methods-sTFYWEAr.mjs → methods-B78wxcbm.mjs} +59 -56
- package/dist/methods-B78wxcbm.mjs.map +1 -0
- package/dist/{methods-C3rgYZb1.mjs → methods-Ba1XR8Ij.mjs} +5 -5
- package/dist/{methods-C3rgYZb1.mjs.map → methods-Ba1XR8Ij.mjs.map} +1 -1
- package/dist/{methods-M4GU2OL5.mjs → methods-BcKnS6pA.mjs} +3 -3
- package/dist/{methods-M4GU2OL5.mjs.map → methods-BcKnS6pA.mjs.map} +1 -1
- package/dist/methods-Bf8iqEhG.mjs +95 -0
- package/dist/methods-Bf8iqEhG.mjs.map +1 -0
- package/dist/methods-CBlHpa4P.js +2 -0
- package/dist/methods-CBlHpa4P.js.map +1 -0
- package/dist/{methods-jKz01wri.mjs → methods-Crgt0cEf.mjs} +6 -6
- package/dist/{methods-jKz01wri.mjs.map → methods-Crgt0cEf.mjs.map} +1 -1
- package/dist/{methods-Jar1Wkpj.js → methods-CvCyx_v_.js} +2 -2
- package/dist/{methods-Jar1Wkpj.js.map → methods-CvCyx_v_.js.map} +1 -1
- package/dist/methods-Cvs5hjsE.js +2 -0
- package/dist/methods-Cvs5hjsE.js.map +1 -0
- package/dist/{methods-BOf9WLn2.js → methods-DJctQ3lm.js} +2 -2
- package/dist/{methods-BOf9WLn2.js.map → methods-DJctQ3lm.js.map} +1 -1
- package/dist/methods-HbhrcB_u.js +2 -0
- package/dist/methods-HbhrcB_u.js.map +1 -0
- package/dist/methods-_8MaDPJ6.mjs +158 -0
- package/dist/methods-_8MaDPJ6.mjs.map +1 -0
- package/dist/{methods-ChKQbOFl.js → methods-eIVAWN5f.js} +2 -2
- package/dist/{methods-ChKQbOFl.js.map → methods-eIVAWN5f.js.map} +1 -1
- package/dist/recurrence.d.ts +28 -0
- package/dist/recurrence.js +2 -0
- package/dist/recurrence.js.map +1 -0
- package/dist/recurrence.mjs +49 -0
- package/dist/recurrence.mjs.map +1 -0
- package/dist/reports.d.ts +4 -5
- package/dist/reports.js +1 -1
- package/dist/reports.mjs +1 -1
- package/dist/task-activity.d.ts +2 -2
- package/dist/task-activity.js +1 -1
- package/dist/task-activity.js.map +1 -1
- package/dist/task-activity.mjs +5 -5
- package/dist/task-activity.mjs.map +1 -1
- package/dist/task-presets.d.ts +3 -3
- package/dist/task-presets.js +1 -1
- package/dist/task-presets.mjs +1 -1
- package/dist/{tasks-1x680qAf.mjs → tasks-Cc53eQzu.mjs} +2 -2
- package/dist/tasks-Cc53eQzu.mjs.map +1 -0
- package/dist/{tasks-hn70eL7B.js → tasks-FPNOmtnL.js} +2 -2
- package/dist/tasks-FPNOmtnL.js.map +1 -0
- package/dist/tasks.d.ts +3 -3
- package/dist/tasks.js +1 -1
- package/dist/tasks.mjs +1 -1
- package/dist/{templates-zMmVXt6k.mjs → templates-C_qWeEww.mjs} +5 -5
- package/dist/templates-C_qWeEww.mjs.map +1 -0
- package/dist/{templates-yZjsVuN9.js → templates-lPeMpQuz.js} +2 -2
- package/dist/templates-lPeMpQuz.js.map +1 -0
- package/dist/templates.d.ts +2 -2
- package/dist/templates.js +1 -1
- package/dist/templates.mjs +1 -1
- package/dist/{transform-EpMTJExd.mjs → transform-DrB-Z9tA.mjs} +3 -3
- package/dist/transform-DrB-Z9tA.mjs.map +1 -0
- package/dist/transform-DzLAfSJo.js.map +1 -1
- package/dist/{types-DtBHOMlQ.d.ts → types-BxhkIhgG.d.ts} +1 -1
- package/dist/{types-DP1QhOKe.d.ts → types-CCDLyhAJ.d.ts} +1 -1
- package/dist/types-Cac8HEO5.d.ts +23 -0
- package/dist/{types-jXqGnCKQ.d.ts → types-CgKoQCwb.d.ts} +12 -24
- package/package.json +29 -21
- package/dist/api-D8l8Ds3U.mjs.map +0 -1
- package/dist/api-DVzOqMA2.js.map +0 -1
- package/dist/decorator-DBkj--6g.mjs.map +0 -1
- package/dist/fetch-Hd-ajPIl.js +0 -2
- package/dist/fetch-Hd-ajPIl.js.map +0 -1
- package/dist/fetch-xZFTa3q1.mjs +0 -16
- package/dist/fetch-xZFTa3q1.mjs.map +0 -1
- package/dist/helpers/jobs.d.ts +0 -109
- package/dist/helpers/jobs.js +0 -2
- package/dist/helpers/jobs.js.map +0 -1
- package/dist/helpers/jobs.mjs +0 -390
- package/dist/helpers/jobs.mjs.map +0 -1
- package/dist/index-DfRKlMeG.d.ts +0 -109
- package/dist/index-btsFMVmd.js.map +0 -1
- package/dist/index-niBfS4wD.mjs.map +0 -1
- package/dist/methods-8bLJk-Sx.mjs +0 -161
- package/dist/methods-8bLJk-Sx.mjs.map +0 -1
- package/dist/methods-BJfwYB1p.mjs +0 -126
- package/dist/methods-BJfwYB1p.mjs.map +0 -1
- package/dist/methods-CMrpqFJZ.js +0 -2
- package/dist/methods-CMrpqFJZ.js.map +0 -1
- package/dist/methods-DC2Gjy1i.js +0 -2
- package/dist/methods-DC2Gjy1i.js.map +0 -1
- package/dist/methods-DU5cbtLn.js +0 -2
- package/dist/methods-DU5cbtLn.js.map +0 -1
- package/dist/methods-sTFYWEAr.mjs.map +0 -1
- package/dist/queues.d.ts +0 -6
- package/dist/queues.js +0 -2
- package/dist/queues.js.map +0 -1
- package/dist/queues.mjs +0 -10
- package/dist/queues.mjs.map +0 -1
- package/dist/tasks-1x680qAf.mjs.map +0 -1
- package/dist/tasks-hn70eL7B.js.map +0 -1
- package/dist/templates-yZjsVuN9.js.map +0 -1
- package/dist/templates-zMmVXt6k.mjs.map +0 -1
- package/dist/transform-EpMTJExd.mjs.map +0 -1
package/dist/helpers/tasks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as Task, a as TaskRecurrence, L as LastExtended, I as InputTask } from '../types-
|
|
1
|
+
import { T as Task, a as TaskRecurrence, L as LastExtended, I as InputTask } from '../types-CCDLyhAJ.js';
|
|
2
2
|
import { T as TemplateBodyHelper } from '../body-ADynkNh0.js';
|
|
3
3
|
import { TaskLayoutHelper, AnyLayoutHelper } from './layouts.js';
|
|
4
4
|
import { c as TemplateFilter } from '../types-DcoMmjs3.js';
|
|
@@ -51,6 +51,9 @@ declare function getLayoutsOfHelpers(taskBody: TaskBodyHelper, templateBody: Tem
|
|
|
51
51
|
* @param initial Initial date of the task
|
|
52
52
|
* @param recurrence The task recurrence
|
|
53
53
|
*
|
|
54
|
+
* @deprecated Please use the `recurrence` module
|
|
55
|
+
* @see {@link getNextDateFromRecurrence}
|
|
56
|
+
*
|
|
54
57
|
* @returns The new date of the task
|
|
55
58
|
*/
|
|
56
59
|
declare function calcNextDateFromRecurrence(initial: Date, recurrence: TaskRecurrence): Date;
|
package/dist/helpers/tasks.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var A=Object.defineProperty,S=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var u=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var x=(e,n,r)=>n in e?A(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,f=(e,n)=>{for(var r in n||(n={}))h.call(n,r)&&x(e,r,n[r]);if(u)for(var r of u(n))H.call(n,r)&&x(e,r,n[r]);return e},m=(e,n)=>S(e,D(n));var y=(e,n)=>{var r={};for(var t in e)h.call(e,t)&&n.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&u)for(var t of u(e))n.indexOf(t)<0&&H.call(e,t)&&(r[t]=e[t]);return r};var g=(e,n,r)=>new Promise((t,a)=>{var s=d=>{try{c(r.next(d))}catch(i){a(i)}},o=d=>{try{c(r.throw(d))}catch(i){a(i)}},c=d=>d.done?t(d.value):Promise.resolve(d.value).then(s,o);c((r=r.apply(e,n)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("../decorator-C2gcn2rK.js"),l=require("../methods-
|
|
1
|
+
"use strict";var A=Object.defineProperty,S=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var u=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var x=(e,n,r)=>n in e?A(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r,f=(e,n)=>{for(var r in n||(n={}))h.call(n,r)&&x(e,r,n[r]);if(u)for(var r of u(n))H.call(n,r)&&x(e,r,n[r]);return e},m=(e,n)=>S(e,D(n));var y=(e,n)=>{var r={};for(var t in e)h.call(e,t)&&n.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&u)for(var t of u(e))n.indexOf(t)<0&&H.call(e,t)&&(r[t]=e[t]);return r};var g=(e,n,r)=>new Promise((t,a)=>{var s=d=>{try{c(r.next(d))}catch(i){a(i)}},o=d=>{try{c(r.throw(d))}catch(i){a(i)}},c=d=>d.done?t(d.value):Promise.resolve(d.value).then(s,o);c((r=r.apply(e,n)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("../decorator-C2gcn2rK.js"),l=require("../methods-CBlHpa4P.js"),B=require("object-hash"),q=require("date-fns"),L=require("../tasks-FPNOmtnL.js");function I(e,n){const r={};switch(n){case"DAILY":r.days=1;break;case"WEEKLY":r.weeks=1;break;case"MONTHLY":r.months=1;break;case"QUARTERLY":r.months=3;break;case"BIENNIAL":r.months=6;break;case"YEARLY":r.years=1;break;default:throw new Error("Recurrence not found")}return q.add(e,r)}function T(e="",n="",r=[],t=[]){var a;return{version:2,dateField:n,inserts:r,filters:new Map((a=t==null?void 0:t.map(s=>[s.name,s]))!=null?a:[]),index:e}}function E(e){var n,r;return T(e.index,e.dateField,(r=(n=e.inserts)==null?void 0:n.map(t=>L.createTaskLayoutHelperFrom(t)))!=null?r:[],e.filters)}function J(e){return{version:e.version,index:e.index,inserts:e.inserts.map(n=>L.taskLayoutHelperToJSON(n)),dateField:e.dateField,filters:Array.from(e.filters.values())}}function k(e,n){if(e.inserts.some(r=>r.id===n.id))throw new Error(`Layout "${n.id}" already exists`);return e.inserts.splice(n.at,0,n),e}function M(e,n){const r=e;return r.inserts=e.inserts.filter(t=>t.id!==n.id),e}function j(e,n,r){const t=e.inserts.findIndex(s=>s.id===n.id);if(t<0)throw new Error(`Layout "${n.id}" not found`);const a=e;return a.inserts[t]=r,e}function O(e){return B({name:e.name,description:e.description,extendedId:e.extendedId,template:e.template,targets:e.targets,recurrence:e.recurrence,nextRun:e.nextRun,enabled:e.enabled})}function w(e="",n="",r="",t="",a,s=[],o="DAILY",c,d=!0,i,F,R="",N=new Date,v){const p={id:R,name:e,description:n,namespaceId:r,extendedId:t,template:a!=null?a:T(),targets:s,recurrence:o,nextRun:c!=null?c:I(new Date,o),enabled:d,lastExtended:i,lastRun:F,createdAt:N,updatedAt:v,hash:""};return p.hash=O(p),p}function C(e){var n;return w(e.name,e.description,e.namespaceId,e.extendedId,E(e.template),e.targets,e.recurrence,e.nextRun,e.enabled,(n=e.lastExtended)!=null?n:void 0,e.lastRun,e.id,e.createdAt,e.updatedAt)}function $(e){return{name:e.name,description:e.description,namespaceId:e.namespaceId,extendedId:e.extendedId,template:J(e.template),targets:e.targets,recurrence:e.recurrence,nextRun:e.nextRun,enabled:e.enabled,lastExtended:e.lastExtended}}function K(e){return e.hash!==O(e)}function P(e,n){const r=n.layouts.map(s=>m(f({},s),{readonly:!0}));for(const t of e.inserts){const a=t,{at:s}=a,o=y(a,["at"]);r.splice(s,0,m(f({},o),{readonly:!1}))}return r}function b(e,n){return g(this,null,function*(){const r=yield l.getTask(e);return yield l.upsertTask({id:r.id,name:r.name,description:r.description,extendedId:r.extendedId,namespaceId:r.namespaceId,nextRun:r.nextRun,recurrence:r.recurrence,targets:r.targets,template:r.template,lastExtended:r.lastExtended,enabled:n})})}Y.assignDependencies(b,[l.getTask,l.upsertTask]);exports.addLayoutOfHelper=k;exports.calcNextDateFromRecurrence=I;exports.changeTaskEnableState=b;exports.createTaskBodyHelper=T;exports.createTaskBodyHelperFrom=E;exports.createTaskHelper=w;exports.createTaskHelperFrom=C;exports.getLayoutsOfHelpers=P;exports.hasTaskChanged=K;exports.removeLayoutOfHelper=M;exports.taskHelperToJSON=$;exports.updateLayoutOfHelper=j;
|
|
2
2
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sources":["../../src/helpers/tasks/recurrence.ts","../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import { add, type Duration } from 'date-fns';\nimport type { TaskRecurrence } from '~/modules/tasks';\n\n/**\n * Calculate next run date for the task\n *\n * @param initial Initial date of the task\n * @param recurrence The task recurrence\n *\n * @returns The new date of the task\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function calcNextDateFromRecurrence(initial: Date, recurrence: TaskRecurrence): Date {\n const duration: Duration = {};\n\n switch (recurrence) {\n case 'DAILY':\n duration.days = 1;\n break;\n case 'WEEKLY':\n duration.weeks = 1;\n break;\n case 'MONTHLY':\n duration.months = 1;\n break;\n case 'QUARTERLY':\n duration.months = 3;\n break;\n case 'BIENNIAL':\n duration.months = 6;\n break;\n case 'YEARLY':\n duration.years = 1;\n break;\n default:\n throw new Error('Recurrence not found');\n }\n\n return add(initial, duration);\n}\n","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 { InputTask, LastExtended, TaskRecurrence } from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { AnyLayoutHelper } from '../../templates/editor/layouts';\nimport { calcNextDateFromRecurrence } from '../recurrence';\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 description: task.description,\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 ?? calcNextDateFromRecurrence(new Date(), 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): InputTask {\n return {\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 };\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): (AnyLayoutHelper & { 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 createTaskBodyHelper,\n createTaskBodyHelperFrom,\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';\nexport * from './recurrence';\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":["calcNextDateFromRecurrence","initial","recurrence","duration","add","createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","_b","l","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sources":["../../src/helpers/tasks/recurrence.ts","../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import { add, type Duration } from 'date-fns';\nimport type { TaskRecurrence } from '~/modules/tasks';\n\n/**\n * Calculate next run date for the task\n *\n * @param initial Initial date of the task\n * @param recurrence The task recurrence\n *\n * @deprecated Please use the `recurrence` module\n * @see {@link getNextDateFromRecurrence}\n *\n * @returns The new date of the task\n */\nexport function calcNextDateFromRecurrence(\n initial: Date,\n recurrence: TaskRecurrence\n): Date {\n const duration: Duration = {};\n\n switch (recurrence) {\n case 'DAILY':\n duration.days = 1;\n break;\n case 'WEEKLY':\n duration.weeks = 1;\n break;\n case 'MONTHLY':\n duration.months = 1;\n break;\n case 'QUARTERLY':\n duration.months = 3;\n break;\n case 'BIENNIAL':\n duration.months = 6;\n break;\n case 'YEARLY':\n duration.years = 1;\n break;\n default:\n throw new Error('Recurrence not found');\n }\n\n return add(initial, duration);\n}\n","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(\n template: Task['template']\n): TaskBodyHelper {\n return createTaskBodyHelper(\n template.index,\n template.dateField,\n template.inserts?.map((lay) => createTaskLayoutHelperFrom(lay)) ?? [],\n template.filters\n );\n}\n\nexport function taskBodyHelperToJSON(\n template: TaskBodyHelper\n): Task['template'] {\n return {\n version: template.version,\n index: template.index,\n inserts: template.inserts.map((lay) => taskLayoutHelperToJSON(lay)),\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((lay) => lay.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((lay) => lay.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((lay) => lay.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 {\n InputTask,\n LastExtended,\n TaskRecurrence,\n} from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { AnyLayoutHelper } from '../../templates/editor/layouts';\nimport { calcNextDateFromRecurrence } from '../recurrence';\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 description: task.description,\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 ?? calcNextDateFromRecurrence(new Date(), 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): InputTask {\n return {\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 };\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): (AnyLayoutHelper & { readonly: boolean })[] {\n const layouts = templateBody.layouts.map((lay) => ({\n ...lay,\n readonly: true,\n }));\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 createTaskBodyHelper,\n createTaskBodyHelperFrom,\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';\nexport * from './recurrence';\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 */\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":["calcNextDateFromRecurrence","initial","recurrence","duration","add","createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","_b","lay","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":"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"}
|
package/dist/helpers/tasks.mjs
CHANGED
|
@@ -35,11 +35,11 @@ var T = (e, r, n) => new Promise((t, a) => {
|
|
|
35
35
|
}, i = (s) => s.done ? t(s.value) : Promise.resolve(s.value).then(d, o);
|
|
36
36
|
i((n = n.apply(e, r)).next());
|
|
37
37
|
});
|
|
38
|
-
import { b as N } from "../decorator-
|
|
39
|
-
import { a as E, u as H } from "../methods-
|
|
38
|
+
import { b as N } from "../decorator-DCiVxI72.mjs";
|
|
39
|
+
import { a as E, u as H } from "../methods-B78wxcbm.mjs";
|
|
40
40
|
import Y from "object-hash";
|
|
41
41
|
import { add as v } from "date-fns";
|
|
42
|
-
import { a as D, t as B } from "../tasks-
|
|
42
|
+
import { a as D, t as B } from "../tasks-Cc53eQzu.mjs";
|
|
43
43
|
function S(e, r) {
|
|
44
44
|
const n = {};
|
|
45
45
|
switch (r) {
|
|
@@ -179,7 +179,9 @@ function Z(e) {
|
|
|
179
179
|
return e.hash !== w(e);
|
|
180
180
|
}
|
|
181
181
|
function _(e, r) {
|
|
182
|
-
const n = r.layouts.map((d) => l(m({}, d), {
|
|
182
|
+
const n = r.layouts.map((d) => l(m({}, d), {
|
|
183
|
+
readonly: !0
|
|
184
|
+
}));
|
|
183
185
|
for (const t of e.inserts) {
|
|
184
186
|
const a = t, { at: d } = a, o = I(a, ["at"]);
|
|
185
187
|
n.splice(d, 0, l(m({}, o), { readonly: !1 }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.mjs","sources":["../../src/helpers/tasks/recurrence.ts","../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import { add, type Duration } from 'date-fns';\nimport type { TaskRecurrence } from '~/modules/tasks';\n\n/**\n * Calculate next run date for the task\n *\n * @param initial Initial date of the task\n * @param recurrence The task recurrence\n *\n * @returns The new date of the task\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function calcNextDateFromRecurrence(initial: Date, recurrence: TaskRecurrence): Date {\n const duration: Duration = {};\n\n switch (recurrence) {\n case 'DAILY':\n duration.days = 1;\n break;\n case 'WEEKLY':\n duration.weeks = 1;\n break;\n case 'MONTHLY':\n duration.months = 1;\n break;\n case 'QUARTERLY':\n duration.months = 3;\n break;\n case 'BIENNIAL':\n duration.months = 6;\n break;\n case 'YEARLY':\n duration.years = 1;\n break;\n default:\n throw new Error('Recurrence not found');\n }\n\n return add(initial, duration);\n}\n","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 { InputTask, LastExtended, TaskRecurrence } from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { AnyLayoutHelper } from '../../templates/editor/layouts';\nimport { calcNextDateFromRecurrence } from '../recurrence';\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 description: task.description,\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 ?? calcNextDateFromRecurrence(new Date(), 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): InputTask {\n return {\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 };\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): (AnyLayoutHelper & { 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 createTaskBodyHelper,\n createTaskBodyHelperFrom,\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';\nexport * from './recurrence';\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":["calcNextDateFromRecurrence","initial","recurrence","duration","add","createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","_b","l","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.mjs","sources":["../../src/helpers/tasks/recurrence.ts","../../src/helpers/tasks/editor/body.ts","../../src/helpers/tasks/editor/index.ts","../../src/helpers/tasks/index.ts"],"sourcesContent":["import { add, type Duration } from 'date-fns';\nimport type { TaskRecurrence } from '~/modules/tasks';\n\n/**\n * Calculate next run date for the task\n *\n * @param initial Initial date of the task\n * @param recurrence The task recurrence\n *\n * @deprecated Please use the `recurrence` module\n * @see {@link getNextDateFromRecurrence}\n *\n * @returns The new date of the task\n */\nexport function calcNextDateFromRecurrence(\n initial: Date,\n recurrence: TaskRecurrence\n): Date {\n const duration: Duration = {};\n\n switch (recurrence) {\n case 'DAILY':\n duration.days = 1;\n break;\n case 'WEEKLY':\n duration.weeks = 1;\n break;\n case 'MONTHLY':\n duration.months = 1;\n break;\n case 'QUARTERLY':\n duration.months = 3;\n break;\n case 'BIENNIAL':\n duration.months = 6;\n break;\n case 'YEARLY':\n duration.years = 1;\n break;\n default:\n throw new Error('Recurrence not found');\n }\n\n return add(initial, duration);\n}\n","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(\n template: Task['template']\n): TaskBodyHelper {\n return createTaskBodyHelper(\n template.index,\n template.dateField,\n template.inserts?.map((lay) => createTaskLayoutHelperFrom(lay)) ?? [],\n template.filters\n );\n}\n\nexport function taskBodyHelperToJSON(\n template: TaskBodyHelper\n): Task['template'] {\n return {\n version: template.version,\n index: template.index,\n inserts: template.inserts.map((lay) => taskLayoutHelperToJSON(lay)),\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((lay) => lay.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((lay) => lay.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((lay) => lay.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 {\n InputTask,\n LastExtended,\n TaskRecurrence,\n} from '~/modules/tasks/types';\n\nimport type { TemplateBodyHelper } from '../../templates/editor/body';\nimport type { AnyLayoutHelper } from '../../templates/editor/layouts';\nimport { calcNextDateFromRecurrence } from '../recurrence';\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 description: task.description,\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 ?? calcNextDateFromRecurrence(new Date(), 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): InputTask {\n return {\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 };\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): (AnyLayoutHelper & { readonly: boolean })[] {\n const layouts = templateBody.layouts.map((lay) => ({\n ...lay,\n readonly: true,\n }));\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 createTaskBodyHelper,\n createTaskBodyHelperFrom,\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';\nexport * from './recurrence';\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 */\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":["calcNextDateFromRecurrence","initial","recurrence","duration","add","createTaskBodyHelper","index","dateField","inserts","filters","_a","filter","createTaskBodyHelperFrom","template","_b","lay","createTaskLayoutHelperFrom","taskBodyHelperToJSON","taskLayoutHelperToJSON","addLayoutOfHelper","body","layout","removeLayoutOfHelper","updateLayoutOfHelper","oldLayout","newLayout","hashTask","task","objectHash","createTaskHelper","name","description","namespaceId","extendedId","targets","nextRun","enabled","lastExtended","lastRun","id","createdAt","updatedAt","createTaskHelperFrom","taskHelperToJSON","hasTaskChanged","getLayoutsOfHelpers","taskBody","templateBody","layouts","__spreadProps","__spreadValues","at","__objRest","changeTaskEnableState","taskOrId","__async","base","getTask","upsertTask","assignDependencies"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,SAASA,EACdC,GACAC,GACM;AACN,QAAMC,IAAqB,CAAA;AAE3B,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,MAAAC,EAAS,OAAO;AAChB;AAAA,IACF,KAAK;AACH,MAAAA,EAAS,QAAQ;AACjB;AAAA,IACF,KAAK;AACH,MAAAA,EAAS,SAAS;AAClB;AAAA,IACF,KAAK;AACH,MAAAA,EAAS,SAAS;AAClB;AAAA,IACF,KAAK;AACH,MAAAA,EAAS,SAAS;AAClB;AAAA,IACF,KAAK;AACH,MAAAA,EAAS,QAAQ;AACjB;AAAA,IACF;AACE,YAAM,IAAI,MAAM,sBAAsB;AAAA,EAAA;AAG1C,SAAOC,EAAIH,GAASE,CAAQ;AAC9B;AC3BO,SAASE,EACdC,IAAgB,IAChBC,IAAoB,IACpBC,IAA8B,CAAA,GAC9BC,IAA4B,IACZ;;AAChB,SAAO;AAAA,IACL,SAAS;AAAA,IACT,WAAAF;AAAA,IACA,SAAAC;AAAA,IACA,SAAS,IAAI,KAAIE,IAAAD,KAAA,gBAAAA,EAAS,IAAI,CAACE,MAAW,CAACA,EAAO,MAAMA,CAAM,OAA7C,OAAAD,IAAmD,CAAA,CAAE;AAAA,IACtE,OAAAJ;AAAA,EAAA;AAEJ;AAEO,SAASM,EACdC,GACgB;;AAChB,SAAOR;AAAA,IACLQ,EAAS;AAAA,IACTA,EAAS;AAAA,KACTC,KAAAJ,IAAAG,EAAS,YAAT,gBAAAH,EAAkB,IAAI,CAACK,MAAQC,EAA2BD,CAAG,OAA7D,OAAAD,IAAmE,CAAA;AAAA,IACnED,EAAS;AAAA,EAAA;AAEb;AAEO,SAASI,EACdJ,GACkB;AAClB,SAAO;AAAA,IACL,SAASA,EAAS;AAAA,IAClB,OAAOA,EAAS;AAAA,IAChB,SAASA,EAAS,QAAQ,IAAI,CAACE,MAAQG,EAAuBH,CAAG,CAAC;AAAA,IAClE,WAAWF,EAAS;AAAA,IACpB,SAAS,MAAM,KAAKA,EAAS,QAAQ,QAAQ;AAAA,EAAA;AAEjD;AAEO,SAASM,EACdC,GACAC,GACgB;AAChB,MAAID,EAAK,QAAQ,KAAK,CAACL,MAAQA,EAAI,OAAOM,EAAO,EAAE;AACjD,UAAM,IAAI,MAAM,WAAWA,EAAO,EAAE,kBAAkB;AAExD,SAAAD,EAAK,QAAQ,OAAOC,EAAO,IAAI,GAAGA,CAAM,GACjCD;AACT;AAEO,SAASE,EACdF,GACAC,GACgB;AAChB,QAAMR,IAAWO;AACjB,SAAAP,EAAS,UAAUO,EAAK,QAAQ,OAAO,CAACL,MAAQA,EAAI,OAAOM,EAAO,EAAE,GAC7DD;AACT;AAEO,SAASG,EACdH,GACAI,GACAC,GACgB;AAChB,QAAMnB,IAAQc,EAAK,QAAQ,UAAU,CAACL,MAAQA,EAAI,OAAOS,EAAU,EAAE;AACrE,MAAIlB,IAAQ;AACV,UAAM,IAAI,MAAM,WAAWkB,EAAU,EAAE,aAAa;AAEtD,QAAMX,IAAWO;AACjB,SAAAP,EAAS,QAAQP,CAAK,IAAImB,GACnBL;AACT;AClDA,SAASM,EAASC,GAAiC;AACjD,SAAOC,EAAW;AAAA,IAChB,MAAMD,EAAK;AAAA,IACX,aAAaA,EAAK;AAAA,IAClB,YAAYA,EAAK;AAAA,IACjB,UAAUA,EAAK;AAAA,IACf,SAASA,EAAK;AAAA,IACd,YAAYA,EAAK;AAAA,IACjB,SAASA,EAAK;AAAA,IACd,SAASA,EAAK;AAAA,EAAA,CACf;AACH;AAEO,SAASE,EACdC,IAAe,IACfC,IAAsB,IACtBC,IAAsB,IACtBC,IAAqB,IACrBpB,GACAqB,IAAoB,CAAA,GACpBhC,IAA6B,SAC7BiC,GACAC,IAAmB,IACnBC,GACAC,GACAC,IAAa,IACbC,IAAkB,oBAAI,KAAA,GACtBC,GACY;AACZ,QAAMd,IAAO;AAAA,IACX,IAAAY;AAAA,IACA,MAAAT;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAUpB,KAAA,OAAAA,IAAYR,EAAA;AAAA,IACtB,SAAA6B;AAAA,IACA,YAAAhC;AAAA,IACA,SAASiC,KAAA,OAAAA,IAAWnC,EAA2B,oBAAI,KAAA,GAAQE,CAAU;AAAA,IACrE,SAAAkC;AAAA,IACA,cAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAE;AAAA,IACA,WAAAC;AAAA,IACA,MAAM;AAAA,EAAA;AAGR,SAAAd,EAAK,OAAOD,EAASC,CAAI,GAElBA;AACT;AAEO,SAASe,EAAqBf,GAAwB;;AAC3D,SAAOE;AAAA,IACLF,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,IACLf,EAAyBe,EAAK,QAAQ;AAAA,IACtCA,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,KACLjB,IAAAiB,EAAK,iBAAL,OAAAjB,IAAqB;AAAA,IACrBiB,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,IACLA,EAAK;AAAA,EAAA;AAET;AAEO,SAASgB,EAAiBhB,GAA6B;AAC5D,SAAO;AAAA,IACL,MAAMA,EAAK;AAAA,IACX,aAAaA,EAAK;AAAA,IAClB,aAAaA,EAAK;AAAA,IAClB,YAAYA,EAAK;AAAA,IACjB,UAAUV,EAAqBU,EAAK,QAAQ;AAAA,IAC5C,SAASA,EAAK;AAAA,IACd,YAAYA,EAAK;AAAA,IACjB,SAASA,EAAK;AAAA,IACd,SAASA,EAAK;AAAA,IACd,cAAcA,EAAK;AAAA,EAAA;AAEvB;AAEO,SAASiB,EAAejB,GAA2B;AACxD,SAAOA,EAAK,SAASD,EAASC,CAAI;AACpC;AAEO,SAASkB,EACdC,GACAC,GAC6C;AAC7C,QAAMC,IAAUD,EAAa,QAAQ,IAAI,CAAChC,MAASkC,EAAAC,EAAA,IAC9CnC,IAD8C;AAAA,IAEjD,UAAU;AAAA,EAAA,EACV;AACF,aAAWL,KAAqBoC,EAAS,SACvC;AADF,UAAAhC,IAAAJ,GAAa,MAAAyC,MAAbrC,GAAoBO,IAAA+B,EAApBtC,GAAoB,CAAP;AACX,IAAAkC,EAAQ,OAAOG,GAAI,GAAGF,EAAAC,EAAA,IAAK7B,IAAL,EAAa,UAAU,KAAO;AAAA;AAEtD,SAAO2B;AACT;AC5HA,SAAsBK,EACpBC,GACAlB,GACe;AAAA,SAAAmB,EAAA;AACf,UAAMC,IAAO,MAAMC,EAAQH,CAAQ;AAgBnC,WAda,MAAMI,EAAW;AAAA,MAC5B,IAAIF,EAAK;AAAA,MACT,MAAMA,EAAK;AAAA,MACX,aAAaA,EAAK;AAAA,MAClB,YAAYA,EAAK;AAAA,MACjB,aAAaA,EAAK;AAAA,MAClB,SAASA,EAAK;AAAA,MACd,YAAYA,EAAK;AAAA,MACjB,SAASA,EAAK;AAAA,MACd,UAAUA,EAAK;AAAA,MACf,cAAcA,EAAK;AAAA,MACnB,SAAApB;AAAA,IAAA,CACD;AAAA,EAGH;AAAA;AACAuB,EAAmBN,GAAuB,CAACI,GAASC,CAAU,CAAC;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var m=(e,t,a)=>new Promise((r,n)=>{var o=l=>{try{u(a.next(l))}catch(p){n(p)}},i=l=>{try{u(a.throw(l))}catch(p){n(p)}},u=l=>l.done?r(l.value):Promise.resolve(l.value).then(o,i);u((a=a.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../methods-
|
|
1
|
+
"use strict";var m=(e,t,a)=>new Promise((r,n)=>{var o=l=>{try{u(a.next(l))}catch(p){n(p)}},i=l=>{try{u(a.throw(l))}catch(p){n(p)}},u=l=>l.done?r(l.value):Promise.resolve(l.value).then(o,i);u((a=a.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../methods-DJctQ3lm.js"),h=require("../decorator-C2gcn2rK.js"),y=require("object-hash"),d=require("../templates-lPeMpQuz.js");function c(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 f(e){return c(e.index,e.dateField,e.layouts.map(t=>d.createLayoutHelperFrom(t)),e.filters,e.grid)}function O(e){return{version:e.version,dateField:e.dateField,layouts:e.layouts.map(t=>d.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 F(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 T(e){return y({name:e.name,body:e.body,tags:e.tags})}function H(e="",t,a=new Map,r="",n=new Date,o){const i={id:r,name:e,body:t!=null?t:c(),tags:a,createdAt:n,updatedAt:o,hash:""};return i.hash=T(i),i}function L(e){var t,a;return H(e.name,f(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 B(e){return e.hash!==T(e)}function g(e,t){return m(this,null,function*(){const a=yield s.getTemplate(e);return yield s.upsertTemplate({id:a.id,name:a.name,tags:a.tags,body:a.body,hidden:t})})}h.assignDependencies(g,[s.getTemplate,s.upsertTemplate]);exports.addLayoutOfHelper=w;exports.changeTemplateVisibility=g;exports.createTemplateBodyHelper=c;exports.createTemplateBodyHelperFrom=f;exports.createTemplateHelper=H;exports.createTemplateHelperFrom=L;exports.hasTemplateChanged=B;exports.removeLayoutOfHelper=v;exports.templateHelperToJSON=S;exports.updateLayoutOfHelper=F;
|
|
2
2
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +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 {
|
|
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 {\n TemplateBody,\n TemplateFilter,\n TemplateBodyGrid,\n} from '~/modules/templates';\nimport {\n createLayoutHelperFrom,\n layoutHelperToJSON,\n type LayoutHelper,\n} 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(\n body: TemplateBody\n): TemplateBodyHelper {\n return createTemplateBodyHelper(\n body.index,\n body.dateField,\n body.layouts.map((lay) => createLayoutHelperFrom(lay)),\n body.filters,\n body.grid\n );\n}\n\nexport function templateHelperBodyToJSON(\n body: TemplateBodyHelper\n): TemplateBody {\n return {\n version: body.version,\n dateField: body.dateField,\n layouts: body.layouts.map((lay) => layoutHelperToJSON(lay)),\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((lay) => lay.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((lay) => lay.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((lay) => lay.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((tag) => [tag.name, tag]) ?? []),\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 createTemplateBodyHelper,\n createTemplateBodyHelperFrom,\n addLayoutOfHelper,\n removeLayoutOfHelper,\n updateLayoutOfHelper,\n} from './body';\nexport * from './tags';\n","import {\n type Template,\n getTemplate,\n upsertTemplate,\n} 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","lay","createLayoutHelperFrom","templateHelperBodyToJSON","layoutHelperToJSON","addLayoutOfHelper","layout","removeLayoutOfHelper","template","updateLayoutOfHelper","oldLayout","newLayout","hashTemplate","objectHash","createTemplateHelper","name","tags","id","createdAt","updatedAt","createTemplateHelperFrom","_b","tag","templateHelperToJSON","hasTemplateChanged","changeTemplateVisibility","templateOrId","hidden","__async","base","getTemplate","upsertTemplate","assignDependencies"],"mappings":"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"}
|
|
@@ -14,10 +14,10 @@ var m = (e, a, t) => new Promise((r, n) => {
|
|
|
14
14
|
}, u = (i) => i.done ? r(i.value) : Promise.resolve(i.value).then(o, s);
|
|
15
15
|
u((t = t.apply(e, a)).next());
|
|
16
16
|
});
|
|
17
|
-
import { a as p, u as c } from "../methods-
|
|
18
|
-
import { b as
|
|
19
|
-
import
|
|
20
|
-
import { a as H, l as T } from "../templates-
|
|
17
|
+
import { a as p, u as c } from "../methods-Ba1XR8Ij.mjs";
|
|
18
|
+
import { b as h } from "../decorator-DCiVxI72.mjs";
|
|
19
|
+
import g from "object-hash";
|
|
20
|
+
import { a as H, l as T } from "../templates-C_qWeEww.mjs";
|
|
21
21
|
function f(e, a = "", t = [], r = [], n) {
|
|
22
22
|
var o;
|
|
23
23
|
return {
|
|
@@ -65,7 +65,7 @@ function N(e, a, t) {
|
|
|
65
65
|
return n.layouts[r] = t, e;
|
|
66
66
|
}
|
|
67
67
|
function d(e) {
|
|
68
|
-
return
|
|
68
|
+
return g({
|
|
69
69
|
name: e.name,
|
|
70
70
|
body: e.body,
|
|
71
71
|
tags: e.tags
|
|
@@ -116,7 +116,7 @@ function F(e, a) {
|
|
|
116
116
|
});
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
h(F, [p, c]);
|
|
120
120
|
export {
|
|
121
121
|
J as addLayoutOfHelper,
|
|
122
122
|
F as changeTemplateVisibility,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.mjs","sources":["../../src/helpers/templates/editor/body.ts","../../src/helpers/templates/editor/index.ts","../../src/helpers/templates/index.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"templates.mjs","sources":["../../src/helpers/templates/editor/body.ts","../../src/helpers/templates/editor/index.ts","../../src/helpers/templates/index.ts"],"sourcesContent":["import type {\n TemplateBody,\n TemplateFilter,\n TemplateBodyGrid,\n} from '~/modules/templates';\nimport {\n createLayoutHelperFrom,\n layoutHelperToJSON,\n type LayoutHelper,\n} 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(\n body: TemplateBody\n): TemplateBodyHelper {\n return createTemplateBodyHelper(\n body.index,\n body.dateField,\n body.layouts.map((lay) => createLayoutHelperFrom(lay)),\n body.filters,\n body.grid\n );\n}\n\nexport function templateHelperBodyToJSON(\n body: TemplateBodyHelper\n): TemplateBody {\n return {\n version: body.version,\n dateField: body.dateField,\n layouts: body.layouts.map((lay) => layoutHelperToJSON(lay)),\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((lay) => lay.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((lay) => lay.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((lay) => lay.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((tag) => [tag.name, tag]) ?? []),\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 createTemplateBodyHelper,\n createTemplateBodyHelperFrom,\n addLayoutOfHelper,\n removeLayoutOfHelper,\n updateLayoutOfHelper,\n} from './body';\nexport * from './tags';\n","import {\n type Template,\n getTemplate,\n upsertTemplate,\n} 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","lay","createLayoutHelperFrom","templateHelperBodyToJSON","layoutHelperToJSON","addLayoutOfHelper","layout","removeLayoutOfHelper","template","updateLayoutOfHelper","oldLayout","newLayout","hashTemplate","objectHash","createTemplateHelper","name","tags","id","createdAt","updatedAt","createTemplateHelperFrom","_b","tag","templateHelperToJSON","hasTemplateChanged","changeTemplateVisibility","templateOrId","hidden","__async","base","getTemplate","upsertTemplate","assignDependencies"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
"use strict";var E=Object.defineProperty,I=Object.defineProperties;var W=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var w=(e,r,t)=>r in e?E(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,m=(e,r)=>{for(var t in r||(r={}))j.call(r,t)&&w(e,t,r[t]);if(M)for(var t of M(r))q.call(r,t)&&w(e,t,r[t]);return e},d=(e,r)=>I(e,W(r));const D=require("object-hash");let z="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",L=(e=21)=>{let r="",t=e|0;for(;t--;)r+=z[Math.random()*64|0];return r};function C(e){return D({type:e.type,data:"data"in e?e.data:void 0,filters:"filters"in e?e.filters:void 0,params:e.params,slots:e.slots})}function S(e,r={},t){return{id:L(),type:e,params:r,slots:new Set(t!=null?t:[]),hash:""}}function B(e,r,t={},a){const l=d(m({},S(e,t,a)),{data:r});return l.hash=C(l),l}function b(e,r=[],t={},a){var n;const l=d(m({},S(e,t,a)),{filters:new Map((n=r==null?void 0:r.map(o=>[o.name,o]))!=null?n:[]),hash:""});return l.hash=C(l),l}function H(e="",r){return B("md",e,{},r)}function k(e){const r=typeof e.data=="string"?e.data:"";return H(r,e.slots)}function G(e){return e}function F(e=[],r=[],t=!0,a){return b("metric",r,{labels:e,order:t},a)}function A(e){var r,t,a,l,n;return F((t=(r=e.params)==null?void 0:r.labels)!=null?t:[],(a=e.filters)!=null?a:[],(n=(l=e.params)==null?void 0:l.order)!=null?n:!0,e.slots)}function J(e){return{labels:e.labels,order:e.order}}function s(e){return e.text}function Q(e){return e.params.labels.map(s)}function R(e,r,t){const a=s(r);if(e.params.labels.some(l=>s(l)===a))throw new Error(`Label "${r.text}" already exists`);return e.params.labels.splice(t!=null?t:e.params.labels.length,0,r),e}function U(e,r){const t=e,a=s(r);return t.params.labels=e.params.labels.filter(l=>s(l)!==a),e}function X(e,r,t){const a=s(r),l=e.params.labels.findIndex(o=>s(o)===a);if(l<0)throw new Error(`Label "${r.text}" not found`);const n=e;return n.params.labels[l]=t,e}function v(e="",r=[],t=!1,a=[],l=!0,n){return b("table",a,{title:e,columns:r,total:t,order:l},n)}function K(e){var r,t,a,l,n,o,i,p;return v((r=e.params)==null?void 0:r.title,(a=(t=e.params)==null?void 0:t.columns)!=null?a:[],(n=(l=e.params)==null?void 0:l.total)!=null?n:!1,(o=e.filters)!=null?o:[],(p=(i=e.params)==null?void 0:i.order)!=null?p:!0,e.slots)}function N(e){return{title:e.title,columns:e.columns,total:e.total,order:e.order}}function c(e){return e.header}function Y(e){return e.params.columns.map(c)}function Z(e,r,t){const a=c(r);if(e.params.columns.some(l=>c(l)===a))throw new Error(`Column "${r.header}" already exists`);return e.params.columns.splice(t!=null?t:e.params.columns.length,0,r),e}function _(e,r){const t=e,a=c(r);return t.params.columns=e.params.columns.filter(l=>c(l)!==a),e}function ee(e,r,t){const a=c(r),l=e.params.columns.findIndex(o=>c(o)===a);if(l<0)throw new Error(`Column "${a}" not found`);const n=e;return n.params.columns[l]=t,e}function y(e,r="",t={},a={},l,n,o=!1,i=[],p=!0,u){return b(e,i,{title:r,invertAxis:o,label:t,value:a,color:l,dataLabel:n,order:p},u)}function P(e){var r,t,a,l,n,o,i,p,u,h,O,T,f;return y(e.type,(t=(r=e.params)==null?void 0:r.title)!=null?t:"",(l=(a=e.params)==null?void 0:a.label)!=null?l:{},(o=(n=e.params)==null?void 0:n.value)!=null?o:{},(i=e.params)==null?void 0:i.color,(p=e.params)==null?void 0:p.dataLabel,(h=(u=e.params)==null?void 0:u.invertAxis)!=null?h:!1,(O=e.filters)!=null?O:[],(f=(T=e.params)==null?void 0:T.order)!=null?f:!0,e.slots)}function V(e){return{title:e.title,invertAxis:e.invertAxis,label:e.label,value:e.value,color:e.color,dataLabel:e.dataLabel,order:e.order}}function re(e,r,t,a){switch(e){case"md":return H(void 0,a);case"metric":return F(void 0,r,t,a);case"table":return v(void 0,void 0,void 0,r,t,a);default:return y(e,void 0,void 0,void 0,void 0,void 0,void 0,r,t,a)}}function te(e){switch(e.type){case"md":return k(e);case"metric":return A(e);case"table":return K(e);default:return P(e)}}function ae(e){let r={};switch(e.type){case"md":r=e.params;break;case"metric":r=J(e.params);break;case"table":r=N(e.params);break;default:r=V(e.params);break}return{type:e.type,data:"data"in e?e.data:void 0,filters:"filters"in e?Array.from(e.filters.values()):void 0,params:r,slots:Array.from(e.slots)}}function g(e){return e.type==="md"}function x(e){return e.type==="metric"}function $(e){return e.type==="table"}function le(e){return!g(e)&&!x(e)&&!$(e)}exports.addMetricLabelOfHelper=R;exports.addTableColumnOfHelper=Z;exports.createFigureHelper=re;exports.createFigureHelperFrom=te;exports.createMdFigureHelper=H;exports.createMdFigureHelperFrom=k;exports.createMetricFigureHelper=F;exports.createMetricFigureHelperFrom=A;exports.createTableFigureHelper=v;exports.createTableFigureHelperFrom=K;exports.createVegaFigureHelper=y;exports.createVegaFigureHelperFrom=P;exports.figureHelperToJSON=ae;exports.getAllMetricLabelKeysOfHelper=Q;exports.getAllTableColumnKeysOfHelper=Y;exports.getMetricLabelKey=s;exports.getTableColumnKey=c;exports.isFigureHelperMarkdown=g;exports.isFigureHelperMetric=x;exports.isFigureHelperTable=$;exports.isFigureHelperVega=le;exports.mdHelperParamsToJSON=G;exports.metricHelperParamsToJSON=J;exports.nanoid=L;exports.removeMetricLabelOfHelper=U;exports.removeTableColumnOfHelper=_;exports.tableHelperParamsToJSON=N;exports.updateMetricLabelOfHelper=X;exports.updateTableColumnOfHelper=ee;exports.vegaHelperParamsToJSON=V;
|
|
2
|
+
//# sourceMappingURL=index-Cc9-CotA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cc9-CotA.js","sources":["../../../node_modules/.pnpm/nanoid@5.1.5/node_modules/nanoid/non-secure/index.js","../src/helpers/templates/editor/figures/base.ts","../src/helpers/templates/editor/figures/md.ts","../src/helpers/templates/editor/figures/metric.ts","../src/helpers/templates/editor/figures/table.ts","../src/helpers/templates/editor/figures/vega.ts","../src/helpers/templates/editor/figures/index.ts"],"sourcesContent":["/* @ts-self-types=\"./index.d.ts\" */\nlet urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","import { nanoid } from 'nanoid/non-secure';\nimport objectHash from 'object-hash';\n\nimport type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\n\ninterface FigureHelper {\n readonly id: string;\n readonly type: string;\n // oxlint-disable-next-line no-explicit-any\n params: Record<string, any>;\n slots: Set<number>;\n readonly hash: string;\n}\n\nfunction hashFigure(figure: FigureHelper | TemplateBodyFigure): string {\n return objectHash({\n type: figure.type,\n data: 'data' in figure ? figure.data : undefined,\n filters: 'filters' in figure ? figure.filters : undefined,\n params: figure.params,\n slots: figure.slots,\n });\n}\n\nfunction createFigureHelper<Fig extends FigureHelper = FigureHelper>(\n type: string,\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n return {\n id: nanoid(),\n type,\n params,\n slots: new Set(slots ?? []),\n hash: '',\n } satisfies FigureHelper as Fig;\n}\n\nexport interface FigureHelperWithData extends FigureHelper {\n data: string | unknown[];\n}\n\nexport function createFigureHelperWithData<\n Fig extends FigureHelperWithData = FigureHelperWithData,\n>(\n type: string,\n data: string | unknown[],\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n const figure = {\n ...createFigureHelper(type, params, slots),\n data,\n } satisfies FigureHelperWithData;\n\n figure.hash = hashFigure(figure);\n return figure as Fig;\n}\n\nexport interface FigureHelperWithFilters extends FigureHelper {\n filters: Map<string, TemplateFilter>;\n}\n\nexport function createFigureHelperWithFilters<\n Fig extends FigureHelperWithFilters = FigureHelperWithFilters,\n>(\n type: string,\n filters: TemplateFilter[] = [],\n params: Record<string, unknown> = {},\n slots?: number[]\n): Fig {\n const figure = {\n ...createFigureHelper(type, params, slots),\n filters: new Map(filters?.map((filter) => [filter.name, filter]) ?? []),\n hash: '',\n } satisfies FigureHelperWithFilters;\n\n figure.hash = hashFigure(figure);\n return figure as Fig;\n}\n","import type { TemplateBodyFigure } from '~/modules/templates';\nimport { type FigureHelperWithData, createFigureHelperWithData } from './base';\n\nexport interface MdFigure extends FigureHelperWithData {\n readonly type: 'md';\n data: string;\n readonly params: Record<string, never>;\n}\n\nexport function createMdFigureHelper(data = '', slots?: number[]): MdFigure {\n return createFigureHelperWithData('md', data, {}, slots);\n}\n\nexport function createMdFigureHelperFrom(figure: TemplateBodyFigure): MdFigure {\n const data = typeof figure.data === 'string' ? figure.data : '';\n return createMdFigureHelper(data, figure.slots);\n}\n\nexport function mdHelperParamsToJSON(\n params: MdFigure['params']\n): TemplateBodyFigure['params'] {\n return params;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for labels used in metrics\n */\nexport interface MetricLabel {\n /**\n * The text of the label (rendered under the value)\n */\n text: string;\n /**\n * The aggregation used to fetch data,\n * if not set, the count of documents will be used\n */\n aggregation?: FigureAggregation;\n /**\n * Format options used to format the data\n */\n format?: {\n type: 'date' | 'number';\n params?: string[];\n };\n}\n\nexport interface MetricFigureHelper extends FigureHelperWithFilters {\n readonly type: 'metric';\n params: {\n labels: MetricLabel[];\n order: FigureOrder;\n };\n}\n\nexport function createMetricFigureHelper(\n labels: MetricLabel[] = [],\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): MetricFigureHelper {\n return createFigureHelperWithFilters(\n 'metric',\n filters,\n {\n labels,\n order,\n },\n slots\n );\n}\n\nexport function createMetricFigureHelperFrom(\n figure: TemplateBodyFigure\n): MetricFigureHelper {\n return createMetricFigureHelper(\n figure.params?.labels ?? [],\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function metricHelperParamsToJSON(\n params: MetricFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n labels: params.labels,\n order: params.order,\n };\n}\n\nexport function getMetricLabelKey(label: MetricLabel): string {\n return label.text;\n}\n\nexport function getAllMetricLabelKeysOfHelper(\n figure: MetricFigureHelper\n): string[] {\n return figure.params.labels.map(getMetricLabelKey);\n}\n\nexport function addMetricLabelOfHelper(\n figure: MetricFigureHelper,\n element: MetricLabel,\n index?: number\n): MetricFigureHelper {\n const key = getMetricLabelKey(element);\n if (figure.params.labels.some((lab) => getMetricLabelKey(lab) === key)) {\n throw new Error(`Label \"${element.text}\" already exists`);\n }\n figure.params.labels.splice(index ?? figure.params.labels.length, 0, element);\n return figure;\n}\n\nexport function removeMetricLabelOfHelper(\n figure: MetricFigureHelper,\n element: MetricLabel\n): MetricFigureHelper {\n const fig = figure;\n const key = getMetricLabelKey(element);\n fig.params.labels = figure.params.labels.filter(\n (lab) => getMetricLabelKey(lab) !== key\n );\n return figure;\n}\n\nexport function updateMetricLabelOfHelper(\n figure: MetricFigureHelper,\n oldElement: MetricLabel,\n newElement: MetricLabel\n): MetricFigureHelper {\n const oldKey = getMetricLabelKey(oldElement);\n const index = figure.params.labels.findIndex(\n (lab) => getMetricLabelKey(lab) === oldKey\n );\n if (index < 0) {\n throw new Error(`Label \"${oldElement.text}\" not found`);\n }\n const fig = figure;\n fig.params.labels[index] = newElement;\n return figure;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for columns used in tables\n */\nexport interface TableColumn {\n /**\n * The name of the column\n */\n header: string;\n /**\n * Whether the column is a metric,\n * can only be used once in a table\n */\n metric?: boolean;\n /**\n * The aggregation used to fetch data,\n * if not set, the \"value\" of the previous column will be used\n */\n aggregation?: FigureAggregation;\n /**\n * The style of the cells in this column\n */\n styles?: {\n fontStyle?: 'normal' | 'bold' | 'italic' | 'bolditalic';\n fillColor?: string | [number, number, number];\n textColor?: string | [number, number, number];\n headerColor?: string | [number, number, number];\n halign?: 'left' | 'center' | 'right' | 'justify';\n valign?: 'top' | 'middle' | 'bottom';\n fontSize?: number;\n lineColor?: string | [number, number, number];\n };\n}\n\n/**\n * Type for tables\n */\nexport interface TableFigureHelper extends FigureHelperWithFilters {\n readonly type: 'table';\n params: {\n title: string;\n columns: TableColumn[];\n total?: boolean;\n order?: FigureOrder;\n };\n}\n\nexport function createTableFigureHelper(\n title: string = '',\n columns: TableColumn[] = [],\n total: boolean = false,\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): TableFigureHelper {\n return createFigureHelperWithFilters(\n 'table',\n filters,\n {\n title,\n columns,\n total,\n order,\n },\n slots\n );\n}\n\nexport function createTableFigureHelperFrom(\n figure: TemplateBodyFigure\n): TableFigureHelper {\n return createTableFigureHelper(\n figure.params?.title,\n figure.params?.columns ?? [],\n figure.params?.total ?? false,\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function tableHelperParamsToJSON(\n params: TableFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n title: params.title,\n columns: params.columns,\n total: params.total,\n order: params.order,\n };\n}\n\nexport function getTableColumnKey(column: TableColumn): string {\n return column.header;\n}\n\nexport function getAllTableColumnKeysOfHelper(\n figure: TableFigureHelper\n): string[] {\n return figure.params.columns.map(getTableColumnKey);\n}\n\nexport function addTableColumnOfHelper(\n figure: TableFigureHelper,\n element: TableColumn,\n index?: number\n): TableFigureHelper {\n const key = getTableColumnKey(element);\n if (figure.params.columns.some((col) => getTableColumnKey(col) === key)) {\n throw new Error(`Column \"${element.header}\" already exists`);\n }\n figure.params.columns.splice(\n index ?? figure.params.columns.length,\n 0,\n element\n );\n return figure;\n}\n\nexport function removeTableColumnOfHelper(\n figure: TableFigureHelper,\n element: TableColumn\n): TableFigureHelper {\n const fig = figure;\n const key = getTableColumnKey(element);\n fig.params.columns = figure.params.columns.filter(\n (col) => getTableColumnKey(col) !== key\n );\n return figure;\n}\n\nexport function updateTableColumnOfHelper(\n figure: TableFigureHelper,\n oldElement: TableColumn,\n newElement: TableColumn\n): TableFigureHelper {\n const oldKey = getTableColumnKey(oldElement);\n const index = figure.params.columns.findIndex(\n (col) => getTableColumnKey(col) === oldKey\n );\n if (index < 0) {\n throw new Error(`Column \"${oldKey}\" not found`);\n }\n const fig = figure;\n fig.params.columns[index] = newElement;\n return figure;\n}\n","import type { TemplateFilter, TemplateBodyFigure } from '~/modules/templates';\nimport type { FigureAggregation } from '../aggregations';\nimport type { FigureOrder } from './utils';\nimport {\n type FigureHelperWithFilters,\n createFigureHelperWithFilters,\n} from './base';\n\n/**\n * Type for layers used in vega\n */\nexport interface VegaLayer extends Record<string, unknown> {\n /**\n * The aggregation used to fetch data,\n * if not set, the \"value\" of the label (or color if present) layer will be used\n */\n aggregation?: FigureAggregation;\n /**\n * The title of the axis\n */\n title?: string;\n /**\n * The legend, if `null` no legend will be shown\n */\n legend?: null | { title?: string };\n}\n\n/**\n * Type for data label options\n */\nexport interface VegaDataLabelOptions {\n format: 'percent' | 'numeric';\n position?: 'out' | 'in';\n showLabel?: boolean;\n minValue?: number;\n}\n\nexport interface VegaFigureHelper extends FigureHelperWithFilters {\n params: {\n /**\n * The title of the figure\n */\n title: string;\n /**\n * Whether the axis should be inverted\n */\n invertAxis?: boolean;\n /**\n * The label layer of the figure, often used for the x axis\n */\n label: VegaLayer;\n /**\n * The value layer of the figure, often used for the y axis\n */\n value: VegaLayer;\n /**\n * The color layer of the figure, often used for splitting the value\n */\n color?: VegaLayer;\n /**\n * The data label options\n *\n * Data labels are displayed on top of the value layer, and show details about values\n */\n dataLabel?: VegaDataLabelOptions;\n /**\n * The order of the data in the chart\n */\n order?: FigureOrder;\n };\n}\n\nexport function createVegaFigureHelper(\n type: string,\n title: string = '',\n label: VegaLayer = {},\n value: VegaLayer = {},\n color?: VegaLayer,\n dataLabel?: VegaDataLabelOptions,\n invertAxis: boolean = false,\n filters: TemplateFilter[] = [],\n order: FigureOrder = true,\n slots?: number[]\n): VegaFigureHelper {\n return createFigureHelperWithFilters(\n type,\n filters,\n {\n title,\n invertAxis,\n label,\n value,\n color,\n dataLabel,\n order,\n },\n slots\n );\n}\n\nexport function createVegaFigureHelperFrom(\n figure: TemplateBodyFigure\n): VegaFigureHelper {\n return createVegaFigureHelper(\n figure.type,\n figure.params?.title ?? '',\n figure.params?.label ?? {},\n figure.params?.value ?? {},\n figure.params?.color,\n figure.params?.dataLabel,\n figure.params?.invertAxis ?? false,\n figure.filters ?? [],\n figure.params?.order ?? true,\n figure.slots\n );\n}\n\nexport function vegaHelperParamsToJSON(\n params: VegaFigureHelper['params']\n): TemplateBodyFigure['params'] {\n return {\n title: params.title,\n invertAxis: params.invertAxis,\n label: params.label,\n value: params.value,\n color: params.color,\n dataLabel: params.dataLabel,\n order: params.order,\n };\n}\n","import type {\n TemplateFilter,\n TemplateBodyFigure as IFigure,\n} from '~/modules/templates';\nimport type { FigureOrder } from './utils';\n\nimport {\n type MdFigure,\n createMdFigureHelper,\n createMdFigureHelperFrom,\n mdHelperParamsToJSON,\n} from './md';\nimport {\n type MetricFigureHelper,\n createMetricFigureHelper,\n createMetricFigureHelperFrom,\n metricHelperParamsToJSON,\n} from './metric';\nimport {\n type TableFigureHelper,\n createTableFigureHelper,\n createTableFigureHelperFrom,\n tableHelperParamsToJSON,\n} from './table';\nimport {\n type VegaFigureHelper,\n createVegaFigureHelper,\n createVegaFigureHelperFrom,\n vegaHelperParamsToJSON,\n} from './vega';\n\nexport type AnyFigureHelper =\n | MdFigure\n | MetricFigureHelper\n | TableFigureHelper\n | VegaFigureHelper;\n\nexport type FigureHelperSet = Map<string, AnyFigureHelper>;\n\n/**\n * Create a figure helper\n *\n * @param figure The figure object\n *\n * @returns The figure helper\n */\nexport function createFigureHelper(\n type: AnyFigureHelper['type'],\n filters?: TemplateFilter[],\n order?: FigureOrder,\n slots?: number[]\n): AnyFigureHelper {\n switch (type) {\n case 'md':\n return createMdFigureHelper(undefined, slots);\n\n case 'metric':\n return createMetricFigureHelper(undefined, filters, order, slots);\n\n case 'table':\n return createTableFigureHelper(\n undefined,\n undefined,\n undefined,\n filters,\n order,\n slots\n );\n\n default:\n return createVegaFigureHelper(\n type,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n filters,\n order,\n slots\n );\n }\n}\n\n/**\n * Create a figure helper from a figure object\n *\n * @param figure The figure object\n *\n * @returns The figure helper\n */\nexport function createFigureHelperFrom(figure: IFigure): AnyFigureHelper {\n switch (figure.type) {\n case 'md':\n return createMdFigureHelperFrom(figure);\n\n case 'metric':\n return createMetricFigureHelperFrom(figure);\n\n case 'table':\n return createTableFigureHelperFrom(figure);\n\n default:\n return createVegaFigureHelperFrom(figure);\n }\n}\n\n/**\n * Create a figure object from a figure helper\n *\n * @param figure The figure helper\n *\n * @returns The figure object\n */\nexport function figureHelperToJSON(figure: AnyFigureHelper): IFigure {\n let params: IFigure['params'] = {};\n switch (figure.type) {\n case 'md':\n params = mdHelperParamsToJSON((figure as MdFigure).params);\n break;\n\n case 'metric':\n params = metricHelperParamsToJSON((figure as MetricFigureHelper).params);\n break;\n\n case 'table':\n params = tableHelperParamsToJSON((figure as TableFigureHelper).params);\n break;\n\n default:\n params = vegaHelperParamsToJSON((figure as VegaFigureHelper).params);\n break;\n }\n\n return {\n type: figure.type,\n data: 'data' in figure ? figure.data : undefined,\n filters:\n 'filters' in figure ? Array.from(figure.filters.values()) : undefined,\n params,\n slots: Array.from(figure.slots),\n };\n}\n\nexport function isFigureHelperMarkdown(\n figure: AnyFigureHelper\n): figure is MdFigure {\n return figure.type === 'md';\n}\nexport function isFigureHelperMetric(\n figure: AnyFigureHelper\n): figure is MetricFigureHelper {\n return figure.type === 'metric';\n}\nexport function isFigureHelperTable(\n figure: AnyFigureHelper\n): figure is TableFigureHelper {\n return figure.type === 'table';\n}\nexport function isFigureHelperVega(\n figure: AnyFigureHelper\n): figure is VegaFigureHelper {\n return (\n !isFigureHelperMarkdown(figure) &&\n !isFigureHelperMetric(figure) &&\n !isFigureHelperTable(figure)\n );\n}\n\nexport * from './utils';\nexport * from './md';\nexport * from './metric';\nexport * from './table';\nexport * from './vega';\n"],"names":["urlAlphabet","nanoid","size","id","i","hashFigure","figure","objectHash","createFigureHelper","type","params","slots","createFigureHelperWithData","data","__spreadProps","__spreadValues","createFigureHelperWithFilters","filters","_a","filter","createMdFigureHelper","createMdFigureHelperFrom","mdHelperParamsToJSON","createMetricFigureHelper","labels","order","createMetricFigureHelperFrom","_b","_c","_e","_d","metricHelperParamsToJSON","getMetricLabelKey","label","getAllMetricLabelKeysOfHelper","addMetricLabelOfHelper","element","index","key","lab","removeMetricLabelOfHelper","fig","updateMetricLabelOfHelper","oldElement","newElement","oldKey","createTableFigureHelper","title","columns","total","createTableFigureHelperFrom","_f","_h","_g","tableHelperParamsToJSON","getTableColumnKey","column","getAllTableColumnKeysOfHelper","addTableColumnOfHelper","col","removeTableColumnOfHelper","updateTableColumnOfHelper","createVegaFigureHelper","value","color","dataLabel","invertAxis","createVegaFigureHelperFrom","_j","_i","_k","_m","_l","vegaHelperParamsToJSON","createFigureHelperFrom","figureHelperToJSON","isFigureHelperMarkdown","isFigureHelperMetric","isFigureHelperTable","isFigureHelperVega"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -2,7 +2,7 @@ var A = Object.defineProperty, C = Object.defineProperties;
|
|
|
2
2
|
var x = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var F = Object.getOwnPropertySymbols;
|
|
4
4
|
var K = Object.prototype.hasOwnProperty, S = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var f = (e, a, t) => a in e ? A(e, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[a] = t,
|
|
5
|
+
var f = (e, a, t) => a in e ? A(e, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[a] = t, m = (e, a) => {
|
|
6
6
|
for (var t in a || (a = {}))
|
|
7
7
|
K.call(a, t) && f(e, t, a[t]);
|
|
8
8
|
if (F)
|
|
@@ -36,26 +36,21 @@ function M(e, a = {}, t) {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
function $(e, a, t = {}, r) {
|
|
39
|
-
const n = d(
|
|
39
|
+
const n = d(m({}, M(e, t, r)), {
|
|
40
40
|
data: a
|
|
41
41
|
});
|
|
42
42
|
return n.hash = w(n), n;
|
|
43
43
|
}
|
|
44
44
|
function b(e, a = [], t = {}, r) {
|
|
45
45
|
var s;
|
|
46
|
-
const n = d(
|
|
46
|
+
const n = d(m({}, M(e, t, r)), {
|
|
47
47
|
filters: new Map((s = a == null ? void 0 : a.map((l) => [l.name, l])) != null ? s : []),
|
|
48
48
|
hash: ""
|
|
49
49
|
});
|
|
50
50
|
return n.hash = w(n), n;
|
|
51
51
|
}
|
|
52
52
|
function O(e = "", a) {
|
|
53
|
-
return $(
|
|
54
|
-
"md",
|
|
55
|
-
e,
|
|
56
|
-
{},
|
|
57
|
-
a
|
|
58
|
-
);
|
|
53
|
+
return $("md", e, {}, a);
|
|
59
54
|
}
|
|
60
55
|
function E(e) {
|
|
61
56
|
const a = typeof e.data == "string" ? e.data : "";
|
|
@@ -104,10 +99,14 @@ function Y(e, a, t) {
|
|
|
104
99
|
}
|
|
105
100
|
function Z(e, a) {
|
|
106
101
|
const t = e, r = p(a);
|
|
107
|
-
return t.params.labels = e.params.labels.filter(
|
|
102
|
+
return t.params.labels = e.params.labels.filter(
|
|
103
|
+
(n) => p(n) !== r
|
|
104
|
+
), e;
|
|
108
105
|
}
|
|
109
106
|
function _(e, a, t) {
|
|
110
|
-
const r = p(a), n = e.params.labels.findIndex(
|
|
107
|
+
const r = p(a), n = e.params.labels.findIndex(
|
|
108
|
+
(l) => p(l) === r
|
|
109
|
+
);
|
|
111
110
|
if (n < 0)
|
|
112
111
|
throw new Error(`Label "${a.text}" not found`);
|
|
113
112
|
const s = e;
|
|
@@ -155,20 +154,28 @@ function ee(e, a, t) {
|
|
|
155
154
|
const r = u(a);
|
|
156
155
|
if (e.params.columns.some((n) => u(n) === r))
|
|
157
156
|
throw new Error(`Column "${a.header}" already exists`);
|
|
158
|
-
return e.params.columns.splice(
|
|
157
|
+
return e.params.columns.splice(
|
|
158
|
+
t != null ? t : e.params.columns.length,
|
|
159
|
+
0,
|
|
160
|
+
a
|
|
161
|
+
), e;
|
|
159
162
|
}
|
|
160
163
|
function ae(e, a) {
|
|
161
164
|
const t = e, r = u(a);
|
|
162
|
-
return t.params.columns = e.params.columns.filter(
|
|
165
|
+
return t.params.columns = e.params.columns.filter(
|
|
166
|
+
(n) => u(n) !== r
|
|
167
|
+
), e;
|
|
163
168
|
}
|
|
164
169
|
function te(e, a, t) {
|
|
165
|
-
const r = u(a), n = e.params.columns.findIndex(
|
|
170
|
+
const r = u(a), n = e.params.columns.findIndex(
|
|
171
|
+
(l) => u(l) === r
|
|
172
|
+
);
|
|
166
173
|
if (n < 0)
|
|
167
174
|
throw new Error(`Column "${r}" not found`);
|
|
168
175
|
const s = e;
|
|
169
176
|
return s.params.columns[n] = t, e;
|
|
170
177
|
}
|
|
171
|
-
function L(e, a = "", t = {}, r = {}, n, s, l = !1, o = [], c = !0,
|
|
178
|
+
function L(e, a = "", t = {}, r = {}, n, s, l = !1, o = [], c = !0, i) {
|
|
172
179
|
return b(
|
|
173
180
|
e,
|
|
174
181
|
o,
|
|
@@ -181,11 +188,11 @@ function L(e, a = "", t = {}, r = {}, n, s, l = !1, o = [], c = !0, m) {
|
|
|
181
188
|
dataLabel: s,
|
|
182
189
|
order: c
|
|
183
190
|
},
|
|
184
|
-
|
|
191
|
+
i
|
|
185
192
|
);
|
|
186
193
|
}
|
|
187
194
|
function W(e) {
|
|
188
|
-
var a, t, r, n, s, l, o, c,
|
|
195
|
+
var a, t, r, n, s, l, o, c, i, H, h, v, y;
|
|
189
196
|
return L(
|
|
190
197
|
e.type,
|
|
191
198
|
(t = (a = e.params) == null ? void 0 : a.title) != null ? t : "",
|
|
@@ -193,7 +200,7 @@ function W(e) {
|
|
|
193
200
|
(l = (s = e.params) == null ? void 0 : s.value) != null ? l : {},
|
|
194
201
|
(o = e.params) == null ? void 0 : o.color,
|
|
195
202
|
(c = e.params) == null ? void 0 : c.dataLabel,
|
|
196
|
-
(H = (
|
|
203
|
+
(H = (i = e.params) == null ? void 0 : i.invertAxis) != null ? H : !1,
|
|
197
204
|
(h = e.filters) != null ? h : [],
|
|
198
205
|
(y = (v = e.params) == null ? void 0 : v.order) != null ? y : !0,
|
|
199
206
|
e.slots
|
|
@@ -213,17 +220,9 @@ function q(e) {
|
|
|
213
220
|
function re(e, a, t, r) {
|
|
214
221
|
switch (e) {
|
|
215
222
|
case "md":
|
|
216
|
-
return O(
|
|
217
|
-
void 0,
|
|
218
|
-
r
|
|
219
|
-
);
|
|
223
|
+
return O(void 0, r);
|
|
220
224
|
case "metric":
|
|
221
|
-
return T(
|
|
222
|
-
void 0,
|
|
223
|
-
a,
|
|
224
|
-
t,
|
|
225
|
-
r
|
|
226
|
-
);
|
|
225
|
+
return T(void 0, a, t, r);
|
|
227
226
|
case "table":
|
|
228
227
|
return k(
|
|
229
228
|
void 0,
|
|
@@ -328,4 +327,4 @@ export {
|
|
|
328
327
|
ee as y,
|
|
329
328
|
ae as z
|
|
330
329
|
};
|
|
331
|
-
//# sourceMappingURL=index-
|
|
330
|
+
//# sourceMappingURL=index-D6K5zKgZ.mjs.map
|