@cratis/screenplay-language 5.3.0 → 5.3.2
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/bundles/TypeReferenceSymbol.js.map +1 -1
- package/dist/bundles/action-subject-authoring.js.map +1 -1
- package/dist/bundles/bmp-word-characters.js.map +1 -1
- package/dist/bundles/case-authoring.js +1 -1
- package/dist/bundles/case-authoring.js.map +1 -1
- package/dist/bundles/code-actions.js.map +1 -1
- package/dist/bundles/command-read-completions.js.map +1 -1
- package/dist/bundles/compiler/Authoring/ActionSubjectQuickFixes.js +3 -3
- package/dist/bundles/compiler/Authoring/ActionSubjectQuickFixes.js.map +1 -1
- package/dist/bundles/compiler/Authoring/QuickFixes.js +4 -4
- package/dist/bundles/compiler/Authoring/QuickFixes.js.map +1 -1
- package/dist/bundles/compiler/Authoring/StructuredValueQuickFix.js +1 -1
- package/dist/bundles/compiler/Authoring/StructuredValueQuickFix.js.map +1 -1
- package/dist/bundles/compiler/Authoring/TimelineQuickFixContext.js +4 -4
- package/dist/bundles/compiler/Authoring/TimelineQuickFixContext.js.map +1 -1
- package/dist/bundles/compiler/Authoring/TimelineQuickFixImports.js +2 -2
- package/dist/bundles/compiler/Authoring/TimelineQuickFixImports.js.map +1 -1
- package/dist/bundles/compiler/Authoring/TimelineQuickFixes.js +1 -1
- package/dist/bundles/compiler/Authoring/TimelineQuickFixes.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/DeclaredDependencies.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/DeclaredDependencyTargets.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/DependencyGraph.js +1 -1
- package/dist/bundles/compiler/Dependencies/DependencyGraph.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/DependencyKind.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/InvalidDependencyQuery.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/SliceReferences.js.map +1 -1
- package/dist/bundles/compiler/Dependencies/StronglyConnectedGroups.js.map +1 -1
- package/dist/bundles/compiler/Diagnostics/DiagnosticArgument.js.map +1 -1
- package/dist/bundles/compiler/Diagnostics/DiagnosticCodes.js +1 -1
- package/dist/bundles/compiler/Diagnostics/DiagnosticCodes.js.map +1 -1
- package/dist/bundles/compiler/Diagnostics/ProductionDestinationDiagnostics.js +1 -1
- package/dist/bundles/compiler/Diagnostics/ProductionDestinationDiagnostics.js.map +1 -1
- package/dist/bundles/compiler/Diagnostics/SourceLocation.js.map +1 -1
- package/dist/bundles/compiler/Files/AuthoredOrder.js +1 -1
- package/dist/bundles/compiler/Files/AuthoredOrder.js.map +1 -1
- package/dist/bundles/compiler/Files/OrderingRoot.js +1 -1
- package/dist/bundles/compiler/Files/OrderingRoot.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayApplicationAssembly.js +1 -1
- package/dist/bundles/compiler/Files/PlayApplicationAssembly.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayDocumentSource.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayFolderMerge.js +1 -1
- package/dist/bundles/compiler/Files/PlayFolderMerge.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayGlob.js +2 -1
- package/dist/bundles/compiler/Files/PlayGlob.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayImports.js +1 -1
- package/dist/bundles/compiler/Files/PlayImports.js.map +1 -1
- package/dist/bundles/compiler/Files/PlayPlacement.js.map +1 -1
- package/dist/bundles/compiler/Files/TimelineOrder.js +1 -1
- package/dist/bundles/compiler/Files/TimelineOrder.js.map +1 -1
- package/dist/bundles/compiler/Generation/FiniteGenerationRules.js +1 -1
- package/dist/bundles/compiler/Generation/GenerationAssessmentCache.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationChecksum.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationPattern.js +1 -1
- package/dist/bundles/compiler/Generation/GenerationPattern.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationPatternAssessment.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationPatternParser.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationPatternToken.js.map +1 -1
- package/dist/bundles/compiler/Generation/GenerationRuleProof.js +1 -1
- package/dist/bundles/compiler/Generation/InvalidGenerationPattern.js.map +1 -1
- package/dist/bundles/compiler/Generation/RegexCharacters.js.map +1 -1
- package/dist/bundles/compiler/Generation/RegexExpression.js.map +1 -1
- package/dist/bundles/compiler/Generation/RuleConsistency.js +1 -1
- package/dist/bundles/compiler/Parsing/ActionSubjectClause.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ActionSubjectInputs.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ActionSubjectResolution.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ApplicationContextParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ApplicationContextParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/AuthorizeParser.js +1 -1
- package/dist/bundles/compiler/Parsing/AuthorizeParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CanvasPlacement.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CaptureEventFixturesValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CaptureParser.js +1 -1
- package/dist/bundles/compiler/Parsing/CaptureParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ClockOperandParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CodeBlockParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandDestinationTypes.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandHandlerValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandParser.js +1 -1
- package/dist/bundles/compiler/Parsing/CommandParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandReadSources.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandResponseParser.js +1 -1
- package/dist/bundles/compiler/Parsing/CommandResponseParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CommandStreamCandidates.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CompositeStreamIdValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/CompositionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/CompositionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ConceptComplianceParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ConceptComplianceParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ConditionDepthBudget.js +2 -0
- package/dist/bundles/compiler/Parsing/ConditionDepthBudget.js.map +1 -0
- package/dist/bundles/compiler/Parsing/ConditionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ConditionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ConstraintParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ConstraintParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ConstraintPropertyValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/ConstraintPropertyValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ContinuationValues.js.map +1 -1
- package/dist/bundles/compiler/Parsing/DeclarationParsers.js +1 -1
- package/dist/bundles/compiler/Parsing/DeclarationParsers.js.map +1 -1
- package/dist/bundles/compiler/Parsing/DependencySourceParser.js +1 -1
- package/dist/bundles/compiler/Parsing/DependencySourceParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/DependsOnParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/DescriptionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/DescriptionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/DocumentationParser.js +1 -1
- package/dist/bundles/compiler/Parsing/DocumentationParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/EnumerationMembers.js +1 -1
- package/dist/bundles/compiler/Parsing/EnumerationMembers.js.map +1 -1
- package/dist/bundles/compiler/Parsing/EventMetadataParser.js +1 -1
- package/dist/bundles/compiler/Parsing/EventMetadataParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/EventSourceParser.js +1 -1
- package/dist/bundles/compiler/Parsing/EventSourceParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/EventSourceValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/EventSourceValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/EventSubjectValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/EventSubjectValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ExpressionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ExpressionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/FeatureBody.js +1 -1
- package/dist/bundles/compiler/Parsing/FeatureBody.js.map +1 -1
- package/dist/bundles/compiler/Parsing/FileImportParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/FileReferences.js.map +1 -1
- package/dist/bundles/compiler/Parsing/FoldedEventSources.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GenerationBodyParser.js +1 -1
- package/dist/bundles/compiler/Parsing/GenerationBodyParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GenerationParser.js +1 -1
- package/dist/bundles/compiler/Parsing/GenerationParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionInputs.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionShadowing.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/GuardedActionValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/GuardedInteractions.js +1 -1
- package/dist/bundles/compiler/Parsing/GuardedInteractions.js.map +1 -1
- package/dist/bundles/compiler/Parsing/IdentifierComplianceValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/IdentifierComplianceValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/IdentityParser.js +1 -1
- package/dist/bundles/compiler/Parsing/IdentityParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/IdentityValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ImplementationParser.js +2 -2
- package/dist/bundles/compiler/Parsing/ImplementationParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ImportDiscovery.js +1 -1
- package/dist/bundles/compiler/Parsing/ImportDiscovery.js.map +1 -1
- package/dist/bundles/compiler/Parsing/InlineEventValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/InputUses.js +1 -1
- package/dist/bundles/compiler/Parsing/InputUses.js.map +1 -1
- package/dist/bundles/compiler/Parsing/InteractionAlternatives.js +1 -1
- package/dist/bundles/compiler/Parsing/InteractionAlternatives.js.map +1 -1
- package/dist/bundles/compiler/Parsing/InteractionExecutions.js +1 -1
- package/dist/bundles/compiler/Parsing/InteractionExecutions.js.map +1 -1
- package/dist/bundles/compiler/Parsing/LegacyTextRulePatterns.js.map +1 -1
- package/dist/bundles/compiler/Parsing/LineReader.js.map +1 -1
- package/dist/bundles/compiler/Parsing/LineText.js.map +1 -1
- package/dist/bundles/compiler/Parsing/MatchAmbiguity.js +1 -1
- package/dist/bundles/compiler/Parsing/MatchAmbiguity.js.map +1 -1
- package/dist/bundles/compiler/Parsing/MatchAmbiguityCharacters.js.map +1 -1
- package/dist/bundles/compiler/Parsing/MatchAmbiguityGraph.js.map +1 -1
- package/dist/bundles/compiler/Parsing/MatchAmbiguityParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/MatchOperandValidation.js +1 -1
- package/dist/bundles/compiler/Parsing/MatchOperandValidation.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ModuleBody.js +1 -1
- package/dist/bundles/compiler/Parsing/ModuleBody.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ObserverFilterParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ObserverFilterParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ObserverFilterValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/OperationParser.js +1 -1
- package/dist/bundles/compiler/Parsing/OperationParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/OperationValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/OperationValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ParserContext.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PersonaCallerValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PolicyParser.js +1 -1
- package/dist/bundles/compiler/Parsing/PolicyParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PortableMatchGroupName.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PortableMatchPattern.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PortableMatchSuggestions.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PossibleEventsParser.js +1 -1
- package/dist/bundles/compiler/Parsing/PossibleEventsParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ProducesParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ProducesParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionEventScopeValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionExpressionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionExpressionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionTargetValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/ProjectionTargetValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PropertyLineParser.js +1 -1
- package/dist/bundles/compiler/Parsing/PropertyLineParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventMetadataValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventMetadataValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventUsageCollector.js +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventUsageCollector.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventUsageValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/PublicEventUsageValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PurposeParser.js +1 -1
- package/dist/bundles/compiler/Parsing/PurposeParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/PurposeValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/QueryParser.js +1 -1
- package/dist/bundles/compiler/Parsing/QueryParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReactionIdentityParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ReactionIdentityParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReactionParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ReactionParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReactionRefusalValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/ReactionRefusalValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReadModelKeyValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReadModelMemberTypeValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ReadsParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ReadsParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/RedeliveryValues.js.map +1 -1
- package/dist/bundles/compiler/Parsing/RefusalDeclarations.js +1 -1
- package/dist/bundles/compiler/Parsing/RefusalDeclarations.js.map +1 -1
- package/dist/bundles/compiler/Parsing/RefusalValueWalker.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ResponseCommandResolver.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ResponseDateValues.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ResponseValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/ResponseValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ScreenParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ScreenParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/ScreenplayParser.js +1 -1
- package/dist/bundles/compiler/Parsing/ScreenplayParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SeedParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SeedParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SliceParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SliceParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SourceLine.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SourceLineSplitter.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SourceOptionsParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SourceOptionsParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCaseParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCaseParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCaseValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCaseValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCommandExamples.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationCommandExamples.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationExampleParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationExampleParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationRedeliveryValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationRedeliveryValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationResponseParser.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationResponseParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationRouteComparison.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationRouteComparison.js.map +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationStreamValidator.js +1 -1
- package/dist/bundles/compiler/Parsing/SpecificationStreamValidator.js.map +1 -1
- package/dist/bundles/compiler/Parsing/StateMachineParser.js +1 -1
- package/dist/bundles/compiler/Parsing/StateMachineParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/StructuralInteractionSites.js.map +1 -1
- package/dist/bundles/compiler/Parsing/StructuredBlockParser.js +1 -1
- package/dist/bundles/compiler/Parsing/StructuredBlockParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/StructuredValueParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/TemplateReferenceText.js +1 -1
- package/dist/bundles/compiler/Parsing/TemplateReferenceText.js.map +1 -1
- package/dist/bundles/compiler/Parsing/TriggerDataParser.js +1 -1
- package/dist/bundles/compiler/Parsing/TriggerDataParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/UiBindingParser.js +1 -1
- package/dist/bundles/compiler/Parsing/UiBindingParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/UiProfileLegacyLayout.js +1 -1
- package/dist/bundles/compiler/Parsing/UiProfileLegacyLayout.js.map +1 -1
- package/dist/bundles/compiler/Parsing/WorkflowParser.js +1 -1
- package/dist/bundles/compiler/Parsing/WorkflowParser.js.map +1 -1
- package/dist/bundles/compiler/Parsing/checkPortableMatchPattern.js.map +1 -1
- package/dist/bundles/compiler/Parsing/hasExponentialMatchAmbiguity.js.map +1 -1
- package/dist/bundles/compiler/Parsing/trimMatchAmbiguityGraph.js.map +1 -1
- package/dist/bundles/compiler/ScreenActionSubjects.js.map +1 -1
- package/dist/bundles/compiler/ScreenplayCompiler.js +1 -1
- package/dist/bundles/compiler/ScreenplayCompiler.js.map +1 -1
- package/dist/bundles/compiler/Syntax/ActionSubjectInvariants.js.map +1 -1
- package/dist/bundles/compiler/Syntax/AuthoringProductionResolver.js.map +1 -1
- package/dist/bundles/compiler/Syntax/CaptureEventsSource.js.map +1 -1
- package/dist/bundles/compiler/Syntax/DependencySources.js.map +1 -1
- package/dist/bundles/compiler/Syntax/EventDeclarations.js.map +1 -1
- package/dist/bundles/compiler/Syntax/EventSourceCatalog.js.map +1 -1
- package/dist/bundles/compiler/Syntax/EventSourceReadConfidence.js.map +1 -1
- package/dist/bundles/compiler/Syntax/ExactMathFacts.js.map +1 -1
- package/dist/bundles/compiler/Syntax/ExactNumber.js.map +1 -1
- package/dist/bundles/compiler/Syntax/InvalidSyntaxJson.js.map +1 -1
- package/dist/bundles/compiler/Syntax/LegacyWireProjection.js.map +1 -1
- package/dist/bundles/compiler/Syntax/Operations.js.map +1 -1
- package/dist/bundles/compiler/Syntax/PersonaCallers.js.map +1 -1
- package/dist/bundles/compiler/Syntax/ProductionDestinations.js.map +1 -1
- package/dist/bundles/compiler/Syntax/PublicEventInvariants.js.map +1 -1
- package/dist/bundles/compiler/Syntax/ScreenplaySyntaxWalker.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SourceOptions.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SpecificationCaseOrigin.js.map +1 -1
- package/dist/bundles/compiler/Syntax/StreamIdFormatter.js.map +1 -1
- package/dist/bundles/compiler/Syntax/StrictSyntaxJson.js +1 -1
- package/dist/bundles/compiler/Syntax/Structure.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxCollections.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxInvariants.js +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxInvariants.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxJson.js +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxJson.js.map +1 -1
- package/dist/bundles/compiler/Syntax/SyntaxMemberContracts.js.map +1 -1
- package/dist/bundles/compiler/Syntax/index.js +1 -1
- package/dist/bundles/compiler/Text/ImplementationHintText.js.map +1 -1
- package/dist/bundles/compiler/Text/ReservedWords.js.map +1 -1
- package/dist/bundles/compiler/Text/SourceStreamNames.js.map +1 -1
- package/dist/bundles/compiler/Text/StringLiteral.js.map +1 -1
- package/dist/bundles/compiler/Text/ordinalIgnoreCaseKey.js.map +1 -1
- package/dist/bundles/compiler/Text/patterns.js.map +1 -1
- package/dist/bundles/compiler/index.js +1 -1
- package/dist/bundles/completion-items.js +4 -4
- package/dist/bundles/completion-items.js.map +1 -1
- package/dist/bundles/completion-planner.js +2 -2
- package/dist/bundles/completion-planner.js.map +1 -1
- package/dist/bundles/completions.js +1 -1
- package/dist/bundles/completions.js.map +1 -1
- package/dist/bundles/continuation-responses.js +1 -1
- package/dist/bundles/continuation-responses.js.map +1 -1
- package/dist/bundles/declarations.js.map +1 -1
- package/dist/bundles/dependency-completions.js.map +1 -1
- package/dist/bundles/dependency-target-analysis.js.map +1 -1
- package/dist/bundles/diagnostic-codes.js +1 -1
- package/dist/bundles/diagnostic-codes.js.map +1 -1
- package/dist/bundles/diagnostics.js +1 -1
- package/dist/bundles/diagnostics.js.map +1 -1
- package/dist/bundles/document-context.js.map +1 -1
- package/dist/bundles/documentation-item.js.map +1 -1
- package/dist/bundles/event-analysis-source.js.map +1 -1
- package/dist/bundles/event-context-catalog.js.map +1 -1
- package/dist/bundles/event-context.js.map +1 -1
- package/dist/bundles/event-source-authoring.js +11 -11
- package/dist/bundles/event-source-authoring.js.map +1 -1
- package/dist/bundles/example-analysis.js +2 -2
- package/dist/bundles/example-analysis.js.map +1 -1
- package/dist/bundles/example-authoring.js +2 -2
- package/dist/bundles/example-authoring.js.map +1 -1
- package/dist/bundles/example-declaration-items.js.map +1 -1
- package/dist/bundles/example-values.js.map +1 -1
- package/dist/bundles/file-imports.js.map +1 -1
- package/dist/bundles/file-references.js.map +1 -1
- package/dist/bundles/generation-completions.js.map +1 -1
- package/dist/bundles/hover-content.js +5 -5
- package/dist/bundles/hover-content.js.map +1 -1
- package/dist/bundles/hover.js.map +1 -1
- package/dist/bundles/index.js +1 -1
- package/dist/bundles/index.js.map +1 -1
- package/dist/bundles/inlay-hints.js.map +1 -1
- package/dist/bundles/inline-completions.js +1 -1
- package/dist/bundles/inline-completions.js.map +1 -1
- package/dist/bundles/inline-event-validation.js +1 -1
- package/dist/bundles/inline-event-validation.js.map +1 -1
- package/dist/bundles/keyword-docs.js.map +1 -1
- package/dist/bundles/language.js.map +1 -1
- package/dist/bundles/named-rule-context.js.map +1 -1
- package/dist/bundles/operation-authoring.js +6 -6
- package/dist/bundles/operation-authoring.js.map +1 -1
- package/dist/bundles/persona-analysis.js +1 -1
- package/dist/bundles/persona-analysis.js.map +1 -1
- package/dist/bundles/production-destinations.js +1 -1
- package/dist/bundles/production-destinations.js.map +1 -1
- package/dist/bundles/purpose-items.js.map +1 -1
- package/dist/bundles/reaction-authoring.js +3 -3
- package/dist/bundles/reaction-authoring.js.map +1 -1
- package/dist/bundles/read-model-key-completions.js +1 -1
- package/dist/bundles/read-model-key-completions.js.map +1 -1
- package/dist/bundles/refusal-context.js.map +1 -1
- package/dist/bundles/response-analysis.js.map +1 -1
- package/dist/bundles/response-completions.js +1 -1
- package/dist/bundles/response-completions.js.map +1 -1
- package/dist/bundles/response-tokens.js +2 -2
- package/dist/bundles/response-tokens.js.map +1 -1
- package/dist/bundles/scope-items.js +3 -3
- package/dist/bundles/scope-items.js.map +1 -1
- package/dist/bundles/structure-completions.js.map +1 -1
- package/dist/bundles/sub-language-registry.js.map +1 -1
- package/dist/bundles/sub-languages/capture/CompletionProvider.js.map +1 -1
- package/dist/bundles/sub-languages/capture/HoverProvider.js.map +1 -1
- package/dist/bundles/sub-languages/capture/Validator.js.map +1 -1
- package/dist/bundles/sub-languages/capture/index.js.map +1 -1
- package/dist/bundles/sub-languages/capture/language.js.map +1 -1
- package/dist/bundles/sub-languages/cdl.js.map +1 -1
- package/dist/bundles/sub-languages/pdl.js.map +1 -1
- package/dist/bundles/sub-languages/projection/CodeActionProvider.js.map +1 -1
- package/dist/bundles/sub-languages/projection/CompletionProvider.js +1 -1
- package/dist/bundles/sub-languages/projection/CompletionProvider.js.map +1 -1
- package/dist/bundles/sub-languages/projection/HoverProvider.js.map +1 -1
- package/dist/bundles/sub-languages/projection/Validator.js.map +1 -1
- package/dist/bundles/sub-languages/projection/index.js.map +1 -1
- package/dist/bundles/sub-languages/projection/language.js.map +1 -1
- package/dist/bundles/symbols.js +2 -2
- package/dist/bundles/symbols.js.map +1 -1
- package/dist/bundles/themes/screenplay-dark.js.map +1 -1
- package/dist/bundles/themes/screenplay-light.js.map +1 -1
- package/dist/bundles/tokens.js.map +1 -1
- package/dist/bundles/validation.js +2 -2
- package/dist/bundles/validation.js.map +1 -1
- package/dist/diagnostic-codes.d.ts +1 -0
- package/dist/diagnostic-codes.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxInvariants.js","names":["ruleNamePattern","sourceStreamPattern","value","kind","InvalidSyntaxJson","message","position","validateActionSubject","node","metadataError","publicEventMetadataError","concept","numbers","number","validation","rule","generation","production","operation","phase","handler","implementation","hint","isBlankImplementationHint","isSourceStreamName","parts","scalar","part","sources","declaration","type","isSourceStreamTypeName","command","candidates","rejected","index","occurrence","route","filter","candidate"],"sources":["../../../../../../Compiler/Syntax/SyntaxInvariants.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 { CommandSyntax, ValidationRuleSyntax } from './Commands';\nimport { ConceptSyntax } from './Declarations';\nimport { GenerationSyntax } from './GenerationSyntax';\nimport { CommandStreamSyntax, EventSourceSyntax, EventStreamSyntax, EventStreamIdPartSyntax } from './EventSources';\nimport { PropertyMappingSyntax } from './Expressions';\nimport { HandlerSyntax, ImplementationSyntax, ImplementationHintSyntax } from './Implementations';\nimport { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { publicEventMetadataError } from './PublicEventInvariants';\nimport { OperationPhaseSyntax } from './Operations';\nimport { ProducesSyntax } from './Reactions';\nimport { ObserverFilterSyntax } from './ObserverFilterSyntax';\nimport { SyntaxNode } from './SyntaxNode';\nimport { validateActionSubject } from './ActionSubjectInvariants';\nimport { SpecificationEventSyntax, SpecificationStreamSyntax } from './Specifications';\nimport { isBlankImplementationHint } from '../Text/ImplementationHintText';\nimport { isSourceStreamName, isSourceStreamTypeName, sourceStreamPattern } from '../Text/SourceStreamNames';\n\n// .NET \\w is evaluated per UTF-16 code unit, so a supplementary-plane letter is not a name character.\nconst ruleNamePattern = sourceStreamPattern('^[A-Za-z_]\\\\w*$');\n\nconst hasKind = (value: unknown, kind: string): boolean => typeof value === 'object' && value !== null && !Array.isArray(value) && (value as SyntaxNode).kind === kind;\nconst refuse = (message: string): never => { throw new InvalidSyntaxJson(message); };\nconst collection = (value: unknown, kind: string, message: string): void => {\n if (!Array.isArray(value)) return refuse(message);\n // Indexed, so no caller-overridable iteration method or iterator is consulted.\n for (let position = 0; position < value.length; position++) if (!hasKind(value[position], kind)) refuse(message);\n};\n\n// The native ImplementationInvariants / OperationInvariants / EventSourceInvariants contracts.\n// Shared by the isolated strict reader and the writer, without pulling the transport schema into Monaco.\nexport function validateSyntaxInvariants(node: SyntaxNode): void {\n validateActionSubject(node, collection);\n const metadataError = publicEventMetadataError(node);\n if (metadataError !== undefined) refuse(metadataError);\n if (node.kind === 'ConceptSyntax') {\n const concept = node as ConceptSyntax;\n if (concept.valueNumbers != null) {\n const numbers = concept.valueNumbers;\n if (concept.type !== 'Enum' || !Array.isArray(numbers) || numbers.length !== concept.values.length || numbers.some(number => !Number.isInteger(number) || number < -2147483648 || number > 2147483647) || new Set(numbers).size !== numbers.length) refuse('Explicit enum numbers require an Enum concept, one number per value, and unique int32 numbers.');\n }\n for (const validation of concept.validations ?? []) {\n if (validation.kind === 'DeclarativeValidateSyntax' && validation.rules.some(rule => rule.implementation != null)) refuse('Implementation wrappers on named rules are supported only on commands.');\n }\n }\n if (node.kind === 'GenerationSyntax') {\n const generation = node as GenerationSyntax;\n if (generation.file != null || generation.code != null) {\n if (generation.strategy !== 'rule' || typeof generation.rule !== 'string' || !/^[A-Za-z_][A-Za-z0-9_]*$(?![\\s\\S])/.test(generation.rule)) refuse('A generation body requires a named generation rule.');\n if (generation.file != null && generation.code != null) refuse('A generation rule has exactly one file or inline payload.');\n }\n }\n if (node.kind === 'ValidationRuleSyntax') {\n const rule = node as ValidationRuleSyntax;\n if (rule.implementation != null) {\n if (!hasKind(rule.implementation, 'ImplementationSyntax')) refuse('A named rule requires an ImplementationSyntax wrapper.');\n if (rule.rule !== 'Rule' || rule.value?.kind !== 'PathExpressionSyntax' || !hasKind(rule.value, 'PathExpressionSyntax') || typeof rule.value.path !== 'string' || ruleNamePattern.exec(rule.value.path)?.[0] !== rule.value.path) refuse('An implementation wrapper requires a valid named rule.');\n if (rule.file != null && rule.code != null) refuse('A named rule has at most one file or inline payload.');\n // Native typed transport enforces these payload members in both numeric modes.\n if (rule.file != null && (!hasKind(rule.file, 'FileReferenceSyntax') || typeof rule.file.path !== 'string')) refuse('A named rule file requires a FileReferenceSyntax payload with a string path.');\n if (rule.code != null && (!hasKind(rule.code, 'CodeBlockSyntax') || typeof rule.code.language !== 'string' || typeof rule.code.code !== 'string')) refuse('A named rule inline payload requires a CodeBlockSyntax with string language and code.');\n validateSyntaxInvariants(rule.implementation);\n }\n }\n if (node.kind === 'ProducesSyntax') {\n const production = node as ProducesSyntax;\n if (production.stream?.propertyCandidate != null) refuse('A production route cannot contain a property candidate.');\n const operation = production.inlineOperation;\n if (operation != null) {\n if (production.inlineEvent != null) refuse('A production cannot declare both an event and an operation.');\n if (production.when != null || production.event !== operation.name || production.for != null || (production.tags ?? []).length > 0) refuse('An inline operation requires a matching unconditional target without event metadata.');\n collection(operation.inputs, 'PropertySyntax', 'Operation inputs must be a collection of properties.');\n collection(production.mappings, 'PropertyMappingSyntax', 'Production mappings must be a collection of mappings.');\n if (operation.inputs.length !== production.mappings.length) refuse('Inline operation inputs and mappings must correspond in order.');\n for (let position = 0; position < operation.inputs.length; position++) if (operation.inputs[position].name !== production.mappings[position].property) refuse('Inline operation inputs and mappings must correspond in order.');\n }\n }\n if (node.kind === 'OperationPhaseSyntax') {\n const phase = node as OperationPhaseSyntax;\n if (phase.file != null && phase.code != null) refuse('An operation phase has at most one file or inline payload.');\n if (phase.implementation != null) validateSyntaxInvariants(phase.implementation);\n }\n if (node.kind === 'HandlerSyntax') {\n const handler = node as HandlerSyntax;\n // Native transport keeps old unwrapped structural handlers; only the new wrapper is admitted here.\n if (handler.implementation != null && handler.file != null && handler.code != null) refuse('A handler has at most one file or inline payload.');\n }\n if (node.kind === 'ImplementationSyntax') {\n const implementation = node as ImplementationSyntax;\n collection(implementation.hints, 'ImplementationHintSyntax', 'Implementation hints must be a collection of nonblank hints.');\n for (let position = 0; position < implementation.hints.length; position++) validateSyntaxInvariants(implementation.hints[position]);\n }\n if (node.kind === 'ImplementationHintSyntax') {\n const hint = node as ImplementationHintSyntax;\n if (typeof hint.text !== 'string' || isBlankImplementationHint(hint.text)) refuse('An implementation hint must be nonblank.');\n }\n validateSourceStream(node);\n}\n\nfunction validateSourceStream(node: SyntaxNode): void {\n const name = (value: string): void => { if (!isSourceStreamName(value)) refuse('Event source and stream names must be identifiers.'); };\n const mappings = (scalar: PropertyMappingSyntax | null, parts: PropertyMappingSyntax[]): void => {\n collection(parts, 'PropertyMappingSyntax', 'Stream id part mappings must be a collection.');\n if (scalar !== null && parts.length > 0) refuse('A route cannot map both scalar and composite stream ids.');\n parts.forEach(part => name(part.property));\n };\n if (node.kind === 'ApplicationSyntax') {\n const sources = (node as unknown as { eventSources?: unknown }).eventSources;\n if (sources !== undefined) collection(sources, 'EventSourceSyntax', 'Event sources must be a collection of event source nodes without null elements.');\n }\n if (node.kind === 'EventSourceSyntax' || node.kind === 'EventStreamSyntax') {\n const declaration = node as EventSourceSyntax | EventStreamSyntax;\n name(declaration.name);\n if (declaration.id !== null && (typeof declaration.id !== 'string' || declaration.id.trim() === '')) refuse('A rename pin must be nonempty.');\n const type = declaration.kind === 'EventSourceSyntax' ? declaration.identifier : declaration.streamId;\n if (type !== null && !hasKind(type, 'TypeRefSyntax')) refuse('Source identifiers and stream ids require type reference nodes.');\n if (type !== null && (type.isCollection || type.isOptional)) refuse('Source identifiers and stream ids require nonoptional scalar type references.');\n if (type !== null && !isSourceStreamTypeName(type.name)) refuse('Source identifiers and stream ids require an exact type reference name.');\n if (declaration.kind === 'EventSourceSyntax') collection(declaration.streams, 'EventStreamSyntax', 'Event streams must contain event stream nodes without null elements.');\n else {\n collection(declaration.streamIdParts, 'EventStreamIdPartSyntax', 'Stream id parts must be a collection.');\n if (declaration.streamId !== null && declaration.streamIdParts.length > 0) refuse('A stream cannot declare both scalar and composite stream ids.');\n declaration.streamIdParts.forEach(part => validateSourceStream(part));\n }\n }\n if (node.kind === 'EventStreamIdPartSyntax') {\n const part = node as EventStreamIdPartSyntax;\n name(part.name);\n if (!hasKind(part.type, 'TypeRefSyntax')) refuse('A stream id part requires a type.');\n if (part.type.isOptional || part.type.isCollection) refuse('Source identifiers and stream ids require nonoptional scalar type references.');\n if (!isSourceStreamTypeName(part.type.name)) refuse('Source identifiers and stream ids require an exact type reference name.');\n }\n if (node.kind === 'CommandSyntax') {\n const command = node as CommandSyntax;\n if (command.stream?.propertyCandidate != null) refuse('The authoritative command stream cannot contain an ambiguous property candidate.');\n if (command.stream != null && !hasKind(command.stream, 'CommandStreamSyntax')) refuse('The authoritative command stream must be a command stream node.');\n if (command.streamCandidates !== undefined) collection(command.streamCandidates, 'CommandStreamSyntax', 'Command stream candidates must be a collection without null elements.');\n const candidates = command.streamCandidates ?? [];\n for (let position = 0; position < candidates.length; position++) {\n const rejected = candidates[position];\n validateSourceStream(rejected);\n if (rejected.propertyCandidate === null && command.stream == null) refuse('A duplicate route candidate requires an authoritative route.');\n if (rejected.propertyCandidate !== null) for (let index = 0; index < command.properties.length; index++) if (command.properties[index] === rejected.propertyCandidate) refuse('An ambiguous property is owned only by its stream candidate.');\n }\n }\n if (node.kind === 'SpecificationEventSyntax' || node.kind === 'SpecificationExampleSyntax' || node.kind === 'SpecificationRedeliverySyntax') {\n const occurrence = node as SpecificationEventSyntax;\n if (occurrence.stream != null && occurrence.noStream != null) refuse('An event occurrence cannot declare both stream and no stream.');\n if (occurrence.stream != null && !hasKind(occurrence.stream, 'SpecificationStreamSyntax')) refuse('A specification stream requires a specification stream node.');\n if (occurrence.noStream != null && !hasKind(occurrence.noStream, 'SpecificationNoStreamSyntax')) refuse('An unrouted expectation requires a specification no stream node.');\n }\n if (node.kind === 'SpecificationStreamSyntax') {\n const route = node as SpecificationStreamSyntax;\n name(route.eventSource);\n name(route.stream);\n if (route.streamId !== null && route.streamId.property !== 'streamId') refuse('A specification stream maps only streamId.');\n mappings(route.streamId, route.streamIdParts);\n }\n if (node.kind === 'ObserverFilterSyntax') {\n const filter = node as ObserverFilterSyntax;\n name(filter.eventSource);\n if (filter.stream != null) name(filter.stream);\n }\n if (node.kind === 'CommandStreamSyntax') {\n const route = node as CommandStreamSyntax;\n name(route.eventSource);\n name(route.stream);\n if (route.streamId !== null && route.streamId.property !== 'streamId') refuse('A command stream maps only streamId.');\n mappings(route.streamId, route.streamIdParts);\n const candidate = route.propertyCandidate;\n if (candidate !== null && (candidate.name !== 'stream' || candidate.type.name !== `${route.eventSource}.${route.stream}` || candidate.type.isCollection || candidate.type.isOptional || candidate.isGenerated || candidate.isIdentifier || route.streamId !== null || route.streamIdParts.length > 0)) refuse('An ambiguous route must retain its exact unmodified property candidate, without selecting nested routing.');\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyntaxInvariants.js","names":["ruleNamePattern","sourceStreamPattern","value","kind","InvalidSyntaxJson","message","position","validateActionSubject","node","metadataError","publicEventMetadataError","concept","numbers","number","validation","rule","generation","production","operation","phase","handler","implementation","hint","isBlankImplementationHint","isSourceStreamName","parts","scalar","part","sources","declaration","type","isSourceStreamTypeName","command","candidates","rejected","index","occurrence","route","filter","candidate"],"sources":["../../../../../../Compiler/Syntax/SyntaxInvariants.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 { CommandSyntax, ValidationRuleSyntax } from './Commands';\nimport { ConceptSyntax } from './Declarations';\nimport { GenerationSyntax } from './GenerationSyntax';\nimport { CommandStreamSyntax, EventSourceSyntax, EventStreamSyntax, EventStreamIdPartSyntax } from './EventSources';\nimport { PropertyMappingSyntax } from './Expressions';\nimport { HandlerSyntax, ImplementationSyntax, ImplementationHintSyntax } from './Implementations';\nimport { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { publicEventMetadataError } from './PublicEventInvariants';\nimport { OperationPhaseSyntax } from './Operations';\nimport { ProducesSyntax } from './Reactions';\nimport { ObserverFilterSyntax } from './ObserverFilterSyntax';\nimport { SyntaxNode } from './SyntaxNode';\nimport { validateActionSubject } from './ActionSubjectInvariants';\nimport { SpecificationEventSyntax, SpecificationStreamSyntax } from './Specifications';\nimport { isBlankImplementationHint } from '../Text/ImplementationHintText';\nimport { isSourceStreamName, isSourceStreamTypeName, sourceStreamPattern } from '../Text/SourceStreamNames';\n\n// .NET \\w is evaluated per UTF-16 code unit, so a supplementary-plane letter is not a name character.\nconst ruleNamePattern = sourceStreamPattern('^[A-Za-z_]\\\\w*$');\n\nconst hasKind = (value: unknown, kind: string): boolean => typeof value === 'object' && value !== null && !Array.isArray(value) && (value as SyntaxNode).kind === kind;\nconst refuse = (message: string): never => { throw new InvalidSyntaxJson(message); };\nconst collection = (value: unknown, kind: string, message: string): void => {\n if (!Array.isArray(value)) return refuse(message);\n // Indexed, so no caller-overridable iteration method or iterator is consulted.\n for (let position = 0; position < value.length; position++) if (!hasKind(value[position], kind)) refuse(message);\n};\n\n// The native ImplementationInvariants / OperationInvariants / EventSourceInvariants contracts.\n// Shared by the isolated strict reader and the writer, without pulling the transport schema into Monaco.\nexport function validateSyntaxInvariants(node: SyntaxNode): void {\n validateActionSubject(node, collection);\n const metadataError = publicEventMetadataError(node);\n if (metadataError !== undefined) refuse(metadataError);\n if (node.kind === 'ConceptSyntax') {\n const concept = node as ConceptSyntax;\n if (concept.valueNumbers != null) {\n const numbers = concept.valueNumbers;\n if (concept.type !== 'Enum' || !Array.isArray(numbers) || numbers.length !== concept.values.length || numbers.some(number => !Number.isInteger(number) || number < -2147483648 || number > 2147483647) || new Set(numbers).size !== numbers.length) refuse('Explicit enum numbers require an Enum concept, one number per value, and unique int32 numbers.');\n }\n for (const validation of concept.validations ?? []) {\n if (validation.kind === 'DeclarativeValidateSyntax' && validation.rules.some(rule => rule.implementation != null)) refuse('Implementation wrappers on named rules are supported only on commands.');\n }\n }\n if (node.kind === 'GenerationSyntax') {\n const generation = node as GenerationSyntax;\n if (generation.file != null || generation.code != null) {\n if (generation.strategy !== 'rule' || typeof generation.rule !== 'string' || !/^[A-Za-z_][A-Za-z0-9_]*$(?![\\s\\S])/.test(generation.rule)) refuse('A generation body requires a named generation rule.');\n if (generation.file != null && generation.code != null) refuse('A generation rule has exactly one file or inline payload.');\n }\n }\n if (node.kind === 'ValidationRuleSyntax') {\n const rule = node as ValidationRuleSyntax;\n if (rule.implementation != null) {\n if (!hasKind(rule.implementation, 'ImplementationSyntax')) refuse('A named rule requires an ImplementationSyntax wrapper.');\n if (rule.rule !== 'Rule' || rule.value?.kind !== 'PathExpressionSyntax' || !hasKind(rule.value, 'PathExpressionSyntax') || typeof rule.value.path !== 'string' || ruleNamePattern.exec(rule.value.path)?.[0] !== rule.value.path) refuse('An implementation wrapper requires a valid named rule.');\n if (rule.file != null && rule.code != null) refuse('A named rule has at most one file or inline payload.');\n // Native typed transport enforces these payload members in both numeric modes.\n if (rule.file != null && (!hasKind(rule.file, 'FileReferenceSyntax') || typeof rule.file.path !== 'string')) refuse('A named rule file requires a FileReferenceSyntax payload with a string path.');\n if (rule.code != null && (!hasKind(rule.code, 'CodeBlockSyntax') || typeof rule.code.language !== 'string' || typeof rule.code.code !== 'string')) refuse('A named rule inline payload requires a CodeBlockSyntax with string language and code.');\n validateSyntaxInvariants(rule.implementation);\n }\n }\n if (node.kind === 'ProducesSyntax') {\n const production = node as ProducesSyntax;\n if (production.stream?.propertyCandidate != null) refuse('A production route cannot contain a property candidate.');\n const operation = production.inlineOperation;\n if (operation != null) {\n if (production.inlineEvent != null) refuse('A production cannot declare both an event and an operation.');\n if (production.when != null || production.event !== operation.name || production.for != null || (production.tags ?? []).length > 0) refuse('An inline operation requires a matching unconditional target without event metadata.');\n collection(operation.inputs, 'PropertySyntax', 'Operation inputs must be a collection of properties.');\n collection(production.mappings, 'PropertyMappingSyntax', 'Production mappings must be a collection of mappings.');\n if (operation.inputs.length !== production.mappings.length) refuse('Inline operation inputs and mappings must correspond in order.');\n for (let position = 0; position < operation.inputs.length; position++) if (operation.inputs[position].name !== production.mappings[position].property) refuse('Inline operation inputs and mappings must correspond in order.');\n }\n }\n if (node.kind === 'OperationPhaseSyntax') {\n const phase = node as OperationPhaseSyntax;\n if (phase.file != null && phase.code != null) refuse('An operation phase has at most one file or inline payload.');\n if (phase.implementation != null) validateSyntaxInvariants(phase.implementation);\n }\n if (node.kind === 'HandlerSyntax') {\n const handler = node as HandlerSyntax;\n // Native transport keeps old unwrapped structural handlers; only the new wrapper is admitted here.\n if (handler.implementation != null && handler.file != null && handler.code != null) refuse('A handler has at most one file or inline payload.');\n }\n if (node.kind === 'ImplementationSyntax') {\n const implementation = node as ImplementationSyntax;\n collection(implementation.hints, 'ImplementationHintSyntax', 'Implementation hints must be a collection of nonblank hints.');\n for (let position = 0; position < implementation.hints.length; position++) validateSyntaxInvariants(implementation.hints[position]);\n }\n if (node.kind === 'ImplementationHintSyntax') {\n const hint = node as ImplementationHintSyntax;\n if (typeof hint.text !== 'string' || isBlankImplementationHint(hint.text)) refuse('An implementation hint must be nonblank.');\n }\n validateSourceStream(node);\n}\n\nfunction validateSourceStream(node: SyntaxNode): void {\n const name = (value: string): void => { if (!isSourceStreamName(value)) refuse('Event source and stream names must be identifiers.'); };\n const mappings = (scalar: PropertyMappingSyntax | null, parts: PropertyMappingSyntax[]): void => {\n collection(parts, 'PropertyMappingSyntax', 'Stream id part mappings must be a collection.');\n if (scalar !== null && parts.length > 0) refuse('A route cannot map both scalar and composite stream ids.');\n parts.forEach(part => name(part.property));\n };\n if (node.kind === 'ApplicationSyntax') {\n const sources = (node as unknown as { eventSources?: unknown }).eventSources;\n if (sources !== undefined) collection(sources, 'EventSourceSyntax', 'Event sources must be a collection of event source nodes without null elements.');\n }\n if (node.kind === 'EventSourceSyntax' || node.kind === 'EventStreamSyntax') {\n const declaration = node as EventSourceSyntax | EventStreamSyntax;\n name(declaration.name);\n if (declaration.id !== null && (typeof declaration.id !== 'string' || declaration.id.trim() === '')) refuse('A rename pin must be nonempty.');\n const type = declaration.kind === 'EventSourceSyntax' ? declaration.identifier : declaration.streamId;\n if (type !== null && !hasKind(type, 'TypeRefSyntax')) refuse('Source identifiers and stream ids require type reference nodes.');\n if (type !== null && (type.isCollection || type.isOptional)) refuse('Source identifiers and stream ids require nonoptional scalar type references.');\n if (type !== null && !isSourceStreamTypeName(type.name)) refuse('Source identifiers and stream ids require an exact type reference name.');\n if (declaration.kind === 'EventSourceSyntax') collection(declaration.streams, 'EventStreamSyntax', 'Event streams must contain event stream nodes without null elements.');\n else {\n collection(declaration.streamIdParts, 'EventStreamIdPartSyntax', 'Stream id parts must be a collection.');\n if (declaration.streamId !== null && declaration.streamIdParts.length > 0) refuse('A stream cannot declare both scalar and composite stream ids.');\n declaration.streamIdParts.forEach(part => validateSourceStream(part));\n }\n }\n if (node.kind === 'EventStreamIdPartSyntax') {\n const part = node as EventStreamIdPartSyntax;\n name(part.name);\n if (!hasKind(part.type, 'TypeRefSyntax')) refuse('A stream id part requires a type.');\n if (part.type.isOptional || part.type.isCollection) refuse('Source identifiers and stream ids require nonoptional scalar type references.');\n if (!isSourceStreamTypeName(part.type.name)) refuse('Source identifiers and stream ids require an exact type reference name.');\n }\n if (node.kind === 'CommandSyntax') {\n const command = node as CommandSyntax;\n if (command.stream?.propertyCandidate != null) refuse('The authoritative command stream cannot contain an ambiguous property candidate.');\n if (command.stream != null && !hasKind(command.stream, 'CommandStreamSyntax')) refuse('The authoritative command stream must be a command stream node.');\n if (command.streamCandidates !== undefined) collection(command.streamCandidates, 'CommandStreamSyntax', 'Command stream candidates must be a collection without null elements.');\n const candidates = command.streamCandidates ?? [];\n for (let position = 0; position < candidates.length; position++) {\n const rejected = candidates[position];\n validateSourceStream(rejected);\n if (rejected.propertyCandidate === null && command.stream == null) refuse('A duplicate route candidate requires an authoritative route.');\n if (rejected.propertyCandidate !== null) for (let index = 0; index < command.properties.length; index++) if (command.properties[index] === rejected.propertyCandidate) refuse('An ambiguous property is owned only by its stream candidate.');\n }\n }\n if (node.kind === 'SpecificationEventSyntax' || node.kind === 'SpecificationExampleSyntax' || node.kind === 'SpecificationRedeliverySyntax') {\n const occurrence = node as SpecificationEventSyntax;\n if (occurrence.stream != null && occurrence.noStream != null) refuse('An event occurrence cannot declare both stream and no stream.');\n if (occurrence.stream != null && !hasKind(occurrence.stream, 'SpecificationStreamSyntax')) refuse('A specification stream requires a specification stream node.');\n if (occurrence.noStream != null && !hasKind(occurrence.noStream, 'SpecificationNoStreamSyntax')) refuse('An unrouted expectation requires a specification no stream node.');\n }\n if (node.kind === 'SpecificationStreamSyntax') {\n const route = node as SpecificationStreamSyntax;\n name(route.eventSource);\n name(route.stream);\n if (route.streamId !== null && route.streamId.property !== 'streamId') refuse('A specification stream maps only streamId.');\n mappings(route.streamId, route.streamIdParts);\n }\n if (node.kind === 'ObserverFilterSyntax') {\n const filter = node as ObserverFilterSyntax;\n name(filter.eventSource);\n if (filter.stream != null) name(filter.stream);\n }\n if (node.kind === 'CommandStreamSyntax') {\n const route = node as CommandStreamSyntax;\n name(route.eventSource);\n name(route.stream);\n if (route.streamId !== null && route.streamId.property !== 'streamId') refuse('A command stream maps only streamId.');\n mappings(route.streamId, route.streamIdParts);\n const candidate = route.propertyCandidate;\n if (candidate !== null && (candidate.name !== 'stream' || candidate.type.name !== `${route.eventSource}.${route.stream}` || candidate.type.isCollection || candidate.type.isOptional || candidate.isGenerated || candidate.isIdentifier || route.streamId !== null || route.streamIdParts.length > 0)) refuse('An ambiguous route must retain its exact unmodified property candidate, without selecting nested routing.');\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../../_virtual/_virtual/_rolldown/runtime.js";import{
|
|
1
|
+
import"../../_virtual/_virtual/_rolldown/runtime.js";import{InvalidSyntaxJson as e}from"./InvalidSyntaxJson.js";import{isExactNumberToken as t,parseExactNumber as n}from"./ExactNumber.js";import{validateSyntaxInvariants as r}from"./SyntaxInvariants.js";import{syntaxMemberNames as i,validateClosedSyntaxMembers as a,validateSyntaxMembers as o}from"./SyntaxMemberContracts.js";import{isLegacyOmittedMember as s}from"./LegacyWireProjection.js";import{legacySourceOptions as c,validatedSourceOptions as l}from"./SourceOptions.js";const isNode=e=>typeof e==`object`&&!!e&&typeof e.kind==`string`,isObject=e=>typeof e==`object`&&!!e,u=/* @__PURE__ */ new Set([`kind`,`location`,`targetLocation`,`referenceLocation`,`referenceLength`,`nameWasEscaped`,`declaredTriggers`,`directiveLocations`]),d=/* @__PURE__ */ new Set([`location`,`targetLocation`,`usesLocation`]),f=/* @__PURE__ */ new Set([`ApplicationSyntax`,`ProjectionSyntax`,`CaptureSyntax`,`SpecificationSyntax`]);function toSyntaxJson(e){let t=snapshot(e);return validateNumbers(t,`legacy`,0),write(t)}function snapshot(e){let t=/* @__PURE__ */ new WeakMap,n=[];function detach(e){return isObject(e)?t.has(e)?t.get(e):Array.isArray(e)?detachArray(e):detachObject(e):e}function detachArray(e){let r=dataArray();t.set(e,r);let i=e.length;for(let t=i-1;t>=0;t--)n.push(()=>{r[t]=detach(Object.hasOwn(e,t)?e[t]:void 0)});return r}function detachObject(e){let r=Object.create(null);t.set(e,r);let i=Object.keys(e);!i.includes(`kind`)&&`kind`in e&&i.unshift(`kind`);for(let t=i.length-1;t>=0;t--)n.push(()=>{let a=i[t],o=e[a];a===`sourceOptions`&&n.push(()=>preserveRejectedSourceOptions(r,a,o)),r[a]=detach(o)});return r}let r=detach(e);for(;n.length>0;)n.pop()();return r}function preserveRejectedSourceOptions(e,t,n){isObject(n)&&hasExoticShape(n)&&(e[t]=Object.assign(Object.create(null),{numericMode:`invalid`}))}function hasExoticShape(e){return Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null||Reflect.ownKeys(e).length!==Object.keys(e).length}function dataArray(){let e=[];return Object.defineProperty(e,"toJSON",{value:void 0}),e}const p={ApplicationSyntax:[`identity`,`reactionProductionMode`,`commandReadMode`,`timeZone`,`context`],CommandSyntax:[`calendar`],ComparisonConditionSyntax:[`leftExpression`],EventSyntax:[`origin`],ImportSyntax:[`origin`],SliceSyntax:[`direction`],ReactionSyntax:[`from`],ReducerSyntax:[`from`],RemoveWithSyntax:[`partsKey`],ProducesSyntax:[`stream`],ConceptAttributeSyntax:[`scope`,`specialCategory`],ConceptSyntax:[`description`,`valueNumbers`,`generation`],GenerationSyntax:[`file`,`code`],PolicySyntax:[`description`],FileConstraintSyntax:[`description`],UniqueEventConstraintSyntax:[`description`],UniquePropertyConstraintSyntax:[`description`],ProjectionSyntax:[`description`],ScreenSyntax:[`description`],ScreenActionSyntax:[`subject`],ScreenGuardedActionSyntax:[`subject`],ToolbarItemSyntax:[`subject`],FormSyntax:[`description`],SpecificationSyntax:[`description`,`whenRedelivered`,`givenTimeZone`],SpecificationErrorSyntax:[`caseValue`],SpecificationExampleSyntax:[`stream`,`noStream`],SpecificationRedeliverySyntax:[`stream`,`noStream`]},m={ScreenActionSyntax:[`inputs`],ModuleSyntax:[`dependsOn`],FeatureSyntax:[`dependsOn`],SpecificationSyntax:[`parameters`,`cases`],InvokesSyntax:[`onRefused`]},h={EventSyntax:{visibility:`Private`},ImportSyntax:{visibility:`Private`},ConceptAttributeSyntax:{criminal:!1},PropertySyntax:{isSubject:!1},ReadModelSyntax:{isPassive:!1},SpecificationSyntax:{thenNoEvents:!1}},ownEntry=(e,t)=>Object.hasOwn(e,t)?e[t]:void 0,isEmptyArray=e=>Array.isArray(e)&&e.length===0;function isNullOmitted(e,t,n){return n==null?ownEntry(p,e)?.includes(t)===!0||t===`inlineProperty`||t===`documentation`&&e!==`EventSyntax`:!1}function isEmptyOmitted(e,t,n){return isEmptyArray(n)?ownEntry(m,e)?.includes(t)===!0||t===`examples`||t===`purposes`:!1}function isDefaultOmitted(e,t,n){if(t===`sourceOptions`)return n?.numericMode===`legacy`;let r=ownEntry(h,e);return r!==void 0&&Object.hasOwn(r,t)&&n===r[t]}function isOmittedByDefault(e,t,n){return isNullOmitted(e,t,n)||isEmptyOmitted(e,t,n)||isDefaultOmitted(e,t,n)}function write(e,t=`legacy`,n=!1){return Array.isArray(e)?writeArray(e,t,n):isNode(e)?writeNode(e,t,n):e===void 0?null:isObject(e)?writeRecord(e,t,n):e}function writeArray(e,t,n){let r=dataArray();for(let i=0;i<e.length;i++)r.push(write(e[i],t,n));return r}function validateClosedImplementationShapes(e){if((e.kind===`ImplementationSyntax`||e.kind===`ImplementationHintSyntax`)&&a(e,u),e.kind!==`ValidationRuleSyntax`)return;let t=e;t.implementation!=null&&(t.file!=null&&a(t.file,u),t.code!=null&&a(t.code,u))}function structuralMembers(e){let t={...e};return e.kind===`ApplicationSyntax`&&t.eventSources===void 0&&(t.eventSources=[]),e.kind===`CommandSyntax`&&t.stream===void 0&&(t.stream=null),e.kind===`CommandSyntax`&&t.streamCandidates===void 0&&(t.streamCandidates=[]),t}function projectedMemberNames(e,t,n,r){let a=n===`exact`?i(e.kind):void 0,isProjected=t=>(a===void 0||a.has(t))&&!isHiddenByLegacy(e,t,n,r)&&!isAlwaysOmitted(e,t);return Object.keys(t).filter(isProjected).sort(ordinal)}function isHiddenByLegacy(e,t,n,r){return n===`legacy`&&!r&&s(e,t)}function isAlwaysOmitted(e,t){return u.has(t)||e.kind===`OperationSyntax`&&t===`usesLocation`}function omitsPossibleEvents(e,t,n){return e!==`HandlerSyntax`||t!==`possibleEvents`?!1:n==null||n.events.length===0}function writeNode(e,t,n){f.has(e.kind)&&(t=l(e.sourceOptions??c).numericMode),r(e),validateClosedImplementationShapes(e);let i=Object.create(null);i.kind=e.kind;let a=structuralMembers(e);for(let r of projectedMemberNames(e,a,t,n)){let o=a[r];isOmittedByDefault(e.kind,r,o)||omitsPossibleEvents(e.kind,r,o)||(i[r]=write(o,t,n))}return i}function writeRecord(e,t,n){let r=Object.create(null);if(e.literalType===`ExactNumber`)return r.literalType=`ExactNumber`,r.value=e.value,r;for(let i of Object.keys(e))i!==`toJSON`&&e[i]!==void 0&&(r[i]=write(e[i],t,n));return r}function validateNumbers(e,t,n){if(assertSupportedDepth(t,n),Array.isArray(e))for(let r=0;r<e.length;r++)validateNumbers(e[r],t,n+1);else isObject(e)&&validateNodeNumbers(e,t,n)}function validateNodeNumbers(e,t,n){t=resolveNumericMode(e,t,n),assertCompleteSourceRoot(e,t,n),t===`exact`&&isNode(e)&&o(e),validateRawNumericText(e,t),e.kind===`LiteralExpressionSyntax`&&Object.hasOwn(e,`value`)&&validateLiteralValue(e.value,t),validateNumberMembers(e,t,n)}function assertSupportedDepth(t,n){if(n>96&&t===`exact`)throw new e(`Syntax nesting exceeds the supported depth of 96.`)}function assertCompleteSourceRoot(t,n,r){if(isIncompleteExactRoot(t,n,r))throw new e(`Exact syntax requires a complete source root.`)}function isIncompleteExactRoot(e,t,n){return n===0&&t===`exact`&&!f.has(e.kind)}function resolveNumericMode(t,n,r){if(!f.has(t.kind)&&!Object.hasOwn(t,`sourceOptions`))return n;let i=Object.hasOwn(t,`sourceOptions`)?l(t.sourceOptions):c;if(r>0&&n!==i.numericMode)throw new e(`Conflicting source numeric options.`);return i.numericMode}function validateRawNumericText(n,r){if(n.kind===`RawExpressionSyntax`&&r===`exact`&&typeof n.text==`string`&&t(n.text))throw new e(`An exact numeric operand must be an explicit ExactNumber, not opaque numeric text.`)}function isUnsupportedExactPrimitive(e){return typeof e==`number`||e!==null&&![`string`,`boolean`,`object`].includes(typeof e)}function validateLiteralValue(t,n){if(n===`exact`&&isUnsupportedExactPrimitive(t))throw new e(`Exact source requires supported primitive values or an explicit ExactNumber literal.`);isObject(t)&&validateObjectLiteral(t,n)}function validateObjectLiteral(t,n){if(t.literalType===`ExactNumber`)validateExactNumberLiteral(t,n);else if(n===`exact`)throw new e(`Exact source refuses old or plain object literal insertion.`)}function isWellFormedExactNumber(e){return typeof e.value==`string`&&n(e.value)?.value===e.value&&Object.keys(e).length===2}function validateExactNumberLiteral(t,n){if(n!==`exact`||!isWellFormedExactNumber(t))throw new e(`Malformed or incompatible ExactNumber literal.`)}function validateNumberMembers(e,t,n){let r=t===`exact`&&isNode(e)?i(e.kind):void 0;for(let[i,a]of Object.entries(e))isTraversedMember(r,i,a)&&validateNumbers(a,t,n+1)}function isTraversedMember(e,t,n){return(e===void 0||e.has(t)||isNode(n)&&f.has(n.kind))&&!d.has(t)}function ordinal(e,t){return e<t?-1:+(e>t)}export{toSyntaxJson};
|
|
2
2
|
//# sourceMappingURL=SyntaxJson.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxJson.js","names":["value","omitted","skippedNumberMembers","sourceRoots","detached","node","copies","pending","items","length","index","copy","names","name","member","omittedWhenNull","omittedWhenEmpty","omittedWhenDefault","table","kind","defaults","owningMode","complete","validateClosedSyntaxMembers","rule","structural","known","syntaxMemberNames","isLegacyOmittedMember","validatedSourceOptions","legacySourceOptions","validateSyntaxInvariants","result","memberValue","record","depth","validateSyntaxMembers","InvalidSyntaxJson","options","isExactNumberToken","literal","parseExactNumber","left","right"],"sources":["../../../../../../Compiler/Syntax/SyntaxJson.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 { SyntaxNode } from './SyntaxNode';\nimport { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { isExactNumberToken, parseExactNumber } from './ExactNumber';\nimport { validateSyntaxInvariants } from './SyntaxInvariants';\nimport { syntaxMemberNames, validateClosedSyntaxMembers, validateSyntaxMembers } from './SyntaxMemberContracts';\nimport { ValidationRuleSyntax } from './Commands';\nimport { isLegacyOmittedMember } from './LegacyWireProjection';\nimport { legacySourceOptions, validatedSourceOptions } from './SourceOptions';\n\n// Returned record objects have null prototypes.\nexport type SyntaxJsonValue = string | number | boolean | null | SyntaxJsonValue[] | { [member: string]: SyntaxJsonValue };\n\nconst isNode = (value: unknown): value is SyntaxNode =>\n typeof value === 'object' && value !== null && typeof (value as { kind?: unknown }).kind === 'string';\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\nconst omitted = new Set(['kind', 'location', 'targetLocation', 'referenceLocation', 'referenceLength', 'nameWasEscaped', 'declaredTriggers', 'directiveLocations']);\nconst skippedNumberMembers = new Set(['location', 'targetLocation', 'usesLocation']);\nconst sourceRoots = new Set(['ApplicationSyntax', 'ProjectionSyntax', 'CaptureSyntax', 'SpecificationSyntax']);\n\n// The canonical JSON form of a syntax tree, the same form the C# SyntaxJson writes: 'kind' first, then the\n// members in ordinal order, with source locations left out. Because a node only carries the members this\n// compiler models, the result is the C# form narrowed to those members.\nexport function toSyntaxJson(node: SyntaxNode): SyntaxJsonValue {\n const detached = snapshot(node);\n validateNumbers(detached, 'legacy', 0);\n return write(detached);\n}\n\n// The enriched internal tree written completely, Legacy members included. Not a wire form: it exists so the\n// walker and other tree consumers can be held to every node the parser builds.\nexport function toCompleteSyntaxJson(node: SyntaxNode): SyntaxJsonValue {\n const detached = snapshot(node);\n validateNumbers(detached, 'legacy', 0);\n return write(detached, 'legacy', true);\n}\n\n// Read caller-owned properties only once, before validation. Both validation and projection see the same\n// detached data; accessors, proxies and shared references cannot change it between passes.\nfunction snapshot(value: unknown): unknown {\n const copies = new WeakMap<object, unknown>();\n const pending: (() => void)[] = [];\n // Schedule depth-first reads without consuming the call stack, including for ignored metadata.\n function detach(value: unknown): unknown {\n if (!isObject(value)) return value;\n if (copies.has(value)) return copies.get(value);\n return Array.isArray(value) ? detachArray(value) : detachObject(value);\n }\n function detachArray(value: unknown[]): unknown {\n const items = dataArray<unknown>();\n copies.set(value, items);\n const length = value.length;\n for (let index = length - 1; index >= 0; index--) pending.push(() => {\n items[index] = detach(Object.hasOwn(value, index) ? value[index] : undefined);\n });\n return items;\n }\n function detachObject(value: object): unknown {\n const copy = Object.create(null) as Record<string, unknown>;\n copies.set(value, copy);\n const names = Object.keys(value);\n // Node identity also accepts inherited, hidden and class-getter kinds; read it just once.\n if (!names.includes('kind') && 'kind' in value) names.unshift('kind');\n for (let index = names.length - 1; index >= 0; index--) pending.push(() => {\n const name = names[index];\n const member = (value as Record<string, unknown>)[name];\n if (name === 'sourceOptions') pending.push(() => preserveRejectedSourceOptions(copy, name, member));\n copy[name] = detach(member);\n });\n return copy;\n }\n const detached = detach(value);\n while (pending.length > 0) pending.pop()!();\n return detached;\n}\n\n// Source option contracts also reject exotic prototypes and hidden/symbol members. Preserve\n// that rejected shape as data rather than sanitizing it into an apparently valid option record.\nfunction preserveRejectedSourceOptions(copy: Record<string, unknown>, name: string, member: unknown): void {\n if (isObject(member) && hasExoticShape(member)) {\n copy[name] = Object.assign(Object.create(null), { numericMode: 'invalid' });\n }\n}\n\nfunction hasExoticShape(member: object): boolean {\n return (Object.getPrototypeOf(member) !== Object.prototype && Object.getPrototypeOf(member) !== null) || Reflect.ownKeys(member).length !== Object.keys(member).length;\n}\n\nfunction dataArray<T>(): T[] {\n const items: T[] = [];\n // JSON.stringify consults inherited toJSON even on plain arrays. Shadow that hook without changing\n // their indexed JSON bytes or normal Array prototype (including for existing tree consumers).\n Object.defineProperty(items, 'toJSON', { value: undefined });\n return items;\n}\n\n// Members omitted from the wire form when null (or undefined), by node kind.\nconst omittedWhenNull: Record<string, readonly string[]> = {\n ApplicationSyntax: ['identity', 'reactionProductionMode', 'commandReadMode', 'timeZone', 'context'],\n CommandSyntax: ['calendar'],\n ComparisonConditionSyntax: ['leftExpression'],\n EventSyntax: ['origin'],\n ImportSyntax: ['origin'],\n SliceSyntax: ['direction'],\n ReactionSyntax: ['from'],\n ReducerSyntax: ['from'],\n RemoveWithSyntax: ['partsKey'],\n ProducesSyntax: ['stream'],\n ConceptAttributeSyntax: ['scope', 'specialCategory'],\n ConceptSyntax: ['description', 'valueNumbers', 'generation'],\n GenerationSyntax: ['file', 'code'],\n PolicySyntax: ['description'],\n FileConstraintSyntax: ['description'],\n UniqueEventConstraintSyntax: ['description'],\n UniquePropertyConstraintSyntax: ['description'],\n ProjectionSyntax: ['description'],\n ScreenSyntax: ['description'],\n ScreenActionSyntax: ['subject'],\n ScreenGuardedActionSyntax: ['subject'],\n ToolbarItemSyntax: ['subject'],\n FormSyntax: ['description'],\n SpecificationSyntax: ['description', 'whenRedelivered', 'givenTimeZone'],\n SpecificationErrorSyntax: ['caseValue'],\n SpecificationExampleSyntax: ['stream', 'noStream'],\n SpecificationRedeliverySyntax: ['stream', 'noStream']\n};\n\n// Members omitted from the wire form when empty arrays, by node kind.\nconst omittedWhenEmpty: Record<string, readonly string[]> = {\n ScreenActionSyntax: ['inputs'],\n ModuleSyntax: ['dependsOn'],\n FeatureSyntax: ['dependsOn'],\n SpecificationSyntax: ['parameters', 'cases'],\n InvokesSyntax: ['onRefused']\n};\n\n// Members omitted when they hold their default value, by node kind.\nconst omittedWhenDefault: Record<string, Record<string, unknown>> = {\n EventSyntax: { visibility: 'Private' },\n ImportSyntax: { visibility: 'Private' },\n ConceptAttributeSyntax: { criminal: false },\n PropertySyntax: { isSubject: false },\n ReadModelSyntax: { isPassive: false },\n SpecificationSyntax: { thenNoEvents: false }\n};\n\nconst ownEntry = <T>(table: Record<string, T>, kind: string): T | undefined => Object.hasOwn(table, kind) ? table[kind] : undefined;\nconst isEmptyArray = (value: unknown): boolean => Array.isArray(value) && value.length === 0;\n\nfunction isNullOmitted(kind: string, member: string, value: unknown): boolean {\n if (value != null) return false;\n return ownEntry(omittedWhenNull, kind)?.includes(member) === true\n || member === 'inlineProperty'\n || (member === 'documentation' && kind !== 'EventSyntax');\n}\n\nfunction isEmptyOmitted(kind: string, member: string, value: unknown): boolean {\n if (!isEmptyArray(value)) return false;\n return ownEntry(omittedWhenEmpty, kind)?.includes(member) === true || member === 'examples' || member === 'purposes';\n}\n\nfunction isDefaultOmitted(kind: string, member: string, value: unknown): boolean {\n if (member === 'sourceOptions') return (value as { numericMode?: string } | undefined)?.numericMode === 'legacy';\n const defaults = ownEntry(omittedWhenDefault, kind);\n return defaults !== undefined && Object.hasOwn(defaults, member) && value === defaults[member];\n}\n\nfunction isOmittedByDefault(kind: string, member: string, value: unknown): boolean {\n return isNullOmitted(kind, member, value) || isEmptyOmitted(kind, member, value) || isDefaultOmitted(kind, member, value);\n}\n\nfunction write(value: unknown, owningMode = 'legacy', complete = false): SyntaxJsonValue {\n if (Array.isArray(value)) return writeArray(value, owningMode, complete);\n if (isNode(value)) return writeNode(value, owningMode, complete);\n if (value === undefined) return null;\n if (!isObject(value)) return value as SyntaxJsonValue;\n return writeRecord(value as Record<string, unknown>, owningMode, complete);\n}\n\nfunction writeArray(value: unknown[], owningMode: string, complete: boolean): SyntaxJsonValue {\n // A fresh plain array: never map (Symbol.species) or serialize through a caller-supplied hook.\n const items = dataArray<SyntaxJsonValue>();\n for (let index = 0; index < value.length; index++) items.push(write(value[index], owningMode, complete));\n return items;\n}\n\nfunction validateClosedImplementationShapes(value: SyntaxNode): void {\n // #307 shapes are closed in both modes, before any projection can hide unknown members.\n if (value.kind === 'ImplementationSyntax' || value.kind === 'ImplementationHintSyntax') validateClosedSyntaxMembers(value, omitted);\n if (value.kind !== 'ValidationRuleSyntax') return;\n const rule = value as ValidationRuleSyntax;\n if (rule.implementation == null) return;\n if (rule.file != null) validateClosedSyntaxMembers(rule.file, omitted);\n if (rule.code != null) validateClosedSyntaxMembers(rule.code, omitted);\n}\n\nfunction structuralMembers(value: SyntaxNode): Record<string, unknown> {\n const structural = { ...value } as unknown as Record<string, unknown>;\n if (value.kind === 'ApplicationSyntax' && structural.eventSources === undefined) structural.eventSources = [];\n if (value.kind === 'CommandSyntax' && structural.stream === undefined) structural.stream = null;\n if (value.kind === 'CommandSyntax' && structural.streamCandidates === undefined) structural.streamCandidates = [];\n return structural;\n}\n\nfunction projectedMemberNames(value: SyntaxNode, structural: Record<string, unknown>, owningMode: string, complete: boolean): string[] {\n const known = owningMode === 'exact' ? syntaxMemberNames(value.kind) : undefined;\n const isProjected = (member: string) =>\n (known === undefined || known.has(member)) && !isHiddenByLegacy(value, member, owningMode, complete) && !isAlwaysOmitted(value, member);\n return Object.keys(structural).filter(isProjected).sort(ordinal);\n}\n\nfunction isHiddenByLegacy(value: SyntaxNode, member: string, owningMode: string, complete: boolean): boolean {\n return owningMode === 'legacy' && !complete && isLegacyOmittedMember(value, member);\n}\n\nfunction isAlwaysOmitted(value: SyntaxNode, member: string): boolean {\n return omitted.has(member) || (value.kind === 'OperationSyntax' && member === 'usesLocation');\n}\n\nfunction omitsPossibleEvents(kind: string, member: string, value: unknown): boolean {\n if (kind !== 'HandlerSyntax' || member !== 'possibleEvents') return false;\n return value == null || (value as { events: unknown[] }).events.length === 0;\n}\n\nfunction writeNode(value: SyntaxNode, owningMode: string, complete: boolean): SyntaxJsonValue {\n if (sourceRoots.has(value.kind)) owningMode = validatedSourceOptions((value as unknown as { sourceOptions?: unknown }).sourceOptions ?? legacySourceOptions).numericMode;\n validateSyntaxInvariants(value);\n validateClosedImplementationShapes(value);\n const result = Object.create(null) as Record<string, SyntaxJsonValue>;\n result.kind = value.kind;\n const structural = structuralMembers(value);\n for (const member of projectedMemberNames(value, structural, owningMode, complete)) {\n const memberValue = structural[member];\n if (isOmittedByDefault(value.kind, member, memberValue)) continue;\n if (omitsPossibleEvents(value.kind, member, memberValue)) continue;\n result[member] = write(memberValue, owningMode, complete);\n }\n return result;\n}\n\nfunction writeRecord(record: Record<string, unknown>, owningMode: string, complete: boolean): SyntaxJsonValue {\n // The ordered ExactNumber form, whatever the input key order; other objects are copied without any toJSON hook.\n const copy = Object.create(null) as Record<string, SyntaxJsonValue>;\n if (record.literalType === 'ExactNumber') {\n copy.literalType = 'ExactNumber';\n copy.value = record.value as string;\n return copy;\n }\n for (const name of Object.keys(record)) if (name !== 'toJSON' && record[name] !== undefined) copy[name] = write(record[name], owningMode, complete);\n return copy;\n}\n\nfunction validateNumbers(value: unknown, owningMode: string, depth: number): void {\n assertSupportedDepth(owningMode, depth);\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) validateNumbers(value[index], owningMode, depth + 1);\n return;\n }\n if (!isObject(value)) return;\n validateNodeNumbers(value as Record<string, unknown>, owningMode, depth);\n}\n\nfunction validateNodeNumbers(node: Record<string, unknown>, owningMode: string, depth: number): void {\n owningMode = resolveNumericMode(node, owningMode, depth);\n assertCompleteSourceRoot(node, owningMode, depth);\n if (owningMode === 'exact' && isNode(node)) validateSyntaxMembers(node);\n validateRawNumericText(node, owningMode);\n if (node.kind === 'LiteralExpressionSyntax' && Object.hasOwn(node, 'value')) validateLiteralValue(node.value, owningMode);\n validateNumberMembers(node, owningMode, depth);\n}\n\nfunction assertSupportedDepth(owningMode: string, depth: number): void {\n if (depth > 96 && owningMode === 'exact') throw new InvalidSyntaxJson('Syntax nesting exceeds the supported depth of 96.');\n}\n\nfunction assertCompleteSourceRoot(node: Record<string, unknown>, owningMode: string, depth: number): void {\n if (isIncompleteExactRoot(node, owningMode, depth)) throw new InvalidSyntaxJson('Exact syntax requires a complete source root.');\n}\n\nfunction isIncompleteExactRoot(node: Record<string, unknown>, owningMode: string, depth: number): boolean {\n return depth === 0 && owningMode === 'exact' && !sourceRoots.has(node.kind as string);\n}\n\nfunction resolveNumericMode(node: Record<string, unknown>, owningMode: string, depth: number): string {\n if (!sourceRoots.has(node.kind as string) && !Object.hasOwn(node, 'sourceOptions')) return owningMode;\n // Omission is Legacy on every complete source root, never inheritance from its container.\n const options = Object.hasOwn(node, 'sourceOptions') ? validatedSourceOptions(node.sourceOptions) : legacySourceOptions;\n if (depth > 0 && owningMode !== options.numericMode) throw new InvalidSyntaxJson('Conflicting source numeric options.');\n return options.numericMode;\n}\n\nfunction validateRawNumericText(node: Record<string, unknown>, owningMode: string): void {\n if (node.kind !== 'RawExpressionSyntax' || owningMode !== 'exact') return;\n if (typeof node.text === 'string' && isExactNumberToken(node.text)) throw new InvalidSyntaxJson('An exact numeric operand must be an explicit ExactNumber, not opaque numeric text.');\n}\n\nfunction isUnsupportedExactPrimitive(value: unknown): boolean {\n return typeof value === 'number' || (value !== null && !['string', 'boolean', 'object'].includes(typeof value));\n}\n\nfunction validateLiteralValue(value: unknown, owningMode: string): void {\n if (owningMode === 'exact' && isUnsupportedExactPrimitive(value)) throw new InvalidSyntaxJson('Exact source requires supported primitive values or an explicit ExactNumber literal.');\n if (!isObject(value)) return;\n validateObjectLiteral(value as { literalType?: unknown; value?: unknown }, owningMode);\n}\n\nfunction validateObjectLiteral(literal: { literalType?: unknown; value?: unknown }, owningMode: string): void {\n if (literal.literalType === 'ExactNumber') validateExactNumberLiteral(literal, owningMode);\n else if (owningMode === 'exact') throw new InvalidSyntaxJson('Exact source refuses old or plain object literal insertion.');\n}\n\nfunction isWellFormedExactNumber(literal: { value?: unknown }): boolean {\n return typeof literal.value === 'string' && parseExactNumber(literal.value)?.value === literal.value && Object.keys(literal).length === 2;\n}\n\nfunction validateExactNumberLiteral(literal: { value?: unknown }, owningMode: string): void {\n if (owningMode !== 'exact' || !isWellFormedExactNumber(literal)) throw new InvalidSyntaxJson('Malformed or incompatible ExactNumber literal.');\n}\n\nfunction validateNumberMembers(node: Record<string, unknown>, owningMode: string, depth: number): void {\n const known = owningMode === 'exact' && isNode(node) ? syntaxMemberNames(node.kind) : undefined;\n for (const [name, member] of Object.entries(node)) if (isTraversedMember(known, name, member)) validateNumbers(member, owningMode, depth + 1);\n}\n\nfunction isTraversedMember(known: ReadonlySet<string> | undefined, name: string, member: unknown): boolean {\n return (known === undefined || known.has(name) || (isNode(member) && sourceRoots.has(member.kind))) && !skippedNumberMembers.has(name);\n}\n\nfunction ordinal(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyntaxJson.js","names":["value","omitted","skippedNumberMembers","sourceRoots","detached","node","copies","pending","items","length","index","copy","names","name","member","omittedWhenNull","omittedWhenEmpty","omittedWhenDefault","table","kind","defaults","owningMode","complete","validateClosedSyntaxMembers","rule","structural","known","syntaxMemberNames","isLegacyOmittedMember","validatedSourceOptions","legacySourceOptions","validateSyntaxInvariants","result","memberValue","record","depth","validateSyntaxMembers","InvalidSyntaxJson","options","isExactNumberToken","literal","parseExactNumber","left","right"],"sources":["../../../../../../Compiler/Syntax/SyntaxJson.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 { SyntaxNode } from './SyntaxNode';\nimport { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { isExactNumberToken, parseExactNumber } from './ExactNumber';\nimport { validateSyntaxInvariants } from './SyntaxInvariants';\nimport { syntaxMemberNames, validateClosedSyntaxMembers, validateSyntaxMembers } from './SyntaxMemberContracts';\nimport { ValidationRuleSyntax } from './Commands';\nimport { isLegacyOmittedMember } from './LegacyWireProjection';\nimport { legacySourceOptions, validatedSourceOptions } from './SourceOptions';\n\n// Returned record objects have null prototypes.\nexport type SyntaxJsonValue = string | number | boolean | null | SyntaxJsonValue[] | { [member: string]: SyntaxJsonValue };\n\nconst isNode = (value: unknown): value is SyntaxNode =>\n typeof value === 'object' && value !== null && typeof (value as { kind?: unknown }).kind === 'string';\nconst isObject = (value: unknown): value is object => typeof value === 'object' && value !== null;\nconst omitted = new Set(['kind', 'location', 'targetLocation', 'referenceLocation', 'referenceLength', 'nameWasEscaped', 'declaredTriggers', 'directiveLocations']);\nconst skippedNumberMembers = new Set(['location', 'targetLocation', 'usesLocation']);\nconst sourceRoots = new Set(['ApplicationSyntax', 'ProjectionSyntax', 'CaptureSyntax', 'SpecificationSyntax']);\n\n// The canonical JSON form of a syntax tree, the same form the C# SyntaxJson writes: 'kind' first, then the\n// members in ordinal order, with source locations left out. Because a node only carries the members this\n// compiler models, the result is the C# form narrowed to those members.\nexport function toSyntaxJson(node: SyntaxNode): SyntaxJsonValue {\n const detached = snapshot(node);\n validateNumbers(detached, 'legacy', 0);\n return write(detached);\n}\n\n// The enriched internal tree written completely, Legacy members included. Not a wire form: it exists so the\n// walker and other tree consumers can be held to every node the parser builds.\nexport function toCompleteSyntaxJson(node: SyntaxNode): SyntaxJsonValue {\n const detached = snapshot(node);\n validateNumbers(detached, 'legacy', 0);\n return write(detached, 'legacy', true);\n}\n\n// Read caller-owned properties only once, before validation. Both validation and projection see the same\n// detached data; accessors, proxies and shared references cannot change it between passes.\nfunction snapshot(value: unknown): unknown {\n const copies = new WeakMap<object, unknown>();\n const pending: (() => void)[] = [];\n // Schedule depth-first reads without consuming the call stack, including for ignored metadata.\n function detach(value: unknown): unknown {\n if (!isObject(value)) return value;\n if (copies.has(value)) return copies.get(value);\n return Array.isArray(value) ? detachArray(value) : detachObject(value);\n }\n function detachArray(value: unknown[]): unknown {\n const items = dataArray<unknown>();\n copies.set(value, items);\n const length = value.length;\n for (let index = length - 1; index >= 0; index--) pending.push(() => {\n items[index] = detach(Object.hasOwn(value, index) ? value[index] : undefined);\n });\n return items;\n }\n function detachObject(value: object): unknown {\n const copy = Object.create(null) as Record<string, unknown>;\n copies.set(value, copy);\n const names = Object.keys(value);\n // Node identity also accepts inherited, hidden and class-getter kinds; read it just once.\n if (!names.includes('kind') && 'kind' in value) names.unshift('kind');\n for (let index = names.length - 1; index >= 0; index--) pending.push(() => {\n const name = names[index];\n const member = (value as Record<string, unknown>)[name];\n if (name === 'sourceOptions') pending.push(() => preserveRejectedSourceOptions(copy, name, member));\n copy[name] = detach(member);\n });\n return copy;\n }\n const detached = detach(value);\n while (pending.length > 0) pending.pop()!();\n return detached;\n}\n\n// Source option contracts also reject exotic prototypes and hidden/symbol members. Preserve\n// that rejected shape as data rather than sanitizing it into an apparently valid option record.\nfunction preserveRejectedSourceOptions(copy: Record<string, unknown>, name: string, member: unknown): void {\n if (isObject(member) && hasExoticShape(member)) {\n copy[name] = Object.assign(Object.create(null), { numericMode: 'invalid' });\n }\n}\n\nfunction hasExoticShape(member: object): boolean {\n return (Object.getPrototypeOf(member) !== Object.prototype && Object.getPrototypeOf(member) !== null) || Reflect.ownKeys(member).length !== Object.keys(member).length;\n}\n\nfunction dataArray<T>(): T[] {\n const items: T[] = [];\n // JSON.stringify consults inherited toJSON even on plain arrays. Shadow that hook without changing\n // their indexed JSON bytes or normal Array prototype (including for existing tree consumers).\n Object.defineProperty(items, 'toJSON', { value: undefined });\n return items;\n}\n\n// Members omitted from the wire form when null (or undefined), by node kind.\nconst omittedWhenNull: Record<string, readonly string[]> = {\n ApplicationSyntax: ['identity', 'reactionProductionMode', 'commandReadMode', 'timeZone', 'context'],\n CommandSyntax: ['calendar'],\n ComparisonConditionSyntax: ['leftExpression'],\n EventSyntax: ['origin'],\n ImportSyntax: ['origin'],\n SliceSyntax: ['direction'],\n ReactionSyntax: ['from'],\n ReducerSyntax: ['from'],\n RemoveWithSyntax: ['partsKey'],\n ProducesSyntax: ['stream'],\n ConceptAttributeSyntax: ['scope', 'specialCategory'],\n ConceptSyntax: ['description', 'valueNumbers', 'generation'],\n GenerationSyntax: ['file', 'code'],\n PolicySyntax: ['description'],\n FileConstraintSyntax: ['description'],\n UniqueEventConstraintSyntax: ['description'],\n UniquePropertyConstraintSyntax: ['description'],\n ProjectionSyntax: ['description'],\n ScreenSyntax: ['description'],\n ScreenActionSyntax: ['subject'],\n ScreenGuardedActionSyntax: ['subject'],\n ToolbarItemSyntax: ['subject'],\n FormSyntax: ['description'],\n SpecificationSyntax: ['description', 'whenRedelivered', 'givenTimeZone'],\n SpecificationErrorSyntax: ['caseValue'],\n SpecificationExampleSyntax: ['stream', 'noStream'],\n SpecificationRedeliverySyntax: ['stream', 'noStream']\n};\n\n// Members omitted from the wire form when empty arrays, by node kind.\nconst omittedWhenEmpty: Record<string, readonly string[]> = {\n ScreenActionSyntax: ['inputs'],\n ModuleSyntax: ['dependsOn'],\n FeatureSyntax: ['dependsOn'],\n SpecificationSyntax: ['parameters', 'cases'],\n InvokesSyntax: ['onRefused']\n};\n\n// Members omitted when they hold their default value, by node kind.\nconst omittedWhenDefault: Record<string, Record<string, unknown>> = {\n EventSyntax: { visibility: 'Private' },\n ImportSyntax: { visibility: 'Private' },\n ConceptAttributeSyntax: { criminal: false },\n PropertySyntax: { isSubject: false },\n ReadModelSyntax: { isPassive: false },\n SpecificationSyntax: { thenNoEvents: false }\n};\n\nconst ownEntry = <T>(table: Record<string, T>, kind: string): T | undefined => Object.hasOwn(table, kind) ? table[kind] : undefined;\nconst isEmptyArray = (value: unknown): boolean => Array.isArray(value) && value.length === 0;\n\nfunction isNullOmitted(kind: string, member: string, value: unknown): boolean {\n if (value != null) return false;\n return ownEntry(omittedWhenNull, kind)?.includes(member) === true\n || member === 'inlineProperty'\n || (member === 'documentation' && kind !== 'EventSyntax');\n}\n\nfunction isEmptyOmitted(kind: string, member: string, value: unknown): boolean {\n if (!isEmptyArray(value)) return false;\n return ownEntry(omittedWhenEmpty, kind)?.includes(member) === true || member === 'examples' || member === 'purposes';\n}\n\nfunction isDefaultOmitted(kind: string, member: string, value: unknown): boolean {\n if (member === 'sourceOptions') return (value as { numericMode?: string } | undefined)?.numericMode === 'legacy';\n const defaults = ownEntry(omittedWhenDefault, kind);\n return defaults !== undefined && Object.hasOwn(defaults, member) && value === defaults[member];\n}\n\nfunction isOmittedByDefault(kind: string, member: string, value: unknown): boolean {\n return isNullOmitted(kind, member, value) || isEmptyOmitted(kind, member, value) || isDefaultOmitted(kind, member, value);\n}\n\nfunction write(value: unknown, owningMode = 'legacy', complete = false): SyntaxJsonValue {\n if (Array.isArray(value)) return writeArray(value, owningMode, complete);\n if (isNode(value)) return writeNode(value, owningMode, complete);\n if (value === undefined) return null;\n if (!isObject(value)) return value as SyntaxJsonValue;\n return writeRecord(value as Record<string, unknown>, owningMode, complete);\n}\n\nfunction writeArray(value: unknown[], owningMode: string, complete: boolean): SyntaxJsonValue {\n // A fresh plain array: never map (Symbol.species) or serialize through a caller-supplied hook.\n const items = dataArray<SyntaxJsonValue>();\n for (let index = 0; index < value.length; index++) items.push(write(value[index], owningMode, complete));\n return items;\n}\n\nfunction validateClosedImplementationShapes(value: SyntaxNode): void {\n // #307 shapes are closed in both modes, before any projection can hide unknown members.\n if (value.kind === 'ImplementationSyntax' || value.kind === 'ImplementationHintSyntax') validateClosedSyntaxMembers(value, omitted);\n if (value.kind !== 'ValidationRuleSyntax') return;\n const rule = value as ValidationRuleSyntax;\n if (rule.implementation == null) return;\n if (rule.file != null) validateClosedSyntaxMembers(rule.file, omitted);\n if (rule.code != null) validateClosedSyntaxMembers(rule.code, omitted);\n}\n\nfunction structuralMembers(value: SyntaxNode): Record<string, unknown> {\n const structural = { ...value } as unknown as Record<string, unknown>;\n if (value.kind === 'ApplicationSyntax' && structural.eventSources === undefined) structural.eventSources = [];\n if (value.kind === 'CommandSyntax' && structural.stream === undefined) structural.stream = null;\n if (value.kind === 'CommandSyntax' && structural.streamCandidates === undefined) structural.streamCandidates = [];\n return structural;\n}\n\nfunction projectedMemberNames(value: SyntaxNode, structural: Record<string, unknown>, owningMode: string, complete: boolean): string[] {\n const known = owningMode === 'exact' ? syntaxMemberNames(value.kind) : undefined;\n const isProjected = (member: string) =>\n (known === undefined || known.has(member)) && !isHiddenByLegacy(value, member, owningMode, complete) && !isAlwaysOmitted(value, member);\n return Object.keys(structural).filter(isProjected).sort(ordinal);\n}\n\nfunction isHiddenByLegacy(value: SyntaxNode, member: string, owningMode: string, complete: boolean): boolean {\n return owningMode === 'legacy' && !complete && isLegacyOmittedMember(value, member);\n}\n\nfunction isAlwaysOmitted(value: SyntaxNode, member: string): boolean {\n return omitted.has(member) || (value.kind === 'OperationSyntax' && member === 'usesLocation');\n}\n\nfunction omitsPossibleEvents(kind: string, member: string, value: unknown): boolean {\n if (kind !== 'HandlerSyntax' || member !== 'possibleEvents') return false;\n return value == null || (value as { events: unknown[] }).events.length === 0;\n}\n\nfunction writeNode(value: SyntaxNode, owningMode: string, complete: boolean): SyntaxJsonValue {\n if (sourceRoots.has(value.kind)) owningMode = validatedSourceOptions((value as unknown as { sourceOptions?: unknown }).sourceOptions ?? legacySourceOptions).numericMode;\n validateSyntaxInvariants(value);\n validateClosedImplementationShapes(value);\n const result = Object.create(null) as Record<string, SyntaxJsonValue>;\n result.kind = value.kind;\n const structural = structuralMembers(value);\n for (const member of projectedMemberNames(value, structural, owningMode, complete)) {\n const memberValue = structural[member];\n if (isOmittedByDefault(value.kind, member, memberValue)) continue;\n if (omitsPossibleEvents(value.kind, member, memberValue)) continue;\n result[member] = write(memberValue, owningMode, complete);\n }\n return result;\n}\n\nfunction writeRecord(record: Record<string, unknown>, owningMode: string, complete: boolean): SyntaxJsonValue {\n // The ordered ExactNumber form, whatever the input key order; other objects are copied without any toJSON hook.\n const copy = Object.create(null) as Record<string, SyntaxJsonValue>;\n if (record.literalType === 'ExactNumber') {\n copy.literalType = 'ExactNumber';\n copy.value = record.value as string;\n return copy;\n }\n for (const name of Object.keys(record)) if (name !== 'toJSON' && record[name] !== undefined) copy[name] = write(record[name], owningMode, complete);\n return copy;\n}\n\nfunction validateNumbers(value: unknown, owningMode: string, depth: number): void {\n assertSupportedDepth(owningMode, depth);\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) validateNumbers(value[index], owningMode, depth + 1);\n return;\n }\n if (!isObject(value)) return;\n validateNodeNumbers(value as Record<string, unknown>, owningMode, depth);\n}\n\nfunction validateNodeNumbers(node: Record<string, unknown>, owningMode: string, depth: number): void {\n owningMode = resolveNumericMode(node, owningMode, depth);\n assertCompleteSourceRoot(node, owningMode, depth);\n if (owningMode === 'exact' && isNode(node)) validateSyntaxMembers(node);\n validateRawNumericText(node, owningMode);\n if (node.kind === 'LiteralExpressionSyntax' && Object.hasOwn(node, 'value')) validateLiteralValue(node.value, owningMode);\n validateNumberMembers(node, owningMode, depth);\n}\n\nfunction assertSupportedDepth(owningMode: string, depth: number): void {\n if (depth > 96 && owningMode === 'exact') throw new InvalidSyntaxJson('Syntax nesting exceeds the supported depth of 96.');\n}\n\nfunction assertCompleteSourceRoot(node: Record<string, unknown>, owningMode: string, depth: number): void {\n if (isIncompleteExactRoot(node, owningMode, depth)) throw new InvalidSyntaxJson('Exact syntax requires a complete source root.');\n}\n\nfunction isIncompleteExactRoot(node: Record<string, unknown>, owningMode: string, depth: number): boolean {\n return depth === 0 && owningMode === 'exact' && !sourceRoots.has(node.kind as string);\n}\n\nfunction resolveNumericMode(node: Record<string, unknown>, owningMode: string, depth: number): string {\n if (!sourceRoots.has(node.kind as string) && !Object.hasOwn(node, 'sourceOptions')) return owningMode;\n // Omission is Legacy on every complete source root, never inheritance from its container.\n const options = Object.hasOwn(node, 'sourceOptions') ? validatedSourceOptions(node.sourceOptions) : legacySourceOptions;\n if (depth > 0 && owningMode !== options.numericMode) throw new InvalidSyntaxJson('Conflicting source numeric options.');\n return options.numericMode;\n}\n\nfunction validateRawNumericText(node: Record<string, unknown>, owningMode: string): void {\n if (node.kind !== 'RawExpressionSyntax' || owningMode !== 'exact') return;\n if (typeof node.text === 'string' && isExactNumberToken(node.text)) throw new InvalidSyntaxJson('An exact numeric operand must be an explicit ExactNumber, not opaque numeric text.');\n}\n\nfunction isUnsupportedExactPrimitive(value: unknown): boolean {\n return typeof value === 'number' || (value !== null && !['string', 'boolean', 'object'].includes(typeof value));\n}\n\nfunction validateLiteralValue(value: unknown, owningMode: string): void {\n if (owningMode === 'exact' && isUnsupportedExactPrimitive(value)) throw new InvalidSyntaxJson('Exact source requires supported primitive values or an explicit ExactNumber literal.');\n if (!isObject(value)) return;\n validateObjectLiteral(value as { literalType?: unknown; value?: unknown }, owningMode);\n}\n\nfunction validateObjectLiteral(literal: { literalType?: unknown; value?: unknown }, owningMode: string): void {\n if (literal.literalType === 'ExactNumber') validateExactNumberLiteral(literal, owningMode);\n else if (owningMode === 'exact') throw new InvalidSyntaxJson('Exact source refuses old or plain object literal insertion.');\n}\n\nfunction isWellFormedExactNumber(literal: { value?: unknown }): boolean {\n return typeof literal.value === 'string' && parseExactNumber(literal.value)?.value === literal.value && Object.keys(literal).length === 2;\n}\n\nfunction validateExactNumberLiteral(literal: { value?: unknown }, owningMode: string): void {\n if (owningMode !== 'exact' || !isWellFormedExactNumber(literal)) throw new InvalidSyntaxJson('Malformed or incompatible ExactNumber literal.');\n}\n\nfunction validateNumberMembers(node: Record<string, unknown>, owningMode: string, depth: number): void {\n const known = owningMode === 'exact' && isNode(node) ? syntaxMemberNames(node.kind) : undefined;\n for (const [name, member] of Object.entries(node)) if (isTraversedMember(known, name, member)) validateNumbers(member, owningMode, depth + 1);\n}\n\nfunction isTraversedMember(known: ReadonlySet<string> | undefined, name: string, member: unknown): boolean {\n return (known === undefined || known.has(name) || (isNode(member) && sourceRoots.has(member.kind))) && !skippedNumberMembers.has(name);\n}\n\nfunction ordinal(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"],"mappings":"A,+gBAeA,MAAM,OAAU,GACZ,OAAOA,GAAU,YAAYA,GAAkB,OAAQA,EAA6B,MAAS,SAC3F,SAAY,GAAoC,OAAOA,GAAU,YAAYA,EAC7EC,kBAAU,IAAI,IAAI,CAAC,OAAQ,WAAY,iBAAkB,oBAAqB,kBAAmB,iBAAkB,mBAAoB,oBAAoB,CAAC,EAC5JC,kBAAuB,IAAI,IAAI,CAAC,WAAY,iBAAkB,cAAc,CAAC,EAC7EC,kBAAc,IAAI,IAAI,CAAC,oBAAqB,mBAAoB,gBAAiB,qBAAqB,CAAC,EAK7G,SAAgB,aAAa,EAAmC,CAC5D,IAAMC,EAAW,SAASC,CAAI,EAE9B,OADA,gBAAgBD,EAAU,SAAU,CAAC,EAC9B,MAAMA,CAAQ,CACzB,CAYA,SAAS,SAAS,EAAyB,CACvC,IAAME,kBAAS,IAAI,QACbC,EAA0B,CAAC,EAEjC,SAAS,OAAO,EAAyB,CAGrC,OAFK,SAASP,CAAK,EACfM,EAAO,IAAIN,CAAK,EAAUM,EAAO,IAAIN,CAAK,EACvC,MAAM,QAAQA,CAAK,EAAI,YAAYA,CAAK,EAAI,aAAaA,CAAK,EAFxCA,CAGjC,CACA,SAAS,YAAY,EAA2B,CAC5C,IAAMQ,EAAQ,UAAmB,EACjCF,EAAO,IAAIN,EAAOQ,CAAK,EACvB,IAAMC,EAAST,EAAM,OACrB,IAAK,IAAIU,EAAQD,EAAS,EAAGC,GAAS,EAAG,IAASH,EAAQ,SAAW,CACjE,EAAMG,GAAS,OAAO,OAAO,OAAOV,EAAOU,CAAK,EAAIV,EAAMU,GAAS,IAAA,EAAS,CAChF,CAAC,EACD,OAAOF,CACX,CACA,SAAS,aAAa,EAAwB,CAC1C,IAAMG,EAAO,OAAO,OAAO,IAAI,EAC/BL,EAAO,IAAIN,EAAOW,CAAI,EACtB,IAAMC,EAAQ,OAAO,KAAKZ,CAAK,EAE3B,CAACY,EAAM,SAAS,MAAM,GAAK,SAAUZ,GAAOY,EAAM,QAAQ,MAAM,EACpE,IAAK,IAAIF,EAAQE,EAAM,OAAS,EAAGF,GAAS,EAAG,IAASH,EAAQ,SAAW,CACvE,IAAMM,EAAOD,EAAMF,GACbI,EAAUd,EAAkCa,GAC9CA,IAAS,iBAAiBN,EAAQ,SAAW,8BAA8BI,EAAME,EAAMC,CAAM,CAAC,EAClG,EAAKD,GAAQ,OAAOC,CAAM,CAC9B,CAAC,EACD,OAAOH,CACX,CACA,IAAMP,EAAW,OAAOJ,CAAK,EAC7B,KAAOO,EAAQ,OAAS,GAAGA,EAAQ,IAAI,CAAC,CAAE,EAC1C,OAAOH,CACX,CAIA,SAAS,8BAA8B,EAA+B,EAAc,EAAuB,CACnG,SAASU,CAAM,GAAK,eAAeA,CAAM,IACzC,EAAKD,GAAQ,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,CAAE,YAAa,SAAU,CAAC,EAElF,CAEA,SAAS,eAAe,EAAyB,CAC7C,OAAQ,OAAO,eAAeC,CAAM,IAAM,OAAO,WAAa,OAAO,eAAeA,CAAM,IAAM,MAAS,QAAQ,QAAQA,CAAM,CAAC,CAAC,SAAW,OAAO,KAAKA,CAAM,CAAC,CAAC,MACpK,CAEA,SAAS,WAAoB,CACzB,IAAMN,EAAa,CAAC,EAIpB,OADA,OAAO,eAAeA,EAAO,SAAU,CAAE,MAAO,IAAA,EAAU,CAAC,EACpDA,CACX,CAGA,MAAMO,EAAqD,CACvD,kBAAmB,CAAC,WAAY,yBAA0B,kBAAmB,WAAY,SAAS,EAClG,cAAe,CAAC,UAAU,EAC1B,0BAA2B,CAAC,gBAAgB,EAC5C,YAAa,CAAC,QAAQ,EACtB,aAAc,CAAC,QAAQ,EACvB,YAAa,CAAC,WAAW,EACzB,eAAgB,CAAC,MAAM,EACvB,cAAe,CAAC,MAAM,EACtB,iBAAkB,CAAC,UAAU,EAC7B,eAAgB,CAAC,QAAQ,EACzB,uBAAwB,CAAC,QAAS,iBAAiB,EACnD,cAAe,CAAC,cAAe,eAAgB,YAAY,EAC3D,iBAAkB,CAAC,OAAQ,MAAM,EACjC,aAAc,CAAC,aAAa,EAC5B,qBAAsB,CAAC,aAAa,EACpC,4BAA6B,CAAC,aAAa,EAC3C,+BAAgC,CAAC,aAAa,EAC9C,iBAAkB,CAAC,aAAa,EAChC,aAAc,CAAC,aAAa,EAC5B,mBAAoB,CAAC,SAAS,EAC9B,0BAA2B,CAAC,SAAS,EACrC,kBAAmB,CAAC,SAAS,EAC7B,WAAY,CAAC,aAAa,EAC1B,oBAAqB,CAAC,cAAe,kBAAmB,eAAe,EACvE,yBAA0B,CAAC,WAAW,EACtC,2BAA4B,CAAC,SAAU,UAAU,EACjD,8BAA+B,CAAC,SAAU,UAAU,CACxD,EAGMC,EAAsD,CACxD,mBAAoB,CAAC,QAAQ,EAC7B,aAAc,CAAC,WAAW,EAC1B,cAAe,CAAC,WAAW,EAC3B,oBAAqB,CAAC,aAAc,OAAO,EAC3C,cAAe,CAAC,WAAW,CAC/B,EAGMC,EAA8D,CAChE,YAAa,CAAE,WAAY,SAAU,EACrC,aAAc,CAAE,WAAY,SAAU,EACtC,uBAAwB,CAAE,SAAU,EAAM,EAC1C,eAAgB,CAAE,UAAW,EAAM,EACnC,gBAAiB,CAAE,UAAW,EAAM,EACpC,oBAAqB,CAAE,aAAc,EAAM,CAC/C,EAEM,UAAe,EAA0B,IAAgC,OAAO,OAAOC,EAAOC,CAAI,EAAID,EAAMC,GAAQ,IAAA,GACpH,aAAgB,GAA4B,MAAM,QAAQnB,CAAK,GAAKA,EAAM,SAAW,EAE3F,SAAS,cAAc,EAAc,EAAgB,EAAyB,CAE1E,OADIA,GAAS,KACN,SAASe,EAAiBI,CAAI,CAAC,EAAE,SAASL,CAAM,IAAM,IACtDA,IAAW,kBACVA,IAAW,iBAAmBK,IAAS,cAHrB,EAI9B,CAEA,SAAS,eAAe,EAAc,EAAgB,EAAyB,CAE3E,OADK,aAAanB,CAAK,EAChB,SAASgB,EAAkBG,CAAI,CAAC,EAAE,SAASL,CAAM,IAAM,IAAQA,IAAW,YAAcA,IAAW,WADzE,EAErC,CAEA,SAAS,iBAAiB,EAAc,EAAgB,EAAyB,CAC7E,GAAIA,IAAW,gBAAiB,OAAQd,GAAgD,cAAgB,SACxG,IAAMoB,EAAW,SAASH,EAAoBE,CAAI,EAClD,OAAOC,IAAa,IAAA,IAAa,OAAO,OAAOA,EAAUN,CAAM,GAAKd,IAAUoB,EAASN,EAC3F,CAEA,SAAS,mBAAmB,EAAc,EAAgB,EAAyB,CAC/E,OAAO,cAAcK,EAAML,EAAQd,CAAK,GAAK,eAAemB,EAAML,EAAQd,CAAK,GAAK,iBAAiBmB,EAAML,EAAQd,CAAK,CAC5H,CAEA,SAAS,MAAM,EAAgB,EAAa,SAAU,EAAW,GAAwB,CAKrF,OAJI,MAAM,QAAQA,CAAK,EAAU,WAAWA,EAAOqB,EAAYC,CAAQ,EACnE,OAAOtB,CAAK,EAAU,UAAUA,EAAOqB,EAAYC,CAAQ,EAC3DtB,IAAU,IAAA,GAAkB,KAC3B,SAASA,CAAK,EACZ,YAAYA,EAAkCqB,EAAYC,CAAQ,EAD5CtB,CAEjC,CAEA,SAAS,WAAW,EAAkB,EAAoB,EAAoC,CAE1F,IAAMQ,EAAQ,UAA2B,EACzC,IAAK,IAAIE,EAAQ,EAAGA,EAAQV,EAAM,OAAQ,IAASQ,EAAM,KAAK,MAAMR,EAAMU,GAAQW,EAAYC,CAAQ,CAAC,EACvG,OAAOd,CACX,CAEA,SAAS,mCAAmC,EAAyB,CAGjE,IADIR,EAAM,OAAS,wBAA0BA,EAAM,OAAS,6BAA4BuB,EAA4BvB,EAAOC,CAAO,EAC9HD,EAAM,OAAS,uBAAwB,OAC3C,IAAMwB,EAAOxB,EACTwB,EAAK,gBAAkB,OACvBA,EAAK,MAAQ,MAAMD,EAA4BC,EAAK,KAAMvB,CAAO,EACjEuB,EAAK,MAAQ,MAAMD,EAA4BC,EAAK,KAAMvB,CAAO,EACzE,CAEA,SAAS,kBAAkB,EAA4C,CACnE,IAAMwB,EAAa,CAAE,GAAGzB,CAAM,EAI9B,OAHIA,EAAM,OAAS,qBAAuByB,EAAW,eAAiB,IAAA,KAAW,EAAW,aAAe,CAAC,GACxGzB,EAAM,OAAS,iBAAmByB,EAAW,SAAW,IAAA,KAAW,EAAW,OAAS,MACvFzB,EAAM,OAAS,iBAAmByB,EAAW,mBAAqB,IAAA,KAAW,EAAW,iBAAmB,CAAC,GACzGA,CACX,CAEA,SAAS,qBAAqB,EAAmB,EAAqC,EAAoB,EAA6B,CACnI,IAAMC,EAAQL,IAAe,QAAUM,EAAkB3B,EAAM,IAAI,EAAI,IAAA,GACjE,YAAe,IAChB0B,IAAU,IAAA,IAAaA,EAAM,IAAIZ,CAAM,IAAM,CAAC,iBAAiBd,EAAOc,EAAQO,EAAYC,CAAQ,GAAK,CAAC,gBAAgBtB,EAAOc,CAAM,EAC1I,OAAO,OAAO,KAAKW,CAAU,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,KAAK,OAAO,CACnE,CAEA,SAAS,iBAAiB,EAAmB,EAAgB,EAAoB,EAA4B,CACzG,OAAOJ,IAAe,UAAY,CAACC,GAAYM,EAAsB5B,EAAOc,CAAM,CACtF,CAEA,SAAS,gBAAgB,EAAmB,EAAyB,CACjE,OAAOb,EAAQ,IAAIa,CAAM,GAAMd,EAAM,OAAS,mBAAqBc,IAAW,cAClF,CAEA,SAAS,oBAAoB,EAAc,EAAgB,EAAyB,CAEhF,OADIK,IAAS,iBAAmBL,IAAW,iBAAyB,GAC7Dd,GAAS,MAASA,EAAgC,OAAO,SAAW,CAC/E,CAEA,SAAS,UAAU,EAAmB,EAAoB,EAAoC,CACtFG,EAAY,IAAIH,EAAM,IAAI,IAAG,EAAa6B,EAAwB7B,EAAiD,eAAiB8B,CAAmB,CAAC,CAAC,aAC7JC,EAAyB/B,CAAK,EAC9B,mCAAmCA,CAAK,EACxC,IAAMgC,EAAS,OAAO,OAAO,IAAI,EACjC,EAAO,KAAOhC,EAAM,KACpB,IAAMyB,EAAa,kBAAkBzB,CAAK,EAC1C,IAAK,IAAMc,KAAU,qBAAqBd,EAAOyB,EAAYJ,EAAYC,CAAQ,EAAG,CAChF,IAAMW,EAAcR,EAAWX,GAC3B,mBAAmBd,EAAM,KAAMc,EAAQmB,CAAW,GAClD,oBAAoBjC,EAAM,KAAMc,EAAQmB,CAAW,IACvD,EAAOnB,GAAU,MAAMmB,EAAaZ,EAAYC,CAAQ,EAC5D,CACA,OAAOU,CACX,CAEA,SAAS,YAAY,EAAiC,EAAoB,EAAoC,CAE1G,IAAMrB,EAAO,OAAO,OAAO,IAAI,EAC/B,GAAIuB,EAAO,cAAgB,cAGvB,MAFA,GAAK,YAAc,cACnB,EAAK,MAAQA,EAAO,MACbvB,EAEX,IAAK,IAAME,KAAQ,OAAO,KAAKqB,CAAM,EAAOrB,IAAS,UAAYqB,EAAOrB,KAAU,IAAA,KAAW,EAAKA,GAAQ,MAAMqB,EAAOrB,GAAOQ,EAAYC,CAAQ,GAClJ,OAAOX,CACX,CAEA,SAAS,gBAAgB,EAAgB,EAAoB,EAAqB,CAE9E,GADA,qBAAqBU,EAAYc,CAAK,EAClC,MAAM,QAAQnC,CAAK,EACnB,IAAK,IAAIU,EAAQ,EAAGA,EAAQV,EAAM,OAAQ,IAAS,gBAAgBA,EAAMU,GAAQW,EAAYc,EAAQ,CAAC,OAGrG,SAASnC,CAAK,GACnB,oBAAoBA,EAAkCqB,EAAYc,CAAK,CAC3E,CAEA,SAAS,oBAAoB,EAA+B,EAAoB,EAAqB,CACjG,EAAa,mBAAmB9B,EAAMgB,EAAYc,CAAK,EACvD,yBAAyB9B,EAAMgB,EAAYc,CAAK,EAC5Cd,IAAe,SAAW,OAAOhB,CAAI,GAAG+B,EAAsB/B,CAAI,EACtE,uBAAuBA,EAAMgB,CAAU,EACnChB,EAAK,OAAS,2BAA6B,OAAO,OAAOA,EAAM,OAAO,GAAG,qBAAqBA,EAAK,MAAOgB,CAAU,EACxH,sBAAsBhB,EAAMgB,EAAYc,CAAK,CACjD,CAEA,SAAS,qBAAqB,EAAoB,EAAqB,CACnE,GAAIA,EAAQ,IAAMd,IAAe,QAAS,MAAM,IAAIgB,EAAkB,mDAAmD,CAC7H,CAEA,SAAS,yBAAyB,EAA+B,EAAoB,EAAqB,CACtG,GAAI,sBAAsBhC,EAAMgB,EAAYc,CAAK,EAAG,MAAM,IAAIE,EAAkB,+CAA+C,CACnI,CAEA,SAAS,sBAAsB,EAA+B,EAAoB,EAAwB,CACtG,OAAOF,IAAU,GAAKd,IAAe,SAAW,CAAClB,EAAY,IAAIE,EAAK,IAAc,CACxF,CAEA,SAAS,mBAAmB,EAA+B,EAAoB,EAAuB,CAClG,GAAI,CAACF,EAAY,IAAIE,EAAK,IAAc,GAAK,CAAC,OAAO,OAAOA,EAAM,eAAe,EAAG,OAAOgB,EAE3F,IAAMiB,EAAU,OAAO,OAAOjC,EAAM,eAAe,EAAIwB,EAAuBxB,EAAK,aAAa,EAAIyB,EACpG,GAAIK,EAAQ,GAAKd,IAAeiB,EAAQ,YAAa,MAAM,IAAID,EAAkB,qCAAqC,EACtH,OAAOC,EAAQ,WACnB,CAEA,SAAS,uBAAuB,EAA+B,EAA0B,CACrF,GAAIjC,EAAK,OAAS,uBAAyBgB,IAAe,SACtD,OAAOhB,EAAK,MAAS,UAAYkC,EAAmBlC,EAAK,IAAI,EAAG,MAAM,IAAIgC,EAAkB,oFAAoF,CACxL,CAEA,SAAS,4BAA4B,EAAyB,CAC1D,OAAO,OAAOrC,GAAU,UAAaA,IAAU,MAAQ,CAAC,CAAC,SAAU,UAAW,QAAQ,CAAC,CAAC,SAAS,OAAOA,CAAK,CACjH,CAEA,SAAS,qBAAqB,EAAgB,EAA0B,CACpE,GAAIqB,IAAe,SAAW,4BAA4BrB,CAAK,EAAG,MAAM,IAAIqC,EAAkB,sFAAsF,EAC/K,SAASrC,CAAK,GACnB,sBAAsBA,EAAqDqB,CAAU,CACzF,CAEA,SAAS,sBAAsB,EAAqD,EAA0B,CAC1G,GAAImB,EAAQ,cAAgB,cAAe,2BAA2BA,EAASnB,CAAU,OACpF,GAAIA,IAAe,QAAS,MAAM,IAAIgB,EAAkB,6DAA6D,CAC9H,CAEA,SAAS,wBAAwB,EAAuC,CACpE,OAAO,OAAOG,EAAQ,OAAU,UAAYC,EAAiBD,EAAQ,KAAK,CAAC,EAAE,QAAUA,EAAQ,OAAS,OAAO,KAAKA,CAAO,CAAC,CAAC,SAAW,CAC5I,CAEA,SAAS,2BAA2B,EAA8B,EAA0B,CACxF,GAAInB,IAAe,SAAW,CAAC,wBAAwBmB,CAAO,EAAG,MAAM,IAAIH,EAAkB,gDAAgD,CACjJ,CAEA,SAAS,sBAAsB,EAA+B,EAAoB,EAAqB,CACnG,IAAMX,EAAQL,IAAe,SAAW,OAAOhB,CAAI,EAAIsB,EAAkBtB,EAAK,IAAI,EAAI,IAAA,GACtF,IAAK,GAAM,CAACQ,EAAMC,KAAW,OAAO,QAAQT,CAAI,EAAO,kBAAkBqB,EAAOb,EAAMC,CAAM,GAAG,gBAAgBA,EAAQO,EAAYc,EAAQ,CAAC,CAChJ,CAEA,SAAS,kBAAkB,EAAwC,EAAc,EAA0B,CACvG,OAAQT,IAAU,IAAA,IAAaA,EAAM,IAAIb,CAAI,GAAM,OAAOC,CAAM,GAAKX,EAAY,IAAIW,EAAO,IAAI,IAAO,CAACZ,EAAqB,IAAIW,CAAI,CACzI,CAEA,SAAS,QAAQ,EAAc,EAAuB,CAClD,OAAO6B,EAAOC,EAAQ,GAAK,IAAOA,EACtC,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyntaxMemberContracts.js","names":["rules","syntaxCollections","patterns","type","expression","index","contracts","kind","names","members","name","value","node","InvalidSyntaxJson","known","member","sourceOnlyMembers","rule","required","position","items","args","count","key"],"sources":["../../../../../../Compiler/Syntax/SyntaxMemberContracts.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 { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { syntaxCollections } from './SyntaxCollections';\nimport { SyntaxNode } from './SyntaxNode';\n\ntype Member = readonly [name: number, rule: number, required: boolean];\ntype Rule = readonly [type: string, ...arguments: unknown[]];\nconst rules: readonly Rule[] = syntaxCollections.rules;\nconst patterns = new Map<number, RegExp>(rules.flatMap(([type, expression], index) => type === 'string' && typeof expression === 'string' ? [[index, new RegExp(expression, 'u')] as const] : []));\nconst contracts = new Map<string, readonly Member[]>(syntaxCollections.kinds.map((kind, index) => [kind, rules[syntaxCollections.contracts[index]][1] as readonly Member[]]));\nconst names = new Map<string, ReadonlySet<string>>([...contracts].map(([kind, members]) => [kind, new Set(['kind', ...members.map(([name]) => syntaxCollections.names[name])])]));\nconst object = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null && !Array.isArray(value);\n\n// One indexed native-owned contract is shared by restoration and Exact typed writing. Defaults may\n// be omitted, but present values cannot change their primitive width, enum, or node base kind.\nexport function validateSyntaxMembers(node: SyntaxNode): void {\n const members = contracts.get(node.kind);\n if (!Object.hasOwn(node, 'kind') || members === undefined || !matchesMembers(node as unknown as Record<string, unknown>, members)) throw new InvalidSyntaxJson(`Invalid typed members for syntax kind '${node.kind}'.`);\n}\n\n// Closed-world writing is opt-in for feature-owned shapes, not a change to older Legacy nodes.\n// Source-only members are the writer's existing metadata omissions, never additional wire members.\nexport function validateClosedSyntaxMembers(node: SyntaxNode, sourceOnlyMembers: ReadonlySet<string>): void {\n const known = syntaxMemberNames(node.kind);\n for (const member of Object.keys(node)) {\n if (!known.has(member) && !sourceOnlyMembers.has(member)) throw new InvalidSyntaxJson(`Unknown member '${member}' for syntax kind '${node.kind}'.`);\n }\n}\n\nexport function syntaxMemberNames(kind: string): ReadonlySet<string> {\n const members = names.get(kind);\n if (members === undefined) throw new InvalidSyntaxJson(`Unknown syntax kind '${kind}'.`);\n return members;\n}\n\nfunction matchesMembers(value: Record<string, unknown>, members: readonly Member[]): boolean {\n return members.every(([name, rule, required]) => Object.hasOwn(value, syntaxCollections.names[name]) ? matches(value[syntaxCollections.names[name]], rule) : !required);\n}\n\n// Array.every skips holes, so each index is inspected: a hole is never a valid element.\nfunction allIndicesMatch(items: readonly unknown[], rule: number): boolean {\n for (let position = 0; position < items.length; position++) {\n if (!Object.hasOwn(items, position) || !matches(items[position], rule)) return false;\n }\n return true;\n}\n\nfunction matches(value: unknown, index: number): boolean {\n const [type, ...args] = rules[index];\n switch (type) {\n case 'ref': return object(value) && typeof value.kind === 'string' && args.some(kind => syntaxCollections.kinds[kind as number] === value.kind);\n case 'union':\n case 'one': {\n const count = args.reduce<number>((count, rule) => count + (matches(value, rule as number) ? 1 : 0), 0);\n return type === 'one' ? count === 1 : count > 0;\n }\n case 'const': return value === args[0];\n case 'enum': return args.includes(value);\n case 'null': return value === null;\n case 'array': return Array.isArray(value) && allIndicesMatch(value, args[0] as number);\n case 'object': return object(value) && Object.keys(value).every(name => (args[0] as readonly Member[]).some(([key]) => syntaxCollections.names[key] === name)) && matchesMembers(value, args[0] as readonly Member[]);\n case 'integer':\n case 'number': return typeof value === 'number' && Number.isFinite(value) && (type !== 'integer' || Number.isInteger(value)) && (args.length === 0 || (value >= (args[0] as number) && value <= (args[1] as number) && !(type === 'integer' && args[0] === 0 && Object.is(value, -0))));\n case 'string': return typeof value === 'string' && (args.length === 0 || patterns.get(index)!.test(value));\n default: return type === 'boolean' && typeof value === 'boolean';\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SyntaxMemberContracts.js","names":["rules","syntaxCollections","patterns","type","expression","index","contracts","kind","names","members","name","value","node","InvalidSyntaxJson","known","member","sourceOnlyMembers","rule","required","position","items","args","count","key"],"sources":["../../../../../../Compiler/Syntax/SyntaxMemberContracts.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 { InvalidSyntaxJson } from './InvalidSyntaxJson';\nimport { syntaxCollections } from './SyntaxCollections';\nimport { SyntaxNode } from './SyntaxNode';\n\ntype Member = readonly [name: number, rule: number, required: boolean];\ntype Rule = readonly [type: string, ...arguments: unknown[]];\nconst rules: readonly Rule[] = syntaxCollections.rules;\nconst patterns = new Map<number, RegExp>(rules.flatMap(([type, expression], index) => type === 'string' && typeof expression === 'string' ? [[index, new RegExp(expression, 'u')] as const] : []));\nconst contracts = new Map<string, readonly Member[]>(syntaxCollections.kinds.map((kind, index) => [kind, rules[syntaxCollections.contracts[index]][1] as readonly Member[]]));\nconst names = new Map<string, ReadonlySet<string>>([...contracts].map(([kind, members]) => [kind, new Set(['kind', ...members.map(([name]) => syntaxCollections.names[name])])]));\nconst object = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null && !Array.isArray(value);\n\n// One indexed native-owned contract is shared by restoration and Exact typed writing. Defaults may\n// be omitted, but present values cannot change their primitive width, enum, or node base kind.\nexport function validateSyntaxMembers(node: SyntaxNode): void {\n const members = contracts.get(node.kind);\n if (!Object.hasOwn(node, 'kind') || members === undefined || !matchesMembers(node as unknown as Record<string, unknown>, members)) throw new InvalidSyntaxJson(`Invalid typed members for syntax kind '${node.kind}'.`);\n}\n\n// Closed-world writing is opt-in for feature-owned shapes, not a change to older Legacy nodes.\n// Source-only members are the writer's existing metadata omissions, never additional wire members.\nexport function validateClosedSyntaxMembers(node: SyntaxNode, sourceOnlyMembers: ReadonlySet<string>): void {\n const known = syntaxMemberNames(node.kind);\n for (const member of Object.keys(node)) {\n if (!known.has(member) && !sourceOnlyMembers.has(member)) throw new InvalidSyntaxJson(`Unknown member '${member}' for syntax kind '${node.kind}'.`);\n }\n}\n\nexport function syntaxMemberNames(kind: string): ReadonlySet<string> {\n const members = names.get(kind);\n if (members === undefined) throw new InvalidSyntaxJson(`Unknown syntax kind '${kind}'.`);\n return members;\n}\n\nfunction matchesMembers(value: Record<string, unknown>, members: readonly Member[]): boolean {\n return members.every(([name, rule, required]) => Object.hasOwn(value, syntaxCollections.names[name]) ? matches(value[syntaxCollections.names[name]], rule) : !required);\n}\n\n// Array.every skips holes, so each index is inspected: a hole is never a valid element.\nfunction allIndicesMatch(items: readonly unknown[], rule: number): boolean {\n for (let position = 0; position < items.length; position++) {\n if (!Object.hasOwn(items, position) || !matches(items[position], rule)) return false;\n }\n return true;\n}\n\nfunction matches(value: unknown, index: number): boolean {\n const [type, ...args] = rules[index];\n switch (type) {\n case 'ref': return object(value) && typeof value.kind === 'string' && args.some(kind => syntaxCollections.kinds[kind as number] === value.kind);\n case 'union':\n case 'one': {\n const count = args.reduce<number>((count, rule) => count + (matches(value, rule as number) ? 1 : 0), 0);\n return type === 'one' ? count === 1 : count > 0;\n }\n case 'const': return value === args[0];\n case 'enum': return args.includes(value);\n case 'null': return value === null;\n case 'array': return Array.isArray(value) && allIndicesMatch(value, args[0] as number);\n case 'object': return object(value) && Object.keys(value).every(name => (args[0] as readonly Member[]).some(([key]) => syntaxCollections.names[key] === name)) && matchesMembers(value, args[0] as readonly Member[]);\n case 'integer':\n case 'number': return typeof value === 'number' && Number.isFinite(value) && (type !== 'integer' || Number.isInteger(value)) && (args.length === 0 || (value >= (args[0] as number) && value <= (args[1] as number) && !(type === 'integer' && args[0] === 0 && Object.is(value, -0))));\n case 'string': return typeof value === 'string' && (args.length === 0 || patterns.get(index)!.test(value));\n default: return type === 'boolean' && typeof value === 'boolean';\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{eventDeclarations as e}from"./EventDeclarations.js";import{operationDeclarations as t}from"./Operations.js";import{AuthoringProductionResolver as n}from"./AuthoringProductionResolver.js";import{dependencySourcesOf as r}from"./DependencySources.js";import{ScreenplaySyntaxWalker as i}from"./ScreenplaySyntaxWalker.js";import{isExactNumberToken as a,parseExactNumber as o}from"./ExactNumber.js";import{EventSourceCatalog as s}from"./EventSourceCatalog.js";import{implicitDestination as c,requiresExplicitDestinations as l}from"./ProductionDestinations.js";import{InvalidExactNumber as u,canonicalExactText as d,exactIsIntegral as f}from"./ExactMathFacts.js";import"./InvalidSyntaxJson.js";import"./
|
|
1
|
+
import{eventDeclarations as e}from"./EventDeclarations.js";import{operationDeclarations as t}from"./Operations.js";import{AuthoringProductionResolver as n}from"./AuthoringProductionResolver.js";import{dependencySourcesOf as r}from"./DependencySources.js";import{ScreenplaySyntaxWalker as i}from"./ScreenplaySyntaxWalker.js";import{isExactNumberToken as a,parseExactNumber as o}from"./ExactNumber.js";import{EventSourceCatalog as s}from"./EventSourceCatalog.js";import{implicitDestination as c,requiresExplicitDestinations as l}from"./ProductionDestinations.js";import{InvalidExactNumber as u,canonicalExactText as d,exactIsIntegral as f}from"./ExactMathFacts.js";import"./InvalidSyntaxJson.js";import"./SyntaxJson.js";import{sliceTypes as p}from"./Structure.js";import{consumedEvents as m,eventsSourceKind as h,fromSetting as g,isEventsSource as _}from"./CaptureEventsSource.js";import{streamIdFailureMessage as v,tryFormatInteger as y,tryFormatText as b,tryFormatUuidText as x}from"./StreamIdFormatter.js";import{EventSourceReadConfidence as S}from"./EventSourceReadConfidence.js";import"./StrictSyntaxJson.js";import"./SourceOptions.js";export{n as AuthoringProductionResolver,s as EventSourceCatalog,S as EventSourceReadConfidence,u as InvalidExactNumber,i as ScreenplaySyntaxWalker,d as canonicalExactText,m as consumedEvents,r as dependencySourcesOf,e as eventDeclarations,h as eventsSourceKind,f as exactIsIntegral,g as fromSetting,c as implicitDestination,_ as isEventsSource,a as isExactNumberToken,t as operationDeclarations,o as parseExactNumber,l as requiresExplicitDestinations,p as sliceTypes,v as streamIdFailureMessage,y as tryFormatInteger,b as tryFormatText,x as tryFormatUuidText};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImplementationHintText.js","names":["whiteSpace","text","character","code"],"sources":["../../../../../../Compiler/Text/ImplementationHintText.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\n// Unicode White_Space, matching C# Text/ImplementationHintText.cs. ECMAScript trim\n// differs at NEL and BOM. Only test blankness; never normalize authored hint text.\nconst whiteSpace = new Set([0x0020, 0x0085, 0x00a0, 0x1680, 0x2028, 0x2029, 0x202f, 0x205f, 0x3000]);\n\nexport function isBlankImplementationHint(text: string | null): boolean {\n if (text === null) return true;\n for (const character of text) {\n const code = character.charCodeAt(0);\n if (!((code >= 0x0009 && code <= 0x000d) || (code >= 0x2000 && code <= 0x200a) || whiteSpace.has(code))) return false;\n }\n return true;\n}\n"],"mappings":"qDAKA,MAAMA,kBAAa,IAAI,IAAI,CAAC,GAAQ,IAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAM,CAAC,EAEnG,SAAgB,0BAA0B,EAA8B,CACpE,GAAIC,IAAS,KAAM,MAAO,GAC1B,IAAK,IAAMC,KAAaD,EAAM,CAC1B,IAAME,EAAOD,EAAU,WAAW,CAAC,EACnC,GAAI,EAAGC,GAAQ,GAAUA,GAAQ,IAAYA,GAAQ,MAAUA,GAAQ,MAAWH,EAAW,IAAIG,CAAI,GAAI,MAAO,EACpH,CACA,MAAO,EACX"}
|
|
1
|
+
{"version":3,"file":"ImplementationHintText.js","names":["whiteSpace","text","character","code"],"sources":["../../../../../../Compiler/Text/ImplementationHintText.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\n// Unicode White_Space, matching C# Text/ImplementationHintText.cs. ECMAScript trim\n// differs at NEL and BOM. Only test blankness; never normalize authored hint text.\nconst whiteSpace = new Set([0x0020, 0x0085, 0x00a0, 0x1680, 0x2028, 0x2029, 0x202f, 0x205f, 0x3000]);\n\nexport function isBlankImplementationHint(text: string | null): boolean {\n if (text === null) return true;\n for (const character of text) {\n const code = character.charCodeAt(0);\n if (!((code >= 0x0009 && code <= 0x000d) || (code >= 0x2000 && code <= 0x200a) || whiteSpace.has(code))) return false;\n }\n return true;\n}\n"],"mappings":"A,qDAKA,MAAMA,kBAAa,IAAI,IAAI,CAAC,GAAQ,IAAQ,IAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAM,CAAC,EAEnG,SAAgB,0BAA0B,EAA8B,CACpE,GAAIC,IAAS,KAAM,MAAO,GAC1B,IAAK,IAAMC,KAAaD,EAAM,CAC1B,IAAME,EAAOD,EAAU,WAAW,CAAC,EACnC,GAAI,EAAGC,GAAQ,GAAUA,GAAQ,IAAYA,GAAQ,MAAUA,GAAQ,MAAWH,EAAW,IAAIG,CAAI,GAAI,MAAO,EACpH,CACA,MAAO,EACX,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReservedWords.js","names":["eventBodyReservedWords"],"sources":["../../../../../../Compiler/Text/ReservedWords.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\n/** First words reserved in a standalone event body, matching C# ReservedWords.EventBody. */\nexport const eventBodyReservedWords: readonly string[] = ['tag'];\n"],"mappings":"AAIA,MAAaA,EAA4C,CAAC,KAAK"}
|
|
1
|
+
{"version":3,"file":"ReservedWords.js","names":["eventBodyReservedWords"],"sources":["../../../../../../Compiler/Text/ReservedWords.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\n/** First words reserved in a standalone event body, matching C# ReservedWords.EventBody. */\nexport const eventBodyReservedWords: readonly string[] = ['tag'];\n"],"mappings":"AAIA,MAAaA,EAA4C,CAAC,KAAK,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceStreamNames.js","names":["pattern","source","identifier","typeName","value"],"sources":["../../../../../../Compiler/Text/SourceStreamNames.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 { pattern } from './patterns';\n\n// .NET \\w admits Lu, Ll, Lt, Lm, Lo, Mn, Nd and Pc, evaluated per UTF-16 code unit.\n// The shared Unicode pattern supplies those categories; exclude surrogate code units so\n// a supplementary letter (or an unpaired surrogate) cannot become a new authored name.\n// This boundary is source/stream-only; existing unrelated name/type grammar is unchanged.\nexport function sourceStreamPattern(source: string): RegExp {\n return pattern(`(?![\\\\s\\\\S]*[\\\\uD800-\\\\uDFFF\\\\u{10000}-\\\\u{10FFFF}])${source}`);\n}\n\nconst identifier = sourceStreamPattern('^[A-Za-z_]\\\\w*(?![\\\\s\\\\S])');\nconst typeName = sourceStreamPattern('^[\\\\w.]+(?![\\\\s\\\\S])');\n\nexport function isSourceStreamName(value: unknown): value is string {\n return typeof value === 'string' && identifier.test(value);\n}\n\nexport function isSourceStreamTypeName(value: unknown): value is string {\n return typeof value === 'string' && typeName.test(value);\n}\n"],"mappings":"6FASA,SAAgB,oBAAoB,EAAwB,CACxD,OAAOA,EAAQ,uDAAuDC,GAAQ,CAClF,CAEA,MAAMC,EAAa,oBAAoB,4BAA4B,EAC7DC,EAAW,oBAAoB,sBAAsB,EAE3D,SAAgB,mBAAmB,EAAiC,CAChE,OAAO,OAAOC,GAAU,UAAYF,EAAW,KAAKE,CAAK,CAC7D,CAEA,SAAgB,uBAAuB,EAAiC,CACpE,OAAO,OAAOA,GAAU,UAAYD,EAAS,KAAKC,CAAK,CAC3D"}
|
|
1
|
+
{"version":3,"file":"SourceStreamNames.js","names":["pattern","source","identifier","typeName","value"],"sources":["../../../../../../Compiler/Text/SourceStreamNames.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 { pattern } from './patterns';\n\n// .NET \\w admits Lu, Ll, Lt, Lm, Lo, Mn, Nd and Pc, evaluated per UTF-16 code unit.\n// The shared Unicode pattern supplies those categories; exclude surrogate code units so\n// a supplementary letter (or an unpaired surrogate) cannot become a new authored name.\n// This boundary is source/stream-only; existing unrelated name/type grammar is unchanged.\nexport function sourceStreamPattern(source: string): RegExp {\n return pattern(`(?![\\\\s\\\\S]*[\\\\uD800-\\\\uDFFF\\\\u{10000}-\\\\u{10FFFF}])${source}`);\n}\n\nconst identifier = sourceStreamPattern('^[A-Za-z_]\\\\w*(?![\\\\s\\\\S])');\nconst typeName = sourceStreamPattern('^[\\\\w.]+(?![\\\\s\\\\S])');\n\nexport function isSourceStreamName(value: unknown): value is string {\n return typeof value === 'string' && identifier.test(value);\n}\n\nexport function isSourceStreamTypeName(value: unknown): value is string {\n return typeof value === 'string' && typeName.test(value);\n}\n"],"mappings":"A,6FASA,SAAgB,oBAAoB,EAAwB,CACxD,OAAOA,EAAQ,uDAAuDC,GAAQ,CAClF,CAEA,MAAMC,EAAa,oBAAoB,4BAA4B,EAC7DC,EAAW,oBAAoB,sBAAsB,EAE3D,SAAgB,mBAAmB,EAAiC,CAChE,OAAO,OAAOC,GAAU,UAAYF,EAAW,KAAKE,CAAK,CAC7D,CAEA,SAAgB,uBAAuB,EAAiC,CACpE,OAAO,OAAOA,GAAU,UAAYD,EAAS,KAAKC,CAAK,CAC3D,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringLiteral.js","names":["stringBodyPattern","escapes","value","result","index","escaped"],"sources":["../../../../../../Compiler/Text/StringLiteral.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\n// The body of a double-quoted string literal: anything but a quote or a backslash, or an escape.\nexport const stringBodyPattern = '(?:[^\"\\\\\\\\]|\\\\\\\\.)*';\n\nconst escapes: Record<string, string> = { '\\\\': '\\\\', '\"': '\"', n: '\\n', r: '\\r', t: '\\t' };\n\n// Resolves the escapes the C# StringLiteral knows; an unknown escape keeps its backslash.\nexport function unescapeString(value: string): string {\n if (!value.includes('\\\\')) {\n return value;\n }\n let result = '';\n for (let index = 0; index < value.length; index++) {\n const escaped = index + 1 < value.length ? escapes[value[index + 1]] : undefined;\n if (value[index] === '\\\\' && escaped !== undefined) {\n result += escaped;\n index++;\n } else {\n result += value[index];\n }\n }\n return result;\n}\n"],"mappings":"qDAIA,MAAaA,EAAoB,sBAE3BC,EAAkC,CAAE,KAAM,KAAM,IAAK,IAAK,EAAG;EAAM,EAAG,KAAM,EAAG,GAAK,EAG1F,SAAgB,eAAe,EAAuB,CAClD,GAAI,CAACC,EAAM,SAAS,IAAI,EACpB,OAAOA,EAEX,IAAIC,EAAS,GACb,IAAK,IAAIC,EAAQ,EAAGA,EAAQF,EAAM,OAAQ,IAAS,CAC/C,IAAMG,EAAUD,EAAQ,EAAIF,EAAM,OAASD,EAAQC,EAAME,EAAQ,IAAM,IAAA,GACnEF,EAAME,KAAW,MAAQC,IAAY,IAAA,IACrC,GAAUA,EACV,KAEA,GAAUH,EAAME,EAExB,CACA,OAAOD,CACX"}
|
|
1
|
+
{"version":3,"file":"StringLiteral.js","names":["stringBodyPattern","escapes","value","result","index","escaped"],"sources":["../../../../../../Compiler/Text/StringLiteral.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\n// The body of a double-quoted string literal: anything but a quote or a backslash, or an escape.\nexport const stringBodyPattern = '(?:[^\"\\\\\\\\]|\\\\\\\\.)*';\n\nconst escapes: Record<string, string> = { '\\\\': '\\\\', '\"': '\"', n: '\\n', r: '\\r', t: '\\t' };\n\n// Resolves the escapes the C# StringLiteral knows; an unknown escape keeps its backslash.\nexport function unescapeString(value: string): string {\n if (!value.includes('\\\\')) {\n return value;\n }\n let result = '';\n for (let index = 0; index < value.length; index++) {\n const escaped = index + 1 < value.length ? escapes[value[index + 1]] : undefined;\n if (value[index] === '\\\\' && escaped !== undefined) {\n result += escaped;\n index++;\n } else {\n result += value[index];\n }\n }\n return result;\n}\n"],"mappings":"A,qDAIA,MAAaA,EAAoB,sBAE3BC,EAAkC,CAAE,KAAM,KAAM,IAAK,IAAK,EAAG;EAAM,EAAG,KAAM,EAAG,GAAK,EAG1F,SAAgB,eAAe,EAAuB,CAClD,GAAI,CAACC,EAAM,SAAS,IAAI,EACpB,OAAOA,EAEX,IAAIC,EAAS,GACb,IAAK,IAAIC,EAAQ,EAAGA,EAAQF,EAAM,OAAQ,IAAS,CAC/C,IAAMG,EAAUD,EAAQ,EAAIF,EAAM,OAASD,EAAQC,EAAME,EAAQ,IAAM,IAAA,GACnEF,EAAME,KAAW,MAAQC,IAAY,IAAA,IACrC,GAAUA,EACV,KAEA,GAAUH,EAAME,EAExB,CACA,OAAOD,CACX,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinalIgnoreCaseKey.js","names":["value","character","code","upper"],"sources":["../../../../../../Compiler/Text/ordinalIgnoreCaseKey.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\n// .NET OrdinalIgnoreCase uses simple uppercase, not lowercase or full (expanding) uppercase.\n// It keeps dotless i and long s distinct from ASCII I and S. Greek letters with a subscript\n// iota have a single-character uppercase that JavaScript's full casing expands instead.\nexport function ordinalIgnoreCaseKey(value: string): string {\n return Array.from(value, character => {\n if (character === '\\u0131' || character === '\\u017f') return character;\n const code = character.codePointAt(0)!;\n if ((code >= 0x1f80 && code <= 0x1f87) || (code >= 0x1f90 && code <= 0x1f97) || (code >= 0x1fa0 && code <= 0x1fa7)) return String.fromCodePoint(code + 8);\n if (code === 0x1fb3) return '\\u1fbc';\n if (code === 0x1fc3) return '\\u1fcc';\n if (code === 0x1ff3) return '\\u1ffc';\n const upper = character.toUpperCase();\n return Array.from(upper).length === 1 ? upper : character;\n }).join('');\n}\n"],"mappings":"qDAMA,SAAgB,qBAAqB,EAAuB,CACxD,OAAO,MAAM,KAAKA,EAAO,GAAa,CAClC,GAAIC,IAAc,KAAYA,IAAc,IAAU,OAAOA,EAC7D,IAAMC,EAAOD,EAAU,YAAY,CAAC,EACpC,GAAKC,GAAQ,MAAUA,GAAQ,MAAYA,GAAQ,MAAUA,GAAQ,MAAYA,GAAQ,MAAUA,GAAQ,KAAS,OAAO,OAAO,cAAcA,EAAO,CAAC,EACxJ,GAAIA,IAAS,KAAQ,MAAO,IAC5B,GAAIA,IAAS,KAAQ,MAAO,IAC5B,GAAIA,IAAS,KAAQ,MAAO,IAC5B,IAAMC,EAAQF,EAAU,YAAY,EACpC,OAAO,MAAM,KAAKE,CAAK,CAAC,CAAC,SAAW,EAAIA,EAAQF,CACpD,CAAC,CAAC,CAAC,KAAK,EAAE,CACd"}
|
|
1
|
+
{"version":3,"file":"ordinalIgnoreCaseKey.js","names":["value","character","code","upper"],"sources":["../../../../../../Compiler/Text/ordinalIgnoreCaseKey.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\n// .NET OrdinalIgnoreCase uses simple uppercase, not lowercase or full (expanding) uppercase.\n// It keeps dotless i and long s distinct from ASCII I and S. Greek letters with a subscript\n// iota have a single-character uppercase that JavaScript's full casing expands instead.\nexport function ordinalIgnoreCaseKey(value: string): string {\n return Array.from(value, character => {\n if (character === '\\u0131' || character === '\\u017f') return character;\n const code = character.codePointAt(0)!;\n if ((code >= 0x1f80 && code <= 0x1f87) || (code >= 0x1f90 && code <= 0x1f97) || (code >= 0x1fa0 && code <= 0x1fa7)) return String.fromCodePoint(code + 8);\n if (code === 0x1fb3) return '\\u1fbc';\n if (code === 0x1fc3) return '\\u1fcc';\n if (code === 0x1ff3) return '\\u1ffc';\n const upper = character.toUpperCase();\n return Array.from(upper).length === 1 ? upper : character;\n }).join('');\n}\n"],"mappings":"A,qDAMA,SAAgB,qBAAqB,EAAuB,CACxD,OAAO,MAAM,KAAKA,EAAO,GAAa,CAClC,GAAIC,IAAc,KAAYA,IAAc,IAAU,OAAOA,EAC7D,IAAMC,EAAOD,EAAU,YAAY,CAAC,EACpC,GAAKC,GAAQ,MAAUA,GAAQ,MAAYA,GAAQ,MAAUA,GAAQ,MAAYA,GAAQ,MAAUA,GAAQ,KAAS,OAAO,OAAO,cAAcA,EAAO,CAAC,EACxJ,GAAIA,IAAS,KAAQ,MAAO,IAC5B,GAAIA,IAAS,KAAQ,MAAO,IAC5B,GAAIA,IAAS,KAAQ,MAAO,IAC5B,IAAMC,EAAQF,EAAU,YAAY,EACpC,OAAO,MAAM,KAAKE,CAAK,CAAC,CAAC,SAAW,EAAIA,EAAQF,CACpD,CAAC,CAAC,CAAC,KAAK,EAAE,CACd,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","names":["wordCharacters","dotNetWhitespace","word","classes","source","rest","body","result","inClass","index","current","next"],"sources":["../../../../../../Compiler/Text/patterns.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\nconst wordCharacters = '\\\\p{L}\\\\p{Mn}\\\\p{Nd}\\\\p{Pc}';\n\n// The characters .NET '\\s' matches. JavaScript '\\s' differs: it also accepts U+FEFF and not U+0085. Interpolate this\n// into newly modeled grammar that must agree with the C# parser.\nexport const dotNetWhitespace = '[\\\\u0009-\\\\u000d\\\\u0020\\\\u0085\\\\u00a0\\\\u1680\\\\u2000-\\\\u200a\\\\u2028\\\\u2029\\\\u202f\\\\u205f\\\\u3000]';\n\n// .NET Regex classifies UTF-16 code units: supplementary letters are not \\w. Use this\n// scoped helper only in newly modeled grammar, without changing established Legacy parsers.\nexport function nativePattern(source: string): RegExp {\n const word = `(?=[\\\\u0000-\\\\uFFFF])[${wordCharacters}]`;\n const classes = source.replace(/\\[([^\\]]*\\\\w[^\\]]*)\\]/g, (_match, body: string) => {\n const rest = body.replaceAll('\\\\w', '');\n return rest === '' ? `(?:${word})` : `(?:${word}|[${rest}])`;\n });\n return new RegExp(classes.replaceAll('\\\\w', `(?:${word})`), 'u');\n}\n\n// Builds a regular expression from a pattern written the way the C# parser writes it. In .NET '\\w' is a\n// Unicode word character; in JavaScript it is ASCII only, so it is rewritten to the same Unicode classes\n// and the expression runs in Unicode mode. '\\d' is likewise any Unicode decimal digit. Copying a C# pattern verbatim therefore keeps its meaning.\nexport function pattern(source: string): RegExp {\n let result = '';\n let inClass = false;\n for (let index = 0; index < source.length; index++) {\n const current = source[index];\n if (current === '\\\\' && index + 1 < source.length) {\n const next = source[index + 1];\n index++;\n if (next === 'w') {\n result += inClass ? wordCharacters : `[${wordCharacters}]`;\n } else if (next === 'd') {\n result += '\\\\p{Nd}';\n } else {\n result += `\\\\${next}`;\n }\n continue;\n }\n if (current === '[' && !inClass) {\n inClass = true;\n } else if (current === ']' && inClass) {\n inClass = false;\n }\n result += current;\n }\n return new RegExp(result, 'u');\n}\n"],"mappings":"qDAGA,MAAMA,EAAiB,8BAIVC,EAAmB,kGAIhC,SAAgB,cAAc,EAAwB,CAClD,IAAMC,EAAO,yBAAyBF,EAAe,GAC/CG,EAAUC,EAAO,QAAQ,0BAA2B,EAAQ,IAAiB,CAC/E,IAAMC,EAAOC,EAAK,WAAW,MAAO,EAAE,EACtC,OAAOD,IAAS,GAAK,MAAMH,EAAK,GAAK,MAAMA,EAAK,IAAIG,EAAK,GAC7D,CAAC,EACD,OAAO,IAAI,OAAOF,EAAQ,WAAW,MAAO,MAAMD,EAAK,EAAE,EAAG,GAAG,CACnE,CAKA,SAAgB,QAAQ,EAAwB,CAC5C,IAAIK,EAAS,GACTC,EAAU,GACd,IAAK,IAAIC,EAAQ,EAAGA,EAAQL,EAAO,OAAQ,IAAS,CAChD,IAAMM,EAAUN,EAAOK,GACvB,GAAIC,IAAY,MAAQD,EAAQ,EAAIL,EAAO,OAAQ,CAC/C,IAAMO,EAAOP,EAAOK,EAAQ,GAC5B,IACA,AAKIF,GALAI,IAAS,IACCH,EAAUR,EAAiB,IAAIA,EAAe,GACjDW,IAAS,IACN,UAEA,KAAKA,GAGvB,MACID,IAAY,KAAO,CAACF,EACpB,EAAU,GACHE,IAAY,KAAOF,IAC1B,EAAU,IAEd,GAAUE,CACd,CACA,OAAO,IAAI,OAAOH,EAAQ,GAAG,CACjC"}
|
|
1
|
+
{"version":3,"file":"patterns.js","names":["wordCharacters","dotNetWhitespace","word","classes","source","rest","body","result","inClass","index","current","next"],"sources":["../../../../../../Compiler/Text/patterns.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\nconst wordCharacters = '\\\\p{L}\\\\p{Mn}\\\\p{Nd}\\\\p{Pc}';\n\n// The characters .NET '\\s' matches. JavaScript '\\s' differs: it also accepts U+FEFF and not U+0085. Interpolate this\n// into newly modeled grammar that must agree with the C# parser.\nexport const dotNetWhitespace = '[\\\\u0009-\\\\u000d\\\\u0020\\\\u0085\\\\u00a0\\\\u1680\\\\u2000-\\\\u200a\\\\u2028\\\\u2029\\\\u202f\\\\u205f\\\\u3000]';\n\n// .NET Regex classifies UTF-16 code units: supplementary letters are not \\w. Use this\n// scoped helper only in newly modeled grammar, without changing established Legacy parsers.\nexport function nativePattern(source: string): RegExp {\n const word = `(?=[\\\\u0000-\\\\uFFFF])[${wordCharacters}]`;\n const classes = source.replace(/\\[([^\\]]*\\\\w[^\\]]*)\\]/g, (_match, body: string) => {\n const rest = body.replaceAll('\\\\w', '');\n return rest === '' ? `(?:${word})` : `(?:${word}|[${rest}])`;\n });\n return new RegExp(classes.replaceAll('\\\\w', `(?:${word})`), 'u');\n}\n\n// Builds a regular expression from a pattern written the way the C# parser writes it. In .NET '\\w' is a\n// Unicode word character; in JavaScript it is ASCII only, so it is rewritten to the same Unicode classes\n// and the expression runs in Unicode mode. '\\d' is likewise any Unicode decimal digit. Copying a C# pattern verbatim therefore keeps its meaning.\nexport function pattern(source: string): RegExp {\n let result = '';\n let inClass = false;\n for (let index = 0; index < source.length; index++) {\n const current = source[index];\n if (current === '\\\\' && index + 1 < source.length) {\n const next = source[index + 1];\n index++;\n if (next === 'w') {\n result += inClass ? wordCharacters : `[${wordCharacters}]`;\n } else if (next === 'd') {\n result += '\\\\p{Nd}';\n } else {\n result += `\\\\${next}`;\n }\n continue;\n }\n if (current === '[' && !inClass) {\n inClass = true;\n } else if (current === ']' && inClass) {\n inClass = false;\n }\n result += current;\n }\n return new RegExp(result, 'u');\n}\n"],"mappings":"A,qDAGA,MAAMA,EAAiB,8BAIVC,EAAmB,kGAIhC,SAAgB,cAAc,EAAwB,CAClD,IAAMC,EAAO,yBAAyBF,EAAe,GAC/CG,EAAUC,EAAO,QAAQ,0BAA2B,EAAQ,IAAiB,CAC/E,IAAMC,EAAOC,EAAK,WAAW,MAAO,EAAE,EACtC,OAAOD,IAAS,GAAK,MAAMH,EAAK,GAAK,MAAMA,EAAK,IAAIG,EAAK,GAC7D,CAAC,EACD,OAAO,IAAI,OAAOF,EAAQ,WAAW,MAAO,MAAMD,EAAK,EAAE,EAAG,GAAG,CACnE,CAKA,SAAgB,QAAQ,EAAwB,CAC5C,IAAIK,EAAS,GACTC,EAAU,GACd,IAAK,IAAIC,EAAQ,EAAGA,EAAQL,EAAO,OAAQ,IAAS,CAChD,IAAMM,EAAUN,EAAOK,GACvB,GAAIC,IAAY,MAAQD,EAAQ,EAAIL,EAAO,OAAQ,CAC/C,IAAMO,EAAOP,EAAOK,EAAQ,GAC5B,IACA,AAKIF,GALAI,IAAS,IACCH,EAAUR,EAAiB,IAAIA,EAAe,GACjDW,IAAS,IACN,UAEA,KAAKA,GAGvB,MACID,IAAY,KAAO,CAACF,EACpB,EAAU,GACHE,IAAY,KAAOF,IAC1B,EAAU,IAEd,GAAUE,CACd,CACA,OAAO,IAAI,OAAOH,EAAQ,GAAG,CACjC,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DiagnosticCodes as e}from"./Diagnostics/DiagnosticCodes.js";import"./Parsing/checkPortableMatchPattern.js";import{unescapeString as t}from"./Text/StringLiteral.js";import{pattern as n}from"./Text/patterns.js";import{sourceLocation as r}from"./Diagnostics/SourceLocation.js";import{eventDeclarations as i}from"./Syntax/EventDeclarations.js";import{operationDeclarations as a}from"./Syntax/Operations.js";import{AuthoringProductionResolver as o}from"./Syntax/AuthoringProductionResolver.js";import{dependencySourcesOf as s}from"./Syntax/DependencySources.js";import{ScreenplaySyntaxWalker as c}from"./Syntax/ScreenplaySyntaxWalker.js";import{isExactNumberToken as l,parseExactNumber as u}from"./Syntax/ExactNumber.js";import{diagnosticKeyword as d,diagnosticText as f}from"./Diagnostics/DiagnosticArgument.js";import{EventSourceCatalog as p}from"./Syntax/EventSourceCatalog.js";import{implicitDestination as m,requiresExplicitDestinations as h}from"./Syntax/ProductionDestinations.js";import{InvalidExactNumber as g,canonicalExactText as _,exactIsIntegral as v}from"./Syntax/ExactMathFacts.js";import{responseCommandResolver as y}from"./Parsing/ResponseCommandResolver.js";import{synthesizePersonaCaller as b}from"./Syntax/PersonaCallers.js";import"./Syntax/SpecificationCaseOrigin.js";import"./
|
|
1
|
+
import{DiagnosticCodes as e}from"./Diagnostics/DiagnosticCodes.js";import"./Parsing/checkPortableMatchPattern.js";import{unescapeString as t}from"./Text/StringLiteral.js";import{pattern as n}from"./Text/patterns.js";import{sourceLocation as r}from"./Diagnostics/SourceLocation.js";import{eventDeclarations as i}from"./Syntax/EventDeclarations.js";import{operationDeclarations as a}from"./Syntax/Operations.js";import{AuthoringProductionResolver as o}from"./Syntax/AuthoringProductionResolver.js";import{dependencySourcesOf as s}from"./Syntax/DependencySources.js";import{ScreenplaySyntaxWalker as c}from"./Syntax/ScreenplaySyntaxWalker.js";import{isExactNumberToken as l,parseExactNumber as u}from"./Syntax/ExactNumber.js";import{diagnosticKeyword as d,diagnosticText as f}from"./Diagnostics/DiagnosticArgument.js";import{EventSourceCatalog as p}from"./Syntax/EventSourceCatalog.js";import{implicitDestination as m,requiresExplicitDestinations as h}from"./Syntax/ProductionDestinations.js";import{InvalidExactNumber as g,canonicalExactText as _,exactIsIntegral as v}from"./Syntax/ExactMathFacts.js";import{responseCommandResolver as y}from"./Parsing/ResponseCommandResolver.js";import{synthesizePersonaCaller as b}from"./Syntax/PersonaCallers.js";import"./Syntax/SpecificationCaseOrigin.js";import{applyQuickFixEdits as x,isQuickFixDiagnostic as S,legacyOptionalTypeLength as C,prepareQuickFixes as w}from"./Authoring/QuickFixes.js";import{DeclaredDependencyTargets as T}from"./Dependencies/DeclaredDependencyTargets.js";import{describePlacement as E,documentPlacement as D,isDocumentPlacement as O,isWithinOrSame as k,samePlacement as A}from"./Files/PlayPlacement.js";import"./Syntax/InvalidSyntaxJson.js";import"./Syntax/SourceOptions.js";import"./Completeness/ModelCompleteness.js";import{eventBodyReservedWords as j}from"./Text/ReservedWords.js";import{sliceTypes as M}from"./Syntax/Structure.js";import{consumedEvents as N,eventsSourceKind as P,fromSetting as F,isEventsSource as I}from"./Syntax/CaptureEventsSource.js";import{hasWildcard as L,matchesPlayPattern as R,normalizePlayPath as z,resolvePlayPattern as B,staticFolderOf as V}from"./Files/PlayGlob.js";import"./Dependencies/index.js";import{dependencyKinds as H}from"./Dependencies/DependencyKind.js";import{InvalidDependencyQuery as U}from"./Dependencies/InvalidDependencyQuery.js";import{SliceReferenceCollector as W,buildingReadModelReferences as G,referenceClassifications as K,sliceReferences as q}from"./Dependencies/SliceReferences.js";import{stronglyConnectedGroups as J}from"./Dependencies/StronglyConnectedGroups.js";import{DependencyGraph as Y}from"./Dependencies/DependencyGraph.js";import{streamIdFailureMessage as X,tryFormatInteger as Z,tryFormatText as Q,tryFormatUuidText as $}from"./Syntax/StreamIdFormatter.js";import"./Syntax/index.js";import{discoverImports as ee,parseForAuthoring as te}from"./ScreenplayCompiler.js";import"./ScreenActionSubjects.js";import{EventSourceReadConfidence as ne}from"./Syntax/EventSourceReadConfidence.js";import"./Parsing/SpecificationCommandExamples.js";import{inMemoryDocumentSource as re}from"./Files/PlayDocumentSource.js";import{isSourceStreamName as ie,isSourceStreamTypeName as ae,sourceStreamPattern as oe}from"./Text/SourceStreamNames.js";import"./Files/AuthoredOrder.js";import"./Files/OrderingRoot.js";import"./Syntax/SyntaxJson.js";import"./Files/TimelineOrder.js";import{mergeDocuments as se}from"./Files/PlayFolderMerge.js";import{assembleApplication as ce,compileApplication as le,parsePlacedDocuments as ue}from"./Files/PlayApplicationAssembly.js";import{resolveImports as de}from"./Files/PlayImports.js";export{o as AuthoringProductionResolver,T as DeclaredDependencyTargets,Y as DependencyGraph,e as DiagnosticCodes,p as EventSourceCatalog,ne as EventSourceReadConfidence,U as InvalidDependencyQuery,g as InvalidExactNumber,c as ScreenplaySyntaxWalker,W as SliceReferenceCollector,x as applyQuickFixEdits,ce as assembleApplication,G as buildingReadModelReferences,_ as canonicalExactText,le as compileApplication,N as consumedEvents,H as dependencyKinds,s as dependencySourcesOf,E as describePlacement,d as diagnosticKeyword,f as diagnosticText,ee as discoverImports,D as documentPlacement,j as eventBodyReservedWords,i as eventDeclarations,P as eventsSourceKind,v as exactIsIntegral,F as fromSetting,L as hasWildcard,m as implicitDestination,re as inMemoryDocumentSource,O as isDocumentPlacement,I as isEventsSource,l as isExactNumberToken,S as isQuickFixDiagnostic,ie as isSourceStreamName,ae as isSourceStreamTypeName,k as isWithinOrSame,C as legacyOptionalTypeLength,R as matchesPlayPattern,se as mergeDocuments,z as normalizePlayPath,a as operationDeclarations,u as parseExactNumber,te as parseForAuthoring,ue as parsePlacedDocuments,n as pattern,w as prepareQuickFixes,K as referenceClassifications,h as requiresExplicitDestinations,de as resolveImports,B as resolvePlayPattern,y as responseCommandResolver,A as samePlacement,q as sliceReferences,M as sliceTypes,r as sourceLocation,oe as sourceStreamPattern,V as staticFolderOf,X as streamIdFailureMessage,J as stronglyConnectedGroups,b as synthesizePersonaCaller,Z as tryFormatInteger,Q as tryFormatText,$ as tryFormatUuidText,t as unescapeString};
|