@mars-stack/core 2.0.0 → 2.0.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.
- package/dist/chunk-EPYVCW3O.js +10 -0
- package/dist/{chunk-HOSMMQMA.js → chunk-LREY72TY.js} +7 -2
- package/dist/email/index.d.ts +6 -0
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/test-utils/mock-prisma.d.ts +42 -42
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +1 -0
- package/package.json +9 -5
|
@@ -62,6 +62,9 @@ function extractUrls(text) {
|
|
|
62
62
|
const urlPattern = /https?:\/\/[^\s<>"')\]]+/g;
|
|
63
63
|
return [...new Set(text.match(urlPattern) ?? [])];
|
|
64
64
|
}
|
|
65
|
+
function formatOsc8Link(url, label) {
|
|
66
|
+
return `\x1B]8;;${url}\x07${label}\x1B]8;;\x07`;
|
|
67
|
+
}
|
|
65
68
|
function formatConsoleEmail(params) {
|
|
66
69
|
const body = params.text ?? params.html.replace(/<[^>]*>/g, " ").replace(/\s+/g, " ").trim();
|
|
67
70
|
const urls = extractUrls(params.text ?? params.html);
|
|
@@ -76,7 +79,9 @@ function formatConsoleEmail(params) {
|
|
|
76
79
|
lines.push("");
|
|
77
80
|
lines.push(urls.length === 1 ? " Action link:" : " Links:");
|
|
78
81
|
for (const url of urls) {
|
|
79
|
-
lines.push(`
|
|
82
|
+
lines.push(` ${formatOsc8Link(url, "\u2192 Click to open")}`);
|
|
83
|
+
lines.push(" If your terminal truncated this link, copy the full URL below:");
|
|
84
|
+
lines.push(url);
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
const preview = body.length > 200 ? body.slice(0, 200) + "..." : body;
|
|
@@ -106,4 +111,4 @@ function createEmailService(config) {
|
|
|
106
111
|
return { sendEmail };
|
|
107
112
|
}
|
|
108
113
|
|
|
109
|
-
export { createEmailService, formatConsoleEmail };
|
|
114
|
+
export { createEmailService, formatConsoleEmail, formatOsc8Link };
|
package/dist/email/index.d.ts
CHANGED
|
@@ -7,6 +7,12 @@ interface EmailServiceConfig {
|
|
|
7
7
|
provider: string;
|
|
8
8
|
appName: string;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Wraps a URL in an OSC 8 ANSI hyperlink escape sequence so terminals that
|
|
12
|
+
* support the standard render a single clickable link regardless of line length.
|
|
13
|
+
* Terminals without OSC 8 support will show only the label text.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatOsc8Link(url: string, label: string): string;
|
|
10
16
|
export declare function formatConsoleEmail(params: SendEmailParams): string;
|
|
11
17
|
/**
|
|
12
18
|
* Creates an email service backed by the configured provider (SendGrid, Resend, or console).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGlE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGlE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA4BlE;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB;wBAI1B,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;EAKjE"}
|
package/dist/email/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createEmailService, formatConsoleEmail } from '../chunk-
|
|
1
|
+
export { createEmailService, formatConsoleEmail, formatOsc8Link } from '../chunk-LREY72TY.js';
|
|
2
2
|
import '../chunk-CTYAVMOF.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export type { SessionPayload } from './auth/session';
|
|
|
3
3
|
export type { SendEmailParams, EmailServiceError } from './email/types';
|
|
4
4
|
export type { SecurityEventType, SecurityEvent, } from './logger/index';
|
|
5
5
|
export { configureMars } from './configure-mars';
|
|
6
|
+
export { getVersion } from './version';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EACV,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EACV,iBAAiB,EACjB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { getVersion } from './chunk-EPYVCW3O.js';
|
|
1
2
|
import { buildCredentialTag } from './chunk-GVLH2GQP.js';
|
|
2
3
|
import { createSessionManager } from './chunk-4LS3QDD5.js';
|
|
3
4
|
import { createCSRFProtection } from './chunk-PZE3JGXO.js';
|
|
@@ -5,7 +6,7 @@ import { createAuthMiddleware } from './chunk-QWMN5UJC.js';
|
|
|
5
6
|
import './chunk-ZA46T6GX.js';
|
|
6
7
|
import { constantTimeEqual } from './chunk-MXQ66RUN.js';
|
|
7
8
|
import { createLogger } from './chunk-ROQV54MU.js';
|
|
8
|
-
import { createEmailService } from './chunk-
|
|
9
|
+
import { createEmailService } from './chunk-LREY72TY.js';
|
|
9
10
|
import './chunk-CTYAVMOF.js';
|
|
10
11
|
import { createEnvValidator } from './chunk-Z5BEKPJI.js';
|
|
11
12
|
import { createApiErrorHandler } from './chunk-U4NZQ366.js';
|
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
export declare const mockPrisma: {
|
|
2
2
|
user: {
|
|
3
|
-
findUnique: import("vitest").Mock<(
|
|
4
|
-
findFirst: import("vitest").Mock<(
|
|
5
|
-
findMany: import("vitest").Mock<(
|
|
6
|
-
create: import("vitest").Mock<(
|
|
7
|
-
update: import("vitest").Mock<(
|
|
8
|
-
delete: import("vitest").Mock<(
|
|
9
|
-
deleteMany: import("vitest").Mock<(
|
|
10
|
-
count: import("vitest").Mock<(
|
|
11
|
-
aggregate: import("vitest").Mock<(
|
|
12
|
-
upsert: import("vitest").Mock<(
|
|
3
|
+
findUnique: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
4
|
+
findFirst: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
5
|
+
findMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
6
|
+
create: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
7
|
+
update: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
8
|
+
delete: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
9
|
+
deleteMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
10
|
+
count: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
11
|
+
aggregate: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
12
|
+
upsert: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
13
13
|
};
|
|
14
14
|
account: {
|
|
15
|
-
findUnique: import("vitest").Mock<(
|
|
16
|
-
findFirst: import("vitest").Mock<(
|
|
17
|
-
findMany: import("vitest").Mock<(
|
|
18
|
-
create: import("vitest").Mock<(
|
|
19
|
-
update: import("vitest").Mock<(
|
|
20
|
-
delete: import("vitest").Mock<(
|
|
21
|
-
deleteMany: import("vitest").Mock<(
|
|
22
|
-
count: import("vitest").Mock<(
|
|
23
|
-
aggregate: import("vitest").Mock<(
|
|
24
|
-
upsert: import("vitest").Mock<(
|
|
15
|
+
findUnique: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
16
|
+
findFirst: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
17
|
+
findMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
18
|
+
create: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
19
|
+
update: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
20
|
+
delete: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
21
|
+
deleteMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
22
|
+
count: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
23
|
+
aggregate: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
24
|
+
upsert: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
25
25
|
};
|
|
26
26
|
session: {
|
|
27
|
-
findUnique: import("vitest").Mock<(
|
|
28
|
-
findFirst: import("vitest").Mock<(
|
|
29
|
-
findMany: import("vitest").Mock<(
|
|
30
|
-
create: import("vitest").Mock<(
|
|
31
|
-
update: import("vitest").Mock<(
|
|
32
|
-
delete: import("vitest").Mock<(
|
|
33
|
-
deleteMany: import("vitest").Mock<(
|
|
34
|
-
count: import("vitest").Mock<(
|
|
35
|
-
aggregate: import("vitest").Mock<(
|
|
36
|
-
upsert: import("vitest").Mock<(
|
|
27
|
+
findUnique: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
28
|
+
findFirst: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
29
|
+
findMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
30
|
+
create: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
31
|
+
update: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
32
|
+
delete: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
33
|
+
deleteMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
34
|
+
count: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
35
|
+
aggregate: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
36
|
+
upsert: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
37
37
|
};
|
|
38
38
|
verificationToken: {
|
|
39
|
-
findUnique: import("vitest").Mock<(
|
|
40
|
-
findFirst: import("vitest").Mock<(
|
|
41
|
-
findMany: import("vitest").Mock<(
|
|
42
|
-
create: import("vitest").Mock<(
|
|
43
|
-
update: import("vitest").Mock<(
|
|
44
|
-
delete: import("vitest").Mock<(
|
|
45
|
-
deleteMany: import("vitest").Mock<(
|
|
46
|
-
count: import("vitest").Mock<(
|
|
47
|
-
aggregate: import("vitest").Mock<(
|
|
48
|
-
upsert: import("vitest").Mock<(
|
|
39
|
+
findUnique: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
40
|
+
findFirst: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
41
|
+
findMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
42
|
+
create: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
43
|
+
update: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
44
|
+
delete: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
45
|
+
deleteMany: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
46
|
+
count: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
47
|
+
aggregate: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
48
|
+
upsert: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
49
49
|
};
|
|
50
50
|
$transaction: import("vitest").Mock<(fn: (tx: unknown) => unknown) => unknown>;
|
|
51
|
-
$connect: import("vitest").Mock<(
|
|
52
|
-
$disconnect: import("vitest").Mock<(
|
|
51
|
+
$connect: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
52
|
+
$disconnect: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
53
53
|
};
|
|
54
54
|
export declare function resetMockPrisma(): void;
|
|
55
55
|
//# sourceMappingURL=mock-prisma.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AASA,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getVersion } from './chunk-EPYVCW3O.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mars-stack/core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -115,6 +115,10 @@
|
|
|
115
115
|
"./test-utils": {
|
|
116
116
|
"types": "./dist/test-utils/index.d.ts",
|
|
117
117
|
"import": "./dist/test-utils/index.js"
|
|
118
|
+
},
|
|
119
|
+
"./version": {
|
|
120
|
+
"types": "./dist/version.d.ts",
|
|
121
|
+
"import": "./dist/version.js"
|
|
118
122
|
}
|
|
119
123
|
},
|
|
120
124
|
"publishConfig": {
|
|
@@ -178,7 +182,7 @@
|
|
|
178
182
|
}
|
|
179
183
|
},
|
|
180
184
|
"dependencies": {
|
|
181
|
-
"bcryptjs": "^
|
|
185
|
+
"bcryptjs": "^3.0.3",
|
|
182
186
|
"jose": "^6.2.1",
|
|
183
187
|
"pino": "^9.6.0",
|
|
184
188
|
"zod": "^4.3.6"
|
|
@@ -187,19 +191,19 @@
|
|
|
187
191
|
"@aws-sdk/client-s3": "^3.1007.0",
|
|
188
192
|
"@aws-sdk/s3-request-presigner": "^3.1007.0",
|
|
189
193
|
"@testing-library/react": "^16.0.0",
|
|
190
|
-
"@types/bcryptjs": "^
|
|
194
|
+
"@types/bcryptjs": "^3.0.0",
|
|
191
195
|
"@types/fs-extra": "^11.0.4",
|
|
192
196
|
"@types/react": "^19.0.0",
|
|
193
197
|
"@upstash/ratelimit": "^2.0.0",
|
|
194
198
|
"@upstash/redis": "^1.36.4",
|
|
195
199
|
"@vercel/blob": "^2.3.1",
|
|
196
200
|
"fs-extra": "^11.3.4",
|
|
197
|
-
"next": "^16.
|
|
201
|
+
"next": "^16.1.6",
|
|
198
202
|
"react": "^19.0.0",
|
|
199
203
|
"resend": "^6.9.3",
|
|
200
204
|
"stripe": "^17.0.0",
|
|
201
205
|
"tsup": "^8.0.0",
|
|
202
206
|
"typescript": "^5.7.0",
|
|
203
|
-
"vitest": "^
|
|
207
|
+
"vitest": "^4.1.0"
|
|
204
208
|
}
|
|
205
209
|
}
|