astro-tokenkit 1.0.13 → 1.0.14
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 +1 -0
- package/dist/index.cjs +11 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -15
- package/dist/index.js.map +1 -1
- package/dist/middleware.js +11 -15
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -116,6 +116,7 @@ const specializedClient = createClient({
|
|
|
116
116
|
| `interceptors`| `InterceptorsConfig` | Request/Response/Error interceptors. |
|
|
117
117
|
| `context` | `AsyncLocalStorage` | External AsyncLocalStorage instance. |
|
|
118
118
|
| `getContextStore`| `() => TokenKitContext`| Custom method to retrieve the context store. |
|
|
119
|
+
| `setContextStore`| `(ctx) => void`| Custom method to set the context store. |
|
|
119
120
|
| `runWithContext`| `Function`| Custom runner to bind context. |
|
|
120
121
|
|
|
121
122
|
### Auth Configuration
|
package/dist/index.cjs
CHANGED
|
@@ -831,7 +831,6 @@ function sleep(ms) {
|
|
|
831
831
|
*/
|
|
832
832
|
function createMiddleware() {
|
|
833
833
|
return (ctx, next) => __awaiter(this, void 0, void 0, function* () {
|
|
834
|
-
var _a;
|
|
835
834
|
const tokenManager = getTokenManager();
|
|
836
835
|
const config = getConfig();
|
|
837
836
|
const runLogic = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -848,22 +847,19 @@ function createMiddleware() {
|
|
|
848
847
|
}
|
|
849
848
|
return next();
|
|
850
849
|
});
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
let storage = config.getContextStore();
|
|
856
|
-
if (storage)
|
|
857
|
-
// Update existing reference
|
|
858
|
-
storage.cookies = ctx.cookies;
|
|
859
|
-
else if (config.setContextStore)
|
|
860
|
-
config.setContextStore({ cookies: ctx.cookies });
|
|
861
|
-
else
|
|
862
|
-
console.error("[TokenKit] getContextStore returned null or undefined and no setter was found");
|
|
850
|
+
const setupAndRun = () => __awaiter(this, void 0, void 0, function* () {
|
|
851
|
+
if (config.setContextStore) {
|
|
852
|
+
config.setContextStore(ctx);
|
|
853
|
+
}
|
|
863
854
|
return runLogic();
|
|
855
|
+
});
|
|
856
|
+
if (config.runWithContext) {
|
|
857
|
+
return config.runWithContext(ctx, setupAndRun);
|
|
858
|
+
}
|
|
859
|
+
if (config.setContextStore) {
|
|
860
|
+
return setupAndRun();
|
|
864
861
|
}
|
|
865
|
-
|
|
866
|
-
return runner(ctx, runLogic);
|
|
862
|
+
return runWithContext(ctx, runLogic);
|
|
867
863
|
});
|
|
868
864
|
}
|
|
869
865
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@12.3.0_rollup@4.56.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/types.ts","../src/auth/detector.ts","../src/auth/storage.ts","../src/utils/time.ts","../src/auth/policy.ts","../src/auth/manager.ts","../src/config.ts","../src/client/context.ts","../src/utils/retry.ts","../src/middleware.ts","../src/client/client.ts","../src/integration.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","// packages/astro-tokenkit/src/types.ts\n\nimport type { AstroCookies } from 'astro';\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\n/**\n * Token bundle returned from auth endpoints\n */\nexport interface TokenBundle {\n accessToken: string;\n refreshToken: string;\n accessExpiresAt: number; // Unix timestamp in seconds\n tokenType?: string;\n refreshExpiresAt?: number;\n sessionPayload?: Record<string, any>;\n}\n\n/**\n * Minimal context required by TokenKit\n */\nexport interface TokenKitContext {\n cookies: AstroCookies;\n [key: string]: any;\n}\n\n\n/**\n * Session information\n */\nexport interface Session {\n accessToken: string;\n expiresAt: number;\n tokenType?: string;\n payload?: Record<string, any>;\n}\n\n/**\n * Request options\n */\nexport interface RequestOptions {\n /** Additional headers */\n headers?: Record<string, string>;\n /** Request timeout in ms */\n timeout?: number;\n /** Query parameters */\n params?: Record<string, any>;\n /** Skip authentication for this request */\n skipAuth?: boolean;\n /** Custom signal for cancellation */\n signal?: AbortSignal;\n /** Auth override options for automatic refresh if triggered */\n auth?: AuthOptions;\n}\n\n/**\n * Request configuration\n */\nexport interface RequestConfig extends RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n url: string;\n data?: any;\n}\n\n/**\n * HTTP response\n */\nexport interface APIResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n ok: boolean;\n}\n\n/**\n * Field mapping for auto-detection\n */\nexport interface FieldMapping {\n accessToken?: string;\n refreshToken?: string;\n expiresAt?: string;\n expiresIn?: string;\n tokenType?: string;\n sessionPayload?: string;\n}\n\n/**\n * Callback after successful login\n */\nexport type OnLoginCallback = (bundle: TokenBundle, body: any, ctx: TokenKitContext) => void | Promise<void>;\n\n/**\n * Callback after failed login\n */\nexport type OnErrorCallback = (error: AuthError, ctx: TokenKitContext) => void | Promise<void>;\n\n/**\n * Auth override options\n */\nexport interface AuthOptions {\n /** Extra data for this specific auth request (login/refresh) */\n data?: Record<string, any>;\n}\n\n/**\n * Login options\n */\nexport interface LoginOptions extends AuthOptions {\n /** Extra headers for this specific login request */\n headers?: Record<string, string>;\n /** Callback after successful login */\n onLogin?: OnLoginCallback;\n /** Callback after failed login */\n onError?: OnErrorCallback;\n}\n\n/**\n * Auth configuration\n */\nexport interface AuthConfig {\n /** Login endpoint (relative to baseURL) */\n login: string;\n /** Refresh endpoint (relative to baseURL) */\n refresh: string;\n /** Logout endpoint (optional, relative to baseURL) */\n logout?: string;\n\n /** Content type for auth requests (default: 'application/json') */\n contentType?: 'application/json' | 'application/x-www-form-urlencoded';\n\n /** Extra headers for login/refresh requests */\n headers?: Record<string, string>;\n\n /** Extra data for login request */\n loginData?: Record<string, any>;\n\n /** Extra data for refresh request */\n refreshData?: Record<string, any>;\n\n /** Field name for refresh token in refresh request (default: 'refreshToken') */\n refreshRequestField?: string;\n\n /** Field mapping (auto-detected if not provided) */\n fields?: FieldMapping;\n\n /** Custom login response parser */\n parseLogin?: (body: any) => TokenBundle;\n /** Custom refresh response parser */\n parseRefresh?: (body: any) => TokenBundle;\n\n /** Custom token injection function (default: Bearer) */\n injectToken?: (token: string, type?: string) => string;\n\n /** Refresh policy */\n policy?: RefreshPolicy;\n\n /** Cookie configuration */\n cookies?: CookieConfig;\n}\n\n/**\n * Refresh policy\n */\nexport interface RefreshPolicy {\n /** Refresh before expiry (e.g., '5m' or 300) */\n refreshBefore?: string | number;\n /** Clock skew tolerance (e.g., '1m' or 60) */\n clockSkew?: string | number;\n /** Minimum interval between refreshes (e.g., '30s' or 30) */\n minInterval?: string | number;\n}\n\n/**\n * Cookie configuration\n */\nexport interface CookieConfig {\n /** Secure flag (auto-detected from NODE_ENV if not set) */\n secure?: boolean;\n /** SameSite policy */\n sameSite?: 'strict' | 'lax' | 'none';\n /** Cookie domain */\n domain?: string;\n /** Cookie names prefix */\n prefix?: string;\n}\n\n/**\n * Retry configuration\n */\nexport interface RetryConfig {\n /** Number of retry attempts */\n attempts?: number;\n /** Status codes to retry */\n statusCodes?: number[];\n /** Backoff strategy */\n backoff?: 'linear' | 'exponential';\n /** Initial delay in ms */\n delay?: number;\n}\n\n/**\n * Request interceptor\n */\nexport type RequestInterceptor = (\n config: RequestConfig,\n ctx?: TokenKitContext\n) => RequestConfig | Promise<RequestConfig>;\n\n/**\n * Response interceptor\n */\nexport type ResponseInterceptor = <T = any>(\n response: APIResponse<T>,\n ctx?: TokenKitContext\n) => APIResponse<T> | Promise<APIResponse<T>>;\n\n/**\n * Error interceptor\n */\nexport type ErrorInterceptor = (\n error: APIError,\n ctx?: TokenKitContext\n) => never | Promise<never>;\n\n/**\n * Interceptors configuration\n */\nexport interface InterceptorsConfig {\n request?: RequestInterceptor[];\n response?: ResponseInterceptor[];\n error?: ErrorInterceptor[];\n}\n\n/**\n * Client configuration\n */\nexport interface ClientConfig {\n /** Base URL for all requests */\n baseURL: string;\n\n /** Auth configuration (optional for non-auth clients) */\n auth?: AuthConfig;\n\n /** Default headers for all requests */\n headers?: Record<string, string>;\n\n /** Default timeout in ms */\n timeout?: number;\n\n /** Retry configuration */\n retry?: RetryConfig;\n\n /** Interceptors */\n interceptors?: InterceptorsConfig;\n \n /** AsyncLocalStorage instance */\n context?: AsyncLocalStorage<any>;\n \n /** Custom context store getter */\n getContextStore?: () => TokenKitContext | undefined | null;\n\n /** Custom context store setter */\n setContextStore?: (ctx: TokenKitContext) => void;\n \n /** Custom context runner */\n runWithContext?: <T>(ctx: TokenKitContext, fn: () => T) => T;\n}\n\n/**\n * TokenKit Global Configuration\n */\nexport interface TokenKitConfig extends Partial<ClientConfig> {\n}\n\n/**\n * API Error\n */\nexport class APIError extends Error {\n constructor(\n message: string,\n public status?: number,\n public response?: any,\n public request?: RequestConfig\n ) {\n super(message);\n this.name = 'APIError';\n }\n}\n\n/**\n * Authentication Error\n */\nexport class AuthError extends APIError {\n constructor(message: string, status?: number, response?: any, request?: RequestConfig) {\n super(message, status, response, request);\n this.name = 'AuthError';\n }\n}\n\n/**\n * Network Error\n */\nexport class NetworkError extends APIError {\n constructor(message: string, request?: RequestConfig) {\n super(message, undefined, undefined, request);\n this.name = 'NetworkError';\n }\n}\n\n/**\n * Timeout Error\n */\nexport class TimeoutError extends APIError {\n constructor(message: string, request?: RequestConfig) {\n super(message, undefined, undefined, request);\n this.name = 'TimeoutError';\n }\n}","// packages/astro-tokenkit/src/auth/detector.ts\n\nimport type { TokenBundle, FieldMapping } from '../types';\n\n/**\n * Common field names for access tokens\n */\nconst ACCESS_TOKEN_FIELDS = [\n 'access_token',\n 'accessToken',\n 'token',\n 'jwt',\n 'id_token',\n 'idToken',\n];\n\n/**\n * Common field names for refresh tokens\n */\nconst REFRESH_TOKEN_FIELDS = [\n 'refresh_token',\n 'refreshToken',\n 'refresh',\n];\n\n/**\n * Common field names for expiration timestamp\n */\nconst EXPIRES_AT_FIELDS = [\n 'expires_at',\n 'expiresAt',\n 'exp',\n 'expiry',\n];\n\n/**\n * Common field names for expires_in (seconds)\n */\nconst EXPIRES_IN_FIELDS = [\n 'expires_in',\n 'expiresIn',\n 'ttl',\n];\n\n/**\n * Common field names for token type\n */\nconst TOKEN_TYPE_FIELDS = [\n 'token_type',\n 'tokenType',\n];\n\n/**\n * Common field names for session payload\n */\nconst SESSION_PAYLOAD_FIELDS = [\n 'user',\n 'profile',\n 'account',\n 'data',\n];\n\n/**\n * Auto-detect token fields from response body\n */\nexport function autoDetectFields(body: any, fieldMapping?: FieldMapping): TokenBundle {\n // Helper to find field\n const findField = (candidates: string[], mapping?: string): any => {\n if (mapping && body[mapping] !== undefined) {\n return body[mapping];\n }\n for (const candidate of candidates) {\n if (body[candidate] !== undefined) {\n return body[candidate];\n }\n }\n return undefined;\n };\n\n // Detect access token\n const accessToken = findField(ACCESS_TOKEN_FIELDS, fieldMapping?.accessToken);\n if (!accessToken) {\n throw new Error(\n `Could not detect access token field. Tried: ${ACCESS_TOKEN_FIELDS.join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect refresh token\n const refreshToken = findField(REFRESH_TOKEN_FIELDS, fieldMapping?.refreshToken);\n if (!refreshToken) {\n throw new Error(\n `Could not detect refresh token field. Tried: ${REFRESH_TOKEN_FIELDS.join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect expiration\n let accessExpiresAt: number | undefined;\n\n // Try expires_at first (timestamp)\n const expiresAtValue = findField(EXPIRES_AT_FIELDS, fieldMapping?.expiresAt);\n if (expiresAtValue !== undefined) {\n accessExpiresAt = typeof expiresAtValue === 'number'\n ? expiresAtValue\n : parseInt(expiresAtValue, 10);\n }\n\n // Try expires_in (seconds from now)\n if (accessExpiresAt === undefined) {\n const expiresInValue = findField(EXPIRES_IN_FIELDS, fieldMapping?.expiresIn);\n if (expiresInValue !== undefined) {\n const expiresIn = typeof expiresInValue === 'number'\n ? expiresInValue\n : parseInt(expiresInValue, 10);\n accessExpiresAt = Math.floor(Date.now() / 1000) + expiresIn;\n }\n }\n\n if (accessExpiresAt === undefined) {\n throw new Error(\n `Could not detect expiration field. Tried: ${[...EXPIRES_AT_FIELDS, ...EXPIRES_IN_FIELDS].join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect session payload (optional)\n const sessionPayload = findField(SESSION_PAYLOAD_FIELDS, fieldMapping?.sessionPayload);\n\n // Detect token type (optional)\n const tokenType = findField(TOKEN_TYPE_FIELDS, fieldMapping?.tokenType);\n\n return {\n accessToken,\n refreshToken,\n accessExpiresAt,\n tokenType: tokenType || undefined,\n sessionPayload: sessionPayload || undefined,\n };\n}\n\n/**\n * Parse JWT payload without verification (for reading only)\n */\nexport function parseJWTPayload(token: string): Record<string, any> | null {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) {\n return null;\n }\n\n const payload = parts[1];\n \n // Better UTF-8 support for environments with Buffer (like Node.js/Astro)\n if (typeof Buffer !== 'undefined') {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n }\n \n const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));\n return JSON.parse(decoded);\n } catch {\n return null;\n }\n}","// packages/astro-tokenkit/src/auth/storage.ts\n\nimport type { TokenBundle, CookieConfig, TokenKitContext } from '../types';\n\n/**\n * Cookie names\n */\nexport interface CookieNames {\n accessToken: string;\n refreshToken: string;\n expiresAt: string;\n lastRefreshAt: string;\n tokenType: string;\n}\n\n/**\n * Get cookie names with optional prefix\n */\nexport function getCookieNames(prefix?: string): CookieNames {\n const p = prefix ? `${prefix}_` : '';\n return {\n accessToken: `${p}access_token`,\n refreshToken: `${p}refresh_token`,\n expiresAt: `${p}access_expires_at`,\n lastRefreshAt: `${p}last_refresh_at`,\n tokenType: `${p}token_type`,\n };\n}\n\n/**\n * Get cookie options with smart defaults\n */\nexport function getCookieOptions(config: CookieConfig = {}) {\n const isProduction = process.env.NODE_ENV === 'production';\n\n return {\n secure: config.secure ?? isProduction,\n sameSite: config.sameSite ?? 'lax' as const,\n httpOnly: true, // Always HttpOnly for security\n domain: config.domain,\n };\n}\n\n/**\n * Store token bundle in cookies\n */\nexport function storeTokens(\n ctx: TokenKitContext,\n bundle: TokenBundle,\n cookieConfig: CookieConfig = {}\n): void {\n const names = getCookieNames(cookieConfig.prefix);\n const options = getCookieOptions(cookieConfig);\n const now = Math.floor(Date.now() / 1000);\n\n // Calculate max age\n const accessMaxAge = Math.max(0, bundle.accessExpiresAt - now);\n const refreshMaxAge = bundle.refreshExpiresAt\n ? Math.max(0, bundle.refreshExpiresAt - now)\n : 7 * 24 * 60 * 60; // Default 7 days\n\n // Set access token\n ctx.cookies.set(names.accessToken, bundle.accessToken, {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set refresh token (restricted path for security)\n ctx.cookies.set(names.refreshToken, bundle.refreshToken, {\n ...options,\n maxAge: refreshMaxAge,\n path: '/',\n });\n\n // Set expiration timestamp\n ctx.cookies.set(names.expiresAt, bundle.accessExpiresAt.toString(), {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set last refresh timestamp\n ctx.cookies.set(names.lastRefreshAt, now.toString(), {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set token type if available\n if (bundle.tokenType) {\n ctx.cookies.set(names.tokenType, bundle.tokenType, {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n }\n}\n\n/**\n * Retrieve tokens from cookies\n */\nexport function retrieveTokens(\n ctx: TokenKitContext,\n cookieConfig: CookieConfig = {}\n): {\n accessToken: string | null;\n refreshToken: string | null;\n expiresAt: number | null;\n lastRefreshAt: number | null;\n tokenType: string | null;\n} {\n const names = getCookieNames(cookieConfig.prefix);\n\n const accessToken = ctx.cookies.get(names.accessToken)?.value || null;\n const refreshToken = ctx.cookies.get(names.refreshToken)?.value || null;\n const tokenType = ctx.cookies.get(names.tokenType)?.value || null;\n\n const expiresAtStr = ctx.cookies.get(names.expiresAt)?.value;\n const expiresAt = expiresAtStr ? parseInt(expiresAtStr, 10) : null;\n\n const lastRefreshAtStr = ctx.cookies.get(names.lastRefreshAt)?.value;\n const lastRefreshAt = lastRefreshAtStr ? parseInt(lastRefreshAtStr, 10) : null;\n\n return { accessToken, refreshToken, expiresAt, lastRefreshAt, tokenType };\n}\n\n/**\n * Clear all auth cookies\n */\nexport function clearTokens(ctx: TokenKitContext, cookieConfig: CookieConfig = {}): void {\n const names = getCookieNames(cookieConfig.prefix);\n const options = getCookieOptions(cookieConfig);\n\n ctx.cookies.delete(names.accessToken, { ...options, path: '/' });\n ctx.cookies.delete(names.refreshToken, { ...options, path: '/' });\n ctx.cookies.delete(names.expiresAt, { ...options, path: '/' });\n ctx.cookies.delete(names.lastRefreshAt, { ...options, path: '/' });\n ctx.cookies.delete(names.tokenType, { ...options, path: '/' });\n}","// packages/astro-tokenkit/src/utils/time.ts\n\n/**\n * Parse time string to seconds\n * Supports: '5m', '30s', '1h', '2d'\n */\nexport function parseTime(input: string | number): number {\n if (typeof input === 'number') {\n return input;\n }\n\n const match = input.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error(`Invalid time format: ${input}. Use format like '5m', '30s', '1h', '2d'`);\n }\n\n const value = parseInt(match[1], 10);\n const unit = match[2];\n\n const multipliers = {\n s: 1,\n m: 60,\n h: 60 * 60,\n d: 60 * 60 * 24,\n };\n\n return value * multipliers[unit as keyof typeof multipliers];\n}\n\n/**\n * Format seconds to human-readable string\n */\nexport function formatTime(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\n return `${Math.floor(seconds / 86400)}d`;\n}","// packages/astro-tokenkit/src/auth/policy.ts\n\nimport type { RefreshPolicy } from '../types';\nimport { parseTime } from '../utils/time';\n\n/**\n * Default refresh policy\n */\nexport const DEFAULT_POLICY = {\n refreshBefore: 300, // 5 minutes\n clockSkew: 60, // 1 minute\n minInterval: 30, // 30 seconds\n};\n\n/**\n * Normalize refresh policy (convert time strings to seconds)\n */\nexport function normalizePolicy(policy: RefreshPolicy = {}): Required<RefreshPolicy> {\n return {\n refreshBefore: policy.refreshBefore\n ? parseTime(policy.refreshBefore)\n : DEFAULT_POLICY.refreshBefore,\n clockSkew: policy.clockSkew\n ? parseTime(policy.clockSkew)\n : DEFAULT_POLICY.clockSkew,\n minInterval: policy.minInterval\n ? parseTime(policy.minInterval)\n : DEFAULT_POLICY.minInterval,\n };\n}\n\n/**\n * Check if token should be refreshed\n */\nexport function shouldRefresh(\n expiresAt: number,\n now: number,\n lastRefreshAt: number | null,\n policy: RefreshPolicy = {}\n): boolean {\n const normalized = normalizePolicy(policy);\n const refreshBefore = typeof normalized.refreshBefore === 'number'\n ? normalized.refreshBefore\n : parseTime(normalized.refreshBefore);\n const clockSkew = typeof normalized.clockSkew === 'number'\n ? normalized.clockSkew\n : parseTime(normalized.clockSkew);\n const minInterval = typeof normalized.minInterval === 'number'\n ? normalized.minInterval\n : parseTime(normalized.minInterval);\n\n // Adjust for clock skew\n const adjustedNow = now + clockSkew;\n\n // Check if near expiration\n const timeUntilExpiry = expiresAt - adjustedNow;\n if (timeUntilExpiry > refreshBefore) {\n return false;\n }\n\n // Check minimum interval\n if (lastRefreshAt !== null) {\n const timeSinceLastRefresh = now - lastRefreshAt;\n if (timeSinceLastRefresh < minInterval) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if token is expired\n */\nexport function isExpired(\n expiresAt: number,\n now: number,\n policy: RefreshPolicy = {}\n): boolean {\n const normalized = normalizePolicy(policy);\n const clockSkew = typeof normalized.clockSkew === 'number'\n ? normalized.clockSkew\n : parseTime(normalized.clockSkew);\n\n // Pessimistic: consider it expired if current time + skew is past expiration\n return now + clockSkew > expiresAt;\n}","// packages/astro-tokenkit/src/auth/manager.ts\n\nimport {APIResponse, AuthError} from '../types';\nimport type { TokenBundle, Session, AuthConfig, TokenKitContext, AuthOptions, LoginOptions } from '../types';\nimport { autoDetectFields, parseJWTPayload } from './detector';\nimport { storeTokens, retrieveTokens, clearTokens } from './storage';\nimport { shouldRefresh, isExpired } from './policy';\n\n/**\n * Single-flight refresh manager\n */\nclass SingleFlight {\n private inFlight = new Map<string, Promise<TokenBundle | null>>();\n\n async execute(\n key: string,\n fn: () => Promise<TokenBundle | null>\n ): Promise<TokenBundle | null> {\n const existing = this.inFlight.get(key);\n if (existing) return existing;\n\n const promise = this.doExecute(key, fn);\n this.inFlight.set(key, promise);\n return promise;\n }\n\n private async doExecute(\n key: string,\n fn: () => Promise<TokenBundle | null>\n ): Promise<TokenBundle | null> {\n try {\n return await fn();\n } finally {\n this.inFlight.delete(key);\n }\n }\n}\n\n/**\n * Token Manager handles all token operations\n */\nexport class TokenManager {\n private singleFlight = new SingleFlight();\n private baseURL: string;\n\n constructor(\n private config: AuthConfig,\n baseURL: string\n ) {\n this.baseURL = baseURL;\n }\n\n /**\n * Perform login\n */\n async login(ctx: TokenKitContext, credentials: any, options?: LoginOptions): Promise<APIResponse<TokenBundle>> {\n const url = this.joinURL(this.baseURL, this.config.login);\n\n const contentType = this.config.contentType || 'application/json';\n const headers: Record<string, string> = {\n 'Content-Type': contentType,\n ...this.config.headers,\n ...options?.headers,\n };\n\n const data = {\n ...this.config.loginData,\n ...options?.data,\n ...credentials,\n };\n\n let requestBody: string;\n if (contentType === 'application/x-www-form-urlencoded') {\n requestBody = new URLSearchParams(data).toString();\n } else {\n requestBody = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers,\n body: requestBody,\n });\n } catch (error: any) {\n const authError = new AuthError(`Login request failed: ${error.message}`);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n if (!response.ok) {\n const authError = new AuthError(`Login failed: ${response.status} ${response.statusText}`, response.status, response);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n const body = await response.json().catch(() => ({}));\n\n // Parse response\n let bundle: TokenBundle;\n try {\n bundle = this.config.parseLogin\n ? this.config.parseLogin(body)\n : autoDetectFields(body, this.config.fields);\n } catch (error: any) {\n const authError = new AuthError(`Invalid login response: ${error.message}`, response.status, response);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n // Store in cookies\n storeTokens(ctx, bundle, this.config.cookies);\n\n // Call onLogin callback if provided\n if (options?.onLogin) {\n await options.onLogin(bundle, body, ctx);\n }\n\n return {\n data: bundle,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n url: response.url,\n ok: response.ok,\n };\n }\n\n /**\n * Perform token refresh\n */\n async refresh(ctx: TokenKitContext, refreshToken: string, options?: AuthOptions, headers?: Record<string, string>): Promise<TokenBundle | null> {\n try {\n return await this.performRefresh(ctx, refreshToken, options, headers);\n } catch (error) {\n clearTokens(ctx, this.config.cookies);\n throw error;\n }\n }\n\n /**\n * Internal refresh implementation\n */\n private async performRefresh(ctx: TokenKitContext, refreshToken: string, options?: AuthOptions, extraHeaders?: Record<string, string>): Promise<TokenBundle | null> {\n const url = this.joinURL(this.baseURL, this.config.refresh);\n\n const contentType = this.config.contentType || 'application/json';\n const headers: Record<string, string> = {\n 'Content-Type': contentType,\n ...this.config.headers,\n ...extraHeaders,\n };\n\n const refreshField = this.config.refreshRequestField || 'refreshToken';\n const data = {\n ...this.config.refreshData,\n ...options?.data,\n [refreshField]: refreshToken,\n };\n\n let requestBody: string;\n if (contentType === 'application/x-www-form-urlencoded') {\n requestBody = new URLSearchParams(data).toString();\n } else {\n requestBody = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers,\n body: requestBody,\n });\n } catch (error: any) {\n throw new AuthError(`Refresh request failed: ${error.message}`);\n }\n\n if (!response.ok) {\n // 401/403 = invalid refresh token\n if (response.status === 401 || response.status === 403) {\n clearTokens(ctx, this.config.cookies);\n return null;\n }\n throw new AuthError(`Refresh failed: ${response.status} ${response.statusText}`, response.status, response);\n }\n\n const body = await response.json().catch(() => ({}));\n\n // Parse response\n let bundle: TokenBundle;\n try {\n bundle = this.config.parseRefresh\n ? this.config.parseRefresh(body)\n : autoDetectFields(body, this.config.fields);\n } catch (error: any) {\n throw new AuthError(`Invalid refresh response: ${error.message}`, response.status, response);\n }\n\n // Validate bundle\n if (!bundle.accessToken || !bundle.refreshToken || !bundle.accessExpiresAt) {\n throw new AuthError('Invalid token bundle returned from refresh endpoint', response.status, response);\n }\n\n // Store new tokens\n storeTokens(ctx, bundle, this.config.cookies);\n\n return bundle;\n }\n\n /**\n * Ensure valid tokens (with automatic refresh)\n */\n async ensure(ctx: TokenKitContext, options?: AuthOptions, headers?: Record<string, string>): Promise<Session | null> {\n const now = Math.floor(Date.now() / 1000);\n const tokens = retrieveTokens(ctx, this.config.cookies);\n\n // No tokens\n if (!tokens.accessToken || !tokens.refreshToken || !tokens.expiresAt) {\n return null;\n }\n\n // Token expired\n if (isExpired(tokens.expiresAt, now, this.config.policy)) {\n const flightKey = this.createFlightKey(tokens.refreshToken);\n const bundle = await this.singleFlight.execute(flightKey, () =>\n this.refresh(ctx, tokens.refreshToken!, options, headers)\n );\n\n if (!bundle) return null;\n\n return {\n accessToken: bundle.accessToken,\n expiresAt: bundle.accessExpiresAt,\n tokenType: bundle.tokenType,\n payload: bundle.sessionPayload ?? parseJWTPayload(bundle.accessToken) ?? undefined,\n };\n }\n\n // Proactive refresh\n if (shouldRefresh(tokens.expiresAt, now, tokens.lastRefreshAt, this.config.policy)) {\n const flightKey = this.createFlightKey(tokens.refreshToken);\n const bundle = await this.singleFlight.execute(flightKey, () =>\n this.refresh(ctx, tokens.refreshToken!, options, headers)\n );\n\n if (bundle) {\n return {\n accessToken: bundle.accessToken,\n expiresAt: bundle.accessExpiresAt,\n tokenType: bundle.tokenType,\n payload: bundle.sessionPayload ?? parseJWTPayload(bundle.accessToken) ?? undefined,\n };\n }\n\n // Refresh failed, check if tokens still exist\n const currentTokens = retrieveTokens(ctx, this.config.cookies);\n if (!currentTokens.accessToken) {\n return null;\n }\n }\n\n // Return current session\n return {\n accessToken: tokens.accessToken,\n expiresAt: tokens.expiresAt,\n tokenType: tokens.tokenType ?? undefined,\n payload: parseJWTPayload(tokens.accessToken) ?? undefined,\n };\n }\n\n /**\n * Logout (clear tokens)\n */\n async logout(ctx: TokenKitContext): Promise<void> {\n // Optionally call logout endpoint\n if (this.config.logout) {\n try {\n const url = this.joinURL(this.baseURL, this.config.logout);\n const session = this.getSession(ctx);\n const headers: Record<string, string> = {};\n\n if (session?.accessToken) {\n const injectFn = this.config.injectToken ?? ((token, type) => `${type ?? 'Bearer'} ${token}`);\n headers['Authorization'] = injectFn(session.accessToken, session.tokenType);\n }\n\n await fetch(url, { method: 'POST', headers });\n } catch (error) {\n // Ignore logout endpoint errors\n console.warn('[TokenKit] Logout endpoint failed:', error);\n }\n }\n\n clearTokens(ctx, this.config.cookies);\n }\n\n /**\n * Get current session (no refresh)\n */\n getSession(ctx: TokenKitContext): Session | null {\n const tokens = retrieveTokens(ctx, this.config.cookies);\n\n if (!tokens.accessToken || !tokens.expiresAt) {\n return null;\n }\n\n return {\n accessToken: tokens.accessToken,\n expiresAt: tokens.expiresAt,\n tokenType: tokens.tokenType ?? undefined,\n payload: parseJWTPayload(tokens.accessToken) ?? undefined,\n };\n }\n\n /**\n * Check if authenticated\n */\n isAuthenticated(ctx: TokenKitContext): boolean {\n const tokens = retrieveTokens(ctx, this.config.cookies);\n return !!(tokens.accessToken && tokens.refreshToken);\n }\n\n /**\n * Create flight key for single-flight deduplication\n */\n private createFlightKey(token: string): string {\n // Avoid weak hashing of sensitive tokens\n return `refresh_${token}`;\n }\n\n /**\n * Join base URL and path safely\n */\n private joinURL(base: string, path: string): string {\n const b = base.endsWith('/') ? base : base + '/';\n const p = path.startsWith('/') ? path.slice(1) : path;\n return b + p;\n }\n}","// packages/astro-tokenkit/src/config.ts\n\nimport type { TokenKitConfig } from \"./types\";\nimport { TokenManager } from \"./auth/manager\";\n\nconst CONFIG_KEY = Symbol.for('astro-tokenkit.config');\nconst MANAGER_KEY = Symbol.for('astro-tokenkit.manager');\n\nconst globalStorage = globalThis as any;\n\n/**\n * Internal config with defaults applied\n */\nexport interface ResolvedConfig extends TokenKitConfig {\n baseURL: string;\n}\n\n// Initialize global storage if not present\nif (!globalStorage[CONFIG_KEY]) {\n globalStorage[CONFIG_KEY] = {\n runWithContext: undefined,\n getContextStore: undefined,\n setContextStore: undefined,\n baseURL: \"\",\n };\n}\n\n/**\n * Set configuration\n */\nexport function setConfig(userConfig: TokenKitConfig): void {\n const currentConfig = globalStorage[CONFIG_KEY];\n const finalConfig = {\n ...currentConfig,\n ...userConfig,\n } as ResolvedConfig;\n\n // Validate that getter and setter are defined together\n if ((finalConfig.getContextStore && !finalConfig.setContextStore) || \n (!finalConfig.getContextStore && finalConfig.setContextStore)) {\n throw new Error(\"[TokenKit] getContextStore and setContextStore must be defined together.\");\n }\n\n globalStorage[CONFIG_KEY] = finalConfig;\n\n // Re-initialize global token manager if auth changed\n if (finalConfig.auth) {\n globalStorage[MANAGER_KEY] = new TokenManager(finalConfig.auth, finalConfig.baseURL);\n } else {\n globalStorage[MANAGER_KEY] = undefined;\n }\n}\n\n/**\n * Get current configuration\n */\nexport function getConfig(): ResolvedConfig {\n return globalStorage[CONFIG_KEY];\n}\n\n/**\n * Get global token manager\n */\nexport function getTokenManager(): TokenManager | undefined {\n return globalStorage[MANAGER_KEY];\n}\n\n/**\n * Set global token manager (mainly for testing)\n */\nexport function setTokenManager(manager: TokenManager | undefined): void {\n globalStorage[MANAGER_KEY] = manager;\n}\n\n// Handle injected configuration from Astro integration\ntry {\n // @ts-ignore\n const injectedConfig = typeof __TOKENKIT_CONFIG__ !== 'undefined' ? __TOKENKIT_CONFIG__ : undefined;\n if (injectedConfig) {\n setConfig(injectedConfig);\n }\n} catch (e) {\n // Ignore errors in environments where __TOKENKIT_CONFIG__ might be restricted\n}\n","// packages/astro-tokenkit/src/client/context.ts\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport type { TokenKitContext } from '../types';\nimport { getConfig } from '../config';\n\n/**\n * Async local storage for Astro context\n */\nconst als = new AsyncLocalStorage<TokenKitContext>();\n\n/**\n * Bind Astro context for the current async scope\n */\nexport function runWithContext<T>(ctx: TokenKitContext, fn: () => T): T {\n const config = getConfig();\n const runner = config.runWithContext;\n\n if (runner) {\n return runner(ctx, fn);\n }\n\n return als.run(ctx, fn);\n}\n\n/**\n * Get current Astro context (from middleware binding or explicit)\n */\nexport function getContextStore(): TokenKitContext {\n const config = getConfig();\n const getStore = config.getContextStore;\n const context = (config as any).context || als;\n\n const store = getStore \n ? getStore() \n : (context as AsyncLocalStorage<TokenKitContext>).getStore();\n \n if (!store) {\n throw new Error(\n 'Astro context not found. Make sure to use api.middleware() to bind context automatically.'\n );\n }\n\n return store;\n}\n\n/**\n * Check if context is available\n */\nexport function hasContext(): boolean {\n const config = getConfig();\n const getStore = config.getContextStore;\n const context = (config as any).context || als;\n\n const store = getStore \n ? getStore() \n : (context as AsyncLocalStorage<TokenKitContext>).getStore();\n\n return !!store;\n}","// packages/astro-tokenkit/src/utils/retry.ts\n\nimport type { RetryConfig } from '../types';\n\n/**\n * Default retry configuration\n */\nexport const DEFAULT_RETRY: Required<RetryConfig> = {\n attempts: 3,\n statusCodes: [408, 429, 500, 502, 503, 504],\n backoff: 'exponential',\n delay: 1000,\n};\n\n/**\n * Calculate retry delay\n */\nexport function calculateDelay(\n attempt: number,\n config: RetryConfig = {}\n): number {\n const { backoff = DEFAULT_RETRY.backoff, delay = DEFAULT_RETRY.delay } = config;\n\n if (backoff === 'linear') {\n return delay * attempt;\n }\n\n // Exponential backoff: delay * 2^(attempt-1)\n return delay * Math.pow(2, attempt - 1);\n}\n\n/**\n * Check if error should be retried\n */\nexport function shouldRetry(\n status: number | undefined,\n attempt: number,\n config: RetryConfig = {}\n): boolean {\n const {\n attempts = DEFAULT_RETRY.attempts,\n statusCodes = DEFAULT_RETRY.statusCodes,\n } = config;\n\n if (attempt >= attempts) {\n return false;\n }\n\n if (status === undefined) {\n // Network errors are retryable\n return true;\n }\n\n return statusCodes.includes(status);\n}\n\n/**\n * Sleep for given milliseconds\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}","// packages/astro-tokenkit/src/middleware.ts\n\nimport type {MiddlewareHandler} from 'astro';\nimport {runWithContext as defaultRunWithContext} from './client/context';\nimport {getConfig, getTokenManager} from './config';\n\n/**\n * Create middleware for context binding and automatic token rotation\n */\nexport function createMiddleware(): MiddlewareHandler {\n return async (ctx, next) => {\n const tokenManager = getTokenManager();\n const config = getConfig();\n\n const runLogic = async () => {\n // Proactively ensure a valid session if auth is configured\n if (tokenManager) {\n try {\n // This handles token rotation (refresh) if needed\n await tokenManager.ensure(ctx);\n } catch (error: any) {\n // Log only the message to avoid leaking sensitive data in the error object\n console.error('[TokenKit] Automatic token rotation failed:', error.message || error);\n }\n }\n return next();\n };\n\n // If getContextStore is defined, it means the context is managed externally (e.g., by a superior ALS)\n // We skip runWithContext to avoid nesting ALS.run() unnecessarily,\n // UNLESS a custom runWithContext is provided.\n if (config.getContextStore && !config.runWithContext) {\n let storage = config.getContextStore();\n\n if (storage)\n // Update existing reference\n storage.cookies = ctx.cookies;\n else if (config.setContextStore)\n config.setContextStore({cookies: ctx.cookies});\n else\n console.error(\"[TokenKit] getContextStore returned null or undefined and no setter was found\");\n return runLogic();\n }\n const runner = config.runWithContext ?? defaultRunWithContext;\n return runner(ctx, runLogic);\n };\n}\n","// packages/astro-tokenkit/src/client/client.ts\n\nimport type {APIResponse, ClientConfig, RequestConfig, RequestOptions, Session, TokenKitContext, TokenKitConfig,\n AuthConfig, LoginOptions, TokenBundle} from '../types';\nimport {APIError, AuthError, NetworkError, TimeoutError} from '../types';\nimport {TokenManager} from '../auth/manager';\nimport {getContextStore} from './context';\nimport {calculateDelay, shouldRetry, sleep} from '../utils/retry';\nimport {getConfig, getTokenManager} from '../config';\nimport {createMiddleware} from '../middleware';\n\n/**\n * API Client\n */\nexport class APIClient {\n private customConfig?: Partial<TokenKitConfig>;\n private _localTokenManager?: TokenManager;\n private _lastUsedAuth?: AuthConfig;\n private _lastUsedBaseURL?: string;\n\n constructor(config?: Partial<TokenKitConfig>) {\n this.customConfig = config;\n }\n\n /**\n * Get current configuration (merged with global)\n */\n public get config(): ClientConfig {\n // Merge global config with custom config\n const globalConfig = getConfig();\n \n // If no custom config, return global config directly\n if (!this.customConfig) return globalConfig as ClientConfig;\n \n // Merge custom config on top of global config\n return {\n ...globalConfig,\n ...this.customConfig,\n } as ClientConfig;\n }\n\n /**\n * Get token manager\n */\n public get tokenManager(): TokenManager | undefined {\n const config = this.config;\n if (!config.auth) return undefined;\n\n const globalConfig = getConfig();\n const globalManager = getTokenManager();\n\n // Reuse global manager if it matches our configuration\n if (globalManager && \n config.auth === globalConfig.auth && \n config.baseURL === globalConfig.baseURL) {\n return globalManager;\n }\n\n // Otherwise create/reuse a local manager for this client\n if (!this._localTokenManager || \n this._lastUsedAuth !== config.auth || \n this._lastUsedBaseURL !== config.baseURL) {\n this._localTokenManager = new TokenManager(config.auth, config.baseURL);\n this._lastUsedAuth = config.auth;\n this._lastUsedBaseURL = config.baseURL;\n }\n\n return this._localTokenManager;\n }\n\n /**\n * Get middleware for context binding and automatic token rotation.\n * This middleware uses the global configuration.\n */\n public middleware() {\n return createMiddleware();\n }\n\n /**\n * GET request\n */\n async get<T = any>(url: string, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'GET',\n url,\n ...options,\n });\n }\n\n /**\n * POST request\n */\n async post<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'POST',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * PUT request\n */\n async put<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'PUT',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * PATCH request\n */\n async patch<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'PATCH',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * DELETE request\n */\n async delete<T = any>(url: string, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'DELETE',\n url,\n ...options,\n });\n }\n\n /**\n * Generic request method\n */\n async request<T = any>(config: RequestConfig): Promise<APIResponse<T>> {\n const ctx = getContextStore();\n let attempt = 0;\n\n while (true) {\n attempt++;\n\n try {\n return await this.executeRequest<T>(config, ctx, attempt);\n } catch (error) {\n // Check if we should retry\n if (shouldRetry((error as APIError).status, attempt, this.config.retry)) {\n const delay = calculateDelay(attempt, this.config.retry);\n await sleep(delay);\n continue;\n }\n\n // No more retries\n throw error;\n }\n }\n }\n\n /**\n * Execute single request\n */\n private async executeRequest<T>(\n config: RequestConfig,\n ctx: TokenKitContext,\n attempt: number\n ): Promise<APIResponse<T>> {\n // Ensure valid session (if auth is enabled)\n if (this.tokenManager && !config.skipAuth) {\n await this.tokenManager.ensure(ctx, config.auth, config.headers);\n }\n\n // Build full URL\n const fullURL = this.buildURL(config.url, config.params);\n\n // Build headers\n const headers = this.buildHeaders(config, ctx, fullURL);\n\n // Build request init\n const init: RequestInit = {\n method: config.method,\n headers,\n signal: config.signal,\n };\n\n // Add body for non-GET requests\n if (config.data && config.method !== 'GET') {\n init.body = JSON.stringify(config.data);\n }\n\n // Apply request interceptors\n let requestConfig = { ...config };\n if (this.config.interceptors?.request) {\n for (const interceptor of this.config.interceptors.request) {\n requestConfig = await interceptor(requestConfig, ctx);\n }\n }\n\n // Execute fetch with timeout\n const timeout = config.timeout ?? this.config.timeout ?? 30000;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(fullURL, {\n ...init,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // Handle 401 (try refresh and retry once)\n if (response.status === 401 && this.tokenManager && !config.skipAuth && attempt === 1) {\n // Clear and try fresh session\n const session = await this.tokenManager.ensure(ctx, config.auth, config.headers);\n if (session) {\n // Retry with new token\n return this.executeRequest<T>(config, ctx, attempt + 1);\n }\n }\n\n // Parse response\n const apiResponse = await this.parseResponse<T>(response, fullURL);\n\n // Apply response interceptors\n if (this.config.interceptors?.response) {\n let interceptedResponse = apiResponse;\n for (const interceptor of this.config.interceptors.response) {\n interceptedResponse = await interceptor(interceptedResponse, ctx);\n }\n return interceptedResponse;\n }\n\n return apiResponse;\n } catch (error) {\n clearTimeout(timeoutId);\n\n // Apply error interceptors\n if (this.config.interceptors?.error) {\n for (const interceptor of this.config.interceptors.error) {\n await interceptor(error as APIError, ctx);\n }\n }\n\n // Transform errors\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${timeout}ms`, requestConfig);\n }\n\n if (error instanceof APIError) {\n throw error;\n }\n\n throw new NetworkError((error as Error).message, requestConfig);\n }\n }\n\n /**\n * Parse response\n */\n private async parseResponse<T>(response: Response, url: string): Promise<APIResponse<T>> {\n let data: T;\n\n // Try to parse JSON\n const contentType = response.headers.get('content-type');\n if (contentType?.includes('application/json')) {\n try {\n data = await response.json();\n } catch {\n data = await response.text() as any;\n }\n } else {\n data = await response.text() as any;\n }\n\n // Check if response is ok\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthError(\n `Authentication failed: ${response.status} ${response.statusText}`,\n response.status,\n data\n );\n }\n\n throw new APIError(\n `Request failed: ${response.status} ${response.statusText}`,\n response.status,\n data\n );\n }\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n url,\n ok: response.ok,\n };\n }\n\n /**\n * Build full URL with query params\n */\n private buildURL(url: string, params?: Record<string, any>): string {\n const fullURL = url.startsWith('http') ? url : this.config.baseURL + url;\n\n if (!params) return fullURL;\n\n const urlObj = new URL(fullURL);\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, String(value));\n }\n });\n\n return urlObj.toString();\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(config: RequestConfig, ctx: TokenKitContext, targetURL: string): HeadersInit {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this.config.headers,\n ...config.headers,\n };\n\n // Add auth token if available (only for safe URLs)\n if (this.tokenManager && !config.skipAuth && this.isSafeURL(targetURL)) {\n const session = this.tokenManager.getSession(ctx);\n if (session?.accessToken) {\n const injectFn = this.config.auth?.injectToken ?? ((token, type) => `${type ?? 'Bearer'} ${token}`);\n headers['Authorization'] = injectFn(session.accessToken, session.tokenType);\n }\n }\n\n return headers;\n }\n\n /**\n * Check if a URL is safe for token injection (same origin as baseURL)\n */\n private isSafeURL(url: string): boolean {\n try {\n const requestUrl = new URL(url, this.config.baseURL);\n const baseUrl = new URL(this.config.baseURL || 'http://localhost');\n return requestUrl.origin === baseUrl.origin;\n } catch {\n // Only allow relative paths if baseURL is missing or invalid\n return !url.startsWith('http') && !url.startsWith('//');\n }\n }\n\n /**\n * Login\n */\n async login(credentials: any, options?: LoginOptions): Promise<APIResponse<TokenBundle>> {\n if (!this.tokenManager) {\n throw new Error('Auth is not configured for this client');\n }\n\n const context = getContextStore();\n return this.tokenManager.login(context, credentials, options);\n }\n\n /**\n * Logout\n */\n async logout(): Promise<void> {\n if (!this.tokenManager) {\n throw new Error('Auth is not configured for this client');\n }\n\n const context = getContextStore();\n await this.tokenManager.logout(context);\n }\n\n /**\n * Check if authenticated\n */\n isAuthenticated(): boolean {\n if (!this.tokenManager) return false;\n\n const context = getContextStore();\n return this.tokenManager.isAuthenticated(context);\n }\n\n /**\n * Get current session\n */\n getSession(): Session | null {\n if (!this.tokenManager) return null;\n\n const context = getContextStore();\n return this.tokenManager.getSession(context);\n }\n\n}\n\n/**\n * Global API client instance.\n * \n * This client is automatically synchronized with the global configuration \n * set via the Astro integration or setConfig().\n */\nexport const api = new APIClient();\n\n/**\n * Create API client.\n * \n * If no configuration is provided, it returns the global `api` singleton.\n */\nexport function createClient(config?: Partial<TokenKitConfig>): APIClient {\n if (!config) return api;\n return new APIClient(config);\n}","// packages/astro-tokenkit/src/integration.ts\n\nimport type { AstroIntegration } from 'astro';\nimport { createMiddleware } from './middleware';\nimport type { TokenKitConfig } from './types';\nimport { setConfig } from './config';\n\n/**\n * Astro integration for TokenKit\n * \n * This integration facilitates the setup of TokenKit in an Astro project.\n * \n * @example\n * ```ts\n * // astro.config.mjs\n * import { tokenKit } from 'astro-tokenkit';\n * \n * export default defineConfig({\n * integrations: [\n * tokenKit({\n * baseURL: 'https://api.example.com',\n * auth: {\n * login: '/auth/login',\n * refresh: '/auth/refresh',\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function tokenKit(config: TokenKitConfig): AstroIntegration {\n setConfig(config);\n \n // Create a serializable version of the config for the runtime\n const serializableConfig = JSON.parse(JSON.stringify(config, (key, value) => {\n if (typeof value === 'function') return undefined;\n return value;\n }));\n\n return {\n name: 'astro-tokenkit',\n hooks: {\n 'astro:config:setup': ({ updateConfig }) => {\n updateConfig({\n vite: {\n define: {\n '__TOKENKIT_CONFIG__': JSON.stringify(serializableConfig)\n }\n }\n });\n console.log('[TokenKit] Integration initialized');\n },\n },\n };\n}\n\n/**\n * Helper to define middleware in a separate file if needed\n */\nexport const defineMiddleware = () => createMiddleware();\n"],"names":["AsyncLocalStorage","defaultRunWithContext"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../node_modules/.pnpm/@rollup+plugin-typescript@12.3.0_rollup@4.56.0_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js","../src/types.ts","../src/auth/detector.ts","../src/auth/storage.ts","../src/utils/time.ts","../src/auth/policy.ts","../src/auth/manager.ts","../src/config.ts","../src/client/context.ts","../src/utils/retry.ts","../src/middleware.ts","../src/client/client.ts","../src/integration.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","// packages/astro-tokenkit/src/types.ts\n\nimport type { AstroCookies } from 'astro';\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\n/**\n * Token bundle returned from auth endpoints\n */\nexport interface TokenBundle {\n accessToken: string;\n refreshToken: string;\n accessExpiresAt: number; // Unix timestamp in seconds\n tokenType?: string;\n refreshExpiresAt?: number;\n sessionPayload?: Record<string, any>;\n}\n\n/**\n * Minimal context required by TokenKit\n */\nexport interface TokenKitContext {\n cookies: AstroCookies;\n [key: string]: any;\n}\n\n\n/**\n * Session information\n */\nexport interface Session {\n accessToken: string;\n expiresAt: number;\n tokenType?: string;\n payload?: Record<string, any>;\n}\n\n/**\n * Request options\n */\nexport interface RequestOptions {\n /** Additional headers */\n headers?: Record<string, string>;\n /** Request timeout in ms */\n timeout?: number;\n /** Query parameters */\n params?: Record<string, any>;\n /** Skip authentication for this request */\n skipAuth?: boolean;\n /** Custom signal for cancellation */\n signal?: AbortSignal;\n /** Auth override options for automatic refresh if triggered */\n auth?: AuthOptions;\n}\n\n/**\n * Request configuration\n */\nexport interface RequestConfig extends RequestOptions {\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n url: string;\n data?: any;\n}\n\n/**\n * HTTP response\n */\nexport interface APIResponse<T = any> {\n data: T;\n status: number;\n statusText: string;\n headers: Headers;\n url: string;\n ok: boolean;\n}\n\n/**\n * Field mapping for auto-detection\n */\nexport interface FieldMapping {\n accessToken?: string;\n refreshToken?: string;\n expiresAt?: string;\n expiresIn?: string;\n tokenType?: string;\n sessionPayload?: string;\n}\n\n/**\n * Callback after successful login\n */\nexport type OnLoginCallback = (bundle: TokenBundle, body: any, ctx: TokenKitContext) => void | Promise<void>;\n\n/**\n * Callback after failed login\n */\nexport type OnErrorCallback = (error: AuthError, ctx: TokenKitContext) => void | Promise<void>;\n\n/**\n * Auth override options\n */\nexport interface AuthOptions {\n /** Extra data for this specific auth request (login/refresh) */\n data?: Record<string, any>;\n}\n\n/**\n * Login options\n */\nexport interface LoginOptions extends AuthOptions {\n /** Extra headers for this specific login request */\n headers?: Record<string, string>;\n /** Callback after successful login */\n onLogin?: OnLoginCallback;\n /** Callback after failed login */\n onError?: OnErrorCallback;\n}\n\n/**\n * Auth configuration\n */\nexport interface AuthConfig {\n /** Login endpoint (relative to baseURL) */\n login: string;\n /** Refresh endpoint (relative to baseURL) */\n refresh: string;\n /** Logout endpoint (optional, relative to baseURL) */\n logout?: string;\n\n /** Content type for auth requests (default: 'application/json') */\n contentType?: 'application/json' | 'application/x-www-form-urlencoded';\n\n /** Extra headers for login/refresh requests */\n headers?: Record<string, string>;\n\n /** Extra data for login request */\n loginData?: Record<string, any>;\n\n /** Extra data for refresh request */\n refreshData?: Record<string, any>;\n\n /** Field name for refresh token in refresh request (default: 'refreshToken') */\n refreshRequestField?: string;\n\n /** Field mapping (auto-detected if not provided) */\n fields?: FieldMapping;\n\n /** Custom login response parser */\n parseLogin?: (body: any) => TokenBundle;\n /** Custom refresh response parser */\n parseRefresh?: (body: any) => TokenBundle;\n\n /** Custom token injection function (default: Bearer) */\n injectToken?: (token: string, type?: string) => string;\n\n /** Refresh policy */\n policy?: RefreshPolicy;\n\n /** Cookie configuration */\n cookies?: CookieConfig;\n}\n\n/**\n * Refresh policy\n */\nexport interface RefreshPolicy {\n /** Refresh before expiry (e.g., '5m' or 300) */\n refreshBefore?: string | number;\n /** Clock skew tolerance (e.g., '1m' or 60) */\n clockSkew?: string | number;\n /** Minimum interval between refreshes (e.g., '30s' or 30) */\n minInterval?: string | number;\n}\n\n/**\n * Cookie configuration\n */\nexport interface CookieConfig {\n /** Secure flag (auto-detected from NODE_ENV if not set) */\n secure?: boolean;\n /** SameSite policy */\n sameSite?: 'strict' | 'lax' | 'none';\n /** Cookie domain */\n domain?: string;\n /** Cookie names prefix */\n prefix?: string;\n}\n\n/**\n * Retry configuration\n */\nexport interface RetryConfig {\n /** Number of retry attempts */\n attempts?: number;\n /** Status codes to retry */\n statusCodes?: number[];\n /** Backoff strategy */\n backoff?: 'linear' | 'exponential';\n /** Initial delay in ms */\n delay?: number;\n}\n\n/**\n * Request interceptor\n */\nexport type RequestInterceptor = (\n config: RequestConfig,\n ctx?: TokenKitContext\n) => RequestConfig | Promise<RequestConfig>;\n\n/**\n * Response interceptor\n */\nexport type ResponseInterceptor = <T = any>(\n response: APIResponse<T>,\n ctx?: TokenKitContext\n) => APIResponse<T> | Promise<APIResponse<T>>;\n\n/**\n * Error interceptor\n */\nexport type ErrorInterceptor = (\n error: APIError,\n ctx?: TokenKitContext\n) => never | Promise<never>;\n\n/**\n * Interceptors configuration\n */\nexport interface InterceptorsConfig {\n request?: RequestInterceptor[];\n response?: ResponseInterceptor[];\n error?: ErrorInterceptor[];\n}\n\n/**\n * Client configuration\n */\nexport interface ClientConfig {\n /** Base URL for all requests */\n baseURL: string;\n\n /** Auth configuration (optional for non-auth clients) */\n auth?: AuthConfig;\n\n /** Default headers for all requests */\n headers?: Record<string, string>;\n\n /** Default timeout in ms */\n timeout?: number;\n\n /** Retry configuration */\n retry?: RetryConfig;\n\n /** Interceptors */\n interceptors?: InterceptorsConfig;\n \n /** AsyncLocalStorage instance */\n context?: AsyncLocalStorage<any>;\n \n /** Custom context store getter */\n getContextStore?: () => TokenKitContext | undefined | null;\n\n /** Custom context store setter */\n setContextStore?: (ctx: TokenKitContext) => void;\n \n /** Custom context runner */\n runWithContext?: <T>(ctx: TokenKitContext, fn: () => T) => T;\n}\n\n/**\n * TokenKit Global Configuration\n */\nexport interface TokenKitConfig extends Partial<ClientConfig> {\n}\n\n/**\n * API Error\n */\nexport class APIError extends Error {\n constructor(\n message: string,\n public status?: number,\n public response?: any,\n public request?: RequestConfig\n ) {\n super(message);\n this.name = 'APIError';\n }\n}\n\n/**\n * Authentication Error\n */\nexport class AuthError extends APIError {\n constructor(message: string, status?: number, response?: any, request?: RequestConfig) {\n super(message, status, response, request);\n this.name = 'AuthError';\n }\n}\n\n/**\n * Network Error\n */\nexport class NetworkError extends APIError {\n constructor(message: string, request?: RequestConfig) {\n super(message, undefined, undefined, request);\n this.name = 'NetworkError';\n }\n}\n\n/**\n * Timeout Error\n */\nexport class TimeoutError extends APIError {\n constructor(message: string, request?: RequestConfig) {\n super(message, undefined, undefined, request);\n this.name = 'TimeoutError';\n }\n}","// packages/astro-tokenkit/src/auth/detector.ts\n\nimport type { TokenBundle, FieldMapping } from '../types';\n\n/**\n * Common field names for access tokens\n */\nconst ACCESS_TOKEN_FIELDS = [\n 'access_token',\n 'accessToken',\n 'token',\n 'jwt',\n 'id_token',\n 'idToken',\n];\n\n/**\n * Common field names for refresh tokens\n */\nconst REFRESH_TOKEN_FIELDS = [\n 'refresh_token',\n 'refreshToken',\n 'refresh',\n];\n\n/**\n * Common field names for expiration timestamp\n */\nconst EXPIRES_AT_FIELDS = [\n 'expires_at',\n 'expiresAt',\n 'exp',\n 'expiry',\n];\n\n/**\n * Common field names for expires_in (seconds)\n */\nconst EXPIRES_IN_FIELDS = [\n 'expires_in',\n 'expiresIn',\n 'ttl',\n];\n\n/**\n * Common field names for token type\n */\nconst TOKEN_TYPE_FIELDS = [\n 'token_type',\n 'tokenType',\n];\n\n/**\n * Common field names for session payload\n */\nconst SESSION_PAYLOAD_FIELDS = [\n 'user',\n 'profile',\n 'account',\n 'data',\n];\n\n/**\n * Auto-detect token fields from response body\n */\nexport function autoDetectFields(body: any, fieldMapping?: FieldMapping): TokenBundle {\n // Helper to find field\n const findField = (candidates: string[], mapping?: string): any => {\n if (mapping && body[mapping] !== undefined) {\n return body[mapping];\n }\n for (const candidate of candidates) {\n if (body[candidate] !== undefined) {\n return body[candidate];\n }\n }\n return undefined;\n };\n\n // Detect access token\n const accessToken = findField(ACCESS_TOKEN_FIELDS, fieldMapping?.accessToken);\n if (!accessToken) {\n throw new Error(\n `Could not detect access token field. Tried: ${ACCESS_TOKEN_FIELDS.join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect refresh token\n const refreshToken = findField(REFRESH_TOKEN_FIELDS, fieldMapping?.refreshToken);\n if (!refreshToken) {\n throw new Error(\n `Could not detect refresh token field. Tried: ${REFRESH_TOKEN_FIELDS.join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect expiration\n let accessExpiresAt: number | undefined;\n\n // Try expires_at first (timestamp)\n const expiresAtValue = findField(EXPIRES_AT_FIELDS, fieldMapping?.expiresAt);\n if (expiresAtValue !== undefined) {\n accessExpiresAt = typeof expiresAtValue === 'number'\n ? expiresAtValue\n : parseInt(expiresAtValue, 10);\n }\n\n // Try expires_in (seconds from now)\n if (accessExpiresAt === undefined) {\n const expiresInValue = findField(EXPIRES_IN_FIELDS, fieldMapping?.expiresIn);\n if (expiresInValue !== undefined) {\n const expiresIn = typeof expiresInValue === 'number'\n ? expiresInValue\n : parseInt(expiresInValue, 10);\n accessExpiresAt = Math.floor(Date.now() / 1000) + expiresIn;\n }\n }\n\n if (accessExpiresAt === undefined) {\n throw new Error(\n `Could not detect expiration field. Tried: ${[...EXPIRES_AT_FIELDS, ...EXPIRES_IN_FIELDS].join(', ')}. ` +\n `Provide custom parseLogin/parseRefresh or field mapping.`\n );\n }\n\n // Detect session payload (optional)\n const sessionPayload = findField(SESSION_PAYLOAD_FIELDS, fieldMapping?.sessionPayload);\n\n // Detect token type (optional)\n const tokenType = findField(TOKEN_TYPE_FIELDS, fieldMapping?.tokenType);\n\n return {\n accessToken,\n refreshToken,\n accessExpiresAt,\n tokenType: tokenType || undefined,\n sessionPayload: sessionPayload || undefined,\n };\n}\n\n/**\n * Parse JWT payload without verification (for reading only)\n */\nexport function parseJWTPayload(token: string): Record<string, any> | null {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) {\n return null;\n }\n\n const payload = parts[1];\n \n // Better UTF-8 support for environments with Buffer (like Node.js/Astro)\n if (typeof Buffer !== 'undefined') {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n }\n \n const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));\n return JSON.parse(decoded);\n } catch {\n return null;\n }\n}","// packages/astro-tokenkit/src/auth/storage.ts\n\nimport type { TokenBundle, CookieConfig, TokenKitContext } from '../types';\n\n/**\n * Cookie names\n */\nexport interface CookieNames {\n accessToken: string;\n refreshToken: string;\n expiresAt: string;\n lastRefreshAt: string;\n tokenType: string;\n}\n\n/**\n * Get cookie names with optional prefix\n */\nexport function getCookieNames(prefix?: string): CookieNames {\n const p = prefix ? `${prefix}_` : '';\n return {\n accessToken: `${p}access_token`,\n refreshToken: `${p}refresh_token`,\n expiresAt: `${p}access_expires_at`,\n lastRefreshAt: `${p}last_refresh_at`,\n tokenType: `${p}token_type`,\n };\n}\n\n/**\n * Get cookie options with smart defaults\n */\nexport function getCookieOptions(config: CookieConfig = {}) {\n const isProduction = process.env.NODE_ENV === 'production';\n\n return {\n secure: config.secure ?? isProduction,\n sameSite: config.sameSite ?? 'lax' as const,\n httpOnly: true, // Always HttpOnly for security\n domain: config.domain,\n };\n}\n\n/**\n * Store token bundle in cookies\n */\nexport function storeTokens(\n ctx: TokenKitContext,\n bundle: TokenBundle,\n cookieConfig: CookieConfig = {}\n): void {\n const names = getCookieNames(cookieConfig.prefix);\n const options = getCookieOptions(cookieConfig);\n const now = Math.floor(Date.now() / 1000);\n\n // Calculate max age\n const accessMaxAge = Math.max(0, bundle.accessExpiresAt - now);\n const refreshMaxAge = bundle.refreshExpiresAt\n ? Math.max(0, bundle.refreshExpiresAt - now)\n : 7 * 24 * 60 * 60; // Default 7 days\n\n // Set access token\n ctx.cookies.set(names.accessToken, bundle.accessToken, {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set refresh token (restricted path for security)\n ctx.cookies.set(names.refreshToken, bundle.refreshToken, {\n ...options,\n maxAge: refreshMaxAge,\n path: '/',\n });\n\n // Set expiration timestamp\n ctx.cookies.set(names.expiresAt, bundle.accessExpiresAt.toString(), {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set last refresh timestamp\n ctx.cookies.set(names.lastRefreshAt, now.toString(), {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n\n // Set token type if available\n if (bundle.tokenType) {\n ctx.cookies.set(names.tokenType, bundle.tokenType, {\n ...options,\n maxAge: accessMaxAge,\n path: '/',\n });\n }\n}\n\n/**\n * Retrieve tokens from cookies\n */\nexport function retrieveTokens(\n ctx: TokenKitContext,\n cookieConfig: CookieConfig = {}\n): {\n accessToken: string | null;\n refreshToken: string | null;\n expiresAt: number | null;\n lastRefreshAt: number | null;\n tokenType: string | null;\n} {\n const names = getCookieNames(cookieConfig.prefix);\n\n const accessToken = ctx.cookies.get(names.accessToken)?.value || null;\n const refreshToken = ctx.cookies.get(names.refreshToken)?.value || null;\n const tokenType = ctx.cookies.get(names.tokenType)?.value || null;\n\n const expiresAtStr = ctx.cookies.get(names.expiresAt)?.value;\n const expiresAt = expiresAtStr ? parseInt(expiresAtStr, 10) : null;\n\n const lastRefreshAtStr = ctx.cookies.get(names.lastRefreshAt)?.value;\n const lastRefreshAt = lastRefreshAtStr ? parseInt(lastRefreshAtStr, 10) : null;\n\n return { accessToken, refreshToken, expiresAt, lastRefreshAt, tokenType };\n}\n\n/**\n * Clear all auth cookies\n */\nexport function clearTokens(ctx: TokenKitContext, cookieConfig: CookieConfig = {}): void {\n const names = getCookieNames(cookieConfig.prefix);\n const options = getCookieOptions(cookieConfig);\n\n ctx.cookies.delete(names.accessToken, { ...options, path: '/' });\n ctx.cookies.delete(names.refreshToken, { ...options, path: '/' });\n ctx.cookies.delete(names.expiresAt, { ...options, path: '/' });\n ctx.cookies.delete(names.lastRefreshAt, { ...options, path: '/' });\n ctx.cookies.delete(names.tokenType, { ...options, path: '/' });\n}","// packages/astro-tokenkit/src/utils/time.ts\n\n/**\n * Parse time string to seconds\n * Supports: '5m', '30s', '1h', '2d'\n */\nexport function parseTime(input: string | number): number {\n if (typeof input === 'number') {\n return input;\n }\n\n const match = input.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error(`Invalid time format: ${input}. Use format like '5m', '30s', '1h', '2d'`);\n }\n\n const value = parseInt(match[1], 10);\n const unit = match[2];\n\n const multipliers = {\n s: 1,\n m: 60,\n h: 60 * 60,\n d: 60 * 60 * 24,\n };\n\n return value * multipliers[unit as keyof typeof multipliers];\n}\n\n/**\n * Format seconds to human-readable string\n */\nexport function formatTime(seconds: number): string {\n if (seconds < 60) return `${seconds}s`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\n return `${Math.floor(seconds / 86400)}d`;\n}","// packages/astro-tokenkit/src/auth/policy.ts\n\nimport type { RefreshPolicy } from '../types';\nimport { parseTime } from '../utils/time';\n\n/**\n * Default refresh policy\n */\nexport const DEFAULT_POLICY = {\n refreshBefore: 300, // 5 minutes\n clockSkew: 60, // 1 minute\n minInterval: 30, // 30 seconds\n};\n\n/**\n * Normalize refresh policy (convert time strings to seconds)\n */\nexport function normalizePolicy(policy: RefreshPolicy = {}): Required<RefreshPolicy> {\n return {\n refreshBefore: policy.refreshBefore\n ? parseTime(policy.refreshBefore)\n : DEFAULT_POLICY.refreshBefore,\n clockSkew: policy.clockSkew\n ? parseTime(policy.clockSkew)\n : DEFAULT_POLICY.clockSkew,\n minInterval: policy.minInterval\n ? parseTime(policy.minInterval)\n : DEFAULT_POLICY.minInterval,\n };\n}\n\n/**\n * Check if token should be refreshed\n */\nexport function shouldRefresh(\n expiresAt: number,\n now: number,\n lastRefreshAt: number | null,\n policy: RefreshPolicy = {}\n): boolean {\n const normalized = normalizePolicy(policy);\n const refreshBefore = typeof normalized.refreshBefore === 'number'\n ? normalized.refreshBefore\n : parseTime(normalized.refreshBefore);\n const clockSkew = typeof normalized.clockSkew === 'number'\n ? normalized.clockSkew\n : parseTime(normalized.clockSkew);\n const minInterval = typeof normalized.minInterval === 'number'\n ? normalized.minInterval\n : parseTime(normalized.minInterval);\n\n // Adjust for clock skew\n const adjustedNow = now + clockSkew;\n\n // Check if near expiration\n const timeUntilExpiry = expiresAt - adjustedNow;\n if (timeUntilExpiry > refreshBefore) {\n return false;\n }\n\n // Check minimum interval\n if (lastRefreshAt !== null) {\n const timeSinceLastRefresh = now - lastRefreshAt;\n if (timeSinceLastRefresh < minInterval) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Check if token is expired\n */\nexport function isExpired(\n expiresAt: number,\n now: number,\n policy: RefreshPolicy = {}\n): boolean {\n const normalized = normalizePolicy(policy);\n const clockSkew = typeof normalized.clockSkew === 'number'\n ? normalized.clockSkew\n : parseTime(normalized.clockSkew);\n\n // Pessimistic: consider it expired if current time + skew is past expiration\n return now + clockSkew > expiresAt;\n}","// packages/astro-tokenkit/src/auth/manager.ts\n\nimport {APIResponse, AuthError} from '../types';\nimport type { TokenBundle, Session, AuthConfig, TokenKitContext, AuthOptions, LoginOptions } from '../types';\nimport { autoDetectFields, parseJWTPayload } from './detector';\nimport { storeTokens, retrieveTokens, clearTokens } from './storage';\nimport { shouldRefresh, isExpired } from './policy';\n\n/**\n * Single-flight refresh manager\n */\nclass SingleFlight {\n private inFlight = new Map<string, Promise<TokenBundle | null>>();\n\n async execute(\n key: string,\n fn: () => Promise<TokenBundle | null>\n ): Promise<TokenBundle | null> {\n const existing = this.inFlight.get(key);\n if (existing) return existing;\n\n const promise = this.doExecute(key, fn);\n this.inFlight.set(key, promise);\n return promise;\n }\n\n private async doExecute(\n key: string,\n fn: () => Promise<TokenBundle | null>\n ): Promise<TokenBundle | null> {\n try {\n return await fn();\n } finally {\n this.inFlight.delete(key);\n }\n }\n}\n\n/**\n * Token Manager handles all token operations\n */\nexport class TokenManager {\n private singleFlight = new SingleFlight();\n private baseURL: string;\n\n constructor(\n private config: AuthConfig,\n baseURL: string\n ) {\n this.baseURL = baseURL;\n }\n\n /**\n * Perform login\n */\n async login(ctx: TokenKitContext, credentials: any, options?: LoginOptions): Promise<APIResponse<TokenBundle>> {\n const url = this.joinURL(this.baseURL, this.config.login);\n\n const contentType = this.config.contentType || 'application/json';\n const headers: Record<string, string> = {\n 'Content-Type': contentType,\n ...this.config.headers,\n ...options?.headers,\n };\n\n const data = {\n ...this.config.loginData,\n ...options?.data,\n ...credentials,\n };\n\n let requestBody: string;\n if (contentType === 'application/x-www-form-urlencoded') {\n requestBody = new URLSearchParams(data).toString();\n } else {\n requestBody = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers,\n body: requestBody,\n });\n } catch (error: any) {\n const authError = new AuthError(`Login request failed: ${error.message}`);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n if (!response.ok) {\n const authError = new AuthError(`Login failed: ${response.status} ${response.statusText}`, response.status, response);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n const body = await response.json().catch(() => ({}));\n\n // Parse response\n let bundle: TokenBundle;\n try {\n bundle = this.config.parseLogin\n ? this.config.parseLogin(body)\n : autoDetectFields(body, this.config.fields);\n } catch (error: any) {\n const authError = new AuthError(`Invalid login response: ${error.message}`, response.status, response);\n if (options?.onError) await options.onError(authError, ctx);\n throw authError;\n }\n\n // Store in cookies\n storeTokens(ctx, bundle, this.config.cookies);\n\n // Call onLogin callback if provided\n if (options?.onLogin) {\n await options.onLogin(bundle, body, ctx);\n }\n\n return {\n data: bundle,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n url: response.url,\n ok: response.ok,\n };\n }\n\n /**\n * Perform token refresh\n */\n async refresh(ctx: TokenKitContext, refreshToken: string, options?: AuthOptions, headers?: Record<string, string>): Promise<TokenBundle | null> {\n try {\n return await this.performRefresh(ctx, refreshToken, options, headers);\n } catch (error) {\n clearTokens(ctx, this.config.cookies);\n throw error;\n }\n }\n\n /**\n * Internal refresh implementation\n */\n private async performRefresh(ctx: TokenKitContext, refreshToken: string, options?: AuthOptions, extraHeaders?: Record<string, string>): Promise<TokenBundle | null> {\n const url = this.joinURL(this.baseURL, this.config.refresh);\n\n const contentType = this.config.contentType || 'application/json';\n const headers: Record<string, string> = {\n 'Content-Type': contentType,\n ...this.config.headers,\n ...extraHeaders,\n };\n\n const refreshField = this.config.refreshRequestField || 'refreshToken';\n const data = {\n ...this.config.refreshData,\n ...options?.data,\n [refreshField]: refreshToken,\n };\n\n let requestBody: string;\n if (contentType === 'application/x-www-form-urlencoded') {\n requestBody = new URLSearchParams(data).toString();\n } else {\n requestBody = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: 'POST',\n headers,\n body: requestBody,\n });\n } catch (error: any) {\n throw new AuthError(`Refresh request failed: ${error.message}`);\n }\n\n if (!response.ok) {\n // 401/403 = invalid refresh token\n if (response.status === 401 || response.status === 403) {\n clearTokens(ctx, this.config.cookies);\n return null;\n }\n throw new AuthError(`Refresh failed: ${response.status} ${response.statusText}`, response.status, response);\n }\n\n const body = await response.json().catch(() => ({}));\n\n // Parse response\n let bundle: TokenBundle;\n try {\n bundle = this.config.parseRefresh\n ? this.config.parseRefresh(body)\n : autoDetectFields(body, this.config.fields);\n } catch (error: any) {\n throw new AuthError(`Invalid refresh response: ${error.message}`, response.status, response);\n }\n\n // Validate bundle\n if (!bundle.accessToken || !bundle.refreshToken || !bundle.accessExpiresAt) {\n throw new AuthError('Invalid token bundle returned from refresh endpoint', response.status, response);\n }\n\n // Store new tokens\n storeTokens(ctx, bundle, this.config.cookies);\n\n return bundle;\n }\n\n /**\n * Ensure valid tokens (with automatic refresh)\n */\n async ensure(ctx: TokenKitContext, options?: AuthOptions, headers?: Record<string, string>): Promise<Session | null> {\n const now = Math.floor(Date.now() / 1000);\n const tokens = retrieveTokens(ctx, this.config.cookies);\n\n // No tokens\n if (!tokens.accessToken || !tokens.refreshToken || !tokens.expiresAt) {\n return null;\n }\n\n // Token expired\n if (isExpired(tokens.expiresAt, now, this.config.policy)) {\n const flightKey = this.createFlightKey(tokens.refreshToken);\n const bundle = await this.singleFlight.execute(flightKey, () =>\n this.refresh(ctx, tokens.refreshToken!, options, headers)\n );\n\n if (!bundle) return null;\n\n return {\n accessToken: bundle.accessToken,\n expiresAt: bundle.accessExpiresAt,\n tokenType: bundle.tokenType,\n payload: bundle.sessionPayload ?? parseJWTPayload(bundle.accessToken) ?? undefined,\n };\n }\n\n // Proactive refresh\n if (shouldRefresh(tokens.expiresAt, now, tokens.lastRefreshAt, this.config.policy)) {\n const flightKey = this.createFlightKey(tokens.refreshToken);\n const bundle = await this.singleFlight.execute(flightKey, () =>\n this.refresh(ctx, tokens.refreshToken!, options, headers)\n );\n\n if (bundle) {\n return {\n accessToken: bundle.accessToken,\n expiresAt: bundle.accessExpiresAt,\n tokenType: bundle.tokenType,\n payload: bundle.sessionPayload ?? parseJWTPayload(bundle.accessToken) ?? undefined,\n };\n }\n\n // Refresh failed, check if tokens still exist\n const currentTokens = retrieveTokens(ctx, this.config.cookies);\n if (!currentTokens.accessToken) {\n return null;\n }\n }\n\n // Return current session\n return {\n accessToken: tokens.accessToken,\n expiresAt: tokens.expiresAt,\n tokenType: tokens.tokenType ?? undefined,\n payload: parseJWTPayload(tokens.accessToken) ?? undefined,\n };\n }\n\n /**\n * Logout (clear tokens)\n */\n async logout(ctx: TokenKitContext): Promise<void> {\n // Optionally call logout endpoint\n if (this.config.logout) {\n try {\n const url = this.joinURL(this.baseURL, this.config.logout);\n const session = this.getSession(ctx);\n const headers: Record<string, string> = {};\n\n if (session?.accessToken) {\n const injectFn = this.config.injectToken ?? ((token, type) => `${type ?? 'Bearer'} ${token}`);\n headers['Authorization'] = injectFn(session.accessToken, session.tokenType);\n }\n\n await fetch(url, { method: 'POST', headers });\n } catch (error) {\n // Ignore logout endpoint errors\n console.warn('[TokenKit] Logout endpoint failed:', error);\n }\n }\n\n clearTokens(ctx, this.config.cookies);\n }\n\n /**\n * Get current session (no refresh)\n */\n getSession(ctx: TokenKitContext): Session | null {\n const tokens = retrieveTokens(ctx, this.config.cookies);\n\n if (!tokens.accessToken || !tokens.expiresAt) {\n return null;\n }\n\n return {\n accessToken: tokens.accessToken,\n expiresAt: tokens.expiresAt,\n tokenType: tokens.tokenType ?? undefined,\n payload: parseJWTPayload(tokens.accessToken) ?? undefined,\n };\n }\n\n /**\n * Check if authenticated\n */\n isAuthenticated(ctx: TokenKitContext): boolean {\n const tokens = retrieveTokens(ctx, this.config.cookies);\n return !!(tokens.accessToken && tokens.refreshToken);\n }\n\n /**\n * Create flight key for single-flight deduplication\n */\n private createFlightKey(token: string): string {\n // Avoid weak hashing of sensitive tokens\n return `refresh_${token}`;\n }\n\n /**\n * Join base URL and path safely\n */\n private joinURL(base: string, path: string): string {\n const b = base.endsWith('/') ? base : base + '/';\n const p = path.startsWith('/') ? path.slice(1) : path;\n return b + p;\n }\n}","// packages/astro-tokenkit/src/config.ts\n\nimport type { TokenKitConfig } from \"./types\";\nimport { TokenManager } from \"./auth/manager\";\n\nconst CONFIG_KEY = Symbol.for('astro-tokenkit.config');\nconst MANAGER_KEY = Symbol.for('astro-tokenkit.manager');\n\nconst globalStorage = globalThis as any;\n\n/**\n * Internal config with defaults applied\n */\nexport interface ResolvedConfig extends TokenKitConfig {\n baseURL: string;\n}\n\n// Initialize global storage if not present\nif (!globalStorage[CONFIG_KEY]) {\n globalStorage[CONFIG_KEY] = {\n runWithContext: undefined,\n getContextStore: undefined,\n setContextStore: undefined,\n baseURL: \"\",\n };\n}\n\n/**\n * Set configuration\n */\nexport function setConfig(userConfig: TokenKitConfig): void {\n const currentConfig = globalStorage[CONFIG_KEY];\n const finalConfig = {\n ...currentConfig,\n ...userConfig,\n } as ResolvedConfig;\n\n // Validate that getter and setter are defined together\n if ((finalConfig.getContextStore && !finalConfig.setContextStore) || \n (!finalConfig.getContextStore && finalConfig.setContextStore)) {\n throw new Error(\"[TokenKit] getContextStore and setContextStore must be defined together.\");\n }\n\n globalStorage[CONFIG_KEY] = finalConfig;\n\n // Re-initialize global token manager if auth changed\n if (finalConfig.auth) {\n globalStorage[MANAGER_KEY] = new TokenManager(finalConfig.auth, finalConfig.baseURL);\n } else {\n globalStorage[MANAGER_KEY] = undefined;\n }\n}\n\n/**\n * Get current configuration\n */\nexport function getConfig(): ResolvedConfig {\n return globalStorage[CONFIG_KEY];\n}\n\n/**\n * Get global token manager\n */\nexport function getTokenManager(): TokenManager | undefined {\n return globalStorage[MANAGER_KEY];\n}\n\n/**\n * Set global token manager (mainly for testing)\n */\nexport function setTokenManager(manager: TokenManager | undefined): void {\n globalStorage[MANAGER_KEY] = manager;\n}\n\n// Handle injected configuration from Astro integration\ntry {\n // @ts-ignore\n const injectedConfig = typeof __TOKENKIT_CONFIG__ !== 'undefined' ? __TOKENKIT_CONFIG__ : undefined;\n if (injectedConfig) {\n setConfig(injectedConfig);\n }\n} catch (e) {\n // Ignore errors in environments where __TOKENKIT_CONFIG__ might be restricted\n}\n","// packages/astro-tokenkit/src/client/context.ts\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport type { TokenKitContext } from '../types';\nimport { getConfig } from '../config';\n\n/**\n * Async local storage for Astro context\n */\nconst als = new AsyncLocalStorage<TokenKitContext>();\n\n/**\n * Bind Astro context for the current async scope\n */\nexport function runWithContext<T>(ctx: TokenKitContext, fn: () => T): T {\n const config = getConfig();\n const runner = config.runWithContext;\n\n if (runner) {\n return runner(ctx, fn);\n }\n\n return als.run(ctx, fn);\n}\n\n/**\n * Get current Astro context (from middleware binding or explicit)\n */\nexport function getContextStore(): TokenKitContext {\n const config = getConfig();\n const getStore = config.getContextStore;\n const context = (config as any).context || als;\n\n const store = getStore \n ? getStore() \n : (context as AsyncLocalStorage<TokenKitContext>).getStore();\n \n if (!store) {\n throw new Error(\n 'Astro context not found. Make sure to use api.middleware() to bind context automatically.'\n );\n }\n\n return store;\n}\n\n/**\n * Check if context is available\n */\nexport function hasContext(): boolean {\n const config = getConfig();\n const getStore = config.getContextStore;\n const context = (config as any).context || als;\n\n const store = getStore \n ? getStore() \n : (context as AsyncLocalStorage<TokenKitContext>).getStore();\n\n return !!store;\n}","// packages/astro-tokenkit/src/utils/retry.ts\n\nimport type { RetryConfig } from '../types';\n\n/**\n * Default retry configuration\n */\nexport const DEFAULT_RETRY: Required<RetryConfig> = {\n attempts: 3,\n statusCodes: [408, 429, 500, 502, 503, 504],\n backoff: 'exponential',\n delay: 1000,\n};\n\n/**\n * Calculate retry delay\n */\nexport function calculateDelay(\n attempt: number,\n config: RetryConfig = {}\n): number {\n const { backoff = DEFAULT_RETRY.backoff, delay = DEFAULT_RETRY.delay } = config;\n\n if (backoff === 'linear') {\n return delay * attempt;\n }\n\n // Exponential backoff: delay * 2^(attempt-1)\n return delay * Math.pow(2, attempt - 1);\n}\n\n/**\n * Check if error should be retried\n */\nexport function shouldRetry(\n status: number | undefined,\n attempt: number,\n config: RetryConfig = {}\n): boolean {\n const {\n attempts = DEFAULT_RETRY.attempts,\n statusCodes = DEFAULT_RETRY.statusCodes,\n } = config;\n\n if (attempt >= attempts) {\n return false;\n }\n\n if (status === undefined) {\n // Network errors are retryable\n return true;\n }\n\n return statusCodes.includes(status);\n}\n\n/**\n * Sleep for given milliseconds\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}","// packages/astro-tokenkit/src/middleware.ts\n\nimport type {MiddlewareHandler} from 'astro';\nimport {runWithContext as defaultRunWithContext} from './client/context';\nimport {getConfig, getTokenManager} from './config';\n\n/**\n * Create middleware for context binding and automatic token rotation\n */\nexport function createMiddleware(): MiddlewareHandler {\n return async (ctx, next) => {\n const tokenManager = getTokenManager();\n const config = getConfig();\n\n const runLogic = async () => {\n // Proactively ensure a valid session if auth is configured\n if (tokenManager) {\n try {\n // This handles token rotation (refresh) if needed\n await tokenManager.ensure(ctx);\n } catch (error: any) {\n // Log only the message to avoid leaking sensitive data in the error object\n console.error('[TokenKit] Automatic token rotation failed:', error.message || error);\n }\n }\n return next();\n };\n\n const setupAndRun = async () => {\n if (config.setContextStore) {\n config.setContextStore(ctx);\n }\n return runLogic();\n };\n\n if (config.runWithContext) {\n return config.runWithContext(ctx, setupAndRun);\n }\n\n if (config.setContextStore) {\n return setupAndRun();\n }\n\n return defaultRunWithContext(ctx, runLogic);\n };\n}\n","// packages/astro-tokenkit/src/client/client.ts\n\nimport type {APIResponse, ClientConfig, RequestConfig, RequestOptions, Session, TokenKitContext, TokenKitConfig,\n AuthConfig, LoginOptions, TokenBundle} from '../types';\nimport {APIError, AuthError, NetworkError, TimeoutError} from '../types';\nimport {TokenManager} from '../auth/manager';\nimport {getContextStore} from './context';\nimport {calculateDelay, shouldRetry, sleep} from '../utils/retry';\nimport {getConfig, getTokenManager} from '../config';\nimport {createMiddleware} from '../middleware';\n\n/**\n * API Client\n */\nexport class APIClient {\n private customConfig?: Partial<TokenKitConfig>;\n private _localTokenManager?: TokenManager;\n private _lastUsedAuth?: AuthConfig;\n private _lastUsedBaseURL?: string;\n\n constructor(config?: Partial<TokenKitConfig>) {\n this.customConfig = config;\n }\n\n /**\n * Get current configuration (merged with global)\n */\n public get config(): ClientConfig {\n // Merge global config with custom config\n const globalConfig = getConfig();\n \n // If no custom config, return global config directly\n if (!this.customConfig) return globalConfig as ClientConfig;\n \n // Merge custom config on top of global config\n return {\n ...globalConfig,\n ...this.customConfig,\n } as ClientConfig;\n }\n\n /**\n * Get token manager\n */\n public get tokenManager(): TokenManager | undefined {\n const config = this.config;\n if (!config.auth) return undefined;\n\n const globalConfig = getConfig();\n const globalManager = getTokenManager();\n\n // Reuse global manager if it matches our configuration\n if (globalManager && \n config.auth === globalConfig.auth && \n config.baseURL === globalConfig.baseURL) {\n return globalManager;\n }\n\n // Otherwise create/reuse a local manager for this client\n if (!this._localTokenManager || \n this._lastUsedAuth !== config.auth || \n this._lastUsedBaseURL !== config.baseURL) {\n this._localTokenManager = new TokenManager(config.auth, config.baseURL);\n this._lastUsedAuth = config.auth;\n this._lastUsedBaseURL = config.baseURL;\n }\n\n return this._localTokenManager;\n }\n\n /**\n * Get middleware for context binding and automatic token rotation.\n * This middleware uses the global configuration.\n */\n public middleware() {\n return createMiddleware();\n }\n\n /**\n * GET request\n */\n async get<T = any>(url: string, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'GET',\n url,\n ...options,\n });\n }\n\n /**\n * POST request\n */\n async post<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'POST',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * PUT request\n */\n async put<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'PUT',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * PATCH request\n */\n async patch<T = any>(url: string, data?: any, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'PATCH',\n url,\n data,\n ...options,\n });\n }\n\n /**\n * DELETE request\n */\n async delete<T = any>(url: string, options?: RequestOptions): Promise<APIResponse<T>> {\n return this.request<T>({\n method: 'DELETE',\n url,\n ...options,\n });\n }\n\n /**\n * Generic request method\n */\n async request<T = any>(config: RequestConfig): Promise<APIResponse<T>> {\n const ctx = getContextStore();\n let attempt = 0;\n\n while (true) {\n attempt++;\n\n try {\n return await this.executeRequest<T>(config, ctx, attempt);\n } catch (error) {\n // Check if we should retry\n if (shouldRetry((error as APIError).status, attempt, this.config.retry)) {\n const delay = calculateDelay(attempt, this.config.retry);\n await sleep(delay);\n continue;\n }\n\n // No more retries\n throw error;\n }\n }\n }\n\n /**\n * Execute single request\n */\n private async executeRequest<T>(\n config: RequestConfig,\n ctx: TokenKitContext,\n attempt: number\n ): Promise<APIResponse<T>> {\n // Ensure valid session (if auth is enabled)\n if (this.tokenManager && !config.skipAuth) {\n await this.tokenManager.ensure(ctx, config.auth, config.headers);\n }\n\n // Build full URL\n const fullURL = this.buildURL(config.url, config.params);\n\n // Build headers\n const headers = this.buildHeaders(config, ctx, fullURL);\n\n // Build request init\n const init: RequestInit = {\n method: config.method,\n headers,\n signal: config.signal,\n };\n\n // Add body for non-GET requests\n if (config.data && config.method !== 'GET') {\n init.body = JSON.stringify(config.data);\n }\n\n // Apply request interceptors\n let requestConfig = { ...config };\n if (this.config.interceptors?.request) {\n for (const interceptor of this.config.interceptors.request) {\n requestConfig = await interceptor(requestConfig, ctx);\n }\n }\n\n // Execute fetch with timeout\n const timeout = config.timeout ?? this.config.timeout ?? 30000;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(fullURL, {\n ...init,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // Handle 401 (try refresh and retry once)\n if (response.status === 401 && this.tokenManager && !config.skipAuth && attempt === 1) {\n // Clear and try fresh session\n const session = await this.tokenManager.ensure(ctx, config.auth, config.headers);\n if (session) {\n // Retry with new token\n return this.executeRequest<T>(config, ctx, attempt + 1);\n }\n }\n\n // Parse response\n const apiResponse = await this.parseResponse<T>(response, fullURL);\n\n // Apply response interceptors\n if (this.config.interceptors?.response) {\n let interceptedResponse = apiResponse;\n for (const interceptor of this.config.interceptors.response) {\n interceptedResponse = await interceptor(interceptedResponse, ctx);\n }\n return interceptedResponse;\n }\n\n return apiResponse;\n } catch (error) {\n clearTimeout(timeoutId);\n\n // Apply error interceptors\n if (this.config.interceptors?.error) {\n for (const interceptor of this.config.interceptors.error) {\n await interceptor(error as APIError, ctx);\n }\n }\n\n // Transform errors\n if (error instanceof Error && error.name === 'AbortError') {\n throw new TimeoutError(`Request timeout after ${timeout}ms`, requestConfig);\n }\n\n if (error instanceof APIError) {\n throw error;\n }\n\n throw new NetworkError((error as Error).message, requestConfig);\n }\n }\n\n /**\n * Parse response\n */\n private async parseResponse<T>(response: Response, url: string): Promise<APIResponse<T>> {\n let data: T;\n\n // Try to parse JSON\n const contentType = response.headers.get('content-type');\n if (contentType?.includes('application/json')) {\n try {\n data = await response.json();\n } catch {\n data = await response.text() as any;\n }\n } else {\n data = await response.text() as any;\n }\n\n // Check if response is ok\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthError(\n `Authentication failed: ${response.status} ${response.statusText}`,\n response.status,\n data\n );\n }\n\n throw new APIError(\n `Request failed: ${response.status} ${response.statusText}`,\n response.status,\n data\n );\n }\n\n return {\n data,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n url,\n ok: response.ok,\n };\n }\n\n /**\n * Build full URL with query params\n */\n private buildURL(url: string, params?: Record<string, any>): string {\n const fullURL = url.startsWith('http') ? url : this.config.baseURL + url;\n\n if (!params) return fullURL;\n\n const urlObj = new URL(fullURL);\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, String(value));\n }\n });\n\n return urlObj.toString();\n }\n\n /**\n * Build request headers\n */\n private buildHeaders(config: RequestConfig, ctx: TokenKitContext, targetURL: string): HeadersInit {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this.config.headers,\n ...config.headers,\n };\n\n // Add auth token if available (only for safe URLs)\n if (this.tokenManager && !config.skipAuth && this.isSafeURL(targetURL)) {\n const session = this.tokenManager.getSession(ctx);\n if (session?.accessToken) {\n const injectFn = this.config.auth?.injectToken ?? ((token, type) => `${type ?? 'Bearer'} ${token}`);\n headers['Authorization'] = injectFn(session.accessToken, session.tokenType);\n }\n }\n\n return headers;\n }\n\n /**\n * Check if a URL is safe for token injection (same origin as baseURL)\n */\n private isSafeURL(url: string): boolean {\n try {\n const requestUrl = new URL(url, this.config.baseURL);\n const baseUrl = new URL(this.config.baseURL || 'http://localhost');\n return requestUrl.origin === baseUrl.origin;\n } catch {\n // Only allow relative paths if baseURL is missing or invalid\n return !url.startsWith('http') && !url.startsWith('//');\n }\n }\n\n /**\n * Login\n */\n async login(credentials: any, options?: LoginOptions): Promise<APIResponse<TokenBundle>> {\n if (!this.tokenManager) {\n throw new Error('Auth is not configured for this client');\n }\n\n const context = getContextStore();\n return this.tokenManager.login(context, credentials, options);\n }\n\n /**\n * Logout\n */\n async logout(): Promise<void> {\n if (!this.tokenManager) {\n throw new Error('Auth is not configured for this client');\n }\n\n const context = getContextStore();\n await this.tokenManager.logout(context);\n }\n\n /**\n * Check if authenticated\n */\n isAuthenticated(): boolean {\n if (!this.tokenManager) return false;\n\n const context = getContextStore();\n return this.tokenManager.isAuthenticated(context);\n }\n\n /**\n * Get current session\n */\n getSession(): Session | null {\n if (!this.tokenManager) return null;\n\n const context = getContextStore();\n return this.tokenManager.getSession(context);\n }\n\n}\n\n/**\n * Global API client instance.\n * \n * This client is automatically synchronized with the global configuration \n * set via the Astro integration or setConfig().\n */\nexport const api = new APIClient();\n\n/**\n * Create API client.\n * \n * If no configuration is provided, it returns the global `api` singleton.\n */\nexport function createClient(config?: Partial<TokenKitConfig>): APIClient {\n if (!config) return api;\n return new APIClient(config);\n}","// packages/astro-tokenkit/src/integration.ts\n\nimport type { AstroIntegration } from 'astro';\nimport { createMiddleware } from './middleware';\nimport type { TokenKitConfig } from './types';\nimport { setConfig } from './config';\n\n/**\n * Astro integration for TokenKit\n * \n * This integration facilitates the setup of TokenKit in an Astro project.\n * \n * @example\n * ```ts\n * // astro.config.mjs\n * import { tokenKit } from 'astro-tokenkit';\n * \n * export default defineConfig({\n * integrations: [\n * tokenKit({\n * baseURL: 'https://api.example.com',\n * auth: {\n * login: '/auth/login',\n * refresh: '/auth/refresh',\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function tokenKit(config: TokenKitConfig): AstroIntegration {\n setConfig(config);\n \n // Create a serializable version of the config for the runtime\n const serializableConfig = JSON.parse(JSON.stringify(config, (key, value) => {\n if (typeof value === 'function') return undefined;\n return value;\n }));\n\n return {\n name: 'astro-tokenkit',\n hooks: {\n 'astro:config:setup': ({ updateConfig }) => {\n updateConfig({\n vite: {\n define: {\n '__TOKENKIT_CONFIG__': JSON.stringify(serializableConfig)\n }\n }\n });\n console.log('[TokenKit] Integration initialized');\n },\n },\n };\n}\n\n/**\n * Helper to define middleware in a separate file if needed\n */\nexport const defineMiddleware = () => createMiddleware();\n"],"names":["AsyncLocalStorage","defaultRunWithContext"],"mappings":"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","x_google_ignoreList":[0]}
|