@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.
Files changed (163) hide show
  1. package/README.md +10 -8
  2. package/dist/chunk-1cqa51je.js +2 -0
  3. package/dist/chunk-3ew9vn2d.js +2 -0
  4. package/dist/chunk-6b0ppq9d.js +2 -0
  5. package/dist/chunk-92nnwa7t.js +2 -0
  6. package/dist/chunk-bavxzt1k.js +2 -0
  7. package/dist/chunk-c8pw96sp.js +10 -0
  8. package/dist/chunk-edk3nfj7.js +2 -0
  9. package/dist/chunk-g67efaph.js +4 -0
  10. package/dist/chunk-pd91g539.js +1 -0
  11. package/dist/chunk-sgcwg4j6.js +1 -0
  12. package/dist/client/adapters/react/hooks/types.d.ts +2 -29
  13. package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
  14. package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
  15. package/dist/client/adapters/react/index.js +2 -2
  16. package/dist/client/adapters/solid/types.d.ts +2 -29
  17. package/dist/client/adapters/solid/types.d.ts.map +1 -1
  18. package/dist/client/adapters/solid/types.ts +2 -18
  19. package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
  20. package/dist/client/adapters/svelte/stores/client.ts +2 -9
  21. package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
  22. package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
  23. package/dist/client/adapters/svelte/stores/profile.ts +4 -11
  24. package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
  25. package/dist/client/adapters/svelte/stores/verification.ts +1 -10
  26. package/dist/client/adapters/svelte/types.d.ts +1 -29
  27. package/dist/client/adapters/svelte/types.d.ts.map +1 -1
  28. package/dist/client/adapters/vue/provider.d.ts.map +1 -1
  29. package/dist/client/adapters/vue/provider.ts +4 -11
  30. package/dist/client/adapters/vue/types.d.ts +2 -29
  31. package/dist/client/adapters/vue/types.d.ts.map +1 -1
  32. package/dist/client/adapters/vue/types.ts +2 -18
  33. package/dist/client/auth/types.d.ts +1 -1
  34. package/dist/client/index.d.ts +1 -1
  35. package/dist/client/lib/activity/activity.class.d.ts +130 -22
  36. package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
  37. package/dist/client/lib/activity/transport.d.ts +15 -0
  38. package/dist/client/lib/activity/transport.d.ts.map +1 -0
  39. package/dist/client/lib/activity/types.d.ts +53 -0
  40. package/dist/client/lib/activity/types.d.ts.map +1 -0
  41. package/dist/client/lib/utils.d.ts +18 -0
  42. package/dist/client/lib/utils.d.ts.map +1 -1
  43. package/dist/client/lib/utils.ts +109 -0
  44. package/dist/client/namespaces/activity.d.ts +49 -7
  45. package/dist/client/namespaces/activity.d.ts.map +1 -1
  46. package/dist/client/timeback-client.class.d.ts +7 -1
  47. package/dist/client/timeback-client.class.d.ts.map +1 -1
  48. package/dist/client.d.ts +1 -1
  49. package/dist/client.js +1 -1
  50. package/dist/identity.d.ts +2 -5
  51. package/dist/identity.d.ts.map +1 -1
  52. package/dist/identity.js +1 -1
  53. package/dist/index.d.ts +7 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +30 -21
  56. package/dist/server/adapters/express.d.ts.map +1 -1
  57. package/dist/server/adapters/express.js +1 -1
  58. package/dist/server/adapters/native.d.ts.map +1 -1
  59. package/dist/server/adapters/native.js +2 -2
  60. package/dist/server/adapters/nextjs.js +1 -1
  61. package/dist/server/adapters/nuxt.d.ts.map +1 -1
  62. package/dist/server/adapters/nuxt.js +1 -1
  63. package/dist/server/adapters/solid-start.d.ts.map +1 -1
  64. package/dist/server/adapters/solid-start.js +1 -1
  65. package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
  66. package/dist/server/adapters/svelte-kit.js +1 -1
  67. package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
  68. package/dist/server/adapters/tanstack-start.js +1 -1
  69. package/dist/server/adapters/types.d.ts +16 -4
  70. package/dist/server/adapters/types.d.ts.map +1 -1
  71. package/dist/server/adapters/utils.d.ts +1 -1
  72. package/dist/server/adapters/utils.d.ts.map +1 -1
  73. package/dist/server/handlers/activity/attempts.d.ts +1 -1
  74. package/dist/server/handlers/activity/attempts.d.ts.map +1 -1
  75. package/dist/server/handlers/activity/caliper.d.ts +54 -16
  76. package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
  77. package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
  78. package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
  79. package/dist/server/handlers/activity/index.d.ts +5 -3
  80. package/dist/server/handlers/activity/index.d.ts.map +1 -1
  81. package/dist/server/handlers/activity/progress.d.ts +2 -2
  82. package/dist/server/handlers/activity/progress.d.ts.map +1 -1
  83. package/dist/server/handlers/activity/schema.d.ts +40 -6
  84. package/dist/server/handlers/activity/schema.d.ts.map +1 -1
  85. package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
  86. package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
  87. package/dist/server/handlers/activity/submit.d.ts +44 -0
  88. package/dist/server/handlers/activity/submit.d.ts.map +1 -0
  89. package/dist/server/handlers/activity/types.d.ts +126 -5
  90. package/dist/server/handlers/activity/types.d.ts.map +1 -1
  91. package/dist/server/handlers/identity/handler.d.ts +23 -4
  92. package/dist/server/handlers/identity/handler.d.ts.map +1 -1
  93. package/dist/server/handlers/identity/index.d.ts +2 -2
  94. package/dist/server/handlers/identity/index.d.ts.map +1 -1
  95. package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
  96. package/dist/server/handlers/identity/types.d.ts +0 -6
  97. package/dist/server/handlers/identity/types.d.ts.map +1 -1
  98. package/dist/server/handlers/index.d.ts +3 -3
  99. package/dist/server/handlers/index.d.ts.map +1 -1
  100. package/dist/server/handlers/user/handler.d.ts.map +1 -1
  101. package/dist/server/handlers/user/profile.d.ts.map +1 -1
  102. package/dist/server/handlers/user/types.d.ts +3 -0
  103. package/dist/server/handlers/user/types.d.ts.map +1 -1
  104. package/dist/server/handlers/user/verify.d.ts.map +1 -1
  105. package/dist/server/index.d.ts +1 -1
  106. package/dist/server/index.d.ts.map +1 -1
  107. package/dist/server/lib/hooks.d.ts +20 -0
  108. package/dist/server/lib/hooks.d.ts.map +1 -0
  109. package/dist/server/lib/index.d.ts +4 -2
  110. package/dist/server/lib/index.d.ts.map +1 -1
  111. package/dist/server/lib/logger.d.ts +36 -9
  112. package/dist/server/lib/logger.d.ts.map +1 -1
  113. package/dist/server/lib/resolve.d.ts +1 -1
  114. package/dist/server/lib/resolve.d.ts.map +1 -1
  115. package/dist/server/lib/utils.d.ts +23 -2
  116. package/dist/server/lib/utils.d.ts.map +1 -1
  117. package/dist/server/lib/validation.d.ts +55 -0
  118. package/dist/server/lib/validation.d.ts.map +1 -0
  119. package/dist/server/namespaces/activity/index.d.ts +8 -0
  120. package/dist/server/namespaces/activity/index.d.ts.map +1 -0
  121. package/dist/server/namespaces/activity/record.d.ts +49 -0
  122. package/dist/server/namespaces/activity/record.d.ts.map +1 -0
  123. package/dist/server/namespaces/activity/schema.d.ts +50 -0
  124. package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
  125. package/dist/server/namespaces/user/get-profile.d.ts +32 -0
  126. package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
  127. package/dist/server/namespaces/user/index.d.ts +8 -0
  128. package/dist/server/namespaces/user/index.d.ts.map +1 -0
  129. package/dist/server/namespaces/user/verify.d.ts +28 -0
  130. package/dist/server/namespaces/user/verify.d.ts.map +1 -0
  131. package/dist/server/timeback-identity.d.ts +3 -3
  132. package/dist/server/timeback.d.ts +5 -3
  133. package/dist/server/timeback.d.ts.map +1 -1
  134. package/dist/server/types.d.ts +407 -14
  135. package/dist/server/types.d.ts.map +1 -1
  136. package/dist/shared/constants.d.ts +7 -0
  137. package/dist/shared/constants.d.ts.map +1 -1
  138. package/dist/shared/constants.ts +51 -0
  139. package/dist/shared/index.d.ts +9 -0
  140. package/dist/shared/index.d.ts.map +1 -0
  141. package/dist/shared/schemas.d.ts +57 -0
  142. package/dist/shared/schemas.d.ts.map +1 -0
  143. package/dist/shared/types.d.ts +287 -18
  144. package/dist/shared/types.d.ts.map +1 -1
  145. package/dist/shared/types.ts +636 -0
  146. package/package.json +7 -10
  147. package/dist/chunk-07j8zre9.js +0 -2
  148. package/dist/chunk-5171mkp2.js +0 -2
  149. package/dist/chunk-63afdp3y.js +0 -8
  150. package/dist/chunk-8gg8n8v9.js +0 -2
  151. package/dist/chunk-9se82640.js +0 -1
  152. package/dist/chunk-agpf1x3g.js +0 -16
  153. package/dist/chunk-hnf0tart.js +0 -2
  154. package/dist/chunk-qr0bbnsr.js +0 -1
  155. package/dist/chunk-whc53e0y.js +0 -11
  156. package/dist/chunk-x9gvef7q.js +0 -1
  157. package/dist/edge.d.ts +0 -13
  158. package/dist/edge.d.ts.map +0 -1
  159. package/dist/edge.js +0 -1
  160. package/dist/server/handlers/activity/handler.d.ts +0 -32
  161. package/dist/server/handlers/activity/handler.d.ts.map +0 -1
  162. package/dist/shared/xp-calculator.d.ts +0 -25
  163. 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,CAiD/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA6D3F"}
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-x9gvef7q.js";import"../../chunk-9se82640.js";import{A as Z,B as P,y as _,z as X}from"../../chunk-5171mkp2.js";import{I as V}from"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.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 Q(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=X(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(!P(z))return Promise.resolve(void 0);return z.user.me(K)}if(G==="user.verify"){if(!P(z))return Promise.resolve(void 0);return z.user.verify(K)}if(G==="activity"){if(!Z(z))return Promise.resolve(void 0);return z.activity(K)}return Promise.resolve(void 0)})().then((G)=>{if(G)return Q(G,J);B()}).catch(()=>{let G=V({error:"Internal server error"},500);return Q(G,J)})}}function j(C,z){let F=X(C);function J(B){return(K,M)=>{let L=$(K);Promise.resolve(B(L)).then((G)=>Q(G,M)).catch(()=>{let G=V({error:"Internal server error"},500);return Q(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())),P(F))z.get("/user/me",J((B)=>F.user.me(B))),z.get("/user/verify",J((B)=>F.user.verify(B)));if(Z(F))z.post("/activity",J((B)=>F.activity(B)))}export{Y as toExpressMiddleware,j as mountExpressRoutes};
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,CA+CrC"}
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,y as M,z as Q}from"../../chunk-5171mkp2.js";import{I as K}from"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";function $(E){return typeof E==="object"&&E!==null&&"timeback"in E}function S(E){let{timeback:X,callbackPath:Y}=$(E)?E:{timeback:E,callbackPath:void 0},z=Q(X);return(G)=>{let Z=new URL(G.url).pathname,_=G.method,J=M({pathname:Z,method:_,callbackPath:Y});if(J==="identity.signIn")return z.identity.signIn(G);if(J==="identity.callback")return z.identity.callback(G);if(J==="identity.signOut")return Promise.resolve(z.identity.signOut());if(J==="user.me"){if(!L(z))return Promise.resolve(K({error:"Not found"},404));return z.user.me(G)}if(J==="user.verify"){if(!L(z))return Promise.resolve(K({error:"Not found"},404));return z.user.verify(G)}if(J==="activity"){if(!V(z))return Promise.resolve(K({error:"Not found"},404));return z.activity(G)}return Promise.resolve(K({error:"Not found"},404))}}export{S as toNativeHandler};
2
- export{S as d};
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{d as z}from"./native.js";import"../../chunk-5171mkp2.js";import"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";function F(B){let g=z(B);return{GET:g,POST:g,PUT:g,DELETE:g,PATCH:g}}export{F as toNextjsHandler};
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,CAiC/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,CA4Cd"}
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-x9gvef7q.js";import"../../chunk-9se82640.js";import{A as B,B as _,x as O,y as $,z}from"../../chunk-5171mkp2.js";import{I as Y}from"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";function W(x){return new Promise((D,G)=>{let K=[];x.on("data",(C)=>{if(!C)return;if(C instanceof Buffer)return void K.push(C);if(typeof C==="string")return void K.push(Buffer.from(C,"utf-8"));if(C instanceof Uint8Array)return void K.push(Buffer.from(C))}),x.on("end",()=>D(Buffer.concat(K).toString("utf-8"))),x.on("error",(C)=>{if(C instanceof Error)G(C)})})}function M(x){if(x.path)return O(x.path);if(x.request){let G=x.request.url;if(G.startsWith("http://")||G.startsWith("https://"))return new URL(G).pathname;return G.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 A(x){let D=x.url??"/";if(D.startsWith("http://")||D.startsWith("https://"))return new URL(D).href;let G=I(x.headers["x-forwarded-proto"]),K=G==="https"?"https":G==="http"?"http":"http",Q=I(x.headers["x-forwarded-host"])||x.headers.host||"localhost";return new URL(D,`${K}://${Q}`).href}function T(x){if(x.request)return x.request.url;let D=x.node?.req;if(!D)throw Error("Cannot determine URL from Nuxt event");return A(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 G=T(x),K=D.method??"GET",C=new Headers;for(let[S,J]of Object.entries(D.headers))if(J)C.set(S,Array.isArray(J)?J.join(", "):J);let Q={method:K,headers:C};if(["POST","PUT","PATCH","DELETE"].includes(K)){let S=await W(D);if(S)Q.body=S}return new Request(G,Q)}async function j(x){let{timeback:D,event:G,basePath:K="/api/timeback",callbackPath:C}=x,Q=M(G),S=N(G),J=z(D),X=$({pathname:Q,method:S,basePath:K,callbackPath:C});if(!X)return;if(X==="identity.signOut")return J.identity.signOut();let L=await V(G);if(X==="identity.signIn")return J.identity.signIn(L);if(X==="identity.callback")return J.identity.callback(L);if(X==="user.me"){if(!_(J))return;return J.user.me(L)}if(X==="user.verify"){if(!_(J))return;return J.user.verify(L)}if(X==="activity"){if(!B(J))return;return J.activity(L)}return}function y(x){let D=E(x)?x:{timeback:x},{timeback:G,callbackPath:K}=D,C=z(G),Q=async(S)=>{let J=M(S),X=N(S),L=$({pathname:J,method:X,callbackPath:K});if(!L)return Y({error:"Not found"},404);if(L==="identity.signOut")return C.identity.signOut();let Z=await V(S);if(L==="identity.signIn")return C.identity.signIn(Z);if(L==="identity.callback")return C.identity.callback(Z);if(L==="user.me"){if(!_(C))return Y({error:"Not found"},404);return C.user.me(Z)}if(L==="user.verify"){if(!_(C))return Y({error:"Not found"},404);return C.user.verify(Z)}if(L==="activity"){if(!B(C))return Y({error:"Not found"},404);return C.activity(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{y as toNuxtHandler,j as nuxtHandler};
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,CAuC/E;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,wBAAwB,GAC/B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CA8B1C"}
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-x9gvef7q.js";import"../../chunk-9se82640.js";import{A as O,B as I,y as L,z as N}from"../../chunk-5171mkp2.js";import{I as G}from"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";function Z(J){let B=N(J),E=(C)=>{let D=new URL(C.request.url).pathname,K=C.request.method,z=L({pathname:D,method:K});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(!I(B))return G({error:"Not found"},404);return B.user.me(C.request)}if(z==="user.verify"){if(!I(B))return G({error:"Not found"},404);return B.user.verify(C.request)}if(z==="activity"){if(!O(B))return G({error:"Not found"},404);return B.activity(C.request)}return G({error:"Not found"},404)};return{GET:E,POST:E,PUT:E,DELETE:E,PATCH:E}}function _(J){let{timeback:B,event:E,basePath:C="/api/timeback",callbackPath:Q}=J,D=E.request,K=new URL(D.url),z=N(B),V=K.pathname,W=D.method,F=L({pathname:V,method:W,basePath:C,callbackPath:Q});if(!F)return;if(F==="identity.signOut")return z.identity.signOut();if(F==="identity.signIn")return z.identity.signIn(D);if(F==="identity.callback")return z.identity.callback(D);if(F==="user.me"){if(!I(z))return;return z.user.me(D)}if(F==="user.verify"){if(!I(z))return;return z.user.verify(D)}if(F==="activity"){if(!O(z))return;return z.activity(D)}return}export{Z as toSolidStartHandler,_ as solidStartHandler};
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,CAyDnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAgB7E"}
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{d as Z}from"./native.js";import{A as Y,B as V,y as W,z as X}from"../../chunk-5171mkp2.js";import"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";async function $(M){let{timeback:F,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=X(F),G=E.pathname,I=L.method,J=W({pathname:G,method:I,basePath:_,callbackPath:C});if(!J)return D(z);if(J==="identity.signOut")return B.identity.signOut();if(J==="identity.signIn")return await B.identity.signIn(L);if(J==="identity.callback")return await B.identity.callback(L);if(J==="user.me"){if(!V(B))return D(z);return await B.user.me(L)}if(J==="user.verify"){if(!V(B))return D(z);return await B.user.verify(L)}if(J==="activity"){if(!Y(B))return D(z);return await B.activity(L)}return D(z)}function j(M){let F=Z(M),z=(D)=>{return(Q)=>D(Q.request)};return{GET:z(F),POST:z(F),PUT:z(F),DELETE:z(F),PATCH:z(F)}}export{j as toSvelteKitHandler,$ as svelteKitHandler};
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,CA0CvB;AAcD;;GAEG;AACH,eAAO,MAAM,oBAAoB,+BAAyB,CAAA"}
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-x9gvef7q.js";import"../../chunk-9se82640.js";import{A as I,B as E,y as F,z as G}from"../../chunk-5171mkp2.js";import{I as B}from"../../chunk-hnf0tart.js";import"../../chunk-07j8zre9.js";function Q(C){let J=V(C)?C:{timeback:C},{timeback:K,callbackPath:L}=J,q=G(K),D=(x)=>{let M=new URL(x.request.url).pathname,N=x.request.method,z=F({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(!E(q))return B({error:"Not found"},404);return q.user.me(x.request)}if(z==="user.verify"){if(!E(q))return B({error:"Not found"},404);return q.user.verify(x.request)}if(z==="activity"){if(!I(q))return B({error:"Not found"},404);return q.activity(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};
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 '/api/auth/sso/callback/timeback'
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 '/api/auth/sso/callback/timeback'
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 '/api/auth/sso/callback/timeback'
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 '/api/auth/sso/callback/timeback'
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":"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"}
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,UAAU,CAAA;AAEb;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBtD;AA8BD;;;;;;;;;;;;;;;;;;;;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,CAwDzB;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"}
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,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAG1F;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
+ {"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 { ActivityCompletedEvent, TimebackActivityContext, TimebackActivityMetric, TimeSpentEvent, TimeSpentMetric } from '@timeback/caliper';
2
- import type { Environment, TimebackClient } from '@timeback/core';
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 { ValidatedActivityPayload } from './types';
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 Grade-based
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 Grade-less
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 events for an activity.
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 events and context
128
+ * @returns Built event and context for the beforeActivitySend hook
112
129
  */
113
- export declare function buildActivityEvents(params: {
130
+ export declare function buildCompletionEvent(params: {
114
131
  sensor: string;
115
132
  timebackId: string;
116
133
  email: string;
117
- payload: ValidatedActivityPayload;
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
- * Send a batch of Caliper events as a single envelope.
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 client - Timeback API client
128
- * @param sensor - Caliper sensor URL
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 sendCaliperEnvelope(client: TimebackClient, sensor: string, activityEvent: ActivityCompletedEvent, timeSpentEvent: TimeSpentEvent): Promise<void>;
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,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EAEtB,cAAc,EACd,eAAe,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD;;;;GAIG;AAMH;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IAEzB,YAAY,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAWjE;CACD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,YAAY,MAAM,EAAE,MAAM,EAMzB;CACD;AAuGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,MAAM,GACV,MAAM,CAoBR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,EAChE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACtB,uBAAuB,CAuBzB;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,sBAAsB,EAAE,CAoBvF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAQ5F;AA2DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,sBAAsB,CAkDzB;AAMD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,sBAAsB,EACrC,cAAc,EAAE,cAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAEf"}
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 { createActivityHandler } from './handler';
7
- export { buildActivityContext, buildActivityMetrics, buildTimeSpentMetrics, InvalidSensorUrlError, MissingSyncedCourseIdError, sendCaliperEnvelope, } from './caliper';
8
- export type { ActivityHandler, ActivityHandlerConfig, ActivityUserInfo, ValidatedActivityPayload, ValidationResult, } from './types';
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,WAAW,CAAA;AAEjD,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,GACnB,MAAM,WAAW,CAAA;AAElB,YAAY,EACX,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GAChB,MAAM,SAAS,CAAA"}
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 { ValidatedActivityPayload } from './types';
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: ValidatedActivityPayload;
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,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD;;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,wBAAwB,CAAA;IACjC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,GAAG,EAAE,WAAW,CAAA;CAChB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAkLtC"}
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 { ValidationResult } from './types';
9
- /** Zod schema for validating activity payloads. */
10
- export declare const activityPayloadSchema: z.ZodObject<{
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.ZodOptional<z.ZodNumber>;
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 activity request body and resolve config dependencies.
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 validateActivityRequest(body: unknown, appConfig: AppConfig, env: Environment): ValidationResult;
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;AAWxB,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA0E/C,mDAAmD;AACnD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAA;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,WAAW,GACd,gBAAgB,CAiHlB"}
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"}