@dataflint/mcp-server 1.0.14 → 1.0.17

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 (105) hide show
  1. package/dist/auth/auth-strategy-factory.d.ts +60 -0
  2. package/dist/auth/auth-strategy-factory.d.ts.map +1 -0
  3. package/dist/auth/auth-strategy-factory.js +113 -0
  4. package/dist/auth/auth-strategy-factory.js.map +1 -0
  5. package/dist/auth/auth0-m2m-service.d.ts +74 -0
  6. package/dist/auth/auth0-m2m-service.d.ts.map +1 -0
  7. package/dist/auth/auth0-m2m-service.js +195 -0
  8. package/dist/auth/auth0-m2m-service.js.map +1 -0
  9. package/dist/auth/auth0-service.d.ts +64 -0
  10. package/dist/auth/auth0-service.d.ts.map +1 -0
  11. package/dist/auth/auth0-service.js +326 -0
  12. package/dist/auth/auth0-service.js.map +1 -0
  13. package/dist/auth/customer-auth-configs.d.ts +31 -0
  14. package/dist/auth/customer-auth-configs.d.ts.map +1 -0
  15. package/dist/auth/customer-auth-configs.js +39 -0
  16. package/dist/auth/customer-auth-configs.js.map +1 -0
  17. package/dist/auth/index.d.ts +75 -0
  18. package/dist/auth/index.d.ts.map +1 -0
  19. package/dist/auth/index.js +137 -0
  20. package/dist/auth/index.js.map +1 -0
  21. package/dist/auth/secrets/aws-secrets-provider.d.ts +45 -0
  22. package/dist/auth/secrets/aws-secrets-provider.d.ts.map +1 -0
  23. package/dist/auth/secrets/aws-secrets-provider.js +125 -0
  24. package/dist/auth/secrets/aws-secrets-provider.js.map +1 -0
  25. package/dist/auth/secrets/index.d.ts +12 -0
  26. package/dist/auth/secrets/index.d.ts.map +1 -0
  27. package/dist/auth/secrets/index.js +17 -0
  28. package/dist/auth/secrets/index.js.map +1 -0
  29. package/dist/auth/secrets/local-file-secrets-provider.d.ts +47 -0
  30. package/dist/auth/secrets/local-file-secrets-provider.d.ts.map +1 -0
  31. package/dist/auth/secrets/local-file-secrets-provider.js +151 -0
  32. package/dist/auth/secrets/local-file-secrets-provider.js.map +1 -0
  33. package/dist/auth/secrets/secrets-provider.d.ts +54 -0
  34. package/dist/auth/secrets/secrets-provider.d.ts.map +1 -0
  35. package/dist/auth/secrets/secrets-provider.js +106 -0
  36. package/dist/auth/secrets/secrets-provider.js.map +1 -0
  37. package/dist/auth/secrets/types.d.ts +32 -0
  38. package/dist/auth/secrets/types.d.ts.map +1 -0
  39. package/dist/auth/secrets/types.js +8 -0
  40. package/dist/auth/secrets/types.js.map +1 -0
  41. package/dist/auth/service-account-service.d.ts +77 -0
  42. package/dist/auth/service-account-service.d.ts.map +1 -0
  43. package/dist/auth/service-account-service.js +209 -0
  44. package/dist/auth/service-account-service.js.map +1 -0
  45. package/dist/auth/types.d.ts +140 -0
  46. package/dist/auth/types.d.ts.map +1 -0
  47. package/dist/auth/types.js +30 -0
  48. package/dist/auth/types.js.map +1 -0
  49. package/dist/auth.d.ts +47 -0
  50. package/dist/auth.d.ts.map +1 -0
  51. package/dist/auth.js +302 -0
  52. package/dist/auth.js.map +1 -0
  53. package/dist/dataflint-server-service.d.ts +3 -6
  54. package/dist/dataflint-server-service.d.ts.map +1 -1
  55. package/dist/dataflint-server-service.js +48 -133
  56. package/dist/dataflint-server-service.js.map +1 -1
  57. package/dist/index.d.ts +4 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +7 -11
  60. package/dist/index.js.map +1 -1
  61. package/dist/request-context.d.ts +0 -20
  62. package/dist/request-context.d.ts.map +1 -1
  63. package/dist/request-context.js +1 -31
  64. package/dist/request-context.js.map +1 -1
  65. package/dist/server.d.ts +2 -2
  66. package/dist/server.d.ts.map +1 -1
  67. package/dist/server.js +14 -16
  68. package/dist/server.js.map +1 -1
  69. package/dist/standalone/config.d.ts +7 -13
  70. package/dist/standalone/config.d.ts.map +1 -1
  71. package/dist/standalone/config.js +439 -23059
  72. package/dist/standalone/config.js.map +4 -4
  73. package/dist/standalone/logger.js +2 -2
  74. package/dist/standalone/logger.js.map +1 -1
  75. package/dist/standalone/server.d.ts.map +1 -1
  76. package/dist/standalone/server.js +25 -45
  77. package/dist/standalone/server.js.map +1 -1
  78. package/dist/standalone/stdio-transport.d.ts +1 -2
  79. package/dist/standalone/stdio-transport.d.ts.map +1 -1
  80. package/dist/standalone/stdio-transport.js +4 -3
  81. package/dist/standalone/stdio-transport.js.map +1 -1
  82. package/dist/tools/base.d.ts +16 -0
  83. package/dist/tools/base.d.ts.map +1 -1
  84. package/dist/tools/base.js +16 -0
  85. package/dist/tools/base.js.map +1 -1
  86. package/dist/tools/core-tools.d.ts.map +1 -1
  87. package/dist/tools/core-tools.js +4 -4
  88. package/dist/tools/core-tools.js.map +1 -1
  89. package/dist/tools/expertise-tools.d.ts.map +1 -1
  90. package/dist/tools/expertise-tools.js +5 -5
  91. package/dist/tools/expertise-tools.js.map +1 -1
  92. package/dist/tools/findings-tools.d.ts.map +1 -1
  93. package/dist/tools/findings-tools.js +4 -4
  94. package/dist/tools/findings-tools.js.map +1 -1
  95. package/dist/tools/highlight-tools.d.ts.map +1 -1
  96. package/dist/tools/highlight-tools.js +8 -10
  97. package/dist/tools/highlight-tools.js.map +1 -1
  98. package/dist/tools/listing-tools.d.ts.map +1 -1
  99. package/dist/tools/listing-tools.js +1 -1
  100. package/dist/tools/listing-tools.js.map +1 -1
  101. package/dist/types.d.ts +13 -5
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/types.js +0 -5
  104. package/dist/types.js.map +1 -1
  105. package/package.json +1 -2
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Service Account Authentication Service
3
+ *
4
+ * Provides authentication using a pre-generated JWT token read from a file.
5
+ * This is typically used for M2M (machine-to-machine) scenarios where a service
6
+ * account token is mounted as a file (e.g., in Kubernetes).
7
+ *
8
+ * The token is expected to be a valid JWT with an 'exp' claim.
9
+ */
10
+ import { IAuthStrategy, AuthStrategyType, AuthUserInfo, IAuthLogger } from "./types";
11
+ /**
12
+ * Service Account authentication strategy
13
+ *
14
+ * Reads a JWT token from a file path and manages token caching and expiration.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const service = new ServiceAccountService(
19
+ * '/var/run/secrets/dataflint/token',
20
+ * 'tenant-123',
21
+ * logger
22
+ * );
23
+ *
24
+ * await service.initialize();
25
+ * const token = await service.getToken();
26
+ * ```
27
+ */
28
+ export declare class ServiceAccountService implements IAuthStrategy {
29
+ private tokenPath;
30
+ private tenantId;
31
+ private tokenCache;
32
+ private logger;
33
+ constructor(tokenPath: string, tenantId?: string, logger?: IAuthLogger);
34
+ /**
35
+ * Get the strategy type identifier
36
+ */
37
+ getType(): AuthStrategyType;
38
+ /**
39
+ * Initialize the service account strategy
40
+ * Validates that the token file exists and is readable
41
+ */
42
+ initialize(): Promise<void>;
43
+ /**
44
+ * Get a valid access token, reading from file if cache is expired
45
+ */
46
+ getToken(): Promise<string>;
47
+ /**
48
+ * Force refresh the token by clearing cache and re-reading from file
49
+ */
50
+ refreshToken(): Promise<void>;
51
+ /**
52
+ * Check if currently authenticated (token file exists and is valid)
53
+ */
54
+ isAuthenticated(): Promise<boolean>;
55
+ /**
56
+ * Get user information for the service account
57
+ * Returns synthetic user info since service accounts don't have traditional user profiles
58
+ */
59
+ getUserInfo(): Promise<AuthUserInfo>;
60
+ /**
61
+ * Get the tenant ID associated with this service account
62
+ */
63
+ getTenantId(): string | undefined;
64
+ /**
65
+ * Read the token from the file system
66
+ */
67
+ private readTokenFromFile;
68
+ /**
69
+ * Validate the token format and cache it with expiration
70
+ */
71
+ private validateAndCacheToken;
72
+ /**
73
+ * Extract expiration time from JWT payload
74
+ */
75
+ private extractExpiration;
76
+ }
77
+ //# sourceMappingURL=service-account-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-account-service.d.ts","sourceRoot":"","sources":["../../src/auth/service-account-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACd,MAAM,SAAS,CAAC;AAiBjB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACvD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAAc;gBAEhB,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAMtE;;OAEG;IACH,OAAO,IAAI,gBAAgB;IAI3B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAgBjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IASzC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAQ1C;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAuB5B"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ /**
3
+ * Service Account Authentication Service
4
+ *
5
+ * Provides authentication using a pre-generated JWT token read from a file.
6
+ * This is typically used for M2M (machine-to-machine) scenarios where a service
7
+ * account token is mounted as a file (e.g., in Kubernetes).
8
+ *
9
+ * The token is expected to be a valid JWT with an 'exp' claim.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ServiceAccountService = void 0;
46
+ const fs = __importStar(require("fs"));
47
+ const types_1 = require("./types");
48
+ /**
49
+ * Default no-op logger for when no logger is provided
50
+ */
51
+ const noopLogger = {
52
+ info: () => { },
53
+ warn: () => { },
54
+ error: () => { },
55
+ debug: () => { },
56
+ };
57
+ /**
58
+ * Service Account authentication strategy
59
+ *
60
+ * Reads a JWT token from a file path and manages token caching and expiration.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const service = new ServiceAccountService(
65
+ * '/var/run/secrets/dataflint/token',
66
+ * 'tenant-123',
67
+ * logger
68
+ * );
69
+ *
70
+ * await service.initialize();
71
+ * const token = await service.getToken();
72
+ * ```
73
+ */
74
+ class ServiceAccountService {
75
+ tokenPath;
76
+ tenantId;
77
+ tokenCache = null;
78
+ logger;
79
+ constructor(tokenPath, tenantId, logger) {
80
+ this.tokenPath = tokenPath;
81
+ this.tenantId = tenantId;
82
+ this.logger = logger || noopLogger;
83
+ }
84
+ /**
85
+ * Get the strategy type identifier
86
+ */
87
+ getType() {
88
+ return types_1.AuthStrategyType.SERVICE_ACCOUNT;
89
+ }
90
+ /**
91
+ * Initialize the service account strategy
92
+ * Validates that the token file exists and is readable
93
+ */
94
+ async initialize() {
95
+ this.logger.info(`Initializing ServiceAccountService with token path: ${this.tokenPath}`);
96
+ if (!fs.existsSync(this.tokenPath)) {
97
+ throw new Error(`Service account token file not found: ${this.tokenPath}`);
98
+ }
99
+ // Pre-load and validate the token
100
+ await this.getToken();
101
+ this.logger.info("ServiceAccountService initialized successfully");
102
+ }
103
+ /**
104
+ * Get a valid access token, reading from file if cache is expired
105
+ */
106
+ async getToken() {
107
+ const now = Date.now();
108
+ // Check if we have a valid cached token (with 5-minute buffer)
109
+ const bufferMs = 5 * 60 * 1000;
110
+ if (this.tokenCache && now < this.tokenCache.expiresAt - bufferMs) {
111
+ this.logger.debug("Using cached service account token");
112
+ return this.tokenCache.token;
113
+ }
114
+ const rawToken = this.readTokenFromFile();
115
+ this.validateAndCacheToken(rawToken);
116
+ return this.tokenCache.token;
117
+ }
118
+ /**
119
+ * Force refresh the token by clearing cache and re-reading from file
120
+ */
121
+ async refreshToken() {
122
+ this.logger.info("Refreshing service account token...");
123
+ this.tokenCache = null;
124
+ await this.getToken();
125
+ this.logger.info("Service account token refreshed");
126
+ }
127
+ /**
128
+ * Check if currently authenticated (token file exists and is valid)
129
+ */
130
+ async isAuthenticated() {
131
+ try {
132
+ await this.getToken();
133
+ return true;
134
+ }
135
+ catch {
136
+ return false;
137
+ }
138
+ }
139
+ /**
140
+ * Get user information for the service account
141
+ * Returns synthetic user info since service accounts don't have traditional user profiles
142
+ */
143
+ async getUserInfo() {
144
+ return {
145
+ sub: "m2m-service-account",
146
+ name: "M2M Service Account",
147
+ ...(this.tenantId && { tenant_id: this.tenantId }),
148
+ };
149
+ }
150
+ /**
151
+ * Get the tenant ID associated with this service account
152
+ */
153
+ getTenantId() {
154
+ return this.tenantId;
155
+ }
156
+ /**
157
+ * Read the token from the file system
158
+ */
159
+ readTokenFromFile() {
160
+ return fs.readFileSync(this.tokenPath, "utf8");
161
+ }
162
+ /**
163
+ * Validate the token format and cache it with expiration
164
+ */
165
+ validateAndCacheToken(rawToken) {
166
+ const token = rawToken.trim();
167
+ if (!token) {
168
+ throw new Error("Service account token is empty");
169
+ }
170
+ const parts = token.split(".");
171
+ if (parts.length !== 3) {
172
+ throw new Error(`Invalid JWT format: expected 3 parts, got ${parts.length}`);
173
+ }
174
+ const expiresAt = this.extractExpiration(token);
175
+ const now = Date.now();
176
+ const expiresIn = Math.floor((expiresAt - now) / 1000);
177
+ // Check if token is already expired
178
+ if (expiresAt <= now) {
179
+ throw new Error("Service account token is expired");
180
+ }
181
+ this.logger.info(`Service account token loaded${this.tenantId ? ` for tenant ${this.tenantId}` : ""}: expires in ${expiresIn}s (${new Date(expiresAt).toISOString()})`);
182
+ this.tokenCache = {
183
+ token,
184
+ expiresAt,
185
+ };
186
+ }
187
+ /**
188
+ * Extract expiration time from JWT payload
189
+ */
190
+ extractExpiration(token) {
191
+ const parts = token.split(".");
192
+ try {
193
+ const payload = parts[1];
194
+ const decoded = Buffer.from(payload, "base64url").toString("utf8");
195
+ const parsed = JSON.parse(decoded);
196
+ if (typeof parsed.exp === "number") {
197
+ return parsed.exp * 1000;
198
+ }
199
+ this.logger.warn("JWT missing 'exp' field, using fallback expiration");
200
+ return Date.now() + 300000; // 5 minutes fallback
201
+ }
202
+ catch (error) {
203
+ this.logger.warn(`Failed to parse JWT expiration: ${error}, using fallback expiration`);
204
+ return Date.now() + 300000; // 5 minutes fallback
205
+ }
206
+ }
207
+ }
208
+ exports.ServiceAccountService = ServiceAccountService;
209
+ //# sourceMappingURL=service-account-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-account-service.js","sourceRoot":"","sources":["../../src/auth/service-account-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Auth types and interfaces for DataFlint authentication
3
+ *
4
+ * This module defines the core interfaces used across all authentication strategies:
5
+ * - Service Account (M2M token from file)
6
+ * - Auth0 M2M (client credentials grant)
7
+ * - Auth0 User (interactive OAuth2/PKCE flow)
8
+ */
9
+ /**
10
+ * Basic authentication configuration for Auth0
11
+ */
12
+ export interface AuthConfig {
13
+ domain: string;
14
+ clientId: string;
15
+ scope: string;
16
+ audience: string;
17
+ }
18
+ /**
19
+ * Result from a successful authentication
20
+ */
21
+ export interface AuthResult {
22
+ accessToken: string;
23
+ idToken?: string;
24
+ refreshToken?: string;
25
+ expiresAt?: Date;
26
+ userInfo?: unknown;
27
+ }
28
+ /**
29
+ * Credentials required for Auth0 M2M (client credentials) authentication
30
+ */
31
+ export interface Auth0M2MCredentials {
32
+ client_id: string;
33
+ client_secret: string;
34
+ audience: string;
35
+ domain: string;
36
+ }
37
+ /**
38
+ * Authentication strategy types
39
+ */
40
+ export declare enum AuthStrategyType {
41
+ SERVICE_ACCOUNT = "service_account",
42
+ AUTH0_M2M = "auth0_m2m",
43
+ AUTH0_USER = "auth0_user"
44
+ }
45
+ /**
46
+ * M2M authentication mode types
47
+ */
48
+ export declare enum M2MType {
49
+ NONE = "none",
50
+ SERVICE_ACCOUNT = "service_account",
51
+ AUTH0_M2M = "auth0_m2m"
52
+ }
53
+ /**
54
+ * M2M authentication mode - single source of truth for M2M detection
55
+ */
56
+ export type M2MMode = {
57
+ type: M2MType.NONE;
58
+ } | {
59
+ type: M2MType.SERVICE_ACCOUNT;
60
+ tokenPath: string;
61
+ tenantId?: string;
62
+ } | {
63
+ type: M2MType.AUTH0_M2M;
64
+ secretName: string;
65
+ tenantId?: string;
66
+ };
67
+ /**
68
+ * User information returned from authentication
69
+ */
70
+ export interface AuthUserInfo {
71
+ sub: string;
72
+ name: string;
73
+ tenant_id?: string;
74
+ }
75
+ /**
76
+ * Common interface for all authentication strategies
77
+ *
78
+ * Implementations:
79
+ * - ServiceAccountService: Reads JWT from file path
80
+ * - Auth0M2MService: Uses client credentials grant
81
+ * - Auth0Service: Uses interactive OAuth2/PKCE flow
82
+ */
83
+ export interface IAuthStrategy {
84
+ /**
85
+ * Get the type of this authentication strategy
86
+ */
87
+ getType(): AuthStrategyType;
88
+ /**
89
+ * Initialize the authentication strategy (e.g., discover issuer, validate credentials)
90
+ */
91
+ initialize(): Promise<void>;
92
+ /**
93
+ * Get a valid access token, refreshing if necessary
94
+ */
95
+ getToken(): Promise<string>;
96
+ /**
97
+ * Force refresh the token
98
+ */
99
+ refreshToken(): Promise<void>;
100
+ /**
101
+ * Check if currently authenticated with a valid token
102
+ */
103
+ isAuthenticated(): Promise<boolean>;
104
+ /**
105
+ * Get user information for the current authentication
106
+ */
107
+ getUserInfo(): Promise<AuthUserInfo>;
108
+ /**
109
+ * Get the tenant ID associated with this authentication (if any)
110
+ */
111
+ getTenantId(): string | undefined;
112
+ }
113
+ /**
114
+ * Configuration provider interface for authentication
115
+ */
116
+ export interface IAuthConfigProvider {
117
+ getAuthConfig(): AuthConfig;
118
+ getM2MMode(): M2MMode;
119
+ getTenantId(): string | undefined;
120
+ getEnvironment(): string;
121
+ getServerUrl(): string;
122
+ }
123
+ /**
124
+ * Logger interface for authentication services
125
+ */
126
+ export interface IAuthLogger {
127
+ info(message: string): void;
128
+ warn(message: string): void;
129
+ error(message: string, error?: unknown): void;
130
+ debug(message: string): void;
131
+ }
132
+ /**
133
+ * Handler for opening URLs (used for OAuth2 browser-based flow)
134
+ */
135
+ export type OpenUrlHandler = (url: string) => Promise<void>;
136
+ /**
137
+ * Provider function for AuthConfig
138
+ */
139
+ export type ConfigProvider = () => AuthConfig;
140
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Auth types and interfaces for DataFlint authentication
4
+ *
5
+ * This module defines the core interfaces used across all authentication strategies:
6
+ * - Service Account (M2M token from file)
7
+ * - Auth0 M2M (client credentials grant)
8
+ * - Auth0 User (interactive OAuth2/PKCE flow)
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.M2MType = exports.AuthStrategyType = void 0;
12
+ /**
13
+ * Authentication strategy types
14
+ */
15
+ var AuthStrategyType;
16
+ (function (AuthStrategyType) {
17
+ AuthStrategyType["SERVICE_ACCOUNT"] = "service_account";
18
+ AuthStrategyType["AUTH0_M2M"] = "auth0_m2m";
19
+ AuthStrategyType["AUTH0_USER"] = "auth0_user";
20
+ })(AuthStrategyType || (exports.AuthStrategyType = AuthStrategyType = {}));
21
+ /**
22
+ * M2M authentication mode types
23
+ */
24
+ var M2MType;
25
+ (function (M2MType) {
26
+ M2MType["NONE"] = "none";
27
+ M2MType["SERVICE_ACCOUNT"] = "service_account";
28
+ M2MType["AUTH0_M2M"] = "auth0_m2m";
29
+ })(M2MType || (exports.M2MType = M2MType = {}));
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiCH;;GAEG;AACH,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,uDAAmC,CAAA;IACnC,2CAAuB,CAAA;IACvB,6CAAyB,CAAA;AAC7B,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAED;;GAEG;AACH,IAAY,OAIX;AAJD,WAAY,OAAO;IACf,wBAAa,CAAA;IACb,8CAAmC,CAAA;IACnC,kCAAuB,CAAA;AAC3B,CAAC,EAJW,OAAO,uBAAP,OAAO,QAIlB"}
package/dist/auth.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ import { OpenUrlHandler, ConfigProvider } from "./types";
2
+ export interface AuthResult {
3
+ accessToken: string;
4
+ idToken?: string;
5
+ refreshToken?: string;
6
+ expiresAt?: Date;
7
+ userInfo?: any;
8
+ }
9
+ export declare class Auth0Service {
10
+ private config;
11
+ private redirectUri;
12
+ private callbackPort;
13
+ private client;
14
+ private issuer;
15
+ private initialized;
16
+ private openUrlHandler;
17
+ constructor(openUrlHandler: OpenUrlHandler, configProvider: ConfigProvider, callbackPort?: number);
18
+ /**
19
+ * Initialize the Auth0 client by discovering the issuer metadata
20
+ */
21
+ initialize(): Promise<void>;
22
+ /**
23
+ * Start the authentication flow
24
+ */
25
+ authenticate(): Promise<AuthResult>;
26
+ /**
27
+ * Get user information using the access token
28
+ */
29
+ getUserInfo(accessToken: string): Promise<any>;
30
+ /**
31
+ * Refresh the access token using refresh token
32
+ */
33
+ refreshToken(refreshToken: string): Promise<AuthResult>;
34
+ /**
35
+ * Process token set and return structured result
36
+ */
37
+ private processTokenSet;
38
+ /**
39
+ * Check if a token is expired
40
+ */
41
+ isTokenExpired(authResult: AuthResult): boolean;
42
+ /**
43
+ * Logout (revoke tokens if supported)
44
+ */
45
+ logout(accessToken: string): Promise<void>;
46
+ }
47
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AASrE,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAiB;gBAGnC,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,YAAY,GAAE,MAAc;IAgBhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAoHzC;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsBpD;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB7D;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IA6B/C;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAenD"}