@cratis/screenplay-language 4.139.0 → 4.140.0
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../../_virtual/_virtual/_rolldown/runtime.js";import{isExactNumberToken as e,parseExactNumber as t}from"./ExactNumber.js";import{InvalidSyntaxJson as n}from"./InvalidSyntaxJson.js";import{legacySourceOptions as r,validatedSourceOptions as i}from"./SourceOptions.js";import{validateSyntaxInvariants as a}from"./SyntaxInvariants.js";import{syntaxMemberNames as o,validateClosedSyntaxMembers as s,validateSyntaxMembers as c}from"./SyntaxMemberContracts.js";import{isLegacyOmittedMember as l}from"./LegacyWireProjection.js";const isNode=e=>typeof e==`object`&&!!e&&typeof e.kind==`string`,u=/* @__PURE__ */ new Set([`kind`,`location`,`targetLocation`,`referenceLocation`,`referenceLength`,`nameWasEscaped`,`declaredTriggers`,`directiveLocations`]),d=/* @__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
|
|
1
|
+
import"../../_virtual/_virtual/_rolldown/runtime.js";import{isExactNumberToken as e,parseExactNumber as t}from"./ExactNumber.js";import{InvalidSyntaxJson as n}from"./InvalidSyntaxJson.js";import{legacySourceOptions as r,validatedSourceOptions as i}from"./SourceOptions.js";import{validateSyntaxInvariants as a}from"./SyntaxInvariants.js";import{syntaxMemberNames as o,validateClosedSyntaxMembers as s,validateSyntaxMembers as c}from"./SyntaxMemberContracts.js";import{isLegacyOmittedMember as l}from"./LegacyWireProjection.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`],EventSyntax:[`origin`],ImportSyntax:[`origin`],SliceSyntax:[`direction`],ReactionSyntax:[`from`],ReducerSyntax:[`from`],ProducesSyntax:[`stream`],ConceptAttributeSyntax:[`scope`,`specialCategory`],ConceptSyntax:[`description`,`valueNumbers`],PolicySyntax:[`description`],FileConstraintSyntax:[`description`],UniqueEventConstraintSyntax:[`description`],UniquePropertyConstraintSyntax:[`description`],ProjectionSyntax:[`description`],ScreenSyntax:[`description`],FormSyntax:[`description`],SpecificationSyntax:[`description`,`whenRedelivered`],SpecificationErrorSyntax:[`caseValue`],SpecificationExampleSyntax:[`stream`,`noStream`],SpecificationRedeliverySyntax:[`stream`,`noStream`]},m={ModuleSyntax:[`dependsOn`],FeatureSyntax:[`dependsOn`],SpecificationSyntax:[`parameters`,`cases`],InvokesSyntax:[`onRefused`]},h={EventSyntax:{visibility:`Private`},ImportSyntax:{visibility:`Private`},ConceptAttributeSyntax:{criminal:!1},PropertySyntax:{isSubject:!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`)&&s(e,u),e.kind!==`ValidationRuleSyntax`)return;let t=e;t.implementation!=null&&(t.file!=null&&s(t.file,u),t.code!=null&&s(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 i=n===`exact`?o(e.kind):void 0,isProjected=t=>(i===void 0||i.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&&l(e,t)}function isAlwaysOmitted(e,t){return u.has(t)||e.kind===`OperationSyntax`&&t===`usesLocation`}function writeNode(e,t,n){f.has(e.kind)&&(t=i(e.sourceOptions??r).numericMode),a(e),validateClosedImplementationShapes(e);let o=Object.create(null);o.kind=e.kind;let s=structuralMembers(e);for(let r of projectedMemberNames(e,s,t,n)){let i=s[r];isOmittedByDefault(e.kind,r,i)||(o[r]=write(i,t,n))}return o}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)&&c(e),validateRawNumericText(e,t),e.kind===`LiteralExpressionSyntax`&&Object.hasOwn(e,`value`)&&validateLiteralValue(e.value,t),validateNumberMembers(e,t,n)}function assertSupportedDepth(e,t){if(t>96&&e===`exact`)throw new n(`Syntax nesting exceeds the supported depth of 96.`)}function assertCompleteSourceRoot(e,t,r){if(isIncompleteExactRoot(e,t,r))throw new n(`Exact syntax requires a complete source root.`)}function isIncompleteExactRoot(e,t,n){return n===0&&t===`exact`&&!f.has(e.kind)}function resolveNumericMode(e,t,a){if(!f.has(e.kind)&&!Object.hasOwn(e,`sourceOptions`))return t;let o=Object.hasOwn(e,`sourceOptions`)?i(e.sourceOptions):r;if(a>0&&t!==o.numericMode)throw new n(`Conflicting source numeric options.`);return o.numericMode}function validateRawNumericText(t,r){if(t.kind===`RawExpressionSyntax`&&r===`exact`&&typeof t.text==`string`&&e(t.text))throw new n(`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(e,t){if(t===`exact`&&isUnsupportedExactPrimitive(e))throw new n(`Exact source requires supported primitive values or an explicit ExactNumber literal.`);isObject(e)&&validateObjectLiteral(e,t)}function validateObjectLiteral(e,t){if(e.literalType===`ExactNumber`)validateExactNumberLiteral(e,t);else if(t===`exact`)throw new n(`Exact source refuses old or plain object literal insertion.`)}function isWellFormedExactNumber(e){return typeof e.value==`string`&&t(e.value)?.value===e.value&&Object.keys(e).length===2}function validateExactNumberLiteral(e,t){if(t!==`exact`||!isWellFormedExactNumber(e))throw new n(`Malformed or incompatible ExactNumber literal.`)}function validateNumberMembers(e,t,n){let r=t===`exact`&&isNode(e)?o(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","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","skipped","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 omitted = new Set(['kind', 'location', 'targetLocation', 'referenceLocation', 'referenceLength', 'nameWasEscaped', 'declaredTriggers', 'directiveLocations']);\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 (typeof value !== 'object' || value === null) 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 (typeof member === 'object' && member !== null && 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'],\n EventSyntax: ['origin'],\n ImportSyntax: ['origin'],\n SliceSyntax: ['direction'],\n ReactionSyntax: ['from'],\n ReducerSyntax: ['from'],\n ProducesSyntax: ['stream'],\n ConceptAttributeSyntax: ['scope', 'specialCategory'],\n ConceptSyntax: ['description', 'valueNumbers'],\n PolicySyntax: ['description'],\n FileConstraintSyntax: ['description'],\n UniqueEventConstraintSyntax: ['description'],\n UniquePropertyConstraintSyntax: ['description'],\n ProjectionSyntax: ['description'],\n ScreenSyntax: ['description'],\n FormSyntax: ['description'],\n SpecificationSyntax: ['description', 'whenRedelivered'],\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 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 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 (typeof value !== 'object' || value === null) 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 hiddenByLegacy = (member: string) => owningMode === 'legacy' && !complete && isLegacyOmittedMember(value, member);\n const isProjected = (member: string) =>\n (known === undefined || known.has(member)) && !hiddenByLegacy(member) && !omitted.has(member) &&\n !(value.kind === 'OperationSyntax' && member === 'usesLocation');\n return Object.keys(structural).filter(isProjected).sort(ordinal);\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 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 (typeof value !== 'object' || value === null) return;\n const node = value as Record<string, unknown>;\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 (depth === 0 && owningMode === 'exact' && !sourceRoots.has(node.kind as string)) throw new InvalidSyntaxJson('Exact syntax requires a complete source root.');\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 (typeof value !== 'object' || value === null) return;\n const literal = value as { literalType?: unknown; value?: unknown };\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 const skipped = new Set(['location', 'targetLocation', 'usesLocation']);\n const isTraversed = (name: string, member: unknown) =>\n (known === undefined || known.has(name) || (isNode(member) && sourceRoots.has(member.kind))) && !skipped.has(name);\n for (const [name, member] of Object.entries(node)) if (isTraversed(name, member)) validateNumbers(member, owningMode, depth + 1);\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'],\n EventSyntax: ['origin'],\n ImportSyntax: ['origin'],\n SliceSyntax: ['direction'],\n ReactionSyntax: ['from'],\n ReducerSyntax: ['from'],\n ProducesSyntax: ['stream'],\n ConceptAttributeSyntax: ['scope', 'specialCategory'],\n ConceptSyntax: ['description', 'valueNumbers'],\n PolicySyntax: ['description'],\n FileConstraintSyntax: ['description'],\n UniqueEventConstraintSyntax: ['description'],\n UniquePropertyConstraintSyntax: ['description'],\n ProjectionSyntax: ['description'],\n ScreenSyntax: ['description'],\n FormSyntax: ['description'],\n SpecificationSyntax: ['description', 'whenRedelivered'],\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 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 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 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 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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"}
|
package/package.json
CHANGED