@datagrok/helm 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@datagrok/helm",
3
3
  "friendlyName": "Helm",
4
- "version": "2.1.1",
4
+ "version": "2.1.2",
5
5
  "author": {
6
6
  "name": "Oleksandra Serhiienko",
7
7
  "email": "oserhiienko@datagrok.ai"
8
8
  },
9
9
  "description": "",
10
10
  "dependencies": {
11
- "@datagrok-libraries/bio": "^5.15.1",
11
+ "@datagrok-libraries/bio": "^5.21.0",
12
12
  "@datagrok-libraries/utils": "^1.19.1",
13
13
  "cash-dom": "^8.1.1",
14
14
  "datagrok-api": "^1.11.1",
@@ -23,12 +23,8 @@
23
23
  "helm/JSDraw/Pistoia.HELM-uncompressed.js"
24
24
  ],
25
25
  "devDependencies": {
26
- "@types/jest": "^27.0.0",
27
- "jest": "^27.0.0",
28
- "jest-html-reporter": "^3.6.0",
29
26
  "path": "^0.12.7",
30
27
  "puppeteer": "^13.7.0",
31
- "ts-jest": "^27.0.0",
32
28
  "ts-loader": "^9.2.6",
33
29
  "typescript": "^4.4.4",
34
30
  "webpack": "^5.59.1",
@@ -56,9 +52,9 @@
56
52
  "release-helm-public": "grok publish public --release",
57
53
  "lint": "eslint \"./src/**/*.ts\"",
58
54
  "lint-fix": "eslint \"./src/**/*.ts\" --fix",
59
- "test": "jest",
60
- "test-dev": "set HOST=dev && jest",
61
- "test-local": "set HOST=localhost && jest"
55
+ "test": "grok test",
56
+ "test-dev": "grok test --host dev",
57
+ "test-local": "grok test --host localhost"
62
58
  },
63
59
  "canEdit": [
64
60
  "Developers"
@@ -3,7 +3,7 @@ import * as ui from 'datagrok-api/ui';
3
3
  import * as DG from 'datagrok-api/dg';
4
4
 
5
5
  import {findMonomers, parseHelm, getParts} from './utils';
6
- import {printLeftOrCentered} from '@datagrok-libraries/bio';
6
+ import {printLeftOrCentered} from '@datagrok-libraries/bio/src/utils/cell-renderer';
7
7
 
8
8
 
9
9
  export class HelmCellRenderer extends DG.GridCellRenderer {
@@ -50,7 +50,7 @@ export class HelmCellRenderer extends DG.GridCellRenderer {
50
50
  if (monomers.has(allParts[i]))
51
51
  tooltipMessage[i] = ui.divV([
52
52
  ui.divText(`Monomer ${allParts[i]} not found.`),
53
- ui.divText('Open the Property Panel, then expand Manage Libraries')
53
+ ui.divText('Open the Context Panel, then expand Manage Libraries')
54
54
  ]);
55
55
  }
56
56
  (((tooltipMessage[left]?.childNodes.length ?? 0) > 0))
package/src/package.ts CHANGED
@@ -5,8 +5,9 @@ import * as DG from 'datagrok-api/dg';
5
5
 
6
6
  import {WebEditorMonomer, RGROUP_CAP_GROUP_NAME, RGROUP_LABEL, SMILES} from './constants';
7
7
  import {HelmWebEditor} from './helm-web-editor';
8
- import {NotationConverter, IMonomerLib, Monomer} from '@datagrok-libraries/bio';
9
8
  import {HelmCellRenderer} from './cell-renderer';
9
+ import {IMonomerLib, Monomer} from '@datagrok-libraries/bio/src/types';
10
+ import {NotationConverter} from '@datagrok-libraries/bio/src/utils/notation-converter';
10
11
 
11
12
  export const _package = new DG.Package();
12
13
  let monomerLib: IMonomerLib | null = null;
package/jest.config.js DELETED
@@ -1,34 +0,0 @@
1
- module.exports = {
2
- "roots": [
3
- "<rootDir>/src"
4
- ],
5
- "testMatch": [
6
- "**/__jest__/**/*.test.+(ts|tsx)"
7
- ],
8
- moduleFileExtensions: [
9
- 'ts',
10
- 'js',
11
- ],
12
- "transform": {
13
- "^.+\\.(ts|tsx)$": "ts-jest"
14
- },
15
- transformIgnorePatterns: ['^.+\\.js$'],
16
- globals: {
17
- 'ts-jest': {
18
- 'tsconfig': {
19
- "target": "es6",
20
- "module": "es2020",
21
- }
22
- }
23
- },
24
- reporters: [
25
- "default",
26
- [
27
- "./node_modules/jest-html-reporter",
28
- {
29
- "includeConsoleLog": true,
30
- "includeFailureMsg": true
31
- }
32
- ]
33
- ]
34
- }
@@ -1,77 +0,0 @@
1
- /**
2
- * @jest-environment jsdom
3
- */
4
-
5
- import * as utils from './test-node';
6
- import puppeteer from 'puppeteer';
7
-
8
- const P_START_TIMEOUT: number = 3600000;
9
- let browser: puppeteer.Browser;
10
- let page: puppeteer.Page;
11
-
12
- beforeAll(async () => {
13
- let out = await utils.getBrowserPage(puppeteer);
14
- browser = out.browser;
15
- page = out.page;
16
- }, P_START_TIMEOUT);
17
-
18
- afterAll(async () => {
19
- await browser?.close();
20
- });
21
-
22
- expect.extend({
23
- checkOutput(received, expected, context) {
24
- if (received === expected) {
25
- return {
26
- message: () => context,
27
- pass: true
28
- };
29
- } else {
30
- return {
31
- message: () => context,
32
- pass: false
33
- };
34
- }
35
- }
36
- });
37
-
38
- it('TEST', async () => {
39
- const targetPackage:string = process.env.TARGET_PACKAGE ?? 'Helm';
40
- console.log(`Testing ${targetPackage} package`);
41
-
42
- let r = await page.evaluate((targetPackage):Promise<object> => {
43
- return new Promise<object>((resolve, reject) => {
44
- (<any>window).grok.functions.eval(targetPackage + ':test()').then((df: any) => {
45
- const cStatus = df.columns.byName('success');
46
- const cSkipped = df.columns.byName('skipped');
47
- const cMessage = df.columns.byName('result');
48
- const cCat = df.columns.byName('category');
49
- const cName = df.columns.byName('name');
50
- const cTime = df.columns.byName('ms');
51
- let failed = false;
52
- let skipReport = '';
53
- let passReport = '';
54
- let failReport = '';
55
- for (let i = 0; i < df.rowCount; i++) {
56
- if (cStatus.get(i)) {
57
- if (cSkipped.get(i)) {
58
- skipReport += `Test result : Skipped : ${cTime.get(i)} : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
59
- } else {
60
- passReport += `Test result : Success : ${cTime.get(i)} : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
61
- }
62
- } else {
63
- failed = true;
64
- failReport += `Test result : Failed : ${cTime.get(i)} : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
65
- }
66
- }
67
- resolve({failReport, skipReport, passReport, failed});
68
- }).catch((e: any) => reject(e));
69
- });
70
- }, targetPackage);
71
- // @ts-ignore
72
- console.log(r.passReport);
73
- // @ts-ignore
74
- console.log(r.skipReport);
75
- // @ts-ignore
76
- expect(r.failed).checkOutput(false, r.failReport);
77
- }, 7200000);
@@ -1,96 +0,0 @@
1
- import * as path from "path";
2
- import * as os from "os";
3
- import * as fs from "fs";
4
- import * as yaml from 'js-yaml';
5
- import fetch from 'node-fetch';
6
-
7
- export async function getToken(url: string, key: string) {
8
- let response = await fetch(`${url}/users/login/dev/${key}`, {method: 'POST'});
9
- let json = await response.json() as Record<string, any>;
10
- if (json.isSuccess == true)
11
- return json.token;
12
- else
13
- throw 'Unable to login to server. Check your dev key';
14
- }
15
-
16
- export async function getWebUrl(url: string, token: string) {
17
- let response = await fetch(`${url}/admin/plugins/admin/settings`, {headers: {Authorization: token}});
18
- let json = await response.json() as Record<string, any>;
19
- return json.settings.webRoot;
20
- }
21
-
22
- const grokDir = path.join(os.homedir(), '.grok');
23
- const confPath = path.join(grokDir, 'config.yaml');
24
-
25
- function mapURL(conf: Config): Indexable {
26
- let urls: Indexable = {};
27
- for (let server in conf.servers) {
28
- urls[conf['servers'][server]['url']] = conf['servers'][server];
29
- }
30
- return urls;
31
- }
32
-
33
- export function getDevKey(hostKey: string): {url: string, key: string} {
34
- let config = yaml.load(fs.readFileSync(confPath, 'utf8')) as any;
35
- let host = hostKey == '' ? config.default : hostKey;
36
- host = host.trim();
37
- let urls = mapURL(config);
38
- let key = '';
39
- let url = '';
40
- try {
41
- let url = new URL(host).href;
42
- if (url.endsWith('/')) url = url.slice(0, -1);
43
- if (url in urls) key = config['servers'][urls[url]]['key'];
44
- } catch (error) {
45
- if (config['servers'][host] == null)
46
- throw `Unknown server alias. Please add it to ${confPath}`;
47
- url = config['servers'][host]['url'];
48
- key = config['servers'][host]['key'];
49
- }
50
- return {url, key};
51
- }
52
-
53
- export async function getBrowserPage(puppeteer: any): Promise<{browser: any, page: any}> {
54
- let url:string = process.env.HOST ?? '';
55
- let cfg = getDevKey(url);
56
- url = cfg.url;
57
-
58
- let key = cfg.key;
59
- let token = await getToken(url, key);
60
- url = await getWebUrl(url, token);
61
- console.log(`Using web root: ${url}`);
62
-
63
- let browser = await puppeteer.launch({
64
- args: ['--disable-dev-shm-usage', '--disable-features=site-per-process'],
65
- ignoreHTTPSErrors: true,
66
- });
67
-
68
- let page = await browser.newPage();
69
- await page.setDefaultNavigationTimeout(0);
70
- await page.goto(`${url}/oauth/`);
71
- await page.setCookie({name: 'auth', value: token});
72
- await page.evaluate((token: any) => {
73
- window.localStorage.setItem('auth', token);
74
- }, token);
75
- await page.goto(url);
76
- try {
77
- // await page.waitForSelector('.grok-preloader', { timeout: 1800000 });
78
- await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {timeout: 3600000});
79
- } catch (error) {
80
- throw error;
81
- }
82
- return {browser, page};
83
- }
84
-
85
-
86
- interface Config {
87
- servers: {
88
- [alias: string]: {
89
- url: string,
90
- key: string
91
- }
92
- },
93
- default: string,
94
- }
95
-
96
- interface Indexable { [key: string]: any }
@@ -1,249 +0,0 @@
1
- <html><head><meta charset="utf-8"/><title>Helm Test Report. Datagrok version datagrok/datagrok:bleeding-edge SHA=c4a2a41b7b00. Commit 07e4a533.</title><style type="text/css">html,
2
- body {
3
- font-family: Arial, Helvetica, sans-serif;
4
- font-size: 1rem;
5
- margin: 0;
6
- padding: 0;
7
- color: #333;
8
- }
9
- body {
10
- padding: 2rem 1rem;
11
- font-size: 0.85rem;
12
- }
13
- #jesthtml-content {
14
- margin: 0 auto;
15
- max-width: 70rem;
16
- }
17
- header {
18
- display: flex;
19
- align-items: center;
20
- }
21
- #title {
22
- margin: 0;
23
- flex-grow: 1;
24
- }
25
- #logo {
26
- height: 4rem;
27
- }
28
- #timestamp {
29
- color: #777;
30
- margin-top: 0.5rem;
31
- }
32
-
33
- /** SUMMARY */
34
- #summary {
35
- color: #333;
36
- margin: 2rem 0;
37
- display: flex;
38
- font-family: monospace;
39
- font-size: 1rem;
40
- }
41
- #summary > div {
42
- margin-right: 2rem;
43
- background: #eee;
44
- padding: 1rem;
45
- min-width: 15rem;
46
- }
47
- #summary > div:last-child {
48
- margin-right: 0;
49
- }
50
- @media only screen and (max-width: 720px) {
51
- #summary {
52
- flex-direction: column;
53
- }
54
- #summary > div {
55
- margin-right: 0;
56
- margin-top: 2rem;
57
- }
58
- #summary > div:first-child {
59
- margin-top: 0;
60
- }
61
- }
62
-
63
- .summary-total {
64
- font-weight: bold;
65
- margin-bottom: 0.5rem;
66
- }
67
- .summary-passed {
68
- color: #4f8a10;
69
- border-left: 0.4rem solid #4f8a10;
70
- padding-left: 0.5rem;
71
- }
72
- .summary-failed,
73
- .summary-obsolete-snapshots {
74
- color: #d8000c;
75
- border-left: 0.4rem solid #d8000c;
76
- padding-left: 0.5rem;
77
- }
78
- .summary-pending {
79
- color: #9f6000;
80
- border-left: 0.4rem solid #9f6000;
81
- padding-left: 0.5rem;
82
- }
83
- .summary-empty {
84
- color: #999;
85
- border-left: 0.4rem solid #999;
86
- }
87
-
88
- .test-result {
89
- padding: 1rem;
90
- margin-bottom: 0.25rem;
91
- }
92
- .test-result:last-child {
93
- border: 0;
94
- }
95
- .test-result.passed {
96
- background-color: #dff2bf;
97
- color: #4f8a10;
98
- }
99
- .test-result.failed {
100
- background-color: #ffbaba;
101
- color: #d8000c;
102
- }
103
- .test-result.pending {
104
- background-color: #ffdf61;
105
- color: #9f6000;
106
- }
107
-
108
- .test-info {
109
- display: flex;
110
- justify-content: space-between;
111
- }
112
- .test-suitename {
113
- width: 20%;
114
- text-align: left;
115
- font-weight: bold;
116
- word-break: break-word;
117
- }
118
- .test-title {
119
- width: 40%;
120
- text-align: left;
121
- font-style: italic;
122
- }
123
- .test-status {
124
- width: 20%;
125
- text-align: right;
126
- }
127
- .test-duration {
128
- width: 10%;
129
- text-align: right;
130
- font-size: 0.75rem;
131
- }
132
-
133
- .failureMessages {
134
- padding: 0 1rem;
135
- margin-top: 1rem;
136
- border-top: 1px dashed #d8000c;
137
- }
138
- .failureMessages.suiteFailure {
139
- border-top: none;
140
- }
141
- .failureMsg {
142
- white-space: pre-wrap;
143
- white-space: -moz-pre-wrap;
144
- white-space: -pre-wrap;
145
- white-space: -o-pre-wrap;
146
- word-wrap: break-word;
147
- }
148
-
149
- .suite-container {
150
- margin-bottom: 2rem;
151
- }
152
- .suite-info {
153
- padding: 1rem;
154
- background-color: #eee;
155
- color: #777;
156
- display: flex;
157
- align-items: center;
158
- margin-bottom: 0.25rem;
159
- }
160
- .suite-info .suite-path {
161
- word-break: break-all;
162
- flex-grow: 1;
163
- font-family: monospace;
164
- font-size: 1rem;
165
- }
166
- .suite-info .suite-time {
167
- margin-left: 0.5rem;
168
- padding: 0.2rem 0.3rem;
169
- font-size: 0.75rem;
170
- }
171
- .suite-info .suite-time.warn {
172
- background-color: #d8000c;
173
- color: #fff;
174
- }
175
-
176
- /* CONSOLE LOGS */
177
- .suite-consolelog {
178
- margin-bottom: 0.25rem;
179
- padding: 1rem;
180
- background-color: #efefef;
181
- }
182
- .suite-consolelog-header {
183
- font-weight: bold;
184
- }
185
- .suite-consolelog-item {
186
- padding: 0.5rem;
187
- }
188
- .suite-consolelog-item pre {
189
- margin: 0.5rem 0;
190
- white-space: pre-wrap;
191
- white-space: -moz-pre-wrap;
192
- white-space: -pre-wrap;
193
- white-space: -o-pre-wrap;
194
- word-wrap: break-word;
195
- }
196
- .suite-consolelog-item-origin {
197
- color: #777;
198
- font-weight: bold;
199
- }
200
- .suite-consolelog-item-message {
201
- color: #000;
202
- font-size: 1rem;
203
- padding: 0 0.5rem;
204
- }
205
-
206
- /* OBSOLETE SNAPSHOTS */
207
- .suite-obsolete-snapshots {
208
- margin-bottom: 0.25rem;
209
- padding: 1rem;
210
- background-color: #ffbaba;
211
- color: #d8000c;
212
- }
213
- .suite-obsolete-snapshots-header {
214
- font-weight: bold;
215
- }
216
- .suite-obsolete-snapshots-item {
217
- padding: 0.5rem;
218
- }
219
- .suite-obsolete-snapshots-item pre {
220
- margin: 0.5rem 0;
221
- white-space: pre-wrap;
222
- white-space: -moz-pre-wrap;
223
- white-space: -pre-wrap;
224
- white-space: -o-pre-wrap;
225
- word-wrap: break-word;
226
- }
227
- .suite-obsolete-snapshots-item-message {
228
- color: #000;
229
- font-size: 1rem;
230
- padding: 0 0.5rem;
231
- }
232
- </style></head><body><div id="jesthtml-content"><header><h1 id="title">Helm Test Report. Datagrok version datagrok/datagrok:bleeding-edge SHA=c4a2a41b7b00. Commit 07e4a533.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2023-01-05 12:03:23</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts</div><div class="suite-time warn">13.336s</div></div><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">passed</div><div class="test-duration">2.808s</div></div></div></div><div class="suite-consolelog"><div class="suite-consolelog-header">Console Log</div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Helm/src/__jest__/test-node.ts:61:11)
233
- at Generator.next (&lt;anonymous&gt;)
234
- at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/test-node.ts:28:58)
235
- at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Using web root: http://localhost:8080</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:40:11
236
- at Generator.next (&lt;anonymous&gt;)
237
- at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:34:71
238
- at new Promise (&lt;anonymous&gt;)
239
- at Object.&lt;anonymous&gt;.__awaiter (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:30:12)
240
- at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:38:23)
241
- at Promise.then.completed (/home/runner/work/public/public/packages/Helm/node_modules/jest-circus/build/utils.js:391:28)
242
- at new Promise (&lt;anonymous&gt;)</pre><pre class="suite-consolelog-item-message">Testing Helm package</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:72:11
243
- at Generator.next (&lt;anonymous&gt;)
244
- at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:31:58)
245
- at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Test result : Success : 20 : Helm.Helm.parseHelm : OK
246
- </pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:74:11
247
- at Generator.next (&lt;anonymous&gt;)
248
- at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:31:58)
249
- at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message"/></div></div></div></div></body></html>