2
0
mirror of https://github.com/tenrok/BBob.git synced 2026-06-11 18:02:26 +03:00

chore: update build system and dependencies (#155)

* chore: fix swc + rollup transform

* chore: fix pkg-task args parsing

* chore: update lerna, rollup and swc to build proper es6 files

* chore: fix swc build for es targets

* ci: nodes matrix to newest versions

* ci: rollup to mjs, swc to json

* ci: add canary publish

* ci: no git tag for canary

* ci: no private publish for canary

* ci: remove --canary from publish-canary

* fix: remove gitHead from package.json

* fix: tests setup

* fix: bbob plugin helper imports

* fix: plugin helper build priority and circular deps

* fix: add nx for parallel build

* fix: npm ci

* fix: code ql

* fix: remove exports directive

* fix: rollup build

* fix: vue2 test and minify

* fix: bundle size limits

* feat: bundlephobia pr review

* feat: bundlephobia more popular action

* feat: publish branch to npm

* fix: secret NPM token

* fix: bundlephobia version

* fix: remove bundlephobia checker

* fix: npm publish in PR

* chore: release 2.8.3

* chore: fix test runs on CI, removed 14.x version

* fix: sync package-lock

* fix: remove lock files in sub packages

* fix: bundlesize > bundlesize2

* fix: update lock files

* fix: lock file in vue2-example
This commit is contained in:
Nikolay Kost
2022-12-18 03:09:56 +02:00
committed by GitHub
parent 09a197f653
commit 2d1a08ba9a
66 changed files with 24470 additions and 12801 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import { OPEN_BRAKET, CLOSE_BRAKET, SLASH } from './char';
import {
getNodeLength, appendToNode, attrsToString, attrValue, getUniqAttr,
} from './index';
} from './helpers';
const getTagAttrs = (tag, params) => {
const uniqAattr = getUniqAttr(params);
+100
View File
@@ -0,0 +1,100 @@
import { N } from './char';
const isTagNode = (el) => typeof el === 'object' && !!el.tag;
const isStringNode = (el) => typeof el === 'string';
const isEOL = (el) => el === N;
const keysReduce = (obj, reduce, def) => Object.keys(obj).reduce(reduce, def);
const getNodeLength = (node) => {
if (isTagNode(node)) {
return node.content.reduce((count, contentNode) => count + getNodeLength(contentNode), 0);
} if (isStringNode(node)) {
return node.length;
}
return 0;
};
/**
* Appends value to Tag Node
* @param {TagNode} node
* @param value
*/
const appendToNode = (node, value) => {
node.content.push(value);
};
/**
* Replaces " to &qquot;
* @param {String} value
*/
const escapeHTML = (value) => value
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;')
// eslint-disable-next-line no-script-url
.replace(/(javascript|data|vbscript):/gi, '$1%3A');
/**
* Acept name and value and return valid html5 attribute string
* @param {String} name
* @param {String} value
* @return {string}
*/
const attrValue = (name, value) => {
const type = typeof value;
const types = {
boolean: () => (value ? `${name}` : ''),
number: () => `${name}="${value}"`,
string: () => `${name}="${escapeHTML(value)}"`,
object: () => `${name}="${escapeHTML(JSON.stringify(value))}"`,
};
return types[type] ? types[type]() : '';
};
/**
* Transforms attrs to html params string
* @param values
*/
const attrsToString = (values) => {
// To avoid some malformed attributes
if (values == null) {
return '';
}
return keysReduce(
values,
(arr, key) => [...arr, attrValue(key, values[key])],
[''],
).join(' ');
};
/**
* Gets value from
* @example
* getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar'
* @param attrs
* @returns {string}
*/
const getUniqAttr = (attrs) => keysReduce(
attrs,
(res, key) => (attrs[key] === key ? attrs[key] : null),
null,
);
export {
attrsToString,
attrValue,
appendToNode,
escapeHTML,
getNodeLength,
getUniqAttr,
isTagNode,
isStringNode,
isEOL,
};
+3 -100
View File
@@ -1,100 +1,3 @@
import { N } from './char';
const isTagNode = (el) => typeof el === 'object' && !!el.tag;
const isStringNode = (el) => typeof el === 'string';
const isEOL = (el) => el === N;
const keysReduce = (obj, reduce, def) => Object.keys(obj).reduce(reduce, def);
const getNodeLength = (node) => {
if (isTagNode(node)) {
return node.content.reduce((count, contentNode) => count + getNodeLength(contentNode), 0);
} if (isStringNode(node)) {
return node.length;
}
return 0;
};
/**
* Appends value to Tag Node
* @param {TagNode} node
* @param value
*/
const appendToNode = (node, value) => {
node.content.push(value);
};
/**
* Replaces " to &qquot;
* @param {String} value
*/
const escapeHTML = (value) => value
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;')
// eslint-disable-next-line no-script-url
.replace(/(javascript):/gi, '$1%3A');
/**
* Acept name and value and return valid html5 attribute string
* @param {String} name
* @param {String} value
* @return {string}
*/
const attrValue = (name, value) => {
const type = typeof value;
const types = {
boolean: () => (value ? `${name}` : ''),
number: () => `${name}="${value}"`,
string: () => `${name}="${escapeHTML(value)}"`,
object: () => `${name}="${escapeHTML(JSON.stringify(value))}"`,
};
return types[type] ? types[type]() : '';
};
/**
* Transforms attrs to html params string
* @param values
*/
const attrsToString = (values) => {
// To avoid some malformed attributes
if (values == null) {
return '';
}
return keysReduce(
values,
(arr, key) => [...arr, attrValue(key, values[key])],
[''],
).join(' ');
};
/**
* Gets value from
* @example
* getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar'
* @param attrs
* @returns {string}
*/
const getUniqAttr = (attrs) => keysReduce(
attrs,
(res, key) => (attrs[key] === key ? attrs[key] : null),
null,
);
export {
attrsToString,
attrValue,
appendToNode,
escapeHTML,
getNodeLength,
getUniqAttr,
isTagNode,
isStringNode,
isEOL,
};
export * from './helpers';
export * from './char';
export { TagNode } from './TagNode';