@lssm/module.notifications 0.0.0-canary-20251207012602 → 0.0.0-canary-20251207043720

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 (110) hide show
  1. package/dist/contracts/index.js +1 -1
  2. package/dist/entities/index.js +1 -1
  3. package/package.json +15 -7
  4. package/dist/channels/index.d.ts +0 -106
  5. package/dist/contracts/index.d.ts +0 -637
  6. package/dist/entities/index.d.ts +0 -182
  7. package/dist/index.d.ts +0 -5
  8. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -1
  9. package/dist/libs/contracts/dist/client/index.js +0 -1
  10. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -1
  11. package/dist/libs/contracts/dist/client/react/form-render.js +0 -1
  12. package/dist/libs/contracts/dist/client/react/index.js +0 -1
  13. package/dist/libs/contracts/dist/events.js +0 -1
  14. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  15. package/dist/libs/contracts/dist/graphql-federation/dist/index.js +0 -1
  16. package/dist/libs/contracts/dist/index.js +0 -1
  17. package/dist/libs/contracts/dist/install.js +0 -1
  18. package/dist/libs/contracts/dist/integrations/contracts.js +0 -1
  19. package/dist/libs/contracts/dist/integrations/index.js +0 -1
  20. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -1
  21. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -1
  22. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -1
  23. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -1
  24. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -1
  25. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -1
  26. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -1
  27. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -1
  28. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -1
  29. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -1
  30. package/dist/libs/contracts/dist/integrations/providers/impls/elevenlabs-voice.js +0 -1
  31. package/dist/libs/contracts/dist/integrations/providers/impls/gcs-storage.js +0 -1
  32. package/dist/libs/contracts/dist/integrations/providers/impls/gmail-inbound.js +0 -1
  33. package/dist/libs/contracts/dist/integrations/providers/impls/gmail-outbound.js +0 -1
  34. package/dist/libs/contracts/dist/integrations/providers/impls/google-calendar.js +0 -1
  35. package/dist/libs/contracts/dist/integrations/providers/impls/index.js +0 -1
  36. package/dist/libs/contracts/dist/integrations/providers/impls/mistral-embedding.js +0 -1
  37. package/dist/libs/contracts/dist/integrations/providers/impls/mistral-llm.js +0 -1
  38. package/dist/libs/contracts/dist/integrations/providers/impls/postmark-email.js +0 -1
  39. package/dist/libs/contracts/dist/integrations/providers/impls/powens-client.js +0 -1
  40. package/dist/libs/contracts/dist/integrations/providers/impls/powens-openbanking.js +0 -1
  41. package/dist/libs/contracts/dist/integrations/providers/impls/provider-factory.js +0 -1
  42. package/dist/libs/contracts/dist/integrations/providers/impls/qdrant-vector.js +0 -1
  43. package/dist/libs/contracts/dist/integrations/providers/impls/stripe-payments.js +0 -1
  44. package/dist/libs/contracts/dist/integrations/providers/impls/twilio-sms.js +0 -1
  45. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -1
  46. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -1
  47. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -1
  48. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -1
  49. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -1
  50. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -1
  51. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -1
  52. package/dist/libs/contracts/dist/integrations/runtime.js +0 -1
  53. package/dist/libs/contracts/dist/integrations/secrets/env-secret-provider.js +0 -1
  54. package/dist/libs/contracts/dist/integrations/secrets/gcp-secret-manager.js +0 -1
  55. package/dist/libs/contracts/dist/integrations/secrets/index.js +0 -1
  56. package/dist/libs/contracts/dist/integrations/secrets/manager.js +0 -1
  57. package/dist/libs/contracts/dist/integrations/secrets/provider.js +0 -1
  58. package/dist/libs/contracts/dist/jsonschema.js +0 -1
  59. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -1
  60. package/dist/libs/contracts/dist/knowledge/index.js +0 -1
  61. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -1
  62. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -1
  63. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -1
  64. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -1
  65. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -1
  66. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -1
  67. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -1
  68. package/dist/libs/contracts/dist/onboarding-base.js +0 -1
  69. package/dist/libs/contracts/dist/ownership.js +0 -1
  70. package/dist/libs/contracts/dist/presentations.js +0 -1
  71. package/dist/libs/contracts/dist/presentations.v2.js +0 -1
  72. package/dist/libs/contracts/dist/prompt.js +0 -1
  73. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  74. package/dist/libs/contracts/dist/regenerator/index.js +0 -1
  75. package/dist/libs/contracts/dist/regenerator/service.js +0 -1
  76. package/dist/libs/contracts/dist/registry.js +0 -1
  77. package/dist/libs/contracts/dist/resources.js +0 -1
  78. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -1
  79. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -1
  80. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -1
  81. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -1
  82. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  83. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -1
  84. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  85. package/dist/libs/contracts/dist/schema/dist/index.js +0 -1
  86. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -1
  87. package/dist/libs/contracts/dist/server/graphql-schema-export.js +0 -1
  88. package/dist/libs/contracts/dist/server/index.js +0 -1
  89. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  90. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  91. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  92. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  93. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  94. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  95. package/dist/libs/contracts/dist/spec.js +0 -1
  96. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  97. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  98. package/dist/libs/contracts/dist/tests/index.js +0 -1
  99. package/dist/libs/contracts/dist/tests/runner.js +0 -1
  100. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  101. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  102. package/dist/libs/schema/dist/EnumType.js +0 -1
  103. package/dist/libs/schema/dist/FieldType.js +0 -1
  104. package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -1
  105. package/dist/libs/schema/dist/SchemaModel.js +0 -1
  106. package/dist/libs/schema/dist/entity/defineEntity.js +0 -1
  107. package/dist/libs/schema/dist/entity/index.js +0 -1
  108. package/dist/libs/schema/dist/entity/types.js +0 -1
  109. package/dist/libs/schema/dist/index.js +0 -1
  110. package/dist/templates/index.d.ts +0 -91
@@ -1 +1 @@
1
- import{r as e}from"../libs/schema/dist/EnumType.js";import{l as t}from"../libs/schema/dist/ScalarTypeEnum.js";import"../libs/schema/dist/index.js";import{n}from"../libs/contracts/dist/schema/dist/SchemaModel.js";import{n as r,t as i}from"../libs/contracts/dist/spec.js";import"../libs/contracts/dist/index.js";const a=[`platform.notifications`],o=e(`NotificationStatus`,[`PENDING`,`SENT`,`DELIVERED`,`READ`,`FAILED`,`CANCELLED`]),s=e(`NotificationChannel`,[`EMAIL`,`IN_APP`,`PUSH`,`WEBHOOK`]),c=e(`NotificationFilter`,[`unread`,`read`,`all`]),l=n({name:`Notification`,description:`A notification sent to a user`,fields:{id:{type:t.String_unsecure(),isOptional:!1},userId:{type:t.String_unsecure(),isOptional:!1},title:{type:t.String_unsecure(),isOptional:!1},body:{type:t.String_unsecure(),isOptional:!1},type:{type:t.String_unsecure(),isOptional:!1},status:{type:o,isOptional:!1},channels:{type:s,isArray:!0,isOptional:!1},actionUrl:{type:t.URL(),isOptional:!0},readAt:{type:t.DateTime(),isOptional:!0},createdAt:{type:t.DateTime(),isOptional:!1}}}),u=n({name:`NotificationPreference`,description:`User notification preferences`,fields:{userId:{type:t.String_unsecure(),isOptional:!1},globalEnabled:{type:t.Boolean(),isOptional:!1},channelPreferences:{type:t.JSONObject(),isOptional:!1},typePreferences:{type:t.JSONObject(),isOptional:!1},quietHoursStart:{type:t.String_unsecure(),isOptional:!0},quietHoursEnd:{type:t.String_unsecure(),isOptional:!0},timezone:{type:t.String_unsecure(),isOptional:!1},digestEnabled:{type:t.Boolean(),isOptional:!1},digestFrequency:{type:t.String_unsecure(),isOptional:!0}}}),d=n({name:`SendNotificationInput`,description:`Input for sending a notification`,fields:{userId:{type:t.String_unsecure(),isOptional:!1},templateId:{type:t.String_unsecure(),isOptional:!0},title:{type:t.String_unsecure(),isOptional:!0},body:{type:t.String_unsecure(),isOptional:!0},type:{type:t.String_unsecure(),isOptional:!1},channels:{type:s,isArray:!0,isOptional:!0},actionUrl:{type:t.URL(),isOptional:!0},variables:{type:t.JSONObject(),isOptional:!0},metadata:{type:t.JSONObject(),isOptional:!0}}}),f=n({name:`ListNotificationsInput`,description:`Input for listing notifications`,fields:{status:{type:c,isOptional:!0},type:{type:t.String_unsecure(),isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0,defaultValue:20},offset:{type:t.Int_unsecure(),isOptional:!0,defaultValue:0}}}),p=n({name:`ListNotificationsOutput`,description:`Output for listing notifications`,fields:{notifications:{type:l,isArray:!0,isOptional:!1},total:{type:t.Int_unsecure(),isOptional:!1},unreadCount:{type:t.Int_unsecure(),isOptional:!1}}}),m=n({name:`UpdateNotificationPreferencesInput`,description:`Input for updating notification preferences`,fields:{globalEnabled:{type:t.Boolean(),isOptional:!0},channelPreferences:{type:t.JSONObject(),isOptional:!0},typePreferences:{type:t.JSONObject(),isOptional:!0},quietHoursStart:{type:t.String_unsecure(),isOptional:!0},quietHoursEnd:{type:t.String_unsecure(),isOptional:!0},timezone:{type:t.String_unsecure(),isOptional:!0},digestEnabled:{type:t.Boolean(),isOptional:!0},digestFrequency:{type:t.String_unsecure(),isOptional:!0}}}),h=i({meta:{name:`notifications.send`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`send`],description:`Send a notification to a user.`,goal:`Deliver notifications across multiple channels.`,context:`Called by services when events require user notification.`},io:{input:d,output:l,errors:{USER_NOT_FOUND:{description:`Target user does not exist`,http:404,gqlCode:`USER_NOT_FOUND`,when:`User ID is invalid`},TEMPLATE_NOT_FOUND:{description:`Notification template does not exist`,http:404,gqlCode:`TEMPLATE_NOT_FOUND`,when:`Template ID is invalid`}}},policy:{auth:`user`},sideEffects:{emits:[{name:`notification.sent`,version:1,when:`Notification is sent`,payload:l}]}}),g=r({meta:{name:`notifications.list`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`list`],description:`List notifications for the current user.`,goal:`Show user their notifications.`,context:`Notification center UI.`},io:{input:f,output:p},policy:{auth:`user`}}),_=i({meta:{name:`notifications.markRead`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`read`],description:`Mark a notification as read.`,goal:`Track which notifications user has seen.`,context:`User clicks on a notification.`},io:{input:n({name:`MarkNotificationReadInput`,fields:{notificationId:{type:t.String_unsecure(),isOptional:!1}}}),output:l},policy:{auth:`user`}}),v=i({meta:{name:`notifications.markAllRead`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`read`],description:`Mark all notifications as read.`,goal:`Clear notification badge.`,context:`User clicks "mark all as read".`},io:{input:null,output:n({name:`MarkAllNotificationsReadOutput`,fields:{markedCount:{type:t.Int_unsecure(),isOptional:!1}}})},policy:{auth:`user`}}),y=r({meta:{name:`notifications.preferences.get`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`preferences`,`get`],description:`Get notification preferences for current user.`,goal:`Show user their notification settings.`,context:`Notification settings page.`},io:{input:null,output:u},policy:{auth:`user`}}),b=i({meta:{name:`notifications.preferences.update`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`preferences`,`update`],description:`Update notification preferences.`,goal:`Allow user to control notification delivery.`,context:`Notification settings page.`},io:{input:m,output:u},policy:{auth:`user`}}),x=i({meta:{name:`notifications.delete`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`delete`],description:`Delete a notification.`,goal:`Allow user to remove unwanted notifications.`,context:`User dismisses a notification.`},io:{input:n({name:`DeleteNotificationInput`,fields:{notificationId:{type:t.String_unsecure(),isOptional:!1}}}),output:n({name:`DeleteNotificationOutput`,fields:{success:{type:t.Boolean(),isOptional:!1}}})},policy:{auth:`user`}});export{x as DeleteNotificationContract,y as GetNotificationPreferencesContract,g as ListNotificationsContract,f as ListNotificationsInputModel,p as ListNotificationsOutputModel,v as MarkAllNotificationsReadContract,_ as MarkNotificationReadContract,c as NotificationFilterEnum,l as NotificationModel,u as NotificationPreferenceModel,h as SendNotificationContract,d as SendNotificationInputModel,b as UpdateNotificationPreferencesContract,m as UpdatePreferencesInputModel};
1
+ import{ScalarTypeEnum as e,defineEnum as t}from"@lssm/lib.schema";import{defineCommand as n,defineQuery as r,defineSchemaModel as i}from"@lssm/lib.contracts";const a=[`platform.notifications`],o=t(`NotificationStatus`,[`PENDING`,`SENT`,`DELIVERED`,`READ`,`FAILED`,`CANCELLED`]),s=t(`NotificationChannel`,[`EMAIL`,`IN_APP`,`PUSH`,`WEBHOOK`]),c=t(`NotificationFilter`,[`unread`,`read`,`all`]),l=i({name:`Notification`,description:`A notification sent to a user`,fields:{id:{type:e.String_unsecure(),isOptional:!1},userId:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!1},body:{type:e.String_unsecure(),isOptional:!1},type:{type:e.String_unsecure(),isOptional:!1},status:{type:o,isOptional:!1},channels:{type:s,isArray:!0,isOptional:!1},actionUrl:{type:e.URL(),isOptional:!0},readAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),u=i({name:`NotificationPreference`,description:`User notification preferences`,fields:{userId:{type:e.String_unsecure(),isOptional:!1},globalEnabled:{type:e.Boolean(),isOptional:!1},channelPreferences:{type:e.JSONObject(),isOptional:!1},typePreferences:{type:e.JSONObject(),isOptional:!1},quietHoursStart:{type:e.String_unsecure(),isOptional:!0},quietHoursEnd:{type:e.String_unsecure(),isOptional:!0},timezone:{type:e.String_unsecure(),isOptional:!1},digestEnabled:{type:e.Boolean(),isOptional:!1},digestFrequency:{type:e.String_unsecure(),isOptional:!0}}}),d=i({name:`SendNotificationInput`,description:`Input for sending a notification`,fields:{userId:{type:e.String_unsecure(),isOptional:!1},templateId:{type:e.String_unsecure(),isOptional:!0},title:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},type:{type:e.String_unsecure(),isOptional:!1},channels:{type:s,isArray:!0,isOptional:!0},actionUrl:{type:e.URL(),isOptional:!0},variables:{type:e.JSONObject(),isOptional:!0},metadata:{type:e.JSONObject(),isOptional:!0}}}),f=i({name:`ListNotificationsInput`,description:`Input for listing notifications`,fields:{status:{type:c,isOptional:!0},type:{type:e.String_unsecure(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0,defaultValue:20},offset:{type:e.Int_unsecure(),isOptional:!0,defaultValue:0}}}),p=i({name:`ListNotificationsOutput`,description:`Output for listing notifications`,fields:{notifications:{type:l,isArray:!0,isOptional:!1},total:{type:e.Int_unsecure(),isOptional:!1},unreadCount:{type:e.Int_unsecure(),isOptional:!1}}}),m=i({name:`UpdateNotificationPreferencesInput`,description:`Input for updating notification preferences`,fields:{globalEnabled:{type:e.Boolean(),isOptional:!0},channelPreferences:{type:e.JSONObject(),isOptional:!0},typePreferences:{type:e.JSONObject(),isOptional:!0},quietHoursStart:{type:e.String_unsecure(),isOptional:!0},quietHoursEnd:{type:e.String_unsecure(),isOptional:!0},timezone:{type:e.String_unsecure(),isOptional:!0},digestEnabled:{type:e.Boolean(),isOptional:!0},digestFrequency:{type:e.String_unsecure(),isOptional:!0}}}),h=n({meta:{name:`notifications.send`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`send`],description:`Send a notification to a user.`,goal:`Deliver notifications across multiple channels.`,context:`Called by services when events require user notification.`},io:{input:d,output:l,errors:{USER_NOT_FOUND:{description:`Target user does not exist`,http:404,gqlCode:`USER_NOT_FOUND`,when:`User ID is invalid`},TEMPLATE_NOT_FOUND:{description:`Notification template does not exist`,http:404,gqlCode:`TEMPLATE_NOT_FOUND`,when:`Template ID is invalid`}}},policy:{auth:`user`},sideEffects:{emits:[{name:`notification.sent`,version:1,when:`Notification is sent`,payload:l}]}}),g=r({meta:{name:`notifications.list`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`list`],description:`List notifications for the current user.`,goal:`Show user their notifications.`,context:`Notification center UI.`},io:{input:f,output:p},policy:{auth:`user`}}),_=n({meta:{name:`notifications.markRead`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`read`],description:`Mark a notification as read.`,goal:`Track which notifications user has seen.`,context:`User clicks on a notification.`},io:{input:i({name:`MarkNotificationReadInput`,fields:{notificationId:{type:e.String_unsecure(),isOptional:!1}}}),output:l},policy:{auth:`user`}}),v=n({meta:{name:`notifications.markAllRead`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`read`],description:`Mark all notifications as read.`,goal:`Clear notification badge.`,context:`User clicks "mark all as read".`},io:{input:null,output:i({name:`MarkAllNotificationsReadOutput`,fields:{markedCount:{type:e.Int_unsecure(),isOptional:!1}}})},policy:{auth:`user`}}),y=r({meta:{name:`notifications.preferences.get`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`preferences`,`get`],description:`Get notification preferences for current user.`,goal:`Show user their notification settings.`,context:`Notification settings page.`},io:{input:null,output:u},policy:{auth:`user`}}),b=n({meta:{name:`notifications.preferences.update`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`preferences`,`update`],description:`Update notification preferences.`,goal:`Allow user to control notification delivery.`,context:`Notification settings page.`},io:{input:m,output:u},policy:{auth:`user`}}),x=n({meta:{name:`notifications.delete`,version:1,stability:`stable`,owners:[...a],tags:[`notifications`,`delete`],description:`Delete a notification.`,goal:`Allow user to remove unwanted notifications.`,context:`User dismisses a notification.`},io:{input:i({name:`DeleteNotificationInput`,fields:{notificationId:{type:e.String_unsecure(),isOptional:!1}}}),output:i({name:`DeleteNotificationOutput`,fields:{success:{type:e.Boolean(),isOptional:!1}}})},policy:{auth:`user`}});export{x as DeleteNotificationContract,y as GetNotificationPreferencesContract,g as ListNotificationsContract,f as ListNotificationsInputModel,p as ListNotificationsOutputModel,v as MarkAllNotificationsReadContract,_ as MarkNotificationReadContract,c as NotificationFilterEnum,l as NotificationModel,u as NotificationPreferenceModel,h as SendNotificationContract,d as SendNotificationInputModel,b as UpdateNotificationPreferencesContract,m as UpdatePreferencesInputModel};
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"../libs/schema/dist/entity/defineEntity.js";import"../libs/schema/dist/index.js";const i=t({name:`NotificationStatus`,values:[`PENDING`,`SENT`,`DELIVERED`,`READ`,`FAILED`,`CANCELLED`],schema:`lssm_notifications`,description:`Status of a notification.`}),a=t({name:`NotificationChannel`,values:[`EMAIL`,`IN_APP`,`PUSH`,`WEBHOOK`,`SMS`],schema:`lssm_notifications`,description:`Delivery channel for notifications.`}),o=r({name:`Notification`,description:`An individual notification to be delivered to a user.`,schema:`lssm_notifications`,map:`notification`,fields:{id:n.id({description:`Unique notification ID`}),userId:n.foreignKey({description:`Target user ID`}),orgId:n.string({isOptional:!0,description:`Organization context`}),templateId:n.string({isOptional:!0,description:`Template used`}),title:n.string({description:`Notification title`}),body:n.string({description:`Notification body`}),actionUrl:n.string({isOptional:!0,description:`Action URL`}),imageUrl:n.string({isOptional:!0,description:`Image URL`}),type:n.string({description:`Notification type (e.g., mention, update)`}),category:n.string({isOptional:!0,description:`Notification category`}),priority:n.enum(`NotificationPriority`,{default:`NORMAL`}),channels:n.string({isArray:!0,description:`Target delivery channels`}),status:n.enum(`NotificationStatus`,{default:`PENDING`}),sentAt:n.dateTime({isOptional:!0}),deliveredAt:n.dateTime({isOptional:!0}),readAt:n.dateTime({isOptional:!0}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),variables:n.json({isOptional:!0,description:`Template variables used`}),triggeredBy:n.string({isOptional:!0,description:`Event/action that triggered`}),sourceId:n.string({isOptional:!0,description:`Source entity ID`}),sourceType:n.string({isOptional:!0,description:`Source entity type`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),expiresAt:n.dateTime({isOptional:!0,description:`Notification expiry`}),deliveryLogs:n.hasMany(`DeliveryLog`)},indexes:[e.on([`userId`,`status`,`createdAt`]),e.on([`userId`,`readAt`]),e.on([`orgId`,`createdAt`]),e.on([`type`,`createdAt`])],enums:[i,a]}),s=t({name:`NotificationPriority`,values:[`LOW`,`NORMAL`,`HIGH`,`URGENT`],schema:`lssm_notifications`,description:`Priority level of a notification.`}),c=r({name:`NotificationTemplate`,description:`Reusable notification template.`,schema:`lssm_notifications`,map:`notification_template`,fields:{id:n.id(),templateId:n.string({isUnique:!0,description:`Template identifier`}),name:n.string({description:`Template display name`}),description:n.string({isOptional:!0}),emailSubject:n.string({isOptional:!0}),emailBody:n.string({isOptional:!0}),inAppTitle:n.string({isOptional:!0}),inAppBody:n.string({isOptional:!0}),pushTitle:n.string({isOptional:!0}),pushBody:n.string({isOptional:!0}),defaultChannels:n.string({isArray:!0}),category:n.string({isOptional:!0}),priority:n.enum(`NotificationPriority`,{default:`NORMAL`}),variablesSchema:n.json({isOptional:!0,description:`JSON schema for variables`}),enabled:n.boolean({default:!0}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},enums:[s]}),l=r({name:`NotificationPreference`,description:`User notification preferences by type and channel.`,schema:`lssm_notifications`,map:`notification_preference`,fields:{id:n.id(),userId:n.foreignKey(),globalEnabled:n.boolean({default:!0}),quietHoursStart:n.string({isOptional:!0,description:`Quiet hours start (HH:MM)`}),quietHoursEnd:n.string({isOptional:!0,description:`Quiet hours end (HH:MM)`}),timezone:n.string({default:`"UTC"`}),channelPreferences:n.json({description:`Channel-level preferences`}),typePreferences:n.json({description:`Type-level preferences`}),digestEnabled:n.boolean({default:!1}),digestFrequency:n.string({isOptional:!0,description:`daily, weekly, etc.`}),digestTime:n.string({isOptional:!0,description:`Digest send time (HH:MM)`}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},indexes:[e.unique([`userId`])]}),u=r({name:`DeliveryLog`,description:`Log of notification delivery attempts.`,schema:`lssm_notifications`,map:`delivery_log`,fields:{id:n.id(),notificationId:n.foreignKey(),channel:n.enum(`NotificationChannel`),status:n.enum(`NotificationStatus`),attemptedAt:n.dateTime(),deliveredAt:n.dateTime({isOptional:!0}),responseCode:n.string({isOptional:!0}),responseMessage:n.string({isOptional:!0}),externalId:n.string({isOptional:!0,description:`Provider message ID`}),metadata:n.json({isOptional:!0}),notification:n.belongsTo(`Notification`,[`notificationId`],[`id`],{onDelete:`Cascade`})},indexes:[e.on([`notificationId`,`channel`])]}),d=[o,c,l,u],f={moduleId:`@lssm/module.notifications`,entities:d,enums:[i,a,s]};export{u as DeliveryLogEntity,a as NotificationChannelEnum,o as NotificationEntity,l as NotificationPreferenceEntity,s as NotificationPriorityEnum,i as NotificationStatusEnum,c as NotificationTemplateEntity,d as notificationEntities,f as notificationsSchemaContribution};
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`NotificationStatus`,values:[`PENDING`,`SENT`,`DELIVERED`,`READ`,`FAILED`,`CANCELLED`],schema:`lssm_notifications`,description:`Status of a notification.`}),a=t({name:`NotificationChannel`,values:[`EMAIL`,`IN_APP`,`PUSH`,`WEBHOOK`,`SMS`],schema:`lssm_notifications`,description:`Delivery channel for notifications.`}),o=e({name:`Notification`,description:`An individual notification to be delivered to a user.`,schema:`lssm_notifications`,map:`notification`,fields:{id:n.id({description:`Unique notification ID`}),userId:n.foreignKey({description:`Target user ID`}),orgId:n.string({isOptional:!0,description:`Organization context`}),templateId:n.string({isOptional:!0,description:`Template used`}),title:n.string({description:`Notification title`}),body:n.string({description:`Notification body`}),actionUrl:n.string({isOptional:!0,description:`Action URL`}),imageUrl:n.string({isOptional:!0,description:`Image URL`}),type:n.string({description:`Notification type (e.g., mention, update)`}),category:n.string({isOptional:!0,description:`Notification category`}),priority:n.enum(`NotificationPriority`,{default:`NORMAL`}),channels:n.string({isArray:!0,description:`Target delivery channels`}),status:n.enum(`NotificationStatus`,{default:`PENDING`}),sentAt:n.dateTime({isOptional:!0}),deliveredAt:n.dateTime({isOptional:!0}),readAt:n.dateTime({isOptional:!0}),metadata:n.json({isOptional:!0,description:`Additional metadata`}),variables:n.json({isOptional:!0,description:`Template variables used`}),triggeredBy:n.string({isOptional:!0,description:`Event/action that triggered`}),sourceId:n.string({isOptional:!0,description:`Source entity ID`}),sourceType:n.string({isOptional:!0,description:`Source entity type`}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),expiresAt:n.dateTime({isOptional:!0,description:`Notification expiry`}),deliveryLogs:n.hasMany(`DeliveryLog`)},indexes:[r.on([`userId`,`status`,`createdAt`]),r.on([`userId`,`readAt`]),r.on([`orgId`,`createdAt`]),r.on([`type`,`createdAt`])],enums:[i,a]}),s=t({name:`NotificationPriority`,values:[`LOW`,`NORMAL`,`HIGH`,`URGENT`],schema:`lssm_notifications`,description:`Priority level of a notification.`}),c=e({name:`NotificationTemplate`,description:`Reusable notification template.`,schema:`lssm_notifications`,map:`notification_template`,fields:{id:n.id(),templateId:n.string({isUnique:!0,description:`Template identifier`}),name:n.string({description:`Template display name`}),description:n.string({isOptional:!0}),emailSubject:n.string({isOptional:!0}),emailBody:n.string({isOptional:!0}),inAppTitle:n.string({isOptional:!0}),inAppBody:n.string({isOptional:!0}),pushTitle:n.string({isOptional:!0}),pushBody:n.string({isOptional:!0}),defaultChannels:n.string({isArray:!0}),category:n.string({isOptional:!0}),priority:n.enum(`NotificationPriority`,{default:`NORMAL`}),variablesSchema:n.json({isOptional:!0,description:`JSON schema for variables`}),enabled:n.boolean({default:!0}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},enums:[s]}),l=e({name:`NotificationPreference`,description:`User notification preferences by type and channel.`,schema:`lssm_notifications`,map:`notification_preference`,fields:{id:n.id(),userId:n.foreignKey(),globalEnabled:n.boolean({default:!0}),quietHoursStart:n.string({isOptional:!0,description:`Quiet hours start (HH:MM)`}),quietHoursEnd:n.string({isOptional:!0,description:`Quiet hours end (HH:MM)`}),timezone:n.string({default:`"UTC"`}),channelPreferences:n.json({description:`Channel-level preferences`}),typePreferences:n.json({description:`Type-level preferences`}),digestEnabled:n.boolean({default:!1}),digestFrequency:n.string({isOptional:!0,description:`daily, weekly, etc.`}),digestTime:n.string({isOptional:!0,description:`Digest send time (HH:MM)`}),createdAt:n.createdAt(),updatedAt:n.updatedAt()},indexes:[r.unique([`userId`])]}),u=e({name:`DeliveryLog`,description:`Log of notification delivery attempts.`,schema:`lssm_notifications`,map:`delivery_log`,fields:{id:n.id(),notificationId:n.foreignKey(),channel:n.enum(`NotificationChannel`),status:n.enum(`NotificationStatus`),attemptedAt:n.dateTime(),deliveredAt:n.dateTime({isOptional:!0}),responseCode:n.string({isOptional:!0}),responseMessage:n.string({isOptional:!0}),externalId:n.string({isOptional:!0,description:`Provider message ID`}),metadata:n.json({isOptional:!0}),notification:n.belongsTo(`Notification`,[`notificationId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`notificationId`,`channel`])]}),d=[o,c,l,u],f={moduleId:`@lssm/module.notifications`,entities:d,enums:[i,a,s]};export{u as DeliveryLogEntity,a as NotificationChannelEnum,o as NotificationEntity,l as NotificationPreferenceEntity,s as NotificationPriorityEnum,i as NotificationStatusEnum,c as NotificationTemplateEntity,d as notificationEntities,f as notificationsSchemaContribution};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/module.notifications",
3
- "version": "0.0.0-canary-20251207012602",
3
+ "version": "0.0.0-canary-20251207043720",
4
4
  "description": "Notification center module for ContractSpec applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -28,11 +28,11 @@
28
28
  "typescript": "^5.9.3"
29
29
  },
30
30
  "exports": {
31
- ".": "./dist/index.js",
32
- "./channels": "./dist/channels/index.js",
33
- "./contracts": "./dist/contracts/index.js",
34
- "./entities": "./dist/entities/index.js",
35
- "./templates": "./dist/templates/index.js",
31
+ ".": "./src/index.ts",
32
+ "./channels": "./src/channels/index.ts",
33
+ "./contracts": "./src/contracts/index.ts",
34
+ "./entities": "./src/entities/index.ts",
35
+ "./templates": "./src/templates/index.ts",
36
36
  "./*": "./*"
37
37
  },
38
38
  "module": "./dist/index.js",
@@ -41,6 +41,14 @@
41
41
  "README.md"
42
42
  ],
43
43
  "publishConfig": {
44
- "access": "public"
44
+ "access": "public",
45
+ "exports": {
46
+ ".": "./dist/index.js",
47
+ "./channels": "./dist/channels/index.js",
48
+ "./contracts": "./dist/contracts/index.js",
49
+ "./entities": "./dist/entities/index.js",
50
+ "./templates": "./dist/templates/index.js",
51
+ "./*": "./*"
52
+ }
45
53
  }
46
54
  }
@@ -1,106 +0,0 @@
1
- //#region src/channels/index.d.ts
2
- /**
3
- * Notification channel interface.
4
- */
5
- interface NotificationChannel {
6
- /** Channel identifier */
7
- readonly channelId: string;
8
- /** Deliver a notification */
9
- send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
10
- /** Check if channel is available */
11
- isAvailable(): Promise<boolean>;
12
- }
13
- /**
14
- * Notification to deliver via a channel.
15
- */
16
- interface ChannelNotification {
17
- id: string;
18
- userId: string;
19
- title: string;
20
- body: string;
21
- actionUrl?: string;
22
- imageUrl?: string;
23
- metadata?: Record<string, unknown>;
24
- email?: {
25
- to: string;
26
- subject: string;
27
- html?: string;
28
- text?: string;
29
- };
30
- push?: {
31
- token: string;
32
- badge?: number;
33
- sound?: string;
34
- data?: Record<string, unknown>;
35
- };
36
- webhook?: {
37
- url: string;
38
- headers?: Record<string, string>;
39
- };
40
- }
41
- /**
42
- * Result of channel delivery attempt.
43
- */
44
- interface ChannelDeliveryResult {
45
- success: boolean;
46
- externalId?: string;
47
- responseCode?: string;
48
- responseMessage?: string;
49
- metadata?: Record<string, unknown>;
50
- }
51
- /**
52
- * In-app notification channel (stores in database).
53
- */
54
- declare class InAppChannel implements NotificationChannel {
55
- readonly channelId = "IN_APP";
56
- send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
57
- isAvailable(): Promise<boolean>;
58
- }
59
- /**
60
- * Console channel for development/testing.
61
- */
62
- declare class ConsoleChannel implements NotificationChannel {
63
- readonly channelId = "CONSOLE";
64
- send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
65
- isAvailable(): Promise<boolean>;
66
- }
67
- /**
68
- * Email channel interface (to be implemented with provider).
69
- */
70
- declare abstract class EmailChannel implements NotificationChannel {
71
- readonly channelId = "EMAIL";
72
- abstract send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
73
- isAvailable(): Promise<boolean>;
74
- }
75
- /**
76
- * Push notification channel interface (to be implemented with provider).
77
- */
78
- declare abstract class PushChannel implements NotificationChannel {
79
- readonly channelId = "PUSH";
80
- abstract send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
81
- isAvailable(): Promise<boolean>;
82
- }
83
- /**
84
- * Webhook channel for external integrations.
85
- */
86
- declare class WebhookChannel implements NotificationChannel {
87
- readonly channelId = "WEBHOOK";
88
- send(notification: ChannelNotification): Promise<ChannelDeliveryResult>;
89
- isAvailable(): Promise<boolean>;
90
- }
91
- /**
92
- * Channel registry for managing available channels.
93
- */
94
- declare class ChannelRegistry {
95
- private channels;
96
- register(channel: NotificationChannel): void;
97
- get(channelId: string): NotificationChannel | undefined;
98
- getAll(): NotificationChannel[];
99
- getAvailable(): Promise<NotificationChannel[]>;
100
- }
101
- /**
102
- * Create a default channel registry with standard channels.
103
- */
104
- declare function createChannelRegistry(): ChannelRegistry;
105
- //#endregion
106
- export { ChannelDeliveryResult, ChannelNotification, ChannelRegistry, ConsoleChannel, EmailChannel, InAppChannel, NotificationChannel, PushChannel, WebhookChannel, createChannelRegistry };