@shware/security 1.3.5 → 1.4.1

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.
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -15,5 +19,43 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
15
19
 
16
20
  // src/core/index.ts
17
21
  var core_exports = {};
22
+ __export(core_exports, {
23
+ ALL_PROVIDERS: () => ALL_PROVIDERS,
24
+ Provider: () => Provider
25
+ });
18
26
  module.exports = __toCommonJS(core_exports);
27
+ var Provider = /* @__PURE__ */ ((Provider2) => {
28
+ Provider2["APPLE"] = "APPLE";
29
+ Provider2["DISCORD"] = "DISCORD";
30
+ Provider2["FACEBOOK"] = "FACEBOOK";
31
+ Provider2["GITHUB"] = "GITHUB";
32
+ Provider2["GOOGLE"] = "GOOGLE";
33
+ Provider2["LINKEDIN"] = "LINKEDIN";
34
+ Provider2["MICROSOFT"] = "MICROSOFT";
35
+ Provider2["SLACK"] = "SLACK";
36
+ Provider2["WECHAT"] = "WECHAT";
37
+ Provider2["X"] = "X";
38
+ Provider2["EMAIL"] = "EMAIL";
39
+ Provider2["PHONE"] = "PHONE";
40
+ return Provider2;
41
+ })(Provider || {});
42
+ var ALL_PROVIDERS = [
43
+ "APPLE" /* APPLE */,
44
+ "DISCORD" /* DISCORD */,
45
+ "FACEBOOK" /* FACEBOOK */,
46
+ "GITHUB" /* GITHUB */,
47
+ "GOOGLE" /* GOOGLE */,
48
+ "LINKEDIN" /* LINKEDIN */,
49
+ "MICROSOFT" /* MICROSOFT */,
50
+ "SLACK" /* SLACK */,
51
+ "WECHAT" /* WECHAT */,
52
+ "X" /* X */,
53
+ "EMAIL" /* EMAIL */,
54
+ "PHONE" /* PHONE */
55
+ ];
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ ALL_PROVIDERS,
59
+ Provider
60
+ });
19
61
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export type JSONValue =\n | null\n | string\n | number\n | boolean\n | { [value: string]: JSONValue }\n | Array<JSONValue>;\n\nexport interface Principal {\n name: string;\n}\n\nexport interface Authentication extends Principal {\n authorities: string[];\n authenticated: boolean;\n}\n\nexport interface CsrfToken {\n token: string;\n headerName: string;\n parameterName: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export type JSONValue =\n | null\n | string\n | number\n | boolean\n | { [value: string]: JSONValue }\n | Array<JSONValue>;\n\nexport interface Principal {\n name: string;\n}\n\nexport interface Authentication extends Principal {\n authorities: string[];\n authenticated: boolean;\n}\n\nexport interface CsrfToken {\n token: string;\n headerName: string;\n parameterName: string;\n}\n\nexport enum Provider {\n // oauth2\n APPLE = 'APPLE',\n DISCORD = 'DISCORD',\n FACEBOOK = 'FACEBOOK',\n GITHUB = 'GITHUB',\n GOOGLE = 'GOOGLE',\n LINKEDIN = 'LINKEDIN',\n MICROSOFT = 'MICROSOFT',\n SLACK = 'SLACK',\n WECHAT = 'WECHAT',\n X = 'X',\n // contact\n EMAIL = 'EMAIL',\n PHONE = 'PHONE',\n}\n\nexport const ALL_PROVIDERS = [\n Provider.APPLE,\n Provider.DISCORD,\n Provider.FACEBOOK,\n Provider.GITHUB,\n Provider.GOOGLE,\n Provider.LINKEDIN,\n Provider.MICROSOFT,\n Provider.SLACK,\n Provider.WECHAT,\n Provider.X,\n Provider.EMAIL,\n Provider.PHONE,\n] as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBO,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,cAAW;AACX,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,cAAW;AACX,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,OAAI;AAEJ,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,WAAQ;AAdE,SAAAA;AAAA,GAAA;AAiBL,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":["Provider"]}
@@ -13,5 +13,20 @@ interface CsrfToken {
13
13
  headerName: string;
14
14
  parameterName: string;
15
15
  }
16
+ declare enum Provider {
17
+ APPLE = "APPLE",
18
+ DISCORD = "DISCORD",
19
+ FACEBOOK = "FACEBOOK",
20
+ GITHUB = "GITHUB",
21
+ GOOGLE = "GOOGLE",
22
+ LINKEDIN = "LINKEDIN",
23
+ MICROSOFT = "MICROSOFT",
24
+ SLACK = "SLACK",
25
+ WECHAT = "WECHAT",
26
+ X = "X",
27
+ EMAIL = "EMAIL",
28
+ PHONE = "PHONE"
29
+ }
30
+ declare const ALL_PROVIDERS: readonly [Provider.APPLE, Provider.DISCORD, Provider.FACEBOOK, Provider.GITHUB, Provider.GOOGLE, Provider.LINKEDIN, Provider.MICROSOFT, Provider.SLACK, Provider.WECHAT, Provider.X, Provider.EMAIL, Provider.PHONE];
16
31
 
17
- export type { Authentication, CsrfToken, JSONValue, Principal };
32
+ export { ALL_PROVIDERS, type Authentication, type CsrfToken, type JSONValue, type Principal, Provider };
@@ -13,5 +13,20 @@ interface CsrfToken {
13
13
  headerName: string;
14
14
  parameterName: string;
15
15
  }
16
+ declare enum Provider {
17
+ APPLE = "APPLE",
18
+ DISCORD = "DISCORD",
19
+ FACEBOOK = "FACEBOOK",
20
+ GITHUB = "GITHUB",
21
+ GOOGLE = "GOOGLE",
22
+ LINKEDIN = "LINKEDIN",
23
+ MICROSOFT = "MICROSOFT",
24
+ SLACK = "SLACK",
25
+ WECHAT = "WECHAT",
26
+ X = "X",
27
+ EMAIL = "EMAIL",
28
+ PHONE = "PHONE"
29
+ }
30
+ declare const ALL_PROVIDERS: readonly [Provider.APPLE, Provider.DISCORD, Provider.FACEBOOK, Provider.GITHUB, Provider.GOOGLE, Provider.LINKEDIN, Provider.MICROSOFT, Provider.SLACK, Provider.WECHAT, Provider.X, Provider.EMAIL, Provider.PHONE];
16
31
 
17
- export type { Authentication, CsrfToken, JSONValue, Principal };
32
+ export { ALL_PROVIDERS, type Authentication, type CsrfToken, type JSONValue, type Principal, Provider };
@@ -1 +1,35 @@
1
+ // src/core/index.ts
2
+ var Provider = /* @__PURE__ */ ((Provider2) => {
3
+ Provider2["APPLE"] = "APPLE";
4
+ Provider2["DISCORD"] = "DISCORD";
5
+ Provider2["FACEBOOK"] = "FACEBOOK";
6
+ Provider2["GITHUB"] = "GITHUB";
7
+ Provider2["GOOGLE"] = "GOOGLE";
8
+ Provider2["LINKEDIN"] = "LINKEDIN";
9
+ Provider2["MICROSOFT"] = "MICROSOFT";
10
+ Provider2["SLACK"] = "SLACK";
11
+ Provider2["WECHAT"] = "WECHAT";
12
+ Provider2["X"] = "X";
13
+ Provider2["EMAIL"] = "EMAIL";
14
+ Provider2["PHONE"] = "PHONE";
15
+ return Provider2;
16
+ })(Provider || {});
17
+ var ALL_PROVIDERS = [
18
+ "APPLE" /* APPLE */,
19
+ "DISCORD" /* DISCORD */,
20
+ "FACEBOOK" /* FACEBOOK */,
21
+ "GITHUB" /* GITHUB */,
22
+ "GOOGLE" /* GOOGLE */,
23
+ "LINKEDIN" /* LINKEDIN */,
24
+ "MICROSOFT" /* MICROSOFT */,
25
+ "SLACK" /* SLACK */,
26
+ "WECHAT" /* WECHAT */,
27
+ "X" /* X */,
28
+ "EMAIL" /* EMAIL */,
29
+ "PHONE" /* PHONE */
30
+ ];
31
+ export {
32
+ ALL_PROVIDERS,
33
+ Provider
34
+ };
1
35
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export type JSONValue =\n | null\n | string\n | number\n | boolean\n | { [value: string]: JSONValue }\n | Array<JSONValue>;\n\nexport interface Principal {\n name: string;\n}\n\nexport interface Authentication extends Principal {\n authorities: string[];\n authenticated: boolean;\n}\n\nexport interface CsrfToken {\n token: string;\n headerName: string;\n parameterName: string;\n}\n\nexport enum Provider {\n // oauth2\n APPLE = 'APPLE',\n DISCORD = 'DISCORD',\n FACEBOOK = 'FACEBOOK',\n GITHUB = 'GITHUB',\n GOOGLE = 'GOOGLE',\n LINKEDIN = 'LINKEDIN',\n MICROSOFT = 'MICROSOFT',\n SLACK = 'SLACK',\n WECHAT = 'WECHAT',\n X = 'X',\n // contact\n EMAIL = 'EMAIL',\n PHONE = 'PHONE',\n}\n\nexport const ALL_PROVIDERS = [\n Provider.APPLE,\n Provider.DISCORD,\n Provider.FACEBOOK,\n Provider.GITHUB,\n Provider.GOOGLE,\n Provider.LINKEDIN,\n Provider.MICROSOFT,\n Provider.SLACK,\n Provider.WECHAT,\n Provider.X,\n Provider.EMAIL,\n Provider.PHONE,\n] as const;\n"],"mappings":";AAuBO,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,cAAW;AACX,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,cAAW;AACX,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,OAAI;AAEJ,EAAAA,UAAA,WAAQ;AACR,EAAAA,UAAA,WAAQ;AAdE,SAAAA;AAAA,GAAA;AAiBL,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":["Provider"]}
package/dist/index.cjs CHANGED
@@ -20,10 +20,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ ALL_PROVIDERS: () => import_core.ALL_PROVIDERS,
23
24
  Auth: () => import_auth.Auth,
24
25
  DBIndexedSessionRepository: () => import_db.DBIndexedSessionRepository,
25
26
  OAuth2Client: () => import_client.OAuth2Client,
26
27
  PRINCIPAL_NAME_INDEX_NAME: () => import_common.PRINCIPAL_NAME_INDEX_NAME,
28
+ Provider: () => import_core.Provider,
27
29
  RedisIndexedSessionRepository: () => import_redis.RedisIndexedSessionRepository,
28
30
  RedisKVRepository: () => import_redis.RedisKVRepository,
29
31
  oauth2RedirectQuerySchema: () => import_client.oauth2RedirectQuerySchema
@@ -34,12 +36,15 @@ var import_client = require("./oauth2/client.cjs");
34
36
  var import_redis = require("./session/redis.cjs");
35
37
  var import_db = require("./session/db.cjs");
36
38
  var import_common = require("./session/common.cjs");
39
+ var import_core = require("./core/index.cjs");
37
40
  // Annotate the CommonJS export names for ESM import in node:
38
41
  0 && (module.exports = {
42
+ ALL_PROVIDERS,
39
43
  Auth,
40
44
  DBIndexedSessionRepository,
41
45
  OAuth2Client,
42
46
  PRINCIPAL_NAME_INDEX_NAME,
47
+ Provider,
43
48
  RedisIndexedSessionRepository,
44
49
  RedisKVRepository,
45
50
  oauth2RedirectQuerySchema
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { Auth } from './auth/index';\nexport { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client';\nexport { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis';\nexport { DBIndexedSessionRepository } from './session/db';\nexport { PRINCIPAL_NAME_INDEX_NAME } from './session/common';\n\nexport type { Principal } from './core/index';\nexport type { DBAdapter } from './session/db';\nexport type { Namespace, SessionRepository, Session, KVRepository } from './session/types';\nexport type { StandardClaims, OAuth2Token, UserInfo, OidcToken, OidcScopes } from './oauth2/types';\nexport type { AuthConfig, AuthService } from './auth/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,oBAAwD;AACxD,mBAAiE;AACjE,gBAA2C;AAC3C,oBAA0C;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { Auth } from './auth/index';\nexport { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client';\nexport { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis';\nexport { DBIndexedSessionRepository } from './session/db';\nexport { PRINCIPAL_NAME_INDEX_NAME } from './session/common';\nexport { Provider, ALL_PROVIDERS } from './core/index';\n\nexport type { Principal, CsrfToken } from './core/index';\nexport type { DBAdapter } from './session/db';\nexport type { Namespace, SessionRepository, Session, KVRepository } from './session/types';\nexport type { StandardClaims, OAuth2Token, UserInfo, OidcToken, OidcScopes } from './oauth2/types';\nexport type { AuthConfig, AuthService } from './auth/types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAqB;AACrB,oBAAwD;AACxD,mBAAiE;AACjE,gBAA2C;AAC3C,oBAA0C;AAC1C,kBAAwC;","names":[]}
package/dist/index.d.cts CHANGED
@@ -3,11 +3,12 @@ export { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client.cjs';
3
3
  export { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis.cjs';
4
4
  export { DBAdapter, DBIndexedSessionRepository } from './session/db.cjs';
5
5
  export { PRINCIPAL_NAME_INDEX_NAME } from './session/common.cjs';
6
- export { Principal } from './core/index.cjs';
6
+ export { ALL_PROVIDERS, CsrfToken, Principal, Provider } from './core/index.cjs';
7
7
  export { KVRepository, Namespace, Session, SessionRepository } from './session/types.cjs';
8
8
  export { OAuth2Token, OidcScopes, OidcToken, StandardClaims, UserInfo } from './oauth2/types.cjs';
9
9
  export { AuthConfig, AuthService } from './auth/types.cjs';
10
- import 'zod/v4';
10
+ import 'zod/v4/core';
11
+ import 'zod/v4-mini';
11
12
  import './session/map-session.cjs';
12
13
  import 'ioredis';
13
14
  import './utils/http.cjs';
package/dist/index.d.ts CHANGED
@@ -3,11 +3,12 @@ export { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client.js';
3
3
  export { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis.js';
4
4
  export { DBAdapter, DBIndexedSessionRepository } from './session/db.js';
5
5
  export { PRINCIPAL_NAME_INDEX_NAME } from './session/common.js';
6
- export { Principal } from './core/index.js';
6
+ export { ALL_PROVIDERS, CsrfToken, Principal, Provider } from './core/index.js';
7
7
  export { KVRepository, Namespace, Session, SessionRepository } from './session/types.js';
8
8
  export { OAuth2Token, OidcScopes, OidcToken, StandardClaims, UserInfo } from './oauth2/types.js';
9
9
  export { AuthConfig, AuthService } from './auth/types.js';
10
- import 'zod/v4';
10
+ import 'zod/v4/core';
11
+ import 'zod/v4-mini';
11
12
  import './session/map-session.js';
12
13
  import 'ioredis';
13
14
  import './utils/http.js';
package/dist/index.mjs CHANGED
@@ -4,11 +4,14 @@ import { OAuth2Client, oauth2RedirectQuerySchema } from "./oauth2/client.mjs";
4
4
  import { RedisIndexedSessionRepository, RedisKVRepository } from "./session/redis.mjs";
5
5
  import { DBIndexedSessionRepository } from "./session/db.mjs";
6
6
  import { PRINCIPAL_NAME_INDEX_NAME } from "./session/common.mjs";
7
+ import { Provider, ALL_PROVIDERS } from "./core/index.mjs";
7
8
  export {
9
+ ALL_PROVIDERS,
8
10
  Auth,
9
11
  DBIndexedSessionRepository,
10
12
  OAuth2Client,
11
13
  PRINCIPAL_NAME_INDEX_NAME,
14
+ Provider,
12
15
  RedisIndexedSessionRepository,
13
16
  RedisKVRepository,
14
17
  oauth2RedirectQuerySchema
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { Auth } from './auth/index';\nexport { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client';\nexport { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis';\nexport { DBIndexedSessionRepository } from './session/db';\nexport { PRINCIPAL_NAME_INDEX_NAME } from './session/common';\n\nexport type { Principal } from './core/index';\nexport type { DBAdapter } from './session/db';\nexport type { Namespace, SessionRepository, Session, KVRepository } from './session/types';\nexport type { StandardClaims, OAuth2Token, UserInfo, OidcToken, OidcScopes } from './oauth2/types';\nexport type { AuthConfig, AuthService } from './auth/types';\n"],"mappings":";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc,iCAAiC;AACxD,SAAS,+BAA+B,yBAAyB;AACjE,SAAS,kCAAkC;AAC3C,SAAS,iCAAiC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { Auth } from './auth/index';\nexport { OAuth2Client, oauth2RedirectQuerySchema } from './oauth2/client';\nexport { RedisIndexedSessionRepository, RedisKVRepository } from './session/redis';\nexport { DBIndexedSessionRepository } from './session/db';\nexport { PRINCIPAL_NAME_INDEX_NAME } from './session/common';\nexport { Provider, ALL_PROVIDERS } from './core/index';\n\nexport type { Principal, CsrfToken } from './core/index';\nexport type { DBAdapter } from './session/db';\nexport type { Namespace, SessionRepository, Session, KVRepository } from './session/types';\nexport type { StandardClaims, OAuth2Token, UserInfo, OidcToken, OidcScopes } from './oauth2/types';\nexport type { AuthConfig, AuthService } from './auth/types';\n"],"mappings":";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc,iCAAiC;AACxD,SAAS,+BAA+B,yBAAyB;AACjE,SAAS,kCAAkC;AAC3C,SAAS,iCAAiC;AAC1C,SAAS,UAAU,qBAAqB;","names":[]}
@@ -34,14 +34,14 @@ __export(client_exports, {
34
34
  oauth2RedirectQuerySchema: () => oauth2RedirectQuerySchema
35
35
  });
36
36
  module.exports = __toCommonJS(client_exports);
37
- var import_v4 = require("zod/v4");
37
+ var import_v4_mini = require("zod/v4-mini");
38
38
  var import_tiny_invariant = __toESM(require("tiny-invariant"), 1);
39
- var oauth2RedirectQuerySchema = import_v4.z.object({
40
- code: import_v4.z.string().optional(),
41
- state: import_v4.z.string().optional(),
42
- error: import_v4.z.string().optional(),
43
- error_description: import_v4.z.string().optional(),
44
- error_uri: import_v4.z.string().optional()
39
+ var oauth2RedirectQuerySchema = (0, import_v4_mini.object)({
40
+ code: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
41
+ state: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
42
+ error: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
43
+ error_description: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
44
+ error_uri: (0, import_v4_mini.optional)((0, import_v4_mini.string)())
45
45
  });
46
46
  var OAuth2Client = class {
47
47
  config;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/oauth2/client.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport invariant from 'tiny-invariant';\nimport {\n NativeCredential,\n OAuth2ClientConfig,\n OAuth2Token,\n OidcToken,\n PkceParameters,\n} from './types';\n\nexport const oauth2RedirectQuerySchema = z.object({\n code: z.string().optional(),\n state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n});\n\nexport class OAuth2Client {\n private config: OAuth2ClientConfig;\n constructor(config: OAuth2ClientConfig) {\n this.config = config;\n }\n\n get baseUri() {\n return this.config.baseUri;\n }\n\n get successUri() {\n return this.config.successUri;\n }\n\n get errorUri() {\n return this.config.errorUri;\n }\n\n getClientConfig(registrationId: string) {\n const registration = this.config.registration[registrationId];\n invariant(registration, `Registration ${registrationId} not found`);\n const provider = this.config.provider[registration.provider ?? registrationId];\n invariant(provider, `Provider ${registration.provider ?? registrationId} not found`);\n return { registration, provider };\n }\n\n createAuthorizationUri({\n registrationId,\n state,\n pkce,\n }: {\n registrationId: string;\n state: string;\n pkce?: PkceParameters;\n }): URL {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { scope, clientId, redirectUri } = registration;\n return provider.createAuthorizationUri({\n pkce,\n state,\n scope,\n clientId,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async exchangeAuthorizationCode({\n registrationId,\n code,\n pkce,\n }: {\n registrationId: string;\n code: string;\n pkce?: PkceParameters;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n return provider.exchangeAuthorizationCode({\n code,\n pkce,\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async getUserInfo({\n registrationId,\n token,\n }: {\n registrationId: string;\n token: OAuth2Token | OidcToken;\n }) {\n const { provider } = this.getClientConfig(registrationId);\n return provider.getUserInfo(token);\n }\n\n async refreshAccessToken({\n registrationId,\n refreshToken,\n }: {\n registrationId: string;\n refreshToken: string;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.refreshAccessToken, 'Provider does not support refreshAccessToken');\n return provider.refreshAccessToken({ refreshToken, clientId, clientSecret });\n }\n\n async revokeToken(registrationId: string, token: string) {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.revokeToken, 'Provider does not support revokeToken');\n await provider.revokeToken({ token, clientId, clientSecret });\n }\n\n async loginOAuth2Native({\n registrationId,\n credentials,\n pkce,\n }: {\n registrationId: string;\n credentials: NativeCredential;\n pkce?: PkceParameters;\n }) {\n const { provider, registration } = this.getClientConfig(registrationId);\n invariant(provider.loginOAuth2Native, 'Provider does not support loginOAuth2Native');\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n\n return provider.loginOAuth2Native({\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n credentials,\n pkce,\n });\n }\n}\n"],"mappings":"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","names":["invariant"]}
1
+ {"version":3,"sources":["../../src/oauth2/client.ts"],"sourcesContent":["import { string, object, optional } from 'zod/v4-mini';\nimport invariant from 'tiny-invariant';\nimport {\n NativeCredential,\n OAuth2ClientConfig,\n OAuth2Token,\n OidcToken,\n PkceParameters,\n} from './types';\n\nexport const oauth2RedirectQuerySchema = object({\n code: optional(string()),\n state: optional(string()),\n error: optional(string()),\n error_description: optional(string()),\n error_uri: optional(string()),\n});\n\nexport class OAuth2Client {\n private config: OAuth2ClientConfig;\n constructor(config: OAuth2ClientConfig) {\n this.config = config;\n }\n\n get baseUri() {\n return this.config.baseUri;\n }\n\n get successUri() {\n return this.config.successUri;\n }\n\n get errorUri() {\n return this.config.errorUri;\n }\n\n getClientConfig(registrationId: string) {\n const registration = this.config.registration[registrationId];\n invariant(registration, `Registration ${registrationId} not found`);\n const provider = this.config.provider[registration.provider ?? registrationId];\n invariant(provider, `Provider ${registration.provider ?? registrationId} not found`);\n return { registration, provider };\n }\n\n createAuthorizationUri({\n registrationId,\n state,\n pkce,\n }: {\n registrationId: string;\n state: string;\n pkce?: PkceParameters;\n }): URL {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { scope, clientId, redirectUri } = registration;\n return provider.createAuthorizationUri({\n pkce,\n state,\n scope,\n clientId,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async exchangeAuthorizationCode({\n registrationId,\n code,\n pkce,\n }: {\n registrationId: string;\n code: string;\n pkce?: PkceParameters;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n return provider.exchangeAuthorizationCode({\n code,\n pkce,\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async getUserInfo({\n registrationId,\n token,\n }: {\n registrationId: string;\n token: OAuth2Token | OidcToken;\n }) {\n const { provider } = this.getClientConfig(registrationId);\n return provider.getUserInfo(token);\n }\n\n async refreshAccessToken({\n registrationId,\n refreshToken,\n }: {\n registrationId: string;\n refreshToken: string;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.refreshAccessToken, 'Provider does not support refreshAccessToken');\n return provider.refreshAccessToken({ refreshToken, clientId, clientSecret });\n }\n\n async revokeToken(registrationId: string, token: string) {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.revokeToken, 'Provider does not support revokeToken');\n await provider.revokeToken({ token, clientId, clientSecret });\n }\n\n async loginOAuth2Native({\n registrationId,\n credentials,\n pkce,\n }: {\n registrationId: string;\n credentials: NativeCredential;\n pkce?: PkceParameters;\n }) {\n const { provider, registration } = this.getClientConfig(registrationId);\n invariant(provider.loginOAuth2Native, 'Provider does not support loginOAuth2Native');\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n\n return provider.loginOAuth2Native({\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n credentials,\n pkce,\n });\n }\n}\n"],"mappings":"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","names":["invariant"]}
@@ -1,13 +1,14 @@
1
1
  import { OAuth2ClientConfig, Registration, Provider, PkceParameters, OAuth2Token, OidcToken, UserInfo, NativeCredential } from './types.cjs';
2
- import { z } from 'zod/v4';
2
+ import * as zod_v4_core from 'zod/v4/core';
3
+ import * as zod_v4_mini from 'zod/v4-mini';
3
4
 
4
- declare const oauth2RedirectQuerySchema: z.ZodObject<{
5
- code: z.ZodOptional<z.ZodString>;
6
- state: z.ZodOptional<z.ZodString>;
7
- error: z.ZodOptional<z.ZodString>;
8
- error_description: z.ZodOptional<z.ZodString>;
9
- error_uri: z.ZodOptional<z.ZodString>;
10
- }, z.core.$strip>;
5
+ declare const oauth2RedirectQuerySchema: zod_v4_mini.ZodMiniObject<{
6
+ code: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
7
+ state: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
8
+ error: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
9
+ error_description: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
10
+ error_uri: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
11
+ }, zod_v4_core.$strip>;
11
12
  declare class OAuth2Client {
12
13
  private config;
13
14
  constructor(config: OAuth2ClientConfig);
@@ -1,13 +1,14 @@
1
1
  import { OAuth2ClientConfig, Registration, Provider, PkceParameters, OAuth2Token, OidcToken, UserInfo, NativeCredential } from './types.js';
2
- import { z } from 'zod/v4';
2
+ import * as zod_v4_core from 'zod/v4/core';
3
+ import * as zod_v4_mini from 'zod/v4-mini';
3
4
 
4
- declare const oauth2RedirectQuerySchema: z.ZodObject<{
5
- code: z.ZodOptional<z.ZodString>;
6
- state: z.ZodOptional<z.ZodString>;
7
- error: z.ZodOptional<z.ZodString>;
8
- error_description: z.ZodOptional<z.ZodString>;
9
- error_uri: z.ZodOptional<z.ZodString>;
10
- }, z.core.$strip>;
5
+ declare const oauth2RedirectQuerySchema: zod_v4_mini.ZodMiniObject<{
6
+ code: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
7
+ state: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
8
+ error: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
9
+ error_description: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
10
+ error_uri: zod_v4_mini.ZodMiniOptional<zod_v4_mini.ZodMiniString<string>>;
11
+ }, zod_v4_core.$strip>;
11
12
  declare class OAuth2Client {
12
13
  private config;
13
14
  constructor(config: OAuth2ClientConfig);
@@ -1,12 +1,12 @@
1
1
  // src/oauth2/client.ts
2
- import { z } from "zod/v4";
2
+ import { string, object, optional } from "zod/v4-mini";
3
3
  import invariant from "tiny-invariant";
4
- var oauth2RedirectQuerySchema = z.object({
5
- code: z.string().optional(),
6
- state: z.string().optional(),
7
- error: z.string().optional(),
8
- error_description: z.string().optional(),
9
- error_uri: z.string().optional()
4
+ var oauth2RedirectQuerySchema = object({
5
+ code: optional(string()),
6
+ state: optional(string()),
7
+ error: optional(string()),
8
+ error_description: optional(string()),
9
+ error_uri: optional(string())
10
10
  });
11
11
  var OAuth2Client = class {
12
12
  config;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/oauth2/client.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport invariant from 'tiny-invariant';\nimport {\n NativeCredential,\n OAuth2ClientConfig,\n OAuth2Token,\n OidcToken,\n PkceParameters,\n} from './types';\n\nexport const oauth2RedirectQuerySchema = z.object({\n code: z.string().optional(),\n state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n});\n\nexport class OAuth2Client {\n private config: OAuth2ClientConfig;\n constructor(config: OAuth2ClientConfig) {\n this.config = config;\n }\n\n get baseUri() {\n return this.config.baseUri;\n }\n\n get successUri() {\n return this.config.successUri;\n }\n\n get errorUri() {\n return this.config.errorUri;\n }\n\n getClientConfig(registrationId: string) {\n const registration = this.config.registration[registrationId];\n invariant(registration, `Registration ${registrationId} not found`);\n const provider = this.config.provider[registration.provider ?? registrationId];\n invariant(provider, `Provider ${registration.provider ?? registrationId} not found`);\n return { registration, provider };\n }\n\n createAuthorizationUri({\n registrationId,\n state,\n pkce,\n }: {\n registrationId: string;\n state: string;\n pkce?: PkceParameters;\n }): URL {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { scope, clientId, redirectUri } = registration;\n return provider.createAuthorizationUri({\n pkce,\n state,\n scope,\n clientId,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async exchangeAuthorizationCode({\n registrationId,\n code,\n pkce,\n }: {\n registrationId: string;\n code: string;\n pkce?: PkceParameters;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n return provider.exchangeAuthorizationCode({\n code,\n pkce,\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async getUserInfo({\n registrationId,\n token,\n }: {\n registrationId: string;\n token: OAuth2Token | OidcToken;\n }) {\n const { provider } = this.getClientConfig(registrationId);\n return provider.getUserInfo(token);\n }\n\n async refreshAccessToken({\n registrationId,\n refreshToken,\n }: {\n registrationId: string;\n refreshToken: string;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.refreshAccessToken, 'Provider does not support refreshAccessToken');\n return provider.refreshAccessToken({ refreshToken, clientId, clientSecret });\n }\n\n async revokeToken(registrationId: string, token: string) {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.revokeToken, 'Provider does not support revokeToken');\n await provider.revokeToken({ token, clientId, clientSecret });\n }\n\n async loginOAuth2Native({\n registrationId,\n credentials,\n pkce,\n }: {\n registrationId: string;\n credentials: NativeCredential;\n pkce?: PkceParameters;\n }) {\n const { provider, registration } = this.getClientConfig(registrationId);\n invariant(provider.loginOAuth2Native, 'Provider does not support loginOAuth2Native');\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n\n return provider.loginOAuth2Native({\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n credentials,\n pkce,\n });\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/oauth2/client.ts"],"sourcesContent":["import { string, object, optional } from 'zod/v4-mini';\nimport invariant from 'tiny-invariant';\nimport {\n NativeCredential,\n OAuth2ClientConfig,\n OAuth2Token,\n OidcToken,\n PkceParameters,\n} from './types';\n\nexport const oauth2RedirectQuerySchema = object({\n code: optional(string()),\n state: optional(string()),\n error: optional(string()),\n error_description: optional(string()),\n error_uri: optional(string()),\n});\n\nexport class OAuth2Client {\n private config: OAuth2ClientConfig;\n constructor(config: OAuth2ClientConfig) {\n this.config = config;\n }\n\n get baseUri() {\n return this.config.baseUri;\n }\n\n get successUri() {\n return this.config.successUri;\n }\n\n get errorUri() {\n return this.config.errorUri;\n }\n\n getClientConfig(registrationId: string) {\n const registration = this.config.registration[registrationId];\n invariant(registration, `Registration ${registrationId} not found`);\n const provider = this.config.provider[registration.provider ?? registrationId];\n invariant(provider, `Provider ${registration.provider ?? registrationId} not found`);\n return { registration, provider };\n }\n\n createAuthorizationUri({\n registrationId,\n state,\n pkce,\n }: {\n registrationId: string;\n state: string;\n pkce?: PkceParameters;\n }): URL {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { scope, clientId, redirectUri } = registration;\n return provider.createAuthorizationUri({\n pkce,\n state,\n scope,\n clientId,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async exchangeAuthorizationCode({\n registrationId,\n code,\n pkce,\n }: {\n registrationId: string;\n code: string;\n pkce?: PkceParameters;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n return provider.exchangeAuthorizationCode({\n code,\n pkce,\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n });\n }\n\n async getUserInfo({\n registrationId,\n token,\n }: {\n registrationId: string;\n token: OAuth2Token | OidcToken;\n }) {\n const { provider } = this.getClientConfig(registrationId);\n return provider.getUserInfo(token);\n }\n\n async refreshAccessToken({\n registrationId,\n refreshToken,\n }: {\n registrationId: string;\n refreshToken: string;\n }): Promise<OAuth2Token> {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.refreshAccessToken, 'Provider does not support refreshAccessToken');\n return provider.refreshAccessToken({ refreshToken, clientId, clientSecret });\n }\n\n async revokeToken(registrationId: string, token: string) {\n const { provider, registration } = this.getClientConfig(registrationId);\n const { clientId, clientSecret } = registration;\n\n invariant(provider.revokeToken, 'Provider does not support revokeToken');\n await provider.revokeToken({ token, clientId, clientSecret });\n }\n\n async loginOAuth2Native({\n registrationId,\n credentials,\n pkce,\n }: {\n registrationId: string;\n credentials: NativeCredential;\n pkce?: PkceParameters;\n }) {\n const { provider, registration } = this.getClientConfig(registrationId);\n invariant(provider.loginOAuth2Native, 'Provider does not support loginOAuth2Native');\n const { baseUri } = this.config;\n const { clientId, clientSecret, redirectUri } = registration;\n\n return provider.loginOAuth2Native({\n clientId,\n clientSecret,\n redirectUri: redirectUri ?? `${baseUri}/login/oauth2/code/${registrationId}`,\n credentials,\n pkce,\n });\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/security",
3
- "version": "1.3.5",
3
+ "version": "1.4.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -8,6 +8,10 @@
8
8
  "build": "tsup",
9
9
  "test": "jest"
10
10
  },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/ShwareHQ/shware-sdk.git"
14
+ },
11
15
  "exports": {
12
16
  ".": {
13
17
  "types": "./dist/index.d.ts",