feat: complete MDX migration, stabilize routing and lead capture
Former-commit-id: ab5cc38c97e5f73d6e821465b90d199fb6e6edc9
This commit is contained in:
-1
@@ -1 +0,0 @@
|
||||
../../boolbase@1.0.0/node_modules/boolbase
|
||||
Generated
Vendored
-121
@@ -1,121 +0,0 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.generate = exports.compile = void 0;
|
||||
var boolbase_1 = __importDefault(require("boolbase"));
|
||||
/**
|
||||
* Returns a function that checks if an elements index matches the given rule
|
||||
* highly optimized to return the fastest solution.
|
||||
*
|
||||
* @param parsed A tuple [a, b], as returned by `parse`.
|
||||
* @returns A highly optimized function that returns whether an index matches the nth-check.
|
||||
* @example
|
||||
*
|
||||
* ```js
|
||||
* const check = nthCheck.compile([2, 3]);
|
||||
*
|
||||
* check(0); // `false`
|
||||
* check(1); // `false`
|
||||
* check(2); // `true`
|
||||
* check(3); // `false`
|
||||
* check(4); // `true`
|
||||
* check(5); // `false`
|
||||
* check(6); // `true`
|
||||
* ```
|
||||
*/
|
||||
function compile(parsed) {
|
||||
var a = parsed[0];
|
||||
// Subtract 1 from `b`, to convert from one- to zero-indexed.
|
||||
var b = parsed[1] - 1;
|
||||
/*
|
||||
* When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.
|
||||
* Besides, the specification states that no elements are
|
||||
* matched when `a` and `b` are 0.
|
||||
*
|
||||
* `b < 0` here as we subtracted 1 from `b` above.
|
||||
*/
|
||||
if (b < 0 && a <= 0)
|
||||
return boolbase_1.default.falseFunc;
|
||||
// When `a` is in the range -1..1, it matches any element (so only `b` is checked).
|
||||
if (a === -1)
|
||||
return function (index) { return index <= b; };
|
||||
if (a === 0)
|
||||
return function (index) { return index === b; };
|
||||
// When `b <= 0` and `a === 1`, they match any element.
|
||||
if (a === 1)
|
||||
return b < 0 ? boolbase_1.default.trueFunc : function (index) { return index >= b; };
|
||||
/*
|
||||
* Otherwise, modulo can be used to check if there is a match.
|
||||
*
|
||||
* Modulo doesn't care about the sign, so let's use `a`s absolute value.
|
||||
*/
|
||||
var absA = Math.abs(a);
|
||||
// Get `b mod a`, + a if this is negative.
|
||||
var bMod = ((b % absA) + absA) % absA;
|
||||
return a > 1
|
||||
? function (index) { return index >= b && index % absA === bMod; }
|
||||
: function (index) { return index <= b && index % absA === bMod; };
|
||||
}
|
||||
exports.compile = compile;
|
||||
/**
|
||||
* Returns a function that produces a monotonously increasing sequence of indices.
|
||||
*
|
||||
* If the sequence has an end, the returned function will return `null` after
|
||||
* the last index in the sequence.
|
||||
*
|
||||
* @param parsed A tuple [a, b], as returned by `parse`.
|
||||
* @returns A function that produces a sequence of indices.
|
||||
* @example <caption>Always increasing (2n+3)</caption>
|
||||
*
|
||||
* ```js
|
||||
* const gen = nthCheck.generate([2, 3])
|
||||
*
|
||||
* gen() // `1`
|
||||
* gen() // `3`
|
||||
* gen() // `5`
|
||||
* gen() // `8`
|
||||
* gen() // `11`
|
||||
* ```
|
||||
*
|
||||
* @example <caption>With end value (-2n+10)</caption>
|
||||
*
|
||||
* ```js
|
||||
*
|
||||
* const gen = nthCheck.generate([-2, 5]);
|
||||
*
|
||||
* gen() // 0
|
||||
* gen() // 2
|
||||
* gen() // 4
|
||||
* gen() // null
|
||||
* ```
|
||||
*/
|
||||
function generate(parsed) {
|
||||
var a = parsed[0];
|
||||
// Subtract 1 from `b`, to convert from one- to zero-indexed.
|
||||
var b = parsed[1] - 1;
|
||||
var n = 0;
|
||||
// Make sure to always return an increasing sequence
|
||||
if (a < 0) {
|
||||
var aPos_1 = -a;
|
||||
// Get `b mod a`
|
||||
var minValue_1 = ((b % aPos_1) + aPos_1) % aPos_1;
|
||||
return function () {
|
||||
var val = minValue_1 + aPos_1 * n++;
|
||||
return val > b ? null : val;
|
||||
};
|
||||
}
|
||||
if (a === 0)
|
||||
return b < 0
|
||||
? // There are no result — always return `null`
|
||||
function () { return null; }
|
||||
: // Return `b` exactly once
|
||||
function () { return (n++ === 0 ? b : null); };
|
||||
if (b < 0) {
|
||||
b += a * Math.ceil(-b / a);
|
||||
}
|
||||
return function () { return a * n++ + b; };
|
||||
}
|
||||
exports.generate = generate;
|
||||
//# sourceMappingURL=compile.js.map
|
||||
Generated
Vendored
-70
@@ -1,70 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.sequence = exports.generate = exports.compile = exports.parse = void 0;
|
||||
var parse_js_1 = require("./parse.js");
|
||||
Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_js_1.parse; } });
|
||||
var compile_js_1 = require("./compile.js");
|
||||
Object.defineProperty(exports, "compile", { enumerable: true, get: function () { return compile_js_1.compile; } });
|
||||
Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return compile_js_1.generate; } });
|
||||
/**
|
||||
* Parses and compiles a formula to a highly optimized function.
|
||||
* Combination of {@link parse} and {@link compile}.
|
||||
*
|
||||
* If the formula doesn't match any elements,
|
||||
* it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.
|
||||
* Otherwise, a function accepting an _index_ is returned, which returns
|
||||
* whether or not the passed _index_ matches the formula.
|
||||
*
|
||||
* Note: The nth-rule starts counting at `1`, the returned function at `0`.
|
||||
*
|
||||
* @param formula The formula to compile.
|
||||
* @example
|
||||
* const check = nthCheck("2n+3");
|
||||
*
|
||||
* check(0); // `false`
|
||||
* check(1); // `false`
|
||||
* check(2); // `true`
|
||||
* check(3); // `false`
|
||||
* check(4); // `true`
|
||||
* check(5); // `false`
|
||||
* check(6); // `true`
|
||||
*/
|
||||
function nthCheck(formula) {
|
||||
return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula));
|
||||
}
|
||||
exports.default = nthCheck;
|
||||
/**
|
||||
* Parses and compiles a formula to a generator that produces a sequence of indices.
|
||||
* Combination of {@link parse} and {@link generate}.
|
||||
*
|
||||
* @param formula The formula to compile.
|
||||
* @returns A function that produces a sequence of indices.
|
||||
* @example <caption>Always increasing</caption>
|
||||
*
|
||||
* ```js
|
||||
* const gen = nthCheck.sequence('2n+3')
|
||||
*
|
||||
* gen() // `1`
|
||||
* gen() // `3`
|
||||
* gen() // `5`
|
||||
* gen() // `8`
|
||||
* gen() // `11`
|
||||
* ```
|
||||
*
|
||||
* @example <caption>With end value</caption>
|
||||
*
|
||||
* ```js
|
||||
*
|
||||
* const gen = nthCheck.sequence('-2n+5');
|
||||
*
|
||||
* gen() // 0
|
||||
* gen() // 2
|
||||
* gen() // 4
|
||||
* gen() // null
|
||||
* ```
|
||||
*/
|
||||
function sequence(formula) {
|
||||
return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula));
|
||||
}
|
||||
exports.sequence = sequence;
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
-77
@@ -1,77 +0,0 @@
|
||||
"use strict";
|
||||
// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parse = void 0;
|
||||
// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is " \t\r\n\f"
|
||||
var whitespace = new Set([9, 10, 12, 13, 32]);
|
||||
var ZERO = "0".charCodeAt(0);
|
||||
var NINE = "9".charCodeAt(0);
|
||||
/**
|
||||
* Parses an expression.
|
||||
*
|
||||
* @throws An `Error` if parsing fails.
|
||||
* @returns An array containing the integer step size and the integer offset of the nth rule.
|
||||
* @example nthCheck.parse("2n+3"); // returns [2, 3]
|
||||
*/
|
||||
function parse(formula) {
|
||||
formula = formula.trim().toLowerCase();
|
||||
if (formula === "even") {
|
||||
return [2, 0];
|
||||
}
|
||||
else if (formula === "odd") {
|
||||
return [2, 1];
|
||||
}
|
||||
// Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
|
||||
var idx = 0;
|
||||
var a = 0;
|
||||
var sign = readSign();
|
||||
var number = readNumber();
|
||||
if (idx < formula.length && formula.charAt(idx) === "n") {
|
||||
idx++;
|
||||
a = sign * (number !== null && number !== void 0 ? number : 1);
|
||||
skipWhitespace();
|
||||
if (idx < formula.length) {
|
||||
sign = readSign();
|
||||
skipWhitespace();
|
||||
number = readNumber();
|
||||
}
|
||||
else {
|
||||
sign = number = 0;
|
||||
}
|
||||
}
|
||||
// Throw if there is anything else
|
||||
if (number === null || idx < formula.length) {
|
||||
throw new Error("n-th rule couldn't be parsed ('".concat(formula, "')"));
|
||||
}
|
||||
return [a, sign * number];
|
||||
function readSign() {
|
||||
if (formula.charAt(idx) === "-") {
|
||||
idx++;
|
||||
return -1;
|
||||
}
|
||||
if (formula.charAt(idx) === "+") {
|
||||
idx++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
function readNumber() {
|
||||
var start = idx;
|
||||
var value = 0;
|
||||
while (idx < formula.length &&
|
||||
formula.charCodeAt(idx) >= ZERO &&
|
||||
formula.charCodeAt(idx) <= NINE) {
|
||||
value = value * 10 + (formula.charCodeAt(idx) - ZERO);
|
||||
idx++;
|
||||
}
|
||||
// Return `null` if we didn't read anything.
|
||||
return idx === start ? null : value;
|
||||
}
|
||||
function skipWhitespace() {
|
||||
while (idx < formula.length &&
|
||||
whitespace.has(formula.charCodeAt(idx))) {
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.parse = parse;
|
||||
//# sourceMappingURL=parse.js.map
|
||||
Generated
Vendored
-78
@@ -1,78 +0,0 @@
|
||||
{
|
||||
"name": "nth-check",
|
||||
"version": "2.1.1",
|
||||
"description": "Parses and compiles CSS nth-checks to highly optimized functions.",
|
||||
"author": "Felix Boehm <me@feedic.com>",
|
||||
"license": "BSD-2-Clause",
|
||||
"sideEffects": false,
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/nth-check?sponsor=1"
|
||||
},
|
||||
"directories": {
|
||||
"lib": "lib/"
|
||||
},
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"module": "lib/esm/index.js",
|
||||
"exports": {
|
||||
"require": "./lib/index.js",
|
||||
"import": "./lib/esm/index.js"
|
||||
},
|
||||
"files": [
|
||||
"lib/**/*"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "npm run test:jest && npm run lint",
|
||||
"test:jest": "jest",
|
||||
"lint": "npm run lint:es && npm run lint:prettier",
|
||||
"lint:es": "eslint .",
|
||||
"lint:prettier": "npm run prettier -- --check",
|
||||
"format": "npm run format:es && npm run format:prettier",
|
||||
"format:es": "npm run lint:es -- --fix",
|
||||
"format:prettier": "npm run prettier -- --write",
|
||||
"prettier": "prettier '**/*.{ts,md,json,yml}'",
|
||||
"build": "npm run build:cjs && npm run build:esm",
|
||||
"build:cjs": "tsc --sourceRoot https://raw.githubusercontent.com/fb55/nth-check/$(git rev-parse HEAD)/src/",
|
||||
"build:esm": "npm run build:cjs -- --module esnext --target es2019 --outDir lib/esm && echo '{\"type\":\"module\"}' > lib/esm/package.json",
|
||||
"prepare": "npm run build"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fb55/nth-check"
|
||||
},
|
||||
"keywords": [
|
||||
"nth-child",
|
||||
"nth",
|
||||
"css"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/fb55/nth-check/issues"
|
||||
},
|
||||
"homepage": "https://github.com/fb55/nth-check",
|
||||
"dependencies": {
|
||||
"boolbase": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/boolbase": "^1.0.1",
|
||||
"@types/jest": "^27.5.0",
|
||||
"@types/node": "^17.0.35",
|
||||
"@typescript-eslint/eslint-plugin": "^5.25.0",
|
||||
"@typescript-eslint/parser": "^5.25.0",
|
||||
"eslint": "^8.15.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"jest": "^27.5.1",
|
||||
"prettier": "^2.6.2",
|
||||
"ts-jest": "^27.1.4",
|
||||
"typescript": "^4.6.4"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "ts-jest",
|
||||
"testEnvironment": "node",
|
||||
"moduleNameMapper": {
|
||||
"^(.*)\\.js$": "$1"
|
||||
}
|
||||
},
|
||||
"prettier": {
|
||||
"tabWidth": 4
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user