Showing
13 changed files
with
81 additions
and
325 deletions
... | @@ -4,6 +4,14 @@ module.exports = function (grunt) { | ... | @@ -4,6 +4,14 @@ module.exports = function (grunt) { |
4 | // Project configuration. | 4 | // Project configuration. |
5 | grunt.initConfig({ | 5 | grunt.initConfig({ |
6 | pkg: grunt.file.readJSON('package.json'), | 6 | pkg: grunt.file.readJSON('package.json'), |
7 | + copy: { | ||
8 | + dist: { | ||
9 | + files:[ | ||
10 | + {src: 'src/arcs_browser.js', dest: 'build/arcs_browser.js'} | ||
11 | + ] | ||
12 | + | ||
13 | + } | ||
14 | + }, | ||
7 | jsdoc: { | 15 | jsdoc: { |
8 | dist: { | 16 | dist: { |
9 | src: ['src/*.js', 'docs/Readme.md'], //, 'components/*.js'], | 17 | src: ['src/*.js', 'docs/Readme.md'], //, 'components/*.js'], |
... | @@ -43,29 +51,13 @@ module.exports = function (grunt) { | ... | @@ -43,29 +51,13 @@ module.exports = function (grunt) { |
43 | } | 51 | } |
44 | } | 52 | } |
45 | }, | 53 | }, |
46 | - file_minify: { | ||
47 | - build: { | ||
48 | - files: { | ||
49 | - 'build/arcs.min.js': [ | ||
50 | - 'build/arcs.js' | ||
51 | - ], | ||
52 | - 'build/arcs_browser.js': [ | ||
53 | - 'src/arcs_browser.js' | ||
54 | - ], | ||
55 | - 'build/arcseditor.min.js': [ | ||
56 | - 'build/arcseditor.js' | ||
57 | - ] | ||
58 | - | ||
59 | - } | ||
60 | - } | ||
61 | - }, | ||
62 | terser: { | 54 | terser: { |
63 | build: { | 55 | build: { |
64 | files: { | 56 | files: { |
65 | 'build/arcs.min.js': [ | 57 | 'build/arcs.min.js': [ |
66 | 'build/arcs.js' | 58 | 'build/arcs.js' |
67 | ], | 59 | ], |
68 | - 'build/arcs_browser.js': [ | 60 | + 'build/arcs_browser.min.js': [ |
69 | 'src/arcs_browser.js' | 61 | 'src/arcs_browser.js' |
70 | ], | 62 | ], |
71 | 'build/arcseditor.min.js': [ | 63 | 'build/arcseditor.min.js': [ |
... | @@ -101,7 +93,6 @@ module.exports = function (grunt) { | ... | @@ -101,7 +93,6 @@ module.exports = function (grunt) { |
101 | 'src/transitionnetwork.js', | 93 | 'src/transitionnetwork.js', |
102 | 'src/statemachine.js', | 94 | 'src/statemachine.js', |
103 | 'src/application.js', | 95 | 'src/application.js', |
104 | - 'src/arcs_module.js', | ||
105 | 'src/exports.js' | 96 | 'src/exports.js' |
106 | ], | 97 | ], |
107 | dest: 'build/arcs.js' | 98 | dest: 'build/arcs.js' |
... | @@ -124,16 +115,15 @@ module.exports = function (grunt) { | ... | @@ -124,16 +115,15 @@ module.exports = function (grunt) { |
124 | }); | 115 | }); |
125 | 116 | ||
126 | // Load the plugin that provides the "uglify" task. | 117 | // Load the plugin that provides the "uglify" task. |
127 | - grunt.loadNpmTasks('grunt-contrib-obfuscator'); | ||
128 | - grunt.loadNpmTasks('grunt-file-minify'); | ||
129 | grunt.loadNpmTasks('grunt-contrib-concat'); | 118 | grunt.loadNpmTasks('grunt-contrib-concat'); |
119 | + grunt.loadNpmTasks('grunt-contrib-copy'); | ||
130 | grunt.loadNpmTasks('grunt-jsdoc'); | 120 | grunt.loadNpmTasks('grunt-jsdoc'); |
131 | grunt.loadNpmTasks('grunt-jslint'); | 121 | grunt.loadNpmTasks('grunt-jslint'); |
132 | grunt.loadNpmTasks('grunt-terser'); | 122 | grunt.loadNpmTasks('grunt-terser'); |
133 | grunt.loadNpmTasks('grunt-bower-task'); | 123 | grunt.loadNpmTasks('grunt-bower-task'); |
134 | 124 | ||
135 | // Default task(s). | 125 | // Default task(s). |
136 | - grunt.registerTask('default', ['concat','terser'/*'file_minify','obfuscator'*/]); | 126 | + grunt.registerTask('default', ['concat','copy','terser']); |
137 | grunt.registerTask('lint', ['jslint']); | 127 | grunt.registerTask('lint', ['jslint']); |
138 | grunt.registerTask('doc', ['jsdoc']); | 128 | grunt.registerTask('doc', ['jsdoc']); |
139 | }; | 129 | }; | ... | ... |
... | @@ -247,6 +247,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -247,6 +247,7 @@ ARCS.Context = function( ctx ) { |
247 | if (ctx !== undefined) { | 247 | if (ctx !== undefined) { |
248 | libraries = ctx.libraries; | 248 | libraries = ctx.libraries; |
249 | 249 | ||
250 | + var p; | ||
250 | for (p in ctx.components) { | 251 | for (p in ctx.components) { |
251 | if (ctx.components.hasOwnProperty(p)) { | 252 | if (ctx.components.hasOwnProperty(p)) { |
252 | components[p] = ctx.components[p]; | 253 | components[p] = ctx.components[p]; |
... | @@ -263,8 +264,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -263,8 +264,7 @@ ARCS.Context = function( ctx ) { |
263 | 264 | ||
264 | } | 265 | } |
265 | 266 | ||
266 | - //! TODO use fetch API? | 267 | + var loadDataFile =async function(fileName) { |
267 | - loadDataFile =async function(fileName) { | ||
268 | var dataPromise ; | 268 | var dataPromise ; |
269 | 269 | ||
270 | if (ARCS.isInNode()) { | 270 | if (ARCS.isInNode()) { |
... | @@ -282,18 +282,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -282,18 +282,7 @@ ARCS.Context = function( ctx ) { |
282 | } | 282 | } |
283 | }; | 283 | }; |
284 | 284 | ||
285 | - //! TODO not needed anymore? | 285 | + var loadLibraries = function () { |
286 | - /*this.addLibraryPromise = function(p) { | ||
287 | - depLibPromises.push(p); | ||
288 | - };*/ | ||
289 | - | ||
290 | - /*promiseLibrary = function(libName) { | ||
291 | - return import(libName); | ||
292 | - };*/ | ||
293 | - | ||
294 | - //! TODO modify loadLibraries and loadLibrary to directly register | ||
295 | - // factories so that arcs_module is not needed anymore ? | ||
296 | - loadLibraries = function () { | ||
297 | var i; | 286 | var i; |
298 | // we will use different instances of require either the one of node | 287 | // we will use different instances of require either the one of node |
299 | // or the one from require.js | 288 | // or the one from require.js |
... | @@ -301,16 +290,13 @@ ARCS.Context = function( ctx ) { | ... | @@ -301,16 +290,13 @@ ARCS.Context = function( ctx ) { |
301 | 290 | ||
302 | var res=[]; | 291 | var res=[]; |
303 | for(i=0; i < libraries.length; i++) { | 292 | for(i=0; i < libraries.length; i++) { |
304 | - //! TODO | 293 | + res.push(self.loadLibrary(libraries[i])); |
305 | - res.push(loadLibrary(libraries[i])); | ||
306 | - //import(libraries[i])); | ||
307 | } | 294 | } |
308 | return Promise.all(res); | 295 | return Promise.all(res); |
309 | }; | 296 | }; |
310 | 297 | ||
311 | - instanciateComponents = function() { | 298 | + var instanciateComponents = function() { |
312 | var p, promises=[]; | 299 | var p, promises=[]; |
313 | - console.log(components); | ||
314 | 300 | ||
315 | for (p in components) { | 301 | for (p in components) { |
316 | if (components.hasOwnProperty(p)) { | 302 | if (components.hasOwnProperty(p)) { |
... | @@ -319,7 +305,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -319,7 +305,7 @@ ARCS.Context = function( ctx ) { |
319 | console.error("[ARCS] Context dump follows: ", libraries, components, constants); | 305 | console.error("[ARCS] Context dump follows: ", libraries, components, constants); |
320 | return ; | 306 | return ; |
321 | } | 307 | } |
322 | - factory = factories[components[p].type]; | 308 | + var factory = factories[components[p].type]; |
323 | //console.log("instanciating ", p); | 309 | //console.log("instanciating ", p); |
324 | try { | 310 | try { |
325 | if (components[p].value !== undefined || components[p].url !== undefined || components[p].ref !== undefined) { | 311 | if (components[p].value !== undefined || components[p].url !== undefined || components[p].ref !== undefined) { |
... | @@ -369,20 +355,22 @@ ARCS.Context = function( ctx ) { | ... | @@ -369,20 +355,22 @@ ARCS.Context = function( ctx ) { |
369 | libUrl = libName.url; | 355 | libUrl = libName.url; |
370 | } | 356 | } |
371 | 357 | ||
358 | + if (libraries.indexOf(libActualName) < 0) { | ||
372 | libraries.push(libActualName); | 359 | libraries.push(libActualName); |
360 | + } | ||
373 | // TODO promisify call to cbFunction | 361 | // TODO promisify call to cbFunction |
374 | return import(libUrl).then( function(module) { | 362 | return import(libUrl).then( function(module) { |
375 | // TODO insert here component factories | 363 | // TODO insert here component factories |
376 | - for (p in module) { | 364 | + for (p in module.default) { |
377 | - if (module.hasOwnProperty(p)) { | 365 | + if (module.default.hasOwnProperty(p)) { |
378 | - ARCS.Context.currentContext.setFactory(p,module[p]); | 366 | + ARCS.Context.currentContext.setFactory(p,module.default[p]); |
379 | } | 367 | } |
380 | } | 368 | } |
381 | 369 | ||
382 | if (cbFunction !== undefined) { | 370 | if (cbFunction !== undefined) { |
383 | cbFunction(); | 371 | cbFunction(); |
384 | } | 372 | } |
385 | - }); | 373 | + }).catch( function(msg) { console.error("[ARCS] Trouble loading '",libUrl,"' with reason -", msg) }); |
386 | }; | 374 | }; |
387 | 375 | ||
388 | /** | 376 | /** |
... | @@ -501,7 +489,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -501,7 +489,7 @@ ARCS.Context = function( ctx ) { |
501 | this.instanciate = function () { | 489 | this.instanciate = function () { |
502 | //! TODO | 490 | //! TODO |
503 | return loadLibraries().then(instanciateComponents) | 491 | return loadLibraries().then(instanciateComponents) |
504 | - .catch(function(msg) { console.log("[ARCS] Trouble instanciating context", msg); }); | 492 | + .catch(function(msg) { console.error("[ARCS] Trouble instanciating context", msg); }); |
505 | 493 | ||
506 | }; | 494 | }; |
507 | 495 | ||
... | @@ -2049,7 +2037,7 @@ ARCS.Application = function () { | ... | @@ -2049,7 +2037,7 @@ ARCS.Application = function () { |
2049 | * Starts the application | 2037 | * Starts the application |
2050 | */ | 2038 | */ |
2051 | this.start = function () { | 2039 | this.start = function () { |
2052 | - console.log("[ARCS] Starting application"); | 2040 | + console.log("[ARCS] Starting application..."); |
2053 | context.instanciate().then(preProcess); | 2041 | context.instanciate().then(preProcess); |
2054 | }; | 2042 | }; |
2055 | }; | 2043 | }; |
... | @@ -2065,103 +2053,6 @@ ARCS.Application.slot("setSheet"); | ... | @@ -2065,103 +2053,6 @@ ARCS.Application.slot("setSheet"); |
2065 | ARCS.Application.slot("finish"); | 2053 | ARCS.Application.slot("finish"); |
2066 | 2054 | ||
2067 | 2055 | ||
2068 | -/** | ||
2069 | - * definition of the main module function: | ||
2070 | - * it takes an anonymous function as a parameter | ||
2071 | - * the anonymous function has one parameter: the object encompassing | ||
2072 | - * ARCS definitions (in order to able to use ARCS.Component.create, ...) | ||
2073 | - * @param moduleDefinition {function} main function of the module. | ||
2074 | - * It should return a list of components | ||
2075 | - * @param deps {mixed[]} dependencies | ||
2076 | - */ | ||
2077 | - | ||
2078 | -// TODO arcs_module seems to be not needed anymore!!!! | ||
2079 | -// more cunning, this time, we export an arcs_module function | ||
2080 | -// that we call later! | ||
2081 | -// still we need to do something about it in order to register | ||
2082 | -// components. | ||
2083 | -// in fact factories should be registered in load library. | ||
2084 | - | ||
2085 | -// reimplementation using native promises | ||
2086 | -arcs_module = function(moduleDefinition, deps) { | ||
2087 | - var storeComponents, i; | ||
2088 | - | ||
2089 | - if (typeof module !== 'undefined') { | ||
2090 | - if (module.parent.exports) { | ||
2091 | - ARCS = module.exports; | ||
2092 | - } | ||
2093 | - } | ||
2094 | - | ||
2095 | - if (deps === undefined) { deps = []; } | ||
2096 | - | ||
2097 | - storeComponents = function (deps) { | ||
2098 | - var mdef, p; | ||
2099 | - // we should insert ARCS at the beginning of deps ! | ||
2100 | - deps.unshift(ARCS); | ||
2101 | - | ||
2102 | - mdef = (typeof moduleDefinition === 'function') ? | ||
2103 | - moduleDefinition.apply(this, deps) : moduleDefinition; | ||
2104 | - | ||
2105 | - if (mdef === undefined) { | ||
2106 | - throw new Error("[ARCS] Your module is undefined. Did you forget to export components?\nCode of module follows:\n" +moduleDefinition); | ||
2107 | - } | ||
2108 | - | ||
2109 | - for (p in mdef) { | ||
2110 | - if (mdef.hasOwnProperty(p) && ARCS.Context.currentContext != null) { | ||
2111 | - ARCS.Context.currentContext.setFactory(p,mdef[p]); //.setFactory(ARCS.Application.currentApplication, p, mdef[p]); | ||
2112 | - } | ||
2113 | - } | ||
2114 | - | ||
2115 | - return Promise.resolve(); | ||
2116 | - }; | ||
2117 | - // until now, it is the very same code. | ||
2118 | - | ||
2119 | - // here we create a promise to solve dependency | ||
2120 | - // reject has the dependency name, while resolve has the object | ||
2121 | - var depResolve = function(dep) { | ||
2122 | - return new Promise(function(resolve, reject) { | ||
2123 | - var d,shimConfig; | ||
2124 | - if (ARCS.isInNode()) { | ||
2125 | - d = require(dep); | ||
2126 | - if (d === undefined) { | ||
2127 | - reject(dep); | ||
2128 | - } else { | ||
2129 | - resolve(d); | ||
2130 | - } | ||
2131 | - } else { | ||
2132 | - // this one a little bit trickier since we have to shim. | ||
2133 | - if (dep.name !== undefined) { | ||
2134 | - shimConfig = { shim: {} }; | ||
2135 | - shimConfig.shim[dep.name] = { exports: dep.exports }; | ||
2136 | - if (dep.deps !== undefined) { | ||
2137 | - shimConfig.shim[dep.name].deps = dep.deps; | ||
2138 | - } | ||
2139 | - require.config(shimConfig); | ||
2140 | - dep = dep.name; | ||
2141 | - } | ||
2142 | - // shim performed | ||
2143 | - require([dep], | ||
2144 | - function(d) { resolve(d); }, | ||
2145 | - function(err) { console.log("[ARCS] Trouble with module ", dep); reject(dep, err); } | ||
2146 | - ); | ||
2147 | - } | ||
2148 | - }); | ||
2149 | - }; | ||
2150 | - | ||
2151 | - var depResolves = []; | ||
2152 | - for (i=0; i<deps.length; i++) { | ||
2153 | - depResolves[i] = depResolve(deps[i]); | ||
2154 | - } | ||
2155 | - | ||
2156 | - | ||
2157 | - | ||
2158 | - ARCS.Context.currentContext.addLibraryPromise( | ||
2159 | - Promise.all(depResolves).then(storeComponents, | ||
2160 | - function(reason) { console.error("[ARCS] Failed to load dependency ", reason ); }) | ||
2161 | - | ||
2162 | - ); | ||
2163 | - | ||
2164 | -} | ||
2165 | // no longer needed with the use of imports | 2056 | // no longer needed with the use of imports |
2166 | 2057 | ||
2167 | -export default ARCS; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
2058 | +export { ARCS as default}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
This diff is collapsed. Click to expand it.
1 | /* ugly hack in order to display data in web page instead of console */ | 1 | /* ugly hack in order to display data in web page instead of console */ |
2 | +import ARCS from '../build/arcs.js'; | ||
2 | 3 | ||
3 | - | 4 | +var Console; |
4 | -arcs_module( | 5 | +/** |
5 | - function(ARCS) { | ||
6 | - var Console; | ||
7 | - /** | ||
8 | * @class Console | 6 | * @class Console |
9 | * @classdesc Redirects console messages to a given HTML element in the page. | 7 | * @classdesc Redirects console messages to a given HTML element in the page. |
10 | * @param id {string} id of the HTML element in which console messages will be added. | 8 | * @param id {string} id of the HTML element in which console messages will be added. |
11 | */ | 9 | */ |
12 | - Console = ARCS.Component.create( | 10 | +Console = ARCS.Component.create( |
13 | function (id) { | 11 | function (id) { |
14 | if (id === undefined) { | 12 | if (id === undefined) { |
15 | return ; | 13 | return ; |
... | @@ -42,8 +40,7 @@ arcs_module( | ... | @@ -42,8 +40,7 @@ arcs_module( |
42 | }; | 40 | }; |
43 | } | 41 | } |
44 | } | 42 | } |
45 | - ); | ||
46 | - return { Console: Console}; | ||
47 | - } | ||
48 | - | ||
49 | ); | 43 | ); |
44 | + | ||
45 | + | ||
46 | +export default { Console: Console}; | ... | ... |
... | @@ -5,24 +5,14 @@ | ... | @@ -5,24 +5,14 @@ |
5 | * @file | 5 | * @file |
6 | */ | 6 | */ |
7 | 7 | ||
8 | -// TODO first strategy: import ARCS and export components | 8 | +import ARCS from '../build/arcs.js'; |
9 | -// TODO second strategy: make an anonymous function to export | ||
10 | -// in any case, arcs_module disappears | ||
11 | 9 | ||
12 | - | 10 | +/** |
13 | - | ||
14 | -//! TODO to comment or uncomment (maybe) | ||
15 | -// imports ARCS from '../build/arcs.js'; | ||
16 | -function (ARCS) { | ||
17 | - var Loop, DisplayInt, Sum; | ||
18 | - /** @exports loop */ | ||
19 | - //console.log("loop: ", ARCS); | ||
20 | - /** | ||
21 | * @class Loop | 11 | * @class Loop |
22 | * @classdesc loop component creation using a compact style. | 12 | * @classdesc loop component creation using a compact style. |
23 | * This component iterates for a given number of times | 13 | * This component iterates for a given number of times |
24 | */ | 14 | */ |
25 | - Loop = ARCS.Component.create( | 15 | +var Loop = ARCS.Component.create( |
26 | function () { | 16 | function () { |
27 | /** | 17 | /** |
28 | * Sets the number of times the component should iterate. | 18 | * Sets the number of times the component should iterate. |
... | @@ -57,17 +47,17 @@ function (ARCS) { | ... | @@ -57,17 +47,17 @@ function (ARCS) { |
57 | }, | 47 | }, |
58 | "setIterations", //slotList | 48 | "setIterations", //slotList |
59 | ["endLoop", "newIteration"] // signalList | 49 | ["endLoop", "newIteration"] // signalList |
60 | - ); | 50 | +); |
61 | 51 | ||
62 | 52 | ||
63 | - /** | 53 | +/** |
64 | * @class DisplayInt | 54 | * @class DisplayInt |
65 | * @classdesc displayInt component creation using a variation with defined slots | 55 | * @classdesc displayInt component creation using a variation with defined slots |
66 | * in the constructor (a slot is a function). DisplayInt will display an integer | 56 | * in the constructor (a slot is a function). DisplayInt will display an integer |
67 | * received on its display slot. | 57 | * received on its display slot. |
68 | */ | 58 | */ |
69 | - DisplayInt = function () { | 59 | +var DisplayInt = function () { |
70 | - /** | 60 | +/** |
71 | * @param n {numeric} number to display | 61 | * @param n {numeric} number to display |
72 | * @function DisplayInt#display | 62 | * @function DisplayInt#display |
73 | * @slot | 63 | * @slot |
... | @@ -75,41 +65,39 @@ function (ARCS) { | ... | @@ -75,41 +65,39 @@ function (ARCS) { |
75 | this.display = function (n) { | 65 | this.display = function (n) { |
76 | console.log(" DisplayInt : " + n); | 66 | console.log(" DisplayInt : " + n); |
77 | }; | 67 | }; |
78 | - }; | 68 | +}; |
79 | 69 | ||
80 | - ARCS.Component.create(DisplayInt); | 70 | +ARCS.Component.create(DisplayInt); |
81 | - DisplayInt.slot("display"); | 71 | +DisplayInt.slot("display"); |
82 | 72 | ||
83 | 73 | ||
84 | - /** | 74 | +/** |
85 | * @class Sum | 75 | * @class Sum |
86 | * @classdec Sum is a component summing integers passed to its slot "add" | 76 | * @classdec Sum is a component summing integers passed to its slot "add" |
87 | * and the result is sent back by signal "sum". | 77 | * and the result is sent back by signal "sum". |
88 | * This component is declared in two different phases: declaration of the | 78 | * This component is declared in two different phases: declaration of the |
89 | * constructor and declaration of the slot "add". | 79 | * constructor and declaration of the slot "add". |
90 | */ | 80 | */ |
91 | - Sum = function () { | 81 | +var Sum = function () { |
92 | this.total = 0; | 82 | this.total = 0; |
93 | - }; | 83 | +}; |
94 | 84 | ||
95 | - ARCS.Component.create(Sum); | 85 | +ARCS.Component.create(Sum); |
96 | - /** | 86 | +/** |
97 | * This slot adds its parameter to its internal sum and send it back by using | 87 | * This slot adds its parameter to its internal sum and send it back by using |
98 | * the signal "sum". | 88 | * the signal "sum". |
99 | * @param n {integer} add n to the internal sum of the component. | 89 | * @param n {integer} add n to the internal sum of the component. |
100 | * @function Sum#add | 90 | * @function Sum#add |
101 | * @slot | 91 | * @slot |
102 | */ | 92 | */ |
103 | - Sum.slot("add", function (n) { | 93 | +Sum.slot("add", function (n) { |
104 | this.total = this.total + n; | 94 | this.total = this.total + n; |
105 | this.emit("sum", this.total); //console.log(" Total : " + this.total); | 95 | this.emit("sum", this.total); //console.log(" Total : " + this.total); |
106 | - }); | 96 | +}); |
107 | - Sum.signal("sum"); | 97 | +Sum.signal("sum"); |
108 | 98 | ||
109 | - // the anonymous function must return the components in one object: | 99 | +// the anonymous function must return the components in one object: |
110 | - // keys are factory names, value are actual constructors modified by | 100 | +// keys are factory names, value are actual constructors modified by |
111 | - // ARCS.Component.create | 101 | +// ARCS.Component.create |
112 | 102 | ||
113 | - return {Loop: Loop, DisplayInt: DisplayInt, Sum: Sum}; | 103 | +export default {Loop: Loop, DisplayInt: DisplayInt, Sum: Sum}; |
114 | -//! TODO comment or uncomment (maybe) | ||
115 | -} | ... | ... |
... | @@ -16,11 +16,10 @@ | ... | @@ -16,11 +16,10 @@ |
16 | "bower": ">=1.3.9", | 16 | "bower": ">=1.3.9", |
17 | "grunt": ">=0.4.5", | 17 | "grunt": ">=0.4.5", |
18 | "grunt-jslint": ">=1.1.12", | 18 | "grunt-jslint": ">=1.1.12", |
19 | - "grunt-contrib-obfuscator": "*", | ||
20 | "grunt-terser": "*", | 19 | "grunt-terser": "*", |
21 | - "grunt-file-minify": ">=1.0.0", | ||
22 | "grunt-jsdoc": ">=0.5.6", | 20 | "grunt-jsdoc": ">=0.5.6", |
23 | "grunt-bower-task": ">=0.4.0", | 21 | "grunt-bower-task": ">=0.4.0", |
24 | - "grunt-contrib-concat": ">=0.5.0" | 22 | + "grunt-contrib-concat": ">=0.5.0", |
23 | + "grunt-contrib-copy": ">=1.0.0" | ||
25 | } | 24 | } |
26 | } | 25 | } | ... | ... |
... | @@ -199,7 +199,7 @@ ARCS.Application = function () { | ... | @@ -199,7 +199,7 @@ ARCS.Application = function () { |
199 | * Starts the application | 199 | * Starts the application |
200 | */ | 200 | */ |
201 | this.start = function () { | 201 | this.start = function () { |
202 | - console.log("[ARCS] Starting application"); | 202 | + console.log("[ARCS] Starting application..."); |
203 | context.instanciate().then(preProcess); | 203 | context.instanciate().then(preProcess); |
204 | }; | 204 | }; |
205 | }; | 205 | }; | ... | ... |
... | @@ -3,31 +3,31 @@ | ... | @@ -3,31 +3,31 @@ |
3 | * It relies on require.js to get the job done. | 3 | * It relies on require.js to get the job done. |
4 | * @file | 4 | * @file |
5 | */ | 5 | */ |
6 | +"use strict"; | ||
6 | 7 | ||
7 | // basically, here we start by importing the module ARCS | 8 | // basically, here we start by importing the module ARCS |
8 | import ARCS from './arcs.js'; | 9 | import ARCS from './arcs.js'; |
9 | 10 | ||
10 | 11 | ||
11 | -console.log("Bootstrapping ARCS..."); | 12 | +console.log("[ARCS] Bootstrapping..."); |
12 | 13 | ||
13 | var baseUrl, appDescription, requireMarkup, xhr; | 14 | var baseUrl, appDescription, requireMarkup, xhr; |
14 | 15 | ||
15 | -requireMarkup = document.querySelector('[data-main]'); | 16 | +requireMarkup = document.querySelector('[data-arcsapp]'); |
16 | if (requireMarkup !== undefined) { | 17 | if (requireMarkup !== undefined) { |
17 | baseUrl = requireMarkup.dataset.baseUrl ; | 18 | baseUrl = requireMarkup.dataset.baseUrl ; |
18 | appDescription = requireMarkup.dataset.arcsapp || "arcsapp.json"; | 19 | appDescription = requireMarkup.dataset.arcsapp || "arcsapp.json"; |
19 | } | 20 | } |
20 | 21 | ||
22 | + | ||
23 | +(async function toto() { | ||
21 | var description = await(fetch(appDescription)); | 24 | var description = await(fetch(appDescription)); |
22 | var applicationObject = await(description.json()); | 25 | var applicationObject = await(description.json()); |
23 | 26 | ||
24 | 27 | ||
25 | -console.log("ARCS application description loaded"); | 28 | +console.log("[ARCS] Application description loaded"); |
26 | 29 | ||
27 | -if (baseUrl) { | ||
28 | - require.config( { baseUrl: baseUrl }); | ||
29 | -} | ||
30 | var aap = new ARCS.Application(); | 30 | var aap = new ARCS.Application(); |
31 | aap.import(applicationObject); | 31 | aap.import(applicationObject); |
32 | -console.log("Starting application..."); | ||
33 | aap.start(); | 32 | aap.start(); |
33 | +})(); | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
src/arcs_module.js
deleted
100644 → 0
1 | -/** | ||
2 | - * definition of the main module function: | ||
3 | - * it takes an anonymous function as a parameter | ||
4 | - * the anonymous function has one parameter: the object encompassing | ||
5 | - * ARCS definitions (in order to able to use ARCS.Component.create, ...) | ||
6 | - * @param moduleDefinition {function} main function of the module. | ||
7 | - * It should return a list of components | ||
8 | - * @param deps {mixed[]} dependencies | ||
9 | - */ | ||
10 | - | ||
11 | -// TODO arcs_module seems to be not needed anymore!!!! | ||
12 | -// more cunning, this time, we export an arcs_module function | ||
13 | -// that we call later! | ||
14 | -// still we need to do something about it in order to register | ||
15 | -// components. | ||
16 | -// in fact factories should be registered in load library. | ||
17 | - | ||
18 | -// reimplementation using native promises | ||
19 | -arcs_module = function(moduleDefinition, deps) { | ||
20 | - var storeComponents, i; | ||
21 | - | ||
22 | - if (typeof module !== 'undefined') { | ||
23 | - if (module.parent.exports) { | ||
24 | - ARCS = module.exports; | ||
25 | - } | ||
26 | - } | ||
27 | - | ||
28 | - if (deps === undefined) { deps = []; } | ||
29 | - | ||
30 | - storeComponents = function (deps) { | ||
31 | - var mdef, p; | ||
32 | - // we should insert ARCS at the beginning of deps ! | ||
33 | - deps.unshift(ARCS); | ||
34 | - | ||
35 | - mdef = (typeof moduleDefinition === 'function') ? | ||
36 | - moduleDefinition.apply(this, deps) : moduleDefinition; | ||
37 | - | ||
38 | - if (mdef === undefined) { | ||
39 | - throw new Error("[ARCS] Your module is undefined. Did you forget to export components?\nCode of module follows:\n" +moduleDefinition); | ||
40 | - } | ||
41 | - | ||
42 | - for (p in mdef) { | ||
43 | - if (mdef.hasOwnProperty(p) && ARCS.Context.currentContext != null) { | ||
44 | - ARCS.Context.currentContext.setFactory(p,mdef[p]); //.setFactory(ARCS.Application.currentApplication, p, mdef[p]); | ||
45 | - } | ||
46 | - } | ||
47 | - | ||
48 | - return Promise.resolve(); | ||
49 | - }; | ||
50 | - // until now, it is the very same code. | ||
51 | - | ||
52 | - // here we create a promise to solve dependency | ||
53 | - // reject has the dependency name, while resolve has the object | ||
54 | - var depResolve = function(dep) { | ||
55 | - return new Promise(function(resolve, reject) { | ||
56 | - var d,shimConfig; | ||
57 | - if (ARCS.isInNode()) { | ||
58 | - d = require(dep); | ||
59 | - if (d === undefined) { | ||
60 | - reject(dep); | ||
61 | - } else { | ||
62 | - resolve(d); | ||
63 | - } | ||
64 | - } else { | ||
65 | - // this one a little bit trickier since we have to shim. | ||
66 | - if (dep.name !== undefined) { | ||
67 | - shimConfig = { shim: {} }; | ||
68 | - shimConfig.shim[dep.name] = { exports: dep.exports }; | ||
69 | - if (dep.deps !== undefined) { | ||
70 | - shimConfig.shim[dep.name].deps = dep.deps; | ||
71 | - } | ||
72 | - require.config(shimConfig); | ||
73 | - dep = dep.name; | ||
74 | - } | ||
75 | - // shim performed | ||
76 | - require([dep], | ||
77 | - function(d) { resolve(d); }, | ||
78 | - function(err) { console.log("[ARCS] Trouble with module ", dep); reject(dep, err); } | ||
79 | - ); | ||
80 | - } | ||
81 | - }); | ||
82 | - }; | ||
83 | - | ||
84 | - var depResolves = []; | ||
85 | - for (i=0; i<deps.length; i++) { | ||
86 | - depResolves[i] = depResolve(deps[i]); | ||
87 | - } | ||
88 | - | ||
89 | - | ||
90 | - | ||
91 | - ARCS.Context.currentContext.addLibraryPromise( | ||
92 | - Promise.all(depResolves).then(storeComponents, | ||
93 | - function(reason) { console.error("[ARCS] Failed to load dependency ", reason ); }) | ||
94 | - | ||
95 | - ); | ||
96 | - | ||
97 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -23,6 +23,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -23,6 +23,7 @@ ARCS.Context = function( ctx ) { |
23 | if (ctx !== undefined) { | 23 | if (ctx !== undefined) { |
24 | libraries = ctx.libraries; | 24 | libraries = ctx.libraries; |
25 | 25 | ||
26 | + var p; | ||
26 | for (p in ctx.components) { | 27 | for (p in ctx.components) { |
27 | if (ctx.components.hasOwnProperty(p)) { | 28 | if (ctx.components.hasOwnProperty(p)) { |
28 | components[p] = ctx.components[p]; | 29 | components[p] = ctx.components[p]; |
... | @@ -39,8 +40,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -39,8 +40,7 @@ ARCS.Context = function( ctx ) { |
39 | 40 | ||
40 | } | 41 | } |
41 | 42 | ||
42 | - //! TODO use fetch API? | 43 | + var loadDataFile =async function(fileName) { |
43 | - loadDataFile =async function(fileName) { | ||
44 | var dataPromise ; | 44 | var dataPromise ; |
45 | 45 | ||
46 | if (ARCS.isInNode()) { | 46 | if (ARCS.isInNode()) { |
... | @@ -58,18 +58,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -58,18 +58,7 @@ ARCS.Context = function( ctx ) { |
58 | } | 58 | } |
59 | }; | 59 | }; |
60 | 60 | ||
61 | - //! TODO not needed anymore? | 61 | + var loadLibraries = function () { |
62 | - /*this.addLibraryPromise = function(p) { | ||
63 | - depLibPromises.push(p); | ||
64 | - };*/ | ||
65 | - | ||
66 | - /*promiseLibrary = function(libName) { | ||
67 | - return import(libName); | ||
68 | - };*/ | ||
69 | - | ||
70 | - //! TODO modify loadLibraries and loadLibrary to directly register | ||
71 | - // factories so that arcs_module is not needed anymore ? | ||
72 | - loadLibraries = function () { | ||
73 | var i; | 62 | var i; |
74 | // we will use different instances of require either the one of node | 63 | // we will use different instances of require either the one of node |
75 | // or the one from require.js | 64 | // or the one from require.js |
... | @@ -77,16 +66,13 @@ ARCS.Context = function( ctx ) { | ... | @@ -77,16 +66,13 @@ ARCS.Context = function( ctx ) { |
77 | 66 | ||
78 | var res=[]; | 67 | var res=[]; |
79 | for(i=0; i < libraries.length; i++) { | 68 | for(i=0; i < libraries.length; i++) { |
80 | - //! TODO | 69 | + res.push(self.loadLibrary(libraries[i])); |
81 | - res.push(loadLibrary(libraries[i])); | ||
82 | - //import(libraries[i])); | ||
83 | } | 70 | } |
84 | return Promise.all(res); | 71 | return Promise.all(res); |
85 | }; | 72 | }; |
86 | 73 | ||
87 | - instanciateComponents = function() { | 74 | + var instanciateComponents = function() { |
88 | var p, promises=[]; | 75 | var p, promises=[]; |
89 | - console.log(components); | ||
90 | 76 | ||
91 | for (p in components) { | 77 | for (p in components) { |
92 | if (components.hasOwnProperty(p)) { | 78 | if (components.hasOwnProperty(p)) { |
... | @@ -95,7 +81,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -95,7 +81,7 @@ ARCS.Context = function( ctx ) { |
95 | console.error("[ARCS] Context dump follows: ", libraries, components, constants); | 81 | console.error("[ARCS] Context dump follows: ", libraries, components, constants); |
96 | return ; | 82 | return ; |
97 | } | 83 | } |
98 | - factory = factories[components[p].type]; | 84 | + var factory = factories[components[p].type]; |
99 | //console.log("instanciating ", p); | 85 | //console.log("instanciating ", p); |
100 | try { | 86 | try { |
101 | if (components[p].value !== undefined || components[p].url !== undefined || components[p].ref !== undefined) { | 87 | if (components[p].value !== undefined || components[p].url !== undefined || components[p].ref !== undefined) { |
... | @@ -145,20 +131,22 @@ ARCS.Context = function( ctx ) { | ... | @@ -145,20 +131,22 @@ ARCS.Context = function( ctx ) { |
145 | libUrl = libName.url; | 131 | libUrl = libName.url; |
146 | } | 132 | } |
147 | 133 | ||
134 | + if (libraries.indexOf(libActualName) < 0) { | ||
148 | libraries.push(libActualName); | 135 | libraries.push(libActualName); |
136 | + } | ||
149 | // TODO promisify call to cbFunction | 137 | // TODO promisify call to cbFunction |
150 | return import(libUrl).then( function(module) { | 138 | return import(libUrl).then( function(module) { |
151 | // TODO insert here component factories | 139 | // TODO insert here component factories |
152 | - for (p in module) { | 140 | + for (p in module.default) { |
153 | - if (module.hasOwnProperty(p)) { | 141 | + if (module.default.hasOwnProperty(p)) { |
154 | - ARCS.Context.currentContext.setFactory(p,module[p]); | 142 | + ARCS.Context.currentContext.setFactory(p,module.default[p]); |
155 | } | 143 | } |
156 | } | 144 | } |
157 | 145 | ||
158 | if (cbFunction !== undefined) { | 146 | if (cbFunction !== undefined) { |
159 | cbFunction(); | 147 | cbFunction(); |
160 | } | 148 | } |
161 | - }); | 149 | + }).catch( function(msg) { console.error("[ARCS] Trouble loading '",libUrl,"' with reason -", msg) }); |
162 | }; | 150 | }; |
163 | 151 | ||
164 | /** | 152 | /** |
... | @@ -277,7 +265,7 @@ ARCS.Context = function( ctx ) { | ... | @@ -277,7 +265,7 @@ ARCS.Context = function( ctx ) { |
277 | this.instanciate = function () { | 265 | this.instanciate = function () { |
278 | //! TODO | 266 | //! TODO |
279 | return loadLibraries().then(instanciateComponents) | 267 | return loadLibraries().then(instanciateComponents) |
280 | - .catch(function(msg) { console.log("[ARCS] Trouble instanciating context", msg); }); | 268 | + .catch(function(msg) { console.error("[ARCS] Trouble instanciating context", msg); }); |
281 | 269 | ||
282 | }; | 270 | }; |
283 | 271 | ... | ... |
1 | { | 1 | { |
2 | "context" : { | 2 | "context" : { |
3 | - "libraries" : [ "components/loop","components/console"], | 3 | + "libraries" : [ "../components/loop.js","../components/console.js"], |
4 | "components" : { | 4 | "components" : { |
5 | "loop": { "type": "Loop" }, | 5 | "loop": { "type": "Loop" }, |
6 | "dint": { "type": "DisplayInt" }, | 6 | "dint": { "type": "DisplayInt" }, | ... | ... |
... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
4 | <script data-base-url="../.." | 4 | <script data-base-url="../.." |
5 | data-arcsapp="arcsapp.json" | 5 | data-arcsapp="arcsapp.json" |
6 | type="module" | 6 | type="module" |
7 | - src="../../build/arcs_browser"> | 7 | + src="../../build/arcs_browser.js"> |
8 | </script> | 8 | </script> |
9 | </head> | 9 | </head> |
10 | <body> | 10 | <body> | ... | ... |
-
Please register or login to post a comment