rimelight-components 2.1.37 → 2.1.38

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 (152) hide show
  1. package/dist/module.d.mts +9 -0
  2. package/dist/module.d.ts +9 -0
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +15 -1
  5. package/dist/runtime/auth/index.d.ts +3 -0
  6. package/dist/runtime/auth/index.js +3 -0
  7. package/dist/runtime/auth/index.mjs +3 -0
  8. package/dist/runtime/auth/permissions.d.ts +201 -0
  9. package/dist/runtime/auth/permissions.js +32 -0
  10. package/dist/runtime/auth/permissions.mjs +32 -0
  11. package/dist/runtime/auth/restricted-usernames.d.ts +25 -0
  12. package/dist/runtime/auth/restricted-usernames.js +236 -0
  13. package/dist/runtime/auth/restricted-usernames.mjs +236 -0
  14. package/dist/runtime/auth/utils.d.ts +10 -0
  15. package/dist/runtime/auth/utils.js +20 -0
  16. package/dist/runtime/auth/utils.mjs +20 -0
  17. package/dist/runtime/components/FloatingToolsOverlay.d.vue.ts +3 -0
  18. package/dist/runtime/components/FloatingToolsOverlay.vue +74 -0
  19. package/dist/runtime/components/FloatingToolsOverlay.vue.d.ts +3 -0
  20. package/dist/runtime/components/app/Footer.vue +1 -1
  21. package/dist/runtime/components/app/Header.vue +1 -1
  22. package/dist/runtime/components/app/Image.vue +1 -1
  23. package/dist/runtime/components/app/Logo.vue +1 -1
  24. package/dist/runtime/components/app/NewsletterSignup.vue +1 -1
  25. package/dist/runtime/components/app/ScrollToTop.vue +1 -1
  26. package/dist/runtime/components/cards/TeamCard.vue +1 -1
  27. package/dist/runtime/components/content/Callout.vue +1 -1
  28. package/dist/runtime/components/content/Section.vue +1 -1
  29. package/dist/runtime/components/dashboard/NotificationsSlideover.d.vue.ts +3 -0
  30. package/dist/runtime/components/dashboard/NotificationsSlideover.vue +49 -0
  31. package/dist/runtime/components/dashboard/NotificationsSlideover.vue.d.ts +3 -0
  32. package/dist/runtime/components/dashboard/QuickActions.d.vue.ts +3 -0
  33. package/dist/runtime/components/dashboard/QuickActions.vue +36 -0
  34. package/dist/runtime/components/dashboard/QuickActions.vue.d.ts +3 -0
  35. package/dist/runtime/components/dashboard/TeamsMenu.d.vue.ts +6 -0
  36. package/dist/runtime/components/dashboard/TeamsMenu.vue +77 -0
  37. package/dist/runtime/components/dashboard/TeamsMenu.vue.d.ts +6 -0
  38. package/dist/runtime/components/dashboard/customers/AddModal.d.vue.ts +3 -0
  39. package/dist/runtime/components/dashboard/customers/AddModal.vue +45 -0
  40. package/dist/runtime/components/dashboard/customers/AddModal.vue.d.ts +3 -0
  41. package/dist/runtime/components/dashboard/customers/DeleteModal.d.vue.ts +16 -0
  42. package/dist/runtime/components/dashboard/customers/DeleteModal.vue +28 -0
  43. package/dist/runtime/components/dashboard/customers/DeleteModal.vue.d.ts +16 -0
  44. package/dist/runtime/components/dashboard/floating-tools/FocusTimerTool.d.vue.ts +3 -0
  45. package/dist/runtime/components/dashboard/floating-tools/FocusTimerTool.vue +37 -0
  46. package/dist/runtime/components/dashboard/floating-tools/FocusTimerTool.vue.d.ts +3 -0
  47. package/dist/runtime/components/headings/H1.d.vue.ts +13 -0
  48. package/dist/runtime/components/headings/H1.vue +9 -0
  49. package/dist/runtime/components/headings/H1.vue.d.ts +13 -0
  50. package/dist/runtime/components/headings/H2.d.vue.ts +13 -0
  51. package/dist/runtime/components/headings/H2.vue +9 -0
  52. package/dist/runtime/components/headings/H2.vue.d.ts +13 -0
  53. package/dist/runtime/components/headings/H3.d.vue.ts +13 -0
  54. package/dist/runtime/components/headings/H3.vue +9 -0
  55. package/dist/runtime/components/headings/H3.vue.d.ts +13 -0
  56. package/dist/runtime/components/headings/H4.d.vue.ts +13 -0
  57. package/dist/runtime/components/headings/H4.vue +9 -0
  58. package/dist/runtime/components/headings/H4.vue.d.ts +13 -0
  59. package/dist/runtime/components/headings/H5.d.vue.ts +13 -0
  60. package/dist/runtime/components/headings/H5.vue +9 -0
  61. package/dist/runtime/components/headings/H5.vue.d.ts +13 -0
  62. package/dist/runtime/components/headings/H6.d.vue.ts +13 -0
  63. package/dist/runtime/components/headings/H6.vue +9 -0
  64. package/dist/runtime/components/headings/H6.vue.d.ts +13 -0
  65. package/dist/runtime/components/modals/ConfirmModal.d.vue.ts +3 -0
  66. package/dist/runtime/components/modals/ConfirmModal.vue +36 -0
  67. package/dist/runtime/components/modals/ConfirmModal.vue.d.ts +3 -0
  68. package/dist/runtime/components/nodes/LinkNode.vue +1 -1
  69. package/dist/runtime/components/nodes/TextNode.vue +1 -1
  70. package/dist/runtime/components/notes/NoteCard.d.vue.ts +31 -0
  71. package/dist/runtime/components/notes/NoteCard.vue +86 -0
  72. package/dist/runtime/components/notes/NoteCard.vue.d.ts +31 -0
  73. package/dist/runtime/components/notes/NoteModal.d.vue.ts +35 -0
  74. package/dist/runtime/components/notes/NoteModal.vue +224 -0
  75. package/dist/runtime/components/notes/NoteModal.vue.d.ts +35 -0
  76. package/dist/runtime/components/page/PageMention.vue +1 -1
  77. package/dist/runtime/components/page/PageSurround.vue +1 -1
  78. package/dist/runtime/components/page/PageTOC.vue +1 -1
  79. package/dist/runtime/components/swatches/ColorSwatch.vue +1 -1
  80. package/dist/runtime/components/swatches/FontSwatch.vue +1 -1
  81. package/dist/runtime/components/swatches/ImageSwatch.vue +1 -1
  82. package/dist/runtime/components/utilities/Placeholder.vue +1 -1
  83. package/dist/runtime/composables/app/index.d.ts +4 -0
  84. package/dist/runtime/composables/app/index.js +4 -0
  85. package/dist/runtime/composables/app/index.mjs +4 -0
  86. package/dist/runtime/composables/app/useApi.d.ts +9 -0
  87. package/dist/runtime/composables/app/useApi.js +56 -0
  88. package/dist/runtime/composables/app/useApi.mjs +56 -0
  89. package/dist/runtime/composables/app/useConfirm.d.ts +18 -0
  90. package/dist/runtime/composables/app/useConfirm.js +56 -0
  91. package/dist/runtime/composables/app/useConfirm.mjs +56 -0
  92. package/dist/runtime/composables/components/index.d.ts +1 -0
  93. package/dist/runtime/composables/components/index.js +1 -0
  94. package/dist/runtime/composables/components/index.mjs +1 -0
  95. package/dist/runtime/composables/dashboard/index.d.ts +5 -0
  96. package/dist/runtime/composables/dashboard/index.js +5 -0
  97. package/dist/runtime/composables/dashboard/index.mjs +5 -0
  98. package/dist/runtime/composables/dashboard/useDashboard.d.ts +3 -0
  99. package/dist/runtime/composables/dashboard/useDashboard.js +18 -0
  100. package/dist/runtime/composables/dashboard/useDashboard.mjs +18 -0
  101. package/dist/runtime/composables/dashboard/useFloatingTools.d.ts +19 -0
  102. package/dist/runtime/composables/dashboard/useFloatingTools.js +44 -0
  103. package/dist/runtime/composables/dashboard/useFloatingTools.mjs +44 -0
  104. package/dist/runtime/composables/dashboard/useFocusTimer.d.ts +44 -0
  105. package/dist/runtime/composables/dashboard/useFocusTimer.js +141 -0
  106. package/dist/runtime/composables/dashboard/useFocusTimer.mjs +141 -0
  107. package/dist/runtime/composables/dashboard/useNotes.d.ts +9 -0
  108. package/dist/runtime/composables/dashboard/useNotes.js +57 -0
  109. package/dist/runtime/composables/dashboard/useNotes.mjs +57 -0
  110. package/dist/runtime/composables/dashboard/useQuickActions.d.ts +15 -0
  111. package/dist/runtime/composables/dashboard/useQuickActions.js +19 -0
  112. package/dist/runtime/composables/dashboard/useQuickActions.mjs +19 -0
  113. package/dist/runtime/composables/index.d.ts +4 -7
  114. package/dist/runtime/composables/index.js +4 -7
  115. package/dist/runtime/composables/index.mjs +4 -7
  116. package/dist/runtime/composables/pages/index.d.ts +4 -0
  117. package/dist/runtime/composables/pages/index.js +4 -0
  118. package/dist/runtime/composables/pages/index.mjs +4 -0
  119. package/dist/runtime/composables/{useBlockEditor.d.ts → pages/useBlockEditor.d.ts} +131 -131
  120. package/dist/runtime/composables/{useInfobox.d.ts → pages/useInfobox.d.ts} +1 -1
  121. package/dist/runtime/composables/{usePageEditor.d.ts → pages/usePageEditor.d.ts} +1 -1
  122. package/dist/runtime/composables/{usePageRegistry.d.ts → pages/usePageRegistry.d.ts} +2 -2
  123. package/dist/runtime/db/auth.d.ts +2096 -0
  124. package/dist/runtime/db/auth.js +268 -0
  125. package/dist/runtime/db/auth.mjs +268 -0
  126. package/dist/runtime/db/index.d.ts +1 -0
  127. package/dist/runtime/db/index.js +1 -0
  128. package/dist/runtime/db/index.mjs +1 -0
  129. package/dist/runtime/types/index.d.ts +1 -0
  130. package/dist/runtime/types/index.js +1 -0
  131. package/dist/runtime/types/index.mjs +1 -0
  132. package/dist/runtime/types/utils.d.ts +51 -0
  133. package/dist/runtime/types/utils.js +0 -0
  134. package/dist/runtime/types/utils.mjs +0 -0
  135. package/package.json +3 -1
  136. /package/dist/runtime/composables/{useDateRange.d.ts → app/useDateRange.d.ts} +0 -0
  137. /package/dist/runtime/composables/{useDateRange.js → app/useDateRange.js} +0 -0
  138. /package/dist/runtime/composables/{useDateRange.mjs → app/useDateRange.mjs} +0 -0
  139. /package/dist/runtime/composables/{useHeaderStack.d.ts → app/useHeaderStack.d.ts} +0 -0
  140. /package/dist/runtime/composables/{useHeaderStack.js → app/useHeaderStack.js} +0 -0
  141. /package/dist/runtime/composables/{useHeaderStack.mjs → app/useHeaderStack.mjs} +0 -0
  142. /package/dist/runtime/composables/{useRC.d.ts → components/useRC.d.ts} +0 -0
  143. /package/dist/runtime/composables/{useRC.js → components/useRC.js} +0 -0
  144. /package/dist/runtime/composables/{useRC.mjs → components/useRC.mjs} +0 -0
  145. /package/dist/runtime/composables/{useBlockEditor.js → pages/useBlockEditor.js} +0 -0
  146. /package/dist/runtime/composables/{useBlockEditor.mjs → pages/useBlockEditor.mjs} +0 -0
  147. /package/dist/runtime/composables/{useInfobox.js → pages/useInfobox.js} +0 -0
  148. /package/dist/runtime/composables/{useInfobox.mjs → pages/useInfobox.mjs} +0 -0
  149. /package/dist/runtime/composables/{usePageEditor.js → pages/usePageEditor.js} +0 -0
  150. /package/dist/runtime/composables/{usePageEditor.mjs → pages/usePageEditor.mjs} +0 -0
  151. /package/dist/runtime/composables/{usePageRegistry.js → pages/usePageRegistry.js} +0 -0
  152. /package/dist/runtime/composables/{usePageRegistry.mjs → pages/usePageRegistry.mjs} +0 -0
package/dist/module.d.mts CHANGED
@@ -25,6 +25,15 @@ interface ModuleOptions {
25
25
  declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, {
26
26
  enabled: boolean;
27
27
  prefix: string;
28
+ auth: {
29
+ restrictedUsernames: string[];
30
+ adminEmailDomain: string | null;
31
+ session: {
32
+ expiresIn: number;
33
+ updateAge: number;
34
+ freshAge: number;
35
+ };
36
+ };
28
37
  callouts: {
29
38
  info: {
30
39
  icon: string;
package/dist/module.d.ts CHANGED
@@ -25,6 +25,15 @@ interface ModuleOptions {
25
25
  declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, {
26
26
  enabled: boolean;
27
27
  prefix: string;
28
+ auth: {
29
+ restrictedUsernames: string[];
30
+ adminEmailDomain: string | null;
31
+ session: {
32
+ expiresIn: number;
33
+ updateAge: number;
34
+ freshAge: number;
35
+ };
36
+ };
28
37
  callouts: {
29
38
  info: {
30
39
  icon: string;
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimelight-components",
3
- "version": "2.1.37",
3
+ "version": "2.1.38",
4
4
  "docs": "https://rimelight.com/tools/rimelight-components",
5
5
  "configKey": "rimelightComponents",
6
6
  "compatibility": {
package/dist/module.mjs CHANGED
@@ -4,12 +4,24 @@ import { readdirSync } from 'node:fs';
4
4
  import { basename } from 'node:path';
5
5
 
6
6
  const name = "rimelight-components";
7
- const version = "2.1.37";
7
+ const version = "2.1.38";
8
8
  const homepage = "https://rimelight.com/tools/rimelight-components";
9
9
 
10
10
  const defaultOptions = {
11
11
  enabled: true,
12
12
  prefix: "RC",
13
+ auth: {
14
+ restrictedUsernames: [],
15
+ adminEmailDomain: null,
16
+ session: {
17
+ expiresIn: 60 * 60 * 24 * 7,
18
+ // 7 days
19
+ updateAge: 60 * 60 * 24,
20
+ // 1 day
21
+ freshAge: 60 * 15
22
+ // 15 minutes
23
+ }
24
+ },
13
25
  callouts: {
14
26
  info: {
15
27
  icon: "lucide:shield-alert",
@@ -190,6 +202,8 @@ const module$1 = defineNuxtModule().with({
190
202
  nuxt.options.alias["rimelight-components/composables"] = resolve("./runtime/composables");
191
203
  nuxt.options.alias["rimelight-components/types"] = resolve("./runtime/types");
192
204
  nuxt.options.alias["rimelight-components/utils"] = resolve("./runtime/utils");
205
+ nuxt.options.alias["rimelight-components/auth"] = resolve("./runtime/auth");
206
+ nuxt.options.alias["rimelight-components/db"] = resolve("./runtime/db");
193
207
  addComponentsDir({
194
208
  path: resolve("./runtime/components/"),
195
209
  pathPrefix: false,
@@ -0,0 +1,3 @@
1
+ export * from "./permissions.js";
2
+ export * from "./restricted-usernames.js";
3
+ export * from "./utils.js";
@@ -0,0 +1,3 @@
1
+ export * from "./permissions.js";
2
+ export * from "./restricted-usernames.js";
3
+ export * from "./utils.js";
@@ -0,0 +1,3 @@
1
+ export * from "./permissions.mjs";
2
+ export * from "./restricted-usernames.mjs";
3
+ export * from "./utils.mjs";
@@ -0,0 +1,201 @@
1
+ export declare const statement: {
2
+ readonly admin: readonly ["access"];
3
+ readonly organization: readonly ["create", "update", "delete"];
4
+ readonly team: readonly ["create", "update", "delete"];
5
+ readonly project: readonly ["create", "share", "update", "delete"];
6
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
7
+ readonly member: readonly ["create", "update", "delete"];
8
+ readonly invitation: readonly ["create", "cancel"];
9
+ readonly ac: readonly ["create", "read", "update", "delete"];
10
+ };
11
+ export declare const ac: {
12
+ newRole<K extends "admin" | "organization" | "team" | "project" | "blogPost" | "member" | "invitation" | "ac">(statements: import("better-auth/plugins").Subset<K, {
13
+ readonly admin: readonly ["access"];
14
+ readonly organization: readonly ["create", "update", "delete"];
15
+ readonly team: readonly ["create", "update", "delete"];
16
+ readonly project: readonly ["create", "share", "update", "delete"];
17
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
18
+ readonly member: readonly ["create", "update", "delete"];
19
+ readonly invitation: readonly ["create", "cancel"];
20
+ readonly ac: readonly ["create", "read", "update", "delete"];
21
+ }>): {
22
+ authorize<K_1 extends K>(request: K_1 extends infer T extends K_2 ? { [key in T]?: import("better-auth/plugins").Subset<K, {
23
+ readonly admin: readonly ["access"];
24
+ readonly organization: readonly ["create", "update", "delete"];
25
+ readonly team: readonly ["create", "update", "delete"];
26
+ readonly project: readonly ["create", "share", "update", "delete"];
27
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
28
+ readonly member: readonly ["create", "update", "delete"];
29
+ readonly invitation: readonly ["create", "cancel"];
30
+ readonly ac: readonly ["create", "read", "update", "delete"];
31
+ }>[key] | {
32
+ actions: import("better-auth/plugins").Subset<K, {
33
+ readonly admin: readonly ["access"];
34
+ readonly organization: readonly ["create", "update", "delete"];
35
+ readonly team: readonly ["create", "update", "delete"];
36
+ readonly project: readonly ["create", "share", "update", "delete"];
37
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
38
+ readonly member: readonly ["create", "update", "delete"];
39
+ readonly invitation: readonly ["create", "cancel"];
40
+ readonly ac: readonly ["create", "read", "update", "delete"];
41
+ }>[key];
42
+ connector: "OR" | "AND";
43
+ } | undefined; } : never, connector?: "OR" | "AND"): import("better-auth/plugins").AuthorizeResponse;
44
+ statements: import("better-auth/plugins").Subset<K, {
45
+ readonly admin: readonly ["access"];
46
+ readonly organization: readonly ["create", "update", "delete"];
47
+ readonly team: readonly ["create", "update", "delete"];
48
+ readonly project: readonly ["create", "share", "update", "delete"];
49
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
50
+ readonly member: readonly ["create", "update", "delete"];
51
+ readonly invitation: readonly ["create", "cancel"];
52
+ readonly ac: readonly ["create", "read", "update", "delete"];
53
+ }>;
54
+ };
55
+ statements: {
56
+ readonly admin: readonly ["access"];
57
+ readonly organization: readonly ["create", "update", "delete"];
58
+ readonly team: readonly ["create", "update", "delete"];
59
+ readonly project: readonly ["create", "share", "update", "delete"];
60
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
61
+ readonly member: readonly ["create", "update", "delete"];
62
+ readonly invitation: readonly ["create", "cancel"];
63
+ readonly ac: readonly ["create", "read", "update", "delete"];
64
+ };
65
+ };
66
+ export declare const owner: {
67
+ authorize<K_1 extends "organization" | "team" | "project" | "blogPost" | "member" | "invitation" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: import("better-auth/plugins").Subset<"organization" | "team" | "project" | "blogPost" | "member" | "invitation" | "ac", {
68
+ readonly admin: readonly ["access"];
69
+ readonly organization: readonly ["create", "update", "delete"];
70
+ readonly team: readonly ["create", "update", "delete"];
71
+ readonly project: readonly ["create", "share", "update", "delete"];
72
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
73
+ readonly member: readonly ["create", "update", "delete"];
74
+ readonly invitation: readonly ["create", "cancel"];
75
+ readonly ac: readonly ["create", "read", "update", "delete"];
76
+ }>[key] | {
77
+ actions: import("better-auth/plugins").Subset<"organization" | "team" | "project" | "blogPost" | "member" | "invitation" | "ac", {
78
+ readonly admin: readonly ["access"];
79
+ readonly organization: readonly ["create", "update", "delete"];
80
+ readonly team: readonly ["create", "update", "delete"];
81
+ readonly project: readonly ["create", "share", "update", "delete"];
82
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
83
+ readonly member: readonly ["create", "update", "delete"];
84
+ readonly invitation: readonly ["create", "cancel"];
85
+ readonly ac: readonly ["create", "read", "update", "delete"];
86
+ }>[key];
87
+ connector: "OR" | "AND";
88
+ } | undefined; } : never, connector?: "OR" | "AND"): import("better-auth/plugins").AuthorizeResponse;
89
+ statements: import("better-auth/plugins").Subset<"organization" | "team" | "project" | "blogPost" | "member" | "invitation" | "ac", {
90
+ readonly admin: readonly ["access"];
91
+ readonly organization: readonly ["create", "update", "delete"];
92
+ readonly team: readonly ["create", "update", "delete"];
93
+ readonly project: readonly ["create", "share", "update", "delete"];
94
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
95
+ readonly member: readonly ["create", "update", "delete"];
96
+ readonly invitation: readonly ["create", "cancel"];
97
+ readonly ac: readonly ["create", "read", "update", "delete"];
98
+ }>;
99
+ };
100
+ export declare const admin: {
101
+ authorize<K_1 extends "admin" | "organization" | "team" | "project" | "member" | "invitation" | "ac">(request: K_1 extends infer T extends K ? { [key in T]?: import("better-auth/plugins").Subset<"admin" | "organization" | "team" | "project" | "member" | "invitation" | "ac", {
102
+ readonly admin: readonly ["access"];
103
+ readonly organization: readonly ["create", "update", "delete"];
104
+ readonly team: readonly ["create", "update", "delete"];
105
+ readonly project: readonly ["create", "share", "update", "delete"];
106
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
107
+ readonly member: readonly ["create", "update", "delete"];
108
+ readonly invitation: readonly ["create", "cancel"];
109
+ readonly ac: readonly ["create", "read", "update", "delete"];
110
+ }>[key] | {
111
+ actions: import("better-auth/plugins").Subset<"admin" | "organization" | "team" | "project" | "member" | "invitation" | "ac", {
112
+ readonly admin: readonly ["access"];
113
+ readonly organization: readonly ["create", "update", "delete"];
114
+ readonly team: readonly ["create", "update", "delete"];
115
+ readonly project: readonly ["create", "share", "update", "delete"];
116
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
117
+ readonly member: readonly ["create", "update", "delete"];
118
+ readonly invitation: readonly ["create", "cancel"];
119
+ readonly ac: readonly ["create", "read", "update", "delete"];
120
+ }>[key];
121
+ connector: "OR" | "AND";
122
+ } | undefined; } : never, connector?: "OR" | "AND"): import("better-auth/plugins").AuthorizeResponse;
123
+ statements: import("better-auth/plugins").Subset<"admin" | "organization" | "team" | "project" | "member" | "invitation" | "ac", {
124
+ readonly admin: readonly ["access"];
125
+ readonly organization: readonly ["create", "update", "delete"];
126
+ readonly team: readonly ["create", "update", "delete"];
127
+ readonly project: readonly ["create", "share", "update", "delete"];
128
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
129
+ readonly member: readonly ["create", "update", "delete"];
130
+ readonly invitation: readonly ["create", "cancel"];
131
+ readonly ac: readonly ["create", "read", "update", "delete"];
132
+ }>;
133
+ };
134
+ export declare const member: {
135
+ authorize<K_1 extends "project">(request: K_1 extends infer T extends K ? { [key in T]?: import("better-auth/plugins").Subset<"project", {
136
+ readonly admin: readonly ["access"];
137
+ readonly organization: readonly ["create", "update", "delete"];
138
+ readonly team: readonly ["create", "update", "delete"];
139
+ readonly project: readonly ["create", "share", "update", "delete"];
140
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
141
+ readonly member: readonly ["create", "update", "delete"];
142
+ readonly invitation: readonly ["create", "cancel"];
143
+ readonly ac: readonly ["create", "read", "update", "delete"];
144
+ }>[key] | {
145
+ actions: import("better-auth/plugins").Subset<"project", {
146
+ readonly admin: readonly ["access"];
147
+ readonly organization: readonly ["create", "update", "delete"];
148
+ readonly team: readonly ["create", "update", "delete"];
149
+ readonly project: readonly ["create", "share", "update", "delete"];
150
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
151
+ readonly member: readonly ["create", "update", "delete"];
152
+ readonly invitation: readonly ["create", "cancel"];
153
+ readonly ac: readonly ["create", "read", "update", "delete"];
154
+ }>[key];
155
+ connector: "OR" | "AND";
156
+ } | undefined; } : never, connector?: "OR" | "AND"): import("better-auth/plugins").AuthorizeResponse;
157
+ statements: import("better-auth/plugins").Subset<"project", {
158
+ readonly admin: readonly ["access"];
159
+ readonly organization: readonly ["create", "update", "delete"];
160
+ readonly team: readonly ["create", "update", "delete"];
161
+ readonly project: readonly ["create", "share", "update", "delete"];
162
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
163
+ readonly member: readonly ["create", "update", "delete"];
164
+ readonly invitation: readonly ["create", "cancel"];
165
+ readonly ac: readonly ["create", "read", "update", "delete"];
166
+ }>;
167
+ };
168
+ export declare const user: {
169
+ authorize<K_1 extends "project">(request: K_1 extends infer T extends K ? { [key in T]?: import("better-auth/plugins").Subset<"project", {
170
+ readonly admin: readonly ["access"];
171
+ readonly organization: readonly ["create", "update", "delete"];
172
+ readonly team: readonly ["create", "update", "delete"];
173
+ readonly project: readonly ["create", "share", "update", "delete"];
174
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
175
+ readonly member: readonly ["create", "update", "delete"];
176
+ readonly invitation: readonly ["create", "cancel"];
177
+ readonly ac: readonly ["create", "read", "update", "delete"];
178
+ }>[key] | {
179
+ actions: import("better-auth/plugins").Subset<"project", {
180
+ readonly admin: readonly ["access"];
181
+ readonly organization: readonly ["create", "update", "delete"];
182
+ readonly team: readonly ["create", "update", "delete"];
183
+ readonly project: readonly ["create", "share", "update", "delete"];
184
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
185
+ readonly member: readonly ["create", "update", "delete"];
186
+ readonly invitation: readonly ["create", "cancel"];
187
+ readonly ac: readonly ["create", "read", "update", "delete"];
188
+ }>[key];
189
+ connector: "OR" | "AND";
190
+ } | undefined; } : never, connector?: "OR" | "AND"): import("better-auth/plugins").AuthorizeResponse;
191
+ statements: import("better-auth/plugins").Subset<"project", {
192
+ readonly admin: readonly ["access"];
193
+ readonly organization: readonly ["create", "update", "delete"];
194
+ readonly team: readonly ["create", "update", "delete"];
195
+ readonly project: readonly ["create", "share", "update", "delete"];
196
+ readonly blogPost: readonly ["create", "edit", "publish", "delete"];
197
+ readonly member: readonly ["create", "update", "delete"];
198
+ readonly invitation: readonly ["create", "cancel"];
199
+ readonly ac: readonly ["create", "read", "update", "delete"];
200
+ }>;
201
+ };
@@ -0,0 +1,32 @@
1
+ import { createAccessControl } from "better-auth/plugins/access";
2
+ import { adminAc, defaultStatements, ownerAc } from "better-auth/plugins/organization/access";
3
+ const customStatements = {
4
+ admin: ["access"],
5
+ organization: ["create", "update", "delete"],
6
+ team: ["create", "update", "delete"],
7
+ project: ["create", "share", "update", "delete"],
8
+ blogPost: ["create", "edit", "publish", "delete"]
9
+ };
10
+ export const statement = {
11
+ ...defaultStatements,
12
+ ...customStatements
13
+ };
14
+ export const ac = createAccessControl(statement);
15
+ export const owner = ac.newRole({
16
+ ...ownerAc.statements,
17
+ team: ["create", "update", "delete"],
18
+ project: ["create", "update", "delete"],
19
+ blogPost: ["create", "edit", "publish", "delete"]
20
+ });
21
+ export const admin = ac.newRole({
22
+ ...adminAc.statements,
23
+ admin: ["access"],
24
+ team: ["create", "update", "delete"],
25
+ project: ["create", "update"]
26
+ });
27
+ export const member = ac.newRole({
28
+ project: ["create"]
29
+ });
30
+ export const user = ac.newRole({
31
+ project: ["create"]
32
+ });
@@ -0,0 +1,32 @@
1
+ import { createAccessControl } from "better-auth/plugins/access";
2
+ import { adminAc, defaultStatements, ownerAc } from "better-auth/plugins/organization/access";
3
+ const customStatements = {
4
+ admin: ["access"],
5
+ organization: ["create", "update", "delete"],
6
+ team: ["create", "update", "delete"],
7
+ project: ["create", "share", "update", "delete"],
8
+ blogPost: ["create", "edit", "publish", "delete"]
9
+ };
10
+ export const statement = {
11
+ ...defaultStatements,
12
+ ...customStatements
13
+ };
14
+ export const ac = createAccessControl(statement);
15
+ export const owner = ac.newRole({
16
+ ...ownerAc.statements,
17
+ team: ["create", "update", "delete"],
18
+ project: ["create", "update", "delete"],
19
+ blogPost: ["create", "edit", "publish", "delete"]
20
+ });
21
+ export const admin = ac.newRole({
22
+ ...adminAc.statements,
23
+ admin: ["access"],
24
+ team: ["create", "update", "delete"],
25
+ project: ["create", "update"]
26
+ });
27
+ export const member = ac.newRole({
28
+ project: ["create"]
29
+ });
30
+ export const user = ac.newRole({
31
+ project: ["create"]
32
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Generates a "Skeleton" of the username.
3
+ * If two usernames have the same skeleton, they are visually too similar.
4
+ */
5
+ export declare const generateUsernameSkeleton: (input: string) => string;
6
+ /**
7
+ * Normalizes a string by:
8
+ * 1. Converting to lowercase.
9
+ * 2. Mapping homoglyphs/leetspeak to base characters.
10
+ * 3. Removing all non-alphanumeric characters.
11
+ */
12
+ export declare const normalizeUsername: (input: string) => string;
13
+ export declare const STANDARD_RESTRICTED_GROUPS: {
14
+ readonly STAFF_ROLES: readonly ["admin", "administrator", "moderator", "mod", "staff", "support", "help", "official", "verified", "system", "root", "bot", "security", "community", "manager", "dev", "developer", "designer", "gamemaster", "gm", "assistant", "coordinator", "representative", "agent", "supervisor", "executive", "ambassador", "expert", "specialist", "advocate", "internal", "employee", "associate", "webmaster", "sysop", "operator", "host", "referee", "council", "ceo", "founder", "owner"];
15
+ readonly LEGAL_FINANCIAL: readonly ["checkout", "subscribe", "subscription", "premium", "vip", "store", "shop", "marketplace", "wallet", "refund", "invoice", "payout", "rewards", "prize", "giveaway", "claims", "verification", "billing", "payment", "sales", "marketing", "legal", "compliance", "privacy", "tos", "terms", "copyright", "trademark", "dmca", "abuse", "report"];
16
+ readonly TECHNICAL: readonly ["null", "undefined", "nan", "none", "everyone", "all", "guest", "user", "test", "tester", "account", "api", "webhook", "index", "config", "settings", "profile", "auth", "login", "signup", "signin", "logout", "signout", "localhost", "ftp", "smtp", "pop3", "imap", "dns", "proxy", "cdn", "static", "assets", "media", "upload", "download", "docs", "manual", "guide", "tutorial", "error", "404", "500", "maintenance", "update", "patch", "changelog", "status", "db", "database", "sql", "query", "health", "ping", "metrics", "logs", "no-reply", "noreply", "donotreply", "security-alert", "mail", "email", "postmaster"];
17
+ readonly LEETSPEAK: readonly ["4dmin", "@dmin", "st4ff", "m0d", "m0derator", "4dm1n", "4dmin1strator", "m0d3rator", "st4f", "5upport", "0fficial", "v3rified", "5ystem", "r00t", "b0t", "s3curity", "d3v", "d3veloper", "@dministrator", "adm1n", "adm1nistrator"];
18
+ };
19
+ export declare const STANDARD_RESTRICTED_USERNAMES: string[];
20
+ /**
21
+ * Creates a restricted username set with optional app-specific additions.
22
+ * Use this in your app to extend the standard set.
23
+ */
24
+ export declare const createRestrictedSet: (appSpecificUsernames?: string[]) => Set<string>;
25
+ export declare const RESTRICTED_SET: Set<string>;
@@ -0,0 +1,236 @@
1
+ const HOMOGLYPH_MAP = {
2
+ "0": "o",
3
+ "1": "i",
4
+ "3": "e",
5
+ "4": "a",
6
+ "5": "s",
7
+ "7": "t",
8
+ "8": "b",
9
+ "9": "g",
10
+ "@": "a",
11
+ "!": "i",
12
+ $: "s",
13
+ "|": "i"
14
+ };
15
+ const SKELETON_MAP = {
16
+ // Leetspeak & Numbers
17
+ "0": "o",
18
+ "1": "i",
19
+ "3": "e",
20
+ "4": "a",
21
+ "5": "s",
22
+ "6": "g",
23
+ "7": "t",
24
+ "8": "b",
25
+ "9": "g",
26
+ // Special Characters
27
+ "@": "a",
28
+ $: "s",
29
+ "!": "i",
30
+ "|": "i",
31
+ "+": "t",
32
+ "(": "c",
33
+ "[": "c",
34
+ "{": "c",
35
+ // Cyrillic Homoglyphs
36
+ \u0430: "a",
37
+ \u0435: "e",
38
+ \u0456: "i",
39
+ \u0458: "j",
40
+ \u043E: "o",
41
+ \u0440: "p",
42
+ \u0441: "c",
43
+ \u0443: "y",
44
+ \u0445: "x",
45
+ // Greek Homoglyphs
46
+ \u03B1: "a",
47
+ \u03B5: "e",
48
+ \u03B9: "i",
49
+ \u03BF: "o",
50
+ \u03C1: "p",
51
+ \u03C5: "y",
52
+ \u03C7: "x"
53
+ };
54
+ export const generateUsernameSkeleton = (input) => {
55
+ const normalized = input.normalize("NFKD");
56
+ return normalized.toLowerCase().split("").map((char) => {
57
+ if (char.match(/[\u0300-\u036f]/)) return "";
58
+ return SKELETON_MAP[char] || char;
59
+ }).join("").replace(/[^a-z0-9]/g, "");
60
+ };
61
+ export const normalizeUsername = (input) => {
62
+ return input.toLowerCase().split("").map((char) => HOMOGLYPH_MAP[char] || char).join("").replace(/[^a-z0-9]/g, "");
63
+ };
64
+ export const STANDARD_RESTRICTED_GROUPS = {
65
+ STAFF_ROLES: [
66
+ "admin",
67
+ "administrator",
68
+ "moderator",
69
+ "mod",
70
+ "staff",
71
+ "support",
72
+ "help",
73
+ "official",
74
+ "verified",
75
+ "system",
76
+ "root",
77
+ "bot",
78
+ "security",
79
+ "community",
80
+ "manager",
81
+ "dev",
82
+ "developer",
83
+ "designer",
84
+ "gamemaster",
85
+ "gm",
86
+ "assistant",
87
+ "coordinator",
88
+ "representative",
89
+ "agent",
90
+ "supervisor",
91
+ "executive",
92
+ "ambassador",
93
+ "expert",
94
+ "specialist",
95
+ "advocate",
96
+ "internal",
97
+ "employee",
98
+ "associate",
99
+ "webmaster",
100
+ "sysop",
101
+ "operator",
102
+ "host",
103
+ "referee",
104
+ "council",
105
+ "ceo",
106
+ "founder",
107
+ "owner"
108
+ ],
109
+ LEGAL_FINANCIAL: [
110
+ "checkout",
111
+ "subscribe",
112
+ "subscription",
113
+ "premium",
114
+ "vip",
115
+ "store",
116
+ "shop",
117
+ "marketplace",
118
+ "wallet",
119
+ "refund",
120
+ "invoice",
121
+ "payout",
122
+ "rewards",
123
+ "prize",
124
+ "giveaway",
125
+ "claims",
126
+ "verification",
127
+ "billing",
128
+ "payment",
129
+ "sales",
130
+ "marketing",
131
+ "legal",
132
+ "compliance",
133
+ "privacy",
134
+ "tos",
135
+ "terms",
136
+ "copyright",
137
+ "trademark",
138
+ "dmca",
139
+ "abuse",
140
+ "report"
141
+ ],
142
+ TECHNICAL: [
143
+ "null",
144
+ "undefined",
145
+ "nan",
146
+ "none",
147
+ "everyone",
148
+ "all",
149
+ "guest",
150
+ "user",
151
+ "test",
152
+ "tester",
153
+ "account",
154
+ "api",
155
+ "webhook",
156
+ "index",
157
+ "config",
158
+ "settings",
159
+ "profile",
160
+ "auth",
161
+ "login",
162
+ "signup",
163
+ "signin",
164
+ "logout",
165
+ "signout",
166
+ "localhost",
167
+ "ftp",
168
+ "smtp",
169
+ "pop3",
170
+ "imap",
171
+ "dns",
172
+ "proxy",
173
+ "cdn",
174
+ "static",
175
+ "assets",
176
+ "media",
177
+ "upload",
178
+ "download",
179
+ "docs",
180
+ "manual",
181
+ "guide",
182
+ "tutorial",
183
+ "error",
184
+ "404",
185
+ "500",
186
+ "maintenance",
187
+ "update",
188
+ "patch",
189
+ "changelog",
190
+ "status",
191
+ "db",
192
+ "database",
193
+ "sql",
194
+ "query",
195
+ "health",
196
+ "ping",
197
+ "metrics",
198
+ "logs",
199
+ "no-reply",
200
+ "noreply",
201
+ "donotreply",
202
+ "security-alert",
203
+ "mail",
204
+ "email",
205
+ "postmaster"
206
+ ],
207
+ LEETSPEAK: [
208
+ "4dmin",
209
+ "@dmin",
210
+ "st4ff",
211
+ "m0d",
212
+ "m0derator",
213
+ "4dm1n",
214
+ "4dmin1strator",
215
+ "m0d3rator",
216
+ "st4f",
217
+ "5upport",
218
+ "0fficial",
219
+ "v3rified",
220
+ "5ystem",
221
+ "r00t",
222
+ "b0t",
223
+ "s3curity",
224
+ "d3v",
225
+ "d3veloper",
226
+ "@dministrator",
227
+ "adm1n",
228
+ "adm1nistrator"
229
+ ]
230
+ };
231
+ export const STANDARD_RESTRICTED_USERNAMES = Object.values(STANDARD_RESTRICTED_GROUPS).flat().map((name) => normalizeUsername(name));
232
+ export const createRestrictedSet = (appSpecificUsernames = []) => {
233
+ const normalizedAppSpecific = appSpecificUsernames.map((name) => normalizeUsername(name));
234
+ return /* @__PURE__ */ new Set([...STANDARD_RESTRICTED_USERNAMES, ...normalizedAppSpecific]);
235
+ };
236
+ export const RESTRICTED_SET = new Set(STANDARD_RESTRICTED_USERNAMES);