@01-edu/shared 2.0.6 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attrs-defs.js +1 -1
- package/dist/attrs.js +1 -1
- package/dist/bin/check-definitions.js +2 -2
- package/dist/chunk-727IHWVW.js +1 -0
- package/dist/chunk-7ZTI6THC.js +1 -0
- package/dist/chunk-CBWHFDVB.js +1 -0
- package/dist/chunk-EI7MMDWY.js +1 -0
- package/dist/chunk-EOY6G4KE.js +1 -0
- package/dist/chunk-LDUPRVV4.js +1 -0
- package/dist/chunk-NQCTSDJE.js +1 -0
- package/dist/chunk-V47RDOUO.js +1 -0
- package/dist/chunk-XYW3ROIR.js +1 -0
- package/dist/definitions-checker.js +1 -1
- package/dist/event-utils.js +1 -1
- package/dist/games-utils.js +1 -1
- package/dist/graph.js +1 -1
- package/dist/hasura-core.js +1 -1
- package/dist/hasura-model.js +16 -16
- package/dist/hasura-prepare.js +1 -1
- package/dist/modular-steps-utils.js +1 -1
- package/dist/object-structure.js +1 -1
- package/dist/onboarding.js +1 -1
- package/dist/path.js +1 -1
- package/dist/qa-utils.js +1 -1
- package/dist/score.js +1 -1
- package/dist/skill-definitions.js +1 -1
- package/dist/toolbox.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-BLXMKMNK.js +0 -1
- package/dist/chunk-FQWECXED.js +0 -1
- package/dist/chunk-IF63VBJO.js +0 -1
- package/dist/chunk-MV3DQ3PZ.js +0 -1
- package/dist/chunk-NR2KVFFU.js +0 -1
- package/dist/chunk-T2KIY67K.js +0 -1
- package/dist/chunk-YJMXNRLI.js +0 -1
- package/dist/chunk-ZI7IBRHE.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as Te}from"./chunk-K5Z4W5GV.js";import{b as X}from"./chunk-EOY6G4KE.js";import{a as dt}from"./chunk-CBWHFDVB.js";import{a as Ne,d as pt}from"./chunk-7ZTI6THC.js";import{L as Me,M as Le,O as Pe,U as q,X as w,ba as ut,p as De}from"./chunk-LDUPRVV4.js";import{b as f,c as st,d as y,e as ce,f as Ce,n as je,o as lt}from"./chunk-V47RDOUO.js";import{b as Oe,c as ct,e as T}from"./chunk-727IHWVW.js";import{a as r}from"./chunk-EI7MMDWY.js";var k=128,qe=Array(k+1),K=-1,ht=0,bt=0;for(;++K<k+1;){let e=K*.66+1,t=(K+2)*150+50,n=Math.round(e*t);bt+=n,ht+=e,qe[K]={level:K,base:t,cumul:bt,total:n,xpIndex:Math.floor(ht)}}var z=r(e=>e?.children&&Object.values(e.children)||[],"_children"),Ze=r((e,t,n)=>e&&(t(e)?e:Ze(e[n],t,n)),"find"),ur=r((e,t)=>Ze(e,t,"parent"),"findParent"),Lt=r((e,t)=>Ze(e,t,"prev"),"findPrev"),cr=r(({event:e})=>e,"hasEvent"),Pt=r(e=>e.type==="quest","isQuest"),Ee=r(e=>e.attrs.category==="required","isRequired"),Ot=r(e=>typeof e=="number"&&!Number.isNaN(e)?e:1,"numOrOne"),et=r(e=>e.attrs.difficulty*Ot(e.attrs.difficultyMod),"_difficultyXpCoef"),Tt=r((e,t)=>e+t,"add"),dr=r(([e,t],[n,o])=>t.index-o.index,"byValueIdx"),mt=r((e,t,n)=>e.attrs[`${n}-${t?.attrs?.language}`]||e.attrs[`${n}-en`]||n,"translate"),Nt=r((e,t,n)=>{let{group:o}=e.attrs;return o?n.find(s=>s.attrs.group===o)===e:!0},"firstOfGroup"),Vt=r(e=>{let[t]=Oe(e)||[];return t?`${t.name}/${Xt(e)}`:e.name},"getObjectPath"),l=r(e=>({value:Object.values(e)[0],functions:e,functionsByName:Object.fromEntries(Object.values(e).map(t=>[t.name,t]))}),"Functions"),P={functions:{translate:mt},functionsByName:{translate:mt}},i=r((e,t)=>({type:typeof e,value:e,...t}),"Literal"),C=r((e,...t)=>{if(e.required)return typeof e.value=="function"?e.value(...t):e.value},"getDefaultValue"),c=r(e=>({value:r((...t)=>w(e.type,n=>C(n,...t)),"value"),...e}),"TypeObject"),d={},h={},a={};d.address={"contact-validation-step":i("",{editable:!0,required:!0,label:"Phone validation URL"})};a.allowedFunctions={value:"",type:"string",editable:!0,label:"Function"};var ft={type:[a.allowedFunctions],value:[],label:"Allowed functions",instruction:"Functions authorized to the student",editable:!0,restrictive:!0};d.allowedFunctions={exercise:ft,raid:ft};var yt={type:"boolean",required:!0,private:!0,label:"Show invalid requirements"};d.showInvalidRequirements={project:yt,piscine:yt};var $t="Automatic success",pr=`${$t} if`,hr="Automatic reject if",_t=r(e=>({type:"string",restrictive:!0,editable:!0,label:`${e} - number of conditions to fulfil`,...l({all:r(()=>"and","all"),one:r(()=>"or","one")})}),"sharedAutoValidationOperator");d.autoRejectOperator={games:_t("Reject")};var br=Object.entries(dt),mr=br.flatMap(([e,t])=>[[`${e}Score`,{shouldFailUnder:t.shouldFailUnderScore,shouldSucceedFrom:t.shouldSucceedFromScore}],[`${e}Level`,{shouldFailUnder:t.shouldFailUnderLevel,shouldSucceedFrom:t.shouldSucceedFromLevel}]]),Ft=[["score",{shouldFailUnder:25,shouldSucceedFrom:50}],["level",{shouldFailUnder:10,shouldSucceedFrom:25}],...mr],tt=r(e=>Array.isArray(e)||typeof e!="object"||!Object.keys(e).length,"isntObjectOrIsEmpty"),g=r((e,t,n)=>{if(!e.length){let o=Error("Must be a non empty value");throw o.label=n,o}},"checkNotEmpty"),Se=r((e,t,n)=>{if(e<t||e>n)throw Error(`Expected to be a number range ${t} to ${n}`)},"checkNumberInBetween"),x=r((e,t,n)=>{if(e<t||e>n||!Number.isInteger(e))throw Error(`Expected to be an integer range ${t} to ${n}`)},"checkIntegerInBetween"),Ae=r((e,t,n)=>{if(e<t||e>n)throw Error(`Expected to be a duration between ${De(t)} and ${De(n)}`)},"checkDurationInBetween"),le=r((e,t)=>{if(e.length>t)throw Error(`Max ${t} characters (spaces included).`)},"checkTextLength"),Wt=r(e=>{try{return!!new URL(e)}catch{throw Error("Invalid URL.")}},"checkValidURL"),ke={editable:!0,options:q(100,1),check:r(e=>x(e,1,100),"check")};a.autoRejectWhereConditions=Object.fromEntries(Ft.map(([e,{shouldFailUnder:t}])=>[e,{value:{},editable:!0,description:`Condition relative to ${Pe(e)} of the candidate.`,type:{"<":i(t,{label:"is lower than",description:"Under this number, condition is fulfilled.",...ke}),"<=":i(t,{label:"is lower than or equal",description:"Until this number, condition is fulfilled.",...ke})}}]));d.autoRejectWhere={games:{value:{},editable:!0,restrictive:!0,label:hr,instruction:"List of conditions to automatically reject an application",type:a.autoRejectWhereConditions}};d.autoValidate={administration:i(!1,{label:$t,instruction:"Validate all applications when they are submitted",restrictive:!0,editable:!0})};d.autoValidateOperator={games:_t("Success")};a.autoValidateWhereConditions=Object.fromEntries(Ft.map(([e,{shouldSucceedFrom:t}])=>[e,{value:{},editable:!0,description:`Condition relative to ${Pe(e)} of the candidate.`,type:{">":i(t,{label:"is bigger than",description:"Above this number, condition is fulfilled.",...ke}),">=":i(t,{label:"is bigger than or equal",description:"From this number, condition is fulfilled.",...ke})}}]));d.autoValidateWhere={games:{value:{},editable:!0,restrictive:!0,label:pr,instruction:"List of conditions to automatically accept an application",type:a.autoValidateWhereConditions}};var rt={value:{},editable:!0,label:"Skills rewarded",type:w(Ne,({name:e,type:t,description:n})=>({label:e,instruction:t,description:n,editable:!0,type:"number",value:1,options:q(100,1),check:r(o=>x(o,1,100),"check")}))},N={...rt,instruction:"Skills rewarded to users when they succeed in the current content"};h.baseSkills={exam:{exercise:N},quest:{exercise:N},module:{piscine:N,project:N},campus:{piscine:N},piscine:{raid:N,project:N}};var fr=r(e=>{if(Object.keys(e.children||{}).length&&e.type!=="raid")return 0;let t=qe[e.attrs.level]||qe[0];return Math.round(t.base*Ot(et(e)))},"getBaseXpByLevelAndDifficulty"),V={type:"number",required:!0,editable:!0,label:"XP rewards",instruction:"How much experience points the user gets by succeeding on this content",...l({"by level and difficulty":fr}),check:r(e=>{if(!Number.isInteger(e))throw Error("Must be a whole number");if(e<0)throw Error("Must not be negative")},"check")};h.baseXp={exam:{exercise:V},quest:{exercise:V},module:{piscine:V,project:V},piscine:{raid:V,project:V},campus:{piscine:V}};d.blockStartDelay={exam:i(15*6e4,{label:"Time to join the exam",editable:!0})};var gt=i("Save",{label:"Submit button text",editable:!0,...P});d.buttonText={"sign-step":gt,"form-step":gt};d.campaignId={games:i("",{label:"Games campaign related",instruction:"Id required",required:!0,editable:!0,restrictive:!0})};var yr=r(e=>e.path.split("/")[1],"getCampus"),M={label:"Campus",type:"string",required:!0,private:!0,...l({"from campus name":yr})};d.campus={exercise:M,module:M,piscine:M,project:M,raid:M,exam:M,quest:M,...Object.fromEntries([...Te].map(e=>[e,M]))};var Q=i(400,{label:"Event capacity",instruction:"From 1 to 1000.",editable:!0,required:!0,check:r(e=>{if(!Number.isInteger(e))throw Error("Must be a whole number");if(e>1e3)throw Error("Cannot be more than 1000.");if(e<1)throw Error("Must be one or more")},"check")});d.capacity={exam:Q,module:Q,piscine:Q,raid:Q,interview:Q};var gr=new Set(["required","optional","bonus"]);h.category={exam:{exercise:i("required",{label:"Category of the exercise",required:!0,private:!0,check:r(e=>{if(!new Set(["required","optional"]).has(e))throw Error('Must be "required" or "optional"')},"check")})},quest:{exercise:i("required",{label:"Category of the exercise",required:!0,editable:!0,options:["required","optional","bonus"],check:r(e=>{if(!gr.has(e))throw Error('Must be "required", "optional" or "bonus"')},"check")})},piscine:{raid:i("required",{required:!0,private:!0})}};d.checkbox={"sign-step":{label:"Display a checkbox",instruction:'Minimum options: "label" and "required"',value:{},editable:!0,type:"object",check:r(e=>{if(!e.label||typeof e.label!="string")throw Error('"label" must be defined as a text to be displayed on the right of the checkbox.');if(typeof e.required!="boolean")throw Error('"required" must be defined as true or false (if the checkbox is mandatory or not).')},"check"),...P}};a.codeEditorFile=c({label:"File",editable:!0,type:{giteaPath:i("root/public/README.md",{label:"Gitea file path",instruction:'Example: "{user}/{repo}/{path-to-file}"',editable:!0,check:r(e=>{le(e,200),g(e)},"check")}),editorPath:i("provided/README.md",{label:"Path in Code editor",required:!0,editable:!0,check:r(e=>{le(e,200),g(e)},"check")})}});a.providedFiles={editable:!0,label:"Provided files",type:[a.codeEditorFile]};a.enableCodeEditor=(e,t)=>i(e,{editable:!0,required:!0,label:"Enable",...t});var vt={label:"Code editor settings",editable:!0,check:r((e,{attrs:t})=>{if(t.language==="sh")throw Error("The code editor does not support shell exercises")},"check"),type:{enabled:a.enableCodeEditor(!1),providedFiles:a.providedFiles}};h.codeEditor={quest:{exercise:c({...vt})},exam:{exercise:c({...vt,required:!0,type:{enabled:a.enableCodeEditor(!0,{editable:!1}),providedFiles:a.providedFiles}})}};var Re=r(e=>{let t=/^[^a-z](\d+)|[^a-z0-9_]/g,n=e.search(t);if(n!==-1){let o=e[n],s=e.normalize("NFD").toLowerCase().replace(t,""),u=s?`Did you mean ${s}?`:"";throw Error(`Property names should start with a letter, only contain lowercase letters, numbers, and underscores (${n}:"${o}"). ${u}`)}},"checkCRMvalues"),xt=process.env.ENABLE_CRM,vr=process.env.CRM_NAME,xr=process.env.CRM_ENDPOINT,wr=process.env.CRM_PRIVATE_KEY;a.crmOnValidation=i("event_status",{editable:!0,label:"Validation status",check:r(e=>{g(e),Re(e)},"check")});var L=c({label:"Customer Relationship Management (CRM)",editable:!0,restrictive:!0,private:!(xt&&JSON.parse(xt)&&vr&&xr&&wr),type:{onValidation:a.crmOnValidation}});a.crmGamesOnAttempts=i("number_of_attempts_remaining",{label:"Remaining attempts",editable:!0,check:r(e=>{g(e),Re(e)},"check")});a.crmOnProgress=i("last_progress",{label:"Currently in progress",editable:!0,check:r(e=>{g(e),Re(e)},"check")});a.gamesCRM={onAttempts:a.crmGamesOnAttempts};a.crmDueDate=i("audit_due_date",{label:"Due date",editable:!0,check:r(e=>{g(e),Re(e)},"check")});var wt={...L,type:{...L.type,onProgress:a.crmOnProgress}};d.crm={games:{...L,type:{...a.gamesCRM,onValidation:L.type.onValidation}},interview:L,piscine:wt,module:wt,exam:L,raid:L,project:{...L,type:{dueDate:a.crmDueDate}}};var de=r(({type:e,parent:t,index:n,attrs:o})=>t&&e==="exercise"&&o.special?Object.values(t.children).filter(u=>u.index<n).map(({attrs:u})=>u.duration).reduce(Tt,0)*864e5:o.startDay?(o.startDay-1)*864e5:0,"getDelay"),Y={type:"number",required:!0,private:!0};h.delay={piscine:{quest:{...Y,label:"Time before the quest starts",...l({"based on previous content temporal-windows":de})},project:{...Y,label:"Time before the project starts",...l({"based on previous content temporal-windows":de})}},quest:{exercise:{...Y,label:"Time before the exercise starts",...l({"based on previous exercises temporal-windows":de})}},exam:{exercise:{...Y,label:"Time before the exercise starts",...l({"based on previous exercises temporal-windows":de})}},module:{project:i(0,Y)}};var qr=r(({attrs:e,prev:t})=>e.parentType!=="exam"?1:e.group?Math.round(e.group*2):Math.round(((t?.attrs.group||0)+1)*2),"exerciseDifficulty"),kr=r(e=>z(e).filter(Nt).filter(Ee).map(et).reduce(Tt,0),"sumOfChildrenDifficulty"),B=i(1,{required:!0,label:"Difficulty",instruction:"From 0.75 to 2 (in increments of 0.25)"}),Ve={...B,private:!0,...l({"Sum of required children exercises difficulties":kr})};h.difficulty={module:{project:{...B,editable:!0},exam:Ve},piscine:{project:{...B,editable:!0},raid:{...B,editable:!0},exam:Ve,quest:Ve},quest:{exercise:i(1,{...B,editable:!0})},exam:{exercise:{...B,editable:!0,editableDefaultValue:1,...l({"Based on exercise group or 1":qr})}}};var Er=r(({parent:e})=>e?.attrs.difficultyMod,"getDifficultyMod"),S=i(1,{label:"XP Coefficient",required:!0,editable:!0,editableDefaultValue:1,...l({"from parent":Er}),check:r(e=>Se(e,0,64),"check")});h.difficultyMod={campus:{piscine:S},module:{project:S,piscine:S,exam:S},piscine:{raid:S,exam:S,quest:S,project:S},quest:{exercise:S},exam:{exercise:S}};var Sr=r(({name:e})=>e,"getName"),Xt=r(e=>{let[t]=Oe(e)||[];return t&&t.name&&e.name.startsWith(t.name)?e.name.slice(t.name.length+1):e.name},"getProjectName"),J=i("",{editable:!0,label:"Displayed name",check:r(e=>le(e,60),"check")});d.displayedName={raid:{...J,...l({"from name":Sr})},project:{...J,...l({"from name (or light version)":Xt}),required:!0},piscine:J,exercise:J,quest:J};var Ut=r(e=>e.attrs.special,"isHackathon"),qt=r(({parent:e})=>Ut(e)?e.attrs.duration/Object.keys(e.children).length:0,"getExerciseDuration"),Ar=r(()=>1,"oneDayDuration"),Rr=r(()=>2,"twoDaysDuration"),$=i(1,{label:"Temporal-window duration in the event",required:!0,editable:!0,check:r(e=>Ae(e*864e5,0,50*864e5),"check"),editableDefaultValue:1,...l({"one day":Ar})});h.duration={module:{exam:{...$,hidden:!0}},piscine:{quest:$,exam:$,raid:{...$,...l({"two days":Rr})},project:$},quest:{exercise:{...$,...l({"proportional to the others (in hackathon mode)":qt})}},exam:{exercise:{...$,...l({"proportional to the others (in hackathon mode)":qt})}}};var Z={label:"Event duration",required:!0,editable:!0,check:r(e=>Ae(e*6e4,1*6e4,365*864e5*3),"check")};d.eventDuration={exam:i(4*36e5/6e4,Z),module:i(365*864e5*2/6e4,Z),interview:i(864e5*1/6e4,Z),piscine:i(4*6048e5/6e4,Z),raid:i(864e5*2/6e4,Z)};var Ir=r(({parent:e})=>e?.attrs.eventId,"getParentEventId"),Cr=r(({event:e})=>e?.id,"getEventId"),F={type:"number",label:"Event id",required:!0,private:!0,...l({"own event":Cr})},ee={...F,...l({"parent event":Ir})};h.eventId={campus:{module:F,piscine:F},piscine:{quest:ee,project:ee,exam:F,raid:F},quest:{exercise:ee},exam:{exercise:ee},module:{piscine:F,project:ee,exam:F}};var te=i(0,{label:"Time between registration and event",editable:!0});d.eventStartDelay={exam:te,module:te,interview:te,piscine:te,raid:te};a.filesName=i("",{label:"Expected file name",instruction:'Examples: "main.go", or "exerciseName/main.go"',editable:!0,check:r(e=>{le(e,65)},"check")});var kt={type:[a.filesName],value:[],editable:!0,restrictive:!0,label:"Expected files",check:g};d.expectedFiles={exercise:kt,raid:kt};var jr=r((e,t)=>e+(Ee(t)?t.attrs.baseXp:0),"totalRequiredXp"),Et=r(e=>z(e).filter(Nt).reduce(jr,0),"getRequiredExpectedXp"),Dr=r((e,t)=>e+(t.attrs.expectedXp||0),"totalExpectedXp"),St=r(e=>z(e).reduce(Dr,0),"getTotalExpectedXp"),pe={type:"number",label:"XP",instruction:"Expertise(s) that this content is worth.",required:!0,check:r(e=>{if(!Number.isInteger(e))throw Error("Must be a whole number");if(e<0)throw Error("Must not be negative")},"check")};d.expectedXp={piscine:{...pe,private:!0,label:"XP (for stats)",...l({"Sum of children expected XP":St})},module:{...pe,...l({"Sum of children expected XP":St})},quest:{...pe,...l({"Sum of required children XP":Et})},exam:{...pe,...l({"Sum of required children XP":Et})}};var Bt=i("",{primary:!0,editable:!0,required:!0}),H={key:{...Bt,label:"Key (must be unique)",instruction:"Associated keyword in the database and data exports",check:r((e,t)=>{if(g(e.trim()),Le(e)){let s=Me(e);throw Error(`Must be written in camelCase. Suggestion: "${s}"`)}if((t.attrs["form-en"]||t.attrs.form||[]).flatMap(s=>s.inputs.map(u=>u.key)).filter(s=>s===e)?.length>1)throw Error(`${e} is already used for another input. Please choose a unique key.`)},"check")},required:i(!0,{label:"Must be fulfilled",editable:!0})},Mr=new Set(["w100p","w18p"]),W={...H,styleProps:c({label:"Input style",type:{w100p:i(!1,{label:"Large input style",editable:!0}),w18p:i(!1,{label:"Small input style",editable:!0})},editable:!0,check:r(e=>{let t=Object.keys(e).find(n=>!Mr.has(n));if(t)throw Error(`${t} is not a valid css property`)},"check")})},E={name:i("",{label:"Input HTML name",editable:!0,check:g}),id:i("",{label:"Input HTML id",editable:!0,check:g})},ue=r((e,t)=>({placeholder:i(t||"Your answer...",{label:"Placeholder",editable:!0}),label:i(e||"",{label:"Label / title",instruction:"Displayed on top of the input",editable:!0})}),"labelAndPLaceholder"),Gt={...ue(),...E,minLength:i(1,{label:"Minimum length",editable:!0}),maxLength:i(60,{label:"Maximum length",editable:!0})};a.textInput=c({label:"Text input",type:{type:i("text",{label:"Input type",required:!0}),...W,...Gt,size:i(20,{label:"Size",editable:!0})}});a.textareaInput=c({label:"Textarea input",type:{type:i("textarea",{label:"Input type",required:!0}),...W,...Gt,rows:i(5,{label:"Rows",editable:!0}),cols:i(20,{label:"Columns",editable:!0})}});a.telInputPattern=i("/^\\s?\\+?[0-9 ()_-]+$/",{label:"Pattern to match",instruction:"Regular expression (in javascript) that the input's value must match.",editable:!0});a.telInput=c({label:"Tel input",type:{type:i("tel",{label:"Input type",required:!0}),...W,...E,...ue("Telephone number","+333 33 33 33 33"),pattern:a.telInputPattern,format:i("Format: +7 777 123 00 00",{label:"Format to respect",editable:!0})}});a.checkboxInput=c({label:"Checkbox input",type:{type:i("checkbox",{label:"Input type",required:!0}),...H,...E,label:i("I agree",{label:"Text associated to the checkbox",instruction:"Displayed on the right of the checkbox",editable:!0,required:!0,check:g}),value:i(!1,{label:"Is initially checked",editable:!0,required:!0})}});a.switchInput=c({label:"Switch input",type:{type:i("switch",{label:"Input type",required:!0}),...H,...E,label:i("I choose...",{label:"Text associated to the switch input",instruction:"Displayed on the left of the checkbox",editable:!0,required:!0,check:g}),value:i(!1,{label:"Is initially set to true",editable:!0,required:!0})}});a.numberInputsSteps=i(10,{label:"Step value up and down by",editable:!0});a.numberInput=c({label:"Number input",type:{type:i("number",{label:"Input type",required:!0}),...W,...E,...ue("How many/much...","Multiple of..."),min:i(1,{label:"Minimum",editable:!0}),max:i(100,{label:"Maximum",editable:!0}),step:a.numberInputsSteps}});a.dateInput=c({label:"Date input",type:{type:i("date",{label:"Input type",required:!0}),...W,...E,...ue("Date","2000-01-01"),value:i("2000-01-01",{label:"Default date value",editable:!0}),min:i("2000-01-01",{label:"Lowest date allowed",editable:!0}),max:i("2000-01-01",{label:"Highest date allowed",editable:!0})}});a.datetimeLocalInput=c({label:"Date with time input",type:{type:i("datetime-local",{label:"Input type",required:!0}),...W,...E,...ue("Date and time","2000-01-01T00:00"),value:i("2000-01-01T00:00",{label:"Default date and time value",editable:!0}),min:i("2000-01-01T00:00",{label:"Lowest date and time allowed",editable:!0}),max:i("2000-01-01T00:00",{label:"Highest date and time allowed",editable:!0})}});a.countriesInput=c({label:"Countries input",type:{type:i("countries",{label:"Input type",required:!0}),...H,...E,label:i("Country",{label:"Label / title",instruction:"Displayed on top of the input",editable:!0}),emptyItem:c({label:"Empty selection text",editable:!0,instruction:"Displayed as a placeholder before selection",type:{label:i("Choose your country...",{label:"Label",editable:!0})}})}});a.languagesInput=c({label:"Languages input",type:{type:i("languages",{label:"Input type",required:!0}),...H,...E,label:i("Language",{label:"Label / title",instruction:"Displayed on top of the input",editable:!0}),emptyItem:c({label:"Empty selection text",editable:!0,instruction:"Displayed as a placeholder before selection",type:{label:i("Choose your language...",{label:"Label",editable:!0})}})}});a.radioItems=c({label:"Radio item",type:{label:i("",{label:"Label (text displayed)",editable:!0}),data:i("",{label:"Data (value saved in database)",editable:!0,required:!0,primary:!0,check:g})}});a.radioInput=c({label:"Radio input",type:{type:i("radio",{label:"Input type",required:!0}),...H,...E,label:i("Select one...",{label:"Label / title",instruction:"Displayed on top of the input",editable:!0,required:!0}),inlineBlock:i(!0,{label:"Displays options under the label",instruction:"If set to false, options are right to the label",editable:!0}),items:{value:[],type:[a.radioItems],label:"Items",required:!0,editable:!0}}});a.selectItems=c({label:"Select item",type:{label:i("",{label:"Label",instruction:"Text displayed and saved in database",editable:!0,required:!0,primary:!0,check:g}),data:i("",{label:"Data",editable:!0})}});a.selectInput=c({label:"Select input",type:{type:i("select",{label:"Input type",required:!0}),...W,...E,label:i("Select one...",{label:"Label / title",instruction:"Displayed on top of the input",editable:!0}),searchable:i(!0,{label:"Searchable",instruction:"Allow search, and sort the input options",editable:!0}),emptyItem:c({label:"Empty selection text",editable:!0,instruction:"Displayed as a placeholder before selection",type:{label:i("Choose...",{label:"Label",editable:!0})}}),items:{type:[a.selectItems],value:[],label:"Items",required:!0,editable:!0}}});a.formSectionResume=i("",{label:"Resume",editable:!0});a.formSection=c({type:{key:{...Bt,label:"Section id",instruction:"Private info (for admins)",check:r((e,t)=>{if(g(e.trim()),Le(e)){let s=Me(e);throw Error(`Must be written in camelCase. Suggestion: "${s}"`)}if((t.attrs["form-en"]||t.attrs.form||[]).map(s=>s.key).filter(s=>s===e)?.length>1)throw Error(`${e} is already used for another section. Please choose a unique key.`)},"check")},title:i("",{label:"Section title",editable:!0}),resume:a.formSectionResume,inputs:{label:"Inputs",instruction:"Questions or instruction to answer to",required:!0,editable:!0,value:[],type:[a.textInput,a.textareaInput,a.telInput,a.checkboxInput,a.switchInput,a.dateInput,a.datetimeLocalInput,a.numberInput,a.countriesInput,a.languagesInput,a.radioInput,a.selectInput]}}});d.form={"form-step":{label:"Form to fill",required:!0,editable:!0,value:[{key:"firstSection",inputs:[]}],type:[a.formSection],...P}};var Lr=r(e=>{if(!e.children)return;let t=z(e),n=t.filter(Ee).length,o=t.filter(s=>s.attrs.status==="succeeded").length;return o&&o/n},"questGrade");d.grade={quest:i(0,{required:!0,private:!0,label:"Quest grade",...l({"succeeded exercises / required":Lr})})};a.graphArcName=c({label:"Name of the arc",type:{text:i("",{label:"The text name of the arc",type:"string"}),hidden:i(!0,{label:"Display the text name on the graph"})}});var Qe=r((e,t)=>{if(!t.children[e])throw Error(`Invalid object - no object found in the module for the following key name: ${e}`)},"checkGraphArcContentIsValid");a.graphArcContentName=i("",{label:"The text name of a content placed on an arc",check:r((e,t)=>Qe(e,t),"check")});a.graphArcContentWithSubContents={value:{},label:"Content with sub-contents placed on an arc",type:"object",check:r((e,t)=>{if(tt(e))throw Error("Should be a non empty object.");let n=Object.entries(e);if(n.length>1)throw Error("Should be an object with a single key-value pair; the key being the content's name, and the value being an array of sub-contents's names.");let[o,s]=n[0];if(Qe(o,t),!Array.isArray(s)||!s.length)throw Error("Must be a non empty array");let u=new Set(s);if(s.length!==u.size)throw Error("Duplicates are not allowed.");let p=T.SLICE.innerCircle.maxSubContentsCount;if(s.length>p)throw Error("Max sattelites reached");for(let m of s)Qe(m,t)},"check")};var zt=r(e=>{let{name:t,contents:n,type:o,id:s,...u}=e;if(Object.keys(u).length)throw Error(`Unsupported attribute "${Object.keys(u)[0]}"`);if(!Array.isArray(n)||!n?.length)throw Error("Must be a non empty array")},"graphArcBasicChecks");a.graphArc=c({label:"Name & contents of an arc",type:{id:i("",{label:"A randomly-generated id to identify the arc"}),name:a.graphArcName,contents:{label:"The list of contents to be placed on an arc",type:[a.graphArcContentName]}},check:zt});a.innerCircleSlice=c({label:"Slice on the inner circle",type:{id:i("",{label:"A randomly-generated id to identify the slice"}),name:a.graphArcName,type:i("slice",{label:"The slice type"}),entryPoint:a.graphArcContentName,innerArc:c({label:"Inner arc of an inner circle slice",type:{...a.graphArc.type,contents:{label:"The list of contents to be placed on an inner arc of an inner circle slice",type:[a.graphArcContentName,a.graphArcContentWithSubContents]}},check:zt}),outerArcs:{label:"Outer arcs of an inner circle slice",type:[a.graphArc],check:r(e=>{let{maxArcsCount:t,maxContentsCount:n}=T.SLICE.outerArc;if(e.length>t)throw Error("Max outerArcs reached");if(e.reduce((o,s)=>o+(s.contents?.length||0),0)>n)throw Error("Max contents spread over outerArcs of slice reached")},"check")}},check:r(e=>{let{name:t,entryPoint:n,type:o,innerArc:s,outerArcs:u,id:p,...m}=e;if(Object.keys(m).length)throw Error(`Unsupported attribute "${Object.keys(m)[0]}"`);if(!t&&!n&&!o&&!s&&!u&&!p)throw Error("Empty inner circle, should be removed")},"check")});a.innerCircleLine={...a.graphArc,label:"Line on the inner circle",type:{...a.graphArc.type,type:i("line",{label:"The line type"})},check:r(e=>{if(e.contents.length>T.LINE.maxContentsCount)throw Error("Max contents reached for a line")},"check")};var Pr=c({private:!0,required:!0,editable:!0,value:{innerCircle:[],middleCircle:[],outerCircle:[]},label:"Graph structure",instruction:"Structure of the visual graph",description:"Sets the visual structure & hierarchy of the graph of a module.",type:{centralPoint:a.graphArcContentName,innerCircle:{value:[],required:!0,editable:!0,label:"List of slices and/or lines spread on the inner circle",type:[a.innerCircleSlice,a.innerCircleLine],check:r(e=>{let t=e.filter(u=>u.type==="slice"),n=e.filter(u=>u.type==="line"),{SLICE:o,LINE:s}=T;if(t.length>o.maxSlicesCount)throw Error("Max slices sections reached");if(n.length>s.maxLinesCount)throw Error("Max lines sections reached");if(t.flatMap(({innerArc:u})=>u.contents.flatMap(p=>typeof p=="string"?p:Object.keys(p)[0])).length>o.innerCircle.maxContentsCount)throw Error("Max contents spread over innerArcs of slices reached")},"check")},middleCircle:{value:[],required:!0,editable:!0,label:"List of arcs spread on the middle circle",type:[a.graphArc],check:r(e=>{let{maxArcsCount:t,maxContentsCount:n}=T.MIDDLE_CIRCLE;if(e.length>t)throw Error("Max arches reach on middleCircle");if(e.reduce((o,s)=>o+(s.contents?.length||0),0)>n)throw Error("Max contents reach on middleCircle")},"check")},outerCircle:{value:[],required:!0,editable:!0,label:"List of arcs spread on the outer circle",type:[a.graphArc],check:r(e=>{let{maxArcsCount:t,maxContentsCount:n}=T.OUTER_CIRCLE;if(e.length>t)throw Error("Max arches reach on outerCircle");if(e.reduce((o,s)=>o+(s.contents?.length||0),0)>n)throw Error("Max contents reach on outerCircle")},"check")}},check:r((e,t)=>{let{centralPoint:n,innerCircle:o,middleCircle:s,outerCircle:u,...p}=e;if(Object.keys(p).length)throw Error(`Unsupported attribute "${Object.keys(p)[0]}"`);if(!n&&!o?.length&&!s?.length&&!u?.length)throw Error("Empty graph, should be removed");let m=ct(e),b=new Set(m);if(m.length!==b.size)throw Error("Graph should not contain duplicate contents keys");let v=Object.keys(t.children);b.size!==v.length&&console.error(`Inconsistancy in between graph and children: different size (${b.size} vs ${v.length})`)},"check")});d.graph={module:Pr};h.group={exam:{exercise:i(1,{label:"Exercise group",editable:!0,required:!0,hidden:!0,options:q(100,1),check:r(e=>x(e,1,100),"check")})}};var Or=r(({group:e})=>e?.id,"getGroupId"),At={label:"Group id of the user",type:"number",required:!0,private:!0,...l({"last confirmed group for this project":Or})};d.groupId={project:At,raid:At};d.groupMax={project:i(1,{label:"Max. group number",required:!0,editable:!0,options:q(20,1),check:r((e,t)=>{if(x(e,1,20),t.attrs.groupMin>e)throw Error('Must be bigger or equal to "Min. group number"')},"check")})};d.groupMin={project:i(1,{label:"Min. group number",required:!0,editable:!0,options:q(20,1),check:r((e,t)=>{if(x(e,1,20),t.attrs.groupMax<e)throw Error('Must be smaller or equal to "Max. group number"')},"check")})};d.groupSize={raid:i(3,{label:"Average group size",required:!0,editable:!0,options:[3,1,2,...q(17,4)],check:r(e=>x(e,1,20),"check")})};var Ht=r(({attrs:e})=>Date.now()>e.start,"getHasStarted"),Tr=r(()=>!0,"always"),Nr=r(()=>!1,"never"),U={type:"boolean",required:!0,private:!0,...l({"from beginning of event":Ht})},re={label:"Starts when",type:"boolean",hidden:!0,required:!0,...l({"temporal-window has started (in hackathon mode)":Ht,"always started":Tr,"never starts":Nr})};h.hasStarted={campus:{module:U,piscine:U},module:{piscine:U,exam:U,project:re},piscine:{exam:U,raid:U,quest:re,project:re},quest:{exercise:re},exam:{exercise:re}};d.info={raid:i("Group 1",{editable:!0,label:"Calendar information tag",check:r(e=>le(e,50),"check")})};var Kt={label:"Upload input",required:!0,editable:!0,type:"object",value:{},...P,instruction:'Required option: "type"'},Vr={...Kt,editable:!1,check:r(e=>{let[t]=Object.values(e);if(tt(t),!t.type||t.type!=="file")throw Error('"type":"file" property must be defined in the upload input.');if(t.accept!==void 0&&typeof t.accept!="string")throw Error('"accept" property (if added) must be a text. Example: "image/png, image/jpeg"');if(t.required!==void 0&&typeof t.required!="boolean")throw Error('"required" property (if added) must be a true or false.')},"check")},$r=c({label:"Avatar input",required:!0,editable:!1,value:{type:"file",accept:"image/png, image/jpeg",required:!0},type:{type:i("file",{label:"Input type",required:!0,editable:!1}),accept:i("image/png, image/jpeg",{label:"Accepted file types",editable:!1,required:!0}),required:i(!0,{label:"Required",editable:!1,required:!0})}});d.input={"upload-step":Vr,"avatar-step":$r,"contact-validation-step":{...Kt,check:r(e=>{let[t]=Object.values(e);if(tt(t),!t.type||t.type!=="tel")throw Error('"type":"tel" property must be defined in the contact validation input.');if(t.required!==void 0&&typeof t.required!="boolean")throw Error('"required" property (if added) must be a true or false.');if(t.label!==void 0&&typeof t.label!="string")throw Error('"label" property (if added) must be a text. Example: "Phone contact"');if(t.placeholder!==void 0&&typeof t.placeholder!="string")throw Error('"placeholder" property (if added) must be a text. Example: "+333 33 33 33 33"');if(t.format!==void 0&&typeof t.format!="string")throw Error('"format" property (if added) must be a text. Example: "Required format: +33 7 17 17 17 17"');if(t.pattern!==void 0){if(typeof t.pattern!="string")throw Error('"pattern" property (if added) must be a text and a valid regex. Example: "[+][0-9]{3}[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}"');try{return new RegExp(e)}catch{throw Error("Invalid Regular expression.")}}},"check")}};var Qt=r(({attrs:e})=>{let t=Date.now();return t>e.scopeStart&&t<e.scopeEnd},"getInScope"),Rt=r(({attrs:e})=>e.hasStarted,"getProjectInScope"),_r=r(({parent:e})=>e.attrs.inScope,"getExamExerciseInScope"),Fr=r(({parent:e,attrs:t})=>{if(e.attrs.inScope){if(Ut(e)){let n=Date.now();return n>t.start&&n<t.duration*864e5+t.start}return!0}return e.attrs.hasStarted&&t.category==="bonus"},"getExerciseInScope"),G={label:"Reward scope",required:!0,type:"boolean"},$e={...G,private:!0,label:"Active scope (distinct from temporal-window)",...l({"from start date to end date":Qt})};h.inScope={piscine:{quest:{...G,label:"Reward scope (temporal-window with extra duration)",instruction:"Defines whether the content keeps giving the rewards or not.",...l({"from start day to end of extra duration":Qt})},raid:$e,exam:$e,project:{...G,...l({"parent temporal-window":Rt})}},quest:{exercise:{...G,...l({"parent temporal-window (or one by one in hackathon)":Fr}),instruction:"Defines whether the content keeps giving the rewards or not."}},exam:{exercise:{...G,private:!0,...l({"parent scope":_r})}},module:{project:{...G,...l({"parent scope":Rt})},exam:$e}};var he=i("",{label:"Programming language",instruction:'Example: "js", "go", "rust"',editable:!0,restrictive:!0});d.language={exam:he,exercise:he,raid:he,project:he};var Wr=r(({parent:e,attrs:t})=>{if(e&&e.type==="exam")return e.attrs.level;let n=t.difficulty+t.xpIndex,o=qe.find(s=>s.xpIndex>n);return o?o.level:0},"getLevel"),A=i(1,{label:"Level",required:!0,editable:!0,editableDefaultValue:1,...l({"minimum required":Wr}),options:q(k,1),check:r(e=>x(e,1,k),"check")});h.level={module:{piscine:A,exam:A,project:A},piscine:{quest:A,raid:A,exam:A,project:A},quest:{exercise:A},exam:{exercise:A},campus:{piscine:A}};a.objectChildRelativePath=i("./",{label:"Content relative path",instruction:"As a child of this content",editable:!0,check:X,options:r(e=>Object.entries(e.children||{}).sort(dr).map(([t,n])=>`./${t}`),"options")});var Yt=r((e,t)=>{if(!Array.isArray(e)||!e.length){let s=new Error("Must be a non empty array");throw s.userFeedback="This list cannot be empty! Please add an item or remove the setting.",s}let n=[...new Set(e)];if(e.length!==n.length)throw Error("Duplicates are not allowed.");let o=e.filter(s=>!X(s,t,{throwError:!1}));if(o.length){let s=o.map(p=>`'${p}'`).join(", "),u=new Error(`Invalid objects requirements - no object found for the following relative paths: ${s}`);throw u.userFeedback="Some Contents are misconfigured, please update them!",console.error(u.message),u}},"checkRelativePaths");a.objectRootRelativePath=i("../",{label:"Content relative path (Mandatory)",instruction:"In same parent",editable:!0,check:r((e,t)=>{try{X(e,t)}catch(n){throw n.userFeedback=`This content relative path (${e}) is invalid, please select a valid content in the list below or remove it.`,n}},"check"),options:r(e=>e?.parent?.children?Object.entries(e.parent.children).filter(([o])=>o!==e.key).map(([o])=>`../${o}`):[],"options")});a.sharedObjectList={label:"Contents required",editable:!0,check:r((e,t)=>{Yt(e.flat(),t)},"check")};var Jt={editable:!0,label:"Access conditions"},Xr={...Jt,instruction:"Conditions to access this content",description:"Sets the requirements that have to be met for a content to be accessible to a student.",check:r((e,t)=>{let{skills:n,objects:o,...s}=e;if(Object.keys(s).length)throw Error(`Unsupported attribute "${Object.keys(s)[0]}"`);if(!n&&!o)throw Error("Empty requirements, should be removed");let u=(o||[]).flat().filter(p=>!X(p,t,{throwError:!1}));if(u.length){let p=u.map(b=>`'${b}'`).join(", "),m=new Error(`Invalid objects requirements - no object found for the following relative paths: ${p}`);throw m.userFeedback="You have some misconfigured Contents required, please update them!",console.error(m.message),m}},"check")},Ur={...Jt,instruction:"Conditions to unlock and earn this level",description:"Sets the requirements that have to be met for a level to be unlocked and earned by a student.",check:r(e=>{let{skills:t,objects:n,...o}=e;if(Object.keys(o).length)throw Error(`Unsupported attribute "${Object.keys(o)[0]}"`);if(!t&&!n)throw Error("Empty requirements, should be removed")},"check")};a.levelDefinition=c({label:"Level definition",type:{level:i(k,{label:"Level",editable:!0,required:!0,primary:!0,options:q(k,1).reverse(),check:r((e,t)=>{if(x(e,1,k),t.attrs.levelsDefinitions?.filter(o=>o.level===e)?.length>1)throw Error(`Level ${e} is set for different levels definitions! A given level can only be defined once.`)},"check")}),requirements:c({...Ur,type:{skills:{...rt,label:"Skills required",instruction:"Expertises required"},objects:{...a.sharedObjectList,value:r((...e)=>{let t=a.objectChildRelativePath.options(...e)?.[0];return t?[t]:[]},"value"),type:[a.objectChildRelativePath],instruction:"Items to be succeeded"}},instruction:"Conditions to access this level"})}});var Br={label:"Level requirements",instruction:"Set the requirements and conditions for the user to access specific levels",value:r((...e)=>[w(a.levelDefinition.type,t=>C(t,...e))],"value"),editable:!0,restrictive:!0,type:[a.levelDefinition],check:r(e=>{if(!e?.length||!Array.isArray(e))throw Error("Must be a non empty array")},"check")};d.levelsDefinitions={module:Br};d.link={"sign-step":c({label:"Associated link to the document",editable:!0,type:{href:i("",{required:!0,editable:!0,label:"URL",instruction:"Href HTML attribute",check:r(e=>{e.length&&Wt(e)},"check")}),label:i("> Link to the document",{editable:!0,label:"Label / text displayed"}),target:i("_blank",{label:"Target HTML attribute",instruction:"Open the link in a new browser tab"})},...P}),"avatar-step":c({label:"Link to the legal page",editable:!1,required:!0,value:{href:"/legal",label:"> Privacy policy",target:"_blank"},type:{href:i("/legal",{editable:!1}),label:i("> Privacy policy",{editable:!1}),target:i("_blank",{editable:!1})}})};h.mandatory={module:{project:{label:"Mandatory content to validate the curriculum",type:"boolean",required:!1,editable:!0}}};var Gr=r((e,t)=>Math.max(t.attrs.group||1,e),"maxGroupReducer"),zr=r(e=>z(e).reduce(Gr,1),"getMaxExamGroup");d.maxGroup={exam:{type:"number",label:"Max exercise group",private:!0,required:!0,...l({"biggest exercise group of the exam":zr})}};var Zt=i("",{label:"Name",editable:!0,...P}),er={};for(let e of Te)e!=="avatar-step"&&(er[e]=Zt);d.name={signup:Zt,...er};var Hr=r(({parent:e})=>e?.type,"getParentType"),R={type:"string",private:!0,required:!0,label:"Upper content type",...l({"from parent":Hr})};h.parentType={campus:{piscine:R},module:{piscine:R,exam:R,project:R},piscine:{quest:R,exam:R,raid:R,project:R},quest:{exercise:R},exam:{exercise:R}};a.rankDefinitionName=i("",{label:"Name",editable:!0,required:!0,primary:!0,check:r((e,t)=>{if(t.attrs.ranksDefinitions?.filter(o=>o.name===e)?.length>1)throw Error(`Name "${e}" is already set for a rank definition! A given name can only be attributed once to a rank.`)},"check")});a.rankDefinition=c({label:"Rank requirements",type:{name:a.rankDefinitionName,level:i(k,{label:"Level required",editable:!0,required:!0,check:r((e,t)=>{if(x(e,0,k),t.attrs.ranksDefinitions?.filter(o=>o.level===e)?.length>1)throw Error(`Level ${e} is already set for a rank definition! A given level can only be attributed once to a rank.`)},"check")}),milestone:i("",{label:"Milestone description",editable:!0})}});var It={label:"Rank requirements",instruction:"List of ranks access conditions",editable:!0,restrictive:!0,value:r((...e)=>[w(a.rankDefinition.type,t=>C(t,...e))],"value"),type:[a.rankDefinition],check:r(e=>{if(!e?.length||!Array.isArray(e))throw Error("Must be a non empty array")},"check")};d.ranksDefinitions={module:It,piscine:It};var ie={label:"Registration duration (to an event)",required:!0,editable:!0,check:r(e=>Ae(e*6e4,1*6e4,365*864e5),"check")};d.registrationDuration={exam:i(1.5*864e5/6e4,ie),module:i(30*864e5/6e4,ie),interview:i(2*6048e5/6e4,ie),piscine:i(30*864e5/6e4,ie),raid:i(1.5*864e5/6e4,ie)};var Kr=`https://${process.env.DOMAIN}/git/`,Qr=r(({attrs:e})=>`${Kr}${e.repositoryPath}`,"getRepositoryURL"),_e={label:"Repository URL",type:"string",required:!0,private:!0,...l({"from gitea user account":Qr})};d.repository={exercise:_e,project:_e,raid:_e};var tr=r(({group:e,parent:t})=>(e||(e=t?.group),e&&(e.captainLogin||e.captain?.login)),"getCaptainLogin"),Yr=r(({name:e,group:t,parent:n},o)=>`${tr({group:t,parent:n})||o.login}/${e}`,"getRepositoryPath"),Jr=r(({attrs:e,parent:t,group:n},o)=>{let s=tr({parent:t,group:n});return s?`${s}/${t.path.replace(/\/+/g,"-")}`:`${o.login}/${e.rootName}`},"getExerciseRepositoryPath"),Fe={label:"Repository path",type:"string",required:!0,private:!0,...l({"from captain":Yr})};d.repositoryPath={exercise:{...Fe,...l({"from captain":Jr})},project:Fe,raid:Fe};d.requiredAuditRatio={project:i(.5,{label:"Audit ratio required to begin the project",instruction:"From 0 to 2 (1 being the perfect balance of audits)",required:!0,editable:!0,options:[...Array(21)].map((e,t)=>Math.round(t*.1*10)/10),check:r(e=>Se(e,0,2),"check")})};a.pathwaysRequirementObjects={label:"Multiple content choices",instruction:"Adding this will create a new path way for the project being edit.",check:r((e,t)=>{Yt(e.flat(),t)},"check"),required:!1,editable:!0,type:[{...a.objectRootRelativePath,label:"Content relative path (optional)"}],value:r((...e)=>{let t=a.objectRootRelativePath.options(...e)?.[0];return t?[t]:[]},"value")};var be=c({...Xr,type:{skills:{...rt,label:"Skills required",instruction:"Necessary skill level to unlock the current content",description:"Define the skills and tier required to unlock the current content. The skill tracker button opens a modal where you can visualize the contents that reward the selected skill"},objects:{...a.sharedObjectList,value:r((...e)=>{let t=a.objectRootRelativePath.options(...e)?.[0],n=a.pathwaysRequirementObjects.value(...e);return t?[t,n]:[]},"value"),type:[a.objectRootRelativePath,a.pathwaysRequirementObjects],instruction:"Content required to unlock the current one"}}});h.requirements={module:{project:be,piscine:be},campus:{piscine:{hidden:!0,...be},module:{hidden:!0,...be}}};var me=i("",{label:"Resume",editable:!0,...P});d.resume={"module-registration":me,"piscine-registration":me,"form-step":me,interview:me};var Zr=r(({attrs:e})=>e.baseSkills,"getBaseSkills"),We=r(({attrs:e})=>e.baseXp,"getBaseXp"),ei=r(({attrs:e})=>e.inScope?e.baseXp:0,"getScopedBaseXp");a.skills={...l({"collect skills":Zr}),label:"Skills",required:!0};var we={private:!0,required:!0,label:"Reward conditions",instruction:"Conditions to collect xp and skills when succeeded"},fe=c({type:{skills:a.skills,xp:{...l({"collect xp in scope":ei}),label:"XP",required:!0}},...we});h.rewards={piscine:{raid:c({type:{skills:a.skills,xp:{...l({"collect xp":We}),label:"XP",required:!0}},...we}),project:fe},module:{piscine:c({type:{skills:a.skills,xp:{...l({"collect xp":We}),label:"XP",required:!0}},...we}),project:fe},campus:{piscine:c({type:{skills:a.skills,xp:{...l({"collect xp":We}),label:"XP",required:!0}},...we})},quest:{exercise:fe},exam:{exercise:fe}};var ti=r(({parent:e})=>{let{attrs:t,name:n,type:o,id:s,path:u}=e;return o!=="campus"?{attrs:{eventId:t.eventId},name:n,type:o,id:s,path:u}:void 0},"rewardParent");h.rewardsTarget={module:{piscine:{type:"object",label:"Target of the rewards",instruction:"Content to which rewards are attributed",required:!0,...l({"parent event if exists":ti})}}};var ri=r(({parent:e})=>{for(;e;){if(e.type==="module"||e.type==="piscine")return e.key;e=e.parent}return""},"getRootName"),ae={type:"string",private:!0,...l({"root content key":ri}),required:!0,label:"Root key"};h.rootName={quest:{exercise:ae},exam:{exercise:ae},module:{project:ae},piscine:{project:ae,raid:ae}};var ii=r(({parent:e})=>{for(;e;){if(e.type==="module"||e.type==="piscine")return e.path;e=e.parent}},"getRootPath"),j={type:"string",required:!0,private:!0,...l({"root content path":ii}),label:"Root path"};h.rootPath={module:{project:j,piscine:j,exam:j},piscine:{project:j,raid:j,exam:j,quest:j},quest:{exercise:j},exam:{exercise:j}};var ai=r(e=>lt(e.attrs.scopeStart,e),"questScopeEnd"),ni=r(({event:e})=>e&&Ce(e.endAt),"getEventScopeEnd"),rr={type:"number",required:!0,private:!0},Xe={...rr,label:"Active scope end",...l({"when event ends":ni})},Ue={...rr,label:"Reward scope end",...l({"when extra duration ends":ai})};h.scopeEnd={piscine:{raid:Xe,exam:Xe,quest:Ue,project:Ue},module:{project:Ue,exam:Xe}};var oi=i(0,{label:"Extra duration (for reward scope)",editable:!0,check:r(e=>Ae(e*864e5,0,50*864e5),"check")});h.scopeExtraDuration={piscine:{quest:oi}};var si=r(({attrs:e})=>e.start,"getScopeStart"),ir={type:"number",required:!0,private:!0,...l({"from start date":si})},Be={...ir,label:"Active scope start"},Ge={...ir,label:"Temporal-window & reward scope start"};h.scopeStart={piscine:{quest:Ge,project:Ge,raid:Be,exam:Be},module:{exam:Be,project:Ge}};var li=r(({parent:e})=>e?.attrs.special,"getSpecial");d.special={quest:i(!1,{label:"Activate hackathon mode",editable:!0,restrictive:!0}),exercise:{label:"In hackathon mode",type:"boolean",required:!0,...l({"activated with the quest":li})}};var it=r(e=>{let t=ur(e,cr),n=t?.event;if(n){let o=Ce(n.startAt);return t===e?o:je(o,e)}if(e.parent)return je(e.parent.attrs.start,e)},"getStart"),D={label:"Start date",type:"number",required:!0,private:!0,...l({"from start date of event":it})},Ct={...D,...l({"starts with module":it})},ui=r(({parent:e,attrs:t})=>e?.attrs.start+t.delay,"getExerciseStart"),ci={...D,...l({"from temporal-window (if in hackathon mode)":ui})};h.start={campus:{module:D,piscine:D},module:{exam:D,piscine:D,project:Ct},piscine:{raid:D,exam:D,quest:{...D,...l({"from temporal-window":it})},project:Ct},quest:{exercise:ci}};var ne=i(0,{label:"Starts after a delay of (within the event)",editable:!0,required:!0});h.startAfter={module:{piscine:ne,exam:ne},piscine:{exam:ne,raid:ne},campus:{piscine:ne}};var ar=r(({prev:e})=>e?e.attrs.duration+e.attrs.startDay:1,"getStartDay"),di=r(({parent:e,prev:t})=>e.type==="piscine"?ar({prev:t}):void 0,"getExamStartDay"),ye=i(1,{label:"Start day n\xB0",...l({"from end of previous content temporal-window":ar}),required:!0,private:!0});h.startDay={piscine:{exam:{...ye,...l({"from end of previous content temporal-window":di})},quest:ye,raid:ye,project:ye}};var O=r(e=>{if(e?.isDone)return e.grade>=1?"succeeded":"failed"},"getProgressStatus"),pi=r(e=>{let{attrs:t,progress:n,parent:o}=e,s=O(n);if(s)return s;if(!o)return"available";if(o.attrs.status==="blocked")return"blocked";let{group:u}=t;if(u<=1)return o.attrs.status;let p=z(o).filter(v=>v.attrs.group<u),m=Math.max(...p.map(v=>v.attrs.group));return p.filter(v=>v.attrs.group===m).some(v=>v.attrs.status==="succeeded")?"available":"blocked"},"examExerciseStatus"),hi=r(e=>{let{prev:t,attrs:n,progress:o,parent:s}=e,u=O(o);if(u)return u;if(!s)return"available";if(s.attrs.status==="blocked")return"blocked";let p=Date.now();if(n.special)return p<n.start?"blocked":p>n.duration+n.start?"failed":"available";if(t&&t.attrs.status!=="succeeded")return"blocked";let m=Date.now()+864e5;if(s.prev?.type==="project"&&s.prev?.attrs.status!=="succeeded"&&s.prev?.attrs.scopeEnd>m)return"blocked";let b=Lt(s.prev,Pt);return b&&b.attrs.status!=="succeeded"&&b.attrs.scopeEnd>m?"blocked":"available"},"questExerciseStatus"),jt=r((e,t)=>{try{return X(e,t)?.attrs.status==="succeeded"}catch{return!0}},"isPathStatusSucceeded"),Dt=r((e,t)=>{let o=e.parent.children[t.slice(3)]?.versions?.map(({key:s})=>`../${s}`);return o?.length?[t,...o]:[t]},"addVersionChain"),nr=r((e,t)=>{if(!e)return!0;let{objects:n}=e;if(!n||!n.length)return!0;let o=n.map(b=>Array.isArray(b)?b.flatMap(v=>Dt(t,v)):Dt(t,b)),s=o.filter(b=>!Array.isArray(b)&&!!b),u=o?.filter(b=>Array.isArray(b)&&!!b),p=s.every(b=>jt(b,t)),m=u?.every(b=>b.some(v=>jt(v,t)));return m!==void 0?p&&m:p},"hasSucceededRequiredObjects"),Ie=r(({requirements:e,object:t,user:n,progress:o})=>{if(o&&Object.keys(o).length||!e)return!0;let s=pt(e.skills,n.skills);return nr(e,t)&&s},"meetsRequirements"),bi=r(e=>{let{prev:t,parent:n,attrs:o}=e;return!n.progress||!o.hasStarted||Date.now()<o.scopeEnd&&or(t)?"blocked":"available"},"projectInPiscineStatus"),Ye=r((e,t)=>{let{attrs:n,progress:o}=e,{requirements:s,parentType:u}=n,p=O(o);return p||(Ie({object:e,requirements:s,user:t,progress:o})?u==="piscine"?bi(e):"available":"blocked")},"projectStatus"),or=r(e=>e?.attrs.inScope&&e?.attrs.status!=="succeeded","notSucceeded"),mi=r(e=>{for(let t of e){if(!Ee(t))continue;if(!t.progress)return"failed";let n=O(t.progress);if(n&&n!=="succeeded")return n}return"succeeded"},"successStatus"),ze=r(e=>{let{prev:t,parent:n,attrs:o,progress:s}=e;if(!n||!n.progress||!o.hasStarted||!o.special&&Date.now()>o.scopeEnd&&or(Lt(t,Pt)))return"blocked";let u=Object.values(e.children||{});return u.length?mi(u):O(s)||"available"},"questStatus"),fi=r((e,t)=>{let{progress:n,attrs:o}=e,{requirements:s}=o;return Ie({object:e,requirements:s,user:t,progress:n})},"getMeetsRequirements"),Je=r((e,t)=>{let{progress:n,event:o,attrs:s}=e,{requirements:u}=s,p=O(n);return p||(!Ie({object:e,requirements:u,user:t,progress:n})&&!o?.registeredPosition?"blocked":"available")},"getPiscineStatus"),yi=r(e=>{let{progress:t,event:n,attrs:o}=e,s=O(t);return s||(!n||Date.now()<o.start?"blocked":"available")},"raidStatus"),gi=r(()=>"available","alwaysOpen"),vi=r((e,t)=>t?.event&&(e==="interview"||e==="piscine-registration")&&new Date(t.event.endAt)>Date.now(),"isWaitingEndOfEvent"),xi=r(e=>{let t=e.type.endsWith("-registration"),n=e.type.split("-")[0],o=t?ut(e.parent.parent.children,n):e;if(!o)return"blocked";let s=o.lastProgress,u=O(s);return u==="succeeded"&&vi(e.type,o.lastProgress)?"available":u||(!e.prev||e.prev&&e.prev.attrs.status==="succeeded"?"available":"blocked")},"onboardingStatus"),oe={type:"string",label:"Unlock system",...l({"previous step validated":xi}),options:["blocked","available","succeeded","failed"],required:!0},I={type:"string",label:"Unlock system and result status",required:!0,options:["blocked","available","succeeded","failed"]};h.status={campus:{onboarding:{type:"string",private:!0,required:!0,...l({"always open":gi})},piscine:{...I,...l({"by requirements and event":Je})}},onboarding:{administration:oe,games:oe,"piscine-registration":oe,"module-registration":oe,interview:oe},piscine:{exam:{...I,...l({"by event":ze})},quest:{...I,...l({"by scope":ze})},raid:{...I,...l({"by event":yi})},project:{...I,editable:!0,editableDefaultValue:"available",...l({"by requirements":Ye})}},quest:{exercise:{...I,editable:!0,editableDefaultValue:"available",...l({"one by one":hi})}},exam:{exercise:{...I,editable:!0,editableDefaultValue:"available",...l({"one by one (grouped by difficulty)":pi})}},module:{project:{...I,editable:!0,editableDefaultValue:"available",...l({"by requirements":Ye})},piscine:{...I,...l({"by requirements and event":Je})},exam:{...I,...l({"by event":ze})}}};a.meetRequirements=i(!1,{label:"User meet requirement",restrictive:!0,required:!0,hidden:!0,...l({"by requirements":fi})});h.meetsRequirements={module:{piscine:a.meetRequirements,project:a.meetRequirements}};var wi=r(e=>`/markdown/root/public/${`subjects/${Vt(e)}/README.md`}`,"getSubject"),He=i("",{label:"Subject URL",editable:!0,required:!0,...l({"README.md in subject folder":wi})});d.subject={exercise:He,project:He,raid:He};var ge=i("",{editable:!0,...P});a.teamworkRankName=i("",{label:"Rank name",type:"string",editable:!0,required:!0,primary:!0,check:r((e,t)=>{let{teamworkRanks:n}=t.attrs;if(n?.filter(s=>s.name===e)?.length>1)throw Error(`Name "${e}" is already set for a teamwork rank definition! A given name can only be attributed once to a rank.`)},"check")});a.teamworkRankParticipations=i(0,{label:"Group Participations",instruction:"The number of users the student has to work with, to unlock this rank.",editable:!0,required:!0,options:q(150,0),type:"number",check:r((e,t)=>{if(!Number.isInteger(e))throw Error("Must be a whole number");if(t.attrs.teamworkRanks?.filter(o=>o.groups===e)?.length>1)throw Error(`There is already a rank with ${e} users required for the rank`)},"check")});a.teamworkRanks=c({type:{name:a.teamworkRankName,groups:a.teamworkRankParticipations}});d.teamworkRanks={campus:{label:"Teamwork ranks",instruction:"List of teamwork ranks",type:[a.teamworkRanks],required:!0,editable:!0,value:r((...e)=>[w(a.teamworkRanks.type,t=>C(t,...e))],"value"),check:r(e=>{if(!e?.length||!Array.isArray(e))throw Error("Must be a non empty array")},"check")}};d.text={"upload-step":{...ge,label:"Resume"},"sign-step":{...ge,label:"Text to agree to",required:!0},"contact-validation-step":{...ge,label:"Resume"},"avatar-step":{...ge,label:"Resume"}};a.timelineChunk=c({label:"Month guideline",type:{month:i(1,{label:"Month",editable:!0,required:!0,primary:!0,check:r((e,t)=>{if(x(e,1,120),t.attrs.timeline?.filter(o=>o.month===e)?.length>1)throw Error(`Month ${e} is set for different timeline guidelines! A given month can only be defined once.`)},"check")}),minLevel:i(0,{label:"Minimum level",instruction:"Minimum level to be considered on time",editable:!0,required:!0,check:r(e=>x(e,0,k),"check")}),expectedLevel:i(0,{label:"Expected level",editable:!0,required:!0,instruction:"Recommended level the user should achieve",check:r(e=>x(e,0,k),"check")}),checkpointLevel:i(0,{label:"Checkpoint level",editable:!0,required:!0,instruction:"Recommended checkpoint level the user should achieve",check:r(e=>x(e,0,100),"check")}),rank:i("",{label:"Rank",editable:!0,instruction:"Recommended rank the user should achieve",options:r(e=>e.attrs.ranksDefinitions?.map(t=>t.name),"options"),check:r((e,t)=>{if(!t.attrs.ranksDefinitions?.length)throw Error("Must match an existing rank name, but ranks definitions are not set.");let n=t.attrs.ranksDefinitions?.map(({name:o})=>o);if(!n.includes(e))throw Error(`Must match one of the following existing rank names: ${n.join(", ")}.`)},"check")}),skills:c({label:"Skills",instruction:"Recommended skills the user should get",editable:!0,value:{},type:w(Ne,({name:e,type:t,description:n})=>({label:e,instruction:t,description:n,editable:!0,type:"number",value:1,options:q(100,1),check:r(o=>x(o,1,100),"check")}))}),notes:i("",{label:"Other notes",instruction:"Write any other notes or expectations the user should aim for",editable:!0})}});var Mt={label:"Timeline of the curriculum",instruction:"Create a timeline with monthly expectations for users to better track their progression over time",value:r((...e)=>[w(a.timelineChunk.type,t=>C(t,...e))],"value"),editable:!0,restrictive:!0,type:[a.timelineChunk],check:r(e=>{if(!e?.length||!Array.isArray(e))throw Error("Must be a non empty array")},"check")};d.timeline={module:Mt,piscine:Mt};a.adminSelectionValidation=c({type:{type:i("admin_selection",{required:!0,private:!0,primary:!0,label:"Type",options:["admin_selection"]})},label:"Admin selection",description:"Admins manually select which submissions move forward."});var qi=r(({attrs:e})=>e.language&&`ghcr.io/01-edu/test-${e.language}`,"getTesterImage");a.testerValidation=c({label:"Automatic testing",description:"The solution submitted by the user will be automatically tested and a result will immediately be available.",type:{type:i("tester",{required:!0,private:!0,label:"Type",options:["tester"]}),testImage:{type:"string",label:"Docker image",required:!0,editable:!0,primary:!0,instruction:"used to run the tests",...l({"from language":qi})},cooldown:i(3*6e4,{required:!0,editable:!0,label:"Delay between two submit"})}});var at={type:"object",required:!0,label:"Audited by",instruction:"Match groups with auditors"},ki=r(({attrs:e})=>({campus:{_eq:e.campus}}),"usersOfCampusWithAdmins"),Ei=r(({attrs:e})=>({campus:{_eq:e.campus},_not:{roles:{slug:{_in:["admin",`campus_admin_${e.campus}`]}}}}),"userInCampus"),Si=r(({attrs:e})=>({events:{eventId:{_eq:e.eventId}}}),"usersInEventWithAdmins"),Ai=r(({attrs:e})=>({_not:{roles:{slug:{_in:["admin",`campus_admin_${e.campus}`]}}},events:{eventId:{_eq:e.eventId}}}),"userInEvent"),nt={id:{_eq:1}},Ri=r(({event:e})=>({_or:[{labels:{label:{name:{_eq:`auditorFor${e?.id}`}}}},nt]}),"userAuditorForEvent"),Ii=r(({attrs:e})=>({_or:[{private:{roles:{slug:{_eq:`campus_admin_${e.campus}`}}}},nt]}),"isCampusAdmin"),Ci=r(()=>nt,"noAttribution"),ji=r(e=>`/markdown/raw/root/public/${`subjects/${Vt(e)}/audit/README.md`}`,"getAuditPath"),ot={required:!0,editable:!0,type:"string",label:"Audit form URL",instruction:"List of questions asked by the auditor during the audit. The URL should return raw markdown",...l({"README in audit folder":ji})};a.adminAuditValidationDelay=i(0,{label:"Audit duration",editable:!0,required:!0,instruction:"Time that the admins have to complete an audit before it expires"});a.adminAuditValidationRequired=i(1,{label:"Number required",required:!0,instruction:"Minimum of audits required",check:r(e=>{if(e<1)throw Error("must be at least one")},"check")});a.adminAuditValidationRatio=i(1,{label:"Ratio",required:!0,instruction:"Proportion of extra audits generated",check:r(e=>{if(e<1)throw Error("must be at least one")},"check")});a.adminAuditValidation=c({label:"Admin audit",description:"Only admins can evaluate this content.",type:{type:i("admin_audit",{required:!0,private:!0,primary:!0,label:"Type",options:["admin_audit"]}),delay:a.adminAuditValidationDelay,required:a.adminAuditValidationRequired,ratio:a.adminAuditValidationRatio,matchWhere:{...at,...l({"an admin of same campus":Ii,"manual attribution":Ci})},form:ot}});a.userAuditValidationDelay=i(2*6048e5/6e4,{label:"Audit duration",required:!0,editable:!0,instruction:"Time that the users have to complete an audit before it expires"});a.userAuditValidationRequired=i(5,{label:"Number required",required:!0,editable:!0,instruction:"Minimum of audits required",check:r(e=>{if(e<1)throw Error("must be at least one")},"check")});a.userAuditValidationRatio=i(2,{label:"Ratio",required:!0,editable:!0,instruction:"Proportion of extra audits generated",check:r(e=>{if(e<1)throw Error("must be at least one")},"check")});a.matchInfluence=c({label:"Audit Attribution Influence",editable:!0,required:!0,instruction:"Adjust the weights in the match algorithm to influence how audits are attributed",type:{auditsRatio:i(1,{label:"Current Audit Ratio",editable:!0,required:!0}),auditsAssigned:i(1,{editable:!0,required:!0,label:"Fewest Pending Audits"}),levelProximity:i(1,{editable:!0,required:!0,label:"Level Proximity"}),lastAuditAttributed:i(1,{editable:!0,required:!0,label:"Last Audit Attributed"})}});a.userAuditValidation=c({label:"User audit",description:"Users will be assigned as auditors to peer-review the project submission. You can customise the rules of audit attribution and requirements for the group to succeed.",type:{type:i("user_audit",{required:!0,private:!0,primary:!0,label:"Type",options:["user_audit"]}),delay:a.userAuditValidationDelay,required:a.userAuditValidationRequired,ratio:a.userAuditValidationRatio,matchInfluence:a.matchInfluence,matchWhere:{...at,...l({"any user in same campus":Ei,"any user in same event":Ai,"any user in same campus (with admins)":ki,"any user in same event (with admins)":Si})},form:ot,preQuestions:{editable:!0,type:"array",label:"Pre questions",instruction:"Define a set of questions that appear before the main audit. Go to \u201Cedit & preview\u201D mode to visualize the question content"},postQuestions:{editable:!0,type:"array",label:"Post questions",instruction:"Define a set of questions that appear after the main audit. Go to \u201Cedit & preview\u201D mode to visualize the question content"}}});a.raidAuditorValidation=c({label:"Dedicated auditors for event",description:"Define a list of users that will audit the content. This list is created on each event related to this content, and needs to be available before the event ends.",type:{type:i("dedicated_auditors_for_event",{required:!0,private:!0,primary:!0,label:"Type",options:["dedicated_auditors_for_event"]}),delay:a.adminAuditValidationDelay,required:a.adminAuditValidationRequired,ratio:a.adminAuditValidationRatio,matchWhere:{...at,...l({"any user labelled as event's auditor ":Ri})},form:ot}});var se={label:"Evaluations required",instruction:"Define the evaluation methods for this content",check:r(e=>{if(!e.length)throw Error("must have at least one element")},"check"),required:!0,editable:!0};d.validations={project:{...se,type:[a.userAuditValidation],value:r((...e)=>[w(a.userAuditValidation.type,t=>C(t,...e))],"value")},raid:{...se,type:[a.adminAuditValidation,a.raidAuditorValidation],maxElements:1,value:r((...e)=>[w(a.adminAuditValidation.type,t=>C(t,...e))],"value")},exercise:{...se,type:[a.testerValidation],value:r((...e)=>[w(a.testerValidation.type,t=>C(t,...e))],"value")},piscine:{...se,type:[a.adminSelectionValidation],value:r((...e)=>[w(a.adminSelectionValidation.type,t=>C(t,...e))],"value")},interview:{...se,type:[a.adminSelectionValidation],value:r((...e)=>[w(a.adminSelectionValidation.type,t=>C(t,...e))],"value")}};d.videos={quest:i("https://www.youtube.com/",{type:"string",label:"Videos URL",editable:!0,check:Wt})};d.legalText={"avatar-step":i("Please make sure to upload a photograph that complies with the training center's internal regulations and standards of decency. This photo will be visible to the teaching staff to support essential individual academic monitoring, as well as to other learners to facilitate peer-to-peer collaboration. Any request for deletion or modification must be submitted to the management.",{type:"string",label:"Legal text",editable:!1,required:!0})};var Di=r(({attrs:e})=>{if(!e.startDay)return;let t=e.startDay/7;return Math.ceil(t)},"getWeek"),ve=i(1,{label:"Week n\xB0",required:!0,private:!0,...l({"from day n\xB0":Di})});h.week={piscine:{exam:ve,quest:ve,raid:ve,project:{...ve,value:1,functions:void 0,required:!1,private:!1}}};var Mi=r(({object:e,value:t})=>{let n=Object.values(e.parent.children).filter(({type:o,key:s})=>s!==e.key&&o==="raid");for(let{attrs:o}of n)if(o.branch===t)throw Error("Raids should have their unique branch")},"checkRaidLimitation"),sr=r(({object:e,value:t,limit:n=9})=>{if(Object.values(e.parent.children).filter(({key:s,attrs:u})=>s!==e.key&&u.branch===t).length+1>n)throw Error(`The limit of content in a branch is ${n}`)},"checkBranchLimitation"),lr={label:"Base Branch",instruction:"From 1 to 4",description:"Changing branch can disrupt the piscine timeline.",required:!0,editable:!0,hidden:!0},Li=r(e=>{let n={};for(let s of Object.values(e.parent.children||{})){let u=s.attrs.branch;n[u]=(n[u]||0)+1}return[1,2,3,4].filter(s=>(n[s]||0)<9)},"getBranchOptions"),xe=i(1,{...lr,options:Li,check:r((e,t)=>{Se(e,1,4),sr({object:t,value:e})},"check")}),Pi=i(1,{...lr,options:[1,2,3,4],check:r((e,t)=>{Se(e,1,4),Mi({object:t,value:e}),sr({object:t,value:e})},"check")});h.branch={piscine:{quest:xe,project:xe,raid:Pi,sharedBranch:xe,exam:xe}};var Ke=i(0,{required:!0,private:!0}),Oi=r(({parent:e})=>e.attrs.xpIndex,"parentXpIndex"),Ti=r(({prev:e,parent:t})=>e?(e.attrs.xpIndex||0)+(et(e)||1):t?.attrs.xpIndex||0,"getXpIndex"),_={required:!0,private:!0,type:"number",...l({"from previous xpIndex and XP coefficient (or parent if exam or no prev)":Ti})};h.xpIndex={campus:{module:Ke,piscine:Ke},module:{piscine:Ke,project:_,exam:_},piscine:{exam:_,project:_,quest:_,raid:_},quest:{exercise:_},exam:{exercise:{required:!0,private:!0,type:"number",...l({"from parent xpIndex":Oi})}}};var Ui={hasSucceededRequiredObjects:nr,projectStatus:Ye,getPiscineStatus:Je,meetsRequirements:Ie};export{k as a,qe as b,d as c,h as d,a as e,Ie as f,ji as g,Ui as h};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as n}from"./chunk-EI7MMDWY.js";var A=1e3,u=6e4,D=36e5,d=864e5,E=6048e5,s=n(t=>new Date(t).getTime(),"numTime"),a=n(t=>t?new Date(t).toISOString():Number.NaN,"numToISOString"),c=n((t,e)=>{let{startAfter:r=0,eventStartDelay:o=0,registrationDuration:i}=e.attrs;return s(t)+(r-(o+i))*6e4},"getChildRegistrationStartAt"),x=n((t,e)=>{let{startAfter:r=0,eventStartDelay:o=0}=e.attrs;return s(t)+(r-o)*6e4},"getChildRegistrationEndAt"),g=n((t,{attrs:e})=>s(t)+(e.startAfter||0)*6e4,"getChildEventStartAt"),p=n((t,e)=>{let{startAfter:r=0,eventDuration:o}=e.attrs;return s(t)+(r+o)*6e4},"getChildEventEndAt"),I=n((t,e)=>({startAt:a(c(t,e)),endAt:a(x(t,e)),eventJoinedAt:a(g(t,e)),eventEndAt:a(p(t,e))}),"getChildEventInfo"),N=n(({eventJoinedAt:t},e)=>s(t)+e.attrs.eventDuration*6e4,"getEndOfEvent"),S=n((t,e)=>s(t)+e.attrs.delay,"getQuestStartAt"),v=n((t,e)=>{let{scopeExtraDuration:r,duration:o}=e.attrs;return t+((r||0)+(o||1))*864e5},"getQuestExtraEndAt"),C=n(t=>new Date(t).getTime()<Date.now(),"isFinished");export{A as a,u as b,D as c,d,E as e,s as f,a as g,c as h,x as i,g as j,p as k,I as l,N as m,S as n,v as o,C as p};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as T,d as j}from"./chunk-NQCTSDJE.js";import{W as x,X as h}from"./chunk-LDUPRVV4.js";import{a as c}from"./chunk-EI7MMDWY.js";var $={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",sq:"Albanian",am:"Amharic",ar:"Arabic",hy:"Armenian",as:"Assamese",ay:"Aymara",az:"Azerbaijani",ba:"Bashkir",eu:"Basque",bn:"Bengali (Bangla)",dz:"Bhutani",bh:"Bihari",bi:"Bislama",br:"Breton",bg:"Bulgarian",my:"Burmese",be:"Byelorussian (Belarusian)",km:"Cambodian",ca:"Catalan",zh:"Chinese (Simplified)",co:"Corsican",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",eo:"Esperanto",et:"Estonian",fo:"Faeroese",fa:"Farsi",fj:"Fiji",fi:"Finnish",fr:"French",fy:"Frisian",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Gaelic (Manx)",ka:"Georgian",de:"German",el:"Greek",kl:"Greenlandic",gn:"Guarani",gu:"Gujarati",ha:"Hausa",he:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",kn:"Kannada",ks:"Kashmiri",kk:"Kazakh",rw:"Kinyarwanda (Ruanda)",ky:"Kirghiz",rn:"Kirundi (Rundi)",ko:"Korean",ku:"Kurdish",lo:"Laothian",la:"Latin",lv:"Latvian (Lettish)",li:"Limburgish ( Limburger)",ln:"Lingala",lt:"Lithuanian",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mo:"Moldavian",mn:"Mongolian",na:"Nauru",ne:"Nepali",no:"Norwegian",oc:"Occitan",or:"Oriya",om:"Oromo (Afan, Galla)",ps:"Pashto (Pushto)",pl:"Polish",pt:"Portuguese",pa:"Punjabi",qu:"Quechua",rm:"Rhaeto-Romance",ro:"Romanian",ru:"Russian",sm:"Samoan",sg:"Sangro",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Siswati",sk:"Slovak",sl:"Slovenian",so:"Somali",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uighur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",vi:"Vietnamese",vo:"Volap\xFCk",cy:"Welsh",wo:"Wolof",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",zu:"Zulu"},H=Object.fromEntries(Object.entries($).map(([t,e])=>[e,t]));var S={boolean:c(t=>typeof t=="boolean","boolean"),number:c(t=>typeof t=="number","number"),string:c(t=>typeof t=="string","string"),object:c(t=>typeof t=="object"&&t!==null,"object"),array:Array.isArray},C=c(t=>Array.isArray(t)?"array":typeof t=="object"&&t!==null?t.type||"object":typeof t,"determinType"),b=c((t,e,i,r)=>{let{type:n,check:a,options:o}=t;if(e==null){if(!t.required||t.value!==void 0)return!0;throw Error(`missing value for required attribute ${r}`)}if(!n)throw Error(`attribute type definition is missing for ${r}`);if(e?.type==="function"){if(t.functionsByName[e.name])return!0;throw Error(`function associated not allowed for ${r}`)}if(a?.(e,i,r),o){let l=typeof o=="function"?o(i,e):o;if(l.length===1){if(l[0]!==e)throw Error(`${r} must be ${l[0]} but was ${e}`)}else if(!l.includes(e))throw Error(`invalid option for ${r}: should be included in ${l.join(", ")}`)}if(S[n]){if(!S[n](e))throw Error(`Expect ${n} for ${r}`);return!0}if(Array.isArray(n)){if(!Array.isArray(e))throw Error(`invalid attribute value: expects an array for ${r}`);let l=n.length===1&&n[0],p=!l&&Object.fromEntries(n.map(u=>[Array.isArray(u.type)?"array":u.type?.type?.value||u.type,u]));for(let[u,m]of e.entries()){let y=Error("checks failed for all types");y.index=u,y.key=r,y.label=t.label;let E=l||p[C(m)];if(!E)throw y.details={label:"Unknown structure",err:Error("no type matches the value")},y;try{b(E,m,i,r)}catch(O){throw y.details=O.details||{label:E.label||O.label,err:O},y}}return!0}if(typeof n!="object")throw Error("invalid attribute type definition");if(typeof e!="object"||e===null)throw Error("invalid attribute value: expects an object");let s=Object.entries(n),f=Object.keys(e).find(l=>!n[l]);if(f)throw Error(`${f} is invalid.`);for(let[l,p]of s)b(p,e[l],i,l);return!0},"typeChecker"),z=x(T,([t,e])=>[t,h(e,i=>({...i,check:c((r,n)=>b(i,r,n,t),"check")}))]),M=x(j,([t,e])=>[t,h(e,i=>h(i,r=>({...r,check:c((n,a)=>b(r,n,a,t),"check")})))]),P={codeEditor:{enabled:{}},validations:{type:["admin_audit","tester","dedicated_auditors_for_event","user_audit"],ratio:{},required:{},matchInfluence:{},cooldown:{},preQuestions:{},postQuestions:{},matchWhere:{}}},J=c((t,e)=>{let i=I(t,e),r=q({type:e}),n={...i,...r};return k(n,P)},"getAllBulkAttrs"),k=c((t,e)=>{if(!t)return{};if(Array.isArray(t.type)){let{type:i,...r}=t,n=i.map(a=>k(a,e)).filter(({type:a})=>e.type.includes(a.type.value));return{...r,type:n}}if(t.type&&typeof t.type=="object"){let{type:i,...r}=t,n={type:{},...r},a=Object.keys(i);for(let o of a)e?.[o]&&(n.type[o]=i[o]);return n}if(typeof t=="object"&&!t.type){let i={},r=Object.keys(t);for(let n of r)e[n]&&(i[n]=k(t[n],e[n]));return i}return null},"filterBulkAttrs"),g={},R=Object.entries($);for(let[t,e]of Object.entries(z))for(let[i,r]of Object.entries(e)){let n=g[i]||(g[i]={});n[t]=r;let{label:a,...o}=r;if(r.functionsByName?.translate)for(let[s,f]of R){let l=`${a} - ${f}`;n[`${t}-${s}`]={...o,label:l,lgCode:s,required:!1}}}var A={};for(let[t,e]of Object.entries(M))for(let[i,r]of Object.entries(e))for(let[n,a]of Object.entries(r)){let o=A[i]||(A[i]={}),s=o[n]||(o[n]={});s[t]=a}var G=h(g,Object.entries),K=h(A,t=>h(t,Object.entries)),w=c(t=>G[t.type]||[],"getDefaultAttrsEntries"),D=c((t,e)=>K[t]?.[e]||[],"getDefaultRelAttrsEntries"),q=c(t=>g[t.type],"getDefaultAttrs"),I=c((t,e)=>A[t]?.[e],"getDefaultRelAttrs"),L=c((t,e)=>{if(t==null)return e.required&&e.value;if(t.type==="function")return e.functionsByName?.[t.name]},"findDefaultOrNamedFunction"),N=c((t,e,i,r,n)=>{if(e==null)return;let a=L(e[t],i);typeof a=="function"&&(n?Object.defineProperty(e,t,{get:c(()=>a(r,n(),t),"get"),enumerable:!0}):a.name==="translate"&&(e[t]=e[`${t}-en`]))},"applyDefs"),B=c((t,e,i,r,n)=>{let a=e[t]?.type==="function";if(Array.isArray(i.type)&&e[t]&&!a){let o=i.type.length>1&&Object.fromEntries(i.type.map(s=>[s.type.type?.value||s.type,s]));for(let s=0;s<e[t].length;s++){let f;if(o){let l=typeof e[t][s]=="object",p=l&&!!o.object,u=!e[t][s].type||typeof e[t][s].type!="string",m=Object.keys(o).join(",").slice(0,-1);l&&u&&!p&&console.warn(`Type not allowed. Object item for ${t} array (#${s} item) must have one of these "type" property: ${m}.`),f=l?o[e[t][s].type]:o[typeof e[t][s]],!f&&!p&&console.warn(`Missing type definition. Object item for ${t} array (#${s} item) must have one of these "type" property: ${m}.`)}B(s,e[t],f||i.type[0],r,n)}}else if(typeof i.type=="object"&&e[t]&&!a)for(let[o,s]of Object.entries(i.type))B(o,e[t],s,r,n);else N(t,e,i,r,n)},"expandAttr"),F=c((t,e,i)=>{if(!t.children)return t.children={};if(!Object.keys(t.children).length)return;let n=w(t).filter(i);d(n,t,e);let a;for(let o of Object.values(t.children)){o.parent||(o.parent=t),a&&(a.next=o)&&(o.prev=a),a=o;let s=w(o),f=D(t.type,o.type),[l,p]=[s.filter(i),f.filter(i)];d(l,o,e),d(p,o,e),F(o,e,i)}},"partialExpandDynamicAttrs"),_=c((t,e)=>{if(!t.children)return t.children={};if(!Object.keys(t.children).length)return;let i=w(t);d(i,t,e);let r;for(let n of Object.values(t.children)){n.parent=t,r&&(r.next=n)&&(n.prev=r),r=n;let a=w(n),o=D(t.type,n.type);d(a,n,e),d(o,n,e),_(n,e)}},"expandDynamicAttrs"),d=c((t,e,i)=>{for(let[r,n]of t)e.attrs[r]===null&&console.warn(`value is null for ${e.name} - ${r} - ${e.id}`),B(r,e.attrs,n,e,i)},"processAttributes");export{z as a,M as b,J as c,k as d,g as e,A as f,w as g,D as h,q as i,I as j,F as k,_ as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as y,b as u}from"./chunk-XYW3ROIR.js";import"./chunk-NQCTSDJE.js";import{b as w,c as m}from"./chunk-K5Z4W5GV.js";import"./chunk-EOY6G4KE.js";import"./chunk-CBWHFDVB.js";import"./chunk-7ZTI6THC.js";import"./chunk-LDUPRVV4.js";import"./chunk-V47RDOUO.js";import"./chunk-727IHWVW.js";import{a as h}from"./chunk-EI7MMDWY.js";var b=h(n=>n.toLowerCase().replaceAll(/[^a-z0-9]+/g," ").trim().replaceAll(" ","-"),"normalize"),x=h(n=>{let{type:t,name:i,attrs:r,children:a,childrenAttrs:c,referencePath:e,...s}=n,[f]=Object.keys(s);if(f)throw Error(`Unexpected property ${f}, did you mean to define an attribute ?`);if(t==="campus")throw Error("Campuses can't be defined in definitions");if(!w.has(t))throw Error("Invalid type property");if(!i||typeof i!="string")throw Error("Invalid name property");if(!r||typeof r!="object"||Array.isArray(r))throw Error("Invalid attrs property");if(c)throw Error("childrenAttrs is no longer supported");for(let o of Object.keys(r||{})){if(u[o])throw Error(`Attr ${o} should be defined in the relation with its parent, not on the object itself.`);let p=y[o];if(!p)throw Error(`Undefined attr ${o}`);let l=p[t];if(!l){let d=Object.keys(p).join(", ");throw Error(`${t} does not match any of ${d} for attr ${o}`)}if(l.deprecated)throw Error(`attr ${o} deprecated: ${l.deprecated}`)}},"assertDef"),E=h(({name:n,type:t,attrs:i,children:r,referencePath:a},c,e)=>{if(e>100)throw Error("Unexpected very deep tree, maybe circular ?");let s={name:n,type:t,attrs:i,children:{},referencePath:a,parent:c};if(!r)return s;let f;for(let[o,{ref:p,...l}]of Object.entries(r)){let d=E(p,s,(e||0)+1);d.attrs={...d.attrs,...l},f&&(f.next=d),d.prev=f,s.children[o]=d}return s},"buildTree"),g=h((n,t,i)=>{if(!/^[a-z0-9-]*$/.test(t))throw Error(`Invalid key for child ${t} Kebab-case key suggestion: ${b(t)}`);let r=i.ref,{type:a}=r;if(!m[n.type].includes(a))throw Error(`Type ${a} ${t} is not a possible child`);if(n.referencePath===r.referencePath)throw Error(`Self reference in child ${t}`);for(let e of Object.keys(i)){if(e==="ref")continue;let s=y[e];if(s?.[a]?.restrictive)throw Error(`Attr ${e} should be defined on the object itself, not in the relation with its parent.`);let f=u[e];if(!s&&!f)throw Error(`Undefined attr ${e}`);let o=(f?.[n.type]||s)[a];if(!o){let p=Object.keys(s).join(", ");throw Error(`${a} does not match any of ${p} for attr ${e}`)}if(o.deprecated)throw Error(`attr ${e} deprecated: ${o.deprecated}`)}},"assertRelation"),$=h(n=>{for(let[t,i]of Object.entries(n.attrs))try{let r=u[t]?.[n.parent?.type]?.[n.type]||y[t][n.type];if(i?.type==="function"){if(!r.functionsByName?.[i.name])throw Error(`function ${i.name} not found for attr ${t}`)}else if(!r.check(i,n))throw Error(`wrong type for attr ${t}`)}catch(r){throw r.parentRef=n.parent?.referencePath,r.childRef=n.referencePath,r.value=i,r.key=t,r}for(let t of Object.values(n.children))$(t)},"checkAttrs"),v=h(n=>n.type==="exam","isExam"),P=h(n=>{let t={};for(let i of n.filter(v)){let r=0;for(let[a,c]of Object.entries(i.children))try{let{group:e}=c;if(!e)throw Error("missing exam group");let s=e-r;if(r=e,s>1)throw Error("exam must not have gaps in groups");if(s<0)throw Error("exercise must be sorted by group from lower to greater");let f=t[a];if(f==null)t[a]=e;else if(f!==e)throw Error("Exercise used in different exam groups")}catch(e){throw e.exam=i.referencePath,e.exercise=c.ref.referencePath,e}}},"assertExams"),O=h(async n=>{let t={},i=h(async([c,e])=>{let s;try{let o=t[c];if(s=await(o||(t[c]=n(c))),e&&(e.ref=s),o)return[]}catch(o){throw o.name=c,o}try{x(s)}catch(o){throw o.type=s.type,o.referencePath=s.referencePath,o}let f=Object.entries(s.children||{}).map(i);try{return[s,...(await Promise.all(f)).flat()]}catch(o){throw c&&(o.parents||(o.parents=[])).push(c),o}},"getDefs"),r=await i([]);for(let c of r)if(c.children)try{for(let e of Object.entries(c.children))g(c,e[0],e[1])}catch(e){throw e.type=c.type,e.referencePath=c.referencePath,e}let a=E(r[0]);return $(a),P(r),{definitions:r,root:a}},"checkAndBuildDefinitions");export{O as checkAndBuildDefinitions};
|
package/dist/event-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}from"./chunk-V47RDOUO.js";import"./chunk-EI7MMDWY.js";export{d as DAY,c as HOUR,b as MIN,a as SEC,e as WEEK,k as getChildEventEndAt,l as getChildEventInfo,j as getChildEventStartAt,i as getChildRegistrationEndAt,h as getChildRegistrationStartAt,m as getEndOfEvent,o as getQuestExtraEndAt,n as getQuestStartAt,p as isFinished,f as numTime,g as numToISOString};
|
package/dist/games-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as
|
|
1
|
+
import{D as d,c as o}from"./chunk-LDUPRVV4.js";import"./chunk-V47RDOUO.js";import{a as r}from"./chunk-EI7MMDWY.js";var n=r(t=>new Date(t.startedAt).getTime()+t.duration*1e3,"endOfGame"),i=r(t=>!!t.startedAt&&n(t)<=Date.now(),"isGameFinished"),m=r(t=>t.filter(i),"getFinishedGames"),c=r(t=>t.every(i),"areAllGamesFinished"),x=r(t=>t.games.length!==0&&c(t.games),"isSessionFinished"),f=r(({games:t})=>t.length-1===t.filter(s=>s.startedAt).length,"isLastSessionGame"),u=r(t=>!!t.startedAt&&!i(t),"isGameInProgress"),l=r(t=>!!t.startedAt,"isGameStarted"),S=r(t=>t.filter(l),"getStartedGames"),p=r(t=>!!t.startedAt,"isSessionStarted"),w=r(t=>!p(t),"isSessionWaiting"),T=r(t=>p(t)&&!x(t),"isSessionInProgress"),F=r(({games:t},s)=>t.map(e=>e.id===s?n({...e,startedAt:Date.now()}):n(e)).reduce((e,a)=>e>a?e:a),"endOfSession"),$=r(t=>t.startedAt?(Date.now()-new Date(t.startedAt).getTime())/1e3*100/t.duration:0,"elapsedTime"),D=r(t=>t.map(s=>({startedAt:new Date(s.startedAt).getTime(),endedAt:n(s)})).reduce((s,e)=>({startedAt:s.startedAt<e.startedAt?s.startedAt:e.startedAt,endedAt:s.endedAt>e.endedAt?s.endedAt:e.endedAt}),{}),"getSessionDates"),L=r(t=>{let s=D(t);return s.endedAt-s.startedAt},"getSubmissionDelay"),G=r(t=>S(t).sort((s,e)=>new Date(s.startedAt).getTime()-new Date(e.startedAt).getTime()).at(-1),"getLastStartedGame"),g=r(t=>m(t).sort((s,e)=>n(s)-n(e)).at(-1),"getLastFinishedGame"),v=r(t=>{let s=G(t),e=g(t),a=d(new Date(s.startedAt).getTime()),A=e&&d(n(e));return e?new Date(s.startedAt).getTime()>n(e)?`${o(s.name)} started at ${a}`:`${o(e.name)} finished at ${A}`:`${o(s.name)} started at ${a}`},"getLastActivity"),y=r((t,{resultsToSend:s})=>s.filter(({id:e})=>!t.results.some(a=>a.level===e)).map(e=>({attempts:e.attempts,sessionGameId:t.id,level:e.id})),"prepareSessionGames");export{c as areAllGamesFinished,$ as elapsedTime,n as endOfGame,F as endOfSession,m as getFinishedGames,v as getLastActivity,g as getLastFinishedGame,G as getLastStartedGame,D as getSessionDates,S as getStartedGames,L as getSubmissionDelay,i as isGameFinished,u as isGameInProgress,l as isGameStarted,f as isLastSessionGame,x as isSessionFinished,T as isSessionInProgress,p as isSessionStarted,w as isSessionWaiting,y as prepareSessionGames};
|
package/dist/graph.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-727IHWVW.js";import"./chunk-EI7MMDWY.js";export{d as flatAtomeAndCoreContents,c as flatGraphContents,b as getCoreOfSattelite,a as getCoreSattelites,e as limitations};
|
package/dist/hasura-core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
import{a as o}from"./chunk-EI7MMDWY.js";var m=class w extends Error{static{o(this,"HasuraError")}constructor({extensions:v,message:u,...f},l){super(u,l),Object.assign(this,f),Object.assign(this,v),Error.captureStackTrace?.(this,w)}},F=o(({debug:w,address:v,log:u,...f})=>{u||(u=w?console.debug:()=>{});let l=new Map,g=new Map,h=o(()=>{let e=Math.random().toString(36).slice(2);return l.has(e)?h():e},"getId"),x=o(e=>{g.clear();for(let[t,{reject:n,noCleanup:r}]of l)r||y.delete(t),l.delete(t),n(e);return e},"rejectAllPending"),b=o((e,t={})=>{t.duration=Date.now()-e.start,t.size=e.size,t.name=e.query,t.id=e.id,u("query",t),l.delete(e.id),e.noCleanup||y.delete(e.id)},"end"),j=o((e,t,n)=>e?(b(e,{payload:t,type:"error"}),l.delete(n),e.reject(new m(t.errors[0],w&&{cause:e.cause}))):u("missing-handler",{id:n,type:"error"}),"messageFail"),q=o((e,t,n)=>{if(e==='{"type":"ka"}')return;let{type:r,payload:s,id:i}=JSON.parse(e),c=l.get(i);switch(c&&(c.size+=e.length),u("raw",e),r){case"connection_ack":return t(s);case"connection_error":{let d=x(new m({errors:[s]}));return n(d)}case"data":{if(s.errors)return j(c,s,i);let d=g.get(i);if(!d)return c?c.payload=s:u("missing-handler",{id:i,type:"error"});d(s.data),c&&(b(c,{type:r,payload:s}),c.resolve());return}case"error":return j(c,s,i);case"complete":return c?(b(c,{type:r,payload:s}),c.resolve(c.payload?.data)):void 0}},"handleMessage"),k=o((e,t)=>x(new m({message:`WebSocket connection ${t}`,event:e})),"handleFail"),a=new WebSocket(v,"graphql-ws"),y=new Map,S=o(async(e,t,n,r)=>{await p;let s={id:e,size:0,query:n,start:Date.now(),noCleanup:r},i=new Promise((c,d)=>{s.resolve=c,s.reject=d});return w&&(s.cause=Error("hasuraClient.exec")),l.set(e,s),y.set(e,{payload:t,name:n}),u("start",{id:e,payload:t}),a.send(`{"type":"start","id":"${e}","payload":${t}}`),i},"exec"),C=o((e,t)=>S(h(),e,t),"runFromString"),L=o((e,t,n)=>{let r=h();return g.set(r,e),{execution:S(r,t,n,!0),unsubscribe:o(()=>{g.delete(r),y.delete(r),u("stop",{id:r}),a.send(`{"type":"stop","id":"${r}"}`)},"unsubscribe")}},"subscribeFromString"),E=!1,M=o(async()=>{E=!1;let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=o(()=>n(k(void 0,"failed")),"onError"),s=o(i=>n(k({code:i.code,reason:i.reason},"close")),"onClose");a.addEventListener("error",r,{once:!0}),a.addEventListener("close",s,{once:!0}),a.addEventListener("message",i=>q(i.data,t,n));try{return await e,E=!0}finally{a.removeEventListener("error",r),a.removeEventListener("close",s)}},"getConnection"),p=M(),O=o(async({adminSecret:e,token:t,role:n,headers:r})=>{let s=y,i=E;i&&(a.close(),a=new WebSocket(v,"graphql-ws"),p=M(),y=new Map),a.readyState||await new Promise(d=>a.addEventListener("open",d,{once:!0}));let c={headers:e?{"x-hasura-admin-secret":e,...r}:{Authorization:`Bearer ${t}`,...r}};return n&&(c.headers["x-hasura-role"]=n),a.send(JSON.stringify({type:"connection_init",payload:c})),i&&p.then(()=>{for(let[d,{payload:z,name:$}]of s)S(d,z,$)}),p},"connect");return(f.adminSecret||f.token)&&O(f),{ws:a,connect:O,connection:p,runFromString:C,subscribeFromString:L,run:o((e,t)=>C(JSON.stringify({query:e,variables:t})),"run"),subscribe:o((e,t,n)=>L(e,JSON.stringify({query:t,variables:n})),"subscribe")}},"initClient");export{m as HasuraError,F as initClient};
|
package/dist/hasura-model.js
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
var
|
|
1
|
+
import{a as u}from"./chunk-EI7MMDWY.js";var K=u(o=>(t,e="id",c="Int")=>{let i=`${e}_list`,d=o(`
|
|
2
2
|
mutation insert_${t} ($objects: [${t}_insert_input!]!){
|
|
3
3
|
insert_${t} (objects: $objects) { returning { ${e} } }
|
|
4
|
-
}`),
|
|
5
|
-
mutation update_${t} ($${e}: ${
|
|
4
|
+
}`),l=o(`
|
|
5
|
+
mutation update_${t} ($${e}: ${c}!, $changes: ${t}_set_input!) {
|
|
6
6
|
update_${t} (where: {${e}: {_eq: $${e}}}, _set: $changes) { affected_rows }
|
|
7
|
-
}`),d=o(`
|
|
8
|
-
mutation update_${t} ($${i}: [${n}!], $changes: ${t}_set_input!) {
|
|
9
|
-
update_${t} (where: {${e}: {_in: $${i}}}, _set: $changes) { affected_rows }
|
|
10
7
|
}`),_=o(`
|
|
11
|
-
mutation
|
|
12
|
-
|
|
8
|
+
mutation update_${t} ($${i}: [${c}!], $changes: ${t}_set_input!) {
|
|
9
|
+
update_${t} (where: {${e}: {_in: $${i}}}, _set: $changes) { affected_rows }
|
|
13
10
|
}`),h=o(`
|
|
14
|
-
mutation delete_${t} ($${
|
|
11
|
+
mutation delete_${t} ($${e}: ${c}!) {
|
|
12
|
+
delete_${t} (where: {${e}: {_eq: $${e}}}) { affected_rows }
|
|
13
|
+
}`),a=o(`
|
|
14
|
+
mutation delete_${t} ($${i}: [${c}!]) {
|
|
15
15
|
delete_${t} (where: {id: {_in: $${i}} }) { affected_rows }
|
|
16
|
-
}`),
|
|
16
|
+
}`),I=o(`
|
|
17
17
|
query ${t}_count {
|
|
18
18
|
${t}_aggregate { aggregate { count } }
|
|
19
|
-
}`),
|
|
19
|
+
}`),W=u($=>$[e],"getKey"),j=u(({[e]:$,...s})=>l({[e]:$,changes:s}),"updateOne"),B={key:e,list:i,insertQuery:d,deleteQuery:h,updateQuery:l,updateQueryAll:_,deleteQueryAll:a,remove:u($=>Array.isArray($)?a({[i]:$}):h({[e]:$}),"remove"),update:u(($,s)=>s?Array.isArray(s)?_({changes:$,[i]:s}):l({changes:$,[e]:s}):j($),"update"),add:u(async $=>{let s=Array.isArray($),g=await d.all({objects:s?$:[$]});return s?g[`insert_${t}`].returning.map(W):g[`insert_${t}`].returning[0][e]},"add")};return $=>{let s=`($${e}: ${c}!) {
|
|
20
20
|
${t} (where: {${e}: {_eq: $${e}}} limit: 1) {${e} ${$}}
|
|
21
|
-
}`,
|
|
21
|
+
}`,g=`($${i}: [${c}!]) {
|
|
22
22
|
${t} (where: {${e}: {_in: $${i}}}) {${e} ${$}}
|
|
23
|
-
}`,
|
|
23
|
+
}`,w=`($where: ${t}_bool_exp!) {
|
|
24
24
|
${t} (where: $where) {${e} ${$}}
|
|
25
|
-
}`,
|
|
25
|
+
}`,C=`(
|
|
26
26
|
$where: ${t}_bool_exp!, $orderBy: ${t}_order_by!, $limit: Int!, $offset: Int!,
|
|
27
27
|
) {
|
|
28
28
|
${t} ( order_by: [$orderBy] offset: $offset limit: $limit where: $where ) { ${$} }
|
|
29
|
-
}`,
|
|
29
|
+
}`,P=`(
|
|
30
30
|
$where: ${t}_bool_exp!, $orderBy: ${t}_order_by!, $limit: Int!, $offset: Int!,
|
|
31
31
|
) {
|
|
32
32
|
${t} ( order_by: [$orderBy] offset: $offset limit: $limit where: $where ) { ${$} }
|
|
33
33
|
${t}_aggregate (where: $where) { aggregate { count } }
|
|
34
|
-
}`,
|
|
34
|
+
}`,b=o(`query ${s}`),f=o(`query ${g}`),y=o(`query ${w}`),x=o(`query get_${t}_paginate ${C}`),v=o(`query get_${t}_with_count ${P}`),A=o(`subscription ${s}`),Q=o(`subscription ${g}`),q=o(`subscription ${w}`);return{...B,selectQuery:b,selectQueryAll:f,selectQueryWhere:y,subscribeQuery:A,subscribeQueryAll:Q,subscribeQueryWhere:q,get:u(r=>Array.isArray(r)?f({[i]:r}):r&&typeof r=="object"?y({where:r}):b.one(r&&{[e]:r}),"get"),subscribe:u((r,n)=>Array.isArray(n)?Q(r,{[i]:n}):n&&typeof n=="object"?q(r,{where:n}):A.one(r,n&&{[e]:n}),"subscribe"),getCount:u(async r=>(await I(r)).aggregate.count,"getCount"),getPaginated:x,getPaginatedWithCount:u(async r=>{let n=await v.all(r);return{[t]:n[t],count:n[`${t}_aggregate`].aggregate.count}},"getPaginatedWithCount")}}},"buildModel");export{K as buildModel};
|
package/dist/hasura-prepare.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
import{a as e}from"./chunk-EI7MMDWY.js";var m=e(t=>Object.values(t)[0],"get"),w=e(t=>t,"getAll"),d=e(t=>Object.values(t)[0][0],"getOne"),$=e(({runFromString:t,subscribeFromString:u},s)=>{if(typeof s!="string")throw Error(`Query must be a string but was ${typeof s}`);let[h,o,a]=s.split(/^\s*(\w+)(?:\s+(\w+))?\b/);if(!o)o="query";else if(!/^(subscription|mutation|query)$/.test(o))throw Error("Invalid query, type must be query, mutation or subscription");a||(a=`${o}_${s.split(/{\s*(.+?)\b/)[1]}`);let p=JSON.stringify({query:s}),l=p,b=p.slice(0,-1),f=e(r=>{if(!r)return l;if(typeof r=="function")throw Error("variables should not be functions, verify the order of your parameters");let n=JSON.stringify(r);return n==="{}"?l:`${b},"variables":${n}}`},"build"),c=o==="subscription"?r=>(n,y)=>u(g=>n(r(g)),f(y),a):r=>async n=>r(await t(f(n),a)),i=c(m);return i.all=c(w),i.one=c(d),i.map=c,i.query=s,i},"prepare"),O=e(t=>u=>$(t,u),"initPrepare");export{O as initPrepare,$ as prepare};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
import{a as p}from"./chunk-EI7MMDWY.js";var n=["sign-step","upload-step","contact-validation-step","form-step","avatar-step"],o=p(t=>{if(t.type==="sign-step")return`${t.key}Accepted`;if(t.type==="upload-step")return`${t.key}UploadId`;if(t.type==="contact-validation-step")return`${Object.keys(t.attrs.input)[0]}Validated`;if(t.type==="avatar-step")return"avatarUrl"},"getStepKey"),u=p(t=>t.type==="sign-step"?t.attrs.checkbox?.required:t.type==="avatar-step"?t.attrs.input.required:Object.values(t.attrs.input)[0]?.required,"checkRequired"),f=p((t,r)=>t.type==="form-step"?i(t.attrs["form-en"]||t.attrs.form,r.attrs):t.type==="avatar-step"?!!r.avatarUrl:r.attrs[o(t)],"isStepDone"),y=p((t,r)=>{let a=Object.values(t.children).filter(e=>{let s=n.includes(e.type);return s||console.warn(`Step ${e.name} of type ${e.type} is not supported`),s});return!t||!a.length?!0:a.filter(e=>e.type==="form-step"||u(e)).every(e=>f(e,r))},"areStepsDone"),i=p((t,r)=>t.flatMap(({inputs:a})=>a.filter(({required:e})=>e).map(({key:e})=>r[e])).every(Boolean),"checkFields");export{y as areStepsDone,i as checkFields,o as getStepKey,f as isStepDone,n as stepTypes};
|
package/dist/object-structure.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"./chunk-K5Z4W5GV.js";export{c as childTypes,b as objectTypes,a as onboardingTypes};
|
|
1
|
+
import{a,b,c}from"./chunk-K5Z4W5GV.js";import"./chunk-EI7MMDWY.js";export{c as childTypes,b as objectTypes,a as onboardingTypes};
|
package/dist/onboarding.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var r
|
|
1
|
+
import{a as r}from"./chunk-EI7MMDWY.js";var a=r((n,e)=>{let{prev:t}=(e.parent.type!=="onboarding"?e:e.parent).children[n];return t?t.attrs.status==="succeeded":!0},"prevValidated"),d=r((n,e)=>{let{next:t}=(e.type==="onboarding"?e:e.parent).children[n];return t?t.path:void 0},"nextStep"),i=r(n=>{if(!n)return;let e=Object.values(n.children);return e.find(({attrs:t})=>t.status==="available"||t.status==="failed")||e[e.length-1]},"getOnboardingStep");export{i as getOnboardingStep,d as nextStep,a as prevValidated};
|
package/dist/path.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"./chunk-
|
|
1
|
+
import{a,b}from"./chunk-EOY6G4KE.js";import"./chunk-EI7MMDWY.js";export{a as getAbsolutePath,b as getObjectFromRelativePath};
|
package/dist/qa-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var t
|
|
1
|
+
import{a as t}from"./chunk-EI7MMDWY.js";var e=t(r=>r?typeof r=="string"?r:Array.isArray(r)?r.map(e).join(""):e(r.props?.children):"","stringifyJSX"),i=t(r=>e(r).toLowerCase().replace(/([^a-z0-9]+)/g," ").trim().replaceAll(" ","-"),"toTestId");export{e as stringifyJSX,i as toTestId};
|
package/dist/score.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e,f}from"./chunk-CBWHFDVB.js";import"./chunk-EI7MMDWY.js";export{a as gamesScoring,e as getGameScores,f as getGlobalScore,c as getLevelMaxPoints,b as getLevelScore,d as getLevelsScore};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-
|
|
1
|
+
import{a,b,c,d,e}from"./chunk-7ZTI6THC.js";import"./chunk-EI7MMDWY.js";export{e as extractHighestSkills,d as hasRequiredSkills,b as skillTiers,c as skillTypes,a as skillsSet};
|
package/dist/toolbox.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,aa,b,ba,c,ca,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-
|
|
1
|
+
import{$,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,aa,b,ba,c,ca,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-LDUPRVV4.js";import"./chunk-V47RDOUO.js";import"./chunk-EI7MMDWY.js";export{h as DAY,g as HOUR,f as MIN,e as SEC,i as WEEK,j as YEAR,U as arrayOf,ha as base64Encode,O as breath,ka as createFrequencyMap,C as dateIsPermanent,G as defer,x as displayDateTime,da as eq,Y as filterEntries,Z as filterValues,J as formatTime,F as formatedDate,D as formatedDateTime,E as formatedDateTimeWithDay,r as formatedDuration,o as formatedDurationColons,p as formatedMS,I as fullName,ga as generateCode,_ as getChanges,ba as getChildByType,z as getDayName,y as getMonthName,ja as getRecordStatus,ea as getStatus,ca as getUserName,a as handleKeyDownEvent,$ as hasChanged,fa as isBanned,M as isNotCamel,b as last,W as mapEntries,X as mapValues,A as monthNames,m as padStart0,la as postgresIntervalToMS,P as prettyKey,l as relativeTime,d as replaceMap,aa as shuffle,H as slugify,s as timeDiff,ia as timePlusDelay,n as timeToMS,q as timeUnits,S as toCamelAll,L as toCamelCase,Q as toCamelKeys,t as toDateFormat,v as toDateFormatWithTime,u as toISOStringWithTimeZone,N as toKebabCase,w as toPermanentDateFormatWithTime,T as toSnakeAll,R as toSnakeKeys,V as trimSlashEnd,k as units,c as upperFirst,K as wait,B as weekDays};
|
package/package.json
CHANGED
package/dist/chunk-BLXMKMNK.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{p as y}from"./chunk-IF63VBJO.js";var K={13:({save:t,value:e,event:r,allowLineBreak:n})=>r.shiftKey||n?!1:t(e),27:({set:t,originalValue:e})=>t(e),83:({save:t,value:e,event:r})=>r.metaKey||r.ctrlKey?t(e):!1},rt=t=>{let e=K[t.event.keyCode];e&&e(t)!==!1&&t.event.preventDefault()},nt=t=>t[t.length-1],L=t=>t?t[0].toUpperCase()+t.slice(1):"",ot=(t,e,r)=>t.map(n=>n===e?r(n):n),c=1e3,u=60*c,l=60*u,m=24*l,g=7*m,p=365*m,P=Object.entries({year:p,month:2628e6,day:m,hour:l,minute:u,second:c}),Z={years:p,year:p,yrs:p,yr:p,y:p,weeks:g,week:g,w:g,days:m,day:m,d:m,hours:l,hour:l,hrs:l,hr:l,h:l,minutes:u,minute:u,mins:u,min:u,m:u,seconds:c,second:c,secs:c,sec:c,s:c,milliseconds:1,millisecond:1,ms:1},_=new Intl.RelativeTimeFormat("en",{style:"narrow"}),st=t=>{for(let[e,r]of P)if(Math.abs(t)>r||e==="second")return _.format(Math.round(t/r),e)},$=t=>t.toString().padStart(2,"0"),at=t=>{if(typeof t!="string")return 0;t=t.toLowerCase();let e=/(?<value>[0-9.-]+) *(?<type>[a-z]+)/g,r,n=0;for(;r=e.exec(t);){let{type:o,value:s}=r.groups,a=Z[o];Number(s)&&a&&(n+=s*a)}return Math.round(n)},ct=(t,{hoursOnly:e}={})=>{let r=!e&&Math.floor(t/86400),n=Math.floor((e?t:t%86400)/3600),o=Math.floor(t%3600/60),s=Math.floor(t%60),a=`${$(n)}:${$(o)}:${$(s)}`;return r?`${r}d ${a}`:a},it=t=>b(Math.round(t/c)),S=[{label:"y",fullLabel:"year",size:31536e3},{label:"w",fullLabel:"week",size:604800},{label:"d",fullLabel:"day",size:86400},{label:"h",fullLabel:"hour",size:3600},{label:"m",fullLabel:"minute",size:60},{label:"s",fullLabel:"second",size:1}],b=(t,{noSeconds:e,stopFirst:r,useFullLabel:n,stopLabel:o}={})=>{let s=[];if(o&&t<S.find(a=>a.fullLabel===o)?.size)return`less than 1${n?` ${o}`:S.find(a=>a.fullLabel===o).label}`;for(let{label:a,size:i,fullLabel:h}of S){let d=Math.floor(t/i);if(d!==0){if(s.push(`${d}${n?` ${h}`:a}${d>1&&n?"s":""}`),r)return s;t-=d*i}if(h===o)return s.join(" ")||(e?"0m":"0s")}return!e&&t!==0&&s.push(`${t}s`),s.join(" ")||(e?"0m":"0s")},ut=(t,e=Date.now())=>{if(!t)return null;let r=f(t)-f(e);return b(Math.floor(Math.abs(r)/1e3),{stopFirst:!0,useFullLabel:!0})},f=t=>t instanceof Date?t:new Date(t),w=(t,e=!0)=>{if(x(t))return"\u221E";let r=f(t),n=(r.getMonth()+1).toString().padStart(2,"0"),o=r.getDate().toString().padStart(2,"0");return e?`${r.getFullYear()}-${n}-${o}`:`${o}/${n}/${r.getFullYear()}`},lt=t=>f(t).toISOString(),W=(t,e="T")=>{let r=f(t),n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return`${w(r)}${e}${n}:${o}`},pt=(t,e="T")=>{let r=f(t),n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0"),s=(r.getMonth()+1).toString().padStart(2,"0"),a=r.getDate().toString().padStart(2,"0");return`${r.getFullYear()}-${s}-${a}${e}${n}:${o}`},mt=t=>W(t," | "),ft=t=>D[t],Y=t=>J[t],D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],J=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],M=t=>t===0||t===12?12:t%12,N=t=>String(t).padStart(2,"0"),C=t=>t===0?"am":t===12?"pm":t<12?"am":"pm",x=t=>(t instanceof Date&&!Number.isNaN(t.valueOf())?t:new Date(t)).valueOf()>325036836e5,A=t=>{let e=new Date(t),r=e.getDay(),n=e.getDate(),o=e.getMonth(),s=e.getFullYear(),a=e.getHours(),i=e.getMinutes();return{day:r,jj:n,mm:o,yyyy:s,hh:a,min:i}},dt=(t,e="at")=>{if(!t)return"-";if(x(t))return"\u221E";let{jj:r,mm:n,yyyy:o,hh:s,min:a}=A(t);return`${D[n]} ${r}, ${o} ${e} ${M(s)}:${N(a)} ${C(s)}`},ht=t=>{if(!t)return"-";if(x(t))return"\u221E";let{day:e,jj:r,mm:n,yyyy:o,hh:s,min:a}=A(t);return`${Y(e)}, ${D[n]} ${r}, ${o} at ${M(s)}:${N(a)} ${C(s)}`},yt=t=>t?x(t)?"\u221E":w(t):"-",xt=()=>{let t={};return t.done=new Promise((e,r)=>{t.resolve=e,t.reject=r}),t},gt=t=>t.normalize("NFKD").replace(/\p{M}+/gu,"").toLowerCase().replace(/\s+/g," ").replace(/[^a-z0-9._ ]+/g,"").trim().replaceAll(" ","-"),$t=({firstName:t,lastName:e})=>`${t||""} ${e||""}`,St=t=>new Date(t).toISOString().substr(11,8).replace(/^[0:]+/,""),Dt=t=>new Promise(e=>setTimeout(e,t)),U=t=>t[0].toLowerCase()+t.slice(1),B=(t,e)=>e.toUpperCase(),T=t=>U(t.trim().toLowerCase().replace(/[ _-]+(.?)/g,B)),bt=t=>/[ _-]+(.?)/g.test(t),H=(t,e,r)=>`${e}_${r}`,j=t=>t.trim().replace(/(.)([A-Z])/g,H).toLowerCase(),wt=t=>t.match(/[A-Z](?=[A-Z][a-z]+[0-9]*[a-z]|\b)|[A-Z]?[a-z]+[0-9]+[a-z]?[A-Z]*|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(e=>e.toLowerCase()).join("-"),R=(t,e,r)=>`${e} ${r}`,q=t=>t.trim().replace(/(.)([A-Z])/g,R).toLowerCase(),Mt=t=>L(q(t)),O=(t,e,r)=>E(t,([n,o])=>[e(n),r(o)]),V=t=>O(t,T,F),G=t=>O(t,j,v),z=(t,e,r,n)=>!t||typeof t!="object"?t:Array.isArray(t)?t.map(n):r(t,e,n),F=t=>z(t,T,V,F),v=t=>z(t,j,G,v),Nt=(t,e=0)=>[...Array(t+e).keys()].slice(e),Q=t=>t[t.length-1]==="/"?Q(t.slice(0,-1)):t,E=(t,e)=>Object.fromEntries(Object.entries(t).map(e)),Ct=(t,e)=>E(t,([r,n])=>[r,e(n,r,t)]),I=(t,e)=>Object.fromEntries(Object.entries(t).filter(e)),At=(t,e)=>I(t,([r,n])=>[r,e(n,r,t)]),X=(t,e)=>I(t,([r,n])=>!k(n,e[r])),Tt=(t,e)=>Object.keys(X(t,e)).length!==0,jt=t=>{let e=[...t],r=e.length,n,o;for(;--r>0;)n=Math.floor(Math.random()*(r+1)),o=e[n],e[n]=e[r],e[r]=o;return e},Ot=(t,e)=>t&&Object.values(t).find(r=>r.type===e),zt=t=>{if(!t)return"-";if(t.attrs?.name)return t.attrs.name;let e=t.firstName||"-",r=t.lastName||"-";return`${e} ${r}`},k=(t,e)=>{if(t===e)return!0;if(typeof t!=typeof e)return!1;if(typeof t=="number"&&Number.isNaN(t)&&Number.isNaN(e))return!0;if(typeof t=="object"){if(!t||!e||t.constructor!==e.constructor)return!1;let r=Object.entries(t);if(r.length!==Object.values(e).length)return!1;for(let[n,o]of r)if(!k(e[n],o))return!1;return!0}return!1},Ft=t=>{if(!(!t||!t.isDone))return t.succeeded?"succeeded":"failed"},tt=t=>!t.type.canAccessPlatform&&(new Date(t.endAt)>Date.now()||t.type.isPermanent||!t.endAt)&&y(t.startAt),vt=t=>{let r=t?.records?.find(tt);if(!r)return;let n=Error("Banned");return n.record=r,n},Et=()=>Math.random().toString(36).slice(2,7).padEnd(5,"#").replace(/0/gi,"_").replace(/o/gi,"-").replace(/I/gi,"?").replace(/l/gi,"$"),It=t=>{let r=new TextEncoder().encode(t);return btoa(String.fromCharCode.apply(null,r))},kt=(t,e)=>new Date(new Date(t).getTime()+e).toISOString(),Kt=t=>y(t?.startAt)?t?.endAt&&y(t?.endAt)?"finished":t?.type.isPermanent?"permanent":t?.endAt?"in progress":"unblock required":"starting soon",Lt=t=>t.reduce((e,r)=>(e[r]=(e[r]||0)+1,e),{}),Pt=t=>{if(!t)return 0;let e=/(?:(\d+)\s+years?)?\s*(?:(\d+)\s+mons?)?\s*(?:(\d+)\s+days?)?\s*(?:(\d+):(\d+):([\d.]+))?/,r=t.match(e);if(!r)return 0;let n=Number.parseInt(r[1]||0,10),o=Number.parseInt(r[2]||0,10),s=Number.parseInt(r[3]||0,10),a=Number.parseInt(r[4]||0,10),i=Number.parseInt(r[5]||0,10),h=Number.parseFloat(r[6]||0);return n*365*24*60*60*1e3+o*30*24*60*60*1e3+s*24*60*60*1e3+a*60*60*1e3+i*60*1e3+h*1e3};export{rt as a,nt as b,L as c,ot as d,c as e,u as f,l as g,m as h,g as i,p as j,Z as k,st as l,$ as m,at as n,ct as o,it as p,S as q,b as r,ut as s,w as t,lt as u,W as v,pt as w,mt as x,ft as y,Y as z,D as A,J as B,x as C,dt as D,ht as E,yt as F,xt as G,gt as H,$t as I,St as J,Dt as K,T as L,bt as M,wt as N,q as O,Mt as P,V as Q,G as R,F as S,v as T,Nt as U,Q as V,E as W,Ct as X,I as Y,At as Z,X as _,Tt as $,jt as aa,Ot as ba,zt as ca,k as da,Ft as ea,vt as fa,Et as ga,It as ha,kt as ia,Kt as ja,Lt as ka,Pt as la};
|