@qooxdoo/framework 7.0.0-beta → 7.0.0-beta.4
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/CHANGELOG.md +9 -0
- package/Manifest.json +11 -8
- package/bin/deploy/qx +0 -0
- package/lib/compiler/compile-info.json +86 -96
- package/lib/compiler/index.js +35547 -47284
- package/{source/class/qx/tool/compiler/targets → lib/resource/qx/tool/cli/templates}/TypeScriptWriter-base_declaration.txt +0 -0
- package/lib/resource/qx/tool/cli/templates/loader/loader-browser.tmpl.js +8 -2
- package/lib/resource/qx/tool/cli/templates/loader/loader-node.tmpl.js +24 -11
- package/lib/resource/qx/tool/cli/templates/loader/loader-rhino.tmpl.js +9 -2
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css +1 -1
- package/lib/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/css/custom.css.map +1 -44
- package/lib/resource/qx/tool/cli/templates/template_vars.js +1 -1
- package/lib/resource/qx/tool/loadsass.js +13 -0
- package/lib/resource/qx/tool/schema/Manifest-1-0-0.json +1 -2
- package/lib/resource/qx/tool/schema/Manifest-2-0-0.json +1 -2
- package/lib/resource/qx/tool/schema/compile-1-0-0.json +19 -9
- package/lib/resource/qx/tool/website/sass/qooxdoo.css +1 -1
- package/lib/resource/qx/tool/website/sass/qooxdoo.css.map +1 -9
- package/package.json +14 -14
- package/source/class/qx/Annotation.js +2 -2
- package/source/class/qx/Class.js +20 -4
- package/source/class/qx/Interface.js +6 -0
- package/source/class/qx/Promise.js +32 -2
- package/source/class/qx/bom/Element.js +1 -0
- package/source/class/qx/bom/Font.js +17 -2
- package/source/class/qx/bom/Iframe.js +10 -5
- package/source/class/qx/bom/Label.js +2 -1
- package/source/class/qx/bom/Template.js +2 -0
- package/source/class/qx/bom/client/Browser.js +11 -2
- package/source/class/qx/bom/client/OperatingSystem.js +16 -0
- package/source/class/qx/bom/element/Decoration.js +8 -5
- package/source/class/qx/bom/element/Dimension.js +46 -0
- package/source/class/qx/bom/webfonts/WebFont.js +10 -0
- package/source/class/qx/core/BaseInit.js +9 -3
- package/source/class/qx/core/Environment.js +1 -0
- package/source/class/qx/core/Property.js +2 -2
- package/source/class/qx/data/SingleValueBinding.js +6 -3
- package/source/class/qx/data/controller/CheckedList.js +18 -9
- package/source/class/qx/data/controller/List.js +8 -0
- package/source/class/qx/dev/unit/Sinon.js +1 -1
- package/source/class/qx/event/Utils.js +1 -1
- package/source/class/qx/event/handler/DragDrop.js +1 -1
- package/source/class/qx/event/handler/Gesture.js +3 -1
- package/source/class/qx/event/handler/Mouse.js +61 -22
- package/source/class/qx/event/handler/Video.js +111 -0
- package/source/class/qx/html/Element.js +47 -32
- package/source/class/qx/html/Image.js +2 -2
- package/source/class/qx/html/Node.js +34 -4
- package/source/class/qx/lang/Json.js +1 -0
- package/source/class/qx/lang/String.js +53 -1
- package/source/class/qx/test/Annotation.js +2 -1
- package/source/class/qx/test/Promise.js +5 -3
- package/source/class/qx/test/bom/Font.js +10 -1
- package/source/class/qx/test/core/Property.js +5 -3
- package/source/class/qx/test/html/Element.js +3 -3
- package/source/class/qx/test/lang/String.js +28 -0
- package/source/class/qx/test/type/BaseString.js +7 -0
- package/source/class/qx/test/ui/embed/Iframe.js +1 -0
- package/source/class/qx/test/ui/form/ComboBox.js +0 -42
- package/source/class/qx/test/ui/virtual/performance/AbstractLayerTest.js +6 -2
- package/source/class/qx/theme/manager/Decoration.js +0 -0
- package/source/class/qx/theme/manager/Font.js +11 -0
- package/source/class/qx/theme/tangible/Appearance.js +10 -0
- package/source/class/qx/theme/tangible/ColorDark.js +0 -0
- package/source/class/qx/theme/tangible/Decoration.js +6 -0
- package/source/class/qx/tool/cli/Cli.js +5 -3
- package/source/class/qx/tool/cli/Watch.js +52 -0
- package/source/class/qx/tool/cli/api/AbstractApi.js +1 -1
- package/source/class/qx/tool/cli/api/CompilerApi.js +16 -6
- package/source/class/qx/tool/cli/api/LibraryApi.js +1 -1
- package/source/class/qx/tool/cli/commands/Command.js +7 -0
- package/source/class/qx/tool/cli/commands/Compile.js +28 -9
- package/source/class/qx/tool/cli/commands/Lint.js +30 -11
- package/source/class/qx/tool/cli/commands/Package.js +1 -2
- package/source/class/qx/tool/cli/commands/Run.js +2 -25
- package/source/class/qx/tool/cli/commands/Serve.js +9 -0
- package/source/class/qx/tool/cli/commands/package/Publish.js +19 -10
- package/source/class/qx/tool/compiler/Analyser.js +22 -23
- package/source/class/qx/tool/compiler/ClassFile.js +3 -2
- package/source/class/qx/tool/compiler/Console.js +17 -1
- package/source/class/qx/tool/compiler/Preprocess.js +1 -1
- package/source/class/qx/tool/compiler/app/Application.js +4 -2
- package/source/class/qx/tool/compiler/app/Cldr.js +1 -1
- package/source/class/qx/tool/compiler/app/Library.js +82 -88
- package/source/class/qx/tool/compiler/app/Part.js +1 -1
- package/source/class/qx/tool/compiler/app/Translation.js +1 -1
- package/source/class/qx/tool/compiler/app/WebFont.js +5 -4
- package/source/class/qx/tool/compiler/jsdoc/ChildControlParser.js +1 -1
- package/source/class/qx/tool/compiler/jsdoc/CommandParser.js +1 -1
- package/source/class/qx/tool/compiler/jsdoc/ParamParser.js +1 -1
- package/source/class/qx/tool/compiler/jsdoc/Parser.js +1 -1
- package/source/class/qx/tool/compiler/jsdoc/ReturnParser.js +1 -1
- package/source/class/qx/tool/compiler/jsdoc/ThrowsParser.js +1 -1
- package/source/class/qx/tool/compiler/makers/AbstractAppMaker.js +1 -1
- package/source/class/qx/tool/compiler/makers/AppMaker.js +14 -14
- package/source/class/qx/tool/compiler/makers/Maker.js +1 -1
- package/source/class/qx/tool/compiler/resources/AbstractMatcher.js +1 -1
- package/source/class/qx/tool/compiler/resources/Asset.js +2 -2
- package/source/class/qx/tool/compiler/resources/ImageLoader.js +3 -2
- package/source/class/qx/tool/compiler/resources/Manager.js +5 -5
- package/source/class/qx/tool/compiler/resources/MetaLoader.js +1 -1
- package/source/class/qx/tool/compiler/resources/ResourceConverter.js +1 -1
- package/source/class/qx/tool/compiler/resources/ResourceLoader.js +1 -1
- package/source/class/qx/tool/compiler/resources/ScssConverter.js +9 -3
- package/source/class/qx/tool/compiler/resources/ScssFile.js +13 -12
- package/source/class/qx/tool/compiler/resources/ScssIncludeConverter.js +1 -1
- package/source/class/qx/tool/compiler/targets/BuildTarget.js +1 -1
- package/source/class/qx/tool/compiler/targets/SourceCodeCopier.js +1 -1
- package/source/class/qx/tool/compiler/targets/SourceTarget.js +1 -1
- package/source/class/qx/tool/compiler/targets/Target.js +70 -32
- package/source/class/qx/tool/compiler/targets/TypeScriptWriter.js +3 -4
- package/source/class/qx/tool/compiler/targets/meta/AbstractJavascriptMeta.js +22 -0
- package/source/class/qx/tool/compiler/targets/meta/ApplicationMeta.js +30 -0
- package/source/class/qx/tool/compiler/targets/meta/BootJs.js +22 -0
- package/source/class/qx/tool/compiler/targets/meta/Javascript.js +22 -0
- package/source/class/qx/tool/compiler/targets/meta/Package.js +37 -2
- package/source/class/qx/tool/compiler/targets/meta/PackageJavascript.js +22 -0
- package/source/class/qx/tool/compiler/targets/meta/Part.js +22 -0
- package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +29 -7
- package/source/class/qx/tool/compiler/targets/meta/Uglify.js +23 -1
- package/source/class/qx/tool/config/Abstract.js +3 -3
- package/source/class/qx/tool/config/Utils.js +10 -1
- package/source/class/qx/tool/utils/IndexedArray.js +1 -1
- package/source/class/qx/tool/utils/Json.js +2 -2
- package/source/class/qx/tool/utils/LogManager.js +1 -1
- package/source/class/qx/tool/utils/Logger.js +1 -1
- package/source/class/qx/tool/utils/Promisify.js +1 -1
- package/source/class/qx/tool/utils/Utils.js +118 -1
- package/source/class/qx/tool/utils/Values.js +1 -1
- package/source/class/qx/tool/utils/Website.js +23 -18
- package/source/class/qx/tool/utils/files/FindFiles.js +1 -1
- package/source/class/qx/tool/utils/files/Utils.js +1 -1
- package/source/class/qx/tool/utils/json/Parser.js +1 -1
- package/source/class/qx/tool/utils/json/Stringify.js +1 -1
- package/source/class/qx/tool/utils/json/Tokenizer.js +1 -1
- package/source/class/qx/tool/utils/json/Writer.js +1 -1
- package/source/class/qx/type/BaseString.js +2 -1
- package/source/class/qx/ui/basic/Image.js +15 -7
- package/source/class/qx/ui/basic/Label.js +3 -1
- package/source/class/qx/ui/container/SlideBar.js +3 -0
- package/source/class/qx/ui/control/DateChooser.js +20 -1
- package/source/class/qx/ui/core/scroll/NativeScrollBar.js +3 -0
- package/source/class/qx/ui/core/scroll/ScrollBar.js +3 -0
- package/source/class/qx/ui/form/AbstractSelectBox.js +38 -6
- package/source/class/qx/ui/form/Button.js +3 -0
- package/source/class/qx/ui/form/CheckBox.js +25 -1
- package/source/class/qx/ui/form/CheckedList.js +2 -1
- package/source/class/qx/ui/form/ComboBox.js +36 -27
- package/source/class/qx/ui/form/List.js +3 -0
- package/source/class/qx/ui/form/MenuButton.js +24 -2
- package/source/class/qx/ui/form/RadioButton.js +7 -0
- package/source/class/qx/ui/form/RadioButtonGroup.js +3 -0
- package/source/class/qx/ui/form/RadioGroup.js +19 -0
- package/source/class/qx/ui/form/SelectBox.js +23 -1
- package/source/class/qx/ui/form/Slider.js +15 -0
- package/source/class/qx/ui/form/SplitButton.js +3 -0
- package/source/class/qx/ui/form/ToggleButton.js +8 -0
- package/source/class/qx/ui/menu/AbstractButton.js +24 -0
- package/source/class/qx/ui/menu/Button.js +3 -0
- package/source/class/qx/ui/menu/CheckBox.js +8 -0
- package/source/class/qx/ui/menu/Manager.js +2 -0
- package/source/class/qx/ui/menu/Menu.js +63 -1
- package/source/class/qx/ui/menu/RadioButton.js +10 -1
- package/source/class/qx/ui/menubar/Button.js +0 -27
- package/source/class/qx/ui/menubar/MenuBar.js +12 -0
- package/source/class/qx/ui/splitpane/Blocker.js +3 -0
- package/source/class/qx/ui/splitpane/HLayout.js +2 -2
- package/source/class/qx/ui/splitpane/Pane.js +4 -1
- package/source/class/qx/ui/splitpane/VLayout.js +2 -2
- package/source/class/qx/ui/table/Table.js +24 -2
- package/source/class/qx/ui/table/cellrenderer/Abstract.js +3 -1
- package/source/class/qx/ui/table/cellrenderer/AbstractImage.js +7 -3
- package/source/class/qx/ui/table/headerrenderer/HeaderCell.js +3 -0
- package/source/class/qx/ui/table/pane/Header.js +3 -0
- package/source/class/qx/ui/table/pane/Scroller.js +3 -7
- package/source/class/qx/ui/table/rowrenderer/Default.js +1 -1
- package/source/class/qx/ui/tabview/Page.js +26 -0
- package/source/class/qx/ui/tabview/TabView.js +3 -0
- package/source/class/qx/ui/toolbar/Button.js +2 -27
- package/source/class/qx/ui/toolbar/CheckBox.js +0 -27
- package/source/class/qx/ui/toolbar/RadioButton.js +21 -0
- package/source/class/qx/ui/toolbar/SplitButton.js +0 -28
- package/source/class/qx/ui/toolbar/ToolBar.js +3 -0
- package/source/class/qx/util/ColorUtil.js +2 -1
- package/source/class/qx/util/ResourceManager.js +16 -7
- package/source/class/qx/util/format/DateFormat.js +9 -0
- package/source/class/qxWeb.js +8 -4
- package/source/resource/qx/decoration/Indigo/font/JosefinSlab-SemiBold.ttf +0 -0
- package/source/resource/qx/decoration/Indigo/font/SIL Open Font License 1.1.txt +0 -0
- package/source/resource/qx/iconfont/MaterialIcons/fetch-fonts.sh +0 -0
- package/source/resource/qx/mobile/scss/common/_gradients.scss +3 -1
- package/source/resource/qx/mobile/scss/theme/indigo/_styles.scss +1 -1
- package/source/resource/qx/mobile/scss/ui/_carousel.scss +2 -2
- package/source/resource/qx/mobile/scss/ui/_checkbox.scss +3 -3
- package/source/resource/qx/mobile/scss/ui/_collapsible.scss +2 -2
- package/source/resource/qx/mobile/scss/ui/_picker.scss +4 -4
- package/source/resource/qx/mobile/scss/ui/_radiobutton.scss +4 -4
- package/source/resource/qx/mobile/scss/ui/_slider.scss +7 -7
- package/source/resource/qx/scss/_gradients.scss +3 -1
- package/source/resource/qx/scss/_mixins.scss +4 -2
- package/source/resource/qx/tool/bin/build-devtools +0 -0
- package/source/resource/qx/tool/bin/build-website +0 -0
- package/source/resource/qx/tool/bin/download-assets +0 -0
- package/source/resource/qx/tool/cli/templates/TypeScriptWriter-base_declaration.txt +13 -0
- package/source/resource/qx/tool/cli/templates/loader/loader-browser.tmpl.js +8 -2
- package/source/resource/qx/tool/cli/templates/loader/loader-node.tmpl.js +24 -11
- package/source/resource/qx/tool/cli/templates/loader/loader-rhino.tmpl.js +9 -2
- package/source/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/scss/_styles.scss +1 -1
- package/source/resource/qx/tool/cli/templates/template_vars.js +1 -1
- package/source/resource/qx/tool/loadsass.js +13 -0
- package/source/resource/qx/tool/schema/Manifest-1-0-0.json +1 -2
- package/source/resource/qx/tool/schema/Manifest-2-0-0.json +1 -2
- package/source/resource/qx/tool/schema/compile-1-0-0.json +19 -9
- package/source/resource/qx/website/scss/ui/_carousel.scss +2 -2
- package/lib/resource/qx/tool/website/.gitignore +0 -2
- package/source/class/qx/io/request/auth/.gitignore +0 -0
- package/source/class/qx/test/bom/client/.gitignore +0 -0
- package/source/class/qx/test/ui/control/.gitignore +0 -0
- package/source/class/qx/tool/compiler/Version.js +0 -20
- package/source/resource/qx/decoration/Modern/treevirtual/.gitignore +0 -0
- package/source/resource/qx/mobile/css/.gitignore +0 -3
- package/source/resource/qx/tool/website/.gitignore +0 -2
- package/source/resource/qx/website/.gitignore +0 -1
- package/source/resource/qx/website/scss/.gitignore +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -70,7 +70,7 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
70
70
|
async make() {
|
|
71
71
|
var analyser = this.getAnalyser();
|
|
72
72
|
let target = this.getTarget();
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
await this.fireEventAsync("making");
|
|
75
75
|
this.setSuccess(null);
|
|
76
76
|
this.setHasWarnings(null);
|
|
@@ -82,12 +82,12 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
82
82
|
qx.tool.compiler.ClassFile.ENVIRONMENT_CONSTANTS,
|
|
83
83
|
{
|
|
84
84
|
"qx.compiler": true,
|
|
85
|
-
"qx.compiler.version": qx.tool.
|
|
85
|
+
"qx.compiler.version": qx.tool.config.Utils.getCompilerVersion()
|
|
86
86
|
},
|
|
87
87
|
this.getEnvironment(),
|
|
88
88
|
target.getDefaultEnvironment(),
|
|
89
89
|
target.getEnvironment());
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
let preserve = target.getPreserveEnvironment();
|
|
92
92
|
if (preserve) {
|
|
93
93
|
let tmp = {};
|
|
@@ -101,7 +101,7 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
101
101
|
this.getApplications().forEach(app => {
|
|
102
102
|
appEnvironments[app.toHashCode()] = qx.tool.utils.Values.merge({}, compileEnv, app.getCalculatedEnvironment());
|
|
103
103
|
});
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
// Analyze the list of environment variables, detect which are shared between all apps
|
|
106
106
|
let allAppEnv = {};
|
|
107
107
|
this.getApplications().forEach(app => {
|
|
@@ -117,7 +117,7 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
119
|
});
|
|
120
|
-
|
|
120
|
+
|
|
121
121
|
// If an env setting is the same for all apps, move it to the target for code elimination; similarly,
|
|
122
122
|
// if it varies between apps, then remove it from the target and make each app specify it individually
|
|
123
123
|
this.getApplications().forEach(app => {
|
|
@@ -132,8 +132,8 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
|
-
|
|
136
|
-
// Cleanup to remove env that have been moved to the app
|
|
135
|
+
|
|
136
|
+
// Cleanup to remove env that have been moved to the app
|
|
137
137
|
Object.keys(allAppEnv).forEach(key => {
|
|
138
138
|
if (!preserve[key] && allAppEnv[key].same) {
|
|
139
139
|
compileEnv[key] = allAppEnv[key].value;
|
|
@@ -150,14 +150,14 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
150
150
|
await qx.tool.utils.Utils.makeParentDir(this.getOutputDir());
|
|
151
151
|
await analyser.resetDatabase();
|
|
152
152
|
}
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
await qx.tool.utils.Utils.promisifyThis(analyser.initialScan, analyser);
|
|
155
155
|
await analyser.updateEnvironmentData();
|
|
156
156
|
|
|
157
157
|
target.setAnalyser(analyser);
|
|
158
158
|
this.__applications.forEach(app => app.setAnalyser(analyser));
|
|
159
159
|
await target.open();
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
if (this.isOutputTypescript()) {
|
|
162
162
|
analyser.getLibraries().forEach(library => {
|
|
163
163
|
var symbols = library.getKnownSymbols();
|
|
@@ -179,7 +179,7 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
179
179
|
}
|
|
180
180
|
});
|
|
181
181
|
await analyser.analyseClasses();
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
await analyser.saveDatabase();
|
|
184
184
|
await this.fireEventAsync("writingApplications");
|
|
185
185
|
|
|
@@ -191,11 +191,11 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
191
191
|
var appsThisTime = this.__applications.filter(app => {
|
|
192
192
|
let loadDeps = app.getDependencies();
|
|
193
193
|
if (!loadDeps || !loadDeps.length) {
|
|
194
|
-
return true;
|
|
194
|
+
return true;
|
|
195
195
|
}
|
|
196
196
|
return loadDeps.some(name => Boolean(compiledClasses[name]));
|
|
197
197
|
});
|
|
198
|
-
|
|
198
|
+
|
|
199
199
|
let allAppInfos = [];
|
|
200
200
|
|
|
201
201
|
let db = analyser.getDatabase();
|
|
@@ -244,7 +244,7 @@ qx.Class.define("qx.tool.compiler.makers.AppMaker", {
|
|
|
244
244
|
.run()
|
|
245
245
|
);
|
|
246
246
|
}
|
|
247
|
-
|
|
247
|
+
|
|
248
248
|
await analyser.saveDatabase();
|
|
249
249
|
await this.fireEventAsync("made");
|
|
250
250
|
this.setSuccess(success);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2019 Zenesis Limited, http://www.zenesis.com
|
|
@@ -205,7 +205,7 @@ qx.Class.define("qx.tool.compiler.resources.Asset", {
|
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
207
|
let rm = target.getAnalyser().getResourceManager();
|
|
208
|
-
dependsOn = dependsOn.map(filename => rm.getAsset(path.resolve(filename), true)).filter(tmp => tmp !== this);
|
|
208
|
+
dependsOn = dependsOn.map(filename => rm.getAsset(path.resolve(filename), true, this.isThemeFile())).filter(tmp => tmp !== this);
|
|
209
209
|
this.setDependsOn(dependsOn);
|
|
210
210
|
} else {
|
|
211
211
|
await qx.tool.utils.files.Utils.copyFile(srcFilename, destFilename);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -48,8 +48,9 @@ qx.Class.define("qx.tool.compiler.resources.ImageLoader", {
|
|
|
48
48
|
matches: function(filename, library) {
|
|
49
49
|
if (filename.endsWith("svg")) {
|
|
50
50
|
let isWebFont = library.getWebFonts() && library.getWebFonts().find(webFont => webFont.getResources().find(resource => resource == filename));
|
|
51
|
-
if (isWebFont)
|
|
51
|
+
if (isWebFont) {
|
|
52
52
|
return false;
|
|
53
|
+
}
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
return this.base(arguments, filename, library);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -149,7 +149,7 @@ qx.Class.define("qx.tool.compiler.resources.Manager", {
|
|
|
149
149
|
|
|
150
150
|
// Non-wildcards are a direct lookup
|
|
151
151
|
// check for $ and *. less pos wins
|
|
152
|
-
// fix for https://github.com/qooxdoo/qooxdoo
|
|
152
|
+
// fix for https://github.com/qooxdoo/qooxdoo/issues/260
|
|
153
153
|
var pos1 = uri.indexOf("$"); // Variable references are effectively a wildcard lookup
|
|
154
154
|
var pos2 = uri.indexOf("*");
|
|
155
155
|
if (pos1 === -1) {
|
|
@@ -347,17 +347,17 @@ qx.Class.define("qx.tool.compiler.resources.Manager", {
|
|
|
347
347
|
*
|
|
348
348
|
* @param srcPath {String} the resource name, with or without a namespace prefix
|
|
349
349
|
* @param create {Boolean?} if true the asset will be created if it does not exist
|
|
350
|
+
* @param isThemeFile {Boolean?} if true the asset will be expected to be in the theme folder
|
|
350
351
|
* @return {Asset?} the asset, if found
|
|
351
352
|
*/
|
|
352
|
-
getAsset(srcPath, create) {
|
|
353
|
+
getAsset(srcPath, create, isThemeFile) {
|
|
353
354
|
let library = this.findLibraryForResource(srcPath);
|
|
354
355
|
if (!library) {
|
|
355
356
|
qx.tool.compiler.Console.warn("Cannot find library for " + srcPath);
|
|
356
357
|
return null;
|
|
357
358
|
}
|
|
358
359
|
|
|
359
|
-
|
|
360
|
-
let resourceDir = path.join(library.getRootDir(), library.getResourcePath());
|
|
360
|
+
let resourceDir = path.join(library.getRootDir(), isThemeFile ? library.getThemePath() : library.getResourcePath());
|
|
361
361
|
srcPath = path.relative(resourceDir, path.isAbsolute(srcPath)?srcPath:path.join(resourceDir, srcPath));
|
|
362
362
|
let asset = this.__assets[library.getNamespace() + ":" + srcPath];
|
|
363
363
|
if (!asset && create) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -18,10 +18,16 @@
|
|
|
18
18
|
* Authors:
|
|
19
19
|
* * Henner Kollmann (henner.kollmann@gmx.de)
|
|
20
20
|
*
|
|
21
|
+
*
|
|
21
22
|
* *********************************************************************** */
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const path = require("upath");
|
|
25
|
+
/**
|
|
26
|
+
* @external(qx/tool/loadsass.js)
|
|
27
|
+
* @ignore(loadSass)
|
|
28
|
+
*/
|
|
29
|
+
/* global loadSass */
|
|
30
|
+
const sass = loadSass();
|
|
25
31
|
const fs = qx.tool.utils.Promisify.fs;
|
|
26
32
|
|
|
27
33
|
qx.Class.define("qx.tool.compiler.resources.ScssConverter", {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2019 Zenesis Limited, http://www.zenesis.com
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
* * John Spackman (john.spackman@zenesis.com, @johnspackman)
|
|
20
20
|
*
|
|
21
21
|
* *********************************************************************** */
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @ignore(require)
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
22
|
/* eslint-disable @qooxdoo/qx/no-illegal-private-usage */
|
|
28
23
|
|
|
29
24
|
const fs = qx.tool.utils.Promisify.fs;
|
|
30
25
|
const path = require("upath");
|
|
31
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @external(qx/tool/loadsass.js)
|
|
28
|
+
* @ignore(loadSass)
|
|
29
|
+
*/
|
|
30
|
+
/* global loadSass */
|
|
31
|
+
const sass = loadSass();
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* @ignore(process)
|
|
@@ -79,7 +79,7 @@ qx.Class.define("qx.tool.compiler.resources.ScssFile", {
|
|
|
79
79
|
let inputFileData = await this.loadSource(this.__filename, this.__library);
|
|
80
80
|
|
|
81
81
|
await new qx.Promise((resolve, reject) => {
|
|
82
|
-
|
|
82
|
+
sass.render({
|
|
83
83
|
// Always have file so that the source map knows the name of the original
|
|
84
84
|
file: this.__filename,
|
|
85
85
|
|
|
@@ -215,7 +215,8 @@ qx.Class.define("qx.tool.compiler.resources.ScssFile", {
|
|
|
215
215
|
return null;
|
|
216
216
|
}
|
|
217
217
|
promises.push(this.loadSource(pathInfo.filename, newLibrary));
|
|
218
|
-
|
|
218
|
+
let filename = this.isThemeFile() ? newLibrary.getThemeFilename(pathInfo.filename) : newLibrary.getResourceFilename(pathInfo.filename);
|
|
219
|
+
return "@import \"" + path.relative(process.cwd(), filename) + "\"";
|
|
219
220
|
});
|
|
220
221
|
|
|
221
222
|
contents = contents.replace(/\burl\s*\(\s*([^\)]+)*\)/ig, (match, url) => {
|
|
@@ -264,17 +265,17 @@ qx.Class.define("qx.tool.compiler.resources.ScssFile", {
|
|
|
264
265
|
|
|
265
266
|
if (pathInfo) {
|
|
266
267
|
if (pathInfo.externalUrl) {
|
|
267
|
-
return
|
|
268
|
+
return sass.types.String("url(" + pathInfo.externalUrl + ")");
|
|
268
269
|
}
|
|
269
270
|
|
|
270
271
|
if (pathInfo.namespace) {
|
|
271
272
|
let targetFile = path.relative(process.cwd(), path.join(this.__target.getOutputDir(), "resource", pathInfo.filename));
|
|
272
273
|
let relative = path.relative(this.__outputDir, targetFile);
|
|
273
|
-
return
|
|
274
|
+
return sass.types.String("url(" + relative + ")");
|
|
274
275
|
}
|
|
275
276
|
}
|
|
276
277
|
|
|
277
|
-
return
|
|
278
|
+
return sass.types.String("url(" + url + ")");
|
|
278
279
|
}
|
|
279
280
|
}
|
|
280
281
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -107,6 +107,14 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
107
107
|
check: "Boolean"
|
|
108
108
|
},
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Whether to add timestamps to all URLs (cache busting)
|
|
112
|
+
*/
|
|
113
|
+
addTimestampsToUrls: {
|
|
114
|
+
init: true,
|
|
115
|
+
check: "Boolean"
|
|
116
|
+
},
|
|
117
|
+
|
|
110
118
|
/** Locales being generated */
|
|
111
119
|
locales: {
|
|
112
120
|
nullable: false,
|
|
@@ -322,6 +330,7 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
322
330
|
var rm = analyser.getResourceManager();
|
|
323
331
|
|
|
324
332
|
let appMeta = this.__appMeta = new qx.tool.compiler.targets.meta.ApplicationMeta(this, application);
|
|
333
|
+
appMeta.setAddTimestampsToUrls(this.getAddTimestampsToUrls());
|
|
325
334
|
/*
|
|
326
335
|
if (!appMeta.getAppLibrary()) {
|
|
327
336
|
qx.tool.compiler.Console.print("qx.tool.compiler.target.missingAppLibrary", application.getClassName());
|
|
@@ -344,7 +353,9 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
344
353
|
"qx.application": application.getClassName(),
|
|
345
354
|
"qx.revision": "",
|
|
346
355
|
"qx.theme": application.getTheme(),
|
|
347
|
-
"qx.version": analyser.getQooxdooVersion()
|
|
356
|
+
"qx.version": analyser.getQooxdooVersion(),
|
|
357
|
+
"qx.compiler.targetType": this.getType(),
|
|
358
|
+
"qx.compiler.outputDir": this.getOutputDir()
|
|
348
359
|
});
|
|
349
360
|
|
|
350
361
|
let externals = {};
|
|
@@ -461,38 +472,59 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
461
472
|
});
|
|
462
473
|
|
|
463
474
|
if (analyser.getApplicationTypes().indexOf("browser") > -1) {
|
|
464
|
-
|
|
465
|
-
|
|
475
|
+
// Get a list of all fonts to load; use the font name as a unique identifier, and
|
|
476
|
+
// prioritise the application's library's definitions - this allows the application
|
|
477
|
+
// the opportunity to override the font definitions. This is important when the
|
|
478
|
+
// library uses the open source/free versions of a font but the application
|
|
479
|
+
// developer has purchased the commercial/full version of the font (eg FontAwesome)
|
|
480
|
+
let appLibrary = appMeta.getAppLibrary();
|
|
481
|
+
let fontsToLoad = { };
|
|
482
|
+
const addLibraryFonts = library => {
|
|
466
483
|
var fonts = library.getWebFonts();
|
|
467
484
|
if (!fonts) {
|
|
468
485
|
return;
|
|
469
486
|
}
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
qx.tool.compiler.Console.print("qx.tool.compiler.webfonts.error", font.toString(), ex.toString());
|
|
487
|
+
fonts.forEach(font => {
|
|
488
|
+
fontsToLoad[font.getName()] = {
|
|
489
|
+
font, library
|
|
490
|
+
};
|
|
491
|
+
});
|
|
492
|
+
};
|
|
493
|
+
requiredLibs.forEach(libnamespace => {
|
|
494
|
+
var library = analyser.findLibrary(libnamespace);
|
|
495
|
+
if (library != appLibrary) {
|
|
496
|
+
addLibraryFonts(library);
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
addLibraryFonts(appLibrary);
|
|
500
|
+
|
|
501
|
+
const loadFont = async (library, font) => {
|
|
502
|
+
try {
|
|
503
|
+
// check if font is asset somewhere
|
|
504
|
+
let res = font.getResources().filter(res => assets[res]);
|
|
505
|
+
if (res.length === 0) {
|
|
506
|
+
qx.tool.compiler.Console.print("qx.tool.compiler.webfonts.noResources", font.toString(), application.getName(), font.getResources().join(","));
|
|
507
|
+
return;
|
|
492
508
|
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
509
|
+
font.setResources(res);
|
|
510
|
+
|
|
511
|
+
await font.generateForTarget(t);
|
|
512
|
+
let resources = await font.generateForApplication(t, application);
|
|
513
|
+
for (var key in resources) {
|
|
514
|
+
appMeta.addResource(key, resources[key]);
|
|
515
|
+
}
|
|
516
|
+
var code = font.getBootstrapCode(t, application, fontCntr++ == 0);
|
|
517
|
+
if (code) {
|
|
518
|
+
appMeta.addPreBootCode(code);
|
|
519
|
+
}
|
|
520
|
+
} catch (ex) {
|
|
521
|
+
qx.tool.compiler.Console.print("qx.tool.compiler.webfonts.error", font.toString(), ex.toString());
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
Object.keys(fontsToLoad).forEach(fontName => {
|
|
526
|
+
let { font, library } = fontsToLoad[fontName];
|
|
527
|
+
promises.push(loadFont(library, font));
|
|
496
528
|
});
|
|
497
529
|
}
|
|
498
530
|
await qx.Promise.all(promises);
|
|
@@ -779,13 +811,19 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
779
811
|
|
|
780
812
|
let timeStamp = (new Date()).getTime();
|
|
781
813
|
let pathToTarget = path.relative(path.join(t.getOutputDir(), t.getProjectDir(application)), t.getOutputDir()) + "/";
|
|
814
|
+
let indexJsTimestamp = "";
|
|
815
|
+
if (this.isAddTimestampsToUrls()) {
|
|
816
|
+
let indexJsFilename = path.join(appMeta.getApplicationRoot(), "index.js");
|
|
817
|
+
indexJsTimestamp = "?" + fs.statSync(indexJsFilename).mtimeMs;
|
|
818
|
+
}
|
|
782
819
|
let TEMPLATE_VARS = {
|
|
783
820
|
"resourcePath": pathToTarget + "resource/",
|
|
784
821
|
"targetPath": pathToTarget,
|
|
785
822
|
"appPath": "",
|
|
786
823
|
"preBootJs": "",
|
|
787
824
|
"appTitle": (application.getTitle()||"Qooxdoo Application"),
|
|
788
|
-
"timeStamp": timeStamp
|
|
825
|
+
"timeStamp": timeStamp,
|
|
826
|
+
"indexJsTimestamp": indexJsTimestamp
|
|
789
827
|
};
|
|
790
828
|
|
|
791
829
|
function replaceVars(code) {
|
|
@@ -807,7 +845,7 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
807
845
|
" the one below because they will be added automatically)\n" +
|
|
808
846
|
" -->\n" +
|
|
809
847
|
"${preBootJs}\n" +
|
|
810
|
-
" <script type=\"text/javascript\" src=\"${appPath}index.js\"></script>\n" +
|
|
848
|
+
" <script type=\"text/javascript\" src=\"${appPath}index.js${indexJsTimestamp}\"></script>\n" +
|
|
811
849
|
"</body>\n" +
|
|
812
850
|
"</html>\n";
|
|
813
851
|
/* eslint-enable no-template-curly-in-string */
|
|
@@ -831,7 +869,7 @@ qx.Class.define("qx.tool.compiler.targets.Target", {
|
|
|
831
869
|
}
|
|
832
870
|
if (!data.match(/\s*index.js\s*/)) {
|
|
833
871
|
/* eslint-disable no-template-curly-in-string */
|
|
834
|
-
data = data.replace("</body>", "\n <script type=\"text/javascript\" src=\"${appPath}index.js\"></script>\n</body>");
|
|
872
|
+
data = data.replace("</body>", "\n <script type=\"text/javascript\" src=\"${appPath}index.js${indexJsTimestamp}\"></script>\n</body>");
|
|
835
873
|
/* eslint-enable no-template-curly-in-string */
|
|
836
874
|
qx.tool.compiler.Console.print("qx.tool.compiler.target.missingBootJs", from);
|
|
837
875
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
4
|
* toolchain
|
|
5
5
|
*
|
|
6
|
-
* https://github.com/qooxdoo/qooxdoo
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo
|
|
7
7
|
*
|
|
8
8
|
* Copyright:
|
|
9
9
|
* 2011-2017 Zenesis Limited, http://www.zenesis.com
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
var path = require("path");
|
|
25
25
|
|
|
26
26
|
var fs = require("fs");
|
|
27
|
-
var jsonlint = require("jsonlint");
|
|
28
27
|
const {promisify} = require("util");
|
|
29
28
|
const readFile = promisify(fs.readFile);
|
|
30
29
|
/**
|
|
@@ -150,7 +149,7 @@ qx.Class.define("qx.tool.compiler.targets.TypeScriptWriter", {
|
|
|
150
149
|
}
|
|
151
150
|
var fileName = path.join(this.__target.getOutputDir(), "transpiled", classname.replace(/\./g, "/") + ".json");
|
|
152
151
|
return readFile(fileName, "UTF-8")
|
|
153
|
-
.then(content => this.__apiCache[classname] =
|
|
152
|
+
.then(content => this.__apiCache[classname] = JSON.parse(content))
|
|
154
153
|
.catch(err => qx.tool.compiler.Console.error("Error parsing " + classname + ": " + err.stack));
|
|
155
154
|
},
|
|
156
155
|
|
|
@@ -159,7 +158,7 @@ qx.Class.define("qx.tool.compiler.targets.TypeScriptWriter", {
|
|
|
159
158
|
* @async
|
|
160
159
|
*/
|
|
161
160
|
writeBase: function() {
|
|
162
|
-
return readFile(path.join(
|
|
161
|
+
return readFile(path.join(qx.tool.utils.Utils.getTemplateDir(), "TypeScriptWriter-base_declaration.txt"), "UTF-8")
|
|
163
162
|
.then(content => this.write(content));
|
|
164
163
|
},
|
|
165
164
|
|
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/* ************************************************************************
|
|
2
|
+
*
|
|
3
|
+
* qooxdoo-compiler - node.js based replacement for the Qooxdoo python
|
|
4
|
+
* toolchain
|
|
5
|
+
*
|
|
6
|
+
* https://github.com/qooxdoo/qooxdoo-compiler
|
|
7
|
+
*
|
|
8
|
+
* Copyright:
|
|
9
|
+
* 2011-2021 Zenesis Limited, http://www.zenesis.com
|
|
10
|
+
*
|
|
11
|
+
* License:
|
|
12
|
+
* MIT: https://opensource.org/licenses/MIT
|
|
13
|
+
*
|
|
14
|
+
* This software is provided under the same licensing terms as Qooxdoo,
|
|
15
|
+
* please see the LICENSE file in the Qooxdoo project's top-level directory
|
|
16
|
+
* for details.
|
|
17
|
+
*
|
|
18
|
+
* Authors:
|
|
19
|
+
* * John Spackman (john.spackman@zenesis.com, @johnspackman)
|
|
20
|
+
*
|
|
21
|
+
* ************************************************************************/
|
|
22
|
+
|
|
1
23
|
const fs = qx.tool.utils.Promisify.fs;
|
|
2
24
|
const sourceMap = require("source-map");
|
|
3
25
|
|