@intelligo-dev/auth 1.0.0-beta.1 → 1.0.0-beta.14

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 (81) hide show
  1. package/NOTICE +6 -0
  2. package/README.md +59 -0
  3. package/dist/client.js +6 -16
  4. package/dist/client.js.map +1 -1
  5. package/dist/edge.js +22 -28
  6. package/dist/edge.js.map +1 -1
  7. package/dist/guard-error.js +23 -0
  8. package/dist/guard-error.js.map +1 -0
  9. package/dist/helpers.js +77 -97
  10. package/dist/helpers.js.map +1 -1
  11. package/dist/impersonation.js +46 -18
  12. package/dist/impersonation.js.map +1 -1
  13. package/dist/index.js +21 -27
  14. package/dist/index.js.map +1 -1
  15. package/dist/invitation-links.js +13 -0
  16. package/dist/invitation-links.js.map +1 -0
  17. package/dist/onboarding/errors.js +4 -14
  18. package/dist/onboarding/errors.js.map +1 -1
  19. package/dist/onboarding/schemas.js +3 -15
  20. package/dist/onboarding/schemas.js.map +1 -1
  21. package/dist/onboarding/service.js +14 -68
  22. package/dist/onboarding/service.js.map +1 -1
  23. package/dist/org-api.js +10 -67
  24. package/dist/org-api.js.map +1 -1
  25. package/dist/profile/errors.js +4 -14
  26. package/dist/profile/errors.js.map +1 -1
  27. package/dist/profile/schemas.js +9 -10
  28. package/dist/profile/schemas.js.map +1 -1
  29. package/dist/profile/service.js +33 -53
  30. package/dist/profile/service.js.map +1 -1
  31. package/dist/roles.js +28 -5
  32. package/dist/roles.js.map +1 -1
  33. package/dist/server.js +80 -98
  34. package/dist/server.js.map +1 -1
  35. package/dist/team/errors.js +4 -13
  36. package/dist/team/errors.js.map +1 -1
  37. package/dist/team/schemas.js +5 -18
  38. package/dist/team/schemas.js.map +1 -1
  39. package/dist/team/service.js +80 -157
  40. package/dist/team/service.js.map +1 -1
  41. package/dist/trusted-origins.js +25 -0
  42. package/dist/trusted-origins.js.map +1 -0
  43. package/dist/workspace/errors.js +4 -14
  44. package/dist/workspace/errors.js.map +1 -1
  45. package/dist/workspace/schemas.js +2 -18
  46. package/dist/workspace/schemas.js.map +1 -1
  47. package/dist/workspace/service.js +31 -91
  48. package/dist/workspace/service.js.map +1 -1
  49. package/dist/workspace-bootstrap.js +33 -0
  50. package/dist/workspace-bootstrap.js.map +1 -0
  51. package/dist/workspace-init.js +46 -51
  52. package/dist/workspace-init.js.map +1 -1
  53. package/dist/workspace-slug.js +29 -0
  54. package/dist/workspace-slug.js.map +1 -0
  55. package/package.json +36 -14
  56. package/src/client.ts +6 -16
  57. package/src/edge.ts +22 -28
  58. package/src/guard-error.ts +36 -0
  59. package/src/helpers.ts +99 -114
  60. package/src/impersonation.ts +52 -17
  61. package/src/index.ts +15 -10
  62. package/src/invitation-links.ts +15 -0
  63. package/src/onboarding/errors.ts +5 -17
  64. package/src/onboarding/schemas.ts +3 -15
  65. package/src/onboarding/service.ts +11 -65
  66. package/src/org-api.ts +9 -66
  67. package/src/profile/errors.ts +5 -17
  68. package/src/profile/schemas.ts +10 -10
  69. package/src/profile/service.ts +39 -50
  70. package/src/roles.ts +36 -5
  71. package/src/server.ts +86 -104
  72. package/src/team/errors.ts +4 -13
  73. package/src/team/schemas.ts +5 -18
  74. package/src/team/service.ts +100 -174
  75. package/src/trusted-origins.ts +26 -0
  76. package/src/workspace/errors.ts +4 -14
  77. package/src/workspace/schemas.ts +2 -18
  78. package/src/workspace/service.ts +40 -92
  79. package/src/workspace-bootstrap.ts +57 -0
  80. package/src/workspace-init.ts +55 -56
  81. package/src/workspace-slug.ts +32 -0
@@ -1,88 +1,22 @@
1
1
  /**
2
- * Team management service — the durable business rules behind
3
- * workspace membership and invitations, extracted from
4
- * the product application’s team actions (first slice of the page/registry
5
- * migration, section C1).
2
+ * Workspace membership and invitations. Each method authorizes itself and
3
+ * throws `TeamServiceError`; billing, email and notifications arrive as ports
4
+ * bound at the composition root.
6
5
  *
7
- * Mirrors `createExecutions(ports)` (packages/executions/src/lifecycle.ts):
8
- * a factory over optional ports, so this package's allowlisted
9
- * dependency (`@intelligo-dev/core` only — see
10
- * tests/architecture/dependency-direction.test.ts) never grows to
11
- * include billing, email, or notifications. A consumer binds those in
12
- * at its composition root:
13
- *
14
- * const teamService = createTeamService({
15
- * checkMemberLimit: checkTeamMemberLimit, // @intelligo-dev/billing
16
- * sendInvitationEmail: ..., // see note below
17
- * notifyMemberJoined: triggerTeamMemberJoinedNotification, // @intelligo-dev/core/notifications
18
- * });
19
- *
20
- * Authorization (`requireAuth`/`requireWorkspace`/`requireRole`) lives
21
- * INSIDE each method, not at the transport. Every recognized failure
22
- * throws `TeamServiceError` with a stable `code` — no
23
- * revalidatePath/Sentry/next-intl/toast here; that shaping is the
24
- * transport's job (a Server Action, a route handler).
25
- *
26
- * ---------------------------------------------------------------------
27
- * Invitation-email duplication (investigated for this extraction)
28
- * ---------------------------------------------------------------------
29
- * `packages/auth/src/server.ts` configures the Better-Auth organization
30
- * plugin's own `sendInvitationEmail` hook (EMAIL-06). Reading the
31
- * installed org plugin (`better-auth@1.6.30`,
32
- * `plugins/organization/routes/crud-invites.mjs`): every successful
33
- * `/organization/invite-member` call — both the "new invitation" path
34
- * and the "resend" path — unconditionally does
35
- * `if (ctx.context.orgOptions.sendInvitationEmail) await
36
- * runInBackgroundOrAwait(orgOptions.sendInvitationEmail(...))` once the
37
- * invitation row is created. Because `server.ts` always sets that
38
- * option, the hook fires on every `inviteMember()` call this service
39
- * makes — there is no code path where it does not.
40
- *
41
- * ignite's current `actions/team.ts` ALSO calls
42
- * `@intelligo-dev/core/email`'s `sendInvitationEmail` directly after the
43
- * same `/organization/invite-member` call. That means **two** emails
44
- * go out per invitation today. This is a live duplication bug, not a
45
- * hypothetical.
46
- *
47
- * Decision: `inviteMember` below does NOT call `ports.sendInvitationEmail`
48
- * by default — the org-plugin hook already covers it, so exactly one
49
- * email fires per invitation as long as `server.ts`'s hook stays wired.
50
- * The port is kept (and tested) for a consumer that disables or
51
- * replaces that hook (e.g. a fork of `server.ts`, or a future
52
- * environment where the org plugin's hook is intentionally left unset)
53
- * — pass `sendInvitationEmail` and this service will use it. Bumping
54
- * both at once will resume the duplication; do not turn the port back
55
- * on without also removing the hook in `server.ts`.
56
- *
57
- * ---------------------------------------------------------------------
58
- * Active-organization resolution (found the same way, via the
59
- * integration test's real DB)
60
- * ---------------------------------------------------------------------
61
- * Better-Auth's organization plugin resolves "the caller's active
62
- * workspace" from `session.activeOrganizationId` when a call omits an
63
- * explicit `organizationId`. That column does not exist on this repo's
64
- * Drizzle `sessions` schema (`packages/core/src/db/schema/auth.ts`), so
65
- * every bare `auth.api.getFullOrganization({ headers })` call —
66
- * ignite's original pattern in `listMembers`, `listInvitations`, and
67
- * the sole-owner check in `leaveWorkspace` — resolves to *no*
68
- * organization, regardless of what the caller most recently activated.
69
- * `requireWorkspace()` (packages/auth/src/helpers.ts) never hits this:
70
- * it has its own fallback that lists the caller's organizations and
71
- * fetches the first one by explicit id. This service does the same —
72
- * every `getFullOrganization` call below passes an explicit
73
- * `organizationId` sourced from `requireWorkspace`/`requireRole`'s
74
- * resolved `workspace.id` (or, in `acceptInvitation`, the invitation's
75
- * own `organizationId`) rather than relying on session state. This is
76
- * a behavior fix, not a stylistic change: without it, a fresh
77
- * single-workspace user's own membership list comes back empty.
6
+ * Every `getFullOrganization` call passes an explicit `organizationId`: the
7
+ * session's active organization is unset for a fresh user or one removed
8
+ * from their active workspace, and a bare call then resolves to nothing.
78
9
  */
79
- import { headers } from "next/headers";
10
+ import { db } from "@intelligo-dev/core/db";
11
+ import { member } from "@intelligo-dev/core/db/schema";
12
+ import { getRequestHeaders } from "@intelligo-dev/core/request-context";
13
+ import { eq, sql } from "drizzle-orm";
80
14
  import { createLogger } from "@intelligo-dev/core/logger";
81
- import { auth } from "../server";
82
- import { requireAuth, requireRole, requireWorkspace } from "../helpers";
83
- import { orgApi } from "../org-api";
84
- import { inviteMemberSchema, updateRoleSchema } from "./schemas";
85
- import { TeamServiceError, isTeamServiceError } from "./errors";
15
+ import { auth } from "../server.js";
16
+ import { requireAuth, requireRole, requireWorkspace } from "../helpers.js";
17
+ import { orgApi } from "../org-api.js";
18
+ import { inviteMemberSchema, updateRoleSchema } from "./schemas.js";
19
+ import { TeamServiceError, isTeamServiceError } from "./errors.js";
86
20
  const log = createLogger("TeamService");
87
21
  function errorMessage(error) {
88
22
  return error instanceof Error ? error.message : String(error);
@@ -140,58 +74,60 @@ export function createTeamService(ports = {}) {
140
74
  throw new TeamServiceError("provider_error", `Better-Auth organization API call failed (${context})`, { cause: error });
141
75
  }
142
76
  }
143
- /**
144
- * List members of the caller's active workspace.
145
- */
77
+ /** Members of the caller's active workspace. */
146
78
  async function listMembers() {
147
79
  const { workspace } = await callRequireWorkspace();
148
- const hdrs = await headers();
80
+ const hdrs = await getRequestHeaders();
149
81
  const org = await callOrgApi("getFullOrganization", () => auth.api.getFullOrganization({
150
82
  headers: hdrs,
151
83
  query: { organizationId: workspace.id },
152
84
  }));
153
85
  return (org?.members ?? []);
154
86
  }
155
- /**
156
- * List pending invitations for the caller's active workspace.
157
- */
87
+ /** Pending invitations for the caller's active workspace. */
158
88
  async function listInvitations() {
159
89
  const { workspace } = await callRequireWorkspace();
160
- const hdrs = await headers();
90
+ const hdrs = await getRequestHeaders();
161
91
  const org = await callOrgApi("getFullOrganization", () => auth.api.getFullOrganization({
162
92
  headers: hdrs,
163
93
  query: { organizationId: workspace.id },
164
94
  }));
165
- return (org?.invitations ?? []);
95
+ // Better-Auth keeps accepted, rejected and canceled invitations on
96
+ // the organization; only a pending one can still be acted on.
97
+ return (org?.invitations ?? []).filter((invitation) => invitation.status === "pending");
98
+ }
99
+ async function enforceMemberLimit(workspaceId, seats) {
100
+ if (!ports.checkMemberLimit)
101
+ return;
102
+ const limitCheck = await ports.checkMemberLimit(workspaceId, seats);
103
+ if (!limitCheck.allowed) {
104
+ throw new TeamServiceError("member_limit_reached", `Your plan allows up to ${limitCheck.limit} team member${limitCheck.limit === 1 ? "" : "s"}. Upgrade to add more members.`, { meta: { limit: limitCheck.limit } });
105
+ }
166
106
  }
167
107
  /**
168
- * Invite a member by email. Owner/admin only (TEAM-01).
169
- *
170
- * The member-limit port, when bound, gates the invite before it is
171
- * created. Exactly one invitation email is sent — see the module doc
172
- * comment on the email-duplication finding.
108
+ * Invite a member by email. Owner/admin only. The member-limit port,
109
+ * when bound, gates the invite before it is created, counting pending
110
+ * invitations as seats: otherwise a workspace one seat short of its
111
+ * limit could send any number of invitations and have them all accepted.
173
112
  */
174
113
  async function inviteMember(input) {
175
114
  const { workspace, user } = await callRequireRole(["owner", "admin"]);
176
115
  const validated = parseInput(inviteMemberSchema, input);
177
- const hdrs = await headers();
178
- // Check team member limit (FLAG-05), via port only.
116
+ const hdrs = await getRequestHeaders();
117
+ // Member limit, via port only.
179
118
  if (ports.checkMemberLimit) {
180
119
  const org = await callOrgApi("getFullOrganization", () => auth.api.getFullOrganization({
181
120
  headers: hdrs,
182
121
  query: { organizationId: workspace.id },
183
122
  }));
184
- const currentMemberCount = org?.members?.length ?? 0;
185
- const limitCheck = await ports.checkMemberLimit(workspace.id, currentMemberCount);
186
- if (!limitCheck.allowed) {
187
- throw new TeamServiceError("member_limit_reached", `Your plan allows up to ${limitCheck.limit} team member${limitCheck.limit === 1 ? "" : "s"}. Upgrade to add more members.`, { meta: { limit: limitCheck.limit } });
188
- }
123
+ const now = Date.now();
124
+ const pendingInvitations = (org?.invitations ?? []).filter((invitation) => invitation.status === "pending" &&
125
+ new Date(invitation.expiresAt).getTime() > now).length;
126
+ await enforceMemberLimit(workspace.id, (org?.members?.length ?? 0) + pendingInvitations);
189
127
  }
190
128
  // Better-Auth's own duplicate-pending-invite guard
191
129
  // (USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION) runs inside this
192
- // call and surfaces as a provider_error if tripped — ignite's
193
- // action never added a second check on top of it, so neither does
194
- // this service.
130
+ // call and surfaces as a provider_error.
195
131
  const result = await callOrgApi("invite-member", () => orgApi["/organization/invite-member"]({
196
132
  headers: hdrs,
197
133
  body: {
@@ -217,20 +153,17 @@ export function createTeamService(ports = {}) {
217
153
  return result;
218
154
  }
219
155
  /**
220
- * Accept invitation (TEAM-03).
156
+ * Accept an invitation.
221
157
  *
222
- * Defence-in-depth against stolen-invitationId attacks: we (a)
223
- * require the caller to be authenticated, (b) verify the
224
- * invitationId is in the caller's pending list before forwarding it
225
- * to Better-Auth, and (c) confirm the user is actually a member of
226
- * the resulting org after the call. Better-Auth's accept-invitation
227
- * endpoint already checks the email match, but layering these guards
228
- * means a future upstream regression can't silently grant
229
- * cross-tenant access.
158
+ * Defence in depth against a stolen invitation id: the caller must be
159
+ * authenticated, the id must be in the caller's pending list, and the
160
+ * caller must be a member of the organization afterwards. Better-Auth
161
+ * already checks the email match; these guards keep a regression there
162
+ * from granting cross-tenant access.
230
163
  */
231
164
  async function acceptInvitation(invitationId) {
232
165
  const { user } = await callRequireAuth();
233
- const hdrs = await headers();
166
+ const hdrs = await getRequestHeaders();
234
167
  if (typeof invitationId !== "string" || invitationId.length === 0) {
235
168
  throw new TeamServiceError("invalid_input", "Invalid invitation id");
236
169
  }
@@ -241,6 +174,16 @@ export function createTeamService(ports = {}) {
241
174
  log.warn("acceptInvitation rejected — invitation not in caller's pending list", { userId: user.id, invitationId });
242
175
  throw new TeamServiceError("invitation_not_found", "Invitation not found");
243
176
  }
177
+ // The plan may have shrunk, or members joined another way, since the
178
+ // invitation was sent. Counted from the table: the invitee cannot
179
+ // read an organization it is not yet a member of.
180
+ if (ports.checkMemberLimit) {
181
+ const [row] = await db
182
+ .select({ n: sql `count(*)` })
183
+ .from(member)
184
+ .where(eq(member.organizationId, matched.organizationId));
185
+ await enforceMemberLimit(matched.organizationId, Number(row?.n ?? 0));
186
+ }
244
187
  await callOrgApi("accept-invitation", () => orgApi["/organization/accept-invitation"]({
245
188
  headers: hdrs,
246
189
  body: { invitationId },
@@ -259,19 +202,9 @@ export function createTeamService(ports = {}) {
259
202
  });
260
203
  throw new TeamServiceError("accept_verification_failed", "Failed to accept invitation");
261
204
  }
262
- // Notify the workspace owner (fire-and-forget, non-blocking —
263
- // invitation acceptance has already succeeded above).
264
- //
265
- // Reuses `targetOrg` from the post-check above (scoped to
266
- // `matched.organizationId`, the org the caller just joined) rather
267
- // than re-fetching "the active org" the way ignite's original
268
- // action did: Better-Auth's org plugin needs a
269
- // `sessions.activeOrganizationId` column to resolve an org from
270
- // headers alone, and this repo's Drizzle schema for `sessions`
271
- // does not define one, so a bare `getFullOrganization({ headers })`
272
- // call resolves to no organization at all — this notify lookup
273
- // would silently no-op every time. `targetOrg` sidesteps that by
274
- // asking for the org we already know the answer for.
205
+ // Notify the owner, fire-and-forget: acceptance has already succeeded.
206
+ // Uses `targetOrg`, the organization just joined, rather than resolving
207
+ // one from the session.
275
208
  if (ports.notifyMemberJoined) {
276
209
  try {
277
210
  const session = await auth.api.getSession({ headers: hdrs });
@@ -298,12 +231,12 @@ export function createTeamService(ports = {}) {
298
231
  log.error("Notification lookup failed", {
299
232
  error: errorMessage(notifError),
300
233
  });
301
- // Non-blocking — invitation acceptance still succeeds.
234
+ // Acceptance still succeeds.
302
235
  }
303
236
  }
304
237
  }
305
238
  /**
306
- * Reject/decline invitation (TEAM-04).
239
+ * Decline an invitation.
307
240
  *
308
241
  * Same caller-side guard as acceptInvitation: require auth and
309
242
  * verify the invitationId is in the caller's pending list before
@@ -311,7 +244,7 @@ export function createTeamService(ports = {}) {
311
244
  */
312
245
  async function rejectInvitation(invitationId) {
313
246
  await callRequireAuth();
314
- const hdrs = await headers();
247
+ const hdrs = await getRequestHeaders();
315
248
  if (typeof invitationId !== "string" || invitationId.length === 0) {
316
249
  throw new TeamServiceError("invalid_input", "Invalid invitation id");
317
250
  }
@@ -324,35 +257,29 @@ export function createTeamService(ports = {}) {
324
257
  body: { invitationId },
325
258
  }));
326
259
  }
327
- /**
328
- * Cancel a pending invitation. Owner/admin only.
329
- */
260
+ /** Cancel a pending invitation. Owner/admin only. */
330
261
  async function cancelInvitation(invitationId) {
331
262
  await callRequireRole(["owner", "admin"]);
332
- const hdrs = await headers();
263
+ const hdrs = await getRequestHeaders();
333
264
  await callOrgApi("cancel-invitation", () => orgApi["/organization/cancel-invitation"]({
334
265
  headers: hdrs,
335
266
  body: { invitationId },
336
267
  }));
337
268
  }
338
- /**
339
- * Remove a member from workspace. Owner/admin only (TEAM-06).
340
- */
269
+ /** Remove a member from the workspace. Owner/admin only. */
341
270
  async function removeMember(memberId) {
342
271
  const { workspace } = await callRequireRole(["owner", "admin"]);
343
- const hdrs = await headers();
272
+ const hdrs = await getRequestHeaders();
344
273
  await callOrgApi("remove-member", () => orgApi["/organization/remove-member"]({
345
274
  headers: hdrs,
346
275
  body: { memberIdOrEmail: memberId, organizationId: workspace.id },
347
276
  }));
348
277
  }
349
- /**
350
- * Update member role. Owner/admin only (TEAM-05, TEAM-08).
351
- */
278
+ /** Change a member's role. Owner/admin only. */
352
279
  async function updateMemberRole(input) {
353
280
  const { workspace } = await callRequireRole(["owner", "admin"]);
354
281
  const validated = parseInput(updateRoleSchema, input);
355
- const hdrs = await headers();
282
+ const hdrs = await getRequestHeaders();
356
283
  await callOrgApi("update-member-role", () => orgApi["/organization/update-member-role"]({
357
284
  headers: hdrs,
358
285
  body: {
@@ -363,12 +290,12 @@ export function createTeamService(ports = {}) {
363
290
  }));
364
291
  }
365
292
  /**
366
- * Leave workspace (TEAM-09). Sole owner cannot leave — must transfer
293
+ * Leave the workspace. The sole owner cannot leave without transferring
367
294
  * ownership first.
368
295
  */
369
296
  async function leaveWorkspace() {
370
297
  const { workspace, membership } = await callRequireWorkspace();
371
- const hdrs = await headers();
298
+ const hdrs = await getRequestHeaders();
372
299
  if (membership.role === "owner") {
373
300
  const org = await callOrgApi("getFullOrganization", () => auth.api.getFullOrganization({
374
301
  headers: hdrs,
@@ -392,15 +319,12 @@ export function createTeamService(ports = {}) {
392
319
  }));
393
320
  }
394
321
  }
395
- /**
396
- * Transfer workspace ownership to another member. Owner only (TEAM-07).
397
- */
322
+ /** Transfer workspace ownership to another member. Owner only. */
398
323
  async function transferOwnership(targetMemberId) {
399
324
  const { workspace } = await callRequireRole(["owner"]);
400
- const hdrs = await headers();
401
- // Promote target to owner. Note: Better-Auth may handle demotion of
402
- // the previous owner automatically. If not, the old owner remains
403
- // as co-owner, which is acceptable (ported behavior).
325
+ const hdrs = await getRequestHeaders();
326
+ // Promotes the target to owner. If Better-Auth does not demote the
327
+ // previous owner, they stay a co-owner.
404
328
  await callOrgApi("update-member-role", () => orgApi["/organization/update-member-role"]({
405
329
  headers: hdrs,
406
330
  body: {
@@ -411,13 +335,12 @@ export function createTeamService(ports = {}) {
411
335
  }));
412
336
  }
413
337
  /**
414
- * Get the caller's own pending invitations (for the invitation
415
- * accept page). No explicit requireAuth here — Better-Auth's
416
- * list-user-invitations endpoint reads the session off `headers`
417
- * itself; ported as-is from ignite's action.
338
+ * The caller's own pending invitations, for the accept page. No
339
+ * `requireAuth`: Better-Auth's list-user-invitations endpoint reads the
340
+ * session off `headers` itself.
418
341
  */
419
342
  async function getUserInvitations() {
420
- const hdrs = await headers();
343
+ const hdrs = await getRequestHeaders();
421
344
  const invitations = await callOrgApi("list-user-invitations", () => orgApi["/organization/list-user-invitations"]({ headers: hdrs }));
422
345
  return invitations ?? [];
423
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/team/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/team/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Which origins Better-Auth's CSRF check accepts. Kept out of `server.ts`,
3
+ * which reaches the database and email provider at module load, so the rule
4
+ * can be tested alone.
5
+ */
6
+ /**
7
+ * Resolve the trusted-origin list from the environment.
8
+ *
9
+ * `NEXT_PUBLIC_APP_URL` is a required variable, and when it is set it
10
+ * is the only origin trusted — in every environment.
11
+ *
12
+ * When it is unset, outside production any loopback port is trusted, so a
13
+ * fresh checkout works on whatever port Next picked (a guessed port would
14
+ * reject every sign-in with `403 INVALID_ORIGIN`). In production nothing is
15
+ * trusted: an unset variable there is a configuration error, and it fails
16
+ * closed.
17
+ */
18
+ export function resolveTrustedOrigins(env) {
19
+ if (env.NEXT_PUBLIC_APP_URL)
20
+ return [env.NEXT_PUBLIC_APP_URL];
21
+ if (env.NODE_ENV === "production")
22
+ return [];
23
+ return ["http://localhost:*", "http://127.0.0.1:*"];
24
+ }
25
+ //# sourceMappingURL=trusted-origins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trusted-origins.js","sourceRoot":"","sources":["../src/trusted-origins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAGrC;IACC,IAAI,GAAG,CAAC,mBAAmB;QAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;AACtD,CAAC"}
@@ -1,13 +1,6 @@
1
1
  /**
2
- * Workspace service error type.
3
- *
4
- * Mirrors `../team/errors.ts` exactly, one directory over: the
5
- * workspace service (./service.ts) throws this for every failure it
6
- * recognizes rather than returning an ad-hoc `{ success, error }`
7
- * envelope — that shaping is a transport concern (a Server Action, a
8
- * route handler) and belongs one layer up, alongside
9
- * revalidatePath/Sentry/toast/i18n, none of which this package may
10
- * depend on.
2
+ * Thrown for every failure the workspace service recognizes. Shaping it for a UI
3
+ * (a `{ success, error }` envelope, i18n, revalidation) is the transport's job.
11
4
  */
12
5
  export class WorkspaceServiceError extends Error {
13
6
  constructor(code, message, options) {
@@ -16,13 +9,10 @@ export class WorkspaceServiceError extends Error {
16
9
  this.code = code;
17
10
  this.meta = options?.meta;
18
11
  if (options?.cause !== undefined) {
19
- // ES2020 target predates the standard `cause` constructor option;
20
- // assign it directly so `instanceof Error` consumers (and Node's
21
- // own error inspection) still see it.
12
+ // The ES2020 target predates the `cause` constructor option.
22
13
  this.cause = options.cause;
23
14
  }
24
- // Restore prototype chain (extending built-ins across some
25
- // transpilation targets loses `instanceof`).
15
+ // Extending built-ins loses `instanceof` on some transpilation targets.
26
16
  Object.setPrototypeOf(this, WorkspaceServiceError.prototype);
27
17
  }
28
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/workspace/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4BH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAI9C,YACE,IAA+B,EAC/B,OAAe,EACf,OAA+D;QAE/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,kEAAkE;YAClE,iEAAiE;YACjE,sCAAsC;YACrC,IAA4B,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtD,CAAC;QAED,2DAA2D;QAC3D,6CAA6C;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,KAAK,YAAY,qBAAqB,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/workspace/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4BH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAI9C,YACE,IAA+B,EAC/B,OAAe,EACf,OAA+D;QAE/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,6DAA6D;YAC5D,IAA4B,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtD,CAAC;QAED,wEAAwE;QACxE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,KAAK,YAAY,qBAAqB,CAAC;AAChD,CAAC"}
@@ -1,17 +1,5 @@
1
- /**
2
- * Workspace Validation Schemas
3
- *
4
- * Zod schemas for workspace create/update inputs, shared by the
5
- * workspace service and its transports.
6
- *
7
- * (Ported from the product application's workspace validation module —
8
- * same semantics. Ignite's copy is retired at cutover.)
9
- */
1
+ /** Workspace inputs, shared by the workspace service and its transports. */
10
2
  import { z } from "zod";
11
- /**
12
- * Create Workspace Schema
13
- * Name + optional slug for new workspaces
14
- */
15
3
  export const createWorkspaceSchema = z.object({
16
4
  name: z
17
5
  .string()
@@ -22,12 +10,8 @@ export const createWorkspaceSchema = z.object({
22
10
  .min(2, "Slug must be at least 2 characters")
23
11
  .max(50, "Slug must be at most 50 characters")
24
12
  .regex(/^[a-z0-9-]+$/, "Slug can only contain lowercase letters, numbers, and hyphens")
25
- .optional(), // Auto-generated from name if not provided
13
+ .optional(), // Generated from the name when omitted.
26
14
  });
27
- /**
28
- * Update Workspace Schema
29
- * Optional name, slug, and logo for workspace settings
30
- */
31
15
  export const updateWorkspaceSchema = z.object({
32
16
  name: z
33
17
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/workspace/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,8CAA8C,CAAC;SACtD,GAAG,CAAC,EAAE,EAAE,8CAA8C,CAAC;IAC1D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;SAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;SAC7C,KAAK,CACJ,cAAc,EACd,+DAA+D,CAChE;SACA,QAAQ,EAAE,EAAE,2CAA2C;CAC3D,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,8CAA8C,CAAC;SACtD,GAAG,CAAC,EAAE,EAAE,8CAA8C,CAAC;SACvD,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;SAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;SAC7C,KAAK,CACJ,cAAc,EACd,+DAA+D,CAChE;SACA,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACvE,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/workspace/schemas.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,8CAA8C,CAAC;SACtD,GAAG,CAAC,EAAE,EAAE,8CAA8C,CAAC;IAC1D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;SAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;SAC7C,KAAK,CACJ,cAAc,EACd,+DAA+D,CAChE;SACA,QAAQ,EAAE,EAAE,wCAAwC;CACxD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,8CAA8C,CAAC;SACtD,GAAG,CAAC,EAAE,EAAE,8CAA8C,CAAC;SACvD,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;SAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;SAC7C,KAAK,CACJ,cAAc,EACd,+DAA+D,CAChE;SACA,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACvE,CAAC,CAAC"}