@lssm/lib.identity-rbac 0.0.0-canary-20251217063201 → 0.0.0-canary-20251217072406
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/contracts/dist/capabilities/openbanking.js +88 -1
- package/dist/contracts/dist/client/index.js +5 -1
- package/dist/contracts/dist/client/react/feature-render.js +2 -1
- package/dist/contracts/dist/client/react/form-render.js +4 -1
- package/dist/contracts/dist/client/react/index.js +4 -1
- package/dist/contracts/dist/contract-registry/index.js +1 -1
- package/dist/contracts/dist/contract-registry/schemas.js +60 -1
- package/dist/contracts/dist/docs/PUBLISHING.docblock.js +16 -76
- package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +16 -350
- package/dist/contracts/dist/docs/index.js +29 -1
- package/dist/contracts/dist/docs/presentations.js +71 -1
- package/dist/contracts/dist/docs/registry.js +44 -1
- package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +16 -383
- package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +16 -68
- package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +16 -140
- package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +16 -86
- package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +16 -1
- package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +24 -2
- package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +21 -2
- package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +16 -213
- package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +73 -5
- package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +37 -1
- package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +16 -1
- package/dist/contracts/dist/docs/tech/schema/README.docblock.js +20 -262
- package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +48 -1
- package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +24 -2
- package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +23 -2
- package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +25 -16
- package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +67 -1
- package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +22 -2
- package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +40 -36
- package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +47 -1
- package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +23 -2
- package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +36 -3
- package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +20 -1
- package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +36 -3
- package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +20 -1
- package/dist/contracts/dist/events.js +10 -1
- package/dist/contracts/dist/experiments/evaluator.js +1 -1
- package/dist/contracts/dist/index.js +71 -1
- package/dist/contracts/dist/install.js +2 -1
- package/dist/contracts/dist/integrations/contracts.js +377 -1
- package/dist/contracts/dist/integrations/index.js +18 -1
- package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +228 -1
- package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +159 -1
- package/dist/contracts/dist/integrations/openbanking/contracts/index.js +3 -1
- package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +210 -1
- package/dist/contracts/dist/integrations/openbanking/models.js +242 -1
- package/dist/contracts/dist/integrations/openbanking/telemetry.js +13 -1
- package/dist/contracts/dist/integrations/providers/elevenlabs.js +52 -1
- package/dist/contracts/dist/integrations/providers/gcs-storage.js +75 -1
- package/dist/contracts/dist/integrations/providers/gmail.js +87 -1
- package/dist/contracts/dist/integrations/providers/google-calendar.js +66 -1
- package/dist/contracts/dist/integrations/providers/index.js +11 -1
- package/dist/contracts/dist/integrations/providers/mistral.js +68 -1
- package/dist/contracts/dist/integrations/providers/postmark.js +68 -1
- package/dist/contracts/dist/integrations/providers/powens.js +116 -1
- package/dist/contracts/dist/integrations/providers/qdrant.js +73 -1
- package/dist/contracts/dist/integrations/providers/registry.js +10 -1
- package/dist/contracts/dist/integrations/providers/stripe.js +83 -1
- package/dist/contracts/dist/integrations/providers/twilio-sms.js +61 -1
- package/dist/contracts/dist/jsonschema.js +1 -1
- package/dist/contracts/dist/knowledge/contracts.js +306 -1
- package/dist/contracts/dist/knowledge/index.js +7 -1
- package/dist/contracts/dist/knowledge/spaces/email-threads.js +34 -1
- package/dist/contracts/dist/knowledge/spaces/financial-docs.js +34 -1
- package/dist/contracts/dist/knowledge/spaces/financial-overview.js +38 -1
- package/dist/contracts/dist/knowledge/spaces/index.js +6 -1
- package/dist/contracts/dist/knowledge/spaces/product-canon.js +34 -1
- package/dist/contracts/dist/knowledge/spaces/support-faq.js +37 -1
- package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +34 -1
- package/dist/contracts/dist/llm/exporters.js +19 -1
- package/dist/contracts/dist/llm/index.js +2 -1
- package/dist/contracts/dist/llm/prompts.js +1 -1
- package/dist/contracts/dist/onboarding-base.js +196 -1
- package/dist/contracts/dist/openapi.js +1 -1
- package/dist/contracts/dist/ownership.js +21 -1
- package/dist/contracts/dist/presentations.js +1 -1
- package/dist/contracts/dist/presentations.v2.js +11 -1
- package/dist/contracts/dist/prompt.js +1 -1
- package/dist/contracts/dist/promptRegistry.js +1 -1
- package/dist/contracts/dist/regenerator/index.js +1 -1
- package/dist/contracts/dist/regenerator/service.js +6 -1
- package/dist/contracts/dist/registry.js +2 -1
- package/dist/contracts/dist/resources.js +1 -1
- package/dist/contracts/dist/schema/dist/EnumType.js +2 -1
- package/dist/contracts/dist/schema/dist/FieldType.js +49 -1
- package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +236 -1
- package/dist/contracts/dist/schema/dist/SchemaModel.js +34 -1
- package/dist/contracts/dist/schema/dist/entity/defineEntity.js +1 -1
- package/dist/contracts/dist/schema/dist/entity/index.js +2 -1
- package/dist/contracts/dist/schema/dist/entity/types.js +1 -1
- package/dist/contracts/dist/schema/dist/index.js +6 -1
- package/dist/contracts/dist/server/graphql-pothos.js +6 -1
- package/dist/contracts/dist/server/index.js +8 -1
- package/dist/contracts/dist/server/mcp/createMcpServer.js +4 -1
- package/dist/contracts/dist/server/mcp/registerPresentations.js +2 -1
- package/dist/contracts/dist/server/mcp/registerPrompts.js +1 -1
- package/dist/contracts/dist/server/mcp/registerResources.js +2 -1
- package/dist/contracts/dist/server/mcp/registerTools.js +1 -1
- package/dist/contracts/dist/server/provider-mcp.js +1 -1
- package/dist/contracts/dist/server/rest-elysia.js +1 -1
- package/dist/contracts/dist/server/rest-express.js +1 -1
- package/dist/contracts/dist/server/rest-generic.js +1 -1
- package/dist/contracts/dist/server/rest-next-app.js +1 -1
- package/dist/contracts/dist/server/rest-next-pages.js +1 -1
- package/dist/contracts/dist/spec.js +34 -1
- package/dist/contracts/dist/telemetry/index.js +1 -1
- package/dist/contracts/dist/telemetry/tracker.js +1 -1
- package/dist/contracts/dist/tests/index.js +1 -1
- package/dist/contracts/dist/tests/runner.js +2 -1
- package/dist/contracts/dist/workflow/index.js +1 -1
- package/dist/contracts/dist/workflow/runner.js +1 -1
- package/dist/contracts/index.js +5 -1
- package/dist/contracts/organization.d.ts +193 -193
- package/dist/contracts/organization.js +607 -1
- package/dist/contracts/rbac.d.ts +118 -118
- package/dist/contracts/rbac.js +487 -1
- package/dist/contracts/user.d.ts +139 -139
- package/dist/contracts/user.js +335 -1
- package/dist/entities/index.d.ts +160 -160
- package/dist/entities/index.js +35 -1
- package/dist/entities/organization.d.ts +59 -59
- package/dist/entities/organization.js +151 -1
- package/dist/entities/rbac.d.ts +63 -63
- package/dist/entities/rbac.js +138 -1
- package/dist/entities/user.d.ts +67 -67
- package/dist/entities/user.js +194 -1
- package/dist/events.d.ts +174 -174
- package/dist/events.js +543 -1
- package/dist/identity-rbac.feature.js +186 -1
- package/dist/index.js +14 -1
- package/dist/policies/engine.js +167 -1
- package/dist/policies/index.js +3 -1
- package/dist/schema/dist/EnumType.js +2 -1
- package/dist/schema/dist/FieldType.js +49 -1
- package/dist/schema/dist/ScalarTypeEnum.js +236 -1
- package/dist/schema/dist/SchemaModel.js +34 -1
- package/dist/schema/dist/entity/defineEntity.js +236 -1
- package/dist/schema/dist/entity/index.js +2 -1
- package/dist/schema/dist/entity/types.js +1 -1
- package/dist/schema/dist/index.js +6 -1
- package/package.json +5 -5
package/dist/entities/index.js
CHANGED
|
@@ -1 +1,35 @@
|
|
|
1
|
-
import{AccountEntity
|
|
1
|
+
import { AccountEntity, SessionEntity, UserEntity, VerificationEntity } from "./user.js";
|
|
2
|
+
import { InvitationEntity, MemberEntity, OrganizationEntity, OrganizationTypeEnum, TeamEntity, TeamMemberEntity } from "./organization.js";
|
|
3
|
+
import { ApiKeyEntity, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity } from "./rbac.js";
|
|
4
|
+
|
|
5
|
+
//#region src/entities/index.ts
|
|
6
|
+
/**
|
|
7
|
+
* All identity-rbac entities for schema composition.
|
|
8
|
+
*/
|
|
9
|
+
const identityRbacEntities = [
|
|
10
|
+
UserEntity,
|
|
11
|
+
SessionEntity,
|
|
12
|
+
AccountEntity,
|
|
13
|
+
VerificationEntity,
|
|
14
|
+
OrganizationEntity,
|
|
15
|
+
MemberEntity,
|
|
16
|
+
InvitationEntity,
|
|
17
|
+
TeamEntity,
|
|
18
|
+
TeamMemberEntity,
|
|
19
|
+
RoleEntity,
|
|
20
|
+
PermissionEntity,
|
|
21
|
+
PolicyBindingEntity,
|
|
22
|
+
ApiKeyEntity,
|
|
23
|
+
PasskeyEntity
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Module schema contribution for identity-rbac.
|
|
27
|
+
*/
|
|
28
|
+
const identityRbacSchemaContribution = {
|
|
29
|
+
moduleId: "@lssm/lib.identity-rbac",
|
|
30
|
+
entities: identityRbacEntities,
|
|
31
|
+
enums: [OrganizationTypeEnum]
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//#endregion
|
|
35
|
+
export { AccountEntity, ApiKeyEntity, InvitationEntity, MemberEntity, OrganizationEntity, OrganizationTypeEnum, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity, SessionEntity, TeamEntity, TeamMemberEntity, UserEntity, VerificationEntity, identityRbacEntities, identityRbacSchemaContribution };
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _lssm_lib_schema734 from "@lssm/lib.schema";
|
|
2
2
|
|
|
3
3
|
//#region src/entities/organization.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Organization type enum.
|
|
6
6
|
*/
|
|
7
|
-
declare const OrganizationTypeEnum:
|
|
7
|
+
declare const OrganizationTypeEnum: _lssm_lib_schema734.EntityEnumDef;
|
|
8
8
|
/**
|
|
9
9
|
* Organization entity - tenant/company grouping.
|
|
10
10
|
*/
|
|
11
|
-
declare const OrganizationEntity:
|
|
12
|
-
id:
|
|
13
|
-
name:
|
|
14
|
-
slug:
|
|
15
|
-
logo:
|
|
16
|
-
description:
|
|
17
|
-
metadata:
|
|
18
|
-
type:
|
|
19
|
-
onboardingCompleted:
|
|
20
|
-
onboardingStep:
|
|
21
|
-
referralCode:
|
|
22
|
-
referredBy:
|
|
23
|
-
createdAt:
|
|
24
|
-
updatedAt:
|
|
25
|
-
members:
|
|
26
|
-
invitations:
|
|
27
|
-
teams:
|
|
28
|
-
policyBindings:
|
|
11
|
+
declare const OrganizationEntity: _lssm_lib_schema734.EntitySpec<{
|
|
12
|
+
id: _lssm_lib_schema734.EntityScalarField;
|
|
13
|
+
name: _lssm_lib_schema734.EntityScalarField;
|
|
14
|
+
slug: _lssm_lib_schema734.EntityScalarField;
|
|
15
|
+
logo: _lssm_lib_schema734.EntityScalarField;
|
|
16
|
+
description: _lssm_lib_schema734.EntityScalarField;
|
|
17
|
+
metadata: _lssm_lib_schema734.EntityScalarField;
|
|
18
|
+
type: _lssm_lib_schema734.EntityEnumField;
|
|
19
|
+
onboardingCompleted: _lssm_lib_schema734.EntityScalarField;
|
|
20
|
+
onboardingStep: _lssm_lib_schema734.EntityScalarField;
|
|
21
|
+
referralCode: _lssm_lib_schema734.EntityScalarField;
|
|
22
|
+
referredBy: _lssm_lib_schema734.EntityScalarField;
|
|
23
|
+
createdAt: _lssm_lib_schema734.EntityScalarField;
|
|
24
|
+
updatedAt: _lssm_lib_schema734.EntityScalarField;
|
|
25
|
+
members: _lssm_lib_schema734.EntityRelationField;
|
|
26
|
+
invitations: _lssm_lib_schema734.EntityRelationField;
|
|
27
|
+
teams: _lssm_lib_schema734.EntityRelationField;
|
|
28
|
+
policyBindings: _lssm_lib_schema734.EntityRelationField;
|
|
29
29
|
}>;
|
|
30
30
|
/**
|
|
31
31
|
* Member entity - user membership in an organization.
|
|
32
32
|
*/
|
|
33
|
-
declare const MemberEntity:
|
|
34
|
-
id:
|
|
35
|
-
userId:
|
|
36
|
-
organizationId:
|
|
37
|
-
role:
|
|
38
|
-
createdAt:
|
|
39
|
-
user:
|
|
40
|
-
organization:
|
|
33
|
+
declare const MemberEntity: _lssm_lib_schema734.EntitySpec<{
|
|
34
|
+
id: _lssm_lib_schema734.EntityScalarField;
|
|
35
|
+
userId: _lssm_lib_schema734.EntityScalarField;
|
|
36
|
+
organizationId: _lssm_lib_schema734.EntityScalarField;
|
|
37
|
+
role: _lssm_lib_schema734.EntityScalarField;
|
|
38
|
+
createdAt: _lssm_lib_schema734.EntityScalarField;
|
|
39
|
+
user: _lssm_lib_schema734.EntityRelationField;
|
|
40
|
+
organization: _lssm_lib_schema734.EntityRelationField;
|
|
41
41
|
}>;
|
|
42
42
|
/**
|
|
43
43
|
* Invitation entity - pending organization invites.
|
|
44
44
|
*/
|
|
45
|
-
declare const InvitationEntity:
|
|
46
|
-
id:
|
|
47
|
-
organizationId:
|
|
48
|
-
email:
|
|
49
|
-
role:
|
|
50
|
-
status:
|
|
51
|
-
acceptedAt:
|
|
52
|
-
expiresAt:
|
|
53
|
-
inviterId:
|
|
54
|
-
teamId:
|
|
55
|
-
createdAt:
|
|
56
|
-
updatedAt:
|
|
57
|
-
organization:
|
|
58
|
-
inviter:
|
|
59
|
-
team:
|
|
45
|
+
declare const InvitationEntity: _lssm_lib_schema734.EntitySpec<{
|
|
46
|
+
id: _lssm_lib_schema734.EntityScalarField;
|
|
47
|
+
organizationId: _lssm_lib_schema734.EntityScalarField;
|
|
48
|
+
email: _lssm_lib_schema734.EntityScalarField;
|
|
49
|
+
role: _lssm_lib_schema734.EntityScalarField;
|
|
50
|
+
status: _lssm_lib_schema734.EntityScalarField;
|
|
51
|
+
acceptedAt: _lssm_lib_schema734.EntityScalarField;
|
|
52
|
+
expiresAt: _lssm_lib_schema734.EntityScalarField;
|
|
53
|
+
inviterId: _lssm_lib_schema734.EntityScalarField;
|
|
54
|
+
teamId: _lssm_lib_schema734.EntityScalarField;
|
|
55
|
+
createdAt: _lssm_lib_schema734.EntityScalarField;
|
|
56
|
+
updatedAt: _lssm_lib_schema734.EntityScalarField;
|
|
57
|
+
organization: _lssm_lib_schema734.EntityRelationField;
|
|
58
|
+
inviter: _lssm_lib_schema734.EntityRelationField;
|
|
59
|
+
team: _lssm_lib_schema734.EntityRelationField;
|
|
60
60
|
}>;
|
|
61
61
|
/**
|
|
62
62
|
* Team entity - team within an organization.
|
|
63
63
|
*/
|
|
64
|
-
declare const TeamEntity:
|
|
65
|
-
id:
|
|
66
|
-
name:
|
|
67
|
-
organizationId:
|
|
68
|
-
createdAt:
|
|
69
|
-
updatedAt:
|
|
70
|
-
organization:
|
|
71
|
-
members:
|
|
72
|
-
invitations:
|
|
64
|
+
declare const TeamEntity: _lssm_lib_schema734.EntitySpec<{
|
|
65
|
+
id: _lssm_lib_schema734.EntityScalarField;
|
|
66
|
+
name: _lssm_lib_schema734.EntityScalarField;
|
|
67
|
+
organizationId: _lssm_lib_schema734.EntityScalarField;
|
|
68
|
+
createdAt: _lssm_lib_schema734.EntityScalarField;
|
|
69
|
+
updatedAt: _lssm_lib_schema734.EntityScalarField;
|
|
70
|
+
organization: _lssm_lib_schema734.EntityRelationField;
|
|
71
|
+
members: _lssm_lib_schema734.EntityRelationField;
|
|
72
|
+
invitations: _lssm_lib_schema734.EntityRelationField;
|
|
73
73
|
}>;
|
|
74
74
|
/**
|
|
75
75
|
* TeamMember entity - user's team membership.
|
|
76
76
|
*/
|
|
77
|
-
declare const TeamMemberEntity:
|
|
78
|
-
id:
|
|
79
|
-
teamId:
|
|
80
|
-
userId:
|
|
81
|
-
createdAt:
|
|
82
|
-
team:
|
|
83
|
-
user:
|
|
77
|
+
declare const TeamMemberEntity: _lssm_lib_schema734.EntitySpec<{
|
|
78
|
+
id: _lssm_lib_schema734.EntityScalarField;
|
|
79
|
+
teamId: _lssm_lib_schema734.EntityScalarField;
|
|
80
|
+
userId: _lssm_lib_schema734.EntityScalarField;
|
|
81
|
+
createdAt: _lssm_lib_schema734.EntityScalarField;
|
|
82
|
+
team: _lssm_lib_schema734.EntityRelationField;
|
|
83
|
+
user: _lssm_lib_schema734.EntityRelationField;
|
|
84
84
|
}>;
|
|
85
85
|
//#endregion
|
|
86
86
|
export { InvitationEntity, MemberEntity, OrganizationEntity, OrganizationTypeEnum, TeamEntity, TeamMemberEntity };
|
|
@@ -1 +1,151 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { defineEntity, defineEntityEnum, field, index } from "../schema/dist/entity/defineEntity.js";
|
|
2
|
+
import "../schema/dist/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/entities/organization.ts
|
|
5
|
+
/**
|
|
6
|
+
* Organization type enum.
|
|
7
|
+
*/
|
|
8
|
+
const OrganizationTypeEnum = defineEntityEnum({
|
|
9
|
+
name: "OrganizationType",
|
|
10
|
+
values: ["PLATFORM_ADMIN", "CONTRACT_SPEC_CUSTOMER"],
|
|
11
|
+
schema: "lssm_sigil",
|
|
12
|
+
description: "Type of organization in the platform."
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Organization entity - tenant/company grouping.
|
|
16
|
+
*/
|
|
17
|
+
const OrganizationEntity = defineEntity({
|
|
18
|
+
name: "Organization",
|
|
19
|
+
description: "An organization is a tenant boundary grouping users.",
|
|
20
|
+
schema: "lssm_sigil",
|
|
21
|
+
map: "organization",
|
|
22
|
+
fields: {
|
|
23
|
+
id: field.id({ description: "Unique organization identifier" }),
|
|
24
|
+
name: field.string({ description: "Organization display name" }),
|
|
25
|
+
slug: field.string({
|
|
26
|
+
isOptional: true,
|
|
27
|
+
isUnique: true,
|
|
28
|
+
description: "URL-friendly identifier"
|
|
29
|
+
}),
|
|
30
|
+
logo: field.url({
|
|
31
|
+
isOptional: true,
|
|
32
|
+
description: "Organization logo URL"
|
|
33
|
+
}),
|
|
34
|
+
description: field.string({
|
|
35
|
+
isOptional: true,
|
|
36
|
+
description: "Organization description"
|
|
37
|
+
}),
|
|
38
|
+
metadata: field.json({
|
|
39
|
+
isOptional: true,
|
|
40
|
+
description: "Arbitrary organization metadata"
|
|
41
|
+
}),
|
|
42
|
+
type: field.enum("OrganizationType", { description: "Organization type" }),
|
|
43
|
+
onboardingCompleted: field.boolean({ default: false }),
|
|
44
|
+
onboardingStep: field.string({ isOptional: true }),
|
|
45
|
+
referralCode: field.string({
|
|
46
|
+
isOptional: true,
|
|
47
|
+
isUnique: true,
|
|
48
|
+
description: "Unique referral code"
|
|
49
|
+
}),
|
|
50
|
+
referredBy: field.string({
|
|
51
|
+
isOptional: true,
|
|
52
|
+
description: "ID of referring user"
|
|
53
|
+
}),
|
|
54
|
+
createdAt: field.createdAt(),
|
|
55
|
+
updatedAt: field.updatedAt(),
|
|
56
|
+
members: field.hasMany("Member"),
|
|
57
|
+
invitations: field.hasMany("Invitation"),
|
|
58
|
+
teams: field.hasMany("Team"),
|
|
59
|
+
policyBindings: field.hasMany("PolicyBinding")
|
|
60
|
+
},
|
|
61
|
+
enums: [OrganizationTypeEnum]
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Member entity - user membership in an organization.
|
|
65
|
+
*/
|
|
66
|
+
const MemberEntity = defineEntity({
|
|
67
|
+
name: "Member",
|
|
68
|
+
description: "Membership of a user in an organization with a role.",
|
|
69
|
+
schema: "lssm_sigil",
|
|
70
|
+
map: "member",
|
|
71
|
+
fields: {
|
|
72
|
+
id: field.id(),
|
|
73
|
+
userId: field.foreignKey(),
|
|
74
|
+
organizationId: field.foreignKey(),
|
|
75
|
+
role: field.string({ description: "Role in organization (owner, admin, member)" }),
|
|
76
|
+
createdAt: field.createdAt(),
|
|
77
|
+
user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" }),
|
|
78
|
+
organization: field.belongsTo("Organization", ["organizationId"], ["id"], { onDelete: "Cascade" })
|
|
79
|
+
},
|
|
80
|
+
indexes: [index.unique(["userId", "organizationId"])]
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Invitation entity - pending organization invites.
|
|
84
|
+
*/
|
|
85
|
+
const InvitationEntity = defineEntity({
|
|
86
|
+
name: "Invitation",
|
|
87
|
+
description: "An invitation to join an organization.",
|
|
88
|
+
schema: "lssm_sigil",
|
|
89
|
+
map: "invitation",
|
|
90
|
+
fields: {
|
|
91
|
+
id: field.id(),
|
|
92
|
+
organizationId: field.foreignKey(),
|
|
93
|
+
email: field.email({ description: "Invited email address" }),
|
|
94
|
+
role: field.string({
|
|
95
|
+
isOptional: true,
|
|
96
|
+
description: "Role to assign on acceptance"
|
|
97
|
+
}),
|
|
98
|
+
status: field.string({
|
|
99
|
+
default: "\"pending\"",
|
|
100
|
+
description: "Invitation status"
|
|
101
|
+
}),
|
|
102
|
+
acceptedAt: field.dateTime({ isOptional: true }),
|
|
103
|
+
expiresAt: field.dateTime({ isOptional: true }),
|
|
104
|
+
inviterId: field.foreignKey({ description: "User who sent the invitation" }),
|
|
105
|
+
teamId: field.string({ isOptional: true }),
|
|
106
|
+
createdAt: field.createdAt(),
|
|
107
|
+
updatedAt: field.updatedAt(),
|
|
108
|
+
organization: field.belongsTo("Organization", ["organizationId"], ["id"], { onDelete: "Cascade" }),
|
|
109
|
+
inviter: field.belongsTo("User", ["inviterId"], ["id"], { onDelete: "Cascade" }),
|
|
110
|
+
team: field.belongsTo("Team", ["teamId"], ["id"], { onDelete: "Cascade" })
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* Team entity - team within an organization.
|
|
115
|
+
*/
|
|
116
|
+
const TeamEntity = defineEntity({
|
|
117
|
+
name: "Team",
|
|
118
|
+
description: "Team within an organization.",
|
|
119
|
+
schema: "lssm_sigil",
|
|
120
|
+
map: "team",
|
|
121
|
+
fields: {
|
|
122
|
+
id: field.id(),
|
|
123
|
+
name: field.string({ description: "Team name" }),
|
|
124
|
+
organizationId: field.foreignKey(),
|
|
125
|
+
createdAt: field.createdAt(),
|
|
126
|
+
updatedAt: field.updatedAt(),
|
|
127
|
+
organization: field.belongsTo("Organization", ["organizationId"], ["id"], { onDelete: "Cascade" }),
|
|
128
|
+
members: field.hasMany("TeamMember"),
|
|
129
|
+
invitations: field.hasMany("Invitation")
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* TeamMember entity - user's team membership.
|
|
134
|
+
*/
|
|
135
|
+
const TeamMemberEntity = defineEntity({
|
|
136
|
+
name: "TeamMember",
|
|
137
|
+
description: "Team membership for a user.",
|
|
138
|
+
schema: "lssm_sigil",
|
|
139
|
+
map: "team_member",
|
|
140
|
+
fields: {
|
|
141
|
+
id: field.id(),
|
|
142
|
+
teamId: field.foreignKey(),
|
|
143
|
+
userId: field.foreignKey(),
|
|
144
|
+
createdAt: field.createdAt(),
|
|
145
|
+
team: field.belongsTo("Team", ["teamId"], ["id"], { onDelete: "Cascade" }),
|
|
146
|
+
user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
//#endregion
|
|
151
|
+
export { InvitationEntity, MemberEntity, OrganizationEntity, OrganizationTypeEnum, TeamEntity, TeamMemberEntity };
|
package/dist/entities/rbac.d.ts
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _lssm_lib_schema792 from "@lssm/lib.schema";
|
|
2
2
|
|
|
3
3
|
//#region src/entities/rbac.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Role entity - named set of permissions.
|
|
6
6
|
*/
|
|
7
|
-
declare const RoleEntity:
|
|
8
|
-
id:
|
|
9
|
-
name:
|
|
10
|
-
description:
|
|
11
|
-
permissions:
|
|
12
|
-
createdAt:
|
|
13
|
-
updatedAt:
|
|
14
|
-
policyBindings:
|
|
7
|
+
declare const RoleEntity: _lssm_lib_schema792.EntitySpec<{
|
|
8
|
+
id: _lssm_lib_schema792.EntityScalarField;
|
|
9
|
+
name: _lssm_lib_schema792.EntityScalarField;
|
|
10
|
+
description: _lssm_lib_schema792.EntityScalarField;
|
|
11
|
+
permissions: _lssm_lib_schema792.EntityScalarField;
|
|
12
|
+
createdAt: _lssm_lib_schema792.EntityScalarField;
|
|
13
|
+
updatedAt: _lssm_lib_schema792.EntityScalarField;
|
|
14
|
+
policyBindings: _lssm_lib_schema792.EntityRelationField;
|
|
15
15
|
}>;
|
|
16
16
|
/**
|
|
17
17
|
* Permission entity - atomic access right.
|
|
18
18
|
*/
|
|
19
|
-
declare const PermissionEntity:
|
|
20
|
-
id:
|
|
21
|
-
name:
|
|
22
|
-
description:
|
|
23
|
-
createdAt:
|
|
24
|
-
updatedAt:
|
|
19
|
+
declare const PermissionEntity: _lssm_lib_schema792.EntitySpec<{
|
|
20
|
+
id: _lssm_lib_schema792.EntityScalarField;
|
|
21
|
+
name: _lssm_lib_schema792.EntityScalarField;
|
|
22
|
+
description: _lssm_lib_schema792.EntityScalarField;
|
|
23
|
+
createdAt: _lssm_lib_schema792.EntityScalarField;
|
|
24
|
+
updatedAt: _lssm_lib_schema792.EntityScalarField;
|
|
25
25
|
}>;
|
|
26
26
|
/**
|
|
27
27
|
* PolicyBinding entity - binds roles to principals.
|
|
28
28
|
*/
|
|
29
|
-
declare const PolicyBindingEntity:
|
|
30
|
-
id:
|
|
31
|
-
roleId:
|
|
32
|
-
targetType:
|
|
33
|
-
targetId:
|
|
34
|
-
expiresAt:
|
|
35
|
-
createdAt:
|
|
36
|
-
userId:
|
|
37
|
-
organizationId:
|
|
38
|
-
role:
|
|
39
|
-
user:
|
|
40
|
-
organization:
|
|
29
|
+
declare const PolicyBindingEntity: _lssm_lib_schema792.EntitySpec<{
|
|
30
|
+
id: _lssm_lib_schema792.EntityScalarField;
|
|
31
|
+
roleId: _lssm_lib_schema792.EntityScalarField;
|
|
32
|
+
targetType: _lssm_lib_schema792.EntityScalarField;
|
|
33
|
+
targetId: _lssm_lib_schema792.EntityScalarField;
|
|
34
|
+
expiresAt: _lssm_lib_schema792.EntityScalarField;
|
|
35
|
+
createdAt: _lssm_lib_schema792.EntityScalarField;
|
|
36
|
+
userId: _lssm_lib_schema792.EntityScalarField;
|
|
37
|
+
organizationId: _lssm_lib_schema792.EntityScalarField;
|
|
38
|
+
role: _lssm_lib_schema792.EntityRelationField;
|
|
39
|
+
user: _lssm_lib_schema792.EntityRelationField;
|
|
40
|
+
organization: _lssm_lib_schema792.EntityRelationField;
|
|
41
41
|
}>;
|
|
42
42
|
/**
|
|
43
43
|
* ApiKey entity - API keys for programmatic access.
|
|
44
44
|
*/
|
|
45
|
-
declare const ApiKeyEntity:
|
|
46
|
-
id:
|
|
47
|
-
name:
|
|
48
|
-
start:
|
|
49
|
-
prefix:
|
|
50
|
-
key:
|
|
51
|
-
userId:
|
|
52
|
-
refillInterval:
|
|
53
|
-
refillAmount:
|
|
54
|
-
lastRefillAt:
|
|
55
|
-
remaining:
|
|
56
|
-
requestCount:
|
|
57
|
-
lastRequest:
|
|
58
|
-
enabled:
|
|
59
|
-
rateLimitEnabled:
|
|
60
|
-
rateLimitTimeWindow:
|
|
61
|
-
rateLimitMax:
|
|
62
|
-
expiresAt:
|
|
63
|
-
permissions:
|
|
64
|
-
metadata:
|
|
65
|
-
createdAt:
|
|
66
|
-
updatedAt:
|
|
67
|
-
user:
|
|
45
|
+
declare const ApiKeyEntity: _lssm_lib_schema792.EntitySpec<{
|
|
46
|
+
id: _lssm_lib_schema792.EntityScalarField;
|
|
47
|
+
name: _lssm_lib_schema792.EntityScalarField;
|
|
48
|
+
start: _lssm_lib_schema792.EntityScalarField;
|
|
49
|
+
prefix: _lssm_lib_schema792.EntityScalarField;
|
|
50
|
+
key: _lssm_lib_schema792.EntityScalarField;
|
|
51
|
+
userId: _lssm_lib_schema792.EntityScalarField;
|
|
52
|
+
refillInterval: _lssm_lib_schema792.EntityScalarField;
|
|
53
|
+
refillAmount: _lssm_lib_schema792.EntityScalarField;
|
|
54
|
+
lastRefillAt: _lssm_lib_schema792.EntityScalarField;
|
|
55
|
+
remaining: _lssm_lib_schema792.EntityScalarField;
|
|
56
|
+
requestCount: _lssm_lib_schema792.EntityScalarField;
|
|
57
|
+
lastRequest: _lssm_lib_schema792.EntityScalarField;
|
|
58
|
+
enabled: _lssm_lib_schema792.EntityScalarField;
|
|
59
|
+
rateLimitEnabled: _lssm_lib_schema792.EntityScalarField;
|
|
60
|
+
rateLimitTimeWindow: _lssm_lib_schema792.EntityScalarField;
|
|
61
|
+
rateLimitMax: _lssm_lib_schema792.EntityScalarField;
|
|
62
|
+
expiresAt: _lssm_lib_schema792.EntityScalarField;
|
|
63
|
+
permissions: _lssm_lib_schema792.EntityScalarField;
|
|
64
|
+
metadata: _lssm_lib_schema792.EntityScalarField;
|
|
65
|
+
createdAt: _lssm_lib_schema792.EntityScalarField;
|
|
66
|
+
updatedAt: _lssm_lib_schema792.EntityScalarField;
|
|
67
|
+
user: _lssm_lib_schema792.EntityRelationField;
|
|
68
68
|
}>;
|
|
69
69
|
/**
|
|
70
70
|
* Passkey entity - WebAuthn passkeys.
|
|
71
71
|
*/
|
|
72
|
-
declare const PasskeyEntity:
|
|
73
|
-
id:
|
|
74
|
-
name:
|
|
75
|
-
publicKey:
|
|
76
|
-
userId:
|
|
77
|
-
credentialID:
|
|
78
|
-
counter:
|
|
79
|
-
deviceType:
|
|
80
|
-
backedUp:
|
|
81
|
-
transports:
|
|
82
|
-
aaguid:
|
|
83
|
-
createdAt:
|
|
84
|
-
user:
|
|
72
|
+
declare const PasskeyEntity: _lssm_lib_schema792.EntitySpec<{
|
|
73
|
+
id: _lssm_lib_schema792.EntityScalarField;
|
|
74
|
+
name: _lssm_lib_schema792.EntityScalarField;
|
|
75
|
+
publicKey: _lssm_lib_schema792.EntityScalarField;
|
|
76
|
+
userId: _lssm_lib_schema792.EntityScalarField;
|
|
77
|
+
credentialID: _lssm_lib_schema792.EntityScalarField;
|
|
78
|
+
counter: _lssm_lib_schema792.EntityScalarField;
|
|
79
|
+
deviceType: _lssm_lib_schema792.EntityScalarField;
|
|
80
|
+
backedUp: _lssm_lib_schema792.EntityScalarField;
|
|
81
|
+
transports: _lssm_lib_schema792.EntityScalarField;
|
|
82
|
+
aaguid: _lssm_lib_schema792.EntityScalarField;
|
|
83
|
+
createdAt: _lssm_lib_schema792.EntityScalarField;
|
|
84
|
+
user: _lssm_lib_schema792.EntityRelationField;
|
|
85
85
|
}>;
|
|
86
86
|
//#endregion
|
|
87
87
|
export { ApiKeyEntity, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity };
|
package/dist/entities/rbac.js
CHANGED
|
@@ -1 +1,138 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { defineEntity, field, index } from "../schema/dist/entity/defineEntity.js";
|
|
2
|
+
import "../schema/dist/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/entities/rbac.ts
|
|
5
|
+
/**
|
|
6
|
+
* Role entity - named set of permissions.
|
|
7
|
+
*/
|
|
8
|
+
const RoleEntity = defineEntity({
|
|
9
|
+
name: "Role",
|
|
10
|
+
description: "A role defines a named set of permissions.",
|
|
11
|
+
schema: "lssm_sigil",
|
|
12
|
+
map: "role",
|
|
13
|
+
fields: {
|
|
14
|
+
id: field.id(),
|
|
15
|
+
name: field.string({
|
|
16
|
+
isUnique: true,
|
|
17
|
+
description: "Unique role name"
|
|
18
|
+
}),
|
|
19
|
+
description: field.string({
|
|
20
|
+
isOptional: true,
|
|
21
|
+
description: "Role description"
|
|
22
|
+
}),
|
|
23
|
+
permissions: field.string({
|
|
24
|
+
isArray: true,
|
|
25
|
+
description: "Array of permission names"
|
|
26
|
+
}),
|
|
27
|
+
createdAt: field.createdAt(),
|
|
28
|
+
updatedAt: field.updatedAt(),
|
|
29
|
+
policyBindings: field.hasMany("PolicyBinding")
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Permission entity - atomic access right.
|
|
34
|
+
*/
|
|
35
|
+
const PermissionEntity = defineEntity({
|
|
36
|
+
name: "Permission",
|
|
37
|
+
description: "A permission represents an atomic access right.",
|
|
38
|
+
schema: "lssm_sigil",
|
|
39
|
+
map: "permission",
|
|
40
|
+
fields: {
|
|
41
|
+
id: field.id(),
|
|
42
|
+
name: field.string({
|
|
43
|
+
isUnique: true,
|
|
44
|
+
description: "Unique permission name"
|
|
45
|
+
}),
|
|
46
|
+
description: field.string({
|
|
47
|
+
isOptional: true,
|
|
48
|
+
description: "Permission description"
|
|
49
|
+
}),
|
|
50
|
+
createdAt: field.createdAt(),
|
|
51
|
+
updatedAt: field.updatedAt()
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* PolicyBinding entity - binds roles to principals.
|
|
56
|
+
*/
|
|
57
|
+
const PolicyBindingEntity = defineEntity({
|
|
58
|
+
name: "PolicyBinding",
|
|
59
|
+
description: "Binds roles to principals (users or organizations).",
|
|
60
|
+
schema: "lssm_sigil",
|
|
61
|
+
map: "policy_binding",
|
|
62
|
+
fields: {
|
|
63
|
+
id: field.id(),
|
|
64
|
+
roleId: field.foreignKey(),
|
|
65
|
+
targetType: field.string({ description: "\"user\" or \"organization\"" }),
|
|
66
|
+
targetId: field.string({ description: "ID of User or Organization" }),
|
|
67
|
+
expiresAt: field.dateTime({
|
|
68
|
+
isOptional: true,
|
|
69
|
+
description: "When binding expires"
|
|
70
|
+
}),
|
|
71
|
+
createdAt: field.createdAt(),
|
|
72
|
+
userId: field.string({ isOptional: true }),
|
|
73
|
+
organizationId: field.string({ isOptional: true }),
|
|
74
|
+
role: field.belongsTo("Role", ["roleId"], ["id"], { onDelete: "Cascade" }),
|
|
75
|
+
user: field.belongsTo("User", ["userId"], ["id"]),
|
|
76
|
+
organization: field.belongsTo("Organization", ["organizationId"], ["id"])
|
|
77
|
+
},
|
|
78
|
+
indexes: [index.on(["targetType", "targetId"])]
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* ApiKey entity - API keys for programmatic access.
|
|
82
|
+
*/
|
|
83
|
+
const ApiKeyEntity = defineEntity({
|
|
84
|
+
name: "ApiKey",
|
|
85
|
+
description: "API keys for programmatic access.",
|
|
86
|
+
schema: "lssm_sigil",
|
|
87
|
+
map: "api_key",
|
|
88
|
+
fields: {
|
|
89
|
+
id: field.id(),
|
|
90
|
+
name: field.string({ description: "API key name" }),
|
|
91
|
+
start: field.string({ description: "Starting characters for identification" }),
|
|
92
|
+
prefix: field.string({ description: "API key prefix" }),
|
|
93
|
+
key: field.string({ description: "Hashed API key" }),
|
|
94
|
+
userId: field.foreignKey(),
|
|
95
|
+
refillInterval: field.int({ description: "Refill interval in ms" }),
|
|
96
|
+
refillAmount: field.int({ description: "Amount to refill" }),
|
|
97
|
+
lastRefillAt: field.dateTime(),
|
|
98
|
+
remaining: field.int({ description: "Remaining requests" }),
|
|
99
|
+
requestCount: field.int({ description: "Total requests made" }),
|
|
100
|
+
lastRequest: field.dateTime(),
|
|
101
|
+
enabled: field.boolean({ default: true }),
|
|
102
|
+
rateLimitEnabled: field.boolean({ default: true }),
|
|
103
|
+
rateLimitTimeWindow: field.int({ description: "Rate limit window in ms" }),
|
|
104
|
+
rateLimitMax: field.int({ description: "Max requests in window" }),
|
|
105
|
+
expiresAt: field.dateTime(),
|
|
106
|
+
permissions: field.string({ isArray: true }),
|
|
107
|
+
metadata: field.json({ isOptional: true }),
|
|
108
|
+
createdAt: field.createdAt(),
|
|
109
|
+
updatedAt: field.updatedAt(),
|
|
110
|
+
user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* Passkey entity - WebAuthn passkeys.
|
|
115
|
+
*/
|
|
116
|
+
const PasskeyEntity = defineEntity({
|
|
117
|
+
name: "Passkey",
|
|
118
|
+
description: "WebAuthn passkeys for passwordless authentication.",
|
|
119
|
+
schema: "lssm_sigil",
|
|
120
|
+
map: "passkey",
|
|
121
|
+
fields: {
|
|
122
|
+
id: field.id(),
|
|
123
|
+
name: field.string({ description: "Passkey name" }),
|
|
124
|
+
publicKey: field.string({ description: "Public key" }),
|
|
125
|
+
userId: field.foreignKey(),
|
|
126
|
+
credentialID: field.string({ description: "Credential ID" }),
|
|
127
|
+
counter: field.int({ description: "Counter" }),
|
|
128
|
+
deviceType: field.string({ description: "Device type" }),
|
|
129
|
+
backedUp: field.boolean({ description: "Whether passkey is backed up" }),
|
|
130
|
+
transports: field.string({ description: "Transports" }),
|
|
131
|
+
aaguid: field.string({ description: "Authenticator GUID" }),
|
|
132
|
+
createdAt: field.createdAt(),
|
|
133
|
+
user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
//#endregion
|
|
138
|
+
export { ApiKeyEntity, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity };
|