@blue-labs/language 4.1.2 → 5.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Blue-B7SYp5QY.mjs +8237 -0
- package/dist/Blue-CTQkRrnu.js +98 -0
- package/dist/conformance.d.ts +3 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +6 -0
- package/dist/conformance.mjs +1258 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -27
- package/dist/index.mjs +679 -6799
- package/dist/lib/Blue.d.ts +5 -2
- package/dist/lib/Blue.d.ts.map +1 -1
- package/dist/lib/conformance/BlueConformanceSuiteRunner.d.ts +68 -0
- package/dist/lib/conformance/BlueConformanceSuiteRunner.d.ts.map +1 -0
- package/dist/lib/conformance/BlueLanguageConformanceReport.d.ts +37 -0
- package/dist/lib/conformance/BlueLanguageConformanceReport.d.ts.map +1 -0
- package/dist/lib/conformance/JavaBlueIdCalculator.d.ts +19 -0
- package/dist/lib/conformance/JavaBlueIdCalculator.d.ts.map +1 -0
- package/dist/lib/conformance/conformance-expect.d.ts +17 -0
- package/dist/lib/conformance/conformance-expect.d.ts.map +1 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/.gitkeep +1 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_double_1e0.yaml +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_double_negative_zero.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_double_overflow_rejected.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_empty_list.yaml +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_empty_object_list_element_rejected.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_empty_placeholder.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_integer_1_vs_double_1_0.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_invalid_this_placeholder_rejected.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_large_integer_quoted_explicit_integer.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_list_sugar_equivalence.yaml +12 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_malformed_empty_rejected.yaml +8 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_null_list_element_rejected.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_object_field_null_removal.yaml +8 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_payload_only_scalar_typed_identity.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_plain_blueid_validation.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_pos_rejected.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_previous_invalid_blueid_rejected.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_replace_rejected.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_root_empty_object.yaml +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_root_list.yaml +8 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_root_null_rejected.yaml +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_root_pure_reference.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_root_scalar.yaml +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_scalar_sugar_equivalence.yaml +8 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_type_alias_rejected_in_direct_blueid_input.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/blueid/B_unquoted_large_integer_rejected.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/circular/C_circular_reference_set_ids.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/circular/C_duplicate_preliminary_ids_deterministic_or_rejected.yaml +12 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/circular/C_this_placeholder_rejected_outside_cyclic_api.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/circular/C_three_document_cycle_stable_order.yaml +18 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/circular/C_zero_blueid_rejected_in_final_input.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/lint/L_no_profile_era_language_conformance_terms.yaml +45 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/manifest.yaml +234 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_collapse_does_not_produce_mixed_blueid.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_collapse_nested_subtree_preserves_node_blueid.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_collapse_preserves_node_blueid.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_expand_missing_nested_content_fails.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_expand_nested_reference_preserves_node_blueid.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_expand_preserves_node_blueid.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_expand_wrong_nested_provider_content_fails.yaml +12 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_provider_missing_content_fails.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/provider/F_provider_wrong_blueid_rejected.yaml +13 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/changingCoreTypeDescriptionChangesBlueId.yaml +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryBooleanNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryDictionaryNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryDoubleNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryIntegerNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryListNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/registry/coreRegistryTextNodeHashesToPublishedBlueId.yaml +7 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_blue_imports.yaml +15 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_blue_imports_type_itemType_keyType_valueType.yaml +24 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_canonical_overlay_no_previous_no_pos.yaml +18 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_canonicalization_deterministic_for_same_resolved_view.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_child_field_labels_materialize_until_overridden.yaml +26 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_contracts_canonicalization_deterministic.yaml +18 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_contracts_merge_as_content.yaml +21 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_core_type_compatibility_nominal_by_blueid.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_enum_integer_vs_double.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_inherited_append_only_policy.yaml +16 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_inherited_item_type.yaml +13 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_inherited_keyType_valueType.yaml +16 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_instance_field_kept.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_provider_reference_canonicalizes_back.yaml +13 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_provider_reference_with_overlay_keeps_overlay.yaml +16 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_double_multiple_of_exact.yaml +17 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_double_multiple_of_rejects_decimal_approximation.yaml +12 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_enum_order_and_duplicates_canonical.yaml +26 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_integer_multiple_of_lcm_merge.yaml +17 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_large_integer_minimum_with_type_alias.yaml +15 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_value_shapes.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_schema_wrong_kind_keywords_rejected.yaml +10 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_source_empty_object_list_to_empty.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_source_null_list_to_empty.yaml +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_source_recursive_empty_object_list_to_empty.yaml +15 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_top_level_type_name_description_not_inherited.yaml +21 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_type_aliases_removed_from_canonical_overlay.yaml +15 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_type_derived_field_removed.yaml +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/fixtures/resolver/R_view_path_root_is_empty_string.yaml +25 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/language/1.0/spec.md +2932 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/Boolean.blue +6 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/Dictionary.blue +17 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/Double.blue +12 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/Integer.blue +11 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/List.blue +14 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/Text.blue +9 -0
- package/dist/lib/conformance/fixtures/blue-language-1.0/registry/blue-language-1.0/manifest.yaml +8 -0
- package/dist/lib/errors/BlueError.d.ts +23 -1
- package/dist/lib/errors/BlueError.d.ts.map +1 -1
- package/dist/lib/identity/CyclicSetIdentityService.d.ts +1 -1
- package/dist/lib/identity/CyclicSetIdentityService.d.ts.map +1 -1
- package/dist/lib/identity/SemanticIdentityService.d.ts.map +1 -1
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/mapping/ComplexObjectConverter.d.ts.map +1 -1
- package/dist/lib/mapping/ConverterFactory.d.ts.map +1 -1
- package/dist/lib/mapping/ValueConverter.d.ts.map +1 -1
- package/dist/lib/merge/Merger.d.ts +4 -0
- package/dist/lib/merge/Merger.d.ts.map +1 -1
- package/dist/lib/merge/MergingProcessor.d.ts +10 -0
- package/dist/lib/merge/MergingProcessor.d.ts.map +1 -1
- package/dist/lib/merge/processors/DictionaryProcessor.d.ts.map +1 -1
- package/dist/lib/merge/processors/ListProcessor.d.ts +2 -0
- package/dist/lib/merge/processors/ListProcessor.d.ts.map +1 -1
- package/dist/lib/merge/processors/SchemaPropagator.d.ts +13 -0
- package/dist/lib/merge/processors/SchemaPropagator.d.ts.map +1 -0
- package/dist/lib/merge/processors/SchemaVerifier.d.ts +16 -0
- package/dist/lib/merge/processors/SchemaVerifier.d.ts.map +1 -0
- package/dist/lib/merge/processors/SequentialMergingProcessor.d.ts +2 -0
- package/dist/lib/merge/processors/SequentialMergingProcessor.d.ts.map +1 -1
- package/dist/lib/merge/processors/TypeAssigner.d.ts.map +1 -1
- package/dist/lib/merge/processors/ValuePropagator.d.ts.map +1 -1
- package/dist/lib/merge/processors/index.d.ts +2 -0
- package/dist/lib/merge/processors/index.d.ts.map +1 -1
- package/dist/lib/merge/utils/default.d.ts.map +1 -1
- package/dist/lib/model/Node.d.ts +18 -1
- package/dist/lib/model/Node.d.ts.map +1 -1
- package/dist/lib/model/NodeDeserializer.d.ts +5 -0
- package/dist/lib/model/NodeDeserializer.d.ts.map +1 -1
- package/dist/lib/model/ResolvedNode.d.ts.map +1 -1
- package/dist/lib/model/Schema.d.ts +14 -0
- package/dist/lib/model/Schema.d.ts.map +1 -0
- package/dist/lib/model/index.d.ts +1 -0
- package/dist/lib/model/index.d.ts.map +1 -1
- package/dist/lib/preprocess/Preprocessor.d.ts +8 -1
- package/dist/lib/preprocess/Preprocessor.d.ts.map +1 -1
- package/dist/lib/provider/InMemoryNodeProvider.d.ts.map +1 -1
- package/dist/lib/provider/RepositoryBasedNodeProvider.d.ts +2 -0
- package/dist/lib/provider/RepositoryBasedNodeProvider.d.ts.map +1 -1
- package/dist/lib/provider/VerifyingNodeProvider.d.ts +14 -0
- package/dist/lib/provider/VerifyingNodeProvider.d.ts.map +1 -0
- package/dist/lib/repository/BuiltinRuntimeTypes.d.ts +360 -0
- package/dist/lib/repository/BuiltinRuntimeTypes.d.ts.map +1 -0
- package/dist/lib/repository/RepositoryContentCanonicalizer.d.ts.map +1 -1
- package/dist/lib/repository/RepositoryRuntime.d.ts +1 -1
- package/dist/lib/repository/RepositoryRuntime.d.ts.map +1 -1
- package/dist/lib/snapshot/CanonicalOverlayPatchEngine.d.ts +6 -0
- package/dist/lib/snapshot/CanonicalOverlayPatchEngine.d.ts.map +1 -0
- package/dist/lib/snapshot/FrozenNode.d.ts +80 -0
- package/dist/lib/snapshot/FrozenNode.d.ts.map +1 -0
- package/dist/lib/snapshot/FrozenNodeToBlueIdInput.d.ts +5 -0
- package/dist/lib/snapshot/FrozenNodeToBlueIdInput.d.ts.map +1 -0
- package/dist/lib/snapshot/ResolvedReferenceCache.d.ts +8 -0
- package/dist/lib/snapshot/ResolvedReferenceCache.d.ts.map +1 -0
- package/dist/lib/snapshot/ResolvedSnapshot.d.ts +8 -0
- package/dist/lib/snapshot/ResolvedSnapshot.d.ts.map +1 -0
- package/dist/lib/snapshot/index.d.ts +6 -0
- package/dist/lib/snapshot/index.d.ts.map +1 -0
- package/dist/lib/types/BlueRepository.d.ts +1 -1
- package/dist/lib/utils/BlueIdCalculator.d.ts +19 -1
- package/dist/lib/utils/BlueIdCalculator.d.ts.map +1 -1
- package/dist/lib/utils/BlueIds.d.ts +9 -1
- package/dist/lib/utils/BlueIds.d.ts.map +1 -1
- package/dist/lib/utils/BlueNumbers.d.ts +7 -0
- package/dist/lib/utils/BlueNumbers.d.ts.map +1 -0
- package/dist/lib/utils/ListControls.d.ts.map +1 -1
- package/dist/lib/utils/MergeReverser.d.ts +10 -0
- package/dist/lib/utils/MergeReverser.d.ts.map +1 -1
- package/dist/lib/utils/NodePatch/patch-utils.d.ts +1 -1
- package/dist/lib/utils/NodeProviderWrapper.d.ts +4 -0
- package/dist/lib/utils/NodeProviderWrapper.d.ts.map +1 -1
- package/dist/lib/utils/NodeToBlueIdInput.d.ts +34 -0
- package/dist/lib/utils/NodeToBlueIdInput.d.ts.map +1 -0
- package/dist/lib/utils/NodeToMapListOrValue.d.ts.map +1 -1
- package/dist/lib/utils/NodeTransformer.d.ts.map +1 -1
- package/dist/lib/utils/NodeTypeMatcher.d.ts +27 -1
- package/dist/lib/utils/NodeTypeMatcher.d.ts.map +1 -1
- package/dist/lib/utils/NodeTypes.d.ts +1 -0
- package/dist/lib/utils/NodeTypes.d.ts.map +1 -1
- package/dist/lib/utils/Properties.d.ts +97 -10
- package/dist/lib/utils/Properties.d.ts.map +1 -1
- package/dist/lib/utils/TypeSchema.d.ts +0 -1
- package/dist/lib/utils/TypeSchema.d.ts.map +1 -1
- package/dist/lib/utils/index.d.ts +4 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/schema/jsonBlue.d.ts +1 -1
- package/dist/schema/utils.d.ts.map +1 -1
- package/dist/utils/yamlBlue/type/float.d.ts.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("node:fs"),u=require("node:path"),oe=require("node:crypto"),q=require("node:url"),ae=require("js-yaml"),N=require("node:assert/strict"),o=require("./Blue-CTQkRrnu.js");require("big.js");const x=require("@blue-labs/repository-contract");var B=typeof document<"u"?document.currentScript:null;class ue{static toBlueIdInput(e){return e.isListElementContext()?o.NodeToBlueIdInput.getListElement(e.toNode(),0):o.NodeToBlueIdInput.get(e.toNode())}}class d{constructor(e,r=!1,i=!1,n=!0,a=!1){this.strictCanonical=r,this.resolvedStructural=i,this.strictBlueIdValidation=n,this.listElementContext=a,this.name=e.getName(),this.description=e.getDescription(),this.type=this.freezeChild(e.getType(),!1),this.itemType=this.freezeChild(e.getItemType(),!1),this.keyType=this.freezeChild(e.getKeyType(),!1),this.valueType=this.freezeChild(e.getValueType(),!1),this.value=e.getValue(),this.items=this.freezeItems(e.getItems()),this.properties=this.freezeProperties(e.getProperties()),this.contracts=this.freezeChild(e.getContractsNode(),!1),this.referenceBlueId=e.getReferenceBlueId(),this.schema=e.getSchema()?.clone(),this.mergePolicy=e.getMergePolicy(),this.previousBlueId=e.getPreviousBlueId(),this.position=e.getPosition(),this.blue=this.freezeChild(e.getBlue(),!1),this.inlineValue=e.isInlineValue(),this.validatePayloadShape(),this.blueIdValue=this.computeBlueId()}name;description;type;itemType;keyType;valueType;value;items;properties;contracts;referenceBlueId;schema;mergePolicy;previousBlueId;position;blue;inlineValue;blueIdValue;static empty(){return new d(new o.BlueNode,!0,!1)}static fromNode(e){return new d(e,!0,!1)}static fromResolvedNode(e){return new d(e,!1,!0,!1)}static fromUncheckedCanonicalNode(e){return new d(e,!0,!1,!1)}static calculateBlueId(e){return o.BlueIdCalculator.calculateBlueIdSync(e.map(r=>r.toNode()))}toNode(){const e=new o.BlueNode().setName(this.name).setDescription(this.description).setType(this.type?.toNode()).setItemType(this.itemType?.toNode()).setKeyType(this.keyType?.toNode()).setValueType(this.valueType?.toNode()).setReferenceBlueId(this.referenceBlueId).setSchema(this.schema?.clone()).setMergePolicy(this.mergePolicy).setPreviousBlueId(this.previousBlueId).setPosition(this.position).setBlue(this.blue?.toNode()).setInlineValue(this.inlineValue);return this.value!==void 0&&e.setValue(this.value),this.items!==void 0&&e.setItems(this.items.map(r=>r.toNode())),this.properties!==void 0&&e.setProperties(Object.fromEntries(Object.entries(this.properties).map(([r,i])=>[r,i.toNode()]))),this.contracts!==void 0&&e.setContractsNode(this.contracts.toNode()),e}blueId(){return this.blueIdValue}getName(){return this.name}getDescription(){return this.description}getType(){return this.type}getItemType(){return this.itemType}getKeyType(){return this.keyType}getValueType(){return this.valueType}getValue(){return this.value}getItems(){return this.items}getProperties(){return this.properties}getContracts(){return this.contracts}getReferenceBlueId(){return this.referenceBlueId}getSchema(){return this.schema?.clone()}getMergePolicy(){return this.mergePolicy}getPreviousBlueId(){return this.previousBlueId}getPosition(){return this.position}getBlue(){return this.blue}isInlineValue(){return this.inlineValue}property(e){return e===x.OBJECT_CONTRACTS?this.contracts:this.properties?.[e]}item(e){return e>=0?this.items?.[e]:void 0}at(e){const r=typeof e=="string"?this.pointerSegments(e):e.map(String);return d.atSegments(this,r)}static atSegments(e,r){let i=e;for(const n of r){if(i===void 0)return;i.items!==void 0&&n!==x.OBJECT_CONTRACTS?i=i.item(d.parseArrayIndex(n)):i=i.property(n)}return i}pathIndex(){const e=new Map;return this.indexPaths("/",e),e}hasItems(){return this.items!==void 0}hasProperties(){return this.properties!==void 0}isReferenceOnly(){return this.referenceBlueId!==void 0&&this.name===void 0&&this.description===void 0&&this.type===void 0&&this.itemType===void 0&&this.keyType===void 0&&this.valueType===void 0&&(this.value===void 0||this.value===null)&&this.items===void 0&&this.properties===void 0&&this.contracts===void 0&&this.schema===void 0&&this.mergePolicy===void 0&&this.previousBlueId===void 0&&this.position===void 0&&this.blue===void 0}isPreviousOnly(){return this.previousBlueId!==void 0&&this.name===void 0&&this.description===void 0&&this.type===void 0&&this.itemType===void 0&&this.keyType===void 0&&this.valueType===void 0&&(this.value===void 0||this.value===null)&&this.items===void 0&&this.properties===void 0&&this.contracts===void 0&&this.schema===void 0&&this.mergePolicy===void 0&&this.position===void 0&&this.blue===void 0&&this.referenceBlueId===void 0}isStrictCanonical(){return this.strictCanonical}isResolvedStructural(){return this.resolvedStructural}isStrictBlueIdValidation(){return this.strictBlueIdValidation}isListElementContext(){return this.listElementContext}isEmptyNode(){return this.name===void 0&&this.description===void 0&&this.type===void 0&&this.itemType===void 0&&this.keyType===void 0&&this.valueType===void 0&&(this.value===void 0||this.value===null)&&this.items===void 0&&this.properties===void 0&&this.contracts===void 0&&this.referenceBlueId===void 0&&this.schema===void 0&&this.mergePolicy===void 0&&this.previousBlueId===void 0&&this.position===void 0&&this.blue===void 0}withProperty(e,r){const i=this.toNode();if(e===x.OBJECT_CONTRACTS)i.setContractsNode(this.nodeOrUndefined(r));else if(r===void 0)i.removeProperty(e);else{const n=r instanceof d?r.toNode():r.clone();i.addProperty(e,n)}return new d(i,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,this.listElementContext)}withItems(e){const r=this.toNode();return r.setItems(e.map(i=>i instanceof d?i.toNode():i.clone())),new d(r,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,this.listElementContext)}withoutPosition(){if(this.position===void 0)return this;const e=this.toNode();return e.setPosition(void 0),new d(e,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,this.listElementContext)}freezeChild(e,r){return e===void 0?void 0:new d(e,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,r)}freezeItems(e){if(e!==void 0)return Object.freeze(e.map(r=>new d(r,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,!0)))}freezeProperties(e){if(e===void 0)return;const r=Object.entries(e).flatMap(([i,n])=>{if(i===x.OBJECT_CONTRACTS)return[];const a=new d(n,this.strictCanonical,this.resolvedStructural,this.strictBlueIdValidation,!1);return this.strictCanonical&&a.isEmptyNode()?[]:[[i,a]]});return r.length===0?void 0:Object.freeze(Object.fromEntries(r))}validatePayloadShape(){if([this.value!==void 0&&this.value!==null,this.items!==void 0,this.properties!==void 0&&Object.keys(this.properties).length>0].filter(Boolean).length>1)throw new Error("A Blue node may contain only one payload kind: value, items, or object fields.");if(this.strictCanonical&&this.referenceBlueId!==void 0&&!this.isReferenceOnly())throw new Error('"blueId" nodes must be reference-only and cannot contain sibling fields.');if(this.strictCanonical&&this.previousBlueId!==void 0){if(!this.isPreviousOnly())throw new Error('"$previous" list anchors must be single-key list items.');if(!this.listElementContext)throw new Error('"$previous" is valid only as the first list item in direct BlueId input.')}if(this.strictCanonical&&this.blue!==void 0)throw new Error('"blue" is a preprocessing directive and must not appear in canonical BlueId input.');if(this.strictCanonical&&this.position!==void 0)throw new Error('"$pos" overlays are not valid direct BlueId input.')}computeBlueId(){return this.strictCanonical?this.strictBlueIdValidation?o.BlueIdCalculator.calculateBlueIdInputSync(ue.toBlueIdInput(this)):o.BlueIdCalculator.calculateBlueIdSync(this.toNode()):this.isReferenceOnly()?this.referenceBlueId:o.BlueIdCalculator.calculateBlueIdWithResolvedBlueIdMetadataSync(this.toNode())}nodeOrUndefined(e){if(e!==void 0)return e instanceof d?e.toNode():e.clone()}indexPaths(e,r){r.set(e,this),this.items?.forEach((i,n)=>i.indexPaths(this.appendPointer(e,String(n)),r)),Object.entries(this.properties??{}).forEach(([i,n])=>n.indexPaths(this.appendPointer(e,i),r)),this.contracts?.indexPaths(this.appendPointer(e,x.OBJECT_CONTRACTS),r)}pointerSegments(e){return e===""||e==="/"?[]:e.replace(/^\//,"").split("/").filter(r=>r.length>0).map(r=>r.replace(/~1/g,"/").replace(/~0/g,"~"))}appendPointer(e,r){const i=r.replace(/~/g,"~0").replace(/\//g,"~1");return e==="/"?`/${i}`:`${e}/${i}`}static parseArrayIndex(e){const r=Number(e);return Number.isInteger(r)&&r>=0?r:-1}}const O="sha256:3387cb4b6626fc56cec91d584b2df7f37c229e396dee990750ac50e762a1bc1d",k=77;class M{constructor(e,r,i,n,a,E,y){this.specVersion=e,this.fixturePackageIdentity=r,this.passedIds=i,this.failed=n,this.identityMatches=a,this.requiredCoverage=E,this.exactFixtureSet=y}fixturePackageIdentityMatchesFixtureFiles(){return this.identityMatches}hasRequiredFixtureCoverage(){return this.requiredCoverage}hasExactRequiredFixtureSet(){return this.exactFixtureSet}passedFixtureIds(){return[...this.passedIds]}failedFixtureIds(){return this.failed.map(e=>e.fixtureId)}failures(){return[...this.failed]}}const _=u.dirname(q.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:B&&B.tagName.toUpperCase()==="SCRIPT"&&B.src||new URL("conformance.js",document.baseURI).href)),ce=ge([u.join(_,"fixtures/blue-language-1.0"),u.join(_,"lib/conformance/fixtures/blue-language-1.0"),u.resolve(process.cwd(),"libs/language/src/lib/conformance/fixtures/blue-language-1.0")]),S=u.join(ce,"fixtures"),le=u.join(S,"manifest.yaml");function K(){return he()===O}function J(){return C().length===k}function z(){const t=new Set(C().map(r=>r.path)),e=pe(S).filter(r=>r!=="manifest.yaml");return e.length===t.size&&e.every(r=>t.has(r))}function C(){const t=de();if(!Array.isArray(t.fixtures))throw new Error('Fixture manifest field "fixtures" must be a list.');return t.fixtures.map(e=>{if(!R(e))throw new Error("Fixture manifest entries must be objects.");const r=H(b(e,"path"));return{id:b(e,"id"),category:b(e,"category"),path:b(e,"path"),operation:R(r)?ye(r,"operation"):void 0}})}function de(){return H("manifest.yaml")}function H(t){const e=ae.load(f.readFileSync(u.join(S,t),"utf8"));if(!R(e))throw new Error(`Fixture ${t} must be an object.`);return e}function he(){const t=C(),e=oe.createHash("sha256");e.update(`manifest.yaml
|
|
2
|
+
`,"utf8"),e.update(fe(f.readFileSync(le,"utf8")),"utf8");for(const r of t)e.update(`
|
|
3
|
+
--- ${r.path}
|
|
4
|
+
`,"utf8"),e.update(G(f.readFileSync(u.join(S,r.path),"utf8")),"utf8");return`sha256:${e.digest("hex")}`}function fe(t){const e=G(t);if(!/^fixturePackageIdentity:.*$/m.test(e))throw new Error("Manifest is missing fixturePackageIdentity line.");return e.replace(/^fixturePackageIdentity:.*$/m,'fixturePackageIdentity: ""')}function G(t){return t.replace(/\r\n/g,`
|
|
5
|
+
`).replace(/\r/g,`
|
|
6
|
+
`)}function pe(t){return X(t).filter(e=>e.endsWith(".yaml")||e.endsWith(".yml")).map(e=>u.relative(t,e).split(u.sep).join("/")).sort()}function X(t){return f.readdirSync(t,{withFileTypes:!0}).flatMap(e=>{const r=u.join(t,e.name);return e.isDirectory()?X(r):[r]})}function b(t,e){const r=t[e];if(r==null)throw new Error(`Fixture field "${e}" is required.`);return String(r)}function ye(t,e){const r=t[e];return r==null?void 0:String(r)}function R(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ge(t){for(const e of t)if(f.existsSync(e)&&f.statSync(e).isDirectory())return e;throw new Error(`Blue Language conformance fixtures are missing. Checked: ${t.join(", ")}`)}function l(t,e){return new Ie(t,e)}class Ie{constructor(e,r){this.actual=e,this.message=r,this.not=new me(e,r)}not;toBe(e){N.equal(this.actual,e,this.message)}toEqual(e){N.deepEqual(this.actual,e,this.message)}}class me{constructor(e,r){this.actual=e,this.message=r}toBe(e){N.notEqual(this.actual,e,this.message)}}const ve=new Set([o.OBJECT_NAME,o.OBJECT_DESCRIPTION,o.OBJECT_VALUE]);class h{static hashProvider=new o.Base58Sha256Provider;static calculateBlueIdSync(e){return this.calculateInputSync(o.NodeToBlueIdInput.get(e))}static calculateBlueIdAllowingCyclicPlaceholdersSync(e){return this.calculateInputSync(o.NodeToBlueIdInput.getAllowingCyclicPlaceholders(e))}static calculateListBlueIdSync(e){return this.calculateInputSync(e.map((r,i)=>o.NodeToBlueIdInput.getListElement(r,i)))}static calculateListBlueIdAllowingCyclicPlaceholdersSync(e){return this.calculateInputSync(e.map((r,i)=>o.NodeToBlueIdInput.getListElementAllowingCyclicPlaceholders(r,i)))}static calculateInputSync(e){return this.calculateCleaned(this.cleanRoot(e))}static calculateCleaned(e){return this.isScalar(e)?this.hashProvider.applySync(e):Array.isArray(e)?this.calculateList(e):this.calculateMap(e)}static calculateMap(e){if(Object.keys(e).length===1&&typeof e[o.OBJECT_BLUE_ID]=="string")return e[o.OBJECT_BLUE_ID];const r={};for(const i of Object.keys(e).sort()){const n=e[i];ve.has(i)?r[i]=n:r[i]={[o.OBJECT_BLUE_ID]:this.calculateCleaned(n)}}return this.hashProvider.applySync(r)}static calculateList(e){let r=this.hashProvider.applySync({$list:"empty"}),i=0;e.length>0&&this.isPreviousControl(e[0])&&(r=this.previousBlueId(e[0]),i=1);for(let n=i;n<e.length;n++){const a=this.calculateCleaned(e[n]);r=this.hashProvider.applySync({$listCons:{elem:{[o.OBJECT_BLUE_ID]:a},prev:{[o.OBJECT_BLUE_ID]:r}}})}return r}static cleanRoot(e){if(e==null)throw new Error("Root null is not valid BlueId input.");if(this.isScalar(e))return e;if(Array.isArray(e))return e.map(i=>this.cleanRoot(i));const r={};for(const[i,n]of Object.entries(e)){const a=this.cleanObjectField(n);a!==void 0&&(r[i]=a)}return r}static cleanObjectField(e){if(e==null)return;if(this.isScalar(e))return e;if(Array.isArray(e))return e.map(i=>this.cleanRoot(i));const r={};for(const[i,n]of Object.entries(e)){const a=this.cleanObjectField(n);a!==void 0&&(r[i]=a)}return Object.keys(r).length===0?void 0:r}static isPreviousControl(e){if(typeof e!="object"||e===null||Array.isArray(e)||Object.keys(e).length!==1)return!1;const r=e[o.LIST_CONTROL_PREVIOUS];return typeof r=="object"&&r!==null&&!Array.isArray(r)&&Object.keys(r).length===1&&typeof r[o.OBJECT_BLUE_ID]=="string"}static previousBlueId(e){return e[o.LIST_CONTROL_PREVIOUS][o.OBJECT_BLUE_ID]}static isScalar(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"}}const $=u.dirname(q.fileURLToPath(typeof document>"u"?require("url").pathToFileURL(__filename).href:B&&B.tagName.toUpperCase()==="SCRIPT"&&B.src||new URL("conformance.js",document.baseURI).href)),T=Ve([u.join($,"fixtures/blue-language-1.0"),u.join($,"lib/conformance/fixtures/blue-language-1.0"),u.resolve(process.cwd(),"libs/language/src/lib/conformance/fixtures/blue-language-1.0")]),W=u.join(T,"fixtures"),Be=u.join(T,"registry","blue-language-1.0"),xe=new Set(["parseSource","parseBlueIdInput","calculateBlueId","calculateCircularSetBlueIds","preprocess","resolve","canonicalize","calculateContentBlueId","calculateSemanticBlueId","expand","collapse","assertSameNodeBlueId","registryNodeHashesToPublishedBlueId","changingRegistryDescriptionChangesBlueId","lintPublishableDocumentation","assertViewPath"]),Ce=new Set(["alsoDifferentFrom","alsoEquivalentTo","assertions","category","description","document","documents","expectBlueIdChanged","expectError","expectedBlueIds","expectedCanonicalOverlay","expectedCollapsed","expectedContentBlueId","expectedErrorCategories","expectedErrorCategory","expectedExpanded","expectedNodeBlueId","expectedParsed","expectedPreprocessed","expectedPublishedBlueId","expectedResolved","forbiddenJoinedTerms","id","input","left","matchRule","mutation","operation","provider","publishableFiles","registryKey","registryKind","requiredHeadings","right","semanticDescriptionIdentityBearing","source"]),Y={Boolean:"Boolean.blue",Dictionary:"Dictionary.blue",Double:"Double.blue",Integer:"Integer.blue",List:"List.blue",Text:"Text.blue"},Ee=F(u.join(W,"manifest.yaml"));if(process.env.CI&&process.env.BLUE_FIXTURE)throw new Error("BLUE_FIXTURE must not be set in CI conformance runs.");const be=Ee.fixtures.filter(t=>{const e=process.env.BLUE_FIXTURE;return e===void 0||t.id.includes(e)});function we(){return[...be]}async function Te(t={}){const e=C(),r=K(),i=J(),n=z(),a=[],E=[];r||a.push(w("manifest","Manifest","identity","identity mismatch")),i||a.push(w("manifest","Manifest","coverage","fixture coverage is incomplete")),n||a.push(w("manifest","Manifest","fixture-set","fixture set is not exact"));for(const y of e)try{Q(y,t.mutateFixture),E.push(y.id)}catch(j){a.push(w(y.id,y.category,y.operation??"unknown",Pe(j),j))}return new M("1.0",O,E,a,r,i,n)}function w(t,e,r,i,n){return{fixtureId:t,category:e,operation:r,message:i,cause:n instanceof Error?n.message:void 0,classification:n instanceof Error?n.name:void 0}}function Pe(t){return t instanceof Error?t.message:String(t)}function Q(t,e){const r=F(u.join(W,t.path)),i=e?.(t,r)??r;l(i.id).toBe(t.id),l(i.category).toBe(t.category),Z(i)}function Z(t){if(Se(t),L(t.operation),t.expectError===!0){Re(t);return}Ne(t);const e=ee(t);switch(t.operation){case"calculateBlueId":case"assertSameNodeBlueId":l(e).toBe(s(t.expectedNodeBlueId,"expectedNodeBlueId")),t.operation==="calculateBlueId"&&(Je(e,t.alsoEquivalentTo),ze(e,t.alsoDifferentFrom));return;case"calculateCircularSetBlueIds":l(e).toEqual(s(t.expectedBlueIds,"expectedBlueIds"));return;case"calculateContentBlueId":case"calculateSemanticBlueId":l(e).toBe(s(t.expectedContentBlueId,"expectedContentBlueId"));return;case"parseSource":case"parseBlueIdInput":m(t.expectedParsed,e);return;case"preprocess":m(t.expectedPreprocessed,e);return;case"resolve":m(t.expectedResolved,e);return;case"canonicalize":m(t.expectedCanonicalOverlay,e),He(e);return;case"expand":m(t.expectedExpanded,e),D(t,e,t.source);return;case"collapse":m(t.expectedCollapsed,e),D(t,e,t.source);return;case"registryNodeHashesToPublishedBlueId":l(e).toBe(s(t.expectedPublishedBlueId,"expectedPublishedBlueId"));return;case"changingRegistryDescriptionChangesBlueId":l(e).toBe(s(t.expectBlueIdChanged,"expectBlueIdChanged"));return;case"lintPublishableDocumentation":case"assertViewPath":l(e).toBe(!0);return}}function ee(t){L(t.operation);const e=new o.Blue({nodeProvider:Ke(t.provider)});switch(t.operation){case"parseSource":return c(s(t.source,"source"));case"parseBlueIdInput":{const r=c(s(t.input,"input"));return h.calculateBlueIdSync(r),r}case"calculateBlueId":{const r=c(s(t.input,"input")),i=h.calculateBlueIdSync(r);return l(d.fromNode(r).blueId()).toBe(i),i}case"calculateCircularSetBlueIds":{const i=c(s(t.documents,"documents")).getItems();if(i===void 0)throw new Error("calculateCircularSetBlueIds requires documents list.");return new o.CyclicSetIdentityService({calculateBlueId:n=>Array.isArray(n)?h.calculateListBlueIdAllowingCyclicPlaceholdersSync(n):h.calculateBlueIdAllowingCyclicPlaceholdersSync(n)}).calculate(i).documentBlueIds}case"preprocess":return e.preprocess(c(s(t.source,"source")));case"resolve":return e.resolve(c(s(t.source,"source")));case"canonicalize":return U(e,c(s(t.source,"source")));case"calculateContentBlueId":case"calculateSemanticBlueId":return h.calculateBlueIdSync(U(e,c(s(t.source,"source"))));case"expand":return v(c(s(t.source,"source")),e);case"collapse":return new o.BlueNode().setReferenceBlueId(h.calculateBlueIdSync(c(s(t.source,"source"))));case"assertSameNodeBlueId":{const r=h.calculateBlueIdSync(c(s(t.left,"left"))),i=h.calculateBlueIdSync(c(s(t.right,"right")));return l(r).toBe(i),r}case"registryNodeHashesToPublishedBlueId":return Ae(t);case"changingRegistryDescriptionChangesBlueId":return je(t);case"lintPublishableDocumentation":return $e(t),!0;case"assertViewPath":return qe(t),!0}}function Se(t){for(const e of Object.keys(t))if(!Ce.has(e))throw new Error(`Unsupported fixture field "${e}" in ${t.id}.`)}function Ne(t){switch(L(t.operation),t.operation){case"calculateBlueId":case"assertSameNodeBlueId":s(t.expectedNodeBlueId,"expectedNodeBlueId");return;case"calculateCircularSetBlueIds":s(t.expectedBlueIds,"expectedBlueIds");return;case"calculateContentBlueId":case"calculateSemanticBlueId":s(t.expectedContentBlueId,"expectedContentBlueId");return;case"parseSource":case"parseBlueIdInput":s(t.expectedParsed,"expectedParsed");return;case"preprocess":s(t.expectedPreprocessed,"expectedPreprocessed");return;case"resolve":s(t.expectedResolved,"expectedResolved");return;case"canonicalize":s(t.expectedCanonicalOverlay,"expectedCanonicalOverlay");return;case"expand":s(t.expectedExpanded,"expectedExpanded");return;case"collapse":s(t.expectedCollapsed,"expectedCollapsed");return;case"registryNodeHashesToPublishedBlueId":s(t.expectedPublishedBlueId,"expectedPublishedBlueId");return;case"changingRegistryDescriptionChangesBlueId":s(t.expectBlueIdChanged,"expectBlueIdChanged");return;case"lintPublishableDocumentation":if(s(t.publishableFiles,"publishableFiles"),(t.requiredHeadings?.length??0)===0&&(t.forbiddenJoinedTerms?.length??0)===0)throw new Error("lintPublishableDocumentation requires at least one lint assertion.");return;case"assertViewPath":s(t.assertions,"assertions");return}}function L(t){if(!xe.has(t))throw new Error(`Unsupported Blue Language fixture operation: ${t}`)}function Re(t){let e;try{ee(t)}catch(r){e=r}if(e===void 0)throw new Error(`Fixture ${t.id} expected an error, but none was thrown.`);Oe(t,e)}function Oe(t,e){const r=[...t.expectedErrorCategory===void 0?[]:[t.expectedErrorCategory],...t.expectedErrorCategories??[]];if(r.length===0)return;const i=Le(e);if(i===void 0||!r.includes(i))throw new Error(`Fixture ${t.id} expected error category ${r.join(" or ")}, got ${i??"unclassified"} from ${te(e)}.`)}function Le(t){const e=o.blueLanguageErrorCategory(t);if(e!==void 0)return e;const r=Fe(t),i=te(t).toLowerCase();if(r==="BLUE_ID_MISMATCH"||i.includes("provider")&&i.includes("blueid")&&(i.includes("mismatch")||i.includes("returned content"))||i.includes("calculated blueid"))return"ProviderBlueIdMismatch";if(i.includes("duplicate preliminary")||i.includes("circular")||i.includes("cyclic"))return"CircularSetError";if(i.includes("$previous"))return"ListControlViolation";if(i.includes("unresolved alias")||i.includes("unresolved type alias")||i.includes("invalid blueid input")||i.includes("invalid blueid")||i.includes("$pos")||i.includes("$replace")||i.includes("empty-object list element")||i.includes("root null"))return"InvalidBlueIdInput";if(i.includes("applies to wrong kind")||i.includes("multiple of")||i.includes("multipleof")||i.includes("minimum")||i.includes("maxlength")||i.includes("minlength"))return"SchemaViolation";if(i.includes("schema")&&(i.includes("vocabulary")||i.includes("schema.required")||i.includes("must be a list")||i.includes("must be an array")||i.includes("must be a boolean")))return"SchemaVocabularyError";if(i.includes("schema"))return"SchemaViolation"}function Fe(t){return A(t)&&typeof t.code=="string"?t.code:void 0}function te(t){return t instanceof Error?`${t.name}: ${t.message}`:String(t)}function Ae(t){const e=re(t),r=ie(e),i=h.calculateBlueIdSync(r);return l(i).toBe(o.CORE_TYPE_NAME_TO_BLUE_ID_MAP[e]),t.semanticDescriptionIdentityBearing===!0&&l(h.calculateBlueIdSync(ne(r,{field:"description",append:" "}))).not.toBe(i),i}function je(t){const e=re(t),r=ie(e),i=ne(r,s(t.mutation,"mutation"));return h.calculateBlueIdSync(r)!==h.calculateBlueIdSync(i)}function re(t){const e=s(t.registryKind,"registryKind");if(e!=="Blue Language core type registry")throw new Error(`Unsupported registry kind: ${e}`);const r=s(t.registryKey,"registryKey");if(!_e(r))throw new Error(`Unsupported core registry key: ${r}`);return r}function _e(t){return t in Y}function ie(t){return Ge(u.join(Be,Y[t]))}function ne(t,e){const r=t.clone();switch(e.field){case"description":return r.setDescription(`${r.getDescription()??""}${e.append??""}`),r;default:throw new Error(`Unsupported registry mutation field: ${e.field}`)}}function $e(t){const e=s(t.publishableFiles,"publishableFiles");for(const r of e){const i=Ue(r);for(const n of t.requiredHeadings??[])if(!i.includes(n))throw new Error(`Publishable file ${r} is missing required heading: ${n}`);for(const n of t.forbiddenJoinedTerms??[]){const a=De(n);if(i.includes(a))throw new Error(`Publishable file ${r} contains forbidden text: ${a}`)}}}function Ue(t){const e=u.resolve(T,t),r=u.relative(T,e);if(r.startsWith("..")||u.isAbsolute(r))throw new Error(`Publishable fixture path escapes fixture package: ${t}`);return f.readFileSync(e,"utf8")}function Ve(t){for(const e of t)if(f.existsSync(e)&&f.statSync(e).isDirectory())return e;throw new Error(`Blue Language conformance fixtures are missing. Checked: ${t.join(", ")}`)}function De(t){if(!Array.isArray(t.tokens)||typeof t.joiner!="string")throw new Error("forbiddenJoinedTerms entries require tokens and joiner.");return t.tokens.join(t.joiner)}function qe(t){const e=P(c(s(t.document,"document"))),r=s(t.assertions,"assertions");for(const i of r){const n=ke(e,i.path);let a=!1;if(i.expectedRoot===!0&&(l(n).toEqual(e),a=!0),i.expectedNode!==void 0&&(l(n).toEqual(P(c(s(i.expectedNode,"expectedNode")))),a=!0),!a)throw new Error(`View path assertion for ${i.path} has no expected value.`)}}function ke(t,e){if(e==="")return t;if(!e.startsWith("/"))throw new Error(`Invalid view path: ${e}`);return e.slice(1).split("/").reduce((r,i)=>{const n=Me(i);if(Array.isArray(r))return/^(0|[1-9]\d*)$/.test(n)?r[Number(n)]:void 0;if(A(r))return r[n]},t)}function Me(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function U(t,e){return new o.MergeReverser().reverseToCanonicalOverlay(t.resolve(t.preprocess(e.clone())))}function Ke(t){if(t==null)return o.createNodeProvider(()=>[]);if(!Array.isArray(t))throw new Error("Fixture provider must be a list.");const e=new Map;for(const r of t){if(!A(r))throw new Error("Fixture provider entry must be an object.");const i=String(r.requestedBlueId??r.blueId??""),n=r.returnedNode??r.node;if(i.length===0||n===void 0)throw new Error("Fixture provider entries require requestedBlueId and node/returnedNode.");e.set(i,c(n))}return o.createNodeProvider(r=>{const i=e.get(r);return i===void 0?[]:[i.clone()]})}function v(t,e){if(se(t)){const i=t.getReferenceBlueId(),n=i?e.getNodeProvider().fetchByBlueId(i):null;if(n===null||n.length===0)throw new Error(`No content found for blueId: ${i}`);return n.length===1?v(V(n[0]),e):new o.BlueNode().setItems(n.map(a=>v(V(a),e)))}const r=t.clone();return r.setType(I(r.getType(),e)),r.setItemType(I(r.getItemType(),e)),r.setKeyType(I(r.getKeyType(),e)),r.setValueType(I(r.getValueType(),e)),r.setBlue(I(r.getBlue(),e)),r.setContractsNode(I(r.getContractsNode(),e)),r.getItems()!==void 0&&r.setItems(r.getItems()?.map(i=>v(i,e))),r.getProperties()!==void 0&&r.setProperties(Object.fromEntries(Object.entries(r.getProperties()??{}).map(([i,n])=>[i,v(n,e)]))),r}function I(t,e){return t===void 0?void 0:v(t,e)}function V(t){const e=t.clone();return e.getReferenceBlueId()!==void 0&&!se(e)&&e.setReferenceBlueId(void 0),e}function m(t,e){const r=P(c(s(t,"expectedNode")));l(P(e)).toEqual(r)}function D(t,e,r){t.expectedNodeBlueId!==void 0&&(l(h.calculateBlueIdSync(e)).toBe(t.expectedNodeBlueId),l(h.calculateBlueIdSync(c(s(r,"source")))).toBe(t.expectedNodeBlueId))}function Je(t,e){if(e==null)return;const r=Array.isArray(e)?e:[e];for(const i of r)l(h.calculateBlueIdSync(c(i))).toBe(t)}function ze(t,e){if(e==null)return;const r=Array.isArray(e)?e:[e];for(const i of r)l(h.calculateBlueIdSync(c(i))).not.toBe(t)}function He(t){h.calculateBlueIdSync(t),p(t,"/",!1)}function p(t,e,r){if(t!==void 0){if(t.getBlue()!==void 0)throw new Error(`Canonical Overlay contains blue at ${e}`);if(t.getPreviousBlueId()!==void 0)throw new Error(`Canonical Overlay contains $previous at ${e}`);if(t.getPosition()!==void 0)throw new Error(`Canonical Overlay contains $pos at ${e}`);if(t.getProperties()?.[o.LIST_CONTROL_REPLACE]!==void 0)throw new Error(`Canonical Overlay contains $replace at ${e}`);if(r&&Xe(t)&&!We(t))throw new Error(`Canonical Overlay contains empty-object list element at ${e}`);p(t.getType(),g(e,"type"),!1),p(t.getItemType(),g(e,"itemType"),!1),p(t.getKeyType(),g(e,"keyType"),!1),p(t.getValueType(),g(e,"valueType"),!1),p(t.getContractsNode(),g(e,"contracts"),!1),t.getItems()?.forEach((i,n)=>p(i,g(e,String(n)),!0));for(const[i,n]of Object.entries(t.getProperties()??{}))p(n,g(e,i),!1)}}function P(t){return o.NodeToMapListOrValue.get(t,"official")}function c(t){return o.NodeDeserializer.deserialize(t)}function Ge(t){return c(F(t))}function F(t){return s(o.yamlBlueParse(f.readFileSync(t,"utf8")),t)}function s(t,e){if(t===void 0)throw new Error(`Fixture is missing required field: ${e}`);return t}function se(t){return t.getReferenceBlueId()!==void 0&&t.getName()===void 0&&t.getDescription()===void 0&&t.getType()===void 0&&t.getItemType()===void 0&&t.getKeyType()===void 0&&t.getValueType()===void 0&&t.getValue()===void 0&&t.getItems()===void 0&&t.getProperties()===void 0&&t.getContractsNode()===void 0&&t.getSchema()===void 0&&t.getMergePolicy()===void 0}function Xe(t){return t.getName()===void 0&&t.getDescription()===void 0&&t.getType()===void 0&&t.getItemType()===void 0&&t.getKeyType()===void 0&&t.getValueType()===void 0&&t.getValue()===void 0&&t.getItems()===void 0&&t.getProperties()===void 0&&t.getContractsNode()===void 0&&t.getReferenceBlueId()===void 0&&t.getSchema()===void 0&&t.getMergePolicy()===void 0}function We(t){const e=t.getProperties();return e!==void 0&&Object.keys(e).length===1&&e.$empty?.getValue()===!0}function g(t,e){return t==="/"||t.length===0?`/${e}`:`${t}/${e}`}function A(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}exports.BLUE_LANGUAGE_1_0_FIXTURE_COUNT=k;exports.BLUE_LANGUAGE_1_0_FIXTURE_PACKAGE_IDENTITY=O;exports.BlueLanguageConformanceReport=M;exports.fixturePackageIdentityMatchesFixtureFiles=K;exports.hasExactRequiredFixtureSet=z;exports.hasRequiredFixtureCoverage=J;exports.languageConformanceFixtureEntries=we;exports.loadLanguageConformanceFixtureEntries=C;exports.runLanguageConformanceSuite=Te;exports.runLanguageFixtureEntry=Q;exports.runLanguageFixtureSpec=Z;
|