ヤミRoot VoidGate
User / IP
:
216.73.216.81
Host / Server
:
146.88.233.70 / dev.loger.cm
System
:
Linux hybrid1120.fr.ns.planethoster.net 3.10.0-957.21.2.el7.x86_64 #1 SMP Wed Jun 5 14:26:44 UTC 2019 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
logercm
/
dev.loger.cm
/
fixtures
/
assert
/
Viewing: nth-check.tar
LICENSE 0000644 00000002354 15120070364 0005553 0 ustar 00 Copyright (c) Felix Böhm All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. README.md 0000644 00000007106 15120070364 0006025 0 ustar 00 # nth-check [](https://travis-ci.org/fb55/nth-check) Parses and compiles CSS nth-checks to highly optimized functions. ### About This module can be used to parse & compile nth-checks, as they are found in CSS 3's `nth-child()` and `nth-last-of-type()`. It can be used to check if a given index matches a given nth-rule, or to generate a sequence of indices matching a given nth-rule. `nth-check` focusses on speed, providing optimized functions for different kinds of nth-child formulas, while still following the [spec](http://www.w3.org/TR/css3-selectors/#nth-child-pseudo). ### API ```js import nthCheck, { parse, compile } from "nth-check"; ``` ##### `nthCheck(formula)` Parses and compiles a formula to a highly optimized function. Combination of `parse` and `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`. **Example:** ```js 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` ``` ##### `parse(formula)` Parses the expression, throws an `Error` if it fails. Otherwise, returns an array containing the integer step size and the integer offset of the nth rule. **Example:** ```js parse("2n+3"); // [2, 3] ``` ##### `compile([a, b])` Takes an array with two elements (as returned by `.parse`) and returns a highly optimized function. **Example:** ```js const check = compile([2, 3]); check(0); // `false` check(1); // `false` check(2); // `true` check(3); // `false` check(4); // `true` check(5); // `false` check(6); // `true` ``` ##### `generate([a, b])` 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. **Example:** An always increasing sequence ```js const gen = nthCheck.generate([2, 3]); gen(); // `1` gen(); // `3` gen(); // `5` gen(); // `8` gen(); // `11` ``` **Example:** With an end value ```js const gen = nthCheck.generate([-2, 5]); gen(); // 0 gen(); // 2 gen(); // 4 gen(); // null ``` ##### `sequence(formula)` Parses and compiles a formula to a generator that produces a sequence of indices. Combination of `parse` and `generate`. **Example:** An always increasing sequence ```js const gen = nthCheck.sequence("2n+3"); gen(); // `1` gen(); // `3` gen(); // `5` gen(); // `8` gen(); // `11` ``` **Example:** With an end value ```js const gen = nthCheck.sequence("-2n+5"); gen(); // 0 gen(); // 2 gen(); // 4 gen(); // null ``` --- License: BSD-2-Clause ## Security contact information To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. ## `nth-check` for enterprise Available as part of the Tidelift Subscription The maintainers of `nth-check` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-nth-check?utm_source=npm-nth-check&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) lib/compile.d.ts 0000644 00000002666 15120070364 0007544 0 ustar 00 /** * 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` * ``` */ export declare function compile(parsed: [a: number, b: number]): (index: number) => boolean; /** * 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 * ``` */ export declare function generate(parsed: [a: number, b: number]): () => number | null; //# sourceMappingURL=compile.d.ts.map lib/compile.d.ts.map 0000644 00000000756 15120070364 0010316 0 ustar 00 {"version":3,"file":"compile.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["compile.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CACnB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,GAC/B,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAgC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,MAAM,GAAG,IAAI,CA+B5E"} lib/compile.js 0000644 00000007345 15120070364 0007307 0 ustar 00 "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 lib/compile.js.map 0000644 00000004233 15120070364 0010054 0 ustar 00 {"version":3,"file":"compile.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["compile.ts"],"names":[],"mappings":"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"} lib/esm/compile.d.ts 0000644 00000002666 15120070364 0010330 0 ustar 00 /** * 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` * ``` */ export declare function compile(parsed: [a: number, b: number]): (index: number) => boolean; /** * 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 * ``` */ export declare function generate(parsed: [a: number, b: number]): () => number | null; //# sourceMappingURL=compile.d.ts.map lib/esm/compile.d.ts.map 0000644 00000000756 15120070364 0011102 0 ustar 00 {"version":3,"file":"compile.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["compile.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CACnB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,GAC/B,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAgC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,MAAM,GAAG,IAAI,CA+B5E"} lib/esm/compile.js 0000644 00000006370 15120070364 0010070 0 ustar 00 import boolbase from "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` * ``` */ export function compile(parsed) { const a = parsed[0]; // Subtract 1 from `b`, to convert from one- to zero-indexed. const 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.falseFunc; // When `a` is in the range -1..1, it matches any element (so only `b` is checked). if (a === -1) return (index) => index <= b; if (a === 0) return (index) => index === b; // When `b <= 0` and `a === 1`, they match any element. if (a === 1) return b < 0 ? boolbase.trueFunc : (index) => 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. */ const absA = Math.abs(a); // Get `b mod a`, + a if this is negative. const bMod = ((b % absA) + absA) % absA; return a > 1 ? (index) => index >= b && index % absA === bMod : (index) => index <= b && index % absA === bMod; } /** * 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 * ``` */ export function generate(parsed) { const a = parsed[0]; // Subtract 1 from `b`, to convert from one- to zero-indexed. let b = parsed[1] - 1; let n = 0; // Make sure to always return an increasing sequence if (a < 0) { const aPos = -a; // Get `b mod a` const minValue = ((b % aPos) + aPos) % aPos; return () => { const val = minValue + aPos * n++; return val > b ? null : val; }; } if (a === 0) return b < 0 ? // There are no result — always return `null` () => null : // Return `b` exactly once () => (n++ === 0 ? b : null); if (b < 0) { b += a * Math.ceil(-b / a); } return () => a * n++ + b; } //# sourceMappingURL=compile.js.map lib/esm/compile.js.map 0000644 00000004157 15120070364 0010645 0 ustar 00 {"version":3,"file":"compile.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["compile.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CACnB,MAA8B;IAE9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,6DAA6D;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAExB;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;IAE/C,mFAAmF;IACnF,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;IAC3C,uDAAuD;IACvD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;IAEtE;;;;OAIG;IACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,0CAA0C;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC;QACR,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI;QAChD,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA8B;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,6DAA6D;IAC7D,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,oDAAoD;IACpD,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;QAChB,gBAAgB;QAChB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAC5C,OAAO,GAAG,EAAE;YACR,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;YAElC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,CAAC,CAAC;KACL;IAED,IAAI,CAAC,KAAK,CAAC;QACP,OAAO,CAAC,GAAG,CAAC;YACR,CAAC,CAAC,6CAA6C;gBAC7C,GAAG,EAAE,CAAC,IAAI;YACZ,CAAC,CAAC,0BAA0B;gBAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B;IAED,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"} lib/esm/index.d.ts 0000644 00000003163 15120070364 0010000 0 ustar 00 import { parse } from "./parse.js"; import { compile, generate } from "./compile.js"; export { parse, compile, 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` */ export default function nthCheck(formula: string): (index: number) => boolean; /** * 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 * ``` */ export declare function sequence(formula: string): () => number | null; //# sourceMappingURL=index.d.ts.map lib/esm/index.d.ts.map 0000644 00000001063 15120070364 0010551 0 ustar 00 {"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAE5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,MAAM,GAAG,IAAI,CAE7D"} lib/esm/index.js 0000644 00000003167 15120070364 0007550 0 ustar 00 import { parse } from "./parse.js"; import { compile, generate } from "./compile.js"; export { parse, compile, 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` */ export default function nthCheck(formula) { return compile(parse(formula)); } /** * 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 * ``` */ export function sequence(formula) { return generate(parse(formula)); } //# sourceMappingURL=index.js.map lib/esm/index.js.map 0000644 00000001124 15120070364 0010313 0 ustar 00 {"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAe;IAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC"} lib/esm/package.json 0000644 00000000022 15120070364 0010354 0 ustar 00 {"type":"module"} lib/esm/parse.d.ts 0000644 00000000513 15120070364 0007777 0 ustar 00 /** * 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] */ export declare function parse(formula: string): [a: number, b: number]; //# sourceMappingURL=parse.d.ts.map lib/esm/parse.d.ts.map 0000644 00000000453 15120070364 0010556 0 ustar 00 {"version":3,"file":"parse.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["parse.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CA6E7D"} lib/esm/parse.js 0000644 00000004277 15120070364 0007556 0 ustar 00 // Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo // Whitespace as per https://www.w3.org/TR/selectors-3/#lex is " \t\r\n\f" const whitespace = new Set([9, 10, 12, 13, 32]); const ZERO = "0".charCodeAt(0); const 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] */ export 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 ]? let idx = 0; let a = 0; let sign = readSign(); let 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 ('${formula}')`); } return [a, sign * number]; function readSign() { if (formula.charAt(idx) === "-") { idx++; return -1; } if (formula.charAt(idx) === "+") { idx++; } return 1; } function readNumber() { const start = idx; let 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++; } } } //# sourceMappingURL=parse.js.map lib/esm/parse.js.map 0000644 00000004240 15120070364 0010320 0 ustar 00 {"version":3,"file":"parse.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["parse.ts"],"names":[],"mappings":"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"} lib/index.d.ts 0000644 00000003163 15120070364 0007214 0 ustar 00 import { parse } from "./parse.js"; import { compile, generate } from "./compile.js"; export { parse, compile, 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` */ export default function nthCheck(formula: string): (index: number) => boolean; /** * 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 * ``` */ export declare function sequence(formula: string): () => number | null; //# sourceMappingURL=index.d.ts.map lib/index.d.ts.map 0000644 00000001063 15120070364 0007765 0 ustar 00 {"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAE5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,MAAM,GAAG,IAAI,CAE7D"} lib/index.js 0000644 00000004254 15120070364 0006762 0 ustar 00 "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 lib/index.js.map 0000644 00000001101 15120070364 0007522 0 ustar 00 {"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["index.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAG1B,sFAHA,gBAAK,OAGA;AAFd,2CAAiD;AAEjC,wFAFP,oBAAO,OAEO;AAAE,yFAFP,qBAAQ,OAEO;AAEjC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAwB,QAAQ,CAAC,OAAe;IAC5C,OAAO,IAAA,oBAAO,EAAC,IAAA,gBAAK,EAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAFD,2BAEC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,QAAQ,CAAC,OAAe;IACpC,OAAO,IAAA,qBAAQ,EAAC,IAAA,gBAAK,EAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC;AAFD,4BAEC"} lib/parse.d.ts 0000644 00000000513 15120070364 0007213 0 ustar 00 /** * 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] */ export declare function parse(formula: string): [a: number, b: number]; //# sourceMappingURL=parse.d.ts.map lib/parse.d.ts.map 0000644 00000000453 15120070364 0007772 0 ustar 00 {"version":3,"file":"parse.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["parse.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CA6E7D"} lib/parse.js 0000644 00000004466 15120070364 0006772 0 ustar 00 "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 lib/parse.js.map 0000644 00000004254 15120070364 0007541 0 ustar 00 {"version":3,"file":"parse.js","sourceRoot":"https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/","sources":["parse.ts"],"names":[],"mappings":"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"} package.json 0000644 00000004627 15120070364 0007041 0 ustar 00 { "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 } }
Coded With 💗 by
0x6ick