@antelopejs/interface-dms 0.7.4 → 0.8.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.
- package/CHANGELOG.md +107 -0
- package/dist/auth/index.d.ts +3 -3
- package/dist/auth/index.js +11 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/internal/jwt-auth-decorator.d.ts +20 -0
- package/dist/auth/internal/jwt-auth-decorator.js +51 -0
- package/dist/auth/internal/jwt-auth-decorator.js.map +1 -0
- package/dist/auth/internal/request-authenticators.d.ts +12 -0
- package/dist/auth/internal/request-authenticators.js +22 -0
- package/dist/auth/internal/request-authenticators.js.map +1 -1
- package/dist/base/activity-feed.d.ts +6 -6
- package/dist/base/block-registry/types.d.ts +16 -0
- package/dist/base/block-types.d.ts +1 -0
- package/dist/base/block-types.js +1 -0
- package/dist/base/block-types.js.map +1 -1
- package/dist/base/chart-card.d.ts +15 -0
- package/dist/base/chart-card.js +4 -0
- package/dist/base/chart-card.js.map +1 -1
- package/dist/base/chart-schemas.d.ts +26 -26
- package/dist/base/code-block.d.ts +3 -3
- package/dist/base/data-types/compare-types.js +19 -13
- package/dist/base/data-types/compare-types.js.map +1 -1
- package/dist/base/data-types/core.d.ts +11 -0
- package/dist/base/data-types/core.js +14 -1
- package/dist/base/data-types/core.js.map +1 -1
- package/dist/base/data-types/default-types.d.ts +112 -2
- package/dist/base/data-types/default-types.js +90 -19
- package/dist/base/data-types/default-types.js.map +1 -1
- package/dist/base/data-types/field-types.d.ts +10 -4
- package/dist/base/data-types/field-types.js +12 -2
- package/dist/base/data-types/field-types.js.map +1 -1
- package/dist/base/data-types/internal/compare-types.d.ts +3 -0
- package/dist/base/data-types/internal/compare-types.js +7 -0
- package/dist/base/data-types/internal/compare-types.js.map +1 -1
- package/dist/base/empty-state.d.ts +4 -4
- package/dist/base/form-block-schema.d.ts +59 -3
- package/dist/base/form-block-schema.js +12 -2
- package/dist/base/form-block-schema.js.map +1 -1
- package/dist/base/form-schema.d.ts +46 -1
- package/dist/base/form-schema.js.map +1 -1
- package/dist/base/form-types.d.ts +56 -13
- package/dist/base/form-types.js +12 -4
- package/dist/base/form-types.js.map +1 -1
- package/dist/base/guard.d.ts +6 -6
- package/dist/base/helpers/archive-mode-helpers.js +6 -2
- package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
- package/dist/base/index.d.ts +1 -0
- package/dist/base/index.js +1 -0
- package/dist/base/index.js.map +1 -1
- package/dist/base/internal/form-schema.js +2 -0
- package/dist/base/internal/form-schema.js.map +1 -1
- package/dist/base/internal/layouts.d.ts +4 -0
- package/dist/base/key-value-list.d.ts +12 -9
- package/dist/base/key-value-list.js +1 -1
- package/dist/base/key-value-list.js.map +1 -1
- package/dist/base/kpi-card.d.ts +39 -5
- package/dist/base/kpi-card.js +18 -6
- package/dist/base/kpi-card.js.map +1 -1
- package/dist/base/layouts.d.ts +24 -0
- package/dist/base/layouts.js.map +1 -1
- package/dist/base/live-toggle.d.ts +11 -0
- package/dist/base/live-toggle.js +8 -1
- package/dist/base/live-toggle.js.map +1 -1
- package/dist/base/page-toolbar.d.ts +158 -0
- package/dist/base/page-toolbar.js +198 -0
- package/dist/base/page-toolbar.js.map +1 -0
- package/dist/base/period-selector.d.ts +9 -2
- package/dist/base/period-selector.js.map +1 -1
- package/dist/base/placeholder.d.ts +2 -2
- package/dist/base/section.d.ts +2 -2
- package/dist/base/stack.d.ts +2 -2
- package/dist/base/stat-group.d.ts +18 -6
- package/dist/base/stat-group.js +9 -0
- package/dist/base/stat-group.js.map +1 -1
- package/dist/base/table-view/column-display.d.ts +9 -5
- package/dist/base/table-view/column-display.js +1 -1
- package/dist/base/table-view/column-display.js.map +1 -1
- package/dist/base/table-view/data-functions.d.ts +26 -7
- package/dist/base/table-view/data-functions.js +10 -6
- package/dist/base/table-view/data-functions.js.map +1 -1
- package/dist/base/table-view/factory.js +24 -13
- package/dist/base/table-view/factory.js.map +1 -1
- package/dist/base/table-view/internal/auth.d.ts +2 -0
- package/dist/base/table-view/internal/auth.js +3 -1
- package/dist/base/table-view/internal/auth.js.map +1 -1
- package/dist/base/table-view/internal/factory-helpers.d.ts +5 -0
- package/dist/base/table-view/internal/factory-helpers.js +55 -11
- package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
- package/dist/base/table-view/internal/guards.js +19 -2
- package/dist/base/table-view/internal/guards.js.map +1 -1
- package/dist/base/table-view/internal/realtime.js +17 -0
- package/dist/base/table-view/internal/realtime.js.map +1 -1
- package/dist/base/table-view/internal/resource-form.js +1 -0
- package/dist/base/table-view/internal/resource-form.js.map +1 -1
- package/dist/base/table-view/internal/row-actions-schema.d.ts +296 -0
- package/dist/base/table-view/internal/row-actions-schema.js +62 -0
- package/dist/base/table-view/internal/row-actions-schema.js.map +1 -0
- package/dist/base/table-view/internal/validation.d.ts +15 -3
- package/dist/base/table-view/internal/validation.js +70 -2
- package/dist/base/table-view/internal/validation.js.map +1 -1
- package/dist/base/table-view/meta.d.ts +8 -0
- package/dist/base/table-view/meta.js +25 -3
- package/dist/base/table-view/meta.js.map +1 -1
- package/dist/base/table-view/options.d.ts +90 -16
- package/dist/base/table-view/options.js.map +1 -1
- package/dist/base/table-view/realtime.d.ts +8 -0
- package/dist/base/table-view/realtime.js.map +1 -1
- package/dist/base/table-view/routes.js +5 -2
- package/dist/base/table-view/routes.js.map +1 -1
- package/dist/base/table-view/schema.d.ts +36 -30
- package/dist/base/table-view/schema.js +11 -57
- package/dist/base/table-view/schema.js.map +1 -1
- package/dist/base/table-view/source.d.ts +1 -1
- package/dist/base/table-view/source.js +4 -1
- package/dist/base/table-view/source.js.map +1 -1
- package/dist/base/table-view.d.ts +2 -2
- package/dist/base/table-view.js.map +1 -1
- package/dist/base/top-list-card.d.ts +5 -5
- package/dist/base/types/action-target.d.ts +77 -20
- package/dist/base/types/confirm-dialog.d.ts +5 -1
- package/dist/base/types/custom-button.d.ts +5 -3
- package/dist/base/types/field-config.d.ts +4 -4
- package/dist/base/types/guards.d.ts +10 -0
- package/dist/base/types/row-action.d.ts +6 -1
- package/dist/base/types/size.d.ts +3 -1
- package/dist/client-ip.d.ts +6 -2
- package/dist/client-ip.js +4 -2
- package/dist/client-ip.js.map +1 -1
- package/dist/component.d.ts +8 -0
- package/dist/component.js.map +1 -1
- package/dist/data-controllers/members.d.ts +0 -3
- package/dist/data-controllers/members.js +30 -8
- package/dist/data-controllers/members.js.map +1 -1
- package/dist/db/internal/tenantLifecycle.model.js +5 -2
- package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
- package/dist/guards.js +2 -3
- package/dist/guards.js.map +1 -1
- package/dist/hooks.d.ts +41 -5
- package/dist/hooks.js +5 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/invite-membership.d.ts +9 -0
- package/dist/internal/invite-membership.js +25 -7
- package/dist/internal/invite-membership.js.map +1 -1
- package/dist/internal/member-changes.d.ts +24 -0
- package/dist/internal/member-changes.js +66 -0
- package/dist/internal/member-changes.js.map +1 -0
- package/dist/internal/tenant-ownership.d.ts +4 -1
- package/dist/internal/tenant-ownership.js +4 -10
- package/dist/internal/tenant-ownership.js.map +1 -1
- package/dist/invite-extensions.d.ts +0 -9
- package/dist/invite-extensions.js +1 -36
- package/dist/invite-extensions.js.map +1 -1
- package/dist/invite-resolution.js +6 -2
- package/dist/invite-resolution.js.map +1 -1
- package/dist/invites.js +36 -22
- package/dist/invites.js.map +1 -1
- package/dist/layout-banners.d.ts +40 -4
- package/dist/layout-banners.js +25 -3
- package/dist/layout-banners.js.map +1 -1
- package/dist/notifications/internal.d.ts +2 -2
- package/dist/notifications/internal.js.map +1 -1
- package/dist/notifications/sendable.d.ts +3 -2
- package/dist/notifications/sendable.js +2 -1
- package/dist/notifications/sendable.js.map +1 -1
- package/dist/notifications/types.d.ts +9 -0
- package/dist/page/controllers.d.ts +44 -0
- package/dist/page/controllers.js +14 -1
- package/dist/page/controllers.js.map +1 -1
- package/dist/page/internal/layout-filter.d.ts +2 -1
- package/dist/page/internal/layout-filter.js +3 -1
- package/dist/page/internal/layout-filter.js.map +1 -1
- package/dist/page/internal/metadata-helpers.d.ts +7 -0
- package/dist/page/internal/metadata-helpers.js +13 -2
- package/dist/page/internal/metadata-helpers.js.map +1 -1
- package/dist/page/internal/page-registration.d.ts +2 -0
- package/dist/page/internal/page-registration.js.map +1 -1
- package/dist/page/layout-filter.js +31 -10
- package/dist/page/layout-filter.js.map +1 -1
- package/dist/page/metadata.js +29 -24
- package/dist/page/metadata.js.map +1 -1
- package/dist/page/types.d.ts +39 -4
- package/dist/page/types.js.map +1 -1
- package/dist/page.d.ts +1 -1
- package/dist/page.js +2 -1
- package/dist/page.js.map +1 -1
- package/dist/permissions-resolver.d.ts +26 -3
- package/dist/permissions-resolver.js +2 -1
- package/dist/permissions-resolver.js.map +1 -1
- package/dist/permissions.d.ts +7 -3
- package/dist/permissions.js +8 -6
- package/dist/permissions.js.map +1 -1
- package/dist/realtime.d.ts +24 -1
- package/dist/realtime.js +7 -1
- package/dist/realtime.js.map +1 -1
- package/dist/request-tenant.d.ts +17 -13
- package/dist/request-tenant.js +54 -42
- package/dist/request-tenant.js.map +1 -1
- package/dist/tenant-members.d.ts +26 -0
- package/dist/tenant-members.js +29 -0
- package/dist/tenant-members.js.map +1 -0
- package/dist/tenant-ownership.d.ts +4 -1
- package/dist/tenant-ownership.js +12 -17
- package/dist/tenant-ownership.js.map +1 -1
- package/dist/tenant-scoped-model.d.ts +2 -1
- package/dist/tenant-scoped-model.js +4 -3
- package/dist/tenant-scoped-model.js.map +1 -1
- package/docs/1.core/10.layout-banners.md +57 -2
- package/docs/1.core/2.pages-and-modules.md +20 -11
- package/docs/1.core/4.permissions.md +34 -1
- package/docs/1.core/5.tenancy.md +37 -6
- package/docs/1.core/7.hooks.md +12 -2
- package/docs/1.core/8.realtime.md +24 -3
- package/docs/2.auth/2.authentication.md +3 -3
- package/docs/3.base/1.introduction.md +1 -0
- package/docs/3.base/10.display-blocks.md +20 -2
- package/docs/3.base/2.types.md +7 -5
- package/docs/3.base/3.forms.md +21 -6
- package/docs/3.base/4.tables.md +14 -9
- package/docs/3.base/5.charts-and-widgets.md +8 -4
- package/docs/3.base/6.layout.md +38 -1
- package/docs/3.base/8.data-types.md +14 -7
- package/docs/4.notifications/3.sending.md +4 -3
- package/docs/5.html-render/1.introduction.md +5 -7
- package/package.json +3 -7
package/dist/hooks.d.ts
CHANGED
|
@@ -41,7 +41,11 @@ export declare enum Hook {
|
|
|
41
41
|
INVITE_CREATED = "invite:created",
|
|
42
42
|
INVITE_DELETED = "invite:deleted",
|
|
43
43
|
MEMBER_BEING_ADDED = "member:being-added",
|
|
44
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Policy veto, fired by `changeTenantMembers` under lifecycle admission
|
|
46
|
+
* before every membership write — one call per {@link MemberChange}, roles
|
|
47
|
+
* and removals included. Throwing refuses the write.
|
|
48
|
+
*/
|
|
45
49
|
MEMBER_BEING_CHANGED = "member:being-changed",
|
|
46
50
|
MEMBER_ADDED = "member:added",
|
|
47
51
|
MEMBER_REMOVED = "member:removed",
|
|
@@ -109,11 +113,43 @@ export interface InviteDeletedHookPayload {
|
|
|
109
113
|
/** Payloads the invitation carried, for handlers that must undo their work. */
|
|
110
114
|
extensions?: InviteExtensionPayloads | null;
|
|
111
115
|
}
|
|
112
|
-
/**
|
|
113
|
-
export interface
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
/** A user joins the tenant. */
|
|
117
|
+
export interface MemberAddedChange {
|
|
118
|
+
kind: "added";
|
|
119
|
+
userId: string;
|
|
120
|
+
isTenantOwner: boolean;
|
|
121
|
+
roleIds: string[];
|
|
122
|
+
/** Stable invite delivery identity; it does not exempt the change from policy. */
|
|
123
|
+
deliveryId?: string;
|
|
124
|
+
}
|
|
125
|
+
/** A member leaves the tenant: removed by an admin, or deleting their account. */
|
|
126
|
+
export interface MemberRemovedChange {
|
|
127
|
+
kind: "removed";
|
|
128
|
+
userId: string;
|
|
129
|
+
isTenantOwner: boolean;
|
|
116
130
|
}
|
|
131
|
+
/** A member's roles change, ownership untouched. */
|
|
132
|
+
export interface MemberRolesChange {
|
|
133
|
+
kind: "roles";
|
|
134
|
+
userId: string;
|
|
135
|
+
roleIds: string[];
|
|
136
|
+
previousRoleIds: string[];
|
|
137
|
+
}
|
|
138
|
+
/** A member is given or loses the owner role. */
|
|
139
|
+
export interface MemberOwnershipChange {
|
|
140
|
+
kind: "ownership";
|
|
141
|
+
userId: string;
|
|
142
|
+
isTenantOwner: boolean;
|
|
143
|
+
previousIsTenantOwner: boolean;
|
|
144
|
+
}
|
|
145
|
+
/** One membership change `changeTenantMembers` announces before writing it. */
|
|
146
|
+
export type MemberChange = MemberAddedChange | MemberRemovedChange | MemberRolesChange | MemberOwnershipChange;
|
|
147
|
+
/** The tenant a {@link MemberChange} happens in. */
|
|
148
|
+
export interface MemberChangeScope {
|
|
149
|
+
tenantId: string;
|
|
150
|
+
}
|
|
151
|
+
/** Seat classification belongs to the consumer, including support exemptions. */
|
|
152
|
+
export type MemberChangeHookPayload = MemberChange & MemberChangeScope;
|
|
117
153
|
export interface MemberHookPayload {
|
|
118
154
|
tenantId: string;
|
|
119
155
|
userId: string;
|
package/dist/hooks.js
CHANGED
|
@@ -67,7 +67,11 @@ var Hook;
|
|
|
67
67
|
Hook["INVITE_CREATED"] = "invite:created";
|
|
68
68
|
Hook["INVITE_DELETED"] = "invite:deleted";
|
|
69
69
|
Hook["MEMBER_BEING_ADDED"] = "member:being-added";
|
|
70
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Policy veto, fired by `changeTenantMembers` under lifecycle admission
|
|
72
|
+
* before every membership write — one call per {@link MemberChange}, roles
|
|
73
|
+
* and removals included. Throwing refuses the write.
|
|
74
|
+
*/
|
|
71
75
|
Hook["MEMBER_BEING_CHANGED"] = "member:being-changed";
|
|
72
76
|
Hook["MEMBER_ADDED"] = "member:added";
|
|
73
77
|
Hook["MEMBER_REMOVED"] = "member:removed";
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,10 +7,10 @@ export * from "./hooks";
|
|
|
7
7
|
export { InviteAcceptHandler, InviteCleanupContext, InviteCleanupHandler, InviteCleanupReason, InviteExtensionContext, InviteExtensionOptions, InviteExtensionPayloads, InviteExtensionPlacement, InviteUpdateHandler, RegisterInviteExtension, } from "./invite-extensions";
|
|
8
8
|
export * from "./invite-resolution";
|
|
9
9
|
export { CreateUserInviteTokenOptions, CreateUserInviteTokenResult, INVITE_EXPIRY_DAYS, INVITE_TOKEN_LENGTH, InviteUserToTenantOptions, InviteUserToTenantResult, createUserInviteToken, inviteUserToTenant, inviteeDisplayName, } from "./invites";
|
|
10
|
-
export { LayoutBannerComponentInfo, LayoutBannerContext, LayoutBannerInfo, LayoutBannerTextInfo, LayoutBannerVariant, LayoutBannerVisibility, RegisterLayoutBanner, } from "./layout-banners";
|
|
11
|
-
export { AddFrontendModule, AddFrontendModuleOptions, Category, CategoryInfo, ClearPageLayoutBySlug, DynamicMenuItem, DynamicMenuProviderInfo, DynamicMenuResolver, FrontendModuleMetadata, FrontendModuleOptions, FrontendModuleValue, FrontendRendererMetadata, GetComponentPermissionIds, GetFrontendModules, GetPageLayoutBySlug, GetPermissionId, GetRegisteredPageIds, MODULE_URL_PREFIX, MaybePromise, MenuItemQuery, MenuItemStatus, MenuItemType, MenuItemVariant, MenuOptions, ModuleCatalogContext, ModuleInfo, ModuleReadoutLine, ModuleReadoutTone, ModuleStatus, NotifyMenuChanged, PAGE_ROUTE_PREFIX, PageController, PageExtensionComponent, PageExtensionInfo, PageInfo, PageLayout, PageLayoutHandler, PageMetadata, PageSetupCleanup, PageSetupContext, PageSetupFunction, PageValidation, RegisterDynamicMenuProvider, RegisterModule, RegisterPage, RegisterPageExtension, RootCategory, RootPageController, isInsideModule, modulesCategory, pageRoutePath, pagesCategory, settingsCategory, } from "./page";
|
|
10
|
+
export { LayoutBannerComponentInfo, LayoutBannerContext, LayoutBannerInfo, LayoutBannerScope, LayoutBannerTextInfo, LayoutBannerVariant, LayoutBannerVisibility, RegisterLayoutBanner, } from "./layout-banners";
|
|
11
|
+
export { AddFrontendModule, AddFrontendModuleOptions, Category, CategoryInfo, ClearPageLayoutBySlug, DynamicMenuItem, DynamicMenuProviderInfo, DynamicMenuResolver, FrontendModuleContext, FrontendModuleFunction, FrontendModuleMetadata, FrontendModuleOptions, FrontendModuleRegistration, FrontendModuleValue, FrontendRendererMetadata, GetComponentPermissionIds, GetFrontendModules, GetPageLayoutBySlug, GetPermissionId, GetRegisteredPageIds, MODULE_URL_PREFIX, MaybePromise, MenuItemQuery, MenuItemStatus, MenuItemType, MenuItemVariant, MenuOptions, ModuleCatalogContext, ModuleInfo, ModuleReadoutLine, ModuleReadoutTone, ModuleStatus, NotifyMenuChanged, PAGE_ROUTE_PREFIX, PageController, PageExtensionComponent, PageExtensionInfo, PageInfo, PageLayout, PageLayoutHandler, PageLayoutRequest, PageMetadata, PageSetupCleanup, PageSetupContext, PageSetupFunction, PageValidation, RegisterDynamicMenuProvider, RegisterModule, RegisterPage, RegisterPageExtension, RootCategory, RootPageController, isInsideModule, modulesCategory, pageRoutePath, pagesCategory, settingsCategory, } from "./page";
|
|
12
12
|
export { GetEffectiveUserPermissions, GetPermission, GetPermissions, GetUserPermissions, HasAnyPermission, HasPermission, IsModuleScopedPermission, MarkModuleScopedPermission, Permission, PermissionTree, RegisterPermission, UnmarkModuleScopedPermission, UnregisterPermission, } from "./permissions";
|
|
13
|
-
export { ApplyPermissionsResolvers, PermissionsResolverFn, PermissionsResolverInfo, RegisterPermissionsResolver, } from "./permissions-resolver";
|
|
13
|
+
export { ApplyPermissionsResolvers, PermissionsResolverContext, PermissionsResolverFn, PermissionsResolverInfo, PermissionsResolverPreview, RegisterPermissionsResolver, } from "./permissions-resolver";
|
|
14
14
|
export { QuickAction, QuickActionCategory, QuickActionCategoryInfo, QuickActionInfo, QuickActionPageTarget, QuickActionTarget, } from "./quick-actions";
|
|
15
15
|
export { PublishMessage, PublishMessageOptions, RealtimeMessage, RealtimeMessageHandler, RegisterPageTopic, SubscribeMessage, UnsubscribeMessage, } from "./realtime";
|
|
16
16
|
export * from "./permission-gate";
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.StampUploadFieldTokens = exports.SignUploadToken = exports.RegisterTenantAccessGate = exports.CheckTenantAccess = exports.AssertTenantAccess = exports.SubscribeMessage = exports.RegisterPageTopic = exports.PublishMessage = exports.QuickActionCategory = exports.QuickAction = exports.RegisterPermissionsResolver = void 0;
|
|
17
|
+
exports.UnregisterPermission = exports.UnmarkModuleScopedPermission = exports.RegisterPermission = exports.MarkModuleScopedPermission = exports.IsModuleScopedPermission = exports.HasPermission = exports.HasAnyPermission = exports.GetUserPermissions = exports.GetPermissions = exports.GetPermission = exports.GetEffectiveUserPermissions = exports.settingsCategory = exports.pagesCategory = exports.pageRoutePath = exports.modulesCategory = exports.isInsideModule = exports.RootPageController = exports.RootCategory = exports.RegisterPageExtension = exports.RegisterPage = exports.RegisterModule = exports.RegisterDynamicMenuProvider = exports.PageMetadata = exports.PageController = exports.PAGE_ROUTE_PREFIX = exports.NotifyMenuChanged = exports.MODULE_URL_PREFIX = exports.GetRegisteredPageIds = exports.GetPermissionId = exports.GetPageLayoutBySlug = exports.GetFrontendModules = exports.GetComponentPermissionIds = exports.ClearPageLayoutBySlug = exports.Category = exports.AddFrontendModule = exports.RegisterLayoutBanner = exports.LayoutBannerVariant = exports.LayoutBannerScope = exports.inviteeDisplayName = exports.inviteUserToTenant = exports.createUserInviteToken = exports.INVITE_TOKEN_LENGTH = exports.INVITE_EXPIRY_DAYS = exports.RegisterInviteExtension = exports.authenticateTenantRequest = exports.AuthUserWithPermission = exports.AuthTenantOwner = exports.AuthTenantMember = exports.SaveComponentFiles = exports.GetAttachmentValidationMetadata = void 0;
|
|
18
|
+
exports.StampUploadFieldTokens = exports.SignUploadToken = exports.RegisterTenantAccessGate = exports.CheckTenantAccess = exports.AssertTenantAccess = exports.SubscribeMessage = exports.RegisterPageTopic = exports.PublishMessage = exports.QuickActionCategory = exports.QuickAction = exports.RegisterPermissionsResolver = exports.ApplyPermissionsResolvers = void 0;
|
|
19
19
|
// The DMS interface root. It re-exports the public surface of the `dms`
|
|
20
20
|
// interface modules; the domain folders (`auth`, `base`, `notifications`,
|
|
21
21
|
// `html-render`) and the database layer (`db`, `data-controllers`) keep their
|
|
@@ -47,6 +47,7 @@ Object.defineProperty(exports, "createUserInviteToken", { enumerable: true, get:
|
|
|
47
47
|
Object.defineProperty(exports, "inviteUserToTenant", { enumerable: true, get: function () { return invites_1.inviteUserToTenant; } });
|
|
48
48
|
Object.defineProperty(exports, "inviteeDisplayName", { enumerable: true, get: function () { return invites_1.inviteeDisplayName; } });
|
|
49
49
|
var layout_banners_1 = require("./layout-banners");
|
|
50
|
+
Object.defineProperty(exports, "LayoutBannerScope", { enumerable: true, get: function () { return layout_banners_1.LayoutBannerScope; } });
|
|
50
51
|
Object.defineProperty(exports, "LayoutBannerVariant", { enumerable: true, get: function () { return layout_banners_1.LayoutBannerVariant; } });
|
|
51
52
|
Object.defineProperty(exports, "RegisterLayoutBanner", { enumerable: true, get: function () { return layout_banners_1.RegisterLayoutBanner; } });
|
|
52
53
|
var page_1 = require("./page");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,oCAAoC;AACpC,6CAMuB;AAFrB,8HAAA,+BAA+B,OAAA;AAC/B,iHAAA,kBAAkB,OAAA;AAEpB,8CAA4B;AAC5B,oDAAkC;AAClC,8CAA4B;AAC5B,mCAOkB;AANhB,0GAAA,gBAAgB,OAAA;AAChB,yGAAA,eAAe,OAAA;AACf,gHAAA,sBAAsB,OAAA;AAGtB,mHAAA,yBAAyB,OAAA;AAE3B,0CAAwB;AACxB,yDAW6B;AAD3B,4HAAA,uBAAuB,OAAA;AAEzB,sDAAoC;AACpC,qCAUmB;AAPjB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AAGnB,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,6GAAA,kBAAkB,OAAA;AAEpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wEAAwE;AACxE,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,oCAAoC;AACpC,6CAMuB;AAFrB,8HAAA,+BAA+B,OAAA;AAC/B,iHAAA,kBAAkB,OAAA;AAEpB,8CAA4B;AAC5B,oDAAkC;AAClC,8CAA4B;AAC5B,mCAOkB;AANhB,0GAAA,gBAAgB,OAAA;AAChB,yGAAA,eAAe,OAAA;AACf,gHAAA,sBAAsB,OAAA;AAGtB,mHAAA,yBAAyB,OAAA;AAE3B,0CAAwB;AACxB,yDAW6B;AAD3B,4HAAA,uBAAuB,OAAA;AAEzB,sDAAoC;AACpC,qCAUmB;AAPjB,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AAGnB,gHAAA,qBAAqB,OAAA;AACrB,6GAAA,kBAAkB,OAAA;AAClB,6GAAA,kBAAkB,OAAA;AAEpB,mDAS0B;AALxB,mHAAA,iBAAiB,OAAA;AAEjB,qHAAA,mBAAmB,OAAA;AAEnB,sHAAA,oBAAoB,OAAA;AAEtB,+BA0DgB;AAzDd,yGAAA,iBAAiB,OAAA;AAEjB,gGAAA,QAAQ,OAAA;AAER,6GAAA,qBAAqB,OAAA;AAWrB,iHAAA,yBAAyB,OAAA;AACzB,0GAAA,kBAAkB,OAAA;AAClB,2GAAA,mBAAmB,OAAA;AACnB,uGAAA,eAAe,OAAA;AACf,4GAAA,oBAAoB,OAAA;AACpB,yGAAA,iBAAiB,OAAA;AAYjB,yGAAA,iBAAiB,OAAA;AACjB,yGAAA,iBAAiB,OAAA;AACjB,sGAAA,cAAc,OAAA;AAOd,oGAAA,YAAY,OAAA;AAKZ,mHAAA,2BAA2B,OAAA;AAC3B,sGAAA,cAAc,OAAA;AACd,oGAAA,YAAY,OAAA;AACZ,6GAAA,qBAAqB,OAAA;AACrB,oGAAA,YAAY,OAAA;AACZ,0GAAA,kBAAkB,OAAA;AAClB,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AACf,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,wGAAA,gBAAgB,OAAA;AAElB,6CAcuB;AAbrB,0HAAA,2BAA2B,OAAA;AAC3B,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,iHAAA,kBAAkB,OAAA;AAClB,+GAAA,gBAAgB,OAAA;AAChB,4GAAA,aAAa,OAAA;AACb,uHAAA,wBAAwB,OAAA;AACxB,yHAAA,0BAA0B,OAAA;AAG1B,iHAAA,kBAAkB,OAAA;AAClB,2HAAA,4BAA4B,OAAA;AAC5B,mHAAA,oBAAoB,OAAA;AAEtB,+DAOgC;AAN9B,iIAAA,yBAAyB,OAAA;AAKzB,mIAAA,2BAA2B,OAAA;AAE7B,iDAOyB;AANvB,4GAAA,WAAW,OAAA;AACX,oHAAA,mBAAmB,OAAA;AAMrB,uCAQoB;AAPlB,0GAAA,cAAc,OAAA;AAId,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAGlB,oDAAkC;AAClC,mDAAiC;AACjC,iDAOyB;AANvB,mHAAA,kBAAkB,OAAA;AAClB,kHAAA,iBAAiB,OAAA;AACjB,yHAAA,wBAAwB,OAAA;AAK1B,kDAAgC;AAChC,qDAAmC;AACnC,qDAAmC;AACnC,wDAAsC;AACtC,0CAAwB;AACxB,qCAAoE;AAA3D,0GAAA,eAAe,OAAA;AAAE,iHAAA,sBAAsB,OAAA"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { InviteResolution } from "../db/tables/inviteResolutions.table";
|
|
2
2
|
import type { TenantMember } from "../db/tables/tenantMembers.table";
|
|
3
|
+
import { type MemberChange } from "../hooks";
|
|
4
|
+
/**
|
|
5
|
+
* The membership completing `resolution` would grant, read again from the
|
|
6
|
+
* stored decision: an acceptance still to begin, for a user not yet a member.
|
|
7
|
+
* Announced on every attempt, replays included.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function describeInviteMembership(resolution: InviteResolution): Promise<MemberChange[]>;
|
|
3
12
|
/**
|
|
4
13
|
* Grants at most one membership incarnation; a removed or indeterminate grant is never recreated.
|
|
5
14
|
*
|
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeInviteMembership = describeInviteMembership;
|
|
3
4
|
exports.ensureInviteMembership = ensureInviteMembership;
|
|
4
5
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
5
6
|
const inviteResolutions_model_1 = require("../db/internal/inviteResolutions.model");
|
|
6
7
|
const users_model_1 = require("../auth/db/models/users.model");
|
|
7
8
|
const tenantMembers_model_1 = require("../db/models/tenantMembers.model");
|
|
8
9
|
const hooks_1 = require("../hooks");
|
|
10
|
+
const member_changes_1 = require("./member-changes");
|
|
9
11
|
const tenant_ownership_1 = require("./tenant-ownership");
|
|
10
12
|
const tenant_ownership_2 = require("../tenant-ownership");
|
|
13
|
+
/**
|
|
14
|
+
* The membership completing `resolution` would grant, read again from the
|
|
15
|
+
* stored decision: an acceptance still to begin, for a user not yet a member.
|
|
16
|
+
* Announced on every attempt, replays included.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
async function describeInviteMembership(resolution) {
|
|
21
|
+
const current = await (0, interface_database_decorators_1.GetModel)(inviteResolutions_model_1.InviteResolutionsModel, resolution.tenantId).get(resolution._id);
|
|
22
|
+
if (!current ||
|
|
23
|
+
current.completed ||
|
|
24
|
+
current.reason !== "accepted" ||
|
|
25
|
+
current.membershipPhase !== "pending" ||
|
|
26
|
+
!current.userId)
|
|
27
|
+
return [];
|
|
28
|
+
const member = await (0, interface_database_decorators_1.GetModel)(tenantMembers_model_1.TenantMemberModel, current.tenantId).getByUser(current.userId);
|
|
29
|
+
return (0, member_changes_1.describeMembershipPatch)(member, current.userId, {
|
|
30
|
+
roleIds: current.invite.roles_ids,
|
|
31
|
+
isTenantOwner: current.invite.asTenantOwner,
|
|
32
|
+
deliveryId: current._id,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
11
35
|
async function beginMembership(resolution) {
|
|
12
36
|
const { tenantId, userId, invite } = resolution;
|
|
13
37
|
if (!userId)
|
|
@@ -18,13 +42,7 @@ async function beginMembership(resolution) {
|
|
|
18
42
|
await model.advanceMembership(resolution, "applied");
|
|
19
43
|
return;
|
|
20
44
|
}
|
|
21
|
-
|
|
22
|
-
tenantId,
|
|
23
|
-
userId,
|
|
24
|
-
isTenantOwner: invite.asTenantOwner,
|
|
25
|
-
previousIsTenantOwner: null,
|
|
26
|
-
deliveryId: resolution._id,
|
|
27
|
-
});
|
|
45
|
+
// `changeTenantMembers` announced this membership before the write began.
|
|
28
46
|
await (0, hooks_1.ExecuteHooks)(hooks_1.Hook.MEMBER_BEING_ADDED, {
|
|
29
47
|
tenantId,
|
|
30
48
|
userId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invite-membership.js","sourceRoot":"","sources":["../../src/internal/invite-membership.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"invite-membership.js","sourceRoot":"","sources":["../../src/internal/invite-membership.ts"],"names":[],"mappings":";;AAkBA,4DAuBC;AAwED,wDAwBC;AAzID,6FAAqE;AACrE,oFAAgF;AAEhF,+DAA0D;AAC1D,0EAAqE;AAErE,oCAAiE;AACjE,qDAA2D;AAC3D,yDAAkE;AAClE,0DAA2E;AAE3E;;;;;;GAMG;AACI,KAAK,UAAU,wBAAwB,CAC5C,UAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,IAAA,wCAAQ,EAC5B,gDAAsB,EACtB,UAAU,CAAC,QAAQ,CACpB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtB,IACE,CAAC,OAAO;QACR,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,MAAM,KAAK,UAAU;QAC7B,OAAO,CAAC,eAAe,KAAK,SAAS;QACrC,CAAC,OAAO,CAAC,MAAM;QAEf,OAAO,EAAE,CAAC;IACZ,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAAC,uCAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1E,OAAO,CAAC,MAAM,CACf,CAAC;IACF,OAAO,IAAA,wCAAuB,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;QACrD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;QACjC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa;QAC3C,UAAU,EAAE,OAAO,CAAC,GAAG;KACxB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAA4B;IACzD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAA,wCAAQ,EAAC,gDAAsB,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAAC,uCAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IACD,0EAA0E;IAC1E,MAAM,IAAA,oBAAY,EAAC,YAAI,CAAC,kBAAkB,EAAE;QAC1C,QAAQ;QACR,MAAM;QACN,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,UAAU,CAAC,GAAG;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAAE,OAAO;IACrE,MAAM,IAAA,+CAA4B,EAAC,IAAA,wCAAQ,EAAC,uBAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;QACxE,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,UAAU,CAAC,GAAG;KAC3B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,UAA4B;IAE5B,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAC3B,uCAAiB,EACjB,UAAU,CAAC,QAAQ,CACpB,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,MAAM,EAAE,gBAAgB,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,IAAA,wCAAQ,EAAC,gDAAsB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAC3E,UAAU,EACV,SAAS,CACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,UAA4B,EAC5B,MAAoB;IAEpB,IAAI,MAAM,CAAC,gBAAgB,KAAK,UAAU,CAAC,GAAG;QAAE,OAAO;IACvD,MAAM,IAAA,uDAAoC,EACxC,IAAA,wCAAQ,EAAC,uBAAS,CAAC,EACnB,MAAM,CAAC,MAAM,EACb,UAAU,CAAC,QAAQ,EACnB,MAAM,CAAC,aAAa,CACrB,CAAC;IACF,MAAM,IAAA,oBAAY,EAAC,YAAI,CAAC,YAAY,EAAE;QACpC,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,UAAU,CAAC,GAAG;KAC3B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,sBAAsB,CAC1C,UAA4B;IAE5B,MAAM,KAAK,GAAG,IAAA,wCAAQ,EAAC,gDAAsB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,OAAO,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CACzE,OAAO,CAAC,eAAe,CACxB,CAAC;QACF,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1D,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAAC,uCAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAC1E,OAAO,CAAC,MAAM,CACf,CAAC;IACF,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TenantMember } from "../db/tables/tenantMembers.table";
|
|
2
|
+
import type { MemberChange, MemberRemovedChange } from "../hooks";
|
|
3
|
+
import type { TenantMembershipPatch } from "../tenant-ownership";
|
|
4
|
+
/** The membership fields an edit may set; a field left out keeps its value. */
|
|
5
|
+
export interface MemberEdit {
|
|
6
|
+
roleIds?: string[];
|
|
7
|
+
isTenantOwner?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* What an edit of an existing membership changes: nothing, its ownership, its
|
|
11
|
+
* roles, or both.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export declare function describeMemberEdit(member: TenantMember, edit: MemberEdit): MemberChange[];
|
|
16
|
+
/**
|
|
17
|
+
* What granting `patch` changes. A delivery never replaces an existing
|
|
18
|
+
* membership, so it changes nothing once the user is a member.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare function describeMembershipPatch(existing: TenantMember | undefined, userId: string, patch: TenantMembershipPatch): MemberChange[];
|
|
23
|
+
/** @internal */
|
|
24
|
+
export declare function describeMemberRemoval(member: TenantMember): MemberRemovedChange;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeMemberEdit = describeMemberEdit;
|
|
4
|
+
exports.describeMembershipPatch = describeMembershipPatch;
|
|
5
|
+
exports.describeMemberRemoval = describeMemberRemoval;
|
|
6
|
+
function haveSameRoles(left, right) {
|
|
7
|
+
const rightIds = new Set(right);
|
|
8
|
+
return (new Set(left).size === rightIds.size && left.every((id) => rightIds.has(id)));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* What an edit of an existing membership changes: nothing, its ownership, its
|
|
12
|
+
* roles, or both.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
function describeMemberEdit(member, edit) {
|
|
17
|
+
const changes = [];
|
|
18
|
+
const previousIsTenantOwner = member.isTenantOwner === true;
|
|
19
|
+
if (edit.isTenantOwner !== undefined &&
|
|
20
|
+
edit.isTenantOwner !== previousIsTenantOwner) {
|
|
21
|
+
changes.push({
|
|
22
|
+
kind: "ownership",
|
|
23
|
+
userId: member.userId,
|
|
24
|
+
isTenantOwner: edit.isTenantOwner,
|
|
25
|
+
previousIsTenantOwner,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const previousRoleIds = [...(member.roleIds ?? [])];
|
|
29
|
+
if (edit.roleIds && !haveSameRoles(edit.roleIds, previousRoleIds)) {
|
|
30
|
+
changes.push({
|
|
31
|
+
kind: "roles",
|
|
32
|
+
userId: member.userId,
|
|
33
|
+
roleIds: [...edit.roleIds],
|
|
34
|
+
previousRoleIds,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return changes;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* What granting `patch` changes. A delivery never replaces an existing
|
|
41
|
+
* membership, so it changes nothing once the user is a member.
|
|
42
|
+
*
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
function describeMembershipPatch(existing, userId, patch) {
|
|
46
|
+
if (existing)
|
|
47
|
+
return patch.deliveryId ? [] : describeMemberEdit(existing, patch);
|
|
48
|
+
const added = {
|
|
49
|
+
kind: "added",
|
|
50
|
+
userId,
|
|
51
|
+
isTenantOwner: patch.isTenantOwner,
|
|
52
|
+
roleIds: [...patch.roleIds],
|
|
53
|
+
};
|
|
54
|
+
if (patch.deliveryId)
|
|
55
|
+
added.deliveryId = patch.deliveryId;
|
|
56
|
+
return [added];
|
|
57
|
+
}
|
|
58
|
+
/** @internal */
|
|
59
|
+
function describeMemberRemoval(member) {
|
|
60
|
+
return {
|
|
61
|
+
kind: "removed",
|
|
62
|
+
userId: member.userId,
|
|
63
|
+
isTenantOwner: member.isTenantOwner === true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=member-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-changes.js","sourceRoot":"","sources":["../../src/internal/member-changes.ts"],"names":[],"mappings":";;AAuBA,gDA2BC;AAQD,0DAeC;AAGD,sDAQC;AA1ED,SAAS,aAAa,CAAC,IAAc,EAAE,KAAe;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,CACL,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,MAAoB,EACpB,IAAgB;IAEhB,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,qBAAqB,GAAG,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC;IAC5D,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;QAChC,IAAI,CAAC,aAAa,KAAK,qBAAqB,EAC5C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,QAAkC,EAClC,MAAc,EACd,KAA4B;IAE5B,IAAI,QAAQ;QACV,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,OAAO;QACb,MAAM;QACN,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;KAC5B,CAAC;IACF,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,SAAgB,qBAAqB,CACnC,MAAoB;IAEpB,OAAO;QACL,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa,KAAK,IAAI;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { UserModel } from "../auth/db";
|
|
2
2
|
import type { TenantMembershipPatch } from "../tenant-ownership";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* @internal The write of a `changeTenantMembers` call, which has already
|
|
5
|
+
* announced the change; never call it from anywhere else.
|
|
6
|
+
*/
|
|
4
7
|
export declare function applyAdmittedTenantOwnership(userModel: UserModel, userId: string, tenantId: string, patch: TenantMembershipPatch): Promise<void>;
|
|
5
8
|
/**
|
|
6
9
|
* Compatibility shim: in non-SaaS mode, the legacy `users.owner` boolean is
|
|
@@ -45,20 +45,14 @@ async function upsertTenantMembership(userId, tenantId, patch) {
|
|
|
45
45
|
await memberModel.update(recheck);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* @internal The write of a `changeTenantMembers` call, which has already
|
|
50
|
+
* announced the change; never call it from anywhere else.
|
|
51
|
+
*/
|
|
49
52
|
async function applyAdmittedTenantOwnership(userModel, userId, tenantId, patch) {
|
|
50
53
|
const memberModel = (0, interface_database_decorators_1.GetModel)(tenantMembers_model_1.TenantMemberModel, tenantId);
|
|
51
54
|
const existing = await memberModel.getByUser(userId);
|
|
52
55
|
const isNewMember = !existing;
|
|
53
|
-
// Invite delivery checks policy before its durable applying phase, not here.
|
|
54
|
-
if (!patch.deliveryId) {
|
|
55
|
-
await (0, hooks_1.ExecuteHooks)(hooks_1.Hook.MEMBER_BEING_CHANGED, {
|
|
56
|
-
tenantId,
|
|
57
|
-
userId,
|
|
58
|
-
isTenantOwner: patch.isTenantOwner,
|
|
59
|
-
previousIsTenantOwner: existing ? existing.isTenantOwner === true : null,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
56
|
if (isNewMember && !patch.deliveryId) {
|
|
63
57
|
const payload = {
|
|
64
58
|
tenantId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-ownership.js","sourceRoot":"","sources":["../../src/internal/tenant-ownership.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tenant-ownership.js","sourceRoot":"","sources":["../../src/internal/tenant-ownership.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,15 +19,6 @@
|
|
|
19
19
|
* this barrel is what opens the modal and the edit form to extensions.
|
|
20
20
|
*/
|
|
21
21
|
import "./invite-extensions/internal/form-slot";
|
|
22
|
-
import * as availability from "./invite-extensions/internal/availability";
|
|
23
22
|
export { type InviteAvailabilityResolver, RegisterInviteAvailability, } from "./invite-extensions/availability";
|
|
24
23
|
export * from "./invite-extensions/registry";
|
|
25
24
|
export * from "./invite-extensions/types";
|
|
26
|
-
/**
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
export declare namespace internal {
|
|
30
|
-
const RegisterInviteExtension: import("@antelopejs/interface-core").RegisteringProxy<(info: import("./invite-extensions/internal/types").InviteExtensionInfo) => void>;
|
|
31
|
-
/** Kept for module compatibility; the DMS imports it from `internal/availability`. */
|
|
32
|
-
const ResolveInviteAvailability: typeof availability.ResolveInviteAvailability;
|
|
33
|
-
}
|
|
@@ -10,33 +10,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
15
|
};
|
|
38
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
17
|
+
exports.RegisterInviteAvailability = void 0;
|
|
40
18
|
/**
|
|
41
19
|
* Module data carried by a member invitation — the invitation-side counterpart
|
|
42
20
|
* of `@RegisterPageExtension`, split by concern under `./invite-extensions/`:
|
|
@@ -58,21 +36,8 @@ exports.internal = exports.RegisterInviteAvailability = void 0;
|
|
|
58
36
|
* this barrel is what opens the modal and the edit form to extensions.
|
|
59
37
|
*/
|
|
60
38
|
require("./invite-extensions/internal/form-slot");
|
|
61
|
-
const availability = __importStar(require("./invite-extensions/internal/availability"));
|
|
62
|
-
const registry_1 = require("./invite-extensions/registry");
|
|
63
39
|
var availability_1 = require("./invite-extensions/availability");
|
|
64
40
|
Object.defineProperty(exports, "RegisterInviteAvailability", { enumerable: true, get: function () { return availability_1.RegisterInviteAvailability; } });
|
|
65
41
|
__exportStar(require("./invite-extensions/registry"), exports);
|
|
66
42
|
__exportStar(require("./invite-extensions/types"), exports);
|
|
67
|
-
// Shadows the namespace registry.ts declares: the same proxy, plus
|
|
68
|
-
// `ResolveInviteAvailability`, which module tests reach through it.
|
|
69
|
-
/**
|
|
70
|
-
* @internal
|
|
71
|
-
*/
|
|
72
|
-
var internal;
|
|
73
|
-
(function (internal) {
|
|
74
|
-
internal.RegisterInviteExtension = registry_1.internal.RegisterInviteExtension;
|
|
75
|
-
/** Kept for module compatibility; the DMS imports it from `internal/availability`. */
|
|
76
|
-
internal.ResolveInviteAvailability = availability.ResolveInviteAvailability;
|
|
77
|
-
})(internal || (exports.internal = internal = {}));
|
|
78
43
|
//# sourceMappingURL=invite-extensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invite-extensions.js","sourceRoot":"","sources":["../src/invite-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invite-extensions.js","sourceRoot":"","sources":["../src/invite-extensions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,kDAAgD;AAEhD,iEAG0C;AADxC,0HAAA,0BAA0B,OAAA;AAE5B,+DAA6C;AAC7C,4DAA0C"}
|
|
@@ -10,8 +10,9 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
|
|
|
10
10
|
const inviteResolutions_model_1 = require("./db/internal/inviteResolutions.model");
|
|
11
11
|
const user_invites_model_1 = require("./db/models/user_invites.model");
|
|
12
12
|
const registry_1 = require("./invite-extensions/internal/registry");
|
|
13
|
-
const
|
|
13
|
+
const tenant_members_1 = require("./tenant-members");
|
|
14
14
|
const invite_resolution_1 = require("./internal/invite-resolution");
|
|
15
|
+
const invite_membership_1 = require("./internal/invite-membership");
|
|
15
16
|
const HTTP_CONFLICT = 409;
|
|
16
17
|
/** Loads the exact incarnation or its durable snapshot so failed actions can resume. */
|
|
17
18
|
async function loadInviteForAction(tenantId, inviteId) {
|
|
@@ -73,6 +74,9 @@ async function decideInvite(input) {
|
|
|
73
74
|
}
|
|
74
75
|
/** Replays durable effects. Contributor callbacks must deduplicate by deliveryId; failures retain the snapshot. */
|
|
75
76
|
async function completeInviteResolution(resolution) {
|
|
76
|
-
await (0,
|
|
77
|
+
await (0, tenant_members_1.changeTenantMembers)(resolution.tenantId, async () => ({
|
|
78
|
+
changes: await (0, invite_membership_1.describeInviteMembership)(resolution),
|
|
79
|
+
write: () => (0, invite_resolution_1.completeAdmittedInviteResolution)(resolution),
|
|
80
|
+
}));
|
|
77
81
|
}
|
|
78
82
|
//# sourceMappingURL=invite-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invite-resolution.js","sourceRoot":"","sources":["../src/invite-resolution.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"invite-resolution.js","sourceRoot":"","sources":["../src/invite-resolution.ts"],"names":[],"mappings":"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"}
|
package/dist/invites.js
CHANGED
|
@@ -18,8 +18,9 @@ const hooks_1 = require("./hooks");
|
|
|
18
18
|
const delivery_1 = require("./invite-extensions/internal/delivery");
|
|
19
19
|
const invite_resolution_1 = require("./internal/invite-resolution");
|
|
20
20
|
const invite_resolution_2 = require("./invite-resolution");
|
|
21
|
-
const
|
|
21
|
+
const tenant_members_1 = require("./tenant-members");
|
|
22
22
|
const tenant_ownership_1 = require("./internal/tenant-ownership");
|
|
23
|
+
const member_changes_1 = require("./internal/member-changes");
|
|
23
24
|
const invites_1 = require("./internal/invites");
|
|
24
25
|
var invitee_display_name_1 = require("./invitee-display-name");
|
|
25
26
|
Object.defineProperty(exports, "inviteeDisplayName", { enumerable: true, get: function () { return invitee_display_name_1.inviteeDisplayName; } });
|
|
@@ -42,7 +43,7 @@ exports.INVITE_EXPIRY_DAYS = 7;
|
|
|
42
43
|
* intentionally side-effect-light: it does not throw on duplicates.
|
|
43
44
|
*/
|
|
44
45
|
async function inviteUserToTenant(options) {
|
|
45
|
-
const result = await (0,
|
|
46
|
+
const result = await (0, tenant_members_1.changeTenantMembers)(options.tenantId, () => planInvite(options));
|
|
46
47
|
if (!options.sendEmail || result.kind !== "invited")
|
|
47
48
|
return result;
|
|
48
49
|
const invite = { ...options, token: result.token };
|
|
@@ -55,30 +56,40 @@ async function inviteUserToTenant(options) {
|
|
|
55
56
|
emailDelivery: await (0, invites_1.deliverTenantInviteEmail)(invite),
|
|
56
57
|
};
|
|
57
58
|
}
|
|
58
|
-
async function
|
|
59
|
+
async function planInvite(options) {
|
|
59
60
|
const { tenantId, email, firstname = null, lastname = null, language = "en", roleIds = [], asTenantOwner = false, invitedBy = null, extensions, } = options;
|
|
60
61
|
const userModel = (0, interface_database_decorators_1.GetModel)(db_2.UserModel);
|
|
61
62
|
const existingUser = await userModel.getByEmail(email);
|
|
62
63
|
if (existingUser) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
const userId = existingUser._id;
|
|
65
|
+
const patch = { roleIds, isTenantOwner: asTenantOwner };
|
|
66
|
+
const member = await (0, interface_database_decorators_1.GetModel)(db_1.TenantMemberModel, tenantId).getByUser(userId);
|
|
67
|
+
return {
|
|
68
|
+
changes: (0, member_changes_1.describeMembershipPatch)(member, userId, patch),
|
|
69
|
+
write: async () => {
|
|
70
|
+
await (0, tenant_ownership_1.applyAdmittedTenantOwnership)(userModel, userId, tenantId, patch);
|
|
71
|
+
await deliverToExistingMember(tenantId, email, userId, extensions);
|
|
72
|
+
return { kind: "added", userId };
|
|
73
|
+
},
|
|
74
|
+
};
|
|
69
75
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
return {
|
|
77
|
+
changes: [],
|
|
78
|
+
write: async () => {
|
|
79
|
+
const { inviteId, token } = await createAdmittedInviteToken({
|
|
80
|
+
tenantId,
|
|
81
|
+
email,
|
|
82
|
+
firstname,
|
|
83
|
+
lastname,
|
|
84
|
+
language,
|
|
85
|
+
roleIds,
|
|
86
|
+
asTenantOwner,
|
|
87
|
+
invitedBy,
|
|
88
|
+
extensions,
|
|
89
|
+
});
|
|
90
|
+
return { kind: "invited", inviteId, token };
|
|
91
|
+
},
|
|
92
|
+
};
|
|
82
93
|
}
|
|
83
94
|
/**
|
|
84
95
|
* The membership is already granted when this runs, so a failure here is
|
|
@@ -105,7 +116,10 @@ async function deliverToExistingMember(tenantId, email, userId, extensions) {
|
|
|
105
116
|
* INVITE_DELETED / INVITE_BEING_CREATED / INVITE_CREATED hooks.
|
|
106
117
|
*/
|
|
107
118
|
async function createUserInviteToken(options) {
|
|
108
|
-
return (0,
|
|
119
|
+
return (0, tenant_members_1.changeTenantMembers)(options.tenantId, async () => ({
|
|
120
|
+
changes: [],
|
|
121
|
+
write: () => createAdmittedInviteToken(options),
|
|
122
|
+
}));
|
|
109
123
|
}
|
|
110
124
|
async function createAdmittedInviteToken(options) {
|
|
111
125
|
const { tenantId, email, asTenantOwner, roleIds } = options;
|