@weborigami/origami 0.0.41 → 0.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/exports/exports.js +32 -34
- package/package.json +4 -4
- package/src/builtins/@arrows.js +1 -1
- package/src/builtins/@builtins.js +2 -5
- package/src/builtins/@cache.js +1 -1
- package/src/builtins/{@tree/concat.js → @concat.js} +3 -3
- package/src/builtins/@copy.js +2 -2
- package/src/builtins/{@tree/count.js → @count.js} +3 -3
- package/src/builtins/@crawl.js +1 -1
- package/src/builtins/@debug.js +1 -1
- package/src/builtins/{@tree/defineds.js → @defineds.js} +2 -2
- package/src/builtins/@document.js +1 -1
- package/src/builtins/{@tree/exceptions.js → @exceptions.js} +4 -4
- package/src/builtins/@explore.js +2 -5
- package/src/builtins/@files.js +1 -1
- package/src/builtins/@filter.js +1 -1
- package/src/builtins/{@tree/first.js → @first.js} +3 -3
- package/src/builtins/{@tree/fn.js → @fnTree.js} +7 -7
- package/src/builtins/@globs.js +1 -1
- package/src/builtins/{@tree/groupBy.js → @groupBy.js} +6 -6
- package/src/builtins/@help.js +1 -1
- package/src/builtins/@http.js +1 -1
- package/src/builtins/@https.js +1 -1
- package/src/builtins/@if.js +1 -1
- package/src/builtins/@image/format.js +36 -2
- package/src/builtins/@image/resize.js +30 -2
- package/src/builtins/@index.js +1 -1
- package/src/builtins/@inherited.js +1 -1
- package/src/builtins/@inline.js +1 -1
- package/src/builtins/{@tree/inners.js → @inners.js} +3 -3
- package/src/builtins/@invoke.js +1 -1
- package/src/builtins/{@tree/isAsyncTree.js → @isAsyncTree.js} +1 -1
- package/src/builtins/@json.js +1 -1
- package/src/builtins/{@tree/keys.js → @keys.js} +3 -3
- package/src/builtins/{@tree/keysJson.js → @keysJson.js} +3 -3
- package/src/builtins/@loaders/ori.js +18 -18
- package/src/builtins/@map.js +13 -1
- package/src/builtins/@match.js +1 -1
- package/src/builtins/{@tree/merge.js → @merge.js} +2 -2
- package/src/builtins/{@tree/mergeDeep.js → @mergeDeep.js} +3 -3
- package/src/builtins/@once.js +1 -1
- package/src/builtins/@ori.js +1 -1
- package/src/builtins/@pack.js +1 -1
- package/src/builtins/{@tree/parent.js → @parent.js} +3 -3
- package/src/builtins/{@tree/paths.js → @paths.js} +3 -3
- package/src/builtins/@perf.js +18 -0
- package/src/builtins/{@tree/plain.js → @plain.js} +3 -3
- package/src/builtins/@project.js +1 -1
- package/src/builtins/@redirect.js +8 -0
- package/src/builtins/{@tree/reverse.js → @reverse.js} +3 -3
- package/src/builtins/@rss.js +1 -1
- package/src/builtins/@scope/extend.js +6 -6
- package/src/builtins/@scope/get.js +1 -1
- package/src/builtins/@scope/set.js +4 -4
- package/src/builtins/@serve.js +1 -1
- package/src/builtins/{@tree/setDeep.js → @setDeep.js} +1 -1
- package/src/builtins/{@tree/shuffle.js → @shuffle.js} +5 -5
- package/src/builtins/{@tree/sitemap.js → @sitemap.js} +5 -5
- package/src/builtins/{@tree/sort.js → @sort.js} +4 -4
- package/src/builtins/{@tree/sortBy.js → @sortBy.js} +6 -6
- package/src/builtins/{@tree/static.js → @static.js} +5 -5
- package/src/builtins/@svg.js +2 -2
- package/src/builtins/{@tree/table.js → @table.js} +3 -3
- package/src/builtins/{@tree/take.js → @take.js} +3 -3
- package/src/builtins/{@tree/from.js → @tree.js} +3 -3
- package/src/builtins/@treeHttp.js +1 -1
- package/src/builtins/@treeHttps.js +1 -1
- package/src/builtins/@unpack.js +1 -1
- package/src/builtins/{@tree/values.js → @values.js} +3 -3
- package/src/builtins/{@tree/valuesDeep.js → @valuesDeep.js} +3 -3
- package/src/builtins/@watch.js +1 -1
- package/src/builtins/@with.js +1 -1
- package/src/builtins/@yaml.js +1 -1
- package/src/builtins/{@tree/map.d.ts → map.d.ts} +1 -1
- package/src/cli/cli.js +2 -15
- package/src/common/ExplorableSiteTransform.js +6 -4
- package/src/misc/assertScopeIsDefined.js +2 -2
- package/src/misc/getTreeArgument.js +16 -6
- package/src/{builtins/@tree/dot.js → misc/treeDot.js} +3 -7
- package/src/server/constructResponse.js +126 -0
- package/src/server/mediaTypes.js +0 -16
- package/src/server/server.js +62 -131
- package/src/builtins/@tree/flowSvg.js +0 -55
- package/src/builtins/@tree/fromJson.js +0 -6
- package/src/builtins/@tree/fromYaml.js +0 -24
- package/src/builtins/@tree/nextKey.js +0 -29
- package/src/builtins/@tree/previousKey.js +0 -29
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import graphviz from "graphviz-wasm";
|
|
2
|
-
|
|
3
|
-
let graphvizLoaded = false;
|
|
4
|
-
|
|
5
|
-
export default async function flowSvg(flow) {
|
|
6
|
-
if (!graphvizLoaded) {
|
|
7
|
-
await graphviz.loadWASM();
|
|
8
|
-
graphvizLoaded = true;
|
|
9
|
-
}
|
|
10
|
-
const dot = flowDot(flow);
|
|
11
|
-
const svg = await graphviz.layout(dot, "svg");
|
|
12
|
-
return svg;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function flowDot(flow) {
|
|
16
|
-
const nodes = [];
|
|
17
|
-
const edges = [];
|
|
18
|
-
for (const [key, record] of Object.entries(flow)) {
|
|
19
|
-
const dependencies = record.dependencies ?? [];
|
|
20
|
-
let label = record.label ?? key;
|
|
21
|
-
if (record.undefined) {
|
|
22
|
-
label += " (?)";
|
|
23
|
-
}
|
|
24
|
-
const virtualNode = dependencies.length > 0;
|
|
25
|
-
const url = record.url ?? key;
|
|
26
|
-
const nodeLabel = `label="${label}"`;
|
|
27
|
-
const nodeUrl = `URL=".scope/${url}"`;
|
|
28
|
-
const nodeShape = record.undefined ? `shape="none"` : "";
|
|
29
|
-
const nodeStyle = virtualNode ? `style="dashed"` : null;
|
|
30
|
-
const attributes = [nodeLabel, nodeShape, nodeStyle, nodeUrl].filter(
|
|
31
|
-
(attribute) => attribute
|
|
32
|
-
);
|
|
33
|
-
const nodeDot = ` "${key}" [${attributes.join("; ")}];`;
|
|
34
|
-
nodes.push(nodeDot);
|
|
35
|
-
|
|
36
|
-
for (const dependency of dependencies) {
|
|
37
|
-
edges.push(` "${dependency}" -> "${key}";`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return `digraph dataflow {
|
|
42
|
-
nodesep=1;
|
|
43
|
-
rankdir=LR;
|
|
44
|
-
ranksep=1.5;
|
|
45
|
-
node [color="gray70"; fillcolor="white"; fontname="Helvetica"; fontsize="10"; nojustify="true"; style="filled"; shape="box"];
|
|
46
|
-
edge [arrowhead="onormal"; arrowsize="0.75"; color="gray60"; fontname="Helvetica"; fontsize="10"; labeldistance="5"];
|
|
47
|
-
|
|
48
|
-
${nodes.join("\n")}
|
|
49
|
-
|
|
50
|
-
${edges.join("\n")}
|
|
51
|
-
}`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// flowSvg.usage = `flowSvg <dataflow>\tRenders the output of dataflow() as an SVG`;
|
|
55
|
-
// flowSvg.documentation = "https://weborigami.org/cli/builtins.html#flowSvg";
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Tree } from "@weborigami/async-tree";
|
|
2
|
-
import { Scope } from "@weborigami/language";
|
|
3
|
-
import * as serialize from "../../common/serialize.js";
|
|
4
|
-
import assertScopeIsDefined from "../../misc/assertScopeIsDefined.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @typedef {import("@weborigami/types").AsyncTree} AsyncTree
|
|
8
|
-
* @typedef {import("@weborigami/async-tree").Treelike} Treelike
|
|
9
|
-
* @typedef {import("@weborigami/async-tree").StringLike} StringLike
|
|
10
|
-
*
|
|
11
|
-
* @param {StringLike} text
|
|
12
|
-
* @this {AsyncTree|null}
|
|
13
|
-
*/
|
|
14
|
-
export default async function fromYaml(text) {
|
|
15
|
-
assertScopeIsDefined(this);
|
|
16
|
-
let result = text ? serialize.parseYaml(String(text)) : undefined;
|
|
17
|
-
if (this && Tree.isAsyncTree(result)) {
|
|
18
|
-
result = Scope.treeWithScope(result, this);
|
|
19
|
-
}
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
fromYaml.usage = `fromYaml <text>\tParse text as YAML`;
|
|
24
|
-
fromYaml.documentation = "https://weborigami.org/cli/builtins.html#fromYaml";
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Tree } from "@weborigami/async-tree";
|
|
2
|
-
import assertScopeIsDefined from "../../misc/assertScopeIsDefined.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Returns the key after the indicated key.
|
|
6
|
-
*
|
|
7
|
-
* @typedef {import("@weborigami/types").AsyncTree} AsyncTree
|
|
8
|
-
* @typedef {import("@weborigami/async-tree").Treelike} Treelike
|
|
9
|
-
* @this {AsyncTree|null}
|
|
10
|
-
* @param {Treelike} treelike
|
|
11
|
-
* @param {any} key
|
|
12
|
-
*/
|
|
13
|
-
export default async function nextKey(treelike, key) {
|
|
14
|
-
assertScopeIsDefined(this);
|
|
15
|
-
const tree = Tree.from(treelike);
|
|
16
|
-
let returnNextKey = false;
|
|
17
|
-
for (const treeKey of await tree.keys()) {
|
|
18
|
-
if (returnNextKey) {
|
|
19
|
-
return treeKey;
|
|
20
|
-
}
|
|
21
|
-
if (treeKey === key) {
|
|
22
|
-
returnNextKey = true;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
nextKey.usage = `nextKey <tree>, <key>\tReturns the key after the indicated key`;
|
|
29
|
-
nextKey.documentation = "https://weborigami.org/cli/builtins.html#nextKey";
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Tree } from "@weborigami/async-tree";
|
|
2
|
-
import assertScopeIsDefined from "../../misc/assertScopeIsDefined.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Returns the key before the indicated key.
|
|
6
|
-
*
|
|
7
|
-
* @typedef {import("@weborigami/types").AsyncTree} AsyncTree
|
|
8
|
-
* @typedef {import("@weborigami/async-tree").Treelike} Treelike
|
|
9
|
-
*
|
|
10
|
-
* @param {Treelike} treelike
|
|
11
|
-
* @param {any} key
|
|
12
|
-
* @this {AsyncTree|null}
|
|
13
|
-
*/
|
|
14
|
-
export default async function previousKey(treelike, key) {
|
|
15
|
-
assertScopeIsDefined(this);
|
|
16
|
-
const tree = Tree.from(treelike);
|
|
17
|
-
let previousKey = undefined;
|
|
18
|
-
for (const treeKey of await tree.keys()) {
|
|
19
|
-
if (treeKey === key) {
|
|
20
|
-
return previousKey;
|
|
21
|
-
}
|
|
22
|
-
previousKey = treeKey;
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
previousKey.usage = `previousKey <tree>, <key>\tReturns the key before the indicated key`;
|
|
28
|
-
previousKey.documentation =
|
|
29
|
-
"https://weborigami.org/cli/builtins.html#previousKey";
|