@qooxdoo/framework 7.5.0 → 7.5.1
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/Manifest.json +1 -1
- package/bin/deploy/qx +7 -5
- package/lib/compiler/compile-info.json +75 -75
- package/lib/compiler/index.js +412 -393
- package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
- package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
- package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
- package/lib/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
- package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
- package/lib/resource/qx/tool/website/src/about.md +1 -1
- package/package.json +2 -2
- package/source/class/qx/test/io/transport/Websocket.js +1 -1
- package/source/class/qx/theme/IndigoDark.js +1 -1
- package/source/class/qx/theme/indigo/DecorationDark.js +30 -0
- package/source/class/qx/tool/cli/Application.js +4 -1
- package/source/class/qx/tool/cli/Cli.js +22 -23
- package/source/class/qx/tool/cli/Watch.js +5 -6
- package/source/class/qx/tool/cli/commands/Compile.js +2 -1
- package/source/class/qx/tool/cli/commands/Lint.js +1 -1
- package/source/class/qx/tool/cli/commands/Run.js +6 -7
- package/source/class/qx/tool/cli/commands/Serve.js +29 -36
- package/source/class/qx/tool/cli/commands/Test.js +3 -2
- package/source/class/qx/tool/cli/commands/add/Script.js +3 -1
- package/source/class/qx/tool/cli/commands/package/Install.js +3 -0
- package/source/class/qx/tool/compiler/ClassFile.js +2 -1
- package/source/class/qx/tool/compiler/app/Cldr.js +63 -26
- package/source/class/qx/ui/basic/Image.js +6 -2
- package/source/class/qx/ui/core/Widget.js +13 -42
- package/source/resource/qx/mobile/scss/common/_gradients.scss +1 -1
- package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js +7 -7
- package/source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js +6 -6
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js +9 -9
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js +5 -5
- package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js +7 -7
- package/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js +10 -10
- package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js +6 -6
- package/source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js +12 -12
- package/source/resource/qx/tool/website/src/about.md +1 -1
package/lib/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -28,15 +28,15 @@ qx.Class.define("${namespace}.Application",
|
|
|
28
28
|
members :
|
|
29
29
|
{
|
|
30
30
|
/**
|
|
31
|
-
* This method contains the initial application code and gets called
|
|
31
|
+
* This method contains the initial application code and gets called
|
|
32
32
|
* during startup of the application
|
|
33
|
-
*
|
|
33
|
+
*
|
|
34
34
|
* @lint ignoreDeprecated(alert)
|
|
35
35
|
*/
|
|
36
|
-
main
|
|
36
|
+
main()
|
|
37
37
|
{
|
|
38
38
|
// Call super class
|
|
39
|
-
|
|
39
|
+
super.main();
|
|
40
40
|
|
|
41
41
|
// Enable logging in debug variant
|
|
42
42
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -54,10 +54,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
56
|
// Create a button
|
|
57
|
-
|
|
57
|
+
const button1 = new qx.ui.form.Button("Click me", "${namespace_as_path}/test.png");
|
|
58
58
|
|
|
59
59
|
// Document is the application root
|
|
60
|
-
|
|
60
|
+
const doc = this.getRoot();
|
|
61
61
|
|
|
62
62
|
// Add button to document at fixed coordinates
|
|
63
63
|
doc.add(button1, {left: 100, top: 50});
|
|
@@ -69,4 +69,4 @@ qx.Class.define("${namespace}.Application",
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
});
|
|
72
|
+
});
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
31
31
|
TESTS
|
|
32
32
|
---------------------------------------------------------------------------
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Here are some simple tests
|
|
37
37
|
*/
|
|
38
|
-
testSimple
|
|
38
|
+
testSimple()
|
|
39
39
|
{
|
|
40
40
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
41
41
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
44
44
|
/**
|
|
45
45
|
* Here are some more advanced tests
|
|
46
46
|
*/
|
|
47
|
-
testAdvanced
|
|
47
|
+
testAdvanced()
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
let a = 3;
|
|
50
|
+
let b = a;
|
|
51
51
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
52
52
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
53
53
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -25,10 +25,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
25
25
|
* This method contains the initial application code and gets called
|
|
26
26
|
* during startup of the application
|
|
27
27
|
*/
|
|
28
|
-
main
|
|
28
|
+
main()
|
|
29
29
|
{
|
|
30
30
|
// Call super class
|
|
31
|
-
|
|
31
|
+
super.main();
|
|
32
32
|
|
|
33
33
|
// Enable logging in debug variant
|
|
34
34
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -47,11 +47,11 @@ qx.Class.define("${namespace}.Application",
|
|
|
47
47
|
-------------------------------------------------------------------------
|
|
48
48
|
*/
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const login = new ${namespace}.page.Login();
|
|
51
|
+
const overview = new ${namespace}.page.Overview();
|
|
52
52
|
|
|
53
53
|
// Add the pages to the page manager.
|
|
54
|
-
|
|
54
|
+
const manager = new qx.ui.mobile.page.Manager(false);
|
|
55
55
|
manager.addDetail([
|
|
56
56
|
login,
|
|
57
57
|
overview
|
|
@@ -69,7 +69,7 @@ qx.Class.define("${namespace}.Application",
|
|
|
69
69
|
* Default behaviour when a route matches. Displays the corresponding page on screen.
|
|
70
70
|
* @param data {Map} the animation properties
|
|
71
71
|
*/
|
|
72
|
-
_show
|
|
72
|
+
_show(data) {
|
|
73
73
|
this.show(data.customData);
|
|
74
74
|
}
|
|
75
75
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js
CHANGED
|
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
15
15
|
{
|
|
16
16
|
extend : qx.ui.mobile.page.NavigationPage,
|
|
17
17
|
|
|
18
|
-
construct
|
|
18
|
+
construct()
|
|
19
19
|
{
|
|
20
|
-
|
|
20
|
+
super();
|
|
21
21
|
this.setTitle("Login");
|
|
22
22
|
},
|
|
23
23
|
|
|
@@ -28,22 +28,22 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
// overridden
|
|
31
|
-
_initialize
|
|
32
|
-
|
|
31
|
+
_initialize() {
|
|
32
|
+
super._initialize();
|
|
33
33
|
|
|
34
34
|
// Username
|
|
35
|
-
|
|
35
|
+
const user = new qx.ui.mobile.form.TextField();
|
|
36
36
|
user.setRequired(true);
|
|
37
37
|
|
|
38
38
|
// Password
|
|
39
|
-
|
|
39
|
+
const pwd = new qx.ui.mobile.form.PasswordField();
|
|
40
40
|
pwd.setRequired(true);
|
|
41
41
|
|
|
42
42
|
// Login Button
|
|
43
|
-
|
|
43
|
+
const loginButton = new qx.ui.mobile.form.Button("Login");
|
|
44
44
|
loginButton.addListener("tap", this._onButtonTap, this);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
const loginForm = this.__form = new qx.ui.mobile.form.Form();
|
|
47
47
|
loginForm.add(user, "Username");
|
|
48
48
|
loginForm.add(pwd, "Password");
|
|
49
49
|
|
|
@@ -56,7 +56,7 @@ qx.Class.define("${namespace}.page.Login",
|
|
|
56
56
|
/**
|
|
57
57
|
* Event handler for <code>tap</code> on the login button.
|
|
58
58
|
*/
|
|
59
|
-
_onButtonTap
|
|
59
|
+
_onButtonTap() {
|
|
60
60
|
// use form validation
|
|
61
61
|
if (this.__form.validate()) {
|
|
62
62
|
qx.core.Init.getApplication().getRouting().executeGet("/overview");
|
package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js
CHANGED
|
@@ -15,9 +15,9 @@ qx.Class.define("${namespace}.page.Overview",
|
|
|
15
15
|
{
|
|
16
16
|
extend : qx.ui.mobile.page.NavigationPage,
|
|
17
17
|
|
|
18
|
-
construct
|
|
18
|
+
construct()
|
|
19
19
|
{
|
|
20
|
-
|
|
20
|
+
super();
|
|
21
21
|
this.setTitle("Overview");
|
|
22
22
|
this.setShowBackButton(true);
|
|
23
23
|
this.setBackButtonText("Back");
|
|
@@ -27,16 +27,16 @@ qx.Class.define("${namespace}.page.Overview",
|
|
|
27
27
|
members :
|
|
28
28
|
{
|
|
29
29
|
// overridden
|
|
30
|
-
_initialize
|
|
30
|
+
_initialize()
|
|
31
31
|
{
|
|
32
|
-
|
|
32
|
+
super._initialize(arguments);
|
|
33
33
|
|
|
34
34
|
this.getContent().add(new qx.ui.mobile.basic.Label("Your first app."));
|
|
35
35
|
},
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
// overridden
|
|
39
|
-
_back
|
|
39
|
+
_back(triggeredByKeyEvent)
|
|
40
40
|
{
|
|
41
41
|
qx.core.Init.getApplication().getRouting().back();
|
|
42
42
|
}
|
|
@@ -24,15 +24,15 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
24
24
|
members :
|
|
25
25
|
{
|
|
26
26
|
/**
|
|
27
|
-
* This method contains the initial application code and gets called
|
|
27
|
+
* This method contains the initial application code and gets called
|
|
28
28
|
* during startup of the application
|
|
29
|
-
*
|
|
29
|
+
*
|
|
30
30
|
* @lint ignoreDeprecated(alert)
|
|
31
31
|
*/
|
|
32
|
-
main
|
|
32
|
+
main()
|
|
33
33
|
{
|
|
34
34
|
// Call super class
|
|
35
|
-
|
|
35
|
+
super.main();
|
|
36
36
|
|
|
37
37
|
// Enable logging in debug variant
|
|
38
38
|
if (qx.core.Environment.get("qx.debug"))
|
|
@@ -50,10 +50,10 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
50
50
|
*/
|
|
51
51
|
|
|
52
52
|
// Create a button
|
|
53
|
-
|
|
53
|
+
const button1 = new ${namespace}.Button("Very special button", "${namespace_as_path}/test.png");
|
|
54
54
|
|
|
55
55
|
// Document is the application root
|
|
56
|
-
|
|
56
|
+
const doc = this.getRoot();
|
|
57
57
|
|
|
58
58
|
// Add button to document at fixed coordinates
|
|
59
59
|
doc.add(button1, {left: 100, top: 50});
|
|
@@ -64,4 +64,4 @@ qx.Class.define("${namespace}.demo.Application",
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
});
|
|
67
|
+
});
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -31,11 +31,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
31
31
|
TESTS
|
|
32
32
|
---------------------------------------------------------------------------
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Here are some simple tests
|
|
37
37
|
*/
|
|
38
|
-
testSimple
|
|
38
|
+
testSimple()
|
|
39
39
|
{
|
|
40
40
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
41
41
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -44,10 +44,10 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
44
44
|
/**
|
|
45
45
|
* Here are some more advanced tests
|
|
46
46
|
*/
|
|
47
|
-
testAdvanced
|
|
47
|
+
testAdvanced()
|
|
48
48
|
{
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
let a = 3;
|
|
50
|
+
let b = a;
|
|
51
51
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
52
52
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
53
53
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/Application.tmpl.js
CHANGED
|
@@ -34,7 +34,7 @@ qx.Class.define("${namespace}.Application",
|
|
|
34
34
|
* This method contains the initial application code and gets called
|
|
35
35
|
* during startup of the application
|
|
36
36
|
*/
|
|
37
|
-
main
|
|
37
|
+
main()
|
|
38
38
|
{
|
|
39
39
|
if (qx.core.Environment.get("runtime.name") == "rhino") {
|
|
40
40
|
qx.log.Logger.register(qx.log.appender.RhinoConsole);
|
|
@@ -59,10 +59,10 @@ qx.Class.define("${namespace}.Application",
|
|
|
59
59
|
*
|
|
60
60
|
* @param args {String[]} Rhino arguments object
|
|
61
61
|
*/
|
|
62
|
-
_argumentsToSettings
|
|
62
|
+
_argumentsToSettings(args)
|
|
63
63
|
{
|
|
64
|
-
|
|
65
|
-
for (
|
|
64
|
+
let opts;
|
|
65
|
+
for (let i=0, l=args.length; i<l; i++) {
|
|
66
66
|
if (args[i].indexOf("settings=") == 0) {
|
|
67
67
|
opts = args[i].substr(9);
|
|
68
68
|
break;
|
|
@@ -75,8 +75,8 @@ qx.Class.define("${namespace}.Application",
|
|
|
75
75
|
if (opts) {
|
|
76
76
|
opts = opts.replace(/\\\{/g, "{").replace(/\\\}/g, "}");
|
|
77
77
|
opts = qx.lang.Json.parse(opts);
|
|
78
|
-
for (
|
|
79
|
-
|
|
78
|
+
for (let prop in opts) {
|
|
79
|
+
let value = opts[prop];
|
|
80
80
|
if (typeof value == "string") {
|
|
81
81
|
value = value.replace(/\$$/g, " ");
|
|
82
82
|
}
|
package/lib/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js
CHANGED
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* This class demonstrates how to define unit tests for your application.
|
|
13
13
|
*
|
|
14
|
-
* Execute <code>qx test</code> to generate a testrunner application
|
|
14
|
+
* Execute <code>qx test</code> to generate a testrunner application
|
|
15
15
|
* and open it from <tt>test/index.html</tt>
|
|
16
16
|
*
|
|
17
|
-
* The methods that contain the tests are instance methods with a
|
|
18
|
-
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
-
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
-
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
17
|
+
* The methods that contain the tests are instance methods with a
|
|
18
|
+
* <code>test</code> prefix. You can create an arbitrary number of test
|
|
19
|
+
* classes like this one. They can be organized in a regular class hierarchy,
|
|
20
|
+
* i.e. using deeper namespaces and a corresponding file structure within the
|
|
21
21
|
* <tt>test</tt> folder.
|
|
22
22
|
*/
|
|
23
23
|
qx.Class.define("${namespace}.test.DemoTest",
|
|
@@ -33,11 +33,11 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
33
33
|
TESTS
|
|
34
34
|
---------------------------------------------------------------------------
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
/**
|
|
38
38
|
* Here are some simple tests
|
|
39
39
|
*/
|
|
40
|
-
testSimple
|
|
40
|
+
testSimple()
|
|
41
41
|
{
|
|
42
42
|
this.assertEquals(4, 3+1, "This should never fail!");
|
|
43
43
|
this.assertFalse(false, "Can false be true?!");
|
|
@@ -46,20 +46,20 @@ qx.Class.define("${namespace}.test.DemoTest",
|
|
|
46
46
|
/**
|
|
47
47
|
* Here are some more advanced tests
|
|
48
48
|
*/
|
|
49
|
-
testAdvanced
|
|
49
|
+
testAdvanced()
|
|
50
50
|
{
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
let a = 3;
|
|
52
|
+
let b = a;
|
|
53
53
|
this.assertIdentical(a, b, "A rose by any other name is still a rose");
|
|
54
54
|
this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!");
|
|
55
55
|
},
|
|
56
56
|
|
|
57
|
-
hasNodeJs
|
|
57
|
+
hasNodeJs()
|
|
58
58
|
{
|
|
59
59
|
return qx.core.Environment.get("runtime.name") == "node.js";
|
|
60
60
|
},
|
|
61
61
|
|
|
62
|
-
testNodeJs
|
|
62
|
+
testNodeJs()
|
|
63
63
|
{
|
|
64
64
|
this.require(["nodeJs"]);
|
|
65
65
|
// test node stuff
|
|
@@ -8,7 +8,7 @@ This is the built in web server for Qooxdoo, serving your application.
|
|
|
8
8
|
|
|
9
9
|
You can find Qooxdoo on the web at http://www.qooxdoo.org and on GitHub at http://github.com/qooxdoo/qooxdoo.
|
|
10
10
|
|
|
11
|
-
If you have questions, please ask them at [
|
|
11
|
+
If you have questions, please ask them at [Stack Overflow](https://stackoverflow.com/questions/tagged/qooxdoo) and make sure you use the "qooxdoo" tag when you post.
|
|
12
12
|
|
|
13
13
|
If you want to discuss anything, please contact us using Gitter in the [qooxdoo/qooxdoo](http://gitter.im/qooxdoo/qooxdoo) group, either [via a web browser](http://gitter.im/qooxdoo/qooxdoo) or via the Gitter app.
|
|
14
14
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qooxdoo/framework",
|
|
3
|
-
"version": "7.5.
|
|
3
|
+
"version": "7.5.1",
|
|
4
4
|
"description": "The JS Framework for Coders",
|
|
5
5
|
"author": "The qooxdoo project",
|
|
6
6
|
"keywords": [
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"tmp": "0.2.1",
|
|
119
119
|
"unset-value": "^1.0.0",
|
|
120
120
|
"upath": "^1.2.0",
|
|
121
|
-
"update-notifier": "^
|
|
121
|
+
"update-notifier": "^6.0.2",
|
|
122
122
|
"xml2js": "^0.4.23",
|
|
123
123
|
"yargs": "^15.4.1"
|
|
124
124
|
},
|
|
@@ -20,7 +20,7 @@ qx.Theme.define("qx.theme.IndigoDark", {
|
|
|
20
20
|
|
|
21
21
|
meta: {
|
|
22
22
|
color: qx.theme.indigo.ColorDark,
|
|
23
|
-
decoration: qx.theme.indigo.
|
|
23
|
+
decoration: qx.theme.indigo.DecorationDark,
|
|
24
24
|
font: qx.theme.indigo.Font,
|
|
25
25
|
appearance: qx.theme.indigo.AppearanceDark,
|
|
26
26
|
icon: qx.theme.icon.Tango
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
|
|
3
|
+
qooxdoo - the new era of web development
|
|
4
|
+
|
|
5
|
+
http://qooxdoo.org
|
|
6
|
+
|
|
7
|
+
License:
|
|
8
|
+
MIT: https://opensource.org/licenses/MIT
|
|
9
|
+
See the LICENSE file in the project's top-level directory for details.
|
|
10
|
+
|
|
11
|
+
Authors:
|
|
12
|
+
* Scott Knick (sknick)
|
|
13
|
+
* Dmitrii Zolotov (goldim)
|
|
14
|
+
|
|
15
|
+
************************************************************************ */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The indigo dark qooxdoo decoration theme.
|
|
19
|
+
*/
|
|
20
|
+
qx.Theme.define("qx.theme.indigo.DecorationDark", {
|
|
21
|
+
extend: qx.theme.indigo.Decoration,
|
|
22
|
+
|
|
23
|
+
decorations: {
|
|
24
|
+
"menubar-button-hovered": {
|
|
25
|
+
style: {
|
|
26
|
+
backgroundColor: "background"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
@@ -29,11 +29,14 @@ qx.Class.define("qx.tool.cli.Application", {
|
|
|
29
29
|
* during startup of the application
|
|
30
30
|
*/
|
|
31
31
|
async main() {
|
|
32
|
+
process.exitCode = 0;
|
|
32
33
|
try {
|
|
33
34
|
await new qx.tool.cli.Cli().run();
|
|
34
35
|
} catch (e) {
|
|
35
36
|
qx.tool.compiler.Console.error("Error: " + (e.stack || e.message));
|
|
36
|
-
process.
|
|
37
|
+
process.exitCode = 1;
|
|
38
|
+
} finally {
|
|
39
|
+
process.exit();
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
},
|
|
@@ -25,6 +25,11 @@ const semver = require("semver");
|
|
|
25
25
|
*/
|
|
26
26
|
qx.Class.define("qx.tool.cli.Cli", {
|
|
27
27
|
extend: qx.core.Object,
|
|
28
|
+
properties: {
|
|
29
|
+
command: {
|
|
30
|
+
apply: "__applyCommand"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
28
33
|
|
|
29
34
|
construct() {
|
|
30
35
|
super();
|
|
@@ -53,14 +58,16 @@ qx.Class.define("qx.tool.cli.Cli", {
|
|
|
53
58
|
_compileJsonFilename: null,
|
|
54
59
|
|
|
55
60
|
/** @type {Object} Parsed arguments */
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
/** @type {Promise} Promise that resolves to the _parsedArgs, but only when completely finished parsing them */
|
|
59
|
-
__promiseParseArgs: null,
|
|
61
|
+
__parsedArgs: null,
|
|
60
62
|
|
|
61
63
|
/** @type {Boolean} Whether libraries have had their `.load()` method called yet */
|
|
62
64
|
__librariesNotified: false,
|
|
63
65
|
|
|
66
|
+
__applyCommand(command) {
|
|
67
|
+
command.setCompilerApi(this._compilerApi);
|
|
68
|
+
this._compilerApi.setCommand(command);
|
|
69
|
+
},
|
|
70
|
+
|
|
64
71
|
/**
|
|
65
72
|
* Creates an instance of yargs, with minimal options
|
|
66
73
|
*
|
|
@@ -241,18 +248,10 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
241
248
|
*/
|
|
242
249
|
async processCommand(command) {
|
|
243
250
|
qx.tool.compiler.Console.getInstance().setVerbose(this.argv.verbose);
|
|
244
|
-
command.setCompilerApi(this._compilerApi);
|
|
245
|
-
this._compilerApi.setCommand(command);
|
|
246
251
|
await this.__notifyLibraries();
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return res;
|
|
251
|
-
} catch (e) {
|
|
252
|
-
qx.tool.compiler.Console.error("Error: " + (e.stack || e.message));
|
|
253
|
-
process.exit(1);
|
|
254
|
-
return null;
|
|
255
|
-
}
|
|
252
|
+
const res = await command.process();
|
|
253
|
+
await this._compilerApi.afterProcessFinished(command, res);
|
|
254
|
+
return res;
|
|
256
255
|
},
|
|
257
256
|
|
|
258
257
|
/**
|
|
@@ -260,8 +259,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
260
259
|
*
|
|
261
260
|
* @return {Object}
|
|
262
261
|
*/
|
|
263
|
-
|
|
264
|
-
return
|
|
262
|
+
getParsedArgs() {
|
|
263
|
+
return this.__parsedArgs;
|
|
265
264
|
},
|
|
266
265
|
|
|
267
266
|
/**
|
|
@@ -283,8 +282,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
283
282
|
var args = qx.lang.Array.clone(process.argv);
|
|
284
283
|
args.shift();
|
|
285
284
|
process.title = args.join(" ");
|
|
286
|
-
|
|
287
|
-
|
|
285
|
+
await this.__parseArgsImpl();
|
|
286
|
+
return this.processCommand(this.getCommand());
|
|
288
287
|
},
|
|
289
288
|
|
|
290
289
|
/**
|
|
@@ -356,7 +355,7 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
356
355
|
(await qx.tool.utils.Json.loadJsonAsync(name)) || lockfileContent;
|
|
357
356
|
} catch (ex) {
|
|
358
357
|
// Nothing
|
|
359
|
-
}
|
|
358
|
+
}
|
|
360
359
|
// check semver-type compatibility (i.e. compatible as long as major version stays the same)
|
|
361
360
|
let schemaVersion = semver.coerce(
|
|
362
361
|
qx.tool.config.Lockfile.getInstance().getVersion(),
|
|
@@ -569,8 +568,8 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
569
568
|
config.serve.listenPort || this.argv.listenPort;
|
|
570
569
|
}
|
|
571
570
|
|
|
572
|
-
this.
|
|
573
|
-
return this.
|
|
571
|
+
this.__parsedArgs = await compilerApi.getConfiguration();
|
|
572
|
+
return this.__parsedArgs;
|
|
574
573
|
},
|
|
575
574
|
|
|
576
575
|
/**
|
|
@@ -692,7 +691,7 @@ Version: v${await qx.tool.config.Utils.getQxVersion()}
|
|
|
692
691
|
if (data) {
|
|
693
692
|
if (data.handler === undefined) {
|
|
694
693
|
data.handler = argv =>
|
|
695
|
-
qx.tool.cli.Cli.getInstance().
|
|
694
|
+
qx.tool.cli.Cli.getInstance().setCommand(new Clazz(argv));
|
|
696
695
|
}
|
|
697
696
|
yargs.command(data);
|
|
698
697
|
}
|
|
@@ -103,11 +103,9 @@ qx.Class.define("qx.tool.cli.Watch", {
|
|
|
103
103
|
}
|
|
104
104
|
config._process = null;
|
|
105
105
|
}
|
|
106
|
-
|
|
107
106
|
console.log(
|
|
108
107
|
"Starting application: " + config._cmd + " " + config._args.join(" ")
|
|
109
108
|
);
|
|
110
|
-
|
|
111
109
|
config._processPromise = new qx.Promise((resolve, reject) => {
|
|
112
110
|
let child = (config._process = require("child_process").spawn(
|
|
113
111
|
config._cmd,
|
|
@@ -229,12 +227,10 @@ qx.Class.define("qx.tool.cli.Watch", {
|
|
|
229
227
|
watcher.on("change", filename =>
|
|
230
228
|
this.__onFileChange("change", filename)
|
|
231
229
|
);
|
|
232
|
-
|
|
233
230
|
watcher.on("add", filename => this.__onFileChange("add", filename));
|
|
234
231
|
watcher.on("unlink", filename =>
|
|
235
232
|
this.__onFileChange("unlink", filename)
|
|
236
233
|
);
|
|
237
|
-
|
|
238
234
|
watcher.on("ready", () => {
|
|
239
235
|
qx.tool.compiler.Console.log(`Start watching ...`);
|
|
240
236
|
this.__watcherReady = true;
|
|
@@ -249,6 +245,9 @@ qx.Class.define("qx.tool.cli.Watch", {
|
|
|
249
245
|
});
|
|
250
246
|
});
|
|
251
247
|
});
|
|
248
|
+
process.on("beforeExit", this.__onStop.bind(this));
|
|
249
|
+
process.on("exit", this.__onStop.bind(this));
|
|
250
|
+
return this.__runningPromise;
|
|
252
251
|
},
|
|
253
252
|
|
|
254
253
|
async stop() {
|
|
@@ -352,8 +351,8 @@ qx.Class.define("qx.tool.cli.Watch", {
|
|
|
352
351
|
}
|
|
353
352
|
return null;
|
|
354
353
|
});
|
|
355
|
-
|
|
356
|
-
return
|
|
354
|
+
this.__making = runIt();
|
|
355
|
+
return this.__making;
|
|
357
356
|
},
|
|
358
357
|
|
|
359
358
|
__scheduleMake() {
|
|
@@ -685,7 +685,7 @@ Framework: v${await this.getQxVersion()} in ${await this.getQxPath()}`);
|
|
|
685
685
|
);
|
|
686
686
|
|
|
687
687
|
watch.setConfigFilenames(arr);
|
|
688
|
-
return
|
|
688
|
+
return watch.start();
|
|
689
689
|
})
|
|
690
690
|
);
|
|
691
691
|
},
|
|
@@ -1230,6 +1230,7 @@ Framework: v${await this.getQxVersion()} in ${await this.getQxPath()}`);
|
|
|
1230
1230
|
data.localModules || {},
|
|
1231
1231
|
false
|
|
1232
1232
|
);
|
|
1233
|
+
|
|
1233
1234
|
if (!qx.lang.Object.isEmpty(appConfig.localModules)) {
|
|
1234
1235
|
app.setLocalModules(appConfig.localModules);
|
|
1235
1236
|
}
|
|
@@ -113,7 +113,7 @@ qx.Class.define("qx.tool.cli.commands.Lint", {
|
|
|
113
113
|
helperFilePath = path.dirname(helperFilePath);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
let config =
|
|
116
|
+
let config = qx.tool.cli.Cli.getInstance().getParsedArgs();
|
|
117
117
|
let lintOptions = config.eslintConfig || {};
|
|
118
118
|
lintOptions.extends = lintOptions.extends || ["@qooxdoo/qx/browser"];
|
|
119
119
|
lintOptions.globals = Object.assign(
|