@ai-matrx/sharing 0.1.0 → 0.1.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.
package/dist/core.cjs CHANGED
@@ -123,11 +123,11 @@ __export(core_exports, {
123
123
  makePrivate: () => makePrivate,
124
124
  makePublic: () => makePublic,
125
125
  myPendingTableInvitations: () => myPendingTableInvitations,
126
- normalizePermissionLevel: () => normalizePermissionLevel,
126
+ normalizePermissionLevel: () => import_access3.normalizePermissionLevel,
127
127
  onlyOpenOrganizations: () => onlyOpenOrganizations,
128
128
  openSecureDelivery: () => openSecureDelivery,
129
129
  organizationDisambiguators: () => organizationDisambiguators,
130
- parsePermissionLevel: () => parsePermissionLevel,
130
+ parsePermissionLevel: () => import_access3.parsePermissionLevel,
131
131
  passThroughDispatch: () => passThroughDispatch,
132
132
  peekTableShare: () => peekTableShare,
133
133
  permissionLevelRank: () => permissionLevelRank,
@@ -3559,28 +3559,16 @@ function getResourceSharePath(resourceType, resourceId) {
3559
3559
  // src/core/levels.ts
3560
3560
  var import_access = require("@ai-matrx/data/access");
3561
3561
  var import_access2 = require("@ai-matrx/data/access");
3562
- function normalizePermissionLevel(raw) {
3563
- if (raw === "edit_content") return "editor";
3564
- return (0, import_access.isPermissionLevel)(raw) ? raw : null;
3565
- }
3562
+ var import_access3 = require("@ai-matrx/data/access");
3566
3563
  var OFFERED_DB_PERMISSION_LEVELS = import_access.DB_PERMISSION_LEVELS;
3567
3564
  var PERMISSION_LEVEL_RANK = {
3568
3565
  ...import_access.PERMISSION_LEVEL_RANK,
3569
3566
  edit_content: import_access.PERMISSION_LEVEL_RANK.editor
3570
3567
  };
3571
- function parsePermissionLevel(raw, context) {
3572
- const level = normalizePermissionLevel(raw);
3573
- if (level) return level;
3574
- if (raw === null || raw === void 0) return null;
3575
- console.error(
3576
- `[permissions] ${context}: unrecognised permission level ${JSON.stringify(raw)}. Known levels are ${import_access.PERMISSION_LEVELS.join(", ")}. Add it to PERMISSION_LEVELS in utils/permissions/levels.ts (the package ladder is re-exported there) if the database gained a new value.`
3577
- );
3578
- return null;
3579
- }
3580
3568
  function permissionLevelRank(level) {
3581
3569
  const rank = PERMISSION_LEVEL_RANK[level];
3582
3570
  if (rank === void 0) {
3583
- console.error(`[permissions] no rank for permission level ${JSON.stringify(level)}. Add it to PERMISSION_LEVELS in utils/permissions/levels.ts.`);
3571
+ console.error(`[permissions] no rank for permission level ${JSON.stringify(level)}. Add it to PERMISSION_LEVELS in @ai-matrx/data/access (permissionLevels.ts).`);
3584
3572
  return Number.NaN;
3585
3573
  }
3586
3574
  return rank;
@@ -3708,13 +3696,16 @@ async function getShareCapabilities(resourceType) {
3708
3696
  rowChildColumn: typeof data.row_child_column === "string" ? data.row_child_column : null
3709
3697
  };
3710
3698
  }
3711
- function shareLinkUrl(token) {
3712
- const base = process.env.NEXT_PUBLIC_APP_URL || (typeof window !== "undefined" ? window.location.origin : "");
3713
- return `${base}/s/${token}`;
3699
+ function shareBase(origin) {
3700
+ const base = origin || process.env.NEXT_PUBLIC_APP_URL || (typeof window !== "undefined" ? window.location.origin : "");
3701
+ return base.replace(/\/+$/, "");
3714
3702
  }
3715
- function shareUrlForLink(link) {
3716
- const base = process.env.NEXT_PUBLIC_APP_URL || (typeof window !== "undefined" ? window.location.origin : "");
3717
- return link.shortToken ? (0, import_short_link.shortLinkUrl)(base, link.shortToken) : shareLinkUrl(link.token);
3703
+ function shareLinkUrl(token, origin) {
3704
+ return `${shareBase(origin)}/s/${token}`;
3705
+ }
3706
+ function shareUrlForLink(link, origin) {
3707
+ const base = shareBase(origin);
3708
+ return link.shortToken ? (0, import_short_link.shortLinkUrl)(base, link.shortToken) : shareLinkUrl(link.token, base);
3718
3709
  }
3719
3710
  async function createShareLink(options) {
3720
3711
  try {
@@ -3785,7 +3776,7 @@ async function forkSharedResource(resourceType, resourceId, shareToken, organiza
3785
3776
  try {
3786
3777
  const orgId = await ensureOrgId(organizationId);
3787
3778
  if (resourceType === "conversation") {
3788
- const { data, error } = await supabase.rpc("fork_shared_conversation", {
3779
+ const { data, error } = await supabase.schema("chat").rpc("fork_shared_conversation", {
3789
3780
  p_conversation_id: resourceId,
3790
3781
  p_organization_id: orgId,
3791
3782
  p_token: shareToken ?? void 0
@@ -3795,7 +3786,7 @@ async function forkSharedResource(resourceType, resourceId, shareToken, organiza
3795
3786
  return r?.success ? { success: true, path: `/chat/${r.conversation_id}` } : { success: false, error: r?.error };
3796
3787
  }
3797
3788
  if (resourceType === "fc_set") {
3798
- const { data, error } = await supabase.rpc("fork_shared_flashcard_set", {
3789
+ const { data, error } = await supabase.schema("education").rpc("fork_shared_flashcard_set", {
3799
3790
  p_set_id: resourceId,
3800
3791
  p_organization_id: orgId,
3801
3792
  p_token: shareToken ?? void 0
@@ -3805,7 +3796,7 @@ async function forkSharedResource(resourceType, resourceId, shareToken, organiza
3805
3796
  return r?.success ? { success: true, path: `/education/flashcards/${r.set_id}` } : { success: false, error: r?.error };
3806
3797
  }
3807
3798
  if (resourceType === "quiz_session") {
3808
- const { data, error } = await supabase.rpc("fork_shared_quiz", {
3799
+ const { data, error } = await supabase.schema("education").rpc("fork_shared_quiz", {
3809
3800
  p_quiz_id: resourceId,
3810
3801
  p_organization_id: orgId,
3811
3802
  p_token: shareToken ?? void 0
@@ -3826,7 +3817,7 @@ function isForkable(resourceType) {
3826
3817
  return resourceType === "conversation" || resourceType === "fc_set" || resourceType === "quiz_session";
3827
3818
  }
3828
3819
  async function resolveShareToken(token, client = supabase) {
3829
- const { data, error } = await client.rpc("resolve_share_token", {
3820
+ const { data, error } = await client.schema("iam").rpc("resolve_share_token", {
3830
3821
  p_token: token
3831
3822
  });
3832
3823
  if (error) {
@@ -3910,7 +3901,7 @@ async function writeRowControl(resourceType, resourceId, patch) {
3910
3901
  return { success: true };
3911
3902
  }
3912
3903
  async function writeStoreRowControls(resourceType, resourceId, controls) {
3913
- const { data: lane, error: laneError } = await supabase.rpc("store_door_lane", {
3904
+ const { data: lane, error: laneError } = await supabase.schema("workbench").rpc("store_door_lane", {
3914
3905
  p_resource_type: resourceType,
3915
3906
  p_resource_id: resourceId
3916
3907
  });
@@ -3944,7 +3935,7 @@ async function getResourceVisibility(resourceType, resourceId) {
3944
3935
  );
3945
3936
  }
3946
3937
  if (entry.schemaName === "custom") {
3947
- const { data: data2, error: error2 } = await supabase.rpc("store_door_lane", {
3938
+ const { data: data2, error: error2 } = await supabase.schema("workbench").rpc("store_door_lane", {
3948
3939
  p_resource_type: resourceType,
3949
3940
  p_resource_id: resourceId
3950
3941
  });
@@ -4063,7 +4054,7 @@ async function shareWithUser(options) {
4063
4054
  permissionLevel,
4064
4055
  organizationId
4065
4056
  } = options;
4066
- const { data, error } = await supabase.rpc("share_resource_with_user", {
4057
+ const { data, error } = await supabase.schema("iam").rpc("share_resource_with_user", {
4067
4058
  p_resource_type: resourceType,
4068
4059
  p_resource_id: resourceId,
4069
4060
  p_target_user_id: userId,
@@ -4114,7 +4105,7 @@ async function shareWithUser(options) {
4114
4105
  async function grantOrgAvailability(options) {
4115
4106
  try {
4116
4107
  const { resourceType, resourceId, organizationId, permissionLevel } = options;
4117
- const { data, error } = await supabase.rpc("grant_org_availability", {
4108
+ const { data, error } = await supabase.schema("iam").rpc("grant_org_availability", {
4118
4109
  p_resource_type: resourceType,
4119
4110
  p_resource_id: resourceId,
4120
4111
  p_target_org_id: organizationId,
@@ -4176,7 +4167,7 @@ async function makePrivate(resourceType, resourceId) {
4176
4167
  }
4177
4168
  async function revokeUserAccess(resourceType, resourceId, userId) {
4178
4169
  try {
4179
- const { data, error } = await supabase.rpc("revoke_resource_access", {
4170
+ const { data, error } = await supabase.schema("iam").rpc("revoke_resource_access", {
4180
4171
  p_resource_type: resourceType,
4181
4172
  p_resource_id: resourceId,
4182
4173
  p_target_user_id: userId
@@ -4199,7 +4190,7 @@ async function revokeUserAccess(resourceType, resourceId, userId) {
4199
4190
  }
4200
4191
  async function revokeOrgAccess(resourceType, resourceId, organizationId) {
4201
4192
  try {
4202
- const { data, error } = await supabase.rpc("revoke_resource_org_access", {
4193
+ const { data, error } = await supabase.schema("iam").rpc("revoke_resource_org_access", {
4203
4194
  p_resource_type: resourceType,
4204
4195
  p_resource_id: resourceId,
4205
4196
  p_target_org_id: organizationId
@@ -4240,7 +4231,7 @@ async function updatePermissionLevel(options) {
4240
4231
  if (!userId && !organizationId) {
4241
4232
  return { success: false, error: "Must specify userId or organizationId" };
4242
4233
  }
4243
- const { data, error } = await supabase.rpc("update_permission_level", {
4234
+ const { data, error } = await supabase.schema("iam").rpc("update_permission_level", {
4244
4235
  p_resource_type: resourceType,
4245
4236
  p_resource_id: resourceId,
4246
4237
  p_target_user_id: userId,
@@ -4268,7 +4259,7 @@ async function updatePermissionLevel(options) {
4268
4259
  }
4269
4260
  async function listPermissions(resourceType, resourceId) {
4270
4261
  try {
4271
- const { data, error } = await supabase.rpc("get_resource_permissions", {
4262
+ const { data, error } = await supabase.schema("iam").rpc("get_resource_permissions", {
4272
4263
  p_resource_type: resourceType,
4273
4264
  p_resource_id: resourceId
4274
4265
  });
@@ -4347,7 +4338,7 @@ async function resolveSharingAuthority(resourceType, resourceId) {
4347
4338
  };
4348
4339
  }
4349
4340
  try {
4350
- const { data, error } = await supabase.rpc("may_manage_sharing", {
4341
+ const { data, error } = await supabase.schema("iam").rpc("may_manage_sharing", {
4351
4342
  p_resource_type: resourceType,
4352
4343
  p_resource_id: resourceId
4353
4344
  });
@@ -4642,7 +4633,7 @@ async function fetchEntityTitles(entityType, ids) {
4642
4633
  const unique = Array.from(new Set(ids.filter(Boolean)));
4643
4634
  if (unique.length === 0) return out;
4644
4635
  const supabase2 = createClient();
4645
- const { data, error } = await supabase2.rpc("entity_titles", {
4636
+ const { data, error } = await supabase2.schema("platform").rpc("entity_titles", {
4646
4637
  p_type: entityType,
4647
4638
  p_ids: unique
4648
4639
  });
@@ -5161,7 +5152,7 @@ async function revokeOutside(organizationId, invitationId) {
5161
5152
  return data;
5162
5153
  }
5163
5154
  async function peekTableShare(token) {
5164
- const { data, error } = await createClient().rpc("table_share_peek", { p_token: token });
5155
+ const { data, error } = await createClient().schema("iam").rpc("table_share_peek", { p_token: token });
5165
5156
  if (error) throw new Error(error.message);
5166
5157
  return data;
5167
5158
  }
@@ -5317,7 +5308,7 @@ function readOrganizationMemberRows2(orgId, {
5317
5308
  const db = client ?? createClient();
5318
5309
  const entry = { at: now, settled: false, rows: Promise.resolve([]) };
5319
5310
  const rows = (async () => {
5320
- const { data, error } = await db.rpc("get_organization_members_with_users", {
5311
+ const { data, error } = await db.schema("iam").rpc("get_organization_members_with_users", {
5321
5312
  p_org_id: orgId
5322
5313
  });
5323
5314
  if (error) throw (0, import_data.pgErrorToError)(error);
@@ -5364,7 +5355,7 @@ function toRole(value) {
5364
5355
  return value === "admin" || value === "member" ? value : null;
5365
5356
  }
5366
5357
  async function listTeams(organizationId, includeArchived = false) {
5367
- const { data, error } = await shareClient().rpc("team_list", { p_organization_id: organizationId, p_include_archived: includeArchived });
5358
+ const { data, error } = await shareClient().schema("iam").rpc("team_list", { p_organization_id: organizationId, p_include_archived: includeArchived });
5368
5359
  if (error) throw (0, import_data2.pgErrorToError)(error);
5369
5360
  return (data ?? []).map((row) => ({
5370
5361
  id: String(row.id),
@@ -5380,7 +5371,7 @@ async function listTeams(organizationId, includeArchived = false) {
5380
5371
  }));
5381
5372
  }
5382
5373
  async function listTeamMembers(teamId) {
5383
- const { data, error } = await shareClient().rpc("team_members", { p_team_id: teamId });
5374
+ const { data, error } = await shareClient().schema("iam").rpc("team_members", { p_team_id: teamId });
5384
5375
  if (error) throw (0, import_data2.pgErrorToError)(error);
5385
5376
  return (data ?? []).map((row) => ({
5386
5377
  userId: String(row.user_id),