@zlooks.cn/password-auth-server 1.0.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.hile-rsc/{build-mu2ebvjj-b7c71e74/client-browser/src-plugin-password-form-3bd63d69e5-4TOGMUOJ.js → build-mu41ll5m-02df9102/client-browser/src-plugin-password-form-3bd63d69e5-MO3JJSBS.js} +92 -86
  2. package/.hile-rsc/{build-mu2ebvjj-b7c71e74/client-ssr/src-plugin-password-form-3bd63d69e5-S65T2FFP.js → build-mu41ll5m-02df9102/client-ssr/src-plugin-password-form-3bd63d69e5-MWQ7H3E5.js} +92 -86
  3. package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/plugin.json +9 -9
  4. package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/server-rsc/index.js +94 -88
  5. package/dist/password/password-authenticator.d.ts +4 -1
  6. package/dist/password/password-authenticator.d.ts.map +1 -1
  7. package/dist/password/password-authenticator.js +62 -9
  8. package/dist/password/password-authenticator.js.map +1 -1
  9. package/dist/password/typeorm-credential-repository.d.ts.map +1 -1
  10. package/dist/password/typeorm-credential-repository.js +11 -46
  11. package/dist/password/typeorm-credential-repository.js.map +1 -1
  12. package/dist/persistence/entities.d.ts +1 -12
  13. package/dist/persistence/entities.d.ts.map +1 -1
  14. package/dist/persistence/entities.js +0 -16
  15. package/dist/persistence/entities.js.map +1 -1
  16. package/dist/services/application.service.d.ts.map +1 -1
  17. package/dist/services/application.service.js +2 -1
  18. package/dist/services/application.service.js.map +1 -1
  19. package/dist/services/password-runtime.service.d.ts.map +1 -1
  20. package/dist/services/password-runtime.service.js +7 -17
  21. package/dist/services/password-runtime.service.js.map +1 -1
  22. package/package.json +8 -6
  23. package/dist/password/credential-lifecycle-outbox.d.ts +0 -42
  24. package/dist/password/credential-lifecycle-outbox.d.ts.map +0 -1
  25. package/dist/password/credential-lifecycle-outbox.js +0 -120
  26. package/dist/password/credential-lifecycle-outbox.js.map +0 -1
  27. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-browser/chunks/chunk-ZV6MPT36.js +0 -0
  28. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-browser/src-plugin-page-frame-07c4de56a6-24L24OGL.js +0 -0
  29. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-browser/src-plugin-page-frame-07c4de56a6-3F24AYCH.css +0 -0
  30. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-browser/src-plugin-password-form-3bd63d69e5-TRYMJX4F.css +0 -0
  31. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-ssr/chunks/chunk-EWBYMJX4.js +0 -0
  32. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/client-ssr/src-plugin-page-frame-07c4de56a6-LN2W67ZP.js +0 -0
  33. /package/.hile-rsc/{build-mu2ebvjj-b7c71e74 → build-mu41ll5m-02df9102}/styles/4b3193c4f2b317ffed425ccf401342a4bdd6ccfd5f9c42def3315e776f166975.css +0 -0
@@ -162,92 +162,6 @@ var require_EyeOutlined = __commonJS({
162
162
  }
163
163
  });
164
164
 
165
- // ../user-shared/dist/identity.js
166
- var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
167
-
168
- // ../user-shared/dist/events/snapshots.js
169
- var userSessionRevocationReasonSchema = external_exports.enum([
170
- "logout",
171
- "user-request",
172
- "family-limit",
173
- "credential-recovery"
174
- ]);
175
- var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
176
- var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
177
- var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
178
- const protocol = new URL(value).protocol;
179
- return protocol === "http:" || protocol === "https:";
180
- }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
181
- var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
182
- var userEventSnapshotSchema = external_exports.strictObject({
183
- id: external_exports.uuid(),
184
- displayName: displayNameSchema.nullable(),
185
- avatar: httpUrlSchema.nullable(),
186
- homepage: httpUrlSchema.nullable(),
187
- bio: bioSchema.nullable(),
188
- email: emailSchema.nullable(),
189
- emailVerified: external_exports.boolean(),
190
- status: external_exports.enum(["active", "disabled", "deleted"]),
191
- createdAt: external_exports.iso.datetime({ offset: true }),
192
- updatedAt: external_exports.iso.datetime({ offset: true }),
193
- version: external_exports.number().int().positive()
194
- }).superRefine((user, context) => {
195
- if (user.emailVerified && user.email === null) {
196
- context.addIssue({
197
- code: "custom",
198
- message: "A verified user snapshot must include its email",
199
- path: ["email"]
200
- });
201
- }
202
- if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
203
- context.addIssue({
204
- code: "custom",
205
- message: "User updated time must not precede creation time",
206
- path: ["updatedAt"]
207
- });
208
- }
209
- }).readonly();
210
- var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
211
- id: external_exports.uuid(),
212
- userId: external_exports.uuid(),
213
- createdAt: external_exports.iso.datetime({ offset: true }),
214
- expiresAt: external_exports.iso.datetime({ offset: true }),
215
- lastSeenAt: external_exports.iso.datetime({ offset: true }),
216
- revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
217
- revokeReason: userSessionRevocationReasonSchema.nullable()
218
- }).superRefine((session, context) => {
219
- const createdAt = Date.parse(session.createdAt);
220
- if (session.revokedAt === null !== (session.revokeReason === null)) {
221
- context.addIssue({
222
- code: "custom",
223
- message: "Session revocation time and reason must be present together",
224
- path: ["revokedAt"]
225
- });
226
- }
227
- if (Date.parse(session.expiresAt) <= createdAt) {
228
- context.addIssue({
229
- code: "custom",
230
- message: "Session expiry must follow creation time",
231
- path: ["expiresAt"]
232
- });
233
- }
234
- const lastSeenAt = Date.parse(session.lastSeenAt);
235
- if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
236
- context.addIssue({
237
- code: "custom",
238
- message: "Session last-seen time must fall within its lifetime",
239
- path: ["lastSeenAt"]
240
- });
241
- }
242
- if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
243
- context.addIssue({
244
- code: "custom",
245
- message: "Session revoked time must not precede creation time",
246
- path: ["revokedAt"]
247
- });
248
- }
249
- }).readonly();
250
-
251
165
  // ../event-bus/dist/index.js
252
166
  var EVENT_PROTOCOL = "zlooks.event";
253
167
  var EVENT_PROTOCOL_VERSION = 1;
@@ -390,6 +304,92 @@ function isRecord(value) {
390
304
  return value !== null && typeof value === "object" && !Array.isArray(value);
391
305
  }
392
306
 
307
+ // ../user-shared/dist/identity.js
308
+ var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
309
+
310
+ // ../user-shared/dist/events/snapshots.js
311
+ var userSessionRevocationReasonSchema = external_exports.enum([
312
+ "logout",
313
+ "user-request",
314
+ "family-limit",
315
+ "credential-recovery"
316
+ ]);
317
+ var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
318
+ var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
319
+ var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
320
+ const protocol = new URL(value).protocol;
321
+ return protocol === "http:" || protocol === "https:";
322
+ }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
323
+ var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
324
+ var userEventSnapshotSchema = external_exports.strictObject({
325
+ id: external_exports.uuid(),
326
+ displayName: displayNameSchema.nullable(),
327
+ avatar: httpUrlSchema.nullable(),
328
+ homepage: httpUrlSchema.nullable(),
329
+ bio: bioSchema.nullable(),
330
+ email: emailSchema.nullable(),
331
+ emailVerified: external_exports.boolean(),
332
+ status: external_exports.enum(["active", "disabled", "deleted"]),
333
+ createdAt: external_exports.iso.datetime({ offset: true }),
334
+ updatedAt: external_exports.iso.datetime({ offset: true }),
335
+ version: external_exports.number().int().positive()
336
+ }).superRefine((user, context) => {
337
+ if (user.emailVerified && user.email === null) {
338
+ context.addIssue({
339
+ code: "custom",
340
+ message: "A verified user snapshot must include its email",
341
+ path: ["email"]
342
+ });
343
+ }
344
+ if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
345
+ context.addIssue({
346
+ code: "custom",
347
+ message: "User updated time must not precede creation time",
348
+ path: ["updatedAt"]
349
+ });
350
+ }
351
+ }).readonly();
352
+ var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
353
+ id: external_exports.uuid(),
354
+ userId: external_exports.uuid(),
355
+ createdAt: external_exports.iso.datetime({ offset: true }),
356
+ expiresAt: external_exports.iso.datetime({ offset: true }),
357
+ lastSeenAt: external_exports.iso.datetime({ offset: true }),
358
+ revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
359
+ revokeReason: userSessionRevocationReasonSchema.nullable()
360
+ }).superRefine((session, context) => {
361
+ const createdAt = Date.parse(session.createdAt);
362
+ if (session.revokedAt === null !== (session.revokeReason === null)) {
363
+ context.addIssue({
364
+ code: "custom",
365
+ message: "Session revocation time and reason must be present together",
366
+ path: ["revokedAt"]
367
+ });
368
+ }
369
+ if (Date.parse(session.expiresAt) <= createdAt) {
370
+ context.addIssue({
371
+ code: "custom",
372
+ message: "Session expiry must follow creation time",
373
+ path: ["expiresAt"]
374
+ });
375
+ }
376
+ const lastSeenAt = Date.parse(session.lastSeenAt);
377
+ if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
378
+ context.addIssue({
379
+ code: "custom",
380
+ message: "Session last-seen time must fall within its lifetime",
381
+ path: ["lastSeenAt"]
382
+ });
383
+ }
384
+ if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
385
+ context.addIssue({
386
+ code: "custom",
387
+ message: "Session revoked time must not precede creation time",
388
+ path: ["revokedAt"]
389
+ });
390
+ }
391
+ }).readonly();
392
+
393
393
  // ../user-shared/dist/events/definition.js
394
394
  function defineUserEvent(type, aggregateType2, dataSchema5, aggregateId2) {
395
395
  return defineEvent(type, dataSchema5, {
@@ -521,6 +521,7 @@ var USER_EVENT_CATALOG = defineEventCatalog({
521
521
 
522
522
  // ../user-shared/dist/index.js
523
523
  var USER_CREDENTIAL_LIFECYCLE_PROTOCOL = "zlooks.user.credential-lifecycle";
524
+ var USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE = "cn.zlooks.password.credential-lifecycle.v1";
524
525
  var USER_ACCOUNT_HREF = "/user.account/account";
525
526
  var USER_BROWSER_AUTH_METHODS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/methods");
526
527
  var USER_BROWSER_AUTH_TRANSACTIONS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/transactions");
@@ -744,6 +745,11 @@ var userCredentialLifecycleEventSchema = external_exports.strictObject({
744
745
  email: external_exports.email().max(320),
745
746
  occurredAt: external_exports.iso.datetime({ offset: true })
746
747
  }).readonly();
748
+ var userCredentialLifecycleDomainEvent = defineEvent(USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE, userCredentialLifecycleEventSchema, {
749
+ producer: "cn.zlooks.password.auth.server",
750
+ aggregateType: "credential",
751
+ aggregateId: ({ subject }) => subject
752
+ });
747
753
  var userCredentialLifecycleResponseSchema = external_exports.strictObject({
748
754
  acknowledged: external_exports.literal(true)
749
755
  }).readonly();
@@ -119703,92 +119703,6 @@ var require_lib48 = __commonJS({
119703
119703
  }
119704
119704
  });
119705
119705
 
119706
- // ../user-shared/dist/identity.js
119707
- var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
119708
-
119709
- // ../user-shared/dist/events/snapshots.js
119710
- var userSessionRevocationReasonSchema = external_exports.enum([
119711
- "logout",
119712
- "user-request",
119713
- "family-limit",
119714
- "credential-recovery"
119715
- ]);
119716
- var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
119717
- var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
119718
- var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
119719
- const protocol = new URL(value).protocol;
119720
- return protocol === "http:" || protocol === "https:";
119721
- }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
119722
- var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
119723
- var userEventSnapshotSchema = external_exports.strictObject({
119724
- id: external_exports.uuid(),
119725
- displayName: displayNameSchema.nullable(),
119726
- avatar: httpUrlSchema.nullable(),
119727
- homepage: httpUrlSchema.nullable(),
119728
- bio: bioSchema.nullable(),
119729
- email: emailSchema.nullable(),
119730
- emailVerified: external_exports.boolean(),
119731
- status: external_exports.enum(["active", "disabled", "deleted"]),
119732
- createdAt: external_exports.iso.datetime({ offset: true }),
119733
- updatedAt: external_exports.iso.datetime({ offset: true }),
119734
- version: external_exports.number().int().positive()
119735
- }).superRefine((user, context) => {
119736
- if (user.emailVerified && user.email === null) {
119737
- context.addIssue({
119738
- code: "custom",
119739
- message: "A verified user snapshot must include its email",
119740
- path: ["email"]
119741
- });
119742
- }
119743
- if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
119744
- context.addIssue({
119745
- code: "custom",
119746
- message: "User updated time must not precede creation time",
119747
- path: ["updatedAt"]
119748
- });
119749
- }
119750
- }).readonly();
119751
- var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
119752
- id: external_exports.uuid(),
119753
- userId: external_exports.uuid(),
119754
- createdAt: external_exports.iso.datetime({ offset: true }),
119755
- expiresAt: external_exports.iso.datetime({ offset: true }),
119756
- lastSeenAt: external_exports.iso.datetime({ offset: true }),
119757
- revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
119758
- revokeReason: userSessionRevocationReasonSchema.nullable()
119759
- }).superRefine((session, context) => {
119760
- const createdAt = Date.parse(session.createdAt);
119761
- if (session.revokedAt === null !== (session.revokeReason === null)) {
119762
- context.addIssue({
119763
- code: "custom",
119764
- message: "Session revocation time and reason must be present together",
119765
- path: ["revokedAt"]
119766
- });
119767
- }
119768
- if (Date.parse(session.expiresAt) <= createdAt) {
119769
- context.addIssue({
119770
- code: "custom",
119771
- message: "Session expiry must follow creation time",
119772
- path: ["expiresAt"]
119773
- });
119774
- }
119775
- const lastSeenAt = Date.parse(session.lastSeenAt);
119776
- if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
119777
- context.addIssue({
119778
- code: "custom",
119779
- message: "Session last-seen time must fall within its lifetime",
119780
- path: ["lastSeenAt"]
119781
- });
119782
- }
119783
- if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
119784
- context.addIssue({
119785
- code: "custom",
119786
- message: "Session revoked time must not precede creation time",
119787
- path: ["revokedAt"]
119788
- });
119789
- }
119790
- }).readonly();
119791
-
119792
119706
  // ../event-bus/dist/index.js
119793
119707
  var EVENT_PROTOCOL = "zlooks.event";
119794
119708
  var EVENT_PROTOCOL_VERSION = 1;
@@ -119931,6 +119845,92 @@ function isRecord(value) {
119931
119845
  return value !== null && typeof value === "object" && !Array.isArray(value);
119932
119846
  }
119933
119847
 
119848
+ // ../user-shared/dist/identity.js
119849
+ var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
119850
+
119851
+ // ../user-shared/dist/events/snapshots.js
119852
+ var userSessionRevocationReasonSchema = external_exports.enum([
119853
+ "logout",
119854
+ "user-request",
119855
+ "family-limit",
119856
+ "credential-recovery"
119857
+ ]);
119858
+ var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
119859
+ var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
119860
+ var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
119861
+ const protocol = new URL(value).protocol;
119862
+ return protocol === "http:" || protocol === "https:";
119863
+ }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
119864
+ var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
119865
+ var userEventSnapshotSchema = external_exports.strictObject({
119866
+ id: external_exports.uuid(),
119867
+ displayName: displayNameSchema.nullable(),
119868
+ avatar: httpUrlSchema.nullable(),
119869
+ homepage: httpUrlSchema.nullable(),
119870
+ bio: bioSchema.nullable(),
119871
+ email: emailSchema.nullable(),
119872
+ emailVerified: external_exports.boolean(),
119873
+ status: external_exports.enum(["active", "disabled", "deleted"]),
119874
+ createdAt: external_exports.iso.datetime({ offset: true }),
119875
+ updatedAt: external_exports.iso.datetime({ offset: true }),
119876
+ version: external_exports.number().int().positive()
119877
+ }).superRefine((user, context) => {
119878
+ if (user.emailVerified && user.email === null) {
119879
+ context.addIssue({
119880
+ code: "custom",
119881
+ message: "A verified user snapshot must include its email",
119882
+ path: ["email"]
119883
+ });
119884
+ }
119885
+ if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
119886
+ context.addIssue({
119887
+ code: "custom",
119888
+ message: "User updated time must not precede creation time",
119889
+ path: ["updatedAt"]
119890
+ });
119891
+ }
119892
+ }).readonly();
119893
+ var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
119894
+ id: external_exports.uuid(),
119895
+ userId: external_exports.uuid(),
119896
+ createdAt: external_exports.iso.datetime({ offset: true }),
119897
+ expiresAt: external_exports.iso.datetime({ offset: true }),
119898
+ lastSeenAt: external_exports.iso.datetime({ offset: true }),
119899
+ revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
119900
+ revokeReason: userSessionRevocationReasonSchema.nullable()
119901
+ }).superRefine((session, context) => {
119902
+ const createdAt = Date.parse(session.createdAt);
119903
+ if (session.revokedAt === null !== (session.revokeReason === null)) {
119904
+ context.addIssue({
119905
+ code: "custom",
119906
+ message: "Session revocation time and reason must be present together",
119907
+ path: ["revokedAt"]
119908
+ });
119909
+ }
119910
+ if (Date.parse(session.expiresAt) <= createdAt) {
119911
+ context.addIssue({
119912
+ code: "custom",
119913
+ message: "Session expiry must follow creation time",
119914
+ path: ["expiresAt"]
119915
+ });
119916
+ }
119917
+ const lastSeenAt = Date.parse(session.lastSeenAt);
119918
+ if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
119919
+ context.addIssue({
119920
+ code: "custom",
119921
+ message: "Session last-seen time must fall within its lifetime",
119922
+ path: ["lastSeenAt"]
119923
+ });
119924
+ }
119925
+ if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
119926
+ context.addIssue({
119927
+ code: "custom",
119928
+ message: "Session revoked time must not precede creation time",
119929
+ path: ["revokedAt"]
119930
+ });
119931
+ }
119932
+ }).readonly();
119933
+
119934
119934
  // ../user-shared/dist/events/definition.js
119935
119935
  function defineUserEvent(type, aggregateType2, dataSchema5, aggregateId2) {
119936
119936
  return defineEvent(type, dataSchema5, {
@@ -120062,6 +120062,7 @@ var USER_EVENT_CATALOG = defineEventCatalog({
120062
120062
 
120063
120063
  // ../user-shared/dist/index.js
120064
120064
  var USER_CREDENTIAL_LIFECYCLE_PROTOCOL = "zlooks.user.credential-lifecycle";
120065
+ var USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE = "cn.zlooks.password.credential-lifecycle.v1";
120065
120066
  var USER_ACCOUNT_HREF = "/user.account/account";
120066
120067
  var USER_BROWSER_AUTH_METHODS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/methods");
120067
120068
  var USER_BROWSER_AUTH_TRANSACTIONS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/transactions");
@@ -120285,6 +120286,11 @@ var userCredentialLifecycleEventSchema = external_exports.strictObject({
120285
120286
  email: external_exports.email().max(320),
120286
120287
  occurredAt: external_exports.iso.datetime({ offset: true })
120287
120288
  }).readonly();
120289
+ var userCredentialLifecycleDomainEvent = defineEvent(USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE, userCredentialLifecycleEventSchema, {
120290
+ producer: "cn.zlooks.password.auth.server",
120291
+ aggregateType: "credential",
120292
+ aggregateId: ({ subject }) => subject
120293
+ });
120288
120294
  var userCredentialLifecycleResponseSchema = external_exports.strictObject({
120289
120295
  acknowledged: external_exports.literal(true)
120290
120296
  }).readonly();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "protocolVersion": 1,
3
3
  "pluginId": "auth.password",
4
- "buildId": "build-mu2ebvjj-b7c71e74",
4
+ "buildId": "build-mu41ll5m-02df9102",
5
5
  "runtime": {
6
6
  "react": "19.2.8",
7
7
  "reactDom": "19.2.8",
@@ -9,8 +9,8 @@
9
9
  },
10
10
  "server": {
11
11
  "entry": "server-rsc/index.js",
12
- "integrity": "sha256-v1hMBHXmqD9NUJkjDZ+4xjhcN8o5Z0r+nqoXDJwcrlA=",
13
- "size": 594909
12
+ "integrity": "sha256-l3h8Daulm0BJfwweeHGhbAFzeCJQeZDNBc9A8EnKzS0=",
13
+ "size": 595248
14
14
  },
15
15
  "serverFunctions": [],
16
16
  "clients": [
@@ -43,8 +43,8 @@
43
43
  },
44
44
  {
45
45
  "id": "auth.password/src/plugin/password-form#default",
46
- "module": "client-browser/src-plugin-password-form-3bd63d69e5-4TOGMUOJ.js",
47
- "ssrModule": "client-ssr/src-plugin-password-form-3bd63d69e5-S65T2FFP.js",
46
+ "module": "client-browser/src-plugin-password-form-3bd63d69e5-MO3JJSBS.js",
47
+ "ssrModule": "client-ssr/src-plugin-password-form-3bd63d69e5-MWQ7H3E5.js",
48
48
  "exportName": "default",
49
49
  "chunks": [
50
50
  {
@@ -60,10 +60,10 @@
60
60
  "size": 1382378
61
61
  }
62
62
  ],
63
- "integrity": "sha256-EygS4s6kdU+R8Fqt19O0gQnWATY1ectKpbE/4tY5sEQ=",
64
- "ssrIntegrity": "sha256-QvXih3WmaGZkM6zB4RatAD82y4jg1ar7mvwr88sDCRw=",
65
- "size": 173245,
66
- "ssrSize": 4801094,
63
+ "integrity": "sha256-GCIqr29sGLCZaBQxRIlPxAgxZ+aGCjDBHc79SryUVLE=",
64
+ "ssrIntegrity": "sha256-/VE2aLgO1pj4K4yr0J9owOOZsSNScwDnvM16yX+5IpI=",
65
+ "size": 173584,
66
+ "ssrSize": 4801433,
67
67
  "styles": [
68
68
  "client-browser/src-plugin-password-form-3bd63d69e5-TRYMJX4F.css"
69
69
  ]
@@ -14844,92 +14844,6 @@ function isBrowserApiFailure(response) {
14844
14844
  return response.code !== 0;
14845
14845
  }
14846
14846
 
14847
- // ../user-shared/dist/identity.js
14848
- var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
14849
-
14850
- // ../user-shared/dist/events/snapshots.js
14851
- var userSessionRevocationReasonSchema = external_exports.enum([
14852
- "logout",
14853
- "user-request",
14854
- "family-limit",
14855
- "credential-recovery"
14856
- ]);
14857
- var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
14858
- var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
14859
- var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
14860
- const protocol = new URL(value).protocol;
14861
- return protocol === "http:" || protocol === "https:";
14862
- }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
14863
- var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
14864
- var userEventSnapshotSchema = external_exports.strictObject({
14865
- id: external_exports.uuid(),
14866
- displayName: displayNameSchema.nullable(),
14867
- avatar: httpUrlSchema.nullable(),
14868
- homepage: httpUrlSchema.nullable(),
14869
- bio: bioSchema.nullable(),
14870
- email: emailSchema.nullable(),
14871
- emailVerified: external_exports.boolean(),
14872
- status: external_exports.enum(["active", "disabled", "deleted"]),
14873
- createdAt: external_exports.iso.datetime({ offset: true }),
14874
- updatedAt: external_exports.iso.datetime({ offset: true }),
14875
- version: external_exports.number().int().positive()
14876
- }).superRefine((user, context) => {
14877
- if (user.emailVerified && user.email === null) {
14878
- context.addIssue({
14879
- code: "custom",
14880
- message: "A verified user snapshot must include its email",
14881
- path: ["email"]
14882
- });
14883
- }
14884
- if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
14885
- context.addIssue({
14886
- code: "custom",
14887
- message: "User updated time must not precede creation time",
14888
- path: ["updatedAt"]
14889
- });
14890
- }
14891
- }).readonly();
14892
- var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
14893
- id: external_exports.uuid(),
14894
- userId: external_exports.uuid(),
14895
- createdAt: external_exports.iso.datetime({ offset: true }),
14896
- expiresAt: external_exports.iso.datetime({ offset: true }),
14897
- lastSeenAt: external_exports.iso.datetime({ offset: true }),
14898
- revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
14899
- revokeReason: userSessionRevocationReasonSchema.nullable()
14900
- }).superRefine((session, context) => {
14901
- const createdAt = Date.parse(session.createdAt);
14902
- if (session.revokedAt === null !== (session.revokeReason === null)) {
14903
- context.addIssue({
14904
- code: "custom",
14905
- message: "Session revocation time and reason must be present together",
14906
- path: ["revokedAt"]
14907
- });
14908
- }
14909
- if (Date.parse(session.expiresAt) <= createdAt) {
14910
- context.addIssue({
14911
- code: "custom",
14912
- message: "Session expiry must follow creation time",
14913
- path: ["expiresAt"]
14914
- });
14915
- }
14916
- const lastSeenAt = Date.parse(session.lastSeenAt);
14917
- if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
14918
- context.addIssue({
14919
- code: "custom",
14920
- message: "Session last-seen time must fall within its lifetime",
14921
- path: ["lastSeenAt"]
14922
- });
14923
- }
14924
- if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
14925
- context.addIssue({
14926
- code: "custom",
14927
- message: "Session revoked time must not precede creation time",
14928
- path: ["revokedAt"]
14929
- });
14930
- }
14931
- }).readonly();
14932
-
14933
14847
  // ../event-bus/dist/index.js
14934
14848
  var EVENT_PROTOCOL = "zlooks.event";
14935
14849
  var EVENT_PROTOCOL_VERSION = 1;
@@ -15072,6 +14986,92 @@ function isRecord(value) {
15072
14986
  return value !== null && typeof value === "object" && !Array.isArray(value);
15073
14987
  }
15074
14988
 
14989
+ // ../user-shared/dist/identity.js
14990
+ var USER_SERVICE_NAMESPACE = "cn.zlooks.user.server";
14991
+
14992
+ // ../user-shared/dist/events/snapshots.js
14993
+ var userSessionRevocationReasonSchema = external_exports.enum([
14994
+ "logout",
14995
+ "user-request",
14996
+ "family-limit",
14997
+ "credential-recovery"
14998
+ ]);
14999
+ var displayNameSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Display name must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 160, "Display name must contain 1 to 160 Unicode code points");
15000
+ var bioSchema = external_exports.string().refine((value) => value === value.trim().normalize("NFKC"), "Bio must be normalized").refine((value) => Array.from(value).length >= 1 && Array.from(value).length <= 500, "Bio must contain 1 to 500 Unicode code points");
15001
+ var httpUrlSchema = external_exports.url().max(2048).refine((value) => {
15002
+ const protocol = new URL(value).protocol;
15003
+ return protocol === "http:" || protocol === "https:";
15004
+ }, "URL must use HTTP or HTTPS").refine((value) => value === new URL(value).toString(), "URL must be canonical");
15005
+ var emailSchema = external_exports.email().max(320).refine((value) => value === value.toLocaleLowerCase("en-US"), "Email must be lowercase");
15006
+ var userEventSnapshotSchema = external_exports.strictObject({
15007
+ id: external_exports.uuid(),
15008
+ displayName: displayNameSchema.nullable(),
15009
+ avatar: httpUrlSchema.nullable(),
15010
+ homepage: httpUrlSchema.nullable(),
15011
+ bio: bioSchema.nullable(),
15012
+ email: emailSchema.nullable(),
15013
+ emailVerified: external_exports.boolean(),
15014
+ status: external_exports.enum(["active", "disabled", "deleted"]),
15015
+ createdAt: external_exports.iso.datetime({ offset: true }),
15016
+ updatedAt: external_exports.iso.datetime({ offset: true }),
15017
+ version: external_exports.number().int().positive()
15018
+ }).superRefine((user, context) => {
15019
+ if (user.emailVerified && user.email === null) {
15020
+ context.addIssue({
15021
+ code: "custom",
15022
+ message: "A verified user snapshot must include its email",
15023
+ path: ["email"]
15024
+ });
15025
+ }
15026
+ if (Date.parse(user.updatedAt) < Date.parse(user.createdAt)) {
15027
+ context.addIssue({
15028
+ code: "custom",
15029
+ message: "User updated time must not precede creation time",
15030
+ path: ["updatedAt"]
15031
+ });
15032
+ }
15033
+ }).readonly();
15034
+ var userSessionFamilyEventSnapshotSchema = external_exports.strictObject({
15035
+ id: external_exports.uuid(),
15036
+ userId: external_exports.uuid(),
15037
+ createdAt: external_exports.iso.datetime({ offset: true }),
15038
+ expiresAt: external_exports.iso.datetime({ offset: true }),
15039
+ lastSeenAt: external_exports.iso.datetime({ offset: true }),
15040
+ revokedAt: external_exports.iso.datetime({ offset: true }).nullable(),
15041
+ revokeReason: userSessionRevocationReasonSchema.nullable()
15042
+ }).superRefine((session, context) => {
15043
+ const createdAt = Date.parse(session.createdAt);
15044
+ if (session.revokedAt === null !== (session.revokeReason === null)) {
15045
+ context.addIssue({
15046
+ code: "custom",
15047
+ message: "Session revocation time and reason must be present together",
15048
+ path: ["revokedAt"]
15049
+ });
15050
+ }
15051
+ if (Date.parse(session.expiresAt) <= createdAt) {
15052
+ context.addIssue({
15053
+ code: "custom",
15054
+ message: "Session expiry must follow creation time",
15055
+ path: ["expiresAt"]
15056
+ });
15057
+ }
15058
+ const lastSeenAt = Date.parse(session.lastSeenAt);
15059
+ if (lastSeenAt < createdAt || lastSeenAt > Date.parse(session.expiresAt)) {
15060
+ context.addIssue({
15061
+ code: "custom",
15062
+ message: "Session last-seen time must fall within its lifetime",
15063
+ path: ["lastSeenAt"]
15064
+ });
15065
+ }
15066
+ if (session.revokedAt !== null && Date.parse(session.revokedAt) < createdAt) {
15067
+ context.addIssue({
15068
+ code: "custom",
15069
+ message: "Session revoked time must not precede creation time",
15070
+ path: ["revokedAt"]
15071
+ });
15072
+ }
15073
+ }).readonly();
15074
+
15075
15075
  // ../user-shared/dist/events/definition.js
15076
15076
  function defineUserEvent(type, aggregateType2, dataSchema5, aggregateId2) {
15077
15077
  return defineEvent(type, dataSchema5, {
@@ -15203,6 +15203,7 @@ var USER_EVENT_CATALOG = defineEventCatalog({
15203
15203
 
15204
15204
  // ../user-shared/dist/index.js
15205
15205
  var USER_CREDENTIAL_LIFECYCLE_PROTOCOL = "zlooks.user.credential-lifecycle";
15206
+ var USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE = "cn.zlooks.password.credential-lifecycle.v1";
15206
15207
  var USER_BROWSER_AUTH_METHODS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/methods");
15207
15208
  var USER_BROWSER_AUTH_TRANSACTIONS_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/transactions");
15208
15209
  var USER_BROWSER_LOGOUT_PATH = browserApiPath(USER_SERVICE_NAMESPACE, "/api/auth/logout");
@@ -15425,6 +15426,11 @@ var userCredentialLifecycleEventSchema = external_exports.strictObject({
15425
15426
  email: external_exports.email().max(320),
15426
15427
  occurredAt: external_exports.iso.datetime({ offset: true })
15427
15428
  }).readonly();
15429
+ var userCredentialLifecycleDomainEvent = defineEvent(USER_CREDENTIAL_LIFECYCLE_EVENT_TYPE, userCredentialLifecycleEventSchema, {
15430
+ producer: "cn.zlooks.password.auth.server",
15431
+ aggregateType: "credential",
15432
+ aggregateId: ({ subject }) => subject
15433
+ });
15428
15434
  var userCredentialLifecycleResponseSchema = external_exports.strictObject({
15429
15435
  acknowledged: external_exports.literal(true)
15430
15436
  }).readonly();
@@ -15499,7 +15505,7 @@ var __hileRemoteClientBoundary = __hileRegisterClientReference(function() {
15499
15505
  function __hileDefault(props) {
15500
15506
  return React.createElement(__hileRemoteClientBoundary, {
15501
15507
  pluginId: "auth.password",
15502
- buildId: "build-mu2ebvjj-b7c71e74",
15508
+ buildId: "build-mu41ll5m-02df9102",
15503
15509
  referenceId: "auth.password/src/plugin/password-form#default",
15504
15510
  exportName: "default",
15505
15511
  props
@@ -15516,7 +15522,7 @@ var __hileRemoteClientBoundary2 = __hileRegisterClientReference2(function() {
15516
15522
  function __hileDefault2(props) {
15517
15523
  return React2.createElement(__hileRemoteClientBoundary2, {
15518
15524
  pluginId: "auth.password",
15519
- buildId: "build-mu2ebvjj-b7c71e74",
15525
+ buildId: "build-mu41ll5m-02df9102",
15520
15526
  referenceId: "auth.password/src/plugin/page-frame#default",
15521
15527
  exportName: "default",
15522
15528
  props