@raclettejs/core 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE.md +661 -1
  3. package/dist/cli.js +10 -10
  4. package/dist/index.js +4 -4
  5. package/package.json +1 -1
  6. package/services/backend/src/core/crud/crudTypes.ts +5 -5
  7. package/services/backend/src/core/payload/payloadRegistrar.ts +15 -15
  8. package/services/backend/src/core/payload/payloadTypes.ts +4 -4
  9. package/services/backend/src/core/pluginSystem/pluginFastifyInstance.ts +4 -4
  10. package/services/backend/src/core/pluginSystem/pluginTypes.ts +4 -4
  11. package/services/backend/src/core/sockets/createSystemEventHandlers.ts +18 -16
  12. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/account.service.ts +16 -16
  13. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/events/index.ts +4 -4
  14. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/helpers/payload.ts +2 -2
  15. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/composition.service.ts +14 -14
  16. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/events/index.ts +3 -3
  17. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/helpers/payload.ts +2 -2
  18. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/events/index.ts +3 -3
  19. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/helpers/payload.ts +2 -2
  20. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/interactionLink.service.ts +18 -18
  21. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/events/index.ts +4 -4
  22. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/helpers/payload.ts +2 -2
  23. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/project.service.ts +14 -14
  24. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/events/index.ts +5 -5
  25. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/helpers/payload.ts +2 -2
  26. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/tag.service.ts +14 -14
  27. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/events/index.ts +4 -4
  28. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/helpers/payload.ts +2 -2
  29. package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/user.service.ts +14 -14
  30. package/services/backend/src/types/custom-fastify.d.ts +2 -2
  31. package/services/backend/src/utils/request.utils.ts +2 -2
  32. package/services/frontend/src/core/lib/data/dataApi.ts +6 -5
  33. package/services/frontend/src/core/lib/data/fetchDataHandler.ts +51 -21
  34. package/services/frontend/src/core/lib/data/queryApi.ts +20 -27
  35. package/services/frontend/src/core/lib/projectDataHelper.ts +1 -5
  36. package/services/frontend/src/core/setup/plugin-system/api/plugin-data.ts +17 -13
  37. package/services/frontend/src/core/types/DataApi.ts +13 -1
  38. package/services/frontend/src/orchestrator/assets/iconMappings/flags.json +2 -2
  39. package/services/frontend/src/orchestrator/composables/useVueQueryObservableHelper.ts +21 -11
  40. package/services/frontend/src/orchestrator/composables/useVueWriteOperationHelper.ts +27 -18
  41. package/services/frontend/src/orchestrator/i18n/de-DE.json +2 -2
  42. package/services/frontend/src/orchestrator/i18n/en-EU.json +2 -2
  43. package/services/frontend/src/orchestrator/i18n/{sk-SK.json → sk.json} +2 -2
  44. package/services/frontend/src/orchestrator/setup/i18n.ts +413 -270
  45. package/services/frontend/src/orchestrator/types/PluginApi.ts +7 -3
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var xe=Object.create;var B=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Ae=Object.prototype.hasOwnProperty;var E=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var G=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var ke=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Re(r))!Ae.call(e,o)&&o!==t&&B(e,o,{get:()=>r[o],enumerable:!(n=Te(r,o))||n.enumerable});return e};var Ne=(e,r,t)=>(t=e!=null?xe(Oe(e)):{},ke(r||!e||!e.__esModule?B(t,"default",{value:e,enumerable:!0}):t,e));var ee=G((Sr,qe)=>{qe.exports={name:"dotenv",version:"17.2.0",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var ie=G((Lr,y)=>{var S=E("fs"),j=E("path"),Ke=E("os"),He=E("crypto"),We=ee(),L=We.version,re=["\u{1F510} encrypt with dotenvx: https://dotenvx.com","\u{1F510} prevent committing .env to code: https://dotenvx.com/precommit","\u{1F510} prevent building .env in docker: https://dotenvx.com/prebuild","\u{1F6E0}\uFE0F run anywhere with `dotenvx run -- yourcommand`","\u2699\uFE0F specify custom .env file path with { path: '/custom/path/.env' }","\u2699\uFE0F enable debug logging with { debug: true }","\u2699\uFE0F override existing env vars with { override: true }","\u2699\uFE0F suppress all logs with { quiet: true }","\u2699\uFE0F write to custom object with { processEnv: myObject }","\u2699\uFE0F load multiple .env files with { path: ['.env.local', '.env'] }"];function Je(){return re[Math.floor(Math.random()*re.length)]}function w(e){return typeof e=="string"?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}function Qe(){return process.stdout.isTTY}function ze(e){return Qe()?`\x1B[2m${e}\x1B[0m`:e}var Ze=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function Xe(e){let r={},t=e.toString();t=t.replace(/\r\n?/mg,`
2
+ var xe=Object.create;var M=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Ae=Object.prototype.hasOwnProperty;var E=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var G=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var ke=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Re(r))!Ae.call(e,o)&&o!==t&&M(e,o,{get:()=>r[o],enumerable:!(n=Te(r,o))||n.enumerable});return e};var Ne=(e,r,t)=>(t=e!=null?xe(Oe(e)):{},ke(r||!e||!e.__esModule?M(t,"default",{value:e,enumerable:!0}):t,e));var ee=G((Sr,qe)=>{qe.exports={name:"dotenv",version:"17.2.0",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var ie=G((Lr,y)=>{var S=E("fs"),j=E("path"),Ke=E("os"),He=E("crypto"),We=ee(),L=We.version,re=["\u{1F510} encrypt with dotenvx: https://dotenvx.com","\u{1F510} prevent committing .env to code: https://dotenvx.com/precommit","\u{1F510} prevent building .env in docker: https://dotenvx.com/prebuild","\u{1F6E0}\uFE0F run anywhere with `dotenvx run -- yourcommand`","\u2699\uFE0F specify custom .env file path with { path: '/custom/path/.env' }","\u2699\uFE0F enable debug logging with { debug: true }","\u2699\uFE0F override existing env vars with { override: true }","\u2699\uFE0F suppress all logs with { quiet: true }","\u2699\uFE0F write to custom object with { processEnv: myObject }","\u2699\uFE0F load multiple .env files with { path: ['.env.local', '.env'] }"];function Je(){return re[Math.floor(Math.random()*re.length)]}function w(e){return typeof e=="string"?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}function Qe(){return process.stdout.isTTY}function ze(e){return Qe()?`\x1B[2m${e}\x1B[0m`:e}var Ze=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function Xe(e){let r={},t=e.toString();t=t.replace(/\r\n?/mg,`
3
3
  `);let n;for(;(n=Ze.exec(t))!=null;){let o=n[1],i=n[2]||"";i=i.trim();let s=i[0];i=i.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),s==='"'&&(i=i.replace(/\\n/g,`
4
- `),i=i.replace(/\\r/g,"\r")),r[o]=i}return r}function er(e){e=e||{};let r=se(e);e.path=r;let t=u.configDotenv(e);if(!t.parsed){let s=new Error(`MISSING_DATA: Cannot parse ${r} for an unknown reason`);throw s.code="MISSING_DATA",s}let n=oe(e).split(","),o=n.length,i;for(let s=0;s<o;s++)try{let a=n[s].trim(),p=tr(t,a);i=u.decrypt(p.ciphertext,p.key);break}catch(a){if(s+1>=o)throw a}return u.parse(i)}function rr(e){console.error(`[dotenv@${L}][WARN] ${e}`)}function R(e){console.log(`[dotenv@${L}][DEBUG] ${e}`)}function ne(e){console.log(`[dotenv@${L}] ${e}`)}function oe(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function tr(e,r){let t;try{t=new URL(r)}catch(a){if(a.code==="ERR_INVALID_URL"){let p=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw p.code="INVALID_DOTENV_KEY",p}throw a}let n=t.password;if(!n){let a=new Error("INVALID_DOTENV_KEY: Missing key part");throw a.code="INVALID_DOTENV_KEY",a}let o=t.searchParams.get("environment");if(!o){let a=new Error("INVALID_DOTENV_KEY: Missing environment part");throw a.code="INVALID_DOTENV_KEY",a}let i=`DOTENV_VAULT_${o.toUpperCase()}`,s=e.parsed[i];if(!s){let a=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${i} in your .env.vault file.`);throw a.code="NOT_FOUND_DOTENV_ENVIRONMENT",a}return{ciphertext:s,key:n}}function se(e){let r=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let t of e.path)S.existsSync(t)&&(r=t.endsWith(".vault")?t:`${t}.vault`);else r=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else r=j.resolve(process.cwd(),".env.vault");return S.existsSync(r)?r:null}function te(e){return e[0]==="~"?j.join(Ke.homedir(),e.slice(1)):e}function nr(e){let r=w(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),t=w(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(r||!t)&&ne("Loading env from encrypted .env.vault");let n=u._parseVault(e),o=process.env;return e&&e.processEnv!=null&&(o=e.processEnv),u.populate(o,n,e),{parsed:n}}function or(e){let r=j.resolve(process.cwd(),".env"),t="utf8",n=process.env;e&&e.processEnv!=null&&(n=e.processEnv);let o=w(n.DOTENV_CONFIG_DEBUG||e&&e.debug),i=w(n.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?t=e.encoding:o&&R("No encoding is specified. UTF-8 is used by default");let s=[r];if(e&&e.path)if(!Array.isArray(e.path))s=[te(e.path)];else{s=[];for(let f of e.path)s.push(te(f))}let a,p={};for(let f of s)try{let h=u.parse(S.readFileSync(f,{encoding:t}));u.populate(p,h,e)}catch(h){o&&R(`Failed to load ${f} ${h.message}`),a=h}let C=u.populate(n,p,e);if(o=w(n.DOTENV_CONFIG_DEBUG||o),i=w(n.DOTENV_CONFIG_QUIET||i),o||!i){let f=Object.keys(C).length,h=[];for(let M of s)try{let A=j.relative(process.cwd(),M);h.push(A)}catch(A){o&&R(`Failed to load ${M} ${A.message}`),a=A}ne(`injecting env (${f}) from ${h.join(",")} ${ze(`(tip: ${Je()})`)}`)}return a?{parsed:p,error:a}:{parsed:p}}function sr(e){if(oe(e).length===0)return u.configDotenv(e);let r=se(e);return r?u._configVault(e):(rr(`You set DOTENV_KEY but you are missing a .env.vault file at ${r}. Did you forget to build it?`),u.configDotenv(e))}function ir(e,r){let t=Buffer.from(r.slice(-64),"hex"),n=Buffer.from(e,"base64"),o=n.subarray(0,12),i=n.subarray(-16);n=n.subarray(12,-16);try{let s=He.createDecipheriv("aes-256-gcm",t,o);return s.setAuthTag(i),`${s.update(n)}${s.final()}`}catch(s){let a=s instanceof RangeError,p=s.message==="Invalid key length",C=s.message==="Unsupported state or unable to authenticate data";if(a||p){let f=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw f.code="INVALID_DOTENV_KEY",f}else if(C){let f=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw f.code="DECRYPTION_FAILED",f}else throw s}}function ar(e,r,t={}){let n=!!(t&&t.debug),o=!!(t&&t.override),i={};if(typeof r!="object"){let s=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw s.code="OBJECT_REQUIRED",s}for(let s of Object.keys(r))Object.prototype.hasOwnProperty.call(e,s)?(o===!0&&(e[s]=r[s],i[s]=r[s]),n&&R(o===!0?`"${s}" is already defined and WAS overwritten`:`"${s}" is already defined and was NOT overwritten`)):(e[s]=r[s],i[s]=r[s]);return i}var u={configDotenv:or,_configVault:nr,_parseVault:er,config:sr,decrypt:ir,parse:Xe,populate:ar};y.exports.configDotenv=u.configDotenv;y.exports._configVault=u._configVault;y.exports._parseVault=u._parseVault;y.exports.config=u.config;y.exports.decrypt=u.decrypt;y.exports.parse=u.parse;y.exports.populate=u.populate;y.exports=u});var Y=(e=0)=>r=>`\x1B[${r+e}m`,U=(e=0)=>r=>`\x1B[${38+e};5;${r}m`,q=(e=0)=>(r,t,n)=>`\x1B[${38+e};2;${r};${t};${n}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Er=Object.keys(l.modifier),je=Object.keys(l.color),De=Object.keys(l.bgColor),xr=[...je,...De];function _e(){let e=new Map;for(let[r,t]of Object.entries(l)){for(let[n,o]of Object.entries(t))l[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[n]=l[n],e.set(o[0],o[1]);Object.defineProperty(l,r,{value:t,enumerable:!1})}return Object.defineProperty(l,"codes",{value:e,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=Y(),l.color.ansi256=U(),l.color.ansi16m=q(),l.bgColor.ansi=Y(10),l.bgColor.ansi256=U(10),l.bgColor.ansi16m=q(10),Object.defineProperties(l,{rgbToAnsi256:{value(r,t,n){return r===t&&t===n?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(r){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(r.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:r=>l.rgbToAnsi256(...l.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value(r){if(r<8)return 30+r;if(r<16)return 90+(r-8);let t,n,o;if(r>=232)t=((r-232)*10+8)/255,n=t,o=t;else{r-=16;let a=r%36;t=Math.floor(r/36)/5,n=Math.floor(a/6)/5,o=a%6/5}let i=Math.max(t,n,o)*2;if(i===0)return 30;let s=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(r,t,n)=>l.ansi256ToAnsi(l.rgbToAnsi256(r,t,n)),enumerable:!1},hexToAnsi:{value:r=>l.ansi256ToAnsi(l.hexToAnsi256(r)),enumerable:!1}}),l}var Ie=_e(),d=Ie;import D from"node:process";import $e from"node:os";import K from"node:tty";function g(e,r=globalThis.Deno?globalThis.Deno.args:D.argv){let t=e.startsWith("-")?"":e.length===1?"-":"--",n=r.indexOf(t+e),o=r.indexOf("--");return n!==-1&&(o===-1||n<o)}var{env:c}=D,k;g("no-color")||g("no-colors")||g("color=false")||g("color=never")?k=0:(g("color")||g("colors")||g("color=true")||g("color=always"))&&(k=1);function Se(){if("FORCE_COLOR"in c)return c.FORCE_COLOR==="true"?1:c.FORCE_COLOR==="false"?0:c.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(c.FORCE_COLOR,10),3)}function Le(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Ve(e,{streamIsTTY:r,sniffFlags:t=!0}={}){let n=Se();n!==void 0&&(k=n);let o=t?k:n;if(o===0)return 0;if(t){if(g("color=16m")||g("color=full")||g("color=truecolor"))return 3;if(g("color=256"))return 2}if("TF_BUILD"in c&&"AGENT_NAME"in c)return 1;if(e&&!r&&o===void 0)return 0;let i=o||0;if(c.TERM==="dumb")return i;if(D.platform==="win32"){let s=$e.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in c)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in c)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in c)||c.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in c)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(c.TEAMCITY_VERSION)?1:0;if(c.COLORTERM==="truecolor"||c.TERM==="xterm-kitty"||c.TERM==="xterm-ghostty"||c.TERM==="wezterm")return 3;if("TERM_PROGRAM"in c){let s=Number.parseInt((c.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(c.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(c.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(c.TERM)||"COLORTERM"in c?1:i}function H(e,r={}){let t=Ve(e,{streamIsTTY:e&&e.isTTY,...r});return Le(t)}var Pe={stdout:H({isTTY:K.isatty(1)}),stderr:H({isTTY:K.isatty(2)})},W=Pe;function J(e,r,t){let n=e.indexOf(r);if(n===-1)return e;let o=r.length,i=0,s="";do s+=e.slice(i,n)+r+t,i=n+o,n=e.indexOf(r,i);while(n!==-1);return s+=e.slice(i),s}function Q(e,r,t,n){let o=0,i="";do{let s=e[n-1]==="\r";i+=e.slice(o,s?n-1:n)+r+(s?`\r
4
+ `),i=i.replace(/\\r/g,"\r")),r[o]=i}return r}function er(e){e=e||{};let r=se(e);e.path=r;let t=u.configDotenv(e);if(!t.parsed){let s=new Error(`MISSING_DATA: Cannot parse ${r} for an unknown reason`);throw s.code="MISSING_DATA",s}let n=oe(e).split(","),o=n.length,i;for(let s=0;s<o;s++)try{let a=n[s].trim(),p=tr(t,a);i=u.decrypt(p.ciphertext,p.key);break}catch(a){if(s+1>=o)throw a}return u.parse(i)}function rr(e){console.error(`[dotenv@${L}][WARN] ${e}`)}function R(e){console.log(`[dotenv@${L}][DEBUG] ${e}`)}function ne(e){console.log(`[dotenv@${L}] ${e}`)}function oe(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function tr(e,r){let t;try{t=new URL(r)}catch(a){if(a.code==="ERR_INVALID_URL"){let p=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw p.code="INVALID_DOTENV_KEY",p}throw a}let n=t.password;if(!n){let a=new Error("INVALID_DOTENV_KEY: Missing key part");throw a.code="INVALID_DOTENV_KEY",a}let o=t.searchParams.get("environment");if(!o){let a=new Error("INVALID_DOTENV_KEY: Missing environment part");throw a.code="INVALID_DOTENV_KEY",a}let i=`DOTENV_VAULT_${o.toUpperCase()}`,s=e.parsed[i];if(!s){let a=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${i} in your .env.vault file.`);throw a.code="NOT_FOUND_DOTENV_ENVIRONMENT",a}return{ciphertext:s,key:n}}function se(e){let r=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let t of e.path)S.existsSync(t)&&(r=t.endsWith(".vault")?t:`${t}.vault`);else r=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else r=j.resolve(process.cwd(),".env.vault");return S.existsSync(r)?r:null}function te(e){return e[0]==="~"?j.join(Ke.homedir(),e.slice(1)):e}function nr(e){let r=w(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),t=w(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(r||!t)&&ne("Loading env from encrypted .env.vault");let n=u._parseVault(e),o=process.env;return e&&e.processEnv!=null&&(o=e.processEnv),u.populate(o,n,e),{parsed:n}}function or(e){let r=j.resolve(process.cwd(),".env"),t="utf8",n=process.env;e&&e.processEnv!=null&&(n=e.processEnv);let o=w(n.DOTENV_CONFIG_DEBUG||e&&e.debug),i=w(n.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?t=e.encoding:o&&R("No encoding is specified. UTF-8 is used by default");let s=[r];if(e&&e.path)if(!Array.isArray(e.path))s=[te(e.path)];else{s=[];for(let f of e.path)s.push(te(f))}let a,p={};for(let f of s)try{let h=u.parse(S.readFileSync(f,{encoding:t}));u.populate(p,h,e)}catch(h){o&&R(`Failed to load ${f} ${h.message}`),a=h}let C=u.populate(n,p,e);if(o=w(n.DOTENV_CONFIG_DEBUG||o),i=w(n.DOTENV_CONFIG_QUIET||i),o||!i){let f=Object.keys(C).length,h=[];for(let B of s)try{let A=j.relative(process.cwd(),B);h.push(A)}catch(A){o&&R(`Failed to load ${B} ${A.message}`),a=A}ne(`injecting env (${f}) from ${h.join(",")} ${ze(`(tip: ${Je()})`)}`)}return a?{parsed:p,error:a}:{parsed:p}}function sr(e){if(oe(e).length===0)return u.configDotenv(e);let r=se(e);return r?u._configVault(e):(rr(`You set DOTENV_KEY but you are missing a .env.vault file at ${r}. Did you forget to build it?`),u.configDotenv(e))}function ir(e,r){let t=Buffer.from(r.slice(-64),"hex"),n=Buffer.from(e,"base64"),o=n.subarray(0,12),i=n.subarray(-16);n=n.subarray(12,-16);try{let s=He.createDecipheriv("aes-256-gcm",t,o);return s.setAuthTag(i),`${s.update(n)}${s.final()}`}catch(s){let a=s instanceof RangeError,p=s.message==="Invalid key length",C=s.message==="Unsupported state or unable to authenticate data";if(a||p){let f=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw f.code="INVALID_DOTENV_KEY",f}else if(C){let f=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw f.code="DECRYPTION_FAILED",f}else throw s}}function ar(e,r,t={}){let n=!!(t&&t.debug),o=!!(t&&t.override),i={};if(typeof r!="object"){let s=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw s.code="OBJECT_REQUIRED",s}for(let s of Object.keys(r))Object.prototype.hasOwnProperty.call(e,s)?(o===!0&&(e[s]=r[s],i[s]=r[s]),n&&R(o===!0?`"${s}" is already defined and WAS overwritten`:`"${s}" is already defined and was NOT overwritten`)):(e[s]=r[s],i[s]=r[s]);return i}var u={configDotenv:or,_configVault:nr,_parseVault:er,config:sr,decrypt:ir,parse:Xe,populate:ar};y.exports.configDotenv=u.configDotenv;y.exports._configVault=u._configVault;y.exports._parseVault=u._parseVault;y.exports.config=u.config;y.exports.decrypt=u.decrypt;y.exports.parse=u.parse;y.exports.populate=u.populate;y.exports=u});var Y=(e=0)=>r=>`\x1B[${r+e}m`,U=(e=0)=>r=>`\x1B[${38+e};5;${r}m`,q=(e=0)=>(r,t,n)=>`\x1B[${38+e};2;${r};${t};${n}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Er=Object.keys(l.modifier),je=Object.keys(l.color),De=Object.keys(l.bgColor),xr=[...je,...De];function _e(){let e=new Map;for(let[r,t]of Object.entries(l)){for(let[n,o]of Object.entries(t))l[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[n]=l[n],e.set(o[0],o[1]);Object.defineProperty(l,r,{value:t,enumerable:!1})}return Object.defineProperty(l,"codes",{value:e,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=Y(),l.color.ansi256=U(),l.color.ansi16m=q(),l.bgColor.ansi=Y(10),l.bgColor.ansi256=U(10),l.bgColor.ansi16m=q(10),Object.defineProperties(l,{rgbToAnsi256:{value(r,t,n){return r===t&&t===n?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(r){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(r.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:r=>l.rgbToAnsi256(...l.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value(r){if(r<8)return 30+r;if(r<16)return 90+(r-8);let t,n,o;if(r>=232)t=((r-232)*10+8)/255,n=t,o=t;else{r-=16;let a=r%36;t=Math.floor(r/36)/5,n=Math.floor(a/6)/5,o=a%6/5}let i=Math.max(t,n,o)*2;if(i===0)return 30;let s=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(r,t,n)=>l.ansi256ToAnsi(l.rgbToAnsi256(r,t,n)),enumerable:!1},hexToAnsi:{value:r=>l.ansi256ToAnsi(l.hexToAnsi256(r)),enumerable:!1}}),l}var Ie=_e(),d=Ie;import D from"node:process";import $e from"node:os";import K from"node:tty";function g(e,r=globalThis.Deno?globalThis.Deno.args:D.argv){let t=e.startsWith("-")?"":e.length===1?"-":"--",n=r.indexOf(t+e),o=r.indexOf("--");return n!==-1&&(o===-1||n<o)}var{env:c}=D,k;g("no-color")||g("no-colors")||g("color=false")||g("color=never")?k=0:(g("color")||g("colors")||g("color=true")||g("color=always"))&&(k=1);function Se(){if("FORCE_COLOR"in c)return c.FORCE_COLOR==="true"?1:c.FORCE_COLOR==="false"?0:c.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(c.FORCE_COLOR,10),3)}function Le(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Ve(e,{streamIsTTY:r,sniffFlags:t=!0}={}){let n=Se();n!==void 0&&(k=n);let o=t?k:n;if(o===0)return 0;if(t){if(g("color=16m")||g("color=full")||g("color=truecolor"))return 3;if(g("color=256"))return 2}if("TF_BUILD"in c&&"AGENT_NAME"in c)return 1;if(e&&!r&&o===void 0)return 0;let i=o||0;if(c.TERM==="dumb")return i;if(D.platform==="win32"){let s=$e.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in c)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in c)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in c)||c.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in c)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(c.TEAMCITY_VERSION)?1:0;if(c.COLORTERM==="truecolor"||c.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in c){let s=Number.parseInt((c.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(c.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(c.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(c.TERM)||"COLORTERM"in c?1:i}function H(e,r={}){let t=Ve(e,{streamIsTTY:e&&e.isTTY,...r});return Le(t)}var Pe={stdout:H({isTTY:K.isatty(1)}),stderr:H({isTTY:K.isatty(2)})},W=Pe;function J(e,r,t){let n=e.indexOf(r);if(n===-1)return e;let o=r.length,i=0,s="";do s+=e.slice(i,n)+r+t,i=n+o,n=e.indexOf(r,i);while(n!==-1);return s+=e.slice(i),s}function Q(e,r,t,n){let o=0,i="";do{let s=e[n-1]==="\r";i+=e.slice(o,s?n-1:n)+r+(s?`\r
5
5
  `:`
6
6
  `)+t,o=n+1,n=e.indexOf(`
7
- `,o)}while(n!==-1);return i+=e.slice(o),i}var{stdout:z,stderr:Z}=W,_=Symbol("GENERATOR"),v=Symbol("STYLER"),x=Symbol("IS_EMPTY"),X=["ansi","ansi","ansi256","ansi16m"],b=Object.create(null),Fe=(e,r={})=>{if(r.level&&!(Number.isInteger(r.level)&&r.level>=0&&r.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=z?z.level:0;e.level=r.level===void 0?t:r.level};var Me=e=>{let r=(...t)=>t.join(" ");return Fe(r,e),Object.setPrototypeOf(r,T.prototype),r};function T(e){return Me(e)}Object.setPrototypeOf(T.prototype,Function.prototype);for(let[e,r]of Object.entries(d))b[e]={get(){let t=N(this,$(r.open,r.close,this[v]),this[x]);return Object.defineProperty(this,e,{value:t}),t}};b.visible={get(){let e=N(this,this[v],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var I=(e,r,t,...n)=>e==="rgb"?r==="ansi16m"?d[t].ansi16m(...n):r==="ansi256"?d[t].ansi256(d.rgbToAnsi256(...n)):d[t].ansi(d.rgbToAnsi(...n)):e==="hex"?I("rgb",r,t,...d.hexToRgb(...n)):d[t][e](...n),Be=["rgb","hex","ansi256"];for(let e of Be){b[e]={get(){let{level:t}=this;return function(...n){let o=$(I(e,X[t],"color",...n),d.color.close,this[v]);return N(this,o,this[x])}}};let r="bg"+e[0].toUpperCase()+e.slice(1);b[r]={get(){let{level:t}=this;return function(...n){let o=$(I(e,X[t],"bgColor",...n),d.bgColor.close,this[v]);return N(this,o,this[x])}}}}var Ge=Object.defineProperties(()=>{},{...b,level:{enumerable:!0,get(){return this[_].level},set(e){this[_].level=e}}}),$=(e,r,t)=>{let n,o;return t===void 0?(n=e,o=r):(n=t.openAll+e,o=r+t.closeAll),{open:e,close:r,openAll:n,closeAll:o,parent:t}},N=(e,r,t)=>{let n=(...o)=>Ye(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,Ge),n[_]=e,n[v]=r,n[x]=t,n},Ye=(e,r)=>{if(e.level<=0||!r)return e[x]?"":r;let t=e[v];if(t===void 0)return r;let{openAll:n,closeAll:o}=t;if(r.includes("\x1B"))for(;t!==void 0;)r=J(r,t.close,t.open),t=t.parent;let i=r.indexOf(`
8
- `);return i!==-1&&(r=Q(r,o,n,i)),n+r+o};Object.defineProperties(T.prototype,b);var Ue=T(),Ir=T({level:Z?Z.level:0});var m=Ue;var lr=Ne(ie(),1);import Hr from"chokidar";import Jr from"fs-extra";import zr from"path";import Mr from"fs-extra";import Gr from"path";var V=class{constructor(){this.level="info";this.verbose=!1}setLevel(r){this.level=r}setVerbose(r){this.verbose=r}shouldLog(r){let t={error:0,warn:1,info:2,debug:3};return r==="debug"&&this.verbose?!0:t[r]<=t[this.level]}getTypeStyle(r){switch(r){case"success":return m.green;case"error":return m.red;case"warning":return m.yellow;case"info":return m.blue;case"instruction":return m.cyan;case"progress":return m.reset;case"debug":return m.gray;case"raclette":return m.rgb(221,139,64);default:return t=>t}}getTypeIcon(r){switch(r){case"success":return"\u2705";case"error":return"\u274C";case"warning":return"\u26A0\uFE0F";case"info":return"\u2139\uFE0F";case"instruction":return"\u{1F4A1}";case"progress":return"\u{1F504}";case"debug":return"";case"raclette":return"\u{1F9C0}";default:return""}}log(r,t,n){if(!this.shouldLog(r))return;let o=n?this.getTypeStyle(n):m.reset,i=n?this.getTypeIcon(n):"",s=i?`${i} `:"";console.log(o(`${s}${t}`))}logError(r,t){if(!this.shouldLog("error"))return;let n=this.getTypeStyle("error"),o=this.getTypeIcon("error"),i=o?`${o} `:"";t?console.error(n(`${i}${r}`),t):console.error(n(`${i}${r}`))}error(r,t){this.logError(r,t)}warn(r){this.log("warn",r,"warning")}info(r){this.log("info",r,"info")}debug(r){this.log("debug",r,"debug")}success(r){this.log("info",r,"success")}instruction(r){this.log("info",r,"instruction")}progress(r){this.log("info",r,"progress")}raclette(r){this.log("info",r,"raclette")}raw(r,t="info"){this.shouldLog(t)&&console.log(r)}},O=new V;var cr=e=>e;import Ce from"fs-extra";import Ee from"path";var ae=(e=!1)=>["eslint","@eslint/js","globals","eslint-config-prettier","prettier","eslint-plugin-prettier",...e?ur():[]],ur=()=>[],le=()=>["import globals from 'globals';","import eslintConfigPrettier from 'eslint-config-prettier';"],ce=(e=!1)=>{let r=` // JavaScript config
7
+ `,o)}while(n!==-1);return i+=e.slice(o),i}var{stdout:z,stderr:Z}=W,_=Symbol("GENERATOR"),v=Symbol("STYLER"),x=Symbol("IS_EMPTY"),X=["ansi","ansi","ansi256","ansi16m"],b=Object.create(null),Fe=(e,r={})=>{if(r.level&&!(Number.isInteger(r.level)&&r.level>=0&&r.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=z?z.level:0;e.level=r.level===void 0?t:r.level};var Be=e=>{let r=(...t)=>t.join(" ");return Fe(r,e),Object.setPrototypeOf(r,T.prototype),r};function T(e){return Be(e)}Object.setPrototypeOf(T.prototype,Function.prototype);for(let[e,r]of Object.entries(d))b[e]={get(){let t=N(this,$(r.open,r.close,this[v]),this[x]);return Object.defineProperty(this,e,{value:t}),t}};b.visible={get(){let e=N(this,this[v],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var I=(e,r,t,...n)=>e==="rgb"?r==="ansi16m"?d[t].ansi16m(...n):r==="ansi256"?d[t].ansi256(d.rgbToAnsi256(...n)):d[t].ansi(d.rgbToAnsi(...n)):e==="hex"?I("rgb",r,t,...d.hexToRgb(...n)):d[t][e](...n),Me=["rgb","hex","ansi256"];for(let e of Me){b[e]={get(){let{level:t}=this;return function(...n){let o=$(I(e,X[t],"color",...n),d.color.close,this[v]);return N(this,o,this[x])}}};let r="bg"+e[0].toUpperCase()+e.slice(1);b[r]={get(){let{level:t}=this;return function(...n){let o=$(I(e,X[t],"bgColor",...n),d.bgColor.close,this[v]);return N(this,o,this[x])}}}}var Ge=Object.defineProperties(()=>{},{...b,level:{enumerable:!0,get(){return this[_].level},set(e){this[_].level=e}}}),$=(e,r,t)=>{let n,o;return t===void 0?(n=e,o=r):(n=t.openAll+e,o=r+t.closeAll),{open:e,close:r,openAll:n,closeAll:o,parent:t}},N=(e,r,t)=>{let n=(...o)=>Ye(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,Ge),n[_]=e,n[v]=r,n[x]=t,n},Ye=(e,r)=>{if(e.level<=0||!r)return e[x]?"":r;let t=e[v];if(t===void 0)return r;let{openAll:n,closeAll:o}=t;if(r.includes("\x1B"))for(;t!==void 0;)r=J(r,t.close,t.open),t=t.parent;let i=r.indexOf(`
8
+ `);return i!==-1&&(r=Q(r,o,n,i)),n+r+o};Object.defineProperties(T.prototype,b);var Ue=T(),Ir=T({level:Z?Z.level:0});var m=Ue;var lr=Ne(ie(),1);import Hr from"chokidar";import Jr from"fs-extra";import zr from"path";import Br from"fs-extra";import Gr from"path";var V=class{constructor(){this.level="info";this.verbose=!1}setLevel(r){this.level=r}setVerbose(r){this.verbose=r}shouldLog(r){let t={error:0,warn:1,info:2,debug:3};return r==="debug"&&this.verbose?!0:t[r]<=t[this.level]}getTypeStyle(r){switch(r){case"success":return m.green;case"error":return m.red;case"warning":return m.yellow;case"info":return m.blue;case"instruction":return m.cyan;case"progress":return m.reset;case"debug":return m.gray;case"raclette":return m.rgb(221,139,64);default:return t=>t}}getTypeIcon(r){switch(r){case"success":return"\u2705";case"error":return"\u274C";case"warning":return"\u26A0\uFE0F";case"info":return"\u2139\uFE0F";case"instruction":return"\u{1F4A1}";case"progress":return"\u{1F504}";case"debug":return"";case"raclette":return"\u{1F9C0}";default:return""}}log(r,t,n){if(!this.shouldLog(r))return;let o=n?this.getTypeStyle(n):m.reset,i=n?this.getTypeIcon(n):"",s=i?`${i} `:"";console.log(o(`${s}${t}`))}logError(r,t){if(!this.shouldLog("error"))return;let n=this.getTypeStyle("error"),o=this.getTypeIcon("error"),i=o?`${o} `:"";t?console.error(n(`${i}${r}`),t):console.error(n(`${i}${r}`))}error(r,t){this.logError(r,t)}warn(r){this.log("warn",r,"warning")}info(r){this.log("info",r,"info")}debug(r){this.log("debug",r,"debug")}success(r){this.log("info",r,"success")}instruction(r){this.log("info",r,"instruction")}progress(r){this.log("info",r,"progress")}raclette(r){this.log("info",r,"raclette")}raw(r,t="info"){this.shouldLog(t)&&console.log(r)}},O=new V;var cr=e=>e;import Ce from"fs-extra";import Ee from"path";var ae=(e=!1)=>["eslint","@eslint/js","globals","eslint-config-prettier","prettier","eslint-plugin-prettier",...e?ur():[]],ur=()=>[],le=()=>["import globals from 'globals';","import eslintConfigPrettier from 'eslint-config-prettier';"],ce=(e=!1)=>{let r=` // JavaScript config
9
9
  {
10
10
  files: ["**/*.{js,mjs,cjs}"],
11
11
  languageOptions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raclettejs/core",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "racletteJS core package",
5
5
  "repository": "https://gitlab.com/raclettejs/core",
6
6
  "author": "Pacifico Digital Explorations GmbH <info@raclettejs.com>",
@@ -1,22 +1,22 @@
1
- import type { ClientPayloadRequestData } from "../payload/payloadTypes"
1
+ import type { FrontendPayloadRequestData } from "../payload/payloadTypes"
2
2
  import type { FastifyInstance } from "fastify"
3
3
 
4
4
  export interface CrudHandlers<T> {
5
5
  create: (
6
6
  fastify: FastifyInstance,
7
- requestParams: ClientPayloadRequestData,
7
+ requestParams: FrontendPayloadRequestData,
8
8
  data: Partial<T>,
9
9
  userId: string,
10
10
  broadcast?: boolean,
11
11
  ) => Promise<any>
12
12
  read: (
13
13
  fastify: FastifyInstance,
14
- requestParams: ClientPayloadRequestData,
14
+ requestParams: FrontendPayloadRequestData,
15
15
  id: string,
16
16
  ) => Promise<any>
17
17
  update: (
18
18
  fastify: FastifyInstance,
19
- requestParams: ClientPayloadRequestData,
19
+ requestParams: FrontendPayloadRequestData,
20
20
  id: string,
21
21
  data: Partial<T>,
22
22
  userId: string,
@@ -24,7 +24,7 @@ export interface CrudHandlers<T> {
24
24
  ) => Promise<any>
25
25
  delete: (
26
26
  fastify: FastifyInstance,
27
- requestParams: ClientPayloadRequestData,
27
+ requestParams: FrontendPayloadRequestData,
28
28
  id: string,
29
29
  userId: string,
30
30
  broadcast?: boolean,
@@ -1,7 +1,7 @@
1
1
  import type {
2
- ClientPayloadRequestData,
3
- ClientPayload,
4
- ClientPayloadBody,
2
+ FrontendPayloadRequestData,
3
+ FrontendPayload,
4
+ FrontendPayloadBody,
5
5
  } from "@c/payload/payloadTypes"
6
6
 
7
7
  // Required fields that must exist on payload item
@@ -49,7 +49,7 @@ interface PayloadHandlerConfig<T extends object, TMeta = any> {
49
49
  sanitize?: (item: T) => Partial<T>
50
50
  fields?: (
51
51
  item: T,
52
- requestData: ClientPayloadRequestData,
52
+ requestData: FrontendPayloadRequestData,
53
53
  ) => RequiredMappings<T> & OptionalPayloadFields
54
54
  createMeta?: (item: T) => Promise<TMeta> | TMeta
55
55
  beforePayload?: (item: T) => Promise<T> | T
@@ -94,9 +94,9 @@ export const registerPayloadHandler = <T extends object, TMeta = any>(
94
94
  export const createPayloadBody = async <T extends object>(
95
95
  type: string,
96
96
  item: DataItem<T>,
97
- requestData: ClientPayloadRequestData,
97
+ requestData: FrontendPayloadRequestData,
98
98
  scope = "core",
99
- ): Promise<ClientPayloadBody<T>> => {
99
+ ): Promise<FrontendPayloadBody<T>> => {
100
100
  // Check if the scope exists
101
101
  if (!handlers[scope]) {
102
102
  throw new Error(`No scope registered with name "${scope}"`)
@@ -124,7 +124,7 @@ export const createPayloadBody = async <T extends object>(
124
124
  plainItem = await handler.beforePayload(plainItem)
125
125
  }
126
126
 
127
- const basePayload: Partial<ClientPayloadBody<T>> = {
127
+ const basePayload: Partial<FrontendPayloadBody<T>> = {
128
128
  _id: fields._id ?? (plainItem as any)._id ?? "",
129
129
  _type: handler.type,
130
130
  _offline: 0,
@@ -141,16 +141,16 @@ export const createPayloadBody = async <T extends object>(
141
141
  _meta: meta,
142
142
  }
143
143
 
144
- return basePayload as ClientPayloadBody<T>
144
+ return basePayload as FrontendPayloadBody<T>
145
145
  }
146
146
 
147
147
  // New function to process multiple items of the same type
148
148
  export const createPayloadBodies = async <T extends object>(
149
149
  type: string,
150
150
  items: DataItem<T>[],
151
- requestData: ClientPayloadRequestData,
151
+ requestData: FrontendPayloadRequestData,
152
152
  scope = "core",
153
- ): Promise<ClientPayloadBody<T>[]> => {
153
+ ): Promise<FrontendPayloadBody<T>[]> => {
154
154
  return await Promise.all(
155
155
  items.map((item) => createPayloadBody(type, item, requestData, scope)),
156
156
  )
@@ -160,9 +160,9 @@ export const createPayloadBodies = async <T extends object>(
160
160
  export const createPayload = async <T extends object>(
161
161
  type: string,
162
162
  items: DataItem<T> | DataItem<T>[],
163
- requestData: ClientPayloadRequestData,
163
+ requestData: FrontendPayloadRequestData,
164
164
  scope = "core",
165
- ): Promise<ClientPayload<T[]>> => {
165
+ ): Promise<FrontendPayload<T[]>> => {
166
166
  // Convert single item to array if needed
167
167
  const itemsArray = Array.isArray(items) ? items : [items]
168
168
 
@@ -188,9 +188,9 @@ export const createMultiTypePayload = async <T extends object>(
188
188
  items: DataItem<T> | DataItem<T>[]
189
189
  scope?: string
190
190
  }[],
191
- requestData: ClientPayloadRequestData,
192
- ): Promise<ClientPayload<T>> => {
193
- const allItems: ClientPayloadBody<T>[] = []
191
+ requestData: FrontendPayloadRequestData,
192
+ ): Promise<FrontendPayload<T>> => {
193
+ const allItems: FrontendPayloadBody<T>[] = []
194
194
 
195
195
  // Process each type group
196
196
  await Promise.all(
@@ -1,4 +1,4 @@
1
- export type ClientPayloadRequestData = {
1
+ export type FrontendPayloadRequestData = {
2
2
  appSessionId: string
3
3
  requestId: string
4
4
  appRequestCode: string
@@ -10,7 +10,7 @@ export type ClientPayloadRequestData = {
10
10
  userId?: string
11
11
  }
12
12
 
13
- export type ClientPayloadBody<T> = {
13
+ export type FrontendPayloadBody<T> = {
14
14
  _id: string
15
15
  _type: string
16
16
  _offline: number
@@ -29,7 +29,7 @@ export type ClientPayloadBody<T> = {
29
29
  export type FileType = File | { [x: string]: any }
30
30
 
31
31
  export type BodyContent<T> = {
32
- items: ClientPayloadBody<T>[]
32
+ items: FrontendPayloadBody<T>[]
33
33
  hits?: any
34
34
  prevVersion?: any
35
35
  deleted?: string[]
@@ -39,6 +39,6 @@ export type BodyContent<T> = {
39
39
  oldParent?: T
40
40
  }
41
41
 
42
- export type ClientPayload<T> = ClientPayloadRequestData & {
42
+ export type FrontendPayload<T> = FrontendPayloadRequestData & {
43
43
  body: BodyContent<T>
44
44
  }
@@ -1,8 +1,8 @@
1
1
  import type { FastifyInstance } from "fastify"
2
2
  import type { Schema, Model, Document } from "mongoose"
3
3
  import type {
4
- ClientPayload,
5
- ClientPayloadRequestData,
4
+ FrontendPayload,
5
+ FrontendPayloadRequestData,
6
6
  HttpService,
7
7
  PluginSchemaDefinition,
8
8
  IntervalTaskOptions,
@@ -169,9 +169,9 @@ export const createPluginFastifyInstance = (
169
169
  createPayload: <T extends object>(
170
170
  name: string,
171
171
  item: T,
172
- requestData: ClientPayloadRequestData,
172
+ requestData: FrontendPayloadRequestData,
173
173
  scope?: string,
174
- ): Promise<ClientPayload<T[]>> => {
174
+ ): Promise<FrontendPayload<T[]>> => {
175
175
  const prefixedName = `${pluginOptions.key}--${name}`
176
176
 
177
177
  return createPayload<T>(
@@ -7,8 +7,8 @@ import type {
7
7
  HttpService,
8
8
  IntervalTaskOptions,
9
9
  CrudHandlers,
10
- ClientPayloadRequestData,
11
- ClientPayload,
10
+ FrontendPayloadRequestData,
11
+ FrontendPayload,
12
12
  CacheService,
13
13
  } from "@/types"
14
14
  import type { EventEmitter } from "stream"
@@ -65,8 +65,8 @@ export type PluginFastifyInstance = {
65
65
  createPayload: <T extends object>(
66
66
  name: string,
67
67
  item: T,
68
- requestData: ClientPayloadRequestData,
69
- ) => Promise<ClientPayload<T>>
68
+ requestData: FrontendPayloadRequestData,
69
+ ) => Promise<FrontendPayload<T>>
70
70
  /* CONNECTION */
71
71
  registerSocket: (eventName: string, handler: Listener) => void
72
72
  emit: (eventName: string, data: unknown) => void
@@ -1,11 +1,11 @@
1
1
  import type { Project, Tag, Composition, InteractionLink } from "@/shared/types"
2
- import type { ClientPayload } from "@/types"
2
+ import type { FrontendPayload } from "@/types"
3
3
  import type { FastifyInstance } from "fastify"
4
4
 
5
5
  export const createSystemEventHandlers = (fastify: FastifyInstance) => {
6
6
  const { wss } = fastify
7
7
 
8
- const sendToChannel = (payload: ClientPayload<unknown>, key: string) => {
8
+ const sendToChannel = (payload: FrontendPayload<unknown>, key: string) => {
9
9
  // TODO rework this to handle spaces instead of project and in the future document rooms -> y.js?
10
10
  if (payload.project) {
11
11
  wss.in(payload.project).emit(key, payload)
@@ -15,20 +15,20 @@ export const createSystemEventHandlers = (fastify: FastifyInstance) => {
15
15
  }
16
16
 
17
17
  return {
18
- broadcastDataUpdatedHandler: (payload: ClientPayload<unknown>): void => {
18
+ broadcastDataUpdatedHandler: (payload: FrontendPayload<unknown>): void => {
19
19
  fastify.log.info(`[Socket] Push onData: ${payload.appSessionId}`)
20
20
  sendToChannel(payload, "data")
21
21
  },
22
- broadcastDataCreatedHandler: (payload: ClientPayload<unknown>): void => {
22
+ broadcastDataCreatedHandler: (payload: FrontendPayload<unknown>): void => {
23
23
  fastify.log.info(`[Socket] Push onCreate: ${payload.appSessionId}`)
24
24
  sendToChannel(payload, "dataCreated")
25
25
  },
26
- broadcastDataDeletedHandler: (payload: ClientPayload<unknown>): void => {
26
+ broadcastDataDeletedHandler: (payload: FrontendPayload<unknown>): void => {
27
27
  fastify.log.info(`[Socket] Push onDelete: ${payload.appSessionId}`)
28
28
  sendToChannel(payload, "dataDeleted")
29
29
  },
30
30
  broadcastCompositionCreated: (
31
- payload: ClientPayload<Composition>,
31
+ payload: FrontendPayload<Composition>,
32
32
  ): void => {
33
33
  fastify.log.info(
34
34
  `[Socket] Push CompositionCreated: ${payload.appSessionId}`,
@@ -37,7 +37,7 @@ export const createSystemEventHandlers = (fastify: FastifyInstance) => {
37
37
  },
38
38
 
39
39
  broadcastCompositionDeleted: (
40
- payload: ClientPayload<Composition>,
40
+ payload: FrontendPayload<Composition>,
41
41
  ): void => {
42
42
  fastify.log.info(
43
43
  `[Socket] Push CompositionDeleted: ${payload.appSessionId}`,
@@ -45,7 +45,7 @@ export const createSystemEventHandlers = (fastify: FastifyInstance) => {
45
45
  sendToChannel(payload, "compositionDeleted")
46
46
  },
47
47
  broadcastInteractionLinkCreated: (
48
- payload: ClientPayload<InteractionLink>,
48
+ payload: FrontendPayload<InteractionLink>,
49
49
  ): void => {
50
50
  fastify.log.info(
51
51
  `[Socket] Push InteractionLinkCreated: ${payload.appSessionId}`,
@@ -54,44 +54,46 @@ export const createSystemEventHandlers = (fastify: FastifyInstance) => {
54
54
  },
55
55
 
56
56
  broadcastInteractionLinkDeleted: (
57
- payload: ClientPayload<InteractionLink>,
57
+ payload: FrontendPayload<InteractionLink>,
58
58
  ): void => {
59
59
  fastify.log.info(
60
60
  `[Socket] Push InteractionLinkDeleted: ${payload.appSessionId}`,
61
61
  )
62
62
  sendToChannel(payload, "interactionLinkDeleted")
63
63
  },
64
- broadcastTagCreated: (payload: ClientPayload<Tag>): void => {
64
+ broadcastTagCreated: (payload: FrontendPayload<Tag>): void => {
65
65
  fastify.log.info(`[Socket] Push tagCreated: ${payload.appSessionId}`)
66
66
  sendToChannel(payload, "tagCreated")
67
67
  },
68
68
 
69
- broadcastTagDeleted: (payload: ClientPayload<Tag>): void => {
69
+ broadcastTagDeleted: (payload: FrontendPayload<Tag>): void => {
70
70
  fastify.log.info(`[Socket] Push tagDeleted: ${payload.appSessionId}`)
71
71
  sendToChannel(payload, "tagDeleted")
72
72
  },
73
73
 
74
- broadcastUserCreated: (payload: ClientPayload<Tag>): void => {
74
+ broadcastUserCreated: (payload: FrontendPayload<Tag>): void => {
75
75
  fastify.log.info(`[Socket] Push userCreated: ${payload.appSessionId}`)
76
76
  sendToChannel(payload, "userCreated")
77
77
  },
78
78
 
79
- broadcastUserDeleted: (payload: ClientPayload<Tag>): void => {
79
+ broadcastUserDeleted: (payload: FrontendPayload<Tag>): void => {
80
80
  fastify.log.info(`[Socket] Push userDeleted: ${payload.appSessionId}`)
81
81
  sendToChannel(payload, "userDeleted")
82
82
  },
83
83
 
84
- broadcastProjectCreated: (payload: ClientPayload<Project>): void => {
84
+ broadcastProjectCreated: (payload: FrontendPayload<Project>): void => {
85
85
  fastify.log.info(`[Socket] Push projectCreated: ${payload.appSessionId}`)
86
86
  sendToChannel(payload, "projectCreated")
87
87
  },
88
88
 
89
- broadcastProjectUpdated: (payload: ClientPayload<Project>): void => {
89
+ broadcastProjectUpdated: (payload: FrontendPayload<Project>): void => {
90
90
  fastify.log.info(`[Socket] Push projectUpdated: ${payload.appSessionId}`)
91
91
  sendToChannel(payload, "projectUpdated")
92
92
  },
93
93
 
94
- broadcastProjectConfigUpdated: (payload: ClientPayload<Project>): void => {
94
+ broadcastProjectConfigUpdated: (
95
+ payload: FrontendPayload<Project>,
96
+ ): void => {
95
97
  fastify.log.info(`[Socket] Push projectDeleted: ${payload.appSessionId}`)
96
98
  sendToChannel(payload, "projectDeleted")
97
99
  },
@@ -1,7 +1,7 @@
1
1
  import type { Account as AccountType } from "./account.schema"
2
2
  import type {
3
- ClientPayload,
4
- ClientPayloadRequestData,
3
+ FrontendPayload,
4
+ FrontendPayloadRequestData,
5
5
  } from "@c/payload/payloadTypes"
6
6
  import type { PluginFastifyInstance } from "types"
7
7
  import { v4 as uuidv4, validate } from "uuid"
@@ -65,10 +65,10 @@ export class AccountService {
65
65
  */
66
66
  async createAccount(
67
67
  fastify: PluginFastifyInstance,
68
- requestData: ClientPayloadRequestData,
68
+ requestData: FrontendPayloadRequestData,
69
69
  accountBody: AccountBody,
70
70
  userId: string,
71
- ): Promise<ClientPayload<AccountType[]>> {
71
+ ): Promise<FrontendPayload<AccountType[]>> {
72
72
  const account = await this._createAccount(fastify, accountBody, userId)
73
73
 
74
74
  const payload = await createAccountPayload(fastify, [account], requestData)
@@ -97,8 +97,8 @@ export class AccountService {
97
97
  */
98
98
  async readAccounts(
99
99
  fastify: PluginFastifyInstance,
100
- requestData: ClientPayloadRequestData,
101
- ): Promise<ClientPayload<AccountType[]>> {
100
+ requestData: FrontendPayloadRequestData,
101
+ ): Promise<FrontendPayload<AccountType[]>> {
102
102
  const accounts = await this._readAccounts(fastify)
103
103
 
104
104
  return createAccountPayload(fastify, accounts, requestData)
@@ -130,9 +130,9 @@ export class AccountService {
130
130
  */
131
131
  async readAccount(
132
132
  fastify: PluginFastifyInstance,
133
- requestData: ClientPayloadRequestData,
133
+ requestData: FrontendPayloadRequestData,
134
134
  id: string,
135
- ): Promise<ClientPayload<AccountType[]>> {
135
+ ): Promise<FrontendPayload<AccountType[]>> {
136
136
  const account = await this._readAccount(fastify, id)
137
137
 
138
138
  return createAccountPayload(fastify, [account], requestData)
@@ -191,11 +191,11 @@ export class AccountService {
191
191
  */
192
192
  async updateAccount(
193
193
  fastify: PluginFastifyInstance,
194
- requestData: ClientPayloadRequestData,
194
+ requestData: FrontendPayloadRequestData,
195
195
  id: string,
196
196
  accountBody: AccountBody,
197
197
  userId: string,
198
- ): Promise<ClientPayload<AccountType[]>> {
198
+ ): Promise<FrontendPayload<AccountType[]>> {
199
199
  const { updated, original } = await this._updateAccount(
200
200
  fastify,
201
201
  id,
@@ -242,9 +242,9 @@ export class AccountService {
242
242
  */
243
243
  async removeAccount(
244
244
  fastify: PluginFastifyInstance,
245
- requestData: ClientPayloadRequestData,
245
+ requestData: FrontendPayloadRequestData,
246
246
  id: string,
247
- ): Promise<ClientPayload<AccountType[]>> {
247
+ ): Promise<FrontendPayload<AccountType[]>> {
248
248
  const account = await this._removeAccount(fastify, id)
249
249
 
250
250
  const payload = await createAccountPayload(fastify, [account], {
@@ -291,9 +291,9 @@ export class AccountService {
291
291
  */
292
292
  async hardDeleteAccount(
293
293
  fastify: PluginFastifyInstance,
294
- requestData: ClientPayloadRequestData,
294
+ requestData: FrontendPayloadRequestData,
295
295
  id: string,
296
- ): Promise<ClientPayload<AccountType[]>> {
296
+ ): Promise<FrontendPayload<AccountType[]>> {
297
297
  const account = await this._hardDeleteAccount(fastify, id)
298
298
 
299
299
  const payload = await createAccountPayload(fastify, [account], {
@@ -355,11 +355,11 @@ export class AccountService {
355
355
  */
356
356
  async toggleBlockAccount(
357
357
  fastify: PluginFastifyInstance,
358
- requestData: ClientPayloadRequestData,
358
+ requestData: FrontendPayloadRequestData,
359
359
  id: string,
360
360
  blocked: boolean,
361
361
  userId: string,
362
- ): Promise<ClientPayload<AccountType[]>> {
362
+ ): Promise<FrontendPayload<AccountType[]>> {
363
363
  const { updated, original } = await this._toggleBlockAccount(
364
364
  fastify,
365
365
  id,
@@ -1,12 +1,12 @@
1
1
  import { type FastifyInstance } from "fastify"
2
2
  import { type AnyAccount } from "../account.schema"
3
- import { type ClientPayload } from "@c/payload/payloadTypes"
3
+ import { type FrontendPayload } from "@c/payload/payloadTypes"
4
4
 
5
5
  const registerEvents = (fastify: FastifyInstance) => {
6
6
  /**
7
7
  * Account created
8
8
  */
9
- const created = (payload: ClientPayload<AnyAccount>) => {
9
+ const created = (payload: FrontendPayload<AnyAccount>) => {
10
10
  fastify.eventbus.emit("broadcastDataUpdated", payload)
11
11
  fastify.eventbus.emit("broadcastAccountCreated", payload)
12
12
  fastify.log.info(
@@ -17,7 +17,7 @@ const registerEvents = (fastify: FastifyInstance) => {
17
17
  /**
18
18
  * Account updated
19
19
  */
20
- const updated = (payload: ClientPayload<AnyAccount>) => {
20
+ const updated = (payload: FrontendPayload<AnyAccount>) => {
21
21
  fastify.eventbus.emit("broadcastDataUpdated", payload)
22
22
  fastify.log.info(
23
23
  `[eventbus] account broadcast updated ${payload.appSessionId}`,
@@ -27,7 +27,7 @@ const registerEvents = (fastify: FastifyInstance) => {
27
27
  /**
28
28
  * Account deleted
29
29
  */
30
- const deleted = (payload: ClientPayload<AnyAccount>) => {
30
+ const deleted = (payload: FrontendPayload<AnyAccount>) => {
31
31
  fastify.eventbus.emit("broadcastAccountDeleted", payload)
32
32
  fastify.log.info(
33
33
  `[eventbus] account broadcast deleted ${payload.appSessionId}`,
@@ -1,5 +1,5 @@
1
1
  import type { Account } from "../account.schema"
2
- import type { ClientPayloadRequestData, PluginFastifyInstance } from "@/types"
2
+ import type { FrontendPayloadRequestData, PluginFastifyInstance } from "@/types"
3
3
 
4
4
  export const registerPayload = (fastify: PluginFastifyInstance) => {
5
5
  fastify.registerPayloadHandler<Account>("account", {
@@ -17,5 +17,5 @@ export const registerPayload = (fastify: PluginFastifyInstance) => {
17
17
  export const createAccountPayload = async (
18
18
  fastify: PluginFastifyInstance,
19
19
  items: Account[],
20
- requestData: ClientPayloadRequestData,
20
+ requestData: FrontendPayloadRequestData,
21
21
  ) => await fastify.createPayload("account", items, requestData)
@@ -1,7 +1,7 @@
1
1
  import type { Composition as CompositionType } from "./composition.schema"
2
2
  import type {
3
- ClientPayload,
4
- ClientPayloadRequestData,
3
+ FrontendPayload,
4
+ FrontendPayloadRequestData,
5
5
  } from "@c/payload/payloadTypes"
6
6
  import type { PluginFastifyInstance } from "types"
7
7
  import { v4 as uuidv4, validate } from "uuid"
@@ -68,10 +68,10 @@ export class CompositionService {
68
68
  */
69
69
  async createComposition(
70
70
  fastify: PluginFastifyInstance,
71
- requestData: ClientPayloadRequestData,
71
+ requestData: FrontendPayloadRequestData,
72
72
  compositionBody: CompositionBody,
73
73
  userId: string,
74
- ): Promise<ClientPayload<CompositionType[]>> {
74
+ ): Promise<FrontendPayload<CompositionType[]>> {
75
75
  const composition = await this._createComposition(
76
76
  fastify,
77
77
  compositionBody,
@@ -112,8 +112,8 @@ export class CompositionService {
112
112
  */
113
113
  async getAllCompositions(
114
114
  fastify: PluginFastifyInstance,
115
- requestData: ClientPayloadRequestData,
116
- ): Promise<ClientPayload<CompositionType[]>> {
115
+ requestData: FrontendPayloadRequestData,
116
+ ): Promise<FrontendPayload<CompositionType[]>> {
117
117
  const compositions = await this._readAllCompositions(fastify)
118
118
 
119
119
  return createCompositionPayload(fastify, compositions, requestData)
@@ -147,9 +147,9 @@ export class CompositionService {
147
147
  */
148
148
  async readComposition(
149
149
  fastify: PluginFastifyInstance,
150
- requestData: ClientPayloadRequestData,
150
+ requestData: FrontendPayloadRequestData,
151
151
  id: string,
152
- ): Promise<ClientPayload<CompositionType[]>> {
152
+ ): Promise<FrontendPayload<CompositionType[]>> {
153
153
  const composition = await this._readComposition(fastify, id)
154
154
 
155
155
  return createCompositionPayload(fastify, [composition], requestData)
@@ -210,11 +210,11 @@ export class CompositionService {
210
210
  */
211
211
  async updateComposition(
212
212
  fastify: PluginFastifyInstance,
213
- requestData: ClientPayloadRequestData,
213
+ requestData: FrontendPayloadRequestData,
214
214
  id: string,
215
215
  compositionBody: CompositionBody,
216
216
  userId: string,
217
- ): Promise<ClientPayload<CompositionType[]>> {
217
+ ): Promise<FrontendPayload<CompositionType[]>> {
218
218
  const { updated, original } = await this._updateComposition(
219
219
  fastify,
220
220
  id,
@@ -265,9 +265,9 @@ export class CompositionService {
265
265
  */
266
266
  async removeComposition(
267
267
  fastify: PluginFastifyInstance,
268
- requestData: ClientPayloadRequestData,
268
+ requestData: FrontendPayloadRequestData,
269
269
  id: string,
270
- ): Promise<ClientPayload<CompositionType[]>> {
270
+ ): Promise<FrontendPayload<CompositionType[]>> {
271
271
  const composition = await this._removeComposition(fastify, id)
272
272
 
273
273
  const payload = await createCompositionPayload(fastify, [composition], {
@@ -314,9 +314,9 @@ export class CompositionService {
314
314
  */
315
315
  async hardDeleteComposition(
316
316
  fastify: PluginFastifyInstance,
317
- requestData: ClientPayloadRequestData,
317
+ requestData: FrontendPayloadRequestData,
318
318
  id: string,
319
- ): Promise<ClientPayload<CompositionType[]>> {
319
+ ): Promise<FrontendPayload<CompositionType[]>> {
320
320
  const composition = await this._hardDeleteComposition(fastify, id)
321
321
 
322
322
  const payload = await createCompositionPayload(fastify, [composition], {