From e6814073775fc8fd0eb0d65b5ea5a0f665ce38b4 Mon Sep 17 00:00:00 2001 From: Dru Jensen Date: Fri, 11 Nov 2022 04:03:00 -0800 Subject: [PATCH 01/24] fix: remove webpack from dependencies This change removes webpack from the dependencies. It also upgrades bootstrap to 5.0 using cdn links. --- Dockerfile | 4 -- assets/js/amber.min.js | 1 - assets/js/webpack.config.js | 26 ------- package.json | 18 ----- shard.yml | 8 +-- src/amber/cli/commands.cr | 4 +- src/amber/cli/commands/new.cr | 3 +- src/amber/cli/commands/watch.cr | 2 +- src/amber/cli/config.cr | 19 +---- src/amber/cli/generators.cr | 2 +- src/amber/cli/templates/app/.amber.yml.ecr | 7 -- .../templates/app/config/webpack/common.js | 71 ------------------- .../app/config/webpack/development.js | 8 --- .../cli/templates/app/config/webpack/entry.js | 10 --- .../app/config/webpack/production.js | 10 --- .../templates/app/src/assets/fonts/.gitkeep | 0 .../templates/app/src/assets/images/.gitkeep | 0 .../templates/app/src/assets/images/logo.svg | 1 - .../app/src/assets/javascripts/main.js | 3 - .../app/src/assets/stylesheets/main.scss | 7 -- .../app/src/views/home/index.ecr.ecr | 2 +- .../app/src/views/home/index.slang.ecr | 2 +- .../app/src/views/layouts/application.ecr.ecr | 7 +- .../src/views/layouts/application.slang.ecr | 7 +- 24 files changed, 21 insertions(+), 201 deletions(-) delete mode 100644 assets/js/amber.min.js delete mode 100644 assets/js/webpack.config.js delete mode 100644 package.json delete mode 100644 src/amber/cli/templates/app/config/webpack/common.js delete mode 100644 src/amber/cli/templates/app/config/webpack/development.js delete mode 100644 src/amber/cli/templates/app/config/webpack/entry.js delete mode 100644 src/amber/cli/templates/app/config/webpack/production.js delete mode 100644 src/amber/cli/templates/app/src/assets/fonts/.gitkeep delete mode 100644 src/amber/cli/templates/app/src/assets/images/.gitkeep delete mode 100644 src/amber/cli/templates/app/src/assets/images/logo.svg delete mode 100644 src/amber/cli/templates/app/src/assets/javascripts/main.js delete mode 100644 src/amber/cli/templates/app/src/assets/stylesheets/main.scss diff --git a/Dockerfile b/Dockerfile index a2101a5fe..4d7a0bb0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,6 @@ FROM crystallang/crystal:latest ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update -qq && apt-get install -y --no-install-recommends libpq-dev libsqlite3-dev libmysqlclient-dev libreadline-dev git curl vim netcat -# Install Node -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get install -y nodejs - WORKDIR /opt/amber # Build Amber diff --git a/assets/js/amber.min.js b/assets/js/amber.min.js deleted file mode 100644 index 9f01aa4fc..000000000 --- a/assets/js/amber.min.js +++ /dev/null @@ -1 +0,0 @@ -var Amber=function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n100;var t}},{key:"_reconnect",value:function(){var t=this;clearTimeout(this.reconnectTimeout),this.reconnectTimeout=setTimeout((function(){t.reconnectTries++,t.connect(t.params),t._reconnect()}),this._reconnectInterval())}},{key:"_reconnectInterval",value:function(){return[1e3,2e3,5e3,1e4][this.reconnectTries]||1e4}},{key:"_poll",value:function(){var t=this;this.pollingTimeout=setTimeout((function(){t._connectionIsStale()?t._reconnect():t._poll()}),1e4)}},{key:"_startPolling",value:function(){clearTimeout(this.pollingTimeout),this._poll()}},{key:"_handlePing",value:function(){this.lastPing=u()}},{key:"_reset",value:function(){clearTimeout(this.reconnectTimeout),this.reconnectTries=0,this.attemptReconnect=!0,this._startPolling()}},{key:"connect",value:function(t){var e=this;this.params=t;var n={location:window.location.hostname,port:window.location.port,protocol:"https:"===window.location.protocol?"wss:":"ws:"};return t&&Object.assign(n,t),n.port&&(n.location+=":".concat(n.port)),new Promise((function(t,o){e.ws=new WebSocket("".concat(n.protocol,"//").concat(n.location).concat(e.endpoint)),e.ws.onmessage=function(t){e.handleMessage(t)},e.ws.onclose=function(){e.attemptReconnect&&e._reconnect()},e.ws.onopen=function(){e._reset(),t()}}))}},{key:"disconnect",value:function(){this.attemptReconnect=!1,clearTimeout(this.pollingTimeout),clearTimeout(this.reconnectTimeout),this.ws.close()}},{key:"channel",value:function(t){var e=new l(t,this);return this.channels.push(e),e}},{key:"handleMessage",value:function(t){if("ping"===t.data)return this._handlePing();var e=JSON.parse(t.data);this.channels.forEach((function(t){t.topic===e.topic&&t.handleMessage(e)}))}}]),t}();e.default={Channel:l,Socket:f},document.addEventListener("DOMContentLoaded",(function(){for(var t=document.querySelectorAll("a[data-method='delete']"),e=function(e){t[e].addEventListener("click",(function(n){n.preventDefault();var o=t[e].getAttribute("data-confirm")||"Are you sure?";if(confirm(o)){var i=document.createElement("form"),c=document.createElement("input");i.setAttribute("action",t[e].getAttribute("href")),i.setAttribute("method","POST"),c.setAttribute("type","hidden"),c.setAttribute("name","_method"),c.setAttribute("value","DELETE"),i.appendChild(c),document.body.appendChild(i),i.submit()}return!1}))},n=0;n 0.6.0 + slang: + github: jeromegn/slang + version: ~> 1.7.1 + liquid: github: dare892/liquid.cr branch: chore/bump-version-crystal1.0.0 @@ -58,10 +62,6 @@ dependencies: github: luckyframework/shell-table.cr version: ~> 0.9.3 - slang: - github: jeromegn/slang - version: ~> 1.7.1 - inflector: github: phoffer/inflector.cr version: ~> 1.0.0 diff --git a/src/amber/cli/commands.cr b/src/amber/cli/commands.cr index 9160db7aa..19194fae3 100644 --- a/src/amber/cli/commands.cr +++ b/src/amber/cli/commands.cr @@ -31,7 +31,7 @@ module Amber::CLI defaults values shown above in this help message. Usage: - amber new [app_name] -d [pg | mysql | sqlite] -t [slang | ecr] --no-deps --minimal + amber new [app_name] -d [pg | mysql | sqlite] -t [slang | ecr] --no-deps EOS footer <<-EOS @@ -45,7 +45,7 @@ module Amber::CLI version desc: "prints Amber version" help desc: "describe available commands and usages" string ["-t", "--template"], desc: "preconfigure for selected template engine", any_of: %w(slang ecr), default: "slang" - string ["-d", "--database"], desc: "preconfigure for selected database.", any_of: %w(pg mysql sqlite), default: "pg" + string ["-d", "--database"], desc: "preconfigure for selected database.", any_of: %w(pg mysql sqlite), default: "sqlite" string ["-r", "--recipe"], desc: "use a named recipe. See documentation at https://docs.amberframework.org/amber/cli/recipes.", default: nil end end diff --git a/src/amber/cli/commands/new.cr b/src/amber/cli/commands/new.cr index d4b0baacb..1b08b1f1d 100644 --- a/src/amber/cli/commands/new.cr +++ b/src/amber/cli/commands/new.cr @@ -7,13 +7,12 @@ module Amber::CLI class New < Command class Options arg "name", desc: "name/path of project", required: true - string "-d", desc: "Select the database database engine, can be one of: pg | mysql | sqlite", default: "pg" + string "-d", desc: "Select the database database engine, can be one of: pg | mysql | sqlite", default: "sqlite" string "-t", desc: "Selects the template engine language, can be one of: slang | ecr", default: "slang" string "-r", desc: "Use a named recipe. See documentation at https://docs.amberframework.org/amber/cli/recipes.", default: nil bool "--no-color", desc: "Disable colored output", default: false bool ["-y", "--assume-yes"], desc: "Assume yes to disable interactive mode", default: false bool "--no-deps", desc: "Does not install dependencies, this avoids running shards update", default: false - bool "--minimal", desc: "Does not install npm dependencies", default: false help end diff --git a/src/amber/cli/commands/watch.cr b/src/amber/cli/commands/watch.cr index 3a45bcc26..491393bf5 100644 --- a/src/amber/cli/commands/watch.cr +++ b/src/amber/cli/commands/watch.cr @@ -15,7 +15,7 @@ module Amber::CLI class Help header "Starts Amber development server and rebuilds on file changes" - caption "starts Amber development server and rebuilds on file changes" + caption "Starts Amber development server and rebuilds on file changes" end def run diff --git a/src/amber/cli/config.cr b/src/amber/cli/config.cr index f3261a049..e3531d5f6 100644 --- a/src/amber/cli/config.cr +++ b/src/amber/cli/config.cr @@ -21,20 +21,19 @@ module Amber::CLI # see defaults below alias WatchOptions = Hash(String, Hash(String, Array(String))) - property database : String = "pg" + property database : String = "sqlite" property language : String = "slang" property model : String = "granite" property recipe : (String | Nil) = nil property recipe_source : (String | Nil) = nil property watch : WatchOptions - property minimal : Bool = false def initialize @watch = default_watch_options end YAML.mapping( - database: {type: String, default: "pg"}, + database: {type: String, default: "sqlite"}, language: {type: String, default: "slang"}, model: {type: String, default: "granite"}, recipe: String | Nil, @@ -60,20 +59,6 @@ module Amber::CLI ], }, } - add_npm_watch_options(options) - end - - def add_npm_watch_options(options) - return options if @minimal - options["npm"] = Hash{ - "build_commands" => [ - "npm install --loglevel=error", - ], - "run_commands" => [ - "npm run watch", - ], - } - options end def self.get_name diff --git a/src/amber/cli/generators.cr b/src/amber/cli/generators.cr index f6181160a..b7d1418ab 100644 --- a/src/amber/cli/generators.cr +++ b/src/amber/cli/generators.cr @@ -233,7 +233,7 @@ module Amber::CLI def generate_app(options) info "Rendering App #{name} in #{directory}" - App.new(name, options.d, options.t, options.minimal?).render(directory, list: true, interactive: !options.assume_yes?, color: options.no_color?) + App.new(name, options.d, options.t).render(directory, list: true, interactive: !options.assume_yes?, color: options.no_color?) unless options.no_deps? info "Installing Dependencies" Helpers.run("cd #{directory} && shards update") diff --git a/src/amber/cli/templates/app/.amber.yml.ecr b/src/amber/cli/templates/app/.amber.yml.ecr index 19319d926..100b05076 100644 --- a/src/amber/cli/templates/app/.amber.yml.ecr +++ b/src/amber/cli/templates/app/.amber.yml.ecr @@ -29,10 +29,3 @@ watch: - AMBER_ENV=test crystal spec include: - ./spec/**/*.cr -<%- unless @minimal -%> - npm: - build_commands: - - npm install --loglevel=error - run_commands: - - npm run watch -<%- end -%> diff --git a/src/amber/cli/templates/app/config/webpack/common.js b/src/amber/cli/templates/app/config/webpack/common.js deleted file mode 100644 index 3d018635a..000000000 --- a/src/amber/cli/templates/app/config/webpack/common.js +++ /dev/null @@ -1,71 +0,0 @@ -const webpack = require('webpack'); -const path = require('path'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); - -let config = { - entry: { - main: path.resolve(__dirname, 'entry.js') - }, - output: { - filename: '[name].bundle.js', - path: path.resolve(__dirname, '../../public/dist'), - publicPath: '/dist' - }, - resolve: { - alias: { - amber: path.resolve(__dirname, '../../lib/amber/assets/js/amber.js') - } - }, - module: { - rules: [ - { - test: /\.(sass|scss|css)$/, - exclude: /node_modules/, - use: [ - MiniCssExtractPlugin.loader, - 'css-loader', - 'sass-loader' - ] - }, - { - test: /\.(png|svg|jpg|gif)$/, - exclude: /node_modules/, - use: [ - 'file-loader?name=/images/[name].[ext]' - ] - }, - { - test: /\.(woff|woff2|eot|ttf|otf)$/, - exclude: /node_modules/, - use: [ - 'file-loader?name=/[name].[ext]' - ] - }, - { - test: /\.js$/, - exclude: /node_modules/, - use: { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env'] - } - } - } - ] - }, - plugins: [ - new MiniCssExtractPlugin({ - filename: '[name].bundle.css' - }), - new CleanWebpackPlugin(), - new HtmlWebpackPlugin({ - title: 'Caching', - }), - ], - // For more info about webpack logs see: https://webpack.js.org/configuration/stats/ - stats: 'errors-only' -}; - -module.exports = config; diff --git a/src/amber/cli/templates/app/config/webpack/development.js b/src/amber/cli/templates/app/config/webpack/development.js deleted file mode 100644 index b50c903fd..000000000 --- a/src/amber/cli/templates/app/config/webpack/development.js +++ /dev/null @@ -1,8 +0,0 @@ -const webpack = require('webpack'); -const { merge } = require('webpack-merge'); -const common = require('./common.js'); - -module.exports = merge(common, { - mode: 'development', - devtool: 'inline-source-map' -}); diff --git a/src/amber/cli/templates/app/config/webpack/entry.js b/src/amber/cli/templates/app/config/webpack/entry.js deleted file mode 100644 index a8932490d..000000000 --- a/src/amber/cli/templates/app/config/webpack/entry.js +++ /dev/null @@ -1,10 +0,0 @@ -// This is the Webpack entrypoint and acts as a shim to load both the JavaScript -// and CSS source files into Webpack. It is mainly here to avoid requiring -// stylesheets from the javascripts asset directory and keep those concerns -// separate from each other within the src directory. -// -// This will be removed from Webpack 5 onward. -// See: https://github.com/webpack-contrib/mini-css-extract-plugin/issues/151 - -import '../../src/assets/javascripts/main.js'; -import '../../src/assets/stylesheets/main.scss'; diff --git a/src/amber/cli/templates/app/config/webpack/production.js b/src/amber/cli/templates/app/config/webpack/production.js deleted file mode 100644 index 4635aee93..000000000 --- a/src/amber/cli/templates/app/config/webpack/production.js +++ /dev/null @@ -1,10 +0,0 @@ -const webpack = require('webpack'); -const { merge } = require('webpack-merge'); -const common = require('./common.js'); - -module.exports = merge(common, { - mode: 'production', - optimization: { - minimize: true - } -}); diff --git a/src/amber/cli/templates/app/src/assets/fonts/.gitkeep b/src/amber/cli/templates/app/src/assets/fonts/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/amber/cli/templates/app/src/assets/images/.gitkeep b/src/amber/cli/templates/app/src/assets/images/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/amber/cli/templates/app/src/assets/images/logo.svg b/src/amber/cli/templates/app/src/assets/images/logo.svg deleted file mode 100644 index 1edac3238..000000000 --- a/src/amber/cli/templates/app/src/assets/images/logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/amber/cli/templates/app/src/assets/javascripts/main.js b/src/amber/cli/templates/app/src/assets/javascripts/main.js deleted file mode 100644 index 5ab02433f..000000000 --- a/src/amber/cli/templates/app/src/assets/javascripts/main.js +++ /dev/null @@ -1,3 +0,0 @@ -import 'bootstrap'; -import Amber from 'amber'; -import Logo from '../images/logo.svg'; diff --git a/src/amber/cli/templates/app/src/assets/stylesheets/main.scss b/src/amber/cli/templates/app/src/assets/stylesheets/main.scss deleted file mode 100644 index 55b23a64f..000000000 --- a/src/amber/cli/templates/app/src/assets/stylesheets/main.scss +++ /dev/null @@ -1,7 +0,0 @@ -$primary: #f4994b; - -@import '~bootstrap/scss/bootstrap'; - -.main { - padding-top: 20px; -} diff --git a/src/amber/cli/templates/app/src/views/home/index.ecr.ecr b/src/amber/cli/templates/app/src/views/home/index.ecr.ecr index 1525fc836..200cb15a2 100644 --- a/src/amber/cli/templates/app/src/views/home/index.ecr.ecr +++ b/src/amber/cli/templates/app/src/views/home/index.ecr.ecr @@ -4,7 +4,7 @@

Thank you for trying out the Amber Framework. We are working hard to provide a super fast and reliable framework that provides all the productivity tools you are used to without sacrificing the speed.

diff --git a/src/amber/cli/templates/app/src/views/home/index.slang.ecr b/src/amber/cli/templates/app/src/views/home/index.slang.ecr index a7080da73..737981685 100644 --- a/src/amber/cli/templates/app/src/views/home/index.slang.ecr +++ b/src/amber/cli/templates/app/src/views/home/index.slang.ecr @@ -5,4 +5,4 @@ .list-group a.list-group-item.list-group-item-action target="_blank" href="https://docs.amberframework.org" Getting Started with Amber Framework a.list-group-item.list-group-item-action target="_blank" href="https://github.com/veelenga/awesome-crystal" List of Awesome Crystal projects and shards - a.list-grouo-item.list-group-item-action target="_blank" href="https://discord.gg/vwvP5zakSn" Join the Amber Discord! + a.list-group-item.list-group-item-action target="_blank" href="https://discord.gg/vwvP5zakSn" Join the Amber Discord! diff --git a/src/amber/cli/templates/app/src/views/layouts/application.ecr.ecr b/src/amber/cli/templates/app/src/views/layouts/application.ecr.ecr index dc13a7574..1567cf818 100644 --- a/src/amber/cli/templates/app/src/views/layouts/application.ecr.ecr +++ b/src/amber/cli/templates/app/src/views/layouts/application.ecr.ecr @@ -5,7 +5,8 @@ - + + @@ -14,7 +15,7 @@