├── known-good ├── .gitignore └── package.json ├── test ├── compiler │ ├── testapp │ │ ├── .nvmrc │ │ ├── source │ │ │ ├── resource │ │ │ │ └── testapp │ │ │ │ │ ├── test-external.js │ │ │ │ │ ├── test-external.css │ │ │ │ │ ├── scss │ │ │ │ │ ├── sub1 │ │ │ │ │ │ └── _rel1.scss │ │ │ │ │ └── root.scss │ │ │ │ │ └── test.png │ │ │ ├── theme │ │ │ │ └── testapp │ │ │ │ │ └── scss │ │ │ │ │ └── sample.scss │ │ │ ├── class │ │ │ │ └── testapp │ │ │ │ │ ├── WrongClassName.js │ │ │ │ │ ├── plugins │ │ │ │ │ ├── OneAlpha.js │ │ │ │ │ ├── OneBravo.js │ │ │ │ │ ├── OneCharlie.js │ │ │ │ │ ├── TwoAlpha.js │ │ │ │ │ ├── TwoBravo.js │ │ │ │ │ ├── TwoCharlie.js │ │ │ │ │ ├── PluginOne.js │ │ │ │ │ └── PluginTwo.js │ │ │ │ │ ├── Issue240.js │ │ │ │ │ ├── MIssue240.js │ │ │ │ │ ├── MyClass.js │ │ │ │ │ ├── __init__.js │ │ │ │ │ ├── anno │ │ │ │ │ └── MyAnno.js │ │ │ │ │ ├── Issue153.js │ │ │ │ │ ├── utils │ │ │ │ │ └── Utils.js │ │ │ │ │ ├── Issue186.js │ │ │ │ │ ├── Issue461.js │ │ │ │ │ ├── pdk │ │ │ │ │ └── AbstractPlugin.js │ │ │ │ │ ├── Issue206.js │ │ │ │ │ ├── Issue500.js │ │ │ │ │ ├── TestThat1.js │ │ │ │ │ ├── TestThat2.js │ │ │ │ │ ├── Issue495.js │ │ │ │ │ ├── MMyMixin.js │ │ │ │ │ ├── NodeApplication.js │ │ │ │ │ ├── Issue503.js │ │ │ │ │ ├── Issue309.js │ │ │ │ │ ├── test │ │ │ │ │ ├── TestInnerClasses.js │ │ │ │ │ ├── TestPlugins.js │ │ │ │ │ └── DemoTest.js │ │ │ │ │ ├── Issue494.js │ │ │ │ │ ├── Issue488.js │ │ │ │ │ ├── Warnings1.js │ │ │ │ │ └── InnerEs6Classes.js │ │ │ ├── translation │ │ │ │ ├── readme.txt │ │ │ │ ├── nl.po │ │ │ │ └── en.po │ │ │ └── index.html │ │ ├── .gitignore │ │ ├── qx-lock.json │ │ ├── readme.txt │ │ └── Manifest.json │ ├── test-qx-package │ │ └── dummy.txt │ ├── test-apiviewer │ │ └── testMixin │ │ │ ├── readme.md │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ ├── translation │ │ │ │ └── readme.txt │ │ │ ├── resource │ │ │ │ └── testMixin │ │ │ │ │ ├── app.png │ │ │ │ │ ├── test.png │ │ │ │ │ ├── favicon.png │ │ │ │ │ └── js_256x256.png │ │ │ ├── class │ │ │ │ └── testMixin │ │ │ │ │ ├── __init__.js │ │ │ │ │ ├── theme │ │ │ │ │ ├── Font.js │ │ │ │ │ ├── Color.js │ │ │ │ │ ├── Appearance.js │ │ │ │ │ ├── Decoration.js │ │ │ │ │ └── Theme.js │ │ │ │ │ ├── Mixin.js │ │ │ │ │ └── test │ │ │ │ │ └── DemoTest.js │ │ │ └── boot │ │ │ │ ├── nojs.html │ │ │ │ └── index.html │ │ │ ├── qx-lock.json │ │ │ ├── Manifest.json │ │ │ └── compile.json │ ├── test-issues │ │ ├── testLegalSCSS │ │ │ ├── readme.md │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ ├── class │ │ │ │ │ └── testLegalSCSS │ │ │ │ │ │ ├── __init__.js │ │ │ │ │ │ └── Application.js │ │ │ │ ├── resource │ │ │ │ │ └── testLegalSCSS │ │ │ │ │ │ ├── css │ │ │ │ │ │ └── test_css.css │ │ │ │ │ │ └── scss │ │ │ │ │ │ └── test_scss.scss │ │ │ │ └── theme │ │ │ │ │ └── testLegalSCSS │ │ │ │ │ └── scss │ │ │ │ │ └── test_theme_scss.scss │ │ │ ├── compile.json │ │ │ └── Manifest.json │ │ ├── issue440 │ │ │ ├── readme.md │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ ├── resource │ │ │ │ │ └── issue440 │ │ │ │ │ │ └── test.png │ │ │ │ └── class │ │ │ │ │ └── issue440 │ │ │ │ │ ├── __init__.js │ │ │ │ │ └── Application.js │ │ │ ├── compile.json │ │ │ └── Manifest.json │ │ ├── issue553 │ │ │ ├── readme.md │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ └── class │ │ │ │ │ └── issue553 │ │ │ │ │ ├── ApplicationOne.js │ │ │ │ │ └── ApplicationTwo.js │ │ │ ├── Manifest.json │ │ │ └── compile.json │ │ ├── issue553_node │ │ │ ├── readme.md │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ └── class │ │ │ │ │ └── issue553 │ │ │ │ │ ├── ApplicationOne.js │ │ │ │ │ └── ApplicationTwo.js │ │ │ ├── Manifest.json │ │ │ └── compile.json │ │ ├── issue692 │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ ├── resource │ │ │ │ │ └── issue692 │ │ │ │ │ │ └── test.png │ │ │ │ └── class │ │ │ │ │ └── issue692 │ │ │ │ │ └── Application.js │ │ │ ├── Manifest.json │ │ │ └── compile.json │ │ ├── issue715 │ │ │ ├── .gitignore │ │ │ ├── Manifest.json │ │ │ ├── compile.json │ │ │ └── source │ │ │ │ └── class │ │ │ │ └── issue715 │ │ │ │ └── Application.js │ │ └── testdynamic │ │ │ ├── Manifest.json │ │ │ └── compile.js │ ├── test-externals │ │ ├── mylib │ │ │ ├── source │ │ │ │ ├── resource │ │ │ │ │ └── mylib │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ ├── b.js │ │ │ │ │ │ └── c.js │ │ │ │ └── class │ │ │ │ │ └── mylib │ │ │ │ │ └── MyClass.js │ │ │ ├── .gitignore │ │ │ └── Manifest.json │ │ └── myapp │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ └── class │ │ │ │ └── myapp │ │ │ │ └── Application.js │ │ │ ├── compile.json │ │ │ └── Manifest.json │ ├── .gitignore │ ├── test-commands │ │ └── test-commands-rename.js │ ├── test-translation │ │ ├── mylib │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── en.po │ │ │ │ └── class │ │ │ │ │ └── mylib │ │ │ │ │ └── LibClass.js │ │ │ └── Manifest.json │ │ └── tranapp │ │ │ ├── .gitignore │ │ │ ├── source │ │ │ ├── translation │ │ │ │ └── en.po │ │ │ └── class │ │ │ │ └── tranapp │ │ │ │ └── Application.js │ │ │ ├── compile.json │ │ │ └── Manifest.json │ ├── testlib │ │ ├── Manifest.json │ │ └── compile.js │ ├── test-externals.js │ ├── test-pkg-migrate.js │ └── test-rotate-unique.js ├── index.js ├── .gitignore └── unittest │ └── test-compiler │ ├── classIssue519.js │ ├── classIssue633.js │ ├── classIssue524.js │ ├── classIssue715.js │ └── classIssue726.js ├── bin ├── build │ ├── qx.cmd │ └── qx ├── deploy │ ├── qx.cmd │ └── qx ├── source │ ├── qx.cmd │ └── qx └── known-good │ ├── qx.cmd │ └── qx ├── .github ├── CODEOWNERS └── workflows │ └── nodejs.yml.disabled ├── bootstrap-compiler.cmd ├── source ├── resource │ └── qx │ │ └── tool │ │ ├── website │ │ ├── .gitignore │ │ ├── build │ │ │ ├── assets │ │ │ │ ├── qx-oo.png │ │ │ │ ├── favicon.png │ │ │ │ ├── qx-api.png │ │ │ │ ├── qx-ide.png │ │ │ │ └── abel.css │ │ │ ├── qooxdoo.css │ │ │ └── diagnostics │ │ │ │ └── dependson.js │ │ ├── src │ │ │ ├── assets │ │ │ │ ├── favicon.png │ │ │ │ ├── qx-api.png │ │ │ │ ├── qx-ide.png │ │ │ │ ├── qx-oo.png │ │ │ │ └── abel.css │ │ │ ├── diagnostics │ │ │ │ ├── dependson.html │ │ │ │ ├── requiredby.html │ │ │ │ └── dependson.js │ │ │ ├── index.html │ │ │ ├── 404.html │ │ │ └── about.md │ │ ├── partials │ │ │ ├── icon-github.html │ │ │ ├── icon-twitter.html │ │ │ ├── icon-twitter.svg │ │ │ ├── icon-github.svg │ │ │ └── head.html │ │ ├── layouts │ │ │ └── default.dot │ │ └── sass │ │ │ └── qooxdoo.scss │ │ ├── cli │ │ └── templates │ │ │ ├── skeleton │ │ │ ├── server │ │ │ │ ├── source │ │ │ │ │ ├── resource │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ └── .gitignore.tmpl │ │ │ │ │ ├── translation │ │ │ │ │ │ └── readme.txt │ │ │ │ │ └── class │ │ │ │ │ │ └── custom │ │ │ │ │ │ ├── __init__.tmpl.js │ │ │ │ │ │ └── test │ │ │ │ │ │ └── DemoTest.tmpl.js │ │ │ │ ├── .gitignore.tmpl │ │ │ │ ├── Manifest.tmpl.json │ │ │ │ ├── compile.tmpl.json │ │ │ │ └── readme.tmpl.txt │ │ │ ├── desktop │ │ │ │ ├── readme.tmpl.md │ │ │ │ ├── .gitignore.tmpl │ │ │ │ ├── source │ │ │ │ │ ├── translation │ │ │ │ │ │ └── readme.txt │ │ │ │ │ ├── resource │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ ├── app.png │ │ │ │ │ │ │ ├── test.png │ │ │ │ │ │ │ ├── favicon.png │ │ │ │ │ │ │ └── js_256x256.png │ │ │ │ │ ├── class │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ ├── __init__.tmpl.js │ │ │ │ │ │ │ ├── theme │ │ │ │ │ │ │ ├── Font.tmpl.js │ │ │ │ │ │ │ ├── Color.tmpl.js │ │ │ │ │ │ │ ├── Appearance.tmpl.js │ │ │ │ │ │ │ ├── Decoration.tmpl.js │ │ │ │ │ │ │ └── Theme.tmpl.js │ │ │ │ │ │ │ ├── test │ │ │ │ │ │ │ └── DemoTest.tmpl.js │ │ │ │ │ │ │ └── Application.tmpl.js │ │ │ │ │ └── boot │ │ │ │ │ │ ├── nojs.tmpl.html │ │ │ │ │ │ └── index.tmpl.html │ │ │ │ ├── compile.tmpl.json │ │ │ │ └── Manifest.tmpl.json │ │ │ ├── mobile │ │ │ │ ├── readme.tmpl.md │ │ │ │ ├── source │ │ │ │ │ ├── theme │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ └── scss │ │ │ │ │ │ │ └── custom.scss │ │ │ │ │ ├── resource │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ └── .gitignore.tmpl │ │ │ │ │ │ │ ├── app.png │ │ │ │ │ │ │ ├── favicon.png │ │ │ │ │ │ │ └── js_256x256.png │ │ │ │ │ ├── translation │ │ │ │ │ │ └── readme.txt │ │ │ │ │ ├── class │ │ │ │ │ │ └── custom │ │ │ │ │ │ │ ├── __init__.tmpl.js │ │ │ │ │ │ │ └── page │ │ │ │ │ │ │ ├── __init__.tmpl.js │ │ │ │ │ │ │ ├── Overview.tmpl.js │ │ │ │ │ │ │ └── Login.tmpl.js │ │ │ │ │ └── boot │ │ │ │ │ │ ├── nojs.tmpl.html │ │ │ │ │ │ └── index.tmpl.html │ │ │ │ ├── .gitignore.tmpl │ │ │ │ ├── compile.tmpl.json │ │ │ │ └── Manifest.tmpl.json │ │ │ └── package │ │ │ │ ├── readme.tmpl.md │ │ │ │ ├── .gitignore.tmpl │ │ │ │ ├── source │ │ │ │ ├── translation │ │ │ │ │ └── readme.txt │ │ │ │ ├── resource │ │ │ │ │ └── custom │ │ │ │ │ │ └── test.png │ │ │ │ └── class │ │ │ │ │ └── custom │ │ │ │ │ ├── resource │ │ │ │ │ └── custom │ │ │ │ │ │ └── test.png │ │ │ │ │ ├── __init__.tmpl.js │ │ │ │ │ ├── theme │ │ │ │ │ ├── Font.tmpl.js │ │ │ │ │ ├── Color.tmpl.js │ │ │ │ │ ├── Appearance.tmpl.js │ │ │ │ │ ├── Decoration.tmpl.js │ │ │ │ │ └── Theme.tmpl.js │ │ │ │ │ ├── Button.tmpl.js │ │ │ │ │ ├── test │ │ │ │ │ └── DemoTest.tmpl.js │ │ │ │ │ └── demo │ │ │ │ │ └── Application.tmpl.js │ │ │ │ ├── compile.tmpl.json │ │ │ │ └── Manifest.tmpl.json │ │ │ ├── TypeScriptWriter-base_declaration.txt │ │ │ └── class │ │ │ ├── header.tmpl.js │ │ │ ├── interface.tmpl.js │ │ │ ├── mixin.tmpl.js │ │ │ ├── singleton.tmpl.js │ │ │ └── default.tmpl.js │ │ ├── bin │ │ ├── build-devtools │ │ ├── build-website │ │ └── download-assets │ │ ├── loadsass.js │ │ └── schema │ │ └── qooxdoo-1-0-0.json └── class │ └── qx │ └── tool │ ├── __init__.js │ ├── cli │ ├── __init__.js │ ├── LibraryApplication.js │ ├── Application.js │ ├── commands │ │ ├── Add.js │ │ └── Pkg.js │ └── api │ │ ├── LibraryApi.js │ │ └── Test.js │ ├── config │ ├── __init__.js │ ├── Compile.js │ ├── Manifest.js │ ├── Registry.js │ └── Lockfile.js │ ├── utils │ ├── __init__.js │ └── Logger.js │ └── compiler │ ├── __init__.js │ ├── targets │ ├── meta │ │ ├── PolyfillJs.js │ │ ├── Javascript.js │ │ └── Part.js │ └── SourceTarget.js │ ├── resources │ ├── MetaLoader.js │ ├── ScssIncludeConverter.js │ └── ImageLoader.js │ ├── jsdoc │ ├── ReturnParser.js │ ├── ThrowsParser.js │ ├── ChildControlParser.js │ └── CommandParser.js │ └── app │ └── Part.js ├── .gitignore ├── .npm-upgrade.json ├── bootstrap-compiler ├── qx-lock.json ├── LICENSE ├── Manifest.json └── compile.js /known-good/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ -------------------------------------------------------------------------------- /test/compiler/testapp/.nvmrc: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /bin/build/qx.cmd: -------------------------------------------------------------------------------- 1 | @node "%~dp0\qx" %* 2 | -------------------------------------------------------------------------------- /bin/deploy/qx.cmd: -------------------------------------------------------------------------------- 1 | @node "%~dp0\qx" %* 2 | -------------------------------------------------------------------------------- /bin/source/qx.cmd: -------------------------------------------------------------------------------- 1 | @node "%~dp0\qx" %* 2 | -------------------------------------------------------------------------------- /test/compiler/test-qx-package/dummy.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bin/known-good/qx.cmd: -------------------------------------------------------------------------------- 1 | @node "%~dp0\qx" %* 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @johnspackman @cboulanger @hkollmann 2 | -------------------------------------------------------------------------------- /bootstrap-compiler.cmd: -------------------------------------------------------------------------------- 1 | @node "%~dp0\bootstrap-compiler" %* 2 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/.gitignore: -------------------------------------------------------------------------------- 1 | old/ 2 | .sass-cache 3 | -------------------------------------------------------------------------------- /source/class/qx/tool/__init__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * doc is missing 3 | */ 4 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/__init__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * doc is missing 3 | */ 4 | -------------------------------------------------------------------------------- /source/class/qx/tool/config/__init__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * doc is missing 3 | */ 4 | -------------------------------------------------------------------------------- /source/class/qx/tool/utils/__init__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * doc is missing 3 | */ 4 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | require("../compiled/node/source/compilerLibrary/index"); 2 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/__init__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * doc is missing 3 | */ 4 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/readme.md: -------------------------------------------------------------------------------- 1 | # testMixin 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/readme.md: -------------------------------------------------------------------------------- 1 | # testLegalSCSS 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/source/resource/custom/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/source/resource/mylib/a.js: -------------------------------------------------------------------------------- 1 | window.THIS_IS_A_JS = 1; 2 | -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/source/resource/mylib/b.js: -------------------------------------------------------------------------------- 1 | window.THIS_IS_B_JS = 1; 2 | -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/source/resource/mylib/c.js: -------------------------------------------------------------------------------- 1 | window.THIS_IS_C_JS = 1; 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/readme.md: -------------------------------------------------------------------------------- 1 | # issue440 2 | 3 | undefined 4 | 5 | undefined -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/readme.md: -------------------------------------------------------------------------------- 1 | # issue553 2 | 3 | undefined 4 | 5 | undefined -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/readme.md: -------------------------------------------------------------------------------- 1 | # issue553 2 | 3 | undefined 4 | 5 | undefined -------------------------------------------------------------------------------- /test/compiler/testapp/source/resource/testapp/test-external.js: -------------------------------------------------------------------------------- 1 | var TEST_EXTERNAL="loaded"; 2 | 3 | -------------------------------------------------------------------------------- /test/compiler/testapp/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/resource/testapp/test-external.css: -------------------------------------------------------------------------------- 1 | #test-external { 2 | font-weight: "bold"; 3 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/readme.tmpl.md: -------------------------------------------------------------------------------- 1 | # ${name} 2 | 3 | ${summary} 4 | 5 | ${description} -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/readme.tmpl.md: -------------------------------------------------------------------------------- 1 | # ${name} 2 | 3 | ${summary} 4 | 5 | ${description} -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/readme.tmpl.md: -------------------------------------------------------------------------------- 1 | # ${name} 2 | 3 | ${summary} 4 | 5 | ${description} -------------------------------------------------------------------------------- /test/compiler/.gitignore: -------------------------------------------------------------------------------- 1 | /test-rotate-unique/ 2 | /test-deps/ 3 | /transpiled/ 4 | /test-qx-package/myapp/ 5 | /test-cli/myapp/ 6 | -------------------------------------------------------------------------------- /test/compiler/test-commands/test-commands-rename.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | console.log("This is just a sample script"); 3 | })(); 4 | 5 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/theme/testapp/scss/sample.scss: -------------------------------------------------------------------------------- 1 | $bgcolor: red; 2 | 3 | #root { 4 | background-color: $bgcolor; 5 | } 6 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/WrongClassName.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("abc.SomeOtherName", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/test-externals/myapp/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue715/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-translation/mylib/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/OneAlpha.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.OneAlpha", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/OneBravo.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.OneBravo", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/OneCharlie.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.OneCharlie", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/TwoAlpha.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.TwoAlpha", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/TwoBravo.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.TwoBravo", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/TwoCharlie.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.TwoCharlie", { 2 | extend: qx.core.Object 3 | }); 4 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/theme/custom/scss/custom.scss: -------------------------------------------------------------------------------- 1 | @import "common/all"; 2 | @import "styles"; 3 | @import "ui/all"; -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/test-translation/tranapp/.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /bin/build/qx: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path=require("path"); 3 | require(path.join(__dirname, "..", "..", "compiled", "node", "build", "compiler")); 4 | 5 | -------------------------------------------------------------------------------- /bin/source/qx: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path=require("path"); 3 | require(path.join(__dirname, "..", "..", "compiled", "node", "source", "compiler")); 4 | 5 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/resource/testapp/scss/sub1/_rel1.scss: -------------------------------------------------------------------------------- 1 | #root { 2 | font-weight: 800; 3 | background-image: url(../sub5/image.png); 4 | } 5 | 6 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/assets/qx-oo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/build/assets/qx-oo.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/src/assets/favicon.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/assets/qx-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/src/assets/qx-api.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/assets/qx-ide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/src/assets/qx-ide.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/assets/qx-oo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/src/assets/qx-oo.png -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/resource/testapp/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/testapp/source/resource/testapp/test.png -------------------------------------------------------------------------------- /test/compiler/testapp/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you run the 2 | 'translation' job in your project. 3 | 4 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/build/assets/favicon.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/assets/qx-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/build/assets/qx-api.png -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/assets/qx-ide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/website/build/assets/qx-ide.png -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue240.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue240", { 2 | extend: qx.core.Object, 3 | include: [ testapp.MIssue240 ] 4 | }); 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | # .gitignore template for skeleton-based apps 2 | /compiled 3 | /qx_packages 4 | .package-cache.json 5 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/MIssue240.js: -------------------------------------------------------------------------------- 1 | qx.Mixin.define("testapp.MIssue240", { 2 | //type: "static", 3 | 4 | statics: { 5 | A: 1 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/css/.gitignore.tmpl: -------------------------------------------------------------------------------- 1 | # generated by Sass (SCSS -> CSS compilation) 2 | custom.css 3 | custom.css.map 4 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/MyClass.js: -------------------------------------------------------------------------------- 1 | 2 | qx.Class.define("testapp.MyClass", { 3 | extend: qx.core.Object, 4 | include: [ testapp.MMyMixin ] 5 | 6 | }); 7 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/resource/testapp/scss/root.scss: -------------------------------------------------------------------------------- 1 | #root { 2 | color: red; 3 | } 4 | 5 | @import "sub1/rel1"; 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you have compiled your application. 2 | 3 | -------------------------------------------------------------------------------- /test/compiler/test-translation/mylib/source/translation/en.po: -------------------------------------------------------------------------------- 1 | msgid "Lib Alpha" 2 | msgstr "lib-alpha-value" 3 | 4 | msgid "Lib Override" 5 | msgstr "lib-override-original-value" 6 | 7 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/source/resource/issue440/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-issues/issue440/source/resource/issue440/test.png -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/source/resource/issue692/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-issues/issue692/source/resource/issue692/test.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/translation/readme.txt: -------------------------------------------------------------------------------- 1 | This directory will contain translation (.po) files once you run the 2 | 'translation' job in your project. 3 | 4 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/resource/testMixin/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-apiviewer/testMixin/source/resource/testMixin/app.png -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/resource/testMixin/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-apiviewer/testMixin/source/resource/testMixin/test.png -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/resource/testMixin/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-apiviewer/testMixin/source/resource/testMixin/favicon.png -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/resource/testMixin/js_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/test/compiler/test-apiviewer/testMixin/source/resource/testMixin/js_256x256.png -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/__init__.js: -------------------------------------------------------------------------------- 1 | /**

testapp API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/app.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/app.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/test.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/resource/custom/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/package/source/resource/custom/test.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/favicon.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/favicon.png -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/source/class/issue440/__init__.js: -------------------------------------------------------------------------------- 1 | /**

issue440 API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/anno/MyAnno.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.anno.MyAnno", { 2 | extend: qx.core.Object, 3 | 4 | properties: { 5 | name: { 6 | check: "String" 7 | } 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/js_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/mobile/source/resource/custom/js_256x256.png -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/__init__.js: -------------------------------------------------------------------------------- 1 | /**

testMixin API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/js_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/desktop/source/resource/custom/js_256x256.png -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/class/testLegalSCSS/__init__.js: -------------------------------------------------------------------------------- 1 | /**

testLegalSCSS API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/resource/custom/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/HEAD/source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/resource/custom/test.png -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/__init__.tmpl.js: -------------------------------------------------------------------------------- 1 | /**

${namespace} API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/__init__.tmpl.js: -------------------------------------------------------------------------------- 1 | /**

${namespace} API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/__init__.tmpl.js: -------------------------------------------------------------------------------- 1 | /**

${namespace} API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/__init__.tmpl.js: -------------------------------------------------------------------------------- 1 | /**

${namespace} API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * application. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/__init__.tmpl.js: -------------------------------------------------------------------------------- 1 | /**

${namespace} API Documentation

2 | * 3 | * Replace this text with an appropriate overview and introduction to your 4 | * contrib library. 5 | * 6 | */ 7 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue153.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue153", 2 | { 3 | 4 | extend : Object 5 | }); 6 | 7 | (function(root) { 8 | "use strict"; 9 | function BitSet(param) { 10 | } 11 | root["BitSet"] = BitSet; 12 | })(this); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/utils/Utils.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.utils.Utils", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | sayHello: function() { 6 | return this.classname + ": Utils Hello"; 7 | } 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/partials/icon-github.html: -------------------------------------------------------------------------------- 1 | 2 | {{= it.partials["icon-github.svg"](it) }} 3 | {{= it.site.github_username }} 4 | 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/partials/icon-twitter.html: -------------------------------------------------------------------------------- 1 | 2 | {{= it.partials["icon-twitter.svg"]() }} 3 | {{= it.site.twitter_username }} 4 | 5 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/assets/abel.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Abel'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: local('Abel Regular'), local('Abel-Regular'), url(https://fonts.gstatic.com/s/abel/v9/MwQ5bhbm2POE2V9BOA.ttf) format('truetype'); 6 | } 7 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/assets/abel.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Abel'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: local('Abel Regular'), local('Abel-Regular'), url(https://fonts.gstatic.com/s/abel/v9/MwQ5bhbm2POE2V9BOA.ttf) format('truetype'); 6 | } 7 | -------------------------------------------------------------------------------- /test/.gitignore: -------------------------------------------------------------------------------- 1 | transpiled/ 2 | unit-tests-output/ 3 | db.json 4 | resource-db.json 5 | x.json 6 | y.json 7 | test-rotate-unique.txt 8 | test-rotate-unique.txt.1 9 | test-rotate-unique.txt.2 10 | test-rotate-unique.txt.3 11 | test-rotate-unique.txt.4 12 | test-rotate-unique.txt.5 13 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue186.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue186", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | /** 6 | * @ignore(process) 7 | */ 8 | someMethodOne: function() { 9 | process.exit(); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /source/resource/qx/tool/bin/build-devtools: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require("../../../../../index"); 4 | 5 | const website = new qx.tool.utils.Website(); 6 | 7 | (async () => { 8 | try { 9 | await website.buildDevtools(); 10 | } catch (e) { 11 | console.error(e); 12 | } 13 | })(); 14 | -------------------------------------------------------------------------------- /bin/deploy/qx: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path=require("path"); 3 | const updateNotifier = require("update-notifier"); 4 | const pkg = require(path.join(__dirname, "..", "..", "package.json")); 5 | updateNotifier({pkg}).notify({defer:false}); 6 | require(path.join(__dirname, "..", "..", "lib", "compiler")); 7 | 8 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue461.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue461", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | unusedDestructedArray: function() { 6 | let m = [ 1, "a", "b"]; 7 | let [, name, ext] = m; 8 | console.log(name+ "." + ext); 9 | } 10 | 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/translation/nl.po: -------------------------------------------------------------------------------- 1 | #: testapp/Application.js 2 | msgid "translatedString" 3 | msgstr "nl: translatedString" 4 | 5 | #: testapp/Application.js 6 | msgid "Call \"me\"" 7 | msgstr "nl: Call \"me\"" 8 | 9 | #: testapp/Application.js 10 | msgid "This has\nsome\nnewlines" 11 | msgstr "nl: This has\nsome\nnewlines" 12 | -------------------------------------------------------------------------------- /test/unittest/test-compiler/classIssue519.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("classIssue519", { 2 | statics: { 3 | test: function() { 4 | classloop: 5 | for (var i=0; i<10; i++) 6 | { 7 | for (var j=0; j<10; j++) 8 | { 9 | break classloop; 10 | } 11 | } 12 | } 13 | } 14 | }); -------------------------------------------------------------------------------- /known-good/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "known-good", 3 | "version": "1.0.0", 4 | "description": "Known Good compiler", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@qooxdoo/compiler": "^1.0.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/pdk/AbstractPlugin.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.pdk.AbstractPlugin", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | sayHello: function() { 6 | this.assertEquals("testapp.Application", testapp.Application.classname); 7 | return this.classname + ": Abstract Hello"; 8 | } 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue206.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue206", { 2 | extend: qx.core.Object, 3 | 4 | properties: { 5 | minimum: { 6 | init: Number.MAX_VALUE * -1 7 | }, 8 | maximum: { 9 | init: Number.MAX_VALUE 10 | }, 11 | value: { 12 | init: new Date().getMonth()+1 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/TypeScriptWriter-base_declaration.txt: -------------------------------------------------------------------------------- 1 | 2 | interface IMap { 3 | [key:string] : any; 4 | } 5 | 6 | declare class ErrorImpl implements Error { 7 | name: string; 8 | message:string 9 | } 10 | 11 | declare module qx.registry { 12 | function registerMainMethod(fn:(app: qx.application.Standalone)=>void):void; 13 | } 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # local files 2 | .DS_Store 3 | .eslintcache 4 | .project 5 | .settings/ 6 | .idea/ 7 | notused/ 8 | .cache 9 | .vscode 10 | *~ 11 | 12 | # node 13 | node_modules/ 14 | 15 | # qooxdoo 16 | .package-cache.json 17 | html/ 18 | lib/ 19 | qooxdoo/ 20 | compiled/ 21 | qx_packages/ 22 | # test apps 23 | foo* 24 | test/qx 25 | tmp 26 | source/class/qx/tool/compiler/Version.js -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue500.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue500", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | test(nextConfigName) { 6 | console.error( 7 | `Unable to launch monitor with name ${nextConfigName}.` + 8 | `Was it deleted?`); 9 | console.error("abc" + "def"); 10 | } 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /test/compiler/test-translation/mylib/source/class/mylib/LibClass.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("mylib.LibClass", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | doSomething() { 6 | console.log(this.tr("Lib Alpha")); 7 | console.log(this.tr("Lib Beta")); 8 | console.log(this.tr("Lib Charlie")); 9 | console.log(this.tr("Lib Override")); 10 | } 11 | } 12 | }); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/TestThat1.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.TestThat1", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | toHashCode() { 6 | var that = this; 7 | var other = that; 8 | var args = arguments; 9 | let fn = function() { 10 | other.base(arguments); 11 | }; 12 | fn(); 13 | } 14 | } 15 | }); 16 | 17 | 18 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/layouts/default.dot: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{= it.partials.head(it) }} 5 | 6 | 7 | 8 | {{= it.partials.header(it) }} 9 | 10 | 11 |
12 | {{= it.contents }} 13 |
14 | 15 | {{= it.partials.footer(it) }} 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/compiler/testapp/qx-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "libraries": [ 3 | { 4 | "library_name": "Commandline Testrunner for Qooxdoo Apps", 5 | "library_version": "0.3.1", 6 | "path": "qx_packages/qooxdoo_qxl_testtapper_v0_3_1", 7 | "uri": "qooxdoo/qxl.testtapper", 8 | "repo_name": "qooxdoo/qxl.testtapper", 9 | "repo_tag": "v0.3.1" 10 | } 11 | ], 12 | "version": "2.1" 13 | } -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/TestThat2.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.TestThat2", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | toHashCode: function() { 6 | var that = this; 7 | var other = that; 8 | var args = arguments; 9 | let fn = function() { 10 | other.base(arguments); 11 | }; 12 | fn(); 13 | } 14 | } 15 | }); 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/source/class/mylib/MyClass.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is the main application class of "mylib" 3 | * 4 | * @external(mylib/a.js) 5 | */ 6 | qx.Class.define("mylib.MyClass", { 7 | extend: qx.core.Object, 8 | 9 | members: { 10 | /** 11 | * @external(mylib/b.js) 12 | */ 13 | doSomething: function() { 14 | console.log("Hello World"); 15 | } 16 | } 17 | }); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue495.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue495", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | test() { 6 | Object.entries({foo:"bar"}).map(([key, value]) => console.log(`${key}: ${value}`)); 7 | 8 | var obj = { a: 1, b: 2, c: 3 }; 9 | var fn = ({b,c}) => console.log(`b=${b} c=${c}`); 10 | fn(obj); 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | testapp 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/translation/en.po: -------------------------------------------------------------------------------- 1 | #: testapp/Application.js 2 | msgid "translatedString" 3 | msgstr "en: translatedString" 4 | 5 | #: testapp/Application.js 6 | msgid "Call \"me\"" 7 | msgstr "en: Call \"me\"" 8 | 9 | #: testapp/Application.js 10 | msgid "This has\nsome\nnewlines" 11 | msgstr "en: This has\nsome\nnewlines" 12 | 13 | #. NO LONGER USED 14 | msgid "This hasnsomennewlines" 15 | msgstr "" 16 | -------------------------------------------------------------------------------- /test/unittest/test-compiler/classIssue633.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("classIssue633", 2 | { 3 | extend : my.application.control.EditableList, 4 | members : 5 | { 6 | /** 7 | * Create an editor instance 8 | * 9 | * [Constructor] 10 | * 11 | * @return {Object} 12 | */ 13 | _createEditorInstance : function() { 14 | return null; 15 | } 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /source/resource/qx/tool/bin/build-website: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require("../../../../../index"); 3 | 4 | const website = new qx.tool.utils.Website(); 5 | 6 | (async () => { 7 | try { 8 | console.log(">>> Building local website..."); 9 | await website.generateSite(); 10 | await website.compileScss(); 11 | console.log(">>> Done."); 12 | } catch (e) { 13 | console.error(e); 14 | } 15 | })(); 16 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/MMyMixin.js: -------------------------------------------------------------------------------- 1 | qx.Mixin.define("testapp.MMyMixin", qx.core.Environment.select("test.isTrue", { 2 | "true" : { 3 | members: { 4 | mixedInFunction: function() { 5 | return "mixedInIsTrue"; 6 | } 7 | } 8 | }, 9 | "false" : { 10 | members: { 11 | mixedInFunction: function() { 12 | return "mixedInIsFalse"; 13 | } 14 | } 15 | } 16 | })); -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/theme/Font.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("testMixin.theme.Font", 12 | { 13 | extend : qx.theme.indigo.Font, 14 | 15 | fonts : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/NodeApplication.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @require(qx.core.BaseInit) 3 | */ 4 | 5 | qx.Class.define("testapp.NodeApplication", { 6 | extend: qx.application.Basic, 7 | 8 | members: { 9 | main() { 10 | console.log("In Main"); 11 | this.demoAsync(); 12 | }, 13 | 14 | async demoAsync() { 15 | await new qx.Promise(resolve => setTimeout(resolve, 500)); 16 | } 17 | } 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/diagnostics/dependson.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default.dot 3 | --- 4 | 5 | 6 | 11 | 12 | 17 | 18 |
19 |
-------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/theme/Color.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("testMixin.theme.Color", 12 | { 13 | extend : qx.theme.indigo.Color, 14 | 15 | colors : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue503.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue503", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | testOne(aOptions) { 6 | var {activeUserOnly = false} = aOptions; 7 | console.log("activeUserOnly=" + activeUserOnly); 8 | }, 9 | testTwo(aOptions) { 10 | var [activeUserOnly = false] = aOptions; 11 | console.log("activeUserOnly=" + activeUserOnly); 12 | } 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/class/header.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | ${name} 4 | 5 | ${homepage} 6 | 7 | Copyright: 8 | ${copyright} 9 | 10 | License: 11 | ${license} 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | ${authors} 16 | 17 | ************************************************************************ */ -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/theme/Appearance.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("testMixin.theme.Appearance", 12 | { 13 | extend : qx.theme.indigo.Appearance, 14 | 15 | appearances : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/theme/Decoration.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("testMixin.theme.Decoration", 12 | { 13 | extend : qx.theme.indigo.Decoration, 14 | 15 | decorations : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/PluginOne.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.PluginOne", { 2 | extend: testapp.pdk.AbstractPlugin, 3 | 4 | members: { 5 | sayHello: function() { 6 | this.assertEquals("testapp.Application", testapp.Application.classname); 7 | testapp.plugins.OneAlpha; 8 | testapp.plugins.OneBravo; 9 | testapp.plugins.OneCharlie; 10 | return this.classname + ": Plugin One Hello\n"; 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/plugins/PluginTwo.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.plugins.PluginTwo", { 2 | extend: testapp.pdk.AbstractPlugin, 3 | 4 | members: { 5 | sayHello: function() { 6 | this.assertEquals("testapp.Application", testapp.Application.classname); 7 | testapp.plugins.TwoAlpha; 8 | testapp.plugins.TwoBravo; 9 | testapp.plugins.TwoCharlie; 10 | return this.classname + ": Plugin Two Hello\n"; 11 | } 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /test/unittest/test-compiler/classIssue524.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("classIssue524", 2 | { 3 | extend : qx.application.Standalone, 4 | members : 5 | { 6 | /** 7 | * @ignore(init1) 8 | */ 9 | main : function() { 10 | init1(); 11 | } 12 | } 13 | }); 14 | 15 | qx.Class.define("some.Class", 16 | { 17 | extend : qx.ui.container.Composite, 18 | /** 19 | * @ignore(init) 20 | */ 21 | construct : function() 22 | { 23 | init(); 24 | } 25 | }); -------------------------------------------------------------------------------- /test/unittest/test-compiler/classIssue715.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("classIssue715", { 2 | members: { 3 | __privateOne: 1, 4 | 5 | myMethod() { 6 | this["__privateOne"] = "one"; 7 | this["__privateTwo"] = "two"; 8 | } 9 | }, 10 | statics: { 11 | __privateStaticOne: 1, 12 | 13 | test: function() { 14 | classIssue715["__privateStaticOne"] = "one"; 15 | classIssue715["__privateStaticTwo"] = "two"; 16 | } 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/diagnostics/requiredby.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default.dot 3 | --- 4 | 5 | 6 | 7 | 12 | 13 | 18 | 19 |
20 |
21 | 22 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/theme/Font.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Font", 12 | { 13 | extend : qx.theme.${theme}.Font, 14 | 15 | fonts : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/theme/Font.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Font", 12 | { 13 | extend : qx.theme.${theme}.Font, 14 | 15 | fonts : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/resource/testLegalSCSS/css/test_css.css: -------------------------------------------------------------------------------- 1 | .ol-search ul li { 2 | display: block; 3 | color: #333; 4 | background-color: #fff; 5 | font-size: 0.85em; 6 | } 7 | .ol-search ul li i { 8 | display: block; 9 | color: #333; 10 | background-color: #fff; 11 | font-size: 0.85em; 12 | cursor: pointer 13 | } 14 | .ol-search ul li.select i, 15 | .ol-search ul li:hover i { 16 | background-color: rgb(0,60,136); 17 | color: #fff; 18 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/theme/Color.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Color", 12 | { 13 | extend : qx.theme.${theme}.Color, 14 | 15 | colors : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/theme/Color.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Color", 12 | { 13 | extend : qx.theme.${theme}.Color, 14 | 15 | colors : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default.dot 3 | --- 4 |
5 |
6 |
7 | 8 |

Applications

9 |
10 | Loading .... 11 |
12 | 13 |
14 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/theme/Appearance.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Appearance", 12 | { 13 | extend : qx.theme.${theme}.Appearance, 14 | 15 | appearances : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/theme/Decoration.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Decoration", 12 | { 13 | extend : qx.theme.${theme}.Decoration, 14 | 15 | decorations : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/theme/Appearance.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Appearance", 12 | { 13 | extend : qx.theme.${theme}.Appearance, 14 | 15 | appearances : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/theme/Decoration.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Decoration", 12 | { 13 | extend : qx.theme.${theme}.Decoration, 14 | 15 | decorations : 16 | { 17 | } 18 | }); -------------------------------------------------------------------------------- /test/compiler/test-translation/tranapp/source/translation/en.po: -------------------------------------------------------------------------------- 1 | #. NO LONGER USED 2 | msgid "Lib Override" 3 | msgstr "lib-override-replaced-value" 4 | 5 | #: tranapp/Application.js 6 | msgid "App Alpha" 7 | msgstr "" 8 | 9 | #: tranapp/Application.js 10 | msgid "App Beta" 11 | msgstr "" 12 | 13 | #: tranapp/Application.js 14 | msgid "App Charlie" 15 | msgstr "" 16 | 17 | # 18 | msgid "Lib Beta" 19 | msgstr "" 20 | 21 | # 22 | msgid "Lib Charlie" 23 | msgstr "" 24 | 25 | # 26 | msgid "Lib Alpha" 27 | msgstr "lib-alpha-value" 28 | -------------------------------------------------------------------------------- /test/compiler/test-externals/myapp/source/class/myapp/Application.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is the main application class of "myapp" 3 | * 4 | * @asset(myapp/*) 5 | */ 6 | qx.Class.define("myapp.Application", { 7 | extend: qx.application.Standalone, 8 | 9 | members: { 10 | main: function() { 11 | this.base(arguments); 12 | 13 | if (qx.core.Environment.get("qx.debug")) { 14 | qx.log.appender.Native; 15 | qx.log.appender.Console; 16 | } 17 | 18 | new mylib.MyClass(); 19 | } 20 | } 21 | }); 22 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default.dot 3 | --- 4 | 5 | 18 | 19 |
20 |

404

21 | 22 |

Page not found :(

23 |

The requested page could not be found.

24 |
25 | -------------------------------------------------------------------------------- /.npm-upgrade.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": { 3 | "download": { 4 | "versions": "8.0.0", 5 | "reason": "needs node 10" 6 | }, 7 | "gauge": { 8 | "versions": "3.0.0", 9 | "reason": "needs node 10" 10 | }, 11 | "source-map": { 12 | "versions": "0.7.3", 13 | "reason": "is not working" 14 | }, 15 | "replace-in-file": { 16 | "versions": "6.1.0", 17 | "reason": "needs node 10" 18 | }, 19 | "async": { 20 | "versions": "3.2.0", 21 | "reason": "not working" 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/Button.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is an example of a contrib library, providing a very special button 13 | * @asset(${namespace_as_path}/*) 14 | */ 15 | qx.Class.define("${namespace}.Button", 16 | { 17 | extend : qx.ui.form.Button, 18 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/loadsass.js: -------------------------------------------------------------------------------- 1 | global.require = require; 2 | global.loadSass = new Function ( 3 | ` 4 | // trick out sass 5 | process.versions.electron = "0.0.0"; 6 | let remove = false; 7 | if (typeof window === "undefined") 8 | return; 9 | if (!window.document.currentScript) { 10 | window.document.currentScript = {src: ""}; 11 | remove = true; 12 | } 13 | const sass = global.require("sass"); 14 | delete process.versions.electron; 15 | if (remove) { 16 | delete window.document.currentScript; 17 | } 18 | return sass; 19 | `); 20 | 21 | 22 | -------------------------------------------------------------------------------- /test/compiler/test-translation/tranapp/source/class/tranapp/Application.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("tranapp.Application", { 2 | extend: qx.application.Standalone, 3 | 4 | members: { 5 | main: function() { 6 | this.base(arguments); 7 | 8 | if (qx.core.Environment.get("qx.debug")) { 9 | qx.log.appender.Native; 10 | qx.log.appender.Console; 11 | } 12 | 13 | new mylib.LibClass().doSomething(); 14 | 15 | console.log(this.tr("App Alpha")); 16 | console.log(this.tr("App Beta")); 17 | console.log(this.tr("App Charlie")); 18 | } 19 | } 20 | }); -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/theme/Theme.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("testMixin.theme.Theme", 12 | { 13 | meta : 14 | { 15 | color : testMixin.theme.Color, 16 | decoration : testMixin.theme.Decoration, 17 | font : testMixin.theme.Font, 18 | icon : qx.theme.icon.Tango, 19 | appearance : testMixin.theme.Appearance 20 | } 21 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/qooxdoo.css: -------------------------------------------------------------------------------- 1 | #navbarNav.collapsing, #navbarNav.collapse.show { 2 | background-color: rgba(0, 0, 0, 0.9); 3 | padding-left: 32px; 4 | padding-top: 16px; 5 | padding-bottom: 16px; } 6 | 7 | .carousel-indicators li { 8 | background-color: #EEE; } 9 | 10 | .carousel-indicators li.active { 11 | background-color: #AAA; } 12 | 13 | #applications li { 14 | margin-bottom: 0.25em; } 15 | #applications li p { 16 | font-style: italic; 17 | margin-bottom: 0; } 18 | #applications li p.tools { 19 | display: none; 20 | margin: 0 0 0 40px; 21 | font-size: 11px; } 22 | -------------------------------------------------------------------------------- /test/compiler/testapp/readme.txt: -------------------------------------------------------------------------------- 1 | Desktop Skeleton - A qooxdoo Application Template 2 | ================================================== 3 | 4 | This is a qooxdoo application skeleton which is used as a template. The 5 | 'create-application.py' script (usually under tool/bin/create-application.py) 6 | will use this and expand it into a self-contained qooxdoo application which 7 | can then be further extended. Please refer to the script and other documentation 8 | for further information. 9 | 10 | short:: is a standard qooxdoo GUI application 11 | copy_file:: tool/data/generator/needs_generation.js source/script/custom.js 12 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/sass/qooxdoo.scss: -------------------------------------------------------------------------------- 1 | 2 | #navbarNav.collapsing, #navbarNav.collapse.show { 3 | background-color: rgba(0,0,0,.9); 4 | padding-left: 32px; 5 | padding-top: 16px; 6 | padding-bottom: 16px; 7 | } 8 | 9 | .carousel-indicators li { 10 | background-color: #EEE; 11 | } 12 | 13 | .carousel-indicators li.active { 14 | background-color: #AAA; 15 | } 16 | 17 | #applications li { 18 | margin-bottom: 0.25em; 19 | 20 | p { 21 | font-style: italic; 22 | margin-bottom: 0; 23 | } 24 | 25 | p.tools { 26 | display: none; 27 | margin: 0 0 0 40px; 28 | font-size: 11px; 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/Mixin.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Mixin.define("testMixin.Mixin", 12 | { 13 | events: { 14 | /** 15 | * mixin event 16 | */ 17 | mixinEvent: "qx.event.type.Event" 18 | }, 19 | 20 | properties : 21 | { 22 | /** 23 | * mixin poperty 24 | */ 25 | mixinProperty : { 26 | } 27 | }, 28 | 29 | members : 30 | { 31 | } 32 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/compile.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ${locales}, 18 | 19 | "applications": [ 20 | { 21 | "class": "${namespace}.demo.Application", 22 | "theme": "${namespace}.theme.Theme", 23 | "name": "${namespace}" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /test/compiler/test-translation/tranapp/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source" 7 | }, 8 | { 9 | "type": "build", 10 | "outputPath": "compiled/build" 11 | } 12 | ], 13 | "defaultTarget": "source", 14 | "locales": ["en"], 15 | "environment": { 16 | "qx.icontheme": "Tango" 17 | }, 18 | "libraries": [ 19 | ".", 20 | "../mylib" 21 | ], 22 | "applications": [ 23 | { 24 | "class": "tranapp.Application", 25 | "theme": "qx.theme.Simple", 26 | "name": "tranapp" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/theme/Theme.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Theme", 12 | { 13 | meta : 14 | { 15 | color : ${namespace}.theme.Color, 16 | decoration : ${namespace}.theme.Decoration, 17 | font : ${namespace}.theme.Font, 18 | icon : qx.theme.icon.${icon_theme}, 19 | appearance : ${namespace}.theme.Appearance 20 | } 21 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/theme/Theme.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | qx.Theme.define("${namespace}.theme.Theme", 12 | { 13 | meta : 14 | { 15 | color : ${namespace}.theme.Color, 16 | decoration : ${namespace}.theme.Decoration, 17 | font : ${namespace}.theme.Font, 18 | icon : qx.theme.icon.${icon_theme}, 19 | appearance : ${namespace}.theme.Appearance 20 | } 21 | }); -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/qx-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "libraries": [ 3 | { 4 | "library_name": "Qooxdoo API Viewer", 5 | "library_version": "1.0.11", 6 | "path": "qx_packages/qooxdoo_qxl_apiviewer_v1_0_11", 7 | "uri": "qooxdoo/qxl.apiviewer", 8 | "repo_name": "qooxdoo/qxl.apiviewer", 9 | "repo_tag": "v1.0.11" 10 | }, 11 | { 12 | "library_name": "versionlabel", 13 | "library_version": "1.0.1", 14 | "path": "qx_packages/qooxdoo_qxl_versionlabel_v1_0_1", 15 | "uri": "qooxdoo/qxl.versionlabel", 16 | "repo_name": "qooxdoo/qxl.versionlabel", 17 | "repo_tag": "v1.0.1" 18 | } 19 | ], 20 | "version": "2.1.0" 21 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default.dot 3 | title: About 4 | navigation: true 5 | --- 6 | 7 | This is the built in web server for Qooxdoo, serving your application. 8 | 9 | You can find Qooxdoo on the web at http://www.qooxdoo.org and on GitHub at http://github.com/qooxdoo/qooxdoo. 10 | 11 | If you have questions, please ask them at [StackOverflow](https://stackoverflow.com/questions/tagged/qooxdoo) and make sure you use the "qooxdoo" tag when you post. 12 | 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 | 15 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue309.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue309", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | unresolvedDefaultArg: function(caption="Event Recorder") { 6 | const objectId = caption.replace(/ /g, "").toLocaleLowerCase(); 7 | console.log(objectId); 8 | }, 9 | 10 | unresolvedSpreadOperator(dest, ...srcs) { 11 | srcs.forEach(function(src) { 12 | if (src) { 13 | src.forEach(function(elem) { 14 | if (!qx.lang.Array.contains(dest, src)) { 15 | dest.push(elem); 16 | } 17 | }); 18 | } 19 | }); 20 | return dest; 21 | } 22 | 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/source/class/issue692/Application.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * @asset(issue692/*) 13 | * @require(qx.core.BaseInit) 14 | */ 15 | qx.Class.define("issue692.Application", { 16 | extend: qx.application.Basic, 17 | members: { 18 | main: function() { 19 | this.base(arguments); 20 | 21 | qx.core.Assert.assertTrue(!Object.values.toString().match(/for\s*\(var\s+/)); 22 | console.log("OK"); 23 | } 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/compile.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ${locales}, 18 | "environment": { 19 | "qx.icontheme": "${icon_theme}" 20 | }, 21 | "applications": [ 22 | { 23 | "class": "${namespace}.Application", 24 | "name": "${namespace}", 25 | "bootPath": "source/boot" 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/compiler/test-externals/myapp/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source" 7 | }, 8 | { 9 | "type": "build", 10 | "outputPath": "compiled/build", 11 | "minify": "beautify" 12 | } 13 | ], 14 | "defaultTarget": "source", 15 | "locales": ["en"], 16 | "environment": { 17 | "qx.icontheme": "Tango" 18 | }, 19 | "applications": [ 20 | { 21 | "class": "myapp.Application", 22 | "theme": "qx.theme.Simple", 23 | "name": "myapp", 24 | "bootPath": "source/boot" 25 | } 26 | ], 27 | "libraries": [ 28 | ".", "../mylib" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/resource/testLegalSCSS/scss/test_scss.scss: -------------------------------------------------------------------------------- 1 | @import "common/all"; 2 | @import "styles"; 3 | @import "ui/all"; 4 | 5 | /* table */ 6 | .grid { 7 | width: 100%; 8 | table-layout: fixed; 9 | background-color:#FFFFFF; 10 | color:#000000; 11 | font-size:.8em; 12 | overflow:hidden; 13 | border-collapse:collapse; 14 | empty-cells: show; 15 | } 16 | 17 | /* tr */ 18 | grid-row { 19 | } 20 | 21 | /* td */ 22 | .grid-cell { 23 | border-bottom-width: thin; 24 | border-bottom-style:solid; 25 | border-bottom-color:lightgray; 26 | } 27 | 28 | /* grid, div header */ 29 | .cell-header { 30 | font-weight:bold; 31 | } 32 | 33 | /* grid, div */ 34 | .cell { 35 | } 36 | 37 | 38 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/theme/testLegalSCSS/scss/test_theme_scss.scss: -------------------------------------------------------------------------------- 1 | @import "common/all"; 2 | @import "styles"; 3 | @import "ui/all"; 4 | 5 | /* table */ 6 | .grid { 7 | width: 100%; 8 | table-layout: fixed; 9 | background-color:#FFFFFF; 10 | color:#000000; 11 | font-size:.8em; 12 | overflow:hidden; 13 | border-collapse:collapse; 14 | empty-cells: show; 15 | } 16 | 17 | /* tr */ 18 | grid-row { 19 | } 20 | 21 | /* td */ 22 | .grid-cell { 23 | border-bottom-width: thin; 24 | border-bottom-style:solid; 25 | border-bottom-color:lightgray; 26 | } 27 | 28 | /* grid, div header */ 29 | .cell-header { 30 | font-weight:bold; 31 | } 32 | 33 | /* grid, div */ 34 | .cell { 35 | } 36 | 37 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info": { 4 | "name": "testMixin", 5 | "summary": "", 6 | "description": "", 7 | "homepage": "", 8 | "license": "MIT license", 9 | "authors": [ 10 | { 11 | "name": "", 12 | "email": "" 13 | } 14 | ], 15 | "version": "1.0.0" 16 | }, 17 | "provides": { 18 | "namespace": "testMixin", 19 | "encoding": "utf-8", 20 | "class": "source/class", 21 | "resource": "source/resource", 22 | "translation": "source/translation" 23 | }, 24 | "requires": { 25 | "@qooxdoo/framework": "^6.0.0-beta", 26 | "@qooxdoo/compiler": "^1.0.0-beta" 27 | } 28 | } -------------------------------------------------------------------------------- /test/compiler/test-externals/mylib/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info": { 4 | "name": "mylib", 5 | "summary": "undefined", 6 | "description": "undefined", 7 | "homepage": "undefined", 8 | "license": "MIT license", 9 | "authors": [], 10 | "version": "1.0.0" 11 | }, 12 | "provides": { 13 | "namespace": "mylib", 14 | "encoding": "utf-8", 15 | "class": "source/class", 16 | "resource": "source/resource", 17 | "translation": "source/translation" 18 | }, 19 | "externalResources": { 20 | "script": [ "mylib/c.js", "http://cdn.example.com/my/d.js" ] 21 | }, 22 | "requires": { 23 | "@qooxdoo/framework": "^6.0.0-beta", 24 | "@qooxdoo/compiler": "^1.0.0-beta" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/test/TestInnerClasses.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.test.TestInnerClasses", { 2 | extend: qx.dev.unit.TestCase, 3 | 4 | members: { 5 | funcOne: function() { 6 | return this.base(arguments); 7 | }, 8 | funcTwo() { 9 | return this.base(arguments); 10 | }, 11 | testInnerClasses() { 12 | var clazz = qx.Class.define("demo.MyClass", { 13 | extend: qx.core.Object, 14 | members: { 15 | toHashCode: function() { 16 | return this.base(arguments) + ""; 17 | } 18 | } 19 | }); 20 | 21 | var obj = new clazz(); 22 | obj.toHashCode(); 23 | qx.core.Assert.assertTrue(true); 24 | } 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /bootstrap-compiler: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const utils = require("./bin/tools/utils"); 4 | const fs = require("fs"); 5 | 6 | (async function() { 7 | let upgradeFramework = false; 8 | let version = null; 9 | for (let i = 2; i < process.argv.length; i++) { 10 | let arg = process.argv[i]; 11 | if (arg == "--upgrade-framework") { 12 | upgradeFramework = true; 13 | } else if (arg.startsWith("--")) { 14 | console.error("Invalid argument " + arg); 15 | } else { 16 | version = arg; 17 | } 18 | } 19 | 20 | if (!version) { 21 | version = require("./package.json").version; 22 | } 23 | 24 | await utils.bootstrapCompiler(version, upgradeFramework); 25 | process.exit(0); 26 | })(); 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /test/compiler/test-externals/myapp/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "myapp", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "myapp", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-translation/mylib/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "mylib", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "mylib", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-translation/tranapp/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "tranapp", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "tranapp", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info": { 4 | "name": "issue692", 5 | "summary": "Issue 692 reproduction & unit test", 6 | "description": "Issue 692 reproduction & unit test", 7 | "homepage": "undefined", 8 | "license": "MIT license", 9 | "authors": [], 10 | "version": "1.0.0" 11 | }, 12 | "provides": { 13 | "namespace": "issue692", 14 | "encoding": "utf-8", 15 | "class": "source/class", 16 | "resource": "source/resource", 17 | "translation": "source/translation" 18 | }, 19 | "requires": { 20 | "@qooxdoo/framework": "^6.0.0-beta", 21 | "@qooxdoo/compiler": "^1.0.0-beta" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue715/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info": { 4 | "name": "issue715", 5 | "summary": "Issue 715 reproduction & unit test", 6 | "description": "Issue 715 reproduction & unit test", 7 | "homepage": "undefined", 8 | "license": "MIT license", 9 | "authors": [], 10 | "version": "1.0.0" 11 | }, 12 | "provides": { 13 | "namespace": "issue715", 14 | "encoding": "utf-8", 15 | "class": "source/class", 16 | "resource": "source/resource", 17 | "translation": "source/translation" 18 | }, 19 | "requires": { 20 | "@qooxdoo/framework": "^6.0.0-beta", 21 | "@qooxdoo/compiler": "^1.0.0-beta" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/compile.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ${locales}, 18 | "environment": { 19 | "qx.icontheme": "${icon_theme}" 20 | }, 21 | "applications": [ 22 | { 23 | "class": "${namespace}.Application", 24 | "theme": "${namespace}.theme.Theme", 25 | "name": "${namespace}", 26 | "bootPath": "source/boot" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/class/interface.tmpl.js: -------------------------------------------------------------------------------- 1 | ${header} 2 | 3 | /** 4 | * This is a qooxdoo interface 5 | */ 6 | qx.Interface.define("${classname}", 7 | { 8 | //extend : my.extended.interface, 9 | 10 | /** 11 | * Events that must be declared by this interface 12 | */ 13 | events : 14 | { 15 | /** Fired when something happens */ 16 | "changeSituation" : "qx.event.type.Data" 17 | }, 18 | 19 | /** 20 | * Methonds that must be declared by this interface 21 | */ 22 | members : 23 | { 24 | /** 25 | * Interface method 26 | * @param foo {String} The foo parameter 27 | * @param foo {Number} The bar parameter 28 | * @return {String} The result of the method. 29 | */ 30 | myMethod : function(foo, bar){} 31 | } 32 | }); -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ["en"], 18 | "environment": { 19 | "qx.icontheme": "Tango" 20 | }, 21 | "applications": [ 22 | { 23 | "class": "issue440.Application", 24 | "theme": "qx.theme.Indigo", 25 | "name": "issue440", 26 | "bootPath": "source/boot" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /test/compiler/testlib/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "name": "testlib", 4 | "summary": "Custom Library", 5 | "description": "This is part of unit tests for the compiler", 6 | "homepage": "http://some.homepage.url/", 7 | "license": "SomeLicense", 8 | "authors": [], 9 | "version": "1.0.0" 10 | }, 11 | "provides": { 12 | "namespace": "testlib", 13 | "encoding": "utf-8", 14 | "class": "source/class", 15 | "resource": "source/resource", 16 | "translation": "source/translation" 17 | }, 18 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 19 | "requires": { 20 | "@qooxdoo/compiler": "^1.0.0-beta", 21 | "@qooxdoo/framework": "^6.0.0-alpha" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/unittest/test-compiler/classIssue726.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("classIssue726", 2 | { 3 | members: 4 | { 5 | test_1: function () { 6 | let test = "class:1:2"; 7 | let [t_0, t_1] = test.split(":"); 8 | console.log(t_0, t_1); 9 | let [testClass, ...testName] = test.split(":"); 10 | console.log(testClass, testName); 11 | }, 12 | test_2: function (test_2_param1 = {}) { 13 | console.log(test_2_param1); 14 | }, 15 | test_3: function ({test_3_param1, test_3_param2} = {}) { 16 | console.log(test_3_param1, test_3_param2); 17 | }, 18 | test_4: function ({test_4_param1 = 1, test_4_param2 = 2} = {}) { 19 | console.log(test_4_param1, test_4_param2); 20 | } 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testdynamic/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "name": "testlib", 4 | "summary": "Custom Library", 5 | "description": "This is part of unit tests for the compiler", 6 | "homepage": "http://some.homepage.url/", 7 | "license": "SomeLicense", 8 | "authors": [], 9 | "version": "1.0.0" 10 | }, 11 | "provides": { 12 | "namespace": "testlib", 13 | "encoding": "utf-8", 14 | "class": "source/class", 15 | "resource": "source/resource", 16 | "translation": "source/translation" 17 | }, 18 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 19 | "requires": { 20 | "@qooxdoo/compiler": "^1.0.0-beta", 21 | "@qooxdoo/framework": "^6.0.0-alpha" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/Manifest.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "${name}", 6 | 7 | "summary" : "${summary}", 8 | "description" : "${description}", 9 | 10 | "homepage" : "${homepage}", 11 | 12 | "license" : "${license}", 13 | "authors" : ${author_map}, 14 | 15 | "version" : "${version}" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "${namespace}", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "${qooxdoo_range}", 29 | "@qooxdoo/compiler" : "${compiler_range}" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/Manifest.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "${name}", 6 | 7 | "summary" : "${summary}", 8 | "description" : "${description}", 9 | 10 | "homepage" : "${homepage}", 11 | 12 | "license" : "${license}", 13 | "authors" : ${author_map}, 14 | 15 | "version" : "${version}" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "${namespace}", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "${qooxdoo_range}", 29 | "@qooxdoo/compiler" : "${compiler_range}" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/Manifest.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "${name}", 6 | 7 | "summary" : "${summary}", 8 | "description" : "${description}", 9 | 10 | "homepage" : "${homepage}", 11 | 12 | "license" : "${license}", 13 | "authors" : ${author_map}, 14 | 15 | "version" : "${version}" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "${namespace}", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "${qooxdoo_range}", 29 | "@qooxdoo/compiler" : "${compiler_range}" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "issue440", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "issue440", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "issue553", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "issue553", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "issue553", 6 | 7 | "summary" : "undefined", 8 | "description" : "undefined", 9 | 10 | "homepage" : "undefined", 11 | 12 | "license" : "MIT license", 13 | "authors" : [], 14 | 15 | "version" : "1.0.0" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "issue553", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | 27 | "requires": { 28 | "@qooxdoo/framework": "^6.0.0-beta", 29 | "@qooxdoo/compiler" : "^1.0.0-beta" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/partials/icon-twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ["en"], 18 | "environment": { 19 | "qx.icontheme": "Tango" 20 | }, 21 | "applications": [ 22 | { 23 | "class": "testLegalSCSS.Application", 24 | "theme": "qx.theme.Indigo", 25 | "name": "testLegalSCSS" 26 | } 27 | ], 28 | "sass": { 29 | "compiler": "legacy", 30 | "copyOriginal": true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue494.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Issue494PartThree", { 2 | extend: qx.core.Object, 3 | 4 | members: { 5 | myFunction(variable) { 6 | } 7 | } 8 | }); 9 | 10 | /** 11 | * @ignore(functionName) // Declare in file ./xx/xx/xx.js 12 | * @ignore(className) // external package 13 | */ 14 | qx.Class.define("testapp.Issue494", { 15 | extend: qx.core.Object, 16 | 17 | members: { 18 | myFunction(variable) { 19 | functionName(variable); 20 | new className(variable); 21 | className.fct(variable); 22 | 23 | new testapp.Issue494PartTwo(); 24 | new testapp.Issue494PartThree(); 25 | } 26 | } 27 | }); 28 | 29 | qx.Class.define("testapp.Issue494PartTwo", { 30 | extend: qx.core.Object, 31 | 32 | members: { 33 | myFunction(variable) { 34 | } 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ["en"], 18 | "environment": { 19 | "qx.icontheme": "Tango" 20 | }, 21 | "applications": [ 22 | { 23 | "class": "issue553.ApplicationOne", 24 | "theme": "qx.theme.Indigo", 25 | "name": "issue553one" 26 | }, 27 | { 28 | "class": "issue553.ApplicationTwo", 29 | "theme": "qx.theme.Indigo", 30 | "name": "issue553two" 31 | } 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue692/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "application-types": [ "node" ], 8 | "babelOptions" : { 9 | "targets":"node >= 11" 10 | } 11 | }, 12 | { 13 | "type": "build", 14 | "outputPath": "compiled/build", 15 | "application-types": [ "node" ], 16 | "babelOptions" : { 17 | "targets":"node >= 11" 18 | } 19 | } 20 | ], 21 | "defaultTarget": "source", 22 | "locales": ["en"], 23 | "environment": { 24 | "qx.icontheme": "Tango" 25 | }, 26 | "applications": [ 27 | { 28 | "class": "issue692.Application", 29 | "name": "issue692", 30 | "type": "node" 31 | } 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue715/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "application-types": [ "node" ], 8 | "babelOptions" : { 9 | "targets":"node >= 11" 10 | } 11 | }, 12 | { 13 | "type": "build", 14 | "outputPath": "compiled/build", 15 | "application-types": [ "node" ], 16 | "babelOptions" : { 17 | "targets":"node >= 11" 18 | } 19 | } 20 | ], 21 | "defaultTarget": "source", 22 | "locales": ["en"], 23 | "environment": { 24 | "qx.icontheme": "Tango" 25 | }, 26 | "applications": [ 27 | { 28 | "class": "issue715.Application", 29 | "name": "issue715", 30 | "type": "node" 31 | } 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /source/resource/qx/tool/bin/download-assets: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 4 | ASSET_DIR=$(dirname $DIR)/website/src/assets 5 | 6 | # versions 7 | BOOTSTRAP_VERSION=4.0.0-beta.3 8 | FONTAWESOME_VERSION=v5.0.2 9 | JQUERY_VERSION=3.2.1 10 | 11 | # download 12 | FILES=( 13 | "bootstrap.min.css https://maxcdn.bootstrapcdn.com/bootstrap/$BOOTSTRAP_VERSION/css/bootstrap.min.css" 14 | "bootstrap.min.css.map https://maxcdn.bootstrapcdn.com/bootstrap/$BOOTSTRAP_VERSION/css/bootstrap.min.css.map" 15 | "abel.css https://fonts.googleapis.com/css?family=Abel" 16 | "buttons.js https://buttons.github.io/buttons.js" 17 | "fontawesome-all.js https://use.fontawesome.com/releases/$FONTAWESOME_VERSION/js/all.js" 18 | "jquery.js https://code.jquery.com/jquery-$JQUERY_VERSION.min.js" 19 | ) 20 | 21 | for CMD in "${FILES[@]}"; do 22 | wget -nv -O $ASSET_DIR/$CMD 23 | done 24 | -------------------------------------------------------------------------------- /qx-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "libraries": [ 3 | { 4 | "library_name": "Qooxdoo API Viewer", 5 | "library_version": "1.0.15", 6 | "path": "qx_packages/qooxdoo_qxl_apiviewer_v1_0_15", 7 | "uri": "qooxdoo/qxl.apiviewer", 8 | "repo_name": "qooxdoo/qxl.apiviewer", 9 | "repo_tag": "v1.0.15" 10 | }, 11 | { 12 | "library_name": "versionlabel", 13 | "library_version": "1.0.2", 14 | "path": "qx_packages/qooxdoo_qxl_versionlabel_v1_0_2", 15 | "uri": "qooxdoo/qxl.versionlabel", 16 | "repo_name": "qooxdoo/qxl.versionlabel", 17 | "repo_tag": "v1.0.2" 18 | }, 19 | { 20 | "library_name": "qxl.testnode", 21 | "library_version": "1.0.8", 22 | "path": "qx_packages/qooxdoo_qxl_testnode_v1_0_8", 23 | "uri": "qooxdoo/qxl.testnode", 24 | "repo_name": "qooxdoo/qxl.testnode", 25 | "repo_tag": "v1.0.8" 26 | } 27 | ], 28 | "version": "2.1.0" 29 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/compile.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": ${locales}, 18 | 19 | "applications": [ 20 | { 21 | "class": "${namespace}.Application", 22 | "theme": "", 23 | "name": "${namespace}", 24 | "type" : "node", 25 | "include" : [ 26 | "qx.core.BaseInit" 27 | ], 28 | "exclude" : [ 29 | "qx.bom.Selector", 30 | "qx.bom.client.Html", 31 | "qx.event.handler.Pointer", 32 | "qx.event.handler.Gesture", 33 | "qx.event.handler.PointerCore" 34 | ] 35 | } 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/LibraryApplication.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2020 Henner Kollmann 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Henner Kollmann (Henner.Kollmann@gmx.de, @hkollmann) 16 | 17 | ************************************************************************ */ 18 | 19 | /** 20 | * This is the main application class of the compiler; it does nothing 21 | * during startup so that it can be used as a library 22 | * 23 | * @asset(qx/tool/*) 24 | * @use qx.tool.cli.Cli 25 | */ 26 | qx.Class.define("qx.tool.cli.LibraryApplication", { 27 | extend: qx.application.Basic, 28 | members: { 29 | main() { 30 | // Nothing to do 31 | } 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/partials/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /source/class/qx/tool/config/Compile.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2019 The qooxdoo developers 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | 19 | /** 20 | * A model for the compile.json file 21 | */ 22 | qx.Class.define("qx.tool.config.Compile", { 23 | extend: qx.tool.config.Abstract, 24 | type: "singleton", 25 | statics: { 26 | config: { 27 | fileName: "compile.json", 28 | version: "^1.0.0" 29 | } 30 | }, 31 | construct: function() { 32 | this.base(arguments, this.self(arguments).config); 33 | } 34 | }); 35 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/Manifest.tmpl.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "${name}", 6 | 7 | "summary" : "${summary}", 8 | "description" : "${description}", 9 | 10 | "homepage" : "${homepage}", 11 | 12 | "license" : "${license}", 13 | "authors" : ${author_map}, 14 | 15 | "version" : "${version}" 16 | }, 17 | 18 | "provides" : 19 | { 20 | "namespace" : "${namespace}", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | "externalResources": { 27 | "script": [ 28 | ], 29 | "css": [ 30 | "${namespace}/css/custom.css" 31 | ] 32 | }, 33 | 34 | "requires": { 35 | "@qooxdoo/framework": "${qooxdoo_range}", 36 | "@qooxdoo/compiler" : "${compiler_range}" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /source/class/qx/tool/config/Manifest.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2019 The qooxdoo developers 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | 19 | /** 20 | * A model for the Manifest.json file 21 | */ 22 | qx.Class.define("qx.tool.config.Manifest", { 23 | extend: qx.tool.config.Abstract, 24 | type: "singleton", 25 | statics: { 26 | config: { 27 | fileName: "Manifest.json", 28 | version: "1.0.0" 29 | } 30 | }, 31 | construct: function() { 32 | this.base(arguments, this.self(arguments).config); 33 | } 34 | }); 35 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Issue488.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | 3 | qx.Class.define("testapp.Issue488", { 4 | extend: qx.core.Object, 5 | 6 | construct(options) { 7 | this.base(arguments); 8 | 9 | console.log(options.apiKey); 10 | console.log(dontKnow); 11 | [].slice.call(this, 1); 12 | }, 13 | 14 | members: { 15 | api: function(method, path, options) { 16 | abc=1; 17 | return request(ro); 18 | }, 19 | 20 | test() { 21 | fs.readFile("abc.txt"); 22 | var a = 1; 23 | var b = 2; 24 | [ a, b, c ].forEach(a => console.log(a)); 25 | } 26 | }, 27 | 28 | statics: { 29 | findOrCreateSsoGroup(apos, type, data) { 30 | return testapp.Issue488.findSsoGroupById(apos, type, data.id) 31 | .then(group => { 32 | return testapp.Issue488.findGroup(apos, { title: data.title }) 33 | .then(group => { 34 | }); 35 | }); 36 | } 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/Warnings1.js: -------------------------------------------------------------------------------- 1 | qx.Class.define("testapp.Warnings1", { 2 | extend: qx.core.Object, 3 | 4 | construct(options) { 5 | this.base(arguments); 6 | 7 | let proxyOpts = { 8 | proxyReqPathResolver(req) { 9 | console.log(`proxyReqPathResolver: ${req.originalUrl}`); 10 | return req.originalUrl; 11 | }, 12 | proxyReqOptDecorator(proxyReqOpts, srcReq) { 13 | let cookies = srcReq.cookieJarStore && srcReq.cookieJarStore.getAllCookiesSync() || null; 14 | if (cookies) { 15 | cookies = cookies.map(cookie => cookie.toString()); 16 | let arr = proxyReqOpts.headers["Set-Cookie"]; 17 | if (!arr) 18 | arr = proxyReqOpts.headers["Set-Cookie"] = []; 19 | qx.lang.Array.append(arr, cookies); 20 | } 21 | console.log(`proxyReqOptDecorator: ${JSON.stringify(proxyReqOpts)}`); 22 | return proxyReqOpts; 23 | } 24 | }; 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {{= it.title || it.site.title }} 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue715/source/class/issue715/Application.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @require(qx.core.BaseInit) 3 | */ 4 | qx.Class.define("issue715.Application", { 5 | extend: qx.application.Basic, 6 | properties: { 7 | myProp: { 8 | init: null, 9 | nullable: true, 10 | apply: "__applyMyProp" 11 | } 12 | }, 13 | members: { 14 | __privateOne: 1, 15 | 16 | main() { 17 | this.base(arguments); 18 | 19 | this["__privateOne"] = "one"; 20 | this["__privateTwo"] = "two"; 21 | this.__privateOne = "ONE"; 22 | this.__privateTwo = "TWO"; 23 | }, 24 | 25 | __applyMyProp() { 26 | // Nothing 27 | } 28 | }, 29 | statics: { 30 | __privateStaticOne: 1, 31 | 32 | test: function() { 33 | issue715.Application["__privateStaticOne"] = "one"; 34 | issue715.Application["__privateStaticTwo"] = "two"; 35 | issue715.Application.__privateStaticOne = "ONE"; 36 | issue715.Application.__privateStaticTwo = "TWO"; 37 | } 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/readme.tmpl.txt: -------------------------------------------------------------------------------- 1 | SERVER Skeleton - A qooxdoo Application Template 2 | ================================================ 3 | 4 | This skeleton application was created by running the 'qx create' 5 | script. You usually will want to run 6 | 7 | qx compile 8 | 9 | in this directory first thing. For more information about how to use this 10 | skeleton, please refer to the 'skeleton' section in the manual. 11 | 12 | You can safely replace the entire contents of this file with your own 13 | documentation. 14 | 15 | 16 | Skeleton Usage 17 | ============== 18 | 19 | After running qx compile you can invoke the generated script like this: 20 | 21 | # Node.js 22 | $ node source/script/${name}.js 23 | 24 | or 25 | 26 | # Rhino 27 | $ cd source/script && java -cp /js.jar org.mozilla.javascript.tools.shell.Main ${name}.js 28 | 29 | This of course requires the presence of a Node or Rhino installation on your 30 | system. The build version of the application is analogously written to build/script. 31 | 32 | 33 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "application-types": [ 7 | "node" 8 | ], 9 | "outputPath": "compiled/source", 10 | "bundle": { 11 | "include": "qx.*" 12 | } 13 | }, 14 | { 15 | "type": "build", 16 | "application-types": [ 17 | "node" 18 | ], 19 | "outputPath": "compiled/build" 20 | } 21 | ], 22 | "defaultTarget": "source", 23 | "locales": ["en"], 24 | "environment": { 25 | "qx.icontheme": "Tango" 26 | }, 27 | "applications": [ 28 | { 29 | "class": "issue553.ApplicationOne", 30 | "theme": "qx.theme.Indigo", 31 | "name": "issue553one", 32 | "type": "node" 33 | }, 34 | { 35 | "class": "issue553.ApplicationTwo", 36 | "theme": "qx.theme.Indigo", 37 | "name": "issue553two", 38 | "type": "node" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Overview.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 4 | 5 | License: 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * TODO: needs documentation 13 | */ 14 | qx.Class.define("${namespace}.page.Overview", 15 | { 16 | extend : qx.ui.mobile.page.NavigationPage, 17 | 18 | construct : function() 19 | { 20 | this.base(arguments); 21 | this.setTitle("Overview"); 22 | this.setShowBackButton(true); 23 | this.setBackButtonText("Back"); 24 | }, 25 | 26 | 27 | members : 28 | { 29 | // overridden 30 | _initialize : function() 31 | { 32 | this.base(arguments); 33 | 34 | this.getContent().add(new qx.ui.mobile.basic.Label("Your first app.")); 35 | }, 36 | 37 | 38 | // overridden 39 | _back : function(triggeredByKeyEvent) 40 | { 41 | qx.core.Init.getApplication().getRouting().back(); 42 | } 43 | } 44 | }); 45 | -------------------------------------------------------------------------------- /source/class/qx/tool/config/Registry.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2019 The qooxdoo developers 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | 19 | /** 20 | * A model for the Manifest.json file 21 | */ 22 | qx.Class.define("qx.tool.config.Registry", { 23 | extend: qx.tool.config.Abstract, 24 | type: "singleton", 25 | statics: { 26 | config: { 27 | fileName: "qooxdoo.json", 28 | version: "1.0.0" 29 | } 30 | }, 31 | construct: function() { 32 | this.base(arguments, this.self(arguments).config); 33 | }, 34 | 35 | members: { 36 | getLibraries() { 37 | return this.getValue("libraries"); 38 | } 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /test/compiler/testapp/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "name": "testapp", 4 | "summary": "Custom Application", 5 | "description": "This is a skeleton for a custom application with qooxdoo.", 6 | "homepage": "http://some.homepage.url/", 7 | "license": "SomeLicense", 8 | "authors": [], 9 | "version": "1.0.0" 10 | }, 11 | "provides": { 12 | "namespace": "testapp", 13 | "encoding": "utf-8", 14 | "class": "source/class", 15 | "resource": "source/resource", 16 | "translation": "source/translation" 17 | }, 18 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 19 | "requires": { 20 | "@qooxdoo/compiler": "^1.0.0-beta", 21 | "@qooxdoo/framework": "^6.0.0-alpha" 22 | }, 23 | "externalResources": { 24 | "script": [ "testapp/test-external.js", "https://code.jquery.com/jquery-3.4.1.js", "qx/test/script.js" ], 25 | "css": [ "testapp/test-external.css", "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css", "qx/test/style.css" ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/compiler/testlib/compile.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("path"); 3 | 4 | qx.Class.define("qxl.compilertests.testlib.CompilerApi", { 5 | extend: qx.tool.cli.api.CompilerApi, 6 | 7 | members: { 8 | async load() { 9 | let data = await this.base(arguments); 10 | if (!data.environment) 11 | data.environment = {}; 12 | data.environment.testlibCompilerApi = "two"; 13 | return data; 14 | } 15 | } 16 | }); 17 | 18 | qx.Class.define("qxl.compilertests.testlib.LibraryApi", { 19 | extend: qx.tool.cli.api.LibraryApi, 20 | 21 | members: { 22 | async load() { 23 | let command = this.getCompilerApi().getCommand(); 24 | command.addListener("checkEnvironment", e => this._appCompiling(e.getData().application, e.getData().environment)); 25 | }, 26 | 27 | _appCompiling(application, environment) { 28 | environment.testlibLibraryApi = "one"; 29 | } 30 | } 31 | }); 32 | 33 | module.exports = { 34 | LibraryApi: qxl.compilertests.testlib.LibraryApi, 35 | CompilerApi: qxl.compilertests.testlib.CompilerApi 36 | }; 37 | -------------------------------------------------------------------------------- /bin/known-good/qx: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const path = require("path"); 3 | const fs = require("fs"); 4 | const utils = require("../tools/utils"); 5 | 6 | async function main() { 7 | let knownGood = path.join(__dirname, "..", "..", "known-good"); 8 | let qx = path.join(knownGood, "node_modules", ".bin", "qx"); 9 | if (!fs.existsSync(qx)) { 10 | console.log("Compiling source version"); 11 | await utils.runCommand(knownGood, "npm", "ci"); 12 | await utils.runCommand(knownGood, "npm", "upgrade", "@qooxdoo/compiler"); 13 | if (!fs.existsSync(qx)) { 14 | console.error("Failed to discover known-good version of the compiler!"); 15 | process.exit(1); 16 | } 17 | } 18 | let data = await utils.fsPromises.readFile(path.join(knownGood, "node_modules", "@qooxdoo", "compiler", "package.json")); 19 | data = JSON.parse(data); 20 | console.log("***"); 21 | console.log("*** Known Good Compiler Version: " + data.version); 22 | console.log("***"); 23 | var myArgs = process.argv.slice(2); 24 | console.log("run", qx, ...myArgs); 25 | utils.runCommand(".", qx, ...myArgs); 26 | } 27 | main(); 28 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/Manifest-1-0-0.json", 3 | "info" : 4 | { 5 | "name" : "testLegalSCSS", 6 | "summary" : "", 7 | "description" : "", 8 | "homepage" : "", 9 | "license" : "MIT license", 10 | "authors" : [ 11 | { 12 | "name": "", 13 | "email": "" 14 | } 15 | ], 16 | "version" : "1.0.0" 17 | }, 18 | "provides" : 19 | { 20 | "namespace" : "testLegalSCSS", 21 | "encoding" : "utf-8", 22 | "class" : "source/class", 23 | "resource" : "source/resource", 24 | "translation" : "source/translation" 25 | }, 26 | "externalResources": { 27 | "script": [ 28 | ], 29 | "css": [ 30 | "testLegalSCSS/css/test_css.css", 31 | "testLegalSCSS/scss/test_scss.scss", 32 | "testLegalSCSS/scss/test_theme_scss.scss" 33 | 34 | ] 35 | }, 36 | "requires": { 37 | "@qooxdoo/framework": "^6.0.0-beta", 38 | "@qooxdoo/compiler" : "^1.0.0-beta" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/source/class/issue553/ApplicationOne.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "issue553" 13 | * 14 | * @asset(issue553/*) 15 | */ 16 | qx.Class.define("issue553.ApplicationOne", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | } 41 | } 42 | }); -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553_node/source/class/issue553/ApplicationTwo.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "issue553" 13 | * 14 | * @asset(issue553/*) 15 | */ 16 | qx.Class.define("issue553.ApplicationTwo", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | } 41 | } 42 | }); -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 John Spackman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/class/mixin.tmpl.js: -------------------------------------------------------------------------------- 1 | ${header} 2 | 3 | /** 4 | * This is a qooxdoo mixin 5 | */ 6 | qx.Mixin.define("${classname}", 7 | { 8 | include : [], 9 | 10 | /** 11 | * Properties provided by this mixin 12 | */ 13 | properties : 14 | { 15 | /** The foo property of the object */ 16 | foo : 17 | { 18 | apply : "_applyFoo", 19 | nullable : true, 20 | check : "String", 21 | event : "changeFoo" 22 | } 23 | }, 24 | 25 | /** 26 | * Events provided by this mixin 27 | */ 28 | events : 29 | { 30 | /** Fired when something happens */ 31 | "changeSituation" : "qx.event.type.Data" 32 | }, 33 | 34 | /** 35 | * Methods provided by this mixin 36 | */ 37 | members : 38 | { 39 | /** 40 | * Mixin method method 41 | * @param {String} foo The foo parameter 42 | * @param {Number} bar The bar parameter 43 | * @return {String} The result of the method. 44 | */ 45 | myMethod : function(foo, bar) 46 | { 47 | // 48 | }, 49 | 50 | /** Applies the foo property */ 51 | _applyFoo : function(value, old) 52 | { 53 | // 54 | } 55 | } 56 | }); -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/targets/meta/PolyfillJs.js: -------------------------------------------------------------------------------- 1 | const fs = qx.tool.utils.Promisify.fs; 2 | const path = require("upath"); 3 | 4 | /** 5 | * Represents a "polyfill.js" that is generated as part of a compile 6 | */ 7 | qx.Class.define("qx.tool.compiler.targets.meta.PolyfillJs", { 8 | extend: qx.tool.compiler.targets.meta.AbstractJavascriptMeta, 9 | 10 | construct(appMeta) { 11 | this.base(arguments, appMeta, `${appMeta.getApplicationRoot()}polyfill.js`); 12 | }, 13 | 14 | properties: { 15 | needsWriteToDisk: { 16 | init: true, 17 | refine: true 18 | } 19 | }, 20 | 21 | members: { 22 | 23 | /* 24 | * @Override 25 | */ 26 | async writeSourceCodeToStream(ws) { 27 | const srcFilename = path.join(require.resolve("@babel/polyfill"), "../../dist/polyfill.js"); 28 | let rs = fs.createReadStream(srcFilename, "utf8"); 29 | await new Promise((resolve, reject) => { 30 | rs.on("end", resolve); 31 | rs.on("error", reject); 32 | rs.pipe(ws, { end: false }); 33 | }); 34 | }, 35 | 36 | /* 37 | * @Override 38 | */ 39 | async getSourceMap() { 40 | return null; 41 | } 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/resources/MetaLoader.js: -------------------------------------------------------------------------------- 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-2017 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 | 23 | qx.Class.define("qx.tool.compiler.resources.MetaLoader", { 24 | extend: qx.tool.compiler.resources.ResourceLoader, 25 | 26 | construct: function() { 27 | this.base(arguments, ".meta"); 28 | }, 29 | 30 | members: { 31 | async load(asset) { 32 | asset.getFileInfo().meta = await qx.tool.utils.Json.loadJsonAsync(asset.getSourceFilename()); 33 | } 34 | } 35 | }); 36 | -------------------------------------------------------------------------------- /source/class/qx/tool/config/Lockfile.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2019 The qooxdoo developers 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | 19 | /** 20 | * A model for the lockfile, which has a version, but no "official" schema (yet) 21 | */ 22 | const version = "2.1.0"; 23 | qx.Class.define("qx.tool.config.Lockfile", { 24 | extend: qx.tool.config.Abstract, 25 | type: "singleton", 26 | statics: { 27 | config: { 28 | fileName: qx.tool.cli.commands.Package.lockfile.filename, 29 | version, 30 | validate: false, 31 | createIfNotExists: true, 32 | templateFunction: () => ({ 33 | libraries: [], 34 | version 35 | }) 36 | } 37 | }, 38 | construct: function() { 39 | this.base(arguments, this.self(arguments).config); 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /source/resource/qx/tool/schema/qooxdoo-1-0-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "qooxdoo.json Schema", 3 | "$schema": "http://json-schema.org/draft-07/schema", 4 | "$id": "https://qooxdoo.org/schema/qooxdoo-1-0-0.json", 5 | "description": "qooxdo.json is a registry for qooxdoo libraries in a repository/package.", 6 | "type": "object", 7 | "required": [ 8 | "libraries" 9 | ], 10 | "additionalProperties": false, 11 | "properties": { 12 | "$schema": { 13 | "type": "string", 14 | "description": "the json schema of the version of qooxdoo.json", 15 | "enum": [ 16 | "https://qooxdoo.org/schema/qooxdoo-1-0-0.json", 17 | "https://raw.githubusercontent.com/qooxdoo/qooxdoo-compiler/master/source/resource/qx/tool/schema/qooxdoo-1-0-0.json" 18 | ] 19 | }, 20 | "libraries": { 21 | "description": "An array of objects with at least a 'path' property, containing the path to the library", 22 | "type": "array", 23 | "items": { 24 | "type": "object", 25 | "properties": { 26 | "path": { 27 | "type": "string" 28 | }, 29 | "main": { 30 | "type": "boolean" 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/boot/nojs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | testMixin - JavaScript is disabled 6 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 | This application requires JavaScript. Please enable it and reload this page. 20 |
21 |
22 |
23 |
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/Manifest-1-0-0.json", 3 | "info": { 4 | "name": "@qooxdoo/qooxdoo-compiler", 5 | "summary": "The new fast JavaScript Compiler for Qooxdoo", 6 | "description": "The Qooxdoo-Compiler is the new compiler and command line interface for Qooxdoo applications. It is written in Node.JS Javascript and replaces the Python-based generator.", 7 | "homepage": "https://github.com/qooxdoo/qooxdoo-compiler", 8 | "license": "MIT license", 9 | "authors": [ 10 | { 11 | "name": "John Spackman (johnspackman)", 12 | "email": "john.spackman@zenesis.com" 13 | }, 14 | { 15 | "name": "Christian Boulanger (cboulanger)", 16 | "email": "info@bibliograph.org" 17 | }, 18 | { 19 | "name": "Henner Kollmann (hkollmann)", 20 | "email": "Henner.Kollmann.gmx.de" 21 | } 22 | ], 23 | "version": "1.0.4" 24 | }, 25 | "provides": { 26 | "namespace": "qxcompiler", 27 | "encoding": "utf-8", 28 | "class": "source/class", 29 | "resource": "source/resource", 30 | "translation": "source/translation" 31 | }, 32 | "requires": { 33 | "@qooxdoo/framework": "^6.0.0-beta", 34 | "@qooxdoo/compiler": "^1.0.0-beta" 35 | } 36 | } -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/boot/nojs.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ${name} - JavaScript is disabled 6 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 | This application requires JavaScript. Please enable it and reload this page. 20 |
21 |
22 |
23 |
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/boot/nojs.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ${name} - JavaScript is disabled 6 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 | This application requires JavaScript. Please enable it and reload this page. 20 |
21 |
22 |
23 |
24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/Application.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2020 Henner Kollmann 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Henner Kollmann (Henner.Kollmann@gmx.de, @hkollmann) 16 | 17 | ************************************************************************ */ 18 | /** 19 | * This is the main application class of the compiler. 20 | * 21 | * @asset(qx/tool/*) 22 | * 23 | */ 24 | qx.Class.define("qx.tool.cli.Application", { 25 | extend: qx.application.Basic, 26 | members: 27 | { 28 | /** 29 | * This method contains the initial application code and gets called 30 | * during startup of the application 31 | */ 32 | main: async function () { 33 | try { 34 | await (new qx.tool.cli.Cli()).run(); 35 | } catch (e) { 36 | qx.tool.compiler.Console.error("Error: " + (e.stack || e.message)); 37 | process.exit(1); 38 | } 39 | } 40 | }, 41 | defer: function (statics) { 42 | qx.log.Logger.setLevel("error"); 43 | } 44 | }); 45 | -------------------------------------------------------------------------------- /test/compiler/test-externals.js: -------------------------------------------------------------------------------- 1 | const test = require("tape"); 2 | const testUtils = require("../../bin/tools/utils"); 3 | const fsPromises = testUtils.fsPromises; 4 | 5 | test("test externals", async assert => { 6 | try { 7 | await testUtils.deleteRecursive("test-externals/myapp/compiled"); 8 | await testUtils.runCompiler("test-externals/myapp", "--target=build", "--write-compile-info"); 9 | 10 | let data = await fsPromises.readFile("test-externals/myapp/compiled/build/myapp/index.js", "utf8"); 11 | assert.ok(!!data.match(/THIS_IS_A_JS/)); 12 | assert.ok(!!data.match(/THIS_IS_B_JS/)); 13 | assert.ok(!!data.match(/THIS_IS_C_JS/)); 14 | assert.ok(!!data.match(/urisBefore: \[ "__external__:http:\/\/cdn.example.com\/my\/d.js" \]/)); 15 | 16 | await testUtils.runCompiler("test-externals/myapp", "--write-compile-info"); 17 | 18 | data = await fsPromises.readFile("test-externals/myapp/compiled/source/myapp/index.js", "utf8"); 19 | assert.ok(!data.match(/THIS_IS_A_JS/)); 20 | assert.ok(!data.match(/THIS_IS_B_JS/)); 21 | assert.ok(!data.match(/THIS_IS_C_JS/)); 22 | assert.ok(!data.match(/urisBefore: \[ "__external__:http:\/\/cdn.example.com\/my\/d.js" \]/)); 23 | 24 | assert.end(); 25 | }catch(ex) { 26 | assert.end(ex); 27 | } 28 | }); 29 | 30 | -------------------------------------------------------------------------------- /test/compiler/test-pkg-migrate.js: -------------------------------------------------------------------------------- 1 | require("../index"); 2 | const rimraf = require("rimraf"); 3 | const fs = qx.tool.utils.Promisify.fs; 4 | const process = require("process"); 5 | const download = require("download"); 6 | 7 | 8 | const appNamespace = "testMigrateApp"; 9 | 10 | (async () => { 11 | try { 12 | console.info("Running migration tests..."); 13 | 14 | if (await fs.existsAsync("test-pkg-migrate")) 15 | rimraf.sync("test-pkg-migrate"); 16 | await fs.mkdirAsync("test-pkg-migrate"); 17 | process.chdir("test-pkg-migrate"); 18 | 19 | // delete existing app 20 | if (await fs.existsAsync(appNamespace) && await fs.statAsync(appNamespace)) { 21 | rimraf.sync(appNamespace); 22 | } 23 | 24 | // download legacy format library 25 | await download("https://github.com/qooxdoo/qxl.apiviewer/archive/v0.1.14.zip", appNamespace, {extract:true, strip: 1}); 26 | process.chdir(appNamespace); 27 | // migrate 28 | await (new qx.tool.cli.commands.package.Migrate({verbose:true})).process(); 29 | // compile (doesn't work like this) 30 | //await (new qx.tool.cli.commands.Compile({feedback:false, target:"source"})).process(); 31 | 32 | // delete the test app 33 | process.chdir(".."); 34 | rimraf.sync(appNamespace); 35 | console.info("All tests passed."); 36 | } catch (e) { 37 | console.error(e); 38 | process.exit(1); 39 | } 40 | })(); 41 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/jsdoc/ReturnParser.js: -------------------------------------------------------------------------------- 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-2017 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 | /** 23 | * Parser for JSDoc "@return" 24 | */ 25 | qx.Class.define("qx.tool.compiler.jsdoc.ReturnParser", { 26 | extend: qx.tool.compiler.jsdoc.CommandParser, 27 | 28 | members: { 29 | parseCommand: function(pdoc, classname, analyser) { 30 | var m = pdoc.body.match(/^(\{([^}]+)\}([\s\S]+)?)?$/); 31 | if (m) { 32 | pdoc.type = this.resolveType((m[2]||"").trim(), classname, analyser); 33 | pdoc.description = m[3]||""; 34 | } else { 35 | delete pdoc.type; 36 | delete pdoc.description; 37 | } 38 | } 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/jsdoc/ThrowsParser.js: -------------------------------------------------------------------------------- 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-2017 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 | /** 23 | * Parser for JSDoc "@return" 24 | */ 25 | qx.Class.define("qx.tool.compiler.jsdoc.ThrowsParser", { 26 | extend:qx.tool.compiler.jsdoc.CommandParser, 27 | 28 | members: { 29 | parseCommand: function(pdoc, classname, analyser) { 30 | var m = pdoc.body.match(/^(\{([^}]+)\}([\s\S]+)?)?$/); 31 | if (m) { 32 | pdoc.type = this.resolveType((m[2]||"").trim(), classname, analyser); 33 | pdoc.description = m[3]||""; 34 | } else { 35 | delete pdoc.type; 36 | delete pdoc.description; 37 | } 38 | } 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/compile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://qooxdoo.org/schema/compile-1-0-0.json", 3 | "targets": [ 4 | { 5 | "type": "source", 6 | "outputPath": "compiled/source", 7 | "bundle": { 8 | "include": "qx.*" 9 | } 10 | }, 11 | { 12 | "type": "build", 13 | "outputPath": "compiled/build" 14 | } 15 | ], 16 | "defaultTarget": "source", 17 | "locales": [ 18 | "en" 19 | ], 20 | "environment": { 21 | "qx.icontheme": "Tango" 22 | }, 23 | "applications": [ 24 | { 25 | "class": "testMixin.Application", 26 | "theme": "testMixin.theme.Theme", 27 | "name": "testMixin", 28 | "bootPath": "source/boot" 29 | }, 30 | { 31 | "class": "qxl.apiviewer.Application", 32 | "theme": "qxl.apiviewer.Theme", 33 | "name": "apiviewer", 34 | "title": "Qooxdoo API Viewer", 35 | "environment": { 36 | "qx.icontheme": "Tango", 37 | "qxl.apiviewer.applicationName": "", 38 | "qxl.apiviewer.exclude": [ 39 | "qxl.*", 40 | "qx.*", 41 | "q", 42 | "qxWeb" 43 | ], 44 | "qxl.apiviewer.include": [] 45 | }, 46 | "include": [ 47 | "qx.*" 48 | ], 49 | "exclude": [ 50 | "qx.test.*", 51 | "qx.module.Blocker", 52 | "qx.module.Placement" 53 | ] 54 | } 55 | ] 56 | } -------------------------------------------------------------------------------- /source/class/qx/tool/cli/commands/Add.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2017 Christian Boulanger 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | /** 19 | * Adds scripts, classes, etc. to the projects 20 | */ 21 | qx.Class.define("qx.tool.cli.commands.Add", { 22 | extend: qx.tool.cli.commands.Command, 23 | 24 | statics: { 25 | 26 | getYargsCommand: function() { 27 | return { 28 | command : "add [options]", 29 | desc : "adds new elements to an existing qooxdoo application/library", 30 | builder : function(yargs) { 31 | qx.tool.cli.Cli.addYargsCommands(yargs, [ 32 | "Class", "Script" 33 | ], "qx.tool.cli.commands.add"); 34 | 35 | return yargs 36 | .demandCommand() 37 | .showHelpOnFail() 38 | .help(); 39 | }, 40 | handler : function(argv) { 41 | } 42 | }; 43 | } 44 | }, 45 | 46 | members: { 47 | // place for common methods. 48 | } 49 | }); 50 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/targets/meta/Javascript.js: -------------------------------------------------------------------------------- 1 | const fs = qx.tool.utils.Promisify.fs; 2 | 3 | /** 4 | * An implementation of IJavascriptMeta for plain old javascript files 5 | */ 6 | qx.Class.define("qx.tool.compiler.targets.meta.Javascript", { 7 | extend: qx.tool.compiler.targets.meta.AbstractJavascriptMeta, 8 | 9 | /** 10 | * Constructor 11 | * 12 | * @param appMeta {qx.tool.compiler.targets.meta.ApplicationMeta} 13 | * @param filename {String} the sourcefile 14 | * @param originalSourceFile {String?} the URI to give to the source map 15 | */ 16 | construct(appMeta, filename, originalSourceFile) { 17 | this.base(arguments, appMeta, filename, originalSourceFile); 18 | }, 19 | 20 | members: { 21 | 22 | /* 23 | * @Override 24 | */ 25 | compile() { 26 | // Nothing 27 | }, 28 | 29 | /* 30 | * @Override 31 | */ 32 | async writeSourceCodeToStream(ws) { 33 | let rs = fs.createReadStream(this.getFilename(), "utf8"); 34 | await new Promise((resolve, reject) => { 35 | rs.on("end", resolve); 36 | rs.on("error", reject); 37 | rs.pipe(ws, { end: false }); 38 | }); 39 | }, 40 | 41 | /* 42 | * @Override 43 | */ 44 | async getSourceMap() { 45 | if (!fs.existsSync(this.getFilename() + ".map")) { 46 | return null; 47 | } 48 | return await fs.readFileAsync(this.getFilename() + ".map", "utf8"); 49 | } 50 | } 51 | }); 52 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/targets/meta/Part.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * A Part collects together all of the javascript files required for a single 4 | * part (load on demand) and merges them together as required. 5 | */ 6 | qx.Class.define("qx.tool.compiler.targets.meta.Part", { 7 | extend: qx.core.Object, 8 | 9 | /** 10 | * Constructor 11 | * 12 | * @param target {Target} the target doing the compilation 13 | * @param name {String} the name of the part 14 | * @param partIndex {Integer} 15 | */ 16 | construct(target, name, partIndex) { 17 | this.base(arguments); 18 | this.__target = target; 19 | this.__name = name; 20 | this.__partIndex = partIndex; 21 | this.__packages = []; 22 | this.__packageLookup = {}; 23 | }, 24 | 25 | members: { 26 | __target: null, 27 | __name: null, 28 | __partIndex: -1, 29 | __packages: null, 30 | __packageLookup: null, 31 | 32 | addPackage(pkg) { 33 | if (!this.__packageLookup[pkg.toHashCode()]) { 34 | this.__packages.push(pkg); 35 | this.__packageLookup[pkg.toHashCode()] = pkg; 36 | } 37 | }, 38 | 39 | hasPackage(pkg) { 40 | return Boolean(this.__packageLookup[pkg.toHashCode()]); 41 | }, 42 | 43 | getDefaultPackage() { 44 | return this.__packages[0]||null; 45 | }, 46 | 47 | serializeInto(parts) { 48 | let arr = parts[this.__name] = []; 49 | this.__packages.forEach(pkg => arr.push(String(pkg.getPackageIndex()))); 50 | } 51 | } 52 | }); 53 | 54 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/class/singleton.tmpl.js: -------------------------------------------------------------------------------- 1 | ${header} 2 | 3 | /** 4 | * This is a qooxdoo singleton class 5 | * 6 | */ 7 | qx.Class.define("${classname}", 8 | { 9 | 10 | extend : ${extend}, 11 | include : [], 12 | type : "singleton", 13 | 14 | /** 15 | * Create a the singleton 16 | */ 17 | construct : function() { 18 | // If you want to call the parent constructor, use 19 | // this.base(arguments); 20 | }, 21 | 22 | /** 23 | * The properties of the singleton 24 | */ 25 | properties : 26 | { 27 | /** The foo property of the object */ 28 | foo : 29 | { 30 | apply : "_applyFoo", 31 | nullable : true, 32 | check : "String", 33 | event : "changeFoo" 34 | } 35 | }, 36 | 37 | /** 38 | * Declaration of events fired by class instances in addition 39 | * to the property change events 40 | */ 41 | events : 42 | { 43 | /** Fired when something happens */ 44 | "changeSituation" : "qx.event.type.Data" 45 | }, 46 | 47 | /** 48 | * Methods and simple properties of the singleton 49 | */ 50 | members : 51 | { 52 | /** 53 | * Singleton method 54 | * @param {String} foo The foo parameter 55 | * @param {Number} bar The bar parameter 56 | * @return {void} The result of the method. 57 | */ 58 | myMethod : function(foo, bar) 59 | { 60 | // 61 | }, 62 | 63 | /** Applies the foo property */ 64 | _applyFoo : function(value, old) 65 | { 66 | // 67 | } 68 | } 69 | }); -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/jsdoc/ChildControlParser.js: -------------------------------------------------------------------------------- 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-2017 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 | /** 23 | * Parser for JSDoc "@param" 24 | */ 25 | qx.Class.define("qx.tool.compiler.jsdoc.ChildControlParser", { 26 | extend: qx.tool.compiler.jsdoc.CommandParser, 27 | 28 | members: { 29 | parseCommand: function(pdoc, classname, analyser) { 30 | var m = pdoc.body.match(/^([\S]+)(\s+\{([^}]+)\}([\s\S]+))??$/); 31 | if (m) { 32 | pdoc.controlName = m[1].trim(); 33 | var type = this.resolveType((m[3]||"").trim(), classname, analyser); 34 | pdoc.description = (m[4]||"").trim(); 35 | pdoc.type = type; 36 | } else { 37 | delete pdoc.controlName; 38 | delete pdoc.type; 39 | delete pdoc.description; 40 | } 41 | } 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/commands/Pkg.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | qooxdoo - the new era of web development 4 | 5 | http://qooxdoo.org 6 | 7 | Copyright: 8 | 2017 Christian Boulanger 9 | 10 | License: 11 | MIT: https://opensource.org/licenses/MIT 12 | See the LICENSE file in the project's top-level directory for details. 13 | 14 | Authors: 15 | * Christian Boulanger (info@bibliograph.org, @cboulanger) 16 | 17 | ************************************************************************ */ 18 | /** 19 | * "qx pkg" is an alias for "qx package" 20 | */ 21 | qx.Class.define("qx.tool.cli.commands.Pkg", { 22 | extend: qx.tool.cli.commands.Package, 23 | statics: { 24 | /** 25 | * The yargs command data 26 | * @return {{}} 27 | */ 28 | getYargsCommand: function() { 29 | return { 30 | command : "pkg [options]", 31 | desc : "alias for 'qx package'.", 32 | builder : function(yargs) { 33 | qx.tool.cli.Cli.addYargsCommands(yargs, [ 34 | "Install", 35 | "List", 36 | "Publish", 37 | "Remove", 38 | "Update", 39 | "Upgrade", 40 | "Migrate" 41 | ], "qx.tool.cli.commands.package"); 42 | return yargs 43 | .demandCommand() 44 | .showHelpOnFail() 45 | .help(); 46 | }, 47 | handler : function(argv) { 48 | // Nothing 49 | } 50 | }; 51 | } 52 | } 53 | }); 54 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/resources/ScssIncludeConverter.js: -------------------------------------------------------------------------------- 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-2017 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 | * * Henner Kollmann (henner.kollmann@gmx.de) 20 | * 21 | * *********************************************************************** */ 22 | 23 | var path = require("upath"); 24 | 25 | qx.Class.define("qx.tool.compiler.resources.ScssIncludeConverter", { 26 | extend: qx.tool.compiler.resources.ResourceConverter, 27 | 28 | members: { 29 | matches(filename) { 30 | filename = path.basename(filename); 31 | return filename[0] == "_" && filename.endsWith(".scss"); 32 | }, 33 | 34 | isDoNotCopy(filename) { 35 | if (qx.tool.compiler.resources.ScssConverter.COPY_ORIGINAL_FILES) { 36 | return false; 37 | } 38 | return true; 39 | }, 40 | 41 | async convert(target, asset, srcFilename, destFilename, isThemeFile) { 42 | await qx.tool.utils.files.Utils.copyFile(srcFilename, destFilename); 43 | } 44 | } 45 | }); 46 | -------------------------------------------------------------------------------- /test/compiler/test-rotate-unique.js: -------------------------------------------------------------------------------- 1 | var test = require("tape"); 2 | var fs = require("fs"); 3 | const testUtils = require("../../bin/tools/utils"); 4 | require("../index"); 5 | 6 | test("Checks rotateUnique", async assert => { 7 | await testUtils.deleteRecursive("test-rotate-unique"); 8 | await testUtils.fsPromises.mkdir("test-rotate-unique"); 9 | 10 | for (var i = 1; i < 6; i++) { 11 | await qx.tool.utils.files.Utils.safeUnlink("test-rotate-unique/log.txt." + i); 12 | } 13 | for (var i = 1; i < 10; i++) { 14 | await qx.tool.utils.files.Utils.rotateUnique("test-rotate-unique/log.txt", 5); 15 | fs.writeFileSync("test-rotate-unique/log.txt", "This is version " + i, "utf8"); 16 | } 17 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt"))); 18 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.1"))); 19 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.2"))); 20 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.3"))); 21 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.4"))); 22 | assert.ok(Boolean(await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.5"))); 23 | assert.ok(!await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.6")); 24 | assert.ok(!await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.7")); 25 | assert.ok(!await qx.tool.utils.files.Utils.safeStat("test-rotate-unique/log.txt.8")); 26 | assert.end(); 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/test/TestPlugins.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | * 3 | * qxcompiler - node.js based replacement for the Qooxdoo python 4 | * toolchain 5 | * 6 | * https://github.com/qooxdoo/qooxdoo-compiler 7 | * 8 | * Copyright: 9 | * 2011-2018 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 | 23 | qx.Class.define("testapp.test.TestPlugins", { 24 | extend: qx.dev.unit.TestCase, 25 | 26 | members: { 27 | testSimple: function() { 28 | qx.io.PartLoader.require(["pluginFramework", "pluginOne"], () => { 29 | this.debug("pluginOne loaded"); 30 | var plugin = new testapp.plugins.PluginOne(); 31 | this.assertEquals("testapp.plugins.PluginOne: Plugin One Hello\n", plugin.sayHello()); 32 | }, this); 33 | qx.io.PartLoader.require(["pluginFramework", "pluginTwo"], () => { 34 | this.debug("pluginTwo loaded"); 35 | var plugin = new testapp.plugins.PluginTwo(); 36 | this.assertEquals("testapp.plugins.PluginTwo: Plugin One Hello\n", plugin.sayHello()); 37 | }, this); 38 | } 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/api/LibraryApi.js: -------------------------------------------------------------------------------- 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-2019 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 | /** 23 | * Provides an API for an individual library 24 | */ 25 | qx.Class.define("qx.tool.cli.api.LibraryApi", { 26 | extend: qx.tool.cli.api.AbstractApi, 27 | 28 | properties: { 29 | /** The Compiler API */ 30 | compilerApi: { 31 | nullable: false, 32 | check: "qx.tool.cli.api.CompilerApi" 33 | } 34 | }, 35 | 36 | members: { 37 | /** 38 | * Called to load any library-specific configuration and update the compilerConfig 39 | * 40 | * @overridden 41 | */ 42 | async load() { 43 | return this.base(arguments); 44 | }, 45 | 46 | /** 47 | * Called after all libraries have been loaded and added to the compilation data 48 | */ 49 | async afterLibrariesLoaded() { 50 | // Nothing 51 | } 52 | 53 | 54 | } 55 | }); 56 | 57 | -------------------------------------------------------------------------------- /source/class/qx/tool/cli/api/Test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is used to add an test case for qx test 3 | */ 4 | qx.Class.define("qx.tool.cli.api.Test", { 5 | extend: qx.core.Object, 6 | construct: function(name, testFunction) { 7 | this.base(arguments); 8 | this.setName(name); 9 | if (testFunction) { 10 | this.setTestFunction(testFunction); 11 | } 12 | }, 13 | properties: { 14 | /** 15 | * Name of the process 16 | */ 17 | name: { 18 | check: "String" 19 | }, 20 | /** 21 | * A description of the test. 22 | * For documentation purpose 23 | */ 24 | description: { 25 | check: "String", 26 | event: "changeDescription" 27 | }, 28 | /** 29 | * The exit code of the test. 30 | * 31 | */ 32 | exitCode: { 33 | check: "Number", 34 | event: "changeExitCode", 35 | nullable: true, 36 | init: null 37 | }, 38 | /** 39 | * Is the webserver instance needed for this test? 40 | */ 41 | needsServer: { 42 | check: "Boolean", 43 | nullable: false, 44 | init: true 45 | }, 46 | /** 47 | * The test function called by qx test 48 | * 49 | */ 50 | testFunction: { 51 | check: "Function", 52 | nullable: false, 53 | init: () => {} 54 | } 55 | }, 56 | 57 | 58 | members: { 59 | /** 60 | * Execute the test 61 | * 62 | * @returns: Promise 63 | * 64 | * Can be overriden 65 | */ 66 | execute: function() { 67 | let f = this.getTestFunction(); 68 | return qx.Promise.resolve(f.call(this, this)); 69 | } 70 | } 71 | }); 72 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/targets/SourceTarget.js: -------------------------------------------------------------------------------- 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-2017 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 | /** 23 | * Compiles a target where source files and resources are loaded in place 24 | */ 25 | qx.Class.define("qx.tool.compiler.targets.SourceTarget", { 26 | extend: qx.tool.compiler.targets.Target, 27 | 28 | properties: { 29 | /** 30 | * Whether to copy resources in source builds. 31 | */ 32 | copyResources: { 33 | check: "Boolean", 34 | init: true 35 | } 36 | }, 37 | 38 | members: { 39 | /* 40 | * @Override 41 | */ 42 | async _writeApplication() { 43 | if (this.getCopyResources()) { 44 | let appMeta = this.getAppMeta(); 45 | await appMeta.syncAssets(); 46 | } 47 | return await this.base(arguments); 48 | }, 49 | 50 | /* 51 | * @Override 52 | */ 53 | toString: function() { 54 | return "Source Target: " + this.getOutputDir(); 55 | } 56 | } 57 | }); 58 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/InnerEs6Classes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ignore(require) 3 | */ 4 | const fs = require('fs'); 5 | 6 | qx.Class.define("testapp.InnerEs6Classes", { 7 | extend: qx.core.Object, 8 | 9 | construct(options) { 10 | this.base(arguments); 11 | 12 | class ClassStats { 13 | constructor(classname) { 14 | this.classname = classname; 15 | } 16 | 17 | forProperty(propName) { 18 | return propName; 19 | } 20 | } 21 | /* 22 | class AllStats { 23 | constructor() { 24 | new ClassStats("abc.X"); 25 | } 26 | } 27 | */ 28 | }, 29 | 30 | members: { 31 | /* 32 | testOne() { 33 | return new ClassStats("abc.X"); 34 | }, 35 | 36 | testTwo() { 37 | class ClassStatsTwo { 38 | constructor(classname) { 39 | this.classname = classname; 40 | } 41 | 42 | forProperty(propName) { 43 | return propName; 44 | } 45 | } 46 | 47 | class AllStatsTwo { 48 | constructor() { 49 | new ClassStatsTwo("abc.X"); 50 | } 51 | } 52 | } 53 | */ 54 | }, 55 | 56 | statics: { 57 | /* 58 | staticTestOne() { 59 | return new ClassStats("abc.X"); 60 | }, 61 | 62 | staticTestTwo() { 63 | class ClassStatsStaticTwo { 64 | constructor(classname) { 65 | this.classname = classname; 66 | } 67 | 68 | forProperty(propName) { 69 | return propName; 70 | } 71 | } 72 | 73 | class AllStatsStaticTwo { 74 | constructor() { 75 | new ClassStatsStaticTwo("abc.X"); 76 | } 77 | } 78 | } 79 | */ 80 | } 81 | }); 82 | -------------------------------------------------------------------------------- /compile.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("upath"); 3 | const process = require("process"); 4 | 5 | qx.Class.define("qx.compiler.CompilerApi", { 6 | extend: qx.tool.cli.api.CompilerApi, 7 | 8 | members: { 9 | /** 10 | * Register compiler tests 11 | * @param {qx.tool.cli.commands.Command} command 12 | * @return {Promise} 13 | */ 14 | async beforeTests(command) { 15 | const COMPILER_TEST_PATH = path.join("test", "compiler"); 16 | function addTest(test) { 17 | command.addTest(new qx.tool.cli.api.Test(test, async function() { 18 | console.log("****"); 19 | console.log("**** Running " + test); 20 | console.log("****"); 21 | result = await qx.tool.utils.Utils.runCommand({ 22 | cwd: COMPILER_TEST_PATH, 23 | cmd: "node", 24 | args: [ test + ".js" ], 25 | shell: false, 26 | env: { 27 | QX_JS: require.main.filename 28 | } 29 | }); 30 | this.setExitCode(result.exitCode); 31 | })).setNeedsServer(false); 32 | } 33 | try { 34 | try { 35 | fs.unlinkSync("test/qx"); 36 | }catch(ex) { 37 | // Nothing 38 | } 39 | 40 | let files = fs.readdirSync(COMPILER_TEST_PATH); 41 | files.forEach(file => { 42 | if (fs.statSync(path.join(COMPILER_TEST_PATH, file)).isFile() && file.endsWith(".js")) { 43 | addTest(path.changeExt(path.basename(file), "")); 44 | } 45 | }); 46 | } catch (e) { 47 | console.error(e); 48 | process.exit(1); 49 | } 50 | } 51 | } 52 | }); 53 | 54 | module.exports = { 55 | CompilerApi: qx.compiler.CompilerApi 56 | }; 57 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml.disabled: -------------------------------------------------------------------------------- 1 | name: Test and Deploy 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | # Test changes from PRs 11 | test: 12 | name: Run tests 13 | runs-on: ${{ matrix.os }} 14 | if: github.ref != 'refs/heads/master' 15 | strategy: 16 | matrix: 17 | os: [ubuntu-latest] 18 | node-version: [10.x, 12.x, 14.x] 19 | steps: 20 | - uses: actions/checkout@v2 21 | 22 | - name: Use Node.js ${{ matrix.node-version }} 23 | uses: actions/setup-node@v1 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | 27 | - name: Install and Test 28 | run: | 29 | npm -v 30 | npm ci 31 | npm list @qooxdoo/framework 32 | npm test 33 | 34 | deploy: 35 | name: Deploy API Viewer 36 | runs-on: ubuntu-latest 37 | if: github.ref == 'refs/heads/master' && !contains(github.event.head_commit.message, 'ci skip') 38 | steps: 39 | - uses: actions/checkout@v2 40 | - uses: actions/setup-node@v1 41 | - name: install 42 | run: | 43 | npm ci 44 | ./bootstrap-compiler 45 | 46 | - name: Build API Viewer 47 | run: tmp/qx deploy app-name="apiviewer" 48 | 49 | - name: Deploy API Viewer 50 | uses: peaceiris/actions-gh-pages@v3 51 | with: 52 | github_token: ${{ secrets.GITHUB_TOKEN }} 53 | publish_dir: ./html 54 | 55 | - name: dispatch to deploy 56 | uses: peter-evans/repository-dispatch@v1 57 | with: 58 | token: ${{ secrets.ACTION_TOKEN }} 59 | repository: qooxdoo/deployment 60 | event-type: deploy 61 | -------------------------------------------------------------------------------- /test/compiler/testapp/source/class/testapp/test/DemoTest.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 4 | 5 | License: 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This class demonstrates how to define unit tests for your application. 13 | * 14 | * Execute generate.py test to generate a testrunner application 15 | * and open it from test/index.html 16 | * 17 | * The methods that contain the tests are instance methods with a 18 | * test 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 | * test folder. 22 | */ 23 | qx.Class.define("testapp.test.DemoTest", 24 | { 25 | extend : qx.dev.unit.TestCase, 26 | 27 | members : 28 | { 29 | /* 30 | --------------------------------------------------------------------------- 31 | TESTS 32 | --------------------------------------------------------------------------- 33 | */ 34 | 35 | /** 36 | * Here are some simple tests 37 | */ 38 | testSimple : function() 39 | { 40 | this.assertEquals(4, 3+1, "This should never fail!"); 41 | this.assertFalse(false, "Can false be true?!"); 42 | }, 43 | 44 | /** 45 | * Here are some more advanced tests 46 | */ 47 | testAdvanced: function () 48 | { 49 | var a = 3; 50 | var b = a; 51 | this.assertIdentical(a, b, "A rose by any other name is still a rose"); 52 | this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!"); 53 | } 54 | } 55 | }); 56 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/class/custom/page/Login.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 4 | 5 | License: 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * TODO: needs documentation 13 | */ 14 | qx.Class.define("${namespace}.page.Login", 15 | { 16 | extend : qx.ui.mobile.page.NavigationPage, 17 | 18 | construct : function() 19 | { 20 | this.base(arguments); 21 | this.setTitle("Login"); 22 | }, 23 | 24 | 25 | members : 26 | { 27 | __form: null, 28 | 29 | 30 | // overridden 31 | _initialize: function() { 32 | this.base(arguments); 33 | 34 | // Username 35 | var user = new qx.ui.mobile.form.TextField(); 36 | user.setRequired(true); 37 | 38 | // Password 39 | var pwd = new qx.ui.mobile.form.PasswordField(); 40 | pwd.setRequired(true); 41 | 42 | // Login Button 43 | var loginButton = new qx.ui.mobile.form.Button("Login"); 44 | loginButton.addListener("tap", this._onButtonTap, this); 45 | 46 | var loginForm = this.__form = new qx.ui.mobile.form.Form(); 47 | loginForm.add(user, "Username"); 48 | loginForm.add(pwd, "Password"); 49 | 50 | // Use form renderer 51 | this.getContent().add(new qx.ui.mobile.form.renderer.Single(loginForm)); 52 | this.getContent().add(loginButton); 53 | }, 54 | 55 | 56 | /** 57 | * Event handler for tap on the login button. 58 | */ 59 | _onButtonTap: function() { 60 | // use form validation 61 | if (this.__form.validate()) { 62 | qx.core.Init.getApplication().getRouting().executeGet("/overview"); 63 | } 64 | } 65 | } 66 | 67 | }); 68 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/class/testMixin/test/DemoTest.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2020 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This class demonstrates how to define unit tests for your application. 13 | * 14 | * Execute qx test to generate a testrunner application 15 | * and open it from test/index.html 16 | * 17 | * The methods that contain the tests are instance methods with a 18 | * test 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 | * test folder. 22 | */ 23 | qx.Class.define("testMixin.test.DemoTest", 24 | { 25 | extend : qx.dev.unit.TestCase, 26 | 27 | members : 28 | { 29 | /* 30 | --------------------------------------------------------------------------- 31 | TESTS 32 | --------------------------------------------------------------------------- 33 | */ 34 | 35 | /** 36 | * Here are some simple tests 37 | */ 38 | testSimple : function() 39 | { 40 | this.assertEquals(4, 3+1, "This should never fail!"); 41 | this.assertFalse(false, "Can false be true?!"); 42 | }, 43 | 44 | /** 45 | * Here are some more advanced tests 46 | */ 47 | testAdvanced: function () 48 | { 49 | var a = 3; 50 | var b = a; 51 | this.assertIdentical(a, b, "A rose by any other name is still a rose"); 52 | this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!"); 53 | } 54 | } 55 | }); 56 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/jsdoc/CommandParser.js: -------------------------------------------------------------------------------- 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-2017 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 | 23 | 24 | 25 | /** 26 | * Abstract base class for JSDoc command parsers 27 | */ 28 | qx.Class.define("qx.tool.compiler.jsdoc.CommandParser", { 29 | extend: qx.core.Object, 30 | type: "abstract", 31 | 32 | members: { 33 | parseCommand: function(pdoc, classname, analyser) { 34 | throw new Error("No implementation for " + this.classname + ".parseCommand"); 35 | }, 36 | 37 | resolveType: function(type, classname, analyser) { 38 | if (type) { 39 | var pos = type.indexOf("."); 40 | if (pos < 0) { 41 | pos = classname.lastIndexOf("."); 42 | if (pos > -1) { 43 | var pkg = classname.substring(0, pos + 1); 44 | if (analyser) { 45 | var match = analyser.getCachedClassInfo(pkg + type); 46 | if (match) { 47 | return pkg + type; 48 | } 49 | } 50 | } 51 | } 52 | } 53 | return type; 54 | } 55 | 56 | } 57 | }); 58 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/test/DemoTest.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This class demonstrates how to define unit tests for your application. 13 | * 14 | * Execute qx test to generate a testrunner application 15 | * and open it from test/index.html 16 | * 17 | * The methods that contain the tests are instance methods with a 18 | * test 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 | * test folder. 22 | */ 23 | qx.Class.define("${namespace}.test.DemoTest", 24 | { 25 | extend : qx.dev.unit.TestCase, 26 | 27 | members : 28 | { 29 | /* 30 | --------------------------------------------------------------------------- 31 | TESTS 32 | --------------------------------------------------------------------------- 33 | */ 34 | 35 | /** 36 | * Here are some simple tests 37 | */ 38 | testSimple : function() 39 | { 40 | this.assertEquals(4, 3+1, "This should never fail!"); 41 | this.assertFalse(false, "Can false be true?!"); 42 | }, 43 | 44 | /** 45 | * Here are some more advanced tests 46 | */ 47 | testAdvanced: function () 48 | { 49 | var a = 3; 50 | var b = a; 51 | this.assertIdentical(a, b, "A rose by any other name is still a rose"); 52 | this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!"); 53 | } 54 | } 55 | }); 56 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/test/DemoTest.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This class demonstrates how to define unit tests for your application. 13 | * 14 | * Execute qx test to generate a testrunner application 15 | * and open it from test/index.html 16 | * 17 | * The methods that contain the tests are instance methods with a 18 | * test 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 | * test folder. 22 | */ 23 | qx.Class.define("${namespace}.test.DemoTest", 24 | { 25 | extend : qx.dev.unit.TestCase, 26 | 27 | members : 28 | { 29 | /* 30 | --------------------------------------------------------------------------- 31 | TESTS 32 | --------------------------------------------------------------------------- 33 | */ 34 | 35 | /** 36 | * Here are some simple tests 37 | */ 38 | testSimple : function() 39 | { 40 | this.assertEquals(4, 3+1, "This should never fail!"); 41 | this.assertFalse(false, "Can false be true?!"); 42 | }, 43 | 44 | /** 45 | * Here are some more advanced tests 46 | */ 47 | testAdvanced: function () 48 | { 49 | var a = 3; 50 | var b = a; 51 | this.assertIdentical(a, b, "A rose by any other name is still a rose"); 52 | this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!"); 53 | } 54 | } 55 | }); 56 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testdynamic/compile.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("path"); 3 | 4 | qx.Class.define("qxl.compilertests.testlib.CompilerApi", { 5 | extend: qx.tool.cli.api.CompilerApi, 6 | 7 | members: { 8 | async load() { 9 | await this.base(arguments); 10 | let data = this.getConfiguration(); 11 | if (!data.environment) 12 | data.environment = {}; 13 | data.environment.testlibCompilerApi = "two"; 14 | } 15 | } 16 | }); 17 | 18 | qx.Class.define("qxl.compilertests.testlib.LibraryApi", { 19 | extend: qx.tool.cli.api.LibraryApi, 20 | 21 | members: { 22 | /* 23 | * @Override 24 | */ 25 | async initialize() { 26 | let cli = qx.tool.cli.Cli.getInstance(); 27 | cli.yargs.command({ 28 | command: "testlib [options]", 29 | describe: "repeats a message to the console", 30 | builder: { 31 | "type": { 32 | alias : "t", 33 | describe : "A parameter", 34 | nargs: 1, 35 | requiresArg: true, 36 | type: "string" 37 | } 38 | }, 39 | handler: function(argv) { 40 | console.log(`The commmand testlib; message=${argv.message}, type=${argv.type}`); 41 | } 42 | }); 43 | }, 44 | 45 | /* 46 | * @Override 47 | */ 48 | async load() { 49 | let command = this.getCompilerApi().getCommand(); 50 | if (command) 51 | command.addListener("checkEnvironment", e => this._appCompiling(e.getData().application, e.getData().environment)); 52 | }, 53 | 54 | _appCompiling(application, environment) { 55 | environment.testlibLibraryApi = "one"; 56 | } 57 | } 58 | }); 59 | 60 | module.exports = { 61 | LibraryApi: qxl.compilertests.testlib.LibraryApi, 62 | CompilerApi: qxl.compilertests.testlib.CompilerApi 63 | }; 64 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/mobile/source/boot/index.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 37 | 38 | ${name} 39 | 42 | ${preBootJs} 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/app/Part.js: -------------------------------------------------------------------------------- 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-2017 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 | 23 | 24 | 25 | /** 26 | * Code is divided up into Parts, where each is a non-overlapping set of URIs for segmented 27 | * loading; the Part can support specific attributes, such as whether to be combined into 28 | * one file for the boot loader, whether to be minified, etc 29 | */ 30 | qx.Class.define("qx.tool.compiler.app.Part", { 31 | extend: qx.core.Object, 32 | 33 | construct: function(name, include, exclude) { 34 | this.base(arguments); 35 | this.set({ 36 | name: name, 37 | include: include, 38 | exclude: exclude||[] 39 | }); 40 | }, 41 | 42 | properties: { 43 | name: { 44 | nullable: false, 45 | check: "String" 46 | }, 47 | 48 | combine: { 49 | init: false, 50 | nullable: false, 51 | check: "Boolean" 52 | }, 53 | 54 | minify: { 55 | init: false, 56 | nullable: false, 57 | check: "Boolean" 58 | }, 59 | 60 | include: { 61 | nullable: false, 62 | check: "Array" 63 | }, 64 | 65 | exclude: { 66 | nullable: false, 67 | check: "Array" 68 | } 69 | } 70 | }); 71 | -------------------------------------------------------------------------------- /test/compiler/test-apiviewer/testMixin/source/boot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 | testMixin 40 | 43 | ${preBootJs} 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/class/default.tmpl.js: -------------------------------------------------------------------------------- 1 | ${header} 2 | 3 | /** 4 | * This is a qooxdoo class 5 | */ 6 | qx.Class.define("${classname}", 7 | { 8 | 9 | extend : ${extend}, 10 | //include : [ Mixin1, Mixin2 ], 11 | 12 | /** 13 | * Constructor 14 | */ 15 | construct : function() { 16 | // If you want to call the parent constructor, use 17 | // this.base(arguments); 18 | }, 19 | 20 | /** 21 | * The properties of the class which can be accessed by getters and setters 22 | */ 23 | properties : 24 | { 25 | /** The foo property of the object */ 26 | foo : 27 | { 28 | apply : "_applyFoo", 29 | nullable : true, 30 | check : "String", 31 | event : "changeFoo" 32 | } 33 | }, 34 | 35 | /** 36 | * Declaration of events fired by class instances in addition 37 | * to the property change events 38 | */ 39 | events : 40 | { 41 | /** Fired when something happens */ 42 | "changeSituation" : "qx.event.type.Data" 43 | }, 44 | 45 | /** 46 | * Static properties of the class itself 47 | */ 48 | statics : 49 | { 50 | /** The foo static property of the class object */ 51 | FOO : "bar" 52 | }, 53 | /** 54 | * The methods and simple properties of this class 55 | */ 56 | members : 57 | { 58 | /** 59 | * First method 60 | * 61 | * @param {String} foo The foo parameter 62 | * @param {number} bar The bar parameter 63 | * @return The result of the method. 64 | */ 65 | myMethod : function(foo, bar) { 66 | // 67 | }, 68 | 69 | /** 70 | * Applies the foo property 71 | * 72 | * @param {string} value new value 73 | * @param {string} old the old value 74 | */ 75 | _applyFoo : function(value, old) { 76 | // 77 | } 78 | 79 | }, 80 | 81 | /** 82 | * Use for disposing objects created by class instances 83 | */ 84 | destruct : function() { 85 | // 86 | } 87 | }); 88 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/boot/index.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 | ${name} 40 | 43 | ${preBootJs} 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /source/class/qx/tool/compiler/resources/ImageLoader.js: -------------------------------------------------------------------------------- 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-2017 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 | 23 | var imageSize = qx.tool.utils.Promisify.promisify(require("image-size")); 24 | 25 | var log = qx.tool.utils.LogManager.createLog("resource-manager"); 26 | 27 | qx.Class.define("qx.tool.compiler.resources.ImageLoader", { 28 | extend: qx.tool.compiler.resources.ResourceLoader, 29 | 30 | construct: function() { 31 | this.base(arguments, [ ".png", ".gif", ".jpg", ".jpeg", ".svg" ]); 32 | }, 33 | 34 | members: { 35 | needsLoad(filename, fileInfo, stat) { 36 | if (!fileInfo || fileInfo.width === undefined || fileInfo.height === undefined) { 37 | return true; 38 | } 39 | return this.base(arguments, filename, fileInfo, stat); 40 | }, 41 | 42 | async load(asset) { 43 | let filename = asset.getSourceFilename(); 44 | let fileInfo = asset.getFileInfo(); 45 | log.trace("Getting size of " + filename); 46 | try { 47 | let dimensions = await imageSize(filename); 48 | fileInfo.width = dimensions.width; 49 | fileInfo.height = dimensions.height; 50 | } catch (ex) { 51 | log.warn("Cannot get image size of " + filename + ": " + ex); 52 | delete fileInfo.width; 53 | delete fileInfo.height; 54 | } 55 | } 56 | } 57 | }); 58 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/server/source/class/custom/test/DemoTest.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 4 | 5 | License: 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This class demonstrates how to define unit tests for your application. 13 | * 14 | * Execute qx test to generate a testrunner application 15 | * and open it from test/index.html 16 | * 17 | * The methods that contain the tests are instance methods with a 18 | * test 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 | * test folder. 22 | */ 23 | qx.Class.define("${namespace}.test.DemoTest", 24 | { 25 | extend : qx.dev.unit.TestCase, 26 | 27 | include : [qx.dev.unit.MRequirementsBasic], 28 | 29 | members : 30 | { 31 | /* 32 | --------------------------------------------------------------------------- 33 | TESTS 34 | --------------------------------------------------------------------------- 35 | */ 36 | 37 | /** 38 | * Here are some simple tests 39 | */ 40 | testSimple : function() 41 | { 42 | this.assertEquals(4, 3+1, "This should never fail!"); 43 | this.assertFalse(false, "Can false be true?!"); 44 | }, 45 | 46 | /** 47 | * Here are some more advanced tests 48 | */ 49 | testAdvanced: function () 50 | { 51 | var a = 3; 52 | var b = a; 53 | this.assertIdentical(a, b, "A rose by any other name is still a rose"); 54 | this.assertInRange(3, 1, 10, "You must be kidding, 3 can never be outside [1,10]!"); 55 | }, 56 | 57 | hasNodeJs : function() 58 | { 59 | return qx.core.Environment.get("runtime.name") == "node.js"; 60 | }, 61 | 62 | testNodeJs : function() 63 | { 64 | this.require(["nodeJs"]); 65 | // test node stuff 66 | } 67 | } 68 | }); 69 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/package/source/class/custom/demo/Application.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "${name}" 13 | */ 14 | qx.Class.define("${namespace}.demo.Application", 15 | { 16 | extend : qx.application.Standalone, 17 | 18 | /* 19 | ***************************************************************************** 20 | MEMBERS 21 | ***************************************************************************** 22 | */ 23 | 24 | members : 25 | { 26 | /** 27 | * This method contains the initial application code and gets called 28 | * during startup of the application 29 | * 30 | * @lint ignoreDeprecated(alert) 31 | */ 32 | main : function() 33 | { 34 | // Call super class 35 | this.base(arguments); 36 | 37 | // Enable logging in debug variant 38 | if (qx.core.Environment.get("qx.debug")) 39 | { 40 | // support native logging capabilities, e.g. Firebug for Firefox 41 | qx.log.appender.Native; 42 | // support additional cross-browser console. Press F7 to toggle visibility 43 | qx.log.appender.Console; 44 | } 45 | 46 | /* 47 | ------------------------------------------------------------------------- 48 | Below is your actual application code... 49 | ------------------------------------------------------------------------- 50 | */ 51 | 52 | // Create a button 53 | var button1 = new ${namespace}.Button("Very special button", "${namespace_as_path}/test.png"); 54 | 55 | // Document is the application root 56 | var doc = this.getRoot(); 57 | 58 | // Add button to document at fixed coordinates 59 | doc.add(button1, {left: 100, top: 50}); 60 | 61 | // Add an event listener 62 | button1.addListener("execute", function(e) { 63 | alert("Hello World!"); 64 | }); 65 | } 66 | } 67 | }); -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/source/class/issue553/ApplicationOne.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "issue553" 13 | * 14 | * @asset(issue553/*) 15 | */ 16 | qx.Class.define("issue553.ApplicationOne", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | 41 | // Enable logging in debug variant 42 | if (qx.core.Environment.get("qx.debug")) 43 | { 44 | // support native logging capabilities, e.g. Firebug for Firefox 45 | qx.log.appender.Native; 46 | // support additional cross-browser console. Press F7 to toggle visibility 47 | qx.log.appender.Console; 48 | } 49 | 50 | /* 51 | ------------------------------------------------------------------------- 52 | Below is your actual application code... 53 | ------------------------------------------------------------------------- 54 | */ 55 | 56 | // Create a button 57 | var button1 = new qx.ui.form.Button("Click me", "issue553/test.png"); 58 | 59 | // Document is the application root 60 | var doc = this.getRoot(); 61 | 62 | // Add button to document at fixed coordinates 63 | doc.add(button1, {left: 100, top: 50}); 64 | 65 | // Add an event listener 66 | button1.addListener("execute", function() { 67 | /* eslint no-alert: "off" */ 68 | alert("Hello World!"); 69 | }); 70 | } 71 | } 72 | }); -------------------------------------------------------------------------------- /test/compiler/test-issues/issue553/source/class/issue553/ApplicationTwo.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "issue553" 13 | * 14 | * @asset(issue553/*) 15 | */ 16 | qx.Class.define("issue553.ApplicationTwo", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | 41 | // Enable logging in debug variant 42 | if (qx.core.Environment.get("qx.debug")) 43 | { 44 | // support native logging capabilities, e.g. Firebug for Firefox 45 | qx.log.appender.Native; 46 | // support additional cross-browser console. Press F7 to toggle visibility 47 | qx.log.appender.Console; 48 | } 49 | 50 | /* 51 | ------------------------------------------------------------------------- 52 | Below is your actual application code... 53 | ------------------------------------------------------------------------- 54 | */ 55 | 56 | // Create a button 57 | var button1 = new qx.ui.form.Button("Click me", "issue553/test.png"); 58 | 59 | // Document is the application root 60 | var doc = this.getRoot(); 61 | 62 | // Add button to document at fixed coordinates 63 | doc.add(button1, {left: 100, top: 50}); 64 | 65 | // Add an event listener 66 | button1.addListener("execute", function() { 67 | /* eslint no-alert: "off" */ 68 | alert("Hello World!"); 69 | }); 70 | } 71 | } 72 | }); -------------------------------------------------------------------------------- /source/resource/qx/tool/website/build/diagnostics/dependson.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | var db; 4 | var appDb; 5 | var CLASSES = {}; 6 | 7 | function show(name, $list) { 8 | var def = db.classInfo[name]; 9 | if (!def || !def.dependsOn) 10 | return; 11 | for ( var depName in def.dependsOn) { 12 | if (!CLASSES[depName]) 13 | continue; 14 | var isLoad = def.dependsOn[depName].load; 15 | var $li = $("
  • ").text(depName).attr("data-classname", depName); 16 | if (isLoad) 17 | $li.addClass("load"); 18 | else 19 | $li.addClass("runtime"); 20 | $li.click(function(e) { 21 | e.stopPropagation(); 22 | var $this = $(this), className = $this.attr("data-classname"), $ul = $("ul", this); 23 | if ($ul.length) { 24 | $ul.remove(); 25 | return; 26 | } 27 | var $ul = $("
      "); 28 | $this.append($ul); 29 | show(className, $ul); 30 | updateDisplay(); 31 | }); 32 | $list.append($li); 33 | } 34 | } 35 | 36 | function selectClass(name) { 37 | $("#root").append($("

      ").text(name + " Depends On")); 38 | var $root = $("
        "); 39 | $("#root").append($root); 40 | show(name, $root); 41 | } 42 | 43 | function updateDisplay() { 44 | var value = $("#show").val(); 45 | switch (value) { 46 | case "runtime": 47 | $(".load").hide(); 48 | $(".runtime").show(); 49 | break; 50 | 51 | case "load": 52 | $(".load").show(); 53 | $(".runtime").hide(); 54 | break; 55 | 56 | default: 57 | $(".load").show(); 58 | $(".runtime").show(); 59 | break; 60 | } 61 | } 62 | 63 | var query = $.qxcli.query; 64 | $.qxcli.get(query.targetDir + "/db.json") 65 | .then(function(tmp) { 66 | db = tmp; 67 | return $.qxcli.get(query.targetDir + "/" + query.appDir + "/compile-info.json"); 68 | }) 69 | .then(function(tmp) { 70 | appDb = tmp; 71 | appDb.parts.forEach(function(part) { 72 | part.classes.forEach(classname => CLASSES[classname] = true); 73 | }); 74 | selectClass($.qxcli.query.appClass); 75 | $("#show").change(updateDisplay); 76 | }); 77 | }); 78 | -------------------------------------------------------------------------------- /source/resource/qx/tool/website/src/diagnostics/dependson.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | var db; 4 | var appDb; 5 | var CLASSES = {}; 6 | 7 | function show(name, $list) { 8 | var def = db.classInfo[name]; 9 | if (!def || !def.dependsOn) 10 | return; 11 | for ( var depName in def.dependsOn) { 12 | if (!CLASSES[depName]) 13 | continue; 14 | var isLoad = def.dependsOn[depName].load; 15 | var $li = $("
      • ").text(depName).attr("data-classname", depName); 16 | if (isLoad) 17 | $li.addClass("load"); 18 | else 19 | $li.addClass("runtime"); 20 | $li.click(function(e) { 21 | e.stopPropagation(); 22 | var $this = $(this), className = $this.attr("data-classname"), $ul = $("ul", this); 23 | if ($ul.length) { 24 | $ul.remove(); 25 | return; 26 | } 27 | var $ul = $("
          "); 28 | $this.append($ul); 29 | show(className, $ul); 30 | updateDisplay(); 31 | }); 32 | $list.append($li); 33 | } 34 | } 35 | 36 | function selectClass(name) { 37 | $("#root").append($("

          ").text(name + " Depends On")); 38 | var $root = $("
            "); 39 | $("#root").append($root); 40 | show(name, $root); 41 | } 42 | 43 | function updateDisplay() { 44 | var value = $("#show").val(); 45 | switch (value) { 46 | case "runtime": 47 | $(".load").hide(); 48 | $(".runtime").show(); 49 | break; 50 | 51 | case "load": 52 | $(".load").show(); 53 | $(".runtime").hide(); 54 | break; 55 | 56 | default: 57 | $(".load").show(); 58 | $(".runtime").show(); 59 | break; 60 | } 61 | } 62 | 63 | var query = $.qxcli.query; 64 | $.qxcli.get(query.targetDir + "/db.json") 65 | .then(function(tmp) { 66 | db = tmp; 67 | return $.qxcli.get(query.targetDir + "/" + query.appDir + "/compile-info.json"); 68 | }) 69 | .then(function(tmp) { 70 | appDb = tmp; 71 | appDb.parts.forEach(function(part) { 72 | part.classes.forEach(classname => CLASSES[classname] = true); 73 | }); 74 | selectClass($.qxcli.query.appClass); 75 | $("#show").change(updateDisplay); 76 | }); 77 | }); 78 | -------------------------------------------------------------------------------- /test/compiler/test-issues/testLegalSCSS/source/class/testLegalSCSS/Application.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 4 | 5 | License: MIT license 6 | 7 | Authors: 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "testLegalSCSS" 13 | * 14 | * @asset(testLegalSCSS/*) 15 | */ 16 | qx.Class.define("testLegalSCSS.Application", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | 41 | // Enable logging in debug variant 42 | if (qx.core.Environment.get("qx.debug")) 43 | { 44 | // support native logging capabilities, e.g. Firebug for Firefox 45 | qx.log.appender.Native; 46 | // support additional cross-browser console. Press F7 to toggle visibility 47 | qx.log.appender.Console; 48 | } 49 | 50 | /* 51 | ------------------------------------------------------------------------- 52 | Below is your actual application code... 53 | ------------------------------------------------------------------------- 54 | */ 55 | 56 | // Create a button 57 | var button1 = new qx.ui.form.Button("Click me", "testLegalSCSS/test.png"); 58 | 59 | // Document is the application root 60 | var doc = this.getRoot(); 61 | 62 | // Add button to document at fixed coordinates 63 | doc.add(button1, {left: 100, top: 50}); 64 | 65 | // Add an event listener 66 | button1.addListener("execute", function() { 67 | /* eslint no-alert: "off" */ 68 | alert("Hello World!"); 69 | }); 70 | } 71 | } 72 | }); -------------------------------------------------------------------------------- /source/class/qx/tool/utils/Logger.js: -------------------------------------------------------------------------------- 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-2017 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 | qx.Class.define("qx.tool.utils.Logger", { 23 | extend: qx.core.Object, 24 | 25 | construct: function(id, minLevel) { 26 | this.base(arguments); 27 | this.set({ id: id, minLevel: minLevel }); 28 | }, 29 | 30 | properties: { 31 | id: { 32 | check: "String" 33 | }, 34 | 35 | minLevel: { 36 | check: "Integer" 37 | } 38 | }, 39 | 40 | members: { 41 | is: function(level) { 42 | if (typeof level == "string") { 43 | level = qx.tool.utils.LogManager.getInstance()._levels[level]; 44 | } 45 | return this.getMinLevel() <= level; 46 | }, 47 | 48 | log: function(level, msg) { 49 | if (this.is(level)) { 50 | this._output(level, msg); 51 | } 52 | }, 53 | 54 | _output: function(level, msg) { 55 | qx.tool.utils.LogManager.getInstance().output(this, level, msg); 56 | }, 57 | 58 | trace: function(msg) { 59 | return this.log("trace", msg); 60 | }, 61 | 62 | debug: function(msg) { 63 | return this.log("debug", msg); 64 | }, 65 | 66 | info: function(msg) { 67 | return this.log("info", msg); 68 | }, 69 | 70 | warn: function(msg) { 71 | return this.log("warn", msg); 72 | }, 73 | 74 | error: function(msg) { 75 | return this.log("error", msg); 76 | }, 77 | 78 | fatal: function(msg) { 79 | return this.log("fatal", msg); 80 | } 81 | 82 | } 83 | }); 84 | 85 | -------------------------------------------------------------------------------- /test/compiler/test-issues/issue440/source/class/issue440/Application.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: 2019 undefined 4 | 5 | License: MIT license 6 | 7 | Authors: undefined 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "issue440" 13 | * 14 | * @asset(issue440/*) 15 | */ 16 | qx.Class.define("issue440.Application", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | 41 | //This is an error 42 | 43 | // Enable logging in debug variant 44 | if (qx.core.Environment.get("qx.debug")) 45 | { 46 | // support native logging capabilities, e.g. Firebug for Firefox 47 | qx.log.appender.Native; 48 | // support additional cross-browser console. Press F7 to toggle visibility 49 | qx.log.appender.Console; 50 | } 51 | 52 | /* 53 | ------------------------------------------------------------------------- 54 | Below is your actual application code... 55 | ------------------------------------------------------------------------- 56 | */ 57 | 58 | // Create a button 59 | var button1 = new qx.ui.form.Button("Click me", "issue440/test.png"); 60 | 61 | // Document is the application root 62 | var doc = this.getRoot(); 63 | 64 | // Add button to document at fixed coordinates 65 | doc.add(button1, {left: 100, top: 50}); 66 | 67 | // Add an event listener 68 | button1.addListener("execute", function() { 69 | /* eslint no-alert: "off" */ 70 | alert("Hello World!"); 71 | }); 72 | } 73 | } 74 | }); 75 | -------------------------------------------------------------------------------- /source/resource/qx/tool/cli/templates/skeleton/desktop/source/class/custom/Application.tmpl.js: -------------------------------------------------------------------------------- 1 | /* ************************************************************************ 2 | 3 | Copyright: ${year} ${copyright_holder} 4 | 5 | License: ${license} 6 | 7 | Authors: ${authors} 8 | 9 | ************************************************************************ */ 10 | 11 | /** 12 | * This is the main application class of "${name}" 13 | * 14 | * @asset(${namespace_as_path}/*) 15 | */ 16 | qx.Class.define("${namespace}.Application", 17 | { 18 | extend : qx.application.Standalone, 19 | 20 | 21 | 22 | /* 23 | ***************************************************************************** 24 | MEMBERS 25 | ***************************************************************************** 26 | */ 27 | 28 | members : 29 | { 30 | /** 31 | * This method contains the initial application code and gets called 32 | * during startup of the application 33 | * 34 | * @lint ignoreDeprecated(alert) 35 | */ 36 | main : function() 37 | { 38 | // Call super class 39 | this.base(arguments); 40 | 41 | // Enable logging in debug variant 42 | if (qx.core.Environment.get("qx.debug")) 43 | { 44 | // support native logging capabilities, e.g. Firebug for Firefox 45 | qx.log.appender.Native; 46 | // support additional cross-browser console. Press F7 to toggle visibility 47 | qx.log.appender.Console; 48 | } 49 | 50 | /* 51 | ------------------------------------------------------------------------- 52 | Below is your actual application code... 53 | ------------------------------------------------------------------------- 54 | */ 55 | 56 | // Create a button 57 | var button1 = new qx.ui.form.Button("Click me", "${namespace_as_path}/test.png"); 58 | 59 | // Document is the application root 60 | var doc = this.getRoot(); 61 | 62 | // Add button to document at fixed coordinates 63 | doc.add(button1, {left: 100, top: 50}); 64 | 65 | // Add an event listener 66 | button1.addListener("execute", function() { 67 | /* eslint no-alert: "off" */ 68 | alert("Hello World!"); 69 | }); 70 | } 71 | } 72 | }); --------------------------------------------------------------------------------