@lssm/lib.identity-rbac 0.0.0-canary-20251217083314 → 0.0.0-canary-20251219202229
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/LICENSE +21 -0
- package/dist/contracts/dist/capabilities/openbanking.js +2 -1
- package/dist/contracts/dist/capabilities/openbanking.js.map +1 -0
- package/dist/contracts/dist/contract-registry/schemas.js +2 -1
- package/dist/contracts/dist/contract-registry/schemas.js.map +1 -0
- package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
- package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/index.js +2 -6
- package/dist/contracts/dist/docs/meta.docs.js +30 -0
- package/dist/contracts/dist/docs/meta.docs.js.map +1 -0
- package/dist/contracts/dist/docs/presentations.js +2 -1
- package/dist/contracts/dist/docs/presentations.js.map +1 -0
- package/dist/contracts/dist/docs/registry.js +2 -1
- package/dist/contracts/dist/docs/registry.js.map +1 -0
- package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
- package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
- package/dist/contracts/dist/docs/tech-contracts.docs.js +97 -0
- package/dist/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
- package/dist/contracts/dist/events.js +2 -1
- package/dist/contracts/dist/events.js.map +1 -0
- package/dist/contracts/dist/index.js +2 -1
- package/dist/contracts/dist/integrations/contracts.js +65 -66
- package/dist/contracts/dist/integrations/contracts.js.map +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
- package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
- package/dist/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
- package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/contracts/dist/integrations/openbanking/models.js +60 -61
- package/dist/contracts/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/contracts/dist/integrations/openbanking/telemetry.js +2 -1
- package/dist/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/elevenlabs.js +2 -1
- package/dist/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/gcs-storage.js +2 -1
- package/dist/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/gmail.js +2 -1
- package/dist/contracts/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/google-calendar.js +2 -1
- package/dist/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/mistral.js +2 -1
- package/dist/contracts/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/postmark.js +2 -1
- package/dist/contracts/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/powens.js +2 -1
- package/dist/contracts/dist/integrations/providers/powens.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/qdrant.js +2 -1
- package/dist/contracts/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/stripe.js +2 -1
- package/dist/contracts/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/contracts/dist/integrations/providers/twilio-sms.js +2 -1
- package/dist/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/contracts/dist/knowledge/contracts.js +44 -45
- package/dist/contracts/dist/knowledge/contracts.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/email-threads.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/product-canon.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/support-faq.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
- package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/contracts/dist/llm/exporters.js +2 -1
- package/dist/contracts/dist/llm/exporters.js.map +1 -0
- package/dist/contracts/dist/onboarding-base.js +22 -23
- package/dist/contracts/dist/onboarding-base.js.map +1 -0
- package/dist/contracts/dist/ownership.js +4 -2
- package/dist/contracts/dist/ownership.js.map +1 -0
- package/dist/contracts/dist/presentations.v2.js +2 -1
- package/dist/contracts/dist/presentations.v2.js.map +1 -0
- package/dist/contracts/dist/regenerator/service.js +2 -1
- package/dist/contracts/dist/regenerator/service.js.map +1 -0
- package/dist/contracts/dist/schema/dist/index.js +3873 -6
- package/dist/contracts/dist/schema/dist/index.js.map +1 -0
- package/dist/contracts/dist/spec.js +2 -1
- package/dist/contracts/dist/spec.js.map +1 -0
- package/dist/contracts/organization.d.ts +187 -186
- package/dist/contracts/organization.d.ts.map +1 -0
- package/dist/contracts/organization.js +72 -73
- package/dist/contracts/organization.js.map +1 -0
- package/dist/contracts/rbac.d.ts +128 -127
- package/dist/contracts/rbac.d.ts.map +1 -0
- package/dist/contracts/rbac.js +50 -51
- package/dist/contracts/rbac.js.map +1 -0
- package/dist/contracts/user.d.ts +141 -140
- package/dist/contracts/user.d.ts.map +1 -0
- package/dist/contracts/user.js +41 -42
- package/dist/contracts/user.js.map +1 -0
- package/dist/entities/index.d.ts +162 -161
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +2 -1
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/organization.d.ts +61 -60
- package/dist/entities/organization.d.ts.map +1 -0
- package/dist/entities/organization.js +62 -62
- package/dist/entities/organization.js.map +1 -0
- package/dist/entities/rbac.d.ts +65 -64
- package/dist/entities/rbac.d.ts.map +1 -0
- package/dist/entities/rbac.js +66 -66
- package/dist/entities/rbac.js.map +1 -0
- package/dist/entities/user.d.ts +69 -68
- package/dist/entities/user.d.ts.map +1 -0
- package/dist/entities/user.js +70 -70
- package/dist/entities/user.js.map +1 -0
- package/dist/events.d.ts +145 -144
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +89 -90
- package/dist/events.js.map +1 -0
- package/dist/identity-rbac.feature.d.ts +2 -1
- package/dist/identity-rbac.feature.d.ts.map +1 -0
- package/dist/identity-rbac.feature.js +2 -1
- package/dist/identity-rbac.feature.js.map +1 -0
- package/dist/policies/engine.d.ts +2 -1
- package/dist/policies/engine.d.ts.map +1 -0
- package/dist/policies/engine.js +2 -1
- package/dist/policies/engine.js.map +1 -0
- package/dist/schema/dist/index.js +4888 -6
- package/dist/schema/dist/index.js.map +1 -0
- package/package.json +7 -6
- package/dist/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/contracts/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/schema/dist/EnumType.js +0 -2
- package/dist/schema/dist/FieldType.js +0 -49
- package/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/schema/dist/entity/defineEntity.js +0 -236
- package/dist/schema/dist/entity/index.js +0 -2
- package/dist/schema/dist/entity/types.js +0 -1
package/dist/entities/rbac.js
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../schema/dist/index.js";
|
|
1
|
+
import { L5, _5, b5 } from "../schema/dist/index.js";
|
|
3
2
|
|
|
4
3
|
//#region src/entities/rbac.ts
|
|
5
4
|
/**
|
|
6
5
|
* Role entity - named set of permissions.
|
|
7
6
|
*/
|
|
8
|
-
const RoleEntity =
|
|
7
|
+
const RoleEntity = L5({
|
|
9
8
|
name: "Role",
|
|
10
9
|
description: "A role defines a named set of permissions.",
|
|
11
10
|
schema: "lssm_sigil",
|
|
12
11
|
map: "role",
|
|
13
12
|
fields: {
|
|
14
|
-
id:
|
|
15
|
-
name:
|
|
13
|
+
id: _5.id(),
|
|
14
|
+
name: _5.string({
|
|
16
15
|
isUnique: true,
|
|
17
16
|
description: "Unique role name"
|
|
18
17
|
}),
|
|
19
|
-
description:
|
|
18
|
+
description: _5.string({
|
|
20
19
|
isOptional: true,
|
|
21
20
|
description: "Role description"
|
|
22
21
|
}),
|
|
23
|
-
permissions:
|
|
22
|
+
permissions: _5.string({
|
|
24
23
|
isArray: true,
|
|
25
24
|
description: "Array of permission names"
|
|
26
25
|
}),
|
|
27
|
-
createdAt:
|
|
28
|
-
updatedAt:
|
|
29
|
-
policyBindings:
|
|
26
|
+
createdAt: _5.createdAt(),
|
|
27
|
+
updatedAt: _5.updatedAt(),
|
|
28
|
+
policyBindings: _5.hasMany("PolicyBinding")
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
31
|
/**
|
|
33
32
|
* Permission entity - atomic access right.
|
|
34
33
|
*/
|
|
35
|
-
const PermissionEntity =
|
|
34
|
+
const PermissionEntity = L5({
|
|
36
35
|
name: "Permission",
|
|
37
36
|
description: "A permission represents an atomic access right.",
|
|
38
37
|
schema: "lssm_sigil",
|
|
39
38
|
map: "permission",
|
|
40
39
|
fields: {
|
|
41
|
-
id:
|
|
42
|
-
name:
|
|
40
|
+
id: _5.id(),
|
|
41
|
+
name: _5.string({
|
|
43
42
|
isUnique: true,
|
|
44
43
|
description: "Unique permission name"
|
|
45
44
|
}),
|
|
46
|
-
description:
|
|
45
|
+
description: _5.string({
|
|
47
46
|
isOptional: true,
|
|
48
47
|
description: "Permission description"
|
|
49
48
|
}),
|
|
50
|
-
createdAt:
|
|
51
|
-
updatedAt:
|
|
49
|
+
createdAt: _5.createdAt(),
|
|
50
|
+
updatedAt: _5.updatedAt()
|
|
52
51
|
}
|
|
53
52
|
});
|
|
54
53
|
/**
|
|
55
54
|
* PolicyBinding entity - binds roles to principals.
|
|
56
55
|
*/
|
|
57
|
-
const PolicyBindingEntity =
|
|
56
|
+
const PolicyBindingEntity = L5({
|
|
58
57
|
name: "PolicyBinding",
|
|
59
58
|
description: "Binds roles to principals (users or organizations).",
|
|
60
59
|
schema: "lssm_sigil",
|
|
61
60
|
map: "policy_binding",
|
|
62
61
|
fields: {
|
|
63
|
-
id:
|
|
64
|
-
roleId:
|
|
65
|
-
targetType:
|
|
66
|
-
targetId:
|
|
67
|
-
expiresAt:
|
|
62
|
+
id: _5.id(),
|
|
63
|
+
roleId: _5.foreignKey(),
|
|
64
|
+
targetType: _5.string({ description: "\"user\" or \"organization\"" }),
|
|
65
|
+
targetId: _5.string({ description: "ID of User or Organization" }),
|
|
66
|
+
expiresAt: _5.dateTime({
|
|
68
67
|
isOptional: true,
|
|
69
68
|
description: "When binding expires"
|
|
70
69
|
}),
|
|
71
|
-
createdAt:
|
|
72
|
-
userId:
|
|
73
|
-
organizationId:
|
|
74
|
-
role:
|
|
75
|
-
user:
|
|
76
|
-
organization:
|
|
70
|
+
createdAt: _5.createdAt(),
|
|
71
|
+
userId: _5.string({ isOptional: true }),
|
|
72
|
+
organizationId: _5.string({ isOptional: true }),
|
|
73
|
+
role: _5.belongsTo("Role", ["roleId"], ["id"], { onDelete: "Cascade" }),
|
|
74
|
+
user: _5.belongsTo("User", ["userId"], ["id"]),
|
|
75
|
+
organization: _5.belongsTo("Organization", ["organizationId"], ["id"])
|
|
77
76
|
},
|
|
78
|
-
indexes: [
|
|
77
|
+
indexes: [b5.on(["targetType", "targetId"])]
|
|
79
78
|
});
|
|
80
79
|
/**
|
|
81
80
|
* ApiKey entity - API keys for programmatic access.
|
|
82
81
|
*/
|
|
83
|
-
const ApiKeyEntity =
|
|
82
|
+
const ApiKeyEntity = L5({
|
|
84
83
|
name: "ApiKey",
|
|
85
84
|
description: "API keys for programmatic access.",
|
|
86
85
|
schema: "lssm_sigil",
|
|
87
86
|
map: "api_key",
|
|
88
87
|
fields: {
|
|
89
|
-
id:
|
|
90
|
-
name:
|
|
91
|
-
start:
|
|
92
|
-
prefix:
|
|
93
|
-
key:
|
|
94
|
-
userId:
|
|
95
|
-
refillInterval:
|
|
96
|
-
refillAmount:
|
|
97
|
-
lastRefillAt:
|
|
98
|
-
remaining:
|
|
99
|
-
requestCount:
|
|
100
|
-
lastRequest:
|
|
101
|
-
enabled:
|
|
102
|
-
rateLimitEnabled:
|
|
103
|
-
rateLimitTimeWindow:
|
|
104
|
-
rateLimitMax:
|
|
105
|
-
expiresAt:
|
|
106
|
-
permissions:
|
|
107
|
-
metadata:
|
|
108
|
-
createdAt:
|
|
109
|
-
updatedAt:
|
|
110
|
-
user:
|
|
88
|
+
id: _5.id(),
|
|
89
|
+
name: _5.string({ description: "API key name" }),
|
|
90
|
+
start: _5.string({ description: "Starting characters for identification" }),
|
|
91
|
+
prefix: _5.string({ description: "API key prefix" }),
|
|
92
|
+
key: _5.string({ description: "Hashed API key" }),
|
|
93
|
+
userId: _5.foreignKey(),
|
|
94
|
+
refillInterval: _5.int({ description: "Refill interval in ms" }),
|
|
95
|
+
refillAmount: _5.int({ description: "Amount to refill" }),
|
|
96
|
+
lastRefillAt: _5.dateTime(),
|
|
97
|
+
remaining: _5.int({ description: "Remaining requests" }),
|
|
98
|
+
requestCount: _5.int({ description: "Total requests made" }),
|
|
99
|
+
lastRequest: _5.dateTime(),
|
|
100
|
+
enabled: _5.boolean({ default: true }),
|
|
101
|
+
rateLimitEnabled: _5.boolean({ default: true }),
|
|
102
|
+
rateLimitTimeWindow: _5.int({ description: "Rate limit window in ms" }),
|
|
103
|
+
rateLimitMax: _5.int({ description: "Max requests in window" }),
|
|
104
|
+
expiresAt: _5.dateTime(),
|
|
105
|
+
permissions: _5.string({ isArray: true }),
|
|
106
|
+
metadata: _5.json({ isOptional: true }),
|
|
107
|
+
createdAt: _5.createdAt(),
|
|
108
|
+
updatedAt: _5.updatedAt(),
|
|
109
|
+
user: _5.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
111
110
|
}
|
|
112
111
|
});
|
|
113
112
|
/**
|
|
114
113
|
* Passkey entity - WebAuthn passkeys.
|
|
115
114
|
*/
|
|
116
|
-
const PasskeyEntity =
|
|
115
|
+
const PasskeyEntity = L5({
|
|
117
116
|
name: "Passkey",
|
|
118
117
|
description: "WebAuthn passkeys for passwordless authentication.",
|
|
119
118
|
schema: "lssm_sigil",
|
|
120
119
|
map: "passkey",
|
|
121
120
|
fields: {
|
|
122
|
-
id:
|
|
123
|
-
name:
|
|
124
|
-
publicKey:
|
|
125
|
-
userId:
|
|
126
|
-
credentialID:
|
|
127
|
-
counter:
|
|
128
|
-
deviceType:
|
|
129
|
-
backedUp:
|
|
130
|
-
transports:
|
|
131
|
-
aaguid:
|
|
132
|
-
createdAt:
|
|
133
|
-
user:
|
|
121
|
+
id: _5.id(),
|
|
122
|
+
name: _5.string({ description: "Passkey name" }),
|
|
123
|
+
publicKey: _5.string({ description: "Public key" }),
|
|
124
|
+
userId: _5.foreignKey(),
|
|
125
|
+
credentialID: _5.string({ description: "Credential ID" }),
|
|
126
|
+
counter: _5.int({ description: "Counter" }),
|
|
127
|
+
deviceType: _5.string({ description: "Device type" }),
|
|
128
|
+
backedUp: _5.boolean({ description: "Whether passkey is backed up" }),
|
|
129
|
+
transports: _5.string({ description: "Transports" }),
|
|
130
|
+
aaguid: _5.string({ description: "Authenticator GUID" }),
|
|
131
|
+
createdAt: _5.createdAt(),
|
|
132
|
+
user: _5.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
134
133
|
}
|
|
135
134
|
});
|
|
136
135
|
|
|
137
136
|
//#endregion
|
|
138
|
-
export { ApiKeyEntity, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity };
|
|
137
|
+
export { ApiKeyEntity, PasskeyEntity, PermissionEntity, PolicyBindingEntity, RoleEntity };
|
|
138
|
+
//# sourceMappingURL=rbac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac.js","names":["defineEntity","field","index"],"sources":["../../src/entities/rbac.ts"],"sourcesContent":["import { defineEntity, field, index } from '@lssm/lib.schema';\n\n/**\n * Role entity - named set of permissions.\n */\nexport const RoleEntity = defineEntity({\n name: 'Role',\n description: 'A role defines a named set of permissions.',\n schema: 'lssm_sigil',\n map: 'role',\n fields: {\n id: field.id(),\n name: field.string({ isUnique: true, description: 'Unique role name' }),\n description: field.string({\n isOptional: true,\n description: 'Role description',\n }),\n permissions: field.string({\n isArray: true,\n description: 'Array of permission names',\n }),\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n policyBindings: field.hasMany('PolicyBinding'),\n },\n});\n\n/**\n * Permission entity - atomic access right.\n */\nexport const PermissionEntity = defineEntity({\n name: 'Permission',\n description: 'A permission represents an atomic access right.',\n schema: 'lssm_sigil',\n map: 'permission',\n fields: {\n id: field.id(),\n name: field.string({\n isUnique: true,\n description: 'Unique permission name',\n }),\n description: field.string({\n isOptional: true,\n description: 'Permission description',\n }),\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n },\n});\n\n/**\n * PolicyBinding entity - binds roles to principals.\n */\nexport const PolicyBindingEntity = defineEntity({\n name: 'PolicyBinding',\n description: 'Binds roles to principals (users or organizations).',\n schema: 'lssm_sigil',\n map: 'policy_binding',\n fields: {\n id: field.id(),\n roleId: field.foreignKey(),\n targetType: field.string({ description: '\"user\" or \"organization\"' }),\n targetId: field.string({ description: 'ID of User or Organization' }),\n expiresAt: field.dateTime({\n isOptional: true,\n description: 'When binding expires',\n }),\n createdAt: field.createdAt(),\n\n // Optional direct relations\n userId: field.string({ isOptional: true }),\n organizationId: field.string({ isOptional: true }),\n\n // Relations\n role: field.belongsTo('Role', ['roleId'], ['id'], { onDelete: 'Cascade' }),\n user: field.belongsTo('User', ['userId'], ['id']),\n organization: field.belongsTo('Organization', ['organizationId'], ['id']),\n },\n indexes: [index.on(['targetType', 'targetId'])],\n});\n\n/**\n * ApiKey entity - API keys for programmatic access.\n */\nexport const ApiKeyEntity = defineEntity({\n name: 'ApiKey',\n description: 'API keys for programmatic access.',\n schema: 'lssm_sigil',\n map: 'api_key',\n fields: {\n id: field.id(),\n name: field.string({ description: 'API key name' }),\n start: field.string({\n description: 'Starting characters for identification',\n }),\n prefix: field.string({ description: 'API key prefix' }),\n key: field.string({ description: 'Hashed API key' }),\n userId: field.foreignKey(),\n\n // Rate limiting\n refillInterval: field.int({ description: 'Refill interval in ms' }),\n refillAmount: field.int({ description: 'Amount to refill' }),\n lastRefillAt: field.dateTime(),\n remaining: field.int({ description: 'Remaining requests' }),\n requestCount: field.int({ description: 'Total requests made' }),\n lastRequest: field.dateTime(),\n\n // Limits\n enabled: field.boolean({ default: true }),\n rateLimitEnabled: field.boolean({ default: true }),\n rateLimitTimeWindow: field.int({ description: 'Rate limit window in ms' }),\n rateLimitMax: field.int({ description: 'Max requests in window' }),\n\n // Expiration\n expiresAt: field.dateTime(),\n\n // Permissions\n permissions: field.string({ isArray: true }),\n metadata: field.json({ isOptional: true }),\n\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n user: field.belongsTo('User', ['userId'], ['id'], { onDelete: 'Cascade' }),\n },\n});\n\n/**\n * Passkey entity - WebAuthn passkeys.\n */\nexport const PasskeyEntity = defineEntity({\n name: 'Passkey',\n description: 'WebAuthn passkeys for passwordless authentication.',\n schema: 'lssm_sigil',\n map: 'passkey',\n fields: {\n id: field.id(),\n name: field.string({ description: 'Passkey name' }),\n publicKey: field.string({ description: 'Public key' }),\n userId: field.foreignKey(),\n credentialID: field.string({ description: 'Credential ID' }),\n counter: field.int({ description: 'Counter' }),\n deviceType: field.string({ description: 'Device type' }),\n backedUp: field.boolean({ description: 'Whether passkey is backed up' }),\n transports: field.string({ description: 'Transports' }),\n aaguid: field.string({ description: 'Authenticator GUID' }),\n createdAt: field.createdAt(),\n\n // Relations\n user: field.belongsTo('User', ['userId'], ['id'], { onDelete: 'Cascade' }),\n },\n});\n"],"mappings":"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"}
|
package/dist/entities/user.d.ts
CHANGED
|
@@ -1,87 +1,88 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _lssm_lib_schema796 from "@lssm/lib.schema";
|
|
2
2
|
|
|
3
3
|
//#region src/entities/user.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* User entity - core user profile and authentication.
|
|
6
6
|
*/
|
|
7
|
-
declare const UserEntity:
|
|
8
|
-
id:
|
|
9
|
-
email:
|
|
10
|
-
emailVerified:
|
|
11
|
-
name:
|
|
12
|
-
firstName:
|
|
13
|
-
lastName:
|
|
14
|
-
locale:
|
|
15
|
-
timezone:
|
|
16
|
-
imageUrl:
|
|
17
|
-
image:
|
|
18
|
-
metadata:
|
|
19
|
-
onboardingCompleted:
|
|
20
|
-
onboardingStep:
|
|
21
|
-
whitelistedAt:
|
|
22
|
-
role:
|
|
23
|
-
banned:
|
|
24
|
-
banReason:
|
|
25
|
-
banExpires:
|
|
26
|
-
phoneNumber:
|
|
27
|
-
phoneNumberVerified:
|
|
28
|
-
createdAt:
|
|
29
|
-
updatedAt:
|
|
30
|
-
sessions:
|
|
31
|
-
accounts:
|
|
32
|
-
memberships:
|
|
33
|
-
invitations:
|
|
34
|
-
teamMemberships:
|
|
35
|
-
policyBindings:
|
|
36
|
-
apiKeys:
|
|
37
|
-
passkeys:
|
|
7
|
+
declare const UserEntity: _lssm_lib_schema796.EntitySpec<{
|
|
8
|
+
id: _lssm_lib_schema796.EntityScalarField;
|
|
9
|
+
email: _lssm_lib_schema796.EntityScalarField;
|
|
10
|
+
emailVerified: _lssm_lib_schema796.EntityScalarField;
|
|
11
|
+
name: _lssm_lib_schema796.EntityScalarField;
|
|
12
|
+
firstName: _lssm_lib_schema796.EntityScalarField;
|
|
13
|
+
lastName: _lssm_lib_schema796.EntityScalarField;
|
|
14
|
+
locale: _lssm_lib_schema796.EntityScalarField;
|
|
15
|
+
timezone: _lssm_lib_schema796.EntityScalarField;
|
|
16
|
+
imageUrl: _lssm_lib_schema796.EntityScalarField;
|
|
17
|
+
image: _lssm_lib_schema796.EntityScalarField;
|
|
18
|
+
metadata: _lssm_lib_schema796.EntityScalarField;
|
|
19
|
+
onboardingCompleted: _lssm_lib_schema796.EntityScalarField;
|
|
20
|
+
onboardingStep: _lssm_lib_schema796.EntityScalarField;
|
|
21
|
+
whitelistedAt: _lssm_lib_schema796.EntityScalarField;
|
|
22
|
+
role: _lssm_lib_schema796.EntityScalarField;
|
|
23
|
+
banned: _lssm_lib_schema796.EntityScalarField;
|
|
24
|
+
banReason: _lssm_lib_schema796.EntityScalarField;
|
|
25
|
+
banExpires: _lssm_lib_schema796.EntityScalarField;
|
|
26
|
+
phoneNumber: _lssm_lib_schema796.EntityScalarField;
|
|
27
|
+
phoneNumberVerified: _lssm_lib_schema796.EntityScalarField;
|
|
28
|
+
createdAt: _lssm_lib_schema796.EntityScalarField;
|
|
29
|
+
updatedAt: _lssm_lib_schema796.EntityScalarField;
|
|
30
|
+
sessions: _lssm_lib_schema796.EntityRelationField;
|
|
31
|
+
accounts: _lssm_lib_schema796.EntityRelationField;
|
|
32
|
+
memberships: _lssm_lib_schema796.EntityRelationField;
|
|
33
|
+
invitations: _lssm_lib_schema796.EntityRelationField;
|
|
34
|
+
teamMemberships: _lssm_lib_schema796.EntityRelationField;
|
|
35
|
+
policyBindings: _lssm_lib_schema796.EntityRelationField;
|
|
36
|
+
apiKeys: _lssm_lib_schema796.EntityRelationField;
|
|
37
|
+
passkeys: _lssm_lib_schema796.EntityRelationField;
|
|
38
38
|
}>;
|
|
39
39
|
/**
|
|
40
40
|
* Session entity - login sessions.
|
|
41
41
|
*/
|
|
42
|
-
declare const SessionEntity:
|
|
43
|
-
id:
|
|
44
|
-
userId:
|
|
45
|
-
expiresAt:
|
|
46
|
-
token:
|
|
47
|
-
ipAddress:
|
|
48
|
-
userAgent:
|
|
49
|
-
impersonatedBy:
|
|
50
|
-
activeOrganizationId:
|
|
51
|
-
activeTeamId:
|
|
52
|
-
createdAt:
|
|
53
|
-
updatedAt:
|
|
54
|
-
user:
|
|
42
|
+
declare const SessionEntity: _lssm_lib_schema796.EntitySpec<{
|
|
43
|
+
id: _lssm_lib_schema796.EntityScalarField;
|
|
44
|
+
userId: _lssm_lib_schema796.EntityScalarField;
|
|
45
|
+
expiresAt: _lssm_lib_schema796.EntityScalarField;
|
|
46
|
+
token: _lssm_lib_schema796.EntityScalarField;
|
|
47
|
+
ipAddress: _lssm_lib_schema796.EntityScalarField;
|
|
48
|
+
userAgent: _lssm_lib_schema796.EntityScalarField;
|
|
49
|
+
impersonatedBy: _lssm_lib_schema796.EntityScalarField;
|
|
50
|
+
activeOrganizationId: _lssm_lib_schema796.EntityScalarField;
|
|
51
|
+
activeTeamId: _lssm_lib_schema796.EntityScalarField;
|
|
52
|
+
createdAt: _lssm_lib_schema796.EntityScalarField;
|
|
53
|
+
updatedAt: _lssm_lib_schema796.EntityScalarField;
|
|
54
|
+
user: _lssm_lib_schema796.EntityRelationField;
|
|
55
55
|
}>;
|
|
56
56
|
/**
|
|
57
57
|
* Account entity - external authentication accounts.
|
|
58
58
|
*/
|
|
59
|
-
declare const AccountEntity:
|
|
60
|
-
id:
|
|
61
|
-
accountId:
|
|
62
|
-
providerId:
|
|
63
|
-
userId:
|
|
64
|
-
accessToken:
|
|
65
|
-
refreshToken:
|
|
66
|
-
idToken:
|
|
67
|
-
accessTokenExpiresAt:
|
|
68
|
-
refreshTokenExpiresAt:
|
|
69
|
-
scope:
|
|
70
|
-
password:
|
|
71
|
-
createdAt:
|
|
72
|
-
updatedAt:
|
|
73
|
-
user:
|
|
59
|
+
declare const AccountEntity: _lssm_lib_schema796.EntitySpec<{
|
|
60
|
+
id: _lssm_lib_schema796.EntityScalarField;
|
|
61
|
+
accountId: _lssm_lib_schema796.EntityScalarField;
|
|
62
|
+
providerId: _lssm_lib_schema796.EntityScalarField;
|
|
63
|
+
userId: _lssm_lib_schema796.EntityScalarField;
|
|
64
|
+
accessToken: _lssm_lib_schema796.EntityScalarField;
|
|
65
|
+
refreshToken: _lssm_lib_schema796.EntityScalarField;
|
|
66
|
+
idToken: _lssm_lib_schema796.EntityScalarField;
|
|
67
|
+
accessTokenExpiresAt: _lssm_lib_schema796.EntityScalarField;
|
|
68
|
+
refreshTokenExpiresAt: _lssm_lib_schema796.EntityScalarField;
|
|
69
|
+
scope: _lssm_lib_schema796.EntityScalarField;
|
|
70
|
+
password: _lssm_lib_schema796.EntityScalarField;
|
|
71
|
+
createdAt: _lssm_lib_schema796.EntityScalarField;
|
|
72
|
+
updatedAt: _lssm_lib_schema796.EntityScalarField;
|
|
73
|
+
user: _lssm_lib_schema796.EntityRelationField;
|
|
74
74
|
}>;
|
|
75
75
|
/**
|
|
76
76
|
* Verification entity - email/phone verification tokens.
|
|
77
77
|
*/
|
|
78
|
-
declare const VerificationEntity:
|
|
79
|
-
id:
|
|
80
|
-
identifier:
|
|
81
|
-
value:
|
|
82
|
-
expiresAt:
|
|
83
|
-
createdAt:
|
|
84
|
-
updatedAt:
|
|
78
|
+
declare const VerificationEntity: _lssm_lib_schema796.EntitySpec<{
|
|
79
|
+
id: _lssm_lib_schema796.EntityScalarField;
|
|
80
|
+
identifier: _lssm_lib_schema796.EntityScalarField;
|
|
81
|
+
value: _lssm_lib_schema796.EntityScalarField;
|
|
82
|
+
expiresAt: _lssm_lib_schema796.EntityScalarField;
|
|
83
|
+
createdAt: _lssm_lib_schema796.EntityScalarField;
|
|
84
|
+
updatedAt: _lssm_lib_schema796.EntityScalarField;
|
|
85
85
|
}>;
|
|
86
86
|
//#endregion
|
|
87
|
-
export { AccountEntity, SessionEntity, UserEntity, VerificationEntity };
|
|
87
|
+
export { AccountEntity, SessionEntity, UserEntity, VerificationEntity };
|
|
88
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","names":[],"sources":["../../src/entities/user.ts"],"sourcesContent":[],"mappings":";;;;;;AAKa,cAAA,UA+FX,sBA/FqB,UA+FrB,CAAA;EAAA,EAAA,EAAA,mBAAA,CAAA,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKF;;cAAa,mCAAa;MAoCxB,mBAAA,CAAA;;;;;;;;;;kDApCwB;EAAA,IAAA,yCAAA;AAyC1B,CAAA,CAAA;;;;cAAa,mCAAa;MA2BxB,mBAAA,CAAA;;;;;;;;;;iDA3BwB;EAAA,SAAA,uCAAA;EAgCb,SAAA,uCAaX;EAAA,IAAA,yCAAA;;;;;cAbW,wCAAkB;MAa7B,mBAAA,CAAA,iBAb6B;EAAA,UAAA,uCAAA"}
|
package/dist/entities/user.js
CHANGED
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../schema/dist/index.js";
|
|
1
|
+
import { L5, _5, b5 } from "../schema/dist/index.js";
|
|
3
2
|
|
|
4
3
|
//#region src/entities/user.ts
|
|
5
4
|
/**
|
|
6
5
|
* User entity - core user profile and authentication.
|
|
7
6
|
*/
|
|
8
|
-
const UserEntity =
|
|
7
|
+
const UserEntity = L5({
|
|
9
8
|
name: "User",
|
|
10
9
|
description: "A user of the platform. Users hold core profile information and authenticate via Account records.",
|
|
11
10
|
schema: "lssm_sigil",
|
|
12
11
|
map: "user",
|
|
13
12
|
fields: {
|
|
14
|
-
id:
|
|
15
|
-
email:
|
|
13
|
+
id: _5.id({ description: "Unique user identifier" }),
|
|
14
|
+
email: _5.email({
|
|
16
15
|
isUnique: true,
|
|
17
16
|
description: "User email address"
|
|
18
17
|
}),
|
|
19
|
-
emailVerified:
|
|
18
|
+
emailVerified: _5.boolean({
|
|
20
19
|
default: false,
|
|
21
20
|
description: "Whether email has been verified"
|
|
22
21
|
}),
|
|
23
|
-
name:
|
|
22
|
+
name: _5.string({
|
|
24
23
|
isOptional: true,
|
|
25
24
|
description: "Display name"
|
|
26
25
|
}),
|
|
27
|
-
firstName:
|
|
26
|
+
firstName: _5.string({
|
|
28
27
|
isOptional: true,
|
|
29
28
|
description: "First name"
|
|
30
29
|
}),
|
|
31
|
-
lastName:
|
|
30
|
+
lastName: _5.string({
|
|
32
31
|
isOptional: true,
|
|
33
32
|
description: "Last name"
|
|
34
33
|
}),
|
|
35
|
-
locale:
|
|
34
|
+
locale: _5.string({
|
|
36
35
|
isOptional: true,
|
|
37
36
|
description: "User locale (e.g., \"en-US\")"
|
|
38
37
|
}),
|
|
39
|
-
timezone:
|
|
38
|
+
timezone: _5.string({
|
|
40
39
|
isOptional: true,
|
|
41
40
|
description: "Olson timezone (e.g., \"Europe/Paris\")"
|
|
42
41
|
}),
|
|
43
|
-
imageUrl:
|
|
42
|
+
imageUrl: _5.url({
|
|
44
43
|
isOptional: true,
|
|
45
44
|
description: "URL of avatar or profile picture"
|
|
46
45
|
}),
|
|
47
|
-
image:
|
|
46
|
+
image: _5.string({
|
|
48
47
|
isOptional: true,
|
|
49
48
|
description: "Legacy image field"
|
|
50
49
|
}),
|
|
51
|
-
metadata:
|
|
50
|
+
metadata: _5.json({
|
|
52
51
|
isOptional: true,
|
|
53
52
|
description: "Arbitrary user metadata"
|
|
54
53
|
}),
|
|
55
|
-
onboardingCompleted:
|
|
54
|
+
onboardingCompleted: _5.boolean({
|
|
56
55
|
default: false,
|
|
57
56
|
description: "Whether onboarding is complete"
|
|
58
57
|
}),
|
|
59
|
-
onboardingStep:
|
|
58
|
+
onboardingStep: _5.string({
|
|
60
59
|
isOptional: true,
|
|
61
60
|
description: "Current onboarding step"
|
|
62
61
|
}),
|
|
63
|
-
whitelistedAt:
|
|
62
|
+
whitelistedAt: _5.dateTime({
|
|
64
63
|
isOptional: true,
|
|
65
64
|
description: "When user was whitelisted"
|
|
66
65
|
}),
|
|
67
|
-
role:
|
|
66
|
+
role: _5.string({
|
|
68
67
|
isOptional: true,
|
|
69
68
|
default: "\"user\"",
|
|
70
69
|
description: "User role (user, admin)"
|
|
71
70
|
}),
|
|
72
|
-
banned:
|
|
71
|
+
banned: _5.boolean({
|
|
73
72
|
default: false,
|
|
74
73
|
description: "Whether user is banned"
|
|
75
74
|
}),
|
|
76
|
-
banReason:
|
|
75
|
+
banReason: _5.string({
|
|
77
76
|
isOptional: true,
|
|
78
77
|
description: "Reason for ban"
|
|
79
78
|
}),
|
|
80
|
-
banExpires:
|
|
79
|
+
banExpires: _5.dateTime({
|
|
81
80
|
isOptional: true,
|
|
82
81
|
description: "When ban expires"
|
|
83
82
|
}),
|
|
84
|
-
phoneNumber:
|
|
83
|
+
phoneNumber: _5.string({
|
|
85
84
|
isOptional: true,
|
|
86
85
|
isUnique: true,
|
|
87
86
|
description: "Phone number"
|
|
88
87
|
}),
|
|
89
|
-
phoneNumberVerified:
|
|
88
|
+
phoneNumberVerified: _5.boolean({
|
|
90
89
|
default: false,
|
|
91
90
|
description: "Whether phone is verified"
|
|
92
91
|
}),
|
|
93
|
-
createdAt:
|
|
94
|
-
updatedAt:
|
|
95
|
-
sessions:
|
|
96
|
-
accounts:
|
|
97
|
-
memberships:
|
|
98
|
-
invitations:
|
|
99
|
-
teamMemberships:
|
|
100
|
-
policyBindings:
|
|
101
|
-
apiKeys:
|
|
102
|
-
passkeys:
|
|
92
|
+
createdAt: _5.createdAt(),
|
|
93
|
+
updatedAt: _5.updatedAt(),
|
|
94
|
+
sessions: _5.hasMany("Session"),
|
|
95
|
+
accounts: _5.hasMany("Account"),
|
|
96
|
+
memberships: _5.hasMany("Member"),
|
|
97
|
+
invitations: _5.hasMany("Invitation"),
|
|
98
|
+
teamMemberships: _5.hasMany("TeamMember"),
|
|
99
|
+
policyBindings: _5.hasMany("PolicyBinding"),
|
|
100
|
+
apiKeys: _5.hasMany("ApiKey"),
|
|
101
|
+
passkeys: _5.hasMany("Passkey")
|
|
103
102
|
}
|
|
104
103
|
});
|
|
105
104
|
/**
|
|
106
105
|
* Session entity - login sessions.
|
|
107
106
|
*/
|
|
108
|
-
const SessionEntity =
|
|
107
|
+
const SessionEntity = L5({
|
|
109
108
|
name: "Session",
|
|
110
109
|
description: "Represents a login session (e.g., web session or API token).",
|
|
111
110
|
schema: "lssm_sigil",
|
|
112
111
|
map: "session",
|
|
113
112
|
fields: {
|
|
114
|
-
id:
|
|
115
|
-
userId:
|
|
116
|
-
expiresAt:
|
|
117
|
-
token:
|
|
113
|
+
id: _5.id(),
|
|
114
|
+
userId: _5.foreignKey(),
|
|
115
|
+
expiresAt: _5.dateTime({ description: "Session expiration time" }),
|
|
116
|
+
token: _5.string({
|
|
118
117
|
isUnique: true,
|
|
119
118
|
description: "Session token"
|
|
120
119
|
}),
|
|
121
|
-
ipAddress:
|
|
120
|
+
ipAddress: _5.string({
|
|
122
121
|
isOptional: true,
|
|
123
122
|
description: "Client IP address"
|
|
124
123
|
}),
|
|
125
|
-
userAgent:
|
|
124
|
+
userAgent: _5.string({
|
|
126
125
|
isOptional: true,
|
|
127
126
|
description: "Client user agent"
|
|
128
127
|
}),
|
|
129
|
-
impersonatedBy:
|
|
128
|
+
impersonatedBy: _5.string({
|
|
130
129
|
isOptional: true,
|
|
131
130
|
description: "Admin impersonating this session"
|
|
132
131
|
}),
|
|
133
|
-
activeOrganizationId:
|
|
132
|
+
activeOrganizationId: _5.string({
|
|
134
133
|
isOptional: true,
|
|
135
134
|
description: "Active org context"
|
|
136
135
|
}),
|
|
137
|
-
activeTeamId:
|
|
136
|
+
activeTeamId: _5.string({
|
|
138
137
|
isOptional: true,
|
|
139
138
|
description: "Active team context"
|
|
140
139
|
}),
|
|
141
|
-
createdAt:
|
|
142
|
-
updatedAt:
|
|
143
|
-
user:
|
|
140
|
+
createdAt: _5.createdAt(),
|
|
141
|
+
updatedAt: _5.updatedAt(),
|
|
142
|
+
user: _5.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
144
143
|
}
|
|
145
144
|
});
|
|
146
145
|
/**
|
|
147
146
|
* Account entity - external authentication accounts.
|
|
148
147
|
*/
|
|
149
|
-
const AccountEntity =
|
|
148
|
+
const AccountEntity = L5({
|
|
150
149
|
name: "Account",
|
|
151
150
|
description: "External authentication accounts (OAuth, password, etc.).",
|
|
152
151
|
schema: "lssm_sigil",
|
|
153
152
|
map: "account",
|
|
154
153
|
fields: {
|
|
155
|
-
id:
|
|
156
|
-
accountId:
|
|
157
|
-
providerId:
|
|
158
|
-
userId:
|
|
159
|
-
accessToken:
|
|
160
|
-
refreshToken:
|
|
161
|
-
idToken:
|
|
162
|
-
accessTokenExpiresAt:
|
|
163
|
-
refreshTokenExpiresAt:
|
|
164
|
-
scope:
|
|
165
|
-
password:
|
|
154
|
+
id: _5.id(),
|
|
155
|
+
accountId: _5.string({ description: "Account ID from provider" }),
|
|
156
|
+
providerId: _5.string({ description: "Provider identifier" }),
|
|
157
|
+
userId: _5.foreignKey(),
|
|
158
|
+
accessToken: _5.string({ isOptional: true }),
|
|
159
|
+
refreshToken: _5.string({ isOptional: true }),
|
|
160
|
+
idToken: _5.string({ isOptional: true }),
|
|
161
|
+
accessTokenExpiresAt: _5.dateTime({ isOptional: true }),
|
|
162
|
+
refreshTokenExpiresAt: _5.dateTime({ isOptional: true }),
|
|
163
|
+
scope: _5.string({ isOptional: true }),
|
|
164
|
+
password: _5.string({
|
|
166
165
|
isOptional: true,
|
|
167
166
|
description: "Hashed password for password providers"
|
|
168
167
|
}),
|
|
169
|
-
createdAt:
|
|
170
|
-
updatedAt:
|
|
171
|
-
user:
|
|
168
|
+
createdAt: _5.createdAt(),
|
|
169
|
+
updatedAt: _5.updatedAt(),
|
|
170
|
+
user: _5.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
|
|
172
171
|
},
|
|
173
|
-
indexes: [
|
|
172
|
+
indexes: [b5.unique(["accountId", "providerId"])]
|
|
174
173
|
});
|
|
175
174
|
/**
|
|
176
175
|
* Verification entity - email/phone verification tokens.
|
|
177
176
|
*/
|
|
178
|
-
const VerificationEntity =
|
|
177
|
+
const VerificationEntity = L5({
|
|
179
178
|
name: "Verification",
|
|
180
179
|
description: "Verification tokens for email/phone confirmation.",
|
|
181
180
|
schema: "lssm_sigil",
|
|
182
181
|
map: "verification",
|
|
183
182
|
fields: {
|
|
184
|
-
id:
|
|
185
|
-
identifier:
|
|
186
|
-
value:
|
|
187
|
-
expiresAt:
|
|
188
|
-
createdAt:
|
|
189
|
-
updatedAt:
|
|
183
|
+
id: _5.uuid(),
|
|
184
|
+
identifier: _5.string({ description: "Email or phone being verified" }),
|
|
185
|
+
value: _5.string({ description: "Verification code/token" }),
|
|
186
|
+
expiresAt: _5.dateTime({ description: "Token expiration" }),
|
|
187
|
+
createdAt: _5.createdAt(),
|
|
188
|
+
updatedAt: _5.updatedAt()
|
|
190
189
|
}
|
|
191
190
|
});
|
|
192
191
|
|
|
193
192
|
//#endregion
|
|
194
|
-
export { AccountEntity, SessionEntity, UserEntity, VerificationEntity };
|
|
193
|
+
export { AccountEntity, SessionEntity, UserEntity, VerificationEntity };
|
|
194
|
+
//# sourceMappingURL=user.js.map
|