@jsango/auth 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/internal/base64url.d.ts +6 -0
  8. package/dist/internal/base64url.d.ts.map +1 -0
  9. package/dist/internal/base64url.js +21 -0
  10. package/dist/internal/base64url.js.map +1 -0
  11. package/dist/internal/crypto-utils.d.ts +11 -0
  12. package/dist/internal/crypto-utils.d.ts.map +1 -0
  13. package/dist/internal/crypto-utils.js +16 -0
  14. package/dist/internal/crypto-utils.js.map +1 -0
  15. package/dist/internal/timing.d.ts +5 -0
  16. package/dist/internal/timing.d.ts.map +1 -0
  17. package/dist/internal/timing.js +15 -0
  18. package/dist/internal/timing.js.map +1 -0
  19. package/dist/public/authentication/api-key.d.ts +17 -0
  20. package/dist/public/authentication/api-key.d.ts.map +1 -0
  21. package/dist/public/authentication/api-key.js +57 -0
  22. package/dist/public/authentication/api-key.js.map +1 -0
  23. package/dist/public/authentication/bearer.d.ts +27 -0
  24. package/dist/public/authentication/bearer.d.ts.map +1 -0
  25. package/dist/public/authentication/bearer.js +97 -0
  26. package/dist/public/authentication/bearer.js.map +1 -0
  27. package/dist/public/authentication/jwt.d.ts +60 -0
  28. package/dist/public/authentication/jwt.d.ts.map +1 -0
  29. package/dist/public/authentication/jwt.js +154 -0
  30. package/dist/public/authentication/jwt.js.map +1 -0
  31. package/dist/public/authentication/manager.d.ts +23 -0
  32. package/dist/public/authentication/manager.d.ts.map +1 -0
  33. package/dist/public/authentication/manager.js +64 -0
  34. package/dist/public/authentication/manager.js.map +1 -0
  35. package/dist/public/authentication/password.d.ts +24 -0
  36. package/dist/public/authentication/password.d.ts.map +1 -0
  37. package/dist/public/authentication/password.js +108 -0
  38. package/dist/public/authentication/password.js.map +1 -0
  39. package/dist/public/authentication/session.d.ts +31 -0
  40. package/dist/public/authentication/session.d.ts.map +1 -0
  41. package/dist/public/authentication/session.js +165 -0
  42. package/dist/public/authentication/session.js.map +1 -0
  43. package/dist/public/authentication/totp.d.ts +52 -0
  44. package/dist/public/authentication/totp.d.ts.map +1 -0
  45. package/dist/public/authentication/totp.js +138 -0
  46. package/dist/public/authentication/totp.js.map +1 -0
  47. package/dist/public/authorization/composite.d.ts +23 -0
  48. package/dist/public/authorization/composite.d.ts.map +1 -0
  49. package/dist/public/authorization/composite.js +79 -0
  50. package/dist/public/authorization/composite.js.map +1 -0
  51. package/dist/public/authorization/decision.d.ts +11 -0
  52. package/dist/public/authorization/decision.d.ts.map +1 -0
  53. package/dist/public/authorization/decision.js +19 -0
  54. package/dist/public/authorization/decision.js.map +1 -0
  55. package/dist/public/authorization/manager.d.ts +39 -0
  56. package/dist/public/authorization/manager.d.ts.map +1 -0
  57. package/dist/public/authorization/manager.js +138 -0
  58. package/dist/public/authorization/manager.js.map +1 -0
  59. package/dist/public/authorization/permission.d.ts +20 -0
  60. package/dist/public/authorization/permission.d.ts.map +1 -0
  61. package/dist/public/authorization/permission.js +46 -0
  62. package/dist/public/authorization/permission.js.map +1 -0
  63. package/dist/public/authorization/policy.d.ts +30 -0
  64. package/dist/public/authorization/policy.d.ts.map +1 -0
  65. package/dist/public/authorization/policy.js +93 -0
  66. package/dist/public/authorization/policy.js.map +1 -0
  67. package/dist/public/authorization/role.d.ts +17 -0
  68. package/dist/public/authorization/role.d.ts.map +1 -0
  69. package/dist/public/authorization/role.js +43 -0
  70. package/dist/public/authorization/role.js.map +1 -0
  71. package/dist/public/context/auth-context.d.ts +8 -0
  72. package/dist/public/context/auth-context.d.ts.map +1 -0
  73. package/dist/public/context/auth-context.js +33 -0
  74. package/dist/public/context/auth-context.js.map +1 -0
  75. package/dist/public/errors.d.ts +33 -0
  76. package/dist/public/errors.d.ts.map +1 -0
  77. package/dist/public/errors.js +89 -0
  78. package/dist/public/errors.js.map +1 -0
  79. package/dist/public/identity.d.ts +40 -0
  80. package/dist/public/identity.d.ts.map +1 -0
  81. package/dist/public/identity.js +102 -0
  82. package/dist/public/identity.js.map +1 -0
  83. package/dist/public/index.d.ts +23 -0
  84. package/dist/public/index.d.ts.map +1 -0
  85. package/dist/public/index.js +29 -0
  86. package/dist/public/index.js.map +1 -0
  87. package/dist/public/middleware/authenticate.d.ts +10 -0
  88. package/dist/public/middleware/authenticate.d.ts.map +1 -0
  89. package/dist/public/middleware/authenticate.js +65 -0
  90. package/dist/public/middleware/authenticate.js.map +1 -0
  91. package/dist/public/middleware/authorize.d.ts +11 -0
  92. package/dist/public/middleware/authorize.d.ts.map +1 -0
  93. package/dist/public/middleware/authorize.js +42 -0
  94. package/dist/public/middleware/authorize.js.map +1 -0
  95. package/dist/public/types.d.ts +75 -0
  96. package/dist/public/types.d.ts.map +1 -0
  97. package/dist/public/types.js +2 -0
  98. package/dist/public/types.js.map +1 -0
  99. package/package.json +39 -0
@@ -0,0 +1,75 @@
1
+ import type { HttpRequest, RequestContext } from '@jsango/http';
2
+ export type IdentityType = 'user' | 'service_account' | 'api_client' | 'system' | 'anonymous';
3
+ export interface Identity {
4
+ readonly id: string;
5
+ readonly type: IdentityType;
6
+ readonly isAuthenticated: boolean;
7
+ readonly isSuperuser: boolean;
8
+ readonly roles: readonly string[];
9
+ readonly permissions: readonly string[];
10
+ readonly tenantId?: string | undefined;
11
+ readonly metadata: Readonly<Record<string, unknown>>;
12
+ hasRole(role: string): boolean;
13
+ hasPermission(permission: string): boolean;
14
+ toJSON(): Record<string, unknown>;
15
+ }
16
+ export type AuthenticationStatus = 'authenticated' | 'unauthenticated' | 'invalid_credentials' | 'expired_credentials' | 'malformed_credentials';
17
+ export interface AuthenticationResult {
18
+ readonly status: AuthenticationStatus;
19
+ readonly identity: Identity;
20
+ readonly strategy?: string | undefined;
21
+ readonly error?: Error | undefined;
22
+ readonly metadata?: Readonly<Record<string, unknown>> | undefined;
23
+ }
24
+ export interface IAuthenticationStrategy {
25
+ readonly name: string;
26
+ authenticate(request: HttpRequest, context: RequestContext): Promise<AuthenticationResult>;
27
+ }
28
+ export interface AuthContext {
29
+ readonly identity: Identity;
30
+ readonly result: AuthenticationResult;
31
+ readonly strategyUsed?: string | undefined;
32
+ readonly tenantId?: string | undefined;
33
+ readonly metadata: Readonly<Record<string, unknown>>;
34
+ }
35
+ export interface Session {
36
+ readonly id: string;
37
+ readonly identityId: string;
38
+ readonly roles: readonly string[];
39
+ readonly tenantId?: string | undefined;
40
+ readonly createdAt: number;
41
+ readonly updatedAt: number;
42
+ readonly expiresAt: number;
43
+ readonly data: Readonly<Record<string, unknown>>;
44
+ }
45
+ export interface CreateSessionData {
46
+ readonly identityId: string;
47
+ readonly roles?: readonly string[] | undefined;
48
+ readonly tenantId?: string | undefined;
49
+ readonly ttlMs?: number | undefined;
50
+ readonly data?: Record<string, unknown> | undefined;
51
+ }
52
+ export interface ISessionStore {
53
+ get(id: string): Promise<Session | undefined>;
54
+ create(data: CreateSessionData): Promise<Session>;
55
+ update(id: string, data: Partial<Session>): Promise<Session | undefined>;
56
+ delete(id: string): Promise<boolean>;
57
+ touch(id: string, ttlMs?: number): Promise<boolean>;
58
+ listByIdentity?(identityId: string): Promise<Session[]>;
59
+ deleteByIdentity?(identityId: string, excludeSessionId?: string): Promise<number>;
60
+ }
61
+ export interface AuthorizationDecision {
62
+ readonly allowed: boolean;
63
+ readonly reason?: string | undefined;
64
+ readonly policy?: string | undefined;
65
+ readonly metadata?: Readonly<Record<string, unknown>> | undefined;
66
+ }
67
+ export type PolicyResult = boolean | AuthorizationDecision;
68
+ export interface IPolicy<TResource = unknown> {
69
+ readonly name: string;
70
+ can(identity: Identity, action: string, resource?: TResource, context?: AuthContext): Promise<PolicyResult> | PolicyResult;
71
+ }
72
+ export interface ResourceResolver<TResource = unknown> {
73
+ (context: RequestContext): Promise<TResource | undefined> | TResource | undefined;
74
+ }
75
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/public/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/public/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@jsango/auth",
3
+ "version": "1.0.0",
4
+ "description": "Authentication and authorization foundation for jsango",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "@jsango/runtime": "1.0.0",
16
+ "@jsango/core": "1.0.0",
17
+ "@jsango/container": "1.0.0",
18
+ "@jsango/config": "1.0.0",
19
+ "@jsango/http": "1.0.0",
20
+ "@jsango/middleware": "1.0.0"
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/flutterbuddy1/jsango.git",
29
+ "directory": "packages/auth"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "scripts": {
35
+ "build": "tsc -b",
36
+ "typecheck": "tsc -b",
37
+ "clean": "rm -rf dist *.tsbuildinfo"
38
+ }
39
+ }