From 96493710e82f2d21927f4ddb6e6fa2fc78ac41be Mon Sep 17 00:00:00 2001
From: Spencer Comfort <109806759+GiddyGoatGaming@users.noreply.github.com>
Date: Tue, 17 Jan 2023 12:23:25 -0500
Subject: [PATCH 001/121] Update GitHub actions
---
.github/workflows/automerge-prs.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/automerge-prs.yml b/.github/workflows/automerge-prs.yml
index 688899c29..3f8333e46 100644
--- a/.github/workflows/automerge-prs.yml
+++ b/.github/workflows/automerge-prs.yml
@@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: automerge
- uses: "pascalgn/automerge-action@v0.13.1"
+ uses: "pascalgn/automerge-action@v0.15.5"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
MERGE_LABELS: "auto-merge,!work in progress"
@@ -30,4 +30,4 @@ jobs:
MERGE_FORKS: "false"
MERGE_RETRIES: "6"
MERGE_RETRY_SLEEP: "10000"
- MERGE_DELETE_BRANCH: "true"
\ No newline at end of file
+ MERGE_DELETE_BRANCH: "true"
From 1deaf3001b3bb649a2586841c8a3c798e5ba9678 Mon Sep 17 00:00:00 2001
From: Spencer Comfort <109806759+GiddyGoatGaming@users.noreply.github.com>
Date: Tue, 17 Jan 2023 12:24:47 -0500
Subject: [PATCH 002/121] Update lint-and-generate-html-from-markdown.yml
---
.../lint-and-generate-html-from-markdown.yml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/lint-and-generate-html-from-markdown.yml b/.github/workflows/lint-and-generate-html-from-markdown.yml
index e50557e2d..77bcd3a37 100644
--- a/.github/workflows/lint-and-generate-html-from-markdown.yml
+++ b/.github/workflows/lint-and-generate-html-from-markdown.yml
@@ -19,12 +19,12 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v1
+ uses: actions/checkout@v3
- name: Setup Node.js environment
- uses: actions/setup-node@v2.1.2
+ uses: actions/setup-node@v3
with:
- node-version: '14'
+ node-version: '18'
- run: npm install
- run: npm run lint
@@ -35,12 +35,12 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v1
+ uses: actions/checkout@v3
- name: Setup Node.js environment
- uses: actions/setup-node@v2.1.2
+ uses: actions/setup-node@v3
with:
- node-version: '14'
+ node-version: '18'
- run: npm install
- run: npm run build
From c9828c7851083197d6ee9a90ad713fd082b95fbc Mon Sep 17 00:00:00 2001
From: Spencer Comfort <109806759+GiddyGoatGaming@users.noreply.github.com>
Date: Tue, 17 Jan 2023 12:25:13 -0500
Subject: [PATCH 003/121] Update update-date-in-last-update-badge.yml
---
.github/workflows/update-date-in-last-update-badge.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/update-date-in-last-update-badge.yml b/.github/workflows/update-date-in-last-update-badge.yml
index 95873a926..c440307be 100644
--- a/.github/workflows/update-date-in-last-update-badge.yml
+++ b/.github/workflows/update-date-in-last-update-badge.yml
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout repo
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Update last update badge
run: |
@@ -24,7 +24,7 @@ jobs:
"${GITHUB_WORKSPACE}/.github/workflows/update-last-update-badge.sh" "${GITHUB_WORKSPACE}/README.md"
- name: Commit & Create Pull Request
- uses: peter-evans/create-pull-request@v3
+ uses: peter-evans/create-pull-request@v4
with:
commit-message: update the last update badge to today [skip ci]
author: Update Last Update Badge Action <${{ github.actor }}@users.noreply.github.com>
From 9c874db3455c3a91ac841cfec375f592f2e5ca2e Mon Sep 17 00:00:00 2001
From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com>
Date: Sat, 8 Apr 2023 22:48:25 +0300
Subject: [PATCH 004/121] remove build step
---
.../lint-and-generate-html-from-markdown.yml | 19 -
.operations/.env.example | 1 -
.operations/gen-html.js | 261 -----------
.operations/out/.gitignore | 2 -
.operations/package.json | 15 +-
.operations/res/github.css | 99 ----
.operations/res/highlight.pack.js | 2 -
.operations/res/normalize.css | 427 ------------------
.operations/res/skeleton.css | 418 -----------------
.operations/res/template.html | 48 --
10 files changed, 2 insertions(+), 1290 deletions(-)
delete mode 100644 .operations/.env.example
delete mode 100644 .operations/gen-html.js
delete mode 100644 .operations/out/.gitignore
delete mode 100644 .operations/res/github.css
delete mode 100644 .operations/res/highlight.pack.js
delete mode 100644 .operations/res/normalize.css
delete mode 100644 .operations/res/skeleton.css
delete mode 100644 .operations/res/template.html
diff --git a/.github/workflows/lint-and-generate-html-from-markdown.yml b/.github/workflows/lint-and-generate-html-from-markdown.yml
index e50557e2d..81bf627c8 100644
--- a/.github/workflows/lint-and-generate-html-from-markdown.yml
+++ b/.github/workflows/lint-and-generate-html-from-markdown.yml
@@ -28,22 +28,3 @@ jobs:
- run: npm install
- run: npm run lint
-
- build:
- name: Build
- runs-on: ubuntu-20.04
-
- steps:
- - name: Checkout
- uses: actions/checkout@v1
-
- - name: Setup Node.js environment
- uses: actions/setup-node@v2.1.2
- with:
- node-version: '14'
-
- - run: npm install
- - run: npm run build
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- IS_FORK: ${{ github.repository != 'goldbergyoni/nodebestpractices' }}
diff --git a/.operations/.env.example b/.operations/.env.example
deleted file mode 100644
index 77e1c98da..000000000
--- a/.operations/.env.example
+++ /dev/null
@@ -1 +0,0 @@
-GITHUB_TOKEN=REPLACEME
\ No newline at end of file
diff --git a/.operations/gen-html.js b/.operations/gen-html.js
deleted file mode 100644
index d577df162..000000000
--- a/.operations/gen-html.js
+++ /dev/null
@@ -1,261 +0,0 @@
-const path = require('path');
-const cheerio = require('cheerio');
-const showdown = require('showdown');
-const Repository = require('github-api/dist/components/Repository');
-const { readdir, readFile, writeFile } = require('graceful-fs');
-
-const imagemin = require('imagemin');
-const imageminJpegtran = require('imagemin-jpegtran');
-const imageminPngquant = require('imagemin-pngquant');
-const CIInfo = require('ci-info');
-
-const converter = new showdown.Converter();
-
-const templateFilePath = './.operations/res/template.html';
-
-const imageminOpts = {
- plugins: [
- imageminJpegtran(),
- imageminPngquant({ quality: '65-80' })
- ]
-};
-
-console.info(`Working in [${process.cwd()}]`);
-
-const { isCI } = CIInfo;
-const { GITHUB_TOKEN, OWNER_AND_REPO, BRANCH, IS_PR, IS_FORK } = getConfigFromEnv();
-
-readDirPromise('./')
- .then(async (fileNames) => {
- const indexFileNames = fileNames.filter(fn => fn.includes('README.') && fn.includes('.md'));
-
- for (let fileName of indexFileNames) {
- const startTime = new Date();
- console.info(`Beginning Generate Document [${fileName}] at [${startTime.toISOString()}]`);
- try {
- const templateHTML = await readFilePromise(templateFilePath);
- const processedTemplateHTML = await inlineResources(templateHTML);
- const outputHTML = await processMDFile(fileName, processedTemplateHTML);
- console.info(`Completed Generation in [${computeElapsedTime(startTime)}s]`);
-
- const outFileName = path.parse(fileName).name + '.html';
- const outFilePath = path.join('.operations', 'out', outFileName);
- console.info(`Writing output to [${outFilePath}]`);
- await writeFilePromise(outFilePath, outputHTML);
-
- if(shouldUpdateGitHubPages()) {
- const repo = new Repository(OWNER_AND_REPO, {
- token: GITHUB_TOKEN
- });
-
- console.info(`Committing HTML file to branch [gh-pages]`);
- await repo.writeFile('gh-pages', outFileName, outputHTML, ':loudspeaker: :robot: Automatically updating built HTML file', {});
- }
- } catch (err) {
- console.error(`Failed to generate from [${fileName}] in [${computeElapsedTime(startTime)}s]`, err);
- process.exit(1);
- }
- }
- })
- .then(() => {
- console.log(`๐ Finished gen-html ๐`);
- })
-
-function getConfigFromEnv() {
- if (CIInfo.GITHUB_ACTIONS) {
- return getConfigFromGithubActionEnv()
- }
- return process.env;
-}
-
-function getConfigFromGithubActionEnv() {
- const config = {
- ...process.env,
-
- OWNER_AND_REPO: process.env.GITHUB_REPOSITORY,
-
- IS_PR: CIInfo.IS_PR !== null ? CIInfo.IS_PR : process.env.GITHUB_EVENT_NAME === 'pull_request',
-
- // We assume we're in PR and and we get the source for the PR
- BRANCH: process.env.GITHUB_HEAD_REF,
- };
-
- if(!config.IS_PR) {
- // GITHUB_REF example: `refs/heads/main`
- config.BRANCH = process.env.GITHUB_REF.substring('refs/heads/'.length);
- }
-
- return config;
-}
-
-function shouldUpdateGitHubPages() {
- return isCI && !IS_FORK && !IS_PR && BRANCH === 'master';
-}
-
-function computeElapsedTime(startTime) {
- return (Date.now() - startTime) / 1000;
-}
-
-
-async function processMDFile(filePath = '/', templateHTML = null) {
- let mdSrc;
- try {
- mdSrc = await readFilePromise(filePath);
- } catch (err) {
- console.warn(`Failed to read file [${filePath}], does it exist?`);
- return '';
- }
- const generatedHTML = converter.makeHtml(mdSrc);
- let nexHTML = generatedHTML;
- if (templateHTML) {
- const $ = cheerio.load(templateHTML);
- $('.content').html(generatedHTML);
- nexHTML = $.html();
- }
-
- const fileDir = path.parse(filePath).dir.replace(process.cwd(), '/') || '/';
-
- console.log(`Processing file [${filePath}]`);
- const outHtml = await (
- inlineLocalReferences(nexHTML, fileDir)
- .then((html) => fixMdReferences(html))
- .then((html) => fixHashAs(html))
- .then((html) => inlineAssets(html, fileDir))
- );
-
- return outHtml;
-}
-
-const internalRefRegExp = /^((?!http)(?!data:)(?!#)(?!\/\/).)*$/; // Doesn't start with 'http', 'data:', '#', or '//'
-async function inlineLocalReferences(html, filePath = '/') {
- const $ = cheerio.load(html);
- const as = $('a');
- const internalAs = as.toArray().filter((a) => internalRefRegExp.test(a.attribs.href) && !a.attribs.href.includes('README'));
-
- const processedInternalRefs = await Promise.all(
- internalAs.map((a) => processMDFile(path.resolve(filePath, a.attribs.href)))
- );
-
- processedInternalRefs.forEach((processedHTML, index) => {
- const originalA = $(internalAs[index]);
-
- const contentId = originalA.text().replace(/[^A-Za-z0-9]/g, '_');
- $('.references').append([
- $('
'),
- $('')
- .addClass('reference-section')
- .attr('id', contentId)
- .html(processedHTML)
- ]);
-
- originalA.attr('href', `#${contentId}`);
- });
-
- return $.html();
-}
-
-async function fixMdReferences(html) { // Primarily for links to translations
- const $ = cheerio.load(html);
- const as = $('a');
- const mdReferences = as.toArray().filter((a) => internalRefRegExp.test(a.attribs.href) && a.attribs.href.includes('.md'));
-
- mdReferences
- .forEach((a) => {
- const $a = $(a);
- const href = $a.attr('href')
- const newHref = href.replace('.md', '.html');
- $a.attr('href', './' + newHref);
- })
-
- return $.html();
-}
-
-async function inlineAssets(html, filePath = '/') {
- const $ = cheerio.load(html);
- const imgs = $('img');
- const internalImgs = imgs.toArray().filter((img) => internalRefRegExp.test(img.attribs.src));
-
- for (let img of internalImgs) {
- const ext = path.parse(img.attribs.src).ext.slice(1); // parse().ext includes '.'
- const imgPath = path.resolve('/', filePath, img.attribs.src);
- const imgBuffer = await readFilePromise(imgPath, null);
- const compressedImgBuffer = await imagemin.buffer(imgBuffer, imageminOpts);
- const base64 = compressedImgBuffer.toString('base64');
- const mediaUri = `data:image/${ext};base64,${base64}`;
- const originalImg = $(img);
- originalImg.attr('src', mediaUri);
- }
-
- return $.html();
-}
-
-async function fixHashAs(html) {
- const $ = cheerio.load(html);
- const as = $('a');
-
- const hashAs = as.toArray().filter((a) => a.attribs.href[0] === '#');
- hashAs.forEach(a => {
- $(a).attr('href', a.attribs.href.replace(/-/g, ''));
- });
-
- return $.html()
-}
-
-
-
-async function inlineResources(html, filePath = '/') {
- const $ = cheerio.load(html);
- const scripts = $('script[src]');
- const links = $('link[href]');
-
- const internalScripts = scripts.toArray().filter((script) => internalRefRegExp.test(script.attribs.src));
- const internalLinks = links.toArray().filter((link) => internalRefRegExp.test(link.attribs.href));
-
- for (let scriptEl of internalScripts) {
- const scriptPath = path.resolve('/', filePath, scriptEl.attribs.src);
- const scriptBuffer = await readFilePromise(scriptPath, null);
- const base64 = scriptBuffer.toString('base64');
- const mediaUri = `data:text/javascript;base64,${base64}`;
- $(scriptEl).attr('src', mediaUri);
- }
-
- for (let linkEl of internalLinks) {
- const linkPath = path.resolve('/', filePath, linkEl.attribs.href);
- const linkBuffer = await readFilePromise(linkPath, null);
- const base64 = linkBuffer.toString('base64');
- const mediaUri = `data:text/css;base64,${base64}`;
- $(linkEl).attr('href', mediaUri);
- }
-
- return $.html();
-}
-
-
-
-
-function readFilePromise(filePath, encoding = 'utf8') {
- return new Promise((resolve, reject) => {
- readFile(path.resolve(process.cwd(), './' + filePath), encoding, (err, content) => {
- if (err) reject(err);
- else resolve(content);
- });
- });
-}
-
-function writeFilePromise(filePath, encoding = 'utf8') {
- return new Promise((resolve, reject) => {
- writeFile(path.resolve(process.cwd(), './' + filePath), encoding, (err, content) => {
- if (err) reject(err);
- else resolve(content);
- });
- });
-}
-
-function readDirPromise(dirPath) {
- return new Promise((resolve, reject) => {
- readdir(path.resolve(process.cwd(), dirPath), (err, files) => {
- if (err) reject(err);
- else resolve(files);
- });
- });
-}
diff --git a/.operations/out/.gitignore b/.operations/out/.gitignore
deleted file mode 100644
index d6b7ef32c..000000000
--- a/.operations/out/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/.operations/package.json b/.operations/package.json
index b727d827f..80c938f0a 100644
--- a/.operations/package.json
+++ b/.operations/package.json
@@ -4,9 +4,7 @@
"description": "[โ]: assets/images/checkbox-small-blue.png",
"main": "gen-html.js",
"scripts": {
- "build": "cd .. && node .operations/gen-html.js",
- "test": "echo \"Error: no test specified\" && exit 1",
- "lint": "markdownlint ../READM*.md"
+ "lint": "markdownlint ../README*.md"
},
"repository": {
"type": "git",
@@ -19,15 +17,6 @@
},
"homepage": "https://github.com/goldbergyoni/nodebestpractices#readme",
"dependencies": {
- "cheerio": "^1.0.0-rc.2",
- "ci-info": "^3.1.1",
- "github-api": "^3.0.0",
- "graceful-fs": "^4.1.15",
- "imagemin": "^6.0.0",
- "imagemin-jpegtran": "^6.0.0",
- "imagemin-pngquant": "^6.0.0",
- "is-ci": "^3.0.0",
- "markdownlint-cli": "^0.18.0",
- "showdown": "^1.9.0"
+ "markdownlint-cli": "^0.18.0"
}
}
diff --git a/.operations/res/github.css b/.operations/res/github.css
deleted file mode 100644
index 791932b87..000000000
--- a/.operations/res/github.css
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-
-github.com style (c) Vasily Polovnyov
-
-*/
-
-.hljs {
- display: block;
- overflow-x: auto;
- padding: 0.5em;
- color: #333;
- background: #f8f8f8;
-}
-
-.hljs-comment,
-.hljs-quote {
- color: #998;
- font-style: italic;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-subst {
- color: #333;
- font-weight: bold;
-}
-
-.hljs-number,
-.hljs-literal,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-tag .hljs-attr {
- color: #008080;
-}
-
-.hljs-string,
-.hljs-doctag {
- color: #d14;
-}
-
-.hljs-title,
-.hljs-section,
-.hljs-selector-id {
- color: #900;
- font-weight: bold;
-}
-
-.hljs-subst {
- font-weight: normal;
-}
-
-.hljs-type,
-.hljs-class .hljs-title {
- color: #458;
- font-weight: bold;
-}
-
-.hljs-tag,
-.hljs-name,
-.hljs-attribute {
- color: #000080;
- font-weight: normal;
-}
-
-.hljs-regexp,
-.hljs-link {
- color: #009926;
-}
-
-.hljs-symbol,
-.hljs-bullet {
- color: #990073;
-}
-
-.hljs-built_in,
-.hljs-builtin-name {
- color: #0086b3;
-}
-
-.hljs-meta {
- color: #999;
- font-weight: bold;
-}
-
-.hljs-deletion {
- background: #fdd;
-}
-
-.hljs-addition {
- background: #dfd;
-}
-
-.hljs-emphasis {
- font-style: italic;
-}
-
-.hljs-strong {
- font-weight: bold;
-}
diff --git a/.operations/res/highlight.pack.js b/.operations/res/highlight.pack.js
deleted file mode 100644
index b64bd7d80..000000000
--- a/.operations/res/highlight.pack.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! highlight.js v9.13.1 | BSD3 License | git.io/hljslicense */
-!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=M.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function c(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function u(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function c(e){l+=""+t(e)+">"}function u(e){("start"===e.event?o:c)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=i();if(l+=n(a.substring(s,g[0].offset)),s=g[0].offset,g===e){f.reverse().forEach(c);do u(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),u(g.splice(0,1)[0])}return l+n(a.substr(s))}function s(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function l(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):B(a.k).forEach(function(e){c(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.endSameAsBegin&&(a.e=a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return s("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var u=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=u.length?t(u.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function c(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t].endSameAsBegin&&(n.c[t].eR=o(n.c[t].bR.exec(e)[0])),n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function s(e,n){return!a&&r(n.iR,e)}function p(e,n){var t=R.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function d(e,n,t,r){var a=r?"":j.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=p(E,r),e?(M+=e[1],a+=d(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function b(){var e="string"==typeof E.sL;if(e&&!L[E.sL])return n(k);var t=e?f(E.sL,k,!0,B[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(B[E.sL]=t.top),d(t.language,t.value,!1,!0)}function v(){y+=null!=E.sL?b():h(),k=""}function m(e){y+=e.cN?d(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function N(e,n){if(k+=e,null==n)return v(),0;var t=c(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),v(),t.rB||t.eB||(k=n)),m(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),v(),a.eE&&(k=n));do E.cN&&(y+=I),E.skip||E.sL||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&(r.endSameAsBegin&&(r.starts.eR=r.eR),m(r.starts,"")),a.rE?0:n.length}if(s(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var R=w(e);if(!R)throw new Error('Unknown language: "'+e+'"');l(R);var x,E=i||R,B={},y="";for(x=E;x!==R;x=x.parent)x.cN&&(y=d(x.cN,"",!0)+y);var k="",M=0;try{for(var C,A,S=0;;){if(E.t.lastIndex=S,C=E.t.exec(t),!C)break;A=N(t.substring(S,C.index),C[0]),S=C.index+A}for(N(t.substr(S)),x=E;x.parent;x=x.parent)x.cN&&(y+=I);return{r:M,value:y,language:e,top:E}}catch(O){if(O.message&&-1!==O.message.indexOf("Illegal"))return{r:0,value:n(t)};throw O}}function g(e,t){t=t||j.languages||B(L);var r={r:0,value:n(e)},a=r;return t.filter(w).filter(x).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return j.tabReplace||j.useBR?e.replace(C,function(e,n){return j.useBR&&"\n"===e?"
":j.tabReplace?n.replace(/\t/g,j.tabReplace):""}):e}function d(e,n,t){var r=n?y[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function h(e){var n,t,r,o,s,l=i(e);a(l)||(j.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/
/g,"\n")):n=e,s=n.textContent,r=l?f(l,s,!0):g(s),t=c(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=u(t,c(o),s)),r.value=p(r.value),e.innerHTML=r.value,e.className=d(e.className,l,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){j=o(j,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,h)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=L[n]=t(e);r.aliases&&r.aliases.forEach(function(e){y[e]=n})}function R(){return B(L)}function w(e){return e=(e||"").toLowerCase(),L[e]||L[y[e]]}function x(e){var n=w(e);return n&&!n.disableAutodetect}var E=[],B=Object.keys,L={},y={},k=/^(no-?highlight|plain|text)$/i,M=/\blang(?:uage)?-([\w-]+)\b/i,C=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,I="",j={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=h,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.autoDetection=x,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/,r:0,c:[{cN:"attr",b:e,r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},s.inherit(s.ASM,{i:null,cN:null,c:null,skip:!0}),s.inherit(s.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});
\ No newline at end of file
diff --git a/.operations/res/normalize.css b/.operations/res/normalize.css
deleted file mode 100644
index 81c6f31ea..000000000
--- a/.operations/res/normalize.css
+++ /dev/null
@@ -1,427 +0,0 @@
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined for any HTML5 element in IE 8/9.
- * Correct `block` display not defined for `details` or `summary` in IE 10/11
- * and Firefox.
- * Correct `block` display not defined for `main` in IE 11.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9/10.
- * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9/10.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow not hidden in IE 9/10/11.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
- overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- * Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; /* 1 */
- font: inherit; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10/11.
- */
-
-button {
- overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
- line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9/10/11.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9/10/11.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
- font-weight: bold;
-}
-
-/* Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
\ No newline at end of file
diff --git a/.operations/res/skeleton.css b/.operations/res/skeleton.css
deleted file mode 100644
index f28bf6c59..000000000
--- a/.operations/res/skeleton.css
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
-* Skeleton V2.0.4
-* Copyright 2014, Dave Gamache
-* www.getskeleton.com
-* Free to use under the MIT license.
-* http://www.opensource.org/licenses/mit-license.php
-* 12/29/2014
-*/
-
-
-/* Table of contents
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-- Grid
-- Base Styles
-- Typography
-- Links
-- Buttons
-- Forms
-- Lists
-- Code
-- Tables
-- Spacing
-- Utilities
-- Clearing
-- Media Queries
-*/
-
-
-/* Grid
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-.container {
- position: relative;
- width: 100%;
- max-width: 960px;
- margin: 0 auto;
- padding: 0 20px;
- box-sizing: border-box; }
-.column,
-.columns {
- width: 100%;
- float: left;
- box-sizing: border-box; }
-
-/* For devices larger than 400px */
-@media (min-width: 400px) {
- .container {
- width: 85%;
- padding: 0; }
-}
-
-/* For devices larger than 550px */
-@media (min-width: 550px) {
- .container {
- width: 80%; }
- .column,
- .columns {
- margin-left: 4%; }
- .column:first-child,
- .columns:first-child {
- margin-left: 0; }
-
- .one.column,
- .one.columns { width: 4.66666666667%; }
- .two.columns { width: 13.3333333333%; }
- .three.columns { width: 22%; }
- .four.columns { width: 30.6666666667%; }
- .five.columns { width: 39.3333333333%; }
- .six.columns { width: 48%; }
- .seven.columns { width: 56.6666666667%; }
- .eight.columns { width: 65.3333333333%; }
- .nine.columns { width: 74.0%; }
- .ten.columns { width: 82.6666666667%; }
- .eleven.columns { width: 91.3333333333%; }
- .twelve.columns { width: 100%; margin-left: 0; }
-
- .one-third.column { width: 30.6666666667%; }
- .two-thirds.column { width: 65.3333333333%; }
-
- .one-half.column { width: 48%; }
-
- /* Offsets */
- .offset-by-one.column,
- .offset-by-one.columns { margin-left: 8.66666666667%; }
- .offset-by-two.column,
- .offset-by-two.columns { margin-left: 17.3333333333%; }
- .offset-by-three.column,
- .offset-by-three.columns { margin-left: 26%; }
- .offset-by-four.column,
- .offset-by-four.columns { margin-left: 34.6666666667%; }
- .offset-by-five.column,
- .offset-by-five.columns { margin-left: 43.3333333333%; }
- .offset-by-six.column,
- .offset-by-six.columns { margin-left: 52%; }
- .offset-by-seven.column,
- .offset-by-seven.columns { margin-left: 60.6666666667%; }
- .offset-by-eight.column,
- .offset-by-eight.columns { margin-left: 69.3333333333%; }
- .offset-by-nine.column,
- .offset-by-nine.columns { margin-left: 78.0%; }
- .offset-by-ten.column,
- .offset-by-ten.columns { margin-left: 86.6666666667%; }
- .offset-by-eleven.column,
- .offset-by-eleven.columns { margin-left: 95.3333333333%; }
-
- .offset-by-one-third.column,
- .offset-by-one-third.columns { margin-left: 34.6666666667%; }
- .offset-by-two-thirds.column,
- .offset-by-two-thirds.columns { margin-left: 69.3333333333%; }
-
- .offset-by-one-half.column,
- .offset-by-one-half.columns { margin-left: 52%; }
-
-}
-
-
-/* Base Styles
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-/* NOTE
-html is set to 62.5% so that all the REM measurements throughout Skeleton
-are based on 10px sizing. So basically 1.5rem = 15px :) */
-html {
- font-size: 62.5%; }
-body {
- font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */
- line-height: 1.6;
- font-weight: 400;
- font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
- color: #222; }
-
-
-/* Typography
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-h1, h2, h3, h4, h5, h6 {
- margin-top: 0;
- margin-bottom: 2rem;
- font-weight: 300; }
-h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;}
-h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; }
-h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; }
-h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; }
-h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; }
-h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; }
-
-/* Larger than phablet */
-@media (min-width: 550px) {
- h1 { font-size: 5.0rem; }
- h2 { font-size: 4.2rem; }
- h3 { font-size: 3.6rem; }
- h4 { font-size: 3.0rem; }
- h5 { font-size: 2.4rem; }
- h6 { font-size: 1.5rem; }
-}
-
-p {
- margin-top: 0; }
-
-
-/* Links
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-a {
- color: #1EAEDB; }
-a:hover {
- color: #0FA0CE; }
-
-
-/* Buttons
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-.button,
-button,
-input[type="submit"],
-input[type="reset"],
-input[type="button"] {
- display: inline-block;
- height: 38px;
- padding: 0 30px;
- color: #555;
- text-align: center;
- font-size: 11px;
- font-weight: 600;
- line-height: 38px;
- letter-spacing: .1rem;
- text-transform: uppercase;
- text-decoration: none;
- white-space: nowrap;
- background-color: transparent;
- border-radius: 4px;
- border: 1px solid #bbb;
- cursor: pointer;
- box-sizing: border-box; }
-.button:hover,
-button:hover,
-input[type="submit"]:hover,
-input[type="reset"]:hover,
-input[type="button"]:hover,
-.button:focus,
-button:focus,
-input[type="submit"]:focus,
-input[type="reset"]:focus,
-input[type="button"]:focus {
- color: #333;
- border-color: #888;
- outline: 0; }
-.button.button-primary,
-button.button-primary,
-input[type="submit"].button-primary,
-input[type="reset"].button-primary,
-input[type="button"].button-primary {
- color: #FFF;
- background-color: #33C3F0;
- border-color: #33C3F0; }
-.button.button-primary:hover,
-button.button-primary:hover,
-input[type="submit"].button-primary:hover,
-input[type="reset"].button-primary:hover,
-input[type="button"].button-primary:hover,
-.button.button-primary:focus,
-button.button-primary:focus,
-input[type="submit"].button-primary:focus,
-input[type="reset"].button-primary:focus,
-input[type="button"].button-primary:focus {
- color: #FFF;
- background-color: #1EAEDB;
- border-color: #1EAEDB; }
-
-
-/* Forms
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="text"],
-input[type="tel"],
-input[type="url"],
-input[type="password"],
-textarea,
-select {
- height: 38px;
- padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */
- background-color: #fff;
- border: 1px solid #D1D1D1;
- border-radius: 4px;
- box-shadow: none;
- box-sizing: border-box; }
-/* Removes awkward default styles on some inputs for iOS */
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="text"],
-input[type="tel"],
-input[type="url"],
-input[type="password"],
-textarea {
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none; }
-textarea {
- min-height: 65px;
- padding-top: 6px;
- padding-bottom: 6px; }
-input[type="email"]:focus,
-input[type="number"]:focus,
-input[type="search"]:focus,
-input[type="text"]:focus,
-input[type="tel"]:focus,
-input[type="url"]:focus,
-input[type="password"]:focus,
-textarea:focus,
-select:focus {
- border: 1px solid #33C3F0;
- outline: 0; }
-label,
-legend {
- display: block;
- margin-bottom: .5rem;
- font-weight: 600; }
-fieldset {
- padding: 0;
- border-width: 0; }
-input[type="checkbox"],
-input[type="radio"] {
- display: inline; }
-label > .label-body {
- display: inline-block;
- margin-left: .5rem;
- font-weight: normal; }
-
-
-/* Lists
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-ul {
- list-style: circle inside; }
-ol {
- list-style: decimal inside; }
-ol, ul {
- padding-left: 0;
- margin-top: 0; }
-ul ul,
-ul ol,
-ol ol,
-ol ul {
- margin: 1.5rem 0 1.5rem 3rem;
- font-size: 90%; }
-li {
- margin-bottom: 1rem; }
-
-
-/* Code
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-code {
- padding: .2rem .5rem;
- margin: 0 .2rem;
- font-size: 90%;
- white-space: nowrap;
- background: #F1F1F1;
- border: 1px solid #E1E1E1;
- border-radius: 4px; }
-pre > code {
- display: block;
- padding: 1rem 1.5rem;
- white-space: pre; }
-
-
-/* Tables
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-th,
-td {
- padding: 12px 15px;
- text-align: left;
- border-bottom: 1px solid #E1E1E1; }
-th:first-child,
-td:first-child {
- padding-left: 0; }
-th:last-child,
-td:last-child {
- padding-right: 0; }
-
-
-/* Spacing
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-button,
-.button {
- margin-bottom: 1rem; }
-input,
-textarea,
-select,
-fieldset {
- margin-bottom: 1.5rem; }
-pre,
-blockquote,
-dl,
-figure,
-table,
-p,
-ul,
-ol,
-form {
- margin-bottom: 2.5rem; }
-
-
-/* Utilities
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-.u-full-width {
- width: 100%;
- box-sizing: border-box; }
-.u-max-full-width {
- max-width: 100%;
- box-sizing: border-box; }
-.u-pull-right {
- float: right; }
-.u-pull-left {
- float: left; }
-
-
-/* Misc
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-hr {
- margin-top: 3rem;
- margin-bottom: 3.5rem;
- border-width: 0;
- border-top: 1px solid #E1E1E1; }
-
-
-/* Clearing
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-
-/* Self Clearing Goodness */
-.container:after,
-.row:after,
-.u-cf {
- content: "";
- display: table;
- clear: both; }
-
-
-/* Media Queries
-โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
-/*
-Note: The best way to structure the use of media queries is to create the queries
-near the relevant code. For example, if you wanted to change the styles for buttons
-on small devices, paste the mobile query code up in the buttons section and style it
-there.
-*/
-
-
-/* Larger than mobile */
-@media (min-width: 400px) {}
-
-/* Larger than phablet (also point when grid becomes active) */
-@media (min-width: 550px) {}
-
-/* Larger than tablet */
-@media (min-width: 750px) {}
-
-/* Larger than desktop */
-@media (min-width: 1000px) {}
-
-/* Larger than Desktop HD */
-@media (min-width: 1200px) {}
diff --git a/.operations/res/template.html b/.operations/res/template.html
deleted file mode 100644
index 735d4f393..000000000
--- a/.operations/res/template.html
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
- Node Best Practices
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From 9d7a86386885cd3a4aa393934e1f62380aafd958 Mon Sep 17 00:00:00 2001
From: Sagi Levi <95089762+sagi403@users.noreply.github.com>
Date: Sun, 16 Apr 2023 12:37:19 +0300
Subject: [PATCH 005/121] Update the Privatenpm.png file
Update the image of the private npm diagram to a better-quality one, to be more in line with other images.
---
assets/images/Privatenpm.png | Bin 93391 -> 81492 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/assets/images/Privatenpm.png b/assets/images/Privatenpm.png
index 9038636d8c6d0b1f3e6243971db7c797b111dfd6..d14466f7830f3ee28f6abfd88c91798614c16d19 100644
GIT binary patch
literal 81492
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