@qooxdoo/framework 7.1.1 → 7.2.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/Manifest.json +1 -1
- package/lib/compiler/compile-info.json +83 -83
- package/lib/compiler/index.js +279 -274
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -1
- package/npm-shrinkwrap.json +235 -11095
- package/package.json +6 -6
- package/source/class/qx/Interface.js +13 -15
- package/source/class/qx/dev/unit/MTestLoader.js +25 -33
- package/source/class/qx/dev/unit/TestResult.js +9 -13
- package/source/class/qx/html/Element.js +1 -1
- package/source/class/qx/html/Node.js +0 -1
- package/source/class/qx/io/request/AbstractRequest.js +42 -66
- package/source/class/qx/test/Interface.js +70 -6
- package/source/class/qx/test/Mixin.js +20 -17
- package/source/class/qx/test/Promise.js +67 -91
- package/source/class/qx/test/bom/History.js +11 -19
- package/source/class/qx/test/bom/WebWorker.js +7 -15
- package/source/class/qx/test/bom/media/MediaTestCase.js +10 -18
- package/source/class/qx/test/bom/media/Video.js +10 -18
- package/source/class/qx/test/bom/rest/Resource.js +3 -7
- package/source/class/qx/test/bom/rest/ResourceWithRemote.js +40 -56
- package/source/class/qx/test/bom/webfonts/Validator.js +12 -20
- package/source/class/qx/test/core/Object.js +3 -7
- package/source/class/qx/test/data/controller/List.js +18 -22
- package/source/class/qx/test/data/marshal/Json.js +10 -14
- package/source/class/qx/test/data/store/Json.js +337 -428
- package/source/class/qx/test/data/store/Jsonp.js +46 -66
- package/source/class/qx/test/data/store/RestWithRemote.js +10 -18
- package/source/class/qx/test/html/Element.js +4 -8
- package/source/class/qx/test/html/Iframe.js +48 -60
- package/source/class/qx/test/io/jsonrpc/Client.js +1 -1
- package/source/class/qx/test/io/request/JsonpWithRemote.js +6 -10
- package/source/class/qx/test/io/request/MRequest.js +13 -25
- package/source/class/qx/test/io/request/Xhr.js +5 -9
- package/source/class/qx/test/io/request/XhrWithRemote.js +50 -78
- package/source/class/qx/test/io/rest/Resource.js +3 -7
- package/source/class/qx/test/io/rest/ResourceWithRemote.js +41 -57
- package/source/class/qx/test/mobile/basic/Image.js +16 -24
- package/source/class/qx/test/mobile/container/Navigation.js +3 -7
- package/source/class/qx/test/mobile/container/Scroll.js +8 -12
- package/source/class/qx/test/mobile/page/Page.js +24 -44
- package/source/class/qx/test/performance/Property.js +2 -2
- package/source/class/qx/test/ui/basic/Image.js +32 -52
- package/source/class/qx/test/ui/core/Blocker.js +6 -14
- package/source/class/qx/test/ui/embed/Iframe.js +13 -21
- package/source/class/qx/test/ui/form/FileSelectorButton.js +32 -0
- package/source/class/qx/test/ui/form/FormValidator.js +147 -211
- package/source/class/qx/test/ui/form/Label.js +8 -16
- package/source/class/qx/test/ui/root/Inline.js +9 -13
- package/source/class/qx/test/ui/table/Table.js +6 -14
- package/source/class/qx/test/ui/toolbar/OverflowHandling.js +18 -30
- package/source/class/qx/test/ui/virtual/Pane.js +3 -7
- package/source/class/qx/test/util/DynamicScriptLoader.js +23 -42
- package/source/class/qx/theme/tangible/Appearance.js +22 -3
- package/source/class/qx/tool/cli/Watch.js +3 -7
- package/source/class/qx/tool/cli/api/AbstractApi.js +1 -1
- package/source/class/qx/tool/cli/api/CompilerApi.js +3 -7
- package/source/class/qx/tool/cli/commands/Compile.js +3 -3
- package/source/class/qx/tool/cli/commands/Lint.js +8 -5
- package/source/class/qx/tool/compiler/ClassFile.js +22 -12
- package/source/class/qx/tool/compiler/Es6ify.js +7 -3
- package/source/class/qx/tool/compiler/TargetError.js +3 -4
- package/source/class/qx/tool/compiler/app/Application.js +3 -3
- package/source/class/qx/tool/compiler/app/WebFont.js +8 -6
- package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +1 -1
- package/source/class/qx/tool/compiler/targets/Target.js +2 -1
- package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +1 -1
- package/source/class/qx/tool/compiler/targets/meta/Browserify.js +77 -83
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +11 -3
- package/source/class/qx/tool/utils/Website.js +2 -2
- package/source/class/qx/ui/basic/Label.js +13 -17
- package/source/class/qx/ui/core/MPlacement.js +13 -21
- package/source/class/qx/ui/core/Widget.js +2 -3
- package/source/class/qx/ui/core/scroll/NativeScrollBar.js +3 -7
- package/source/class/qx/ui/core/scroll/ScrollBar.js +3 -7
- package/source/class/qx/ui/embed/Iframe.js +40 -50
- package/source/class/qx/ui/form/AbstractField.js +8 -12
- package/source/class/qx/ui/form/ComboBox.js +7 -15
- package/source/class/qx/ui/form/DateField.js +9 -18
- package/source/class/qx/ui/form/FileSelectorButton.js +157 -0
- package/source/class/qx/ui/form/Spinner.js +7 -15
- package/source/class/qx/ui/form/TextArea.js +3 -7
- package/source/class/qx/ui/form/VirtualComboBox.js +8 -16
- package/source/class/qx/ui/form/VirtualSelectBox.js +21 -37
- package/source/class/qx/ui/layout/Canvas.js +2 -2
- package/source/class/qx/ui/mobile/container/MIScroll.js +3 -7
- package/source/class/qx/ui/progressive/headfoot/Progress.js +22 -34
- package/source/class/qx/ui/progressive/renderer/table/Row.js +1 -1
- package/source/class/qx/ui/splitpane/Pane.js +14 -22
- package/source/class/qx/ui/table/MTableContextMenu.js +63 -71
- package/source/class/qx/ui/table/Table.js +3 -7
- package/source/class/qx/ui/table/model/Abstract.js +5 -2
- package/source/class/qx/ui/table/pane/Scroller.js +8 -12
- package/source/class/qx/ui/toolbar/FileSelectorButton.js +57 -0
- package/source/class/qx/ui/toolbar/Part.js +3 -7
- package/source/class/qx/ui/tree/VirtualTree.js +5 -9
- package/source/class/qx/ui/treevirtual/MNode.js +5 -3
- package/source/class/qx/ui/treevirtual/TreeVirtual.js +3 -7
- package/source/class/qx/ui/virtual/core/Pane.js +30 -42
- package/source/class/qx/util/DynamicScriptLoader.js +31 -43
|
@@ -58,29 +58,21 @@ qx.Class.define("qx.test.util.DynamicScriptLoader", {
|
|
|
58
58
|
|
|
59
59
|
var l1Ready = false;
|
|
60
60
|
var l2Ready = false;
|
|
61
|
-
l1.addListenerOnce(
|
|
62
|
-
|
|
63
|
-
function () {
|
|
64
|
-
l1Ready
|
|
65
|
-
this.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}, this);
|
|
72
|
-
},
|
|
73
|
-
this
|
|
74
|
-
);
|
|
61
|
+
l1.addListenerOnce("ready", () => {
|
|
62
|
+
l1Ready = true;
|
|
63
|
+
this.resume(function () {
|
|
64
|
+
this.assertTrue(l1Ready && l2Ready);
|
|
65
|
+
this.assertEquals(
|
|
66
|
+
qx.test.DYNAMICSCRIPTTEST.second.third,
|
|
67
|
+
"dynamically loaded"
|
|
68
|
+
);
|
|
69
|
+
}, this);
|
|
70
|
+
});
|
|
75
71
|
|
|
76
|
-
l2.addListenerOnce(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.assertTrue(!l1Ready && l2Ready);
|
|
81
|
-
},
|
|
82
|
-
this
|
|
83
|
-
);
|
|
72
|
+
l2.addListenerOnce("ready", () => {
|
|
73
|
+
l2Ready = true;
|
|
74
|
+
this.assertTrue(!l1Ready && l2Ready);
|
|
75
|
+
});
|
|
84
76
|
|
|
85
77
|
l1.start();
|
|
86
78
|
l2.start();
|
|
@@ -100,13 +92,9 @@ qx.Class.define("qx.test.util.DynamicScriptLoader", {
|
|
|
100
92
|
noEvent = false;
|
|
101
93
|
}
|
|
102
94
|
});
|
|
103
|
-
loader.addListenerOnce(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
this.assertTrue(noEvent);
|
|
107
|
-
},
|
|
108
|
-
this
|
|
109
|
-
);
|
|
95
|
+
loader.addListenerOnce("ready", () => {
|
|
96
|
+
this.assertTrue(noEvent);
|
|
97
|
+
});
|
|
110
98
|
|
|
111
99
|
loader.start();
|
|
112
100
|
},
|
|
@@ -115,19 +103,12 @@ qx.Class.define("qx.test.util.DynamicScriptLoader", {
|
|
|
115
103
|
"qx/test/dynamicscriptloader/xyc.js"
|
|
116
104
|
]);
|
|
117
105
|
|
|
118
|
-
loader.addListenerOnce(
|
|
119
|
-
|
|
120
|
-
function (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
data.script,
|
|
125
|
-
"qx/test/dynamicscriptloader/xyc.js"
|
|
126
|
-
);
|
|
127
|
-
}, this);
|
|
128
|
-
},
|
|
129
|
-
this
|
|
130
|
-
);
|
|
106
|
+
loader.addListenerOnce("failed", e => {
|
|
107
|
+
var data = e.getData();
|
|
108
|
+
this.resume(function () {
|
|
109
|
+
this.assertEquals(data.script, "qx/test/dynamicscriptloader/xyc.js");
|
|
110
|
+
}, this);
|
|
111
|
+
});
|
|
131
112
|
|
|
132
113
|
loader.start();
|
|
133
114
|
this.wait();
|
|
@@ -634,7 +634,8 @@ qx.Theme.define("qx.theme.tangible.Appearance", {
|
|
|
634
634
|
style(states) {
|
|
635
635
|
return {
|
|
636
636
|
decorator: undefined,
|
|
637
|
-
padding: [2, 2]
|
|
637
|
+
padding: [2, 2],
|
|
638
|
+
backgroundColor: "surface"
|
|
638
639
|
};
|
|
639
640
|
}
|
|
640
641
|
},
|
|
@@ -644,7 +645,10 @@ qx.Theme.define("qx.theme.tangible.Appearance", {
|
|
|
644
645
|
alias: "selectbox",
|
|
645
646
|
|
|
646
647
|
style(states) {
|
|
647
|
-
return {
|
|
648
|
+
return {
|
|
649
|
+
padding: [0, 2],
|
|
650
|
+
backgroundColor: "surface"
|
|
651
|
+
};
|
|
648
652
|
}
|
|
649
653
|
},
|
|
650
654
|
|
|
@@ -653,7 +657,10 @@ qx.Theme.define("qx.theme.tangible.Appearance", {
|
|
|
653
657
|
alias: "combobox",
|
|
654
658
|
|
|
655
659
|
style(states) {
|
|
656
|
-
return {
|
|
660
|
+
return {
|
|
661
|
+
decorator: undefined,
|
|
662
|
+
backgroundColor: "surface"
|
|
663
|
+
};
|
|
657
664
|
}
|
|
658
665
|
},
|
|
659
666
|
|
|
@@ -999,6 +1006,18 @@ qx.Theme.define("qx.theme.tangible.Appearance", {
|
|
|
999
1006
|
};
|
|
1000
1007
|
}
|
|
1001
1008
|
},
|
|
1009
|
+
"menubar-button/icon": {
|
|
1010
|
+
style(states) {
|
|
1011
|
+
return {
|
|
1012
|
+
textColor: states.disabled
|
|
1013
|
+
? "text-disabled-on-surface"
|
|
1014
|
+
: ( states.pressed || states.hovered )
|
|
1015
|
+
? "text-on-primary"
|
|
1016
|
+
: "text-on-surface"
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
},
|
|
1020
|
+
|
|
1002
1021
|
|
|
1003
1022
|
/*
|
|
1004
1023
|
---------------------------------------------------------------------------
|
|
@@ -140,13 +140,9 @@ qx.Class.define("qx.tool.cli.Watch", {
|
|
|
140
140
|
|
|
141
141
|
var dirs = [];
|
|
142
142
|
var analyser = this.__maker.getAnalyser();
|
|
143
|
-
analyser.addListener(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this.__stats.classesCompiled++;
|
|
147
|
-
},
|
|
148
|
-
this
|
|
149
|
-
);
|
|
143
|
+
analyser.addListener("compiledClass", () => {
|
|
144
|
+
this.__stats.classesCompiled++;
|
|
145
|
+
});
|
|
150
146
|
|
|
151
147
|
dirs.push(qx.tool.config.Compile.config.fileName);
|
|
152
148
|
dirs.push("compile.js");
|
|
@@ -88,7 +88,7 @@ qx.Class.define("qx.tool.cli.api.AbstractApi", {
|
|
|
88
88
|
const { execSync } = require("child_process");
|
|
89
89
|
// since npm 7 --no-save deletes the node_modules folder
|
|
90
90
|
// see https://github.com/npm/cli/pull/3907
|
|
91
|
-
// let s = `npm install --no-save --no-package-lock ${module}`;
|
|
91
|
+
// let s = `npm install --no-save --no-package-lock ${module}`;
|
|
92
92
|
let s = `npm install --no-package-lock ${module}`;
|
|
93
93
|
qx.tool.compiler.Console.info(s);
|
|
94
94
|
execSync(s, {
|
|
@@ -33,13 +33,9 @@ qx.Class.define("qx.tool.cli.api.CompilerApi", {
|
|
|
33
33
|
construct() {
|
|
34
34
|
super();
|
|
35
35
|
this.__libraryApis = {};
|
|
36
|
-
this.addListener(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.afterCommandLoaded(this.getCommand());
|
|
40
|
-
},
|
|
41
|
-
this
|
|
42
|
-
);
|
|
36
|
+
this.addListener("changeCommand", () => {
|
|
37
|
+
this.afterCommandLoaded(this.getCommand());
|
|
38
|
+
});
|
|
43
39
|
},
|
|
44
40
|
|
|
45
41
|
properties: {
|
|
@@ -359,10 +359,10 @@ qx.Class.define("qx.tool.cli.commands.Compile", {
|
|
|
359
359
|
this.argv["feedback"] = configDb.db("qx.default.feedback", true);
|
|
360
360
|
}
|
|
361
361
|
|
|
362
|
-
|
|
363
|
-
|
|
362
|
+
// Validate compile.json against the schema
|
|
363
|
+
await qx.tool.config.Compile.getInstance().load();
|
|
364
364
|
|
|
365
|
-
|
|
365
|
+
if (this.argv.verbose) {
|
|
366
366
|
console.log(`
|
|
367
367
|
Compiler: v${this.getCompilerVersion()} in ${require.main.filename}
|
|
368
368
|
Framework: v${await this.getQxVersion()} in ${await this.getQxPath()}`);
|
|
@@ -95,7 +95,6 @@ qx.Class.define("qx.tool.cli.commands.Lint", {
|
|
|
95
95
|
|
|
96
96
|
members: {
|
|
97
97
|
async process() {
|
|
98
|
-
|
|
99
98
|
let files = this.argv.files || [];
|
|
100
99
|
if (files.length === 0) {
|
|
101
100
|
files.push("source/class/**/*.js");
|
|
@@ -121,14 +120,14 @@ qx.Class.define("qx.tool.cli.commands.Lint", {
|
|
|
121
120
|
lintOptions.globals || {},
|
|
122
121
|
await this.__addGlobals(config)
|
|
123
122
|
);
|
|
123
|
+
|
|
124
124
|
lintOptions.parser = "@babel/eslint-parser";
|
|
125
125
|
lintOptions.parserOptions = lintOptions.parserOptions || {};
|
|
126
126
|
lintOptions.parserOptions.requireConfigFile = false;
|
|
127
127
|
lintOptions.parserOptions.babelOptions = {
|
|
128
128
|
cwd: helperFilePath,
|
|
129
|
-
plugins: [
|
|
130
|
-
|
|
131
|
-
],
|
|
129
|
+
plugins: ["@babel/plugin-syntax-jsx"],
|
|
130
|
+
|
|
132
131
|
parserOpts: {
|
|
133
132
|
allowSuperOutsideMethod: true
|
|
134
133
|
}
|
|
@@ -164,11 +163,15 @@ qx.Class.define("qx.tool.cli.commands.Lint", {
|
|
|
164
163
|
// If there are too many errors, the pretty formatter is appallingly slow so if the
|
|
165
164
|
// user has not specified a format, change to compact mode
|
|
166
165
|
const maxDefaultFormatErrorCount = 150;
|
|
167
|
-
if (
|
|
166
|
+
if (
|
|
167
|
+
report.errorCount + report.warningCount >
|
|
168
|
+
maxDefaultFormatErrorCount
|
|
169
|
+
) {
|
|
168
170
|
if (!this.argv.format) {
|
|
169
171
|
qx.tool.compiler.Console.info(
|
|
170
172
|
`Total errors and warnings exceed ${maxDefaultFormatErrorCount}, switching to "compact" style report`
|
|
171
173
|
);
|
|
174
|
+
|
|
172
175
|
outputFormat = "compact";
|
|
173
176
|
} else {
|
|
174
177
|
qx.tool.compiler.Console.info(
|
|
@@ -392,6 +392,7 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
392
392
|
qx.tool.compiler.ClassFile.JSX_OPTIONS
|
|
393
393
|
]
|
|
394
394
|
],
|
|
395
|
+
|
|
395
396
|
generatorOpts: {
|
|
396
397
|
compact: false
|
|
397
398
|
},
|
|
@@ -674,7 +675,9 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
674
675
|
if (Object.keys(this.__commonjsModules).length > 0) {
|
|
675
676
|
dbClassInfo.commonjsModules = {};
|
|
676
677
|
for (let moduleName in this.__commonjsModules) {
|
|
677
|
-
dbClassInfo.commonjsModules[moduleName] = [
|
|
678
|
+
dbClassInfo.commonjsModules[moduleName] = [
|
|
679
|
+
...this.__commonjsModules[moduleName]
|
|
680
|
+
];
|
|
678
681
|
}
|
|
679
682
|
}
|
|
680
683
|
|
|
@@ -1667,11 +1670,12 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
1667
1670
|
let scope;
|
|
1668
1671
|
let applicationTypes = t.__analyser.getApplicationTypes();
|
|
1669
1672
|
|
|
1670
|
-
if (
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1673
|
+
if (
|
|
1674
|
+
path.node.callee.type == "Identifier" &&
|
|
1675
|
+
path.node?.callee?.name == "require" &&
|
|
1676
|
+
path.node.arguments?.length == 1 &&
|
|
1677
|
+
applicationTypes.includes("browser")
|
|
1678
|
+
) {
|
|
1675
1679
|
// See if this is a reference to global `require` or
|
|
1676
1680
|
// something in the scope chain
|
|
1677
1681
|
for (scope = t.__scope; scope; scope = scope.parent) {
|
|
@@ -1681,7 +1685,7 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
1681
1685
|
}
|
|
1682
1686
|
}
|
|
1683
1687
|
// Did we reach top level without finding it in a local scope?
|
|
1684
|
-
if (!
|
|
1688
|
+
if (!scope) {
|
|
1685
1689
|
// Yup. It's the global one we're looking for. Ensure the argument is valid.
|
|
1686
1690
|
let arg = path.node.arguments[0];
|
|
1687
1691
|
if (types.isLiteral(arg)) {
|
|
@@ -1694,8 +1698,13 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
1694
1698
|
} else {
|
|
1695
1699
|
qx.tool.compiler.Console.log(
|
|
1696
1700
|
`${t.__className}:${path.node.loc.start.line}:` +
|
|
1697
|
-
` automatically detected \'require(${arg.value})\``
|
|
1698
|
-
|
|
1701
|
+
` automatically detected \'require(${arg.value})\``
|
|
1702
|
+
);
|
|
1703
|
+
t.addCommonjsModule(
|
|
1704
|
+
arg.value,
|
|
1705
|
+
t.__className,
|
|
1706
|
+
path.node.loc.start.line
|
|
1707
|
+
);
|
|
1699
1708
|
|
|
1700
1709
|
// Don't show "unresolved" error for `require` since the
|
|
1701
1710
|
// browserified code defines it as a global
|
|
@@ -1885,6 +1894,7 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
1885
1894
|
types.stringLiteral(t.__classMeta.functionName)
|
|
1886
1895
|
]
|
|
1887
1896
|
);
|
|
1897
|
+
|
|
1888
1898
|
expr = types.memberExpression(expr, types.identifier("call"));
|
|
1889
1899
|
} else if (t.__classMeta.functionName == "$$constructor") {
|
|
1890
1900
|
expr = expandMemberExpression(
|
|
@@ -1893,8 +1903,8 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
1893
1903
|
} else if (t.__classMeta.className) {
|
|
1894
1904
|
expr = expandMemberExpression(
|
|
1895
1905
|
t.__classMeta.className +
|
|
1896
|
-
|
|
1897
|
-
|
|
1906
|
+
".superclass" +
|
|
1907
|
+
".prototype." +
|
|
1898
1908
|
t.__classMeta.functionName +
|
|
1899
1909
|
".call"
|
|
1900
1910
|
);
|
|
@@ -2569,7 +2579,7 @@ qx.Class.define("qx.tool.compiler.ClassFile", {
|
|
|
2569
2579
|
* @param name {String} name of the module
|
|
2570
2580
|
*/
|
|
2571
2581
|
addCommonjsModule(moduleName, className, linenum) {
|
|
2572
|
-
if (!
|
|
2582
|
+
if (!this.__commonjsModules[moduleName]) {
|
|
2573
2583
|
this.__commonjsModules[moduleName] = new Set();
|
|
2574
2584
|
}
|
|
2575
2585
|
|
|
@@ -106,7 +106,7 @@ qx.Class.define("qx.tool.compiler.Es6ify", {
|
|
|
106
106
|
construct(filename) {
|
|
107
107
|
super();
|
|
108
108
|
this.__filename = filename;
|
|
109
|
-
this.__knownApiFunctions = ["addListener","addListenerOnce"];
|
|
109
|
+
this.__knownApiFunctions = ["addListener", "addListenerOnce"];
|
|
110
110
|
},
|
|
111
111
|
|
|
112
112
|
properties: {
|
|
@@ -176,7 +176,9 @@ qx.Class.define("qx.tool.compiler.Es6ify", {
|
|
|
176
176
|
while (true) {
|
|
177
177
|
cycleCount++;
|
|
178
178
|
if (cycleCount > 10) {
|
|
179
|
-
qx.tool.compiler.Console.warn(
|
|
179
|
+
qx.tool.compiler.Console.warn(
|
|
180
|
+
`Can not find a stable format for ${this.__filename}`
|
|
181
|
+
);
|
|
180
182
|
break;
|
|
181
183
|
}
|
|
182
184
|
result = babelCore.transform(src, config);
|
|
@@ -285,7 +287,9 @@ qx.Class.define("qx.tool.compiler.Es6ify", {
|
|
|
285
287
|
if (path.node.callee.type == "MemberExpression") {
|
|
286
288
|
let callee = collapseMemberExpression(path.node.callee);
|
|
287
289
|
if (arrowFunctions == "careful") {
|
|
288
|
-
if (
|
|
290
|
+
if (
|
|
291
|
+
!knownApiFunctions.some(fName => callee.endsWith("." + fName))
|
|
292
|
+
) {
|
|
289
293
|
return;
|
|
290
294
|
}
|
|
291
295
|
if (
|
|
@@ -20,8 +20,7 @@
|
|
|
20
20
|
*
|
|
21
21
|
* ************************************************************************/
|
|
22
22
|
|
|
23
|
-
qx.Class.define("qx.tool.compiler.TargetError",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
extend : Error
|
|
23
|
+
qx.Class.define("qx.tool.compiler.TargetError", {
|
|
24
|
+
// extend : qx.type.BaseError
|
|
25
|
+
extend: Error
|
|
27
26
|
});
|
|
@@ -228,9 +228,9 @@ qx.Class.define("qx.tool.compiler.app.Application", {
|
|
|
228
228
|
* relative to the directory containing compile.json. The module may be
|
|
229
229
|
* either a CommonJS module or an ES6 module.
|
|
230
230
|
*/
|
|
231
|
-
localModules
|
|
232
|
-
init
|
|
233
|
-
check
|
|
231
|
+
localModules: {
|
|
232
|
+
init: null,
|
|
233
|
+
check: "Object"
|
|
234
234
|
}
|
|
235
235
|
},
|
|
236
236
|
|
|
@@ -255,12 +255,14 @@ qx.Class.define("qx.tool.compiler.app.WebFont", {
|
|
|
255
255
|
lookupListIndexes.forEach(index => {
|
|
256
256
|
let subTable = lookupList[index].subTables[0];
|
|
257
257
|
let leadingCharacters = [];
|
|
258
|
-
subTable.coverage.rangeRecords
|
|
259
|
-
|
|
260
|
-
let
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
258
|
+
if (subTable.coverage.rangeRecords) {
|
|
259
|
+
subTable.coverage.rangeRecords.forEach(coverage => {
|
|
260
|
+
for (let i = coverage.start; i <= coverage.end; i++) {
|
|
261
|
+
let character = font.stringsForGlyph(i)[0];
|
|
262
|
+
leadingCharacters.push(character);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
264
266
|
let ligatureSets = subTable.ligatureSets.toArray();
|
|
265
267
|
ligatureSets.forEach((ligatureSet, ligatureSetIndex) => {
|
|
266
268
|
let leadingCharacter = leadingCharacters[ligatureSetIndex];
|
|
@@ -24,7 +24,7 @@ const fs = qx.tool.utils.Promisify.fs;
|
|
|
24
24
|
const path = require("upath");
|
|
25
25
|
|
|
26
26
|
const crypto = require("crypto");
|
|
27
|
-
const sourceMap = require("source-map");
|
|
27
|
+
const sourceMap = require("source-map-js");
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Copies multiple javascript source files into a single destination, preserving (merging)
|
|
@@ -437,7 +437,8 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
437
437
|
// application in compile.json, but will not bundle `require()`d
|
|
438
438
|
// modules that are Node modules.
|
|
439
439
|
bootPackage.addJavascriptMeta(
|
|
440
|
-
new qx.tool.compiler.targets.meta.Browserify(appMeta)
|
|
440
|
+
new qx.tool.compiler.targets.meta.Browserify(appMeta)
|
|
441
|
+
);
|
|
441
442
|
|
|
442
443
|
/*
|
|
443
444
|
* Assemble the Parts
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
const fs = qx.tool.utils.Promisify.fs;
|
|
24
24
|
const path = require("upath");
|
|
25
|
-
const sourceMap = require("source-map");
|
|
25
|
+
const sourceMap = require("source-map-js");
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* An AbstractJavascriptMeta provides an abstraction of some source code, and might be
|
|
@@ -36,7 +36,7 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
|
|
|
36
36
|
},
|
|
37
37
|
|
|
38
38
|
members: {
|
|
39
|
-
__appMeta
|
|
39
|
+
__appMeta: null,
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* @Override
|
|
@@ -46,39 +46,40 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
|
|
|
46
46
|
let commonjsModules = new Set();
|
|
47
47
|
let references = {};
|
|
48
48
|
const localModules =
|
|
49
|
-
|
|
49
|
+
this.__appMeta.getApplication().getLocalModules() || {};
|
|
50
50
|
const db = this.__appMeta.getAnalyser().getDatabase();
|
|
51
51
|
|
|
52
52
|
// Only include discovered `require()`d Node modules if the
|
|
53
53
|
// target application type is browser.
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
if (
|
|
55
|
+
this.__appMeta.getEnvironmentValue("qx.compiler.applicationType") ==
|
|
56
|
+
"browser"
|
|
57
|
+
) {
|
|
57
58
|
// Get a Set of unique `require`d CommonJS module names from
|
|
58
59
|
// all classes
|
|
59
60
|
for (let className in db.classInfo) {
|
|
60
61
|
let classInfo = db.classInfo[className];
|
|
61
62
|
if (classInfo.commonjsModules) {
|
|
62
|
-
Object.keys(classInfo.commonjsModules).forEach(
|
|
63
|
-
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
63
|
+
Object.keys(classInfo.commonjsModules).forEach(moduleName => {
|
|
64
|
+
// Ignore this found `require()` if its a local modules
|
|
65
|
+
if (moduleName in localModules) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Add this module name to the set of module names
|
|
70
|
+
commonjsModules.add(moduleName);
|
|
71
|
+
|
|
72
|
+
// Add the list of references from which this module was require()d
|
|
73
|
+
if (!references[moduleName]) {
|
|
74
|
+
references[moduleName] = new Set();
|
|
75
|
+
}
|
|
76
|
+
references[moduleName].add([
|
|
77
|
+
...classInfo.commonjsModules[moduleName]
|
|
78
|
+
]);
|
|
79
|
+
|
|
80
|
+
// There is at least one module
|
|
81
|
+
hasCommonjsModules = true;
|
|
82
|
+
});
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -87,12 +88,7 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
|
|
|
87
88
|
// any local modules specified for the application in
|
|
88
89
|
// compile.json, browserify them
|
|
89
90
|
if (hasCommonjsModules || localModules) {
|
|
90
|
-
await this.__browserify(
|
|
91
|
-
commonjsModules,
|
|
92
|
-
references,
|
|
93
|
-
localModules,
|
|
94
|
-
ws
|
|
95
|
-
);
|
|
91
|
+
await this.__browserify(commonjsModules, references, localModules, ws);
|
|
96
92
|
}
|
|
97
93
|
|
|
98
94
|
await new Promise(resolve => {
|
|
@@ -113,66 +109,64 @@ qx.Class.define("qx.tool.compiler.targets.meta.Browserify", {
|
|
|
113
109
|
// Convert the Set of CommonJS module names to an array
|
|
114
110
|
commonjsModules = [...commonjsModules];
|
|
115
111
|
|
|
116
|
-
return new Promise(resolve =>
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
refs.forEach(ref =>
|
|
135
|
-
{
|
|
136
|
-
message.push(` ${ref}`);
|
|
137
|
-
});
|
|
112
|
+
return new Promise(resolve => {
|
|
113
|
+
let b = browserify([], {
|
|
114
|
+
builtins: builtins,
|
|
115
|
+
ignoreMissing: true,
|
|
116
|
+
insertGlobals: true,
|
|
117
|
+
detectGlobals: true
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
b._mdeps.on("missing", (id, parent) => {
|
|
121
|
+
let message = [];
|
|
122
|
+
|
|
123
|
+
message.push(`ERROR: could not locate require()d module: "${id}"`);
|
|
124
|
+
message.push(" required from:");
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
[...references[id]].forEach(refs => {
|
|
128
|
+
refs.forEach(ref => {
|
|
129
|
+
message.push(` ${ref}`);
|
|
138
130
|
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
131
|
+
});
|
|
132
|
+
} catch (e) {
|
|
133
|
+
message.push(` <compile.json:application.localModules'>`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
qx.tool.compiler.Console.error(message.join("\n"));
|
|
137
|
+
});
|
|
142
138
|
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
// Include any dynamically determined `require()`d modules
|
|
140
|
+
if (commonjsModules.length > 0) {
|
|
141
|
+
b.require(commonjsModules);
|
|
142
|
+
}
|
|
145
143
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
// Include any local modules specified for the application
|
|
145
|
+
// in compile.json
|
|
146
|
+
if (localModules) {
|
|
147
|
+
for (let requireName in localModules) {
|
|
148
|
+
b.require(localModules[requireName], { expose: requireName });
|
|
149
149
|
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Ensure ES6 local modules are converted to CommonJS format
|
|
153
|
+
b.transform(babelify, {
|
|
154
|
+
presets: [preset],
|
|
155
|
+
sourceMaps: false,
|
|
156
|
+
global: true
|
|
157
|
+
});
|
|
150
158
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
159
|
+
b.bundle((e, output) => {
|
|
160
|
+
if (e) {
|
|
161
|
+
// We've already handled the case of missing module. This is something else.
|
|
162
|
+
qx.tool.compiler.Console.error(`Failed: ${e}`);
|
|
163
|
+
throw e;
|
|
157
164
|
}
|
|
158
165
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
presets: [preset],
|
|
162
|
-
sourceMaps: false,
|
|
163
|
-
global: true
|
|
164
|
-
});
|
|
165
|
-
b.bundle((e, output) => {
|
|
166
|
-
if (e) {
|
|
167
|
-
// We've already handled the case of missing module. This is something else.
|
|
168
|
-
qx.tool.compiler.Console.error(`Failed: ${e}`);
|
|
169
|
-
throw(e);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
ws.write(output);
|
|
173
|
-
resolve(null);
|
|
174
|
-
});
|
|
166
|
+
ws.write(output);
|
|
167
|
+
resolve(null);
|
|
175
168
|
});
|
|
169
|
+
});
|
|
176
170
|
},
|
|
177
171
|
|
|
178
172
|
/**
|