cauthy-auth 0.28.0 → 0.30.0

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 (45) hide show
  1. package/README.md +52 -1
  2. package/dist/{cauthy-XkIbG5gE.d.mts → cauthy-BXgsZ-Um.d.mts} +19 -1
  3. package/dist/{cauthy-DGAy45G2.d.ts → cauthy-CHENs452.d.ts} +19 -1
  4. package/dist/cli.js +155 -54
  5. package/dist/client.d.mts +47 -7
  6. package/dist/client.d.ts +47 -7
  7. package/dist/client.js +23 -1
  8. package/dist/client.js.map +1 -1
  9. package/dist/client.mjs +23 -1
  10. package/dist/client.mjs.map +1 -1
  11. package/dist/express.d.mts +2 -2
  12. package/dist/express.d.ts +2 -2
  13. package/dist/fastify.d.mts +2 -2
  14. package/dist/fastify.d.ts +2 -2
  15. package/dist/hono.d.mts +2 -2
  16. package/dist/hono.d.ts +2 -2
  17. package/dist/index.d.mts +2 -2
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.js +352 -131
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +350 -131
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/next.d.mts +2 -2
  24. package/dist/next.d.ts +2 -2
  25. package/dist/react.d.mts +214 -18
  26. package/dist/react.d.ts +214 -18
  27. package/dist/react.js +129 -32
  28. package/dist/react.js.map +1 -1
  29. package/dist/react.mjs +129 -32
  30. package/dist/react.mjs.map +1 -1
  31. package/dist/svelte.d.mts +2 -2
  32. package/dist/svelte.d.ts +2 -2
  33. package/dist/svelte.js +37 -2
  34. package/dist/svelte.js.map +1 -1
  35. package/dist/svelte.mjs +37 -2
  36. package/dist/svelte.mjs.map +1 -1
  37. package/dist/{system-BxMsSIu1.d.mts → system-0mHrdAgO.d.mts} +312 -112
  38. package/dist/{system-DTIeDXDP.d.ts → system-BIYbS7h2.d.ts} +312 -112
  39. package/dist/vue.d.mts +2 -2
  40. package/dist/vue.d.ts +2 -2
  41. package/dist/vue.js +37 -2
  42. package/dist/vue.js.map +1 -1
  43. package/dist/vue.mjs +37 -2
  44. package/dist/vue.mjs.map +1 -1
  45. package/package.json +1 -1
package/dist/vue.mjs CHANGED
@@ -257,6 +257,12 @@ function checkOrganization(value, required = false) {
257
257
  if (v.length > MAX_ORGANIZATION) return { field: "organization", code: "too_long", message: `Use at most ${MAX_ORGANIZATION} characters.` };
258
258
  return null;
259
259
  }
260
+ function checkOrganizationName(value) {
261
+ const v = typeof value === "string" ? value.trim() : "";
262
+ if (v === "") return { field: "name", code: "required", message: "Enter the organization's name." };
263
+ if (v.length > MAX_ORGANIZATION) return { field: "name", code: "too_long", message: `Use at most ${MAX_ORGANIZATION} characters.` };
264
+ return null;
265
+ }
260
266
  function checkCode(value) {
261
267
  const v = typeof value === "string" ? value.trim() : "";
262
268
  if (v === "") return { field: "code", code: "required", message: "Enter the code." };
@@ -509,7 +515,23 @@ function createAuthClient(options = {}) {
509
515
  add: (id, f) => post("/me/organizations/members/add", { organizationId: id, email: f.email, role: f.role, name: f.name ?? "", locale: f.locale ?? "" }, checkEmail(f.email)),
510
516
  setRole: (id, userId, role) => post("/me/organizations/members/role", { organizationId: id, userId, role }, null),
511
517
  remove: (id, userId) => post("/me/organizations/members/remove", { organizationId: id, userId }, null),
512
- inviteAgain: (id, userId, f = {}) => post("/me/organizations/members/invite", { organizationId: id, userId, locale: f.locale ?? "" }, null)
518
+ inviteAgain: (id, userId, f = {}) => post("/me/organizations/members/invite", { organizationId: id, userId, locale: f.locale ?? "" }, null),
519
+ rename: (id, name) => post("/me/organizations/rename", { organizationId: id, name }, checkOrganizationName(name)),
520
+ archive: (id) => post("/me/organizations/archive", { organizationId: id }, null),
521
+ delete: (id) => post("/me/organizations/delete", { organizationId: id }, null),
522
+ async check(q) {
523
+ const organizationId = typeof q.organization === "string" ? q.organization : q.organization?.id ?? "";
524
+ const r = await post("/me/organizations/check", {
525
+ organizationId,
526
+ resource: q.resource,
527
+ action: q.action,
528
+ ...q.attributes !== void 0 ? { attributes: q.attributes } : {},
529
+ ...q.resourceId !== void 0 ? { resourceId: q.resourceId } : {},
530
+ ...q.ownerId !== void 0 ? { ownerId: q.ownerId } : {}
531
+ }, null);
532
+ if (!r.ok) return { allowed: false, reason: r.error.message, error: r.error };
533
+ return { allowed: r.allowed === true, reason: String(r.reason ?? ""), ...r.rule ? { rule: r.rule } : {} };
534
+ }
513
535
  },
514
536
  account: {
515
537
  async get() {
@@ -713,7 +735,9 @@ function can(organization, resource, action) {
713
735
  if ((organization.denied ?? []).some((d) => matches(d, resource, action))) return false;
714
736
  return organization.permissions.some((p) => matches(p, resource, action));
715
737
  }
716
- function definePolicy(roles) {
738
+ function definePolicy(given) {
739
+ const roles = Array.isArray(given) ? given : given.roles;
740
+ const resources = Array.isArray(given) ? [] : given.catalog ?? [];
717
741
  const entry = (p) => `${p.resource}:${p.action}`;
718
742
  const byName = new Map(roles.map((r) => [r.role, r]));
719
743
  const split = (permission) => {
@@ -728,6 +752,12 @@ function definePolicy(roles) {
728
752
  ...r.inherits ? { inherits: [...r.inherits] } : {},
729
753
  ...r.permissions ? { permissions: r.permissions.map((p) => ({ ...p })) } : {}
730
754
  })),
755
+ catalog: resources.map((c) => ({
756
+ resource: c.resource,
757
+ ...c.description !== void 0 ? { description: c.description } : {},
758
+ actions: [...c.actions],
759
+ ...c.attributes ? { attributes: { ...c.attributes } } : {}
760
+ })),
731
761
  roleNames: roles.map((r) => r.role),
732
762
  permissions: [...new Set(roles.flatMap((r) => (r.permissions ?? []).map(entry)))],
733
763
  can(organization, permission) {
@@ -749,6 +779,11 @@ function definePolicy(roles) {
749
779
  };
750
780
  walk(role);
751
781
  return [...out];
782
+ },
783
+ // The types did the work; this only hands the question on, as a method of
784
+ // the asker so it keeps its `this`.
785
+ check(asker, ...args) {
786
+ return asker.check(...args);
752
787
  }
753
788
  };
754
789
  }