192 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
head	1.3;
 | 
						|
access;
 | 
						|
symbols;
 | 
						|
locks
 | 
						|
	sbosse:1.3; strict;
 | 
						|
comment	@# @;
 | 
						|
 | 
						|
 | 
						|
1.3
 | 
						|
date	2020.02.03.09.45.01;	author sbosse;	state Exp;
 | 
						|
branches;
 | 
						|
next	1.2;
 | 
						|
 | 
						|
1.2
 | 
						|
date	2017.05.27.18.20.44;	author sbosse;	state Exp;
 | 
						|
branches;
 | 
						|
next	1.1;
 | 
						|
 | 
						|
1.1
 | 
						|
date	2017.05.23.07.00.54;	author sbosse;	state Exp;
 | 
						|
branches;
 | 
						|
next	;
 | 
						|
 | 
						|
 | 
						|
desc
 | 
						|
@@
 | 
						|
 | 
						|
 | 
						|
1.3
 | 
						|
log
 | 
						|
@.
 | 
						|
@
 | 
						|
text
 | 
						|
@/**
 | 
						|
 **      ==============================
 | 
						|
 **       O           O      O   OOOO
 | 
						|
 **       O           O     O O  O   O
 | 
						|
 **       O           O     O O  O   O
 | 
						|
 **       OOOO   OOOO O     OOO  OOOO
 | 
						|
 **       O   O       O    O   O O   O
 | 
						|
 **       O   O       O    O   O O   O
 | 
						|
 **       OOOO        OOOO O   O OOOO
 | 
						|
 **      ==============================
 | 
						|
 **      Dr. Stefan Bosse http://www.bsslab.de
 | 
						|
 **
 | 
						|
 **      COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED
 | 
						|
 **                 BY THE AUTHOR(S).
 | 
						|
 **                 THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED,
 | 
						|
 **                 MODIFIED, OR OTHERWISE USED IN A CONTEXT
 | 
						|
 **                 OUTSIDE OF THE SOFTWARE SYSTEM.
 | 
						|
 **
 | 
						|
 **    $AUTHORS:     Stefan Bosse
 | 
						|
 **    $INITIAL:     (C) 2006-2017 bLAB
 | 
						|
 **    $CREATED:     sbosse on 23-12-15
 | 
						|
 **    $VERSION:     1.3.1
 | 
						|
 **    $RCS:         $Id: module.js,v 1.2 2017/05/27 18:20:44 sbosse Exp $
 | 
						|
 **
 | 
						|
 **    $INFO:
 | 
						|
 *
 | 
						|
 *      Module management for bundled applications.
 | 
						|
 *
 | 
						|
 *     $ENDINFO
 | 
						|
 */
 | 
						|
 | 
						|
var CoreModule={};
 | 
						|
CoreModule['buffer']='buffer';
 | 
						|
CoreModule['events']='events';
 | 
						|
CoreModule['util']='util';
 | 
						|
CoreModule['http']='http';
 | 
						|
CoreModule['fs']='fs';
 | 
						|
CoreModule['os']='os';
 | 
						|
CoreModule['net']='net';
 | 
						|
CoreModule['http']='http';
 | 
						|
CoreModule['dgram']='dgram';
 | 
						|
CoreModule['path']='path';
 | 
						|
CoreModule['zlib']='zlib';
 | 
						|
CoreModule['assert']='assert';
 | 
						|
CoreModule['child_process']='child_process';
 | 
						|
CoreModule['string_decoder']='string_decoder';
 | 
						|
 | 
						|
module.exports= function (paths) {
 | 
						|
  var Fs = require('fs');
 | 
						|
  var Modules = [];
 | 
						|
  var Files = [];
 | 
						|
  var Objects = [];
 | 
						|
  global.FilesEmbedded = [];
 | 
						|
  /*
 | 
						|
  ** Search paths
 | 
						|
  */
 | 
						|
  global.PATH=paths;
 | 
						|
  function FileExtension(filename) {
 | 
						|
    return filename.split('.').pop();
 | 
						|
  }
 | 
						|
  /*
 | 
						|
  ** Search a file
 | 
						|
  */
 | 
						|
  function search(index,file) {
 | 
						|
    if (PATH.length==index) return file;
 | 
						|
    var path=PATH[index];
 | 
						|
    if (Fs.existsSync(path+'/'+file+'.js')) return path+'/'+file+'.js';
 | 
						|
    else if (Fs.existsSync(path+'/'+file)) return path+'/'+file;
 | 
						|
    else return search(index+1,file);
 | 
						|
  }
 | 
						|
  /*
 | 
						|
  ** Load either an embedded (tried first) or an external module.
 | 
						|
  */
 | 
						|
  global.Require = function (module) {
 | 
						|
   try {
 | 
						|
    //console.log(module)
 | 
						|
    if (CoreModule[module]) return require(module);
 | 
						|
    if (Modules[module]) return Modules[module];
 | 
						|
    var file=search(0,module);
 | 
						|
    var filepath=Fs.realpathSync(file);
 | 
						|
    Files.push([module,filepath]);
 | 
						|
    if (FileExtension(filepath)=='json') {
 | 
						|
      var Object = require(file);
 | 
						|
      Objects[module]=Object;
 | 
						|
      return Object;    
 | 
						|
    } else {
 | 
						|
      var Module = require(file);
 | 
						|
      Modules[module]=Module;
 | 
						|
      return Module;
 | 
						|
    }
 | 
						|
   } catch (e) {
 | 
						|
      console.log('Require import of module '+module+' ['+filepath+']  failed: '+e);
 | 
						|
      if (e.name==='SyntaxError' && filepath) {
 | 
						|
         var src=Fs.readFileSync(filepath,'utf8');
 | 
						|
         var Esprima = Require('parser/esprima');
 | 
						|
         try {
 | 
						|
           var ast = Esprima.parse(src, { tolerant: true, loc:true });
 | 
						|
           if (ast.errors && ast.errors.length>0) console.log(" .. "+ast.errors[0]);
 | 
						|
         } catch (e) {
 | 
						|
           if (e.lineNumber) console.log('.. in line '+e.lineNumber) 
 | 
						|
         }
 | 
						|
      }
 | 
						|
      if (e.stack) console.log(e.stack);
 | 
						|
   }
 | 
						|
  };
 | 
						|
  /*
 | 
						|
  ** Look-up an embedded file
 | 
						|
  */
 | 
						|
  global.FileEmbedded = function (path,format) {
 | 
						|
    return FilesEmbedded[path];
 | 
						|
  };
 | 
						|
  /*
 | 
						|
  ** Embedd a file.  Only performed in makeapp...
 | 
						|
  */
 | 
						|
  global.FileEmbedd = function (path,format) {};
 | 
						|
 | 
						|
  global.open = function(name,context,as) {
 | 
						|
    var module = Require(name);
 | 
						|
    if (!context) context=global;
 | 
						|
    for (var p in module) {
 | 
						|
      context[p] = module[p];
 | 
						|
    };
 | 
						|
    if (as) context[as]=module;
 | 
						|
  }
 | 
						|
  
 | 
						|
  return {
 | 
						|
    Files:Files,
 | 
						|
    FilesEmbedded:FilesEmbedded,
 | 
						|
    Modules:Modules,
 | 
						|
    Objects:Objects
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
@
 | 
						|
 | 
						|
 | 
						|
1.2
 | 
						|
log
 | 
						|
@*** empty log message ***
 | 
						|
@
 | 
						|
text
 | 
						|
@d22 2
 | 
						|
a23 2
 | 
						|
 **    $VERSION:     1.2.5
 | 
						|
 **    $RCS:         $Id: aios.js,v 1.2 2017/05/19 05:13:27 sbosse Exp $
 | 
						|
d116 9
 | 
						|
@
 | 
						|
 | 
						|
 | 
						|
1.1
 | 
						|
log
 | 
						|
@Initial revision
 | 
						|
@
 | 
						|
text
 | 
						|
@d22 2
 | 
						|
a23 1
 | 
						|
 **    $REVESIO:     1.2.5
 | 
						|
@
 |