canopycms-auth-dev 0.0.5 → 0.0.6

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-present Rice University
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,22 +1,19 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useEffect } from 'react';
3
+ import { useState, useSyncExternalStore } from 'react';
4
4
  import { ActionIcon, Avatar } from '@mantine/core';
5
5
  import { UserSwitcherModal } from './UserSwitcherModal';
6
- import { DEFAULT_USERS } from './dev-plugin';
6
+ import { DEFAULT_USERS } from './dev-defaults';
7
7
  import { getDevUserCookie, DEFAULT_USER_ID } from './cookie-utils';
8
+ const noop = () => () => { };
9
+ const getSnapshot = () => getDevUserCookie() ?? DEFAULT_USER_ID;
10
+ const getServerSnapshot = () => DEFAULT_USER_ID;
8
11
  /**
9
12
  * User switcher button component that shows current user avatar and opens modal
10
13
  */
11
14
  export function UserSwitcherButton() {
12
15
  const [opened, setOpened] = useState(false);
13
- const [mounted, setMounted] = useState(false);
14
- // Only read cookie after mount to avoid hydration mismatch
15
- useEffect(() => {
16
- setMounted(true);
17
- }, []);
18
- // Read current user from cookie (only on client)
19
- const currentUserId = mounted ? (getDevUserCookie() ?? DEFAULT_USER_ID) : DEFAULT_USER_ID;
16
+ const currentUserId = useSyncExternalStore(noop, getSnapshot, getServerSnapshot);
20
17
  const currentUser = DEFAULT_USERS.find((u) => u.userId === currentUserId);
21
18
  return (_jsxs(_Fragment, { children: [_jsx(ActionIcon, { variant: "subtle", size: "lg", radius: "md", onClick: () => setOpened(true), "aria-label": "Switch user", children: _jsx(Avatar, { size: "sm", color: "blue", children: currentUser?.name[0] ?? 'U' }) }), _jsx(UserSwitcherModal, { opened: opened, onClose: () => setOpened(false), currentUserId: currentUserId })] }));
22
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserSwitcherButton.js","sourceRoot":"","sources":["../src/UserSwitcherButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAElE;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,2DAA2D;IAC3D,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,iDAAiD;IACjD,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAA;IACzF,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAA;IAEzE,OAAO,CACL,8BACE,KAAC,UAAU,IACT,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,MAAM,EAAC,IAAI,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,gBACnB,aAAa,YAExB,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,YAC3B,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GACrB,GACE,EAEb,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,aAAa,EAAE,aAAa,GAC5B,IACD,CACJ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"UserSwitcherButton.js","sourceRoot":"","sources":["../src/UserSwitcherButton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA;AAC3B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,EAAE,IAAI,eAAe,CAAA;AAC/D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,eAAe,CAAA;AAE/C;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAEhF,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAA;IAEzE,OAAO,CACL,8BACE,KAAC,UAAU,IACT,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,MAAM,EAAC,IAAI,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,gBACnB,aAAa,YAExB,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,YAC3B,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GACrB,GACE,EAEb,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,aAAa,EAAE,aAAa,GAC5B,IACD,CACJ,CAAA;AACH,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Modal, Stack, Paper, Group, Avatar, Text, Badge } from '@mantine/core';
4
4
  import { MdCheck } from 'react-icons/md';
5
- import { DEFAULT_USERS } from './dev-plugin';
5
+ import { DEFAULT_USERS } from './dev-defaults';
6
6
  import { setDevUserCookie } from './cookie-utils';
7
7
  /**
8
8
  * User switcher modal component that displays all available dev users
@@ -1 +1 @@
1
- {"version":3,"file":"UserSwitcherModal.js","sourceRoot":"","sources":["../src/UserSwitcherModal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAQjD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAS;IACzE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;QACpC,wBAAwB;QACxB,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACxB,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC,CAAA;IAED,OAAO,CACL,KAAC,KAAK,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,yBAAyB,YACtE,KAAC,KAAK,IAAC,GAAG,EAAC,IAAI,YACZ,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC3B,MAAC,KAAK,IAEJ,CAAC,EAAC,IAAI,EACN,UAAU,QACV,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAEtC,MAAC,KAAK,IAAC,OAAO,EAAC,eAAe,EAAC,EAAE,EAAC,IAAI,aACpC,MAAC,KAAK,eACJ,KAAC,MAAM,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAU,EAC5C,0BACE,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,YAAG,IAAI,CAAC,IAAI,GAAQ,EACjC,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,YACvB,IAAI,CAAC,KAAK,GACN,IACH,IACA,EACP,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,IACjD,EAEP,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,KAAK,IAAC,GAAG,EAAC,IAAI,YACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,KAAK,IAAS,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,YACvC,CAAC,IADQ,CAAC,CAEL,CACT,CAAC,GACI,CACT,KA3BI,IAAI,CAAC,MAAM,CA4BV,CACT,CAAC,GACI,GACF,CACT,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"UserSwitcherModal.js","sourceRoot":"","sources":["../src/UserSwitcherModal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAQjD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAS;IACzE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE;QACpC,wBAAwB;QACxB,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACxB,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC,CAAA;IAED,OAAO,CACL,KAAC,KAAK,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,yBAAyB,YACtE,KAAC,KAAK,IAAC,GAAG,EAAC,IAAI,YACZ,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC3B,MAAC,KAAK,IAEJ,CAAC,EAAC,IAAI,EACN,UAAU,QACV,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAEtC,MAAC,KAAK,IAAC,OAAO,EAAC,eAAe,EAAC,EAAE,EAAC,IAAI,aACpC,MAAC,KAAK,eACJ,KAAC,MAAM,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAU,EAC5C,0BACE,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,YAAG,IAAI,CAAC,IAAI,GAAQ,EACjC,KAAC,IAAI,IAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,YACvB,IAAI,CAAC,KAAK,GACN,IACH,IACA,EACP,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,IACjD,EAEP,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,KAAK,IAAC,GAAG,EAAC,IAAI,YACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,KAAK,IAAS,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,YACvC,CAAC,IADQ,CAAC,CAEL,CACT,CAAC,GACI,CACT,KA3BI,IAAI,CAAC,MAAM,CA4BV,CACT,CAAC,GACI,GACF,CACT,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DevUser, DevGroup } from './dev-plugin';
1
+ import type { DevUser, DevGroup } from './dev-defaults';
2
2
  export interface RefreshDevCacheOptions {
3
3
  /** Directory to write cache files to (e.g., .canopy-prod-sim/.cache) */
4
4
  cachePath: string;
@@ -1,5 +1,5 @@
1
1
  import { writeAuthCacheSnapshot } from 'canopycms/auth/cache';
2
- import { DEFAULT_USERS, DEFAULT_GROUPS } from './dev-plugin';
2
+ import { DEFAULT_USERS, DEFAULT_GROUPS } from './dev-defaults';
3
3
  /**
4
4
  * Write dev users/groups to cache files for FileBasedAuthCache.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-writer.js","sourceRoot":"","sources":["../src/cache-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAY5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAE/C,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,EAAE,EAAE,CAAC,CAAC,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;KACJ,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;KACJ,CAAA;IAED,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,MAAM,CAAC,WAAW,CAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAC1F;KACF,CAAA;IAED,qEAAqE;IACrE,MAAM,sBAAsB,CAAC,SAAS,EAAE;QACtC,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,UAAU;QACvB,kBAAkB,EAAE,eAAe;KACpC,CAAC,CAAA;IAEF,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"cache-writer.js","sourceRoot":"","sources":["../src/cache-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAY9D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAA;IAE/C,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,EAAE,EAAE,CAAC,CAAC,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;KACJ,CAAA;IAED,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;KACJ,CAAA;IAED,MAAM,eAAe,GAAG;QACtB,WAAW,EAAE,MAAM,CAAC,WAAW,CAC7B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAC1F;KACF,CAAA;IAED,qEAAqE;IACrE,MAAM,sBAAsB,CAAC,SAAS,EAAE;QACtC,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,UAAU;QACvB,kBAAkB,EAAE,eAAe;KACpC,CAAC,CAAA;IAEF,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Client-safe defaults and types for dev auth plugin.
3
+ * This file must NOT import any server-only code (node:fs, etc.)
4
+ * so it can be safely included in client bundles.
5
+ */
6
+ import type { CanopyUserId, CanopyGroupId } from 'canopycms';
7
+ export interface DevUser {
8
+ userId: CanopyUserId;
9
+ name: string;
10
+ email: string;
11
+ avatarUrl?: string;
12
+ externalGroups: CanopyGroupId[];
13
+ }
14
+ export interface DevGroup {
15
+ id: CanopyGroupId;
16
+ name: string;
17
+ description?: string;
18
+ }
19
+ export declare const DEV_ADMIN_USER_ID: CanopyUserId;
20
+ export interface DevAuthConfig {
21
+ /**
22
+ * Custom mock users. If not provided, uses default users.
23
+ */
24
+ users?: DevUser[];
25
+ /**
26
+ * Custom mock groups. If not provided, uses default groups.
27
+ */
28
+ groups?: DevGroup[];
29
+ /**
30
+ * Default user ID when no user is selected.
31
+ * @default 'dev_user1_2nK8mP4xL9' (user1)
32
+ */
33
+ defaultUserId?: CanopyUserId;
34
+ /**
35
+ * Whether to auto-set CANOPY_BOOTSTRAP_ADMIN_IDS for the admin dev user
36
+ * when the env var is not already set. Defaults to true.
37
+ */
38
+ autoBootstrapAdmin?: boolean;
39
+ }
40
+ export declare const DEFAULT_USERS: DevUser[];
41
+ export declare const DEFAULT_GROUPS: DevGroup[];
@@ -0,0 +1,41 @@
1
+ export const DEV_ADMIN_USER_ID = 'dev_admin_3xY6zW1qR5';
2
+ export const DEFAULT_USERS = [
3
+ {
4
+ userId: 'dev_user1_2nK8mP4xL9',
5
+ name: 'User One',
6
+ email: 'user1@localhost.dev',
7
+ externalGroups: ['team-a', 'team-b'],
8
+ },
9
+ {
10
+ userId: 'dev_user2_7qR3tY6wN2',
11
+ name: 'User Two',
12
+ email: 'user2@localhost.dev',
13
+ externalGroups: ['team-b'],
14
+ },
15
+ {
16
+ userId: 'dev_user3_5vS1pM8kJ4',
17
+ name: 'User Three',
18
+ email: 'user3@localhost.dev',
19
+ externalGroups: ['team-c'],
20
+ },
21
+ {
22
+ userId: 'dev_reviewer_9aB4cD2eF7',
23
+ name: 'Reviewer One',
24
+ email: 'reviewer1@localhost.dev',
25
+ externalGroups: ['team-a'],
26
+ // Note: 'Reviewers' membership comes from internal groups file, not auth plugin
27
+ },
28
+ {
29
+ userId: DEV_ADMIN_USER_ID,
30
+ name: 'Admin One',
31
+ email: 'admin1@localhost.dev',
32
+ externalGroups: ['team-a', 'team-b', 'team-c'],
33
+ // Note: Does NOT include 'Admins' - that's applied by bootstrap admin config or auto-bootstrap
34
+ },
35
+ ];
36
+ export const DEFAULT_GROUPS = [
37
+ { id: 'team-a', name: 'Team A', description: 'Team A' },
38
+ { id: 'team-b', name: 'Team B', description: 'Team B' },
39
+ { id: 'team-c', name: 'Team C', description: 'Team C' },
40
+ ];
41
+ //# sourceMappingURL=dev-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-defaults.js","sourceRoot":"","sources":["../src/dev-defaults.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,iBAAiB,GAAiB,sBAAsB,CAAA;AA0BrE,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC;QACE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,qBAAqB;QAC5B,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACrC;IACD;QACE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,qBAAqB;QAC5B,cAAc,EAAE,CAAC,QAAQ,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,qBAAqB;QAC5B,cAAc,EAAE,CAAC,QAAQ,CAAC;KAC3B;IACD;QACE,MAAM,EAAE,yBAAyB;QACjC,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,yBAAyB;QAChC,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,gFAAgF;KACjF;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,sBAAsB;QAC7B,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC9C,+FAA+F;KAChG;CACF,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;IACvD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;IACvD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;CACxD,CAAA"}
@@ -1,45 +1,10 @@
1
1
  import type { AuthPlugin } from 'canopycms/auth';
2
2
  import type { UserSearchResult, GroupMetadata, AuthenticationResult } from 'canopycms/auth';
3
3
  import type { CanopyUserId, CanopyGroupId } from 'canopycms';
4
- /**
5
- * WARNING: This plugin is for development and testing only!
6
- * Do not use in production environments.
7
- */
8
- export interface DevUser {
9
- userId: CanopyUserId;
10
- name: string;
11
- email: string;
12
- avatarUrl?: string;
13
- externalGroups: CanopyGroupId[];
14
- }
15
- export interface DevGroup {
16
- id: CanopyGroupId;
17
- name: string;
18
- description?: string;
19
- }
20
- export declare const DEV_ADMIN_USER_ID: CanopyUserId;
21
- export interface DevAuthConfig {
22
- /**
23
- * Custom mock users. If not provided, uses default users.
24
- */
25
- users?: DevUser[];
26
- /**
27
- * Custom mock groups. If not provided, uses default groups.
28
- */
29
- groups?: DevGroup[];
30
- /**
31
- * Default user ID when no user is selected.
32
- * @default 'dev_user1_2nK8mP4xL9' (user1)
33
- */
34
- defaultUserId?: CanopyUserId;
35
- /**
36
- * Whether to auto-set CANOPY_BOOTSTRAP_ADMIN_IDS for the admin dev user
37
- * when the env var is not already set. Defaults to true.
38
- */
39
- autoBootstrapAdmin?: boolean;
40
- }
41
- export declare const DEFAULT_USERS: DevUser[];
42
- export declare const DEFAULT_GROUPS: DevGroup[];
4
+ import { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID } from './dev-defaults';
5
+ import type { DevUser, DevGroup, DevAuthConfig } from './dev-defaults';
6
+ export type { DevUser, DevGroup, DevAuthConfig };
7
+ export { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID };
43
8
  /**
44
9
  * Dev authentication plugin implementation for CanopyCMS.
45
10
  * Supports both cookie-based (UI) and header-based (tests) authentication.
@@ -65,6 +30,10 @@ export declare class DevAuthPlugin implements AuthPlugin {
65
30
  id: CanopyGroupId;
66
31
  name: string;
67
32
  }>>;
33
+ createCacheRefresher(cachePath: string): () => Promise<{
34
+ userCount: number;
35
+ groupCount: number;
36
+ }>;
68
37
  }
69
38
  /**
70
39
  * Factory function for creating dev auth plugin.
@@ -1,45 +1,7 @@
1
1
  import { extractHeaders } from 'canopycms/auth';
2
2
  import { getDevUserCookieFromHeaders } from './cookie-utils';
3
- export const DEV_ADMIN_USER_ID = 'dev_admin_3xY6zW1qR5';
4
- export const DEFAULT_USERS = [
5
- {
6
- userId: 'dev_user1_2nK8mP4xL9',
7
- name: 'User One',
8
- email: 'user1@localhost.dev',
9
- externalGroups: ['team-a', 'team-b'],
10
- },
11
- {
12
- userId: 'dev_user2_7qR3tY6wN2',
13
- name: 'User Two',
14
- email: 'user2@localhost.dev',
15
- externalGroups: ['team-b'],
16
- },
17
- {
18
- userId: 'dev_user3_5vS1pM8kJ4',
19
- name: 'User Three',
20
- email: 'user3@localhost.dev',
21
- externalGroups: ['team-c'],
22
- },
23
- {
24
- userId: 'dev_reviewer_9aB4cD2eF7',
25
- name: 'Reviewer One',
26
- email: 'reviewer1@localhost.dev',
27
- externalGroups: ['team-a'],
28
- // Note: 'Reviewers' membership comes from internal groups file, not auth plugin
29
- },
30
- {
31
- userId: DEV_ADMIN_USER_ID,
32
- name: 'Admin One',
33
- email: 'admin1@localhost.dev',
34
- externalGroups: ['team-a', 'team-b', 'team-c'],
35
- // Note: Does NOT include 'Admins' - that's applied by bootstrap admin config or auto-bootstrap
36
- },
37
- ];
38
- export const DEFAULT_GROUPS = [
39
- { id: 'team-a', name: 'Team A', description: 'Team A' },
40
- { id: 'team-b', name: 'Team B', description: 'Team B' },
41
- { id: 'team-c', name: 'Team C', description: 'Team C' },
42
- ];
3
+ import { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID } from './dev-defaults';
4
+ export { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID };
43
5
  /**
44
6
  * Dev authentication plugin implementation for CanopyCMS.
45
7
  * Supports both cookie-based (UI) and header-based (tests) authentication.
@@ -157,6 +119,14 @@ export class DevAuthPlugin {
157
119
  name: g.name,
158
120
  }));
159
121
  }
122
+ createCacheRefresher(cachePath) {
123
+ const users = this.users;
124
+ const groups = this.groups;
125
+ return async () => {
126
+ const { refreshDevCache } = await import('./cache-writer');
127
+ return refreshDevCache({ cachePath, users, groups });
128
+ };
129
+ }
160
130
  }
161
131
  /**
162
132
  * Factory function for creating dev auth plugin.
@@ -1 +1 @@
1
- {"version":3,"file":"dev-plugin.js","sourceRoot":"","sources":["../src/dev-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-plugin.js","sourceRoot":"","sources":["../src/dev-plugin.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { createDevAuthPlugin, DevAuthPlugin, DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID, } from './dev-plugin';
2
- export type { DevAuthConfig, DevUser, DevGroup } from './dev-plugin';
1
+ export { createDevAuthPlugin, DevAuthPlugin } from './dev-plugin';
2
+ export { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID } from './dev-defaults';
3
+ export type { DevAuthConfig, DevUser, DevGroup } from './dev-defaults';
3
4
  export { createDevTokenVerifier } from './jwt-verifier';
4
5
  export { refreshDevCache } from './cache-writer';
5
6
  export type { RefreshDevCacheOptions } from './cache-writer';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
- export { createDevAuthPlugin, DevAuthPlugin, DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID, } from './dev-plugin';
1
+ export { createDevAuthPlugin, DevAuthPlugin } from './dev-plugin';
2
+ export { DEFAULT_USERS, DEFAULT_GROUPS, DEV_ADMIN_USER_ID } from './dev-defaults';
2
3
  export { createDevTokenVerifier } from './jwt-verifier';
3
4
  export { refreshDevCache } from './cache-writer';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { extractHeaders } from 'canopycms/auth';
2
2
  import { getDevUserCookieFromHeaders, DEFAULT_USER_ID } from './cookie-utils';
3
- import { DEV_ADMIN_USER_ID } from './dev-plugin';
3
+ import { DEV_ADMIN_USER_ID } from './dev-defaults';
4
4
  /**
5
5
  * Test user key → dev user ID mapping.
6
6
  * Matches the mapping in DevAuthPlugin.mapTestUserKey().
@@ -1 +1 @@
1
- {"version":3,"file":"jwt-verifier.js","sourceRoot":"","sources":["../src/jwt-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD;;;GAGG;AACH,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;IAC9B,QAAQ,EAAE,yBAAyB;CACpC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoC;IACzE,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,eAAe,CAAA;IAE/D,OAAO,KAAK,EAAE,OAAgB,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAEzB,wDAAwD;QACxD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,aAAa,CAAA;QACxB,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAA;QAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAC3B,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"jwt-verifier.js","sourceRoot":"","sources":["../src/jwt-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;IAC9B,QAAQ,EAAE,yBAAyB;CACpC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoC;IACzE,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,eAAe,CAAA;IAE/D,OAAO,KAAK,EAAE,OAAgB,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAEzB,wDAAwD;QACxD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,aAAa,CAAA;QACxB,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAA;QAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAC3B,CAAC,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "canopycms-auth-dev",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Development authentication provider for CanopyCMS",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/safeinsights/canopycms.git",
8
+ "url": "git+https://github.com/safeinsights/canopycms.git",
9
9
  "directory": "packages/canopycms-auth-dev"
10
10
  },
11
11
  "private": false,
@@ -13,49 +13,45 @@
13
13
  "main": "dist/index.js",
14
14
  "types": "dist/index.d.ts",
15
15
  "exports": {
16
- ".": "./src/index.ts",
17
- "./client": "./src/client.ts",
18
- "./cache-writer": "./src/cache-writer.ts"
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./client": {
21
+ "import": "./dist/client.js",
22
+ "types": "./dist/client.d.ts"
23
+ },
24
+ "./cache-writer": {
25
+ "import": "./dist/cache-writer.js",
26
+ "types": "./dist/cache-writer.d.ts"
27
+ }
19
28
  },
20
29
  "files": [
21
30
  "dist"
22
31
  ],
23
- "publishConfig": {
24
- "exports": {
25
- ".": {
26
- "import": "./dist/index.js",
27
- "types": "./dist/index.d.ts"
28
- },
29
- "./client": {
30
- "import": "./dist/client.js",
31
- "types": "./dist/client.d.ts"
32
- },
33
- "./cache-writer": {
34
- "import": "./dist/cache-writer.js",
35
- "types": "./dist/cache-writer.d.ts"
36
- }
37
- }
38
- },
39
- "scripts": {
40
- "build": "tsc -p tsconfig.build.json",
41
- "test": "vitest run --reporter=dot",
42
- "typecheck": "tsc --noEmit"
43
- },
44
32
  "engines": {
45
33
  "node": ">=18"
46
34
  },
47
35
  "peerDependencies": {
48
- "canopycms": "^0.0.5",
36
+ "canopycms": "^0.0.6",
49
37
  "react": "^18.0.0 || ^19.0.0",
50
- "@mantine/core": "^7.0.0",
51
- "@mantine/hooks": "^7.0.0",
52
- "@mantine/modals": "^7.0.0",
38
+ "@mantine/core": "^7.0.0 || ^8.0.0",
53
39
  "react-icons": "^5.0.0"
54
40
  },
55
41
  "devDependencies": {
42
+ "@mantine/core": "^7.0.0",
56
43
  "@types/node": "^22.9.0",
57
- "@types/react": "^18.0.0",
44
+ "@types/react": "^18.3.12",
45
+ "canopycms": "^0.0.6",
46
+ "react": "^18.3.1",
47
+ "react-icons": "^5.0.0",
58
48
  "typescript": "^5.6.3",
59
49
  "vitest": "^1.6.0"
50
+ },
51
+ "scripts": {
52
+ "build": "tsc -p tsconfig.build.json",
53
+ "lint": "eslint src/",
54
+ "test": "vitest run --reporter=dot",
55
+ "typecheck": "tsc --noEmit"
60
56
  }
61
- }
57
+ }