From a1c8eb95fd3db6e2fb4dcfe433bee30d45b88d1e Mon Sep 17 00:00:00 2001 From: omar Date: Fri, 5 Jul 2024 01:54:05 -0700 Subject: [PATCH] chore: progress --- .gitignore | 1 + biome.json | 1 + packages/core/package.json | 3 ++ packages/core/src/index.ts | 10 ++--- packages/core/vitest.config.ts | 7 ++++ pnpm-lock.yaml | 74 +++++++++++++++++++--------------- 6 files changed, 57 insertions(+), 39 deletions(-) create mode 100644 packages/core/vitest.config.ts diff --git a/.gitignore b/.gitignore index 64ba76d..a95e184 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ cache *.timestamp-* site .zed +html diff --git a/biome.json b/biome.json index 2308f4f..bb9fb13 100644 --- a/biome.json +++ b/biome.json @@ -91,6 +91,7 @@ "useAwait": "off", "noConsoleLog": "off", "noExplicitAny": "off", + "noFocusedTests": "off", "noEmptyInterface": "off", "noConfusingVoidType": "off" }, diff --git a/packages/core/package.json b/packages/core/package.json index 37a0e77..0f2196f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,6 +20,7 @@ "scripts": { "build": "tsup --config=tsup.config.ts", "test": "vitest --run", + "test:ui": "vitest --ui", "typecheck": "tsc --project tsconfig.json --noEmit", "clean": "rm -rf dist", "prebuild": "rm -rf dist", @@ -38,11 +39,13 @@ "@arethetypeswrong/cli": "^0.15.3", "@shikijs/transformers": "^1.10.1", "@types/node": "^20.14.9", + "@vitest/ui": "^1.6.0", "hast-util-to-html": "^9.0.1", "mdast-util-to-hast": "^13.2.0", "prettier": "^3.3.2", "remark": "^15.0.1", "shiki": "^1.10.1", + "ts-dedent": "^2.2.0", "tsup": "^8.1.0", "tsx": "^4.16.2", "typescript": "^5.5.3", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c7b190e..23c5f0c 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -435,20 +435,18 @@ export function rehypePrettyCode( // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: visit(codeTree, 'element', (element) => { if (element.tagName === 'code') { - const showLineNumbers = /srebmuNeniLwohs/.test(reverseString(meta)); + const showLineNumbers = /(?:^|\s)showLineNumbers(?:\s|$)/.test(meta); if (showLineNumbers) { if (element.properties) { element.properties['data-line-numbers'] = ''; } - const lineNumbersStartAtMatch = reverseString(meta).match( - /(?:\}(\d+){)?srebmuNeniLwohs/, + const lineNumbersStartAtMatch = meta.match( + /showLineNumbers=(\d+)/ ); const startNumberString = lineNumbersStartAtMatch?.[1]; if (startNumberString) { - const startAt = startNumberString - ? Number(reverseString(startNumberString)) - 1 - : 0; + const startAt = Number(startNumberString) - 1; lineNumbersMaxDigits = startAt; if (element.properties) { element.properties.style = `counter-set: line ${startAt};`; diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts new file mode 100644 index 0000000..7382f40 --- /dev/null +++ b/packages/core/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + globals: true, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c025cbc..0148058 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -247,7 +247,7 @@ importers: version: 5.0.0-next.173 svelte-check: specifier: ^3.8.4 - version: 3.8.4(@babel/core@7.24.7)(postcss-load-config@6.0.1(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173) + version: 3.8.4(@babel/core@7.24.7)(postcss-load-config@4.0.2(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173) tslib: specifier: ^2.6.3 version: 2.6.3 @@ -288,6 +288,9 @@ importers: '@types/node': specifier: ^20.14.9 version: 20.14.9 + '@vitest/ui': + specifier: ^1.6.0 + version: 1.6.0(vitest@1.6.0) hast-util-to-html: specifier: ^9.0.1 version: 9.0.1 @@ -303,6 +306,9 @@ importers: shiki: specifier: ^1.10.1 version: 1.10.1 + ts-dedent: + specifier: ^2.2.0 + version: 2.2.0 tsup: specifier: ^8.1.0 version: 8.1.0(postcss@8.4.39)(typescript@5.5.3) @@ -317,7 +323,7 @@ importers: version: 5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.1) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.1) + version: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(lightningcss@1.25.1)(terser@5.31.1) packages/transformers: devDependencies: @@ -1489,6 +1495,11 @@ packages: '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/ui@1.6.0': + resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} + peerDependencies: + vitest: 1.6.0 + '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} @@ -1770,7 +1781,6 @@ packages: bun@1.1.18: resolution: {integrity: sha512-bv1wLYtmkn6GCqYFsVO9xZzPvNaDlA3xHbtePGHMtXMqq8N/vo+L6b19LB4+I5RKXFAsSmgzonyh2oMExaaWcQ==} - cpu: [arm64, x64] os: [darwin, linux, win32] hasBin: true @@ -2216,6 +2226,9 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -3325,24 +3338,6 @@ packages: ts-node: optional: true - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - postcss-nested@6.0.1: resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -3967,6 +3962,10 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-expose-internals-conditionally@1.0.0-empty.0: resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} @@ -5717,6 +5716,17 @@ snapshots: dependencies: tinyspy: 2.2.1 + '@vitest/ui@1.6.0(vitest@1.6.0)': + dependencies: + '@vitest/utils': 1.6.0 + fast-glob: 3.3.2 + fflate: 0.8.2 + flatted: 3.3.1 + pathe: 1.1.2 + picocolors: 1.0.1 + sirv: 2.0.4 + vitest: 1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(lightningcss@1.25.1)(terser@5.31.1) + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 @@ -6564,6 +6574,8 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 + flatted@3.3.1: {} + flattie@1.1.1: {} foreground-child@3.2.1: @@ -7998,13 +8010,6 @@ snapshots: optionalDependencies: postcss: 8.4.39 - postcss-load-config@6.0.1(postcss@8.4.39): - dependencies: - lilconfig: 3.1.2 - optionalDependencies: - postcss: 8.4.39 - optional: true - postcss-nested@6.0.1(postcss@8.4.39): dependencies: postcss: 8.4.39 @@ -8582,14 +8587,14 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.4(@babel/core@7.24.7)(postcss-load-config@6.0.1(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173): + svelte-check@3.8.4(@babel/core@7.24.7)(postcss-load-config@4.0.2(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.0.1 sade: 1.8.1 svelte: 5.0.0-next.173 - svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss-load-config@6.0.1(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173)(typescript@5.5.3) + svelte-preprocess: 5.1.4(@babel/core@7.24.7)(postcss-load-config@4.0.2(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173)(typescript@5.5.3) typescript: 5.5.3 transitivePeerDependencies: - '@babel/core' @@ -8606,7 +8611,7 @@ snapshots: dependencies: svelte: 5.0.0-next.173 - svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss-load-config@6.0.1(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173)(typescript@5.5.3): + svelte-preprocess@5.1.4(@babel/core@7.24.7)(postcss-load-config@4.0.2(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.173)(typescript@5.5.3): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -8617,7 +8622,7 @@ snapshots: optionalDependencies: '@babel/core': 7.24.7 postcss: 8.4.39 - postcss-load-config: 6.0.1(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39) typescript: 5.5.3 svelte@5.0.0-next.173: @@ -8736,6 +8741,8 @@ snapshots: trough@2.2.0: {} + ts-dedent@2.2.0: {} + ts-expose-internals-conditionally@1.0.0-empty.0: {} ts-interface-checker@0.1.13: {} @@ -8967,7 +8974,7 @@ snapshots: optionalDependencies: vite: 5.3.3(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.1) - vitest@1.6.0(@types/node@20.14.9)(lightningcss@1.25.1)(terser@5.31.1): + vitest@1.6.0(@types/node@20.14.9)(@vitest/ui@1.6.0)(lightningcss@1.25.1)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -8991,6 +8998,7 @@ snapshots: why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.14.9 + '@vitest/ui': 1.6.0(vitest@1.6.0) transitivePeerDependencies: - less - lightningcss