@timeback/sdk 0.1.7 → 0.1.9
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 +97 -8
- package/dist/chunk-07j8zre9.js +2 -0
- package/dist/chunk-5171mkp2.js +2 -0
- package/dist/chunk-63afdp3y.js +8 -0
- package/dist/chunk-8gg8n8v9.js +2 -0
- package/dist/chunk-9se82640.js +1 -0
- package/dist/chunk-agpf1x3g.js +16 -0
- package/dist/chunk-hnf0tart.js +2 -0
- package/dist/chunk-qr0bbnsr.js +1 -0
- package/dist/chunk-whc53e0y.js +11 -0
- package/dist/chunk-x9gvef7q.js +1 -0
- package/dist/client/adapters/react/hooks/types.d.ts +80 -0
- package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
- package/dist/client/adapters/react/hooks/useTimebackProfile.d.ts +42 -0
- package/dist/client/adapters/react/hooks/useTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts +17 -5
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
- package/dist/client/adapters/react/index.d.ts +2 -1
- package/dist/client/adapters/react/index.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +2 -494
- package/dist/client/adapters/react/provider.d.ts.map +1 -1
- package/dist/client/adapters/solid/index.d.ts +3 -0
- package/dist/client/adapters/solid/index.d.ts.map +1 -1
- package/dist/client/adapters/solid/index.ts +12 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.d.ts +58 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.ts +209 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts +38 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts.map +1 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.ts +173 -0
- package/dist/client/adapters/solid/types.d.ts +109 -0
- package/dist/client/adapters/solid/types.d.ts.map +1 -0
- package/dist/client/adapters/solid/types.ts +110 -0
- package/dist/client/adapters/svelte/index.d.ts +2 -1
- package/dist/client/adapters/svelte/index.d.ts.map +1 -1
- package/dist/client/adapters/svelte/index.ts +11 -2
- package/dist/client/adapters/svelte/{stores.d.ts → stores/client.d.ts} +11 -9
- package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -0
- package/dist/client/adapters/svelte/{stores.ts → stores/client.ts} +24 -52
- package/dist/client/adapters/svelte/stores/index.d.ts +10 -0
- package/dist/client/adapters/svelte/stores/index.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/index.ts +22 -0
- package/dist/client/adapters/svelte/stores/profile.d.ts +66 -0
- package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/profile.ts +168 -0
- package/dist/client/adapters/svelte/stores/verification.d.ts +43 -0
- package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/verification.ts +208 -0
- package/dist/client/adapters/svelte/types.d.ts +35 -0
- package/dist/client/adapters/svelte/types.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.d.ts +51 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.ts +186 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts +46 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.ts +169 -0
- package/dist/client/adapters/vue/index.d.ts +3 -0
- package/dist/client/adapters/vue/index.d.ts.map +1 -1
- package/dist/client/adapters/vue/index.ts +12 -1
- package/dist/client/adapters/vue/types.d.ts +109 -0
- package/dist/client/adapters/vue/types.d.ts.map +1 -0
- package/dist/client/adapters/vue/types.ts +110 -0
- package/dist/client/lib/activity/activity.class.d.ts +5 -5
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/user-cache.d.ts +39 -0
- package/dist/client/lib/user-cache.d.ts.map +1 -0
- package/dist/client/lib/user-cache.ts +168 -0
- package/dist/client/lib/utils.d.ts +15 -0
- package/dist/client/lib/utils.d.ts.map +1 -1
- package/dist/client/namespaces/activity.d.ts +2 -3
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -257
- package/dist/edge.js +1 -86271
- package/dist/identity.js +1 -86131
- package/dist/index.d.ts +2 -2
- package/dist/index.js +22 -104883
- package/dist/server/adapters/express.js +1 -85973
- package/dist/server/adapters/native.js +2 -221
- package/dist/server/adapters/nextjs.js +1 -233
- package/dist/server/adapters/nuxt.js +1 -86046
- package/dist/server/adapters/solid-start.js +1 -85945
- package/dist/server/adapters/svelte-kit.js +1 -279
- package/dist/server/adapters/tanstack-start.js +1 -85918
- package/dist/server/handlers/activity/attempts.d.ts +51 -0
- package/dist/server/handlers/activity/attempts.d.ts.map +1 -0
- package/dist/server/handlers/activity/caliper.d.ts +46 -5
- package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
- package/dist/server/handlers/activity/completion.d.ts +43 -0
- package/dist/server/handlers/activity/completion.d.ts.map +1 -0
- package/dist/server/handlers/activity/handler.d.ts +18 -1
- package/dist/server/handlers/activity/handler.d.ts.map +1 -1
- package/dist/server/handlers/activity/progress.d.ts +47 -0
- package/dist/server/handlers/activity/progress.d.ts.map +1 -0
- package/dist/server/handlers/activity/schema.d.ts +1 -2
- package/dist/server/handlers/activity/schema.d.ts.map +1 -1
- package/dist/server/handlers/activity/types.d.ts +1 -2
- package/dist/server/handlers/activity/types.d.ts.map +1 -1
- package/dist/server/lib/index.d.ts +1 -1
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/utils.d.ts +61 -0
- package/dist/server/lib/utils.d.ts.map +1 -1
- package/dist/server/timeback.d.ts +2 -2
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +7 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +19 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/types.d.ts +62 -8
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/xp-calculator.d.ts +25 -0
- package/dist/shared/xp-calculator.d.ts.map +1 -0
- package/package.json +6 -4
- package/dist/client/adapters/svelte/stores.d.ts.map +0 -1
- package/dist/server/handlers/activity/gradebook.d.ts +0 -56
- package/dist/server/handlers/activity/gradebook.d.ts.map +0 -1
|
@@ -1,279 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
-
for (let key of __getOwnPropNames(mod))
|
|
11
|
-
if (!__hasOwnProp.call(to, key))
|
|
12
|
-
__defProp(to, key, {
|
|
13
|
-
get: () => mod[key],
|
|
14
|
-
enumerable: true
|
|
15
|
-
});
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
19
|
-
|
|
20
|
-
// src/server/lib/utils.ts
|
|
21
|
-
function safeIdSegment(value) {
|
|
22
|
-
return encodeURIComponent(value).replace(/%/g, "_");
|
|
23
|
-
}
|
|
24
|
-
function hashSuffix64Base36(value) {
|
|
25
|
-
let hash = 0xcbf29ce484222325n;
|
|
26
|
-
const prime = 0x100000001b3n;
|
|
27
|
-
const mod64 = 0xffffffffffffffffn;
|
|
28
|
-
for (let i = 0;i < value.length; i++) {
|
|
29
|
-
hash ^= BigInt(value.charCodeAt(i));
|
|
30
|
-
hash = hash * prime & mod64;
|
|
31
|
-
}
|
|
32
|
-
const base36 = hash.toString(36);
|
|
33
|
-
return base36.length > 12 ? base36.slice(-12) : base36;
|
|
34
|
-
}
|
|
35
|
-
function mapEnvForApi(env) {
|
|
36
|
-
if (env === "local" || env === "staging") {
|
|
37
|
-
return "staging";
|
|
38
|
-
}
|
|
39
|
-
return "production";
|
|
40
|
-
}
|
|
41
|
-
function normalizeEnv(env) {
|
|
42
|
-
if (env === "production" || env === "local" || env === "staging") {
|
|
43
|
-
return env;
|
|
44
|
-
}
|
|
45
|
-
return "staging";
|
|
46
|
-
}
|
|
47
|
-
function jsonResponse(data, status = 200, headers) {
|
|
48
|
-
const responseHeaders = new Headers(headers);
|
|
49
|
-
responseHeaders.set("Content-Type", "application/json");
|
|
50
|
-
return new Response(JSON.stringify(data), { status, headers: responseHeaders });
|
|
51
|
-
}
|
|
52
|
-
function redirectResponse(url, headers) {
|
|
53
|
-
const responseHeaders = new Headers(headers);
|
|
54
|
-
responseHeaders.set("Location", url);
|
|
55
|
-
return new Response(null, { status: 302, headers: responseHeaders });
|
|
56
|
-
}
|
|
57
|
-
function encodeBase64Url(data) {
|
|
58
|
-
const json = JSON.stringify(data);
|
|
59
|
-
return btoa(json).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
60
|
-
}
|
|
61
|
-
function decodeBase64Url(encoded) {
|
|
62
|
-
const padded = encoded.replace(/-/g, "+").replace(/_/g, "/");
|
|
63
|
-
const json = atob(padded);
|
|
64
|
-
return JSON.parse(json);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// src/shared/constants.ts
|
|
68
|
-
var ROUTES = {
|
|
69
|
-
ACTIVITY: "/activity",
|
|
70
|
-
IDENTITY: {
|
|
71
|
-
SIGNIN: "/identity/signin",
|
|
72
|
-
SIGNOUT: "/identity/signout",
|
|
73
|
-
CALLBACK: "/identity/callback"
|
|
74
|
-
},
|
|
75
|
-
USER: {
|
|
76
|
-
ME: "/user/me",
|
|
77
|
-
VERIFY: "/user/verify"
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
// src/server/adapters/utils.ts
|
|
82
|
-
function normalizePathname(path) {
|
|
83
|
-
const raw = path.trim();
|
|
84
|
-
if (raw === "") {
|
|
85
|
-
return "/";
|
|
86
|
-
}
|
|
87
|
-
const queryIndex = raw.indexOf("?");
|
|
88
|
-
if (queryIndex === -1) {
|
|
89
|
-
return raw;
|
|
90
|
-
}
|
|
91
|
-
const pathname = raw.slice(0, queryIndex);
|
|
92
|
-
if (pathname === "") {
|
|
93
|
-
return "/";
|
|
94
|
-
}
|
|
95
|
-
return pathname;
|
|
96
|
-
}
|
|
97
|
-
function normalizeBasePath(basePath) {
|
|
98
|
-
let raw = normalizePathname(basePath);
|
|
99
|
-
if (raw !== "" && !raw.startsWith("/")) {
|
|
100
|
-
raw = `/${raw}`;
|
|
101
|
-
}
|
|
102
|
-
if (raw === "/" || raw === "") {
|
|
103
|
-
return "";
|
|
104
|
-
}
|
|
105
|
-
if (raw.endsWith("/")) {
|
|
106
|
-
return raw.slice(0, -1);
|
|
107
|
-
}
|
|
108
|
-
return raw;
|
|
109
|
-
}
|
|
110
|
-
function matchTimebackRoute(params) {
|
|
111
|
-
const method = params.method.toUpperCase();
|
|
112
|
-
const pathname = normalizePathname(params.pathname);
|
|
113
|
-
const callbackPath = params.callbackPath ? normalizePathname(params.callbackPath) : undefined;
|
|
114
|
-
if (callbackPath && pathname === callbackPath) {
|
|
115
|
-
return method === "GET" ? "identity.callback" : null;
|
|
116
|
-
}
|
|
117
|
-
const basePathInput = params.basePath;
|
|
118
|
-
const hasBasePath = basePathInput !== undefined;
|
|
119
|
-
const basePath = hasBasePath ? normalizeBasePath(basePathInput) : undefined;
|
|
120
|
-
const matchesRelative = (relative) => {
|
|
121
|
-
if (method === "GET") {
|
|
122
|
-
if (relative === ROUTES.IDENTITY.SIGNIN)
|
|
123
|
-
return "identity.signIn";
|
|
124
|
-
if (relative === ROUTES.IDENTITY.CALLBACK)
|
|
125
|
-
return "identity.callback";
|
|
126
|
-
if (relative === ROUTES.IDENTITY.SIGNOUT)
|
|
127
|
-
return "identity.signOut";
|
|
128
|
-
if (relative === ROUTES.USER.ME)
|
|
129
|
-
return "user.me";
|
|
130
|
-
if (relative === ROUTES.USER.VERIFY)
|
|
131
|
-
return "user.verify";
|
|
132
|
-
}
|
|
133
|
-
if (method === "POST") {
|
|
134
|
-
if (relative === ROUTES.ACTIVITY)
|
|
135
|
-
return "activity";
|
|
136
|
-
}
|
|
137
|
-
return null;
|
|
138
|
-
};
|
|
139
|
-
if (hasBasePath && basePath !== undefined) {
|
|
140
|
-
if (basePath !== "" && pathname === basePath)
|
|
141
|
-
return null;
|
|
142
|
-
if (basePath !== "" && !pathname.startsWith(`${basePath}/`))
|
|
143
|
-
return null;
|
|
144
|
-
const relativeRaw = basePath === "" ? pathname : pathname.slice(basePath.length);
|
|
145
|
-
const relative = relativeRaw.startsWith("/") ? relativeRaw : `/${relativeRaw}`;
|
|
146
|
-
return matchesRelative(relative);
|
|
147
|
-
}
|
|
148
|
-
if (method === "GET") {
|
|
149
|
-
if (pathname.endsWith(ROUTES.IDENTITY.SIGNIN))
|
|
150
|
-
return "identity.signIn";
|
|
151
|
-
if (pathname.endsWith(ROUTES.IDENTITY.CALLBACK))
|
|
152
|
-
return "identity.callback";
|
|
153
|
-
if (pathname.endsWith(ROUTES.IDENTITY.SIGNOUT))
|
|
154
|
-
return "identity.signOut";
|
|
155
|
-
if (pathname.endsWith(ROUTES.USER.ME))
|
|
156
|
-
return "user.me";
|
|
157
|
-
if (pathname.endsWith(ROUTES.USER.VERIFY))
|
|
158
|
-
return "user.verify";
|
|
159
|
-
}
|
|
160
|
-
if (method === "POST") {
|
|
161
|
-
if (pathname.endsWith(ROUTES.ACTIVITY))
|
|
162
|
-
return "activity";
|
|
163
|
-
}
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
function getHandlers(input) {
|
|
167
|
-
return "handle" in input ? input.handle : input;
|
|
168
|
-
}
|
|
169
|
-
function hasActivityHandler(handlers) {
|
|
170
|
-
return "activity" in handlers;
|
|
171
|
-
}
|
|
172
|
-
function hasUserHandler(handlers) {
|
|
173
|
-
return "user" in handlers;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// src/server/adapters/native.ts
|
|
177
|
-
function isNativeHandlerOptions(v) {
|
|
178
|
-
return typeof v === "object" && v !== null && "timeback" in v;
|
|
179
|
-
}
|
|
180
|
-
function toNativeHandler(input) {
|
|
181
|
-
const { timeback, callbackPath } = isNativeHandlerOptions(input) ? input : { timeback: input, callbackPath: undefined };
|
|
182
|
-
const handle = getHandlers(timeback);
|
|
183
|
-
return (req) => {
|
|
184
|
-
const url = new URL(req.url);
|
|
185
|
-
const path = url.pathname;
|
|
186
|
-
const method = req.method;
|
|
187
|
-
const route = matchTimebackRoute({
|
|
188
|
-
pathname: path,
|
|
189
|
-
method,
|
|
190
|
-
callbackPath
|
|
191
|
-
});
|
|
192
|
-
if (route === "identity.signIn")
|
|
193
|
-
return handle.identity.signIn(req);
|
|
194
|
-
if (route === "identity.callback")
|
|
195
|
-
return handle.identity.callback(req);
|
|
196
|
-
if (route === "identity.signOut")
|
|
197
|
-
return Promise.resolve(handle.identity.signOut());
|
|
198
|
-
if (route === "user.me") {
|
|
199
|
-
if (!hasUserHandler(handle)) {
|
|
200
|
-
return Promise.resolve(jsonResponse({ error: "Not found" }, 404));
|
|
201
|
-
}
|
|
202
|
-
return handle.user.me(req);
|
|
203
|
-
}
|
|
204
|
-
if (route === "user.verify") {
|
|
205
|
-
if (!hasUserHandler(handle)) {
|
|
206
|
-
return Promise.resolve(jsonResponse({ error: "Not found" }, 404));
|
|
207
|
-
}
|
|
208
|
-
return handle.user.verify(req);
|
|
209
|
-
}
|
|
210
|
-
if (route === "activity") {
|
|
211
|
-
if (!hasActivityHandler(handle)) {
|
|
212
|
-
return Promise.resolve(jsonResponse({ error: "Not found" }, 404));
|
|
213
|
-
}
|
|
214
|
-
return handle.activity(req);
|
|
215
|
-
}
|
|
216
|
-
return Promise.resolve(jsonResponse({ error: "Not found" }, 404));
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// src/server/adapters/svelte-kit.ts
|
|
221
|
-
async function svelteKitHandler(options) {
|
|
222
|
-
const {
|
|
223
|
-
timeback,
|
|
224
|
-
event,
|
|
225
|
-
resolve,
|
|
226
|
-
building = false,
|
|
227
|
-
basePath = "/api/timeback",
|
|
228
|
-
callbackPath
|
|
229
|
-
} = options;
|
|
230
|
-
if (building) {
|
|
231
|
-
return resolve(event);
|
|
232
|
-
}
|
|
233
|
-
const { url, request } = event;
|
|
234
|
-
const handle = getHandlers(timeback);
|
|
235
|
-
const path = url.pathname;
|
|
236
|
-
const method = request.method;
|
|
237
|
-
const route = matchTimebackRoute({ pathname: path, method, basePath, callbackPath });
|
|
238
|
-
if (!route)
|
|
239
|
-
return resolve(event);
|
|
240
|
-
if (route === "identity.signOut")
|
|
241
|
-
return handle.identity.signOut();
|
|
242
|
-
if (route === "identity.signIn")
|
|
243
|
-
return await handle.identity.signIn(request);
|
|
244
|
-
if (route === "identity.callback")
|
|
245
|
-
return await handle.identity.callback(request);
|
|
246
|
-
if (route === "user.me") {
|
|
247
|
-
if (!hasUserHandler(handle))
|
|
248
|
-
return resolve(event);
|
|
249
|
-
return await handle.user.me(request);
|
|
250
|
-
}
|
|
251
|
-
if (route === "user.verify") {
|
|
252
|
-
if (!hasUserHandler(handle))
|
|
253
|
-
return resolve(event);
|
|
254
|
-
return await handle.user.verify(request);
|
|
255
|
-
}
|
|
256
|
-
if (route === "activity") {
|
|
257
|
-
if (!hasActivityHandler(handle))
|
|
258
|
-
return resolve(event);
|
|
259
|
-
return await handle.activity(request);
|
|
260
|
-
}
|
|
261
|
-
return resolve(event);
|
|
262
|
-
}
|
|
263
|
-
function toSvelteKitHandler(input) {
|
|
264
|
-
const handler = toNativeHandler(input);
|
|
265
|
-
const wrapHandler = (nativeHandler) => {
|
|
266
|
-
return (event) => nativeHandler(event.request);
|
|
267
|
-
};
|
|
268
|
-
return {
|
|
269
|
-
GET: wrapHandler(handler),
|
|
270
|
-
POST: wrapHandler(handler),
|
|
271
|
-
PUT: wrapHandler(handler),
|
|
272
|
-
DELETE: wrapHandler(handler),
|
|
273
|
-
PATCH: wrapHandler(handler)
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
export {
|
|
277
|
-
toSvelteKitHandler,
|
|
278
|
-
svelteKitHandler
|
|
279
|
-
};
|
|
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};
|