@timeback/sdk 0.1.15-beta.20260312005805 → 0.2.0
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 +5 -3
- package/dist/chunk-1s709w5e.js +2 -0
- package/dist/{chunk-2bqg0gqv.js → chunk-25502p3e.js} +1 -1
- package/dist/{chunk-gqzeagk6.js → chunk-3pf3cpfk.js} +2 -2
- package/dist/chunk-6nybr8hs.js +2 -0
- package/dist/{chunk-x79fk5sn.js → chunk-bh0ewh45.js} +1 -1
- package/dist/{chunk-1yn5w82n.js → chunk-dbcsf5tk.js} +1 -1
- package/dist/chunk-etcswj6j.js +1 -0
- package/dist/{chunk-4pa6jpyx.js → chunk-kkajswjx.js} +1 -1
- package/dist/{chunk-mnj8k0pt.js → chunk-nw6brg34.js} +2 -2
- package/dist/chunk-zpbvsyr1.js +10 -0
- package/dist/chunk-zy9f17gs.js +17 -0
- package/dist/identity.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server/adapters/express.js +1 -1
- package/dist/server/adapters/native.js +2 -2
- package/dist/server/adapters/nextjs.js +1 -1
- package/dist/server/adapters/nuxt.js +1 -1
- package/dist/server/adapters/solid-start.js +1 -1
- package/dist/server/adapters/svelte-kit.js +1 -1
- package/dist/server/adapters/tanstack-start.js +1 -1
- package/dist/server/timeback-identity.d.ts +0 -2
- package/dist/server/timeback-identity.d.ts.map +1 -1
- package/package.json +7 -8
- package/dist/chunk-0skdg1yp.js +0 -11
- package/dist/chunk-gqjmjeta.js +0 -2
- package/dist/chunk-hhh88wcq.js +0 -2
- package/dist/chunk-k51p29gg.js +0 -108
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-bh0ewh45.js";import"../../chunk-nw6brg34.js";import{B as f,C as $,D as V,E as X,F as M}from"../../chunk-3pf3cpfk.js";import{L as _}from"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";function D(K){let z=K.protocol||"http",C=K.get("host")||"localhost",G=`${z}://${C}${K.url}`,B=new Headers;for(let[Q,P]of Object.entries(K.headers))if(P)B.set(Q,Array.isArray(P)?P.join(", "):P);let J={method:K.method,headers:B};if(["POST","PUT","PATCH"].includes(K.method)&&K.body)J.body=JSON.stringify(K.body);return new Request(G,J)}async function Z(K,z){z.status(K.status);let C={};if(K.headers.forEach((B,J)=>{C[J]=B}),z.set(C),K.status>=300&&K.status<400){let B=K.headers.get("Location");if(B){z.redirect(B);return}}let G=await K.text();z.send(G)}function N(K){let z=$(K);return(C,G,B)=>{let J=D(C),Q=new URL(J.url).pathname;(()=>{let F=f({pathname:Q,method:C.method});if(!F)return Promise.resolve(void 0);if(F==="identity.signOut")return Promise.resolve(z.identity.signOut());if(F==="identity.signIn")return z.identity.signIn(J);if(F==="identity.callback")return z.identity.callback(J);if(F==="user.me"){if(!X(z))return Promise.resolve(void 0);return z.user.me(J)}if(F==="user.verify"){if(!X(z))return Promise.resolve(void 0);return z.user.verify(J)}if(F==="activity.heartbeat"){if(!V(z))return Promise.resolve(void 0);return z.activity.heartbeat(J)}if(F==="activity.submit"){if(!V(z))return Promise.resolve(void 0);return z.activity.submit(J)}if(F==="lessons.list"){if(!M(z))return Promise.resolve(void 0);return z.lessons.list(J)}if(F==="lessons.start"){if(!M(z))return Promise.resolve(void 0);return z.lessons.start(J)}if(F==="lessons.next"){if(!M(z))return Promise.resolve(void 0);return z.lessons.next(J)}if(F==="lessons.submit"){if(!M(z))return Promise.resolve(void 0);return z.lessons.submit(J)}if(F==="lessons.complete"){if(!M(z))return Promise.resolve(void 0);return z.lessons.complete(J)}if(F==="lessons.attempts"){if(!M(z))return Promise.resolve(void 0);return z.lessons.attempts(J)}if(F==="lessons.attemptDetails"){if(!M(z))return Promise.resolve(void 0);return z.lessons.attemptDetails(J)}return Promise.resolve(void 0)})().then((F)=>{if(F)return Z(F,G);B()}).catch(()=>{let F=_({error:"Internal server error"},500);return Z(F,G)})}}function O(K,z){let C=$(K);function G(B){return(J,Q)=>{let P=D(J);Promise.resolve(B(P)).then((F)=>Z(F,Q)).catch(()=>{let F=_({error:"Internal server error"},500);return Z(F,Q)})}}if(z.get("/identity/signin",G((B)=>C.identity.signIn(B))),z.get("/identity/callback",G((B)=>C.identity.callback(B))),z.get("/identity/signout",G(()=>C.identity.signOut())),X(C))z.get("/user/me",G((B)=>C.user.me(B))),z.get("/user/verify",G((B)=>C.user.verify(B)));if(V(C))z.post("/activity/heartbeat",G((B)=>C.activity.heartbeat(B))),z.post("/activity/submit",G((B)=>C.activity.submit(B)));if(M(C))z.post("/lessons/list",G((B)=>C.lessons.list(B))),z.post("/lessons/start",G((B)=>C.lessons.start(B))),z.post("/lessons/next",G((B)=>C.lessons.next(B))),z.post("/lessons/submit",G((B)=>C.lessons.submit(B))),z.post("/lessons/complete",G((B)=>C.lessons.complete(B))),z.post("/lessons/attempts",G((B)=>C.lessons.attempts(B))),z.post("/lessons/attempt-details",G((B)=>C.lessons.attemptDetails(B)))}export{N as toExpressMiddleware,O as mountExpressRoutes};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{g as
|
|
1
|
+
import{B as X,C as Y,D as Q,E as V,F as K}from"../../chunk-3pf3cpfk.js";import{L as J}from"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";function C(M){return typeof M==="object"&&M!==null&&"timeback"in M}function g(M){let{timeback:Z,callbackPath:_}=C(M)?M:{timeback:M,callbackPath:void 0},z=Y(Z);return(E)=>{let $=new URL(E.url).pathname,x=E.method,G=X({pathname:$,method:x,callbackPath:_});if(G==="identity.signIn")return z.identity.signIn(E);if(G==="identity.callback")return z.identity.callback(E);if(G==="identity.signOut")return Promise.resolve(z.identity.signOut());if(G==="user.me"){if(!V(z))return Promise.resolve(J({error:"Not found"},404));return z.user.me(E)}if(G==="user.verify"){if(!V(z))return Promise.resolve(J({error:"Not found"},404));return z.user.verify(E)}if(G==="activity.heartbeat"){if(!Q(z))return Promise.resolve(J({error:"Not found"},404));return z.activity.heartbeat(E)}if(G==="activity.submit"){if(!Q(z))return Promise.resolve(J({error:"Not found"},404));return z.activity.submit(E)}if(G==="lessons.list"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.list(E)}if(G==="lessons.start"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.start(E)}if(G==="lessons.next"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.next(E)}if(G==="lessons.submit"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.submit(E)}if(G==="lessons.complete"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.complete(E)}if(G==="lessons.attempts"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.attempts(E)}if(G==="lessons.attemptDetails"){if(!K(z))return Promise.resolve(J({error:"Not found"},404));return z.lessons.attemptDetails(E)}return Promise.resolve(J({error:"Not found"},404))}}export{g as toNativeHandler};
|
|
2
|
+
export{g as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as z}from"./native.js";import"../../chunk-3pf3cpfk.js";import"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.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
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-bh0ewh45.js";import"../../chunk-nw6brg34.js";import{A as N,B as I,C as O,D as z,E as B,F as S}from"../../chunk-3pf3cpfk.js";import{L as X}from"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";function A(x){return new Promise((J,K)=>{let Y=[];x.on("data",(C)=>{if(!C)return;if(C instanceof Buffer)return void Y.push(C);if(typeof C==="string")return void Y.push(Buffer.from(C,"utf-8"));if(C instanceof Uint8Array)return void Y.push(Buffer.from(C))}),x.on("end",()=>J(Buffer.concat(Y).toString("utf-8"))),x.on("error",(C)=>{if(C instanceof Error)K(C)})})}function V(x){if(x.path)return N(x.path);if(x.request){let K=x.request.url;if(K.startsWith("http://")||K.startsWith("https://"))return new URL(K).pathname;return K.split("?")[0]??"/"}return(x.node?.req?.url?.split("?")[0]??"/")||"/"}function M(x){if(!x)return;if(Array.isArray(x))return x[0]?.trim();return x.split(",")[0]?.trim()}function E(x){let J=x.url??"/";if(J.startsWith("http://")||J.startsWith("https://"))return new URL(J).href;let K=M(x.headers["x-forwarded-proto"]),Y=K==="https"?"https":K==="http"?"http":"http",_=M(x.headers["x-forwarded-host"])||x.headers.host||"localhost";return new URL(J,`${Y}://${_}`).href}function w(x){if(x.request)return x.request.url;let J=x.node?.req;if(!J)throw Error("Cannot determine URL from Nuxt event");return E(J)}function W(x){if(x.request)return x.request.method;return x.node?.req?.method??"GET"}async function T(x){if(x.request)return x.request;let J=x.node?.req;if(!J)throw Error("Cannot convert Nuxt event to Request: no request object found");let K=w(x),Y=J.method??"GET",C=new Headers;for(let[$,D]of Object.entries(J.headers))if(D)C.set($,Array.isArray(D)?D.join(", "):D);let _={method:Y,headers:C};if(["POST","PUT","PATCH","DELETE"].includes(Y)){let $=await A(J);if($)_.body=$}return new Request(K,_)}async function P(x){let{timeback:J,event:K,basePath:Y="/api/timeback",callbackPath:C}=x,_=V(K),$=W(K),D=O(J),Q=I({pathname:_,method:$,basePath:Y,callbackPath:C});if(!Q)return;if(Q==="identity.signOut")return D.identity.signOut();let G=await T(K);if(Q==="identity.signIn")return D.identity.signIn(G);if(Q==="identity.callback")return D.identity.callback(G);if(Q==="user.me"){if(!B(D))return;return D.user.me(G)}if(Q==="user.verify"){if(!B(D))return;return D.user.verify(G)}if(Q==="activity.heartbeat"){if(!z(D))return;return D.activity.heartbeat(G)}if(Q==="activity.submit"){if(!z(D))return;return D.activity.submit(G)}if(Q==="lessons.list"){if(!S(D))return;return D.lessons.list(G)}if(Q==="lessons.start"){if(!S(D))return;return D.lessons.start(G)}if(Q==="lessons.next"){if(!S(D))return;return D.lessons.next(G)}if(Q==="lessons.submit"){if(!S(D))return;return D.lessons.submit(G)}if(Q==="lessons.complete"){if(!S(D))return;return D.lessons.complete(G)}if(Q==="lessons.attempts"){if(!S(D))return;return D.lessons.attempts(G)}if(Q==="lessons.attemptDetails"){if(!S(D))return;return D.lessons.attemptDetails(G)}return}function y(x){let J=F(x)?x:{timeback:x},{timeback:K,callbackPath:Y}=J,C=O(K),_=async($)=>{let D=V($),Q=W($),G=I({pathname:D,method:Q,callbackPath:Y});if(!G)return X({error:"Not found"},404);if(G==="identity.signOut")return C.identity.signOut();let Z=await T($);if(G==="identity.signIn")return C.identity.signIn(Z);if(G==="identity.callback")return C.identity.callback(Z);if(G==="user.me"){if(!B(C))return X({error:"Not found"},404);return C.user.me(Z)}if(G==="user.verify"){if(!B(C))return X({error:"Not found"},404);return C.user.verify(Z)}if(G==="activity.heartbeat"){if(!z(C))return X({error:"Not found"},404);return C.activity.heartbeat(Z)}if(G==="activity.submit"){if(!z(C))return X({error:"Not found"},404);return C.activity.submit(Z)}if(G==="lessons.list"){if(!S(C))return X({error:"Not found"},404);return C.lessons.list(Z)}if(G==="lessons.start"){if(!S(C))return X({error:"Not found"},404);return C.lessons.start(Z)}if(G==="lessons.next"){if(!S(C))return X({error:"Not found"},404);return C.lessons.next(Z)}if(G==="lessons.submit"){if(!S(C))return X({error:"Not found"},404);return C.lessons.submit(Z)}if(G==="lessons.complete"){if(!S(C))return X({error:"Not found"},404);return C.lessons.complete(Z)}if(G==="lessons.attempts"){if(!S(C))return X({error:"Not found"},404);return C.lessons.attempts(Z)}if(G==="lessons.attemptDetails"){if(!S(C))return X({error:"Not found"},404);return C.lessons.attemptDetails(Z)}return X({error:"Not found"},404)};return{GET:_,POST:_,PUT:_,DELETE:_,PATCH:_}}function F(x){return typeof x==="object"&&x!==null&&"timeback"in x}export{y as toNuxtHandler,P as nuxtHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-bh0ewh45.js";import"../../chunk-nw6brg34.js";import{B as Q,C as V,D as J,E as K,F}from"../../chunk-3pf3cpfk.js";import{L as G}from"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";function $(N){let B=V(N),I=(C)=>{let D=new URL(C.request.url).pathname,O=C.request.method,z=Q({pathname:D,method:O});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(!K(B))return G({error:"Not found"},404);return B.user.me(C.request)}if(z==="user.verify"){if(!K(B))return G({error:"Not found"},404);return B.user.verify(C.request)}if(z==="activity.heartbeat"){if(!J(B))return G({error:"Not found"},404);return B.activity.heartbeat(C.request)}if(z==="activity.submit"){if(!J(B))return G({error:"Not found"},404);return B.activity.submit(C.request)}if(z==="lessons.list"){if(!F(B))return G({error:"Not found"},404);return B.lessons.list(C.request)}if(z==="lessons.start"){if(!F(B))return G({error:"Not found"},404);return B.lessons.start(C.request)}if(z==="lessons.next"){if(!F(B))return G({error:"Not found"},404);return B.lessons.next(C.request)}if(z==="lessons.submit"){if(!F(B))return G({error:"Not found"},404);return B.lessons.submit(C.request)}if(z==="lessons.complete"){if(!F(B))return G({error:"Not found"},404);return B.lessons.complete(C.request)}if(z==="lessons.attempts"){if(!F(B))return G({error:"Not found"},404);return B.lessons.attempts(C.request)}if(z==="lessons.attemptDetails"){if(!F(B))return G({error:"Not found"},404);return B.lessons.attemptDetails(C.request)}return G({error:"Not found"},404)};return{GET:I,POST:I,PUT:I,DELETE:I,PATCH:I}}function g(N){let{timeback:B,event:I,basePath:C="/api/timeback",callbackPath:W}=N,D=I.request,O=new URL(D.url),z=V(B),X=O.pathname,Y=D.method,E=Q({pathname:X,method:Y,basePath:C,callbackPath:W});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(!K(z))return;return z.user.me(D)}if(E==="user.verify"){if(!K(z))return;return z.user.verify(D)}if(E==="activity.heartbeat"){if(!J(z))return;return z.activity.heartbeat(D)}if(E==="activity.submit"){if(!J(z))return;return z.activity.submit(D)}if(E==="lessons.list"){if(!F(z))return;return z.lessons.list(D)}if(E==="lessons.start"){if(!F(z))return;return z.lessons.start(D)}if(E==="lessons.next"){if(!F(z))return;return z.lessons.next(D)}if(E==="lessons.submit"){if(!F(z))return;return z.lessons.submit(D)}if(E==="lessons.complete"){if(!F(z))return;return z.lessons.complete(D)}if(E==="lessons.attempts"){if(!F(z))return;return z.lessons.attempts(D)}if(E==="lessons.attemptDetails"){if(!F(z))return;return z.lessons.attemptDetails(D)}return}export{$ as toSolidStartHandler,g as solidStartHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as C}from"./native.js";import{B as Z,C as _,D as X,E as Y,F as M}from"../../chunk-3pf3cpfk.js";import"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";async function O(V){let{timeback:Q,event:B,resolve:D,building:W=!1,basePath:E="/api/timeback",callbackPath:G}=V;if(W)return D(B);let{url:I,request:J}=B,z=_(Q),N=I.pathname,R=J.method,F=Z({pathname:N,method:R,basePath:E,callbackPath:G});if(!F)return D(B);if(F==="identity.signOut")return z.identity.signOut();if(F==="identity.signIn")return await z.identity.signIn(J);if(F==="identity.callback")return await z.identity.callback(J);if(F==="user.me"){if(!Y(z))return D(B);return await z.user.me(J)}if(F==="user.verify"){if(!Y(z))return D(B);return await z.user.verify(J)}if(F==="activity.heartbeat"){if(!X(z))return D(B);return await z.activity.heartbeat(J)}if(F==="activity.submit"){if(!X(z))return D(B);return await z.activity.submit(J)}if(F==="lessons.list"){if(!M(z))return D(B);return await z.lessons.list(J)}if(F==="lessons.start"){if(!M(z))return D(B);return await z.lessons.start(J)}if(F==="lessons.next"){if(!M(z))return D(B);return await z.lessons.next(J)}if(F==="lessons.submit"){if(!M(z))return D(B);return await z.lessons.submit(J)}if(F==="lessons.complete"){if(!M(z))return D(B);return await z.lessons.complete(J)}if(F==="lessons.attempts"){if(!M(z))return D(B);return await z.lessons.attempts(J)}if(F==="lessons.attemptDetails"){if(!M(z))return D(B);return await z.lessons.attemptDetails(J)}return D(B)}function g(V){let Q=C(V),B=(D)=>{return(W)=>D(W.request)};return{GET:B(Q),POST:B(Q),PUT:B(Q),DELETE:B(Q),PATCH:B(Q)}}export{g as toSvelteKitHandler,O as svelteKitHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../../chunk-
|
|
1
|
+
import"../../chunk-bh0ewh45.js";import"../../chunk-nw6brg34.js";import{B as I,C as J,D as F,E as G,F as C}from"../../chunk-3pf3cpfk.js";import{L as B}from"../../chunk-dbcsf5tk.js";import"../../chunk-1s709w5e.js";function W(D){let K=X(D)?D:{timeback:D},{timeback:M,callbackPath:N}=K,q=J(M),E=(x)=>{let Q=new URL(x.request.url).pathname,V=x.request.method,z=I({pathname:Q,method:V,callbackPath:N});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(!G(q))return B({error:"Not found"},404);return q.user.me(x.request)}if(z==="user.verify"){if(!G(q))return B({error:"Not found"},404);return q.user.verify(x.request)}if(z==="activity.heartbeat"){if(!F(q))return B({error:"Not found"},404);return q.activity.heartbeat(x.request)}if(z==="activity.submit"){if(!F(q))return B({error:"Not found"},404);return q.activity.submit(x.request)}if(z==="lessons.list"){if(!C(q))return B({error:"Not found"},404);return q.lessons.list(x.request)}if(z==="lessons.start"){if(!C(q))return B({error:"Not found"},404);return q.lessons.start(x.request)}if(z==="lessons.next"){if(!C(q))return B({error:"Not found"},404);return q.lessons.next(x.request)}if(z==="lessons.submit"){if(!C(q))return B({error:"Not found"},404);return q.lessons.submit(x.request)}if(z==="lessons.complete"){if(!C(q))return B({error:"Not found"},404);return q.lessons.complete(x.request)}if(z==="lessons.attempts"){if(!C(q))return B({error:"Not found"},404);return q.lessons.attempts(x.request)}if(z==="lessons.attemptDetails"){if(!C(q))return B({error:"Not found"},404);return q.lessons.attemptDetails(x.request)}return B({error:"Not found"},404)};return{GET:E,POST:E,PUT:E,DELETE:E,PATCH:E}}function X(D){return"timeback"in D}var $=W;export{W as toTanStackStartHandler,$ as tanstackStartHandler};
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
* Timeback Server SDK (Identity-only)
|
|
3
3
|
*
|
|
4
4
|
* Lightweight factory for SSO-only integrations without activity tracking.
|
|
5
|
-
* The entire SDK is now edge-compatible, but this factory avoids the `c12`
|
|
6
|
-
* config-loading overhead that `createTimeback()` requires.
|
|
7
5
|
*/
|
|
8
6
|
import type { IdentityOnlyConfig, IdentityOnlyInstance } from './types';
|
|
9
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeback-identity.d.ts","sourceRoot":"","sources":["../../src/server/timeback-identity.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"timeback-identity.d.ts","sourceRoot":"","sources":["../../src/server/timeback-identity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEvE;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAG,OAAO,EACtD,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAChC,oBAAoB,CAAC,MAAM,CAAC,CAY9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timeback/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Timeback SDK for frontend and backend integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -74,23 +74,22 @@
|
|
|
74
74
|
"test": "bun run test:unit && bun run test:client",
|
|
75
75
|
"test:client": "vitest run --config vitest.config.client-base.ts && vitest run --config vitest.config.client-solid.ts",
|
|
76
76
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
77
|
-
"test:unit": "vitest run --config vitest.config.ts"
|
|
77
|
+
"test:unit": "bun run build && vitest run --config vitest.config.ts"
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@timeback/core": "0.
|
|
81
|
-
"c12": "^3.3.3",
|
|
80
|
+
"@timeback/core": "0.2.0",
|
|
82
81
|
"zod": "^4.2.1"
|
|
83
82
|
},
|
|
84
83
|
"devDependencies": {
|
|
85
|
-
"@timeback/caliper": "0.
|
|
86
|
-
"@timeback/edubridge": "0.
|
|
84
|
+
"@timeback/caliper": "0.2.0",
|
|
85
|
+
"@timeback/edubridge": "0.2.0",
|
|
87
86
|
"@timeback/internal-cli-infra": "0.0.0",
|
|
88
87
|
"@timeback/internal-client-infra": "0.0.0",
|
|
89
88
|
"@timeback/internal-logger": "0.0.0",
|
|
90
89
|
"@timeback/internal-test": "0.0.0",
|
|
91
90
|
"@timeback/internal-utils": "0.0.0",
|
|
92
|
-
"@timeback/oneroster": "0.
|
|
93
|
-
"@timeback/powerpath": "0.
|
|
91
|
+
"@timeback/oneroster": "0.2.0",
|
|
92
|
+
"@timeback/powerpath": "0.2.0",
|
|
94
93
|
"@timeback/types": "0.0.0",
|
|
95
94
|
"@types/bun": "latest",
|
|
96
95
|
"@types/express": "^5.0.6",
|
package/dist/chunk-0skdg1yp.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{W as G,X as Z}from"./chunk-hhh88wcq.js";var fe={};G(fe,{types:()=>v,promisify:()=>H,log:()=>A,isUndefined:()=>p,isSymbol:()=>ee,isString:()=>O,isRegExp:()=>m,isPrimitive:()=>te,isObject:()=>y,isNumber:()=>$,isNullOrUndefined:()=>x,isNull:()=>g,isFunction:()=>b,isError:()=>d,isDate:()=>z,isBuffer:()=>re,isBoolean:()=>D,isArray:()=>N,inspect:()=>l,inherits:()=>F,format:()=>E,deprecate:()=>L,default:()=>oe,debuglog:()=>V,callbackifyOnRejected:()=>k,callbackify:()=>J,_extend:()=>T,TextEncoder:()=>_,TextDecoder:()=>B});function E(e,...t){if(!O(e)){var n=[e];for(var r=0;r<t.length;r++)n.push(l(t[r]));return n.join(" ")}var r=0,s=t.length,o=String(e).replace(I,function(f){if(f==="%%")return"%";if(r>=s)return f;switch(f){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(c){return"[Circular]"}default:return f}});for(var i=t[r];r<s;i=t[++r])if(g(i)||!y(i))o+=" "+i;else o+=" "+l(i);return o}function L(e,t){if(typeof process>"u"||process?.noDeprecation===!0)return e;var n=!1;function r(...s){if(!n){if(process.throwDeprecation)throw Error(t);else if(process.traceDeprecation)console.trace(t);else console.error(t);n=!0}return e.apply(this,...s)}return r}function W(e,t){var n=l.styles[t];if(n)return"\x1B["+l.colors[n][0]+"m"+e+"\x1B["+l.colors[n][1]+"m";else return e}function q(e,t){return e}function K(e){var t={};return e.forEach(function(n,r){t[n]=!0}),t}function h(e,t,n){if(e.customInspect&&t&&b(t.inspect)&&t.inspect!==l&&!(t.constructor&&t.constructor.prototype===t)){var r=t.inspect(n,e);if(!O(r))r=h(e,r,n);return r}var s=Q(e,t);if(s)return s;var o=Object.keys(t),i=K(o);if(e.showHidden)o=Object.getOwnPropertyNames(t);if(d(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return S(t);if(o.length===0){if(b(t)){var f=t.name?": "+t.name:"";return e.stylize("[Function"+f+"]","special")}if(m(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(z(t))return e.stylize(Date.prototype.toString.call(t),"date");if(d(t))return S(t)}var c="",u=!1,a=["{","}"];if(N(t))u=!0,a=["[","]"];if(b(t)){var U=t.name?": "+t.name:"";c=" [Function"+U+"]"}if(m(t))c=" "+RegExp.prototype.toString.call(t);if(z(t))c=" "+Date.prototype.toUTCString.call(t);if(d(t))c=" "+S(t);if(o.length===0&&(!u||t.length==0))return a[0]+c+a[1];if(n<0)if(m(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");else return e.stylize("[Object]","special");e.seen.push(t);var j;if(u)j=X(e,t,n,i,o);else j=o.map(function(M){return P(e,t,n,i,M,u)});return e.seen.pop(),Y(j,c,a)}function Q(e,t){if(p(t))return e.stylize("undefined","undefined");if(O(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if($(t))return e.stylize(""+t,"number");if(D(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}function S(e){return"["+Error.prototype.toString.call(e)+"]"}function X(e,t,n,r,s){var o=[];for(var i=0,f=t.length;i<f;++i)if(R(t,String(i)))o.push(P(e,t,n,r,String(i),!0));else o.push("");return s.forEach(function(c){if(!c.match(/^\d+$/))o.push(P(e,t,n,r,c,!0))}),o}function P(e,t,n,r,s,o){var i,f,c;if(c=Object.getOwnPropertyDescriptor(t,s)||{value:t[s]},c.get)if(c.set)f=e.stylize("[Getter/Setter]","special");else f=e.stylize("[Getter]","special");else if(c.set)f=e.stylize("[Setter]","special");if(!R(r,s))i="["+s+"]";if(!f)if(e.seen.indexOf(c.value)<0){if(g(n))f=h(e,c.value,null);else f=h(e,c.value,n-1);if(f.indexOf(`
|
|
2
|
-
`)>-1)if(o)f=f.split(`
|
|
3
|
-
`).map(function(u){return" "+u}).join(`
|
|
4
|
-
`).slice(2);else f=`
|
|
5
|
-
`+f.split(`
|
|
6
|
-
`).map(function(u){return" "+u}).join(`
|
|
7
|
-
`)}else f=e.stylize("[Circular]","special");if(p(i)){if(o&&s.match(/^\d+$/))return f;if(i=JSON.stringify(""+s),i.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/))i=i.slice(1,-1),i=e.stylize(i,"name");else i=i.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),i=e.stylize(i,"string")}return i+": "+f}function Y(e,t,n){var r=0,s=e.reduce(function(o,i){if(r++,i.indexOf(`
|
|
8
|
-
`)>=0)r++;return o+i.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(s>60)return n[0]+(t===""?"":t+`
|
|
9
|
-
`)+" "+e.join(`,
|
|
10
|
-
`)+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}function N(e){return Array.isArray(e)}function D(e){return typeof e==="boolean"}function g(e){return e===null}function x(e){return e==null}function $(e){return typeof e==="number"}function O(e){return typeof e==="string"}function ee(e){return typeof e==="symbol"}function p(e){return e===void 0}function m(e){return y(e)&&C(e)==="[object RegExp]"}function y(e){return typeof e==="object"&&e!==null}function z(e){return y(e)&&C(e)==="[object Date]"}function d(e){return y(e)&&(C(e)==="[object Error]"||e instanceof Error)}function b(e){return typeof e==="function"}function te(e){return e===null||typeof e==="boolean"||typeof e==="number"||typeof e==="string"||typeof e==="symbol"||typeof e>"u"}function re(e){return e instanceof Buffer}function C(e){return Object.prototype.toString.call(e)}function w(e){return e<10?"0"+e.toString(10):e.toString(10)}function ie(){var e=new Date,t=[w(e.getHours()),w(e.getMinutes()),w(e.getSeconds())].join(":");return[e.getDate(),ne[e.getMonth()],t].join(" ")}function A(...e){console.log("%s - %s",ie(),E.apply(null,e))}function F(e,t){if(t)e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function T(e,t){if(!t||!y(t))return e;var n=Object.keys(t),r=n.length;while(r--)e[n[r]]=t[n[r]];return e}function R(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function k(e,t){if(!e){var n=Error("Promise was rejected with a falsy value");n.reason=e,e=n}return t(e)}function J(e){if(typeof e!=="function")throw TypeError('The "original" argument must be of type Function');function t(...n){var r=n.pop();if(typeof r!=="function")throw TypeError("The last argument must be of type Function");var s=this,o=function(...i){return r.apply(s,...i)};e.apply(this,n).then(function(i){process.nextTick(o.bind(null,null,i))},function(i){process.nextTick(k.bind(null,i,o))})}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)),t}var I,V,l,v=()=>{},ne,H,_,B,oe;var se=Z(()=>{I=/%[sdj%]/g;V=((e={},t={},n)=>((n=typeof process<"u"&&!1)&&(n=n.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase()),t=new RegExp("^"+n+"$","i"),(r)=>{if(r=r.toUpperCase(),!e[r])if(t.test(r))e[r]=function(...s){console.error("%s: %s",r,pid,E.apply(null,...s))};else e[r]=function(){};return e[r]}))(),l=((e)=>(e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.custom=Symbol.for("nodejs.util.inspect.custom"),e))(function(e,t,...n){var r={seen:[],stylize:q};if(n.length>=1)r.depth=n[0];if(n.length>=2)r.colors=n[1];if(D(t))r.showHidden=t;else if(t)T(r,t);if(p(r.showHidden))r.showHidden=!1;if(p(r.depth))r.depth=2;if(p(r.colors))r.colors=!1;if(r.colors)r.stylize=W;return h(r,e,r.depth)});ne=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];H=((e)=>(e.custom=Symbol.for("nodejs.util.promisify.custom"),e))(function(e){if(typeof e!=="function")throw TypeError('The "original" argument must be of type Function');if(kCustomPromisifiedSymbol&&e[kCustomPromisifiedSymbol]){var t=e[kCustomPromisifiedSymbol];if(typeof t!=="function")throw TypeError('The "nodejs.util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,kCustomPromisifiedSymbol,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(...n){var r,s,o=new Promise(function(i,f){r=i,s=f});n.push(function(i,f){if(i)s(i);else r(f)});try{e.apply(this,n)}catch(i){s(i)}return o}if(Object.setPrototypeOf(t,Object.getPrototypeOf(e)),kCustomPromisifiedSymbol)Object.defineProperty(t,kCustomPromisifiedSymbol,{value:t,enumerable:!1,writable:!1,configurable:!0});return Object.defineProperties(t,Object.getOwnPropertyDescriptors(e))});({TextEncoder:_,TextDecoder:B}=globalThis),oe={TextEncoder:_,TextDecoder:B,promisify:H,log:A,inherits:F,_extend:T,callbackifyOnRejected:k,callbackify:J}});se();export{v as types,H as promisify,A as log,p as isUndefined,ee as isSymbol,O as isString,m as isRegExp,te as isPrimitive,y as isObject,$ as isNumber,x as isNullOrUndefined,g as isNull,b as isFunction,d as isError,z as isDate,re as isBuffer,D as isBoolean,N as isArray,l as inspect,F as inherits,E as format,L as deprecate,oe as default,V as debuglog,k as callbackifyOnRejected,J as callbackify,T as _extend,_ as TextEncoder,B as TextDecoder};
|
|
11
|
-
export{fe as a,se as b};
|
package/dist/chunk-gqjmjeta.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{A as v,B as E,x as Y,y as H,z as x}from"./chunk-mnj8k0pt.js";import{M as k,N as _,P as $,Q as O,R as D,S as w}from"./chunk-1yn5w82n.js";function M(G,K,J,N){return{error:G,errorCode:K,state:J,req:N,redirect:$,json:_}}function R(G){try{return D(G)}catch{Y.warn("Failed to decode state");return}}function j(G,K,J,N,W){let Q=K.searchParams.get("error_description");Y.error("IdP returned error",{error:G,description:Q});let V=Error(Q??G);if(W)return W(M(V,G,J,N));return _({error:G},400)}function T(G,K,J){Y.error("Missing authorization code in callback");let N=Error("Missing authorization code");if(J)return J(M(N,"missing_code",G,K));return _({error:"Missing authorization code"},400)}async function L(G){let{req:K,env:J,clientId:N,buildState:W}=G,Q=G.issuer??H(J),V=new URL(K.url),X=G.redirectUri;if(!X){let A=V.pathname.replace(w.IDENTITY.SIGNIN,"");X=`${V.origin}${A}${w.IDENTITY.CALLBACK}`}Y.debug("SSO sign-in initiated",{env:J,issuer:Q,clientId:N,redirectUri:X});let F=W?W({req:K,url:V}):{},Z=O(F),z=await x({issuer:Q,clientId:N,redirectUri:X,state:Z});return $(z)}function S(G){let K=new URL(G.url),J=K.searchParams.get("code"),N=K.searchParams.get("error"),W=K.searchParams.get("state");Y.debug("Received callback from IdP",{hasCode:!!J,error:N});let Q=W?R(W):void 0;return{url:K,code:J,errorParam:N,state:Q}}function h(G,K){if(K)return K;let J=G.pathname.replace(w.IDENTITY.CALLBACK,"");return`${G.origin}${J}${w.IDENTITY.CALLBACK}`}async function P(G,K,J){return await L({req:G,env:K,clientId:J.clientId,issuer:J.issuer,redirectUri:J.redirectUri,buildState:J.buildState})}async function C(G,K,J,N,W,Q){try{let V=Q.issuer??H(W),X=h(K,Q.redirectUri);Y.debug("Exchanging auth code for tokens (identity-only)",{issuer:V,clientId:Q.clientId});let F=await v({issuer:V,clientId:Q.clientId,clientSecret:Q.clientSecret,code:G,redirectUri:X}),Z=await E({issuer:V,accessToken:F.access_token}),z=typeof Z.identities==="string"?JSON.parse(Z.identities):Z.identities;Y.debug("SSO completed (identity-only)",{user:{...Z,identities:z}});let A={tokens:F,user:Z,state:J,req:N,redirect:$,json:_};return Q.onCallbackSuccess(A)}catch(V){let X=V instanceof Error?V:Error("Unknown error");if(Y.error("Token exchange failed (identity-only)",{error:X.message}),Q.onCallbackError)return Q.onCallbackError(M(X,void 0,J,N));return _({error:X.message},500)}}async function I(G,K,J){let{url:N,code:W,errorParam:Q,state:V}=S(G);if(Q)return j(Q,N,V,G,J.onCallbackError);if(!W)return T(V,G,J.onCallbackError);return await C(W,N,V,G,K,J)}function B(G){let{env:K,identity:J}=G;if(J.mode!=="sso")throw Error('Identity-only mode requires identity.mode === "sso"');return{signIn:(N)=>P(N,K,J),callback:(N)=>I(N,K,J),signOut:()=>$("/")}}function t(G){let K=B({env:k(G.env),identity:G.identity});return{config:G,handle:{identity:K}}}
|
|
2
|
-
export{M as g,j as h,T as i,L as j,S as k,h as l,t as m};
|
package/dist/chunk-hhh88wcq.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var j=Object.create;var{getPrototypeOf:k,defineProperty:e,getOwnPropertyNames:h,getOwnPropertyDescriptor:l}=Object,i=Object.prototype.hasOwnProperty;var m=(a,b,c)=>{c=a!=null?j(k(a)):{};let d=b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c;for(let f of h(a))if(!i.call(d,f))e(d,f,{get:()=>a[f],enumerable:!0});return d},g=new WeakMap,n=(a)=>{var b=g.get(a),c;if(b)return b;if(b=e({},"__esModule",{value:!0}),a&&typeof a==="object"||typeof a==="function")h(a).map((d)=>!i.call(b,d)&&e(b,d,{get:()=>a[d],enumerable:!(c=l(a,d))||c.enumerable}));return g.set(a,b),b},o=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var p=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0,configurable:!0,set:(d)=>b[c]=()=>d})};var q=(a,b)=>()=>(a&&(b=a(a=0)),b);var r=((a)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});
|
|
2
|
-
export{m as T,n as U,o as V,p as W,q as X,r as Y};
|