@datagrok/helm 2.1.16 → 2.1.17

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/.eslintrc.json CHANGED
@@ -25,8 +25,7 @@
25
25
  "linebreak-style": "off",
26
26
  "curly": [
27
27
  "error",
28
- "multi-or-nest",
29
- "consistent"
28
+ "multi-or-nest"
30
29
  ],
31
30
  "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
32
31
  "block-spacing": [2, "always"],
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # Helm changelog
2
+
3
+ ## 2.2.0 (WIP)
4
+
5
+ ### Bug fixes
6
+
7
+ * Fix Helm cell renderer, allowing to render with gaps by skipping.
8
+ * Fix message WebEditor not supporting Helm with gaps.
9
+ * Prevent display tooltip by fallback cell renderer while WebEditor renders.
10
+ * Reset monomer placer on monomer lib changed.
11
+
12
+ ## 2.1.16 (2023-07-21)
13
+
14
+ This release focuses on stability.
15
+
16
+ *Dependency: datagarok-api >= 1.10.2*
17
+
18
+ ### Bug Fixes
19
+
20
+ * Fixed the **To Atomic Level** function for helm sequences.
21
+ * `Neither peptide, nor nucleotide` error when calling **Helm Web Editor**
22
+ * Macromolecule detector for alphabet UN.
@@ -1,2 +1,2 @@
1
- var helm_test;(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{_package:()=>it,test:()=>at,tests:()=>o});const n=DG,r=grok;var s=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const o={},i="Auto Tests",a={};let l;var c;!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(c||(c={}));class u{constructor(t,e){this.catchUnhandled=!0,this.report=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==e&&(this.report=e)}}class h{constructor(t,e,n,r){var o;this.category=t,this.name=e,null!=r||(r={}),null!==(o=r.timeout)&&void 0!==o||(r.timeout=3e4),this.options=r,this.test=()=>s(this,void 0,void 0,(function*(){return new Promise(((t,e)=>s(this,void 0,void 0,(function*(){let r="";try{r=yield n()}catch(t){e(t)}t(r)}))))}))}}function g(t,e,n){null==o[l]&&(o[l]={}),null==o[l].tests&&(o[l].tests=[]),o[l].tests.push(new h(l,t,e,n))}function f(t,e=!0,n){if(n=n?`${n}, `:"",t!==e)throw new Error(`${n}Expected "${e}", got "${t}"`)}function p(t,e,n=.001,r){if(t===Number.POSITIVE_INFINITY&&e===Number.POSITIVE_INFINITY||t===Number.NEGATIVE_INFINITY&&e===Number.NEGATIVE_INFINITY||t===Number.NaN&&e===Number.NaN||isNaN(t)&&isNaN(e))return;const s=Math.abs(t-e)<n;if(f(s,!0,`${null!=r?r:""} (tolerance = ${n})`),!s)throw new Error(`Expected ${e}, got ${t} (tolerance = ${n})`)}function d(t,e){for(const[n,r]of Object.entries(e)){if(!t.hasOwnProperty(n))throw new Error(`Expected property "${n}" not found`);const e=t[n];if(e instanceof Array&&r instanceof Array)m(e,r);else if(e instanceof Object&&r instanceof Object)d(e,r);else if(Number.isFinite(e)&&Number.isFinite(r))p(e,r);else if(e!=r)throw new Error(`Expected (${r}) for key '${n}', got (${e})`)}}function m(t,e){const n=t.length,r=e.length;if(n!=r)throw new Error(`Arrays are of different length: actual array length is ${n} and expected array length is ${r}`);for(let r=0;r<n;r++)if(t[r]instanceof Array&&e[r]instanceof Array)m(t[r],e[r]);else if(t[r]instanceof Object&&e[r]instanceof Object)d(t[r],e[r]);else if(t[r]!=e[r])throw new Error(`Expected ${e[r]} at position ${r}, got ${t[r]}`)}function C(t,e,n){var r;l=t,e(),o[l]&&(o[l].clear=null===(r=null==n?void 0:n.clear)||void 0===r||r,o[l].timeout=null==n?void 0:n.timeout)}function E(t){null==o[l]&&(o[l]={}),o[l].before=t}function T(t){null==o[l]&&(o[l]={}),o[l].after=t}function b(t,e){return t.replace(new RegExp(e.name,"gi"),e.nqName)}function A(t,e,r){var o,i,a,l,c;return s(this,void 0,void 0,(function*(){let s;const u=null!=e&&!t.name.toLowerCase().startsWith(e.toLowerCase()),h=(null===(o=t.options)||void 0===o?void 0:o.skipReason)||u,g=u?"skipped":null===(i=t.options)||void 0===i?void 0:i.skipReason;h||console.log(`Started ${t.category} ${t.name}`);const f=new Date;try{if(h)s={success:!0,result:g,ms:0,skipped:!0};else{const e=3e4===(null===(a=t.options)||void 0===a?void 0:a.timeout)&&r?r:null===(l=t.options)||void 0===l?void 0:l.timeout;s={success:!0,result:null!==(c=yield y(t.test,n.Test.isInBenchmark?12e5:e))&&void 0!==c?c:"OK",ms:0,skipped:!1}}}catch(t){s={success:!1,result:t.toString(),ms:0,skipped:!1}}const p=new Date;return s.ms=p-f,h||console.log(`Finished ${t.category} ${t.name} for ${s.ms} ms`),s.category=t.category,s.name=t.name,s}))}function N(t){return s(this,void 0,void 0,(function*(){yield new Promise((e=>setTimeout(e,t)))}))}function y(t,e){return s(this,void 0,void 0,(function*(){let n=null;const r=new Promise(((t,r)=>{n=setTimeout((()=>{r("EXECUTION TIMEOUT")}),e)}));try{return yield Promise.race([t(),r])}finally{n&&clearTimeout(n)}}))}function w(t){t=S(t,"$")[0];const e=[];if(!scil.Utils.isNullOrEmpty(t)){const n=S(t,"|");for(let r=0;r<n.length;++r){let s=(t=O(n[r]).str).indexOf("{");s=(t=t.substring(s+1)).indexOf("}");const o=S(t=t.substring(0,s),".");for(const t of o)if(t&&""!==t)if(t.startsWith("[")&&t.includes("]")){const n=t.substring(1,t.indexOf("]"));e.push(n);const r=t.substring(t.indexOf("]")+1);o.push(r)}else if(t.includes("[")&&t.endsWith("]")){const n=t.substring(t.lastIndexOf("[")+1,t.length-1);e.push(n);const r=t.substring(0,t.lastIndexOf("["));o.push(r)}else if(t.includes("(")&&t.includes(")")){const e=t.substring(0,t.indexOf("(")),n=t.substring(t.lastIndexOf(")")+1),r=[e,t.substring(e.length+1,t.length-n.length-1),n];for(const t of r)o.push(t)}else e.push(t)}}return e}function S(t,e){const n=[];let r="",s=0,o=0,i=0,a=0;for(let l=0;l<t.length;++l){let c=t.substring(l,l+1);if(c==e&&0==o&&0==s&&0==i&&0==a)n.push(r),r="";else{if(r+=c,a>0&&"\\"==c&&l+1<t.length){++l;const e=t.substring(l,l+1);r+=e,c+=e}'"'==c?l>0&&"\\"==t.substring(l-1,l)||(a=0==a?1:0):"["==c?++o:"]"==c?--o:"("==c?++s:")"==c?--s:"{"==c?++i:"}"==c&&--i}}return n.push(r),n}function O(t){const e=v(t,'"');if(null!=e.tag)return e;const n=v(t,"'");return{tag:e.tag,repeat:n.tag,str:n.str}}function v(t,e){let n=null;if(scil.Utils.endswith(t,e)){let r=t.length-1;for(;r>0&&(r=t.lastIndexOf(e,r-1),!(r<=0||"\\"!=t.substring(r-1,r))););r>0&&r<t.length-1&&(n=t.substring(r+1,t.length-1),t=t.substring(0,r))}return null!=n&&(n=function(t){return scil.Utils.isNullOrEmpty(t)?t:t.replace(/[\\]./g,(function(t){switch(t){case"\\r":return"\r";case"\\n":return"\n";case"\\t":return"\t";default:return t.substring(1)}}))}(n.replace(new RegExp("\\"+e,"g"),e))),{tag:n,str:t}}var M=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};C("Helm",(()=>{const t=[["L-hArg(Et,Et)","E","F","G","C","E"],["L-hArg(Et,Et)","L-hArg(Et,Et)","E","F","G"],["dhp","m1A","p","r","T","p","r","T","p","r","G","p"],["r","mo6pur","p","r","T","p","r","T","p","r","G","p"],["afhna","mo6pur","36SS","r","T","p"]],e=["comples-monomer","complex-monomer+side-chain","complex-monomer+side-chain-RNA","complex-side-chain","complex+side-chain+linker"];g("parseHelm",(()=>M(void 0,void 0,void 0,(function*(){const t=[["meI","hHis","Aca","N","T","dK","Thr_PO3H2","D-Tyr_Et","Aze","dV","E","Phe_4Me"],["A","C","T","G","W","E","Q"],["R","U","P","T","A"],["A","*","G","C"]],e=["PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Aze.dV.E.N.dV.Phe_4Me}$$$","PEPTIDE1{A.C.T.G.C.T.W.G.T.W.E.C.W.C.Q.W}|PEPTIDE2{A.C.T.G.C.T.W.G.T.W.E.Q}$PEPTIDE1,PEPTIDE1,5:R3-14:R3|PEPTIDE2,PEPTIDE1,2:R3-12:R3$$$","RNA1{R(U)P.R(T)P}|RNA2{P.R(A)P.R(A)}$RNA1,RNA2,2:pair-6:pair|RNA1,RNA2,5:pair-3:pair$$$","PEPTIDE1{A.*.G.C}$$$$V2.0"];for(let n=0;n<e.length;++n){const r=new Set(w(e[n])),s=Array.from(r);f(JSON.stringify(s),JSON.stringify(t[n]))}})))),["PEPTIDE1{[L-hArg(Et,Et)].E.F.G}|PEPTIDE2{C.E}$PEPTIDE1,PEPTIDE2,2:R3-1:R1$$$V2.0","PEPTIDE1{[L-hArg(Et,Et)]([L-hArg(Et,Et)]).E.F.G}$$$$","RNA1{[dhp]([m1A])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{r([mo6pur])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{[afhna]([mo6pur])[36SS].r(T)p}$$$$V2.0"].forEach(((n,r)=>{g(e[r],(()=>M(void 0,void 0,void 0,(function*(){const e=w(n);e.sort();const s=t[r];s.sort(),m(e,s)}))))}))})),wu;class P{constructor(t,e,n){this.name=t,this.alphabet=e,this.cutoff=n}}class I extends P{constructor(t,e,n){super(t.name,t.alphabet,t.cutoff),this.freq=e,this.similarity=n}}const L=/(\[[A-Za-z0-9-_]+\]|.)/g,H=new class{constructor(){this.fasta={peptide:new Set(["G","L","Y","S","E","Q","D","N","F","A","K","R","H","C","V","P","W","I","M","T"]),dna:new Set(["A","C","G","T"]),rna:new Set(["A","C","G","U"])}}},G=[new P("PT",H.fasta.peptide,.5),new P("DNA",H.fasta.dna,.55),new P("RNA",H.fasta.rna,.55)],R=new Uint32Array(65536),_={gapOpen:8,gapExtend:2,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var x;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch"}(x||(x={}));const k={[x.HAMMING]:function(){return(t,e)=>{let n=0;t.length!==e.length&&(n=Math.abs(t.length-e.length));let r=0;for(let n=0;n<Math.min(t.length,e.length);n++)t[n]!==e[n]&&r++;return r+=n,r/=Math.max(t.length,e.length),r}},[x.LEVENSHTEIN]:function(){return(t,e)=>((t,e)=>{if(t.length<e.length){const n=e;e=t,t=n}return 0===e.length?t.length:t.length<=32?((t,e)=>{const n=t.length,r=e.length,s=1<<n-1;let o=-1,i=0,a=n,l=n;for(;l--;)R[t.charCodeAt(l)]|=1<<l;for(l=0;l<r;l++){let t=R[e.charCodeAt(l)];const n=t|i;t|=(t&o)+o^o,i|=~(t|o),o&=t,i&s&&a++,o&s&&a--,i=i<<1|1,o=o<<1|~(n|i),i&=n}for(l=n;l--;)R[t.charCodeAt(l)]=0;return a})(t,e):((t,e)=>{const n=e.length,r=t.length,s=[],o=[],i=Math.ceil(n/32),a=Math.ceil(r/32);for(let t=0;t<i;t++)o[t]=-1,s[t]=0;let l=0;for(;l<a-1;l++){let i=0,a=-1;const c=32*l,u=Math.min(32,r)+c;for(let e=c;e<u;e++)R[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=R[e.charCodeAt(t)],r=o[t/32|0]>>>t&1,l=s[t/32|0]>>>t&1,c=n|i,u=((n|l)&a)+a^a|n|l;let h=i|~(u|a),g=a&u;h>>>31^r&&(o[t/32|0]^=1<<t),g>>>31^l&&(s[t/32|0]^=1<<t),h=h<<1|r,g=g<<1|l,a=g|~(c|h),i=h&c}for(let e=c;e<u;e++)R[t.charCodeAt(e)]=0}let c=0,u=-1;const h=32*l,g=Math.min(32,r-h)+h;for(let e=h;e<g;e++)R[t.charCodeAt(e)]|=1<<e;let f=r;for(let t=0;t<n;t++){const n=R[e.charCodeAt(t)],i=o[t/32|0]>>>t&1,a=s[t/32|0]>>>t&1,l=n|c,h=((n|a)&u)+u^u|n|a;let g=c|~(h|u),p=u&h;f+=g>>>r-1&1,f-=p>>>r-1&1,g>>>31^i&&(o[t/32|0]^=1<<t),p>>>31^a&&(s[t/32|0]^=1<<t),g=g<<1|i,p=p<<1|a,u=p|~(l|g),c=g&l}for(let e=h;e<g;e++)R[t.charCodeAt(e)]=0;return f})(t,e)})(t,e)/Math.max(t.length,e.length)},[x.NEEDLEMANN_WUNSCH]:function(t){return(e,n)=>{const{gapOpen:r,gapExtend:s,scoringMatrix:o,alphabetIndexes:i}={..._,...t},a=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)],l=new Array(e.length+1).fill(!1),c=new Array(e.length+1).fill(!1);let u=0,h=1;for(let t=1;t<e.length+1;t++)a[0][t]=-r-(t-1)*s;for(let t=1;t<n.length+1;t++){a[h][0]=-r-(t-1)*s;for(let g=1;g<e.length+1;g++){const f=a[u][g-1]+o[i[e[g-1]]][i[n[t-1]]],p=a[u][g]-(l[g]?s:r),d=a[h][g-1]-(c[g-1]?s:r);a[h][g]=Math.max(f,d,p),a[h][g]===f?(l[g]=!1,c[g]=!1):a[h][g]===d?(l[g]=!1,c[g]=!0):(l[g]=!0,c[g]=!1)}u=h,h=(h+1)%2}const g=e.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),f=n.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),p=Math.max(g,f);return(p-a[u][e.length])/p}}},U=new class{constructor(){this.uhTemp=`units-handler.${n.SEMTYPE.MACROMOLECULE}`}};class D{static setUnitsToFastaColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"fasta"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'fasta' must be '${n.SEMTYPE.MACROMOLECULE}'.`);t.column.setTag(n.TAGS.UNITS,"fasta"),D.setTags(t)}static setUnitsToSeparatorColumn(t,e){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"separator"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'separator' must be '${n.SEMTYPE.MACROMOLECULE}'.`);if(!e)throw new Error("The column of notation 'separator' must have the separator tag.");t.column.setTag(n.TAGS.UNITS,"separator"),t.column.setTag("separator",e),D.setTags(t)}static setUnitsToHelmColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`The column of notation 'helm' must be '${n.SEMTYPE.MACROMOLECULE}'`);t.column.setTag(n.TAGS.UNITS,"helm"),D.setTags(t)}static setTags(t){const e=t.column.getTag(n.TAGS.UNITS),r=t.stats;if(Object.keys(r.freq).some((t=>t.length>1)),["fasta","separator"].includes(e)){if(0===Object.keys(r.freq).length)throw new Error("Alphabet is empty");const e=r.sameLength?"SEQ.MSA":"SEQ";t.column.setTag("aligned",e);const n=function(t,e,n="-"){const r=e.map((e=>{const r=function(t,e,n="-"){const r=new Set([...new Set(Object.keys(t)),...e]);r.delete(n);const s=[],o=[];for(const n of r)s.push(n in t?t[n]:0),o.push(e.has(n)?1:0);const i=new F(s),a=new F(o);return function(t,e){if(t.length!=e.length)throw new Error("The dimensionality of the vectors must match");let n=0;for(let r=0;r<t.length;r++)n+=t[r]*e[r];return n}(i,a)/(W(i)*W(a))}(t,e.alphabet,n);return new I(e,t,r)}));let s;const o=Math.max(...r.map((t=>t.similarity>t.cutoff?t.similarity:-1)));s=o>0?r.find((t=>t.similarity===o)).name:"UN";return s}(r.freq,G);if(t.column.setTag("alphabet",n),"UN"===n){const e=Object.keys(r.freq).length,n=Object.keys(r.freq).some((t=>t.length>1));t.column.setTag(".alphabetSize",e.toString()),t.column.setTag(".alphabetIsMultichar",n?"true":"false")}}}get column(){return this._column}get units(){return this._units}get notation(){return this._notation}get defaultGapSymbol(){return this._defaultGapSymbol}get separator(){const t=this.column.getTag("separator")??void 0;if("separator"===this.notation&&void 0===t)throw new Error(`Separator is mandatory for column '${this.column.name}' of notation '${this.notation}'.`);return t}get aligned(){const t=this.column.getTag("aligned");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag aligned not set");return t}get alphabet(){const t=this.column.getTag("alphabet");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag alphabet not set");return t}get helmCompatible(){return this.column.getTag(".isHelmCompatible")}getAlphabetSize(){if("helm"==this.notation||"UN"==this.alphabet){const t=this.column.getTag(".alphabetSize");let e;if(t)e=parseInt(t);else{const t=this.stats;e=Object.keys(t.freq).length}return e}switch(this.alphabet){case"PT":return 20;case"DNA":case"RNA":return 4;case"NT":return console.warn("Unexpected alphabet 'NT'."),4;default:throw new Error(`Unexpected alphabet '${this.alphabet}'.`)}}getAlphabetIsMultichar(){return"helm"===this.notation||"UN"===this.alphabet&&"true"===this.column.getTag(".alphabetIsMultichar")}get splitted(){if(null===this._splitted){const t=this.getSplitter(),e=this._column.length;this._splitted=new Array(e);const n=this._column.getRawData(),r=this._column.categories;for(let s=0;s<e;s++){const e=r[n[s]];this._splitted[s]=t(e)}}return this._splitted}get stats(){if(null===this._stats){const t={};let e=!0,n=null;for(const r of this.splitted){null==n?n=r.length:r.length!==n&&(e=!1);for(const e of r)e in t||(t[e]=0),t[e]+=1}this._stats={freq:t,sameLength:e}}return this._stats}isFasta(){return"fasta"===this.notation}isSeparator(){return"separator"===this.notation}isHelm(){return"helm"===this.notation}isRna(){return"RNA"===this.alphabet}isDna(){return"DNA"===this.alphabet}isPeptide(){return"PT"===this.alphabet}isMsa(){return!!this.aligned&&this.aligned.toUpperCase().includes("MSA")}isHelmCompatible(){return"true"===this.helmCompatible}getNotation(){if(this.units.toLowerCase().startsWith("fasta"))return"fasta";if(this.units.toLowerCase().startsWith("separator"))return"separator";if(this.units.toLowerCase().startsWith("helm"))return"helm";throw new Error(`Column '${this.column.name}' has unexpected notation '${this.units}'.`)}getNewColumn(t,e){const r=this.column,s=r.length,o=t.toLowerCase()+"("+r.name+")",i=r.dataFrame.columns.getUnusedName(o),a=n.Column.fromList("string",i,new Array(s).fill(""));if(a.semType=n.SEMTYPE.MACROMOLECULE,a.setTag(n.TAGS.UNITS,t),"separator"===t){if(!e)throw new Error("Notation 'separator' requires separator value.");a.setTag("separator",e)}a.setTag(n.TAGS.CELL_RENDERER,"Macromolecule");const l=r.getTag("aligned");l&&a.setTag("aligned",l);const c=r.getTag("alphabet");c&&a.setTag("alphabet",c);let u=r.getTag(".alphabetSize");u&&a.setTag(".alphabetSize",u);const h=r.getTag(".alphabetIsMultichar");return void 0!==h&&a.setTag(".alphabetIsMultichar",h),"helm"==t&&(u=this.getAlphabetSize().toString(),a.setTag(".alphabetSize",u)),a}static getNewColumn(t){const e=D.getOrCreate(t),n=e.notation;return e.getNewColumn(n)}static unitsStringIsValid(t){return t=t.toLowerCase(),["fasta","separator","helm"].some((e=>t.startsWith(e.toLowerCase())))}static getNewColumnFromParams(t,e,r){if(!D.unitsStringIsValid(r))throw new Error("Invalid format of 'units' parameter");const s=n.Column.fromList("string",e,new Array(t).fill(""));return s.semType=n.SEMTYPE.MACROMOLECULE,s.setTag(n.TAGS.UNITS,r),s}getSplitter(){return function(t){if(t.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`Get splitter for semType "${n.SEMTYPE.MACROMOLECULE}" only.`);return function(t,e,n){if(t.toLowerCase().startsWith("fasta"))return q;if(t.toLowerCase().startsWith("separator"))return K(e,void 0);if(t.toLowerCase().startsWith("helm"))return X;throw new Error(`Unexpected units ${t} .`)}(t.getTag(n.TAGS.UNITS),t.getTag("separator"))}(this._column)}getDistanceFunctionName(){if(!this.isFasta())throw new Error("Only FASTA notation is supported");if(this.isMsa())return x.HAMMING;switch(this.alphabet){case"DNA":case"RNA":default:return x.LEVENSHTEIN;case"PT":return x.NEEDLEMANN_WUNSCH}}getDistanceFunction(){return k[this.getDistanceFunctionName()]()}async checkHelmCompatibility(){if(this.column.tags.has(".isHelmCompatible"))return"true"===this.column.getTag(".isHelmCompatible");const t=(await Z()).getBioLib().getMonomerSymbolsByType("PEPTIDE".toString()),e=new Set(t),n=K(this.separator);for(const t of this.column.categories){const r=n(t);for(const t of r)if(!e.has(t))return this.column.setTag(".isHelmCompatible","false"),!1}return this.column.setTag(".isHelmCompatible","true"),!0}constructor(t){if(this._splitted=null,this._stats=null,t.type!=n.TYPE.STRING)throw new Error(`Unexpected column type '${t.type}', must be '${n.TYPE.STRING}'.`);this._column=t;const e=this._column.getTag(n.TAGS.UNITS);if(null==e)throw new Error("Units are not specified in column");if(this._units=e,this._notation=this.getNotation(),this._defaultGapSymbol=this.isFasta()?D._defaultGapSymbolsDict.FASTA:this.isHelm()?D._defaultGapSymbolsDict.HELM:D._defaultGapSymbolsDict.SEPARATOR,!this.column.tags.has("aligned")||!this.column.tags.has("alphabet")||!this.column.tags.has(".alphabetIsMultichar")&&!this.isHelm()&&"UN"===this.alphabet)if(this.isFasta())D.setUnitsToFastaColumn(this);else if(this.isSeparator()){const e=t.getTag("separator");D.setUnitsToSeparatorColumn(this,e)}else{if(!this.isHelm())throw new Error(`Unexpected units '${this.column.getTag(n.TAGS.UNITS)}'.`);D.setUnitsToHelmColumn(this)}if(!this.column.tags.has(".alphabetIsMultichar"))if(this.isHelm())this.column.setTag(".alphabetIsMultichar","true");else if(["UN"].includes(this.alphabet))throw new Error(`For column '${this.column.name}' of alphabet '${this.alphabet}' tag '.alphabetIsMultichar' is mandatory.`)}static getOrCreate(t){return U.uhTemp in t.temp||(t.temp[U.uhTemp]=new D(t)),t.temp[U.uhTemp]}}D._defaultGapSymbolsDict={HELM:"*",SEPARATOR:"",FASTA:"-"};class F extends Float32Array{}function W(t){let e=0;for(let n=0;n<t.length;n++)e+=t[n]*t[n];return Math.sqrt(e)}class V{static makePalette(t,e=!1,n=V){const r={};return t.forEach((t=>{const n=t[0],s=t[1];n.forEach(((t,n)=>{r[t]=this.colourPalette[s][e?0:n]}))})),new n(r)}constructor(t){this._palette=t}get(t){return this._palette[t]}}V.undefinedColor="rgb(100,100,100)",V.colourPalette={orange:["rgb(255,187,120)","rgb(245,167,100)","rgb(235,137,70)","rgb(205, 111, 71)"],all_green:["rgb(44,160,44)","rgb(74,160,74)","rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)","rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],all_blue:["rgb(31,119,180)","rgb(23,190,207)","rgb(122, 102, 189)","rgb(158,218,229)","rgb(141, 124, 217)","rgb(31, 120, 150)"],magenta:["rgb(162,106,192)","rgb(197,165,224)","rgb(208,113,218)"],red:["rgb(214,39,40)","rgb(255,152,150)"],st_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(31,119,180)"],dark_blue:["rgb(31,119,180)","rgb(31, 120, 150)"],light_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(108, 218, 229)","rgb(23,190,227)"],lilac_blue:["rgb(124,102,211)","rgb(149,134,217)","rgb(97, 81, 150)"],dark_green:["rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)"],green:["rgb(44,160,44)","rgb(74,160,74)"],light_green:["rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],st_green:["rgb(44,160,44)","rgb(152,223,138)","rgb(39, 174, 96)","rgb(74,160,74)"],pink:["rgb(247,182,210)"],brown:["rgb(140,86,75)","rgb(102, 62, 54)"],gray:["rgb(127,127,127)","rgb(199,199,199)","rgb(196,156,148)","rgb(222, 222, 180)"],yellow:["rgb(188,189,34)"],white:["rgb(230,230,230)"]};class Y extends V{static get Lesk(){return void 0===this.lesk&&(this.lesk=this.makePalette([[["G","A","S","T"],"orange"],[["C","V","I","L","P","F","Y","M","W"],"all_green"],[["N","Q","H"],"magenta"],[["D","E"],"red"],[["K","R"],"all_blue"]],!1,Y)),this.lesk}static get GrokGroups(){return void 0===this.grokGroups&&(this.grokGroups=this.makePalette([[["C","U"],"yellow"],[["G","P"],"red"],[["A","V","I","L","M","F","Y","W"],"all_green"],[["R","H","K"],"light_blue"],[["D","E"],"dark_blue"],[["S","T","N","Q"],"orange"]],!1,Y)),this.grokGroups}static get RasMol(){return void 0===this.rasMol&&(this.rasMol=new Y({D:"#E60A0A",E:"#E60A0A",C:"#E6E600",M:"#E6E600",K:"#145AFF",R:"#145AFF",S:"#FA9600",T:"#FA9600",F:"#3232AA",Y:"#3232AA",N:"#00DCDC",Q:"#00DCDC",G:"#EBEBEB",L:"#0F820F",V:"#0F820F",I:"#0F820F",A:"#C8C8C8",W:"#B45AB4",H:"#8282D2",P:"#DC9682",others:"#BEA06E"})),this.rasMol}get(t){const e=t in Y.aaSynonyms?Y.aaSynonyms[t]:t;return super.get(e)}}Y.aaSynonyms={MeNle:"L",MeA:"A",MeG:"G",MeF:"F"};class j{static getPalette(t="grok"){switch(t){case"grok":return Y.GrokGroups;case"lesk":return Y.Lesk;default:throw new Error(`ChemPalette: scheme \`${t}\` does not exist`)}}static getInnerOuter(t){let e=0,n="",r="";for(const s of t)"("==s?e++:")"==s?e--:e?n+=s:r+=s;return isNaN(parseInt(n))?[r,n]:[r,""]}static getColorAAPivot(t="",e="grok"){const n=this.getPalette(e);let[r,s]=this.getInnerOuter(t);if(r=r.length>6?`${r.slice(0,3)}...`:r,s=s.length>6?`${s.slice(0,3)}...`:s,1==t.length||"("==t[1]){const e=t[0]?.toUpperCase();return e in n?[n.get(e),e,s,1]:[this.undefinedColor,r,s,1]}if("d"==t[0]&&t[1]in n&&(2==t.length||"("==t[2])){const e=t[1]?.toUpperCase();return e in n?[n.get(e),e,s,2]:[this.undefinedColor,r,s,2]}if(t.substring(0,3)in this.AAFullNames&&(3==t.length||"("==t[3])){const e=this.AAFullNames[t.substring(0,3)];return e in n?[n.get(e),e,s,3]:[this.undefinedColor,r,s,3]}if(t[0]?.toLowerCase()==t[0]&&t.substring(1,3)in this.AAFullNames&&(4==t.length||"("==t[4])){const e=this.AAFullNames[t.substring(1,3)];return e in n?[n.get(e),e,s,4]:[this.undefinedColor,r,s,4]}return[this.undefinedColor,r,s,0]}}j.SemType="Aminoacids",j.SemTypeMultipleAlignment="AminoacidsMultipleAlignment",j.undefinedColor="rgb(100,100,100)",j.Names={G:"Glycine",L:"Leucine",Y:"Tyrosine",S:"Serine",E:"Glutamic acid",Q:"Glutamine",D:"Aspartic acid",N:"Asparagine",F:"Phenylalanine",A:"Alanine",K:"Lysine",R:"Arginine",H:"Histidine",C:"Cysteine",V:"Valine",P:"Proline",W:"Tryptophan",I:"Isoleucine",M:"Methionine",T:"Threonine"},j.AASmiles={G:"NCC(=O)O",L:"N[C@H](CC(C)C)C(=O)O",Y:"NC(CC1=CC=C(O)C=C1)C(=O)O",S:"NC(CO)C(=O)O",E:"N[C@@H](CCC(O)=O)C(=O)O",Q:"N[C@@H](CCC(N)=O)C(=O)O",D:"N[C@@H](CC(O)=O)C(=O)O",N:"N[C@@H](CC(N)=O)C(=O)O",F:"NC(CC1=CC=CC=C1)C(=O)O",A:"N[C@H](C)C(=O)O",K:"NC(CCCCN)C(=O)O",R:"N[C@H](CCCNC(=N)C)C(=O)O",H:"NC(CC1=CN=C[N]1)C(=O)O",C:"N[C@@H](CS)C(=O)O",V:"NC(C(C)C)C(=O)O",P:"N(CCC1)C1C(=O)O",W:"N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O",I:"N[C@H]([C@H](C)CC)C(=O)O",M:"NC(CCSC)C(=O)O",T:"NC(C(O)C)C(=O)O"},j.AASmilesTruncated={G:"*C*",L:"CC(C)C[C@H](*)*",Y:"C1=CC(=CC=C1CC(*)*)O",S:"OCC(*)C*",E:"*[C@@H](CCC(O)=O)*",Q:"*N[C@@H](CCC(N)=O)*",D:"*[C@@H](CC(O)=O)*",N:"*[C@@H](CC(N)=O)*",F:"C1=CC=C(C=C1)CC(*)*",A:"C[C@H](*)*",K:"C(CCN)CC(*)*",R:"*[C@H](CCCNC(=N)C)*",H:"C1=C(NC=N1)CC(*)*",C:"C([C@@H](*)*)S",V:"CC(C)C(*)*",P:"C1CCN(*)C1*",W:"*[C@@H](Cc1c2ccccc2n([H])c1)*",I:"CC[C@H](C)[C@H](*)*",M:"CSCCC(*)*",T:"CC(O)C(*)*"},j.AAFullNames={Ala:"A",Arg:"R",Asn:"N",Asp:"D",Cys:"C",Gln:"Q",Glu:"E",Gly:"G",His:"H",Ile:"I",Leu:"L",Lys:"K",Met:"M",Phe:"F",Pro:"P",Ser:"S",Thr:"T",Trp:"W",Tyr:"Y",Val:"V"};class Q{}Q.SemType="Nucleotides",Q.SemTypeMultipleAlignment="NucleotidesMultipleAlignment",Q.Names={A:"Adenine",C:"Cytosine",G:"Guanine",T:"Thymine",U:"Uracil"};class B extends class{}{static buildPalette(){return[].concat(...Object.values(V.colourPalette))}get(t){const e=class{static hashCode(t){let e=0;if(0===t.length)return e;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return e}}.hashCode(t)%B.palette.length;return function(t){if(null==t)return"rgb(100,100,100)";const e=n.Color.fromHtml(t),r=n.Color.g(e),s=n.Color.r(e),o=n.Color.b(e),i=Math.sqrt(Math.pow(0-s,2)+Math.pow(0-r,2)+Math.pow(0-o,2));return i>210?`rgb(${s/i*210},${r/i*210},${o/i*210})`:n.Color.toRgb(e)}(B.palette[e])}}function q(t){return t.toString().replace(L,".$1").slice(1).split(".").map((t=>t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):"-"===t?"":t))}function K(t,e){return n=>n.split(t,e)}B.palette=B.buildPalette();const z=/(PEPTIDE1|DNA1|RNA1)\{([^}]+)}/g,J=/\[([^\[\]]+)]/g;function X(t){z.lastIndex=0;const e=z.exec(t.toString()),n=e?e[2]:null;return(n?n.split("."):[]).map((t=>{J.lastIndex=0;const e=J.exec(t);return e&&e.length>=2?e[1]:t}))}async function Z(){const t=n.Func.find({package:"Bio",name:"getMonomerLibHelper"});if(0===t.length)throw new Error('Package "Bio" must be installed for MonomerLibHelper.');return(await t[0].prepare().call()).getOutputParamValue()}var tt=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const et="Libraries",nt={"HELMCoreLibrary.json":"HELMCoreLibrary.json"};C("findMonomers",(()=>{let t,e=null;E((()=>tt(void 0,void 0,void 0,(function*(){t=yield Z(),e=yield r.dapi.userDataStorage.get(et,!0),yield r.dapi.userDataStorage.post(et,nt,!0),yield t.loadLibraries(!0)})))),T((()=>tt(void 0,void 0,void 0,(function*(){yield r.dapi.userDataStorage.put(et,e,!0)}))));const n={withoutMissed:{test:"PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set},withMissed:{test:"PEPTIDE1{meI.missed2.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set(["missed2"])}};for(const[t,e]of Object.entries(n))g(t,(()=>tt(void 0,void 0,void 0,(function*(){s(e.test,e.tgt)}))));function s(t,e){d(function(t){const e=Object.keys(org.helm.webeditor.monomerTypeList()),n=[],r=[];for(let t=0;t<e.length;t++)n.push(new scil.helm.Monomers.getMonomerSet(e[t])),Object.keys(n[t]).forEach((e=>{r.push(n[t][e].id)}));return new Set(t.filter((t=>!r.includes(t))))}(w(t)),e)}}));const rt=$;var st=t.n(rt),ot=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};C("renderers",(()=>{g("missedInLib",(()=>ot(void 0,void 0,void 0,(function*(){yield function(){return ot(this,void 0,void 0,(function*(){const t=yield r.dapi.files.readCsv("System:AppData/Helm/tests/sample_HELM-missedInLib.csv"),e=t.getCol("HELM"),o=r.shell.addTableView(t);yield function(t,e="Timeout exceeded",n=500,r=50){return s(this,void 0,void 0,(function*(){return new Promise(((s,o)=>{setTimeout((()=>{clearInterval(i),o(new Error(e))}),n);const i=setInterval((()=>{t()&&(clearInterval(i),s())}),r)}))}))}((()=>st()(o.root).find(".d4-grid canvas").length>0),"Table view canvas not found",100),f(e.semType,n.SEMTYPE.MACROMOLECULE),f(e.getTag(n.TAGS.UNITS),"helm"),f(e.getTag(n.TAGS.CELL_RENDERER),"helm");const i=e.getTag(".cell-renderer.render.error");if(i){const t=JSON.parse(i),e=new Error(t.message);throw e.stack=t.stack,e}}))}()}))))}));const it=new n.Package;function at(t,e,l){return c=this,g=void 0,p=function*(){const c=yield function(t){var e,l,c,g,f;return s(this,void 0,void 0,(function*(){const p=null===(l=null===(e=r.functions.getCurrentCall())||void 0===e?void 0:e.func)||void 0===l?void 0:l.package;yield function(t,e){return s(this,void 0,void 0,(function*(){if(a[t])return;const e=o;if(void 0!==e["Auto Tests"]||Object.keys(e).find((t=>t.startsWith(i))))return void(a[t]=!0);const n=[],l=yield r.dapi.functions.filter(`package.id = "${t}"`).list(),c=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)/g);for(const t of l){const o=t.options.test;if(o&&Array.isArray(o)&&o.length)for(let a=0;a<o.length;a++){const l=o[a].matchAll(c),u={};Array.from(l).forEach((t=>{t[0].startsWith("skip")?u.skip=t[1]:t[0].startsWith("wait")?u.wait=parseInt(t[2]):t[0].startsWith("cat")&&(u.cat=t[3])}));const g=new h(i,1===o.length?t.name:`${t.name} ${a+1}`,(()=>s(this,void 0,void 0,(function*(){const e=yield r.functions.eval(b(o[a],t));if(u.wait&&(yield N(u.wait)),"boolean"==typeof e&&!e)throw`Failed: ${o[a]}, expected true, got ${e}`}))),{skipReason:u.skip});if(u.cat){const t="Auto Tests: "+u.cat;g.category=t,void 0===e[t]&&(e[t]={tests:[],clear:!0}),e[t].tests.push(g)}else n.push(g)}}a[t]=!0,n.length&&(e["Auto Tests"]={tests:n,clear:!0})}))}(p.id);const d=[];console.log("Running tests"),null!=t||(t={}),null!==(c=(f=t).testContext)&&void 0!==c||(f.testContext=new u),r.shell.lastError="";for(const[e,s]of Object.entries(o)){if(null!=(null==t?void 0:t.category)&&!e.toLowerCase().startsWith(null==t?void 0:t.category.toLowerCase()))continue;console.log(`Started ${e} category`);try{s.before&&(yield s.before())}catch(t){s.beforeStatus=t.toString()}const o=null!==(g=s.tests)&&void 0!==g?g:[],i=[];if(s.clear)for(let e=0;e<o.length;e++)i.push(yield A(o[e],null==t?void 0:t.test,s.timeout)),r.shell.closeAll(),n.Balloon.closeAll();else for(let e=0;e<o.length;e++)i.push(yield A(o[e],null==t?void 0:t.test,s.timeout));const a=(yield Promise.all(i)).filter((t=>"skipped"!=t.result));try{s.after&&(yield s.after())}catch(t){s.afterStatus=t.toString()}s.afterStatus&&a.push({category:e,name:"init",result:s.afterStatus,success:!1,ms:0,skipped:!1}),s.beforeStatus&&a.push({category:e,name:"init",result:s.beforeStatus,success:!1,ms:0,skipped:!1}),d.push(...a)}if(t.testContext.catchUnhandled&&(yield N(1e3),r.shell.lastError.length>0&&d.push({category:"Unhandled exceptions",name:"exceptions",result:r.shell.lastError,success:!1,ms:0,skipped:!1})),t.testContext.report){const t=new n.Logger,e=d.filter((t=>t.success)).length,r=d.filter((t=>t.skipped)).length,s=d.filter((t=>!t.success)),o="Package @package tested: @successful successful, @skipped skipped, @failed failed tests",i={successful:e,skipped:r,failed:s.length,package:p};for(const t of s)Object.assign(i,{[`${t.category} | ${t.name}`]:t.result});t.log(o,i,"package-tested")}return d}))}({category:t,test:e,testContext:l});return n.DataFrame.fromObjects(c)},new((f=void 0)||(f=Promise))((function(t,e){function n(t){try{s(p.next(t))}catch(t){e(t)}}function r(t){try{s(p.throw(t))}catch(t){e(t)}}function s(e){var s;e.done?t(e.value):(s=e.value,s instanceof f?s:new f((function(t){t(s)}))).then(n,r)}s((p=p.apply(c,g||[])).next())}));var c,g,f,p}helm_test=e})();
1
+ var helm_test;(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},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={};e.r(t),e.d(t,{_package:()=>Q,test:()=>B,tests:()=>o});const n=DG,r=grok;var s=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{a(r.next(e))}catch(e){o(e)}}function l(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}a((r=r.apply(e,t||[])).next())}))};const o={},i="Auto Tests",l={};let a;var c;!function(e){e.notNull=function(e,t){if(null==e)throw new Error(`${null==t?"Value":t} not defined`)}}(c||(c={}));class u{constructor(e,t){this.catchUnhandled=!0,this.report=!1,void 0!==e&&(this.catchUnhandled=e),void 0!==t&&(this.report=t)}}class d{constructor(e,t,n,r){var o;this.category=e,this.name=t,null!=r||(r={}),null!==(o=r.timeout)&&void 0!==o||(r.timeout=3e4),this.options=r,this.test=()=>s(this,void 0,void 0,(function*(){return new Promise(((e,t)=>s(this,void 0,void 0,(function*(){let r="";try{r=yield n()}catch(e){t(e)}e(r)}))))}))}}function C(e,t,n){null==o[a]&&(o[a]={}),null==o[a].tests&&(o[a].tests=[]),o[a].tests.push(new d(a,e,t,n))}function g(e,t=!0,n){if(n=n?`${n}, `:"",e!==t)throw new Error(`${n}Expected "${t}", got "${e}"`)}function f(e,t,n=.001,r){if(e===Number.POSITIVE_INFINITY&&t===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY&&t===Number.NEGATIVE_INFINITY||e===Number.NaN&&t===Number.NaN||isNaN(e)&&isNaN(t))return;const s=Math.abs(e-t)<n;if(g(s,!0,`${null!=r?r:""} (tolerance = ${n})`),!s)throw new Error(`Expected ${t}, got ${e} (tolerance = ${n})`)}function h(e,t){for(const[n,r]of Object.entries(t)){if(!e.hasOwnProperty(n))throw new Error(`Expected property "${n}" not found`);const t=e[n];if(t instanceof Array&&r instanceof Array)p(t,r);else if(t instanceof Object&&r instanceof Object)h(t,r);else if(Number.isFinite(t)&&Number.isFinite(r))f(t,r);else if(t!=r)throw new Error(`Expected (${r}) for key '${n}', got (${t})`)}}function p(e,t){const n=e.length,r=t.length;if(n!=r)throw new Error(`Arrays are of different length: actual array length is ${n} and expected array length is ${r}`);for(let r=0;r<n;r++)if(e[r]instanceof Array&&t[r]instanceof Array)p(e[r],t[r]);else if(e[r]instanceof Object&&t[r]instanceof Object)h(e[r],t[r]);else if(e[r]!=t[r])throw new Error(`Expected ${t[r]} at position ${r}, got ${e[r]}`)}function m(e,t,n){var r;a=e,t(),o[a]&&(o[a].clear=null===(r=null==n?void 0:n.clear)||void 0===r||r,o[a].timeout=null==n?void 0:n.timeout)}function E(e){null==o[a]&&(o[a]={}),o[a].before=e}function b(e){null==o[a]&&(o[a]={}),o[a].after=e}function A(e,t){return e.replace(new RegExp(t.name,"gi"),t.nqName)}function y(e,t,r){var o,i,l,a,c;return s(this,void 0,void 0,(function*(){let s;const u=null!=t&&!e.name.toLowerCase().startsWith(t.toLowerCase()),d=(null===(o=e.options)||void 0===o?void 0:o.skipReason)||u,C=u?"skipped":null===(i=e.options)||void 0===i?void 0:i.skipReason;d||console.log(`Started ${e.category} ${e.name}`);const g=new Date;try{if(d)s={success:!0,result:C,ms:0,skipped:!0};else{const t=3e4===(null===(l=e.options)||void 0===l?void 0:l.timeout)&&r?r:null===(a=e.options)||void 0===a?void 0:a.timeout;s={success:!0,result:null!==(c=yield v(e.test,n.Test.isInBenchmark?12e5:t))&&void 0!==c?c:"OK",ms:0,skipped:!1}}}catch(e){s={success:!1,result:e.toString(),ms:0,skipped:!1}}const f=new Date;return s.ms=f-g,d||console.log(`Finished ${e.category} ${e.name} for ${s.ms} ms`),s.category=e.category,s.name=e.name,s}))}function N(e){return s(this,void 0,void 0,(function*(){yield new Promise((t=>setTimeout(t,e)))}))}function v(e,t){return s(this,void 0,void 0,(function*(){let n=null;const r=new Promise(((e,r)=>{n=setTimeout((()=>{r("EXECUTION TIMEOUT")}),t)}));try{return yield Promise.race([e(),r])}finally{n&&clearTimeout(n)}}))}function T(e){e=O(e,"$")[0];const t=[];if(!scil.Utils.isNullOrEmpty(e)){const n=O(e,"|");for(let r=0;r<n.length;++r){let s=(e=w(n[r]).str).indexOf("{");s=(e=e.substring(s+1)).indexOf("}");const o=O(e=e.substring(0,s),".");for(const e of o)if(e&&""!==e)if(e.startsWith("[")&&e.includes("]")){const n=e.substring(1,e.indexOf("]"));t.push(n);const r=e.substring(e.indexOf("]")+1);o.push(r)}else if(e.includes("[")&&e.endsWith("]")){const n=e.substring(e.lastIndexOf("[")+1,e.length-1);t.push(n);const r=e.substring(0,e.lastIndexOf("["));o.push(r)}else if(e.includes("(")&&e.includes(")")){const t=e.substring(0,e.indexOf("(")),n=e.substring(e.lastIndexOf(")")+1),r=[t,e.substring(t.length+1,e.length-n.length-1),n];for(const e of r)o.push(e)}else t.push(e)}}return t}function O(e,t){const n=[];let r="",s=0,o=0,i=0,l=0;for(let a=0;a<e.length;++a){let c=e.substring(a,a+1);if(c==t&&0==o&&0==s&&0==i&&0==l)n.push(r),r="";else{if(r+=c,l>0&&"\\"==c&&a+1<e.length){++a;const t=e.substring(a,a+1);r+=t,c+=t}'"'==c?a>0&&"\\"==e.substring(a-1,a)||(l=0==l?1:0):"["==c?++o:"]"==c?--o:"("==c?++s:")"==c?--s:"{"==c?++i:"}"==c&&--i}}return n.push(r),n}function w(e){const t=P(e,'"');if(null!=t.tag)return t;const n=P(e,"'");return{tag:t.tag,repeat:n.tag,str:n.str}}function P(e,t){let n=null;if(scil.Utils.endswith(e,t)){let r=e.length-1;for(;r>0&&(r=e.lastIndexOf(t,r-1),!(r<=0||"\\"!=e.substring(r-1,r))););r>0&&r<e.length-1&&(n=e.substring(r+1,e.length-1),e=e.substring(0,r))}return null!=n&&(n=function(e){return scil.Utils.isNullOrEmpty(e)?e:e.replace(/[\\]./g,(function(e){switch(e){case"\\r":return"\r";case"\\n":return"\n";case"\\t":return"\t";default:return e.substring(1)}}))}(n.replace(new RegExp("\\"+t,"g"),t))),{tag:n,str:e}}var S,I,H=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{a(r.next(e))}catch(e){o(e)}}function l(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}a((r=r.apply(e,t||[])).next())}))};m("Helm",(()=>{const e=[["L-hArg(Et,Et)","E","F","G","C","E"],["L-hArg(Et,Et)","L-hArg(Et,Et)","E","F","G"],["dhp","m1A","p","r","T","p","r","T","p","r","G","p"],["r","mo6pur","p","r","T","p","r","T","p","r","G","p"],["afhna","mo6pur","36SS","r","T","p"]],t=["comples-monomer","complex-monomer+side-chain","complex-monomer+side-chain-RNA","complex-side-chain","complex+side-chain+linker"];C("parseHelm",(()=>H(void 0,void 0,void 0,(function*(){const e=[["meI","hHis","Aca","N","T","dK","Thr_PO3H2","D-Tyr_Et","Aze","dV","E","Phe_4Me"],["A","C","T","G","W","E","Q"],["R","U","P","T","A"],["A","*","G","C"]],t=["PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Aze.dV.E.N.dV.Phe_4Me}$$$","PEPTIDE1{A.C.T.G.C.T.W.G.T.W.E.C.W.C.Q.W}|PEPTIDE2{A.C.T.G.C.T.W.G.T.W.E.Q}$PEPTIDE1,PEPTIDE1,5:R3-14:R3|PEPTIDE2,PEPTIDE1,2:R3-12:R3$$$","RNA1{R(U)P.R(T)P}|RNA2{P.R(A)P.R(A)}$RNA1,RNA2,2:pair-6:pair|RNA1,RNA2,5:pair-3:pair$$$","PEPTIDE1{A.*.G.C}$$$$V2.0"];for(let n=0;n<t.length;++n){const r=new Set(T(t[n])),s=Array.from(r);g(JSON.stringify(s),JSON.stringify(e[n]))}})))),["PEPTIDE1{[L-hArg(Et,Et)].E.F.G}|PEPTIDE2{C.E}$PEPTIDE1,PEPTIDE2,2:R3-1:R1$$$V2.0","PEPTIDE1{[L-hArg(Et,Et)]([L-hArg(Et,Et)]).E.F.G}$$$$","RNA1{[dhp]([m1A])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{r([mo6pur])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{[afhna]([mo6pur])[36SS].r(T)p}$$$$V2.0"].forEach(((n,r)=>{C(t[r],(()=>H(void 0,void 0,void 0,(function*(){const t=T(n);t.sort();const s=e[r];s.sort(),p(t,s)}))))}))})),wu;class k{constructor(e,t,n){this.name=e,this.alphabet=t,this.cutoff=n}}(I=S||(S={})).FASTA="fasta",I.SEPARATOR="separator",I.HELM="helm";const M=new class{constructor(){this.fasta={peptide:new Set(["G","L","Y","S","E","Q","D","N","F","A","K","R","H","C","V","P","W","I","M","T"]),dna:new Set(["A","C","G","T"]),rna:new Set(["A","C","G","U"])}}};new k("PT",M.fasta.peptide,.5),new k("DNA",M.fasta.dna,.55),new k("RNA",M.fasta.rna,.55),Float32Array;class L{static makePalette(e,t=!1,n=L){const r={};return e.forEach((e=>{const n=e[0],s=e[1];n.forEach(((e,n)=>{r[e]=this.colourPalette[s][t?0:n]}))})),new n(r)}constructor(e){this._palette=e}get(e){return this._palette[e]}}L.undefinedColor="rgb(100,100,100)",L.colourPalette={orange:["rgb(255,187,120)","rgb(245,167,100)","rgb(235,137,70)","rgb(205, 111, 71)"],all_green:["rgb(44,160,44)","rgb(74,160,74)","rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)","rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],all_blue:["rgb(31,119,180)","rgb(23,190,207)","rgb(122, 102, 189)","rgb(158,218,229)","rgb(141, 124, 217)","rgb(31, 120, 150)"],magenta:["rgb(162,106,192)","rgb(197,165,224)","rgb(208,113,218)"],red:["rgb(214,39,40)","rgb(255,152,150)"],st_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(31,119,180)"],dark_blue:["rgb(31,119,180)","rgb(31, 120, 150)"],light_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(108, 218, 229)","rgb(23,190,227)"],lilac_blue:["rgb(124,102,211)","rgb(149,134,217)","rgb(97, 81, 150)"],dark_green:["rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)"],green:["rgb(44,160,44)","rgb(74,160,74)"],light_green:["rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],st_green:["rgb(44,160,44)","rgb(152,223,138)","rgb(39, 174, 96)","rgb(74,160,74)"],pink:["rgb(247,182,210)"],brown:["rgb(140,86,75)","rgb(102, 62, 54)"],gray:["rgb(127,127,127)","rgb(199,199,199)","rgb(196,156,148)","rgb(222, 222, 180)"],yellow:["rgb(188,189,34)"],white:["rgb(230,230,230)"]};class G extends L{static get Lesk(){return void 0===this.lesk&&(this.lesk=this.makePalette([[["G","A","S","T"],"orange"],[["C","V","I","L","P","F","Y","M","W"],"all_green"],[["N","Q","H"],"magenta"],[["D","E"],"red"],[["K","R"],"all_blue"]],!1,G)),this.lesk}static get GrokGroups(){return void 0===this.grokGroups&&(this.grokGroups=this.makePalette([[["C","U"],"yellow"],[["G","P"],"red"],[["A","V","I","L","M","F","Y","W"],"all_green"],[["R","H","K"],"light_blue"],[["D","E"],"dark_blue"],[["S","T","N","Q"],"orange"]],!1,G)),this.grokGroups}static get RasMol(){return void 0===this.rasMol&&(this.rasMol=new G({D:"#E60A0A",E:"#E60A0A",C:"#E6E600",M:"#E6E600",K:"#145AFF",R:"#145AFF",S:"#FA9600",T:"#FA9600",F:"#3232AA",Y:"#3232AA",N:"#00DCDC",Q:"#00DCDC",G:"#EBEBEB",L:"#0F820F",V:"#0F820F",I:"#0F820F",A:"#C8C8C8",W:"#B45AB4",H:"#8282D2",P:"#DC9682",others:"#BEA06E"})),this.rasMol}get(e){const t=e in G.aaSynonyms?G.aaSynonyms[e]:e;return super.get(t)}}G.aaSynonyms={MeNle:"L",MeA:"A",MeG:"G",MeF:"F"};class R{static getPalette(e="grok"){switch(e){case"grok":return G.GrokGroups;case"lesk":return G.Lesk;default:throw new Error(`ChemPalette: scheme \`${e}\` does not exist`)}}static getInnerOuter(e){let t=0,n="",r="";for(const s of e)"("==s?t++:")"==s?t--:t?n+=s:r+=s;return isNaN(parseInt(n))?[r,n]:[r,""]}static getColorAAPivot(e="",t="grok"){const n=this.getPalette(t);let[r,s]=this.getInnerOuter(e);if(r=r.length>6?`${r.slice(0,3)}...`:r,s=s.length>6?`${s.slice(0,3)}...`:s,1==e.length||"("==e[1]){const t=e[0]?.toUpperCase();return t in n?[n.get(t),t,s,1]:[this.undefinedColor,r,s,1]}if("d"==e[0]&&e[1]in n&&(2==e.length||"("==e[2])){const t=e[1]?.toUpperCase();return t in n?[n.get(t),t,s,2]:[this.undefinedColor,r,s,2]}if(e.substring(0,3)in this.AAFullNames&&(3==e.length||"("==e[3])){const t=this.AAFullNames[e.substring(0,3)];return t in n?[n.get(t),t,s,3]:[this.undefinedColor,r,s,3]}if(e[0]?.toLowerCase()==e[0]&&e.substring(1,3)in this.AAFullNames&&(4==e.length||"("==e[4])){const t=this.AAFullNames[e.substring(1,3)];return t in n?[n.get(t),t,s,4]:[this.undefinedColor,r,s,4]}return[this.undefinedColor,r,s,0]}}R.SemType="Aminoacids",R.SemTypeMultipleAlignment="AminoacidsMultipleAlignment",R.undefinedColor="rgb(100,100,100)",R.Names={G:"Glycine",L:"Leucine",Y:"Tyrosine",S:"Serine",E:"Glutamic acid",Q:"Glutamine",D:"Aspartic acid",N:"Asparagine",F:"Phenylalanine",A:"Alanine",K:"Lysine",R:"Arginine",H:"Histidine",C:"Cysteine",V:"Valine",P:"Proline",W:"Tryptophan",I:"Isoleucine",M:"Methionine",T:"Threonine"},R.AASmiles={G:"NCC(=O)O",L:"N[C@H](CC(C)C)C(=O)O",Y:"NC(CC1=CC=C(O)C=C1)C(=O)O",S:"NC(CO)C(=O)O",E:"N[C@@H](CCC(O)=O)C(=O)O",Q:"N[C@@H](CCC(N)=O)C(=O)O",D:"N[C@@H](CC(O)=O)C(=O)O",N:"N[C@@H](CC(N)=O)C(=O)O",F:"NC(CC1=CC=CC=C1)C(=O)O",A:"N[C@H](C)C(=O)O",K:"NC(CCCCN)C(=O)O",R:"N[C@H](CCCNC(=N)C)C(=O)O",H:"NC(CC1=CN=C[N]1)C(=O)O",C:"N[C@@H](CS)C(=O)O",V:"NC(C(C)C)C(=O)O",P:"N(CCC1)C1C(=O)O",W:"N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O",I:"N[C@H]([C@H](C)CC)C(=O)O",M:"NC(CCSC)C(=O)O",T:"NC(C(O)C)C(=O)O"},R.AASmilesTruncated={G:"*C*",L:"CC(C)C[C@H](*)*",Y:"C1=CC(=CC=C1CC(*)*)O",S:"OCC(*)C*",E:"*[C@@H](CCC(O)=O)*",Q:"*N[C@@H](CCC(N)=O)*",D:"*[C@@H](CC(O)=O)*",N:"*[C@@H](CC(N)=O)*",F:"C1=CC=C(C=C1)CC(*)*",A:"C[C@H](*)*",K:"C(CCN)CC(*)*",R:"*[C@H](CCCNC(=N)C)*",H:"C1=C(NC=N1)CC(*)*",C:"C([C@@H](*)*)S",V:"CC(C)C(*)*",P:"C1CCN(*)C1*",W:"*[C@@H](Cc1c2ccccc2n([H])c1)*",I:"CC[C@H](C)[C@H](*)*",M:"CSCCC(*)*",T:"CC(O)C(*)*"},R.AAFullNames={Ala:"A",Arg:"R",Asn:"N",Asp:"D",Cys:"C",Gln:"Q",Glu:"E",Gly:"G",His:"H",Ile:"I",Leu:"L",Lys:"K",Met:"M",Phe:"F",Pro:"P",Ser:"S",Thr:"T",Trp:"W",Tyr:"Y",Val:"V"};class D{}D.SemType="Nucleotides",D.SemTypeMultipleAlignment="NucleotidesMultipleAlignment",D.Names={A:"Adenine",C:"Cytosine",G:"Guanine",T:"Thymine",U:"Uracil"};class x extends class{}{static buildPalette(){return[].concat(...Object.values(L.colourPalette))}get(e){const t=class{static hashCode(e){let t=0;if(0===e.length)return t;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}}.hashCode(e)%x.palette.length;return function(e){if(null==e)return"rgb(100,100,100)";const t=n.Color.fromHtml(e),r=n.Color.g(t),s=n.Color.r(t),o=n.Color.b(t),i=Math.sqrt(Math.pow(0-s,2)+Math.pow(0-r,2)+Math.pow(0-o,2));return i>210?`rgb(${s/i*210},${r/i*210},${o/i*210})`:n.Color.toRgb(t)}(x.palette[t])}}x.palette=x.buildPalette();new Uint32Array(65536);var F,_;(_=F||(F={})).HAMMING="Hamming",_.LEVENSHTEIN="Levenshtein",_.NEEDLEMANN_WUNSCH="Needlemann-Wunsch",F.HAMMING,F.LEVENSHTEIN,F.NEEDLEMANN_WUNSCH,new class{constructor(){this.uhTemp=`units-handler.${n.SEMTYPE.MACROMOLECULE}`}},S.FASTA,S.SEPARATOR,S.HELM;var V=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{a(r.next(e))}catch(e){o(e)}}function l(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}a((r=r.apply(e,t||[])).next())}))};const W="Libraries",U={"HELMCoreLibrary.json":"HELMCoreLibrary.json"};m("findMonomers",(()=>{let e,t=null;E((()=>V(void 0,void 0,void 0,(function*(){e=yield async function(){const e=n.Func.find({package:"Bio",name:"getMonomerLibHelper"});if(0===e.length)throw new Error('Package "Bio" must be installed for MonomerLibHelper.');return(await e[0].prepare().call()).getOutputParamValue()}(),t=yield r.dapi.userDataStorage.get(W,!0),yield r.dapi.userDataStorage.post(W,U,!0),yield e.loadLibraries(!0)})))),b((()=>V(void 0,void 0,void 0,(function*(){yield r.dapi.userDataStorage.put(W,t,!0)}))));const s={withoutMissed:{test:"PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set},withMissed:{test:"PEPTIDE1{meI.missed2.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set(["missed2"])}};for(const[e,t]of Object.entries(s))C(e,(()=>V(void 0,void 0,void 0,(function*(){o(t.test,t.tgt)}))));function o(e,t){h(function(e){const t=Object.keys(org.helm.webeditor.monomerTypeList()),n=[],r=[];for(let e=0;e<t.length;e++)n.push(new scil.helm.Monomers.getMonomerSet(t[e])),Object.keys(n[e]).forEach((t=>{r.push(n[e][t].id)}));return new Set(e.filter((e=>!r.includes(e))))}(T(e)),t)}}));const j=$;var Y=e.n(j),K=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{a(r.next(e))}catch(e){o(e)}}function l(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}a((r=r.apply(e,t||[])).next())}))};m("renderers",(()=>{C("missedInLib",(()=>K(void 0,void 0,void 0,(function*(){yield function(){return K(this,void 0,void 0,(function*(){const e=yield r.dapi.files.readCsv("System:AppData/Helm/tests/sample_HELM-missedInLib.csv"),t=e.getCol("HELM"),o=r.shell.addTableView(e);yield function(e,t="Timeout exceeded",n=500,r=50){return s(this,void 0,void 0,(function*(){return new Promise(((s,o)=>{setTimeout((()=>{clearInterval(i),o(new Error(t))}),n);const i=setInterval((()=>{e()&&(clearInterval(i),s())}),r)}))}))}((()=>Y()(o.root).find(".d4-grid canvas").length>0),"Table view canvas not found",100),g(t.semType,n.SEMTYPE.MACROMOLECULE),g(t.getTag(n.TAGS.UNITS),S.HELM),g(t.getTag(n.TAGS.CELL_RENDERER),"helm");const i=t.getTag(".cell-renderer.render.error");if(i){const e=JSON.parse(i),t=new Error(e.message);throw t.stack=e.stack,t}}))}()}))))}));const Q=new n.Package;function B(e,t,a){return c=this,C=void 0,f=function*(){const c=yield function(e){var t,a,c,C,g;return s(this,void 0,void 0,(function*(){const f=null===(a=null===(t=r.functions.getCurrentCall())||void 0===t?void 0:t.func)||void 0===a?void 0:a.package;yield function(e,t){return s(this,void 0,void 0,(function*(){if(l[e])return;const t=o;if(void 0!==t["Auto Tests"]||Object.keys(t).find((e=>e.startsWith(i))))return void(l[e]=!0);const n=[],a=yield r.dapi.functions.filter(`package.id = "${e}"`).list(),c=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)/g);for(const e of a){const o=e.options.test;if(o&&Array.isArray(o)&&o.length)for(let l=0;l<o.length;l++){const a=o[l].matchAll(c),u={};Array.from(a).forEach((e=>{e[0].startsWith("skip")?u.skip=e[1]:e[0].startsWith("wait")?u.wait=parseInt(e[2]):e[0].startsWith("cat")&&(u.cat=e[3])}));const C=new d(i,1===o.length?e.name:`${e.name} ${l+1}`,(()=>s(this,void 0,void 0,(function*(){const t=yield r.functions.eval(A(o[l],e));if(u.wait&&(yield N(u.wait)),"boolean"==typeof t&&!t)throw`Failed: ${o[l]}, expected true, got ${t}`}))),{skipReason:u.skip});if(u.cat){const e="Auto Tests: "+u.cat;C.category=e,void 0===t[e]&&(t[e]={tests:[],clear:!0}),t[e].tests.push(C)}else n.push(C)}}l[e]=!0,n.length&&(t["Auto Tests"]={tests:n,clear:!0})}))}(f.id);const h=[];console.log("Running tests"),null!=e||(e={}),null!==(c=(g=e).testContext)&&void 0!==c||(g.testContext=new u),r.shell.lastError="";for(const[t,s]of Object.entries(o)){if(null!=(null==e?void 0:e.category)&&!t.toLowerCase().startsWith(null==e?void 0:e.category.toLowerCase()))continue;console.log(`Started ${t} category`);try{s.before&&(yield s.before())}catch(e){s.beforeStatus=e.toString()}const o=null!==(C=s.tests)&&void 0!==C?C:[],i=[];if(s.clear)for(let t=0;t<o.length;t++)i.push(yield y(o[t],null==e?void 0:e.test,s.timeout)),r.shell.closeAll(),n.Balloon.closeAll();else for(let t=0;t<o.length;t++)i.push(yield y(o[t],null==e?void 0:e.test,s.timeout));const l=(yield Promise.all(i)).filter((e=>"skipped"!=e.result));try{s.after&&(yield s.after())}catch(e){s.afterStatus=e.toString()}s.afterStatus&&l.push({category:t,name:"init",result:s.afterStatus,success:!1,ms:0,skipped:!1}),s.beforeStatus&&l.push({category:t,name:"init",result:s.beforeStatus,success:!1,ms:0,skipped:!1}),h.push(...l)}if(e.testContext.catchUnhandled&&(yield N(1e3),r.shell.lastError.length>0&&h.push({category:"Unhandled exceptions",name:"exceptions",result:r.shell.lastError,success:!1,ms:0,skipped:!1})),e.testContext.report){const e=new n.Logger,t=h.filter((e=>e.success)).length,r=h.filter((e=>e.skipped)).length,s=h.filter((e=>!e.success)),o="Package @package tested: @successful successful, @skipped skipped, @failed failed tests",i={successful:t,skipped:r,failed:s.length,package:f};for(const e of s)Object.assign(i,{[`${e.category} | ${e.name}`]:e.result});e.log(o,i,"package-tested")}return h}))}({category:e,test:t,testContext:a});return n.DataFrame.fromObjects(c)},new((g=void 0)||(g=Promise))((function(e,t){function n(e){try{s(f.next(e))}catch(e){t(e)}}function r(e){try{s(f.throw(e))}catch(e){t(e)}}function s(t){var s;t.done?e(t.value):(s=t.value,s instanceof g?s:new g((function(e){e(s)}))).then(n,r)}s((f=f.apply(c,C||[])).next())}));var c,C,g,f}helm_test=t})();
2
2
  //# sourceMappingURL=package-test.js.map