• Jump To … +
    Nodulator.ls ClientDB.ls index.ls Resource.ls Bus.ls Cache.ls ChangeWatcher.ls Debug.ls Wrappers.ls Nodulator.ls Resource.ls Schema.ls NModule.ls AccountResource.ls User.ls index.ls Nodulator-Angular.ls TaskDirective.ls index.ls TaskService.ls main.ls index.ls index.ls Task.ls index.ls index.ls index.ls index.ls index.ls DOM.ls View.ls index.ls Nodulator.ls Mongo.ls Mysql.ls SqlMem.ls index.ls Resource.ls Request.ls Route.ls index.ls
  • Nodulator.ls

  • ¶
    require! {
      underscore: _
      fs
      path
      hacktiv
    }
    
    global import require \prelude-ls
    
    class N extends require \../Common/Nodulator
    
      config: null
      consoleMode: false
      defaultConfig:
        db: type: \SqlMem
        cache: false
        modules: {}
        port: 3000
      isServer: true
      modules: {}
    
      ->
        super!
        @Init()
    
      Init: ->
        @appRoot = path.resolve \.
        @libRoot = path.resolve __dirname, \../../
    
      Resource: ->
        @resource = require './Resource/Resource' if not @resource?
        super ...
    
      Route: require \./Route/Route
    
      Config: (config) ->
    
        super ...
    
        return if not @config.modules?
    
        for name, conf of @config.modules
          Module = require(path.resolve @libRoot, "src/Modules/Nodulator-#{capitalize name}")
          @modules[name] = new Module conf
          @config.modules[name] <<< @modules[name].config
    
      Reset: (done) ->
        @debug-nodulator.Warn "Reset"
    
        cache = require \../Common/Helpers/Cache
        if cache.client?
          cache.Reset!
    
        require \../Common/Helpers/Wrappers .Reset!
        require \./Resource/Connectors .Reset!
    
        @inited = {}
        @resources = {}
        @config = null
    
        if @server?
          @app = null
          @server.close()
          @server = null
    
        @Init()
    
        done() if done?
    
      PostConfig: ->
        for name, module of @modules
          module.PostConfig!
        map (.Init!), values @resources
    
      _ListEndpoints: (done) ->
        endpoints = []
        for endpoint in @app._router.stack
          if endpoint.route?
            res = {}
            res[endpoint.route.path] = [key for key of endpoint.route.methods]
            endpoints.push res
        done(endpoints) if done?
    
    f = ((...args) ->
      f.Config {} if not f.config?
      f.Resource.apply f, args) <<<< new N
    
    module.exports = f