@wildo-ai/saas-models 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/applications/applications-context.schemas.d.ts +14 -10
- package/dist/esm/applications/applications-context.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/applications.shared.resources-config.schemas.js +4 -3
- package/dist/esm/applications/applications.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts +0 -4
- package/dist/esm/billing/billing-configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-configuration.shared.schemas.js +59 -17
- package/dist/esm/billing/billing-configuration.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts +77 -21
- package/dist/esm/billing/billing-enums.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-enums.shared.schemas.js +85 -23
- package/dist/esm/billing/billing-enums.shared.schemas.js.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.d.ts +3 -3
- package/dist/esm/billing/price.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/price.shared.schemas.js +7 -1
- package/dist/esm/billing/price.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js +52 -11
- package/dist/esm/billing/product-behavior-policy.shared.schemas.js.map +1 -1
- package/dist/esm/billing/product-definition.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.schemas.js +7 -3
- package/dist/esm/billing/product.shared.schemas.js.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js +15 -1
- package/dist/esm/billing/subscription.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.d.ts +7 -3
- package/dist/esm/billing/usage-record.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.schemas.js +22 -3
- package/dist/esm/billing/usage-record.shared.schemas.js.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +69 -2
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js +20 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts +85 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js +157 -0
- package/dist/esm/compliance/audit-trails/application-audit-logs.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts +23 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js +56 -0
- package/dist/esm/compliance/audit-trails/audit-trail-config.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts +480 -20
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js +547 -23
- package/dist/esm/compliance/audit-trails/auditable-events.shared.schema.js.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js +82 -3
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +31 -30
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +98 -3
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts +17 -0
- package/dist/esm/compliance/privacy/privacy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js +27 -4
- package/dist/esm/compliance/privacy/privacy.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts +82 -29
- package/dist/esm/compliance/privacy/redaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js +95 -29
- package/dist/esm/compliance/privacy/redaction.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js +12 -5
- package/dist/esm/compliance/privacy/subject-export.shared.schemas.js.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts +21 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/analytics-value-moments.shared.schemas.js +20 -0
- package/dist/esm/config/analytics-value-moments.shared.schemas.js.map +1 -1
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts +7 -5
- package/dist/esm/config/app-configuration-shared.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts +8 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.d.ts.map +1 -1
- package/dist/esm/config/auth-config-resolution.shared.utils.js +29 -0
- package/dist/esm/config/auth-config-resolution.shared.utils.js.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts +95 -17
- package/dist/esm/config/entity-identity-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/entity-identity-config.shared.schemas.js +86 -8
- package/dist/esm/config/entity-identity-config.shared.schemas.js.map +1 -1
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts +12 -12
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +28 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts.map +1 -1
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js +28 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts +45 -12
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +103 -58
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js +176 -15
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts +15 -3
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js +32 -5
- package/dist/esm/external-providers/engine-capability-resolution-mode.shared.js.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +83 -7
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts +59 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js +61 -0
- package/dist/esm/external-providers/frontend-capability-public-config.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts +97 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js +41 -0
- package/dist/esm/external-providers/frontend-capability-runtime.shared.types.js.map +1 -0
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts +148 -2
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js +56 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts +5 -28
- package/dist/esm/external-providers/provider-capability.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-capability.shared.schemas.js +4 -2
- package/dist/esm/external-providers/provider-capability.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts +18 -8
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js +9 -4
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts +338 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js +332 -0
- package/dist/esm/external-providers/provider-frontend-surface.shared.schemas.js.map +1 -0
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts +178 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js +181 -9
- package/dist/esm/external-providers/provider-metadata.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js +7 -5
- package/dist/esm/external-providers/provider-protocol.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts +40 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js +80 -0
- package/dist/esm/external-providers/provider-tier-rule.shared.utils.js.map +1 -0
- package/dist/esm/features/core-feature-definitions.shared.d.ts.map +1 -1
- package/dist/esm/features/core-feature-definitions.shared.js +7 -1
- package/dist/esm/features/core-feature-definitions.shared.js.map +1 -1
- package/dist/esm/features/feature-builders.shared.d.ts +32 -0
- package/dist/esm/features/feature-builders.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-builders.shared.js +32 -0
- package/dist/esm/features/feature-builders.shared.js.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts +14 -2
- package/dist/esm/files/file-upload-grant.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/file-upload-grant.shared.schemas.js +44 -5
- package/dist/esm/files/file-upload-grant.shared.schemas.js.map +1 -1
- package/dist/esm/files/files.shared.schemas.d.ts +15 -8
- package/dist/esm/files/files.shared.schemas.d.ts.map +1 -1
- package/dist/esm/files/files.shared.schemas.js +15 -8
- package/dist/esm/files/files.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/actors.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/actors.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts +54 -5
- package/dist/esm/flows-actors/agents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/agents.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/apps-blueprint/apps-blueprint.shared.schemas.d.ts +6 -6
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/deliberation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/deliberation.shared.schemas.js +0 -5
- package/dist/esm/flows-actors/deliberation.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts +14 -0
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js +40 -3
- package/dist/esm/flows-actors/flows-actors-execution.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts +19 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js +33 -0
- package/dist/esm/flows-actors/flows-actors.commons.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js +14 -9
- package/dist/esm/flows-actors/flows-actors.io.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows-actors.system.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows.shared.schemas.js +3 -2
- package/dist/esm/flows-actors/flows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts +128 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js +142 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts +0 -3
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js +1 -4
- package/dist/esm/flows-actors/meta-workflows/budget-authority.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts +0 -16
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js +1 -17
- package/dist/esm/flows-actors/meta-workflows/context-selection.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.d.ts +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js +3 -3
- package/dist/esm/flows-actors/meta-workflows/decisions.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts +2 -8
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js +4 -15
- package/dist/esm/flows-actors/meta-workflows/execution-binding-common.meta-workflows.shared.schemas.js.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.utils.js +1 -0
- package/dist/esm/guidance/guidance-state.shared.utils.js.map +1 -1
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts +8 -0
- package/dist/esm/guidance/progression-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts +46 -0
- package/dist/esm/guidance/progression-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/progression-state.shared.schemas.js +49 -0
- package/dist/esm/guidance/progression-state.shared.schemas.js.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts +320 -50
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.d.ts.map +1 -1
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js +137 -36
- package/dist/esm/http-api-binding/http-api-binding.shared.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts +11 -2
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template-registry.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-template.shared.enums.js +15 -0
- package/dist/esm/notifications/email/email-template.shared.enums.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js +19 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts +30 -0
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js +65 -1
- package/dist/esm/notifications/m2m/webhook-config.shared.schemas.js.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.core.definitions.js +6 -4
- package/dist/esm/notifications/notification-badges.core.definitions.js.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.d.ts +167 -5
- package/dist/esm/notifications/notification-badges.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notification-badges.schemas.js +191 -6
- package/dist/esm/notifications/notification-badges.schemas.js.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.d.ts +107 -0
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +149 -1
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js +22 -1
- package/dist/esm/organizations/organization-notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts +26 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-preferences.shared.schemas.js +25 -0
- package/dist/esm/organizations/organization-preferences.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts +25 -0
- package/dist/esm/organizations/organization-profile.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-profile.shared.schemas.js +42 -17
- package/dist/esm/organizations/organization-profile.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts +3 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.shared.js +9 -2
- package/dist/esm/organizations/organization-unit-narrowing.shared.js.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js +18 -3
- package/dist/esm/organizations/organizations.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +49 -2
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +48 -1
- package/dist/esm/public-runtime/index.js.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts +6 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js +6 -5
- package/dist/esm/queue/jobs.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.d.ts +16 -3
- package/dist/esm/queue/jobs.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/jobs.shared.schemas.js +16 -3
- package/dist/esm/queue/jobs.shared.schemas.js.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts +137 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.d.ts.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js +1201 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +67 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +78 -0
- package/dist/esm/requests/manual-controllers-routes-urls.js.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js +11 -1
- package/dist/esm/requests/rate-limits.shared.schemas.js.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.d.ts +27 -4
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +35 -0
- package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.d.ts +1 -0
- package/dist/esm/resources/resources-config.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.factory.js +105 -20
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +254 -72
- package/dist/esm/resources/resources-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.js.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources-registry.shared.core.definitions.js +97 -5
- package/dist/esm/resources/resources-registry.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.d.ts.map +1 -1
- package/dist/esm/resources/resources-relationships.shared.factory.js +15 -0
- package/dist/esm/resources/resources-relationships.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +37 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +51 -0
- package/dist/esm/resources/resources.shared.core.definitions.js.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.d.ts +11 -2
- package/dist/esm/resources/resources.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.schemas.js +34 -3
- package/dist/esm/resources/resources.shared.schemas.js.map +1 -1
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts +51 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.d.ts.map +1 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js +53 -0
- package/dist/esm/resources/utils/field-value-disclosure.utils.js.map +1 -0
- package/dist/esm/resources/utils/resources-summary.utils.d.ts +16 -2
- package/dist/esm/resources/utils/resources-summary.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-summary.utils.js +19 -5
- package/dist/esm/resources/utils/resources-summary.utils.js.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js +11 -0
- package/dist/esm/resources/utils/shared-persistence-collection.utils.js.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts +25 -0
- package/dist/esm/runtime/domain-module.shared.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.shared.definitions.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts +1 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js +38 -0
- package/dist/esm/security/api-keys/api-keys-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +4 -11
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js +0 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts +84 -5
- package/dist/esm/security/authentications/authentication.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.schemas.js +83 -3
- package/dist/esm/security/authentications/authentication.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js +11 -0
- package/dist/esm/security/authentications/registration.shared.dto.schemas.js.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js +21 -4
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts +61 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js +208 -6
- package/dist/esm/security/authentications/sso/sso-config.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts +37 -27
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js +134 -12
- package/dist/esm/security/authentications/sso/sso-config.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +0 -6
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js +17 -8
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js +27 -0
- package/dist/esm/security/authorizations/platform-access-grants.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts +52 -7
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js +45 -8
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js +198 -0
- package/dist/esm/security/connected-accounts/provider-credentials-organization.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts +31 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js +191 -0
- package/dist/esm/security/connected-accounts/provider-credentials-user.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts +250 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js +486 -0
- package/dist/esm/security/connected-accounts/provider-credentials.shared.schemas.js.map +1 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-application.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts +4 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js +29 -0
- package/dist/esm/security/oauth-clients/oauth-clients-organization.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts +6 -0
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js +31 -0
- package/dist/esm/security/oauth-clients/oauth-clients.shared.schemas.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts +13 -0
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js +24 -3
- package/dist/esm/security/oauth-clients/oauth-consent-grants.shared.schemas.js.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-self.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self.shared.resources-config.schemas.js +33 -3
- package/dist/esm/users/user-self.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts +17 -1
- package/dist/esm/users/users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.resources-config.schemas.js +136 -5
- package/dist/esm/users/users.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/users/users.shared.schemas.d.ts +43 -12
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +38 -7
- package/dist/esm/users/users.shared.schemas.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-badges.schemas.js","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { initZodDecorators } from '@wildo-ai/zod-decorators';\n\ninitZodDecorators(z);\n\nimport { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport { ResourcePrimaryScope } from \"../resources/resources.shared.schemas\";\n\n\n/**\n * Notification badge identifier.\n *\n * No canonical (core) identifiers ship today — the two aspirational placeholders\n * (`new messages` / `unpaid invoices`) were removed because nothing produced them\n * (see `.claude/plans/badge-launcher-retract.md`). When the badge surfacing is\n * reintroduced with a real producer (Reintroduction Contract R1), core identifiers\n * come back as a `CoreNotificationBadgeIdentifiers` enum unioned in here.\n */\nexport const NotificationBadgeIdentifierSchema = z.string().min(1, { error: 'Notification badge identifier is required' });\n\n/**\n * Notification badge scope. Tightened to USER_SELF | ORGANIZATIONS only.\n *\n * The APPLICATION variant was dropped in the polymorphism refactor\n * (`.cursor/plans/notification-badges-polymorphism-refactor.md`):\n * - No canonical badges were ever declared at APPLICATION scope (see\n * `notification-badges.core.definitions.ts`).\n * - The two surviving variants (USER + ORG) each own their own resource type\n * and MongoDB collection. Allowing APPLICATION here would let consumers\n * write a payload that no resource configuration / collection accepts.\n *\n * `WS_BadgeUpdatePayload` semantics are unchanged — the dispatcher in\n * `NotificationBadgeBackendService.emitBadgeUpdate` still routes USER badges to\n * `sendToUser` and ORG badges to `sendToOrganization`.\n */\nexport const NotificationScopeSchema = z.enum([\n ResourcePrimaryScope.USER_SELF,\n ResourcePrimaryScope.ORGANIZATIONS,\n]);\n\nexport enum NotificationBadgeOperation {\n INCREMENT = 'increment',\n DECREMENT = 'decrement',\n SET = 'set',\n RESET = 'reset',\n}\n\n/**\n * How a badge's count is CALCULATED — the load-bearing distinction (R1).\n *\n * - `EVENT_COUNTER`: a stored counter mutated imperatively on domain events\n * (arrive → increment, seen → reset). Correct for \"unread messages\" style\n * badges. The count lives in the badge document.\n * - `DERIVED_QUERY`: the count is a LIVE aggregate over a resource collection\n * (`count(resourceType where filter, scoped)`), recomputed on that resource's\n * mutations. Correct for \"incomplete todos\" / \"unpaid invoices\" — quantities\n * derived from data that would DRIFT if tracked with a stored counter.\n */\nexport enum NotificationBadgeSourceKind {\n EVENT_COUNTER = 'event_counter',\n DERIVED_QUERY = 'derived_query',\n}\n\n/** How the badge is presented. `NONE` = suppressed even when the count is > 0. */\nexport enum NotificationBadgeDisplayMode {\n /** A colored signal dot (\"≥ 1\"), no number. */\n DOT = 'dot',\n /** The numeric count (truncated at the display cap). */\n COUNT = 'count',\n /** Rendered as nothing (count still computed/available). */\n NONE = 'none',\n}\n\n/**\n * WHETHER / WHEN a badge draws attention. The LOOK of the pulse is theme-owned\n * (`UIBehaviorRecipe.motion.attention`), so a definition only declares intent.\n */\nexport enum NotificationBadgePulse {\n NONE = 'none',\n /** Transitional — pulse briefly when the count rises (recommended). */\n ON_INCREASE = 'on_increase',\n /** Persistent — pulse while the count is > 0. */\n WHILE_ACTIVE = 'while_active',\n}\n\n/** EVENT_COUNTER source — no extra config; the stored counter is the truth. */\nexport const NotificationBadgeEventCounterSourceSchema = z.object({\n kind: z.literal(NotificationBadgeSourceKind.EVENT_COUNTER),\n});\n\n/**\n * DERIVED_QUERY source — the count is `count(resourceType where filter)` with the\n * scope bound via `scopeField` (the FK field on the counted resource that equals\n * the badge's `scopeId`, e.g. `userId` for a USER_SELF badge). Recomputed by the\n * backend on any mutation of `resourceType` (see backend R5).\n */\nexport const NotificationBadgeDerivedQuerySourceSchema = z.object({\n kind: z.literal(NotificationBadgeSourceKind.DERIVED_QUERY),\n resourceType: z.string().min(1, { error: 'Derived-badge resourceType is required' }),\n filter: z.record(z.string(), z.unknown()),\n scopeField: z.string().min(1, { error: 'Derived-badge scopeField is required' }),\n});\n\n/** Discriminated union over the calculation kinds. */\nexport const NotificationBadgeSourceSchema = z.discriminatedUnion('kind', [\n NotificationBadgeEventCounterSourceSchema,\n NotificationBadgeDerivedQuerySourceSchema,\n]);\n\n/**\n * Presentation declaration. `tone` reuses the design-system `IndicatorVariant`\n * (single source — the `Badge` component maps the same enum). `pulse` is a\n * trigger only; the theme owns the animation.\n */\nexport const NotificationBadgeDisplaySchema = z.object({\n mode: z.enum(NotificationBadgeDisplayMode).default(NotificationBadgeDisplayMode.COUNT),\n tone: z.enum(IndicatorVariant).default(IndicatorVariant.NEUTRAL),\n pulse: z.enum(NotificationBadgePulse).default(NotificationBadgePulse.NONE),\n});\n\n/**\n * Badge IDENTITY — the (identifier, scope) tuple shared by the declaration and\n * the persisted document. Kept separate so the stored badge doc does NOT absorb\n * declaration-only fields (`source` / `display`).\n */\nconst NotificationBadgeIdentitySchema = z.object({\n identifier: NotificationBadgeIdentifierSchema,\n scope: NotificationScopeSchema,\n});\n\n/**\n * Badge DEFINITION — the declaration app/framework authors register: identity +\n * how the count is calculated (`source`) + how it is presented (`display`).\n */\nexport const NotificationBadgeDefinitionSchema = NotificationBadgeIdentitySchema.extend({\n source: NotificationBadgeSourceSchema,\n display: NotificationBadgeDisplaySchema,\n});\n\nconst NotificationBadgeBaseSchema = NotificationBadgeIdentitySchema.extend({\n // A compact badge without its application-defined identifier is not interpretable: callers\n // could see a number but not what the number counts. Override the identity field here (rather\n // than decorating NotificationBadgeIdentitySchema) so persisted API rows gain summary metadata\n // while application-authored badge definitions remain a plain declaration schema.\n identifier: NotificationBadgeIdentifierSchema.isSummaryField(),\n // `isPrimaryKey` (composite: excludeFromCreate + isHidden + isUnique + isDBIndexed) —\n // the server generates `_id`, so it must NOT be required on the create DTO. Using bare\n // `.isDBIndexed()` here left `_id` create-required, which failed the dispatcher-driven\n // badge materialization (`buildNewBadge` supplies no `_id`).\n _id: z.string().min(1, { error: 'Notification badge ID is required' }).isPrimaryKey(),\n count: z.number().min(0, { error: 'Notification badge count must be greater than or equal to 0' }).isSummaryField(),\n createdAt: z.date().default(() => new Date()).isDBIndexed(),\n updatedAt: z.date().default(() => new Date()).isDBIndexed().isSummaryField(),\n});\n\nexport const NotificationBadgeOrganizationSchema = NotificationBadgeBaseSchema.extend({\n scope: z.literal(ResourcePrimaryScope.ORGANIZATIONS),\n organizationId: z.string().min(1, { error: 'Organization ID is required' }).isDBIndexed().isForeignKey(),\n});\n\nexport const NotificationBadgeUserSelfSchema = NotificationBadgeBaseSchema.extend({\n scope: z.literal(ResourcePrimaryScope.USER_SELF),\n userId: z.string().min(1, { error: 'User ID is required' }).isDBIndexed().isForeignKey(),\n});\n\n/**\n * Discriminated union over the two surviving badge scopes (USER_SELF / ORGANIZATIONS).\n * The APPLICATION variant was dropped — see `NotificationScopeSchema` JSDoc above.\n */\nexport const NotificationBadgeSchema = z.discriminatedUnion('scope', [\n NotificationBadgeOrganizationSchema,\n NotificationBadgeUserSelfSchema,\n]);\n\nexport type NotificationBadgeDefinition = z.infer<typeof NotificationBadgeDefinitionSchema>;\nexport type NotificationBadgeIdentifier = z.infer<typeof NotificationBadgeIdentifierSchema>;\nexport type NotificationScope = z.infer<typeof NotificationScopeSchema>;\nexport type NotificationBadge = z.infer<typeof NotificationBadgeSchema>;\nexport type NotificationBadgeSource = z.infer<typeof NotificationBadgeSourceSchema>;\nexport type NotificationBadgeDerivedQuerySource = z.infer<typeof NotificationBadgeDerivedQuerySourceSchema>;\nexport type NotificationBadgeDisplay = z.infer<typeof NotificationBadgeDisplaySchema>;\n\n"]}
|
|
1
|
+
{"version":3,"file":"notification-badges.schemas.js","sourceRoot":"","sources":["../../../../src/notifications/notification-badges.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport { initZodDecorators } from '@wildo-ai/zod-decorators';\n\ninitZodDecorators(z);\n\nimport { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport { ResourcePrimaryScope } from \"../resources/resources.shared.schemas\";\n\n\n/**\n * The one character that separates the parts of a badge KEY and a badge REFERENCE.\n *\n * Both formats are positional, so the separator may not appear inside a part or the parse is\n * ambiguous. `NotificationBadgeIdentifierSchema` refuses it in an identifier for exactly that\n * reason, and `collectNotificationBadgeDeclarationViolations` re-states the refusal at boot,\n * because a declaration object is authored in TypeScript and never `.parse()`d.\n */\nexport const NOTIFICATION_BADGE_KEY_SEPARATOR = ':';\n\n/** Any string that does not contain {@link NOTIFICATION_BADGE_KEY_SEPARATOR}. */\nexport const NOTIFICATION_BADGE_IDENTIFIER_PATTERN = /^[^:]+$/;\n\n/**\n * Notification badge identifier.\n *\n * The identifier is an open string because no canonical (core) identifier ships: the two\n * aspirational placeholders (`new messages` / `unpaid invoices`) were removed because nothing\n * produced them.\n *\n * The SURFACING is not missing. A navigation item declares `notificationBadgeRef` and the sidebar\n * renders it, and an application declares its own badges, so the open string is what an application\n * uses today. What is still absent is a FRAMEWORK-shipped identifier with a framework producer\n * behind it; when one lands, core identifiers come back as a `CoreNotificationBadgeIdentifiers`\n * enum unioned in here.\n *\n * Open, but not unconstrained: an identifier may not contain\n * {@link NOTIFICATION_BADGE_KEY_SEPARATOR}, because it is the LAST part of a badge key and of a\n * badge reference and both are positional. A definition object is authored in TypeScript and never\n * `.parse()`d, so this constraint is also re-stated as a boot check — see\n * {@link collectNotificationBadgeDeclarationViolations}.\n */\nexport const NotificationBadgeIdentifierSchema = z\n .string()\n .min(1, { error: 'Notification badge identifier is required' })\n .regex(NOTIFICATION_BADGE_IDENTIFIER_PATTERN, {\n error: `Notification badge identifier must not contain \"${NOTIFICATION_BADGE_KEY_SEPARATOR}\" — that character separates the parts of a badge key and reference`,\n });\n\n/**\n * Notification badge scope. Tightened to USER_SELF | ORGANIZATIONS only.\n *\n * The APPLICATION variant was dropped in the polymorphism refactor\n * (`.cursor/plans/notification-badges-polymorphism-refactor.md`):\n * - No canonical badges were ever declared at APPLICATION scope (see\n * `notification-badges.core.definitions.ts`).\n * - The two surviving variants (USER + ORG) each own their own resource type\n * and MongoDB collection. Allowing APPLICATION here would let consumers\n * write a payload that no resource configuration / collection accepts.\n *\n * `WS_BadgeUpdatePayload` semantics are unchanged — the dispatcher in\n * `NotificationBadgeBackendService.emitBadgeUpdate` still routes USER badges to\n * `sendToUser` and ORG badges to `sendToOrganization`.\n */\nexport const NotificationScopeSchema = z.enum([\n ResourcePrimaryScope.USER_SELF,\n ResourcePrimaryScope.ORGANIZATIONS,\n]);\n\n/**\n * @wildo_source:part:start saas.models.notifications.badge-vocabularies facet:layer:shared facet:audience:app-developer\n *\n * The four vocabularies a badge definition picks from: how its count is CALCULATED, how it is\n * PRESENTED, whether it draws attention, and — for a stored counter — what an operation does to it.\n *\n * ⚠️ **Choosing the source kind wrongly produces a number that DRIFTS.** Reach for `EVENT_COUNTER`\n * only when the count is a fact the badge itself owns (\"unread messages\": arrive → increment, seen →\n * reset). For any quantity derived from data an operation could change by another route — incomplete\n * todos, unpaid invoices — use `DERIVED_QUERY`, which recomputes a live aggregate. A stored counter\n * on a derived quantity is right on the day it is written and wrong thereafter.\n *\n * An `EVENT_COUNTER` badge additionally needs `notificationBadgeOperations` declared on the\n * operations that move it; a `DERIVED_QUERY` badge needs none, because the recompute hangs off the\n * source resource's own mutations.\n */\nexport enum NotificationBadgeOperation {\n INCREMENT = 'increment',\n DECREMENT = 'decrement',\n SET = 'set',\n RESET = 'reset',\n}\n\n/**\n * How a badge's count is CALCULATED — the load-bearing distinction (R1).\n *\n * - `EVENT_COUNTER`: a stored counter mutated imperatively on domain events\n * (arrive → increment, seen → reset). Correct for \"unread messages\" style\n * badges. The count lives in the badge document.\n * - `DERIVED_QUERY`: the count is a LIVE aggregate over a resource collection\n * (`count(resourceType where filter, scoped)`), recomputed on that resource's\n * mutations. Correct for \"incomplete todos\" / \"unpaid invoices\" — quantities\n * derived from data that would DRIFT if tracked with a stored counter.\n */\nexport enum NotificationBadgeSourceKind {\n EVENT_COUNTER = 'event_counter',\n DERIVED_QUERY = 'derived_query',\n}\n\n/** How the badge is presented. `NONE` = suppressed even when the count is > 0. */\nexport enum NotificationBadgeDisplayMode {\n /** A colored signal dot (\"≥ 1\"), no number. */\n DOT = 'dot',\n /** The numeric count (truncated at the display cap). */\n COUNT = 'count',\n /** Rendered as nothing (count still computed/available). */\n NONE = 'none',\n}\n\n/**\n * WHETHER / WHEN a badge draws attention. The LOOK of the pulse is theme-owned\n * (`UIBehaviorRecipe.motion.attention`), so a definition only declares intent.\n */\nexport enum NotificationBadgePulse {\n NONE = 'none',\n /** Transitional — pulse briefly when the count rises (recommended). */\n ON_INCREASE = 'on_increase',\n /** Persistent — pulse while the count is > 0. */\n WHILE_ACTIVE = 'while_active',\n}\n/** @wildo_source:part:end saas.models.notifications.badge-vocabularies */\n\n/** EVENT_COUNTER source — no extra config; the stored counter is the truth. */\nexport const NotificationBadgeEventCounterSourceSchema = z.object({\n kind: z.literal(NotificationBadgeSourceKind.EVENT_COUNTER),\n});\n\n/**\n * DERIVED_QUERY source — the count is `count(resourceType where filter)` with the\n * scope bound via `scopeField` (the FK field on the counted resource that equals\n * the badge's `scopeId`, e.g. `userId` for a USER_SELF badge). Recomputed by the\n * backend on any mutation of `resourceType` (see backend R5).\n */\nexport const NotificationBadgeDerivedQuerySourceSchema = z.object({\n kind: z.literal(NotificationBadgeSourceKind.DERIVED_QUERY),\n resourceType: z.string().min(1, { error: 'Derived-badge resourceType is required' }),\n filter: z.record(z.string(), z.unknown()),\n scopeField: z.string().min(1, { error: 'Derived-badge scopeField is required' }),\n});\n\n/** Discriminated union over the calculation kinds. */\nexport const NotificationBadgeSourceSchema = z.discriminatedUnion('kind', [\n NotificationBadgeEventCounterSourceSchema,\n NotificationBadgeDerivedQuerySourceSchema,\n]);\n\n/**\n * Presentation declaration. `tone` reuses the design-system `IndicatorVariant`\n * (single source — the `Badge` component maps the same enum). `pulse` is a\n * trigger only; the theme owns the animation.\n */\nexport const NotificationBadgeDisplaySchema = z.object({\n mode: z.enum(NotificationBadgeDisplayMode).default(NotificationBadgeDisplayMode.COUNT),\n tone: z.enum(IndicatorVariant).default(IndicatorVariant.NEUTRAL),\n pulse: z.enum(NotificationBadgePulse).default(NotificationBadgePulse.NONE),\n});\n\n/**\n * Badge IDENTITY — the (identifier, scope) tuple shared by the declaration and\n * the persisted document. Kept separate so the stored badge doc does NOT absorb\n * declaration-only fields (`source` / `display`).\n */\nconst NotificationBadgeIdentitySchema = z.object({\n identifier: NotificationBadgeIdentifierSchema,\n scope: NotificationScopeSchema,\n});\n\n/**\n * Badge DEFINITION — the declaration app/framework authors register: identity +\n * how the count is calculated (`source`) + how it is presented (`display`).\n */\nexport const NotificationBadgeDefinitionSchema = NotificationBadgeIdentitySchema.extend({\n source: NotificationBadgeSourceSchema,\n display: NotificationBadgeDisplaySchema,\n});\n\nconst NotificationBadgeBaseSchema = NotificationBadgeIdentitySchema.extend({\n // A compact badge without its application-defined identifier is not interpretable: callers\n // could see a number but not what the number counts. Override the identity field here (rather\n // than decorating NotificationBadgeIdentitySchema) so persisted API rows gain summary metadata\n // while application-authored badge definitions remain a plain declaration schema.\n identifier: NotificationBadgeIdentifierSchema.isSummaryField(),\n // `isPrimaryKey` (composite: excludeFromCreate + isHidden + isUnique + isDBIndexed) —\n // the server generates `_id`, so it must NOT be required on the create DTO. Using bare\n // `.isDBIndexed()` here left `_id` create-required, which failed the dispatcher-driven\n // badge materialization (`buildNewBadge` supplies no `_id`).\n _id: z.string().min(1, { error: 'Notification badge ID is required' }).isPrimaryKey(),\n count: z.number().min(0, { error: 'Notification badge count must be greater than or equal to 0' }).isSummaryField(),\n createdAt: z.date().default(() => new Date()).isDBIndexed(),\n updatedAt: z.date().default(() => new Date()).isDBIndexed().isSummaryField(),\n});\n\nexport const NotificationBadgeOrganizationSchema = NotificationBadgeBaseSchema.extend({\n scope: z.literal(ResourcePrimaryScope.ORGANIZATIONS),\n organizationId: z.string().min(1, { error: 'Organization ID is required' }).isDBIndexed().isForeignKey(),\n});\n\nexport const NotificationBadgeUserSelfSchema = NotificationBadgeBaseSchema.extend({\n scope: z.literal(ResourcePrimaryScope.USER_SELF),\n userId: z.string().min(1, { error: 'User ID is required' }).isDBIndexed().isForeignKey(),\n});\n\n/**\n * Discriminated union over the two surviving badge scopes (USER_SELF / ORGANIZATIONS).\n * The APPLICATION variant was dropped — see `NotificationScopeSchema` JSDoc above.\n */\nexport const NotificationBadgeSchema = z.discriminatedUnion('scope', [\n NotificationBadgeOrganizationSchema,\n NotificationBadgeUserSelfSchema,\n]);\n\nexport type NotificationBadgeDefinition = z.infer<typeof NotificationBadgeDefinitionSchema>;\nexport type NotificationBadgeIdentifier = z.infer<typeof NotificationBadgeIdentifierSchema>;\nexport type NotificationScope = z.infer<typeof NotificationScopeSchema>;\nexport type NotificationBadge = z.infer<typeof NotificationBadgeSchema>;\nexport type NotificationBadgeSource = z.infer<typeof NotificationBadgeSourceSchema>;\nexport type NotificationBadgeDerivedQuerySource = z.infer<typeof NotificationBadgeDerivedQuerySourceSchema>;\nexport type NotificationBadgeDisplay = z.infer<typeof NotificationBadgeDisplaySchema>;\n\n\n// ════════════════════════════════════════════════════════════════\n// Badge IDENTITY — the one place the key and reference formats live\n// ════════════════════════════════════════════════════════════════\n\n/**\n * A badge KEY: `<scope>:<identifier>` — the DEFINITION's identity, and the only thing that may be\n * used to look a definition up.\n *\n * ## Why the identifier alone is not an identity\n *\n * A definition is `(scope, identifier)`. Nothing ever stopped two definitions declaring the same\n * `identifier` at different scopes, and until this type existed every lookup matched on the\n * identifier alone — so the second definition was unreachable and silently shared the first's\n * count. The key makes both reachable and makes the collision that DOES matter (two definitions at\n * one scope and identifier) something a boot check can refuse.\n *\n * ## Why `scopeId` is NOT in the key\n *\n * `scopeId` says WHOSE badge — a user id, an organization id. It is per-viewer instance data that a\n * navigation declaration cannot possibly carry, and a browser session only ever receives pushes for\n * its own scope ids (the backend routes USER badges to that user's socket and ORG badges to that\n * organization's room). So the key is what a DECLARATION can name, and the reference below is what\n * an INSTANCE is addressed by.\n */\nexport type NotificationBadgeKey = string;\n\n/**\n * A badge REFERENCE: `<scope>:<scopeId>:<identifier>` — one badge ROW, on the wire.\n *\n * Carried by `WS_BadgeUpdatePayload.badgeReference` because emission needs the scopeId to route.\n * The browser reduces it to a {@link NotificationBadgeKey} on arrival via\n * {@link notificationBadgeKeyFromReference}, which is what makes the store's key and the navigation\n * item's lookup the same key rather than two conventions that agree by luck.\n */\nexport type NotificationBadgeReference = string;\n\n/** Build the DEFINITION-identity key from its parts. */\nexport function buildNotificationBadgeKey(\n scope: NotificationScope,\n identifier: NotificationBadgeIdentifier,\n): NotificationBadgeKey {\n return `${scope}${NOTIFICATION_BADGE_KEY_SEPARATOR}${identifier}`;\n}\n\n/**\n * The key of a definition (or of anything else carrying a badge identity, such as a persisted row).\n *\n * Takes the identity fields rather than the whole definition so a `NotificationBadge` row and a\n * `NotificationBadgeDefinition` resolve through the SAME function — a second copy for the row shape\n * is how the two come to disagree.\n */\nexport function notificationBadgeIdentityKey(\n identity: Pick<NotificationBadgeDefinition, 'scope' | 'identifier'>,\n): NotificationBadgeKey {\n return buildNotificationBadgeKey(identity.scope, identity.identifier);\n}\n\n/**\n * Parse a key, returning `null` when it is not a well-formed key at a SUPPORTED scope.\n *\n * The scope check is not cosmetic: the APPLICATION variant was dropped in the polymorphism refactor\n * and no resource type backs it, so `application:foo` must fail here rather than reach a dispatch\n * that has no repository for it.\n */\nexport function parseNotificationBadgeKey(\n key: string,\n): { scope: NotificationScope; identifier: NotificationBadgeIdentifier } | null {\n const parts = key.split(NOTIFICATION_BADGE_KEY_SEPARATOR);\n if (parts.length !== 2) return null;\n const [scope, identifier] = parts;\n if (!isSupportedNotificationBadgeScope(scope) || identifier.length === 0) return null;\n return { scope, identifier };\n}\n\n/** Build the INSTANCE address carried on the wire. */\nexport function buildNotificationBadgeReference(\n scope: NotificationScope,\n scopeId: string,\n identifier: NotificationBadgeIdentifier,\n): NotificationBadgeReference {\n return `${scope}${NOTIFICATION_BADGE_KEY_SEPARATOR}${scopeId}${NOTIFICATION_BADGE_KEY_SEPARATOR}${identifier}`;\n}\n\n/** Parse a wire reference, returning `null` for a malformed one or an unsupported scope. */\nexport function parseNotificationBadgeReference(\n reference: string,\n): { scope: NotificationScope; scopeId: string; identifier: NotificationBadgeIdentifier } | null {\n const parts = reference.split(NOTIFICATION_BADGE_KEY_SEPARATOR);\n if (parts.length !== 3) return null;\n const [scope, scopeId, identifier] = parts;\n if (!isSupportedNotificationBadgeScope(scope) || scopeId.length === 0 || identifier.length === 0) return null;\n return { scope, scopeId, identifier };\n}\n\n/**\n * Reduce a wire reference to the DEFINITION key it addresses — the one hop the browser badge store\n * takes, so that what it keys on is what a navigation item resolves against.\n */\nexport function notificationBadgeKeyFromReference(reference: string): NotificationBadgeKey | null {\n const parsed = parseNotificationBadgeReference(reference);\n return parsed ? buildNotificationBadgeKey(parsed.scope, parsed.identifier) : null;\n}\n\n/** Whether a raw string names one of the two surviving badge scopes. */\nexport function isSupportedNotificationBadgeScope(scope: string): scope is NotificationScope {\n return scope === ResourcePrimaryScope.USER_SELF || scope === ResourcePrimaryScope.ORGANIZATIONS;\n}\n\n// ════════════════════════════════════════════════════════════════\n// Declaration coherence — checked at CONFIGURATION time\n// ════════════════════════════════════════════════════════════════\n\n/**\n * Why a badge declaration is refused. A closed vocabulary with a named runtime source, so a\n * diagnostic can be branched on and each member can carry its own explanation.\n */\nexport enum NotificationBadgeDeclarationViolationReason {\n /**\n * Two definitions declare the same `(scope, identifier)`. Every lookup resolves the FIRST, so\n * the second is unreachable while silently sharing the first's count — the shape that made\n * identifier-only lookup unsafe in the first place. Two definitions at DIFFERENT scopes are\n * fine and are exactly what the key makes reachable.\n */\n DUPLICATE_DEFINITION_KEY = 'duplicate_definition_key',\n /**\n * An identifier contains the key separator, which would make its key and every reference built\n * from it parse into the wrong parts. Refused rather than escaped: a positional format with an\n * escaping rule is a format two implementations will eventually disagree about.\n */\n IDENTIFIER_CONTAINS_KEY_SEPARATOR = 'identifier_contains_key_separator',\n /** An operation declares a `badgeRef` that names no registered definition. */\n OPERATION_REF_UNRESOLVED = 'operation_ref_unresolved',\n}\n\n/** One refused declaration, carrying enough to name the author's own file without re-deriving it. */\nexport interface NotificationBadgeDeclarationViolation {\n reason: NotificationBadgeDeclarationViolationReason;\n /** The badge key at issue — the definition's, or the unresolved `badgeRef` as authored. */\n badgeKey: string;\n /** Present when the violation belongs to a definition rather than to an operation declaration. */\n identifier?: NotificationBadgeIdentifier;\n /** Present when the violation belongs to an operation declaration. */\n resourceType?: string;\n /** Present when the violation belongs to an operation declaration. */\n operationIdentifier?: string;\n}\n\n/** Where an operation declared a badge reference — one row per authored `notificationBadgeOperations` entry. */\nexport interface NotificationBadgeOperationDeclarationSite {\n resourceType: string;\n operationIdentifier: string;\n badgeRef: string;\n}\n\n/**\n * The whole declaration-coherence check, as a pure function over what an application declared.\n *\n * Pure and shared on purpose: the backend registry runs it as a fail-closed boot gate and the\n * frontend launcher verifier reports it in development, and a second implementation is how the two\n * come to disagree about what a valid declaration is.\n *\n * It answers the question `derive-before-you-ask.md` asks — who owes this, and what says so. The\n * population is exactly the registered definitions plus every authored\n * `notificationBadgeOperations` entry; nothing is inferred and nothing is sampled.\n */\nexport function collectNotificationBadgeDeclarationViolations(\n definitions: readonly NotificationBadgeDefinition[],\n operationSites: readonly NotificationBadgeOperationDeclarationSite[] = [],\n): NotificationBadgeDeclarationViolation[] {\n const violations: NotificationBadgeDeclarationViolation[] = [];\n const seenKeys = new Set<NotificationBadgeKey>();\n\n for (const definition of definitions) {\n if (!NOTIFICATION_BADGE_IDENTIFIER_PATTERN.test(definition.identifier)) {\n violations.push({\n reason: NotificationBadgeDeclarationViolationReason.IDENTIFIER_CONTAINS_KEY_SEPARATOR,\n badgeKey: notificationBadgeIdentityKey(definition),\n identifier: definition.identifier,\n });\n // Still recorded below, so a malformed identifier declared twice is reported as both.\n }\n\n const key = notificationBadgeIdentityKey(definition);\n if (seenKeys.has(key)) {\n violations.push({\n reason: NotificationBadgeDeclarationViolationReason.DUPLICATE_DEFINITION_KEY,\n badgeKey: key,\n identifier: definition.identifier,\n });\n continue;\n }\n seenKeys.add(key);\n }\n\n for (const site of operationSites) {\n if (!seenKeys.has(site.badgeRef)) {\n violations.push({\n reason: NotificationBadgeDeclarationViolationReason.OPERATION_REF_UNRESOLVED,\n badgeKey: site.badgeRef,\n resourceType: site.resourceType,\n operationIdentifier: site.operationIdentifier,\n });\n }\n }\n\n return violations;\n}\n\n/**\n * Index the registered definitions by key, so a dispatch resolves in one lookup rather than a scan.\n *\n * Built from the SAME key function the boot check uses, so a definition the boot check accepted is\n * a definition this map can serve.\n */\nexport function buildNotificationBadgeDefinitionIndex(\n definitions: readonly NotificationBadgeDefinition[],\n): ReadonlyMap<NotificationBadgeKey, NotificationBadgeDefinition> {\n const index = new Map<NotificationBadgeKey, NotificationBadgeDefinition>();\n for (const definition of definitions) {\n const key = notificationBadgeIdentityKey(definition);\n if (!index.has(key)) index.set(key, definition);\n }\n return index;\n}\n"]}
|
|
@@ -32,6 +32,47 @@ export declare enum CoreUserNotificationTarget {
|
|
|
32
32
|
USERS_CUSTOM = "users_custom",
|
|
33
33
|
INBOUND_CONTACT = "inbound_contact"
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Whether a notification aimed at this target may be SUPPRESSED by the recipient's own channel
|
|
37
|
+
* preference (`UserPreferences.notifications.email` / `.sms` / `.push` / `.inApp`).
|
|
38
|
+
*
|
|
39
|
+
* DERIVED from the target rather than declared per notification, because the target already carries
|
|
40
|
+
* the distinction and a second field would be one more thing to get wrong on 87 declarations.
|
|
41
|
+
*
|
|
42
|
+
* `USER_SELF` and `USERS_CUSTOM` reach a PERSON about their own affairs — those are the messages a
|
|
43
|
+
* person is choosing about when they turn a channel off, and honouring that choice is the whole
|
|
44
|
+
* point of the switch existing (#409).
|
|
45
|
+
*
|
|
46
|
+
* Every other target reaches somebody because of a ROLE they hold: an application administrator, an
|
|
47
|
+
* organization's security or billing contact. A personal channel preference must not silently
|
|
48
|
+
* disable a tenant's or an application's administrative monitoring — the recipient did not choose to
|
|
49
|
+
* receive those as a person and cannot switch them off as one. A tenant that wants role mail
|
|
50
|
+
* elsewhere routes it, which is what the organization notification-settings record is for.
|
|
51
|
+
*
|
|
52
|
+
* Nothing here reaches account RECOVERY. Password reset, magic link and email verification are sent
|
|
53
|
+
* directly through the email service and never pass through the notification dispatcher, so no
|
|
54
|
+
* channel preference can lock a person out of their own account. That measurement is what made
|
|
55
|
+
* suppression safe to implement at all.
|
|
56
|
+
*/
|
|
57
|
+
export declare function userNotificationTargetIsSuppressibleByRecipientPreference(target: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* The targets on which `userRoles` MEANS anything (#495).
|
|
60
|
+
*
|
|
61
|
+
* `userRoles` is not a recipient FILTER, which is how its name reads and how it has been authored. It
|
|
62
|
+
* is the role-SELECTION override for the eleven role-scoped targets: `mapOrganizationTargetToRoles`
|
|
63
|
+
* and `mapApplicationTargetToRoles` take it in place of their per-target default, and nothing else
|
|
64
|
+
* anywhere reads it.
|
|
65
|
+
*
|
|
66
|
+
* On every other target it is inert, and inert in three different ways that all looked the same to an
|
|
67
|
+
* author: `USER_SELF` addresses the initiator, `USERS_CUSTOM` goes straight to `userIdsSelector`, and
|
|
68
|
+
* `ORGANIZATION`/`ORGANIZATION_USERS` mean everyone in the tenant by definition. Declaring it there
|
|
69
|
+
* is a filter that silently does nothing, which is what the refinement below now refuses.
|
|
70
|
+
*
|
|
71
|
+
* Scoped as a POSITIVE list of targets that read it rather than a rule about one target, because the
|
|
72
|
+
* defect was never specific to `USERS_CUSTOM` — refusing it there alone would leave the other three
|
|
73
|
+
* free to mislead the next author in exactly the same way.
|
|
74
|
+
*/
|
|
75
|
+
export declare function userNotificationTargetReadsUserRoles(target: string): boolean;
|
|
35
76
|
export declare const UserNotificationTargetSchema: z.ZodUnion<readonly [z.ZodEnum<typeof CoreUserNotificationTarget>, z.ZodString]>;
|
|
36
77
|
/**
|
|
37
78
|
* How the frontend renders a celebration after a successful operation.
|
|
@@ -73,6 +114,58 @@ export declare const FrontendDisplayHintsSchema: z.ZodObject<{
|
|
|
73
114
|
}, z.core.$strip>;
|
|
74
115
|
export type FrontendDisplayHints = z.infer<typeof FrontendDisplayHintsSchema>;
|
|
75
116
|
/**
|
|
117
|
+
* @wildo_source:part:start saas.models.notifications.user-notification-definition facet:layer:shared facet:audience:app-developer
|
|
118
|
+
*
|
|
119
|
+
* One notification an operation sends. Declared as `userNotifications` on a resource operation, in
|
|
120
|
+
* the resource config — an array, so one operation may send several.
|
|
121
|
+
*
|
|
122
|
+
* ```ts
|
|
123
|
+
* userNotifications: [
|
|
124
|
+
* { target: CoreUserNotificationTarget.USER_SELF, channel: CoreUserNotificationChannel.EMAIL,
|
|
125
|
+
* condition: ({ currentObject }) => currentObject.status === 'INVITED' },
|
|
126
|
+
* { target: CoreUserNotificationTarget.ORGANIZATION_USERS, channel: CoreUserNotificationChannel.WEBSOCKET },
|
|
127
|
+
* ]
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* ## What actually sends
|
|
131
|
+
*
|
|
132
|
+
* `EMAIL`, `WEBSOCKET` and `FRONT_END_SUCCESS` deliver. **`SMS` and `PUSH` are declaration vocabulary
|
|
133
|
+
* only** — the dispatcher's branch for them logs and returns without sending. The framework does have
|
|
134
|
+
* an SMS transport (authentication's one-time codes use it) and this dispatcher is not wired to it,
|
|
135
|
+
* so declaring an SMS notification is inert rather than pending.
|
|
136
|
+
*
|
|
137
|
+
* For an EMAIL, create the template directory the reference names. The startup validator resolves
|
|
138
|
+
* every declared reference through the configured locale chain before the application takes traffic,
|
|
139
|
+
* and prints the exact directory to create when one is missing.
|
|
140
|
+
*
|
|
141
|
+
* ## The recipient's preferences are honoured, and three things override them
|
|
142
|
+
*
|
|
143
|
+
* A recipient who has switched a channel off does not receive it. Three deliberate exceptions:
|
|
144
|
+
*
|
|
145
|
+
* - a ROLE-addressed target — the recipient did not choose to receive it as a person;
|
|
146
|
+
* - `alwaysDeliver: true` — declare it on a security notice a compromised account's owner must still
|
|
147
|
+
* receive;
|
|
148
|
+
* - a recipient with NO preferences row at all, because preferences are created lazily and a missing
|
|
149
|
+
* record must never read as "everything off".
|
|
150
|
+
*
|
|
151
|
+
* The `inApp` switch governs the notification CENTRE on the frontend rather than the socket frame —
|
|
152
|
+
* suppressing the frame would also suppress the live UI updates that ride the same channel.
|
|
153
|
+
*
|
|
154
|
+
* ## `condition` gates the notification, not the operation
|
|
155
|
+
*
|
|
156
|
+
* The predicate goes on the notification. It decides only whether this one message is sent; refusing
|
|
157
|
+
* the CALL is a separate declaration on the operation variant, and the two are independent — a
|
|
158
|
+
* variant can be enabled while its notification is gated off, and the reverse. The form deliberately
|
|
159
|
+
* matches an operation variant's `enabledCondition` so both read the same way.
|
|
160
|
+
*
|
|
161
|
+
* ## Emailing somebody who is not a user
|
|
162
|
+
*
|
|
163
|
+
* `recipientEmailField` names a TOP-LEVEL field on the record holding the address. There is no
|
|
164
|
+
* recipient, so there are no recipient preferences and no recipient language: the message goes out in
|
|
165
|
+
* the application's default locale. A nested address cannot be named, nor a list — the path sends
|
|
166
|
+
* exactly one message per notification. Pair it with a `condition` when the same operation also
|
|
167
|
+
* serves rows whose address belongs to somebody who must not be written to.
|
|
168
|
+
*
|
|
76
169
|
* Base fields shared by all user notification channel variants.
|
|
77
170
|
*/
|
|
78
171
|
export declare const UserNotificationDefinition_BaseSchema: z.ZodObject<{
|
|
@@ -132,6 +225,7 @@ export declare const UserNotificationDefinition_BaseSchema: z.ZodObject<{
|
|
|
132
225
|
};
|
|
133
226
|
}) => boolean>>;
|
|
134
227
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
228
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
135
229
|
}, z.core.$strip>;
|
|
136
230
|
/** EMAIL channel — template-oriented (email-specific fields handled by email templates) */
|
|
137
231
|
export declare const UserNotificationDefinition_EmailSchema: z.ZodObject<{
|
|
@@ -191,6 +285,7 @@ export declare const UserNotificationDefinition_EmailSchema: z.ZodObject<{
|
|
|
191
285
|
};
|
|
192
286
|
}) => boolean>>;
|
|
193
287
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
288
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
194
289
|
channel: z.ZodLiteral<CoreUserNotificationChannel.EMAIL>;
|
|
195
290
|
recipientEmailField: z.ZodOptional<z.ZodString>;
|
|
196
291
|
}, z.core.$strip>;
|
|
@@ -252,6 +347,7 @@ export declare const UserNotificationDefinition_WebSocketSchema: z.ZodObject<{
|
|
|
252
347
|
};
|
|
253
348
|
}) => boolean>>;
|
|
254
349
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
350
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
255
351
|
channel: z.ZodLiteral<CoreUserNotificationChannel.WEBSOCKET>;
|
|
256
352
|
}, z.core.$strip>;
|
|
257
353
|
/**
|
|
@@ -329,6 +425,7 @@ export declare const UserNotificationDefinition_FrontEndSuccessSchema: z.ZodObje
|
|
|
329
425
|
};
|
|
330
426
|
}) => boolean>>;
|
|
331
427
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
428
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
332
429
|
channel: z.ZodLiteral<CoreUserNotificationChannel.FRONT_END_SUCCESS>;
|
|
333
430
|
celebration: z.ZodOptional<z.ZodObject<{
|
|
334
431
|
mode: z.ZodDefault<z.ZodEnum<typeof CelebrationDisplayMode>>;
|
|
@@ -396,6 +493,7 @@ export declare const UserNotificationDefinition_SMSSchema: z.ZodObject<{
|
|
|
396
493
|
};
|
|
397
494
|
}) => boolean>>;
|
|
398
495
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
496
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
399
497
|
channel: z.ZodLiteral<CoreUserNotificationChannel.SMS>;
|
|
400
498
|
}, z.core.$strip>;
|
|
401
499
|
/** PUSH channel — not yet implemented, plain base */
|
|
@@ -456,6 +554,7 @@ export declare const UserNotificationDefinition_PushSchema: z.ZodObject<{
|
|
|
456
554
|
};
|
|
457
555
|
}) => boolean>>;
|
|
458
556
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
557
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
459
558
|
channel: z.ZodLiteral<CoreUserNotificationChannel.PUSH>;
|
|
460
559
|
}, z.core.$strip>;
|
|
461
560
|
/** Catch-all for custom channels (any string not matching core channels) */
|
|
@@ -516,6 +615,7 @@ export declare const UserNotificationDefinition_CustomChannelSchema: z.ZodObject
|
|
|
516
615
|
};
|
|
517
616
|
}) => boolean>>;
|
|
518
617
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
618
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
519
619
|
channel: z.ZodString;
|
|
520
620
|
}, z.core.$strip>;
|
|
521
621
|
/**
|
|
@@ -581,6 +681,7 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
581
681
|
};
|
|
582
682
|
}) => boolean>>;
|
|
583
683
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
684
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
584
685
|
channel: z.ZodLiteral<CoreUserNotificationChannel.EMAIL>;
|
|
585
686
|
recipientEmailField: z.ZodOptional<z.ZodString>;
|
|
586
687
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -640,6 +741,7 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
640
741
|
};
|
|
641
742
|
}) => boolean>>;
|
|
642
743
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
744
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
643
745
|
channel: z.ZodLiteral<CoreUserNotificationChannel.WEBSOCKET>;
|
|
644
746
|
}, z.core.$strip>, z.ZodObject<{
|
|
645
747
|
identifier: z.ZodString;
|
|
@@ -698,6 +800,7 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
698
800
|
};
|
|
699
801
|
}) => boolean>>;
|
|
700
802
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
803
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
701
804
|
channel: z.ZodLiteral<CoreUserNotificationChannel.FRONT_END_SUCCESS>;
|
|
702
805
|
celebration: z.ZodOptional<z.ZodObject<{
|
|
703
806
|
mode: z.ZodDefault<z.ZodEnum<typeof CelebrationDisplayMode>>;
|
|
@@ -763,6 +866,7 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
763
866
|
};
|
|
764
867
|
}) => boolean>>;
|
|
765
868
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
869
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
766
870
|
channel: z.ZodLiteral<CoreUserNotificationChannel.SMS>;
|
|
767
871
|
}, z.core.$strip>, z.ZodObject<{
|
|
768
872
|
identifier: z.ZodString;
|
|
@@ -821,6 +925,7 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
821
925
|
};
|
|
822
926
|
}) => boolean>>;
|
|
823
927
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
928
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
824
929
|
channel: z.ZodLiteral<CoreUserNotificationChannel.PUSH>;
|
|
825
930
|
}, z.core.$strip>, z.ZodObject<{
|
|
826
931
|
identifier: z.ZodString;
|
|
@@ -879,9 +984,11 @@ export declare const UserNotificationDefinitionSchema: z.ZodUnion<readonly [z.Zo
|
|
|
879
984
|
};
|
|
880
985
|
}) => boolean>>;
|
|
881
986
|
customNotificationRef: z.ZodOptional<z.ZodString>;
|
|
987
|
+
alwaysDeliver: z.ZodOptional<z.ZodBoolean>;
|
|
882
988
|
channel: z.ZodString;
|
|
883
989
|
}, z.core.$strip>]>;
|
|
884
990
|
export type UserNotificationDefinition = z.infer<typeof UserNotificationDefinitionSchema>;
|
|
991
|
+
/** @wildo_source:part:end saas.models.notifications.user-notification-definition */
|
|
885
992
|
/**
|
|
886
993
|
* M2M Notification Channels
|
|
887
994
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../src/notifications/notifications.shared.schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"notifications.shared.schemas.d.ts","sourceRoot":"","sources":["../../../../src/notifications/notifications.shared.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,62 @@ export var CoreUserNotificationTarget;
|
|
|
38
38
|
CoreUserNotificationTarget["USERS_CUSTOM"] = "users_custom";
|
|
39
39
|
CoreUserNotificationTarget["INBOUND_CONTACT"] = "inbound_contact";
|
|
40
40
|
})(CoreUserNotificationTarget || (CoreUserNotificationTarget = {}));
|
|
41
|
+
/**
|
|
42
|
+
* Whether a notification aimed at this target may be SUPPRESSED by the recipient's own channel
|
|
43
|
+
* preference (`UserPreferences.notifications.email` / `.sms` / `.push` / `.inApp`).
|
|
44
|
+
*
|
|
45
|
+
* DERIVED from the target rather than declared per notification, because the target already carries
|
|
46
|
+
* the distinction and a second field would be one more thing to get wrong on 87 declarations.
|
|
47
|
+
*
|
|
48
|
+
* `USER_SELF` and `USERS_CUSTOM` reach a PERSON about their own affairs — those are the messages a
|
|
49
|
+
* person is choosing about when they turn a channel off, and honouring that choice is the whole
|
|
50
|
+
* point of the switch existing (#409).
|
|
51
|
+
*
|
|
52
|
+
* Every other target reaches somebody because of a ROLE they hold: an application administrator, an
|
|
53
|
+
* organization's security or billing contact. A personal channel preference must not silently
|
|
54
|
+
* disable a tenant's or an application's administrative monitoring — the recipient did not choose to
|
|
55
|
+
* receive those as a person and cannot switch them off as one. A tenant that wants role mail
|
|
56
|
+
* elsewhere routes it, which is what the organization notification-settings record is for.
|
|
57
|
+
*
|
|
58
|
+
* Nothing here reaches account RECOVERY. Password reset, magic link and email verification are sent
|
|
59
|
+
* directly through the email service and never pass through the notification dispatcher, so no
|
|
60
|
+
* channel preference can lock a person out of their own account. That measurement is what made
|
|
61
|
+
* suppression safe to implement at all.
|
|
62
|
+
*/
|
|
63
|
+
export function userNotificationTargetIsSuppressibleByRecipientPreference(target) {
|
|
64
|
+
return target === CoreUserNotificationTarget.USER_SELF
|
|
65
|
+
|| target === CoreUserNotificationTarget.USERS_CUSTOM;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The targets on which `userRoles` MEANS anything (#495).
|
|
69
|
+
*
|
|
70
|
+
* `userRoles` is not a recipient FILTER, which is how its name reads and how it has been authored. It
|
|
71
|
+
* is the role-SELECTION override for the eleven role-scoped targets: `mapOrganizationTargetToRoles`
|
|
72
|
+
* and `mapApplicationTargetToRoles` take it in place of their per-target default, and nothing else
|
|
73
|
+
* anywhere reads it.
|
|
74
|
+
*
|
|
75
|
+
* On every other target it is inert, and inert in three different ways that all looked the same to an
|
|
76
|
+
* author: `USER_SELF` addresses the initiator, `USERS_CUSTOM` goes straight to `userIdsSelector`, and
|
|
77
|
+
* `ORGANIZATION`/`ORGANIZATION_USERS` mean everyone in the tenant by definition. Declaring it there
|
|
78
|
+
* is a filter that silently does nothing, which is what the refinement below now refuses.
|
|
79
|
+
*
|
|
80
|
+
* Scoped as a POSITIVE list of targets that read it rather than a rule about one target, because the
|
|
81
|
+
* defect was never specific to `USERS_CUSTOM` — refusing it there alone would leave the other three
|
|
82
|
+
* free to mislead the next author in exactly the same way.
|
|
83
|
+
*/
|
|
84
|
+
export function userNotificationTargetReadsUserRoles(target) {
|
|
85
|
+
return target === CoreUserNotificationTarget.ORGANIZATION_BILLING
|
|
86
|
+
|| target === CoreUserNotificationTarget.ORGANIZATION_USER_MANAGEMENT
|
|
87
|
+
|| target === CoreUserNotificationTarget.ORGANIZATION_ADMINISTRATIVE
|
|
88
|
+
|| target === CoreUserNotificationTarget.ORGANIZATION_SECURITY
|
|
89
|
+
|| target === CoreUserNotificationTarget.APPLICATION_ADMINISTRATOR
|
|
90
|
+
|| target === CoreUserNotificationTarget.APPLICATION_BILLING
|
|
91
|
+
|| target === CoreUserNotificationTarget.APPLICATION_USER_MANAGEMENT
|
|
92
|
+
|| target === CoreUserNotificationTarget.APPLICATION_SECURITY
|
|
93
|
+
|| target === CoreUserNotificationTarget.APPLICATION_SUPPORT
|
|
94
|
+
|| target === CoreUserNotificationTarget.APPLICATION_OTHER
|
|
95
|
+
|| target === CoreUserNotificationTarget.APPLICATION_ADMIN_VIEWER;
|
|
96
|
+
}
|
|
41
97
|
export const UserNotificationTargetSchema = z.union([
|
|
42
98
|
z.enum(CoreUserNotificationTarget),
|
|
43
99
|
z.string().min(1)
|
|
@@ -86,6 +142,58 @@ export const FrontendDisplayHintsSchema = z.object({
|
|
|
86
142
|
// UserNotificationDefinition — Discriminated Union on `channel`
|
|
87
143
|
// =====================================================
|
|
88
144
|
/**
|
|
145
|
+
* @wildo_source:part:start saas.models.notifications.user-notification-definition facet:layer:shared facet:audience:app-developer
|
|
146
|
+
*
|
|
147
|
+
* One notification an operation sends. Declared as `userNotifications` on a resource operation, in
|
|
148
|
+
* the resource config — an array, so one operation may send several.
|
|
149
|
+
*
|
|
150
|
+
* ```ts
|
|
151
|
+
* userNotifications: [
|
|
152
|
+
* { target: CoreUserNotificationTarget.USER_SELF, channel: CoreUserNotificationChannel.EMAIL,
|
|
153
|
+
* condition: ({ currentObject }) => currentObject.status === 'INVITED' },
|
|
154
|
+
* { target: CoreUserNotificationTarget.ORGANIZATION_USERS, channel: CoreUserNotificationChannel.WEBSOCKET },
|
|
155
|
+
* ]
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* ## What actually sends
|
|
159
|
+
*
|
|
160
|
+
* `EMAIL`, `WEBSOCKET` and `FRONT_END_SUCCESS` deliver. **`SMS` and `PUSH` are declaration vocabulary
|
|
161
|
+
* only** — the dispatcher's branch for them logs and returns without sending. The framework does have
|
|
162
|
+
* an SMS transport (authentication's one-time codes use it) and this dispatcher is not wired to it,
|
|
163
|
+
* so declaring an SMS notification is inert rather than pending.
|
|
164
|
+
*
|
|
165
|
+
* For an EMAIL, create the template directory the reference names. The startup validator resolves
|
|
166
|
+
* every declared reference through the configured locale chain before the application takes traffic,
|
|
167
|
+
* and prints the exact directory to create when one is missing.
|
|
168
|
+
*
|
|
169
|
+
* ## The recipient's preferences are honoured, and three things override them
|
|
170
|
+
*
|
|
171
|
+
* A recipient who has switched a channel off does not receive it. Three deliberate exceptions:
|
|
172
|
+
*
|
|
173
|
+
* - a ROLE-addressed target — the recipient did not choose to receive it as a person;
|
|
174
|
+
* - `alwaysDeliver: true` — declare it on a security notice a compromised account's owner must still
|
|
175
|
+
* receive;
|
|
176
|
+
* - a recipient with NO preferences row at all, because preferences are created lazily and a missing
|
|
177
|
+
* record must never read as "everything off".
|
|
178
|
+
*
|
|
179
|
+
* The `inApp` switch governs the notification CENTRE on the frontend rather than the socket frame —
|
|
180
|
+
* suppressing the frame would also suppress the live UI updates that ride the same channel.
|
|
181
|
+
*
|
|
182
|
+
* ## `condition` gates the notification, not the operation
|
|
183
|
+
*
|
|
184
|
+
* The predicate goes on the notification. It decides only whether this one message is sent; refusing
|
|
185
|
+
* the CALL is a separate declaration on the operation variant, and the two are independent — a
|
|
186
|
+
* variant can be enabled while its notification is gated off, and the reverse. The form deliberately
|
|
187
|
+
* matches an operation variant's `enabledCondition` so both read the same way.
|
|
188
|
+
*
|
|
189
|
+
* ## Emailing somebody who is not a user
|
|
190
|
+
*
|
|
191
|
+
* `recipientEmailField` names a TOP-LEVEL field on the record holding the address. There is no
|
|
192
|
+
* recipient, so there are no recipient preferences and no recipient language: the message goes out in
|
|
193
|
+
* the application's default locale. A nested address cannot be named, nor a list — the path sends
|
|
194
|
+
* exactly one message per notification. Pair it with a `condition` when the same operation also
|
|
195
|
+
* serves rows whose address belongs to somebody who must not be written to.
|
|
196
|
+
*
|
|
89
197
|
* Base fields shared by all user notification channel variants.
|
|
90
198
|
*/
|
|
91
199
|
export const UserNotificationDefinition_BaseSchema = z.object({
|
|
@@ -93,6 +201,10 @@ export const UserNotificationDefinition_BaseSchema = z.object({
|
|
|
93
201
|
target: z.string(),
|
|
94
202
|
level: z.enum(UserNotificationLevel).optional(),
|
|
95
203
|
primaryScope: z.enum(ResourcePrimaryScope),
|
|
204
|
+
/**
|
|
205
|
+
* Role-SELECTION override for a role-scoped target — NOT a recipient filter. See
|
|
206
|
+
* {@link userNotificationTargetReadsUserRoles}, which is also what refuses it elsewhere.
|
|
207
|
+
*/
|
|
96
208
|
userRoles: z.array(z.string()).optional(),
|
|
97
209
|
userIdsSelector: z.custom((val) => typeof val === 'function').optional(),
|
|
98
210
|
/**
|
|
@@ -128,6 +240,23 @@ export const UserNotificationDefinition_BaseSchema = z.object({
|
|
|
128
240
|
* Will be appended to auto-generated identifier for notification/template lookup.
|
|
129
241
|
*/
|
|
130
242
|
customNotificationRef: z.string().min(1).optional(),
|
|
243
|
+
/**
|
|
244
|
+
* Deliver this notification even when the recipient has switched its channel OFF.
|
|
245
|
+
*
|
|
246
|
+
* Only meaningful on a target that is suppressible in the first place — `USER_SELF` and
|
|
247
|
+
* `USERS_CUSTOM` (see `userNotificationTargetIsSuppressibleByRecipientPreference`). On a
|
|
248
|
+
* role-addressed target the preference never applied, so this flag changes nothing there.
|
|
249
|
+
*
|
|
250
|
+
* The narrow escape, for the case the target axis cannot express: a message that reaches a
|
|
251
|
+
* person about their OWN affairs and is nevertheless a security notice they should not be able
|
|
252
|
+
* to silence — a credential minted or destroyed on their account, an authentication factor
|
|
253
|
+
* changed. Those are the alerts a person most needs when they did NOT perform the action.
|
|
254
|
+
*
|
|
255
|
+
* Author it with the reason at the site. It is deliberately not a default and deliberately not
|
|
256
|
+
* derived: "is this alert one a compromised account's owner must still receive?" is a judgement
|
|
257
|
+
* about the message, and inventing a rule for it would be a rule nobody could check.
|
|
258
|
+
*/
|
|
259
|
+
alwaysDeliver: z.boolean().optional(),
|
|
131
260
|
});
|
|
132
261
|
// --- Channel-specific variants ---
|
|
133
262
|
/** EMAIL channel — template-oriented (email-specific fields handled by email templates) */
|
|
@@ -214,7 +343,26 @@ export const UserNotificationDefinitionSchema = z.union([
|
|
|
214
343
|
UserNotificationDefinition_SMSSchema,
|
|
215
344
|
UserNotificationDefinition_PushSchema,
|
|
216
345
|
UserNotificationDefinition_CustomChannelSchema,
|
|
217
|
-
])
|
|
346
|
+
])
|
|
347
|
+
/**
|
|
348
|
+
* `userRoles` on a target that never reads it is a filter that silently does nothing (#495).
|
|
349
|
+
*
|
|
350
|
+
* Refined on the UNION rather than on the base object, deliberately: the base is `.extend()`ed by
|
|
351
|
+
* six channel variants, and a refinement there would be dropped by every one of them — the shape of
|
|
352
|
+
* bug this refinement exists to prevent.
|
|
353
|
+
*/
|
|
354
|
+
.superRefine((notification, context) => {
|
|
355
|
+
if (notification.userRoles !== undefined && !userNotificationTargetReadsUserRoles(notification.target)) {
|
|
356
|
+
context.addIssue({
|
|
357
|
+
code: 'custom',
|
|
358
|
+
path: ['userRoles'],
|
|
359
|
+
message: `userRoles is only read for a role-scoped target and would be inert on "${notification.target}". `
|
|
360
|
+
+ 'It selects WHICH roles a role-scoped target reaches; it does not filter the recipients of any other '
|
|
361
|
+
+ 'target. Remove it, or address the notification to a role-scoped target.',
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
/** @wildo_source:part:end saas.models.notifications.user-notification-definition */
|
|
218
366
|
/**
|
|
219
367
|
* M2M Notification Channels
|
|
220
368
|
*/
|