@lssm/lib.identity-rbac 0.0.0-canary-20251217083314 → 0.0.0-canary-20251220002821

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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/contracts/dist/capabilities/openbanking.js +2 -1
  3. package/dist/contracts/dist/capabilities/openbanking.js.map +1 -0
  4. package/dist/contracts/dist/contract-registry/schemas.js +2 -1
  5. package/dist/contracts/dist/contract-registry/schemas.js.map +1 -0
  6. package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
  7. package/dist/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  8. package/dist/contracts/dist/docs/index.js +2 -6
  9. package/dist/contracts/dist/docs/meta.docs.js +30 -0
  10. package/dist/contracts/dist/docs/meta.docs.js.map +1 -0
  11. package/dist/contracts/dist/docs/presentations.js +2 -1
  12. package/dist/contracts/dist/docs/presentations.js.map +1 -0
  13. package/dist/contracts/dist/docs/registry.js +2 -1
  14. package/dist/contracts/dist/docs/registry.js.map +1 -0
  15. package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
  16. package/dist/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  17. package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
  18. package/dist/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  19. package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
  20. package/dist/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  21. package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
  22. package/dist/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  23. package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
  24. package/dist/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  25. package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
  26. package/dist/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  27. package/dist/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
  28. package/dist/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
  29. package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
  30. package/dist/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  31. package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
  32. package/dist/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  33. package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
  34. package/dist/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  35. package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
  36. package/dist/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  37. package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
  38. package/dist/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  39. package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
  40. package/dist/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  41. package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
  42. package/dist/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  43. package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
  44. package/dist/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  45. package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
  46. package/dist/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  47. package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
  48. package/dist/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  49. package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
  50. package/dist/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  51. package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
  52. package/dist/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  53. package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
  54. package/dist/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
  55. package/dist/contracts/dist/docs/tech-contracts.docs.js +97 -0
  56. package/dist/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
  57. package/dist/contracts/dist/events.js +2 -1
  58. package/dist/contracts/dist/events.js.map +1 -0
  59. package/dist/contracts/dist/index.js +2 -1
  60. package/dist/contracts/dist/integrations/contracts.js +65 -66
  61. package/dist/contracts/dist/integrations/contracts.js.map +1 -0
  62. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
  63. package/dist/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  64. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
  65. package/dist/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  66. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
  67. package/dist/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  68. package/dist/contracts/dist/integrations/openbanking/models.js +60 -61
  69. package/dist/contracts/dist/integrations/openbanking/models.js.map +1 -0
  70. package/dist/contracts/dist/integrations/openbanking/telemetry.js +2 -1
  71. package/dist/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
  72. package/dist/contracts/dist/integrations/providers/elevenlabs.js +2 -1
  73. package/dist/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
  74. package/dist/contracts/dist/integrations/providers/gcs-storage.js +2 -1
  75. package/dist/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
  76. package/dist/contracts/dist/integrations/providers/gmail.js +2 -1
  77. package/dist/contracts/dist/integrations/providers/gmail.js.map +1 -0
  78. package/dist/contracts/dist/integrations/providers/google-calendar.js +2 -1
  79. package/dist/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
  80. package/dist/contracts/dist/integrations/providers/mistral.js +2 -1
  81. package/dist/contracts/dist/integrations/providers/mistral.js.map +1 -0
  82. package/dist/contracts/dist/integrations/providers/postmark.js +2 -1
  83. package/dist/contracts/dist/integrations/providers/postmark.js.map +1 -0
  84. package/dist/contracts/dist/integrations/providers/powens.js +2 -1
  85. package/dist/contracts/dist/integrations/providers/powens.js.map +1 -0
  86. package/dist/contracts/dist/integrations/providers/qdrant.js +2 -1
  87. package/dist/contracts/dist/integrations/providers/qdrant.js.map +1 -0
  88. package/dist/contracts/dist/integrations/providers/stripe.js +2 -1
  89. package/dist/contracts/dist/integrations/providers/stripe.js.map +1 -0
  90. package/dist/contracts/dist/integrations/providers/twilio-sms.js +2 -1
  91. package/dist/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
  92. package/dist/contracts/dist/knowledge/contracts.js +44 -45
  93. package/dist/contracts/dist/knowledge/contracts.js.map +1 -0
  94. package/dist/contracts/dist/knowledge/spaces/email-threads.js +2 -1
  95. package/dist/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
  96. package/dist/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
  97. package/dist/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
  98. package/dist/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
  99. package/dist/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
  100. package/dist/contracts/dist/knowledge/spaces/product-canon.js +2 -1
  101. package/dist/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
  102. package/dist/contracts/dist/knowledge/spaces/support-faq.js +2 -1
  103. package/dist/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
  104. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
  105. package/dist/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  106. package/dist/contracts/dist/llm/exporters.js +2 -1
  107. package/dist/contracts/dist/llm/exporters.js.map +1 -0
  108. package/dist/contracts/dist/onboarding-base.js +22 -23
  109. package/dist/contracts/dist/onboarding-base.js.map +1 -0
  110. package/dist/contracts/dist/ownership.js +4 -2
  111. package/dist/contracts/dist/ownership.js.map +1 -0
  112. package/dist/contracts/dist/presentations.v2.js +2 -1
  113. package/dist/contracts/dist/presentations.v2.js.map +1 -0
  114. package/dist/contracts/dist/regenerator/service.js +2 -1
  115. package/dist/contracts/dist/regenerator/service.js.map +1 -0
  116. package/dist/contracts/dist/schema/dist/index.js +3873 -6
  117. package/dist/contracts/dist/schema/dist/index.js.map +1 -0
  118. package/dist/contracts/dist/spec.js +2 -1
  119. package/dist/contracts/dist/spec.js.map +1 -0
  120. package/dist/contracts/organization.d.ts +195 -194
  121. package/dist/contracts/organization.d.ts.map +1 -0
  122. package/dist/contracts/organization.js +72 -73
  123. package/dist/contracts/organization.js.map +1 -0
  124. package/dist/contracts/rbac.d.ts +120 -119
  125. package/dist/contracts/rbac.d.ts.map +1 -0
  126. package/dist/contracts/rbac.js +50 -51
  127. package/dist/contracts/rbac.js.map +1 -0
  128. package/dist/contracts/user.d.ts +141 -140
  129. package/dist/contracts/user.d.ts.map +1 -0
  130. package/dist/contracts/user.js +41 -42
  131. package/dist/contracts/user.js.map +1 -0
  132. package/dist/entities/index.d.ts +162 -161
  133. package/dist/entities/index.d.ts.map +1 -0
  134. package/dist/entities/index.js +2 -1
  135. package/dist/entities/index.js.map +1 -0
  136. package/dist/entities/organization.d.ts +61 -60
  137. package/dist/entities/organization.d.ts.map +1 -0
  138. package/dist/entities/organization.js +62 -62
  139. package/dist/entities/organization.js.map +1 -0
  140. package/dist/entities/rbac.d.ts +65 -64
  141. package/dist/entities/rbac.d.ts.map +1 -0
  142. package/dist/entities/rbac.js +66 -66
  143. package/dist/entities/rbac.js.map +1 -0
  144. package/dist/entities/user.d.ts +69 -68
  145. package/dist/entities/user.d.ts.map +1 -0
  146. package/dist/entities/user.js +70 -70
  147. package/dist/entities/user.js.map +1 -0
  148. package/dist/events.d.ts +145 -144
  149. package/dist/events.d.ts.map +1 -0
  150. package/dist/events.js +89 -90
  151. package/dist/events.js.map +1 -0
  152. package/dist/identity-rbac.feature.d.ts +2 -1
  153. package/dist/identity-rbac.feature.d.ts.map +1 -0
  154. package/dist/identity-rbac.feature.js +2 -1
  155. package/dist/identity-rbac.feature.js.map +1 -0
  156. package/dist/policies/engine.d.ts +2 -1
  157. package/dist/policies/engine.d.ts.map +1 -0
  158. package/dist/policies/engine.js +2 -1
  159. package/dist/policies/engine.js.map +1 -0
  160. package/dist/schema/dist/index.js +4888 -6
  161. package/dist/schema/dist/index.js.map +1 -0
  162. package/package.json +13 -6
  163. package/dist/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  164. package/dist/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  165. package/dist/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  166. package/dist/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  167. package/dist/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  168. package/dist/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  169. package/dist/contracts/dist/schema/dist/EnumType.js +0 -2
  170. package/dist/contracts/dist/schema/dist/FieldType.js +0 -49
  171. package/dist/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  172. package/dist/contracts/dist/schema/dist/SchemaModel.js +0 -34
  173. package/dist/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  174. package/dist/contracts/dist/schema/dist/entity/index.js +0 -2
  175. package/dist/contracts/dist/schema/dist/entity/types.js +0 -1
  176. package/dist/schema/dist/EnumType.js +0 -2
  177. package/dist/schema/dist/FieldType.js +0 -49
  178. package/dist/schema/dist/ScalarTypeEnum.js +0 -236
  179. package/dist/schema/dist/SchemaModel.js +0 -34
  180. package/dist/schema/dist/entity/defineEntity.js +0 -236
  181. package/dist/schema/dist/entity/index.js +0 -2
  182. package/dist/schema/dist/entity/types.js +0 -1
@@ -1,138 +1,138 @@
1
- import { defineEntity, field, index } from "../schema/dist/entity/defineEntity.js";
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 = defineEntity({
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: field.id(),
15
- name: field.string({
13
+ id: _5.id(),
14
+ name: _5.string({
16
15
  isUnique: true,
17
16
  description: "Unique role name"
18
17
  }),
19
- description: field.string({
18
+ description: _5.string({
20
19
  isOptional: true,
21
20
  description: "Role description"
22
21
  }),
23
- permissions: field.string({
22
+ permissions: _5.string({
24
23
  isArray: true,
25
24
  description: "Array of permission names"
26
25
  }),
27
- createdAt: field.createdAt(),
28
- updatedAt: field.updatedAt(),
29
- policyBindings: field.hasMany("PolicyBinding")
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 = defineEntity({
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: field.id(),
42
- name: field.string({
40
+ id: _5.id(),
41
+ name: _5.string({
43
42
  isUnique: true,
44
43
  description: "Unique permission name"
45
44
  }),
46
- description: field.string({
45
+ description: _5.string({
47
46
  isOptional: true,
48
47
  description: "Permission description"
49
48
  }),
50
- createdAt: field.createdAt(),
51
- updatedAt: field.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 = defineEntity({
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: 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({
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: 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"])
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: [index.on(["targetType", "targetId"])]
77
+ indexes: [b5.on(["targetType", "targetId"])]
79
78
  });
80
79
  /**
81
80
  * ApiKey entity - API keys for programmatic access.
82
81
  */
83
- const ApiKeyEntity = defineEntity({
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: 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" })
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 = defineEntity({
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: 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" })
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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"}
@@ -1,87 +1,88 @@
1
- import * as _lssm_lib_schema420 from "@lssm/lib.schema";
1
+ import * as _lssm_lib_schema792 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: _lssm_lib_schema420.EntitySpec<{
8
- id: _lssm_lib_schema420.EntityScalarField;
9
- email: _lssm_lib_schema420.EntityScalarField;
10
- emailVerified: _lssm_lib_schema420.EntityScalarField;
11
- name: _lssm_lib_schema420.EntityScalarField;
12
- firstName: _lssm_lib_schema420.EntityScalarField;
13
- lastName: _lssm_lib_schema420.EntityScalarField;
14
- locale: _lssm_lib_schema420.EntityScalarField;
15
- timezone: _lssm_lib_schema420.EntityScalarField;
16
- imageUrl: _lssm_lib_schema420.EntityScalarField;
17
- image: _lssm_lib_schema420.EntityScalarField;
18
- metadata: _lssm_lib_schema420.EntityScalarField;
19
- onboardingCompleted: _lssm_lib_schema420.EntityScalarField;
20
- onboardingStep: _lssm_lib_schema420.EntityScalarField;
21
- whitelistedAt: _lssm_lib_schema420.EntityScalarField;
22
- role: _lssm_lib_schema420.EntityScalarField;
23
- banned: _lssm_lib_schema420.EntityScalarField;
24
- banReason: _lssm_lib_schema420.EntityScalarField;
25
- banExpires: _lssm_lib_schema420.EntityScalarField;
26
- phoneNumber: _lssm_lib_schema420.EntityScalarField;
27
- phoneNumberVerified: _lssm_lib_schema420.EntityScalarField;
28
- createdAt: _lssm_lib_schema420.EntityScalarField;
29
- updatedAt: _lssm_lib_schema420.EntityScalarField;
30
- sessions: _lssm_lib_schema420.EntityRelationField;
31
- accounts: _lssm_lib_schema420.EntityRelationField;
32
- memberships: _lssm_lib_schema420.EntityRelationField;
33
- invitations: _lssm_lib_schema420.EntityRelationField;
34
- teamMemberships: _lssm_lib_schema420.EntityRelationField;
35
- policyBindings: _lssm_lib_schema420.EntityRelationField;
36
- apiKeys: _lssm_lib_schema420.EntityRelationField;
37
- passkeys: _lssm_lib_schema420.EntityRelationField;
7
+ declare const UserEntity: _lssm_lib_schema792.EntitySpec<{
8
+ id: _lssm_lib_schema792.EntityScalarField;
9
+ email: _lssm_lib_schema792.EntityScalarField;
10
+ emailVerified: _lssm_lib_schema792.EntityScalarField;
11
+ name: _lssm_lib_schema792.EntityScalarField;
12
+ firstName: _lssm_lib_schema792.EntityScalarField;
13
+ lastName: _lssm_lib_schema792.EntityScalarField;
14
+ locale: _lssm_lib_schema792.EntityScalarField;
15
+ timezone: _lssm_lib_schema792.EntityScalarField;
16
+ imageUrl: _lssm_lib_schema792.EntityScalarField;
17
+ image: _lssm_lib_schema792.EntityScalarField;
18
+ metadata: _lssm_lib_schema792.EntityScalarField;
19
+ onboardingCompleted: _lssm_lib_schema792.EntityScalarField;
20
+ onboardingStep: _lssm_lib_schema792.EntityScalarField;
21
+ whitelistedAt: _lssm_lib_schema792.EntityScalarField;
22
+ role: _lssm_lib_schema792.EntityScalarField;
23
+ banned: _lssm_lib_schema792.EntityScalarField;
24
+ banReason: _lssm_lib_schema792.EntityScalarField;
25
+ banExpires: _lssm_lib_schema792.EntityScalarField;
26
+ phoneNumber: _lssm_lib_schema792.EntityScalarField;
27
+ phoneNumberVerified: _lssm_lib_schema792.EntityScalarField;
28
+ createdAt: _lssm_lib_schema792.EntityScalarField;
29
+ updatedAt: _lssm_lib_schema792.EntityScalarField;
30
+ sessions: _lssm_lib_schema792.EntityRelationField;
31
+ accounts: _lssm_lib_schema792.EntityRelationField;
32
+ memberships: _lssm_lib_schema792.EntityRelationField;
33
+ invitations: _lssm_lib_schema792.EntityRelationField;
34
+ teamMemberships: _lssm_lib_schema792.EntityRelationField;
35
+ policyBindings: _lssm_lib_schema792.EntityRelationField;
36
+ apiKeys: _lssm_lib_schema792.EntityRelationField;
37
+ passkeys: _lssm_lib_schema792.EntityRelationField;
38
38
  }>;
39
39
  /**
40
40
  * Session entity - login sessions.
41
41
  */
42
- declare const SessionEntity: _lssm_lib_schema420.EntitySpec<{
43
- id: _lssm_lib_schema420.EntityScalarField;
44
- userId: _lssm_lib_schema420.EntityScalarField;
45
- expiresAt: _lssm_lib_schema420.EntityScalarField;
46
- token: _lssm_lib_schema420.EntityScalarField;
47
- ipAddress: _lssm_lib_schema420.EntityScalarField;
48
- userAgent: _lssm_lib_schema420.EntityScalarField;
49
- impersonatedBy: _lssm_lib_schema420.EntityScalarField;
50
- activeOrganizationId: _lssm_lib_schema420.EntityScalarField;
51
- activeTeamId: _lssm_lib_schema420.EntityScalarField;
52
- createdAt: _lssm_lib_schema420.EntityScalarField;
53
- updatedAt: _lssm_lib_schema420.EntityScalarField;
54
- user: _lssm_lib_schema420.EntityRelationField;
42
+ declare const SessionEntity: _lssm_lib_schema792.EntitySpec<{
43
+ id: _lssm_lib_schema792.EntityScalarField;
44
+ userId: _lssm_lib_schema792.EntityScalarField;
45
+ expiresAt: _lssm_lib_schema792.EntityScalarField;
46
+ token: _lssm_lib_schema792.EntityScalarField;
47
+ ipAddress: _lssm_lib_schema792.EntityScalarField;
48
+ userAgent: _lssm_lib_schema792.EntityScalarField;
49
+ impersonatedBy: _lssm_lib_schema792.EntityScalarField;
50
+ activeOrganizationId: _lssm_lib_schema792.EntityScalarField;
51
+ activeTeamId: _lssm_lib_schema792.EntityScalarField;
52
+ createdAt: _lssm_lib_schema792.EntityScalarField;
53
+ updatedAt: _lssm_lib_schema792.EntityScalarField;
54
+ user: _lssm_lib_schema792.EntityRelationField;
55
55
  }>;
56
56
  /**
57
57
  * Account entity - external authentication accounts.
58
58
  */
59
- declare const AccountEntity: _lssm_lib_schema420.EntitySpec<{
60
- id: _lssm_lib_schema420.EntityScalarField;
61
- accountId: _lssm_lib_schema420.EntityScalarField;
62
- providerId: _lssm_lib_schema420.EntityScalarField;
63
- userId: _lssm_lib_schema420.EntityScalarField;
64
- accessToken: _lssm_lib_schema420.EntityScalarField;
65
- refreshToken: _lssm_lib_schema420.EntityScalarField;
66
- idToken: _lssm_lib_schema420.EntityScalarField;
67
- accessTokenExpiresAt: _lssm_lib_schema420.EntityScalarField;
68
- refreshTokenExpiresAt: _lssm_lib_schema420.EntityScalarField;
69
- scope: _lssm_lib_schema420.EntityScalarField;
70
- password: _lssm_lib_schema420.EntityScalarField;
71
- createdAt: _lssm_lib_schema420.EntityScalarField;
72
- updatedAt: _lssm_lib_schema420.EntityScalarField;
73
- user: _lssm_lib_schema420.EntityRelationField;
59
+ declare const AccountEntity: _lssm_lib_schema792.EntitySpec<{
60
+ id: _lssm_lib_schema792.EntityScalarField;
61
+ accountId: _lssm_lib_schema792.EntityScalarField;
62
+ providerId: _lssm_lib_schema792.EntityScalarField;
63
+ userId: _lssm_lib_schema792.EntityScalarField;
64
+ accessToken: _lssm_lib_schema792.EntityScalarField;
65
+ refreshToken: _lssm_lib_schema792.EntityScalarField;
66
+ idToken: _lssm_lib_schema792.EntityScalarField;
67
+ accessTokenExpiresAt: _lssm_lib_schema792.EntityScalarField;
68
+ refreshTokenExpiresAt: _lssm_lib_schema792.EntityScalarField;
69
+ scope: _lssm_lib_schema792.EntityScalarField;
70
+ password: _lssm_lib_schema792.EntityScalarField;
71
+ createdAt: _lssm_lib_schema792.EntityScalarField;
72
+ updatedAt: _lssm_lib_schema792.EntityScalarField;
73
+ user: _lssm_lib_schema792.EntityRelationField;
74
74
  }>;
75
75
  /**
76
76
  * Verification entity - email/phone verification tokens.
77
77
  */
78
- declare const VerificationEntity: _lssm_lib_schema420.EntitySpec<{
79
- id: _lssm_lib_schema420.EntityScalarField;
80
- identifier: _lssm_lib_schema420.EntityScalarField;
81
- value: _lssm_lib_schema420.EntityScalarField;
82
- expiresAt: _lssm_lib_schema420.EntityScalarField;
83
- createdAt: _lssm_lib_schema420.EntityScalarField;
84
- updatedAt: _lssm_lib_schema420.EntityScalarField;
78
+ declare const VerificationEntity: _lssm_lib_schema792.EntitySpec<{
79
+ id: _lssm_lib_schema792.EntityScalarField;
80
+ identifier: _lssm_lib_schema792.EntityScalarField;
81
+ value: _lssm_lib_schema792.EntityScalarField;
82
+ expiresAt: _lssm_lib_schema792.EntityScalarField;
83
+ createdAt: _lssm_lib_schema792.EntityScalarField;
84
+ updatedAt: _lssm_lib_schema792.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"}
@@ -1,194 +1,194 @@
1
- import { defineEntity, field, index } from "../schema/dist/entity/defineEntity.js";
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 = defineEntity({
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: field.id({ description: "Unique user identifier" }),
15
- email: field.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: field.boolean({
18
+ emailVerified: _5.boolean({
20
19
  default: false,
21
20
  description: "Whether email has been verified"
22
21
  }),
23
- name: field.string({
22
+ name: _5.string({
24
23
  isOptional: true,
25
24
  description: "Display name"
26
25
  }),
27
- firstName: field.string({
26
+ firstName: _5.string({
28
27
  isOptional: true,
29
28
  description: "First name"
30
29
  }),
31
- lastName: field.string({
30
+ lastName: _5.string({
32
31
  isOptional: true,
33
32
  description: "Last name"
34
33
  }),
35
- locale: field.string({
34
+ locale: _5.string({
36
35
  isOptional: true,
37
36
  description: "User locale (e.g., \"en-US\")"
38
37
  }),
39
- timezone: field.string({
38
+ timezone: _5.string({
40
39
  isOptional: true,
41
40
  description: "Olson timezone (e.g., \"Europe/Paris\")"
42
41
  }),
43
- imageUrl: field.url({
42
+ imageUrl: _5.url({
44
43
  isOptional: true,
45
44
  description: "URL of avatar or profile picture"
46
45
  }),
47
- image: field.string({
46
+ image: _5.string({
48
47
  isOptional: true,
49
48
  description: "Legacy image field"
50
49
  }),
51
- metadata: field.json({
50
+ metadata: _5.json({
52
51
  isOptional: true,
53
52
  description: "Arbitrary user metadata"
54
53
  }),
55
- onboardingCompleted: field.boolean({
54
+ onboardingCompleted: _5.boolean({
56
55
  default: false,
57
56
  description: "Whether onboarding is complete"
58
57
  }),
59
- onboardingStep: field.string({
58
+ onboardingStep: _5.string({
60
59
  isOptional: true,
61
60
  description: "Current onboarding step"
62
61
  }),
63
- whitelistedAt: field.dateTime({
62
+ whitelistedAt: _5.dateTime({
64
63
  isOptional: true,
65
64
  description: "When user was whitelisted"
66
65
  }),
67
- role: field.string({
66
+ role: _5.string({
68
67
  isOptional: true,
69
68
  default: "\"user\"",
70
69
  description: "User role (user, admin)"
71
70
  }),
72
- banned: field.boolean({
71
+ banned: _5.boolean({
73
72
  default: false,
74
73
  description: "Whether user is banned"
75
74
  }),
76
- banReason: field.string({
75
+ banReason: _5.string({
77
76
  isOptional: true,
78
77
  description: "Reason for ban"
79
78
  }),
80
- banExpires: field.dateTime({
79
+ banExpires: _5.dateTime({
81
80
  isOptional: true,
82
81
  description: "When ban expires"
83
82
  }),
84
- phoneNumber: field.string({
83
+ phoneNumber: _5.string({
85
84
  isOptional: true,
86
85
  isUnique: true,
87
86
  description: "Phone number"
88
87
  }),
89
- phoneNumberVerified: field.boolean({
88
+ phoneNumberVerified: _5.boolean({
90
89
  default: false,
91
90
  description: "Whether phone is verified"
92
91
  }),
93
- createdAt: field.createdAt(),
94
- updatedAt: field.updatedAt(),
95
- sessions: field.hasMany("Session"),
96
- accounts: field.hasMany("Account"),
97
- memberships: field.hasMany("Member"),
98
- invitations: field.hasMany("Invitation"),
99
- teamMemberships: field.hasMany("TeamMember"),
100
- policyBindings: field.hasMany("PolicyBinding"),
101
- apiKeys: field.hasMany("ApiKey"),
102
- passkeys: field.hasMany("Passkey")
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 = defineEntity({
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: field.id(),
115
- userId: field.foreignKey(),
116
- expiresAt: field.dateTime({ description: "Session expiration time" }),
117
- token: field.string({
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: field.string({
120
+ ipAddress: _5.string({
122
121
  isOptional: true,
123
122
  description: "Client IP address"
124
123
  }),
125
- userAgent: field.string({
124
+ userAgent: _5.string({
126
125
  isOptional: true,
127
126
  description: "Client user agent"
128
127
  }),
129
- impersonatedBy: field.string({
128
+ impersonatedBy: _5.string({
130
129
  isOptional: true,
131
130
  description: "Admin impersonating this session"
132
131
  }),
133
- activeOrganizationId: field.string({
132
+ activeOrganizationId: _5.string({
134
133
  isOptional: true,
135
134
  description: "Active org context"
136
135
  }),
137
- activeTeamId: field.string({
136
+ activeTeamId: _5.string({
138
137
  isOptional: true,
139
138
  description: "Active team context"
140
139
  }),
141
- createdAt: field.createdAt(),
142
- updatedAt: field.updatedAt(),
143
- user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
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 = defineEntity({
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: field.id(),
156
- accountId: field.string({ description: "Account ID from provider" }),
157
- providerId: field.string({ description: "Provider identifier" }),
158
- userId: field.foreignKey(),
159
- accessToken: field.string({ isOptional: true }),
160
- refreshToken: field.string({ isOptional: true }),
161
- idToken: field.string({ isOptional: true }),
162
- accessTokenExpiresAt: field.dateTime({ isOptional: true }),
163
- refreshTokenExpiresAt: field.dateTime({ isOptional: true }),
164
- scope: field.string({ isOptional: true }),
165
- password: field.string({
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: field.createdAt(),
170
- updatedAt: field.updatedAt(),
171
- user: field.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
168
+ createdAt: _5.createdAt(),
169
+ updatedAt: _5.updatedAt(),
170
+ user: _5.belongsTo("User", ["userId"], ["id"], { onDelete: "Cascade" })
172
171
  },
173
- indexes: [index.unique(["accountId", "providerId"])]
172
+ indexes: [b5.unique(["accountId", "providerId"])]
174
173
  });
175
174
  /**
176
175
  * Verification entity - email/phone verification tokens.
177
176
  */
178
- const VerificationEntity = defineEntity({
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: field.uuid(),
185
- identifier: field.string({ description: "Email or phone being verified" }),
186
- value: field.string({ description: "Verification code/token" }),
187
- expiresAt: field.dateTime({ description: "Token expiration" }),
188
- createdAt: field.createdAt(),
189
- updatedAt: field.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