diff --git a/addon-build-configs/3.19.0/bower.json b/addon-build-configs/3.19.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.19.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.19.0/config/optional-features.json b/addon-build-configs/3.19.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.19.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.19.0/ember-cli-build.js b/addon-build-configs/3.19.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.19.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.19.0/package.json b/addon-build-configs/3.19.0/package.json new file mode 100644 index 0000000..ad06265 --- /dev/null +++ b/addon-build-configs/3.19.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.19.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-uglify": "^3.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.19.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.20.0/bower.json b/addon-build-configs/3.20.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.20.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.20.0/config/optional-features.json b/addon-build-configs/3.20.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.20.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.20.0/ember-cli-build.js b/addon-build-configs/3.20.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.20.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.20.0/package.json b/addon-build-configs/3.20.0/package.json new file mode 100644 index 0000000..9fac693 --- /dev/null +++ b/addon-build-configs/3.20.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.20.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-uglify": "^3.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.20.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.21.0/bower.json b/addon-build-configs/3.21.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.21.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.21.0/config/optional-features.json b/addon-build-configs/3.21.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.21.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.21.0/ember-cli-build.js b/addon-build-configs/3.21.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.21.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.21.0/package.json b/addon-build-configs/3.21.0/package.json new file mode 100644 index 0000000..3e750dc --- /dev/null +++ b/addon-build-configs/3.21.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.21.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-terser": "^4.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.21.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.22.0/bower.json b/addon-build-configs/3.22.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.22.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.22.0/config/optional-features.json b/addon-build-configs/3.22.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.22.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.22.0/ember-cli-build.js b/addon-build-configs/3.22.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.22.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.22.0/package.json b/addon-build-configs/3.22.0/package.json new file mode 100644 index 0000000..e7a7440 --- /dev/null +++ b/addon-build-configs/3.22.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.22.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-terser": "^4.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.22.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.23.0/bower.json b/addon-build-configs/3.23.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.23.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.23.0/config/optional-features.json b/addon-build-configs/3.23.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.23.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.23.0/ember-cli-build.js b/addon-build-configs/3.23.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.23.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.23.0/package.json b/addon-build-configs/3.23.0/package.json new file mode 100644 index 0000000..70fea20 --- /dev/null +++ b/addon-build-configs/3.23.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.23.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-terser": "^4.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.23.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.24.0/bower.json b/addon-build-configs/3.24.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.24.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.24.0/config/optional-features.json b/addon-build-configs/3.24.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.24.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.24.0/ember-cli-build.js b/addon-build-configs/3.24.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.24.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.24.0/package.json b/addon-build-configs/3.24.0/package.json new file mode 100644 index 0000000..8a4e420 --- /dev/null +++ b/addon-build-configs/3.24.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.25.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-terser": "^4.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.25.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/addon-build-configs/3.25.0/bower.json b/addon-build-configs/3.25.0/bower.json new file mode 100644 index 0000000..04ba2da --- /dev/null +++ b/addon-build-configs/3.25.0/bower.json @@ -0,0 +1,5 @@ +{ + "name": "twiddle", + "dependencies": { }, + "resolutions": { } +} diff --git a/addon-build-configs/3.25.0/config/optional-features.json b/addon-build-configs/3.25.0/config/optional-features.json new file mode 100644 index 0000000..e8a9e6d --- /dev/null +++ b/addon-build-configs/3.25.0/config/optional-features.json @@ -0,0 +1,7 @@ + +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addon-build-configs/3.25.0/ember-cli-build.js b/addon-build-configs/3.25.0/ember-cli-build.js new file mode 100644 index 0000000..410c16f --- /dev/null +++ b/addon-build-configs/3.25.0/ember-cli-build.js @@ -0,0 +1,205 @@ +/* global require, module */ +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); +const Plugin = require('broccoli-plugin'); +const mergeTrees = require('broccoli-merge-trees'); +const Funnel = require('broccoli-funnel'); +const concat = require('broccoli-concat'); +const writeFile = require('broccoli-file-creator'); +const path = require('path'); +const assetRev = require('broccoli-asset-rev'); +const stew = require('broccoli-stew'); +const DEBUG = false; + +EmberApp.env = function() { return 'development'; } + +function StubApp(options) { + return Reflect.construct(EmberApp, [options], StubApp); +} +Reflect.setPrototypeOf(StubApp.prototype, EmberApp.prototype); +Reflect.setPrototypeOf(StubApp, EmberApp); + +// We don't want any of the default legacy files. But we *do* still +// want to let addons stick their own imports into the +// legacyFilesToAppend list. +StubApp.prototype.populateLegacyFiles = function() {}; + +let importedJsFiles = []; +let importedCssFiles = []; + +let filesToExclude = [ + 'loader.js', + 'legacy-shims.js', + 'app-shims.js', + 'deprecations.js', + 'jquery.js' +]; + +// Files included via app.import need to end up in addon.js +StubApp.prototype.import = function(assetPath, options) { + options = options || {}; + + if (typeof assetPath === 'object') { + assetPath = assetPath[this.env]; + } + + if (filesToExclude.filter(file => assetPath.indexOf(file) !== -1).length === 0) { + + if (DEBUG) { + console.log(assetPath); + } + + let ext = path.extname(assetPath); + let isCss = ext === '.css'; + let isJs = ext === '.js'; + if (isCss) { + if (options.prepend) { + importedCssFiles.unshift(assetPath); + } else { + importedCssFiles.push(assetPath); + } + } else if (isJs) { + if (options.prepend) { + importedJsFiles.unshift(assetPath); + } else { + importedJsFiles.push(assetPath); + } + } + } + + EmberApp.prototype.import.call(this, assetPath, options); +}; + +class EmptyTree extends Plugin { + constructor(names = []) { + super([], {}); + this.names = names; + } + + build() { + this.names.forEach(name => { + if (path.dirname(name)) { + this.output.mkdirSync(path.dirname(name), { recursive: true }); + } + this.output.writeFileSync(name, ''); + }); + } +} + + +module.exports = function() { + let app = new StubApp({ + name: 'twiddle', + sourcemaps: { + enabled: false + }, + minifyCSS: { + enabled: false, + }, + minifyJS: { + enabled: false + }, + trees: { + app: new EmptyTree(), + styles: new EmptyTree(['app.css', 'app.scss']), + templates: new EmptyTree(), + public: new EmptyTree() + } + }); + + let origAddonTree = new Funnel(app.addonTree(), { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + if (DEBUG) { + origAddonTree = stew.debug(origAddonTree, { name: 'origAddonTree' }); + } + + let addonTree = concat(mergeTrees([origAddonTree, app.addonSrcTree()]), { + inputFiles: '**/*.js', + outputFile: 'vendor/addons.js' + }); + + let addonTestSupportTree = concat(app.addonTestSupportTree(), { + inputFiles: '**/*.js', + outputFile: 'vendor/addon-test-support.js', + allowNone: true + }); + + let fullTree = mergeTrees([ + app.getAddonTemplates(), + app.getStyles(), + app.getTests(), + app.getExternalTree(), + app.getSrc(), + app.getAppJavascript(false), + addonTree, + addonTestSupportTree + ].filter(Boolean), { overwrite: true }); + + fullTree = new Funnel(fullTree, { + exclude: ['*/ember-load-initializers/**/*.js', '*/ember-resolver/**/*.js'] + }); + + let templates = writeFile('twiddle/templates/.gitkeep', ''); + fullTree = mergeTrees([fullTree, templates]); + + if (DEBUG) { + fullTree = stew.debug(fullTree, { name: 'fullTree' }); + } + + let processedTree = mergeTrees([ + new EmptyTree(['assets/vendor.js', 'assets/test-support.js']), + app._defaultPackager.processAppAndDependencies(fullTree), + app._defaultPackager.packageStyles(fullTree) + ], { overwrite: true }); + + if (DEBUG) { + processedTree = stew.debug(processedTree, { name: 'processedTree' }); + } + + let postProcessedTree = app.addonPostprocessTree('all', processedTree); + + if (DEBUG) { + postProcessedTree = stew.debug(postProcessedTree, { name: 'postProcessedTree' }); + } + + let headerFiles = importedJsFiles + .concat(app.legacyFilesToAppend || []) + .concat(['vendor/addons.js', 'vendor/addon-test-support.js']); + + let cssTree = concat(postProcessedTree, { + headerFiles: importedCssFiles, + inputFiles: ['**/*.css'], + outputFile: '/addon.css', + allowNone: false, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon CSS' + }); + + let publicTree = new Funnel(app.getPublic(), { + srcDir:'assets', + destDir:'.', + allowEmpty:true + }); + + let jsTree = concat(postProcessedTree, { + headerFiles: headerFiles, + inputFiles: ['assets/vendor.js', 'assets/test-support.js', 'twiddle/**/*.js'], + outputFile: '/addon.js', + allowNone: true, + sourceMapConfig: { enabled: false }, + annotation: 'Concat: Addon JS' + }); + + let mergedTree = mergeTrees([cssTree, publicTree, jsTree]); + + if (DEBUG) { + mergedTree = stew.debug(mergedTree, { name: 'mergedTree' }); + } + + let fingerprintedTree = new assetRev(mergedTree, { + generateAssetMap: true + }); + + return fingerprintedTree; +}; diff --git a/addon-build-configs/3.25.0/package.json b/addon-build-configs/3.25.0/package.json new file mode 100644 index 0000000..6e29c4c --- /dev/null +++ b/addon-build-configs/3.25.0/package.json @@ -0,0 +1,44 @@ +{ + "name": "twiddle", + "version": "0.0.0", + "description": "Small description for addon-builder-2-13-0 goes here", + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "start": "ember server", + "build": "ember build", + "test": "ember test" + }, + "repository": "", + "engines": { + "node": "10.* || >= 12" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@ember/optional-features": "^2.0.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "broccoli-asset-rev": "^3.0.0", + "ember-cli": "~3.24.0", + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^5.1.2", + "ember-cli-terser": "^4.0.0", + "ember-fetch": "^8.0.1", + "ember-load-initializers": "^2.1.1", + "ember-resolver": "^8.0.0", + "ember-source": "~3.24.0", + "loader.js": "^4.7.0", + + "broccoli-plugin": "^4.0.1", + "broccoli-funnel": "^3.0.2", + "broccoli-concat": "^4.2.3", + "broccoli-file-creator": "^2.1.1", + "broccoli-merge-trees": "^4.1.0", + "broccoli-stew": "^3.0.0", + "aws-sdk": "2.4", + "s3": "4.4.0" + } +} diff --git a/config/staging.js b/config/staging.js index 9e7dbb6..ff86de1 100644 --- a/config/staging.js +++ b/config/staging.js @@ -49,5 +49,12 @@ module.exports = { '3.16.0': /3\.16\./, '3.17.0': /3\.17\./, '3.18.0': /3\.18\./, + '3.19.0': /3\.19\./, + '3.20.0': /3\.20\./, + '3.21.0': /3\.21\./, + '3.22.0': /3\.22\./, + '3.23.0': /3\.23\./, + '3.24.0': /3\.24\./, + '3.25.0': /3\.25\./, } };