kroxt 1.3.9 → 1.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +270 -231
  2. package/dist/auth/adapters/drizzle.cjs +5 -0
  3. package/dist/auth/adapters/drizzle.cjs.map +2 -2
  4. package/dist/auth/adapters/drizzle.d.ts.map +1 -1
  5. package/dist/auth/adapters/drizzle.js +5 -0
  6. package/dist/auth/adapters/drizzle.js.map +2 -2
  7. package/dist/auth/adapters/index.cjs.map +1 -1
  8. package/dist/auth/adapters/index.d.ts +2 -0
  9. package/dist/auth/adapters/index.d.ts.map +1 -1
  10. package/dist/auth/adapters/memory.cjs +9 -0
  11. package/dist/auth/adapters/memory.cjs.map +2 -2
  12. package/dist/auth/adapters/memory.d.ts.map +1 -1
  13. package/dist/auth/adapters/memory.js +9 -0
  14. package/dist/auth/adapters/memory.js.map +2 -2
  15. package/dist/auth/adapters/mongoose.cjs +5 -0
  16. package/dist/auth/adapters/mongoose.cjs.map +2 -2
  17. package/dist/auth/adapters/mongoose.d.ts.map +1 -1
  18. package/dist/auth/adapters/mongoose.js +5 -0
  19. package/dist/auth/adapters/mongoose.js.map +2 -2
  20. package/dist/auth/adapters/prisma.cjs +8 -0
  21. package/dist/auth/adapters/prisma.cjs.map +2 -2
  22. package/dist/auth/adapters/prisma.d.ts.map +1 -1
  23. package/dist/auth/adapters/prisma.js +8 -0
  24. package/dist/auth/adapters/prisma.js.map +2 -2
  25. package/dist/auth/core/index.cjs +32 -5
  26. package/dist/auth/core/index.cjs.map +2 -2
  27. package/dist/auth/core/index.d.ts +3 -0
  28. package/dist/auth/core/index.d.ts.map +1 -1
  29. package/dist/auth/core/index.js +32 -5
  30. package/dist/auth/core/index.js.map +2 -2
  31. package/dist/cli/index.cjs +49 -18
  32. package/dist/cli/index.cjs.map +3 -3
  33. package/dist/cli/index.js +49 -18
  34. package/dist/cli/index.js.map +2 -2
  35. package/dist/cli/templates.cjs +5 -1
  36. package/dist/cli/templates.cjs.map +2 -2
  37. package/dist/cli/templates.d.ts +1 -1
  38. package/dist/cli/templates.d.ts.map +1 -1
  39. package/dist/cli/templates.js +5 -1
  40. package/dist/cli/templates.js.map +2 -2
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/package.json +108 -108
@@ -1,5 +1,5 @@
1
1
  export declare const authTemplate: (adapter: string, secret: string, options: any) => string;
2
- export declare const userModelTemplate: (adapter: string) => "" | "import mongoose, { Schema, Document } from \"mongoose\";\n\nexport interface IUser extends Document {\n email: string;\n passwordHash?: string;\n role?: string;\n createdAt: Date;\n updatedAt: Date;\n}\n\nconst UserSchema: Schema = new Schema(\n {\n email: { type: String, required: true, unique: true },\n passwordHash: { type: String },\n role: { type: String, default: \"user\" },\n },\n { timestamps: true }\n);\n\nexport const User = mongoose.models.User || mongoose.model<IUser>(\"User\", UserSchema);\n" | "import { pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\n\nexport const users = pgTable(\"users\", {\n id: text(\"id\").primaryKey(),\n email: text(\"email\").unique().notNull(),\n passwordHash: text(\"password_hash\"),\n role: text(\"role\").default(\"user\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n" | "// Add this to your schema.prisma file:\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n passwordHash String?\n role String @default(\"user\")\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n";
2
+ export declare const userModelTemplate: (adapter: string) => "" | "import mongoose, { Schema, Document } from \"mongoose\";\n\nexport interface IUser extends Document {\n email: string;\n passwordHash?: string;\n role?: string;\n sessionVersion: number;\n createdAt: Date;\n updatedAt: Date;\n}\n\nconst UserSchema: Schema = new Schema(\n {\n email: { type: String, required: true, unique: true },\n passwordHash: { type: String },\n role: { type: String, default: \"user\" },\n sessionVersion: { type: Number, default: 0 },\n },\n { timestamps: true }\n);\n\nexport const User = mongoose.models.User || mongoose.model<IUser>(\"User\", UserSchema);\n" | "import { pgTable, text, timestamp, integer } from \"drizzle-orm/pg-core\";\n\nexport const users = pgTable(\"users\", {\n id: text(\"id\").primaryKey(),\n email: text(\"email\").unique().notNull(),\n passwordHash: text(\"password_hash\"),\n role: text(\"role\").default(\"user\"),\n sessionVersion: integer(\"session_version\").default(0).notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n" | "// Add this to your schema.prisma file:\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n passwordHash String?\n role String @default(\"user\")\n sessionVersion Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n";
3
3
  export declare const envTemplate: (secret: string, usePepper: boolean) => string;
4
4
  export declare const tsConfigTemplate = "{\n \"compilerOptions\": {\n \"target\": \"ESNext\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true,\n \"types\": [\"node\"]\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\"]\n}\n";
5
5
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,GAAG,WA+CzE,CAAC;AAiCF,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,quCAmDhD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,OAAO,WAI7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,gXAc5B,CAAC"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,GAAG,WA+CzE,CAAC;AAiCF,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,06CAuDhD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,OAAO,WAI7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,gXAc5B,CAAC"}
@@ -93,6 +93,7 @@ export interface IUser extends Document {
93
93
  email: string;
94
94
  passwordHash?: string;
95
95
  role?: string;
96
+ sessionVersion: number;
96
97
  createdAt: Date;
97
98
  updatedAt: Date;
98
99
  }
@@ -102,6 +103,7 @@ const UserSchema: Schema = new Schema(
102
103
  email: { type: String, required: true, unique: true },
103
104
  passwordHash: { type: String },
104
105
  role: { type: String, default: "user" },
106
+ sessionVersion: { type: Number, default: 0 },
105
107
  },
106
108
  { timestamps: true }
107
109
  );
@@ -109,13 +111,14 @@ const UserSchema: Schema = new Schema(
109
111
  export const User = mongoose.models.User || mongoose.model<IUser>("User", UserSchema);
110
112
  `;
111
113
  case "drizzle":
112
- return `import { pgTable, text, timestamp } from "drizzle-orm/pg-core";
114
+ return `import { pgTable, text, timestamp, integer } from "drizzle-orm/pg-core";
113
115
 
114
116
  export const users = pgTable("users", {
115
117
  id: text("id").primaryKey(),
116
118
  email: text("email").unique().notNull(),
117
119
  passwordHash: text("password_hash"),
118
120
  role: text("role").default("user"),
121
+ sessionVersion: integer("session_version").default(0).notNull(),
119
122
  createdAt: timestamp("created_at").defaultNow().notNull(),
120
123
  updatedAt: timestamp("updated_at").defaultNow().notNull(),
121
124
  });
@@ -128,6 +131,7 @@ model User {
128
131
  email String @unique
129
132
  passwordHash String?
130
133
  role String @default("user")
134
+ sessionVersion Int @default(0)
131
135
  createdAt DateTime @default(now())
132
136
  updatedAt DateTime @updatedAt
133
137
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/templates.ts"],
4
- "sourcesContent": ["import crypto from 'crypto';\n\nexport const authTemplate = (adapter: string, secret: string, options: any) => `import { createAuth } from \"kroxt\";\n${getAdapterImportBlock(adapter)}\nimport dotenv from \"dotenv\";\n\ndotenv.config();\n\n${getAdapterInitialization(adapter, options)}\n\nexport const auth = createAuth({\n adapter: authAdapter,\n secret: process.env.JWT_SECRET || \"${secret}\",\n ${options.usePepper ? 'pepper: process.env.JWT_PEPPER || \"\",' : ''}\n \n // Global Security Configurations\n session: {\n expires: \"15m\",\n refreshExpires: \"7d\",\n enforceStrictRevocation: ${options.useStrictRevocation ? 'true' : 'false'}\n },\n \n // Custom JWT Payload logic\n jwt: {\n payload: (user: any, type: \"access\" | \"refresh\") => {\n if (type === \"access\") {\n return {\n role: user.role,\n // schoolId: user.schoolId \n };\n }\n return {};\n }\n },\n\n ${options.useRateLimit ? `rateLimit: {\n max: 100, // Requests per minute\n windowMs: 60 * 1000\n },` : ''}\n ${options.useIPBlocking ? `ipBlocking: {\n maxStrikes: 5,\n blockDurationMs: 15 * 60 * 1000\n },` : ''}\n passwordPolicy: {\n minLength: 6,\n requireUppercase: true,\n requireSpecialCharacter: true\n }\n});\n`;\n\nfunction getAdapterImportBlock(adapter: string) {\n switch (adapter) {\n case 'mongoose':\n return `import { createMongoAdapter, createRateLimitModel } from \"kroxt/adapters/mongoose\";\\nimport mongoose from \"mongoose\";`;\n case 'prisma':\n return `import { createPrismaAdapter } from \"kroxt/adapters/prisma\";`;\n case 'drizzle':\n return `import { createDrizzleAdapter } from \"kroxt/adapters/drizzle\";\\nimport { eq } from \"drizzle-orm\";`;\n case 'memory':\n return `import { createMemoryAdapter } from \"kroxt/adapters/memory\";`;\n default:\n return '';\n }\n}\n\nfunction getAdapterInitialization(adapter: string, options: any) {\n const modelImported = options.createModel;\n switch (adapter) {\n case 'mongoose':\n return `${modelImported ? 'import { User } from \"./user.model.js\";' : '// import { User } from \"./user.model.js\";'}\\n\\n// The rate limit model is optional but recommended\\nconst authAdapter = createMongoAdapter(User, createRateLimitModel(mongoose));`;\n case 'prisma':\n return `// import { prisma } from \"./lib/prisma\";\\nconst authAdapter = createPrismaAdapter(prisma.user);`;\n case 'drizzle':\n return `${modelImported ? 'import { db } from \"./index.js\";\\nimport { users } from \"./schema.js\";' : '// import { db } from \"./index\";\\n// import { users } from \"./schema\";'}\\n\\nconst authAdapter = createDrizzleAdapter(db, users, eq);`;\n case 'memory':\n return `const authAdapter = createMemoryAdapter();`;\n default:\n return `// const authAdapter = ...;`;\n }\n}\n\nexport const userModelTemplate = (adapter: string) => {\n switch (adapter) {\n case 'mongoose':\n return `import mongoose, { Schema, Document } from \"mongoose\";\n\nexport interface IUser extends Document {\n email: string;\n passwordHash?: string;\n role?: string;\n createdAt: Date;\n updatedAt: Date;\n}\n\nconst UserSchema: Schema = new Schema(\n {\n email: { type: String, required: true, unique: true },\n passwordHash: { type: String },\n role: { type: String, default: \"user\" },\n },\n { timestamps: true }\n);\n\nexport const User = mongoose.models.User || mongoose.model<IUser>(\"User\", UserSchema);\n`;\n case 'drizzle':\n return `import { pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\n\nexport const users = pgTable(\"users\", {\n id: text(\"id\").primaryKey(),\n email: text(\"email\").unique().notNull(),\n passwordHash: text(\"password_hash\"),\n role: text(\"role\").default(\"user\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n`;\n case 'prisma':\n return `// Add this to your schema.prisma file:\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n passwordHash String?\n role String @default(\"user\")\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n`;\n default:\n return '';\n }\n};\n\nexport const envTemplate = (secret: string, usePepper: boolean) => `\n# Kroxt Auth Secrets\nJWT_SECRET=\"${secret}\"\n${usePepper ? `JWT_PEPPER=\"${crypto.randomBytes(16).toString('hex')}\"` : ''}\n`;\n\nexport const tsConfigTemplate = `{\n \"compilerOptions\": {\n \"target\": \"ESNext\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true,\n \"types\": [\"node\"]\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\"]\n}\n`;\n"],
5
- "mappings": "AAAA,OAAO,YAAY;AAEZ,MAAM,eAAe,CAAC,SAAiB,QAAgB,YAAiB;AAAA,EAC7E,sBAAsB,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,yBAAyB,SAAS,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,uCAIL,MAAM;AAAA,IACzC,QAAQ,YAAY,0CAA0C,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAMrC,QAAQ,sBAAsB,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBzE,QAAQ,eAAe;AAAA;AAAA;AAAA,QAGnB,EAAE;AAAA,IACN,QAAQ,gBAAgB;AAAA;AAAA;AAAA,QAGpB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASV,SAAS,sBAAsB,SAAiB;AAC9C,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,yBAAyB,SAAiB,SAAc;AAC/D,QAAM,gBAAgB,QAAQ;AAC9B,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,GAAG,gBAAgB,4CAA4C,4CAA4C;AAAA;AAAA;AAAA;AAAA,IACpH,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO,GAAG,gBAAgB,2EAA2E,wEAAwE;AAAA;AAAA;AAAA,IAC/K,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,MAAM,oBAAoB,CAAC,YAAoB;AACpD,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBT,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWT,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWT;AACE,aAAO;AAAA,EACX;AACF;AAEO,MAAM,cAAc,CAAC,QAAgB,cAAuB;AAAA;AAAA,cAErD,MAAM;AAAA,EAClB,YAAY,eAAe,OAAO,YAAY,EAAE,EAAE,SAAS,KAAK,CAAC,MAAM,EAAE;AAAA;AAGpE,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "sourcesContent": ["import crypto from 'crypto';\r\n\r\nexport const authTemplate = (adapter: string, secret: string, options: any) => `import { createAuth } from \"kroxt\";\r\n${getAdapterImportBlock(adapter)}\r\nimport dotenv from \"dotenv\";\r\n\r\ndotenv.config();\r\n\r\n${getAdapterInitialization(adapter, options)}\r\n\r\nexport const auth = createAuth({\r\n adapter: authAdapter,\r\n secret: process.env.JWT_SECRET || \"${secret}\",\r\n ${options.usePepper ? 'pepper: process.env.JWT_PEPPER || \"\",' : ''}\r\n \r\n // Global Security Configurations\r\n session: {\r\n expires: \"15m\",\r\n refreshExpires: \"7d\",\r\n enforceStrictRevocation: ${options.useStrictRevocation ? 'true' : 'false'}\r\n },\r\n \r\n // Custom JWT Payload logic\r\n jwt: {\r\n payload: (user: any, type: \"access\" | \"refresh\") => {\r\n if (type === \"access\") {\r\n return {\r\n role: user.role,\r\n // schoolId: user.schoolId \r\n };\r\n }\r\n return {};\r\n }\r\n },\r\n\r\n ${options.useRateLimit ? `rateLimit: {\r\n max: 100, // Requests per minute\r\n windowMs: 60 * 1000\r\n },` : ''}\r\n ${options.useIPBlocking ? `ipBlocking: {\r\n maxStrikes: 5,\r\n blockDurationMs: 15 * 60 * 1000\r\n },` : ''}\r\n passwordPolicy: {\r\n minLength: 6,\r\n requireUppercase: true,\r\n requireSpecialCharacter: true\r\n }\r\n});\r\n`;\r\n\r\nfunction getAdapterImportBlock(adapter: string) {\r\n switch (adapter) {\r\n case 'mongoose':\r\n return `import { createMongoAdapter, createRateLimitModel } from \"kroxt/adapters/mongoose\";\\nimport mongoose from \"mongoose\";`;\r\n case 'prisma':\r\n return `import { createPrismaAdapter } from \"kroxt/adapters/prisma\";`;\r\n case 'drizzle':\r\n return `import { createDrizzleAdapter } from \"kroxt/adapters/drizzle\";\\nimport { eq } from \"drizzle-orm\";`;\r\n case 'memory':\r\n return `import { createMemoryAdapter } from \"kroxt/adapters/memory\";`;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nfunction getAdapterInitialization(adapter: string, options: any) {\r\n const modelImported = options.createModel;\r\n switch (adapter) {\r\n case 'mongoose':\r\n return `${modelImported ? 'import { User } from \"./user.model.js\";' : '// import { User } from \"./user.model.js\";'}\\n\\n// The rate limit model is optional but recommended\\nconst authAdapter = createMongoAdapter(User, createRateLimitModel(mongoose));`;\r\n case 'prisma':\r\n return `// import { prisma } from \"./lib/prisma\";\\nconst authAdapter = createPrismaAdapter(prisma.user);`;\r\n case 'drizzle':\r\n return `${modelImported ? 'import { db } from \"./index.js\";\\nimport { users } from \"./schema.js\";' : '// import { db } from \"./index\";\\n// import { users } from \"./schema\";'}\\n\\nconst authAdapter = createDrizzleAdapter(db, users, eq);`;\r\n case 'memory':\r\n return `const authAdapter = createMemoryAdapter();`;\r\n default:\r\n return `// const authAdapter = ...;`;\r\n }\r\n}\r\n\r\nexport const userModelTemplate = (adapter: string) => {\r\n switch (adapter) {\r\n case 'mongoose':\r\n return `import mongoose, { Schema, Document } from \"mongoose\";\r\n\r\nexport interface IUser extends Document {\r\n email: string;\r\n passwordHash?: string;\r\n role?: string;\r\n sessionVersion: number;\r\n createdAt: Date;\r\n updatedAt: Date;\r\n}\r\n\r\nconst UserSchema: Schema = new Schema(\r\n {\r\n email: { type: String, required: true, unique: true },\r\n passwordHash: { type: String },\r\n role: { type: String, default: \"user\" },\r\n sessionVersion: { type: Number, default: 0 },\r\n },\r\n { timestamps: true }\r\n);\r\n\r\nexport const User = mongoose.models.User || mongoose.model<IUser>(\"User\", UserSchema);\r\n`;\r\n case 'drizzle':\r\n return `import { pgTable, text, timestamp, integer } from \"drizzle-orm/pg-core\";\r\n\r\nexport const users = pgTable(\"users\", {\r\n id: text(\"id\").primaryKey(),\r\n email: text(\"email\").unique().notNull(),\r\n passwordHash: text(\"password_hash\"),\r\n role: text(\"role\").default(\"user\"),\r\n sessionVersion: integer(\"session_version\").default(0).notNull(),\r\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\r\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\r\n});\r\n`;\r\n case 'prisma':\r\n return `// Add this to your schema.prisma file:\r\n\r\nmodel User {\r\n id String @id @default(cuid())\r\n email String @unique\r\n passwordHash String?\r\n role String @default(\"user\")\r\n sessionVersion Int @default(0)\r\n createdAt DateTime @default(now())\r\n updatedAt DateTime @updatedAt\r\n}\r\n`;\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const envTemplate = (secret: string, usePepper: boolean) => `\r\n# Kroxt Auth Secrets\r\nJWT_SECRET=\"${secret}\"\r\n${usePepper ? `JWT_PEPPER=\"${crypto.randomBytes(16).toString('hex')}\"` : ''}\r\n`;\r\n\r\nexport const tsConfigTemplate = `{\r\n \"compilerOptions\": {\r\n \"target\": \"ESNext\",\r\n \"module\": \"ESNext\",\r\n \"moduleResolution\": \"bundler\",\r\n \"esModuleInterop\": true,\r\n \"forceConsistentCasingInFileNames\": true,\r\n \"strict\": true,\r\n \"skipLibCheck\": true,\r\n \"types\": [\"node\"]\r\n },\r\n \"include\": [\"src/**/*\"],\r\n \"exclude\": [\"node_modules\"]\r\n}\r\n`;\r\n"],
5
+ "mappings": "AAAA,OAAO,YAAY;AAEZ,MAAM,eAAe,CAAC,SAAiB,QAAgB,YAAiB;AAAA,EAC7E,sBAAsB,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,yBAAyB,SAAS,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,uCAIL,MAAM;AAAA,IACzC,QAAQ,YAAY,0CAA0C,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAMrC,QAAQ,sBAAsB,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBzE,QAAQ,eAAe;AAAA;AAAA;AAAA,QAGnB,EAAE;AAAA,IACN,QAAQ,gBAAgB;AAAA;AAAA;AAAA,QAGpB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASV,SAAS,sBAAsB,SAAiB;AAC9C,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,yBAAyB,SAAiB,SAAc;AAC/D,QAAM,gBAAgB,QAAQ;AAC9B,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,GAAG,gBAAgB,4CAA4C,4CAA4C;AAAA;AAAA;AAAA;AAAA,IACpH,KAAK;AACH,aAAO;AAAA;AAAA,IACT,KAAK;AACH,aAAO,GAAG,gBAAgB,2EAA2E,wEAAwE;AAAA;AAAA;AAAA,IAC/K,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,MAAM,oBAAoB,CAAC,YAAoB;AACpD,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuBT,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYT,KAAK;AACH,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYT;AACE,aAAO;AAAA,EACX;AACF;AAEO,MAAM,cAAc,CAAC,QAAgB,cAAuB;AAAA;AAAA,cAErD,MAAM;AAAA,EAClB,YAAY,eAAe,OAAO,YAAY,EAAE,EAAE,SAAS,KAAK,CAAC,MAAM,EAAE;AAAA;AAGpE,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["export * from \"./auth/index.js\";\n"],
4
+ "sourcesContent": ["export * from \"./auth/index.js\";\r\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,4BAAd;",
6
6
  "names": []
7
7
  }
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["export * from \"./auth/index.js\";\n"],
4
+ "sourcesContent": ["export * from \"./auth/index.js\";\r\n"],
5
5
  "mappings": "AAAA,cAAc;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,108 +1,108 @@
1
- {
2
- "name": "kroxt",
3
- "version": "1.3.9",
4
- "bin": {
5
- "kroxt": "dist/cli/index.js"
6
- },
7
- "homepage": "https://kroxt.vercel.app",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/adepoju-oluwatobi/kroxt.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/adepoju-oluwatobi/kroxt/issues"
14
- },
15
- "author": "Adepoju Oluwatobi <https://github.com/adepoju-oluwatobi>",
16
- "keywords": [
17
- "auth",
18
- "authentication",
19
- "headless-auth",
20
- "typescript",
21
- "security",
22
- "session-management",
23
- "token-rotation",
24
- "argon2",
25
- "zod",
26
- "framework-agnostic",
27
- "nextjs",
28
- "hono",
29
- "express",
30
- "prisma-adapter",
31
- "drizzle-adapter",
32
- "mongoose-adapter"
33
- ],
34
- "license": "MIT",
35
- "description": "A framework-agnostic modular auth engine",
36
- "type": "module",
37
- "main": "./dist/index.cjs",
38
- "module": "./dist/index.js",
39
- "types": "./dist/index.d.ts",
40
- "exports": {
41
- ".": {
42
- "types": "./dist/index.d.ts",
43
- "import": "./dist/index.js",
44
- "require": "./dist/index.cjs"
45
- },
46
- "./adapter": {
47
- "types": "./dist/auth/adapters/index.d.ts",
48
- "import": "./dist/auth/adapters/index.js",
49
- "require": "./dist/auth/adapters/index.cjs"
50
- },
51
- "./core": {
52
- "types": "./dist/auth/core/index.d.ts",
53
- "import": "./dist/auth/core/index.js",
54
- "require": "./dist/auth/core/index.cjs"
55
- },
56
- "./providers": {
57
- "types": "./dist/auth/providers/index.d.ts",
58
- "import": "./dist/auth/providers/index.js",
59
- "require": "./dist/auth/providers/index.cjs"
60
- },
61
- "./adapters/memory": {
62
- "types": "./dist/auth/adapters/memory.d.ts",
63
- "import": "./dist/auth/adapters/memory.js",
64
- "require": "./dist/auth/adapters/memory.cjs"
65
- },
66
- "./adapters/mongoose": {
67
- "types": "./dist/auth/adapters/mongoose.d.ts",
68
- "import": "./dist/auth/adapters/mongoose.js",
69
- "require": "./dist/auth/adapters/mongoose.cjs"
70
- },
71
- "./adapters/drizzle": {
72
- "types": "./dist/auth/adapters/drizzle.d.ts",
73
- "import": "./dist/auth/adapters/drizzle.js",
74
- "require": "./dist/auth/adapters/drizzle.cjs"
75
- },
76
- "./adapters/prisma": {
77
- "types": "./dist/auth/adapters/prisma.d.ts",
78
- "import": "./dist/auth/adapters/prisma.js",
79
- "require": "./dist/auth/adapters/prisma.cjs"
80
- },
81
- "./security": {
82
- "types": "./dist/auth/security/index.d.ts",
83
- "import": "./dist/auth/security/index.js",
84
- "require": "./dist/auth/security/index.cjs"
85
- }
86
- },
87
- "files": [
88
- "dist"
89
- ],
90
- "scripts": {
91
- "build": "node build.js"
92
- },
93
- "dependencies": {
94
- "arctic": "^3.7.0",
95
- "argon2": "^0.44.0",
96
- "chalk": "^5.6.2",
97
- "commander": "^14.0.3",
98
- "enquirer": "^2.4.1",
99
- "jose": "^6.2.1",
100
- "zod": "^3.23.8"
101
- },
102
- "devDependencies": {
103
- "@types/node": "^25.5.0",
104
- "esbuild": "^0.27.4",
105
- "tsup": "^8.5.1",
106
- "typescript": "^5.9.3"
107
- }
108
- }
1
+ {
2
+ "name": "kroxt",
3
+ "version": "1.3.11",
4
+ "bin": {
5
+ "kroxt": "dist/cli/index.js"
6
+ },
7
+ "homepage": "https://kroxt.vercel.app",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/kroxt/kroxt.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/kroxt/kroxt/issues"
14
+ },
15
+ "author": "Adepoju Oluwatobi <https://github.com/adepoju-oluwatobi>",
16
+ "keywords": [
17
+ "auth",
18
+ "authentication",
19
+ "headless-auth",
20
+ "typescript",
21
+ "security",
22
+ "session-management",
23
+ "token-rotation",
24
+ "argon2",
25
+ "zod",
26
+ "framework-agnostic",
27
+ "nextjs",
28
+ "hono",
29
+ "express",
30
+ "prisma-adapter",
31
+ "drizzle-adapter",
32
+ "mongoose-adapter"
33
+ ],
34
+ "license": "MIT",
35
+ "description": "A framework-agnostic modular auth engine",
36
+ "type": "module",
37
+ "main": "./dist/index.cjs",
38
+ "module": "./dist/index.js",
39
+ "types": "./dist/index.d.ts",
40
+ "exports": {
41
+ ".": {
42
+ "types": "./dist/index.d.ts",
43
+ "import": "./dist/index.js",
44
+ "require": "./dist/index.cjs"
45
+ },
46
+ "./adapter": {
47
+ "types": "./dist/auth/adapters/index.d.ts",
48
+ "import": "./dist/auth/adapters/index.js",
49
+ "require": "./dist/auth/adapters/index.cjs"
50
+ },
51
+ "./core": {
52
+ "types": "./dist/auth/core/index.d.ts",
53
+ "import": "./dist/auth/core/index.js",
54
+ "require": "./dist/auth/core/index.cjs"
55
+ },
56
+ "./providers": {
57
+ "types": "./dist/auth/providers/index.d.ts",
58
+ "import": "./dist/auth/providers/index.js",
59
+ "require": "./dist/auth/providers/index.cjs"
60
+ },
61
+ "./adapters/memory": {
62
+ "types": "./dist/auth/adapters/memory.d.ts",
63
+ "import": "./dist/auth/adapters/memory.js",
64
+ "require": "./dist/auth/adapters/memory.cjs"
65
+ },
66
+ "./adapters/mongoose": {
67
+ "types": "./dist/auth/adapters/mongoose.d.ts",
68
+ "import": "./dist/auth/adapters/mongoose.js",
69
+ "require": "./dist/auth/adapters/mongoose.cjs"
70
+ },
71
+ "./adapters/drizzle": {
72
+ "types": "./dist/auth/adapters/drizzle.d.ts",
73
+ "import": "./dist/auth/adapters/drizzle.js",
74
+ "require": "./dist/auth/adapters/drizzle.cjs"
75
+ },
76
+ "./adapters/prisma": {
77
+ "types": "./dist/auth/adapters/prisma.d.ts",
78
+ "import": "./dist/auth/adapters/prisma.js",
79
+ "require": "./dist/auth/adapters/prisma.cjs"
80
+ },
81
+ "./security": {
82
+ "types": "./dist/auth/security/index.d.ts",
83
+ "import": "./dist/auth/security/index.js",
84
+ "require": "./dist/auth/security/index.cjs"
85
+ }
86
+ },
87
+ "files": [
88
+ "dist"
89
+ ],
90
+ "scripts": {
91
+ "build": "node build.js"
92
+ },
93
+ "dependencies": {
94
+ "arctic": "^3.7.0",
95
+ "argon2": "^0.44.0",
96
+ "chalk": "^5.6.2",
97
+ "commander": "^14.0.3",
98
+ "enquirer": "^2.4.1",
99
+ "jose": "^6.2.1",
100
+ "zod": "^3.23.8"
101
+ },
102
+ "devDependencies": {
103
+ "@types/node": "^25.5.0",
104
+ "esbuild": "^0.27.4",
105
+ "tsup": "^8.5.1",
106
+ "typescript": "^5.9.3"
107
+ }
108
+ }