@sassoftware/viya-serverjs 0.2.3 → 0.3.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/public/index.html CHANGED
@@ -18,240 +18,229 @@
18
18
  -->
19
19
 
20
20
  <html lang="en">
21
- <head>
22
- <meta charset="UTF-8" />
23
- <title>index.html</title>
24
21
 
25
- <script
26
- crossorigin
27
- src="https://unpkg.com/react@16/umd/react.production.min.js"
28
- ></script>
29
- <script
30
- crossorigin
31
- src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"
32
- ></script>
33
- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
34
- <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
35
- <script src="https://unpkg.com/@sassoftware/restaf@5.2.4/dist/restaf.js"></script>
36
- <script src="https://unpkg.com/@sassoftware/restaflib@5.2.4/dist/restaflib.js"></script>
37
- <script src="/appenv"></script>
38
-
39
- <style>
40
- .container {
41
- display: flex;
42
- flex-direction: column;
43
- flex-wrap: nowrap;
44
- min-height: 800px;
45
- }
46
- .elabel {
47
- display: inline-block;
22
+ <head>
23
+ <meta charset="UTF-8" />
24
+ <title>index.html</title>
48
25
 
49
- clear: left;
50
- width: 250px;
51
- text-align: right;
52
- }
53
- .einput {
54
- display: inline-block;
55
- }
56
- .div1 {
57
- border: 1px solid black;
58
- background: lightskyblue;
59
- }
60
- .div2 {
61
- border: 1px solid black;
62
- background: lightskyblue;
63
- height: 200px;
26
+ <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
27
+ <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
28
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
29
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
30
+ <script src="https://unpkg.com/@sassoftware/restaf@5.2.4"></script>
31
+ <script src="https://unpkg.com/@sassoftware/restaflib@5.2.4"></script>
32
+ <script src="/appenv"></script>
33
+
34
+ <style>
35
+ .container {
36
+ display: flex;
37
+ flex-direction: column;
38
+ flex-wrap: nowrap;
39
+ min-height: 800px;
40
+ }
41
+
42
+ .elabel {
43
+ display: inline-block;
44
+
45
+ clear: left;
46
+ width: 250px;
47
+ text-align: right;
48
+ }
49
+
50
+ .einput {
51
+ display: inline-block;
52
+ }
53
+
54
+ .div1 {
55
+ border: 1px solid black;
56
+ background: lightskyblue;
57
+ }
58
+
59
+ .div2 {
60
+ border: 1px solid black;
61
+ background: lightskyblue;
62
+ height: 200px;
63
+ }
64
+ </style>
65
+
66
+ <script>
67
+ debugger;
68
+ console.log(JSON.stringify(APPENV, null, 4));
69
+ let store = restaf.initStore({
70
+ casProxy: true,
71
+ options: {
72
+ proxyServer: APPENV.PROXYSERVER,
73
+ httpOptions: null
64
74
  }
65
- </style>
66
-
67
- <script>
75
+ });
76
+ debugger; console.log(store.config);
77
+
78
+ let session = null;
79
+ let servers = null;
80
+ let services = null;
81
+ let files = null;
82
+ let reports = null;
83
+ let compute = null;
84
+
85
+ function setup() {
68
86
  debugger;
69
- console.log(JSON.stringify(APPENV, null, 4));
70
- let store = restaf.initStore({
71
- casProxy: true,
72
- options: {
73
- proxyServer: APPENV.PROXYSERVER,
74
- }
75
- });
76
- debugger; console.log(store.config);
87
+ document.getElementById('output').innerHTML = '...initializing';
77
88
 
78
- let session = null;
79
- let servers = null;
80
- let services = null;
81
- let files = null;
82
- let reports = null;
83
- let compute = null;
89
+ initSession()
90
+ .then(r => {
91
+ document.getElementById('output').innerHTML = 'ready';
92
+ keepAlive();
93
+ })
94
+ .catch(e => {
84
95
 
85
- function setup() {
86
- debugger;
87
- document.getElementById('output').innerHTML = '...initializing';
88
-
89
- initSession()
90
- .then(r => {
91
- document.getElementById('output').innerHTML = 'ready';
92
- keepAlive();
93
- })
94
- .catch(e => {
95
-
96
- console.log(e);
97
- });
98
- }
99
- function keepAlive() {
100
- if (LOGONPAYLOAD.keepAlive != null) {
101
- let interval = 120;
102
- let timeout = 14400;
103
- if (LOGONPAYLOAD.timers != null) {
104
- let opts = LOGONPAYLOAD.timers.split(',');
105
- interval = parseInt(opts[ 0 ]);
106
- timeout = parseInt(opts[ 1 ]);
107
- }
108
- console.log(`Keepalive is active`);
109
- store.keepViyaAlive(LOGONPAYLOAD.keepAlive, interval, timeout, () => {
110
- console.log('timed out at', Date());
111
- let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000`;
112
- window.open(`${appOptions.logonPayload.host}/SASLogon/timedout`, 'Timed Out', params);
113
- return true;
114
- });
96
+ console.log(e);
97
+ });
98
+ }
99
+ function keepAlive() {
100
+ if (LOGONPAYLOAD.keepAlive != null) {
101
+ let interval = 120;
102
+ let timeout = 14400;
103
+ if (LOGONPAYLOAD.timers != null) {
104
+ let opts = LOGONPAYLOAD.timers.split(',');
105
+ interval = parseInt(opts[0]);
106
+ timeout = parseInt(opts[1]);
115
107
  }
116
-
108
+ console.log(`Keepalive is active`);
109
+ store.keepViyaAlive(LOGONPAYLOAD.keepAlive, interval, timeout, () => {
110
+ console.log('timed out at', Date());
111
+ let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000`;
112
+ window.open(`${appOptions.logonPayload.host}/SASLogon/timedout`, 'Timed Out', params);
113
+ return true;
114
+ });
117
115
  }
118
- function logoff() {
119
- let url = `${window.location.protocol}//${window.location.host}/${LOGONPAYLOAD.appName}/logout?callbackUrl=onlogoff.html`;
120
- window.location.replace(url);
121
116
 
122
-
117
+ }
118
+ function logoff() {
119
+ let url = `${window.location.protocol}//${window.location.host}/${LOGONPAYLOAD.appName}/logout?callbackUrl=onlogoff.html`;
120
+ window.location.replace(url);
121
+
122
+
123
+ }
124
+ async function initSession() {
125
+ debugger;
126
+ console.log(APPENV);
127
+ console.log(LOGONPAYLOAD);
128
+ debugger;
129
+ if (LOGONPAYLOAD.host == null) {
130
+ return 'done';
123
131
  }
124
- async function initSession() {
125
-
126
- console.log(APPENV);
127
- console.log(LOGONPAYLOAD);
128
- debugger;
129
- if (LOGONPAYLOAD.host == null) {
130
-
131
- return 'done';
132
- }
132
+ try {
133
133
  let msg = await store.logon(LOGONPAYLOAD);
134
134
  console.log(store.connection());
135
135
  console.log(msg);
136
-
137
- // let { identities } = await store.addServices('identities');
138
- let name = 'user';
139
- // if (identities.links('currentUser') != null) {
140
- // let c = await store.apiCall(identities.links('currentUser'));
141
- // name = c.items('id');
142
- // }
143
- console.log(name);
144
- debugger;
145
- /*
146
- services = await store.addServices(
147
- 'files', 'compute', 'casManagement'
148
- );
149
- console.log(services.casManagement.links().toJS())
150
- */
151
- debugger;
152
- return 'done';
136
+ } catch (err) {
137
+ console.log('Error logging in', JSON.stringify(err, null, 4));
138
+ throw err;
153
139
  }
154
- function runit(type) {
155
-
156
-
157
- document.getElementById('output').innerHTML = '...running';
158
- let testcase;
159
- switch (type) {
160
- case 'files': {
161
- testcase = SASfileService;
162
- break;
163
- }
164
- case 'compute': {
165
- testcase = dsCompute;
166
- break;
167
- }
168
- case 'cas': {
169
- testcase = runCas;
170
- break;
171
- }
172
- case 'timedout': {
173
- testcase = timedout;
174
- break;
175
- }
176
- case 'redir': {
177
- testcase= noaction;
178
-
179
- break;
180
- }
181
- case 'spre': {
182
- testcase= spre;
183
-
184
- break;
185
- }
186
- default: {
187
- testcase = SASfileService;
188
- break;
189
- }
140
+ let name = 'user';
141
+
142
+
143
+ //document.getElementById('output').innerHTML = '...running';
144
+ return 'done';
145
+ }
146
+ function runit(type) {
147
+ let testcase;
148
+ switch (type) {
149
+ case 'files': {
150
+ testcase = SASfileService;
151
+ break;
190
152
  }
153
+ case 'compute': {
154
+ testcase = dsCompute;
155
+ break;
156
+ }
157
+ case 'cas': {
158
+ testcase = runCas;
159
+ break;
160
+ }
161
+ case 'timedout': {
162
+ testcase = timedout;
163
+ break;
164
+ }
165
+ case 'redir': {
166
+ testcase = noaction;
191
167
 
192
- testcase(store)
193
- .then(r => {
194
- document.getElementById(
195
- 'output'
196
- ).innerHTML = JSON.stringify(r, null, 4);
197
- })
198
- .catch(err => {
199
-
200
- document.getElementById(
201
- 'output'
202
- ).innerHTML = JSON.stringify(err, null, 4);
203
- });
204
- }
205
- async function noaction() {
206
- r = {msg: 'redirects completed'};
207
- return r;
208
- }
209
- async function spre(store) {
210
- let p = {
211
- method: 'GET',
212
- url : 'http://localhost:3000/api/test',
213
- withCredentials: true
168
+ break;
169
+ }
170
+ case 'spre': {
171
+ testcase = spre;
172
+
173
+ break;
174
+ }
175
+ default: {
176
+ testcase = SASfileService;
177
+ break;
214
178
  }
215
- let r = await store.request(p);
216
- return r.data;
217
- }
218
- async function timedout(store) {
219
- console.log('timed out at', Date() );
220
- let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000`;
221
- window.open(`${LOGONPAYLOAD.host}/SASLogon/timedout`,'Timed Out', params);
222
- return true;
223
179
  }
224
- async function runCas(store) {
225
- debugger;
226
- let {casManagement} = await store.addServices('casManagement');
227
- let servers = await store.apiCall(
228
- casManagement.links('servers')
229
- );
230
- let serverName = servers.itemsList(0);
231
- let session = await store.apiCall(
232
- servers.itemsCmd(serverName, 'createSession')
233
- );
234
- let payload = {
235
- action: 'builtins.echo',
236
- data: { code: { x: 1 } }
237
- };
238
- console.log(JSON.stringify(session.links("execute"), null, 4));
239
- let r = await store.runAction(session, payload);
240
- console.log('echo completed');
241
- await store.apiCall(session.links('delete'));
242
- return r.items();
180
+
181
+ testcase(store)
182
+ .then(r => {
183
+ document.getElementById(
184
+ 'output'
185
+ ).innerHTML = JSON.stringify(r, null, 4);
186
+ })
187
+ .catch(err => {
188
+
189
+ document.getElementById(
190
+ 'output'
191
+ ).innerHTML = JSON.stringify(err, null, 4);
192
+ });
193
+ }
194
+ async function noaction() {
195
+ r = { msg: 'redirects completed' };
196
+ return r;
197
+ }
198
+ async function spre(store) {
199
+ let p = {
200
+ method: 'GET',
201
+ url: 'http://localhost:3000/api/test',
202
+ withCredentials: true
243
203
  }
204
+ let r = await store.request(p);
205
+ return r.data;
206
+ }
207
+ async function timedout(store) {
208
+ console.log('timed out at', Date());
209
+ let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000`;
210
+ window.open(`${LOGONPAYLOAD.host}/SASLogon/timedout`, 'Timed Out', params);
211
+ return true;
212
+ }
213
+ async function runCas(store) {
214
+ debugger;
215
+ let { casManagement } = await store.addServices('casManagement');
216
+ let servers = await store.apiCall(
217
+ casManagement.links('servers')
218
+ );
219
+ let serverName = servers.itemsList(0);
220
+ let session = await store.apiCall(
221
+ servers.itemsCmd(serverName, 'createSession')
222
+ );
223
+ let payload = {
224
+ action: 'builtins.echo',
225
+ data: { code: { x: 1 } }
226
+ };
227
+ console.log(JSON.stringify(session.links("execute"), null, 4));
228
+ let r = await store.runAction(session, payload);
229
+ console.log('echo completed');
230
+ await store.apiCall(session.links('delete'));
231
+ return r.items();
232
+ }
244
233
 
245
- async function SASfileService(store) {
234
+ async function SASfileService(store) {
235
+ debugger;
236
+ let content;
237
+ try {
246
238
  debugger;
247
- let content;
248
- try {
249
- debugger;
250
- let {files} = await store.addServices('files');
239
+ let { files } = await store.addServices('files');
251
240
  debugger;
252
241
  console.log(JSON.stringify(files.links(), null, 4));
253
242
  //console.log('items - should be an array of files(empty array is ok)')
254
- // console.log(files.items().toJS());
243
+ // console.log(files.items().toJS());
255
244
  let payload = {
256
245
  data: { x: 1, y: 'This was saved earlier in the step' },
257
246
  headers: { 'content-type': 'application/json' }
@@ -261,100 +250,102 @@
261
250
  debugger;
262
251
  console.log(JSON.stringify(newFile.links('content'), null, 4));
263
252
  content = await store.apiCall(newFile.links('content'));
264
-
265
- } catch(err) {
253
+
254
+ } catch (err) {
266
255
  console.log(JSON.stringify(err, null, 4));
267
256
  debugger;
268
257
  }
269
- console.log(content);
270
- return content.items();
271
- }
272
- async function dsCompute(store) {
273
- let log = null;
274
- debugger;
275
- let {compute} = await store.addServices('compute');
276
- let servers = await store.apiCall(compute.links('servers'));
258
+ console.log(content);
259
+ return content.items();
260
+ }
261
+ async function dsCompute(store) {
262
+ let log = null;
263
+ debugger;
264
+ let { compute } = await store.addServices('compute');
265
+ let servers = await store.apiCall(compute.links('servers'));
277
266
 
278
- let contexts = await store.apiCall(compute.links('contexts'));
267
+ let contexts = await store.apiCall(compute.links('contexts'));
279
268
 
280
- // lookup the name of the first context and then use it to get the associated createSession restafLink
281
- let createSession = contexts.itemsCmd(
282
- contexts.itemsList(0),
283
- 'createSession'
284
- );
285
- let session = await store.apiCall(createSession);
269
+ // lookup the name of the first context and then use it to get the associated createSession restafLink
270
+ let createSession = contexts.itemsCmd(
271
+ contexts.itemsList(0),
272
+ 'createSession'
273
+ );
274
+ let session = await store.apiCall(createSession);
286
275
 
287
- // Now run a simple data step in that session
288
- let payload = {
289
- data: {
290
- code: [`data _null_; do i = 1 to 100; x=1; end; run; `]
291
- }
292
- };
276
+ // Now run a simple data step in that session
277
+ let payload = {
278
+ data: {
279
+ code: [`data _null_; do i = 1 to 100; x=1; end; run; `]
280
+ }
281
+ };
293
282
 
294
- // Now execute the data step and wait for completion
295
- let job = await store.apiCall(
296
- session.links('execute'),
297
- payload
298
- );
299
- let status = await store.jobState(job, null, 5, 2);
283
+ // Now execute the data step and wait for completion
284
+ let job = await store.apiCall(
285
+ session.links('execute'),
286
+ payload
287
+ );
288
+ let status = await store.jobState(job, null, 5, 2);
300
289
 
301
- if (status.data === 'running') {
302
- throw `ERROR: Job did not complete in allotted time`;
303
- } else {
304
- switch (status.data) {
305
- case 'warning':
306
- console.log(`Warning: check your log for warnings`);
307
- break;
308
- case 'error':
309
- throw `Please correct errors and rerun program`;
310
- default:
311
- log = await store.apiCall(status.job.links('log'));
312
- break;
313
- }
290
+ if (status.data === 'running') {
291
+ throw `ERROR: Job did not complete in allotted time`;
292
+ } else {
293
+ switch (status.data) {
294
+ case 'warning':
295
+ console.log(`Warning: check your log for warnings`);
296
+ break;
297
+ case 'error':
298
+ throw `Please correct errors and rerun program`;
299
+ default:
300
+ log = await store.apiCall(status.job.links('log'));
301
+ break;
314
302
  }
315
- return log === null ? status : log.items();
316
303
  }
317
- </script>
318
- </head>
319
- <body onload="setup()">
320
- <h1 id="head">Hi</h1>
321
- <div>
322
- <button onclick="runit('redir')">
323
- Press to do some redirs
324
- </button>
325
- <button onclick="runit('files')">
326
- Press to make a call to file service
327
- </button>
328
- <br />
329
- <br />
330
- <button onclick="runit('compute')">
331
- Press to make a call compute service
332
- </button>
333
- <br />
334
- <br />
335
- <button onclick="runit('cas')">
336
- Press to make a call to cas echo
337
- </button>
338
- <br />
339
- <br />
340
- <button onclick="runit('spre')">
341
- REST call
342
- </button>
343
- <br />
344
- <br />
345
- <input id='filename'> </input>
346
- <button onclick="runit('timedout')">
347
- Press to test timedout
348
- </button>
349
- <br />
350
- <br />
351
- <button onclick="logoff()">
352
- logoff
353
- </button>
354
- <br />
355
- </div>
356
- <div>
357
- <pre id="output"></pre>
358
- </div>
359
- </body>
360
- </html>
304
+ return log === null ? status : log.items();
305
+ }
306
+ </script>
307
+ </head>
308
+
309
+ <body onload="setup()">
310
+ <h1 id="head">Hi</h1>
311
+ <div>
312
+ <button onclick="runit('redir')">
313
+ Press to do some redirs
314
+ </button>
315
+ <button onclick="runit('files')">
316
+ Press to make a call to file service
317
+ </button>
318
+ <br />
319
+ <br />
320
+ <button onclick="runit('compute')">
321
+ Press to make a call compute service
322
+ </button>
323
+ <br />
324
+ <br />
325
+ <button onclick="runit('cas')">
326
+ Press to make a call to cas echo
327
+ </button>
328
+ <br />
329
+ <br />
330
+ <button onclick="runit('spre')">
331
+ REST call
332
+ </button>
333
+ <br />
334
+ <br />
335
+ <input id='filename'> </input>
336
+ <button onclick="runit('timedout')">
337
+ Press to test timedout
338
+ </button>
339
+ <br />
340
+ <br />
341
+ <button onclick="logoff()">
342
+ logoff
343
+ </button>
344
+ <br />
345
+ </div>
346
+ <div>
347
+ <pre id="output"></pre>
348
+ </div>
349
+ </body>
350
+
351
+ </html>
@@ -31,8 +31,8 @@
31
31
  ></script>
32
32
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
33
33
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
34
- <script src="https://unpkg.com/@sassoftware/restaf@dev"></script>
35
- <script src="https://unpkg.com/@sassoftware/restaflib@dev"></script>
34
+ <script src="https://unpkg.com/@sassoftware/restaf@alpha"></script>
35
+ <script src="https://unpkg.com/@sassoftware/restaflib@alpha"></script>
36
36
  <script src="/appenv"></script>
37
37
 
38
38
  <style>