@timeback/sdk 0.1.9 → 0.1.11
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/README.md +10 -8
- package/dist/chunk-1cqa51je.js +2 -0
- package/dist/chunk-3ew9vn2d.js +2 -0
- package/dist/chunk-6b0ppq9d.js +2 -0
- package/dist/chunk-92nnwa7t.js +2 -0
- package/dist/chunk-bavxzt1k.js +2 -0
- package/dist/chunk-c8pw96sp.js +10 -0
- package/dist/chunk-edk3nfj7.js +2 -0
- package/dist/chunk-g67efaph.js +4 -0
- package/dist/chunk-pd91g539.js +1 -0
- package/dist/chunk-sgcwg4j6.js +1 -0
- package/dist/client/adapters/react/hooks/types.d.ts +2 -29
- package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +2 -2
- package/dist/client/adapters/solid/types.d.ts +2 -29
- package/dist/client/adapters/solid/types.d.ts.map +1 -1
- package/dist/client/adapters/solid/types.ts +2 -18
- package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/client.ts +2 -9
- package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
- package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/profile.ts +4 -11
- package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/verification.ts +1 -10
- package/dist/client/adapters/svelte/types.d.ts +1 -29
- package/dist/client/adapters/svelte/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.ts +4 -11
- package/dist/client/adapters/vue/types.d.ts +2 -29
- package/dist/client/adapters/vue/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/types.ts +2 -18
- package/dist/client/auth/types.d.ts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/lib/activity/activity.class.d.ts +130 -22
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/activity/transport.d.ts +15 -0
- package/dist/client/lib/activity/transport.d.ts.map +1 -0
- package/dist/client/lib/activity/types.d.ts +53 -0
- package/dist/client/lib/activity/types.d.ts.map +1 -0
- package/dist/client/lib/utils.d.ts +18 -0
- package/dist/client/lib/utils.d.ts.map +1 -1
- package/dist/client/lib/utils.ts +109 -0
- package/dist/client/namespaces/activity.d.ts +49 -7
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client/timeback-client.class.d.ts +7 -1
- package/dist/client/timeback-client.class.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/identity.d.ts +2 -5
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -21
- package/dist/server/adapters/express.d.ts.map +1 -1
- package/dist/server/adapters/express.js +1 -1
- package/dist/server/adapters/native.d.ts.map +1 -1
- package/dist/server/adapters/native.js +2 -2
- package/dist/server/adapters/nextjs.js +1 -1
- package/dist/server/adapters/nuxt.d.ts.map +1 -1
- package/dist/server/adapters/nuxt.js +1 -1
- package/dist/server/adapters/solid-start.d.ts.map +1 -1
- package/dist/server/adapters/solid-start.js +1 -1
- package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
- package/dist/server/adapters/svelte-kit.js +1 -1
- package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
- package/dist/server/adapters/tanstack-start.js +1 -1
- package/dist/server/adapters/types.d.ts +16 -4
- package/dist/server/adapters/types.d.ts.map +1 -1
- package/dist/server/adapters/utils.d.ts +1 -1
- package/dist/server/adapters/utils.d.ts.map +1 -1
- package/dist/server/handlers/activity/attempts.d.ts +1 -1
- package/dist/server/handlers/activity/attempts.d.ts.map +1 -1
- package/dist/server/handlers/activity/caliper.d.ts +54 -16
- package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
- package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
- package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/index.d.ts +5 -3
- package/dist/server/handlers/activity/index.d.ts.map +1 -1
- package/dist/server/handlers/activity/progress.d.ts +2 -2
- package/dist/server/handlers/activity/progress.d.ts.map +1 -1
- package/dist/server/handlers/activity/schema.d.ts +40 -6
- package/dist/server/handlers/activity/schema.d.ts.map +1 -1
- package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
- package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/submit.d.ts +44 -0
- package/dist/server/handlers/activity/submit.d.ts.map +1 -0
- package/dist/server/handlers/activity/types.d.ts +126 -5
- package/dist/server/handlers/activity/types.d.ts.map +1 -1
- package/dist/server/handlers/identity/handler.d.ts +23 -4
- package/dist/server/handlers/identity/handler.d.ts.map +1 -1
- package/dist/server/handlers/identity/index.d.ts +2 -2
- package/dist/server/handlers/identity/index.d.ts.map +1 -1
- package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
- package/dist/server/handlers/identity/types.d.ts +0 -6
- package/dist/server/handlers/identity/types.d.ts.map +1 -1
- package/dist/server/handlers/index.d.ts +3 -3
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/user/handler.d.ts.map +1 -1
- package/dist/server/handlers/user/profile.d.ts.map +1 -1
- package/dist/server/handlers/user/types.d.ts +3 -0
- package/dist/server/handlers/user/types.d.ts.map +1 -1
- package/dist/server/handlers/user/verify.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/lib/hooks.d.ts +20 -0
- package/dist/server/lib/hooks.d.ts.map +1 -0
- package/dist/server/lib/index.d.ts +4 -2
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/logger.d.ts +36 -9
- package/dist/server/lib/logger.d.ts.map +1 -1
- package/dist/server/lib/resolve.d.ts +1 -1
- package/dist/server/lib/resolve.d.ts.map +1 -1
- package/dist/server/lib/utils.d.ts +23 -2
- package/dist/server/lib/utils.d.ts.map +1 -1
- package/dist/server/lib/validation.d.ts +55 -0
- package/dist/server/lib/validation.d.ts.map +1 -0
- package/dist/server/namespaces/activity/index.d.ts +8 -0
- package/dist/server/namespaces/activity/index.d.ts.map +1 -0
- package/dist/server/namespaces/activity/record.d.ts +49 -0
- package/dist/server/namespaces/activity/record.d.ts.map +1 -0
- package/dist/server/namespaces/activity/schema.d.ts +50 -0
- package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
- package/dist/server/namespaces/user/get-profile.d.ts +32 -0
- package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
- package/dist/server/namespaces/user/index.d.ts +8 -0
- package/dist/server/namespaces/user/index.d.ts.map +1 -0
- package/dist/server/namespaces/user/verify.d.ts +28 -0
- package/dist/server/namespaces/user/verify.d.ts.map +1 -0
- package/dist/server/timeback-identity.d.ts +3 -3
- package/dist/server/timeback.d.ts +5 -3
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +407 -14
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +7 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.ts +51 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/schemas.d.ts +57 -0
- package/dist/shared/schemas.d.ts.map +1 -0
- package/dist/shared/types.d.ts +287 -18
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.ts +636 -0
- package/package.json +7 -10
- package/dist/chunk-07j8zre9.js +0 -2
- package/dist/chunk-5171mkp2.js +0 -2
- package/dist/chunk-63afdp3y.js +0 -8
- package/dist/chunk-8gg8n8v9.js +0 -2
- package/dist/chunk-9se82640.js +0 -1
- package/dist/chunk-agpf1x3g.js +0 -16
- package/dist/chunk-hnf0tart.js +0 -2
- package/dist/chunk-qr0bbnsr.js +0 -1
- package/dist/chunk-whc53e0y.js +0 -11
- package/dist/chunk-x9gvef7q.js +0 -1
- package/dist/edge.d.ts +0 -13
- package/dist/edge.d.ts.map +0 -1
- package/dist/edge.js +0 -1
- package/dist/server/handlers/activity/handler.d.ts +0 -32
- package/dist/server/handlers/activity/handler.d.ts.map +0 -1
- package/dist/shared/xp-calculator.d.ts +0 -25
- package/dist/shared/xp-calculator.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,kBAAkB,EAIlB,iBAAiB,EACjB,MAAM,SAAS,CAAA;AA6FhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,kBAAkB,EAIlB,iBAAiB,EACjB,MAAM,SAAS,CAAA;AA6FhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,CAsD/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAiE3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-pd91g539.js";import"../../chunk-6b0ppq9d.js";import{A as Z,B as P,C as Q,z as _}from"../../chunk-bavxzt1k.js";import{H as X}from"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function $(C){let z=C.protocol||"http",F=C.get("host")||"localhost",J=`${z}://${F}${C.url}`,B=new Headers;for(let[M,L]of Object.entries(C.headers))if(L)B.set(M,Array.isArray(L)?L.join(", "):L);let K={method:C.method,headers:B};if(["POST","PUT","PATCH"].includes(C.method)&&C.body)K.body=JSON.stringify(C.body);return new Request(J,K)}async function V(C,z){z.status(C.status);let F={};if(C.headers.forEach((B,K)=>{F[K]=B}),z.set(F),C.status>=300&&C.status<400){let B=C.headers.get("Location");if(B){z.redirect(B);return}}let J=await C.text();z.send(J)}function Y(C){let z=Z(C);return(F,J,B)=>{let K=$(F),M=new URL(K.url).pathname;(()=>{let G=_({pathname:M,method:F.method});if(!G)return Promise.resolve(void 0);if(G==="identity.signOut")return Promise.resolve(z.identity.signOut());if(G==="identity.signIn")return z.identity.signIn(K);if(G==="identity.callback")return z.identity.callback(K);if(G==="user.me"){if(!Q(z))return Promise.resolve(void 0);return z.user.me(K)}if(G==="user.verify"){if(!Q(z))return Promise.resolve(void 0);return z.user.verify(K)}if(G==="activity.heartbeat"){if(!P(z))return Promise.resolve(void 0);return z.activity.heartbeat(K)}if(G==="activity.submit"){if(!P(z))return Promise.resolve(void 0);return z.activity.submit(K)}return Promise.resolve(void 0)})().then((G)=>{if(G)return V(G,J);B()}).catch(()=>{let G=X({error:"Internal server error"},500);return V(G,J)})}}function j(C,z){let F=Z(C);function J(B){return(K,M)=>{let L=$(K);Promise.resolve(B(L)).then((G)=>V(G,M)).catch(()=>{let G=X({error:"Internal server error"},500);return V(G,M)})}}if(z.get("/identity/signin",J((B)=>F.identity.signIn(B))),z.get("/identity/callback",J((B)=>F.identity.callback(B))),z.get("/identity/signout",J(()=>F.identity.signOut())),Q(F))z.get("/user/me",J((B)=>F.user.me(B))),z.get("/user/verify",J((B)=>F.user.verify(B)));if(P(F))z.post("/activity/heartbeat",J((B)=>F.activity.heartbeat(B))),z.post("/activity/submit",J((B)=>F.activity.submit(B)))}export{Y as toExpressMiddleware,j as mountExpressRoutes};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAYrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,GAC5C,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAYrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,GAC5C,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAuDrC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as V,B as L,
|
|
2
|
-
export{S as
|
|
1
|
+
import{A as V,B as L,C as M,z as Q}from"../../chunk-bavxzt1k.js";import{H as K}from"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function $(G){return typeof G==="object"&&G!==null&&"timeback"in G}function S(G){let{timeback:X,callbackPath:Y}=$(G)?G:{timeback:G,callbackPath:void 0},z=V(X);return(E)=>{let Z=new URL(E.url).pathname,_=E.method,J=Q({pathname:Z,method:_,callbackPath:Y});if(J==="identity.signIn")return z.identity.signIn(E);if(J==="identity.callback")return z.identity.callback(E);if(J==="identity.signOut")return Promise.resolve(z.identity.signOut());if(J==="user.me"){if(!M(z))return Promise.resolve(K({error:"Not found"},404));return z.user.me(E)}if(J==="user.verify"){if(!M(z))return Promise.resolve(K({error:"Not found"},404));return z.user.verify(E)}if(J==="activity.heartbeat"){if(!L(z))return Promise.resolve(K({error:"Not found"},404));return z.activity.heartbeat(E)}if(J==="activity.submit"){if(!L(z))return Promise.resolve(K({error:"Not found"},404));return z.activity.submit(E)}return Promise.resolve(K({error:"Not found"},404))}}export{S as toNativeHandler};
|
|
2
|
+
export{S as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{e as z}from"./native.js";import"../../chunk-bavxzt1k.js";import"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function F(B){let g=z(B);return{GET:g,POST:g,PUT:g,DELETE:g,PATCH:g}}export{F as toNextjsHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/nuxt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EACX,gBAAgB,EAEhB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,MAAM,SAAS,CAAA;AAuMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAsB,WAAW,CAAC,MAAM,SAAS,aAAa,EAC7D,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/nuxt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EACX,gBAAgB,EAEhB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,MAAM,SAAS,CAAA;AAuMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAsB,WAAW,CAAC,MAAM,SAAS,aAAa,EAC7D,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAsC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,YAAY,CAiDd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-pd91g539.js";import"../../chunk-6b0ppq9d.js";import{A as B,B as _,C as $,y as O,z}from"../../chunk-bavxzt1k.js";import{H as Y}from"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function W(x){return new Promise((D,J)=>{let L=[];x.on("data",(C)=>{if(!C)return;if(C instanceof Buffer)return void L.push(C);if(typeof C==="string")return void L.push(Buffer.from(C,"utf-8"));if(C instanceof Uint8Array)return void L.push(Buffer.from(C))}),x.on("end",()=>D(Buffer.concat(L).toString("utf-8"))),x.on("error",(C)=>{if(C instanceof Error)J(C)})})}function M(x){if(x.path)return O(x.path);if(x.request){let J=x.request.url;if(J.startsWith("http://")||J.startsWith("https://"))return new URL(J).pathname;return J.split("?")[0]??"/"}return(x.node?.req?.url?.split("?")[0]??"/")||"/"}function I(x){if(!x)return;if(Array.isArray(x))return x[0]?.trim();return x.split(",")[0]?.trim()}function T(x){let D=x.url??"/";if(D.startsWith("http://")||D.startsWith("https://"))return new URL(D).href;let J=I(x.headers["x-forwarded-proto"]),L=J==="https"?"https":J==="http"?"http":"http",Q=I(x.headers["x-forwarded-host"])||x.headers.host||"localhost";return new URL(D,`${L}://${Q}`).href}function A(x){if(x.request)return x.request.url;let D=x.node?.req;if(!D)throw Error("Cannot determine URL from Nuxt event");return T(D)}function N(x){if(x.request)return x.request.method;return x.node?.req?.method??"GET"}async function V(x){if(x.request)return x.request;let D=x.node?.req;if(!D)throw Error("Cannot convert Nuxt event to Request: no request object found");let J=A(x),L=D.method??"GET",C=new Headers;for(let[S,G]of Object.entries(D.headers))if(G)C.set(S,Array.isArray(G)?G.join(", "):G);let Q={method:L,headers:C};if(["POST","PUT","PATCH","DELETE"].includes(L)){let S=await W(D);if(S)Q.body=S}return new Request(J,Q)}async function f(x){let{timeback:D,event:J,basePath:L="/api/timeback",callbackPath:C}=x,Q=M(J),S=N(J),G=B(D),X=z({pathname:Q,method:S,basePath:L,callbackPath:C});if(!X)return;if(X==="identity.signOut")return G.identity.signOut();let K=await V(J);if(X==="identity.signIn")return G.identity.signIn(K);if(X==="identity.callback")return G.identity.callback(K);if(X==="user.me"){if(!$(G))return;return G.user.me(K)}if(X==="user.verify"){if(!$(G))return;return G.user.verify(K)}if(X==="activity.heartbeat"){if(!_(G))return;return G.activity.heartbeat(K)}if(X==="activity.submit"){if(!_(G))return;return G.activity.submit(K)}return}function g(x){let D=E(x)?x:{timeback:x},{timeback:J,callbackPath:L}=D,C=B(J),Q=async(S)=>{let G=M(S),X=N(S),K=z({pathname:G,method:X,callbackPath:L});if(!K)return Y({error:"Not found"},404);if(K==="identity.signOut")return C.identity.signOut();let Z=await V(S);if(K==="identity.signIn")return C.identity.signIn(Z);if(K==="identity.callback")return C.identity.callback(Z);if(K==="user.me"){if(!$(C))return Y({error:"Not found"},404);return C.user.me(Z)}if(K==="user.verify"){if(!$(C))return Y({error:"Not found"},404);return C.user.verify(Z)}if(K==="activity.heartbeat"){if(!_(C))return Y({error:"Not found"},404);return C.activity.heartbeat(Z)}if(K==="activity.submit"){if(!_(C))return Y({error:"Not found"},404);return C.activity.submit(Z)}return Y({error:"Not found"},404)};return{GET:Q,POST:Q,PUT:Q,DELETE:Q,PATCH:Q}}function E(x){return typeof x==="object"&&x!==null&&"timeback"in x}export{g as toNuxtHandler,f as nuxtHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-start.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/solid-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAM7F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"solid-start.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/solid-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAM7F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,CA4C/E;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,wBAAwB,GAC/B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAmC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-pd91g539.js";import"../../chunk-6b0ppq9d.js";import{A as O,B as I,C as J,z as N}from"../../chunk-bavxzt1k.js";import{H as G}from"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function Z(K){let B=O(K),F=(C)=>{let D=new URL(C.request.url).pathname,L=C.request.method,z=N({pathname:D,method:L});if(!z)return G({error:"Not found"},404);if(z==="identity.signOut")return B.identity.signOut();if(z==="identity.signIn")return B.identity.signIn(C.request);if(z==="identity.callback")return B.identity.callback(C.request);if(z==="user.me"){if(!J(B))return G({error:"Not found"},404);return B.user.me(C.request)}if(z==="user.verify"){if(!J(B))return G({error:"Not found"},404);return B.user.verify(C.request)}if(z==="activity.heartbeat"){if(!I(B))return G({error:"Not found"},404);return B.activity.heartbeat(C.request)}if(z==="activity.submit"){if(!I(B))return G({error:"Not found"},404);return B.activity.submit(C.request)}return G({error:"Not found"},404)};return{GET:F,POST:F,PUT:F,DELETE:F,PATCH:F}}function _(K){let{timeback:B,event:F,basePath:C="/api/timeback",callbackPath:Q}=K,D=F.request,L=new URL(D.url),z=O(B),V=L.pathname,W=D.method,E=N({pathname:V,method:W,basePath:C,callbackPath:Q});if(!E)return;if(E==="identity.signOut")return z.identity.signOut();if(E==="identity.signIn")return z.identity.signIn(D);if(E==="identity.callback")return z.identity.callback(D);if(E==="user.me"){if(!J(z))return;return z.user.me(D)}if(E==="user.verify"){if(!J(z))return;return z.user.verify(D)}if(E==="activity.heartbeat"){if(!I(z))return;return z.activity.heartbeat(D)}if(E==="activity.submit"){if(!I(z))return;return z.activity.submit(D)}return}export{Z as toSolidStartHandler,_ as solidStartHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-kit.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/svelte-kit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EAErB,MAAM,SAAS,CAAA;AAMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,SAAS,qBAAqB,EAC1E,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACtC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"svelte-kit.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/svelte-kit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EAErB,MAAM,SAAS,CAAA;AAMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,SAAS,qBAAqB,EAC1E,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,GACtC,OAAO,CAAC,QAAQ,CAAC,CA8DnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAgB7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{e as Z}from"./native.js";import{A as Y,B as V,C as W,z as X}from"../../chunk-bavxzt1k.js";import"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";async function $(M){let{timeback:J,event:z,resolve:D,building:Q=!1,basePath:_="/api/timeback",callbackPath:C}=M;if(Q)return D(z);let{url:E,request:L}=z,B=Y(J),G=E.pathname,I=L.method,F=X({pathname:G,method:I,basePath:_,callbackPath:C});if(!F)return D(z);if(F==="identity.signOut")return B.identity.signOut();if(F==="identity.signIn")return await B.identity.signIn(L);if(F==="identity.callback")return await B.identity.callback(L);if(F==="user.me"){if(!W(B))return D(z);return await B.user.me(L)}if(F==="user.verify"){if(!W(B))return D(z);return await B.user.verify(L)}if(F==="activity.heartbeat"){if(!V(B))return D(z);return await B.activity.heartbeat(L)}if(F==="activity.submit"){if(!V(B))return D(z);return await B.activity.submit(L)}return D(z)}function j(M){let J=Z(M),z=(D)=>{return(Q)=>D(Q.request)};return{GET:z(J),POST:z(J),PUT:z(J),DELETE:z(J),PATCH:z(J)}}export{j as toSvelteKitHandler,$ as svelteKitHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-start.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/tanstack-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAEhB,2BAA2B,EAC3B,qBAAqB,EACrB,MAAM,SAAS,CAAA;AAMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,gBAAgB,GAAG,2BAA2B,GACnD,qBAAqB,
|
|
1
|
+
{"version":3,"file":"tanstack-start.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/tanstack-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAEhB,2BAA2B,EAC3B,qBAAqB,EACrB,MAAM,SAAS,CAAA;AAMhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,gBAAgB,GAAG,2BAA2B,GACnD,qBAAqB,CA+CvB;AAcD;;GAEG;AACH,eAAO,MAAM,oBAAoB,+BAAyB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-pd91g539.js";import"../../chunk-6b0ppq9d.js";import{A as I,B as E,C as F,z as G}from"../../chunk-bavxzt1k.js";import{H as B}from"../../chunk-3ew9vn2d.js";import"../../chunk-edk3nfj7.js";function Q(C){let J=V(C)?C:{timeback:C},{timeback:K,callbackPath:L}=J,q=I(K),D=(x)=>{let M=new URL(x.request.url).pathname,N=x.request.method,z=G({pathname:M,method:N,callbackPath:L});if(!z)return B({error:"Not found"},404);if(z==="identity.signOut")return q.identity.signOut();if(z==="identity.signIn")return q.identity.signIn(x.request);if(z==="identity.callback")return q.identity.callback(x.request);if(z==="user.me"){if(!F(q))return B({error:"Not found"},404);return q.user.me(x.request)}if(z==="user.verify"){if(!F(q))return B({error:"Not found"},404);return q.user.verify(x.request)}if(z==="activity.heartbeat"){if(!E(q))return B({error:"Not found"},404);return q.activity.heartbeat(x.request)}if(z==="activity.submit"){if(!E(q))return B({error:"Not found"},404);return q.activity.submit(x.request)}return B({error:"Not found"},404)};return{GET:D,POST:D,PUT:D,DELETE:D,PATCH:D}}function V(C){return"timeback"in C}var Z=Q;export{Q as toTanStackStartHandler,Z as tanstackStartHandler};
|
|
@@ -91,7 +91,10 @@ export interface NativeHandlerOptions {
|
|
|
91
91
|
* When your IdP uses a custom redirect URI that doesn't match the SDK's
|
|
92
92
|
* default `/identity/callback` path, set this to match your `redirectUri`.
|
|
93
93
|
*
|
|
94
|
-
* @example
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* // '/api/auth/sso/callback/timeback'
|
|
97
|
+
* ```
|
|
95
98
|
*/
|
|
96
99
|
callbackPath?: string;
|
|
97
100
|
}
|
|
@@ -127,7 +130,10 @@ export interface SvelteKitHandlerOptions<TEvent extends SvelteKitRequestEvent =
|
|
|
127
130
|
* (`/api/timeback/identity/callback`), specify the path here so the handler can
|
|
128
131
|
* intercept it.
|
|
129
132
|
*
|
|
130
|
-
* @example
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* // '/api/auth/sso/callback/timeback'
|
|
136
|
+
* ```
|
|
131
137
|
*/
|
|
132
138
|
callbackPath?: string;
|
|
133
139
|
}
|
|
@@ -172,7 +178,10 @@ export interface SolidStartHandlerOptions {
|
|
|
172
178
|
* (`/api/timeback/identity/callback`), specify the path here so the handler can
|
|
173
179
|
* intercept it.
|
|
174
180
|
*
|
|
175
|
-
* @example
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* // '/api/auth/sso/callback/timeback'
|
|
184
|
+
* ```
|
|
176
185
|
*/
|
|
177
186
|
callbackPath?: string;
|
|
178
187
|
}
|
|
@@ -271,7 +280,10 @@ export interface NuxtHandlerOptions<TEvent extends NuxtLikeEvent = NuxtLikeEvent
|
|
|
271
280
|
* (`/api/timeback/identity/callback`), specify the path here so the handler can
|
|
272
281
|
* intercept it.
|
|
273
282
|
*
|
|
274
|
-
* @example
|
|
283
|
+
* @example
|
|
284
|
+
* ```typescript
|
|
285
|
+
* // '/api/auth/sso/callback/timeback'
|
|
286
|
+
* ```
|
|
275
287
|
*/
|
|
276
288
|
callbackPath?: string;
|
|
277
289
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,MAAM,UAAU,CAAA;AAMjB;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,QAAQ,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAE3E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,iBAAiB,CAAA;AAMhE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC1C;AASD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACtD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAAA;IAC7C,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,mBAAmB,CAAA;IAC7D,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAA;AAExC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IACxD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IACzD,GAAG,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAChC,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,eAAe,KACjB,IAAI,CAAA;AAMT;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,4DAA4D;IAC5D,QAAQ,EAAE,gBAAgB,CAAA;IAC1B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ type AnyHandlers = Handlers | IdentityOnlyHandlers;
|
|
|
12
12
|
/**
|
|
13
13
|
* A canonical route identifier for Timeback's built-in endpoints.
|
|
14
14
|
*/
|
|
15
|
-
type TimebackRouteId = 'identity.signIn' | 'identity.callback' | 'identity.signOut' | 'user.me' | 'user.verify' | 'activity';
|
|
15
|
+
type TimebackRouteId = 'identity.signIn' | 'identity.callback' | 'identity.signOut' | 'user.me' | 'user.verify' | 'activity.heartbeat' | 'activity.submit';
|
|
16
16
|
/**
|
|
17
17
|
* Normalize a path-like string to a pathname only (no query string).
|
|
18
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,KAAK,WAAW,GAAG,QAAQ,GAAG,oBAAoB,CAAA;AAElD;;GAEG;AACH,KAAK,eAAe,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,SAAS,GACT,aAAa,GACb,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,KAAK,WAAW,GAAG,QAAQ,GAAG,oBAAoB,CAAA;AAElD;;GAEG;AACH,KAAK,eAAe,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,SAAS,GACT,aAAa,GACb,oBAAoB,GACpB,iBAAiB,CAAA;AAEpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBtD;AAkCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,eAAe,GAAG,IAAI,CA0EzB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAE1E"}
|
|
@@ -31,7 +31,7 @@ import type { TimebackClient } from '@timeback/core';
|
|
|
31
31
|
* @param courseSourcedId - The OneRoster course sourcedId
|
|
32
32
|
* @returns The line item sourcedId that timeback-api-2 will create
|
|
33
33
|
*/
|
|
34
|
-
export declare function computeCaliperLineItemId(objectId: string, courseSourcedId: string): string
|
|
34
|
+
export declare function computeCaliperLineItemId(objectId: string, courseSourcedId: string): Promise<string>;
|
|
35
35
|
/**
|
|
36
36
|
* Resolve the attempt number for a Caliper ActivityEvent.
|
|
37
37
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempts.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/attempts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AASpD;;;;;;;;;;;;;GAaG;AACH,
|
|
1
|
+
{"version":3,"file":"attempts.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/attempts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AASpD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC7C,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAgED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA4DjB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Environment
|
|
1
|
+
import type { TimebackActivityContext, TimebackActivityMetric, TimeSpentMetric } from '@timeback/caliper';
|
|
2
|
+
import type { Environment } from '@timeback/core';
|
|
3
3
|
import type { ActivityCourseRef, ActivityMetrics } from '../../../shared/types';
|
|
4
|
-
import type { ActivityBeforeSendData, AppConfig } from '../../types';
|
|
5
|
-
import type {
|
|
4
|
+
import type { ActivityBeforeSendData, AppConfig, TimeSpentBeforeSendData } from '../../types';
|
|
5
|
+
import type { CompletionPayload } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Activity Caliper Events
|
|
8
8
|
*
|
|
@@ -40,8 +40,9 @@ export declare class InvalidSensorUrlError extends Error {
|
|
|
40
40
|
* @returns Canonical activity URL
|
|
41
41
|
* @throws {InvalidSensorUrlError} If sensor is not a valid absolute URL
|
|
42
42
|
*
|
|
43
|
-
* @example
|
|
43
|
+
* @example
|
|
44
44
|
* ```typescript
|
|
45
|
+
* // Grade-based
|
|
45
46
|
* buildCanonicalActivityUrl(
|
|
46
47
|
* 'https://sensor.example.com',
|
|
47
48
|
* { subject: 'Math', grade: 3 },
|
|
@@ -50,8 +51,9 @@ export declare class InvalidSensorUrlError extends Error {
|
|
|
50
51
|
* // => 'https://sensor.example.com/activities/Math/g3/fractions-with-like-denominators'
|
|
51
52
|
* ```
|
|
52
53
|
*
|
|
53
|
-
* @example
|
|
54
|
+
* @example
|
|
54
55
|
* ```typescript
|
|
56
|
+
* // Grade-less
|
|
55
57
|
* buildCanonicalActivityUrl(
|
|
56
58
|
* 'https://sensor.example.com',
|
|
57
59
|
* { code: 'CS-101' },
|
|
@@ -105,29 +107,65 @@ export declare function buildActivityMetrics(metrics: ActivityMetrics): Timeback
|
|
|
105
107
|
*/
|
|
106
108
|
export declare function buildTimeSpentMetrics(elapsedMs: number, pausedMs: number): TimeSpentMetric[];
|
|
107
109
|
/**
|
|
108
|
-
* Build Caliper
|
|
110
|
+
* Build the Caliper session field from a runId.
|
|
111
|
+
*
|
|
112
|
+
* The runId is a client-generated correlation ID that links heartbeat
|
|
113
|
+
* TimeSpentEvents with the eventual ActivityCompletedEvent. It maps
|
|
114
|
+
* naturally to the Caliper `session` field, which both Beyond AI and
|
|
115
|
+
* Learn with AI platforms support.
|
|
116
|
+
*
|
|
117
|
+
* @param runId - Activity run correlation ID
|
|
118
|
+
* @returns Session URI string, or undefined if no runId
|
|
119
|
+
*/
|
|
120
|
+
export declare function buildSession(runId?: string): string | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* Build a Caliper ActivityCompletedEvent for a completion submission.
|
|
123
|
+
*
|
|
124
|
+
* Only builds the completion event — time-spent events are handled
|
|
125
|
+
* separately by the heartbeat handler or sendTimeSpent().
|
|
109
126
|
*
|
|
110
127
|
* @param params - Event building parameters
|
|
111
|
-
* @returns Built
|
|
128
|
+
* @returns Built event and context for the beforeActivitySend hook
|
|
112
129
|
*/
|
|
113
|
-
export declare function
|
|
130
|
+
export declare function buildCompletionEvent(params: {
|
|
114
131
|
sensor: string;
|
|
115
132
|
timebackId: string;
|
|
116
133
|
email: string;
|
|
117
|
-
payload:
|
|
134
|
+
payload: CompletionPayload;
|
|
118
135
|
course: AppConfig['courses'][number];
|
|
119
136
|
appName: string;
|
|
120
137
|
apiEnv: Environment;
|
|
121
138
|
onerosterBaseUrl: string;
|
|
122
139
|
attempt?: number;
|
|
140
|
+
runId?: string;
|
|
123
141
|
}): ActivityBeforeSendData;
|
|
124
142
|
/**
|
|
125
|
-
*
|
|
143
|
+
* Build a Caliper TimeSpentEvent for time tracking.
|
|
144
|
+
*
|
|
145
|
+
* Pure function — builds the event and hook data without creating
|
|
146
|
+
* clients or making network calls. Used by both the heartbeat handler
|
|
147
|
+
* and `sendTimeSpent()`.
|
|
126
148
|
*
|
|
127
|
-
* @param
|
|
128
|
-
* @
|
|
129
|
-
* @param activityEvent - ActivityEvent payload
|
|
130
|
-
* @param timeSpentEvent - TimeSpentEvent payload
|
|
149
|
+
* @param params - Event building parameters
|
|
150
|
+
* @returns Built event and context for the beforeTimeSpentSend hook
|
|
131
151
|
*/
|
|
132
|
-
export declare function
|
|
152
|
+
export declare function buildTimeSpentEvent(params: {
|
|
153
|
+
sensor: string;
|
|
154
|
+
timebackId: string;
|
|
155
|
+
email: string;
|
|
156
|
+
payload: {
|
|
157
|
+
id: string;
|
|
158
|
+
name: string;
|
|
159
|
+
course: ActivityCourseRef;
|
|
160
|
+
startedAt: string;
|
|
161
|
+
endedAt: string;
|
|
162
|
+
elapsedMs: number;
|
|
163
|
+
pausedMs: number;
|
|
164
|
+
};
|
|
165
|
+
course: AppConfig['courses'][number];
|
|
166
|
+
appName: string;
|
|
167
|
+
apiEnv: Environment;
|
|
168
|
+
onerosterBaseUrl: string;
|
|
169
|
+
runId?: string;
|
|
170
|
+
}): TimeSpentBeforeSendData;
|
|
133
171
|
//# sourceMappingURL=caliper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caliper.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/caliper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,
|
|
1
|
+
{"version":3,"file":"caliper.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/caliper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat Handler
|
|
3
|
+
*
|
|
4
|
+
* Minimal HTTP route handler for activity heartbeats (time-spent tracking).
|
|
5
|
+
* Only builds and sends TimeSpentEvent - no progress, attempt, XP, or gradebook writes.
|
|
6
|
+
*/
|
|
7
|
+
import type { ActivityHandler, ActivityHandlerConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Create the heartbeat POST handler.
|
|
10
|
+
*
|
|
11
|
+
* @param config - Handler configuration
|
|
12
|
+
* @returns The heartbeat request handler
|
|
13
|
+
*/
|
|
14
|
+
export declare function createHeartbeatHandler(config: ActivityHandlerConfig): ActivityHandler;
|
|
15
|
+
//# sourceMappingURL=heartbeat-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat-handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/heartbeat-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAyDrE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CA0GrF"}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Route handler for activity tracking and submission.
|
|
5
5
|
*/
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export
|
|
6
|
+
export { createHeartbeatHandler } from './heartbeat-handler';
|
|
7
|
+
export { createSubmitHandler } from './submit-handler';
|
|
8
|
+
export { buildActivityContext, buildActivityMetrics, buildCompletionEvent, buildTimeSpentMetrics, InvalidSensorUrlError, MissingSyncedCourseIdError, } from './caliper';
|
|
9
|
+
export { recordCompletion, sendTimeSpent } from './submit';
|
|
10
|
+
export type { ActivityHandler, ActivityHandlerConfig, ActivityUserInfo, CompletionConfig, CompletionDeps, CompletionOptions, CompletionPayload, CompletionResult, HeartbeatValidationResult, SubmitValidationResult, TimeSpentOptions, ValidatedHeartbeatPayload, ValidatedSubmitPayload, } from './types';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC1B,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE1D,YAAY,EACX,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,GACtB,MAAM,SAAS,CAAA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { TimebackClient } from '@timeback/core';
|
|
8
8
|
import type { AppConfig, Environment } from '../../types';
|
|
9
|
-
import type {
|
|
9
|
+
import type { CompletionPayload } from './types';
|
|
10
10
|
/**
|
|
11
11
|
* Result of progress computation.
|
|
12
12
|
*/
|
|
@@ -39,7 +39,7 @@ export declare function computeProgress(params: {
|
|
|
39
39
|
client: TimebackClient;
|
|
40
40
|
courseId: string;
|
|
41
41
|
timebackId: string;
|
|
42
|
-
payload:
|
|
42
|
+
payload: CompletionPayload;
|
|
43
43
|
course: AppConfig['courses'][number];
|
|
44
44
|
env: Environment;
|
|
45
45
|
}): Promise<ProgressResult | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAIhD;;GAEG;AACH,UAAU,cAAc;IACvB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,GAAG,EAAE,WAAW,GACd,MAAM,GAAG,SAAS,CAMpB;AAcD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,GAAG,EAAE,WAAW,CAAA;CAChB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAkLtC"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as z from 'zod';
|
|
7
7
|
import type { AppConfig, Environment } from '../../types';
|
|
8
|
-
import type {
|
|
9
|
-
/** Zod schema for validating
|
|
10
|
-
export declare const
|
|
8
|
+
import type { HeartbeatValidationResult, SubmitValidationResult } from './types';
|
|
9
|
+
/** Zod schema for validating heartbeat payloads. */
|
|
10
|
+
export declare const heartbeatPayloadSchema: z.ZodObject<{
|
|
11
11
|
id: z.ZodString;
|
|
12
12
|
name: z.ZodString;
|
|
13
13
|
course: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -27,25 +27,59 @@ export declare const activityPayloadSchema: z.ZodObject<{
|
|
|
27
27
|
}, z.core.$strip>, z.ZodObject<{
|
|
28
28
|
code: z.ZodString;
|
|
29
29
|
}, z.core.$strip>]>;
|
|
30
|
+
runId: z.ZodString;
|
|
30
31
|
startedAt: z.ZodISODateTime;
|
|
31
32
|
endedAt: z.ZodISODateTime;
|
|
32
33
|
elapsedMs: z.ZodNumber;
|
|
33
34
|
pausedMs: z.ZodNumber;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
/**
|
|
37
|
+
* Validate the heartbeat request body and resolve config dependencies.
|
|
38
|
+
*
|
|
39
|
+
* @param body - Raw request body
|
|
40
|
+
* @param appConfig - App configuration
|
|
41
|
+
* @param env - Environment
|
|
42
|
+
* @returns Validated data or error response
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateHeartbeatRequest(body: unknown, appConfig: AppConfig, env: Environment): HeartbeatValidationResult;
|
|
45
|
+
/** Zod schema for validating submit payloads. */
|
|
46
|
+
export declare const submitPayloadSchema: z.ZodObject<{
|
|
47
|
+
id: z.ZodString;
|
|
48
|
+
name: z.ZodString;
|
|
49
|
+
course: z.ZodUnion<readonly [z.ZodObject<{
|
|
50
|
+
subject: z.ZodEnum<{
|
|
51
|
+
FastMath: "FastMath";
|
|
52
|
+
Language: "Language";
|
|
53
|
+
Math: "Math";
|
|
54
|
+
None: "None";
|
|
55
|
+
Other: "Other";
|
|
56
|
+
Reading: "Reading";
|
|
57
|
+
Science: "Science";
|
|
58
|
+
"Social Studies": "Social Studies";
|
|
59
|
+
Vocabulary: "Vocabulary";
|
|
60
|
+
Writing: "Writing";
|
|
61
|
+
}>;
|
|
62
|
+
grade: z.ZodUnion<readonly [z.ZodLiteral<-1>, z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>, z.ZodLiteral<7>, z.ZodLiteral<8>, z.ZodLiteral<9>, z.ZodLiteral<10>, z.ZodLiteral<11>, z.ZodLiteral<12>, z.ZodLiteral<13>]>;
|
|
63
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
64
|
+
code: z.ZodString;
|
|
65
|
+
}, z.core.$strip>]>;
|
|
66
|
+
runId: z.ZodString;
|
|
67
|
+
endedAt: z.ZodISODateTime;
|
|
34
68
|
metrics: z.ZodObject<{
|
|
35
69
|
totalQuestions: z.ZodOptional<z.ZodNumber>;
|
|
36
70
|
correctQuestions: z.ZodOptional<z.ZodNumber>;
|
|
37
|
-
xpEarned: z.
|
|
71
|
+
xpEarned: z.ZodNumber;
|
|
38
72
|
masteredUnits: z.ZodOptional<z.ZodNumber>;
|
|
39
73
|
}, z.core.$strip>;
|
|
40
74
|
pctComplete: z.ZodPipe<z.ZodOptional<z.ZodNumber>, z.ZodTransform<number | undefined, number | undefined>>;
|
|
41
75
|
}, z.core.$strip>;
|
|
42
76
|
/**
|
|
43
|
-
* Validate the
|
|
77
|
+
* Validate the submit request body and resolve config dependencies.
|
|
44
78
|
*
|
|
45
79
|
* @param body - Raw request body
|
|
46
80
|
* @param appConfig - App configuration
|
|
47
81
|
* @param env - Environment
|
|
48
82
|
* @returns Validated data or error response
|
|
49
83
|
*/
|
|
50
|
-
export declare function
|
|
84
|
+
export declare function validateSubmitRequest(body: unknown, appConfig: AppConfig, env: Environment): SubmitValidationResult;
|
|
51
85
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAOxB,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AA6ChF,oDAAoD;AACpD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;iBASjC,CAAA;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,WAAW,GACd,yBAAyB,CAgE3B;AAMD,iDAAiD;AACjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW9B,CAAA;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,WAAW,GACd,sBAAsB,CAgExB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Submit Handler
|
|
3
|
+
*
|
|
4
|
+
* HTTP route handler for activity completion submissions.
|
|
5
|
+
* Delegates to recordCompletion() for the shared completion pipeline.
|
|
6
|
+
* Only sends ActivityCompletedEvent — heartbeats handle time-spent events separately.
|
|
7
|
+
*/
|
|
8
|
+
import type { IdentityConfig } from '../../types';
|
|
9
|
+
import type { ActivityHandler, ActivityHandlerConfig, ActivityUserInfo } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Get user info from the request based on identity mode.
|
|
12
|
+
*
|
|
13
|
+
* @param identity - Identity configuration
|
|
14
|
+
* @param req - Incoming request
|
|
15
|
+
* @returns User info or undefined if not authenticated
|
|
16
|
+
*/
|
|
17
|
+
export declare function getActivityUserInfo(identity: IdentityConfig, req: Request): Promise<ActivityUserInfo | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* Create the submit POST handler.
|
|
20
|
+
*
|
|
21
|
+
* This handler receives activity completion submissions and delegates to
|
|
22
|
+
* recordCompletion(). Time-spent tracking is handled separately by the
|
|
23
|
+
* heartbeat handler.
|
|
24
|
+
*
|
|
25
|
+
* @param config - Handler configuration
|
|
26
|
+
* @returns The submit request handler
|
|
27
|
+
*/
|
|
28
|
+
export declare function createSubmitHandler(config: ActivityHandlerConfig): ActivityHandler;
|
|
29
|
+
//# sourceMappingURL=submit-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/submit-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAQvF;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,OAAO,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAQvC;AAMD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CA8ElF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity Submit
|
|
3
|
+
*
|
|
4
|
+
* Core functions for activity completion and time-spent event submission.
|
|
5
|
+
*
|
|
6
|
+
* - recordCompletion() — builds and sends ActivityCompletedEvent
|
|
7
|
+
* - sendTimeSpent() — builds and sends TimeSpentEvent
|
|
8
|
+
*
|
|
9
|
+
* Used by both the HTTP handlers and the programmatic
|
|
10
|
+
* `timeback.activity.record()` API.
|
|
11
|
+
*/
|
|
12
|
+
import type { CompletionConfig, CompletionDeps, CompletionOptions, CompletionResult, TimeSpentOptions } from './types';
|
|
13
|
+
export declare const defaultCompletionDeps: CompletionDeps;
|
|
14
|
+
/**
|
|
15
|
+
* Record an activity completion.
|
|
16
|
+
*
|
|
17
|
+
* Builds and sends an ActivityCompletedEvent. Handles progress computation,
|
|
18
|
+
* attempt resolution, the beforeActivitySend hook, and mastery completion
|
|
19
|
+
* entry writes.
|
|
20
|
+
*
|
|
21
|
+
* Time-spent tracking is handled separately by the heartbeat handler
|
|
22
|
+
* or sendTimeSpent().
|
|
23
|
+
*
|
|
24
|
+
* @param config - Completion configuration
|
|
25
|
+
* @param options - Completion options
|
|
26
|
+
* @param deps - Internal dependencies (for testing)
|
|
27
|
+
* @returns Completion result
|
|
28
|
+
*/
|
|
29
|
+
export declare function recordCompletion(config: CompletionConfig, options: CompletionOptions, deps?: CompletionDeps): Promise<CompletionResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Send a TimeSpentEvent for time tracking.
|
|
32
|
+
*
|
|
33
|
+
* Uses the shared client from config, resolves the user,
|
|
34
|
+
* builds and sends the TimeSpentEvent.
|
|
35
|
+
*
|
|
36
|
+
* Used by `timeback.activity.record()` when time data is provided.
|
|
37
|
+
* The HTTP heartbeat handler uses `buildTimeSpentEvent` with
|
|
38
|
+
* additional deduplication logic.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Completion configuration (reuses same config shape)
|
|
41
|
+
* @param options - Time-spent options
|
|
42
|
+
*/
|
|
43
|
+
export declare function sendTimeSpent(config: CompletionConfig, options: TimeSpentOptions): Promise<void>;
|
|
44
|
+
//# sourceMappingURL=submit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/submit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,OAAO,KAAK,EAEX,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EAEjB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,qBAAqB,EAAE,cAGnC,CAAA;AAwBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,GAAE,cAAsC,GAC1C,OAAO,CAAC,gBAAgB,CAAC,CAsI3B;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|