diff --git a/deno.json b/deno.json
new file mode 100644
index 0000000..8b13a80
--- /dev/null
+++ b/deno.json
@@ -0,0 +1,6 @@
+{
+ "imports": {
+ "dom/": "https://stephen.band/dom/modules/",
+ "fn/": "https://stephen.band/fn/modules/"
+ }
+}
diff --git a/deno/compile.js b/deno/compile.js
index ff3cdc2..e4a67b6 100644
--- a/deno/compile.js
+++ b/deno/compile.js
@@ -5,7 +5,7 @@
-import compileAsyncFn from '../../fn/modules/compile-async.js';
+import compileAsyncFn from 'fn/compile-async.js';
import { dimgreendim, dim, red, yellow } from './log.js';
diff --git a/deno/imports.js b/deno/imports.js
index 0414b05..bed0e9a 100644
--- a/deno/imports.js
+++ b/deno/imports.js
@@ -1,7 +1,7 @@
import * as Path from "https://deno.land/std@0.110.0/path/mod.ts";
-import overload from '../../fn/modules/overload.js';
+import overload from 'fn/overload.js';
import getExtension from '../modules/get-extension.js';
import getAbsolute from './get-absolute.js';
import { red, yellow } from './log.js';
diff --git a/deno/include.js b/deno/include.js
index 9116cfd..2bf0d48 100644
--- a/deno/include.js
+++ b/deno/include.js
@@ -1,8 +1,8 @@
-import id from '../../fn/modules/id.js';
-import noop from '../../fn/modules/noop.js';
-import overload from '../../fn/modules/overload.js';
-import toType from '../../fn/modules/to-type.js';
+import id from 'fn/id.js';
+import noop from 'fn/noop.js';
+import overload from 'fn/overload.js';
+import toType from 'fn/to-type.js';
import getExtension from '../modules/get-extension.js';
import getAbsolute from './get-absolute.js';
diff --git a/deno/parse-length.js b/deno/parse-length.js
index 3f753b2..032ffbf 100644
--- a/deno/parse-length.js
+++ b/deno/parse-length.js
@@ -1,8 +1,8 @@
-import id from '../../fn/modules/id.js';
-import overload from '../../fn/modules/overload.js';
-import parseValue from '../../fn/modules/parse-value.js';
-import toType from '../../fn/modules/to-type.js';
+import id from 'fn/id.js';
+import overload from 'fn/overload.js';
+import parseValue from 'fn/parse-value.js';
+import toType from 'fn/to-type.js';
/**
px(value)
diff --git a/deno/read.js b/deno/read.js
index 68c2fd0..3cc3d29 100644
--- a/deno/read.js
+++ b/deno/read.js
@@ -3,7 +3,7 @@
read(pathname)
**/
-import cache from '../../fn/modules/cache.js';
+import cache from 'fn/cache.js';
import { dimbluedim } from './log.js';
// TextDecoder decodes the Uint8Array to unicode text
diff --git a/deno/scope.js b/deno/scope.js
index 7c58d1c..814a468 100644
--- a/deno/scope.js
+++ b/deno/scope.js
@@ -4,12 +4,12 @@ import * as path from "https://deno.land/std@0.110.0/path/mod.ts";
// Absolute path to module
const moduleAbs = path.dirname(path.fromFileUrl(import.meta.url));
-import { addDate } from '../../fn/modules/date.js';
-import { addTime } from '../../fn/modules/time.js';
-import exec from '../../fn/modules/exec.js';
-import get from '../../fn/modules/get.js';
-import overload from '../../fn/modules/overload.js';
-import toType from '../../fn/modules/to-type.js';
+import { addDate } from 'fn/date.js';
+import { addTime } from 'fn/time.js';
+import exec from 'fn/exec.js';
+import get from 'fn/get.js';
+import overload from 'fn/overload.js';
+import toType from 'fn/to-type.js';
import read from './read.js';
import { rewriteURL, rewriteURLs } from './url.js';
diff --git a/documentation/classes/nav.js b/documentation/classes/nav.js
index 6ea70ca..9ee9318 100644
--- a/documentation/classes/nav.js
+++ b/documentation/classes/nav.js
@@ -1,6 +1,6 @@
-import { clamp } from '../../../fn/modules/clamp.js';
-import events from '../../../dom/modules/events.js';
+import { clamp } from 'fn/clamp.js';
+import events from 'dom/events.js';
events({ type: 'scroll', capture: true }, window)
diff --git a/documentation/module.js b/documentation/module.js
index 31c4893..2d91537 100644
--- a/documentation/module.js
+++ b/documentation/module.js
@@ -6,7 +6,7 @@ import '../../bolt/classes/device.js';
import DetailsToggle from '../../details-toggle/module.js';
// Events
-import navigate from '../../dom/modules/navigate.js';
+import navigate from 'dom/navigate.js';
// Components
import './classes/nav.js';
diff --git a/element/element.js b/element/element.js
index d86d395..b82c989 100644
--- a/element/element.js
+++ b/element/element.js
@@ -1,9 +1,9 @@
-import cache from '../../fn/modules/cache.js';
-import Data from '../../fn/modules/data.js';
-import create from '../../dom/modules/create.js';
-import element, { getInternals } from '../../dom/modules/element.js';
-import toPrefetchPromise from '../../dom/modules/element/to-prefetch-promise.js';
+import cache from 'fn/cache.js';
+import Data from 'fn/data.js';
+import create from 'dom/create.js';
+import element, { getInternals } from 'dom/element.js';
+import toPrefetchPromise from 'dom/element/to-prefetch-promise.js';
import getById from '../modules/dom/get-by-id.js';
import assignDataset from '../modules/dom/assign-dataset.js';
import Literal from '../modules/template.js';
diff --git a/element/property.js b/element/property.js
index 4518bd7..c2c1099 100644
--- a/element/property.js
+++ b/element/property.js
@@ -1,12 +1,12 @@
-import Signal from '../../fn/modules/signal.js';
-import arg from '../../fn/modules/arg.js';
-import nothing from '../../fn/modules/nothing.js';
-import overload from '../../fn/modules/overload.js';
-import toCamelCase from '../../fn/modules/to-camel-case.js';
-import TokenList from '../../dom/modules/element/token-list.js';
-import updateTokenList from '../../dom/modules/element/update-token-list.js';
-import { getInternals } from '../../dom/modules/element.js';
+import Signal from 'fn/signal.js';
+import arg from 'fn/arg.js';
+import nothing from 'fn/nothing.js';
+import overload from 'fn/overload.js';
+import toCamelCase from 'fn/to-camel-case.js';
+import TokenList from 'dom/element/token-list.js';
+import updateTokenList from 'dom/element/update-token-list.js';
+import { getInternals } from 'dom/element.js';
import requestData from '../modules/request-data.js';
const define = Object.defineProperty;
diff --git a/element/test.html b/element/test.html
index a828aaf..251d3c9 100644
--- a/element/test.html
+++ b/element/test.html
@@ -10,6 +10,19 @@
window.DEBUG = true;
+
+
+
diff --git a/literal-element/module.js b/literal-element/module.js
index 378a01b..a871601 100644
--- a/literal-element/module.js
+++ b/literal-element/module.js
@@ -44,7 +44,7 @@ That may now be authored:
Current time:
**/
-import element from '../../dom/modules/element.js';
+import element from 'dom/element.js';
import lifecycle from './modules/lifecycle.js';
import properties from './modules/properties.js';
diff --git a/literal-element/modules/lifecycle.js b/literal-element/modules/lifecycle.js
index 6b71dfa..1d17db0 100644
--- a/literal-element/modules/lifecycle.js
+++ b/literal-element/modules/lifecycle.js
@@ -1,8 +1,8 @@
// Lifecycle for
-import nothing from '../../../fn/modules/nothing.js';
-import { getInternals } from '../../../dom/modules/element.js';
+import nothing from 'fn/nothing.js';
+import { getInternals } from 'dom/element.js';
import defineElement from '../../modules/define-element.js';
const assign = Object.assign;
diff --git a/literal-element/modules/properties.js b/literal-element/modules/properties.js
index 4a03799..d0599c7 100644
--- a/literal-element/modules/properties.js
+++ b/literal-element/modules/properties.js
@@ -1,5 +1,5 @@
-import { getInternals } from '../../../dom/modules/element.js';
+import { getInternals } from 'dom/element.js';
import { rewriteURL } from '../../modules/urls.js';
import parseNameValues from '../../modules/parse/parse-name-values.js';
diff --git a/literal-html/index.html b/literal-html/index.html
index 30725cc..6de3c4f 100644
--- a/literal-html/index.html
+++ b/literal-html/index.html
@@ -10,10 +10,6 @@
-
-
-
-
+
+
+
diff --git a/module.js b/module.js
index c4ff52f..4b32469 100644
--- a/module.js
+++ b/module.js
@@ -9,6 +9,6 @@ Template.compiled = compiled;
export default Template;
export { default as config } from './modules/config.js';
-export { default as Data } from '../fn/modules/data.js';
-export { default as Signal } from '../fn/modules/signal.js';
+export { default as Data } from 'fn/data.js';
+export { default as Signal } from 'fn/signal.js';
export { urls } from './modules/urls.js';
diff --git a/modules/compile/compile-node.js b/modules/compile/compile-node.js
index 78a358e..888a85b 100644
--- a/modules/compile/compile-node.js
+++ b/modules/compile/compile-node.js
@@ -1,8 +1,8 @@
-import id from '../../../fn/modules/id.js';
-import overload from '../../../fn/modules/overload.js';
-import toType from '../../../dom/modules/to-type.js';
-import decode from '../../../dom/modules/decode.js';
+import id from 'fn/id.js';
+import overload from 'fn/overload.js';
+import toType from 'dom/to-type.js';
+import decode from 'dom/decode.js';
import indexOf from '../dom/index-of.js';
import TextRenderer from '../renderer/renderer-text.js';
import { printError } from '../print.js';
diff --git a/modules/compile/compile.js b/modules/compile/compile.js
index c978e14..b4fc711 100644
--- a/modules/compile/compile.js
+++ b/modules/compile/compile.js
@@ -1,5 +1,5 @@
-import compileFn from '../../../fn/modules/compile.js';
+import compileFn from 'fn/compile.js';
import { log } from '../log.js';
const indent = window.DEBUG ? '\n ' : '' ;
diff --git a/modules/get-extension.js b/modules/get-extension.js
index b1cd717..82584ca 100644
--- a/modules/get-extension.js
+++ b/modules/get-extension.js
@@ -1,5 +1,5 @@
-import exec from '../../fn/modules/exec.js';
-import get from '../../fn/modules/get.js';
+import exec from 'fn/exec.js';
+import get from 'fn/get.js';
export default exec(/\.[\w\d.]+$/, get(0));
diff --git a/modules/include.js b/modules/include.js
index 7f50deb..1271cbe 100644
--- a/modules/include.js
+++ b/modules/include.js
@@ -18,7 +18,7 @@ ${ data.array.map(include('#list-item')) }
```
**/
-import Data from '../../fn/modules/data.js';
+import Data from 'fn/data.js';
import getById from './dom/get-by-id.js';
import Literal from './template.js';
import requestTemplate from './request-template.js';
diff --git a/modules/log.js b/modules/log.js
index a3322b9..386bdeb 100644
--- a/modules/log.js
+++ b/modules/log.js
@@ -1,5 +1,5 @@
-import noop from '../../fn/modules/noop.js';
+import noop from 'fn/noop.js';
const colors = {
'aqua': '#00a8a9',
diff --git a/modules/parse/parse-comments.js b/modules/parse/parse-comments.js
index 2801088..ed43f89 100644
--- a/modules/parse/parse-comments.js
+++ b/modules/parse/parse-comments.js
@@ -3,9 +3,9 @@
Parse files for documentation comments
*/
-import capture from '../../../fn/modules/capture.js';
-import noop from '../../../fn/modules/noop.js';
-import slugify from '../../../fn/modules/slugify.js';
+import capture from 'fn/capture.js';
+import noop from 'fn/noop.js';
+import slugify from 'fn/slugify.js';
import { parseString } from './parse-string.js';
import { parseParams } from './parse-params.js';
diff --git a/modules/parse/parse-name-values.js b/modules/parse/parse-name-values.js
index 6a29e69..9333b78 100644
--- a/modules/parse/parse-name-values.js
+++ b/modules/parse/parse-name-values.js
@@ -1,5 +1,5 @@
-import capture from '../../../fn/modules/capture.js';
-import last from '../../../fn/modules/last.js';
+import capture from 'fn/capture.js';
+import last from 'fn/last.js';
/**
parseNameValues(array, string)
diff --git a/modules/parse/parse-params.js b/modules/parse/parse-params.js
index 3b83dbb..16cf1ba 100644
--- a/modules/parse/parse-params.js
+++ b/modules/parse/parse-params.js
@@ -1,4 +1,4 @@
-import capture from '../../../fn/modules/capture.js';
+import capture from 'fn/capture.js';
/**
diff --git a/modules/parse/parse-string.js b/modules/parse/parse-string.js
index ff6bba7..53714f7 100644
--- a/modules/parse/parse-string.js
+++ b/modules/parse/parse-string.js
@@ -1,5 +1,5 @@
-import capture from '../../../fn/modules/capture.js';
-import noop from '../../../fn/modules/noop.js';
+import capture from 'fn/capture.js';
+import noop from 'fn/noop.js';
/**
diff --git a/modules/print.js b/modules/print.js
index 71f2a72..5cf5b80 100644
--- a/modules/print.js
+++ b/modules/print.js
@@ -24,9 +24,9 @@ Messages should be styled with the print stylesheet:
**/
-import noop from '../../fn/modules/noop.js';
-import Data from '../../fn/modules/data.js';
-import create from '../../dom/modules/create.js';
+import noop from 'fn/noop.js';
+import Data from 'fn/data.js';
+import create from 'dom/create.js';
import { log } from './log.js';
const linkHTML = 'literal';
diff --git a/modules/renderer/renderer-attribute.js b/modules/renderer/renderer-attribute.js
index d1dafa9..2801ad8 100644
--- a/modules/renderer/renderer-attribute.js
+++ b/modules/renderer/renderer-attribute.js
@@ -1,6 +1,6 @@
//import composeString from './compose-string.js';
-import Signal from '../../../fn/modules/signal.js';
+import Signal from 'fn/signal.js';
import names from './property-names.js';
import Renderer, { stats } from './renderer.js';
import { printError } from '../print.js';
diff --git a/modules/renderer/renderer-boolean.js b/modules/renderer/renderer-boolean.js
index a3b2f76..0862b60 100644
--- a/modules/renderer/renderer-boolean.js
+++ b/modules/renderer/renderer-boolean.js
@@ -1,6 +1,6 @@
-import Signal from '../../../fn/modules/signal.js';
-import sum from '../../../fn/modules/sum.js';
+import Signal from 'fn/signal.js';
+import sum from 'fn/sum.js';
import AttributeRenderer from './renderer-attribute.js';
import { stats } from './renderer.js';
diff --git a/modules/renderer/renderer-checked.js b/modules/renderer/renderer-checked.js
index a5b1e5a..803b918 100644
--- a/modules/renderer/renderer-checked.js
+++ b/modules/renderer/renderer-checked.js
@@ -1,8 +1,8 @@
-import id from '../../../fn/modules/id.js';
-import isDefined from '../../../fn/modules/is-defined.js';
-import Signal from '../../../fn/modules/signal.js';
-import trigger from '../../../dom/modules/trigger.js';
+import id from 'fn/id.js';
+import isDefined from 'fn/is-defined.js';
+import Signal from 'fn/signal.js';
+import trigger from 'dom/trigger.js';
import config from '../config.js';
import bindChecked from '../../scope/bind-checked.js';
import AttributeRenderer from './renderer-attribute.js';
diff --git a/modules/renderer/renderer-dataset.js b/modules/renderer/renderer-dataset.js
index 1a2a5f3..26ac341 100644
--- a/modules/renderer/renderer-dataset.js
+++ b/modules/renderer/renderer-dataset.js
@@ -1,6 +1,6 @@
-import Signal from '../../../fn/modules/signal.js';
-import toCamelCase from '../../../fn/modules/to-camel-case.js';
+import Signal from 'fn/signal.js';
+import toCamelCase from 'fn/to-camel-case.js';
import AttributeRenderer, { toAttributeString } from './renderer-attribute.js';
import { stats } from './renderer.js';
diff --git a/modules/renderer/renderer-text.js b/modules/renderer/renderer-text.js
index b44e85b..c6bf0c1 100644
--- a/modules/renderer/renderer-text.js
+++ b/modules/renderer/renderer-text.js
@@ -6,9 +6,9 @@ processing the literal content is more DOM content this renderer will insert
that DOM after the text node.
**/
-import Signal from '../../../fn/modules/signal.js';
-import Data from '../../../fn/modules/data.js';
-import { isCommentNode, isElementNode, isFragmentNode, isTextNode } from '../../../dom/modules/node.js';
+import Signal from 'fn/signal.js';
+import Data from 'fn/data.js';
+import { isCommentNode, isElementNode, isFragmentNode, isTextNode } from 'dom/node.js';
import include from '../include.js';
import deleteRange from '../dom/delete-range.js';
import Literal from '../template.js';
diff --git a/modules/renderer/renderer-tokens.js b/modules/renderer/renderer-tokens.js
index bd685f9..119ce31 100644
--- a/modules/renderer/renderer-tokens.js
+++ b/modules/renderer/renderer-tokens.js
@@ -1,8 +1,8 @@
-import id from '../../../fn/modules/id.js';
-import nothing from '../../../fn/modules/nothing.js';
-import overload from '../../../fn/modules/overload.js';
-import Signal from '../../../fn/modules/signal.js';
+import id from 'fn/id.js';
+import nothing from 'fn/nothing.js';
+import overload from 'fn/overload.js';
+import Signal from 'fn/signal.js';
import toText from './to-text.js';
import AttributeRenderer from './renderer-attribute.js';
import { stats } from './renderer.js';
diff --git a/modules/renderer/renderer-value.js b/modules/renderer/renderer-value.js
index d7d5759..298d890 100644
--- a/modules/renderer/renderer-value.js
+++ b/modules/renderer/renderer-value.js
@@ -1,9 +1,9 @@
-import id from '../../../fn/modules/id.js';
-import get from '../../../fn/modules/get.js';
-import overload from '../../../fn/modules/overload.js';
-import Signal from '../../../fn/modules/signal.js';
-import trigger from '../../../dom/modules/trigger.js';
+import id from 'fn/id.js';
+import get from 'fn/get.js';
+import overload from 'fn/overload.js';
+import Signal from 'fn/signal.js';
+import trigger from 'dom/trigger.js';
import config from '../config.js';
import bindValue from '../../scope/bind-value.js';
import AttributeRenderer, { toAttributeString } from './renderer-attribute.js';
diff --git a/modules/renderer/renderer.js b/modules/renderer/renderer.js
index d9309c5..b8d8cac 100644
--- a/modules/renderer/renderer.js
+++ b/modules/renderer/renderer.js
@@ -1,7 +1,7 @@
-import { remove } from '../../../fn/modules/remove.js';
-import Signal, { ObserveSignal } from '../../../fn/modules/signal.js';
-import Data from '../../../fn/modules/data.js';
+import { remove } from 'fn/remove.js';
+import Signal, { ObserveSignal } from 'fn/signal.js';
+import Data from 'fn/data.js';
import scope from '../scope.js';
import { cue, uncue } from './cue.js';
import toText from './to-text.js';
diff --git a/modules/renderer/to-text.js b/modules/renderer/to-text.js
index 250b1fd..d4770aa 100644
--- a/modules/renderer/to-text.js
+++ b/modules/renderer/to-text.js
@@ -1,7 +1,7 @@
-import id from '../../../fn/modules/id.js';
-import overload from '../../../fn/modules/overload.js';
-import toType from '../../../fn/modules/to-type.js';
+import id from 'fn/id.js';
+import overload from 'fn/overload.js';
+import toType from 'fn/to-type.js';
/**
Template expressions
diff --git a/modules/request-data.js b/modules/request-data.js
index 8d2902a..936fa4e 100644
--- a/modules/request-data.js
+++ b/modules/request-data.js
@@ -41,10 +41,10 @@ requestData('./path/to/module#default("parameter")');
```
**/
-import get from '../../fn/modules/get.js';
-import overload from '../../fn/modules/overload.js';
-import cache from '../../fn/modules/cache-by-key.js';
-import { requestGet } from '../../dom/modules/request.js';
+import get from 'fn/get.js';
+import overload from 'fn/overload.js';
+import cache from 'fn/cache-by-key.js';
+import { requestGet } from 'dom/request.js';
import { rewriteURL } from './urls.js';
const rextension = /\.([\w-]+)(?:#|\?|$)/;
diff --git a/modules/request-template.js b/modules/request-template.js
index 28188a3..2afe9b8 100644
--- a/modules/request-template.js
+++ b/modules/request-template.js
@@ -1,6 +1,6 @@
-import cache from '../../fn/modules/cache.js';
-import { requestGet } from '../../dom/modules/request.js';
+import cache from 'fn/cache.js';
+import { requestGet } from 'dom/request.js';
export default cache(function requestTemplate(url) {
return requestGet(url).then((fragment) => {
diff --git a/modules/template.js b/modules/template.js
index ee9939c..619de76 100644
--- a/modules/template.js
+++ b/modules/template.js
@@ -24,11 +24,11 @@ renderer
```
**/
-import overload from '../../fn/modules/overload.js';
-import Signal from '../../fn/modules/signal.js';
-import Data from '../../fn/modules/data.js';
-import create from '../../dom/modules/create.js';
-import identify from '../../dom/modules/identify.js';
+import overload from 'fn/overload.js';
+import Signal from 'fn/signal.js';
+import Data from 'fn/data.js';
+import create from 'dom/create.js';
+import identify from 'dom/identify.js';
import { pathSeparator } from './compile/constants.js';
import Renderer, { stats } from './renderer/renderer.js';
import compileNode from './compile.js';
diff --git a/scope/add.js b/scope/add.js
index 259e53d..d3fb697 100644
--- a/scope/add.js
+++ b/scope/add.js
@@ -35,9 +35,9 @@ function toAddType(n) {
type;
}
-import overload from '../../fn/modules/overload.js';
-import { addDate } from '../../fn/modules/date.js';
-import { addTime } from '../../fn/modules/time.js';
+import overload from 'fn/overload.js';
+import { addDate } from 'fn/date.js';
+import { addTime } from 'fn/time.js';
register('add', overload(toAddType, {
'date': addDate,
diff --git a/scope/bind-checked.js b/scope/bind-checked.js
index 3d2428f..565f725 100644
--- a/scope/bind-checked.js
+++ b/scope/bind-checked.js
@@ -1,8 +1,8 @@
-import id from '../../fn/modules/id.js';
-import isDefined from '../../fn/modules/is-defined.js';
-import set from '../../fn/modules/set.js';
-//import events from '../../../dom/modules/events.js';
+import id from 'fn/id.js';
+import isDefined from 'fn/is-defined.js';
+import set from 'fn/set.js';
+//import events from 'dom/events.js';
//import { observe } from '../data.js';
export default function bindChecked(element, data, path, to, from, setChecked) {
diff --git a/scope/bind-value.js b/scope/bind-value.js
index af4c640..aafe24d 100644
--- a/scope/bind-value.js
+++ b/scope/bind-value.js
@@ -1,7 +1,7 @@
-import id from '../../fn/modules/id.js';
-import set from '../../fn/modules/set-path.js';
-//import events from '../../../dom/modules/events.js';
+import id from 'fn/id.js';
+import set from 'fn/set-path.js';
+//import events from 'dom/events.js';
import { getValue, setValue } from '../modules/renderer/renderer-value.js';
//import { observe } from '../data.js';
diff --git a/scope/include-html.js b/scope/include-html.js
index f9bda04..d0eb79e 100644
--- a/scope/include-html.js
+++ b/scope/include-html.js
@@ -5,8 +5,8 @@ Includes cloned html content from an external document at the `src` URL, or from
the content of an element identified by the `src` fragment identifier.
**/
-import create from '../../dom/modules/create.js';
-import { requestGet } from '../../dom/modules/request.js';
+import create from 'dom/create.js';
+import { requestGet } from 'dom/request.js';
export default function includeHTML(url) {
if (!/^#/.test(url)) {
diff --git a/scope/location.js b/scope/location.js
index 654699e..e0dd15c 100644
--- a/scope/location.js
+++ b/scope/location.js
@@ -1,5 +1,5 @@
-import Signal from '../../fn/modules/signal.js';
+import Signal from 'fn/signal.js';
function stripHash(hash) {
return hash.replace(/^#/, '');
diff --git a/scope/paramify.js b/scope/paramify.js
index cea8fb0..eccc261 100644
--- a/scope/paramify.js
+++ b/scope/paramify.js
@@ -7,7 +7,7 @@ parameters object. Rejects undefined properties and flattens out
array values.
**/
-import nothing from '../../fn/modules/nothing.js';
+import nothing from 'fn/nothing.js';
export default function paramify(object) {
// If this is an object with properties that may be arrays, flatten it
diff --git a/scope/scope-dom-ext.js b/scope/scope-dom-ext.js
index 5d5a47f..c421357 100644
--- a/scope/scope-dom-ext.js
+++ b/scope/scope-dom-ext.js
@@ -1,10 +1,10 @@
-export { default as delegate } from '../../dom/modules/delegate.js';
-export { default as events } from '../../dom/modules/events.js';
-export { default as isValid } from '../../dom/modules/is-valid.js';
-export { default as rect } from '../../dom/modules/rect.js';
-export { px, em, rem, vw, vh } from '../../dom/modules/parse-length.js';
-export { default as validate } from '../../dom/modules/validate.js';
-export { default as navigate } from '../../dom/modules/navigate.js';
+export { default as delegate } from 'dom/delegate.js';
+export { default as events } from 'dom/events.js';
+export { default as isValid } from 'dom/is-valid.js';
+export { default as rect } from 'dom/rect.js';
+export { px, em, rem, vw, vh } from 'dom/parse-length.js';
+export { default as validate } from 'dom/validate.js';
+export { default as navigate } from 'dom/navigate.js';
export { default as paramify } from './paramify.js';
export { default as style } from './style.js';
diff --git a/scope/scope-dom.js b/scope/scope-dom.js
index 73e7812..46662b5 100644
--- a/scope/scope-dom.js
+++ b/scope/scope-dom.js
@@ -10,14 +10,14 @@ export const frame = window.requestAnimationFrame;
// literal so they come at no cost to have them in scope by default. Functions
// not already used by literal should be put in scope-extended.js
-export { default as create } from '../../dom/modules/create.js';
-export { default as decode } from '../../dom/modules/decode.js';
-export { default as identify } from '../../dom/modules/identify.js';
-export { default as isTextNode } from '../../dom/modules/is-text-node.js';
-export { default as parse } from '../../dom/modules/parse.js';
-export { default as request } from '../../dom/modules/request.js';
-export { default as toNodeType } from '../../dom/modules/to-type.js';
-export { default as trigger } from '../../dom/modules/trigger.js';
+export { default as create } from 'dom/create.js';
+export { default as decode } from 'dom/decode.js';
+export { default as identify } from 'dom/identify.js';
+export { default as isTextNode } from 'dom/is-text-node.js';
+export { default as parse } from 'dom/parse.js';
+export { default as request } from 'dom/request.js';
+export { default as toNodeType } from 'dom/to-type.js';
+export { default as trigger } from 'dom/trigger.js';
// Causes import loop because scope is imported into renderers
//export { getValue } from '../renderer/renderer-value.js';
diff --git a/scope/scope-fns-ext.js b/scope/scope-fns-ext.js
index 3a40f1e..3ef4c11 100644
--- a/scope/scope-fns-ext.js
+++ b/scope/scope-fns-ext.js
@@ -1,16 +1,16 @@
-export { default as by } from '../../fn/modules/by.js';
-export { clamp } from '../../fn/modules/clamp.js';
-export { default as deg } from '../../fn/modules/to-deg.js';
-export { default as rad } from '../../fn/modules/to-rad.js';
-export { default as equals } from '../../fn/modules/equals.js';
-export { default as matches } from '../../fn/modules/matches.js';
-export { default as get } from '../../fn/modules/get-path.js';
-export { default as set } from '../../fn/modules/set-path.js';
-export { default as slugify } from '../../fn/modules/slugify.js';
-export { default as toCamelCase } from '../../fn/modules/to-camel-case.js';
-export { default as normalise } from '../../fn/modules/normalise.js';
-export { default as denormalise } from '../../fn/modules/denormalise.js';
+export { default as by } from 'fn/by.js';
+export { clamp } from 'fn/clamp.js';
+export { default as deg } from 'fn/to-deg.js';
+export { default as rad } from 'fn/to-rad.js';
+export { default as equals } from 'fn/equals.js';
+export { default as matches } from 'fn/matches.js';
+export { default as get } from 'fn/get-path.js';
+export { default as set } from 'fn/set-path.js';
+export { default as slugify } from 'fn/slugify.js';
+export { default as toCamelCase } from 'fn/to-camel-case.js';
+export { default as normalise } from 'fn/normalise.js';
+export { default as denormalise } from 'fn/denormalise.js';
export { default as copy } from './copy.js';
export { default as pluralise } from './pluralise.js';
export { default as stash } from './stash.js';
diff --git a/scope/scope-fns.js b/scope/scope-fns.js
index 06e78f2..e220d18 100644
--- a/scope/scope-fns.js
+++ b/scope/scope-fns.js
@@ -52,24 +52,24 @@ export const round = (value, n = 1) => Math.round(value / n) * n;
// literal so they come at no cost to have them in scope by default. Functions
// not already used by literal should be put in scope-extended.js
-export { default as arg } from '../../fn/modules/arg.js';
-export { default as args } from '../../fn/modules/args.js';
-export { default as cache } from '../../fn/modules/cache.js';
-export { default as capture } from '../../fn/modules/capture.js';
-export { default as choose } from '../../fn/modules/choose.js';
-export { default as exec } from '../../fn/modules/exec.js';
-export { default as id } from '../../fn/modules/id.js';
-export { default as isDefined } from '../../fn/modules/is-defined.js';
-export { default as last } from '../../fn/modules/last.js';
-export { default as matches } from '../../fn/modules/matches.js';
-export { default as noop } from '../../fn/modules/noop.js';
-export { default as nothing } from '../../fn/modules/nothing.js';
-export { default as overload } from '../../fn/modules/overload.js';
-export { default as remove } from '../../fn/modules/remove.js';
-export { default as set } from '../../fn/modules/set-path.js';
-export { default as sum } from '../../fn/modules/sum.js';
-export { default as Data } from '../../fn/modules/data.js';
-export { default as Signal } from '../../fn/modules/signal.js';
+export { default as arg } from 'fn/arg.js';
+export { default as args } from 'fn/args.js';
+export { default as cache } from 'fn/cache.js';
+export { default as capture } from 'fn/capture.js';
+export { default as choose } from 'fn/choose.js';
+export { default as exec } from 'fn/exec.js';
+export { default as id } from 'fn/id.js';
+export { default as isDefined } from 'fn/is-defined.js';
+export { default as last } from 'fn/last.js';
+export { default as matches } from 'fn/matches.js';
+export { default as noop } from 'fn/noop.js';
+export { default as nothing } from 'fn/nothing.js';
+export { default as overload } from 'fn/overload.js';
+export { default as remove } from 'fn/remove.js';
+export { default as set } from 'fn/set-path.js';
+export { default as sum } from 'fn/sum.js';
+export { default as Data } from 'fn/data.js';
+export { default as Signal } from 'fn/signal.js';
export { default as location } from './location.js';
diff --git a/scope/stash.js b/scope/stash.js
index 8ee4a79..c798ddd 100644
--- a/scope/stash.js
+++ b/scope/stash.js
@@ -30,7 +30,7 @@ useful for stashing data for event delegation:
```
**/
-import overload from '../../fn/modules/overload.js';
+import overload from 'fn/overload.js';
const $stash = Symbol('stash');
diff --git a/templates/index.html.literal b/templates/index.html.literal
index 99d237f..38e2c66 100644
--- a/templates/index.html.literal
+++ b/templates/index.html.literal
@@ -24,7 +24,7 @@
${ (await comments(
'../modules/renderer/renderer.js',
'../element/element.js',
- '../../fn/modules/nothing.js',
+ 'fn/nothing.js',
))
.filter((doc) => (doc.type === 'selector'))
//.sort(by(get('name')))
@@ -35,7 +35,7 @@
${ (await comments(
'../modules/scope.js',
'../scope/scope-dom.js',
- '../../fn/modules/stream.js',
+ 'fn/stream.js',
))
.filter((doc) => (doc.type === 'function' || doc.type === 'constructor'))
.filter((entry) => ['Stream.of', 'Stream.from', 'Stream.combine', 'Stream.merge', 'clock', 'events', 'observe'].includes(entry.name))
@@ -48,23 +48,23 @@
Functions
${ (await comments(
- '../../fn/modules/by.js',
- '../../fn/modules/clamp.js',
- '../../fn/modules/denormalise.js',
- '../../fn/modules/equals.js',
- '../../fn/modules/id.js',
- '../../fn/modules/is-defined.js',
- '../../fn/modules/last.js',
- '../../fn/modules/matches.js',
- '../../fn/modules/noop.js',
- '../../fn/modules/normalise.js',
- '../../fn/modules/nothing.js',
- '../../fn/modules/overload.js',
- '../../fn/modules/remove.js',
- '../../fn/modules/slugify.js',
- '../../fn/modules/sum.js',
- '../../dom/modules/delegate.js',
- '../../dom/modules/trigger.js',
+ 'fn/by.js',
+ 'fn/clamp.js',
+ 'fn/denormalise.js',
+ 'fn/equals.js',
+ 'fn/id.js',
+ 'fn/is-defined.js',
+ 'fn/last.js',
+ 'fn/matches.js',
+ 'fn/noop.js',
+ 'fn/normalise.js',
+ 'fn/nothing.js',
+ 'fn/overload.js',
+ 'fn/remove.js',
+ 'fn/slugify.js',
+ 'fn/sum.js',
+ 'dom/delegate.js',
+ 'dom/trigger.js',
'../modules/scope.js',
'../scope/scope-dom.js',
'../modules/include.js',
@@ -77,7 +77,7 @@
.map((doc) => include('../documentation/templates/entry.literal', doc)) }
${ (await comments(
- '../../dom/modules/parse-length.js'
+ 'dom/parse-length.js'
))
.filter((doc) => (doc.type === 'function' || doc.type === 'constructor') && doc.name !== 'vmin' && doc.name !== 'vmax')
.map((doc) => include('../documentation/templates/entry.literal', doc)) }
diff --git a/test/routes.html b/test/routes.html
index 5f7274b..8641da8 100644
--- a/test/routes.html
+++ b/test/routes.html
@@ -163,9 +163,9 @@ main-template