@unifiedcommerce/core 0.3.1 → 0.3.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B/C,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CAwInB"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B/C,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CAqInB"}
@@ -30,10 +30,9 @@ export function authMiddleware(auth, config) {
30
30
  // If no active org, try to resolve the user's membership in org_default.
31
31
  // This handles the common case where the user is a member but hasn't
32
32
  // called organization/set-active (single-store apps, seed scripts, tests).
33
- const getFullOrg = auth.api.getFullOrganization;
34
- if (!role && getFullOrg) {
33
+ if (!role && auth.api.getFullOrganization) {
35
34
  try {
36
- const org = await getFullOrg({
35
+ const org = await auth.api.getFullOrganization({
37
36
  query: { organizationId: orgId ?? DEFAULT_ORG_ID },
38
37
  });
39
38
  if (org?.members) {
@@ -1,5 +1,13 @@
1
1
  import type { CommerceConfig } from "../config/types.js";
2
2
  import type { DatabaseAdapter } from "../kernel/database/adapter.js";
3
+ /** Member shape returned by Better Auth's organization plugin */
4
+ export interface OrgMember {
5
+ id: string;
6
+ userId: string;
7
+ organizationId: string;
8
+ role: string;
9
+ createdAt: string;
10
+ }
3
11
  export interface AuthInstance {
4
12
  handler(request: Request): Promise<Response>;
5
13
  api: {
@@ -8,7 +16,23 @@ export interface AuthInstance {
8
16
  }): Promise<unknown>;
9
17
  getActiveMemberRole?: (input: {
10
18
  headers: Headers;
11
- }) => Promise<unknown>;
19
+ }) => Promise<{
20
+ role: string;
21
+ } | null>;
22
+ getFullOrganization?: (input: {
23
+ query: {
24
+ organizationId: string;
25
+ };
26
+ }) => Promise<{
27
+ id: string;
28
+ name: string;
29
+ members: OrgMember[];
30
+ } | null>;
31
+ listMembers?: (input: {
32
+ query: {
33
+ organizationId: string;
34
+ };
35
+ }) => Promise<OrgMember[]>;
12
36
  verifyApiKey?: (input: {
13
37
  body: {
14
38
  key: string;
@@ -24,9 +48,11 @@ export interface AuthInstance {
24
48
  }>;
25
49
  createApiKey?: (input: {
26
50
  body: {
51
+ configId?: string;
27
52
  name?: string;
28
53
  permissions?: Record<string, string[]>;
29
54
  userId?: string;
55
+ organizationId?: string;
30
56
  };
31
57
  headers?: Headers;
32
58
  }) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAgCrE,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,EAAE;QACH,UAAU,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;aAAE,CAAC;SAC/D,KAAK,OAAO,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC;YACf,KAAK,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBACJ,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,KAAK,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3C,qEAAqE;QACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAuHd"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAgCrE,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,EAAE;QACH,UAAU,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAG1D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;QACxF,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,KAAK,OAAO,CAAC;YAC9E,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,CAAC;SACtB,GAAG,IAAI,CAAC,CAAC;QACV,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,KAAK,EAAE;gBAAE,cAAc,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAGrF,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;aAAE,CAAC;SAC/D,KAAK,OAAO,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC;YACf,KAAK,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAClB,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,cAAc,CAAC,EAAE,MAAM,CAAC;aACzB,CAAC;YACF,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,KAAK,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAE3C,qEAAqE;QACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAuHd"}
@@ -6,9 +6,9 @@ export declare const analyticsQuery: ToolDefinition<z.ZodObject<{
6
6
  timeDimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
7
7
  dimension: z.ZodString;
8
8
  granularity: z.ZodOptional<z.ZodEnum<{
9
- month: "month";
10
9
  day: "day";
11
10
  week: "week";
11
+ month: "month";
12
12
  year: "year";
13
13
  }>>;
14
14
  dateRange: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodString, z.ZodString], null>]>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unifiedcommerce/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -46,17 +46,14 @@ export function authMiddleware(
46
46
  // If no active org, try to resolve the user's membership in org_default.
47
47
  // This handles the common case where the user is a member but hasn't
48
48
  // called organization/set-active (single-store apps, seed scripts, tests).
49
- const getFullOrg = auth.api.getFullOrganization as
50
- | ((input: { query: { organizationId: string } }) => Promise<unknown>)
51
- | undefined;
52
- if (!role && getFullOrg) {
49
+ if (!role && auth.api.getFullOrganization) {
53
50
  try {
54
- const org = await getFullOrg({
51
+ const org = await auth.api.getFullOrganization({
55
52
  query: { organizationId: orgId ?? DEFAULT_ORG_ID },
56
- }) as { members?: Array<{ userId: string; role: string }> } | null;
53
+ });
57
54
  if (org?.members) {
58
55
  const membership = org.members.find(
59
- (m: { userId: string }) => m.userId === session.user.id,
56
+ (m) => m.userId === session.user.id,
60
57
  );
61
58
  if (membership) {
62
59
  role = membership.role;
package/src/auth/setup.ts CHANGED
@@ -36,11 +36,30 @@ interface AuthEmailPayload {
36
36
  url: string;
37
37
  }
38
38
 
39
+ /** Member shape returned by Better Auth's organization plugin */
40
+ export interface OrgMember {
41
+ id: string;
42
+ userId: string;
43
+ organizationId: string;
44
+ role: string;
45
+ createdAt: string;
46
+ }
47
+
39
48
  export interface AuthInstance {
40
49
  handler(request: Request): Promise<Response>;
41
50
  api: {
42
51
  getSession(input: { headers: Headers }): Promise<unknown>;
43
- getActiveMemberRole?: (input: { headers: Headers }) => Promise<unknown>;
52
+
53
+ // Organization plugin methods
54
+ getActiveMemberRole?: (input: { headers: Headers }) => Promise<{ role: string } | null>;
55
+ getFullOrganization?: (input: { query: { organizationId: string } }) => Promise<{
56
+ id: string;
57
+ name: string;
58
+ members: OrgMember[];
59
+ } | null>;
60
+ listMembers?: (input: { query: { organizationId: string } }) => Promise<OrgMember[]>;
61
+
62
+ // API key plugin methods
44
63
  verifyApiKey?: (input: {
45
64
  body: { key: string; permissions?: Record<string, string[]> };
46
65
  }) => Promise<{
@@ -50,12 +69,15 @@ export interface AuthInstance {
50
69
  }>;
51
70
  createApiKey?: (input: {
52
71
  body: {
72
+ configId?: string;
53
73
  name?: string;
54
74
  permissions?: Record<string, string[]>;
55
75
  userId?: string;
76
+ organizationId?: string;
56
77
  };
57
78
  headers?: Headers;
58
79
  }) => Promise<{ key: string; id: string }>;
80
+
59
81
  /** Allow access to other Better Auth API methods added by plugins */
60
82
  [key: string]: unknown;
61
83
  };