@ameshkin/ticket-mate 0.1.21 → 0.1.23
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/package.json +2 -1
- package/public/acceptance-criteria/file-discovery.js +1 -1
- package/public/acceptance-criteria/file-discovery.js.map +1 -1
- package/public/cli/commands/env-debug.js +1 -1
- package/public/cli/commands/env-debug.js.map +1 -1
- package/public/cli/commands/init-repo.js +1 -1
- package/public/cli/commands/init-repo.js.map +1 -1
- package/public/cli/commands/status.js +1 -1
- package/public/cli/commands/status.js.map +1 -1
- package/public/cli/commands/superadmin.d.ts +9 -0
- package/public/cli/commands/superadmin.d.ts.map +1 -0
- package/public/cli/commands/superadmin.js +17 -0
- package/public/cli/commands/superadmin.js.map +1 -0
- package/public/cli/commands/test-workflow.js +1 -1
- package/public/cli/commands/test-workflow.js.map +1 -1
- package/public/cli/commands/webhook-setup.d.ts +8 -0
- package/public/cli/commands/webhook-setup.d.ts.map +1 -0
- package/public/cli/commands/webhook-setup.js +92 -0
- package/public/cli/commands/webhook-setup.js.map +1 -0
- package/public/cli/commands/webhooks-debug.js +1 -1
- package/public/cli/commands/webhooks-debug.js.map +1 -1
- package/public/cli/index.js +5 -0
- package/public/cli/index.js.map +1 -1
- package/public/cli/utils/get-cli-client.d.ts.map +1 -1
- package/public/cli/utils/get-cli-client.js +2 -1
- package/public/cli/utils/get-cli-client.js.map +1 -1
- package/public/config/config-loader.js +2 -2
- package/public/config/config-loader.js.map +1 -1
- package/public/config/config-wizard.js +1 -1
- package/public/config/config-wizard.js.map +1 -1
- package/public/config/config.js +1 -1
- package/public/config/config.js.map +1 -1
- package/public/config/jiraConnection.d.ts +3 -3
- package/public/config/jiraConnection.d.ts.map +1 -1
- package/public/config/jiraConnection.js +47 -41
- package/public/config/jiraConnection.js.map +1 -1
- package/public/config/pricing.d.ts +2 -2
- package/public/config/pricing.d.ts.map +1 -1
- package/public/config/pricing.js +164 -50
- package/public/config/pricing.js.map +1 -1
- package/public/config/project-mapping.js +1 -1
- package/public/config/project-mapping.js.map +1 -1
- package/public/fast-tasks/storage.d.ts +3 -2
- package/public/fast-tasks/storage.d.ts.map +1 -1
- package/public/fast-tasks/storage.js +24 -17
- package/public/fast-tasks/storage.js.map +1 -1
- package/public/jira-management/projects.d.ts.map +1 -1
- package/public/jira-management/projects.js +15 -13
- package/public/jira-management/projects.js.map +1 -1
- package/public/lib/auth/options.d.ts +0 -11
- package/public/lib/auth/options.d.ts.map +1 -1
- package/public/lib/auth/options.js +180 -698
- package/public/lib/auth/options.js.map +1 -1
- package/public/lib/dashboard-widgets.d.ts +2 -2
- package/public/lib/dashboard-widgets.d.ts.map +1 -1
- package/public/lib/dashboard-widgets.js +33 -33
- package/public/lib/dashboard-widgets.js.map +1 -1
- package/public/lib/docs.d.ts.map +1 -1
- package/public/lib/docs.js +5 -2
- package/public/lib/docs.js.map +1 -1
- package/public/lib/encryption.d.ts +2 -1
- package/public/lib/encryption.d.ts.map +1 -1
- package/public/lib/encryption.js +27 -20
- package/public/lib/encryption.js.map +1 -1
- package/public/lib/integrations/teams/auth.d.ts +1 -1
- package/public/lib/integrations/teams/auth.d.ts.map +1 -1
- package/public/lib/integrations/teams/auth.js +15 -15
- package/public/lib/integrations/teams/auth.js.map +1 -1
- package/public/lib/integrations/teams/transformer.d.ts.map +1 -1
- package/public/lib/integrations/teams/transformer.js +3 -1
- package/public/lib/integrations/teams/transformer.js.map +1 -1
- package/public/lib/invite/accept.d.ts +1 -0
- package/public/lib/invite/accept.d.ts.map +1 -1
- package/public/lib/invite/accept.js +22 -33
- package/public/lib/invite/accept.js.map +1 -1
- package/public/lib/invite/service.d.ts.map +1 -1
- package/public/lib/invite/service.js +7 -0
- package/public/lib/invite/service.js.map +1 -1
- package/public/lib/invite/types.d.ts +1 -0
- package/public/lib/invite/types.d.ts.map +1 -1
- package/public/lib/markdown/fallback-handler.js +2 -2
- package/public/lib/markdown/fallback-handler.js.map +1 -1
- package/public/lib/notifications.d.ts +1 -1
- package/public/lib/notifications.d.ts.map +1 -1
- package/public/lib/notifications.js +24 -7
- package/public/lib/notifications.js.map +1 -1
- package/public/lib/prisma.d.ts +5 -22
- package/public/lib/prisma.d.ts.map +1 -1
- package/public/lib/prisma.js +14 -132
- package/public/lib/prisma.js.map +1 -1
- package/public/lib/projects.d.ts +2 -2
- package/public/lib/webhook-events-store.d.ts +5 -6
- package/public/lib/webhook-events-store.d.ts.map +1 -1
- package/public/lib/webhook-events-store.js +63 -18
- package/public/lib/webhook-events-store.js.map +1 -1
- package/public/server/account/account.service.d.ts +217 -0
- package/public/server/account/account.service.d.ts.map +1 -0
- package/public/server/account/account.service.js +307 -0
- package/public/server/account/account.service.js.map +1 -0
- package/public/server/jira/jiraClient.d.ts +2 -1
- package/public/server/jira/jiraClient.d.ts.map +1 -1
- package/public/server/jira/jiraClient.js +4 -3
- package/public/server/jira/jiraClient.js.map +1 -1
- package/public/server/jira/tokens.d.ts.map +1 -1
- package/public/server/jira/tokens.js +0 -9
- package/public/server/jira/tokens.js.map +1 -1
- package/public/types/github.d.ts +18 -0
- package/public/types/github.d.ts.map +1 -0
- package/public/types/github.js +2 -0
- package/public/types/github.js.map +1 -0
- package/public/utils/adf.d.ts.map +1 -1
- package/public/utils/adf.js +2 -1
- package/public/utils/adf.js.map +1 -1
- package/public/utils/parseJiraError.d.ts +39 -0
- package/public/utils/parseJiraError.d.ts.map +1 -0
- package/public/utils/parseJiraError.js +70 -0
- package/public/utils/parseJiraError.js.map +1 -0
- package/public/utils/validation.d.ts.map +1 -1
- package/public/utils/validation.js +20 -20
- package/public/utils/validation.js.map +1 -1
- package/scripts/cli-wrapper.mjs +1 -0
- package/public/server/auth/account-provisioning.d.ts +0 -16
- package/public/server/auth/account-provisioning.d.ts.map +0 -1
- package/public/server/auth/account-provisioning.js +0 -109
- package/public/server/auth/account-provisioning.js.map +0 -1
- package/public/server/auth/atlassian-user-mapping.d.ts +0 -36
- package/public/server/auth/atlassian-user-mapping.d.ts.map +0 -1
- package/public/server/auth/atlassian-user-mapping.js +0 -97
- package/public/server/auth/atlassian-user-mapping.js.map +0 -1
|
@@ -14,19 +14,6 @@ export async function acceptInvite(token) {
|
|
|
14
14
|
// 1. Find and validate invite
|
|
15
15
|
const invite = await prisma.teamInvite.findUnique({
|
|
16
16
|
where: { token },
|
|
17
|
-
include: {
|
|
18
|
-
invitedBy: {
|
|
19
|
-
select: {
|
|
20
|
-
accountUsers: {
|
|
21
|
-
take: 1, // Assuming inviter belongs to the account they are inviting to
|
|
22
|
-
// In a real multi-tenant system, invite should store accountId explicitly.
|
|
23
|
-
// For this system, we rely on inviter's account context (or the only account they have permissions on).
|
|
24
|
-
// Let's assume invitedByUserId has an AccountUser record we can trace.
|
|
25
|
-
include: { account: true },
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
17
|
});
|
|
31
18
|
if (!invite) {
|
|
32
19
|
throw new InviteError("Invalid invite token", "INVALID_TOKEN");
|
|
@@ -38,27 +25,28 @@ export async function acceptInvite(token) {
|
|
|
38
25
|
throw new InviteError("Invite has expired", "INVITE_EXPIRED");
|
|
39
26
|
}
|
|
40
27
|
// Determine target account
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
28
|
+
let targetAccountId = invite.accountId;
|
|
29
|
+
if (!targetAccountId) {
|
|
30
|
+
// Fallback logic for legacy invites without accountId
|
|
31
|
+
const inviterMembership = await prisma.accountUser.findFirst({
|
|
32
|
+
where: {
|
|
33
|
+
userId: invite.invitedByUserId,
|
|
34
|
+
role: { in: ["ADMIN", "OWNER"] },
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!inviterMembership) {
|
|
38
|
+
throw new InviteError("Inviter account context not found", "INVITER_CONTEXT_MISSING");
|
|
39
|
+
}
|
|
40
|
+
// Since we can't be sure which account for legacy, we take the inviter's first admin account
|
|
41
|
+
targetAccountId = inviterMembership.accountId;
|
|
42
|
+
}
|
|
43
|
+
const accountId = targetAccountId;
|
|
44
|
+
// 0. Check seat limits
|
|
45
|
+
const { AccountService } = await import("@/server/account/account.service");
|
|
46
|
+
const canAdd = await AccountService.canAddSeat(accountId);
|
|
47
|
+
if (!canAdd) {
|
|
48
|
+
throw new InviteError("Cannot join team: account has reached seat limit. Please contact the account owner to upgrade.", "LIMIT_REACHED");
|
|
60
49
|
}
|
|
61
|
-
const targetAccountId = inviterMembership.accountId;
|
|
62
50
|
// 2. Find or Create User
|
|
63
51
|
let userId = "";
|
|
64
52
|
let isNewUser = false;
|
|
@@ -156,6 +144,7 @@ export async function getInviteDetails(token) {
|
|
|
156
144
|
role: true,
|
|
157
145
|
expiresAt: true,
|
|
158
146
|
status: true,
|
|
147
|
+
accountId: true,
|
|
159
148
|
invitedBy: {
|
|
160
149
|
select: {
|
|
161
150
|
name: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../../src/lib/invite/accept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAQxC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC9C,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;QAChD,KAAK,EAAE,EAAE,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../../src/lib/invite/accept.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/lib/invite/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/lib/invite/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI5D,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,iBAAiB,EACxB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,cAAc,CAAC,CAgGzB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { prisma } from "@/lib/prisma";
|
|
2
2
|
import { randomBytes } from "crypto";
|
|
3
|
+
import { AccountService } from "@/server/account/account.service";
|
|
3
4
|
export class InviteError extends Error {
|
|
4
5
|
code;
|
|
5
6
|
constructor(message, code) {
|
|
@@ -13,6 +14,11 @@ export class InviteError extends Error {
|
|
|
13
14
|
* Throws InviteError if user exists or pending invite exists.
|
|
14
15
|
*/
|
|
15
16
|
export async function createInvite(input, invitedByUserId) {
|
|
17
|
+
// 0. Check seat limits
|
|
18
|
+
const canAdd = await AccountService.canAddSeat(input.accountId);
|
|
19
|
+
if (!canAdd) {
|
|
20
|
+
throw new InviteError("Cannot invite user: account has reached seat limit", "LIMIT_REACHED");
|
|
21
|
+
}
|
|
16
22
|
// 1. Check if user already exists
|
|
17
23
|
const existingUser = await prisma.user.findUnique({
|
|
18
24
|
where: { email: input.email },
|
|
@@ -46,6 +52,7 @@ export async function createInvite(input, invitedByUserId) {
|
|
|
46
52
|
expiresAt,
|
|
47
53
|
status: "pending",
|
|
48
54
|
invitedByUserId,
|
|
55
|
+
accountId: input.accountId,
|
|
49
56
|
},
|
|
50
57
|
});
|
|
51
58
|
// 6. Send invite email
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/lib/invite/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/lib/invite/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/invite/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/invite/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -24,7 +24,7 @@ export class MarkdownHandler {
|
|
|
24
24
|
const frontmatterRegex = /^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/;
|
|
25
25
|
const match = content.match(frontmatterRegex);
|
|
26
26
|
let body = content;
|
|
27
|
-
|
|
27
|
+
const metas = {};
|
|
28
28
|
if (match) {
|
|
29
29
|
const frontmatter = match[1];
|
|
30
30
|
body = match[2];
|
|
@@ -81,7 +81,7 @@ export class MarkdownHandler {
|
|
|
81
81
|
}
|
|
82
82
|
generateExcerpt(content, length) {
|
|
83
83
|
// Remove markdown syntax for excerpt
|
|
84
|
-
|
|
84
|
+
const text = content
|
|
85
85
|
.replace(/^#+\s+/gm, '') // Remove headers
|
|
86
86
|
.replace(/\[([^\]]+)\]\([^\)]+\)/g, '$1') // Convert links to text
|
|
87
87
|
.replace(/!\[([^\]]*)\]\([^\)]+\)/g, '') // Remove images
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-handler.js","sourceRoot":"","sources":["../../../src/lib/markdown/fallback-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAchC,MAAM,OAAO,eAAe;IAClB,OAAO,CAAyB;IAExC,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG;YACb,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,GAAG;YAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElD,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,yCAAyC,CAAC;QACnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,
|
|
1
|
+
{"version":3,"file":"fallback-handler.js","sourceRoot":"","sources":["../../../src/lib/markdown/fallback-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/lib/notifications.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GACb,WAAW,GACX,eAAe,GACf,eAAe,GACf,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7F,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAChC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtF;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpF;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/lib/notifications.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GACb,WAAW,GACX,eAAe,GACf,eAAe,GACf,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7F,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAChC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtF;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpF;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;;;;;;;;;;;;;;;;;GA2EA"}
|
|
@@ -114,13 +114,20 @@ export async function markAllNotificationsRead(userId) {
|
|
|
114
114
|
*/
|
|
115
115
|
export async function getNotifications(options) {
|
|
116
116
|
const { limit = 50, offset = 0, unreadOnly = false, type, source, userId, } = options;
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
// Build where clause
|
|
118
|
+
const where = {};
|
|
119
|
+
// User filter logic:
|
|
120
|
+
// 1. If userId is provided: Match (userId = provided OR userId = null)
|
|
121
|
+
// 2. If userId is NOT provided: Match (userId = null) ONLY
|
|
122
|
+
if (userId) {
|
|
123
|
+
where.OR = [
|
|
124
|
+
{ userId: userId },
|
|
125
|
+
{ userId: null }
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
where.userId = null;
|
|
120
130
|
}
|
|
121
|
-
const where = {
|
|
122
|
-
userId, // Always filter by userId - prevents cross-user data leaks
|
|
123
|
-
};
|
|
124
131
|
if (unreadOnly) {
|
|
125
132
|
where.read = false;
|
|
126
133
|
}
|
|
@@ -155,7 +162,17 @@ export async function getNotifications(options) {
|
|
|
155
162
|
userId: n.userId, // Include userId in response
|
|
156
163
|
})),
|
|
157
164
|
total,
|
|
158
|
-
unread: await prisma.notification.count({
|
|
165
|
+
unread: await prisma.notification.count({
|
|
166
|
+
where: {
|
|
167
|
+
read: false,
|
|
168
|
+
...(userId ? {
|
|
169
|
+
OR: [
|
|
170
|
+
{ userId: userId },
|
|
171
|
+
{ userId: null }
|
|
172
|
+
]
|
|
173
|
+
} : { userId: null })
|
|
174
|
+
}
|
|
175
|
+
}),
|
|
159
176
|
};
|
|
160
177
|
}
|
|
161
178
|
//# sourceMappingURL=notifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/lib/notifications.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/lib/notifications.ts"],"names":[],"mappings":"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"}
|
package/public/lib/prisma.d.ts
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* IMPORTANT: This module can be imported during build, but Prisma client
|
|
8
|
-
* will only be created when actually used (at runtime in API routes).
|
|
9
|
-
*/
|
|
10
|
-
import type { PrismaClient } from "@prisma/client";
|
|
11
|
-
/**
|
|
12
|
-
* Prisma client instance
|
|
13
|
-
*
|
|
14
|
-
* Accessing this property will lazily create the client on first use.
|
|
15
|
-
* Only use this in runtime code (API routes, server actions).
|
|
16
|
-
*
|
|
17
|
-
* The client is created synchronously on first access, which is safe
|
|
18
|
-
* because API routes only execute at runtime, not during build.
|
|
19
|
-
*
|
|
20
|
-
* @throws Error if DATABASE_URL is missing when first accessed
|
|
21
|
-
*/
|
|
22
|
-
export declare const prisma: PrismaClient;
|
|
1
|
+
import { PrismaClient } from "@prisma/client";
|
|
2
|
+
declare const prisma: PrismaClient<{
|
|
3
|
+
log: ("warn" | "error" | "query")[];
|
|
4
|
+
}, "warn" | "error" | "query", import("@prisma/client/runtime/library").DefaultArgs>;
|
|
5
|
+
export { prisma };
|
|
23
6
|
//# sourceMappingURL=prisma.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/lib/prisma.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../src/lib/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAkB9C,QAAA,MAAM,MAAM;;oFAAoD,CAAC;AAOjE,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/public/lib/prisma.js
CHANGED
|
@@ -1,135 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* IMPORTANT: This module can be imported during build, but Prisma client
|
|
8
|
-
* will only be created when actually used (at runtime in API routes).
|
|
9
|
-
*/
|
|
10
|
-
import { createRequire } from "module";
|
|
11
|
-
// Create a require function for use in ESM context
|
|
12
|
-
const require = createRequire(import.meta.url);
|
|
13
|
-
const globalForPrisma = globalThis;
|
|
14
|
-
let prismaClientInstance = undefined;
|
|
15
|
-
/**
|
|
16
|
-
* Get Prisma client instance (lazy initialization)
|
|
17
|
-
*
|
|
18
|
-
* This function lazily creates the Prisma client only when called.
|
|
19
|
-
* It checks for DATABASE_URL and throws a clear error if missing.
|
|
20
|
-
*
|
|
21
|
-
* @throws Error if DATABASE_URL is missing
|
|
22
|
-
*/
|
|
23
|
-
async function getPrismaClient() {
|
|
24
|
-
// Check for DATABASE_URL at runtime (not build time)
|
|
25
|
-
if (!process.env.DATABASE_URL) {
|
|
26
|
-
throw new Error('DATABASE_URL is not set. ' +
|
|
27
|
-
'This is required for database operations. ' +
|
|
28
|
-
'If you are in Preview/Development without a database, this feature is not available.');
|
|
29
|
-
}
|
|
30
|
-
// Return cached instance if available
|
|
31
|
-
if (prismaClientInstance) {
|
|
32
|
-
return prismaClientInstance;
|
|
33
|
-
}
|
|
34
|
-
// Check global cache
|
|
35
|
-
if (globalForPrisma.prisma) {
|
|
36
|
-
prismaClientInstance = globalForPrisma.prisma;
|
|
37
|
-
return prismaClientInstance;
|
|
38
|
-
}
|
|
39
|
-
// Lazy import PrismaClient using dynamic import
|
|
40
|
-
// This avoids executing PrismaClient constructor during build
|
|
41
|
-
const { PrismaClient: PrismaClientConstructor } = await import("@prisma/client");
|
|
42
|
-
// Log database connection info
|
|
43
|
-
const dbUrl = process.env.DATABASE_URL || '(not set)';
|
|
44
|
-
const dbUrlForLog = dbUrl.includes('@')
|
|
45
|
-
? dbUrl.replace(/:[^:@]+@/, ':****@') // Mask password
|
|
46
|
-
: dbUrl;
|
|
47
|
-
console.log('[ticket-mate] 📦 Database connection:', {
|
|
48
|
-
url: dbUrlForLog,
|
|
49
|
-
host: dbUrl.match(/@([^:]+):/)?.[1] || 'unknown',
|
|
50
|
-
database: dbUrl.match(/\/[^?]+/)?.[0]?.replace(/\//, '') || 'unknown',
|
|
51
|
-
});
|
|
52
|
-
const prisma = new PrismaClientConstructor({
|
|
53
|
-
log: process.env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"],
|
|
54
|
-
});
|
|
55
|
-
// Note: Prisma connects lazily on first query
|
|
56
|
-
// We don't call $connect() here to avoid blocking module load
|
|
57
|
-
// Connection errors will be caught in individual query handlers
|
|
58
|
-
if (process.env.NODE_ENV !== "production") {
|
|
59
|
-
globalForPrisma.prisma = prisma;
|
|
60
|
-
}
|
|
61
|
-
prismaClientInstance = prisma;
|
|
62
|
-
return prisma;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Synchronous getter for Prisma client
|
|
66
|
-
*
|
|
67
|
-
* For compatibility with existing code that expects synchronous access,
|
|
68
|
-
* we use a proxy that lazily initializes on first property access.
|
|
69
|
-
*
|
|
70
|
-
* WARNING: This will throw if DATABASE_URL is missing when first accessed.
|
|
71
|
-
*/
|
|
72
|
-
function createPrismaProxy() {
|
|
73
|
-
return new Proxy({}, {
|
|
74
|
-
get(_target, prop) {
|
|
75
|
-
// Synchronously check if we have an instance
|
|
76
|
-
if (prismaClientInstance) {
|
|
77
|
-
const value = prismaClientInstance[prop];
|
|
78
|
-
if (typeof value === 'function') {
|
|
79
|
-
return value.bind(prismaClientInstance);
|
|
80
|
-
}
|
|
81
|
-
return value;
|
|
82
|
-
}
|
|
83
|
-
// If no instance, we need to create it synchronously
|
|
84
|
-
// This will throw if DATABASE_URL is missing
|
|
85
|
-
if (!process.env.DATABASE_URL) {
|
|
86
|
-
throw new Error('DATABASE_URL is not set. ' +
|
|
87
|
-
'This is required for database operations. ' +
|
|
88
|
-
'If you are in Preview/Development without a database, this feature is not available.');
|
|
89
|
-
}
|
|
90
|
-
// Use createRequire to import PrismaClient synchronously in ESM context
|
|
91
|
-
// This works because @prisma/client exports both ESM and CJS
|
|
92
|
-
// We can't use await import() in a synchronous Proxy get trap
|
|
93
|
-
const { PrismaClient: PrismaClientConstructor } = require("@prisma/client");
|
|
94
|
-
if (globalForPrisma.prisma) {
|
|
95
|
-
prismaClientInstance = globalForPrisma.prisma;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
// Log database connection info
|
|
99
|
-
const dbUrl = process.env.DATABASE_URL || '(not set)';
|
|
100
|
-
const dbUrlForLog = dbUrl.includes('@')
|
|
101
|
-
? dbUrl.replace(/:[^:@]+@/, ':****@') // Mask password
|
|
102
|
-
: dbUrl;
|
|
103
|
-
console.log('[ticket-mate] 📦 Database connection:', {
|
|
104
|
-
url: dbUrlForLog,
|
|
105
|
-
host: dbUrl.match(/@([^:]+):/)?.[1] || 'unknown',
|
|
106
|
-
database: dbUrl.match(/\/[^?]+/)?.[0]?.replace(/\//, '') || 'unknown',
|
|
107
|
-
});
|
|
108
|
-
prismaClientInstance = new PrismaClientConstructor({
|
|
109
|
-
log: process.env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"],
|
|
110
|
-
});
|
|
111
|
-
if (process.env.NODE_ENV !== "production") {
|
|
112
|
-
globalForPrisma.prisma = prismaClientInstance;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const value = prismaClientInstance[prop];
|
|
116
|
-
if (typeof value === 'function') {
|
|
117
|
-
return value.bind(prismaClientInstance);
|
|
118
|
-
}
|
|
119
|
-
return value;
|
|
120
|
-
},
|
|
1
|
+
import { PrismaClient } from "@prisma/client";
|
|
2
|
+
const prismaClientSingleton = () => {
|
|
3
|
+
return new PrismaClient({
|
|
4
|
+
log: process.env.NODE_ENV === "development"
|
|
5
|
+
? ["query", "error", "warn"]
|
|
6
|
+
: ["error"],
|
|
121
7
|
});
|
|
8
|
+
};
|
|
9
|
+
const globalForPrisma = globalThis;
|
|
10
|
+
// Use existing global instance or create a new one
|
|
11
|
+
const prisma = globalForPrisma.prisma ?? prismaClientSingleton();
|
|
12
|
+
// Save instance to global in dev to survive hot reloads
|
|
13
|
+
if (process.env.NODE_ENV !== "production") {
|
|
14
|
+
globalForPrisma.prisma = prisma;
|
|
122
15
|
}
|
|
123
|
-
|
|
124
|
-
* Prisma client instance
|
|
125
|
-
*
|
|
126
|
-
* Accessing this property will lazily create the client on first use.
|
|
127
|
-
* Only use this in runtime code (API routes, server actions).
|
|
128
|
-
*
|
|
129
|
-
* The client is created synchronously on first access, which is safe
|
|
130
|
-
* because API routes only execute at runtime, not during build.
|
|
131
|
-
*
|
|
132
|
-
* @throws Error if DATABASE_URL is missing when first accessed
|
|
133
|
-
*/
|
|
134
|
-
export const prisma = createPrismaProxy();
|
|
16
|
+
export { prisma };
|
|
135
17
|
//# sourceMappingURL=prisma.js.map
|
package/public/lib/prisma.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/lib/prisma.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prisma.js","sourceRoot":"","sources":["../../src/lib/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,OAAO,IAAI,YAAY,CAAC;QACtB,GAAG,EACD,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;YACpC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;YAC5B,CAAC,CAAC,CAAC,OAAO,CAAC;KAChB,CAAC,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,eAAe,GAAG,UAEvB,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;AAEjE,wDAAwD;AACxD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/public/lib/projects.d.ts
CHANGED
|
@@ -15,10 +15,10 @@ export interface ProjectWithRepo {
|
|
|
15
15
|
*/
|
|
16
16
|
export declare function getProjectWithRepoByJiraKey(jiraProjectKey: string): Promise<{
|
|
17
17
|
id: string;
|
|
18
|
-
|
|
18
|
+
repoPath: string;
|
|
19
19
|
displayName: string;
|
|
20
|
+
slug: string;
|
|
20
21
|
jiraProjectKey: string;
|
|
21
|
-
repoPath: string;
|
|
22
22
|
} | null>;
|
|
23
23
|
/**
|
|
24
24
|
* Update project repository path
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared webhook events store
|
|
3
|
-
* Used by both /api/webhooks/jira and /api/webhooks/events
|
|
4
|
-
*/
|
|
5
1
|
export interface WebhookEvent {
|
|
6
2
|
id: string;
|
|
7
3
|
timestamp: string;
|
|
@@ -15,9 +11,12 @@ export interface WebhookEvent {
|
|
|
15
11
|
direction: "INCOMING" | "OUTGOING";
|
|
16
12
|
rawPayload?: any;
|
|
17
13
|
changelog?: any;
|
|
14
|
+
result?: string;
|
|
15
|
+
errorMessage?: string;
|
|
16
|
+
workflowId?: string;
|
|
18
17
|
}
|
|
19
|
-
export declare function addWebhookEvent(event: Partial<WebhookEvent>): WebhookEvent
|
|
20
|
-
export declare function getWebhookEvents(): WebhookEvent[]
|
|
18
|
+
export declare function addWebhookEvent(event: Partial<WebhookEvent>): Promise<WebhookEvent>;
|
|
19
|
+
export declare function getWebhookEvents(): Promise<WebhookEvent[]>;
|
|
21
20
|
export declare function clearWebhookEvents(): void;
|
|
22
21
|
export declare function getWebhookEventsCount(): number;
|
|
23
22
|
//# sourceMappingURL=webhook-events-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-events-store.d.ts","sourceRoot":"","sources":["../../src/lib/webhook-events-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webhook-events-store.d.ts","sourceRoot":"","sources":["../../src/lib/webhook-events-store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAgDzF;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAwBhE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
|