@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.
- package/CHANGELOG.md +17 -0
- package/LICENSE.md +661 -1
- package/dist/cli.js +10 -10
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/services/backend/src/core/crud/crudTypes.ts +5 -5
- package/services/backend/src/core/payload/payloadRegistrar.ts +15 -15
- package/services/backend/src/core/payload/payloadTypes.ts +4 -4
- package/services/backend/src/core/pluginSystem/pluginFastifyInstance.ts +4 -4
- package/services/backend/src/core/pluginSystem/pluginTypes.ts +4 -4
- package/services/backend/src/core/sockets/createSystemEventHandlers.ts +18 -16
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/account.service.ts +16 -16
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/events/index.ts +4 -4
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/composition.service.ts +14 -14
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/events/index.ts +3 -3
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/composition/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/events/index.ts +3 -3
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/interactionLink/interactionLink.service.ts +18 -18
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/events/index.ts +4 -4
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/project/project.service.ts +14 -14
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/events/index.ts +5 -5
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/tag/tag.service.ts +14 -14
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/events/index.ts +4 -4
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/helpers/payload.ts +2 -2
- package/services/backend/src/corePlugins/raclette__core/backend/datatypes/user/user.service.ts +14 -14
- package/services/backend/src/types/custom-fastify.d.ts +2 -2
- package/services/backend/src/utils/request.utils.ts +2 -2
- package/services/frontend/src/core/lib/data/dataApi.ts +6 -5
- package/services/frontend/src/core/lib/data/fetchDataHandler.ts +51 -21
- package/services/frontend/src/core/lib/data/queryApi.ts +20 -27
- package/services/frontend/src/core/lib/projectDataHelper.ts +1 -5
- package/services/frontend/src/core/setup/plugin-system/api/plugin-data.ts +17 -13
- package/services/frontend/src/core/types/DataApi.ts +13 -1
- package/services/frontend/src/orchestrator/assets/iconMappings/flags.json +2 -2
- package/services/frontend/src/orchestrator/composables/useVueQueryObservableHelper.ts +21 -11
- package/services/frontend/src/orchestrator/composables/useVueWriteOperationHelper.ts +27 -18
- package/services/frontend/src/orchestrator/i18n/de-DE.json +2 -2
- package/services/frontend/src/orchestrator/i18n/en-EU.json +2 -2
- package/services/frontend/src/orchestrator/i18n/{sk-SK.json → sk.json} +2 -2
- package/services/frontend/src/orchestrator/setup/i18n.ts +413 -270
- 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
|
|
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
|
|
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
|
|
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
|
|
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,22 +1,22 @@
|
|
|
1
|
-
import type {
|
|
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:
|
|
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:
|
|
14
|
+
requestParams: FrontendPayloadRequestData,
|
|
15
15
|
id: string,
|
|
16
16
|
) => Promise<any>
|
|
17
17
|
update: (
|
|
18
18
|
fastify: FastifyInstance,
|
|
19
|
-
requestParams:
|
|
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:
|
|
27
|
+
requestParams: FrontendPayloadRequestData,
|
|
28
28
|
id: string,
|
|
29
29
|
userId: string,
|
|
30
30
|
broadcast?: boolean,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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:
|
|
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:
|
|
97
|
+
requestData: FrontendPayloadRequestData,
|
|
98
98
|
scope = "core",
|
|
99
|
-
): Promise<
|
|
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<
|
|
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
|
|
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:
|
|
151
|
+
requestData: FrontendPayloadRequestData,
|
|
152
152
|
scope = "core",
|
|
153
|
-
): Promise<
|
|
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:
|
|
163
|
+
requestData: FrontendPayloadRequestData,
|
|
164
164
|
scope = "core",
|
|
165
|
-
): Promise<
|
|
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:
|
|
192
|
-
): Promise<
|
|
193
|
-
const allItems:
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
-
|
|
5
|
-
|
|
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:
|
|
172
|
+
requestData: FrontendPayloadRequestData,
|
|
173
173
|
scope?: string,
|
|
174
|
-
): Promise<
|
|
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
|
-
|
|
11
|
-
|
|
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:
|
|
69
|
-
) => Promise<
|
|
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 {
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: (
|
|
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
|
},
|
package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/account.service.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Account as AccountType } from "./account.schema"
|
|
2
2
|
import type {
|
|
3
|
-
|
|
4
|
-
|
|
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:
|
|
68
|
+
requestData: FrontendPayloadRequestData,
|
|
69
69
|
accountBody: AccountBody,
|
|
70
70
|
userId: string,
|
|
71
|
-
): Promise<
|
|
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:
|
|
101
|
-
): Promise<
|
|
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:
|
|
133
|
+
requestData: FrontendPayloadRequestData,
|
|
134
134
|
id: string,
|
|
135
|
-
): Promise<
|
|
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:
|
|
194
|
+
requestData: FrontendPayloadRequestData,
|
|
195
195
|
id: string,
|
|
196
196
|
accountBody: AccountBody,
|
|
197
197
|
userId: string,
|
|
198
|
-
): Promise<
|
|
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:
|
|
245
|
+
requestData: FrontendPayloadRequestData,
|
|
246
246
|
id: string,
|
|
247
|
-
): Promise<
|
|
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:
|
|
294
|
+
requestData: FrontendPayloadRequestData,
|
|
295
295
|
id: string,
|
|
296
|
-
): Promise<
|
|
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:
|
|
358
|
+
requestData: FrontendPayloadRequestData,
|
|
359
359
|
id: string,
|
|
360
360
|
blocked: boolean,
|
|
361
361
|
userId: string,
|
|
362
|
-
): Promise<
|
|
362
|
+
): Promise<FrontendPayload<AccountType[]>> {
|
|
363
363
|
const { updated, original } = await this._toggleBlockAccount(
|
|
364
364
|
fastify,
|
|
365
365
|
id,
|
package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/events/index.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type FastifyInstance } from "fastify"
|
|
2
2
|
import { type AnyAccount } from "../account.schema"
|
|
3
|
-
import { type
|
|
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:
|
|
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:
|
|
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:
|
|
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}`,
|
package/services/backend/src/corePlugins/raclette__core/backend/datatypes/account/helpers/payload.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Account } from "../account.schema"
|
|
2
|
-
import type {
|
|
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:
|
|
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
|
-
|
|
4
|
-
|
|
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:
|
|
71
|
+
requestData: FrontendPayloadRequestData,
|
|
72
72
|
compositionBody: CompositionBody,
|
|
73
73
|
userId: string,
|
|
74
|
-
): Promise<
|
|
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:
|
|
116
|
-
): Promise<
|
|
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:
|
|
150
|
+
requestData: FrontendPayloadRequestData,
|
|
151
151
|
id: string,
|
|
152
|
-
): Promise<
|
|
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:
|
|
213
|
+
requestData: FrontendPayloadRequestData,
|
|
214
214
|
id: string,
|
|
215
215
|
compositionBody: CompositionBody,
|
|
216
216
|
userId: string,
|
|
217
|
-
): Promise<
|
|
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:
|
|
268
|
+
requestData: FrontendPayloadRequestData,
|
|
269
269
|
id: string,
|
|
270
|
-
): Promise<
|
|
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:
|
|
317
|
+
requestData: FrontendPayloadRequestData,
|
|
318
318
|
id: string,
|
|
319
|
-
): Promise<
|
|
319
|
+
): Promise<FrontendPayload<CompositionType[]>> {
|
|
320
320
|
const composition = await this._hardDeleteComposition(fastify, id)
|
|
321
321
|
|
|
322
322
|
const payload = await createCompositionPayload(fastify, [composition], {
|