@mastra/auth-firebase 0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/LICENSE.md +15 -0
- package/README.md +63 -0
- package/dist/index.cjs +165 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +159 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @mastra/auth-firebase
|
|
2
|
+
|
|
3
|
+
## 0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
|
|
8
|
+
|
|
9
|
+
- Experimental auth -> auth ([#9660](https://github.com/mastra-ai/mastra/pull/9660))
|
|
10
|
+
|
|
11
|
+
- Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
|
|
12
|
+
|
|
13
|
+
## 0.10.4
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Update package.json and README ([#7886](https://github.com/mastra-ai/mastra/pull/7886))
|
|
18
|
+
|
|
19
|
+
## 0.10.4-alpha.0
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Update package.json and README ([#7886](https://github.com/mastra-ai/mastra/pull/7886))
|
|
24
|
+
|
|
25
|
+
## 0.10.3
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- de3cbc6: Update the `package.json` file to include additional fields like `repository`, `homepage` or `files`.
|
|
30
|
+
|
|
31
|
+
## 0.10.3-alpha.0
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- [#7343](https://github.com/mastra-ai/mastra/pull/7343) [`de3cbc6`](https://github.com/mastra-ai/mastra/commit/de3cbc61079211431bd30487982ea3653517278e) Thanks [@LekoArts](https://github.com/LekoArts)! - Update the `package.json` file to include additional fields like `repository`, `homepage` or `files`.
|
|
36
|
+
|
|
37
|
+
## 0.10.2
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- [`c6113ed`](https://github.com/mastra-ai/mastra/commit/c6113ed7f9df297e130d94436ceee310273d6430) Thanks [@wardpeet](https://github.com/wardpeet)! - Fix peerdpes for @mastra/core
|
|
42
|
+
|
|
43
|
+
## 0.10.1
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- 4a406ec: fixes TypeScript declaration file imports to ensure proper ESM compatibility
|
|
48
|
+
|
|
49
|
+
## 0.10.1-alpha.0
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- 4a406ec: fixes TypeScript declaration file imports to ensure proper ESM compatibility
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Apache License 2.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Kepler Software, Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# @mastra/auth-firebase
|
|
2
|
+
|
|
3
|
+
A Firebase authentication integration package for Mastra applications. This package provides seamless integration with Firebase Authentication and Firestore for user authentication and authorization.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @mastra/auth-firebase
|
|
9
|
+
# or
|
|
10
|
+
yarn add @mastra/auth-firebase
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @mastra/auth-firebase
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Firebase Authentication integration
|
|
18
|
+
- Firestore-based user authorization
|
|
19
|
+
- Support for service account credentials
|
|
20
|
+
- Automatic token verification
|
|
21
|
+
- User access control through Firestore
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
27
|
+
import { MastraAuthFirebase } from '@mastra/auth-firebase';
|
|
28
|
+
|
|
29
|
+
// Initialize with default configuration
|
|
30
|
+
const firebaseAuth = new MastraAuthFirebase();
|
|
31
|
+
|
|
32
|
+
// Or with custom options
|
|
33
|
+
const firebaseAuth = new MastraAuthFirebase({
|
|
34
|
+
serviceAccount: 'path/to/service-account.json',
|
|
35
|
+
databaseId: 'your-database-id',
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Enable auth in Mastra
|
|
39
|
+
const mastra = new Mastra({
|
|
40
|
+
...
|
|
41
|
+
server: {
|
|
42
|
+
auth: firebaseAuth,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Configuration
|
|
48
|
+
|
|
49
|
+
The package can be configured through constructor options or environment variables:
|
|
50
|
+
|
|
51
|
+
### Constructor Options
|
|
52
|
+
|
|
53
|
+
- `serviceAccount`: Path to Firebase service account JSON file
|
|
54
|
+
- `databaseId`: Firestore database ID
|
|
55
|
+
|
|
56
|
+
### Environment Variables
|
|
57
|
+
|
|
58
|
+
- `FIREBASE_SERVICE_ACCOUNT`: Path to Firebase service account JSON file
|
|
59
|
+
- `FIRESTORE_DATABASE_ID` or `FIREBASE_DATABASE_ID`: Firestore database ID
|
|
60
|
+
|
|
61
|
+
## User Authorization
|
|
62
|
+
|
|
63
|
+
The package uses Firestore to manage user access. It expects a collection named `user_access` with documents keyed by user UIDs. The presence of a document in this collection determines whether a user is authorized.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var admin = require('firebase-admin');
|
|
4
|
+
var firestore = require('firebase-admin/firestore');
|
|
5
|
+
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var admin__default = /*#__PURE__*/_interopDefault(admin);
|
|
9
|
+
|
|
10
|
+
// ../../packages/core/dist/chunk-KJ2SW6VA.js
|
|
11
|
+
var RegisteredLogger = {
|
|
12
|
+
LLM: "LLM"};
|
|
13
|
+
var LogLevel = {
|
|
14
|
+
DEBUG: "debug",
|
|
15
|
+
INFO: "info",
|
|
16
|
+
WARN: "warn",
|
|
17
|
+
ERROR: "error"};
|
|
18
|
+
var MastraLogger = class {
|
|
19
|
+
name;
|
|
20
|
+
level;
|
|
21
|
+
transports;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
this.name = options.name || "Mastra";
|
|
24
|
+
this.level = options.level || LogLevel.ERROR;
|
|
25
|
+
this.transports = new Map(Object.entries(options.transports || {}));
|
|
26
|
+
}
|
|
27
|
+
getTransports() {
|
|
28
|
+
return this.transports;
|
|
29
|
+
}
|
|
30
|
+
trackException(_error) {
|
|
31
|
+
}
|
|
32
|
+
async listLogs(transportId, params) {
|
|
33
|
+
if (!transportId || !this.transports.has(transportId)) {
|
|
34
|
+
return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
|
|
35
|
+
}
|
|
36
|
+
return this.transports.get(transportId).listLogs(params) ?? {
|
|
37
|
+
logs: [],
|
|
38
|
+
total: 0,
|
|
39
|
+
page: params?.page ?? 1,
|
|
40
|
+
perPage: params?.perPage ?? 100,
|
|
41
|
+
hasMore: false
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async listLogsByRunId({
|
|
45
|
+
transportId,
|
|
46
|
+
runId,
|
|
47
|
+
fromDate,
|
|
48
|
+
toDate,
|
|
49
|
+
logLevel,
|
|
50
|
+
filters,
|
|
51
|
+
page,
|
|
52
|
+
perPage
|
|
53
|
+
}) {
|
|
54
|
+
if (!transportId || !this.transports.has(transportId) || !runId) {
|
|
55
|
+
return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
|
|
56
|
+
}
|
|
57
|
+
return this.transports.get(transportId).listLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
|
|
58
|
+
logs: [],
|
|
59
|
+
total: 0,
|
|
60
|
+
page: page ?? 1,
|
|
61
|
+
perPage: perPage ?? 100,
|
|
62
|
+
hasMore: false
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var ConsoleLogger = class extends MastraLogger {
|
|
67
|
+
constructor(options = {}) {
|
|
68
|
+
super(options);
|
|
69
|
+
}
|
|
70
|
+
debug(message, ...args) {
|
|
71
|
+
if (this.level === LogLevel.DEBUG) {
|
|
72
|
+
console.info(message, ...args);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
info(message, ...args) {
|
|
76
|
+
if (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
77
|
+
console.info(message, ...args);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
warn(message, ...args) {
|
|
81
|
+
if (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
82
|
+
console.info(message, ...args);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
error(message, ...args) {
|
|
86
|
+
if (this.level === LogLevel.ERROR || this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
87
|
+
console.error(message, ...args);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async listLogs(_transportId, _params) {
|
|
91
|
+
return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };
|
|
92
|
+
}
|
|
93
|
+
async listLogsByRunId(_args) {
|
|
94
|
+
return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// ../../packages/core/dist/chunk-S6URFGCZ.js
|
|
99
|
+
var MastraBase = class {
|
|
100
|
+
component = RegisteredLogger.LLM;
|
|
101
|
+
logger;
|
|
102
|
+
name;
|
|
103
|
+
constructor({ component, name }) {
|
|
104
|
+
this.component = component || RegisteredLogger.LLM;
|
|
105
|
+
this.name = name;
|
|
106
|
+
this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Set the logger for the agent
|
|
110
|
+
* @param logger
|
|
111
|
+
*/
|
|
112
|
+
__setLogger(logger) {
|
|
113
|
+
this.logger = logger;
|
|
114
|
+
if (this.component !== RegisteredLogger.LLM) {
|
|
115
|
+
this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// ../../packages/core/dist/server/index.js
|
|
121
|
+
var MastraAuthProvider = class extends MastraBase {
|
|
122
|
+
constructor(options) {
|
|
123
|
+
super({ component: "AUTH", name: options?.name });
|
|
124
|
+
if (options?.authorizeUser) {
|
|
125
|
+
this.authorizeUser = options.authorizeUser.bind(this);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
registerOptions(opts) {
|
|
129
|
+
if (opts?.authorizeUser) {
|
|
130
|
+
this.authorizeUser = opts.authorizeUser.bind(this);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var MastraAuthFirebase = class extends MastraAuthProvider {
|
|
135
|
+
serviceAccount;
|
|
136
|
+
databaseId;
|
|
137
|
+
constructor(options) {
|
|
138
|
+
super({ name: options?.name ?? "firebase" });
|
|
139
|
+
this.serviceAccount = options?.serviceAccount ?? process.env.FIREBASE_SERVICE_ACCOUNT;
|
|
140
|
+
this.databaseId = options?.databaseId ?? process.env.FIRESTORE_DATABASE_ID ?? process.env.FIREBASE_DATABASE_ID;
|
|
141
|
+
if (!admin__default.default.apps.length) {
|
|
142
|
+
admin__default.default.initializeApp({
|
|
143
|
+
credential: this.serviceAccount ? admin__default.default.credential.cert(this.serviceAccount) : admin__default.default.credential.applicationDefault()
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
this.registerOptions(options);
|
|
147
|
+
}
|
|
148
|
+
async authenticateToken(token) {
|
|
149
|
+
const decoded = await admin__default.default.auth().verifyIdToken(token);
|
|
150
|
+
return decoded;
|
|
151
|
+
}
|
|
152
|
+
async authorizeUser(user) {
|
|
153
|
+
const db = this.databaseId ? firestore.getFirestore(this.databaseId) : firestore.getFirestore();
|
|
154
|
+
const userAccess = await db.doc(`/user_access/${user.uid}`).get();
|
|
155
|
+
const userAccessData = userAccess.data();
|
|
156
|
+
if (!userAccessData) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
exports.MastraAuthFirebase = MastraAuthFirebase;
|
|
164
|
+
//# sourceMappingURL=index.cjs.map
|
|
165
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/src/logger/constants.ts","../../../packages/core/src/logger/logger.ts","../../../packages/core/src/logger/default-logger.ts","../../../packages/core/src/base.ts","../../../packages/core/src/server/auth.ts","../src/index.ts"],"names":["admin","getFirestore"],"mappings":"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","file":"index.cjs","sourcesContent":["// Constants and Types (keeping from original implementation)\nexport const RegisteredLogger = {\n AGENT: 'AGENT',\n OBSERVABILITY: 'OBSERVABILITY',\n AUTH: 'AUTH',\n NETWORK: 'NETWORK',\n WORKFLOW: 'WORKFLOW',\n LLM: 'LLM',\n TTS: 'TTS',\n VOICE: 'VOICE',\n VECTOR: 'VECTOR',\n BUNDLER: 'BUNDLER',\n DEPLOYER: 'DEPLOYER',\n MEMORY: 'MEMORY',\n STORAGE: 'STORAGE',\n EMBEDDINGS: 'EMBEDDINGS',\n MCP_SERVER: 'MCP_SERVER',\n SERVER_CACHE: 'SERVER_CACHE',\n} as const;\n\nexport type RegisteredLogger = (typeof RegisteredLogger)[keyof typeof RegisteredLogger];\n\nexport const LogLevel = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n NONE: 'silent',\n} as const;\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n","import type { MastraError } from '../error';\nimport { LogLevel } from './constants';\nimport type { BaseLogMessage, LoggerTransport } from './transport';\n\nexport interface IMastraLogger {\n debug(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n trackException(error: MastraError): void;\n\n getTransports(): Map<string, LoggerTransport>;\n listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n}\n\nexport abstract class MastraLogger implements IMastraLogger {\n protected name: string;\n protected level: LogLevel;\n protected transports: Map<string, LoggerTransport>;\n\n constructor(\n options: {\n name?: string;\n level?: LogLevel;\n transports?: Record<string, LoggerTransport>;\n } = {},\n ) {\n this.name = options.name || 'Mastra';\n this.level = options.level || LogLevel.ERROR;\n this.transports = new Map(Object.entries(options.transports || {}));\n }\n\n abstract debug(message: string, ...args: any[]): void;\n abstract info(message: string, ...args: any[]): void;\n abstract warn(message: string, ...args: any[]): void;\n abstract error(message: string, ...args: any[]): void;\n\n getTransports() {\n return this.transports;\n }\n\n trackException(_error: MastraError) {}\n\n async listLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId || !this.transports.has(transportId)) {\n return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports.get(transportId)!.listLogs(params) ?? {\n logs: [],\n total: 0,\n page: params?.page ?? 1,\n perPage: params?.perPage ?? 100,\n hasMore: false,\n }\n );\n }\n\n async listLogsByRunId({\n transportId,\n runId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId || !this.transports.has(transportId) || !runId) {\n return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports\n .get(transportId)!\n .listLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {\n logs: [],\n total: 0,\n page: page ?? 1,\n perPage: perPage ?? 100,\n hasMore: false,\n }\n );\n }\n}\n","import { LogLevel } from './constants';\nimport { MastraLogger } from './logger';\nimport type { LoggerTransport } from './transport';\n\nexport const createLogger = (options: {\n name?: string;\n level?: LogLevel;\n transports?: Record<string, LoggerTransport>;\n}) => {\n const logger = new ConsoleLogger(options);\n\n logger.warn(`createLogger is deprecated. Please use \"new ConsoleLogger()\" from \"@mastra/core/logger\" instead.`);\n\n return logger;\n};\n\nexport class ConsoleLogger extends MastraLogger {\n constructor(\n options: {\n name?: string;\n level?: LogLevel;\n } = {},\n ) {\n super(options);\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n if (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n warn(message: string, ...args: any[]): void {\n if (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n error(message: string, ...args: any[]): void {\n if (\n this.level === LogLevel.ERROR ||\n this.level === LogLevel.WARN ||\n this.level === LogLevel.INFO ||\n this.level === LogLevel.DEBUG\n ) {\n console.error(message, ...args);\n }\n }\n\n async listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };\n }\n\n async listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };\n }\n}\n","import type { IMastraLogger } from './logger';\nimport { RegisteredLogger } from './logger/constants';\nimport { ConsoleLogger } from './logger/default-logger';\n\nexport class MastraBase {\n component: RegisteredLogger = RegisteredLogger.LLM;\n protected logger: IMastraLogger;\n name?: string;\n\n constructor({ component, name }: { component?: RegisteredLogger; name?: string }) {\n this.component = component || RegisteredLogger.LLM;\n this.name = name;\n this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });\n }\n\n /**\n * Set the logger for the agent\n * @param logger\n */\n __setLogger(logger: IMastraLogger) {\n this.logger = logger;\n\n if (this.component !== RegisteredLogger.LLM) {\n this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);\n }\n }\n}\n\nexport * from './types';\n","import type { HonoRequest } from 'hono';\nimport { MastraBase } from '../base';\n\nexport interface MastraAuthProviderOptions<TUser = unknown> {\n name?: string;\n authorizeUser?: (user: TUser, request: HonoRequest) => Promise<boolean> | boolean;\n}\n\nexport abstract class MastraAuthProvider<TUser = unknown> extends MastraBase {\n constructor(options?: MastraAuthProviderOptions<TUser>) {\n super({ component: 'AUTH', name: options?.name });\n\n if (options?.authorizeUser) {\n this.authorizeUser = options.authorizeUser.bind(this);\n }\n }\n\n /**\n * Authenticate a token and return the payload\n * @param token - The token to authenticate\n * @param request - The request\n * @returns The payload\n */\n abstract authenticateToken(token: string, request: HonoRequest): Promise<TUser | null>;\n\n /**\n * Authorize a user for a path and method\n * @param user - The user to authorize\n * @param request - The request\n * @returns The authorization result\n */\n abstract authorizeUser(user: TUser, request: HonoRequest): Promise<boolean> | boolean;\n\n protected registerOptions(opts?: MastraAuthProviderOptions<TUser>) {\n if (opts?.authorizeUser) {\n this.authorizeUser = opts.authorizeUser.bind(this);\n }\n }\n}\n","import type { MastraAuthProviderOptions } from '@mastra/core/server';\nimport { MastraAuthProvider } from '@mastra/core/server';\n\nimport admin from 'firebase-admin';\nimport { getFirestore } from 'firebase-admin/firestore';\n\ntype FirebaseUser = admin.auth.DecodedIdToken;\n\ninterface MastraAuthFirebaseOptions extends MastraAuthProviderOptions<FirebaseUser> {\n databaseId?: string;\n serviceAccount?: string;\n}\n\nexport class MastraAuthFirebase extends MastraAuthProvider<FirebaseUser> {\n private serviceAccount: string | undefined;\n private databaseId: string | undefined;\n\n constructor(options?: MastraAuthFirebaseOptions) {\n super({ name: options?.name ?? 'firebase' });\n\n this.serviceAccount = options?.serviceAccount ?? process.env.FIREBASE_SERVICE_ACCOUNT;\n this.databaseId = options?.databaseId ?? process.env.FIRESTORE_DATABASE_ID ?? process.env.FIREBASE_DATABASE_ID;\n\n if (!admin.apps.length) {\n admin.initializeApp({\n credential: this.serviceAccount\n ? admin.credential.cert(this.serviceAccount)\n : admin.credential.applicationDefault(),\n });\n }\n\n this.registerOptions(options);\n }\n\n async authenticateToken(token: string): Promise<FirebaseUser | null> {\n const decoded = await admin.auth().verifyIdToken(token);\n return decoded;\n }\n\n async authorizeUser(user: FirebaseUser) {\n const db = this.databaseId ? getFirestore(this.databaseId) : getFirestore();\n const userAccess = await db.doc(`/user_access/${user.uid}`).get();\n const userAccessData = userAccess.data();\n\n if (!userAccessData) {\n return false;\n }\n\n return true;\n }\n}\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MastraAuthProviderOptions } from '@mastra/core/server';
|
|
2
|
+
import { MastraAuthProvider } from '@mastra/core/server';
|
|
3
|
+
import admin from 'firebase-admin';
|
|
4
|
+
type FirebaseUser = admin.auth.DecodedIdToken;
|
|
5
|
+
interface MastraAuthFirebaseOptions extends MastraAuthProviderOptions<FirebaseUser> {
|
|
6
|
+
databaseId?: string;
|
|
7
|
+
serviceAccount?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class MastraAuthFirebase extends MastraAuthProvider<FirebaseUser> {
|
|
10
|
+
private serviceAccount;
|
|
11
|
+
private databaseId;
|
|
12
|
+
constructor(options?: MastraAuthFirebaseOptions);
|
|
13
|
+
authenticateToken(token: string): Promise<FirebaseUser | null>;
|
|
14
|
+
authorizeUser(user: FirebaseUser): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAGnC,KAAK,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;AAE9C,UAAU,yBAA0B,SAAQ,yBAAyB,CAAC,YAAY,CAAC;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;IACtE,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,CAAC,EAAE,yBAAyB;IAiBzC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK9D,aAAa,CAAC,IAAI,EAAE,YAAY;CAWvC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import admin from 'firebase-admin';
|
|
2
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
3
|
+
|
|
4
|
+
// ../../packages/core/dist/chunk-KJ2SW6VA.js
|
|
5
|
+
var RegisteredLogger = {
|
|
6
|
+
LLM: "LLM"};
|
|
7
|
+
var LogLevel = {
|
|
8
|
+
DEBUG: "debug",
|
|
9
|
+
INFO: "info",
|
|
10
|
+
WARN: "warn",
|
|
11
|
+
ERROR: "error"};
|
|
12
|
+
var MastraLogger = class {
|
|
13
|
+
name;
|
|
14
|
+
level;
|
|
15
|
+
transports;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.name = options.name || "Mastra";
|
|
18
|
+
this.level = options.level || LogLevel.ERROR;
|
|
19
|
+
this.transports = new Map(Object.entries(options.transports || {}));
|
|
20
|
+
}
|
|
21
|
+
getTransports() {
|
|
22
|
+
return this.transports;
|
|
23
|
+
}
|
|
24
|
+
trackException(_error) {
|
|
25
|
+
}
|
|
26
|
+
async listLogs(transportId, params) {
|
|
27
|
+
if (!transportId || !this.transports.has(transportId)) {
|
|
28
|
+
return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
|
|
29
|
+
}
|
|
30
|
+
return this.transports.get(transportId).listLogs(params) ?? {
|
|
31
|
+
logs: [],
|
|
32
|
+
total: 0,
|
|
33
|
+
page: params?.page ?? 1,
|
|
34
|
+
perPage: params?.perPage ?? 100,
|
|
35
|
+
hasMore: false
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async listLogsByRunId({
|
|
39
|
+
transportId,
|
|
40
|
+
runId,
|
|
41
|
+
fromDate,
|
|
42
|
+
toDate,
|
|
43
|
+
logLevel,
|
|
44
|
+
filters,
|
|
45
|
+
page,
|
|
46
|
+
perPage
|
|
47
|
+
}) {
|
|
48
|
+
if (!transportId || !this.transports.has(transportId) || !runId) {
|
|
49
|
+
return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
|
|
50
|
+
}
|
|
51
|
+
return this.transports.get(transportId).listLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
|
|
52
|
+
logs: [],
|
|
53
|
+
total: 0,
|
|
54
|
+
page: page ?? 1,
|
|
55
|
+
perPage: perPage ?? 100,
|
|
56
|
+
hasMore: false
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var ConsoleLogger = class extends MastraLogger {
|
|
61
|
+
constructor(options = {}) {
|
|
62
|
+
super(options);
|
|
63
|
+
}
|
|
64
|
+
debug(message, ...args) {
|
|
65
|
+
if (this.level === LogLevel.DEBUG) {
|
|
66
|
+
console.info(message, ...args);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
info(message, ...args) {
|
|
70
|
+
if (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
71
|
+
console.info(message, ...args);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
warn(message, ...args) {
|
|
75
|
+
if (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
76
|
+
console.info(message, ...args);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
error(message, ...args) {
|
|
80
|
+
if (this.level === LogLevel.ERROR || this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {
|
|
81
|
+
console.error(message, ...args);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async listLogs(_transportId, _params) {
|
|
85
|
+
return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };
|
|
86
|
+
}
|
|
87
|
+
async listLogsByRunId(_args) {
|
|
88
|
+
return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// ../../packages/core/dist/chunk-S6URFGCZ.js
|
|
93
|
+
var MastraBase = class {
|
|
94
|
+
component = RegisteredLogger.LLM;
|
|
95
|
+
logger;
|
|
96
|
+
name;
|
|
97
|
+
constructor({ component, name }) {
|
|
98
|
+
this.component = component || RegisteredLogger.LLM;
|
|
99
|
+
this.name = name;
|
|
100
|
+
this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Set the logger for the agent
|
|
104
|
+
* @param logger
|
|
105
|
+
*/
|
|
106
|
+
__setLogger(logger) {
|
|
107
|
+
this.logger = logger;
|
|
108
|
+
if (this.component !== RegisteredLogger.LLM) {
|
|
109
|
+
this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// ../../packages/core/dist/server/index.js
|
|
115
|
+
var MastraAuthProvider = class extends MastraBase {
|
|
116
|
+
constructor(options) {
|
|
117
|
+
super({ component: "AUTH", name: options?.name });
|
|
118
|
+
if (options?.authorizeUser) {
|
|
119
|
+
this.authorizeUser = options.authorizeUser.bind(this);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
registerOptions(opts) {
|
|
123
|
+
if (opts?.authorizeUser) {
|
|
124
|
+
this.authorizeUser = opts.authorizeUser.bind(this);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
var MastraAuthFirebase = class extends MastraAuthProvider {
|
|
129
|
+
serviceAccount;
|
|
130
|
+
databaseId;
|
|
131
|
+
constructor(options) {
|
|
132
|
+
super({ name: options?.name ?? "firebase" });
|
|
133
|
+
this.serviceAccount = options?.serviceAccount ?? process.env.FIREBASE_SERVICE_ACCOUNT;
|
|
134
|
+
this.databaseId = options?.databaseId ?? process.env.FIRESTORE_DATABASE_ID ?? process.env.FIREBASE_DATABASE_ID;
|
|
135
|
+
if (!admin.apps.length) {
|
|
136
|
+
admin.initializeApp({
|
|
137
|
+
credential: this.serviceAccount ? admin.credential.cert(this.serviceAccount) : admin.credential.applicationDefault()
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
this.registerOptions(options);
|
|
141
|
+
}
|
|
142
|
+
async authenticateToken(token) {
|
|
143
|
+
const decoded = await admin.auth().verifyIdToken(token);
|
|
144
|
+
return decoded;
|
|
145
|
+
}
|
|
146
|
+
async authorizeUser(user) {
|
|
147
|
+
const db = this.databaseId ? getFirestore(this.databaseId) : getFirestore();
|
|
148
|
+
const userAccess = await db.doc(`/user_access/${user.uid}`).get();
|
|
149
|
+
const userAccessData = userAccess.data();
|
|
150
|
+
if (!userAccessData) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export { MastraAuthFirebase };
|
|
158
|
+
//# sourceMappingURL=index.js.map
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/core/src/logger/constants.ts","../../../packages/core/src/logger/logger.ts","../../../packages/core/src/logger/default-logger.ts","../../../packages/core/src/base.ts","../../../packages/core/src/server/auth.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Constants and Types (keeping from original implementation)\nexport const RegisteredLogger = {\n AGENT: 'AGENT',\n OBSERVABILITY: 'OBSERVABILITY',\n AUTH: 'AUTH',\n NETWORK: 'NETWORK',\n WORKFLOW: 'WORKFLOW',\n LLM: 'LLM',\n TTS: 'TTS',\n VOICE: 'VOICE',\n VECTOR: 'VECTOR',\n BUNDLER: 'BUNDLER',\n DEPLOYER: 'DEPLOYER',\n MEMORY: 'MEMORY',\n STORAGE: 'STORAGE',\n EMBEDDINGS: 'EMBEDDINGS',\n MCP_SERVER: 'MCP_SERVER',\n SERVER_CACHE: 'SERVER_CACHE',\n} as const;\n\nexport type RegisteredLogger = (typeof RegisteredLogger)[keyof typeof RegisteredLogger];\n\nexport const LogLevel = {\n DEBUG: 'debug',\n INFO: 'info',\n WARN: 'warn',\n ERROR: 'error',\n NONE: 'silent',\n} as const;\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n","import type { MastraError } from '../error';\nimport { LogLevel } from './constants';\nimport type { BaseLogMessage, LoggerTransport } from './transport';\n\nexport interface IMastraLogger {\n debug(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n trackException(error: MastraError): void;\n\n getTransports(): Map<string, LoggerTransport>;\n listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n}\n\nexport abstract class MastraLogger implements IMastraLogger {\n protected name: string;\n protected level: LogLevel;\n protected transports: Map<string, LoggerTransport>;\n\n constructor(\n options: {\n name?: string;\n level?: LogLevel;\n transports?: Record<string, LoggerTransport>;\n } = {},\n ) {\n this.name = options.name || 'Mastra';\n this.level = options.level || LogLevel.ERROR;\n this.transports = new Map(Object.entries(options.transports || {}));\n }\n\n abstract debug(message: string, ...args: any[]): void;\n abstract info(message: string, ...args: any[]): void;\n abstract warn(message: string, ...args: any[]): void;\n abstract error(message: string, ...args: any[]): void;\n\n getTransports() {\n return this.transports;\n }\n\n trackException(_error: MastraError) {}\n\n async listLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId || !this.transports.has(transportId)) {\n return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports.get(transportId)!.listLogs(params) ?? {\n logs: [],\n total: 0,\n page: params?.page ?? 1,\n perPage: params?.perPage ?? 100,\n hasMore: false,\n }\n );\n }\n\n async listLogsByRunId({\n transportId,\n runId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId || !this.transports.has(transportId) || !runId) {\n return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };\n }\n\n return (\n this.transports\n .get(transportId)!\n .listLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {\n logs: [],\n total: 0,\n page: page ?? 1,\n perPage: perPage ?? 100,\n hasMore: false,\n }\n );\n }\n}\n","import { LogLevel } from './constants';\nimport { MastraLogger } from './logger';\nimport type { LoggerTransport } from './transport';\n\nexport const createLogger = (options: {\n name?: string;\n level?: LogLevel;\n transports?: Record<string, LoggerTransport>;\n}) => {\n const logger = new ConsoleLogger(options);\n\n logger.warn(`createLogger is deprecated. Please use \"new ConsoleLogger()\" from \"@mastra/core/logger\" instead.`);\n\n return logger;\n};\n\nexport class ConsoleLogger extends MastraLogger {\n constructor(\n options: {\n name?: string;\n level?: LogLevel;\n } = {},\n ) {\n super(options);\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n if (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n warn(message: string, ...args: any[]): void {\n if (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) {\n console.info(message, ...args);\n }\n }\n\n error(message: string, ...args: any[]): void {\n if (\n this.level === LogLevel.ERROR ||\n this.level === LogLevel.WARN ||\n this.level === LogLevel.INFO ||\n this.level === LogLevel.DEBUG\n ) {\n console.error(message, ...args);\n }\n }\n\n async listLogs(\n _transportId: string,\n _params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };\n }\n\n async listLogsByRunId(_args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };\n }\n}\n","import type { IMastraLogger } from './logger';\nimport { RegisteredLogger } from './logger/constants';\nimport { ConsoleLogger } from './logger/default-logger';\n\nexport class MastraBase {\n component: RegisteredLogger = RegisteredLogger.LLM;\n protected logger: IMastraLogger;\n name?: string;\n\n constructor({ component, name }: { component?: RegisteredLogger; name?: string }) {\n this.component = component || RegisteredLogger.LLM;\n this.name = name;\n this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });\n }\n\n /**\n * Set the logger for the agent\n * @param logger\n */\n __setLogger(logger: IMastraLogger) {\n this.logger = logger;\n\n if (this.component !== RegisteredLogger.LLM) {\n this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);\n }\n }\n}\n\nexport * from './types';\n","import type { HonoRequest } from 'hono';\nimport { MastraBase } from '../base';\n\nexport interface MastraAuthProviderOptions<TUser = unknown> {\n name?: string;\n authorizeUser?: (user: TUser, request: HonoRequest) => Promise<boolean> | boolean;\n}\n\nexport abstract class MastraAuthProvider<TUser = unknown> extends MastraBase {\n constructor(options?: MastraAuthProviderOptions<TUser>) {\n super({ component: 'AUTH', name: options?.name });\n\n if (options?.authorizeUser) {\n this.authorizeUser = options.authorizeUser.bind(this);\n }\n }\n\n /**\n * Authenticate a token and return the payload\n * @param token - The token to authenticate\n * @param request - The request\n * @returns The payload\n */\n abstract authenticateToken(token: string, request: HonoRequest): Promise<TUser | null>;\n\n /**\n * Authorize a user for a path and method\n * @param user - The user to authorize\n * @param request - The request\n * @returns The authorization result\n */\n abstract authorizeUser(user: TUser, request: HonoRequest): Promise<boolean> | boolean;\n\n protected registerOptions(opts?: MastraAuthProviderOptions<TUser>) {\n if (opts?.authorizeUser) {\n this.authorizeUser = opts.authorizeUser.bind(this);\n }\n }\n}\n","import type { MastraAuthProviderOptions } from '@mastra/core/server';\nimport { MastraAuthProvider } from '@mastra/core/server';\n\nimport admin from 'firebase-admin';\nimport { getFirestore } from 'firebase-admin/firestore';\n\ntype FirebaseUser = admin.auth.DecodedIdToken;\n\ninterface MastraAuthFirebaseOptions extends MastraAuthProviderOptions<FirebaseUser> {\n databaseId?: string;\n serviceAccount?: string;\n}\n\nexport class MastraAuthFirebase extends MastraAuthProvider<FirebaseUser> {\n private serviceAccount: string | undefined;\n private databaseId: string | undefined;\n\n constructor(options?: MastraAuthFirebaseOptions) {\n super({ name: options?.name ?? 'firebase' });\n\n this.serviceAccount = options?.serviceAccount ?? process.env.FIREBASE_SERVICE_ACCOUNT;\n this.databaseId = options?.databaseId ?? process.env.FIRESTORE_DATABASE_ID ?? process.env.FIREBASE_DATABASE_ID;\n\n if (!admin.apps.length) {\n admin.initializeApp({\n credential: this.serviceAccount\n ? admin.credential.cert(this.serviceAccount)\n : admin.credential.applicationDefault(),\n });\n }\n\n this.registerOptions(options);\n }\n\n async authenticateToken(token: string): Promise<FirebaseUser | null> {\n const decoded = await admin.auth().verifyIdToken(token);\n return decoded;\n }\n\n async authorizeUser(user: FirebaseUser) {\n const db = this.databaseId ? getFirestore(this.databaseId) : getFirestore();\n const userAccess = await db.doc(`/user_access/${user.uid}`).get();\n const userAccessData = userAccess.data();\n\n if (!userAccessData) {\n return false;\n }\n\n return true;\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mastra/auth-firebase",
|
|
3
|
+
"version": "0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938",
|
|
4
|
+
"description": "Mastra Firebase Auth integration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"./package.json": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
"license": "Apache-2.0",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"firebase-admin": "^13.4.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^20.19.0",
|
|
27
|
+
"eslint": "^9.37.0",
|
|
28
|
+
"tsup": "^8.5.0",
|
|
29
|
+
"typescript": "^5.8.3",
|
|
30
|
+
"vitest": "^3.2.4",
|
|
31
|
+
"@internal/lint": "0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938",
|
|
32
|
+
"@internal/types-builder": "0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938",
|
|
33
|
+
"@mastra/core": "0.0.0-allow-to-pass-a-mastra-url-instance-20251105224938"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"CHANGELOG.md"
|
|
38
|
+
],
|
|
39
|
+
"homepage": "https://mastra.ai",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/mastra-ai/mastra.git",
|
|
43
|
+
"directory": "auth/firebase"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/mastra-ai/mastra/issues"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=22.13.0"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "tsup --silent --config tsup.config.ts",
|
|
53
|
+
"build:watch": "tsup --watch --silent --config tsup.config.ts",
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"lint": "eslint ."
|
|
56
|
+
}
|
|
57
|
+
}
|