@speclynx/apidom-datamodel 2.10.3 → 2.12.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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -0
- package/dist/apidom-datamodel.browser.js +390 -69
- package/dist/apidom-datamodel.browser.min.js +1 -1
- package/package.json +3 -3
- package/src/clone/index.cjs +4 -0
- package/src/clone/index.mjs +5 -1
- package/src/elements/Style.cjs +54 -0
- package/src/elements/Style.mjs +48 -0
- package/src/index.cjs +3 -1
- package/src/index.mjs +2 -2
- package/src/predicates/index.cjs +10 -1
- package/src/predicates/index.mjs +8 -0
- package/src/primitives/Element.cjs +43 -9
- package/src/primitives/Element.mjs +43 -9
- package/src/registration.cjs +2 -0
- package/src/registration.mjs +2 -1
- package/src/serialisers/JSONSerialiser.cjs +23 -2
- package/src/serialisers/JSONSerialiser.mjs +23 -2
- package/types/apidom-datamodel.d.ts +56 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.apidomDatamodel=t():e.apidomDatamodel=t()}(self,()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function n(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}function r(e){return function t(r){return 0===arguments.length||n(r)?t:e.apply(this,arguments)}}function s(e){return function t(s,i){switch(arguments.length){case 0:return t;case 1:return n(s)?t:r(function(t){return e(s,t)});default:return n(s)&&n(i)?t:n(s)?r(function(t){return e(t,i)}):n(i)?r(function(t){return e(s,t)}):e(s,i)}}}function i(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}function o(e,t,n){for(var r=0,s=n.length;r<s;){if(e(t,n[r]))return!0;r+=1}return!1}function a(e,t){return Object.prototype.hasOwnProperty.call(t,e)}e.r(t),e.d(t,{AnnotationElement:()=>ke,ArrayElement:()=>I,BooleanElement:()=>L,CloneError:()=>fe,CollectionElement:()=>D,CommentElement:()=>Oe,DeepCloneError:()=>me,Element:()=>O,JSONSerialiser:()=>P,KeyValuePair:()=>E,LinkElement:()=>F,MemberElement:()=>K,Namespace:()=>Q,NullElement:()=>x,NumberElement:()=>z,ObjectElement:()=>R,ObjectSlice:()=>w,ParseResultElement:()=>je,RefElement:()=>N,ShallowCloneError:()=>pe,SourceMapElement:()=>C,StringElement:()=>j,cloneDeep:()=>be,cloneShallow:()=>Ee,hasElementSourceMap:()=>se,includesClasses:()=>oe,includesSymbols:()=>ie,isAnnotationElement:()=>Se,isArrayElement:()=>ee,isBooleanElement:()=>Z,isCommentElement:()=>Ve,isElement:()=>$,isLinkElement:()=>Ae,isMemberElement:()=>ne,isNullElement:()=>Y,isNumberElement:()=>X,isObjectElement:()=>te,isParseResultElement:()=>Ce,isPrimitiveElement:()=>re,isRefElement:()=>Me,isSourceMapElement:()=>Pe,isStringElement:()=>H,refract:()=>we});const c="function"==typeof Object.is?Object.is:function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};var u=Object.prototype.toString;const l=function(){return"[object Arguments]"===u.call(arguments)?function(e){return"[object Arguments]"===u.call(e)}:function(e){return a("callee",e)}}();var h=!{toString:null}.propertyIsEnumerable("toString"),f=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=function(){return arguments.propertyIsEnumerable("length")}(),p=function(e,t){for(var n=0;n<e.length;){if(e[n]===t)return!0;n+=1}return!1};const y="function"!=typeof Object.keys||m?r(function(e){if(Object(e)!==e)return[];var t,n,r=[],s=m&&l(e);for(t in e)!a(t,e)||s&&"length"===t||(r[r.length]=t);if(h)for(n=f.length-1;n>=0;)a(t=f[n],e)&&!p(r,t)&&(r[r.length]=t),n-=1;return r}):r(function(e){return Object(e)!==e?[]:Object.keys(e)});const d=r(function(e){return null===e?"Null":void 0===e?"Undefined":Object.prototype.toString.call(e).slice(8,-1)});function b(e,t,n,r){var s=i(e);function a(e,t){return g(e,t,n.slice(),r.slice())}return!o(function(e,t){return!o(a,t,e)},i(t),s)}function g(e,t,n,r){if(c(e,t))return!0;var s,i,o=d(e);if(o!==d(t))return!1;if("function"==typeof e["fantasy-land/equals"]||"function"==typeof t["fantasy-land/equals"])return"function"==typeof e["fantasy-land/equals"]&&e["fantasy-land/equals"](t)&&"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](e);if("function"==typeof e.equals||"function"==typeof t.equals)return"function"==typeof e.equals&&e.equals(t)&&"function"==typeof t.equals&&t.equals(e);switch(o){case"Arguments":case"Array":case"Object":if("function"==typeof e.constructor&&"Promise"===(s=e.constructor,null==(i=String(s).match(/^function (\w*)/))?"":i[1]))return e===t;break;case"Boolean":case"Number":case"String":if(typeof e!=typeof t||!c(e.valueOf(),t.valueOf()))return!1;break;case"Date":if(!c(e.valueOf(),t.valueOf()))return!1;break;case"Error":return e.name===t.name&&e.message===t.message;case"RegExp":if(e.source!==t.source||e.global!==t.global||e.ignoreCase!==t.ignoreCase||e.multiline!==t.multiline||e.sticky!==t.sticky||e.unicode!==t.unicode)return!1}for(var u=n.length-1;u>=0;){if(n[u]===e)return r[u]===t;u-=1}switch(o){case"Map":return e.size===t.size&&b(e.entries(),t.entries(),n.concat([e]),r.concat([t]));case"Set":return e.size===t.size&&b(e.values(),t.values(),n.concat([e]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var l=y(e);if(l.length!==y(t).length)return!1;var h=n.concat([e]),f=r.concat([t]);for(u=l.length-1;u>=0;){var m=l[u];if(!a(m,t)||!g(t[m],e[m],h,f))return!1;u-=1}return!0}const v=s(function(e,t){return g(e,t,[],[])});const E=class{key;value;constructor(e,t){this.key=e,this.value=t}toValue(){return{key:this.key?.toValue(),value:this.value?.toValue()}}};class _{elements;constructor(e){this.elements=e??[]}toValue(){return this.elements.map(e=>({key:e.key?.toValue(),value:e.value?.toValue()}))}map(e,t){return this.elements.map(n=>{const r=n.value,s=n.key;if(void 0===r||void 0===s)throw new Error("MemberElement must have both key and value");return void 0!==t?e.call(t,r,s,n):e(r,s,n)})}filter(e,t){const n=this.elements.filter(n=>{const r=n.value,s=n.key;return void 0!==r&&void 0!==s&&(void 0!==t?e.call(t,r,s,n):e(r,s,n))});return new _(n)}reject(e,t){const n=[];for(const r of this.elements){const s=r.value,i=r.key;void 0!==s&&void 0!==i&&(e.call(t,s,i,r)||n.push(r))}return new _(n)}forEach(e,t){this.elements.forEach((n,r)=>{const s=n.value,i=n.key;void 0!==s&&void 0!==i&&(void 0!==t?e.call(t,s,i,n,r):e(s,i,n,r))})}find(e,t){return this.elements.find(n=>{const r=n.value,s=n.key;return void 0!==r&&void 0!==s&&(void 0!==t?e.call(t,r,s,n):e(r,s,n))})}keys(){return this.elements.map(e=>e.key?.toValue()).filter(e=>void 0!==e)}values(){return this.elements.map(e=>e.value?.toValue()).filter(e=>void 0!==e)}get length(){return this.elements.length}get isEmpty(){return 0===this.length}get first(){return this.elements[0]}get(e){return this.elements[e]}push(e){return this.elements.push(e),this}includesKey(e){return this.elements.some(t=>t.key?.equals(e))}[Symbol.iterator](){return this.elements[Symbol.iterator]()}}const w=_;class k{parent;startLine;startCharacter;startOffset;endLine;endCharacter;endOffset;_storedElement="element";_content;_meta;_attributes;constructor(e,t,n){void 0!==t&&(this.meta=t),void 0!==n&&(this.attributes=n),void 0!==e&&(this.content=e)}get element(){return this._storedElement}set element(e){this._storedElement=e}get content(){return this._content}set content(e){if(e instanceof k)this._content=e;else if(null!=e&&"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e&&"bigint"!=typeof e&&"symbol"!=typeof e)if(e instanceof E)this._content=e;else if(e instanceof w)this._content=e.elements;else if(Array.isArray(e))this._content=e.map(e=>this.refract(e));else{if("object"!=typeof e)throw new Error("Cannot set content to value of type "+typeof e);this._content=Object.entries(e).map(([e,t])=>new this.MemberElement(e,t))}else this._content=e}get meta(){if(!this._meta){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._meta=new this.ObjectElement}return this._meta}set meta(e){e instanceof k?this._meta=e:this.meta.set(e??{})}get attributes(){if(!this._attributes){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._attributes=new this.ObjectElement}return this._attributes}set attributes(e){e instanceof k?this._attributes=e:this.attributes.set(e??{})}get id(){return this.getMetaProperty("id","")}set id(e){this.setMetaProperty("id",e)}get classes(){return this.getMetaProperty("classes",[])}set classes(e){this.setMetaProperty("classes",e)}get links(){return this.getMetaProperty("links",[])}set links(e){this.setMetaProperty("links",e)}get children(){const{_content:e}=this;if(Array.isArray(e))return e;if(e instanceof E){const t=[];return e.key&&t.push(e.key),e.value&&t.push(e.value),t}return e instanceof k?[e]:[]}get isFrozen(){return Object.isFrozen(this)}freeze(){if(!this.isFrozen){this._meta&&(this._meta.parent=this,this._meta.freeze()),this._attributes&&(this._attributes.parent=this,this._attributes.freeze());for(const e of this.children)e.parent=this,e.freeze();Array.isArray(this._content)&&Object.freeze(this._content),Object.freeze(this)}}toValue(){const{_content:e}=this;return e instanceof k||e instanceof E?e.toValue():Array.isArray(e)?e.map(e=>e.toValue()):e}equals(e){const t=e instanceof k?e.toValue():e;return v(this.toValue(),t)}primitive(){}set(e){return this.content=e,this}toRef(e){const t=this.id.toValue();if(""===t)throw new Error("Cannot create reference to an element without an ID");const n=new this.RefElement(t);return"string"==typeof e&&(n.path=this.refract(e)),n}getMetaProperty(e,t){if(!this.meta.hasKey(e)){if(this.isFrozen){const e=this.refract(t);return e.freeze(),e}this.meta.set(e,t)}return this.meta.get(e)}setMetaProperty(e,t){this.meta.set(e,t)}hasMetaProperty(e){return!this.isMetaEmpty&&this.meta.hasKey(e)}get isMetaEmpty(){return void 0===this._meta||this.meta.isEmpty}getAttributesProperty(e,t){if(!this.hasAttributesProperty(e)){if(this.isFrozen){const e=this.refract(t);return e.freeze(),e}this.attributes.set(e,t)}return this.attributes.get(e)}setAttributesProperty(e,t){this.attributes.set(e,t)}hasAttributesProperty(e){return!this.isAttributesEmpty&&this.attributes.hasKey(e)}get isAttributesEmpty(){return void 0===this._attributes||this.attributes.isEmpty}}const O=k;const j=class extends O{constructor(e,t,n){super(e,t,n),this.element="string"}primitive(){return"string"}get length(){return this.content?.length??0}};class A extends j{constructor(e,t,n){super(e,t,n),this.element="sourceMap"}static transfer(e,t){t.startLine=e.startLine,t.startCharacter=e.startCharacter,t.startOffset=e.startOffset,t.endLine=e.endLine,t.endCharacter=e.endCharacter,t.endOffset=e.endOffset}static from(e){const{startLine:t,startCharacter:n,startOffset:r,endLine:s,endCharacter:i,endOffset:o}=e;if("number"!=typeof t||"number"!=typeof n||"number"!=typeof r||"number"!=typeof s||"number"!=typeof i||"number"!=typeof o)return;const a="sm1:"+[t,n,r,s,i,o].map(S).join("");const c=new A(a);return c.startLine=t,c.startCharacter=n,c.startOffset=r,c.endLine=s,c.endCharacter=i,c.endOffset=o,c}applyTo(e){this.content&&([e.startLine,e.startCharacter,e.startOffset,e.endLine,e.endCharacter,e.endOffset]=function(e){const t=e.startsWith("sm1:")?e.slice(4):e,n=[];let r=0;for(let e=0;e<6;e++){const e=V(t,r);n.push(e.value),r=e.next}return n}(this.content))}}const M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function S(e){let t=e>>>0,n="";do{let e=31&t;t>>>=5,0!==t&&(e|=32),n+=M[e]}while(0!==t);return n}function V(e,t=0){let n=0,r=0,s=t;for(;;){const t=e[s++],i=M.indexOf(t);if(-1===i)throw new Error(`Invalid Base64 VLQ char: ${t}`);if(n|=(31&i)<<r,r+=5,!!!(32&i))break}return{value:n>>>0,next:s}}const C=A;const P=class{namespace;constructor(e){this.namespace=e||new this.Namespace}serialise(e){if(!(e instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${e}\` is not an Element instance`);const t={element:e.element};if(e.isMetaEmpty||(t.meta=this.serialiseObject(e.meta)),e.isAttributesEmpty||(t.attributes=this.serialiseObject(e.attributes)),!(e instanceof C)){const n=C.from(e);n&&(t.meta||(t.meta={}),t.meta.__mappings__=this.serialise(n))}const n=this.serialiseContent(e.content);return void 0!==n&&(t.content=n),t}deserialise(e){if(!e.element)throw new Error("Given value is not an object containing an element name");const t=new(this.namespace.getElementClass(e.element));let n;t.element!==e.element&&(t.element=e.element);let r=e.meta;if(e.meta?.__mappings__){const{__mappings__:t,...s}=e.meta;n=t,r=Object.keys(s).length>0?s:void 0}if(r&&this.deserialiseObject(r,t.meta),n){this.deserialise(n).applyTo(t)}e.attributes&&this.deserialiseObject(e.attributes,t.attributes);const s=this.deserialiseContent(e.content);return void 0===s&&null!==t.content||(t.content=s),t}serialiseContent(e){if(e instanceof this.namespace.elements.Element)return this.serialise(e);if(e instanceof this.namespace.KeyValuePair){const t=e,n={key:this.serialise(t.key)};return t.value&&(n.value=this.serialise(t.value)),n}if(e&&Array.isArray(e)){if(0===e.length)return;return e.map(e=>this.serialise(e))}return e}deserialiseContent(e){if(e){if(e.element)return this.deserialise(e);if(e.key){const t=new this.namespace.KeyValuePair(this.deserialise(e.key));return e.value&&(t.value=this.deserialise(e.value)),t}if(Array.isArray(e))return e.map(e=>this.deserialise(e))}return e}serialiseObject(e){const t={};if(e.forEach((e,n)=>{e&&(t[n.toValue()]=this.serialise(e))}),0!==Object.keys(t).length)return t}deserialiseObject(e,t){Object.keys(e).forEach(n=>{t.set(n,this.deserialise(e[n]))})}};const x=class extends O{constructor(e,t,n){super(e??null,t,n),this.element="null"}primitive(){return"null"}set(e){throw new Error("Cannot set the value of null")}};const z=class extends O{constructor(e,t,n){super(e,t,n),this.element="number"}primitive(){return"number"}};const L=class extends O{constructor(e,t,n){super(e,t,n),this.element="boolean"}primitive(){return"boolean"}};class q extends O{constructor(e,t,n){super(e||[],t,n)}get length(){return this._content.length}get isEmpty(){return 0===this.length}get first(){return this._content[0]}get second(){return this._content[1]}get last(){return this._content.at(-1)}push(...e){for(const t of e)this._content.push(this.refract(t));return this}shift(){return this._content.shift()}unshift(e){this._content.unshift(this.refract(e))}includes(e){return this._content.some(t=>t.equals(e))}findElements(e,t){const n=t||{},r=!!n.recursive,s=void 0===n.results?[]:n.results;for(let t=0;t<this._content.length;t+=1){const n=this._content[t],i=n;r&&"function"==typeof i.findElements&&i.findElements(e,{results:s,recursive:r}),e(n,t,void 0)&&s.push(n)}return s}find(e){const t=this.findElements(e,{recursive:!0});return new this.ArrayElement(t)}findByElement(e){return this.find(t=>t.element===e)}findByClass(e){return this.find(t=>{const n=t.classes;return"function"==typeof n.includes&&n.includes(e)})}getById(e){return this.find(t=>t.id.toValue()===e).first}concat(e){return new(0,this.constructor)(this._content.concat(e._content))}[Symbol.iterator](){return this._content[Symbol.iterator]()}}const D=q;const I=class extends D{constructor(e,t,n){super(e||[],t,n),this.element="array"}primitive(){return"array"}get(e){return this._content[e]}getValue(e){const t=this.get(e);if(t)return t.toValue()}set(e,t){return"number"==typeof e&&void 0!==t?this._content[e]=this.refract(t):this.content=e,this}remove(e){return this._content.splice(e,1)[0]??null}map(e,t){return this._content.map(e,t)}flatMap(e,t){return this._content.flatMap(e,t)}compactMap(e,t){const n=[];for(const r of this._content){const s=e.call(t,r);s&&n.push(s)}return n}filter(e,t){const n=this._content.filter(e,t);return new this.constructor(n)}reject(e,t){const n=[];for(const r of this._content)e.call(t,r)||n.push(r);return new this.constructor(n)}reduce(e,t){let n,r;void 0!==t?(n=0,r=this.refract(t)):(n=1,r=this.first);for(let t=n;t<this.length;t+=1){const n=e(r,this._content[t],t,this);r=void 0===n?n:this.refract(n)}return r}forEach(e,t){this._content.forEach((n,r)=>{e.call(t,n,r)})}empty(){return new this.constructor([])}};const K=class extends O{constructor(e,t,n,r){super(new E,n,r),this.element="member",void 0!==e&&(this.key=e),arguments.length>=2&&(this.value=t)}primitive(){return"member"}get key(){return this._content.key}set key(e){this._content.key=this.refract(e)}get value(){return this._content.value}set value(e){this._content.value=void 0===e?void 0:this.refract(e)}};const R=class extends D{constructor(e,t,n){super(e||[],t,n),this.element="object"}primitive(){return"object"}toValue(){return this._content.reduce((e,t)=>(e[t.key.toValue()]=t.value?t.value.toValue():void 0,e),{})}get(e){const t=this.getMember(e);if(t)return t.value}getValue(e){const t=this.get(e);if(t)return t.toValue()}getMember(e){if(void 0!==e)return this._content.find(t=>t.key.toValue()===e)}remove(e){let t=null;return this.content=this._content.filter(n=>n.key.toValue()!==e||(t=n,!1)),t}getKey(e){const t=this.getMember(e);if(t)return t.key}set(e,t){if("string"==typeof e){const n=this.getMember(e);n?n.value=t:this._content.push(new K(e,t))}else if("object"==typeof e&&!Array.isArray(e))for(const t of Object.keys(e))this.set(t,e[t]);return this}keys(){return this._content.map(e=>e.key.toValue())}values(){return this._content.map(e=>e.value.toValue())}hasKey(e){return this._content.some(t=>t.key.equals(e))}items(){return this._content.map(e=>[e.key.toValue(),e.value.toValue()])}map(e,t){return this._content.map(n=>e.call(t,n.value,n.key,n))}compactMap(e,t){const n=[];return this.forEach((r,s,i)=>{const o=e.call(t,r,s,i);o&&n.push(o)}),n}filter(e,t){return new w(this._content).filter(e,t)}reject(e,t){const n=[];for(const r of this._content)e.call(t,r.value,r.key,r)||n.push(r);return new w(n)}forEach(e,t){this._content.forEach(n=>e.call(t,n.value,n.key,n))}reduce(e,t){let n,r;void 0!==t?(n=0,r=this.refract(t)):(n=1,r=this._content[0]?.value);for(let t=n;t<this._content.length;t+=1){const n=this._content[t],s=e(r,n.value,n.key,n,this);r=void 0===s?s:this.refract(s)}return r}empty(){return new this.constructor([])}};const N=class extends O{constructor(e,t,n){super(e||[],t,n),this.element="ref",this.path||(this.path="element")}get path(){if(this.hasAttributesProperty("path"))return this.attributes.get("path")}set path(e){this.attributes.set("path",e)}};const F=class extends O{constructor(e,t,n){super(e||[],t,n),this.element="link"}get relation(){if(this.hasAttributesProperty("relation"))return this.attributes.get("relation")}set relation(e){this.attributes.set("relation",e)}get href(){if(this.hasAttributesProperty("href"))return this.attributes.get("href")}set href(e){this.attributes.set("href",e)}},B=e=>null===e,T=e=>"string"==typeof e,U=e=>"number"==typeof e,W=e=>"boolean"==typeof e,G=e=>null!==e&&"object"==typeof e;class J{elementMap={};elementDetection=[];Element;KeyValuePair;_elements;_attributeElementKeys=[];_attributeElementArrayKeys=[];constructor(e){this.Element=O,this.KeyValuePair=E,e&&e.noDefault||this.useDefault()}use(e){return e.namespace&&e.namespace({base:this}),e.load&&e.load({base:this}),this}useDefault(){return this.register("null",x).register("string",j).register("number",z).register("boolean",L).register("array",I).register("object",R).register("member",K).register("ref",N).register("link",F).register("sourceMap",C),this.detect(B,x,!1).detect(T,j,!1).detect(U,z,!1).detect(W,L,!1).detect(Array.isArray,I,!1).detect(G,R,!1),this}register(e,t){return this._elements=void 0,this.elementMap[e]=t,this}unregister(e){return this._elements=void 0,delete this.elementMap[e],this}detect(e,t,n){return void 0===n||n?this.elementDetection.unshift([e,t]):this.elementDetection.push([e,t]),this}toElement(e){if(e instanceof this.Element)return e;let t;for(const[n,r]of this.elementDetection)if(n(e)){t=new r(e);break}return t}getElementClass(e){const t=this.elementMap[e];return void 0===t?this.Element:t}fromRefract(e){return this.serialiser.deserialise(e)}toRefract(e){return this.serialiser.serialise(e)}get elements(){return void 0===this._elements&&(this._elements={Element:this.Element},Object.keys(this.elementMap).forEach(e=>{const t=e[0].toUpperCase()+e.substring(1);this._elements[t]=this.elementMap[e]})),this._elements}get serialiser(){return new P(this)}}P.prototype.Namespace=J;const Q=J,$=e=>e instanceof O,H=e=>e instanceof j,X=e=>e instanceof z,Y=e=>e instanceof x,Z=e=>e instanceof L,ee=e=>e instanceof I,te=e=>e instanceof R,ne=e=>e instanceof K,re=e=>te(e)&&"object"===e.element||ee(e)&&"array"===e.element||Z(e)&&"boolean"===e.element||X(e)&&"number"===e.element||H(e)&&"string"===e.element||Y(e)&&"null"===e.element||ne(e)&&"member"===e.element,se=e=>"number"==typeof e.startLine&&"number"==typeof e.startCharacter&&"number"==typeof e.startOffset&&"number"==typeof e.endLine&&"number"==typeof e.endCharacter&&"number"==typeof e.endOffset,ie=(e,t)=>{if(0===t.length)return!0;if(!e.hasAttributesProperty("symbols"))return!1;const n=e.attributes.get("symbols");return!!ee(n)&&t.every(e=>n.includes(e))},oe=(e,t)=>0===t.length||!!$(e)&&(!e.isMetaEmpty&&(!!e.hasMetaProperty("classes")&&t.every(t=>e.classes.includes(t))));class ae extends AggregateError{constructor(e,t,n){super(e,t,n),this.name=this.constructor.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}const ce=ae;class ue extends Error{static[Symbol.hasInstance](e){return super[Symbol.hasInstance](e)||Function.prototype[Symbol.hasInstance].call(ce,e)}constructor(e,t){super(e,t),this.name=this.constructor.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}const le=ue;const he=class extends le{constructor(e,t){if(super(e,t),null!=t&&"object"==typeof t){const{cause:e,...n}=t;Object.assign(this,n)}}};const fe=class extends he{value;constructor(e,t){super(e,t),void 0!==t&&(this.value=t.value)}};const me=class extends fe{};const pe=class extends fe{},ye=(e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const s=ve(e);n.set(e,s);const{content:i}=e;return Array.isArray(i)?s.content=i.map(e=>ye(e,r)):$(i)?s.content=ye(i,r):s.content=i instanceof E?de(i,r):i,s},de=(e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const{key:s,value:i}=e,o=void 0!==s?ye(s,r):void 0,a=void 0!==i?ye(i,r):void 0,c=new E(o,a);return n.set(e,c),c},be=(e,t={})=>{if(e instanceof E)return de(e,t);if(e instanceof w)return((e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const s=[...e].map(e=>ye(e,r)),i=new w(s);return n.set(e,i),i})(e,t);if($(e))return ye(e,t);throw new me("Value provided to cloneDeep function couldn't be cloned",{value:e})};be.safe=e=>{try{return be(e)}catch{return e}};const ge=e=>{const{key:t,value:n}=e;return new E(t,n)},ve=e=>{const t=new(0,e.constructor);t.element=e.element,e.isMetaEmpty||(t.meta=be(e.meta)),e.isAttributesEmpty||(t.attributes=be(e.attributes)),se(e)&&C.transfer(e,t);const{content:n}=e;return $(n)?t.content=ve(n):Array.isArray(n)?t.content=[...n]:t.content=n instanceof E?ge(n):n,t},Ee=e=>{if(e instanceof E)return ge(e);if(e instanceof w)return(e=>{const t=[...e];return new w(t)})(e);if($(e))return ve(e);throw new pe("Value provided to cloneShallow function couldn't be cloned",{value:e})};function _e(e){return void 0===e?new x:we(e)}function we(e){if(e instanceof O)return e;if("string"==typeof e)return new j(e);if("number"==typeof e)return new z(e);if("boolean"==typeof e)return new L(e);if(null===e)return new x;if(Array.isArray(e))return new I(e.map(_e));if("object"==typeof e)return new R(e);throw new Error("Cannot refract value of type "+typeof e)}Ee.safe=e=>{try{return Ee(e)}catch{return e}},O.prototype.ObjectElement=R,O.prototype.ArrayElement=I,O.prototype.RefElement=N,O.prototype.MemberElement=K,O.prototype.refract=we;const ke=class extends j{constructor(e,t,n){super(e,t,n),this.element="annotation"}get code(){if(this.hasAttributesProperty("code"))return this.attributes.get("code")}set code(e){this.attributes.set("code",e)}};const Oe=class extends j{constructor(e,t,n){super(e,t,n),this.element="comment"}};const je=class extends I{constructor(e,t,n){super(e,t,n),this.element="parseResult"}get api(){return this.filter(e=>oe(e,["api"])).first}get results(){return this.filter(e=>oe(e,["result"]))}get result(){return this.results.first}get annotations(){return this.filter(e=>"annotation"===e.element)}get warnings(){return this.filter(e=>"annotation"===e.element&&oe(e,["warning"]))}get errors(){return this.filter(e=>"annotation"===e.element&&oe(e,["error"]))}get isEmpty(){return 0===this.reject(e=>"annotation"===e.element).length}replaceResult(e){const{result:t}=this;if(void 0===t)return!1;const n=this._content,r=n.findIndex(e=>e===t);return-1!==r&&(n[r]=e,!0)}},Ae=e=>e instanceof F,Me=e=>e instanceof N,Se=e=>e instanceof ke,Ve=e=>e instanceof Oe,Ce=e=>e instanceof je,Pe=e=>e instanceof C;return t})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.apidomDatamodel=t():e.apidomDatamodel=t()}(self,()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function n(e){return null!=e&&"object"==typeof e&&!0===e["@@functional/placeholder"]}function r(e){return function t(r){return 0===arguments.length||n(r)?t:e.apply(this,arguments)}}function s(e){return function t(s,i){switch(arguments.length){case 0:return t;case 1:return n(s)?t:r(function(t){return e(s,t)});default:return n(s)&&n(i)?t:n(s)?r(function(t){return e(t,i)}):n(i)?r(function(t){return e(s,t)}):e(s,i)}}}function i(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}function o(e,t,n){for(var r=0,s=n.length;r<s;){if(e(t,n[r]))return!0;r+=1}return!1}function a(e,t){return Object.prototype.hasOwnProperty.call(t,e)}e.r(t),e.d(t,{AnnotationElement:()=>Se,ArrayElement:()=>B,BooleanElement:()=>K,CloneError:()=>ge,CollectionElement:()=>x,CommentElement:()=>Ce,DeepCloneError:()=>ve,Element:()=>A,JSONSerialiser:()=>q,KeyValuePair:()=>E,LinkElement:()=>T,MemberElement:()=>z,Namespace:()=>H,NullElement:()=>F,NumberElement:()=>R,ObjectElement:()=>L,ObjectSlice:()=>w,ParseResultElement:()=>Ve,RefElement:()=>N,ShallowCloneError:()=>Ee,SourceMapElement:()=>C,StringElement:()=>O,StyleElement:()=>I,cloneDeep:()=>ke,cloneShallow:()=>je,hasElementSourceMap:()=>ue,hasElementStyle:()=>le,includesClasses:()=>fe,includesSymbols:()=>he,isAnnotationElement:()=>Le,isArrayElement:()=>ie,isBooleanElement:()=>se,isCommentElement:()=>De,isElement:()=>ee,isLinkElement:()=>xe,isMemberElement:()=>ae,isNullElement:()=>re,isNumberElement:()=>ne,isObjectElement:()=>oe,isParseResultElement:()=>Ie,isPrimitiveElement:()=>ce,isRefElement:()=>ze,isSourceMapElement:()=>qe,isStringElement:()=>te,refract:()=>Pe});const c="function"==typeof Object.is?Object.is:function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};var l=Object.prototype.toString;const u=function(){return"[object Arguments]"===l.call(arguments)?function(e){return"[object Arguments]"===l.call(e)}:function(e){return a("callee",e)}}();var h=!{toString:null}.propertyIsEnumerable("toString"),f=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=function(){return arguments.propertyIsEnumerable("length")}(),p=function(e,t){for(var n=0;n<e.length;){if(e[n]===t)return!0;n+=1}return!1};const y="function"!=typeof Object.keys||m?r(function(e){if(Object(e)!==e)return[];var t,n,r=[],s=m&&u(e);for(t in e)!a(t,e)||s&&"length"===t||(r[r.length]=t);if(h)for(n=f.length-1;n>=0;)a(t=f[n],e)&&!p(r,t)&&(r[r.length]=t),n-=1;return r}):r(function(e){return Object(e)!==e?[]:Object.keys(e)});const d=r(function(e){return null===e?"Null":void 0===e?"Undefined":Object.prototype.toString.call(e).slice(8,-1)});function b(e,t,n,r){var s=i(e);function a(e,t){return g(e,t,n.slice(),r.slice())}return!o(function(e,t){return!o(a,t,e)},i(t),s)}function g(e,t,n,r){if(c(e,t))return!0;var s,i,o=d(e);if(o!==d(t))return!1;if("function"==typeof e["fantasy-land/equals"]||"function"==typeof t["fantasy-land/equals"])return"function"==typeof e["fantasy-land/equals"]&&e["fantasy-land/equals"](t)&&"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](e);if("function"==typeof e.equals||"function"==typeof t.equals)return"function"==typeof e.equals&&e.equals(t)&&"function"==typeof t.equals&&t.equals(e);switch(o){case"Arguments":case"Array":case"Object":if("function"==typeof e.constructor&&"Promise"===(s=e.constructor,null==(i=String(s).match(/^function (\w*)/))?"":i[1]))return e===t;break;case"Boolean":case"Number":case"String":if(typeof e!=typeof t||!c(e.valueOf(),t.valueOf()))return!1;break;case"Date":if(!c(e.valueOf(),t.valueOf()))return!1;break;case"Error":return e.name===t.name&&e.message===t.message;case"RegExp":if(e.source!==t.source||e.global!==t.global||e.ignoreCase!==t.ignoreCase||e.multiline!==t.multiline||e.sticky!==t.sticky||e.unicode!==t.unicode)return!1}for(var l=n.length-1;l>=0;){if(n[l]===e)return r[l]===t;l-=1}switch(o){case"Map":return e.size===t.size&&b(e.entries(),t.entries(),n.concat([e]),r.concat([t]));case"Set":return e.size===t.size&&b(e.values(),t.values(),n.concat([e]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var u=y(e);if(u.length!==y(t).length)return!1;var h=n.concat([e]),f=r.concat([t]);for(l=u.length-1;l>=0;){var m=u[l];if(!a(m,t)||!g(t[m],e[m],h,f))return!1;l-=1}return!0}const v=s(function(e,t){return g(e,t,[],[])});const E=class{key;value;constructor(e,t){this.key=e,this.value=t}toValue(){return{key:this.key?.toValue(),value:this.value?.toValue()}}};class _{elements;constructor(e){this.elements=e??[]}toValue(){return this.elements.map(e=>({key:e.key?.toValue(),value:e.value?.toValue()}))}map(e,t){return this.elements.map(n=>{const r=n.value,s=n.key;if(void 0===r||void 0===s)throw new Error("MemberElement must have both key and value");return void 0!==t?e.call(t,r,s,n):e(r,s,n)})}filter(e,t){const n=this.elements.filter(n=>{const r=n.value,s=n.key;return void 0!==r&&void 0!==s&&(void 0!==t?e.call(t,r,s,n):e(r,s,n))});return new _(n)}reject(e,t){const n=[];for(const r of this.elements){const s=r.value,i=r.key;void 0!==s&&void 0!==i&&(e.call(t,s,i,r)||n.push(r))}return new _(n)}forEach(e,t){this.elements.forEach((n,r)=>{const s=n.value,i=n.key;void 0!==s&&void 0!==i&&(void 0!==t?e.call(t,s,i,n,r):e(s,i,n,r))})}find(e,t){return this.elements.find(n=>{const r=n.value,s=n.key;return void 0!==r&&void 0!==s&&(void 0!==t?e.call(t,r,s,n):e(r,s,n))})}keys(){return this.elements.map(e=>e.key?.toValue()).filter(e=>void 0!==e)}values(){return this.elements.map(e=>e.value?.toValue()).filter(e=>void 0!==e)}get length(){return this.elements.length}get isEmpty(){return 0===this.length}get first(){return this.elements[0]}get(e){return this.elements[e]}push(e){return this.elements.push(e),this}includesKey(e){return this.elements.some(t=>t.key?.equals(e))}[Symbol.iterator](){return this.elements[Symbol.iterator]()}}const w=_;class k{parent;style;startLine;startCharacter;startOffset;endLine;endCharacter;endOffset;_storedElement="element";_content;_meta;_attributes;constructor(e,t,n){void 0!==t&&(this.meta=t),void 0!==n&&(this.attributes=n),void 0!==e&&(this.content=e)}get element(){return this._storedElement}set element(e){this._storedElement=e}get content(){return this._content}set content(e){if(e instanceof k)this._content=e;else if(null!=e&&"string"!=typeof e&&"number"!=typeof e&&"boolean"!=typeof e&&"bigint"!=typeof e&&"symbol"!=typeof e)if(e instanceof E)this._content=e;else if(e instanceof w)this._content=e.elements;else if(Array.isArray(e))this._content=e.map(e=>this.refract(e));else{if("object"!=typeof e)throw new Error("Cannot set content to value of type "+typeof e);this._content=Object.entries(e).map(([e,t])=>new this.MemberElement(e,t))}else this._content=e}get meta(){if(!this._meta){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._meta=new this.ObjectElement}return this._meta}set meta(e){e instanceof k?this._meta=e:this.meta.set(e??{})}get attributes(){if(!this._attributes){if(this.isFrozen){const e=new this.ObjectElement;return e.freeze(),e}this._attributes=new this.ObjectElement}return this._attributes}set attributes(e){e instanceof k?this._attributes=e:this.attributes.set(e??{})}get id(){return this.isFrozen?this.getMetaProperty("id",""):(this.hasMetaProperty("id")||this.setMetaProperty("id",""),this.meta.get("id"))}set id(e){this.setMetaProperty("id",e)}get classes(){return this.isFrozen?this.getMetaProperty("classes",[]):(this.hasMetaProperty("classes")||this.setMetaProperty("classes",[]),this.meta.get("classes"))}set classes(e){this.setMetaProperty("classes",e)}get links(){return this.isFrozen?this.getMetaProperty("links",[]):(this.hasMetaProperty("links")||this.setMetaProperty("links",[]),this.meta.get("links"))}set links(e){this.setMetaProperty("links",e)}get children(){const{_content:e}=this;if(Array.isArray(e))return e;if(e instanceof E){const t=[];return e.key&&t.push(e.key),e.value&&t.push(e.value),t}return e instanceof k?[e]:[]}get isFrozen(){return Object.isFrozen(this)}freeze(){if(!this.isFrozen){this._meta&&(this._meta.parent=this,this._meta.freeze()),this._attributes&&(this._attributes.parent=this,this._attributes.freeze());for(const e of this.children)e.parent=this,e.freeze();Array.isArray(this._content)&&Object.freeze(this._content),Object.freeze(this)}}toValue(){const{_content:e}=this;return e instanceof k||e instanceof E?e.toValue():Array.isArray(e)?e.map(e=>e.toValue()):e}equals(e){const t=e instanceof k?e.toValue():e;return v(this.toValue(),t)}primitive(){}set(e){return this.content=e,this}toRef(e){const t=this.id.toValue();if(""===t)throw new Error("Cannot create reference to an element without an ID");const n=new this.RefElement(t);return"string"==typeof e&&(n.path=this.refract(e)),n}getMetaProperty(e,t){if(!this.hasMetaProperty(e)){if(void 0===t)return;const e=this.refract(t);return e&&this.isFrozen&&e.freeze(),e}return this.meta.get(e)}setMetaProperty(e,t){this.meta.set(e,t)}hasMetaProperty(e){return!this.isMetaEmpty&&this.meta.hasKey(e)}get isMetaEmpty(){return void 0===this._meta||this.meta.isEmpty}getAttributesProperty(e,t){if(!this.hasAttributesProperty(e)){if(this.isFrozen){const e=this.refract(t);return e.freeze(),e}this.attributes.set(e,t)}return this.attributes.get(e)}setAttributesProperty(e,t){this.attributes.set(e,t)}hasAttributesProperty(e){return!this.isAttributesEmpty&&this.attributes.hasKey(e)}get isAttributesEmpty(){return void 0===this._attributes||this.attributes.isEmpty}}const A=k;const O=class extends A{constructor(e,t,n){super(e,t,n),this.element="string"}primitive(){return"string"}get length(){return this.content?.length??0}};class j extends O{constructor(e,t,n){super(e,t,n),this.element="sourceMap"}static transfer(e,t){t.startLine=e.startLine,t.startCharacter=e.startCharacter,t.startOffset=e.startOffset,t.endLine=e.endLine,t.endCharacter=e.endCharacter,t.endOffset=e.endOffset}static from(e){const{startLine:t,startCharacter:n,startOffset:r,endLine:s,endCharacter:i,endOffset:o}=e;if("number"!=typeof t||"number"!=typeof n||"number"!=typeof r||"number"!=typeof s||"number"!=typeof i||"number"!=typeof o)return;const a="sm1:"+[t,n,r,s,i,o].map(P).join("");const c=new j(a);return c.startLine=t,c.startCharacter=n,c.startOffset=r,c.endLine=s,c.endCharacter=i,c.endOffset=o,c}applyTo(e){this.content&&([e.startLine,e.startCharacter,e.startOffset,e.endLine,e.endCharacter,e.endOffset]=function(e){const t=e.startsWith("sm1:")?e.slice(4):e,n=[];let r=0;for(let e=0;e<6;e++){const e=S(t,r);n.push(e.value),r=e.next}return n}(this.content))}}const M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function P(e){let t=e>>>0,n="";do{let e=31&t;t>>>=5,0!==t&&(e|=32),n+=M[e]}while(0!==t);return n}function S(e,t=0){let n=0,r=0,s=t;for(;;){const t=e[s++],i=M.indexOf(t);if(-1===i)throw new Error(`Invalid Base64 VLQ char: ${t}`);if(n|=(31&i)<<r,r+=5,!!!(32&i))break}return{value:n>>>0,next:s}}const C=j;class V extends A{constructor(e,t,n){super(e||[],t,n)}get length(){return this._content.length}get isEmpty(){return 0===this.length}get first(){return this._content[0]}get second(){return this._content[1]}get last(){return this._content.at(-1)}push(...e){for(const t of e)this._content.push(this.refract(t));return this}shift(){return this._content.shift()}unshift(e){this._content.unshift(this.refract(e))}includes(e){return this._content.some(t=>t.equals(e))}findElements(e,t){const n=t||{},r=!!n.recursive,s=void 0===n.results?[]:n.results;for(let t=0;t<this._content.length;t+=1){const n=this._content[t],i=n;r&&"function"==typeof i.findElements&&i.findElements(e,{results:s,recursive:r}),e(n,t,void 0)&&s.push(n)}return s}find(e){const t=this.findElements(e,{recursive:!0});return new this.ArrayElement(t)}findByElement(e){return this.find(t=>t.element===e)}findByClass(e){return this.find(t=>{const n=t.classes;return"function"==typeof n.includes&&n.includes(e)})}getById(e){return this.find(t=>t.id.toValue()===e).first}concat(e){return new(0,this.constructor)(this._content.concat(e._content))}[Symbol.iterator](){return this._content[Symbol.iterator]()}}const x=V;const z=class extends A{constructor(e,t,n,r){super(new E,n,r),this.element="member",void 0!==e&&(this.key=e),arguments.length>=2&&(this.value=t)}primitive(){return"member"}get key(){return this._content.key}set key(e){this._content.key=this.refract(e)}get value(){return this._content.value}set value(e){this._content.value=void 0===e?void 0:this.refract(e)}};const L=class extends x{constructor(e,t,n){super(e||[],t,n),this.element="object"}primitive(){return"object"}toValue(){return this._content.reduce((e,t)=>(e[t.key.toValue()]=t.value?t.value.toValue():void 0,e),{})}get(e){const t=this.getMember(e);if(t)return t.value}getValue(e){const t=this.get(e);if(t)return t.toValue()}getMember(e){if(void 0!==e)return this._content.find(t=>t.key.toValue()===e)}remove(e){let t=null;return this.content=this._content.filter(n=>n.key.toValue()!==e||(t=n,!1)),t}getKey(e){const t=this.getMember(e);if(t)return t.key}set(e,t){if("string"==typeof e){const n=this.getMember(e);n?n.value=t:this._content.push(new z(e,t))}else if("object"==typeof e&&!Array.isArray(e))for(const t of Object.keys(e))this.set(t,e[t]);return this}keys(){return this._content.map(e=>e.key.toValue())}values(){return this._content.map(e=>e.value.toValue())}hasKey(e){return this._content.some(t=>t.key.equals(e))}items(){return this._content.map(e=>[e.key.toValue(),e.value.toValue()])}map(e,t){return this._content.map(n=>e.call(t,n.value,n.key,n))}compactMap(e,t){const n=[];return this.forEach((r,s,i)=>{const o=e.call(t,r,s,i);o&&n.push(o)}),n}filter(e,t){return new w(this._content).filter(e,t)}reject(e,t){const n=[];for(const r of this._content)e.call(t,r.value,r.key,r)||n.push(r);return new w(n)}forEach(e,t){this._content.forEach(n=>e.call(t,n.value,n.key,n))}reduce(e,t){let n,r;void 0!==t?(n=0,r=this.refract(t)):(n=1,r=this._content[0]?.value);for(let t=n;t<this._content.length;t+=1){const n=this._content[t],s=e(r,n.value,n.key,n,this);r=void 0===s?s:this.refract(s)}return r}empty(){return new this.constructor([])}};class D extends L{constructor(e,t,n){super(e,t,n),this.element="__styles__"}static transfer(e,t){t.style=e.style}static from(e){if(e.style)return new D(e.style)}applyTo(e){e.style=this.toValue()}}const I=D;const q=class{namespace;constructor(e){this.namespace=e||new this.Namespace}serialise(e){if(!(e instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${e}\` is not an Element instance`);const t={element:e.element};if(e.isMetaEmpty||(t.meta=this.serialiseObject(e.meta)),e.isAttributesEmpty||(t.attributes=this.serialiseObject(e.attributes)),!(e instanceof C)){const n=C.from(e);n&&(t.meta||(t.meta={}),t.meta.__mappings__=this.serialise(n))}if(!(e instanceof I)){const n=I.from(e);n&&(t.meta||(t.meta={}),t.meta.__styles__=this.serialise(n))}const n=this.serialiseContent(e.content);return void 0!==n&&(t.content=n),t}deserialise(e){if(!e.element)throw new Error("Given value is not an object containing an element name");const t=new(this.namespace.getElementClass(e.element));let n,r;t.element!==e.element&&(t.element=e.element);let s=e.meta;if(e.meta?.__mappings__||e.meta?.__styles__){const{__mappings__:t,__styles__:i,...o}=e.meta;n=t,r=i,s=Object.keys(o).length>0?o:void 0}if(s&&this.deserialiseObject(s,t.meta),n){this.deserialise(n).applyTo(t)}if(r){this.deserialise(r).applyTo(t)}e.attributes&&this.deserialiseObject(e.attributes,t.attributes);const i=this.deserialiseContent(e.content);return void 0===i&&null!==t.content||(t.content=i),t}serialiseContent(e){if(e instanceof this.namespace.elements.Element)return this.serialise(e);if(e instanceof this.namespace.KeyValuePair){const t=e,n={key:this.serialise(t.key)};return t.value&&(n.value=this.serialise(t.value)),n}if(e&&Array.isArray(e)){if(0===e.length)return;return e.map(e=>this.serialise(e))}return e}deserialiseContent(e){if(e){if(e.element)return this.deserialise(e);if(e.key){const t=new this.namespace.KeyValuePair(this.deserialise(e.key));return e.value&&(t.value=this.deserialise(e.value)),t}if(Array.isArray(e))return e.map(e=>this.deserialise(e))}return e}serialiseObject(e){const t={};if(e.forEach((e,n)=>{e&&(t[n.toValue()]=this.serialise(e))}),0!==Object.keys(t).length)return t}deserialiseObject(e,t){Object.keys(e).forEach(n=>{t.set(n,this.deserialise(e[n]))})}};const F=class extends A{constructor(e,t,n){super(e??null,t,n),this.element="null"}primitive(){return"null"}set(e){throw new Error("Cannot set the value of null")}};const R=class extends A{constructor(e,t,n){super(e,t,n),this.element="number"}primitive(){return"number"}};const K=class extends A{constructor(e,t,n){super(e,t,n),this.element="boolean"}primitive(){return"boolean"}};const B=class extends x{constructor(e,t,n){super(e||[],t,n),this.element="array"}primitive(){return"array"}get(e){return this._content[e]}getValue(e){const t=this.get(e);if(t)return t.toValue()}set(e,t){return"number"==typeof e&&void 0!==t?this._content[e]=this.refract(t):this.content=e,this}remove(e){return this._content.splice(e,1)[0]??null}map(e,t){return this._content.map(e,t)}flatMap(e,t){return this._content.flatMap(e,t)}compactMap(e,t){const n=[];for(const r of this._content){const s=e.call(t,r);s&&n.push(s)}return n}filter(e,t){const n=this._content.filter(e,t);return new this.constructor(n)}reject(e,t){const n=[];for(const r of this._content)e.call(t,r)||n.push(r);return new this.constructor(n)}reduce(e,t){let n,r;void 0!==t?(n=0,r=this.refract(t)):(n=1,r=this.first);for(let t=n;t<this.length;t+=1){const n=e(r,this._content[t],t,this);r=void 0===n?n:this.refract(n)}return r}forEach(e,t){this._content.forEach((n,r)=>{e.call(t,n,r)})}empty(){return new this.constructor([])}};const N=class extends A{constructor(e,t,n){super(e||[],t,n),this.element="ref",this.path||(this.path="element")}get path(){if(this.hasAttributesProperty("path"))return this.attributes.get("path")}set path(e){this.attributes.set("path",e)}};const T=class extends A{constructor(e,t,n){super(e||[],t,n),this.element="link"}get relation(){if(this.hasAttributesProperty("relation"))return this.attributes.get("relation")}set relation(e){this.attributes.set("relation",e)}get href(){if(this.hasAttributesProperty("href"))return this.attributes.get("href")}set href(e){this.attributes.set("href",e)}},U=e=>null===e,W=e=>"string"==typeof e,G=e=>"number"==typeof e,J=e=>"boolean"==typeof e,Q=e=>null!==e&&"object"==typeof e;class ${elementMap={};elementDetection=[];Element;KeyValuePair;_elements;_attributeElementKeys=[];_attributeElementArrayKeys=[];constructor(e){this.Element=A,this.KeyValuePair=E,e&&e.noDefault||this.useDefault()}use(e){return e.namespace&&e.namespace({base:this}),e.load&&e.load({base:this}),this}useDefault(){return this.register("null",F).register("string",O).register("number",R).register("boolean",K).register("array",B).register("object",L).register("member",z).register("ref",N).register("link",T).register("sourceMap",C),this.detect(U,F,!1).detect(W,O,!1).detect(G,R,!1).detect(J,K,!1).detect(Array.isArray,B,!1).detect(Q,L,!1),this}register(e,t){return this._elements=void 0,this.elementMap[e]=t,this}unregister(e){return this._elements=void 0,delete this.elementMap[e],this}detect(e,t,n){return void 0===n||n?this.elementDetection.unshift([e,t]):this.elementDetection.push([e,t]),this}toElement(e){if(e instanceof this.Element)return e;let t;for(const[n,r]of this.elementDetection)if(n(e)){t=new r(e);break}return t}getElementClass(e){const t=this.elementMap[e];return void 0===t?this.Element:t}fromRefract(e){return this.serialiser.deserialise(e)}toRefract(e){return this.serialiser.serialise(e)}get elements(){return void 0===this._elements&&(this._elements={Element:this.Element},Object.keys(this.elementMap).forEach(e=>{const t=e[0].toUpperCase()+e.substring(1);this._elements[t]=this.elementMap[e]})),this._elements}get serialiser(){return new q(this)}}q.prototype.Namespace=$;const H=$;function X(e,t,n){if(n||(n=new Y),function(e){var t=typeof e;return null==e||"object"!=t&&"function"!=t}(e))return e;var r,s=function(r){var s=n.get(e);if(s)return s;for(var i in n.set(e,r),e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=t?X(e[i],!0,n):e[i]);return r};switch(d(e)){case"Object":return s(Object.create(Object.getPrototypeOf(e)));case"Array":return s(Array(e.length));case"Date":return new Date(e.valueOf());case"RegExp":return r=e,new RegExp(r.source,r.flags?r.flags:(r.global?"g":"")+(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.sticky?"y":"")+(r.unicode?"u":"")+(r.dotAll?"s":""));case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":return e.slice();default:return e}}var Y=function(){function e(){this.map={},this.length=0}return e.prototype.set=function(e,t){var n=this.hash(e),r=this.map[n];r||(this.map[n]=r=[]),r.push([e,t]),this.length+=1},e.prototype.hash=function(e){var t=[];for(var n in e)t.push(Object.prototype.toString.call(e[n]));return t.join()},e.prototype.get=function(e){if(this.length<=180)for(var t in this.map)for(var n=this.map[t],r=0;r<n.length;r+=1){if((i=n[r])[0]===e)return i[1]}else{var s=this.hash(e);if(n=this.map[s])for(r=0;r<n.length;r+=1){var i;if((i=n[r])[0]===e)return i[1]}}},e}();const Z=r(function(e){return null!=e&&"function"==typeof e.clone?e.clone():X(e,!0)}),ee=e=>e instanceof A,te=e=>e instanceof O,ne=e=>e instanceof R,re=e=>e instanceof F,se=e=>e instanceof K,ie=e=>e instanceof B,oe=e=>e instanceof L,ae=e=>e instanceof z,ce=e=>oe(e)&&"object"===e.element||ie(e)&&"array"===e.element||se(e)&&"boolean"===e.element||ne(e)&&"number"===e.element||te(e)&&"string"===e.element||re(e)&&"null"===e.element||ae(e)&&"member"===e.element,le=e=>void 0!==e.style,ue=e=>"number"==typeof e.startLine&&"number"==typeof e.startCharacter&&"number"==typeof e.startOffset&&"number"==typeof e.endLine&&"number"==typeof e.endCharacter&&"number"==typeof e.endOffset,he=(e,t)=>{if(0===t.length)return!0;if(!e.hasAttributesProperty("symbols"))return!1;const n=e.attributes.get("symbols");return!!ie(n)&&t.every(e=>n.includes(e))},fe=(e,t)=>0===t.length||!!ee(e)&&(!e.isMetaEmpty&&(!!e.hasMetaProperty("classes")&&t.every(t=>e.classes.includes(t))));class me extends AggregateError{constructor(e,t,n){super(e,t,n),this.name=this.constructor.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}const pe=me;class ye extends Error{static[Symbol.hasInstance](e){return super[Symbol.hasInstance](e)||Function.prototype[Symbol.hasInstance].call(pe,e)}constructor(e,t){super(e,t),this.name=this.constructor.name,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}const de=ye;const be=class extends de{constructor(e,t){if(super(e,t),null!=t&&"object"==typeof t){const{cause:e,...n}=t;Object.assign(this,n)}}};const ge=class extends be{value;constructor(e,t){super(e,t),void 0!==t&&(this.value=t.value)}};const ve=class extends ge{};const Ee=class extends ge{},_e=(e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const s=Oe(e);n.set(e,s);const{content:i}=e;return Array.isArray(i)?s.content=i.map(e=>_e(e,r)):ee(i)?s.content=_e(i,r):s.content=i instanceof E?we(i,r):i,s},we=(e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const{key:s,value:i}=e,o=void 0!==s?_e(s,r):void 0,a=void 0!==i?_e(i,r):void 0,c=new E(o,a);return n.set(e,c),c},ke=(e,t={})=>{if(e instanceof E)return we(e,t);if(e instanceof w)return((e,t)=>{const{visited:n=new WeakMap}=t,r={...t,visited:n};if(n.has(e))return n.get(e);const s=[...e].map(e=>_e(e,r)),i=new w(s);return n.set(e,i),i})(e,t);if(ee(e))return _e(e,t);throw new ve("Value provided to cloneDeep function couldn't be cloned",{value:e})};ke.safe=e=>{try{return ke(e)}catch{return e}};const Ae=e=>{const{key:t,value:n}=e;return new E(t,n)},Oe=e=>{const t=new(0,e.constructor);t.element=e.element,e.isMetaEmpty||(t.meta=ke(e.meta)),e.isAttributesEmpty||(t.attributes=ke(e.attributes)),ue(e)&&C.transfer(e,t),le(e)&&(t.style=Z(e.style));const{content:n}=e;return ee(n)?t.content=Oe(n):Array.isArray(n)?t.content=[...n]:t.content=n instanceof E?Ae(n):n,t},je=e=>{if(e instanceof E)return Ae(e);if(e instanceof w)return(e=>{const t=[...e];return new w(t)})(e);if(ee(e))return Oe(e);throw new Ee("Value provided to cloneShallow function couldn't be cloned",{value:e})};function Me(e){return void 0===e?new F:Pe(e)}function Pe(e){if(e instanceof A)return e;if("string"==typeof e)return new O(e);if("number"==typeof e)return new R(e);if("boolean"==typeof e)return new K(e);if(null===e)return new F;if(Array.isArray(e))return new B(e.map(Me));if("object"==typeof e)return new L(e);throw new Error("Cannot refract value of type "+typeof e)}je.safe=e=>{try{return je(e)}catch{return e}},A.prototype.ObjectElement=L,A.prototype.ArrayElement=B,A.prototype.RefElement=N,A.prototype.MemberElement=z,A.prototype.refract=Pe;const Se=class extends O{constructor(e,t,n){super(e,t,n),this.element="annotation"}get code(){if(this.hasAttributesProperty("code"))return this.attributes.get("code")}set code(e){this.attributes.set("code",e)}};const Ce=class extends O{constructor(e,t,n){super(e,t,n),this.element="comment"}};const Ve=class extends B{constructor(e,t,n){super(e,t,n),this.element="parseResult"}get api(){return this.filter(e=>fe(e,["api"])).first}get results(){return this.filter(e=>fe(e,["result"]))}get result(){return this.results.first}get annotations(){return this.filter(e=>"annotation"===e.element)}get warnings(){return this.filter(e=>"annotation"===e.element&&fe(e,["warning"]))}get errors(){return this.filter(e=>"annotation"===e.element&&fe(e,["error"]))}get isEmpty(){return 0===this.reject(e=>"annotation"===e.element).length}replaceResult(e){const{result:t}=this;if(void 0===t)return!1;const n=this._content,r=n.findIndex(e=>e===t);return-1!==r&&(n[r]=e,!0)}},xe=e=>e instanceof T,ze=e=>e instanceof N,Le=e=>e instanceof Se,De=e=>e instanceof Ce,Ie=e=>e instanceof Ve,qe=e=>e instanceof C;return t})());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-datamodel",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.0",
|
|
4
4
|
"description": "Data model primitives for ApiDOM.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"license": "Apache-2.0",
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
42
|
-
"@speclynx/apidom-error": "^2.
|
|
42
|
+
"@speclynx/apidom-error": "^2.12.0",
|
|
43
43
|
"ramda": "~0.32.0"
|
|
44
44
|
},
|
|
45
45
|
"files": [
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"README.md",
|
|
53
53
|
"CHANGELOG.md"
|
|
54
54
|
],
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "672efe907afef6ae5b547a8028db077297a0c52e"
|
|
56
56
|
}
|
package/src/clone/index.cjs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.cloneShallow = exports.cloneDeep = exports.ShallowCloneError = exports.DeepCloneError = exports.CloneError = void 0;
|
|
6
|
+
var _ramda = require("ramda");
|
|
6
7
|
var _ObjectSlice = _interopRequireDefault(require("../ObjectSlice.cjs"));
|
|
7
8
|
var _KeyValuePair = _interopRequireDefault(require("../KeyValuePair.cjs"));
|
|
8
9
|
var _index = require("../predicates/index.cjs");
|
|
@@ -139,6 +140,9 @@ const cloneShallowElement = element => {
|
|
|
139
140
|
if ((0, _index.hasElementSourceMap)(element)) {
|
|
140
141
|
_SourceMap.default.transfer(element, copy);
|
|
141
142
|
}
|
|
143
|
+
if ((0, _index.hasElementStyle)(element)) {
|
|
144
|
+
copy.style = (0, _ramda.clone)(element.style);
|
|
145
|
+
}
|
|
142
146
|
const {
|
|
143
147
|
content
|
|
144
148
|
} = element;
|
package/src/clone/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { clone } from 'ramda';
|
|
1
2
|
import ObjectSlice from "../ObjectSlice.mjs";
|
|
2
3
|
import KeyValuePair from "../KeyValuePair.mjs";
|
|
3
|
-
import { isElement, hasElementSourceMap } from "../predicates/index.mjs";
|
|
4
|
+
import { isElement, hasElementSourceMap, hasElementStyle } from "../predicates/index.mjs";
|
|
4
5
|
import SourceMapElement from "../elements/SourceMap.mjs";
|
|
5
6
|
import DeepCloneError from "./errors/DeepCloneError.mjs";
|
|
6
7
|
import ShallowCloneError from "./errors/ShallowCloneError.mjs";
|
|
@@ -127,6 +128,9 @@ const cloneShallowElement = element => {
|
|
|
127
128
|
if (hasElementSourceMap(element)) {
|
|
128
129
|
SourceMapElement.transfer(element, copy);
|
|
129
130
|
}
|
|
131
|
+
if (hasElementStyle(element)) {
|
|
132
|
+
copy.style = clone(element.style);
|
|
133
|
+
}
|
|
130
134
|
const {
|
|
131
135
|
content
|
|
132
136
|
} = element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _ObjectElement = _interopRequireDefault(require("../primitives/ObjectElement.cjs"));
|
|
7
|
+
/**
|
|
8
|
+
* Shape with optional style property.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* StyleElement stores format-specific style information for round-trip preservation.
|
|
14
|
+
*
|
|
15
|
+
* The style data is stored as a plain object with format-specific namespaces
|
|
16
|
+
* (e.g., `yaml`, `json`). This element exists only during serialization/deserialization
|
|
17
|
+
* (refract format) - in memory, style lives directly on `element.style`.
|
|
18
|
+
*
|
|
19
|
+
* Follows the same pattern as SourceMapElement with __mappings__.
|
|
20
|
+
*
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
class StyleElement extends _ObjectElement.default {
|
|
24
|
+
constructor(content, meta, attributes) {
|
|
25
|
+
super(content, meta, attributes);
|
|
26
|
+
this.element = '__styles__';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Transfers style property from one element to another.
|
|
31
|
+
*/
|
|
32
|
+
static transfer(from, to) {
|
|
33
|
+
to.style = from.style;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Creates a StyleElement from an element's style property.
|
|
38
|
+
* Returns undefined if the element has no style.
|
|
39
|
+
*/
|
|
40
|
+
static from(source) {
|
|
41
|
+
if (!source.style) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return new StyleElement(source.style);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Restores the style property on the target element from this StyleElement.
|
|
49
|
+
*/
|
|
50
|
+
applyTo(target) {
|
|
51
|
+
target.style = this.toValue();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
var _default = exports.default = StyleElement;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import ObjectElement from "../primitives/ObjectElement.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Shape with optional style property.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* StyleElement stores format-specific style information for round-trip preservation.
|
|
8
|
+
*
|
|
9
|
+
* The style data is stored as a plain object with format-specific namespaces
|
|
10
|
+
* (e.g., `yaml`, `json`). This element exists only during serialization/deserialization
|
|
11
|
+
* (refract format) - in memory, style lives directly on `element.style`.
|
|
12
|
+
*
|
|
13
|
+
* Follows the same pattern as SourceMapElement with __mappings__.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
class StyleElement extends ObjectElement {
|
|
18
|
+
constructor(content, meta, attributes) {
|
|
19
|
+
super(content, meta, attributes);
|
|
20
|
+
this.element = '__styles__';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Transfers style property from one element to another.
|
|
25
|
+
*/
|
|
26
|
+
static transfer(from, to) {
|
|
27
|
+
to.style = from.style;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Creates a StyleElement from an element's style property.
|
|
32
|
+
* Returns undefined if the element has no style.
|
|
33
|
+
*/
|
|
34
|
+
static from(source) {
|
|
35
|
+
if (!source.style) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
return new StyleElement(source.style);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Restores the style property on the target element from this StyleElement.
|
|
43
|
+
*/
|
|
44
|
+
applyTo(target) {
|
|
45
|
+
target.style = this.toValue();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export default StyleElement;
|
package/src/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
|
-
exports.refract = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isCommentElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = exports.cloneShallow = exports.cloneDeep = exports.StringElement = exports.SourceMapElement = exports.ShallowCloneError = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.LinkElement = exports.KeyValuePair = exports.JSONSerialiser = exports.Element = exports.DeepCloneError = exports.CommentElement = exports.CollectionElement = exports.CloneError = exports.BooleanElement = exports.ArrayElement = exports.AnnotationElement = void 0;
|
|
5
|
+
exports.refract = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isCommentElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementStyle = exports.hasElementSourceMap = exports.cloneShallow = exports.cloneDeep = exports.StyleElement = exports.StringElement = exports.SourceMapElement = exports.ShallowCloneError = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.LinkElement = exports.KeyValuePair = exports.JSONSerialiser = exports.Element = exports.DeepCloneError = exports.CommentElement = exports.CollectionElement = exports.CloneError = exports.BooleanElement = exports.ArrayElement = exports.AnnotationElement = void 0;
|
|
6
6
|
var _Namespace = _interopRequireDefault(require("./Namespace.cjs"));
|
|
7
7
|
exports.Namespace = _Namespace.default;
|
|
8
8
|
var _KeyValuePair = _interopRequireDefault(require("./KeyValuePair.cjs"));
|
|
@@ -30,6 +30,7 @@ exports.AnnotationElement = _registration.AnnotationElement;
|
|
|
30
30
|
exports.CommentElement = _registration.CommentElement;
|
|
31
31
|
exports.ParseResultElement = _registration.ParseResultElement;
|
|
32
32
|
exports.SourceMapElement = _registration.SourceMapElement;
|
|
33
|
+
exports.StyleElement = _registration.StyleElement;
|
|
33
34
|
exports.refract = _registration.refract;
|
|
34
35
|
var _JSONSerialiser = _interopRequireDefault(require("./serialisers/JSONSerialiser.cjs"));
|
|
35
36
|
exports.JSONSerialiser = _JSONSerialiser.default;
|
|
@@ -49,6 +50,7 @@ exports.isCommentElement = _index2.isCommentElement;
|
|
|
49
50
|
exports.isParseResultElement = _index2.isParseResultElement;
|
|
50
51
|
exports.isSourceMapElement = _index2.isSourceMapElement;
|
|
51
52
|
exports.isPrimitiveElement = _index2.isPrimitiveElement;
|
|
53
|
+
exports.hasElementStyle = _index2.hasElementStyle;
|
|
52
54
|
exports.hasElementSourceMap = _index2.hasElementSourceMap;
|
|
53
55
|
exports.includesSymbols = _index2.includesSymbols;
|
|
54
56
|
exports.includesClasses = _index2.includesClasses;
|
package/src/index.mjs
CHANGED
|
@@ -2,9 +2,9 @@ export { default as Namespace } from "./Namespace.mjs";
|
|
|
2
2
|
export { default as KeyValuePair } from "./KeyValuePair.mjs"; // Clone utilities
|
|
3
3
|
export { cloneShallow, cloneDeep, CloneError, DeepCloneError, ShallowCloneError } from "./clone/index.mjs";
|
|
4
4
|
// Re-export elements directly to preserve JSDoc
|
|
5
|
-
export { ObjectSlice, Element, CollectionElement, StringElement, NumberElement, BooleanElement, NullElement, ArrayElement, ObjectElement, MemberElement, RefElement, LinkElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement, refract } from "./registration.mjs";
|
|
5
|
+
export { ObjectSlice, Element, CollectionElement, StringElement, NumberElement, BooleanElement, NullElement, ArrayElement, ObjectElement, MemberElement, RefElement, LinkElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement, StyleElement, refract } from "./registration.mjs";
|
|
6
6
|
export { default as JSONSerialiser } from "./serialisers/JSONSerialiser.mjs"; // Re-export types - essential public API
|
|
7
7
|
// Re-export types - for advanced users extending the library
|
|
8
8
|
// Re-export types - used in public method signatures
|
|
9
9
|
// Re-export predicates
|
|
10
|
-
export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isObjectElement, isArrayElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isCommentElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
|
|
10
|
+
export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isObjectElement, isArrayElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isCommentElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementStyle, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
|
package/src/predicates/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isCommentElement = exports.isBooleanElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = void 0;
|
|
4
|
+
exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isCommentElement = exports.isBooleanElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementStyle = exports.hasElementSourceMap = void 0;
|
|
5
5
|
var _primitives = require("./primitives.cjs");
|
|
6
6
|
exports.isArrayElement = _primitives.isArrayElement;
|
|
7
7
|
exports.isElement = _primitives.isElement;
|
|
@@ -19,11 +19,20 @@ exports.isAnnotationElement = _elements.isAnnotationElement;
|
|
|
19
19
|
exports.isCommentElement = _elements.isCommentElement;
|
|
20
20
|
exports.isParseResultElement = _elements.isParseResultElement;
|
|
21
21
|
exports.isSourceMapElement = _elements.isSourceMapElement;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if an element has format-specific style information.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
const hasElementStyle = element => {
|
|
27
|
+
return element.style !== undefined;
|
|
28
|
+
};
|
|
29
|
+
|
|
22
30
|
/**
|
|
23
31
|
* Checks if an element has complete source position information.
|
|
24
32
|
* Returns true only if all 6 position properties are numbers.
|
|
25
33
|
* @public
|
|
26
34
|
*/
|
|
35
|
+
exports.hasElementStyle = hasElementStyle;
|
|
27
36
|
const hasElementSourceMap = element => {
|
|
28
37
|
return typeof element.startLine === 'number' && typeof element.startCharacter === 'number' && typeof element.startOffset === 'number' && typeof element.endLine === 'number' && typeof element.endCharacter === 'number' && typeof element.endOffset === 'number';
|
|
29
38
|
};
|
package/src/predicates/index.mjs
CHANGED
|
@@ -2,6 +2,14 @@ import { isArrayElement, isElement } from "./primitives.mjs";
|
|
|
2
2
|
export { isStringElement, isNumberElement, isNullElement, isBooleanElement, isArrayElement, isObjectElement, isMemberElement, isPrimitiveElement } from "./primitives.mjs";
|
|
3
3
|
export { isElement };
|
|
4
4
|
export { isLinkElement, isRefElement, isAnnotationElement, isCommentElement, isParseResultElement, isSourceMapElement } from "./elements.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Checks if an element has format-specific style information.
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export const hasElementStyle = element => {
|
|
10
|
+
return element.style !== undefined;
|
|
11
|
+
};
|
|
12
|
+
|
|
5
13
|
/**
|
|
6
14
|
* Checks if an element has complete source position information.
|
|
7
15
|
* Returns true only if all 6 position properties are numbers.
|
|
@@ -32,6 +32,12 @@ class Element {
|
|
|
32
32
|
*/
|
|
33
33
|
parent;
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Format-specific style information for round-trip preservation.
|
|
37
|
+
* Each format owns its own namespace (e.g., `yaml`, `json`).
|
|
38
|
+
*/
|
|
39
|
+
style;
|
|
40
|
+
|
|
35
41
|
// ============================================================================
|
|
36
42
|
// Source Position (LSP-compatible, TextDocument-compatible, UTF-16 code units)
|
|
37
43
|
// web-tree-sitter automatically provides position data in UTF-16 code units.
|
|
@@ -240,7 +246,13 @@ class Element {
|
|
|
240
246
|
|
|
241
247
|
/** Unique identifier for this element. */
|
|
242
248
|
get id() {
|
|
243
|
-
|
|
249
|
+
if (this.isFrozen) {
|
|
250
|
+
return this.getMetaProperty('id', '');
|
|
251
|
+
}
|
|
252
|
+
if (!this.hasMetaProperty('id')) {
|
|
253
|
+
this.setMetaProperty('id', '');
|
|
254
|
+
}
|
|
255
|
+
return this.meta.get('id');
|
|
244
256
|
}
|
|
245
257
|
set id(value) {
|
|
246
258
|
this.setMetaProperty('id', value);
|
|
@@ -248,7 +260,13 @@ class Element {
|
|
|
248
260
|
|
|
249
261
|
/** CSS-like class names. */
|
|
250
262
|
get classes() {
|
|
251
|
-
|
|
263
|
+
if (this.isFrozen) {
|
|
264
|
+
return this.getMetaProperty('classes', []);
|
|
265
|
+
}
|
|
266
|
+
if (!this.hasMetaProperty('classes')) {
|
|
267
|
+
this.setMetaProperty('classes', []);
|
|
268
|
+
}
|
|
269
|
+
return this.meta.get('classes');
|
|
252
270
|
}
|
|
253
271
|
set classes(value) {
|
|
254
272
|
this.setMetaProperty('classes', value);
|
|
@@ -256,7 +274,13 @@ class Element {
|
|
|
256
274
|
|
|
257
275
|
/** Hyperlinks associated with this element. */
|
|
258
276
|
get links() {
|
|
259
|
-
|
|
277
|
+
if (this.isFrozen) {
|
|
278
|
+
return this.getMetaProperty('links', []);
|
|
279
|
+
}
|
|
280
|
+
if (!this.hasMetaProperty('links')) {
|
|
281
|
+
this.setMetaProperty('links', []);
|
|
282
|
+
}
|
|
283
|
+
return this.meta.get('links');
|
|
260
284
|
}
|
|
261
285
|
set links(value) {
|
|
262
286
|
this.setMetaProperty('links', value);
|
|
@@ -407,16 +431,26 @@ class Element {
|
|
|
407
431
|
}
|
|
408
432
|
|
|
409
433
|
/**
|
|
410
|
-
* Gets a meta property
|
|
434
|
+
* Gets a meta property.
|
|
435
|
+
*
|
|
436
|
+
* When the property doesn't exist:
|
|
437
|
+
* - With defaultValue: returns a new refracted element instance (not cached)
|
|
438
|
+
* - Without defaultValue: returns undefined
|
|
439
|
+
*
|
|
440
|
+
* Note: Each call with a default creates a new instance. Use setMetaProperty
|
|
441
|
+
* first if you need reference equality across multiple accesses.
|
|
411
442
|
*/
|
|
443
|
+
|
|
412
444
|
getMetaProperty(name, defaultValue) {
|
|
413
|
-
if (!this.
|
|
414
|
-
if (
|
|
415
|
-
|
|
445
|
+
if (!this.hasMetaProperty(name)) {
|
|
446
|
+
if (defaultValue === undefined) {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
const element = this.refract(defaultValue);
|
|
450
|
+
if (element && this.isFrozen) {
|
|
416
451
|
element.freeze();
|
|
417
|
-
return element;
|
|
418
452
|
}
|
|
419
|
-
|
|
453
|
+
return element;
|
|
420
454
|
}
|
|
421
455
|
return this.meta.get(name);
|
|
422
456
|
}
|
|
@@ -26,6 +26,12 @@ class Element {
|
|
|
26
26
|
*/
|
|
27
27
|
parent;
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Format-specific style information for round-trip preservation.
|
|
31
|
+
* Each format owns its own namespace (e.g., `yaml`, `json`).
|
|
32
|
+
*/
|
|
33
|
+
style;
|
|
34
|
+
|
|
29
35
|
// ============================================================================
|
|
30
36
|
// Source Position (LSP-compatible, TextDocument-compatible, UTF-16 code units)
|
|
31
37
|
// web-tree-sitter automatically provides position data in UTF-16 code units.
|
|
@@ -234,7 +240,13 @@ class Element {
|
|
|
234
240
|
|
|
235
241
|
/** Unique identifier for this element. */
|
|
236
242
|
get id() {
|
|
237
|
-
|
|
243
|
+
if (this.isFrozen) {
|
|
244
|
+
return this.getMetaProperty('id', '');
|
|
245
|
+
}
|
|
246
|
+
if (!this.hasMetaProperty('id')) {
|
|
247
|
+
this.setMetaProperty('id', '');
|
|
248
|
+
}
|
|
249
|
+
return this.meta.get('id');
|
|
238
250
|
}
|
|
239
251
|
set id(value) {
|
|
240
252
|
this.setMetaProperty('id', value);
|
|
@@ -242,7 +254,13 @@ class Element {
|
|
|
242
254
|
|
|
243
255
|
/** CSS-like class names. */
|
|
244
256
|
get classes() {
|
|
245
|
-
|
|
257
|
+
if (this.isFrozen) {
|
|
258
|
+
return this.getMetaProperty('classes', []);
|
|
259
|
+
}
|
|
260
|
+
if (!this.hasMetaProperty('classes')) {
|
|
261
|
+
this.setMetaProperty('classes', []);
|
|
262
|
+
}
|
|
263
|
+
return this.meta.get('classes');
|
|
246
264
|
}
|
|
247
265
|
set classes(value) {
|
|
248
266
|
this.setMetaProperty('classes', value);
|
|
@@ -250,7 +268,13 @@ class Element {
|
|
|
250
268
|
|
|
251
269
|
/** Hyperlinks associated with this element. */
|
|
252
270
|
get links() {
|
|
253
|
-
|
|
271
|
+
if (this.isFrozen) {
|
|
272
|
+
return this.getMetaProperty('links', []);
|
|
273
|
+
}
|
|
274
|
+
if (!this.hasMetaProperty('links')) {
|
|
275
|
+
this.setMetaProperty('links', []);
|
|
276
|
+
}
|
|
277
|
+
return this.meta.get('links');
|
|
254
278
|
}
|
|
255
279
|
set links(value) {
|
|
256
280
|
this.setMetaProperty('links', value);
|
|
@@ -401,16 +425,26 @@ class Element {
|
|
|
401
425
|
}
|
|
402
426
|
|
|
403
427
|
/**
|
|
404
|
-
* Gets a meta property
|
|
428
|
+
* Gets a meta property.
|
|
429
|
+
*
|
|
430
|
+
* When the property doesn't exist:
|
|
431
|
+
* - With defaultValue: returns a new refracted element instance (not cached)
|
|
432
|
+
* - Without defaultValue: returns undefined
|
|
433
|
+
*
|
|
434
|
+
* Note: Each call with a default creates a new instance. Use setMetaProperty
|
|
435
|
+
* first if you need reference equality across multiple accesses.
|
|
405
436
|
*/
|
|
437
|
+
|
|
406
438
|
getMetaProperty(name, defaultValue) {
|
|
407
|
-
if (!this.
|
|
408
|
-
if (
|
|
409
|
-
|
|
439
|
+
if (!this.hasMetaProperty(name)) {
|
|
440
|
+
if (defaultValue === undefined) {
|
|
441
|
+
return undefined;
|
|
442
|
+
}
|
|
443
|
+
const element = this.refract(defaultValue);
|
|
444
|
+
if (element && this.isFrozen) {
|
|
410
445
|
element.freeze();
|
|
411
|
-
return element;
|
|
412
446
|
}
|
|
413
|
-
|
|
447
|
+
return element;
|
|
414
448
|
}
|
|
415
449
|
return this.meta.get(name);
|
|
416
450
|
}
|
package/src/registration.cjs
CHANGED
|
@@ -33,6 +33,8 @@ var _ParseResult = _interopRequireDefault(require("./elements/ParseResult.cjs"))
|
|
|
33
33
|
exports.ParseResultElement = _ParseResult.default;
|
|
34
34
|
var _SourceMap = _interopRequireDefault(require("./elements/SourceMap.cjs"));
|
|
35
35
|
exports.SourceMapElement = _SourceMap.default;
|
|
36
|
+
var _Style = _interopRequireDefault(require("./elements/Style.cjs"));
|
|
37
|
+
exports.StyleElement = _Style.default;
|
|
36
38
|
var _ObjectSlice = _interopRequireDefault(require("./ObjectSlice.cjs"));
|
|
37
39
|
exports.ObjectSlice = _ObjectSlice.default;
|
|
38
40
|
var _KeyValuePair = _interopRequireDefault(require("./KeyValuePair.cjs"));
|
package/src/registration.mjs
CHANGED
|
@@ -13,6 +13,7 @@ import AnnotationElement from "./elements/Annotation.mjs";
|
|
|
13
13
|
import CommentElement from "./elements/Comment.mjs";
|
|
14
14
|
import ParseResultElement from "./elements/ParseResult.mjs";
|
|
15
15
|
import SourceMapElement from "./elements/SourceMap.mjs";
|
|
16
|
+
import StyleElement from "./elements/Style.mjs";
|
|
16
17
|
import ObjectSlice from "./ObjectSlice.mjs";
|
|
17
18
|
import KeyValuePair from "./KeyValuePair.mjs";
|
|
18
19
|
/**
|
|
@@ -69,6 +70,6 @@ Element.prototype.refract = refract;
|
|
|
69
70
|
* Contains all of the element classes, and related structures and methods
|
|
70
71
|
* for handling with element instances.
|
|
71
72
|
*/
|
|
72
|
-
export { Element, CollectionElement, NullElement, StringElement, NumberElement, BooleanElement, ArrayElement, MemberElement, ObjectElement, LinkElement, RefElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement, refract, ObjectSlice, KeyValuePair };
|
|
73
|
+
export { Element, CollectionElement, NullElement, StringElement, NumberElement, BooleanElement, ArrayElement, MemberElement, ObjectElement, LinkElement, RefElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement, StyleElement, refract, ObjectSlice, KeyValuePair };
|
|
73
74
|
|
|
74
75
|
// Re-export types from element classes
|