@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/CHANGELOG.md +9 -1
- package/dist/access-react.cjs +17 -25
- package/dist/access-react.cjs.map +1 -1
- package/dist/access-react.js +19 -27
- package/dist/access-react.js.map +1 -1
- package/dist/core.cjs +31 -40
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +8 -11
- package/dist/core.d.ts +8 -11
- package/dist/core.js +36 -45
- package/dist/core.js.map +1 -1
- package/dist/react.cjs +224 -86
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +24 -3
- package/dist/react.d.ts +24 -3
- package/dist/react.js +225 -86
- package/dist/react.js.map +1 -1
- package/package.json +4 -4
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
|
-
|
|
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
|
|
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
|
|
3712
|
-
const base = process.env.NEXT_PUBLIC_APP_URL || (typeof window !== "undefined" ? window.location.origin : "");
|
|
3713
|
-
return
|
|
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
|
|
3716
|
-
|
|
3717
|
-
|
|
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),
|