From 29190e0be981e3f4bc1d88d216726502e1ff6cd4 Mon Sep 17 00:00:00 2001 From: webreflection Date: Wed, 20 Dec 2023 13:32:38 +0100 Subject: [PATCH] Fix #93 - Improve TS definitions --- esm/index.js | 2 +- esm/init.js | 10 +- esm/keyed.js | 2 +- esm/literals.js | 2 +- esm/node.js | 2 +- esm/{render-hole.js => render/hole.js} | 12 +- esm/{render-keyed.js => render/keyed.js} | 10 +- esm/{render-node.js => render/node.js} | 4 +- package-lock.json | 134 +++++++++++++---------- package.json | 16 ++- types/index.d.ts | 2 +- types/keyed.d.ts | 2 +- types/literals.d.ts | 2 +- types/node.d.ts | 2 +- types/render-hole.d.ts | 3 - types/render-keyed.d.ts | 3 - types/render-node.d.ts | 3 - types/render/hole.d.ts | 3 + types/render/keyed.d.ts | 3 + types/render/node.d.ts | 3 + 20 files changed, 121 insertions(+), 99 deletions(-) rename esm/{render-hole.js => render/hole.js} (56%) rename esm/{render-keyed.js => render/keyed.js} (65%) rename esm/{render-node.js => render/node.js} (69%) delete mode 100644 types/render-hole.d.ts delete mode 100644 types/render-keyed.d.ts delete mode 100644 types/render-node.d.ts create mode 100644 types/render/hole.d.ts create mode 100644 types/render/keyed.d.ts create mode 100644 types/render/node.d.ts diff --git a/esm/index.js b/esm/index.js index 1a0a613..a17014c 100644 --- a/esm/index.js +++ b/esm/index.js @@ -2,7 +2,7 @@ import { Hole } from './rabbit.js'; import { attr } from './handler.js'; -import render from './render-hole.js'; +import render from './render/hole.js'; /** @typedef {import("./literals.js").Value} Value */ diff --git a/esm/init.js b/esm/init.js index 9fe6a07..8276b80 100644 --- a/esm/init.js +++ b/esm/init.js @@ -38,7 +38,7 @@ export default document => (function (exports) { /** @typedef {import("./rabbit.js").Hole} Hole */ /** @typedef {Node | Element | PersistentFragment} Target */ - /** @typedef {null | undefined | string | number | boolean | Hole} Value */ + /** @typedef {null | undefined | string | number | boolean | Hole | ((...args: unknown[]) => unknown)} Value */ /** @typedef {null | undefined | string | number | boolean | Node | Element | PersistentFragment} DOMValue */ /** @@ -868,17 +868,17 @@ export default document => (function (exports) { /** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render SVG content. */ const svg = tag(true); - /** @type {WeakMap} */ + /** @type {WeakMap} */ const known = new WeakMap; /** * Render with smart updates within a generic container. * @template T * @param {T} where the DOM node where to render content - * @param {() => Hole | Hole} what the hole to render + * @param {(() => Hole) | Hole} what the hole to render * @returns */ - var renderKeyed = (where, what) => { + var keyed$1 = (where, what) => { const info = known.get(where) || set(known, where, cache$1(empty)); const hole = typeof what === 'function' ? what() : what; const { n } = info; @@ -922,7 +922,7 @@ export default document => (function (exports) { exports.attr = attr; exports.html = html; exports.htmlFor = htmlFor; - exports.render = renderKeyed; + exports.render = keyed$1; exports.svg = svg; exports.svgFor = svgFor; diff --git a/esm/keyed.js b/esm/keyed.js index 455aeb3..47a0f14 100644 --- a/esm/keyed.js +++ b/esm/keyed.js @@ -3,7 +3,7 @@ import { Hole, unroll } from './rabbit.js'; import { empty, set } from './utils.js'; import { html, svg } from './index.js'; import { attr } from './handler.js'; -import render from './render-keyed.js'; +import render from './render/keyed.js'; /** @typedef {import("./literals.js").Cache} Cache */ /** @typedef {import("./literals.js").Target} Target */ diff --git a/esm/literals.js b/esm/literals.js index 07a7d4e..b846704 100644 --- a/esm/literals.js +++ b/esm/literals.js @@ -9,7 +9,7 @@ import { empty } from './utils.js'; /** @typedef {import("./rabbit.js").Hole} Hole */ /** @typedef {Node | Element | PersistentFragment} Target */ -/** @typedef {null | undefined | string | number | boolean | Hole} Value */ +/** @typedef {null | undefined | string | number | boolean | Hole | ((...args: unknown[]) => unknown)} Value */ /** @typedef {null | undefined | string | number | boolean | Node | Element | PersistentFragment} DOMValue */ /** diff --git a/esm/node.js b/esm/node.js index c729086..b0eb09a 100644 --- a/esm/node.js +++ b/esm/node.js @@ -2,7 +2,7 @@ import create from './creator.js'; import parser from './parser.js'; -import render from './render-node.js'; +import render from './render/node.js'; import { attr } from './handler.js'; /** @typedef {import("./literals.js").DOMValue} DOMValue */ diff --git a/esm/render-hole.js b/esm/render/hole.js similarity index 56% rename from esm/render-hole.js rename to esm/render/hole.js index 8b3498e..d583008 100644 --- a/esm/render-hole.js +++ b/esm/render/hole.js @@ -1,17 +1,17 @@ -import { cache } from './literals.js'; -import { unroll } from './rabbit.js'; -import { empty, set } from './utils.js'; +import { cache } from '../literals.js'; +import { unroll } from '../rabbit.js'; +import { empty, set } from '../utils.js'; -/** @typedef {import("./rabbit.js").Hole} Hole */ +/** @typedef {import("../rabbit.js").Hole} Hole */ -/** @type {WeakMap} */ +/** @type {WeakMap} */ const known = new WeakMap; /** * Render with smart updates within a generic container. * @template T * @param {T} where the DOM node where to render content - * @param {() => Hole | Hole} what the hole to render + * @param {(() => Hole) | Hole} what the hole to render * @returns */ export default (where, what) => { diff --git a/esm/render-keyed.js b/esm/render/keyed.js similarity index 65% rename from esm/render-keyed.js rename to esm/render/keyed.js index 37aecd4..3f634ad 100644 --- a/esm/render-keyed.js +++ b/esm/render/keyed.js @@ -1,15 +1,15 @@ -import { cache } from './literals.js'; -import { Hole, unroll } from './rabbit.js'; -import { empty, set } from './utils.js'; +import { cache } from '../literals.js'; +import { Hole, unroll } from '../rabbit.js'; +import { empty, set } from '../utils.js'; -/** @type {WeakMap} */ +/** @type {WeakMap} */ const known = new WeakMap; /** * Render with smart updates within a generic container. * @template T * @param {T} where the DOM node where to render content - * @param {() => Hole | Hole} what the hole to render + * @param {(() => Hole) | Hole} what the hole to render * @returns */ export default (where, what) => { diff --git a/esm/render-node.js b/esm/render/node.js similarity index 69% rename from esm/render-node.js rename to esm/render/node.js index 18a701c..60466d2 100644 --- a/esm/render-node.js +++ b/esm/render/node.js @@ -1,10 +1,10 @@ -/** @typedef {import("./literals.js").Target} Target */ +/** @typedef {import("../literals.js").Target} Target */ /** * Render directly within a generic container. * @template T * @param {T} where the DOM node where to render content - * @param {() => Target | Target} what the node to render + * @param {(() => Target) | Target} what the node to render * @returns */ export default (where, what) => { diff --git a/package-lock.json b/package-lock.json index 23a7dfd..2df35b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,9 @@ "@rollup/plugin-terser": "^0.4.4", "ascjs": "^6.0.3", "c8": "^8.0.1", - "linkedom": "^0.16.4", - "rollup": "^4.6.0", - "typescript": "^5.3.2" + "linkedom": "^0.16.5", + "rollup": "^4.9.1", + "typescript": "^5.3.3" } }, "node_modules/@babel/parser": { @@ -179,9 +179,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.0.tgz", - "integrity": "sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", + "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", "cpu": [ "arm" ], @@ -192,9 +192,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.0.tgz", - "integrity": "sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", + "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", "cpu": [ "arm64" ], @@ -205,9 +205,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.0.tgz", - "integrity": "sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", "cpu": [ "arm64" ], @@ -218,9 +218,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.0.tgz", - "integrity": "sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", + "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", "cpu": [ "x64" ], @@ -231,9 +231,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.0.tgz", - "integrity": "sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", + "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", "cpu": [ "arm" ], @@ -244,9 +244,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.0.tgz", - "integrity": "sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", + "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", "cpu": [ "arm64" ], @@ -257,9 +257,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.0.tgz", - "integrity": "sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", + "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", "cpu": [ "arm64" ], @@ -269,10 +269,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", + "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.0.tgz", - "integrity": "sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", + "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", "cpu": [ "x64" ], @@ -283,9 +296,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.0.tgz", - "integrity": "sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", + "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", "cpu": [ "x64" ], @@ -296,9 +309,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.0.tgz", - "integrity": "sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", + "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", "cpu": [ "arm64" ], @@ -309,9 +322,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.0.tgz", - "integrity": "sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", + "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", "cpu": [ "ia32" ], @@ -322,9 +335,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.0.tgz", - "integrity": "sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", "cpu": [ "x64" ], @@ -913,9 +926,9 @@ } }, "node_modules/linkedom": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.16.4.tgz", - "integrity": "sha512-SykvDVh/jAnaO+WiPqH5vX3QpZrIRImuppzYhIHons3RXPhDwqN2dOyfopOVaHleqWtoS+3vWCqen+m8M3HToQ==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.16.5.tgz", + "integrity": "sha512-FtcuLuxDtlKWWilm5Z0HgmrfMwO0tOfC6tu47fRXj2/KGEeDSh4ihiDwFKZSbJj6zh520r8XZjZ7v2Jb30HAQA==", "dev": true, "dependencies": { "css-select": "^5.1.0", @@ -1132,9 +1145,9 @@ } }, "node_modules/rollup": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.0.tgz", - "integrity": "sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -1144,18 +1157,19 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.6.0", - "@rollup/rollup-android-arm64": "4.6.0", - "@rollup/rollup-darwin-arm64": "4.6.0", - "@rollup/rollup-darwin-x64": "4.6.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.6.0", - "@rollup/rollup-linux-arm64-gnu": "4.6.0", - "@rollup/rollup-linux-arm64-musl": "4.6.0", - "@rollup/rollup-linux-x64-gnu": "4.6.0", - "@rollup/rollup-linux-x64-musl": "4.6.0", - "@rollup/rollup-win32-arm64-msvc": "4.6.0", - "@rollup/rollup-win32-ia32-msvc": "4.6.0", - "@rollup/rollup-win32-x64-msvc": "4.6.0", + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", "fsevents": "~2.3.2" } }, @@ -1338,9 +1352,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 099d1cf..e7e65c5 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "@rollup/plugin-terser": "^0.4.4", "ascjs": "^6.0.3", "c8": "^8.0.1", - "linkedom": "^0.16.4", - "rollup": "^4.6.0", - "typescript": "^5.3.2" + "linkedom": "^0.16.5", + "rollup": "^4.9.1", + "typescript": "^5.3.3" }, "module": "./esm/index.js", "type": "module", @@ -61,5 +61,13 @@ "custom-function": "^1.0.6", "domconstants": "^1.1.6", "udomdiff": "^1.1.0" - } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/WebReflection/uhtml.git" + }, + "bugs": { + "url": "https://github.com/WebReflection/uhtml/issues" + }, + "homepage": "https://github.com/WebReflection/uhtml#readme" } diff --git a/types/index.d.ts b/types/index.d.ts index 461087b..6b257cf 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,6 +1,6 @@ export type Value = import("./literals.js").Value; import { Hole } from './rabbit.js'; -import render from './render-hole.js'; +import render from './render/hole.js'; /** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render HTML content. */ export const html: (template: TemplateStringsArray, ...values: Value[]) => Hole; /** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render SVG content. */ diff --git a/types/keyed.d.ts b/types/keyed.d.ts index 6ea338f..75abed9 100644 --- a/types/keyed.d.ts +++ b/types/keyed.d.ts @@ -4,7 +4,7 @@ export type Value = import("./literals.js").Value; export type Bound = (ref: any, key: string | number) => Tag; export type Tag = (template: TemplateStringsArray, ...values: Value[]) => Target; import { Hole } from './rabbit.js'; -import render from './render-keyed.js'; +import render from './render/keyed.js'; import { html } from './index.js'; import { svg } from './index.js'; /** @type {Bound} Returns a bound tag to render HTML content. */ diff --git a/types/literals.d.ts b/types/literals.d.ts index 814d9da..abf953d 100644 --- a/types/literals.d.ts +++ b/types/literals.d.ts @@ -20,7 +20,7 @@ export type Type = ATTRIBUTE_NODE | TEXT_NODE | COMMENT_NODE; export type PersistentFragment = import("./persistent-fragment.js").PersistentFragment; export type Hole = import("./rabbit.js").Hole; export type Target = Node | Element | PersistentFragment; -export type Value = null | undefined | string | number | boolean | Hole; +export type Value = string | number | boolean | import("./rabbit.js").Hole | ((...args: unknown[]) => unknown); export type DOMValue = null | undefined | string | number | boolean | Node | Element | PersistentFragment; export type Entry = { type: Type; diff --git a/types/node.d.ts b/types/node.d.ts index 1529c17..2817a73 100644 --- a/types/node.d.ts +++ b/types/node.d.ts @@ -1,6 +1,6 @@ export type DOMValue = import("./literals.js").DOMValue; export type Target = import("./literals.js").Target; -import render from './render-node.js'; +import render from './render/node.js'; /** @type {(template: TemplateStringsArray, ...values:DOMValue[]) => Target} A tag to render HTML content. */ export const html: (template: TemplateStringsArray, ...values: DOMValue[]) => Target; /** @type {(template: TemplateStringsArray, ...values:DOMValue[]) => Target} A tag to render SVG content. */ diff --git a/types/render-hole.d.ts b/types/render-hole.d.ts deleted file mode 100644 index b1e45c0..0000000 --- a/types/render-hole.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function _default(where: T, what: () => Hole | Hole): T; -export default _default; -export type Hole = import("./rabbit.js").Hole; diff --git a/types/render-keyed.d.ts b/types/render-keyed.d.ts deleted file mode 100644 index 31b3e72..0000000 --- a/types/render-keyed.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function _default(where: T, what: () => Hole | Hole): T; -export default _default; -import { Hole } from './rabbit.js'; diff --git a/types/render-node.d.ts b/types/render-node.d.ts deleted file mode 100644 index ee57f65..0000000 --- a/types/render-node.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare function _default(where: T, what: () => Target | Target): T; -export default _default; -export type Target = import("./literals.js").Target; diff --git a/types/render/hole.d.ts b/types/render/hole.d.ts new file mode 100644 index 0000000..6b9d6af --- /dev/null +++ b/types/render/hole.d.ts @@ -0,0 +1,3 @@ +declare function _default(where: T, what: (() => Hole) | Hole): T; +export default _default; +export type Hole = import("../rabbit.js").Hole; diff --git a/types/render/keyed.d.ts b/types/render/keyed.d.ts new file mode 100644 index 0000000..5a8dff5 --- /dev/null +++ b/types/render/keyed.d.ts @@ -0,0 +1,3 @@ +declare function _default(where: T, what: (() => Hole) | Hole): T; +export default _default; +import { Hole } from '../rabbit.js'; diff --git a/types/render/node.d.ts b/types/render/node.d.ts new file mode 100644 index 0000000..b60d782 --- /dev/null +++ b/types/render/node.d.ts @@ -0,0 +1,3 @@ +declare function _default(where: T, what: (() => Target) | Target): T; +export default _default; +export type Target = import("../literals.js").Target;