@naanlang/naan 1.5.0 → 1.7.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/LICENSE.md +2 -2
- package/README.md +2 -2
- package/bin/index.js +7 -3
- package/dist/env_web.js +162 -48
- package/dist/naan.min.js +11 -11
- package/frameworks/browser/https_request.nlg +2 -2
- package/frameworks/browser/sworker.js +28 -26
- package/frameworks/browser/terminals.nlg +295 -737
- package/frameworks/browser/worker.nlg +295 -0
- package/frameworks/browser/workers.nlg +6 -6
- package/frameworks/browser/ws_client.nlg +15 -10
- package/frameworks/client/apiclient.nlg +211 -9
- package/frameworks/client/psm_client.nlg +10 -14
- package/frameworks/client/relaycon.nlg +87 -161
- package/frameworks/common/common.nlg +2 -0
- package/frameworks/common/events.nlg +101 -0
- package/frameworks/common/repltools.nlg +80 -1
- package/frameworks/node/apiserver.nlg +38 -246
- package/frameworks/node/filesystem.nlg +31 -6
- package/frameworks/node/http_request.nlg +34 -13
- package/frameworks/node/https_request.nlg +8 -3
- package/frameworks/node/node.nlg +3 -0
- package/frameworks/node/pty.nlg +346 -0
- package/frameworks/node/shell.nlg +26 -3
- package/frameworks/node/worker.nlg +504 -560
- package/frameworks/node/ws_client.nlg +2 -2
- package/frameworks/project/build.nlg +56 -14
- package/frameworks/project/projects.nlg +1 -1
- package/frameworks/running/debugcom.nlg +20 -3
- package/frameworks/running/debugnub.nlg +33 -11
- package/frameworks/running/executors.nlg +40 -285
- package/frameworks/running/instances.nlg +394 -0
- package/frameworks/running/remote_req.nlg +139 -0
- package/frameworks/running/remote_res.nlg +89 -0
- package/frameworks/running/sourcecode.nlg +3 -2
- package/frameworks/running/taskexec.nlg +16 -59
- package/frameworks/service/imp.nlg +751 -0
- package/frameworks/service/model.nlg +71 -0
- package/frameworks/service/nubnode.nlg +136 -0
- package/frameworks/service/nubweb.nlg +124 -0
- package/frameworks/service/service.nlg +28 -0
- package/frameworks/storage/file_manager.nlg +3 -2
- package/lib/browser/env_web.js +169 -55
- package/lib/browser/env_webworker.js +89 -31
- package/lib/core/naanlib.js +11 -11
- package/lib/env_node.js +186 -27
- package/lib/env_nodeworker.js +82 -44
- package/lib/node_server_init.nlg +149 -0
- package/lib/node_worker.js +36 -0
- package/lib/node_worker_init.nlg +43 -0
- package/package.json +1 -1
- package/plugins/openSearch/openSearch.nlg +3 -2
- package/plugins/openSearch/os_dynamo.nlg +3 -2
- package/plugins/serviceAws/aws_cloudwatchlogs.nlg +44 -2
- package/plugins/serviceAws/aws_dynamo.nlg +144 -63
- package/plugins/serviceAws/aws_utils.nlg +6 -11
- package/plugins/serviceAws/serviceAws.nlg +3 -2
- package/plugins/serviceNexara/speechrec.nlg +10 -6
- package/test/test_01_core.nlg +2 -2
- package/test/test_02_context.nlg +32 -9
- package/test/test_03_jsinterop.nlg +3 -3
- package/test/test_07_lingo.nlg +1 -1
package/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
**NaaN for NPM** version **1.
|
|
1
|
+
**NaaN for NPM** version **1.7.0+1** is released under the MIT License:
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2017-
|
|
3
|
+
Copyright (c) 2017-2026 Zulch Laboratories, Inc.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
NaaN is an async-first software platform for rapid development.
|
|
5
5
|
|
|
6
6
|
#### Release:
|
|
7
|
-
**NaaN for NPM** version **1.
|
|
8
|
-
Copyright (c) 2017-
|
|
7
|
+
**NaaN for NPM** version **1.7.0+1**
|
|
8
|
+
Copyright (c) 2017-2026 Zulch Laboratories, Inc.
|
|
9
9
|
|
|
10
10
|
#### Features
|
|
11
11
|
- **NaaN** runs in NodeJS and web browsers using JavaScript
|
package/bin/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* column positioning: // // !
|
|
9
9
|
*
|
|
10
|
-
* Copyright (c) 2021-
|
|
10
|
+
* Copyright (c) 2021-2026 by Richard C. Zulch
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
13
|
|
|
@@ -40,6 +40,10 @@ var cmd_text = ""
|
|
|
40
40
|
+ `App.naanpath = '${ naanpath.replace(/\\/g, "\\\\") }';;\n` // path/to/our naan library
|
|
41
41
|
+ `App.rootpath = '${ rootpath.replace(/\\/g, "\\\\") }';;\n` // path/to/our package.json
|
|
42
42
|
+ "Naan.module.defineLoc('naanlib', App.naanpath);;\n" // defines "naanlib:" prefix for require
|
|
43
|
+
+ "App.imp = require('naanlib:frameworks/service/imp.nlg').Imp({\n" // create an initial IMP, even if not useful
|
|
44
|
+
+ " name: 'NaaN'\n"
|
|
45
|
+
+ " type: 'cli-tool'\n"
|
|
46
|
+
+ "});;\n"
|
|
43
47
|
+ "nodeparse('lib/node_repl_init.nlg');;\n" // REPL utility functions
|
|
44
48
|
+ "App.shell = require('naanlib:frameworks/node/shell.nlg').ShellConnect({ cwd: js.d });;\n";
|
|
45
49
|
|
|
@@ -69,11 +73,11 @@ process.argv.every((val, index) => {
|
|
|
69
73
|
return (true);
|
|
70
74
|
}
|
|
71
75
|
if (val == "--version") {
|
|
72
|
-
console.log("1.
|
|
76
|
+
console.log("1.7.0");
|
|
73
77
|
process.exit(0);
|
|
74
78
|
}
|
|
75
79
|
if (val == "--buildno") {
|
|
76
|
-
console.log("1.
|
|
80
|
+
console.log("1.7.0+1");
|
|
77
81
|
process.exit(0);
|
|
78
82
|
}
|
|
79
83
|
if (val.substring(0,1) == "-") {
|
package/dist/env_web.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* column positioning: // // !
|
|
8
8
|
*
|
|
9
|
-
* Copyright (c) 2017-
|
|
9
|
+
* Copyright (c) 2017-2026 by Richard C. Zulch
|
|
10
10
|
*
|
|
11
11
|
*/
|
|
12
12
|
|
|
@@ -69,6 +69,7 @@ exports.NaanControllerWeb = function() {
|
|
|
69
69
|
|
|
70
70
|
var naanlib = new exports.Naanlib();
|
|
71
71
|
var dontSaveUntilWorking; // true when state loaded, must be reset to save state again
|
|
72
|
+
var dontSave; // true to avoid saving, i.e. in debugger
|
|
72
73
|
var contSelf = this; // this is us, for access within nested functions
|
|
73
74
|
exports.naancon = this; // access to this instance
|
|
74
75
|
contSelf.anaan = naanlib.js.n;
|
|
@@ -93,8 +94,8 @@ exports.NaanControllerWeb = function() {
|
|
|
93
94
|
function termTextOut(text, level) {
|
|
94
95
|
if (!text)
|
|
95
96
|
return;
|
|
96
|
-
if (termlist.length === 0) {
|
|
97
|
-
console.log(text);
|
|
97
|
+
if (termlist.length === 0) { // make sure we can see early errors
|
|
98
|
+
console.log(text.replace(/(?:\x1B[@-Z\\-_]|\x1B\[[0-?]*[ -/]*[@-~])/g, ''));
|
|
98
99
|
if (!replqueue)
|
|
99
100
|
replqueue = [];
|
|
100
101
|
replqueue.push({text:text, level:level});
|
|
@@ -137,7 +138,7 @@ exports.NaanControllerWeb = function() {
|
|
|
137
138
|
|
|
138
139
|
|
|
139
140
|
//==========================================================================
|
|
140
|
-
//
|
|
141
|
+
// Direct Terminal Interface
|
|
141
142
|
//--------------------------------------------------------------------------
|
|
142
143
|
|
|
143
144
|
//
|
|
@@ -170,6 +171,7 @@ exports.NaanControllerWeb = function() {
|
|
|
170
171
|
if (repdex < 0)
|
|
171
172
|
termlist.push(terminal);
|
|
172
173
|
takePending(); // output all pending terminal messages
|
|
174
|
+
this.ioctl_event("term-attach", terminal.guid);
|
|
173
175
|
};
|
|
174
176
|
|
|
175
177
|
//
|
|
@@ -184,6 +186,7 @@ exports.NaanControllerWeb = function() {
|
|
|
184
186
|
termlist.splice(repdex, 1);
|
|
185
187
|
if (termlist.length === 0)
|
|
186
188
|
replstate = terminal.StateSave(); // save ultimate repl state
|
|
189
|
+
this.ioctl_event("term-detach", terminal.guid);
|
|
187
190
|
};
|
|
188
191
|
|
|
189
192
|
//
|
|
@@ -217,24 +220,6 @@ exports.NaanControllerWeb = function() {
|
|
|
217
220
|
}, 1);
|
|
218
221
|
};
|
|
219
222
|
|
|
220
|
-
var replyHook;
|
|
221
|
-
this.OnReplyHook = function OnReplyHook(proc) {
|
|
222
|
-
replyHook = proc;
|
|
223
|
-
return (proc);
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
this.ReplyMessage = function ReplyMessage(data) { // "remote" -> "local"
|
|
227
|
-
if (replyHook)
|
|
228
|
-
setTimeout(function() {
|
|
229
|
-
replyHook(data);
|
|
230
|
-
}, 1);
|
|
231
|
-
termlist.forEach(function(term) {
|
|
232
|
-
if (term.OnMessageOut)
|
|
233
|
-
term.OnMessageOut(data);
|
|
234
|
-
});
|
|
235
|
-
return (data);
|
|
236
|
-
};
|
|
237
|
-
|
|
238
223
|
var nideListener;
|
|
239
224
|
this.OnMessage = function OnMessage(proc) {
|
|
240
225
|
nideListener = proc;
|
|
@@ -339,13 +324,14 @@ exports.NaanControllerWeb = function() {
|
|
|
339
324
|
function ConsoleDebugTerminal() {
|
|
340
325
|
var termSelf = this;
|
|
341
326
|
//
|
|
342
|
-
//
|
|
327
|
+
// OnMessage
|
|
343
328
|
//
|
|
344
329
|
this.OnMessage = function OnMessage(msg) {
|
|
330
|
+
var text = msg.text.replace(/(?:\x1B[@-Z\\-_]|\x1B\[[0-?]*[ -/]*[@-~])/g, '');
|
|
345
331
|
if (msg.id == "debugtext")
|
|
346
|
-
console.log("dbug-" + msg.level + " " +
|
|
332
|
+
console.log("dbug-" + msg.level + " " + text);
|
|
347
333
|
else if (msg.id == "textout")
|
|
348
|
-
console.log(
|
|
334
|
+
console.log(text);
|
|
349
335
|
};
|
|
350
336
|
//
|
|
351
337
|
// cmd
|
|
@@ -391,30 +377,37 @@ exports.NaanControllerWeb = function() {
|
|
|
391
377
|
exports.debug = debug;
|
|
392
378
|
|
|
393
379
|
//==========================================================================
|
|
394
|
-
//
|
|
380
|
+
// MessageTerminal
|
|
395
381
|
//--------------------------------------------------------------------------
|
|
396
382
|
|
|
397
|
-
function
|
|
383
|
+
function MessageTerminal(windest, origin)
|
|
398
384
|
{
|
|
399
385
|
var termSelf = this;
|
|
400
386
|
//
|
|
401
387
|
// listen for messages
|
|
402
388
|
//
|
|
403
389
|
window.addEventListener("message", function (event) {
|
|
404
|
-
if (event.origin !==
|
|
390
|
+
if (origin && event.origin !== origin)
|
|
405
391
|
return; // only talk with our peers
|
|
406
392
|
var msg = event.data;
|
|
393
|
+
if (msg.scope != "naan-env-web")
|
|
394
|
+
return;
|
|
407
395
|
if (msg.id == "interrupt")
|
|
408
396
|
contSelf.Interrupt();
|
|
409
397
|
else if (msg.id == "keyline")
|
|
410
398
|
contSelf.Return(msg.text, termSelf); // keyboard text from terminal
|
|
411
|
-
else if (msg.id == "
|
|
412
|
-
|
|
399
|
+
else if (msg.id == "typed")
|
|
400
|
+
echoTyped(msg.text);
|
|
401
|
+
else if (msg.id == "attached")
|
|
402
|
+
contSelf.Attach(messageTerm); // start using the terminal
|
|
403
|
+
else if (msg.id == "detached")
|
|
404
|
+
contSelf.Detach(messageTerm); // done using the terminal
|
|
413
405
|
else if (msg.id == "import")
|
|
414
406
|
{ // for workers
|
|
415
407
|
}
|
|
416
408
|
else if (msg.id == "targetin")
|
|
417
409
|
{
|
|
410
|
+
console.log("env_web targetin");
|
|
418
411
|
if (nideListener)
|
|
419
412
|
nideListener(msg.data); // target received a message
|
|
420
413
|
}
|
|
@@ -423,32 +416,24 @@ exports.NaanControllerWeb = function() {
|
|
|
423
416
|
if (debugListener)
|
|
424
417
|
debugListener(msg.data); // target received a message
|
|
425
418
|
}
|
|
419
|
+
else if (msg.id == "ioctl-event")
|
|
420
|
+
contSelf.ioctl_event(msg.msg, msg.arg);
|
|
426
421
|
});
|
|
427
422
|
|
|
428
423
|
//
|
|
429
424
|
// report messages back to opener
|
|
430
425
|
//
|
|
431
426
|
termSelf.OnMessage = function OnMessage(msg) {
|
|
432
|
-
|
|
427
|
+
msg.scope = "naan-env-web";
|
|
428
|
+
windest.postMessage(msg, origin);
|
|
433
429
|
return (msg);
|
|
434
430
|
};
|
|
435
431
|
|
|
436
|
-
//
|
|
437
|
-
// report messages back to opener
|
|
438
|
-
//
|
|
439
|
-
termSelf.OnMessageOut = function OnMessageOut(data) {
|
|
440
|
-
var msg = { // target is sending debug data
|
|
441
|
-
id: "targetout",
|
|
442
|
-
data: data
|
|
443
|
-
};
|
|
444
|
-
return (termSelf.OnMessage(msg));
|
|
445
|
-
};
|
|
446
|
-
|
|
447
432
|
//
|
|
448
433
|
// report debug messages back to opener
|
|
449
434
|
//
|
|
450
435
|
termSelf.OnDebugOut = function OnDebugOut(data) {
|
|
451
|
-
var msg = {
|
|
436
|
+
var msg = { // target is sending debug data
|
|
452
437
|
id: "debugout",
|
|
453
438
|
data: data
|
|
454
439
|
};
|
|
@@ -459,14 +444,129 @@ exports.NaanControllerWeb = function() {
|
|
|
459
444
|
// report status back to opener
|
|
460
445
|
//
|
|
461
446
|
termSelf.OnStatus = function OnStatus(status) {
|
|
462
|
-
var msg = {
|
|
447
|
+
var msg = { // target is sending debug data
|
|
463
448
|
id: "status",
|
|
464
449
|
status: status
|
|
465
450
|
};
|
|
466
451
|
return (termSelf.OnMessage(msg));
|
|
467
452
|
};
|
|
453
|
+
|
|
454
|
+
//
|
|
455
|
+
// stub to ignore call
|
|
456
|
+
//
|
|
457
|
+
termSelf.StateSave = function StateSave() {
|
|
458
|
+
return (false);
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
//
|
|
462
|
+
// send ioctl back to terminal
|
|
463
|
+
//
|
|
464
|
+
termSelf.ioctl = function ioctl(op, arg) {
|
|
465
|
+
var msg = {
|
|
466
|
+
id: "ioctl",
|
|
467
|
+
op: op,
|
|
468
|
+
arg: arg
|
|
469
|
+
};
|
|
470
|
+
return (termSelf.OnMessage(msg));
|
|
471
|
+
};
|
|
472
|
+
|
|
473
|
+
listen_all.push(function(imsg, arg) {
|
|
474
|
+
var msg = { // target is sending ioctl event
|
|
475
|
+
id: "ioctl_event",
|
|
476
|
+
msg: imsg,
|
|
477
|
+
arg: arg
|
|
478
|
+
};
|
|
479
|
+
return (termSelf.OnMessage(msg));
|
|
480
|
+
});
|
|
468
481
|
}
|
|
469
482
|
|
|
483
|
+
//==========================================================================
|
|
484
|
+
// ioctl terminal control
|
|
485
|
+
//--------------------------------------------------------------------------
|
|
486
|
+
|
|
487
|
+
var listen_all = [];
|
|
488
|
+
var listeners = { };
|
|
489
|
+
var ioctl_callback;
|
|
490
|
+
|
|
491
|
+
//
|
|
492
|
+
// ioctl_open
|
|
493
|
+
//
|
|
494
|
+
// A terminal controller is now open on our instance.
|
|
495
|
+
//
|
|
496
|
+
|
|
497
|
+
this.ioctl_open = function ioctl_open(callback) {
|
|
498
|
+
ioctl_callback = callback;
|
|
499
|
+
return (true);
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
//
|
|
503
|
+
// ioctl_close
|
|
504
|
+
//
|
|
505
|
+
// The terminal controller is no longer open on our instance.
|
|
506
|
+
//
|
|
507
|
+
|
|
508
|
+
this.ioctl_close = function ioctl_close() {
|
|
509
|
+
ioctl_callback = false;
|
|
510
|
+
return (true);
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
//
|
|
514
|
+
// ioctl_event
|
|
515
|
+
//
|
|
516
|
+
// Events incoming from terminal.
|
|
517
|
+
//
|
|
518
|
+
|
|
519
|
+
this.ioctl_event = function ioctl_event(msg, arg) {
|
|
520
|
+
listen_all.forEach(function(proc) {
|
|
521
|
+
proc(msg, arg);
|
|
522
|
+
});
|
|
523
|
+
if (listeners[msg])
|
|
524
|
+
listeners[msg].forEach(function(proc) {
|
|
525
|
+
proc(msg, arg);
|
|
526
|
+
});
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
//
|
|
530
|
+
// ioctl_add_listener
|
|
531
|
+
// ioctl_remove_listener
|
|
532
|
+
//
|
|
533
|
+
// Add a listener for a terminal event.
|
|
534
|
+
//
|
|
535
|
+
|
|
536
|
+
this.ioctl_add_listener = function ioctl_add_listener(msg, proc) {
|
|
537
|
+
if (typeof(msg) != "string" || typeof(proc) != "function")
|
|
538
|
+
return (false);
|
|
539
|
+
this.ioctl_remove_listener(msg, proc);
|
|
540
|
+
if (!listeners[msg])
|
|
541
|
+
listeners[msg] = [];
|
|
542
|
+
listeners[msg].push(proc);
|
|
543
|
+
return (true);
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
this.ioctl_remove_listener = function ioctl_remove_listener(msg, proc) {
|
|
547
|
+
if (typeof(msg) != "string" || typeof(proc) != "function")
|
|
548
|
+
return (false);
|
|
549
|
+
if (listeners[msg]) {
|
|
550
|
+
var index = listeners[msg].indexOf(proc);
|
|
551
|
+
if (index >= 0)
|
|
552
|
+
listeners[msg].splice(index, 1);
|
|
553
|
+
}
|
|
554
|
+
return (true);
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
//
|
|
558
|
+
// ioctl
|
|
559
|
+
//
|
|
560
|
+
// Control of terminals (and their controller.)
|
|
561
|
+
//
|
|
562
|
+
|
|
563
|
+
this.ioctl = function ioctl(op, arg) {
|
|
564
|
+
if (ioctl_callback)
|
|
565
|
+
ioctl_callback(op, arg);
|
|
566
|
+
messageTerm.ioctl(op, arg);
|
|
567
|
+
return (true);
|
|
568
|
+
};
|
|
569
|
+
|
|
470
570
|
//==========================================================================
|
|
471
571
|
// Host Environment
|
|
472
572
|
//--------------------------------------------------------------------------
|
|
@@ -501,6 +601,16 @@ exports.NaanControllerWeb = function() {
|
|
|
501
601
|
dontSaveUntilWorking = false;
|
|
502
602
|
};
|
|
503
603
|
|
|
604
|
+
//
|
|
605
|
+
// Saving
|
|
606
|
+
//
|
|
607
|
+
// Turn state saving on or off; on by default.
|
|
608
|
+
//
|
|
609
|
+
|
|
610
|
+
this.Saving = function Saving(onOff) {
|
|
611
|
+
dontSave = !onOff;
|
|
612
|
+
};
|
|
613
|
+
|
|
504
614
|
window.document.addEventListener("visibilitychange", function (e) {
|
|
505
615
|
virtualVisibilityChange();
|
|
506
616
|
if (window.document.visibilityState == "hidden") {
|
|
@@ -550,8 +660,12 @@ exports.NaanControllerWeb = function() {
|
|
|
550
660
|
localStorage.removeItem("NaanState_Hosted");
|
|
551
661
|
return (false);
|
|
552
662
|
}
|
|
663
|
+
if (dontSave)
|
|
664
|
+
return (false); // not saving right now
|
|
553
665
|
if ("nosave" in querystrings)
|
|
554
666
|
return (false);
|
|
667
|
+
if (window.opener)
|
|
668
|
+
return (false); // don't save running under NaanIDE
|
|
555
669
|
var statedoc = makeState();
|
|
556
670
|
var statestr = JSON.stringify(statedoc);
|
|
557
671
|
try {
|
|
@@ -655,11 +769,11 @@ exports.NaanControllerWeb = function() {
|
|
|
655
769
|
|
|
656
770
|
if (window.opener) {
|
|
657
771
|
virtualOpen();
|
|
658
|
-
var term = new CloneDebugTerminal();
|
|
659
|
-
term.OnMessage({
|
|
660
|
-
id: "loaded"
|
|
661
|
-
});
|
|
662
772
|
}
|
|
773
|
+
var messageTerm = new MessageTerminal(window, window.origin);
|
|
774
|
+
messageTerm.OnMessage({
|
|
775
|
+
id: "loaded"
|
|
776
|
+
});
|
|
663
777
|
};
|
|
664
778
|
|
|
665
779
|
/*jshint sub:true */
|