@cratis/screenplay-language 4.124.0 → 4.124.1
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/README.md +50 -0
- package/dist/bundles/TypeReferenceSymbol.js +2 -0
- package/dist/bundles/TypeReferenceSymbol.js.map +1 -0
- package/dist/bundles/_virtual/_virtual/_rolldown/runtime.js +1 -0
- package/dist/bundles/bmp-word-characters.js +2 -0
- package/dist/bundles/bmp-word-characters.js.map +1 -0
- package/dist/bundles/case-authoring.js +3 -0
- package/dist/bundles/case-authoring.js.map +1 -0
- package/dist/bundles/code-actions.js +2 -0
- package/dist/bundles/code-actions.js.map +1 -0
- package/dist/bundles/compiler/Authoring/QuickFixes.js +5 -0
- package/dist/bundles/compiler/Authoring/QuickFixes.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/DeclaredDependencies.js +2 -0
- package/dist/bundles/compiler/Dependencies/DeclaredDependencies.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/DeclaredDependencyTargets.js +2 -0
- package/dist/bundles/compiler/Dependencies/DeclaredDependencyTargets.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/DependencyGraph.js +2 -0
- package/dist/bundles/compiler/Dependencies/DependencyGraph.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/DependencyKind.js +2 -0
- package/dist/bundles/compiler/Dependencies/DependencyKind.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/InvalidDependencyQuery.js +2 -0
- package/dist/bundles/compiler/Dependencies/InvalidDependencyQuery.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/SliceReferences.js +2 -0
- package/dist/bundles/compiler/Dependencies/SliceReferences.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/StronglyConnectedGroups.js +2 -0
- package/dist/bundles/compiler/Dependencies/StronglyConnectedGroups.js.map +1 -0
- package/dist/bundles/compiler/Dependencies/index.js +1 -0
- package/dist/bundles/compiler/Diagnostics/DiagnosticCodes.js +2 -0
- package/dist/bundles/compiler/Diagnostics/DiagnosticCodes.js.map +1 -0
- package/dist/bundles/compiler/Diagnostics/ProductionDestinationDiagnostics.js +2 -0
- package/dist/bundles/compiler/Diagnostics/ProductionDestinationDiagnostics.js.map +1 -0
- package/dist/bundles/compiler/Diagnostics/SourceLocation.js +2 -0
- package/dist/bundles/compiler/Diagnostics/SourceLocation.js.map +1 -0
- package/dist/bundles/compiler/Files/AuthoredOrder.js +2 -0
- package/dist/bundles/compiler/Files/AuthoredOrder.js.map +1 -0
- package/dist/bundles/compiler/Files/OrderingRoot.js +1 -0
- package/dist/bundles/compiler/Files/PlayApplicationAssembly.js +2 -0
- package/dist/bundles/compiler/Files/PlayApplicationAssembly.js.map +1 -0
- package/dist/bundles/compiler/Files/PlayFolderMerge.js +2 -0
- package/dist/bundles/compiler/Files/PlayFolderMerge.js.map +1 -0
- package/dist/bundles/compiler/Files/PlayImports.js +1 -0
- package/dist/bundles/compiler/Files/PlayPlacement.js +2 -0
- package/dist/bundles/compiler/Files/PlayPlacement.js.map +1 -0
- package/dist/bundles/compiler/Files/TimelineOrder.js +2 -0
- package/dist/bundles/compiler/Files/TimelineOrder.js.map +1 -0
- package/dist/bundles/compiler/Parsing/AuthorizeParser.js +2 -0
- package/dist/bundles/compiler/Parsing/AuthorizeParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CaptureParser.js +2 -0
- package/dist/bundles/compiler/Parsing/CaptureParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CodeBlockParser.js +3 -0
- package/dist/bundles/compiler/Parsing/CodeBlockParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CommandDestinationTypes.js +2 -0
- package/dist/bundles/compiler/Parsing/CommandDestinationTypes.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CommandParser.js +2 -0
- package/dist/bundles/compiler/Parsing/CommandParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CommandReadSources.js +2 -0
- package/dist/bundles/compiler/Parsing/CommandReadSources.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CommandResponseParser.js +2 -0
- package/dist/bundles/compiler/Parsing/CommandResponseParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CommandStreamCandidates.js +2 -0
- package/dist/bundles/compiler/Parsing/CommandStreamCandidates.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CompositeStreamIdValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/CompositeStreamIdValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/CompositionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/CompositionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ConceptComplianceParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ConceptComplianceParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ConditionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ConditionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ConstraintParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ConstraintParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ConstraintPropertyValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/ConstraintPropertyValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/DeclarationParsers.js +2 -0
- package/dist/bundles/compiler/Parsing/DeclarationParsers.js.map +1 -0
- package/dist/bundles/compiler/Parsing/DependencySourceParser.js +2 -0
- package/dist/bundles/compiler/Parsing/DependencySourceParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/DependsOnParser.js +2 -0
- package/dist/bundles/compiler/Parsing/DependsOnParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/DescriptionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/DescriptionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/DocumentationParser.js +2 -0
- package/dist/bundles/compiler/Parsing/DocumentationParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/EventMetadataParser.js +2 -0
- package/dist/bundles/compiler/Parsing/EventMetadataParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/EventSourceParser.js +2 -0
- package/dist/bundles/compiler/Parsing/EventSourceParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/EventSourceValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/EventSourceValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/EventSubjectValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/EventSubjectValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ExpressionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ExpressionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/FeatureBody.js +2 -0
- package/dist/bundles/compiler/Parsing/FeatureBody.js.map +1 -0
- package/dist/bundles/compiler/Parsing/FileImportParser.js +2 -0
- package/dist/bundles/compiler/Parsing/FileImportParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/FileReferences.js +2 -0
- package/dist/bundles/compiler/Parsing/FileReferences.js.map +1 -0
- package/dist/bundles/compiler/Parsing/GuardedActionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/GuardedActionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/GuardedActionShadowing.js +2 -0
- package/dist/bundles/compiler/Parsing/GuardedActionShadowing.js.map +1 -0
- package/dist/bundles/compiler/Parsing/GuardedActionValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/GuardedActionValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/IdentifierComplianceValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/IdentifierComplianceValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/IdentityParser.js +2 -0
- package/dist/bundles/compiler/Parsing/IdentityParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/IdentityValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/IdentityValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ImplementationParser.js +3 -0
- package/dist/bundles/compiler/Parsing/ImplementationParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ImportDiscovery.js +1 -0
- package/dist/bundles/compiler/Parsing/InlineEventValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/InlineEventValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/InputUses.js +2 -0
- package/dist/bundles/compiler/Parsing/InputUses.js.map +1 -0
- package/dist/bundles/compiler/Parsing/InteractionAlternatives.js +2 -0
- package/dist/bundles/compiler/Parsing/InteractionAlternatives.js.map +1 -0
- package/dist/bundles/compiler/Parsing/LineReader.js +2 -0
- package/dist/bundles/compiler/Parsing/LineReader.js.map +1 -0
- package/dist/bundles/compiler/Parsing/LineText.js +2 -0
- package/dist/bundles/compiler/Parsing/LineText.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ModuleBody.js +2 -0
- package/dist/bundles/compiler/Parsing/ModuleBody.js.map +1 -0
- package/dist/bundles/compiler/Parsing/OperationParser.js +2 -0
- package/dist/bundles/compiler/Parsing/OperationParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/OperationValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/OperationValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ParserContext.js +2 -0
- package/dist/bundles/compiler/Parsing/ParserContext.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PersonaCallerValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/PersonaCallerValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PolicyParser.js +2 -0
- package/dist/bundles/compiler/Parsing/PolicyParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ProducesParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ProducesParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ProjectionExpressionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ProjectionExpressionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ProjectionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ProjectionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ProjectionTargetValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/ProjectionTargetValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PropertyLineParser.js +2 -0
- package/dist/bundles/compiler/Parsing/PropertyLineParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PublicEventMetadataValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/PublicEventMetadataValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PublicEventUsageCollector.js +2 -0
- package/dist/bundles/compiler/Parsing/PublicEventUsageCollector.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PublicEventUsageValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/PublicEventUsageValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PurposeParser.js +2 -0
- package/dist/bundles/compiler/Parsing/PurposeParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/PurposeValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/PurposeValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/QueryParser.js +2 -0
- package/dist/bundles/compiler/Parsing/QueryParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ReactionIdentityParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ReactionIdentityParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ReactionParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ReactionParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ReactionRefusalValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/ReactionRefusalValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/RedeliveryValues.js +2 -0
- package/dist/bundles/compiler/Parsing/RedeliveryValues.js.map +1 -0
- package/dist/bundles/compiler/Parsing/RefusalDeclarations.js +2 -0
- package/dist/bundles/compiler/Parsing/RefusalDeclarations.js.map +1 -0
- package/dist/bundles/compiler/Parsing/RefusalValueWalker.js +2 -0
- package/dist/bundles/compiler/Parsing/RefusalValueWalker.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ResponseDateValues.js +2 -0
- package/dist/bundles/compiler/Parsing/ResponseDateValues.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ResponseValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/ResponseValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ScreenParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ScreenParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ScreenplayParser.js +2 -0
- package/dist/bundles/compiler/Parsing/ScreenplayParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SeedParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SeedParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SliceParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SliceParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SourceLine.js +2 -0
- package/dist/bundles/compiler/Parsing/SourceLine.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SourceLineSplitter.js +3 -0
- package/dist/bundles/compiler/Parsing/SourceLineSplitter.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SourceOptionsParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SourceOptionsParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationCaseParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationCaseParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationCaseValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationCaseValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationCommandExamples.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationCommandExamples.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationExampleParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationExampleParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationRedeliveryValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationRedeliveryValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationResponseParser.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationResponseParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationRouteComparison.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationRouteComparison.js.map +1 -0
- package/dist/bundles/compiler/Parsing/SpecificationStreamValidator.js +2 -0
- package/dist/bundles/compiler/Parsing/SpecificationStreamValidator.js.map +1 -0
- package/dist/bundles/compiler/Parsing/StructuredValueParser.js +3 -0
- package/dist/bundles/compiler/Parsing/StructuredValueParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/TriggerDataParser.js +2 -0
- package/dist/bundles/compiler/Parsing/TriggerDataParser.js.map +1 -0
- package/dist/bundles/compiler/Parsing/UiBindingParser.js +2 -0
- package/dist/bundles/compiler/Parsing/UiBindingParser.js.map +1 -0
- package/dist/bundles/compiler/ScreenplayCompiler.js +2 -0
- package/dist/bundles/compiler/ScreenplayCompiler.js.map +1 -0
- package/dist/bundles/compiler/Syntax/AuthoringProductionResolver.js +2 -0
- package/dist/bundles/compiler/Syntax/AuthoringProductionResolver.js.map +1 -0
- package/dist/bundles/compiler/Syntax/CaptureEventsSource.js +2 -0
- package/dist/bundles/compiler/Syntax/CaptureEventsSource.js.map +1 -0
- package/dist/bundles/compiler/Syntax/DependencySources.js +2 -0
- package/dist/bundles/compiler/Syntax/DependencySources.js.map +1 -0
- package/dist/bundles/compiler/Syntax/EventDeclarations.js +2 -0
- package/dist/bundles/compiler/Syntax/EventDeclarations.js.map +1 -0
- package/dist/bundles/compiler/Syntax/EventSourceCatalog.js +2 -0
- package/dist/bundles/compiler/Syntax/EventSourceCatalog.js.map +1 -0
- package/dist/bundles/compiler/Syntax/EventSourceReadConfidence.js +2 -0
- package/dist/bundles/compiler/Syntax/EventSourceReadConfidence.js.map +1 -0
- package/dist/bundles/compiler/Syntax/ExactMathFacts.js +2 -0
- package/dist/bundles/compiler/Syntax/ExactMathFacts.js.map +1 -0
- package/dist/bundles/compiler/Syntax/ExactNumber.js +2 -0
- package/dist/bundles/compiler/Syntax/ExactNumber.js.map +1 -0
- package/dist/bundles/compiler/Syntax/InvalidSyntaxJson.js +2 -0
- package/dist/bundles/compiler/Syntax/InvalidSyntaxJson.js.map +1 -0
- package/dist/bundles/compiler/Syntax/LegacyWireProjection.js +2 -0
- package/dist/bundles/compiler/Syntax/LegacyWireProjection.js.map +1 -0
- package/dist/bundles/compiler/Syntax/Operations.js +2 -0
- package/dist/bundles/compiler/Syntax/Operations.js.map +1 -0
- package/dist/bundles/compiler/Syntax/PersonaCallers.js +2 -0
- package/dist/bundles/compiler/Syntax/PersonaCallers.js.map +1 -0
- package/dist/bundles/compiler/Syntax/ProductionDestinations.js +2 -0
- package/dist/bundles/compiler/Syntax/ProductionDestinations.js.map +1 -0
- package/dist/bundles/compiler/Syntax/PublicEventInvariants.js +2 -0
- package/dist/bundles/compiler/Syntax/PublicEventInvariants.js.map +1 -0
- package/dist/bundles/compiler/Syntax/ScreenplaySyntaxWalker.js +2 -0
- package/dist/bundles/compiler/Syntax/ScreenplaySyntaxWalker.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SourceOptions.js +2 -0
- package/dist/bundles/compiler/Syntax/SourceOptions.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SpecificationCaseOrigin.js +2 -0
- package/dist/bundles/compiler/Syntax/SpecificationCaseOrigin.js.map +1 -0
- package/dist/bundles/compiler/Syntax/StreamIdFormatter.js +2 -0
- package/dist/bundles/compiler/Syntax/StreamIdFormatter.js.map +1 -0
- package/dist/bundles/compiler/Syntax/StrictSyntaxJson.js +1 -0
- package/dist/bundles/compiler/Syntax/Structure.js +2 -0
- package/dist/bundles/compiler/Syntax/Structure.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SyntaxCollections.js +2 -0
- package/dist/bundles/compiler/Syntax/SyntaxCollections.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SyntaxInvariants.js +2 -0
- package/dist/bundles/compiler/Syntax/SyntaxInvariants.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SyntaxJson.js +2 -0
- package/dist/bundles/compiler/Syntax/SyntaxJson.js.map +1 -0
- package/dist/bundles/compiler/Syntax/SyntaxMemberContracts.js +2 -0
- package/dist/bundles/compiler/Syntax/SyntaxMemberContracts.js.map +1 -0
- package/dist/bundles/compiler/Syntax/index.js +1 -0
- package/dist/bundles/compiler/Text/ImplementationHintText.js +2 -0
- package/dist/bundles/compiler/Text/ImplementationHintText.js.map +1 -0
- package/dist/bundles/compiler/Text/ReservedWords.js +2 -0
- package/dist/bundles/compiler/Text/ReservedWords.js.map +1 -0
- package/dist/bundles/compiler/Text/SourceStreamNames.js +2 -0
- package/dist/bundles/compiler/Text/SourceStreamNames.js.map +1 -0
- package/dist/bundles/compiler/Text/StringLiteral.js +3 -0
- package/dist/bundles/compiler/Text/StringLiteral.js.map +1 -0
- package/dist/bundles/compiler/Text/ordinalIgnoreCaseKey.js +2 -0
- package/dist/bundles/compiler/Text/ordinalIgnoreCaseKey.js.map +1 -0
- package/dist/bundles/compiler/Text/patterns.js +2 -0
- package/dist/bundles/compiler/Text/patterns.js.map +1 -0
- package/dist/bundles/compiler/index.js +1 -0
- package/dist/bundles/completion-items.js +21 -0
- package/dist/bundles/completion-items.js.map +1 -0
- package/dist/bundles/completion-planner.js +5 -0
- package/dist/bundles/completion-planner.js.map +1 -0
- package/dist/bundles/completions.js +2 -0
- package/dist/bundles/completions.js.map +1 -0
- package/dist/bundles/dependency-completions.js +3 -0
- package/dist/bundles/dependency-completions.js.map +1 -0
- package/dist/bundles/dependency-target-analysis.js +2 -0
- package/dist/bundles/dependency-target-analysis.js.map +1 -0
- package/dist/bundles/diagnostic-codes.js +2 -0
- package/dist/bundles/diagnostic-codes.js.map +1 -0
- package/dist/bundles/diagnostics.js +2 -0
- package/dist/bundles/diagnostics.js.map +1 -0
- package/dist/bundles/document-context.js +2 -0
- package/dist/bundles/document-context.js.map +1 -0
- package/dist/bundles/documentation-item.js +2 -0
- package/dist/bundles/documentation-item.js.map +1 -0
- package/dist/bundles/event-analysis-source.js +2 -0
- package/dist/bundles/event-analysis-source.js.map +1 -0
- package/dist/bundles/event-context-catalog.js +2 -0
- package/dist/bundles/event-context-catalog.js.map +1 -0
- package/dist/bundles/event-context.js +4 -0
- package/dist/bundles/event-context.js.map +1 -0
- package/dist/bundles/event-source-authoring.js +13 -0
- package/dist/bundles/event-source-authoring.js.map +1 -0
- package/dist/bundles/example-analysis.js +3 -0
- package/dist/bundles/example-analysis.js.map +1 -0
- package/dist/bundles/example-authoring.js +3 -0
- package/dist/bundles/example-authoring.js.map +1 -0
- package/dist/bundles/example-declaration-items.js +2 -0
- package/dist/bundles/example-declaration-items.js.map +1 -0
- package/dist/bundles/example-values.js +2 -0
- package/dist/bundles/example-values.js.map +1 -0
- package/dist/bundles/file-imports.js +2 -0
- package/dist/bundles/file-imports.js.map +1 -0
- package/dist/bundles/file-references.js +2 -0
- package/dist/bundles/file-references.js.map +1 -0
- package/dist/bundles/hover-content.js +6 -0
- package/dist/bundles/hover-content.js.map +1 -0
- package/dist/bundles/hover.js +2 -0
- package/dist/bundles/hover.js.map +1 -0
- package/dist/bundles/index.js +2 -104
- package/dist/bundles/index.js.map +1 -7
- package/dist/bundles/inlay-hints.js +2 -0
- package/dist/bundles/inlay-hints.js.map +1 -0
- package/dist/bundles/inline-completions.js +2 -0
- package/dist/bundles/inline-completions.js.map +1 -0
- package/dist/bundles/inline-event-validation.js +2 -0
- package/dist/bundles/inline-event-validation.js.map +1 -0
- package/dist/bundles/keyword-docs.js +2 -0
- package/dist/bundles/keyword-docs.js.map +1 -0
- package/dist/bundles/language.js +2 -0
- package/dist/bundles/language.js.map +1 -0
- package/dist/bundles/named-rule-context.js +2 -0
- package/dist/bundles/named-rule-context.js.map +1 -0
- package/dist/bundles/operation-authoring.js +7 -0
- package/dist/bundles/operation-authoring.js.map +1 -0
- package/dist/bundles/persona-analysis.js +2 -0
- package/dist/bundles/persona-analysis.js.map +1 -0
- package/dist/bundles/production-destinations.js +2 -0
- package/dist/bundles/production-destinations.js.map +1 -0
- package/dist/bundles/purpose-items.js +2 -0
- package/dist/bundles/purpose-items.js.map +1 -0
- package/dist/bundles/reaction-authoring.js +5 -0
- package/dist/bundles/reaction-authoring.js.map +1 -0
- package/dist/bundles/refusal-context.js +2 -0
- package/dist/bundles/refusal-context.js.map +1 -0
- package/dist/bundles/response-analysis.js +7 -0
- package/dist/bundles/response-analysis.js.map +1 -0
- package/dist/bundles/response-completions.js +2 -0
- package/dist/bundles/response-completions.js.map +1 -0
- package/dist/bundles/response-tokens.js +3 -0
- package/dist/bundles/response-tokens.js.map +1 -0
- package/dist/bundles/scope-items.js +18 -0
- package/dist/bundles/scope-items.js.map +1 -0
- package/dist/bundles/structure-completions.js +7 -0
- package/dist/bundles/structure-completions.js.map +1 -0
- package/dist/bundles/sub-language-registry.js +2 -0
- package/dist/bundles/sub-language-registry.js.map +1 -0
- package/dist/bundles/sub-languages/capture/CompletionProvider.js +2 -0
- package/dist/bundles/sub-languages/capture/CompletionProvider.js.map +1 -0
- package/dist/bundles/sub-languages/capture/HoverProvider.js +60 -0
- package/dist/bundles/sub-languages/capture/HoverProvider.js.map +1 -0
- package/dist/bundles/sub-languages/capture/Validator.js +2 -0
- package/dist/bundles/sub-languages/capture/Validator.js.map +1 -0
- package/dist/bundles/sub-languages/capture/index.js +2 -40
- package/dist/bundles/sub-languages/capture/index.js.map +1 -7
- package/dist/bundles/sub-languages/capture/language.js +2 -0
- package/dist/bundles/sub-languages/capture/language.js.map +1 -0
- package/dist/bundles/sub-languages/cdl.js +2 -0
- package/dist/bundles/sub-languages/cdl.js.map +1 -0
- package/dist/bundles/sub-languages/pdl.js +2 -0
- package/dist/bundles/sub-languages/pdl.js.map +1 -0
- package/dist/bundles/sub-languages/projection/CodeActionProvider.js +2 -0
- package/dist/bundles/sub-languages/projection/CodeActionProvider.js.map +1 -0
- package/dist/bundles/sub-languages/projection/CompletionProvider.js +2 -0
- package/dist/bundles/sub-languages/projection/CompletionProvider.js.map +1 -0
- package/dist/bundles/sub-languages/projection/HoverProvider.js +43 -0
- package/dist/bundles/sub-languages/projection/HoverProvider.js.map +1 -0
- package/dist/bundles/sub-languages/projection/Validator.js +5 -0
- package/dist/bundles/sub-languages/projection/Validator.js.map +1 -0
- package/dist/bundles/sub-languages/projection/index.js +3 -75
- package/dist/bundles/sub-languages/projection/index.js.map +1 -7
- package/dist/bundles/sub-languages/projection/language.js +2 -0
- package/dist/bundles/sub-languages/projection/language.js.map +1 -0
- package/dist/bundles/symbols.js +3 -0
- package/dist/bundles/symbols.js.map +1 -0
- package/dist/bundles/themes/screenplay-dark.js +2 -0
- package/dist/bundles/themes/screenplay-dark.js.map +1 -0
- package/dist/bundles/themes/screenplay-light.js +2 -0
- package/dist/bundles/themes/screenplay-light.js.map +1 -0
- package/dist/bundles/tokens.js +2 -0
- package/dist/bundles/tokens.js.map +1 -0
- package/dist/bundles/validation.js +3 -0
- package/dist/bundles/validation.js.map +1 -0
- package/package.json +4 -3
- package/dist/bundles/chunk-7GSRLVHB.js +0 -42
- package/dist/bundles/chunk-7GSRLVHB.js.map +0 -7
- package/dist/bundles/chunk-AYDF3IFZ.js +0 -2
- package/dist/bundles/chunk-AYDF3IFZ.js.map +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validator.js","names":["readModels","draft","schemas","schema","map","s","name","i","markers","content","model","lines","firstNonEmptyLineIndex","firstLine","trimmed","projectionWithReadModelMatch","projectionAdHocMatch","lineNumber","activeSchema","readModelName","readModelExists","isDraftReadModel","readModelStartColumn","col","isDraft","activeReadModel","contextStack","indentStack","lastIndent","eventContextStack","line","currentIndent","poppedIndent","currentEventContext","fromMatch","eventType","variantMatch","variantName","variantSchema","entersOnMatch","eventsMatch","removeWithMatch","assignmentMatch","currentSchema","propertyName","schemaName","numericOpMatch","addSubMatch","childrenMatch","prop","childSchema","joinMatch","collectionName","joinProperty","collectionProp","keyMatch","keyName","isInDefinitions","isProperty","issue","validateEventContextPaths","fenceMap","rm","readModelToken","prefixMatch","fallbackIndex","text","startCol","endCol","parts"],"sources":["../../../../sub-languages/projection/Validator.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport type { editor } from 'monaco-editor';\nimport type { JsonSchema, ReadModelInfo, DraftReadModelInfo } from './index';\nimport { fenceMap } from '../../document-context';\nimport { validateEventContextPaths } from '../../validation';\n\nexport class Validator {\n private readModels: ReadModelInfo[] = [];\n private eventSchemas: Record<string, JsonSchema> = {};\n private draftReadModel: DraftReadModelInfo | null = null;\n\n setReadModels(readModels: ReadModelInfo[]): void {\n this.readModels = readModels || [];\n }\n\n setDraftReadModel(draft: DraftReadModelInfo | null): void {\n this.draftReadModel = draft;\n }\n\n // Keep for backwards compatibility\n setReadModelSchemas(schemas: JsonSchema[]): void {\n this.readModels = schemas.map(schema => ({\n identifier: this.getSchemaName(schema) || '',\n displayName: this.getSchemaName(schema) || '',\n schema\n }));\n }\n\n setEventSchemas(schemas: Record<string, JsonSchema> | JsonSchema[]): void {\n if (!schemas) {\n this.eventSchemas = {};\n return;\n }\n\n if (Array.isArray(schemas)) {\n const map: Record<string, JsonSchema> = {};\n schemas.forEach((s, i) => {\n if (!s) return;\n const name = this.getSchemaName(s) || `Event${i + 1}`;\n map[name] = s;\n });\n this.eventSchemas = map;\n return;\n }\n\n this.eventSchemas = schemas;\n }\n\n validate(model: editor.ITextModel): editor.IMarkerData[] {\n const markers: editor.IMarkerData[] = [];\n const content = model.getValue();\n\n // Skip validation if content is empty or only whitespace\n // This prevents spurious errors when the model is first created before content is loaded\n if (!content.trim()) {\n return markers;\n }\n\n // Normalize line endings and split\n const lines = content.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n').split('\\n');\n\n // Find the first non-empty, non-comment line\n let firstNonEmptyLineIndex = 0;\n let firstLine = '';\n for (let i = 0; i < lines.length; i++) {\n const trimmed = lines[i].trim();\n if (trimmed && !trimmed.startsWith('#')) {\n firstNonEmptyLineIndex = i;\n firstLine = trimmed;\n break;\n }\n }\n\n if (!firstLine) {\n // This should not happen since we already checked for empty content above,\n // but if it does (content is all comments), just return without error\n return markers;\n }\n\n // Validate first meaningful line - projection declaration\n // Supports both \"projection Name => ReadModel\" and ad hoc \"projection Name\"\n const projectionWithReadModelMatch = firstLine.match(/^projection\\s+([\\w.]+)\\s*=>\\s*([\\w.]+)\\s*$/);\n const projectionAdHocMatch = !projectionWithReadModelMatch && firstLine.match(/^projection\\s+([\\w.]+)\\s*$/);\n\n if (!projectionWithReadModelMatch && !projectionAdHocMatch) {\n const lineNumber = firstNonEmptyLineIndex + 1;\n markers.push(this.createError(lineNumber, 1, firstLine.length + 1, 'Projection definition must start with \"projection <ProjectionName>\" or \"projection <ProjectionName> => <ReadModelIdentifier>\"'));\n return markers;\n }\n\n let activeSchema: JsonSchema | undefined;\n let readModelName: string | null = null;\n\n if (projectionWithReadModelMatch) {\n readModelName = projectionWithReadModelMatch[2];\n\n // Validate read model exists in schemas or is a draft\n const readModelExists = this.resolveReadModelIdentifier(readModelName) !== null;\n const isDraftReadModel = this.isDraftReadModel(readModelName);\n const readModelStartColumn = this.getReadModelStartColumn(firstLine, readModelName);\n\n if (!readModelExists && !isDraftReadModel) {\n const lineNumber = firstNonEmptyLineIndex + 1;\n const col = readModelStartColumn;\n markers.push(this.createError(lineNumber, col, col + readModelName.length, `Read model '${readModelName}' not found`));\n } else if (isDraftReadModel) {\n // Show info marker for draft read models - they exist but haven't been saved yet\n const lineNumber = firstNonEmptyLineIndex + 1;\n const col = readModelStartColumn;\n markers.push(this.createInfo(lineNumber, col, col + readModelName.length, `Read model '${readModelName}' is a draft (not yet saved)`));\n }\n\n // Get the active read model schema for property validation (check draft first)\n const isDraft = this.isDraftReadModel(readModelName);\n const activeReadModel = isDraft ? null : this.resolveReadModelInfo(readModelName);\n activeSchema = isDraft ? this.draftReadModel!.schema : activeReadModel?.schema;\n }\n // For ad hoc projections (no read model), activeSchema stays undefined — property validation is skipped\n\n // Validate subsequent lines\n const contextStack: JsonSchema[] = [activeSchema!];\n const indentStack: number[] = [0]; // Track indentation levels for context\n let lastIndent = 0;\n\n // Track event types at each context level to detect duplicates\n // Each entry in the stack represents events seen at that context level\n type EventInfo = { lineNumber: number; col: number };\n const eventContextStack: Map<string, EventInfo>[] = [new Map()];\n\n for (let i = 1; i < lines.length; i++) {\n const lineNumber = i + 1;\n const line = lines[i];\n const trimmed = line.trim();\n\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n // Calculate current indentation\n const currentIndent = line.search(/\\S/);\n\n // Pop context when dedenting (exiting a children block)\n while (currentIndent < lastIndent && indentStack.length > 1) {\n const poppedIndent = indentStack.pop();\n if (poppedIndent !== undefined && currentIndent < poppedIndent) {\n contextStack.pop();\n eventContextStack.pop();\n }\n }\n lastIndent = currentIndent;\n\n // Get the current event context (events seen at this level)\n const currentEventContext = eventContextStack[eventContextStack.length - 1];\n\n // Validate event types in from/every blocks\n const fromMatch = trimmed.match(/^from\\s+([\\w-]+)/);\n if (fromMatch) {\n const eventType = fromMatch[1];\n const col = line.indexOf(eventType) + 1;\n\n if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));\n }\n\n // Check for duplicate events at this level\n if (currentEventContext.has(eventType)) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));\n } else {\n currentEventContext.set(eventType, { lineNumber, col });\n }\n }\n\n // Validate variant declarations - each names its own read model, which becomes the active\n // schema for property validation inside the block (mirrors the projection-header handling above).\n const variantMatch = trimmed.match(/^variant\\s+([\\w.]+)\\s*$/);\n if (variantMatch) {\n const [, variantName] = variantMatch;\n const col = line.indexOf(variantName) + 1;\n const isDraft = this.isDraftReadModel(variantName);\n const readModelExists = this.resolveReadModelIdentifier(variantName) !== null;\n\n if (!readModelExists && !isDraft) {\n markers.push(this.createError(lineNumber, col, col + variantName.length, `Read model '${variantName}' not found`));\n } else if (isDraft) {\n markers.push(this.createInfo(lineNumber, col, col + variantName.length, `Read model '${variantName}' is a draft (not yet saved)`));\n }\n\n const variantSchema = isDraft ? this.draftReadModel!.schema : this.resolveReadModelInfo(variantName)?.schema;\n contextStack.push(variantSchema!);\n indentStack.push(currentIndent);\n eventContextStack.push(new Map());\n }\n\n // Validate 'enters on' - the event that activates a variant. Read exactly like a 'from' block for\n // event-existence and duplicate-at-this-level purposes.\n const entersOnMatch = trimmed.match(/^enters\\s+on\\s+([\\w-]+)/);\n if (entersOnMatch) {\n const eventType = entersOnMatch[1];\n const col = line.indexOf(eventType) + 1;\n\n if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));\n }\n\n if (currentEventContext.has(eventType)) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));\n } else {\n currentEventContext.set(eventType, { lineNumber, col });\n }\n }\n\n // Validate event types in join/remove blocks\n const eventsMatch = trimmed.match(/^events\\s+([\\w-]+)/);\n if (eventsMatch) {\n const eventType = eventsMatch[1];\n const col = line.indexOf(eventType) + 1;\n\n if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));\n }\n\n // Check for duplicate events at this level (within join blocks)\n if (currentEventContext.has(eventType)) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));\n } else {\n currentEventContext.set(eventType, { lineNumber, col });\n }\n }\n\n const removeWithMatch = trimmed.match(/^remove\\s+(?:with|via\\s+join\\s+on)\\s+([\\w-]+)/);\n if (removeWithMatch) {\n const eventType = removeWithMatch[1];\n const col = line.indexOf(eventType) + 1;\n\n if (Object.keys(this.eventSchemas).length > 0 && !this.eventSchemas[eventType]) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Event type '${eventType}' not found`));\n }\n\n // Check for duplicate events at this level\n if (currentEventContext.has(eventType)) {\n markers.push(this.createError(lineNumber, col, col + eventType.length, `Duplicate event type '${eventType}' - event types can only be used once at each level`));\n } else {\n currentEventContext.set(eventType, { lineNumber, col });\n }\n }\n\n // Validate property assignments\n const assignmentMatch = trimmed.match(/^(\\w+)\\s*=\\s*(.+)$/);\n if (assignmentMatch) {\n const currentSchema = contextStack[contextStack.length - 1];\n if (currentSchema?.properties) {\n const [, propertyName] = assignmentMatch;\n if (!currentSchema.properties[propertyName]) {\n const col = line.indexOf(propertyName) + 1;\n const schemaName = this.getSchemaName(currentSchema) || 'current schema';\n markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));\n }\n }\n }\n\n // Validate increment/decrement/count targets\n const numericOpMatch = trimmed.match(/^(?:increment|decrement|count)\\s+(\\w+)$/);\n if (numericOpMatch) {\n const currentSchema = contextStack[contextStack.length - 1];\n if (currentSchema?.properties) {\n const [, propertyName] = numericOpMatch;\n if (!currentSchema.properties[propertyName]) {\n const col = line.indexOf(propertyName) + 1;\n const schemaName = this.getSchemaName(currentSchema) || 'current schema';\n markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));\n }\n }\n }\n\n // Validate add/subtract targets\n const addSubMatch = trimmed.match(/^(?:add|subtract)\\s+(\\w+)\\s+by\\s+/);\n if (addSubMatch) {\n const currentSchema = contextStack[contextStack.length - 1];\n if (currentSchema?.properties) {\n const [, propertyName] = addSubMatch;\n if (!currentSchema.properties[propertyName]) {\n const col = line.indexOf(propertyName) + 1;\n const schemaName = this.getSchemaName(currentSchema) || 'current schema';\n markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' not found in ${schemaName}`));\n }\n }\n }\n\n // Validate children references\n const childrenMatch = trimmed.match(/^children\\s+(\\w+)\\s+identified\\s+by\\s+/);\n if (childrenMatch) {\n const currentSchema = contextStack[contextStack.length - 1];\n if (currentSchema?.properties) {\n const [, propertyName] = childrenMatch;\n const prop = currentSchema.properties[propertyName];\n if (!prop) {\n const col = line.indexOf(propertyName) + 1;\n const schemaName = this.getSchemaName(currentSchema) || 'current schema';\n markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Collection property '${propertyName}' not found in ${schemaName}`));\n } else if (prop.type !== 'array' && !prop.items) {\n const col = line.indexOf(propertyName) + 1;\n markers.push(this.createWarning(lineNumber, col, col + propertyName.length, `Property '${propertyName}' is not a collection (array) type`));\n } else {\n // Push child schema onto context stack for validating nested properties\n const childSchema = prop.items;\n if (childSchema) {\n contextStack.push(childSchema);\n indentStack.push(currentIndent);\n // Push a new event context for the children block\n eventContextStack.push(new Map());\n }\n }\n }\n }\n\n // Validate join references\n const joinMatch = trimmed.match(/^join\\s+(\\w+)\\s+on\\s+(\\w+)/);\n if (joinMatch && activeSchema?.properties) {\n const [, collectionName, joinProperty] = joinMatch;\n const collectionProp = activeSchema.properties[collectionName];\n if (!collectionProp) {\n const col = line.indexOf(collectionName) + 1;\n markers.push(this.createWarning(lineNumber, col, col + collectionName.length, `Collection property '${collectionName}' not found in read model '${readModelName}'`));\n } else if (collectionProp.type !== 'array' && !collectionProp.items) {\n const col = line.indexOf(collectionName) + 1;\n markers.push(this.createWarning(lineNumber, col, col + collectionName.length, `Property '${collectionName}' is not a collection (array) type`));\n }\n\n if (!activeSchema.properties[joinProperty]) {\n const col = line.indexOf(joinProperty, line.indexOf('on')) + 1;\n markers.push(this.createWarning(lineNumber, col, col + joinProperty.length, `Property '${joinProperty}' not found in read model '${readModelName}'`));\n }\n\n // Push a new event context for the join block\n eventContextStack.push(new Map());\n indentStack.push(currentIndent);\n }\n\n // Validate key references for composite keys\n const keyMatch = trimmed.match(/^key\\s+(\\w+)\\s*$/);\n if (keyMatch && activeSchema) {\n const [, keyName] = keyMatch;\n // Check if it's a composite key type (should exist in definitions or as a property)\n const isInDefinitions = activeSchema.definitions && activeSchema.definitions[keyName];\n const isProperty = activeSchema.properties && activeSchema.properties[keyName];\n\n if (!isInDefinitions && !isProperty && !this.isBuiltInExpression(keyName)) {\n const col = line.indexOf(keyName) + 1;\n markers.push(this.createWarning(lineNumber, col, col + keyName.length, `Composite key type '${keyName}' not found in read model schema`));\n }\n }\n }\n\n // Share the host's event-context path checks and catalog resolution, including dynamic dictionary keys.\n for (const issue of validateEventContextPaths(lines, fenceMap(lines))) {\n markers.push({\n severity: issue.severity === 'error' ? 8 : 4,\n startLineNumber: issue.line + 1,\n endLineNumber: issue.line + 1,\n startColumn: issue.startColumn,\n endColumn: issue.endColumn,\n message: issue.message,\n code: issue.code,\n });\n }\n\n return markers;\n }\n\n private resolveReadModelInfo(readModelToken: string): ReadModelInfo | null {\n return this.readModels.find(rm => rm.identifier === readModelToken || rm.displayName === readModelToken) || null;\n }\n\n private getReadModelStartColumn(firstLine: string, readModelName: string): number {\n const prefixMatch = firstLine.match(/^\\s*projection\\s+[\\w.]+\\s*=>\\s*/);\n if (!prefixMatch) {\n const fallbackIndex = firstLine.lastIndexOf(readModelName);\n return (fallbackIndex >= 0 ? fallbackIndex : 0) + 1;\n }\n return prefixMatch[0].length + 1;\n }\n\n private resolveReadModelIdentifier(readModelToken: string): string | null {\n if (this.isDraftReadModel(readModelToken)) {\n return this.draftReadModel!.identifier;\n }\n const readModel = this.resolveReadModelInfo(readModelToken);\n return readModel?.identifier ?? null;\n }\n\n private isDraftReadModel(readModelToken: string): boolean {\n return !!this.draftReadModel && (this.draftReadModel.identifier === readModelToken || this.draftReadModel.displayName === readModelToken);\n }\n\n private isBuiltInExpression(text: string): boolean {\n return text.startsWith('$') || ['true', 'false', 'null'].includes(text);\n }\n\n private createError(line: number, startCol: number, endCol: number, message: string): editor.IMarkerData {\n return {\n severity: 8, // Error\n startLineNumber: line,\n startColumn: startCol,\n endLineNumber: line,\n endColumn: endCol,\n message,\n };\n }\n\n private createWarning(line: number, startCol: number, endCol: number, message: string): editor.IMarkerData {\n return {\n severity: 4, // Warning\n startLineNumber: line,\n startColumn: startCol,\n endLineNumber: line,\n endColumn: endCol,\n message,\n };\n }\n\n private createInfo(line: number, startCol: number, endCol: number, message: string): editor.IMarkerData {\n return {\n severity: 2, // Info (hint) - shows as blue/green squiggly\n startLineNumber: line,\n startColumn: startCol,\n endLineNumber: line,\n endColumn: endCol,\n message,\n };\n }\n\n private getSchemaName(schema: JsonSchema): string | undefined {\n if (schema.name) return schema.name;\n if (schema.title) return schema.title;\n if (typeof schema.$id === 'string') {\n const parts = schema.$id.split('/');\n return parts[parts.length - 1] || schema.$id;\n }\n return undefined;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,75 +1,3 @@
|
|
|
1
|
-
import{G as ne,H as re,I as oe,J as q,K as ie,gb as se,y as te}from"../../chunk-7GSRLVHB.js";import{a as b}from"../../chunk-AYDF3IFZ.js";var E="pdl",ce=["projection","description","sequence","all","every","on","from","key","parent","join","automap","no","children","nested","identified","by","add","subtract","remove","via","with","default","increment","decrement","count","set","unset","clear","events","id","exclude","variant","enters"],pe=["$eventSourceId","$causedBy","$eventContext"],me=["=","+=","-=","=>","."],ae={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],indentationRules:{increaseIndentPattern:/^.*(:|\bon\b|\ball\b|\bevery\b|\bchildren\b|\bnested\b|\bparent\b|\bvariant\b)\s*$/,decreaseIndentPattern:/^.*\}.*$/},folding:{offSide:!0,markers:{start:/^\s*(projection|all|every|on|children|nested|parent|variant)/,end:/^\s*$/}},wordPattern:/@?[a-zA-Z_$][\w$-]*/},de={defaultToken:"",tokenPostfix:".pdl",keywords:ce,builtins:pe,operators:me,symbols:/[=><!~?:&|+\-*/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/`/,{token:"string.template",next:"@templateString"}],[/@[a-zA-Z_$][\w$]*/,"identifier.escape"],[/[A-Z][a-zA-Z_$][\w$]*/,{cases:{"@keywords":"invalid","@default":"identifier"}}],[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@builtins":"variable.predefined","@default":"identifier"}}],[/[{}()[\]]/,"@brackets"],[/=>/,"operator.arrow"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/\d*\.\d+([eE][-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]],templateString:[[/\$\{/,{token:"delimiter.bracket",next:"@templateExpression"}],[/[^\\`$]+/,"string.template"],[/@escapes/,"string.template.escape"],[/\\./,"string.template.escape.invalid"],[/`/,{token:"string.template",next:"@pop"}]],templateExpression:[[/\}/,{token:"delimiter.bracket",next:"@pop"}],{include:"@root"}],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]]}};var le=/\$eventContext\.((?:\w+\.)*)(\w*)$/,D=class{static{b(this,"CompletionProvider")}readModels=[];eventSchemas={};eventSequences=[];setReadModels(e){this.readModels=e||[]}setEventSequences(e){this.eventSequences=e||[]}setReadModelSchemas(e){this.readModels=e.map(t=>({identifier:this.getSchemaName(t)||"",displayName:this.getSchemaName(t)||"",schema:t}))}setEventSchemas(e){if(!e){this.eventSchemas={};return}if(Array.isArray(e)){let t={};e.forEach((n,r)=>{if(!n)return;let o=this.getSchemaName(n)||`Event${r+1}`;t[o]=n}),this.eventSchemas=t;return}this.eventSchemas=e}provideCompletionItems(e,t){let n=this.buildContext(e,t),r=[],o=this.getActiveReadModelSchema(e);return n.lineNumber===1?this.addProjectionLineCompletions(r,n):this.isAfterKeyword(n,"sequence")?this.addEventSequenceCompletions(r,n):this.isAfterKeyword(n,"from")||this.isAfterKeyword(n,"every")?this.addEventTypeCompletions(r,n):/\benters\s+on\s+\w*$/.test(n.textBeforeCursor)?this.addEventTypeCompletions(r,n):/\benters\s+\w*$/.test(n.textBeforeCursor)?r.push({label:"on",kind:14,insertText:"on ",documentation:"Declares the event that activates this variant.",detail:"enters on <EventType>",range:this.getRangeForWord(n)}):this.isAfterKeyword(n,"variant")?this.addVariantNameCompletions(r,n):this.isAfterKeyword(n,"key")?this.addKeyCompletions(r,n,o):this.isAfterKeyword(n,"parent")?this.addParentCompletions(r,n):this.isAfterKeyword(n,"children")?this.addChildrenCompletions(r,n,o):this.isAfterKeyword(n,"join")?this.addJoinCompletions(r,n,o):this.isAfterKeyword(n,"with")?this.addEventTypeCompletions(r,n):this.isAfterNumericOperationKeyword(n)?this.addNumericPropertyCompletions(r,n,o):this.isAfterAddOrSubtractBy(n)?this.addAssignmentValueCompletions(r,n,e,t):this.isInAssignment(n)?this.addAssignmentValueCompletions(r,n,e,t):this.isPropertyDotAccess(n)?this.addPropertyMemberCompletions(r,n):(this.isStartOfLine(n)||this.isAfterIndent(n))&&this.addStatementCompletions(r,n,o),{suggestions:r}}buildContext(e,t){let n=e.getLineContent(t.lineNumber),r=n.substring(0,t.column-1),o=n.substring(t.column-1),l=e.getWordAtPosition(t)?.word||"",f=this.getIndentLevel(r);return{lineContent:n,textBeforeCursor:r,textAfterCursor:o,currentWord:l,indentLevel:f,lineNumber:t.lineNumber}}getIndentLevel(e){let t=e.match(/^(\s*)/);return t?Math.floor(t[1].length/2):0}isStartOfLine(e){return e.textBeforeCursor.trim()===""}isAfterIndent(e){return/^\s+$/.test(e.textBeforeCursor)}isAfterKeyword(e,t){return new RegExp(`\\b${t}\\s+\\w*$`).test(e.textBeforeCursor)}isAfterNumericOperationKeyword(e){let t=/\b(count|increment|decrement)\s+\w*$/,n=/\b(add|subtract)\s+\w*$/;return t.test(e.textBeforeCursor)?!0:n.test(e.textBeforeCursor)?!this.isAfterAddOrSubtractBy(e):!1}isAfterAddOrSubtractBy(e){return/\b(add|subtract)\s+\w+\s+by\s+\w*$/.test(e.textBeforeCursor)}isInAssignment(e){return/\w+\s*=\s*\w*$/.test(e.textBeforeCursor)}isPropertyDotAccess(e){return/(\w+|\$\w+)\.(\w*)$/.test(e.textBeforeCursor)||le.test(e.textBeforeCursor)}addProjectionLineCompletions(e,t){let n=t.textBeforeCursor.trim();(n===""||"projection".startsWith(n))&&e.push({label:"projection",kind:14,insertText:"projection ",documentation:"Define a projection that transforms events into a read model",detail:"projection <ProjectionName>",range:this.getRangeForWord(t)});let r=n.match(/^projection\s+[\w.]+\s*=>\s*([\w.]*)$/);if(r){let o=r[1]||"";this.readModels.forEach(s=>{if(!o||s.displayName.toLowerCase().startsWith(o.toLowerCase())){let l=`${s.displayName} (${s.identifier})`;e.push({label:l,kind:6,insertText:s.displayName,filterText:`${s.displayName} ${s.identifier}`,documentation:`Read model: ${s.displayName} (${s.identifier})`,detail:s.identifier,range:this.getRangeForWord(t)})}});return}if(n.startsWith("projection ")&&!n.includes("=>")){let o=n.substring(11);this.readModels.forEach(s=>{if(!o||s.displayName.toLowerCase().startsWith(o.toLowerCase())){let l=`${s.displayName} (${s.identifier})`;e.push({label:l,kind:6,insertText:`${s.displayName} => ${s.displayName}`,filterText:`${s.displayName} ${s.identifier}`,documentation:`Read model: ${s.displayName} (${s.identifier})`,detail:s.identifier,range:this.getRangeForWord(t)})}})}}addEventTypeCompletions(e,t){Object.keys(this.eventSchemas).forEach(n=>{if(!t.currentWord||n.startsWith(t.currentWord)){let r=this.eventSchemas[n];e.push({label:n,kind:6,insertText:n,documentation:this.getSchemaDescription(r)||`Event type: ${n}`,detail:"Event Type",range:this.getRangeForWord(t)})}})}addEventSequenceCompletions(e,t){this.eventSequences.forEach(n=>{(!t.currentWord||n.startsWith(t.currentWord))&&e.push({label:n,kind:13,insertText:n,documentation:`Event sequence: ${n}`,detail:"Event Sequence",range:this.getRangeForWord(t)})})}addKeyCompletions(e,t,n){n?.definitions&&Object.keys(n.definitions).forEach(r=>{n.definitions[r].type==="object"&&e.push({label:r,kind:6,insertText:r,documentation:`Composite key type: ${r}`,detail:"Composite Key Type",range:this.getRangeForWord(t)})}),this.addExpressionCompletions(e,t)}addParentCompletions(e,t){this.addExpressionCompletions(e,t)}addNumericPropertyCompletions(e,t,n){n?.properties&&Object.entries(n.properties).forEach(([o,s])=>{(s.type==="integer"||s.type==="number")&&(!t.currentWord||o.startsWith(t.currentWord))&&e.push({label:o,kind:9,insertText:o,documentation:`Numeric property: ${o}`,detail:this.getPropertyTypeDescription(s),range:this.getRangeForWord(t)})});let r=t.textBeforeCursor.match(/\b(add|subtract)\s+(\w*)$/);if(r){let o=r[2]||"";n?.properties&&Object.entries(n.properties).forEach(([s,l])=>{(l.type==="integer"||l.type==="number")&&(!o||s.startsWith(o))&&e.push({label:s,kind:9,insertText:`${s} by `,documentation:`Numeric property: ${s}`,detail:this.getPropertyTypeDescription(l),range:this.getRangeForWord(t)})})}}addChildrenCompletions(e,t,n){n?.properties&&Object.entries(n.properties).forEach(([r,o])=>{(o.type==="array"||o.items)&&e.push({label:r,kind:9,insertText:`${r} id `,documentation:`Collection property: ${r}`,detail:this.getPropertyTypeDescription(o),range:this.getRangeForWord(t)})})}addJoinCompletions(e,t,n){let r=t.textBeforeCursor.trim();r==="join"||!r.includes(" ")?n?.properties&&Object.entries(n.properties).forEach(([o,s])=>{(s.type==="array"||s.items)&&e.push({label:o,kind:9,insertText:`${o} on `,documentation:`Join on collection: ${o}`,range:this.getRangeForWord(t)})}):r.match(/join\s+\w+\s+on\s+/)&&n?.properties&&Object.keys(n.properties).forEach(o=>{e.push({label:o,kind:9,insertText:o,documentation:`Property: ${o}`,range:this.getRangeForWord(t)})})}addVariantNameCompletions(e,t){this.readModels.forEach(n=>{(!t.currentWord||n.displayName.toLowerCase().startsWith(t.currentWord.toLowerCase()))&&e.push({label:n.displayName,kind:6,insertText:n.displayName,documentation:`Read model: ${n.displayName} (${n.identifier})`,detail:n.identifier,range:this.getRangeForWord(t)})})}addStatementCompletions(e,t,n){[{label:"description",insertText:'description ""',documentation:"Report-only description on the projection header only",detail:'description "<text>"'},{label:"sequence",insertText:"sequence ",documentation:"Specify which event sequence to use for this projection",detail:"sequence <event-sequence-id>"},{label:"variant",insertText:"variant ",documentation:"Declare one of several mutually exclusive named read models sharing this projection's identity",detail:"variant <Name>"},{label:"enters on",insertText:"enters on ",documentation:"Declare the event that activates a variant",detail:"enters on <EventType>"},{label:"from",insertText:"from ",documentation:"Handle specific event types",detail:"from <EventType>"},{label:"all",insertText:"all",documentation:"Subscribe to all event types in the system \u2014 mappings run for every event system-wide, regardless of explicit from blocks",detail:"all"},{label:"every",insertText:"every",documentation:"Handle all events for automatic mapping (only events explicitly subscribed to via from blocks)",detail:"every"},{label:"key",insertText:"key ",documentation:"Define the projection key",detail:"key <expression>"},{label:"parent",insertText:"parent ",documentation:"Define parent relationship",detail:"parent <expression>"},{label:"join",insertText:"join ",documentation:"Join with child collection",detail:"join <collection> on <property>"},{label:"children",insertText:"children ",documentation:"Define child collection operations",detail:"children <collection> identified by <expression>"},{label:"remove with",insertText:"remove with ",documentation:"Remove items based on event",detail:"remove with <EventType>"},{label:"remove via",insertText:"remove via join on ",documentation:"Remove items via join",detail:"remove via join on <EventType>"},{label:"no automap",insertText:"no automap",documentation:"Disable automatic property mapping",detail:"no automap"},{label:"clear",insertText:"clear ",documentation:"Remove the value a property holds",detail:"clear <property>"},{label:"increment",insertText:"increment ",documentation:"Increment a numeric property",detail:"increment <property>"},{label:"decrement",insertText:"decrement ",documentation:"Decrement a numeric property",detail:"decrement <property>"},{label:"count",insertText:"count ",documentation:"Count occurrences",detail:"count <property>"},{label:"add",insertText:"add ",documentation:"Add value to property",detail:"add <property> by <expression>"},{label:"subtract",insertText:"subtract ",documentation:"Subtract value from property",detail:"subtract <property> by <expression>"},{label:"exclude children",insertText:"exclude children",documentation:"Exclude child collections from automap",detail:"exclude children"}].forEach(o=>{(!t.currentWord||o.label.startsWith(t.currentWord))&&e.push({label:o.label,kind:14,insertText:o.insertText,documentation:o.documentation,detail:o.detail,range:this.getRangeForWord(t)})}),n?.properties&&Object.entries(n.properties).forEach(([o,s])=>{(!t.currentWord||o.startsWith(t.currentWord))&&e.push({label:o,kind:9,insertText:`${o} = `,documentation:`Assign value to property: ${o}`,detail:this.getPropertyTypeDescription(s),range:this.getRangeForWord(t)})})}addAssignmentValueCompletions(e,t,n,r){let o=this.getCurrentEventType(n,r.lineNumber);if(o&&this.eventSchemas[o]){let s=this.eventSchemas[o];s.properties&&Object.entries(s.properties).forEach(([l,f])=>{e.push({label:l,kind:9,insertText:l,documentation:`Event property: ${l}`,detail:this.getPropertyTypeDescription(f),range:this.getRangeForWord(t)})})}this.addExpressionCompletions(e,t)}addExpressionCompletions(e,t){[{label:"$eventSourceId",insertText:"$eventSourceId",documentation:"The identifier of the event source (aggregate/entity)",detail:"Event Source Expression"},{label:"$causedBy",insertText:"$causedBy",documentation:"The identity that caused the event. Chronicle cannot yet evaluate this short form (Cratis/Chronicle#4119) - prefer $eventContext.causedBy.<property>.",detail:"Identity Expression"},{label:"$eventContext",insertText:"$eventContext.",documentation:`Metadata about the event: ${ne.map(r=>r.name).join(", ")}`,detail:"Event Context Expression"}].forEach(r=>{(!t.currentWord||r.label.startsWith(t.currentWord)||r.label.startsWith("$"+t.currentWord))&&e.push({label:r.label,kind:14,insertText:r.insertText,documentation:r.documentation,detail:r.detail,range:this.getRangeForWord(t)})})}addPropertyMemberCompletions(e,t){let n=t.textBeforeCursor.match(le);if(n){let c=n[1].split(".").filter(u=>u.length>0);this.addEventContextMemberCompletions(e,t,c,n[2]);return}let r=t.textBeforeCursor.match(/(\w+|\$\w+)\.(\w*)$/);if(!r)return;let[,o,s]=r,l=t.textBeforeCursor.match(/\$causedBy\.((?:\w+\.)*)(\w*)$/);if(l){let c=l[1].split(".").filter(u=>u.length>0);this.addEventContextMemberCompletions(e,t,["causedBy",...c],l[2]);return}let f=this.eventSchemas[o];f?.properties&&Object.entries(f.properties).forEach(([c,u])=>{(!s||c.startsWith(s))&&e.push({label:c,kind:9,insertText:c,documentation:`Event property: ${c}`,detail:this.getPropertyTypeDescription(u),range:this.getRangeForWord(t)})})}addEventContextMemberCompletions(e,t,n,r){(re(n)??[]).filter(s=>!r||s.name.startsWith(r)).forEach(s=>{e.push({label:s.name,kind:s.kind==="function"?1:9,insertText:s.name,documentation:s.description,detail:s.type,range:this.getRangeForWord(t)})})}getCurrentEventType(e,t){for(let n=t;n>=1;n--){let r=e.getLineContent(n).trim(),o=r.match(/^from\s+([\w-]+)/);if(o)return o[1];if(r.match(/^every$/))return null}return null}getActiveReadModelSchema(e){let n=e.getLineContent(1).trim().match(/^projection\s+[\w.]+\s*=>\s*([\w.]+)/);if(!n)return;let r=n[1];return this.resolveReadModelInfo(r)?.schema}resolveReadModelInfo(e){return this.readModels.find(t=>t.identifier===e||t.displayName===e)||null}getSchemaName(e){if(e.name)return e.name;if(e.title)return e.title;if(typeof e.$id=="string"){let t=e.$id.split("/");return t[t.length-1]||e.$id}}getSchemaDescription(e){return e.description||void 0}getPropertyTypeDescription(e){return e.type==="array"&&e.items?`${e.items.type||e.items.$id?.split("/").pop()||"unknown"}[]`:e.type||e.$ref?.split("/").pop()||"unknown"}getRangeForWord(e){let t=e.textBeforeCursor.length-e.currentWord.length+1,n=t+e.currentWord.length;return{startLineNumber:e.lineNumber,startColumn:Math.max(1,t),endLineNumber:e.lineNumber,endColumn:Math.max(1,n)}}};var A=class{static{b(this,"Validator")}readModels=[];eventSchemas={};draftReadModel=null;setReadModels(e){this.readModels=e||[]}setDraftReadModel(e){this.draftReadModel=e}setReadModelSchemas(e){this.readModels=e.map(t=>({identifier:this.getSchemaName(t)||"",displayName:this.getSchemaName(t)||"",schema:t}))}setEventSchemas(e){if(!e){this.eventSchemas={};return}if(Array.isArray(e)){let t={};e.forEach((n,r)=>{if(!n)return;let o=this.getSchemaName(n)||`Event${r+1}`;t[o]=n}),this.eventSchemas=t;return}this.eventSchemas=e}validate(e){let t=[],n=e.getValue();if(!n.trim())return t;let r=n.replace(/\r\n/g,`
|
|
2
|
-
`).
|
|
3
|
-
|
|
4
|
-
`),o=0,s="";for(let m=0;m<r.length;m++){let p=r[m].trim();if(p&&!p.startsWith("#")){o=m,s=p;break}}if(!s)return t;let l=s.match(/^projection\s+([\w.]+)\s*=>\s*([\w.]+)\s*$/),f=!l&&s.match(/^projection\s+([\w.]+)\s*$/);if(!l&&!f){let m=o+1;return t.push(this.createError(m,1,s.length+1,'Projection definition must start with "projection <ProjectionName>" or "projection <ProjectionName> => <ReadModelIdentifier>"')),t}let c,u=null;if(l){u=l[2];let m=this.resolveReadModelIdentifier(u)!==null,p=this.isDraftReadModel(u),v=this.getReadModelStartColumn(s,u);if(!m&&!p){let S=o+1,N=v;t.push(this.createError(S,N,N+u.length,`Read model '${u}' not found`))}else if(p){let S=o+1,N=v;t.push(this.createInfo(S,N,N+u.length,`Read model '${u}' is a draft (not yet saved)`))}let R=this.isDraftReadModel(u),w=R?null:this.resolveReadModelInfo(u);c=R?this.draftReadModel.schema:w?.schema}let g=[c],M=[0],x=0,C=[new Map];for(let m=1;m<r.length;m++){let p=m+1,v=r[m],R=v.trim();if(!R||R.startsWith("#"))continue;let w=v.search(/\S/);for(;w<x&&M.length>1;){let i=M.pop();i!==void 0&&w<i&&(g.pop(),C.pop())}x=w;let S=C[C.length-1],N=R.match(/^from\s+([\w-]+)/);if(N){let i=N[1],a=v.indexOf(i)+1;Object.keys(this.eventSchemas).length>0&&!this.eventSchemas[i]&&t.push(this.createError(p,a,a+i.length,`Event type '${i}' not found`)),S.has(i)?t.push(this.createError(p,a,a+i.length,`Duplicate event type '${i}' - event types can only be used once at each level`)):S.set(i,{lineNumber:p,col:a})}let _=R.match(/^variant\s+([\w.]+)\s*$/);if(_){let[,i]=_,a=v.indexOf(i)+1,y=this.isDraftReadModel(i);!(this.resolveReadModelIdentifier(i)!==null)&&!y?t.push(this.createError(p,a,a+i.length,`Read model '${i}' not found`)):y&&t.push(this.createInfo(p,a,a+i.length,`Read model '${i}' is a draft (not yet saved)`));let F=y?this.draftReadModel.schema:this.resolveReadModelInfo(i)?.schema;g.push(F),M.push(w),C.push(new Map)}let z=R.match(/^enters\s+on\s+([\w-]+)/);if(z){let i=z[1],a=v.indexOf(i)+1;Object.keys(this.eventSchemas).length>0&&!this.eventSchemas[i]&&t.push(this.createError(p,a,a+i.length,`Event type '${i}' not found`)),S.has(i)?t.push(this.createError(p,a,a+i.length,`Duplicate event type '${i}' - event types can only be used once at each level`)):S.set(i,{lineNumber:p,col:a})}let U=R.match(/^events\s+([\w-]+)/);if(U){let i=U[1],a=v.indexOf(i)+1;Object.keys(this.eventSchemas).length>0&&!this.eventSchemas[i]&&t.push(this.createError(p,a,a+i.length,`Event type '${i}' not found`)),S.has(i)?t.push(this.createError(p,a,a+i.length,`Duplicate event type '${i}' - event types can only be used once at each level`)):S.set(i,{lineNumber:p,col:a})}let V=R.match(/^remove\s+(?:with|via\s+join\s+on)\s+([\w-]+)/);if(V){let i=V[1],a=v.indexOf(i)+1;Object.keys(this.eventSchemas).length>0&&!this.eventSchemas[i]&&t.push(this.createError(p,a,a+i.length,`Event type '${i}' not found`)),S.has(i)?t.push(this.createError(p,a,a+i.length,`Duplicate event type '${i}' - event types can only be used once at each level`)):S.set(i,{lineNumber:p,col:a})}let Z=R.match(/^(\w+)\s*=\s*(.+)$/);if(Z){let i=g[g.length-1];if(i?.properties){let[,a]=Z;if(!i.properties[a]){let y=v.indexOf(a)+1,h=this.getSchemaName(i)||"current schema";t.push(this.createWarning(p,y,y+a.length,`Property '${a}' not found in ${h}`))}}}let X=R.match(/^(?:increment|decrement|count)\s+(\w+)$/);if(X){let i=g[g.length-1];if(i?.properties){let[,a]=X;if(!i.properties[a]){let y=v.indexOf(a)+1,h=this.getSchemaName(i)||"current schema";t.push(this.createWarning(p,y,y+a.length,`Property '${a}' not found in ${h}`))}}}let Y=R.match(/^(?:add|subtract)\s+(\w+)\s+by\s+/);if(Y){let i=g[g.length-1];if(i?.properties){let[,a]=Y;if(!i.properties[a]){let y=v.indexOf(a)+1,h=this.getSchemaName(i)||"current schema";t.push(this.createWarning(p,y,y+a.length,`Property '${a}' not found in ${h}`))}}}let G=R.match(/^children\s+(\w+)\s+identified\s+by\s+/);if(G){let i=g[g.length-1];if(i?.properties){let[,a]=G,y=i.properties[a];if(y)if(y.type!=="array"&&!y.items){let h=v.indexOf(a)+1;t.push(this.createWarning(p,h,h+a.length,`Property '${a}' is not a collection (array) type`))}else{let h=y.items;h&&(g.push(h),M.push(w),C.push(new Map))}else{let h=v.indexOf(a)+1,F=this.getSchemaName(i)||"current schema";t.push(this.createWarning(p,h,h+a.length,`Collection property '${a}' not found in ${F}`))}}}let Q=R.match(/^join\s+(\w+)\s+on\s+(\w+)/);if(Q&&c?.properties){let[,i,a]=Q,y=c.properties[i];if(y){if(y.type!=="array"&&!y.items){let h=v.indexOf(i)+1;t.push(this.createWarning(p,h,h+i.length,`Property '${i}' is not a collection (array) type`))}}else{let h=v.indexOf(i)+1;t.push(this.createWarning(p,h,h+i.length,`Collection property '${i}' not found in read model '${u}'`))}if(!c.properties[a]){let h=v.indexOf(a,v.indexOf("on"))+1;t.push(this.createWarning(p,h,h+a.length,`Property '${a}' not found in read model '${u}'`))}C.push(new Map),M.push(w)}let ee=R.match(/^key\s+(\w+)\s*$/);if(ee&&c){let[,i]=ee,a=c.definitions&&c.definitions[i],y=c.properties&&c.properties[i];if(!a&&!y&&!this.isBuiltInExpression(i)){let h=v.indexOf(i)+1;t.push(this.createWarning(p,h,h+i.length,`Composite key type '${i}' not found in read model schema`))}}}for(let m of se(r,te(r)))t.push({severity:m.severity==="error"?8:4,startLineNumber:m.line+1,endLineNumber:m.line+1,startColumn:m.startColumn,endColumn:m.endColumn,message:m.message,code:m.code});return t}resolveReadModelInfo(e){return this.readModels.find(t=>t.identifier===e||t.displayName===e)||null}getReadModelStartColumn(e,t){let n=e.match(/^\s*projection\s+[\w.]+\s*=>\s*/);if(!n){let r=e.lastIndexOf(t);return(r>=0?r:0)+1}return n[0].length+1}resolveReadModelIdentifier(e){return this.isDraftReadModel(e)?this.draftReadModel.identifier:this.resolveReadModelInfo(e)?.identifier??null}isDraftReadModel(e){return!!this.draftReadModel&&(this.draftReadModel.identifier===e||this.draftReadModel.displayName===e)}isBuiltInExpression(e){return e.startsWith("$")||["true","false","null"].includes(e)}createError(e,t,n,r){return{severity:8,startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:n,message:r}}createWarning(e,t,n,r){return{severity:4,startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:n,message:r}}createInfo(e,t,n,r){return{severity:2,startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:n,message:r}}getSchemaName(e){if(e.name)return e.name;if(e.title)return e.title;if(typeof e.$id=="string"){let t=e.$id.split("/");return t[t.length-1]||e.$id}}};var W=class{static{b(this,"HoverProvider")}readModels=[];eventSchemas={};draftReadModel=null;setReadModels(e){this.readModels=e||[]}setReadModelSchemas(e){this.readModels=e.map(t=>({identifier:this.getSchemaName(t)||"",displayName:this.getSchemaName(t)||"",schema:t}))}setEventSchemas(e){if(!e){this.eventSchemas={};return}if(Array.isArray(e)){let t={};e.forEach((n,r)=>{if(!n)return;let o=this.getSchemaName(n)||`Event${r+1}`;t[o]=n}),this.eventSchemas=t;return}this.eventSchemas=e}setDraftReadModel(e){this.draftReadModel=e}provideHover(e,t){let n=e.getWordAtPosition(t);if(!n)return null;let r=n.word,o=e.getLineContent(t.lineNumber);if(this.getProjectionNameAtPosition(o,t.column))return{contents:[{value:"The name of the projection"}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}};let l=this.getEventContextInfo(o,n.startColumn);if(l)return{contents:[{value:l}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}};let f=this.getKeywordInfo(r);if(f)return{contents:[{value:f}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}};let c=this.getExpressionInfo(r);if(c)return{contents:[{value:c}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}};if(this.eventSchemas[r]){let M=this.eventSchemas[r],x=this.getSchemaDescription(M),C=this.getSchemaProperties(M),m=`**Event Type:** \`${r}\`
|
|
5
|
-
|
|
6
|
-
`;return x&&(m+=`${x}
|
|
7
|
-
|
|
8
|
-
`),C.length>0&&(m+=`**Properties:**
|
|
9
|
-
|
|
10
|
-
${C.map(p=>`- \`${p.name}\`: ${p.type}`).join(`
|
|
11
|
-
`)}`),{contents:[{value:m}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}}}if(this.isDraftReadModel(r)){let M=this.getSchemaDescription(this.draftReadModel.schema),x=this.getSchemaProperties(this.draftReadModel.schema),C=this.draftReadModel.identifier,p=`**Read Model (Draft):** \`${this.draftReadModel.displayName}\`
|
|
12
|
-
|
|
13
|
-
**Identifier:** \`${C}\`
|
|
14
|
-
|
|
15
|
-
`;return M&&(p+=`${M}
|
|
16
|
-
|
|
17
|
-
`),x.length>0&&(p+=`**Properties:**
|
|
18
|
-
|
|
19
|
-
${x.map(v=>`- \`${v.name}\`: ${v.type}`).join(`
|
|
20
|
-
`)}`),{contents:[{value:p}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}}}let u=this.resolveReadModelInfo(r);if(u){let M=this.getSchemaDescription(u.schema),x=this.getSchemaProperties(u.schema),C=`**Read Model:** \`${u.displayName}\`
|
|
21
|
-
|
|
22
|
-
**Identifier:** \`${u.identifier}\`
|
|
23
|
-
|
|
24
|
-
`;return M&&(C+=`${M}
|
|
25
|
-
|
|
26
|
-
`),x.length>0&&(C+=`**Properties:**
|
|
27
|
-
|
|
28
|
-
${x.map(m=>`- \`${m.name}\`: ${m.type}`).join(`
|
|
29
|
-
`)}`),{contents:[{value:C}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}}}let g=this.getPropertyInfo(e,t,r);return g?{contents:[{value:g}],range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn}}:null}getKeywordInfo(e){return{description:"**description** - Report-only intent on the projection header, as quoted or fenced text. Not accepted on variants or nested blocks; adds no executable bytes.",projection:"**projection** - Defines a projection that transforms events into a read model",from:`**from** *<EventType>*
|
|
30
|
-
|
|
31
|
-
Handles specific event types and maps their properties to the read model.`,all:"**all**\n\nSubscribes to **all event types in the system**, regardless of explicit `from` blocks. Mappings inside `all` run for every event that arrives system-wide.",every:"**every**\n\nHandles all events the projection **explicitly subscribes to** through `from` blocks, with automatic property mapping.",key:`**key** *<expression>*
|
|
32
|
-
|
|
33
|
-
Defines the projection key or composite key type.`,parent:`**parent** *<expression>*
|
|
34
|
-
|
|
35
|
-
Defines a parent relationship for hierarchical projections.`,join:`**join** *<collection>* **on** *<property>*
|
|
36
|
-
|
|
37
|
-
Joins with a child collection based on a property.`,children:`**children** *<collection>* **id** *<expression>*
|
|
38
|
-
|
|
39
|
-
Defines operations on child collections.`,remove:`**remove with** *<EventType>* or **remove via join on** *<EventType>*
|
|
40
|
-
|
|
41
|
-
Removes items from the read model based on events.`,clear:`**clear** *<property>*
|
|
42
|
-
|
|
43
|
-
Removes the value a property holds. **clear with** *<EventType>* nulls a whole nested object instead.`,automap:`**automap** or **no automap**
|
|
44
|
-
|
|
45
|
-
Controls automatic property mapping from events to the read model.`,increment:`**increment** *<property>*
|
|
46
|
-
|
|
47
|
-
Increments a numeric property by 1.`,decrement:`**decrement** *<property>*
|
|
48
|
-
|
|
49
|
-
Decrements a numeric property by 1.`,count:`**count** *<property>*
|
|
50
|
-
|
|
51
|
-
Counts occurrences and stores in a property.`,add:`**add** *<property>* **by** *<expression>*
|
|
52
|
-
|
|
53
|
-
Adds a value to a property.`,subtract:`**subtract** *<property>* **by** *<expression>*
|
|
54
|
-
|
|
55
|
-
Subtracts a value from a property.`,exclude:`**exclude children**
|
|
56
|
-
|
|
57
|
-
Excludes child collections from automatic mapping.`,events:`**events** *<EventType>*, ...
|
|
58
|
-
|
|
59
|
-
Specifies which event types to include in a join.`,via:"Used with **remove via join on** to remove items via a join relationship.",with:"Used with **remove with** to specify which event type triggers removal.",on:"Used with **join** to specify the join property.",by:"Used with **add** or **subtract** to specify the value.",id:"Used with **children** to specify the child identifier expression.",no:"Used with **no automap** to disable automatic property mapping.",variant:`**variant** *<Name>*
|
|
60
|
-
|
|
61
|
-
Declares one of several mutually exclusive named read models sharing the projection's identity. Entering one variant removes the entity from every other variant of the same projection.`,enters:`**enters on** *<EventType>*
|
|
62
|
-
|
|
63
|
-
Declares the event that activates this variant - the only event allowed to create it. Every other event the variant subscribes to is update-only.`}[e]||null}getExpressionInfo(e){return{$eventSourceId:`**$eventSourceId**
|
|
64
|
-
|
|
65
|
-
The identifier of the event source (aggregate/entity) that generated the event.`,$causedBy:"**$causedBy**\n\nThe identity that caused the event - `subject`, `name`, `userName` or `onBehalfOf`, itself an identity.\n\nChronicle cannot yet evaluate this short form (Cratis/Chronicle#4119); prefer **$eventContext.causedBy**.*property*.",$eventContext:q()}[e]||null}getEventContextInfo(e,t){for(let n of e.matchAll(/\$eventContext((?:\.\w+(?:\(\))?)*)/g)){let r=(n.index??0)+1;if(t===r)return q();r+=13;let o=n[1].split(".").slice(1);for(let s=0;s<o.length;s++){if(r+=1,t===r){let l=o.slice(0,s+1),f=oe(l);return f?ie(l.join("."),f):null}r+=o[s].length}}return null}getPropertyInfo(e,t,n){let o=e.getLineContent(1).trim().match(/^projection\s+[\w.]+\s*=>\s*([\w.]+)/);if(!o)return null;let s=o[1],l=this.isDraftReadModel(s)?this.draftReadModel:null,f=l?null:this.resolveReadModelInfo(s),c=l?.schema||f?.schema;if(c?.properties&&c.properties[n]){let g=c.properties[n],M=this.getPropertyTypeDescription(g),x=g.description,C=`**Property:** \`${n}\`
|
|
66
|
-
|
|
67
|
-
**Type:** \`${M}\``;return x&&(C+=`
|
|
68
|
-
|
|
69
|
-
${x}`),C}let u=this.getCurrentEventType(e,t.lineNumber);if(u&&this.eventSchemas[u]){let g=this.eventSchemas[u];if(g.properties&&g.properties[n]){let M=g.properties[n],x=this.getPropertyTypeDescription(M),C=M.description,m=`**Event Property:** \`${n}\`
|
|
70
|
-
|
|
71
|
-
**Type:** \`${x}\``;return C&&(m+=`
|
|
72
|
-
|
|
73
|
-
${C}`),m}}return null}resolveReadModelInfo(e){return this.readModels.find(t=>t.identifier===e||t.displayName===e)||null}isDraftReadModel(e){return!!this.draftReadModel&&(this.draftReadModel.identifier===e||this.draftReadModel.displayName===e)}getCurrentEventType(e,t){for(let n=t;n>=1;n--){let o=e.getLineContent(n).trim().match(/^from\s+([\w-]+)/);if(o)return o[1]}return null}getProjectionNameAtPosition(e,t){if(!e.match(/^\s*projection\s+(\S+)\s*=>/))return!1;let r=e.indexOf("projection")+10,o=e.indexOf("=>");return t>r&&t<=o}getSchemaName(e){if(e.name)return e.name;if(e.title)return e.title;if(typeof e.$id=="string"){let t=e.$id.split("/");return t[t.length-1]||e.$id}}getSchemaDescription(e){return e.description||void 0}getSchemaProperties(e){return e.properties?Object.entries(e.properties).map(([t,n])=>({name:t,type:this.getPropertyTypeDescription(n)})):[]}getPropertyTypeDescription(e){return e.type==="array"&&e.items?`${e.items.type||e.items.$ref?.split("/").pop()||"unknown"}[]`:e.type||e.$ref?.split("/").pop()||"unknown"}};var J=class{static{b(this,"CodeActionProvider")}readModels=[];draftReadModel=null;onCreateReadModel;onEditReadModel;setReadModels(e){this.readModels=e}setDraftReadModel(e){this.draftReadModel=e}setReadModelSchemas(e){this.readModels=e.map(t=>({identifier:t.title||t.name||"",displayName:t.title||t.name||"",schema:t}))}setCreateReadModelCallback(e){this.onCreateReadModel=e}setEditReadModelCallback(e){this.onEditReadModel=e}invokeCreateReadModel(e){this.onCreateReadModel?.(e)}invokeEditReadModel(e,t){this.onEditReadModel?.(e,t)}provideCodeActions(e,t,n){let r=[],o=n.markers.filter(l=>l.message.includes("Read model")&&l.message.includes("not found")),s=n.markers.filter(l=>l.message.includes("Read model")&&l.message.includes("is a draft"));for(let l of o){let f=l.message.match(/Read model ['"]([\w.]+)['"]/);if(f&&f[1]){let c=f[1];!this.readModels.some(g=>g.identifier===c||g.displayName===c)&&this.onCreateReadModel&&r.push({title:`Create read model '${c}'`,diagnostics:[l],kind:"quickfix",edit:void 0,isPreferred:!0,command:{id:"pdl.createReadModel",title:`Create ${c}`,arguments:[c]}})}}for(let l of s){let f=l.message.match(/Read model ['"]([\w.]+)['"]/);if(f&&f[1]){let c=f[1];this.draftReadModel&&this.isDraftReadModel(c)&&this.onEditReadModel&&r.push({title:`Edit read model '${c}'`,diagnostics:[l],kind:"quickfix",edit:void 0,isPreferred:!0,command:{id:"pdl.editReadModel",title:`Edit ${c}`,arguments:[c,this.draftReadModel.schema]}})}}return{actions:r,dispose:b(()=>{},"dispose")}}isDraftReadModel(e){return!!this.draftReadModel&&(this.draftReadModel.identifier===e||this.draftReadModel.displayName===e)}};var P,T,k,$,I=[],j=null,K=!1,L=null,O=null;function ke(d){return K||(K=!0,j=d,d.languages.register({id:"pdl"}),d.languages.setLanguageConfiguration("pdl",ae),d.languages.setMonarchTokensProvider("pdl",de),P=new A,T=new D,k=new W,$=new J,L&&($.setCreateReadModelCallback(L),L=null),O&&($.setEditReadModelCallback(O),O=null),I.push(d.languages.registerCompletionItemProvider("pdl",{provideCompletionItems:T.provideCompletionItems.bind(T),triggerCharacters:["."," ","=",`
|
|
74
|
-
`,"$"]})),I.push(d.languages.registerHoverProvider("pdl",{provideHover:k.provideHover.bind(k)})),I.push(d.languages.registerCodeActionProvider("pdl",{provideCodeActions:$.provideCodeActions.bind($)},{providedCodeActionKinds:["quickfix"]})),I.push(d.editor.registerCommand("pdl.createReadModel",(e,t)=>{$?.invokeCreateReadModel(t)})),I.push(d.editor.registerCommand("pdl.editReadModel",(e,t,n)=>{$?.invokeEditReadModel(t,n)})),I.push(d.editor.onDidCreateModel(e=>{e.getLanguageId()==="pdl"&&(B(d,e),I.push(e.onDidChangeContent(()=>B(d,e))))})),d.editor.getModels().forEach(e=>{e.getLanguageId()==="pdl"&&B(d,e)})),{dispose:ue}}b(ke,"registerProjectionLanguage");function ue(){I.forEach(d=>d.dispose()),I=[],K=!1,j=null}b(ue,"dispose");function je(d){P?.setReadModelSchemas([d]),T?.setReadModelSchemas([d])}b(je,"setReadModelSchema");function De(d){P?.setReadModels(d),T?.setReadModels(d),k?.setReadModels(d),$?.setReadModels(d),H()}b(De,"setReadModelSchemas");function Ae(d){$?$.setCreateReadModelCallback(d):L=d}b(Ae,"setCreateReadModelCallback");function We(d){$?$.setEditReadModelCallback(d):O=d}b(We,"setEditReadModelCallback");function Je(d){$?.setDraftReadModel(d),P?.setDraftReadModel(d),k?.setDraftReadModel(d),H()}b(Je,"setDraftReadModel");function Le(d){let t=b(n=>{if(!n)return{};if(Array.isArray(n)){let r={};return n.forEach((o,s)=>{if(!o)return;let l=o.title||o.name||(typeof o.$id=="string"?o.$id.split("/").pop():void 0)||`Event${s+1}`;r[l]=o}),r}return n},"normalize")(d);P?.setEventSchemas(t),T?.setEventSchemas(t),k?.setEventSchemas(t),H()}b(Le,"setEventSchemas");function Oe(d){T?.setEventSequences(d)}b(Oe,"setEventSequences");function B(d,e){if(P&&!e.isDisposed()){let t=P.validate(e);d.editor.setModelMarkers(e,"pdl-validator",t)}}b(B,"validateModel");function H(){j&&j.editor.getModels().forEach(d=>{d.getLanguageId()==="pdl"&&B(j,d)})}b(H,"revalidateAllModels");export{E as languageId,ke as registerProjectionLanguage,Ae as setCreateReadModelCallback,Je as setDraftReadModel,We as setEditReadModelCallback,Le as setEventSchemas,Oe as setEventSequences,je as setReadModelSchema,De as setReadModelSchemas};
|
|
75
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import"../../_virtual/_virtual/_rolldown/runtime.js";import{configuration as e,languageId as t,monarchLanguage as n}from"./language.js";import{CompletionProvider as r}from"./CompletionProvider.js";import{Validator as i}from"./Validator.js";import{HoverProvider as a}from"./HoverProvider.js";import{CodeActionProvider as o}from"./CodeActionProvider.js";let s,c,l,u,d=[],f=null,p=!1,m=null,h=null;function registerProjectionLanguage(t){return p||(p=!0,f=t,t.languages.register({id:`pdl`}),t.languages.setLanguageConfiguration(`pdl`,e),t.languages.setMonarchTokensProvider(`pdl`,n),s=new i,c=new r,l=new a,u=new o,m&&=(u.setCreateReadModelCallback(m),null),h&&=(u.setEditReadModelCallback(h),null),d.push(t.languages.registerCompletionItemProvider(`pdl`,{provideCompletionItems:c.provideCompletionItems.bind(c),triggerCharacters:[`.`,` `,`=`,`
|
|
2
|
+
`,`$`]})),d.push(t.languages.registerHoverProvider(`pdl`,{provideHover:l.provideHover.bind(l)})),d.push(t.languages.registerCodeActionProvider(`pdl`,{provideCodeActions:u.provideCodeActions.bind(u)},{providedCodeActionKinds:[`quickfix`]})),d.push(t.editor.registerCommand(`pdl.createReadModel`,(e,t)=>{u?.invokeCreateReadModel(t)})),d.push(t.editor.registerCommand(`pdl.editReadModel`,(e,t,n)=>{u?.invokeEditReadModel(t,n)})),d.push(t.editor.onDidCreateModel(e=>{e.getLanguageId()===`pdl`&&(validateModel(t,e),d.push(e.onDidChangeContent(()=>validateModel(t,e))))})),t.editor.getModels().forEach(e=>{e.getLanguageId()===`pdl`&&validateModel(t,e)})),{dispose}}function dispose(){d.forEach(e=>e.dispose()),d=[],p=!1,f=null}function setReadModelSchema(e){s?.setReadModelSchemas([e]),c?.setReadModelSchemas([e])}function setReadModelSchemas(e){s?.setReadModels(e),c?.setReadModels(e),l?.setReadModels(e),u?.setReadModels(e),revalidateAllModels()}function setCreateReadModelCallback(e){u?u.setCreateReadModelCallback(e):m=e}function setEditReadModelCallback(e){u?u.setEditReadModelCallback(e):h=e}function setDraftReadModel(e){u?.setDraftReadModel(e),s?.setDraftReadModel(e),l?.setDraftReadModel(e),revalidateAllModels()}function setEventSchemas(e){let normalize=e=>{if(!e)return{};if(Array.isArray(e)){let t={};return e.forEach((e,n)=>{if(!e)return;let r=e.title||e.name||(typeof e.$id==`string`?e.$id.split(`/`).pop():void 0)||`Event${n+1}`;t[r]=e}),t}return e},t=normalize(e);s?.setEventSchemas(t),c?.setEventSchemas(t),l?.setEventSchemas(t),revalidateAllModels()}function setEventSequences(e){c?.setEventSequences(e)}function validateModel(e,t){if(s&&!t.isDisposed()){let n=s.validate(t);e.editor.setModelMarkers(t,`pdl-validator`,n)}}function revalidateAllModels(){f&&f.editor.getModels().forEach(e=>{e.getLanguageId()===`pdl`&&validateModel(f,e)})}export{t as languageId,registerProjectionLanguage,setCreateReadModelCallback,setDraftReadModel,setEditReadModelCallback,setEventSchemas,setEventSequences,setReadModelSchema,setReadModelSchemas};
|
|
3
|
+
//# sourceMappingURL=index.js.map
|