@wildo-ai/saas-models 1.1.2 → 1.1.4
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/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/_inspect.d.ts.map +1 -1
- package/dist/esm/applications/application-metadata.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-subject.shared.schemas.d.ts.map +1 -1
- package/dist/esm/applications/application-versions.shared.resources-config.schemas.d.ts.map +1 -1
- 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/applications/applications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-account.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-account.shared.schemas.d.ts.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 +4 -3
- package/dist/esm/billing/billing-types.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/billing-types.shared.schemas.js +45 -0
- package/dist/esm/billing/billing-types.shared.schemas.js.map +1 -1
- package/dist/esm/billing/credit-pool.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/credit-pool.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/invoice-ref.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/price.shared.resources-config.schemas.d.ts.map +1 -1
- 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-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts +2 -2
- package/dist/esm/billing/product.shared.resources-config.schemas.d.ts.map +1 -1
- 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/promotions.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/promotions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/referral.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/billing/referral.shared.schemas.d.ts.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/subscription.shared.schemas.d.ts.map +1 -1
- package/dist/esm/billing/usage-record.shared.resources-config.schemas.d.ts.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/charts/aggregation-query.shared.schemas.d.ts.map +1 -1
- package/dist/esm/charts/chart-definition-builder.shared.d.ts.map +1 -1
- package/dist/esm/companion/provider-discovery.shared.schemas.d.ts +71 -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/companion/shared-library-companion.shared.definitions.d.ts.map +1 -1
- package/dist/esm/companion-exports.d.ts.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-log-sink.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.shared.resources-config.schemas.d.ts.map +1 -1
- 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 +658 -26
- 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 +873 -27
- 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 +104 -3
- package/dist/esm/compliance/audit-trails/security-audit-event-envelope.shared.schema.js.map +1 -1
- package/dist/esm/compliance/documents/governed-documents.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/ai-use-posture.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/client-storage.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/data-retention.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization-scrub.shared.utils.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/impersonalization.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts +54 -26
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js +132 -3
- package/dist/esm/compliance/privacy/operating-jurisdictions.shared.schemas.js.map +1 -1
- package/dist/esm/compliance/privacy/operator-compliance-identity.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/personal-data-category.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/personal-data-declaration.shared.utils.d.ts.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/retention-schedule.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-erasure.shared.schemas.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/subject-export-render.shared.utils.d.ts.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/brand-assets.shared.schemas.d.ts.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 +26 -26
- package/dist/esm/config/frontend/chart-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts +139 -3
- package/dist/esm/config/frontend/chart-registration-alignment.shared.d.ts.map +1 -1
- package/dist/esm/config/frontend/chart-registration-alignment.shared.js +151 -4
- package/dist/esm/config/frontend/chart-registration-alignment.shared.js.map +1 -1
- package/dist/esm/config/frontend/navigation.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/frontend/onboarding.shared.schemas.d.ts.map +1 -1
- package/dist/esm/config/registration-acquisition-policy.shared.utils.d.ts.map +1 -1
- package/dist/esm/config-authoring.entry.d.ts.map +1 -1
- package/dist/esm/crdt/crdt-merge.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.d.ts +34 -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 +34 -0
- package/dist/esm/errors/errors.custom-message-ref.shared.definitions.js.map +1 -1
- package/dist/esm/errors/errors.shared.definitions.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/errors/errors.shared.utils.d.ts.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-data.exports.d.ts.map +1 -1
- package/dist/esm/external-providers/compose-provider-registry.shared.d.ts.map +1 -1
- package/dist/esm/external-providers/engine-capabilities.shared.schemas.d.ts +110 -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 +183 -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/external-providers.shared.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/frontend-bootstrap.shared.schemas.d.ts +87 -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 +205 -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 +85 -1
- package/dist/esm/external-providers/frontend-provider-entry.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts +175 -0
- package/dist/esm/external-providers/frontend-provider-public-config.shared.d.ts.map +1 -0
- package/dist/esm/external-providers/frontend-provider-public-config.shared.js +207 -0
- package/dist/esm/external-providers/frontend-provider-public-config.shared.js.map +1 -0
- 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 +28 -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 +15 -4
- package/dist/esm/external-providers/provider-compliance-profile.shared.schemas.js.map +1 -1
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts +165 -0
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.d.ts.map +1 -0
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js +39 -0
- package/dist/esm/external-providers/provider-frontend-component-contract.shared.types.js.map +1 -0
- 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/external-providers/provider-usage-pricing.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/application-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/features/application-features.shared.resources-config.schemas.js +12 -0
- package/dist/esm/features/application-features.shared.resources-config.schemas.js.map +1 -1
- 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/features/feature-definition.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/feature-registry.shared.d.ts.map +1 -1
- package/dist/esm/features/feature-resolution.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/scope-features.shared.schemas.d.ts.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/features/user-features.shared.resources-config.schemas.js +12 -0
- package/dist/esm/features/user-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts +73 -0
- package/dist/esm/files/file-remote-reference-link.shared.schemas.d.ts.map +1 -0
- package/dist/esm/files/file-remote-reference-link.shared.schemas.js +62 -0
- package/dist/esm/files/file-remote-reference-link.shared.schemas.js.map +1 -0
- 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.resources-config.schemas.d.ts.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/files/files.shared.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-push-delivery-log.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a-token-budget-state.shared.schemas.d.ts.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/agent-traceability.shared.schemas.d.ts.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.map +1 -1
- package/dist/esm/flows-actors/apps-blueprint/artifacts.apps-blueprint.shared.schemas.d.ts.map +1 -1
- 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.resources-config.schemas.d.ts.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-task.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors-task.shared.schemas.d.ts.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.configuration.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/flows-actors.frontend.shared.schemas.d.ts.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.definitions.d.ts.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 +130 -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 +153 -0
- package/dist/esm/flows-actors/mcp-servers.shared.schemas.js.map +1 -0
- package/dist/esm/flows-actors/meta-workflows/actions.meta-workflows.shared.schemas.d.ts.map +1 -1
- 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/catalog.meta-workflows.shared.schemas.d.ts.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/continuity-identifiers.meta-workflows.shared.schemas.d.ts.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.d.ts.map +1 -1
- 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/flows-actors/meta-workflows/portable-primitives.meta-workflows.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/prompt-ir.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/task-continuity-binding.actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/tasks.actors.shared.schemas.d.ts.map +1 -1
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts +112 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.d.ts.map +1 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js +113 -0
- package/dist/esm/frontend-definitions/settings-destination-ref.definitions.js.map +1 -0
- package/dist/esm/guidance/guidance-flow.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/guidance-state.shared.schemas.d.ts.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/lifecycle-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/lifecycle-state.shared.schemas.d.ts.map +1 -1
- package/dist/esm/guidance/milestone-builders.shared.d.ts.map +1 -1
- package/dist/esm/guidance/milestone-definition.shared.schemas.d.ts.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-id.shared.utils.d.ts.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/i18n/labelling.dto.shared.schemas.d.ts.map +1 -1
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/meta-workflows.exports.d.ts.map +1 -1
- package/dist/esm/monitoring/monitoring.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/email/email-context.shared.schemas.d.ts.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/m2m-webhook-delivery-contract.shared.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/m2m/m2m-webhook-delivery-log.shared.schemas.d.ts.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/notification-badges.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.d.ts +158 -0
- package/dist/esm/notifications/notifications.shared.schemas.d.ts.map +1 -1
- package/dist/esm/notifications/notifications.shared.schemas.js +200 -1
- package/dist/esm/notifications/notifications.shared.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js +13 -0
- package/dist/esm/organizations/organization-features.shared.resources-config.schemas.js.map +1 -1
- package/dist/esm/organizations/organization-members.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-notifications.shared.resources-config.schemas.d.ts.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.resources-config.schemas.d.ts.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.resources-config.schemas.d.ts.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-inheritance.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-members.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing-decision.shared.d.ts.map +1 -1
- package/dist/esm/organizations/organization-unit-narrowing.example.d.ts.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/organization-units.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/organization-units.shared.schemas.d.ts.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/organizations/organizations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts +13 -0
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.d.ts.map +1 -1
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js +13 -0
- package/dist/esm/organizations/tenant-teardown-config.shared.schemas.js.map +1 -1
- package/dist/esm/provider-registration-runtime.exports.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.d.ts +71 -2
- package/dist/esm/public-runtime/index.d.ts.map +1 -1
- package/dist/esm/public-runtime/index.js +62 -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/queue/jobs.shared.utils.d.ts.map +1 -1
- package/dist/esm/queue/queues.shared.schemas.d.ts.map +1 -1
- package/dist/esm/queue/queues.shared.utils.d.ts.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 +1255 -0
- package/dist/esm/requests/manual-controllers-routes-documentation.js.map +1 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts +114 -0
- package/dist/esm/requests/manual-controllers-routes-urls.d.ts.map +1 -1
- package/dist/esm/requests/manual-controllers-routes-urls.js +129 -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 +28 -3
- package/dist/esm/requests/websocket.shared.schemas.d.ts.map +1 -1
- package/dist/esm/requests/websocket.shared.schemas.js +52 -0
- package/dist/esm/requests/websocket.shared.schemas.js.map +1 -1
- package/dist/esm/resources/child-operations.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/context-policy.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/relationship-display.shared.schemas.d.ts.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 +203 -25
- package/dist/esm/resources/resources-config.shared.factory.js.map +1 -1
- package/dist/esm/resources/resources-config.shared.schemas.d.ts +297 -68
- 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 +151 -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-serialization.shared.schemas.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.d.ts +54 -0
- package/dist/esm/resources/resources.shared.core.definitions.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.core.definitions.js +69 -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/resources.shared.utils.d.ts +32 -7
- package/dist/esm/resources/resources.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/resources.shared.utils.js +32 -7
- package/dist/esm/resources/resources.shared.utils.js.map +1 -1
- package/dist/esm/resources/utils/collection-export.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/composition-cascade-deletability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/composition-seedability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/context-addressed-composition-singleton.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/duplicate-relationship-registration.validation.d.ts.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/persistence-adapter-discrimination.shared.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/repository-dto-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/required-fk-fillability.validation.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-operation-type-guards.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.factory.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.relationships.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.schemas.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-polymorphism.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-subtree.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-context-needs.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.dtos-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.path.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.urls-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-config-operations.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/resources-serialization.utils.d.ts.map +1 -1
- 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/schema-family-builder.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-type-inference.utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-type-utils.d.ts.map +1 -1
- package/dist/esm/resources/utils/schema-variant-resolver.utils.d.ts.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/resources/utils/templatable-file-fields.shared.utils.d.ts.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/runtime/execution-context.shared.schemas.d.ts.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/api-keys/api-keys.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/anonymous-session/anonymous-session.shared.contract.d.ts.map +1 -1
- package/dist/esm/security/authentications/authentication.shared.dto.schemas.d.ts +5 -12
- 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/authentication.shared.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/consumable-token.shared.schemas.js.map +1 -1
- package/dist/esm/security/authentications/cross-frontend-handoff.shared.dto.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/password-reset.shared.dto.schemas.d.ts.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-organization-unit-mapping.shared.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-provisioning-config.shared.resources-config.schemas.d.ts.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/scim/scim-tokens.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/scim/scim-tokens.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-dlq.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-delivery-reliability-contract.shared.js.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/siem/siem-export-config.shared.schemas.d.ts.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 +238 -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.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.d.ts +2 -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 +32 -8
- package/dist/esm/security/authentications/sso/sso-connection.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts +45 -2
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js +45 -2
- package/dist/esm/security/authorizations/administrative-continuity.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts +35 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js +257 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts +143 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js +219 -0
- package/dist/esm/security/authorizations/application-access-grants.shared.schemas.js.map +1 -0
- 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 +75 -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 +69 -8
- package/dist/esm/security/authorizations/platform-access-grants.shared.schemas.js.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.defaults.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/authorizations/roles.shared.utils.d.ts.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 +307 -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 +530 -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.resources-config.schemas.d.ts.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/security/oauth-clients/oauth-resource-server.shared.schemas.d.ts.map +1 -1
- package/dist/esm/testing/resource-config-builders.d.ts.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/anonymous-user-marketing-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/anonymous-users.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/anonymous-users.shared.schema.d.ts.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/inbound-contacts.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-credentials.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-credentials.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-identity-links.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-preferences-reset.shared.utils.d.ts.map +1 -1
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts +4 -4
- package/dist/esm/users/user-self-preferences.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/users/user-self-profiles.shared.resources-config.schemas.d.ts.map +1 -1
- 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 +60 -13
- package/dist/esm/users/users.shared.schemas.d.ts.map +1 -1
- package/dist/esm/users/users.shared.schemas.js +56 -9
- 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":"resources-relationships.shared.factory.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"resources-relationships.shared.factory.d.ts","sourceRoot":"","sources":["../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,kBAAkB,EAClB,KAAK,gCAAgC,EACrC,iCAAiC,EAEjC,oBAAoB,EAEpB,uCAAuC,EACvC,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAA+B,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAC1I,OAAO,EAAE,yBAAyB,EAAmC,MAAM,uCAAuC,CAAC;AAYnH;;;;GAIG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,UAAU,CAAC,EAAG,OAAO,CAAC;IACtB,cAAc,CAAC,EAAG,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAG,iCAAiC,CAAC;IAC/D,mBAAmB,CAAC,EAAG,uCAAuC,CAAC;IAC/D,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C;;;;;;OAMG;IACH,MAAM,EAAE,kBAAkB,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gCAAgC,CAAC;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iCAAiC,CAAC;IAClD;;;;OAIG;IACH,SAAS,CAAC,EAAE,+BAA+B,CAAC;IAC5C;;;OAGG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AACF,kFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,YAAY,EAC3B,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,+BAA+B,EAC7C,YAAY,EAAE,+BAA+B,EAC7C,OAAO,EAAE,sCAAsC,GAC7C,oBAAoB,CAyQvB"}
|
|
@@ -109,6 +109,19 @@ export function createResourcesRelationship(resourceType1, resourceType2, cardin
|
|
|
109
109
|
// ========================================
|
|
110
110
|
// VALIDATION GUARDS
|
|
111
111
|
// ========================================
|
|
112
|
+
//
|
|
113
|
+
// The numbers below are STABLE LABELS, not a count and not a sequence. They are cited from
|
|
114
|
+
// `resources-relationships-factory.test.ts`, from `resources-registry.shared.core.definitions.ts`
|
|
115
|
+
// and from sibling packages, so renumbering them breaks those references. Two consequences a
|
|
116
|
+
// reader has to know before counting anything here:
|
|
117
|
+
//
|
|
118
|
+
// - there is no Guard 4, and no commit touching this file has ever added or removed one;
|
|
119
|
+
// - three refusals in this sequence carry no number at all (self-referencing MANY-to-MANY
|
|
120
|
+
// below Guard 2, the unresolvable primary scope, and the post-default-resolution repeat of
|
|
121
|
+
// Guard 1 near the end of the function).
|
|
122
|
+
//
|
|
123
|
+
// So "the guards" is a larger set than "the numbered guards". Enumerate the `throw` statements,
|
|
124
|
+
// not the labels.
|
|
112
125
|
// Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.
|
|
113
126
|
//
|
|
114
127
|
// ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)
|
|
@@ -163,6 +176,8 @@ export function createResourcesRelationship(resourceType1, resourceType2, cardin
|
|
|
163
176
|
`Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\n` +
|
|
164
177
|
`Declare explicit junction-resource relationships so source and target edge identity stay explicit.`);
|
|
165
178
|
}
|
|
179
|
+
// (The refusal immediately above carries no guard number: self-referencing MANY-to-MANY.)
|
|
180
|
+
//
|
|
166
181
|
// Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child
|
|
167
182
|
// resource that points back to the parent, which is useful for 1:1 relationships
|
|
168
183
|
// Guard 3: jointResourceType should not be combined with foreignKeyField.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources-relationships.shared.factory.js","sourceRoot":"","sources":["../../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceType, ResourceType } from \"./resources.shared.core.definitions\";\nimport {\n RelationshipNature,\n type RelationshipHandlingReadSettings,\n ResourceParentResourceRequirement,\n ResourcePrimaryScope,\n ResourceRelationship,\n ResourceRelationshipDeclaration,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n ResourceRelationshipConditionFn,\n type ScopeMembership,\n} from \"./resources.shared.schemas\";\nimport { ErrorType } from \"../errors/errors.shared.schemas\";\nimport { RelationshipContextPolicy } from \"./context-policy.shared.schemas\";\nimport { ChildOperationsConfig, ChildOperationsConfigSchema, ResourceRelationshipDiscriminator } from \"./child-operations.shared.schemas\";\nimport { RelationshipDisplayConfig, RelationshipDisplayConfigSchema } from \"./relationship-display.shared.schemas\";\nimport { Resources_SharedUtils } from \"./resources.shared.utils\";\n\n/**\n * Creates a configuration error with ErrorType.CONFIGURATION\n */\nfunction createConfigurationError(message: string): Error {\n const error = new Error(message);\n (error as any).type = ErrorType.CONFIGURATION;\n return error;\n}\n\n/**\n * @wildo_source:part:start saas.models.resource-relationship-builder-parameters facet:layer:shared facet:family:resource-config\n *\n * Parameters accepted by `createResourcesRelationship()` (app registry authoring).\n */\nexport type ResourceRelationship_BuilderParameters = {\n isDisabled? : boolean,\n isPrimaryScope? : boolean,\n parentResourceRequirement? : ResourceParentResourceRequirement,\n accessScopeStrategy? : ResourceRelationshipAccessScopeStrategy,\n jointResourceType?: ResourceType,\n /**\n * Opt-in flag for relationships that form cycles in the resource graph.\n * Required on every edge in a cycle for schema-level validation to pass.\n * @see ResourceRelationshipSchema.allowCycle\n */\n allowCycle?: boolean,\n /** Context policy for this relationship - controls how related resources are fetched */\n contextPolicy?: RelationshipContextPolicy,\n /**\n * High-level shared meaning of the relationship.\n *\n * This is the primary semantic field app developers should author. The\n * framework derives the deeper internal handling contract from it plus the\n * optional explicit read intent when present.\n */\n nature: RelationshipNature,\n /**\n * Optional explicit semantic read intent.\n *\n * This does not replace `childOperations.nested.onRead`; it only declares the\n * semantic read model the framework should resolve.\n */\n read?: RelationshipHandlingReadSettings,\n /**\n * Child operations configuration for this relationship.\n * Handles BACKEND concerns: lifecycle cascade and nested DTO aggregation.\n */\n childOperations?: ChildOperationsConfig,\n /**\n * Static discriminator filter for conditional relationships.\n * When specified, this relationship only applies when the parent resource's\n * discriminator field matches one of the specified values.\n */\n discriminator?: ResourceRelationshipDiscriminator,\n /**\n * Function-based condition for conditional relationships.\n * Evaluated at runtime with the parent resource data.\n * Unlike the static `discriminator`, this allows arbitrary logic.\n */\n condition?: ResourceRelationshipConditionFn,\n /**\n * Frontend display configuration for this relationship.\n * Defines how related resources are displayed in the UI.\n */\n display?: RelationshipDisplayConfig,\n /**\n * Foreign key field name for this relationship.\n *\n * When omitted: Inferred from parent's resourceFieldIdentifier via allResourceFieldIdentifiers map.\n * When specified: Used for disambiguation when multiple FKs point to same resource type,\n * or when FK field name differs from standard naming convention.\n *\n * Examples:\n * - Standard: ORGANIZATIONS → TODOS uses organizationId (inferred, no foreignKeyField needed)\n * - Disambiguation: TODOS → USERS via assignedToUserId vs createdByUserId (explicit)\n * - Self-referencing M:N is not expressed as one relationship declaration;\n * declare two explicit junction-resource edges so source and target FK\n * identities remain distinct.\n */\n foreignKeyField?: string,\n /**\n * Write-time SCOPE CONFINEMENT for a REFERENCE foreign key: the referenced target must be linked to\n * the writing row's scope through a junction, enforced on CREATE and UPDATE. Opt-in and additive —\n * omit for unchanged behavior.\n *\n * STRUCTURE only. `scopeMembership: true` is the simple case (junction auto-resolved from the M:N\n * scope-junction map); the object form names the junction / its columns when convention cannot — a\n * SELF-REFERENTIAL junction (organizations ↔ organizations). Per-variant POLICY (status, roles, typed\n * junction rows) is declared on the operation config's `referenceConstraints`.\n *\n * @example todos.assignedToUserId must be a member of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'assignedToUserId', scopeMembership: true }\n *\n * @example todos.sharedWithOrganizationId must be a partner of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'sharedWithOrganizationId',\n * scopeMembership: { junction: CoreResourceType.ORGANIZATION_PARTNERSHIPS } }\n */\n scopeMembership?: ScopeMembership,\n};\n/** @wildo_source:part:end saas.models.resource-relationship-builder-parameters */\n\n\n\n/**\n * Create a resource relationship declaration between two resource types.\n *\n * This is the primary entry point for declaring relationships in the resource registry.\n * Returns a `ResourceRelationship` object that is spread into the registry's relationship\n * array and later categorized by `transformResourceRelationships()` at factory time.\n *\n * ## Conditional Relationships\n *\n * Relationships can optionally carry runtime conditions via `discriminator` and/or `condition`:\n *\n * - **`discriminator`** (static): A simple `{ discriminatorField, values }` object.\n * The relationship is active only when `String(parent[discriminatorField])` is in `values`.\n * Useful for discriminated union patterns (e.g., recurring vs. one-time todos).\n *\n * - **`condition`** (dynamic): An arbitrary `(parentResource) => boolean` function.\n * Allows cross-field logic, computed checks, etc. Cannot be serialized to Zod.\n *\n * When both are provided, AND semantics apply — both must pass for the relationship\n * to be active at runtime.\n *\n * These conditions are NOT evaluated at startup/factory time. They are stored inline\n * on the relationship object and evaluated at runtime by:\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — backend context building\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — nested CRUD + lifecycle\n * - `ResourceLayout_ContainerNested` — frontend display filtering\n *\n * @param resourceType1 - The parent resource type in 1:N/1:1, or the first entity side in M:N\n * @param resourceType2 - The child resource type in 1:N/1:1, or the second entity side in M:N\n * @param cardinality1 - Cardinality from the perspective of resourceType1\n * @param cardinality2 - Cardinality from the perspective of resourceType2\n * @param options - Required relationship options; must include `nature`.\n * Other relationship fields remain optional as needed (discriminator,\n * condition, childOperations, display, etc.)\n * @returns A fully constructed `ResourceRelationship` object\n *\n * ## M:N developer mental model\n *\n * For `MANY <-> MANY`, the declaration is still authored at the association level:\n * developers declare the two peer entity types plus `jointResourceType`.\n *\n * The framework may later decompose non-self associations into synthetic\n * entity->junction and junction->entity edges for DTO, routing, and runtime\n * processing, but that decomposition is an internal implementation detail.\n * App-facing meaning should stay association-centric, not \"manually declare the\n * synthetic edges yourself.\"\n *\n * Self-referencing M:N is the exception: one declaration cannot carry two\n * distinct source/target FK identities for the same resource type. Model it with\n * explicit junction-resource relationships instead.\n *\n * ## Semantic Resolution Order\n *\n * Relationship declarations now have an explicit semantic precedence:\n *\n * 1. structural topology (`cardinality*`, `jointResourceType`, `foreignKeyField`, ...)\n * 2. `nature`\n * 3. explicit semantic read intent (`read`) when authored\n * 4. derived handling contract (future resolver step, internal)\n * 5. current low-level operational projection (`childOperations`)\n *\n * `nature` is therefore the primary semantic declaration for app developers.\n * The fuller handling contract belongs to framework internals, not the authored\n * relationship API.\n *\n * ## Greenfield Direction\n *\n * Relationship declarations must define explicit `nature`. Missing annotations\n * are configuration bugs, not a compatibility target.\n *\n * @example Static discriminator (recurring todos → occurrences)\n * ```typescript\n * createResourcesRelationship(TODOS, RECURRING_OCCURRENCES, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * discriminator: { discriminatorField: 'recurringType', values: ['RECURRING'] },\n * childOperations: { lifecycle: { onParentDelete: { enabled: true } } },\n * })\n * ```\n *\n * @example Function-based condition\n * ```typescript\n * createResourcesRelationship(ORDERS, REFUND_RECORDS, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * condition: (parent) => parent.status === 'COMPLETED' && parent.totalAmount > 0,\n * })\n * ```\n */\nexport function createResourcesRelationship(\n resourceType1: ResourceType, \n resourceType2: ResourceType, \n cardinality1: ResourceRelationshipCardinality, \n cardinality2: ResourceRelationshipCardinality, \n options: ResourceRelationship_BuilderParameters\n ) : ResourceRelationship {\n\n if (!options?.nature) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationship declarations must define nature explicitly.\\n` +\n `Greenfield relationship semantics no longer infer meaning from childOperations or jointResourceType.`\n );\n }\n \n // ========================================\n // VALIDATION GUARDS\n // ========================================\n\n // Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.\n //\n // ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)\n //\n // `isPrimaryScope` and `accessScopeStrategy` govern two ORTHOGONAL concerns:\n //\n // - `isPrimaryScope` — ownership graph anchor: \"this parent is the\n // row's structural scope root\". Drives the\n // resource's `resourcePrimaryScope` enum, which\n // in turn drives scope-aware services (auth,\n // notifications, execution context, etc).\n // - `accessScopeStrategy` — URL routing + fetch-time context gating.\n // STANDALONE → no URL segment, no context gate\n // REQUIRES_CONTEXT → mandatory URL segment + gate\n // OPTIONAL_CONTEXT → optional URL segment\n //\n // The two concerns are already orthogonalized in the URL builder\n // (`generateParentCombinations` filters out STANDALONE parents *before*\n // bucketing the rest by `isPrimaryScope`), so a `STANDALONE + isPrimaryScope`\n // rel is URL-inert by construction — it contributes zero path segments and\n // simply anchors the scope enum. That is a coherent, intended configuration\n // (e.g. internal ledgers like `jobExecutions` that are APP-scoped but not\n // routed under `/applications/:id/…`, user-owned credential stores that are\n // USER_SELF-scoped but not exposed as routable child resources).\n //\n // `OPTIONAL_CONTEXT + isPrimaryScope` is however INCOHERENT under the current\n // combinator: `generateParentCombinations` puts every `isPrimaryScope` edge\n // into the always-on bucket, which would force an \"optional\" primary parent\n // to appear in every URL combination — contradicting its optionality. That\n // redesign is out of scope here; until then the guard remains.\n if (options?.isPrimaryScope &&\n options?.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope cannot have accessScopeStrategy=OPTIONAL_CONTEXT.\\n` +\n `A primary-scope rel marks the structural ownership anchor; OPTIONAL_CONTEXT\\n` +\n `would make the anchor optional in URLs, which the current URL combinator\\n` +\n `cannot express coherently. Use REQUIRES_CONTEXT (routed anchor) or\\n` +\n `STANDALONE (logical anchor, not routed).`\n );\n }\n \n // Guard 2: MANY-to-MANY requires jointResourceType (junction table)\n if (cardinality1 === ResourceRelationshipCardinality.MANY && \n cardinality2 === ResourceRelationshipCardinality.MANY &&\n !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `MANY-to-MANY relationships require a jointResourceType (junction table).`\n );\n }\n\n if (\n cardinality1 === ResourceRelationshipCardinality.MANY &&\n cardinality2 === ResourceRelationshipCardinality.MANY &&\n options?.jointResourceType &&\n resourceType1 === resourceType2\n ) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\\n` +\n `Declare explicit junction-resource relationships so source and target edge identity stay explicit.`\n );\n }\n \n // Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child\n // resource that points back to the parent, which is useful for 1:1 relationships\n \n // Guard 3: jointResourceType should not be combined with foreignKeyField.\n // Self-referencing many-to-many is rejected above because a single\n // declaration cannot encode two FK identities for the same peer resource.\n if (options?.jointResourceType && options?.foreignKeyField && resourceType1 !== resourceType2) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Cannot combine jointResourceType and foreignKeyField for non-self-referencing M:N.\\n` +\n `Use jointResourceType for MANY-to-MANY via junction table.`\n );\n }\n \n // Guard 5: foreignKeyField must end with 'Id' or 'Ids' (reserved for FK naming convention)\n if (options?.foreignKeyField) {\n const fkField = options.foreignKeyField;\n if (!fkField.endsWith('Id') && !fkField.endsWith('Ids')) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `foreignKeyField \"${fkField}\" must end with 'Id' or 'Ids' (e.g., assignedToUserId, memberIds).\\n` +\n `This naming convention is reserved for foreign key fields.`\n );\n }\n }\n \n // Guard 6: Self-referencing 1:N/1:1 relationships require explicit foreignKeyField.\n // Without it, the default FK (derived from resourceFieldIdentifier) would collide with\n // itself in URL param generation — e.g., /resource/{resourceId}/resource/{resourceId}.\n // M:N self-refs are rejected above: one declaration cannot encode distinct\n // source/target FK identities for the same peer resource.\n if (resourceType1 === resourceType2 && !options?.jointResourceType) {\n if (!options?.foreignKeyField) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST specify foreignKeyField explicitly.\\n` +\n `Without it, URL parameter names collide (same resource type on both sides).`\n );\n }\n\n // Guard 7: Self-referencing 1:N/1:1 relationships must have OPTIONAL parent requirement.\n // Tree roots have no parent — MANDATORY would make root-level access impossible.\n const effectiveParentReq = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n if (effectiveParentReq === ResourceParentResourceRequirement.MANDATORY) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST have parentResourceRequirement=OPTIONAL.\\n` +\n `Tree/graph roots have no parent — MANDATORY would make root-level access impossible.`\n );\n }\n }\n\n // Guard 8: junction-backed relationships are association semantics when nature is explicit.\n if (options?.jointResourceType && options?.nature && options.nature !== RelationshipNature.ASSOCIATION) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationships with jointResourceType must declare nature=ASSOCIATION.\\n` +\n `Junction-backed relationships are association-centric in the shared model.`\n );\n }\n\n // Guard 9: explicit association semantics require a junction resource.\n if (options?.nature === RelationshipNature.ASSOCIATION && !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `nature=ASSOCIATION requires jointResourceType.\\n` +\n `Association semantics are reserved for explicit link-management / junction-backed relationships.`\n );\n }\n \n // ========================================\n // PRIMARY SCOPE MAPPING\n // ========================================\n \n let primaryScope : ResourcePrimaryScope | undefined;\n if (options?.isPrimaryScope) {\n \n const primaryScopeMap = {\n [CoreResourceType.ORGANIZATIONS]: ResourcePrimaryScope.ORGANIZATIONS,\n [CoreResourceType.USERS]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.USER_SELF]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.APPLICATION]: ResourcePrimaryScope.APPLICATION,\n [CoreResourceType.ANONYMOUS_USERS]: ResourcePrimaryScope.ANONYMOUS,\n }\n primaryScope = primaryScopeMap[resourceType1 as CoreResourceType];\n \n if (!primaryScope) {\n throw createConfigurationError(`Resource type ${resourceType1} is not related to a primary scope`);\n }\n }\n \n // ========================================\n // ACCESS SCOPE STRATEGY DEFAULTS\n // ========================================\n\n const parentResourceRequirement = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n let accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n\n if (!options?.accessScopeStrategy) {\n if (parentResourceRequirement === ResourceParentResourceRequirement.MANDATORY) {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n } else {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT;\n }\n } else {\n accessScopeStrategy = options.accessScopeStrategy;\n }\n\n // Post-default-resolution check: `isPrimaryScope` must resolve to REQUIRES_CONTEXT\n // or STANDALONE, never OPTIONAL_CONTEXT. See Guard 1 above for the full\n // rationale (ownership graph vs URL routing are orthogonal, except for the\n // OPTIONAL_CONTEXT incoherence).\n //\n // This second gate exists because `accessScopeStrategy` may be filled in by\n // the DEFAULTS block above (lines 332-340) rather than authored explicitly.\n // Guard 1 only fires on explicit authoring; this one catches the defaulted\n // case where `parentResourceRequirement=OPTIONAL` silently resolves to\n // `OPTIONAL_CONTEXT`.\n if (options?.isPrimaryScope &&\n accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope rel defaulted to accessScopeStrategy=OPTIONAL_CONTEXT\\n` +\n `(triggered by parentResourceRequirement=OPTIONAL without explicit strategy).\\n` +\n `Declare accessScopeStrategy=REQUIRES_CONTEXT (routed anchor) or STANDALONE\\n` +\n `(logical anchor, not routed) explicitly.`\n );\n }\n \n // Parse childOperations and display to apply defaults and convert to parsed types\n const parsedChildOperations = options?.childOperations \n ? ChildOperationsConfigSchema.parse(options.childOperations)\n : undefined;\n \n const parsedDisplay = options?.display\n ? RelationshipDisplayConfigSchema.parse(options.display)\n : undefined;\n\n const relationshipDeclaration: ResourceRelationshipDeclaration = {\n cardinality1,\n cardinality2,\n resourceType1,\n resourceType2,\n accessScopeStrategy,\n parentResourceRequirement,\n isPrimaryScope: options?.isPrimaryScope || false,\n primaryScope,\n jointResourceType: options?.jointResourceType || undefined,\n allowCycle: options?.allowCycle || false,\n isDisabled: options?.isDisabled || false,\n // Context policy for relationship traversal\n contextPolicy: options?.contextPolicy,\n // High-level shared semantic meaning authored by app developers.\n nature: options.nature,\n // Optional explicit semantic read intent authored by app developers.\n read: options?.read,\n // Child operations configuration (lifecycle + nested DTOs) - parsed to apply defaults\n childOperations: parsedChildOperations,\n // Static discriminator filter for conditional relationships\n discriminator: options?.discriminator,\n // Function-based condition for conditional relationships\n condition: options?.condition,\n // Frontend display configuration - parsed to apply defaults\n display: parsedDisplay,\n // Foreign key field for disambiguation or non-standard naming\n foreignKeyField: options?.foreignKeyField,\n // Write-time scope-membership constraint (opt-in; enforced on CREATE/UPDATE by write-integrity)\n scopeMembership: options?.scopeMembership,\n };\n\n return Resources_SharedUtils.compileRelationshipDeclaration(relationshipDeclaration);\n }\n"]}
|
|
1
|
+
{"version":3,"file":"resources-relationships.shared.factory.js","sourceRoot":"","sources":["../../../src/resources/resources-relationships.shared.factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceType, ResourceType } from \"./resources.shared.core.definitions\";\nimport {\n RelationshipNature,\n type RelationshipHandlingReadSettings,\n ResourceParentResourceRequirement,\n ResourcePrimaryScope,\n ResourceRelationship,\n ResourceRelationshipDeclaration,\n ResourceRelationshipAccessScopeStrategy,\n ResourceRelationshipCardinality,\n ResourceRelationshipConditionFn,\n type ScopeMembership,\n} from \"./resources.shared.schemas\";\nimport { ErrorType } from \"../errors/errors.shared.schemas\";\nimport { RelationshipContextPolicy } from \"./context-policy.shared.schemas\";\nimport { ChildOperationsConfig, ChildOperationsConfigSchema, ResourceRelationshipDiscriminator } from \"./child-operations.shared.schemas\";\nimport { RelationshipDisplayConfig, RelationshipDisplayConfigSchema } from \"./relationship-display.shared.schemas\";\nimport { Resources_SharedUtils } from \"./resources.shared.utils\";\n\n/**\n * Creates a configuration error with ErrorType.CONFIGURATION\n */\nfunction createConfigurationError(message: string): Error {\n const error = new Error(message);\n (error as any).type = ErrorType.CONFIGURATION;\n return error;\n}\n\n/**\n * @wildo_source:part:start saas.models.resource-relationship-builder-parameters facet:layer:shared facet:family:resource-config\n *\n * Parameters accepted by `createResourcesRelationship()` (app registry authoring).\n */\nexport type ResourceRelationship_BuilderParameters = {\n isDisabled? : boolean,\n isPrimaryScope? : boolean,\n parentResourceRequirement? : ResourceParentResourceRequirement,\n accessScopeStrategy? : ResourceRelationshipAccessScopeStrategy,\n jointResourceType?: ResourceType,\n /**\n * Opt-in flag for relationships that form cycles in the resource graph.\n * Required on every edge in a cycle for schema-level validation to pass.\n * @see ResourceRelationshipSchema.allowCycle\n */\n allowCycle?: boolean,\n /** Context policy for this relationship - controls how related resources are fetched */\n contextPolicy?: RelationshipContextPolicy,\n /**\n * High-level shared meaning of the relationship.\n *\n * This is the primary semantic field app developers should author. The\n * framework derives the deeper internal handling contract from it plus the\n * optional explicit read intent when present.\n */\n nature: RelationshipNature,\n /**\n * Optional explicit semantic read intent.\n *\n * This does not replace `childOperations.nested.onRead`; it only declares the\n * semantic read model the framework should resolve.\n */\n read?: RelationshipHandlingReadSettings,\n /**\n * Child operations configuration for this relationship.\n * Handles BACKEND concerns: lifecycle cascade and nested DTO aggregation.\n */\n childOperations?: ChildOperationsConfig,\n /**\n * Static discriminator filter for conditional relationships.\n * When specified, this relationship only applies when the parent resource's\n * discriminator field matches one of the specified values.\n */\n discriminator?: ResourceRelationshipDiscriminator,\n /**\n * Function-based condition for conditional relationships.\n * Evaluated at runtime with the parent resource data.\n * Unlike the static `discriminator`, this allows arbitrary logic.\n */\n condition?: ResourceRelationshipConditionFn,\n /**\n * Frontend display configuration for this relationship.\n * Defines how related resources are displayed in the UI.\n */\n display?: RelationshipDisplayConfig,\n /**\n * Foreign key field name for this relationship.\n *\n * When omitted: Inferred from parent's resourceFieldIdentifier via allResourceFieldIdentifiers map.\n * When specified: Used for disambiguation when multiple FKs point to same resource type,\n * or when FK field name differs from standard naming convention.\n *\n * Examples:\n * - Standard: ORGANIZATIONS → TODOS uses organizationId (inferred, no foreignKeyField needed)\n * - Disambiguation: TODOS → USERS via assignedToUserId vs createdByUserId (explicit)\n * - Self-referencing M:N is not expressed as one relationship declaration;\n * declare two explicit junction-resource edges so source and target FK\n * identities remain distinct.\n */\n foreignKeyField?: string,\n /**\n * Write-time SCOPE CONFINEMENT for a REFERENCE foreign key: the referenced target must be linked to\n * the writing row's scope through a junction, enforced on CREATE and UPDATE. Opt-in and additive —\n * omit for unchanged behavior.\n *\n * STRUCTURE only. `scopeMembership: true` is the simple case (junction auto-resolved from the M:N\n * scope-junction map); the object form names the junction / its columns when convention cannot — a\n * SELF-REFERENTIAL junction (organizations ↔ organizations). Per-variant POLICY (status, roles, typed\n * junction rows) is declared on the operation config's `referenceConstraints`.\n *\n * @example todos.assignedToUserId must be a member of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'assignedToUserId', scopeMembership: true }\n *\n * @example todos.sharedWithOrganizationId must be a partner of the row's organization:\n * { nature: RelationshipNature.REFERENCE, foreignKeyField: 'sharedWithOrganizationId',\n * scopeMembership: { junction: CoreResourceType.ORGANIZATION_PARTNERSHIPS } }\n */\n scopeMembership?: ScopeMembership,\n};\n/** @wildo_source:part:end saas.models.resource-relationship-builder-parameters */\n\n\n\n/**\n * Create a resource relationship declaration between two resource types.\n *\n * This is the primary entry point for declaring relationships in the resource registry.\n * Returns a `ResourceRelationship` object that is spread into the registry's relationship\n * array and later categorized by `transformResourceRelationships()` at factory time.\n *\n * ## Conditional Relationships\n *\n * Relationships can optionally carry runtime conditions via `discriminator` and/or `condition`:\n *\n * - **`discriminator`** (static): A simple `{ discriminatorField, values }` object.\n * The relationship is active only when `String(parent[discriminatorField])` is in `values`.\n * Useful for discriminated union patterns (e.g., recurring vs. one-time todos).\n *\n * - **`condition`** (dynamic): An arbitrary `(parentResource) => boolean` function.\n * Allows cross-field logic, computed checks, etc. Cannot be serialized to Zod.\n *\n * When both are provided, AND semantics apply — both must pass for the relationship\n * to be active at runtime.\n *\n * These conditions are NOT evaluated at startup/factory time. They are stored inline\n * on the relationship object and evaluated at runtime by:\n * - `ResourceContextBackendService.fetchChildResourcesWithPolicy()` — backend context building\n * - `ServicesRegistryHandler.filterRelationshipsByParent()` — nested CRUD + lifecycle\n * - `ResourceLayout_ContainerNested` — frontend display filtering\n *\n * @param resourceType1 - The parent resource type in 1:N/1:1, or the first entity side in M:N\n * @param resourceType2 - The child resource type in 1:N/1:1, or the second entity side in M:N\n * @param cardinality1 - Cardinality from the perspective of resourceType1\n * @param cardinality2 - Cardinality from the perspective of resourceType2\n * @param options - Required relationship options; must include `nature`.\n * Other relationship fields remain optional as needed (discriminator,\n * condition, childOperations, display, etc.)\n * @returns A fully constructed `ResourceRelationship` object\n *\n * ## M:N developer mental model\n *\n * For `MANY <-> MANY`, the declaration is still authored at the association level:\n * developers declare the two peer entity types plus `jointResourceType`.\n *\n * The framework may later decompose non-self associations into synthetic\n * entity->junction and junction->entity edges for DTO, routing, and runtime\n * processing, but that decomposition is an internal implementation detail.\n * App-facing meaning should stay association-centric, not \"manually declare the\n * synthetic edges yourself.\"\n *\n * Self-referencing M:N is the exception: one declaration cannot carry two\n * distinct source/target FK identities for the same resource type. Model it with\n * explicit junction-resource relationships instead.\n *\n * ## Semantic Resolution Order\n *\n * Relationship declarations now have an explicit semantic precedence:\n *\n * 1. structural topology (`cardinality*`, `jointResourceType`, `foreignKeyField`, ...)\n * 2. `nature`\n * 3. explicit semantic read intent (`read`) when authored\n * 4. derived handling contract (future resolver step, internal)\n * 5. current low-level operational projection (`childOperations`)\n *\n * `nature` is therefore the primary semantic declaration for app developers.\n * The fuller handling contract belongs to framework internals, not the authored\n * relationship API.\n *\n * ## Greenfield Direction\n *\n * Relationship declarations must define explicit `nature`. Missing annotations\n * are configuration bugs, not a compatibility target.\n *\n * @example Static discriminator (recurring todos → occurrences)\n * ```typescript\n * createResourcesRelationship(TODOS, RECURRING_OCCURRENCES, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * discriminator: { discriminatorField: 'recurringType', values: ['RECURRING'] },\n * childOperations: { lifecycle: { onParentDelete: { enabled: true } } },\n * })\n * ```\n *\n * @example Function-based condition\n * ```typescript\n * createResourcesRelationship(ORDERS, REFUND_RECORDS, ONE, MANY, {\n * nature: RelationshipNature.COMPOSITION,\n * condition: (parent) => parent.status === 'COMPLETED' && parent.totalAmount > 0,\n * })\n * ```\n */\nexport function createResourcesRelationship(\n resourceType1: ResourceType, \n resourceType2: ResourceType, \n cardinality1: ResourceRelationshipCardinality, \n cardinality2: ResourceRelationshipCardinality, \n options: ResourceRelationship_BuilderParameters\n ) : ResourceRelationship {\n\n if (!options?.nature) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationship declarations must define nature explicitly.\\n` +\n `Greenfield relationship semantics no longer infer meaning from childOperations or jointResourceType.`\n );\n }\n \n // ========================================\n // VALIDATION GUARDS\n // ========================================\n //\n // The numbers below are STABLE LABELS, not a count and not a sequence. They are cited from\n // `resources-relationships-factory.test.ts`, from `resources-registry.shared.core.definitions.ts`\n // and from sibling packages, so renumbering them breaks those references. Two consequences a\n // reader has to know before counting anything here:\n //\n // - there is no Guard 4, and no commit touching this file has ever added or removed one;\n // - three refusals in this sequence carry no number at all (self-referencing MANY-to-MANY\n // below Guard 2, the unresolvable primary scope, and the post-default-resolution repeat of\n // Guard 1 near the end of the function).\n //\n // So \"the guards\" is a larger set than \"the numbered guards\". Enumerate the `throw` statements,\n // not the labels.\n\n // Guard 1: `isPrimaryScope` cannot be paired with `OPTIONAL_CONTEXT`.\n //\n // ## Why this guard exists (and why it only forbids OPTIONAL_CONTEXT, not STANDALONE)\n //\n // `isPrimaryScope` and `accessScopeStrategy` govern two ORTHOGONAL concerns:\n //\n // - `isPrimaryScope` — ownership graph anchor: \"this parent is the\n // row's structural scope root\". Drives the\n // resource's `resourcePrimaryScope` enum, which\n // in turn drives scope-aware services (auth,\n // notifications, execution context, etc).\n // - `accessScopeStrategy` — URL routing + fetch-time context gating.\n // STANDALONE → no URL segment, no context gate\n // REQUIRES_CONTEXT → mandatory URL segment + gate\n // OPTIONAL_CONTEXT → optional URL segment\n //\n // The two concerns are already orthogonalized in the URL builder\n // (`generateParentCombinations` filters out STANDALONE parents *before*\n // bucketing the rest by `isPrimaryScope`), so a `STANDALONE + isPrimaryScope`\n // rel is URL-inert by construction — it contributes zero path segments and\n // simply anchors the scope enum. That is a coherent, intended configuration\n // (e.g. internal ledgers like `jobExecutions` that are APP-scoped but not\n // routed under `/applications/:id/…`, user-owned credential stores that are\n // USER_SELF-scoped but not exposed as routable child resources).\n //\n // `OPTIONAL_CONTEXT + isPrimaryScope` is however INCOHERENT under the current\n // combinator: `generateParentCombinations` puts every `isPrimaryScope` edge\n // into the always-on bucket, which would force an \"optional\" primary parent\n // to appear in every URL combination — contradicting its optionality. That\n // redesign is out of scope here; until then the guard remains.\n if (options?.isPrimaryScope &&\n options?.accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope cannot have accessScopeStrategy=OPTIONAL_CONTEXT.\\n` +\n `A primary-scope rel marks the structural ownership anchor; OPTIONAL_CONTEXT\\n` +\n `would make the anchor optional in URLs, which the current URL combinator\\n` +\n `cannot express coherently. Use REQUIRES_CONTEXT (routed anchor) or\\n` +\n `STANDALONE (logical anchor, not routed).`\n );\n }\n \n // Guard 2: MANY-to-MANY requires jointResourceType (junction table)\n if (cardinality1 === ResourceRelationshipCardinality.MANY && \n cardinality2 === ResourceRelationshipCardinality.MANY &&\n !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `MANY-to-MANY relationships require a jointResourceType (junction table).`\n );\n }\n\n if (\n cardinality1 === ResourceRelationshipCardinality.MANY &&\n cardinality2 === ResourceRelationshipCardinality.MANY &&\n options?.jointResourceType &&\n resourceType1 === resourceType2\n ) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing MANY-to-MANY relationships cannot be authored as one association declaration.\\n` +\n `Declare explicit junction-resource relationships so source and target edge identity stay explicit.`\n );\n }\n \n // (The refusal immediately above carries no guard number: self-referencing MANY-to-MANY.)\n //\n // Note: foreignKeyField IS valid with isPrimaryScope - it specifies the FK field on the child\n // resource that points back to the parent, which is useful for 1:1 relationships\n \n // Guard 3: jointResourceType should not be combined with foreignKeyField.\n // Self-referencing many-to-many is rejected above because a single\n // declaration cannot encode two FK identities for the same peer resource.\n if (options?.jointResourceType && options?.foreignKeyField && resourceType1 !== resourceType2) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Cannot combine jointResourceType and foreignKeyField for non-self-referencing M:N.\\n` +\n `Use jointResourceType for MANY-to-MANY via junction table.`\n );\n }\n \n // Guard 5: foreignKeyField must end with 'Id' or 'Ids' (reserved for FK naming convention)\n if (options?.foreignKeyField) {\n const fkField = options.foreignKeyField;\n if (!fkField.endsWith('Id') && !fkField.endsWith('Ids')) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `foreignKeyField \"${fkField}\" must end with 'Id' or 'Ids' (e.g., assignedToUserId, memberIds).\\n` +\n `This naming convention is reserved for foreign key fields.`\n );\n }\n }\n \n // Guard 6: Self-referencing 1:N/1:1 relationships require explicit foreignKeyField.\n // Without it, the default FK (derived from resourceFieldIdentifier) would collide with\n // itself in URL param generation — e.g., /resource/{resourceId}/resource/{resourceId}.\n // M:N self-refs are rejected above: one declaration cannot encode distinct\n // source/target FK identities for the same peer resource.\n if (resourceType1 === resourceType2 && !options?.jointResourceType) {\n if (!options?.foreignKeyField) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST specify foreignKeyField explicitly.\\n` +\n `Without it, URL parameter names collide (same resource type on both sides).`\n );\n }\n\n // Guard 7: Self-referencing 1:N/1:1 relationships must have OPTIONAL parent requirement.\n // Tree roots have no parent — MANDATORY would make root-level access impossible.\n const effectiveParentReq = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n if (effectiveParentReq === ResourceParentResourceRequirement.MANDATORY) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Self-referencing 1:N/1:1 relationships MUST have parentResourceRequirement=OPTIONAL.\\n` +\n `Tree/graph roots have no parent — MANDATORY would make root-level access impossible.`\n );\n }\n }\n\n // Guard 8: junction-backed relationships are association semantics when nature is explicit.\n if (options?.jointResourceType && options?.nature && options.nature !== RelationshipNature.ASSOCIATION) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Relationships with jointResourceType must declare nature=ASSOCIATION.\\n` +\n `Junction-backed relationships are association-centric in the shared model.`\n );\n }\n\n // Guard 9: explicit association semantics require a junction resource.\n if (options?.nature === RelationshipNature.ASSOCIATION && !options?.jointResourceType) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `nature=ASSOCIATION requires jointResourceType.\\n` +\n `Association semantics are reserved for explicit link-management / junction-backed relationships.`\n );\n }\n \n // ========================================\n // PRIMARY SCOPE MAPPING\n // ========================================\n \n let primaryScope : ResourcePrimaryScope | undefined;\n if (options?.isPrimaryScope) {\n \n const primaryScopeMap = {\n [CoreResourceType.ORGANIZATIONS]: ResourcePrimaryScope.ORGANIZATIONS,\n [CoreResourceType.USERS]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.USER_SELF]: ResourcePrimaryScope.USER_SELF,\n [CoreResourceType.APPLICATION]: ResourcePrimaryScope.APPLICATION,\n [CoreResourceType.ANONYMOUS_USERS]: ResourcePrimaryScope.ANONYMOUS,\n }\n primaryScope = primaryScopeMap[resourceType1 as CoreResourceType];\n \n if (!primaryScope) {\n throw createConfigurationError(`Resource type ${resourceType1} is not related to a primary scope`);\n }\n }\n \n // ========================================\n // ACCESS SCOPE STRATEGY DEFAULTS\n // ========================================\n\n const parentResourceRequirement = options?.parentResourceRequirement || ResourceParentResourceRequirement.MANDATORY;\n let accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n\n if (!options?.accessScopeStrategy) {\n if (parentResourceRequirement === ResourceParentResourceRequirement.MANDATORY) {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.REQUIRES_CONTEXT;\n } else {\n accessScopeStrategy = ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT;\n }\n } else {\n accessScopeStrategy = options.accessScopeStrategy;\n }\n\n // Post-default-resolution check: `isPrimaryScope` must resolve to REQUIRES_CONTEXT\n // or STANDALONE, never OPTIONAL_CONTEXT. See Guard 1 above for the full\n // rationale (ownership graph vs URL routing are orthogonal, except for the\n // OPTIONAL_CONTEXT incoherence).\n //\n // This second gate exists because `accessScopeStrategy` may be filled in by\n // the DEFAULTS block above (lines 332-340) rather than authored explicitly.\n // Guard 1 only fires on explicit authoring; this one catches the defaulted\n // case where `parentResourceRequirement=OPTIONAL` silently resolves to\n // `OPTIONAL_CONTEXT`.\n if (options?.isPrimaryScope &&\n accessScopeStrategy === ResourceRelationshipAccessScopeStrategy.OPTIONAL_CONTEXT) {\n throw createConfigurationError(\n `Invalid relationship configuration: ${resourceType1} → ${resourceType2}\\n` +\n `Primary scope rel defaulted to accessScopeStrategy=OPTIONAL_CONTEXT\\n` +\n `(triggered by parentResourceRequirement=OPTIONAL without explicit strategy).\\n` +\n `Declare accessScopeStrategy=REQUIRES_CONTEXT (routed anchor) or STANDALONE\\n` +\n `(logical anchor, not routed) explicitly.`\n );\n }\n \n // Parse childOperations and display to apply defaults and convert to parsed types\n const parsedChildOperations = options?.childOperations \n ? ChildOperationsConfigSchema.parse(options.childOperations)\n : undefined;\n \n const parsedDisplay = options?.display\n ? RelationshipDisplayConfigSchema.parse(options.display)\n : undefined;\n\n const relationshipDeclaration: ResourceRelationshipDeclaration = {\n cardinality1,\n cardinality2,\n resourceType1,\n resourceType2,\n accessScopeStrategy,\n parentResourceRequirement,\n isPrimaryScope: options?.isPrimaryScope || false,\n primaryScope,\n jointResourceType: options?.jointResourceType || undefined,\n allowCycle: options?.allowCycle || false,\n isDisabled: options?.isDisabled || false,\n // Context policy for relationship traversal\n contextPolicy: options?.contextPolicy,\n // High-level shared semantic meaning authored by app developers.\n nature: options.nature,\n // Optional explicit semantic read intent authored by app developers.\n read: options?.read,\n // Child operations configuration (lifecycle + nested DTOs) - parsed to apply defaults\n childOperations: parsedChildOperations,\n // Static discriminator filter for conditional relationships\n discriminator: options?.discriminator,\n // Function-based condition for conditional relationships\n condition: options?.condition,\n // Frontend display configuration - parsed to apply defaults\n display: parsedDisplay,\n // Foreign key field for disambiguation or non-standard naming\n foreignKeyField: options?.foreignKeyField,\n // Write-time scope-membership constraint (opt-in; enforced on CREATE/UPDATE by write-integrity)\n scopeMembership: options?.scopeMembership,\n };\n\n return Resources_SharedUtils.compileRelationshipDeclaration(relationshipDeclaration);\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources-serialization.shared.schemas.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"resources-serialization.shared.schemas.d.ts","sourceRoot":"","sources":["../../../src/resources/resources-serialization.shared.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,23 @@ export declare enum CoreResourceType {
|
|
|
60
60
|
ORGANIZATION_PROFILES = "organizationProfiles",
|
|
61
61
|
ORGANIZATION_PREFERENCES = "organizationPreferences",
|
|
62
62
|
PLATFORM_ACCESS_GRANTS = "platformAccessGrants",
|
|
63
|
+
/**
|
|
64
|
+
* The APPLICATION-WIDE sibling of {@link CoreResourceType.PLATFORM_ACCESS_GRANTS}.
|
|
65
|
+
*
|
|
66
|
+
* Same lifecycle, same vocabulary, same expiry control — a DIFFERENT scope, and the scope is the
|
|
67
|
+
* whole reason it is a second resource rather than a field on the first. A platform access grant
|
|
68
|
+
* is an ORGANIZATIONS-scoped row addressed at `/organizations/{organizationId}/…`, because the
|
|
69
|
+
* tenant it names is the party that sees, approves and revokes it. An application-wide elevation
|
|
70
|
+
* names NO tenant, so there is nothing for that route to carry and nobody for the Lockbox posture
|
|
71
|
+
* to ask.
|
|
72
|
+
*
|
|
73
|
+
* Its approval is therefore the TWO-PERSON RULE: a second platform administrator, never the
|
|
74
|
+
* requester. `.claude/rules/administrative-continuity-floors.md` — "a second factor authenticates
|
|
75
|
+
* a session; only a second signature constrains an authenticated operator". Customer approval is
|
|
76
|
+
* the industry ceiling (Lockbox, Access Approval) and is structurally unavailable here, so a
|
|
77
|
+
* second signature is the strongest control that exists for this act.
|
|
78
|
+
*/
|
|
79
|
+
APPLICATION_ACCESS_GRANTS = "applicationAccessGrants",
|
|
63
80
|
ORGANIZATION_NOTIFICATIONS = "organizationNotifications",
|
|
64
81
|
ORGANIZATION_FEATURES = "organizationFeatures",
|
|
65
82
|
USER_FEATURES = "userFeatures",
|
|
@@ -68,6 +85,14 @@ export declare enum CoreResourceType {
|
|
|
68
85
|
ORGANIZATION_UNIT_MEMBERS = "organizationUnitMembers",
|
|
69
86
|
ORG_API_KEYS = "organizationApiKeys",
|
|
70
87
|
OAUTH_CLIENTS_ORGANIZATION = "organizationOAuthClients",
|
|
88
|
+
/**
|
|
89
|
+
* An organization's OWN credential toward a third-party provider — its Slack workspace token,
|
|
90
|
+
* its CRM API key. Distinct from the deployment's `process.env` secret, which is one value for
|
|
91
|
+
* every tenant in the application, and distinct from a user's delegated OAuth grant (#333),
|
|
92
|
+
* which has a different owner and a different revocation.
|
|
93
|
+
*/
|
|
94
|
+
ORG_PROVIDER_CREDENTIALS = "organizationProviderCredentials",
|
|
95
|
+
USER_PROVIDER_CREDENTIALS = "userProviderCredentials",
|
|
71
96
|
ORGANIZATION_SCIM_TOKENS = "organizationScimTokens",
|
|
72
97
|
ORGANIZATION_SCIM_PROVISIONING_CONFIG = "organizationScimProvisioningConfig",
|
|
73
98
|
ORGANIZATION_SSO_CONNECTIONS = "organizationSsoConnections",
|
|
@@ -100,6 +125,35 @@ export declare enum CoreResourceType {
|
|
|
100
125
|
PROMOTIONS = "promotions",
|
|
101
126
|
REFERRALS = "referrals",
|
|
102
127
|
AUDIT_LOGS = "auditLogs",
|
|
128
|
+
/**
|
|
129
|
+
* The APPLICATION-scoped door onto the SAME audit rows `AUDIT_LOGS` serves.
|
|
130
|
+
*
|
|
131
|
+
* `AUDIT_LOGS` is organization-scoped: its only route is
|
|
132
|
+
* `/organizations/{organizationId}/audit-logs`, so it can only ever return rows carrying that
|
|
133
|
+
* tenant. But a security event is frequently application-scoped BY NATURE — `logUserLogin` takes
|
|
134
|
+
* `organizationId` as OPTIONAL because at login no organization is selected, and the same holds
|
|
135
|
+
* for session eviction, token refresh and application-wide authentication-policy changes.
|
|
136
|
+
* Measured on a dogfood application (#317): 94 of 127 rows carried no organization and were
|
|
137
|
+
* therefore reachable through no API at all.
|
|
138
|
+
*
|
|
139
|
+
* This type is that missing door, and it is a SEPARATE type rather than a second route on
|
|
140
|
+
* `AUDIT_LOGS` because the URL combinator forbids the alternative: `generateParentCombinations`
|
|
141
|
+
* puts every `isPrimaryScope` and every `REQUIRES_CONTEXT` parent into EVERY combination, so
|
|
142
|
+
* routing `AUDIT_LOGS`' application edge would rewrite its organization route to
|
|
143
|
+
* `/applications/{applicationId}/organizations/{organizationId}/audit-logs` and break every
|
|
144
|
+
* existing consumer. A sibling type with a single application parent takes the route it needs and
|
|
145
|
+
* leaves the organization door untouched.
|
|
146
|
+
*
|
|
147
|
+
* Both types address ONE row set through `RESOURCE_SHARED_PERSISTENCE_COLLECTION_ALIASES` — the
|
|
148
|
+
* mechanism `USER_SELF` already uses to address `USERS`' rows. Two doors, one record set: the
|
|
149
|
+
* organization door stays tenant-filtered, this one is `APP_ADMIN_SUPER_ADMIN`-only, and a read
|
|
150
|
+
* here that touches a tenant-attributed row emits `CROSS_TENANT_ADMINISTRATIVE_ACCESS`, once per
|
|
151
|
+
* tenant reached. That emission is NOT inherited: `authorizeOrganizations`, where the event is
|
|
152
|
+
* otherwise raised, runs only for ORGANIZATIONS-scoped resources. Each read variant here declares
|
|
153
|
+
* `admitsCrossTenantPlatformAdministration`, and that declaration is what enrols the read in the
|
|
154
|
+
* trail (`security/authorizations/cross-tenant-read-observation.backend.ts`).
|
|
155
|
+
*/
|
|
156
|
+
APPLICATION_AUDIT_LOGS = "applicationAuditLogs",
|
|
103
157
|
USER_NOTIFICATION_BADGES = "userNotificationBadges",
|
|
104
158
|
ORGANIZATION_NOTIFICATION_BADGES = "organizationNotificationBadges",
|
|
105
159
|
ORGANIZATION_WEBHOOK_CONFIG = "organizationWebhookConfig",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.shared.core.definitions.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"resources.shared.core.definitions.d.ts","sourceRoot":"","sources":["../../../src/resources/resources.shared.core.definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,23 @@ export var CoreResourceType;
|
|
|
85
85
|
CoreResourceType["ORGANIZATION_PROFILES"] = "organizationProfiles";
|
|
86
86
|
CoreResourceType["ORGANIZATION_PREFERENCES"] = "organizationPreferences";
|
|
87
87
|
CoreResourceType["PLATFORM_ACCESS_GRANTS"] = "platformAccessGrants";
|
|
88
|
+
/**
|
|
89
|
+
* The APPLICATION-WIDE sibling of {@link CoreResourceType.PLATFORM_ACCESS_GRANTS}.
|
|
90
|
+
*
|
|
91
|
+
* Same lifecycle, same vocabulary, same expiry control — a DIFFERENT scope, and the scope is the
|
|
92
|
+
* whole reason it is a second resource rather than a field on the first. A platform access grant
|
|
93
|
+
* is an ORGANIZATIONS-scoped row addressed at `/organizations/{organizationId}/…`, because the
|
|
94
|
+
* tenant it names is the party that sees, approves and revokes it. An application-wide elevation
|
|
95
|
+
* names NO tenant, so there is nothing for that route to carry and nobody for the Lockbox posture
|
|
96
|
+
* to ask.
|
|
97
|
+
*
|
|
98
|
+
* Its approval is therefore the TWO-PERSON RULE: a second platform administrator, never the
|
|
99
|
+
* requester. `.claude/rules/administrative-continuity-floors.md` — "a second factor authenticates
|
|
100
|
+
* a session; only a second signature constrains an authenticated operator". Customer approval is
|
|
101
|
+
* the industry ceiling (Lockbox, Access Approval) and is structurally unavailable here, so a
|
|
102
|
+
* second signature is the strongest control that exists for this act.
|
|
103
|
+
*/
|
|
104
|
+
CoreResourceType["APPLICATION_ACCESS_GRANTS"] = "applicationAccessGrants";
|
|
88
105
|
CoreResourceType["ORGANIZATION_NOTIFICATIONS"] = "organizationNotifications";
|
|
89
106
|
CoreResourceType["ORGANIZATION_FEATURES"] = "organizationFeatures";
|
|
90
107
|
CoreResourceType["USER_FEATURES"] = "userFeatures";
|
|
@@ -93,6 +110,14 @@ export var CoreResourceType;
|
|
|
93
110
|
CoreResourceType["ORGANIZATION_UNIT_MEMBERS"] = "organizationUnitMembers";
|
|
94
111
|
CoreResourceType["ORG_API_KEYS"] = "organizationApiKeys";
|
|
95
112
|
CoreResourceType["OAUTH_CLIENTS_ORGANIZATION"] = "organizationOAuthClients";
|
|
113
|
+
/**
|
|
114
|
+
* An organization's OWN credential toward a third-party provider — its Slack workspace token,
|
|
115
|
+
* its CRM API key. Distinct from the deployment's `process.env` secret, which is one value for
|
|
116
|
+
* every tenant in the application, and distinct from a user's delegated OAuth grant (#333),
|
|
117
|
+
* which has a different owner and a different revocation.
|
|
118
|
+
*/
|
|
119
|
+
CoreResourceType["ORG_PROVIDER_CREDENTIALS"] = "organizationProviderCredentials";
|
|
120
|
+
CoreResourceType["USER_PROVIDER_CREDENTIALS"] = "userProviderCredentials";
|
|
96
121
|
CoreResourceType["ORGANIZATION_SCIM_TOKENS"] = "organizationScimTokens";
|
|
97
122
|
CoreResourceType["ORGANIZATION_SCIM_PROVISIONING_CONFIG"] = "organizationScimProvisioningConfig";
|
|
98
123
|
// SSO Resources (Phase H-SSO)
|
|
@@ -134,6 +159,35 @@ export var CoreResourceType;
|
|
|
134
159
|
CoreResourceType["REFERRALS"] = "referrals";
|
|
135
160
|
// Audit and Compliance Resources
|
|
136
161
|
CoreResourceType["AUDIT_LOGS"] = "auditLogs";
|
|
162
|
+
/**
|
|
163
|
+
* The APPLICATION-scoped door onto the SAME audit rows `AUDIT_LOGS` serves.
|
|
164
|
+
*
|
|
165
|
+
* `AUDIT_LOGS` is organization-scoped: its only route is
|
|
166
|
+
* `/organizations/{organizationId}/audit-logs`, so it can only ever return rows carrying that
|
|
167
|
+
* tenant. But a security event is frequently application-scoped BY NATURE — `logUserLogin` takes
|
|
168
|
+
* `organizationId` as OPTIONAL because at login no organization is selected, and the same holds
|
|
169
|
+
* for session eviction, token refresh and application-wide authentication-policy changes.
|
|
170
|
+
* Measured on a dogfood application (#317): 94 of 127 rows carried no organization and were
|
|
171
|
+
* therefore reachable through no API at all.
|
|
172
|
+
*
|
|
173
|
+
* This type is that missing door, and it is a SEPARATE type rather than a second route on
|
|
174
|
+
* `AUDIT_LOGS` because the URL combinator forbids the alternative: `generateParentCombinations`
|
|
175
|
+
* puts every `isPrimaryScope` and every `REQUIRES_CONTEXT` parent into EVERY combination, so
|
|
176
|
+
* routing `AUDIT_LOGS`' application edge would rewrite its organization route to
|
|
177
|
+
* `/applications/{applicationId}/organizations/{organizationId}/audit-logs` and break every
|
|
178
|
+
* existing consumer. A sibling type with a single application parent takes the route it needs and
|
|
179
|
+
* leaves the organization door untouched.
|
|
180
|
+
*
|
|
181
|
+
* Both types address ONE row set through `RESOURCE_SHARED_PERSISTENCE_COLLECTION_ALIASES` — the
|
|
182
|
+
* mechanism `USER_SELF` already uses to address `USERS`' rows. Two doors, one record set: the
|
|
183
|
+
* organization door stays tenant-filtered, this one is `APP_ADMIN_SUPER_ADMIN`-only, and a read
|
|
184
|
+
* here that touches a tenant-attributed row emits `CROSS_TENANT_ADMINISTRATIVE_ACCESS`, once per
|
|
185
|
+
* tenant reached. That emission is NOT inherited: `authorizeOrganizations`, where the event is
|
|
186
|
+
* otherwise raised, runs only for ORGANIZATIONS-scoped resources. Each read variant here declares
|
|
187
|
+
* `admitsCrossTenantPlatformAdministration`, and that declaration is what enrols the read in the
|
|
188
|
+
* trail (`security/authorizations/cross-tenant-read-observation.backend.ts`).
|
|
189
|
+
*/
|
|
190
|
+
CoreResourceType["APPLICATION_AUDIT_LOGS"] = "applicationAuditLogs";
|
|
137
191
|
// Notification Badges Resources — polymorphic dual-scope (USER + ORG).
|
|
138
192
|
// Each scope owns its own collection and its own access-control surface:
|
|
139
193
|
// - USER variant: the user themselves reads/lists their badges; CREATE/UPDATE
|
|
@@ -150,6 +204,17 @@ export var CoreResourceType;
|
|
|
150
204
|
CoreResourceType["APPLICATION_WEBHOOK_CONFIG"] = "applicationWebhookConfig";
|
|
151
205
|
CoreResourceType["ORGANIZATION_M2M_WEBHOOK_DELIVERY_LOG"] = "organizationM2mWebhookDeliveryLog";
|
|
152
206
|
CoreResourceType["APPLICATION_M2M_WEBHOOK_DELIVERY_LOG"] = "applicationM2mWebhookDeliveryLog";
|
|
207
|
+
// There is NO email equivalent of these two, and that is a DECISION rather than an oversight
|
|
208
|
+
// (#412, 2026-09-08). A sent email leaves log lines and nothing else — no resource, no delivery
|
|
209
|
+
// record — so "did this customer receive it?" is answered with the email provider's own tooling,
|
|
210
|
+
// never with Wildo. The asymmetry with these webhook logs is what makes the absence look
|
|
211
|
+
// accidental, which is why it is written down HERE as well as at the email service.
|
|
212
|
+
//
|
|
213
|
+
// The cost is not the table. A persisted email record carries retention policy, privacy
|
|
214
|
+
// classification, subject-export and erasure obligations FOR MESSAGE CONTENT — a new per-user
|
|
215
|
+
// personal-data store, for an answer a vendor already gives. A metadata-only variant (recipient,
|
|
216
|
+
// template, timestamp, provider id; no body) was available and also declined, because it is the
|
|
217
|
+
// same set of obligations over a smaller payload.
|
|
153
218
|
// File Management Resources
|
|
154
219
|
CoreResourceType["FILES"] = "files";
|
|
155
220
|
// Queue/Job Resources (internal, repository-only)
|
|
@@ -327,6 +392,7 @@ export const coreResourceShared_FieldIdentifier = {
|
|
|
327
392
|
[CoreResourceType.ORGANIZATION_PROFILES]: 'organizationProfileId',
|
|
328
393
|
[CoreResourceType.ORGANIZATION_PREFERENCES]: 'organizationPreferencesId',
|
|
329
394
|
[CoreResourceType.PLATFORM_ACCESS_GRANTS]: 'platformAccessGrantId',
|
|
395
|
+
[CoreResourceType.APPLICATION_ACCESS_GRANTS]: 'applicationAccessGrantId',
|
|
330
396
|
[CoreResourceType.ORGANIZATION_NOTIFICATIONS]: 'organizationNotificationsId',
|
|
331
397
|
[CoreResourceType.ORGANIZATION_FEATURES]: 'organizationFeaturesId',
|
|
332
398
|
[CoreResourceType.USER_FEATURES]: 'userFeaturesId',
|
|
@@ -334,6 +400,8 @@ export const coreResourceShared_FieldIdentifier = {
|
|
|
334
400
|
[CoreResourceType.ORGANIZATION_UNIT_MEMBERS]: 'organizationUnitMemberId',
|
|
335
401
|
[CoreResourceType.ORG_API_KEYS]: 'orgApiKeyId',
|
|
336
402
|
[CoreResourceType.OAUTH_CLIENTS_ORGANIZATION]: 'orgOAuthClientId',
|
|
403
|
+
[CoreResourceType.ORG_PROVIDER_CREDENTIALS]: 'orgProviderCredentialId',
|
|
404
|
+
[CoreResourceType.USER_PROVIDER_CREDENTIALS]: 'userProviderCredentialId',
|
|
337
405
|
[CoreResourceType.ORGANIZATION_SCIM_TOKENS]: 'organizationScimTokenId',
|
|
338
406
|
[CoreResourceType.ORGANIZATION_SCIM_PROVISIONING_CONFIG]: 'organizationScimProvisioningConfigId',
|
|
339
407
|
[CoreResourceType.APPLICATION_API_KEYS]: 'appApiKeyId',
|
|
@@ -365,6 +433,7 @@ export const coreResourceShared_FieldIdentifier = {
|
|
|
365
433
|
[CoreResourceType.PROMOTIONS]: 'promotionId',
|
|
366
434
|
[CoreResourceType.REFERRALS]: 'referralId',
|
|
367
435
|
[CoreResourceType.AUDIT_LOGS]: 'auditLogId',
|
|
436
|
+
[CoreResourceType.APPLICATION_AUDIT_LOGS]: 'applicationAuditLogId',
|
|
368
437
|
// Notification Badges — polymorphic dual-scope variants
|
|
369
438
|
[CoreResourceType.USER_NOTIFICATION_BADGES]: 'userNotificationBadgeId',
|
|
370
439
|
[CoreResourceType.ORGANIZATION_NOTIFICATION_BADGES]: 'organizationNotificationBadgeId',
|