Skip to content

Commit

Permalink
compression fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael committed Apr 16, 2024
1 parent 401b6e5 commit 9f56f7a
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 40 deletions.
23 changes: 11 additions & 12 deletions dist/bundle.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,11 @@ const callWith = (args, i, fn) => fn(...(args[i] || []));
const preparePlugins = (plugins, args) => pepka.compose(pepka.map(([i, p]) => callWith(args, i, p)), pepka.toPairs, tryUnwrap)(plugins);
const re = {
comment: /((\s+?\/\/.*$)|\/\*(.|[\n\r])*?\*\/)/gm,
// senseless_lines: /[\n\r]{2,}|(?:;\s)/g,
trailing_ws: /(^|\r|\n)+[\t ]+/g,
repeatingSeps: /([;\n\r]){2,}/g,
repeatingSeps: /([;\s]+|\s{2,})/g,
trailingSeps: /(?:(}|{|]|)^[;\n\r ]+)|(?:[;\n\r ]+($|}|{|]))/g,
rule: /^([\w-]+)(: *| +)(.*)$/,
rule_free: /[^\$](^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
rule_free: /(^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
selector: /^(([\|~\$@>\*\.:&\(\)\^="\-\[\]]+).*[ ,]*)+:?$/,
spread: /^\.\.\.(\S*)$/,
media: /^@media /,
Expand Down Expand Up @@ -212,14 +211,14 @@ fixed color space-between overflow-x overflow-y background-size
const prepareCompressRule = () => { let i = 0; return () => `a${K(i++)}`; };
const getDics = (pepka) => {
const compressRule = prepareCompressRule();
const { compose, fromPairs, map, qreverse, toPairs } = pepka;
const dic = compose(fromPairs, map((rule) => [rule, compressRule()]))(rules);
return { dic, dicRev: compose(fromPairs, qreverse, toPairs)(dic) };
const { compose, fromPairs, qmap, qreverse, toPairs } = pepka;
const dic = compose(fromPairs, qmap((rule) => [rule, compressRule()]))(rules);
return { dic, dicRev: compose(fromPairs, qmap(qreverse), toPairs)(dic) };
};

let compression = false;
const setCompression = (to) => compression = to;
const dics$1 = getDics({ compose: pepka.compose, fromPairs: pepka.fromPairs, map: pepka.map, qreverse: pepka.qreverse, toPairs: pepka.toPairs });
const dics$1 = getDics({ compose: pepka.compose, fromPairs: pepka.fromPairs, qmap: pepka.qmap, qreverse: pepka.qreverse, toPairs: pepka.toPairs });
const analyseLine = (() => {
const ruleRE = re.rule;
const selectorRE = re.selector;
Expand Down Expand Up @@ -257,7 +256,7 @@ const analyseLine = (() => {
break;
case (groups = selectorRE.exec(line)) !== null:
names.splice(0);
names.push(...pepka.compose(pepka.map(pepka.replace(trailingColonRE, '$1')), pepka.ifElse(pepka.test(mediaRE), (l) => [l], pepka.split(delimRE)))(line));
names.push(...pepka.compose(pepka.qmap(pepka.replace(trailingColonRE, '$1')), pepka.ifElse(pepka.test(mediaRE), (l) => [l], pepka.split(delimRE)))(line));
break;
}
};
Expand Down Expand Up @@ -579,18 +578,18 @@ class SvelteRenderer extends Renderer {
}
}

const sc = ';';
const sp = ' ';
const prepareCompressRules = (dics, pepka) => {
const { compose, replace, trim } = pepka;
return compose(replace(re.trailingSeps, '$2'), replace(re.repeatingSeps, '$1'),
// replace(re.senseless_lines, '\n'),
replace(re.trailing_ws, '$1'), replace(re.comment, ''), replace(re.rule_free, (s, trailing, k, v) => v
return compose(replace(re.trailingSeps, '$2'), replace(re.repeatingSeps, (s) => s.includes(sc) ? sc : sp), replace(re.trailing_ws, '$1'), replace(re.rule_free, (s, trailing, k, v) => v
? trailing +
(k && v
? `${trim(dics.dic[k] || k)}:${trim(dics.dic[v] || v)};`
: trim(k ? s.replace(k, dics.dic[k] || k)
: v ? s.replace(k, dics.dic[v] || v)
: s))
: ''));
: ''), replace(re.comment, ''));
};
let dics = null;
const rollupCSSCompression = function () {
Expand Down
25 changes: 12 additions & 13 deletions dist/bundle.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { when, complement, isNil, replace, both, isEmpty, compose, equals, type, map, ifElse, identity, prop, toPairs, length, last, qmergeDeep, test, split, fromPairs, qreverse, curry, join as join$1, forEach, filter, trim, always, qmap, qfilter, all, head, tail, slice, mergeShallow } from 'pepka';
import { when, complement, isNil, replace, both, isEmpty, compose, equals, type, map, ifElse, identity, prop, toPairs, length, last, qmergeDeep, qmap, test, split, fromPairs, qreverse, curry, join as join$1, forEach, filter, trim, always, qfilter, all, head, tail, slice, mergeShallow } from 'pepka';
import { createRenderer, combineRules } from 'fela';
import { renderToMarkup, rehydrate, render } from 'fela-dom';
import embedded from 'fela-plugin-embedded';
Expand Down Expand Up @@ -66,12 +66,11 @@ const callWith = (args, i, fn) => fn(...(args[i] || []));
const preparePlugins = (plugins, args) => compose(map(([i, p]) => callWith(args, i, p)), toPairs, tryUnwrap)(plugins);
const re = {
comment: /((\s+?\/\/.*$)|\/\*(.|[\n\r])*?\*\/)/gm,
// senseless_lines: /[\n\r]{2,}|(?:;\s)/g,
trailing_ws: /(^|\r|\n)+[\t ]+/g,
repeatingSeps: /([;\n\r]){2,}/g,
repeatingSeps: /([;\s]+|\s{2,})/g,
trailingSeps: /(?:(}|{|]|)^[;\n\r ]+)|(?:[;\n\r ]+($|}|{|]))/g,
rule: /^([\w-]+)(: *| +)(.*)$/,
rule_free: /[^\$](^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
rule_free: /(^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
selector: /^(([\|~\$@>\*\.:&\(\)\^="\-\[\]]+).*[ ,]*)+:?$/,
spread: /^\.\.\.(\S*)$/,
media: /^@media /,
Expand Down Expand Up @@ -210,14 +209,14 @@ fixed color space-between overflow-x overflow-y background-size
const prepareCompressRule = () => { let i = 0; return () => `a${K(i++)}`; };
const getDics = (pepka) => {
const compressRule = prepareCompressRule();
const { compose, fromPairs, map, qreverse, toPairs } = pepka;
const dic = compose(fromPairs, map((rule) => [rule, compressRule()]))(rules);
return { dic, dicRev: compose(fromPairs, qreverse, toPairs)(dic) };
const { compose, fromPairs, qmap, qreverse, toPairs } = pepka;
const dic = compose(fromPairs, qmap((rule) => [rule, compressRule()]))(rules);
return { dic, dicRev: compose(fromPairs, qmap(qreverse), toPairs)(dic) };
};

let compression = false;
const setCompression = (to) => compression = to;
const dics$1 = getDics({ compose, fromPairs, map, qreverse, toPairs });
const dics$1 = getDics({ compose, fromPairs, qmap, qreverse, toPairs });
const analyseLine = (() => {
const ruleRE = re.rule;
const selectorRE = re.selector;
Expand Down Expand Up @@ -255,7 +254,7 @@ const analyseLine = (() => {
break;
case (groups = selectorRE.exec(line)) !== null:
names.splice(0);
names.push(...compose(map(replace(trailingColonRE, '$1')), ifElse(test(mediaRE), (l) => [l], split(delimRE)))(line));
names.push(...compose(qmap(replace(trailingColonRE, '$1')), ifElse(test(mediaRE), (l) => [l], split(delimRE)))(line));
break;
}
};
Expand Down Expand Up @@ -577,18 +576,18 @@ class SvelteRenderer extends Renderer {
}
}

const sc = ';';
const sp = ' ';
const prepareCompressRules = (dics, pepka) => {
const { compose, replace, trim } = pepka;
return compose(replace(re.trailingSeps, '$2'), replace(re.repeatingSeps, '$1'),
// replace(re.senseless_lines, '\n'),
replace(re.trailing_ws, '$1'), replace(re.comment, ''), replace(re.rule_free, (s, trailing, k, v) => v
return compose(replace(re.trailingSeps, '$2'), replace(re.repeatingSeps, (s) => s.includes(sc) ? sc : sp), replace(re.trailing_ws, '$1'), replace(re.rule_free, (s, trailing, k, v) => v
? trailing +
(k && v
? `${trim(dics.dic[k] || k)}:${trim(dics.dic[v] || v)};`
: trim(k ? s.replace(k, dics.dic[k] || k)
: v ? s.replace(k, dics.dic[v] || v)
: s))
: ''));
: ''), replace(re.comment, ''));
};
let dics = null;
const rollupCSSCompression = function () {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"prod:es": "cross-env NODE_ENV=production BUILD=es rollup -c",
"prod": "npm run gentypes && npm run prod:es && npm run prod:cjs"
},
"version": "2.10.11",
"version": "2.10.15",
"ava": {
"files": [
"./test/specs/*.js"
Expand Down
6 changes: 3 additions & 3 deletions src/compression/fela-compress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const prepareCompressRule = () => {let i=0; return () => `a${zipnum(i++)}`}

export const getDics = (pepka: Partial<typeof import('pepka')>) => {
const compressRule = prepareCompressRule()
const { compose, fromPairs, map, qreverse, toPairs } = pepka
const dic = compose(fromPairs, map((rule) => [rule, compressRule()]))(rules)
return { dic, dicRev: compose(fromPairs, qreverse, toPairs)(dic) }
const { compose, fromPairs, qmap, qreverse, toPairs } = pepka
const dic = compose(fromPairs, qmap((rule) => [rule, compressRule()]))(rules)
return { dic, dicRev: compose(fromPairs, qmap(qreverse), toPairs)(dic) }
}
10 changes: 6 additions & 4 deletions src/compression/fela-plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ import { AnyObject } from 'pepka'
import { re } from '../utils'
import { getDics } from './fela-compress'

const sc = ';'
const sp = ' '

const prepareCompressRules = (dics: AnyObject, pepka: typeof import('pepka')) => {
const { compose, replace, trim } = pepka

return compose(
replace(re.trailingSeps, '$2'),
replace(re.repeatingSeps, '$1'),
// replace(re.senseless_lines, '\n'),
replace(re.repeatingSeps, (s: string) => s.includes(sc) ? sc : sp),
replace(re.trailing_ws, '$1'),
replace(re.comment, ''),
replace(re.rule_free, (s: string, trailing: string, k: string, v: string) =>
v
? trailing +
Expand All @@ -21,7 +22,8 @@ const prepareCompressRules = (dics: AnyObject, pepka: typeof import('pepka')) =>
: v ? s.replace(k, dics.dic[v] || v)
: s))
: ''
)
),
replace(re.comment, '')
)
}

Expand Down
8 changes: 4 additions & 4 deletions src/fns/analyseLine.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { camelify, re, unescape } from '../utils'
import { when, compose, fromPairs, map, qreverse, toPairs, replace, split, test, ifElse } from 'pepka'
import { when, compose, fromPairs, qreverse, toPairs, replace, split, test, ifElse, qmap } from 'pepka'
import { Levels } from '../classes/Levels'
import { getDics } from '../compression/fela-compress'

let compression = false
export const setCompression = (to: boolean) => compression=to
const dics = getDics({ compose, fromPairs, map, qreverse, toPairs })
const dics = getDics({ compose, fromPairs, qmap, qreverse, toPairs })

export const analyseLine = (() => {
const ruleRE = re.rule
Expand All @@ -14,7 +14,7 @@ export const analyseLine = (() => {
const delimRE = re.delim
const mediaRE = re.media
const trailingColonRE = re.trailing_colon
const decompress = when(() => compression, (s) => dics.dicRev[s] || s)
const decompress = when(() => compression, (s: string) => dics.dicRev[s] || s)
const getValue = (value: string) => {
switch(value) {
case 'undefined': case 'false': case '': return undefined
Expand Down Expand Up @@ -45,7 +45,7 @@ export const analyseLine = (() => {
case (groups = selectorRE.exec(line)) !== null:
names.splice(0)
names.push(...compose(
map(replace(trailingColonRE, '$1')),
qmap(replace(trailingColonRE, '$1')),
ifElse(test(mediaRE), (l: string) => [l], split(delimRE))
)(line)
)
Expand Down
5 changes: 2 additions & 3 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,11 @@ export const preparePlugins = (

export const re = {
comment: /((\s+?\/\/.*$)|\/\*(.|[\n\r])*?\*\/)/gm,
// senseless_lines: /[\n\r]{2,}|(?:;\s)/g,
trailing_ws: /(^|\r|\n)+[\t ]+/g,
repeatingSeps: /([;\n\r]){2,}/g,
repeatingSeps: /([;\s]+|\s{2,})/g,
trailingSeps: /(?:(}|{|]|)^[;\n\r ]+)|(?:[;\n\r ]+($|}|{|]))/g,
rule: /^([\w-]+)(: *| +)(.*)$/,
rule_free: /[^\$](^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
rule_free: /(^|\r|\n|;|{)\s*([a-z-]+)[ :][\t ]*?:?[\t ]*?([^;\r\n]+)/g,
selector: /^(([\|~\$@>\*\.:&\(\)\^="\-\[\]]+).*[ ,]*)+:?$/,
spread: /^\.\.\.(\S*)$/,
media: /^@media /,
Expand Down

0 comments on commit 9f56f7a

Please sign in to comment.