From 298e45087faf9455f4efa08a052eecd791e4da63 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 23 Sep 2022 15:49:51 -0500 Subject: [PATCH 01/10] Make consistent with recent tech-debt changes. --- .gitignore | 92 +++++++++---------- Dockerfile | 80 +++++++++++----- .../docker-entrypoint.sh | 0 build/docker-npmrc.sh | 17 ++++ package.json | 4 +- verdaccio-config.yaml | 39 ++++++-- 6 files changed, 154 insertions(+), 78 deletions(-) rename docker-entrypoint => build/docker-entrypoint.sh (100%) create mode 100644 build/docker-npmrc.sh diff --git a/.gitignore b/.gitignore index bf552bb34..085b31688 100644 --- a/.gitignore +++ b/.gitignore @@ -1,57 +1,58 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. +### Git ### +!.gitkeep -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out -# dependencies -node_modules +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ + +/.nb-gradle/ + + +### VS Code ### +.vscode/ -# System Files +dump.rdb + + +### OS Specific ### .DS_Store -Thumbs.db +.tmp/ + +tmp/ + +### Node / NPM ### coverage/ -docs/ -static/ -development/ -.lighthouseci/ +logs/ +node_modules/ + +.npmrc + +npm-debug.log package-lock.json -yarn.lock + + +### Project Specific ### src/config.json src/config-template.json src/assets/icons/* @@ -60,5 +61,4 @@ src/assets/tinymce/ !src/assets/icons/feather/chevron-right.svg .wvr-ud/static-assets/styles.css - .verdaccio diff --git a/Dockerfile b/Dockerfile index 26d96c763..cec1763af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,37 +1,73 @@ -FROM node:16-slim as npm +# Settings. +ARG USER_ID=3001 +ARG USER_NAME=components +ARG SOURCE_DIR=/$USER_NAME/source +ARG NPM_REGISTRY=upstream +ARG NODE_ENV=development -COPY package.json ./ +# Node stage. +FROM node:lts-slim as build +ARG USER_ID +ARG USER_NAME +ARG SOURCE_DIR +ARG NPM_REGISTRY +ARG NODE_ENV -WORKDIR /app -COPY . . +ENV NODE_ENV=$NODE_ENV -RUN npm install -RUN npm run build +# Create the user and group (use a high ID to attempt to avoid conflicts). +RUN groupadd --non-unique -g $USER_ID $USER_NAME && \ + useradd --non-unique -d /$USER_NAME -m -u $USER_ID -g $USER_ID $USER_NAME -FROM httpd:2.4-alpine +# Update the system and install dependencies (iproute2 is needed for "ip"). +RUN apt-get update && \ + apt-get upgrade -y && \ + apt install iproute2 -y && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Copy in files from outside of docker. +COPY . $SOURCE_DIR + +# Ensure required file permissions. +RUN chown -R $USER_ID:$USER_ID $SOURCE_DIR + +# Set deployment directory. +WORKDIR $SOURCE_DIR +# Login as user. +USER $USER_NAME + +# Perform actions. +RUN echo $NPM_REGISTRY && \ + bash build/docker-npmrc.sh $NPM_REGISTRY && \ + npm install && \ + npm run build + +# Apache stage. +FROM httpd:2.4-alpine +ARG SOURCE_DIR ARG MAJOR_VERSION=0x ARG MAJOR_MINOR_VERSION=0.0 -COPY --from=npm /app/dist/bundle/ /usr/local/apache2/htdocs/wvr-components/bundle - -RUN ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/latest -RUN ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/${MAJOR_VERSION}x -RUN ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/${MAJOR_MINOR_VERSION} +COPY --from=build $SOURCE_DIR/dist/bundle/ /usr/local/apache2/htdocs/wvr-components/bundle +COPY --from=build $SOURCE_DIR/src/config-template.json tmp/config-template.json -COPY --from=npm /app/src/config-template.json tmp/config-template.json -COPY docker-entrypoint /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint +RUN ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/latest && \ + ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/${MAJOR_VERSION}x && \ + ln -s /usr/local/apache2/htdocs/wvr-components/bundle /usr/local/apache2/htdocs/wvr-components/${MAJOR_MINOR_VERSION} -ENTRYPOINT ["docker-entrypoint"] +COPY build/docker-entrypoint.sh /usr/local/bin/ +RUN chmod +x /usr/local/bin/docker-entrypoint.sh -RUN apk update; -RUN apk upgrade; +ENTRYPOINT ["docker-entrypoint.sh"] -RUN echo "" >> /usr/local/apache2/conf/httpd.conf -RUN echo "###SPECIFIC CUSTOMIZATIONS###" >> /usr/local/apache2/conf/httpd.conf -RUN echo "" >> /usr/local/apache2/conf/httpd.conf +RUN apk update && \ + apk upgrade -RUN printf ' \nOrder Allow,Deny \nAllow from all \nAllowOverride all \nHeader set Access-Control-Allow-Origin "*" \n' >> /usr/local/apache2/conf/httpd.conf +RUN echo "" >> /usr/local/apache2/conf/httpd.conf && \ + echo "###SPECIFIC CUSTOMIZATIONS###" >> /usr/local/apache2/conf/httpd.conf && \ + echo "" >> /usr/local/apache2/conf/httpd.conf && \ + printf ' \nOrder Allow,Deny \nAllow from all \nAllowOverride all \nHeader set Access-Control-Allow-Origin "*" \n' >> /usr/local/apache2/conf/httpd.conf CMD ["httpd", "-D", "FOREGROUND"] diff --git a/docker-entrypoint b/build/docker-entrypoint.sh similarity index 100% rename from docker-entrypoint rename to build/docker-entrypoint.sh diff --git a/build/docker-npmrc.sh b/build/docker-npmrc.sh new file mode 100644 index 000000000..f0a8a8a83 --- /dev/null +++ b/build/docker-npmrc.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Requires ip and awk, but only for docker-linux. + +main() { + if [[ $1 == "docker-linux" ]] ; then + to_npmrc $(ip route | awk '/^default via/ { print $3 }') + elif [[ $1 == "docker-windows" || $1 == "docker-mac" ]] ; then + to_npmrc host.docker.internal + fi +} + +to_npmrc() { + echo "Setting NPM registry to '$1'." + echo "registry=http://$1:4873" >> .npmrc +} + +main "$@" diff --git a/package.json b/package.json index 93ac835bf..2cb56a4c2 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "start:dist": "node scripts/build-wvr-components-style.js && node scripts/build-wvr-components-configuration.js defaults-dist-overrides.env && node scripts/serve-dist.js", "start:static": "node scripts/build-wvr-components-style.js && node scripts/build-wvr-components-configuration.js defaults-static-overrides.env && static-server static -p 8081", "start:docker": "node scripts/build-wvr-components-style.js && node scripts/start-docker.js", - "start:npm-local": "verdaccio --listen localhost:4873 --config ./verdaccio-config.yaml", + "start:registry": "verdaccio --config ./verdaccio-config.yaml", "test": "npm run test:unit && npm run test:e2e", "test:audit": "rimraf .lighthouseci && lhci autorun --upload.target=temporary-public-storage --config=./lighthouserc.json && node scripts/build-wvr-components-lighthouse-badges.js", "test:e2e": "ng e2e", @@ -149,7 +149,7 @@ "static-server": "^2.2.1", "ts-node": "~10.2.1", "typescript": "~4.3.5", - "verdaccio": "^5.14.0" + "verdaccio": "^5.15.3" }, "overrides": { "@types/eslint": "^6.1.3" diff --git a/verdaccio-config.yaml b/verdaccio-config.yaml index 538743ce9..64cac7038 100644 --- a/verdaccio-config.yaml +++ b/verdaccio-config.yaml @@ -1,22 +1,31 @@ -# Look here for more config file examples: -# https://github.com/verdaccio/verdaccio/tree/master/conf +# https://verdaccio.org/docs/configuration/ -# path to a directory with all packages +# Path to a directory with all packages. storage: .verdaccio/storage -# path to a directory with plugins to include + +# Path to a directory with plugins to include. plugins: .verdaccio/plugins web: - title: Verdaccio - Weaver Components + title: Verdaccio - Weaver - Localhost + + # Disable login requirement for localhost. + login: false -# a list of other known repositories we can talk to +# List of other known repositories to use. uplinks: npmjs: url: https://registry.npmjs.org/ + cache: true + + # Set max cache age to 40 days. + maxage: 40d + +listen: 0.0.0.0:4873 packages: '@wvr/*': - # and three keywords: "$all", "$anonymous", "$authenticated" + # Choices: "$all", "$anonymous", "$authenticated". access: $all publish: $all unpublish: $all @@ -24,12 +33,26 @@ packages: '**': access: $all - # if package is not available locally, proxy requests to 'npmjs' registry + # Proxy non-local packages to 'npmjs' registry. proxy: npmjs +# Allow for publishing while offline. +publish: + allow_offline: true + server: keepAliveTimeout: 60 +security: + api: + jwt: + sign: + expiresIn: 15d + notBefore: 0 + web: + sign: + expiresIn: 1h + middlewares: audit: enabled: true From d4be76694ba34641c3edbae19ea8669773e0b5cb Mon Sep 17 00:00:00 2001 From: William Welling <8352733+wwelling@users.noreply.github.com> Date: Mon, 26 Sep 2022 08:53:32 -0500 Subject: [PATCH 02/10] Redundant variables (#499) * Fix redundant style variables * Add meta description * Add serve dist compression --- package.json | 1 + .../src/lib/shared/styles/_variables.scss | 3 +-- .../src/lib/wvr-alert/wvr-alert.component.scss | 1 - .../src/lib/wvr-button/wvr-button.component.scss | 1 - .../src/lib/wvr-card/wvr-card.component.scss | 1 - .../src/lib/wvr-dropdown/wvr-dropdown.component.scss | 1 - .../src/lib/wvr-footer/wvr-footer.component.scss | 1 - .../src/lib/wvr-header/wvr-header.component.scss | 1 - .../src/lib/wvr-icon/wvr-icon.component.scss | 1 - .../src/lib/wvr-it-works/wvr-it-works.component.scss | 1 - .../wvr-list-item/wvr-list-item.component.scss | 1 - .../src/lib/wvr-list/wvr-list.component.scss | 1 - .../src/lib/wvr-modal/wvr-modal.component.scss | 1 - .../wvr-nav-list/wvr-nav-li/wvr-nav-li.component.scss | 1 - .../src/lib/wvr-nav-list/wvr-nav-list.component.scss | 1 - .../src/lib/wvr-tabs/wvr-tabs.component.scss | 1 - .../src/lib/wvr-text/wvr-text.component.scss | 1 - .../src/lib/wvr-wysiwyg/wvr-wysiwyg.component.scss | 1 - scripts/serve-dist.js | 11 +++++++++++ src/_variables.scss.hbs | 3 +-- src/index.html | 2 ++ 21 files changed, 16 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 2cb56a4c2..2e3043d27 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,7 @@ "chalk": "^4.1.2", "chrome-launcher": "^0.15.1", "codelyzer": "^6.0.2", + "compression": "^1.7.4", "concat": "^1.0.3", "console-stamp": "^3.0.6", "coveralls": "^3.1.1", diff --git a/projects/wvr-elements/src/lib/shared/styles/_variables.scss b/projects/wvr-elements/src/lib/shared/styles/_variables.scss index 92dd68054..ac236285e 100644 --- a/projects/wvr-elements/src/lib/shared/styles/_variables.scss +++ b/projects/wvr-elements/src/lib/shared/styles/_variables.scss @@ -1,5 +1,4 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; +@import "./wvr-variables.scss"; $primary: #007bff; $primaryAccent: #007bff; diff --git a/projects/wvr-elements/src/lib/wvr-alert/wvr-alert.component.scss b/projects/wvr-elements/src/lib/wvr-alert/wvr-alert.component.scss index e824bc871..bbc7fbcc0 100644 --- a/projects/wvr-elements/src/lib/wvr-alert/wvr-alert.component.scss +++ b/projects/wvr-elements/src/lib/wvr-alert/wvr-alert.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-button/wvr-button.component.scss b/projects/wvr-elements/src/lib/wvr-button/wvr-button.component.scss index 794ee466f..7b6bfaec6 100644 --- a/projects/wvr-elements/src/lib/wvr-button/wvr-button.component.scss +++ b/projects/wvr-elements/src/lib/wvr-button/wvr-button.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-card/wvr-card.component.scss b/projects/wvr-elements/src/lib/wvr-card/wvr-card.component.scss index 4db55c960..ffd74c54c 100644 --- a/projects/wvr-elements/src/lib/wvr-card/wvr-card.component.scss +++ b/projects/wvr-elements/src/lib/wvr-card/wvr-card.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-dropdown/wvr-dropdown.component.scss b/projects/wvr-elements/src/lib/wvr-dropdown/wvr-dropdown.component.scss index fa34ca134..8b7ad3f7f 100644 --- a/projects/wvr-elements/src/lib/wvr-dropdown/wvr-dropdown.component.scss +++ b/projects/wvr-elements/src/lib/wvr-dropdown/wvr-dropdown.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-footer/wvr-footer.component.scss b/projects/wvr-elements/src/lib/wvr-footer/wvr-footer.component.scss index 74890ecad..c742e5489 100644 --- a/projects/wvr-elements/src/lib/wvr-footer/wvr-footer.component.scss +++ b/projects/wvr-elements/src/lib/wvr-footer/wvr-footer.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-header/wvr-header.component.scss b/projects/wvr-elements/src/lib/wvr-header/wvr-header.component.scss index 9d9db09f7..e46097ba2 100644 --- a/projects/wvr-elements/src/lib/wvr-header/wvr-header.component.scss +++ b/projects/wvr-elements/src/lib/wvr-header/wvr-header.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-icon/wvr-icon.component.scss b/projects/wvr-elements/src/lib/wvr-icon/wvr-icon.component.scss index 487042151..0e7ba5432 100644 --- a/projects/wvr-elements/src/lib/wvr-icon/wvr-icon.component.scss +++ b/projects/wvr-elements/src/lib/wvr-icon/wvr-icon.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-it-works/wvr-it-works.component.scss b/projects/wvr-elements/src/lib/wvr-it-works/wvr-it-works.component.scss index 8b68a6ec7..a24e95725 100644 --- a/projects/wvr-elements/src/lib/wvr-it-works/wvr-it-works.component.scss +++ b/projects/wvr-elements/src/lib/wvr-it-works/wvr-it-works.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-list/wvr-list-item/wvr-list-item.component.scss b/projects/wvr-elements/src/lib/wvr-list/wvr-list-item/wvr-list-item.component.scss index affeaacdd..10bdc4a8d 100644 --- a/projects/wvr-elements/src/lib/wvr-list/wvr-list-item/wvr-list-item.component.scss +++ b/projects/wvr-elements/src/lib/wvr-list/wvr-list-item/wvr-list-item.component.scss @@ -1,4 +1,3 @@ -@import "../../shared/styles/wvr-variables.scss"; @import "../../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-list/wvr-list.component.scss b/projects/wvr-elements/src/lib/wvr-list/wvr-list.component.scss index ec08611d9..66d34fc5d 100644 --- a/projects/wvr-elements/src/lib/wvr-list/wvr-list.component.scss +++ b/projects/wvr-elements/src/lib/wvr-list/wvr-list.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-modal/wvr-modal.component.scss b/projects/wvr-elements/src/lib/wvr-modal/wvr-modal.component.scss index 19ec75e52..9251e9be1 100644 --- a/projects/wvr-elements/src/lib/wvr-modal/wvr-modal.component.scss +++ b/projects/wvr-elements/src/lib/wvr-modal/wvr-modal.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-li/wvr-nav-li.component.scss b/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-li/wvr-nav-li.component.scss index e8f03e12a..afb3f2b04 100644 --- a/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-li/wvr-nav-li.component.scss +++ b/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-li/wvr-nav-li.component.scss @@ -1,4 +1,3 @@ -@import "../../shared/styles/wvr-variables.scss"; @import "../../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-list.component.scss b/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-list.component.scss index 476d3ced7..199b22cce 100644 --- a/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-list.component.scss +++ b/projects/wvr-elements/src/lib/wvr-nav-list/wvr-nav-list.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-tabs/wvr-tabs.component.scss b/projects/wvr-elements/src/lib/wvr-tabs/wvr-tabs.component.scss index fccdb6601..f11e8958c 100644 --- a/projects/wvr-elements/src/lib/wvr-tabs/wvr-tabs.component.scss +++ b/projects/wvr-elements/src/lib/wvr-tabs/wvr-tabs.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-text/wvr-text.component.scss b/projects/wvr-elements/src/lib/wvr-text/wvr-text.component.scss index c30321117..e4d9316e2 100644 --- a/projects/wvr-elements/src/lib/wvr-text/wvr-text.component.scss +++ b/projects/wvr-elements/src/lib/wvr-text/wvr-text.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/projects/wvr-elements/src/lib/wvr-wysiwyg/wvr-wysiwyg.component.scss b/projects/wvr-elements/src/lib/wvr-wysiwyg/wvr-wysiwyg.component.scss index dcf0c9d4d..e962aaa29 100644 --- a/projects/wvr-elements/src/lib/wvr-wysiwyg/wvr-wysiwyg.component.scss +++ b/projects/wvr-elements/src/lib/wvr-wysiwyg/wvr-wysiwyg.component.scss @@ -1,4 +1,3 @@ -@import "../shared/styles/wvr-variables.scss"; @import "../shared/styles/variables"; :host { diff --git a/scripts/serve-dist.js b/scripts/serve-dist.js index 3c08593d1..05436cb3e 100644 --- a/scripts/serve-dist.js +++ b/scripts/serve-dist.js @@ -3,9 +3,20 @@ const fs = require('fs'); const path = require('path'); const express = require('express'); +const compression = require('compression'); const server = express(); +server.use(compression({ + filter: (req, res) => { + if (req.headers['x-no-compression']) { + return false + } + + return compression.filter(req, res) + } +})) + server.use(express.static('www', { maxAge: 3600000 })); fs.copyFileSync('src/index.html', `dist/bundle/index.html`); diff --git a/src/_variables.scss.hbs b/src/_variables.scss.hbs index 68464f637..871eda56b 100644 --- a/src/_variables.scss.hbs +++ b/src/_variables.scss.hbs @@ -1,5 +1,4 @@ -@import "~bootstrap/scss/functions"; -@import "~bootstrap/scss/variables"; +@import "./wvr-variables.scss"; {{#each themeVariants}} ${{@key}}: {{this.baseColor}}; diff --git a/src/index.html b/src/index.html index 735e684d4..f4e053a7d 100644 --- a/src/index.html +++ b/src/index.html @@ -3,6 +3,8 @@ Weaver Components + +