spine-framework 0.1.39 → 0.1.40

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.
@@ -567,8 +567,60 @@ async function resolveInternalPersonId(authUserId: string, email?: string): Prom
567
567
 
568
568
  if (byAuthId) return byAuthId.id
569
569
 
570
- // Not found - return the auth ID as fallback
571
- return authUserId
570
+ // Not found — auto-create the person (handles cases where auth user pre-existed DB reset
571
+ // or trigger fired before seed data was in place)
572
+ const { data: account } = await adminDb
573
+ .from('accounts')
574
+ .select('id')
575
+ .eq('slug', 'spine-system')
576
+ .single()
577
+
578
+ const { data: type } = await adminDb
579
+ .from('types')
580
+ .select('id')
581
+ .eq('kind', 'person')
582
+ .eq('slug', 'person')
583
+ .single()
584
+
585
+ if (!account || !type) {
586
+ throw new Error('Cannot auto-create person: spine-system account or person type not found in DB')
587
+ }
588
+
589
+ // First person ever gets system_admin role
590
+ const { count } = await adminDb
591
+ .from('people')
592
+ .select('id', { count: 'exact', head: true })
593
+
594
+ let roleId: string | null = null
595
+ if ((count ?? 0) === 0) {
596
+ const { data: adminRole } = await adminDb
597
+ .from('roles')
598
+ .select('id')
599
+ .eq('slug', 'system_admin')
600
+ .single()
601
+ roleId = adminRole?.id ?? null
602
+ }
603
+
604
+ const { data: newPerson, error: createError } = await adminDb
605
+ .from('people')
606
+ .upsert({
607
+ id: authUserId,
608
+ auth_uid: authUserId,
609
+ email: email ?? '',
610
+ full_name: email ? email.split('@')[0] : 'Unknown',
611
+ account_id: account.id,
612
+ type_id: type.id,
613
+ role_id: roleId,
614
+ is_active: true
615
+ }, { onConflict: 'id' })
616
+ .select('id')
617
+ .single()
618
+
619
+ if (createError || !newPerson) {
620
+ throw new Error('Failed to auto-create person for auth user ' + authUserId + ': ' + createError?.message)
621
+ }
622
+
623
+ return newPerson.id
572
624
  }
573
625
 
574
626
  // ─── HELPER FUNCTIONS ────────────────────────────────────────────────────────
@@ -34,7 +34,7 @@ function Badge({
34
34
  ...props
35
35
  }: React.ComponentProps<"span"> &
36
36
  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
37
- const Comp = asChild ? Slot.Root : "span"
37
+ const Comp = asChild ? Slot : "span"
38
38
 
39
39
  return (
40
40
  <Comp
@@ -398,7 +398,7 @@ function SidebarGroupLabel({
398
398
  asChild = false,
399
399
  ...props
400
400
  }: React.ComponentProps<"div"> & { asChild?: boolean }) {
401
- const Comp = asChild ? Slot.Root : "div"
401
+ const Comp = asChild ? Slot : "div"
402
402
 
403
403
  return (
404
404
  <Comp
@@ -418,7 +418,7 @@ function SidebarGroupAction({
418
418
  asChild = false,
419
419
  ...props
420
420
  }: React.ComponentProps<"button"> & { asChild?: boolean }) {
421
- const Comp = asChild ? Slot.Root : "button"
421
+ const Comp = asChild ? Slot : "button"
422
422
 
423
423
  return (
424
424
  <Comp
@@ -504,7 +504,7 @@ function SidebarMenuButton({
504
504
  isActive?: boolean
505
505
  tooltip?: string | React.ComponentProps<typeof TooltipContent>
506
506
  } & VariantProps<typeof sidebarMenuButtonVariants>) {
507
- const Comp = asChild ? Slot.Root : "button"
507
+ const Comp = asChild ? Slot : "button"
508
508
  const { isMobile, state } = useSidebar()
509
509
 
510
510
  const button = (
@@ -550,7 +550,7 @@ function SidebarMenuAction({
550
550
  asChild?: boolean
551
551
  showOnHover?: boolean
552
552
  }) {
553
- const Comp = asChild ? Slot.Root : "button"
553
+ const Comp = asChild ? Slot : "button"
554
554
 
555
555
  return (
556
556
  <Comp
@@ -661,7 +661,7 @@ function SidebarMenuSubButton({
661
661
  size?: "sm" | "md"
662
662
  isActive?: boolean
663
663
  }) {
664
- const Comp = asChild ? Slot.Root : "a"
664
+ const Comp = asChild ? Slot : "a"
665
665
 
666
666
  return (
667
667
  <Comp
@@ -1 +1 @@
1
- {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/principal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8BH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAA;IAEV,6DAA6D;IAC7D,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAEhB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAEjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;IAEtE,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAA;IAGpB,UAAU,EAAE;QACV,2CAA2C;QAC3C,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;QAEnF,oEAAoE;QACpE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QAExB,8CAA8C;QAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAE1B,8CAA8C;QAC9C,SAAS,EAAE,MAAM,CAAA;QAGjB,sCAAsC;QACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB,oCAAoC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf,sCAAsC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,kCAAkC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,kCAAkC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,wBAAwB;QACxB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAKD,WAAW,CAAC,EAAE;QACZ,2CAA2C;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;QAEZ,6CAA6C;QAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAUjC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAY9B,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BrE;AAmUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAgB5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,mFAOlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAgBpE"}
1
+ {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../.framework/functions/_shared/principal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA8BH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAA;IAEV,6DAA6D;IAC7D,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAEhB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IAEjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;IAEtE,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAA;IAGpB,UAAU,EAAE;QACV,2CAA2C;QAC3C,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;QAEnF,oEAAoE;QACpE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QAExB,8CAA8C;QAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAE1B,8CAA8C;QAC9C,SAAS,EAAE,MAAM,CAAA;QAGjB,sCAAsC;QACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB,oCAAoC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf,sCAAsC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,kCAAkC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;QAEhB,kCAAkC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB,wBAAwB;QACxB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAKD,WAAW,CAAC,EAAE;QACZ,2CAA2C;QAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;QAEZ,6CAA6C;QAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF;AAID;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAUjC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAY9B,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CA2BrE;AAuXD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAgB5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,mFAOlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAgBpE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spine-framework",
3
- "version": "0.1.39",
3
+ "version": "0.1.40",
4
4
  "private": false,
5
5
  "description": "Spine — enterprise application framework built on Supabase + Netlify + React",
6
6
  "type": "module",