@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.
Files changed (87) hide show
  1. package/exports/exports.js +32 -34
  2. package/package.json +4 -4
  3. package/src/builtins/@arrows.js +1 -1
  4. package/src/builtins/@builtins.js +2 -5
  5. package/src/builtins/@cache.js +1 -1
  6. package/src/builtins/{@tree/concat.js → @concat.js} +3 -3
  7. package/src/builtins/@copy.js +2 -2
  8. package/src/builtins/{@tree/count.js → @count.js} +3 -3
  9. package/src/builtins/@crawl.js +1 -1
  10. package/src/builtins/@debug.js +1 -1
  11. package/src/builtins/{@tree/defineds.js → @defineds.js} +2 -2
  12. package/src/builtins/@document.js +1 -1
  13. package/src/builtins/{@tree/exceptions.js → @exceptions.js} +4 -4
  14. package/src/builtins/@explore.js +2 -5
  15. package/src/builtins/@files.js +1 -1
  16. package/src/builtins/@filter.js +1 -1
  17. package/src/builtins/{@tree/first.js → @first.js} +3 -3
  18. package/src/builtins/{@tree/fn.js → @fnTree.js} +7 -7
  19. package/src/builtins/@globs.js +1 -1
  20. package/src/builtins/{@tree/groupBy.js → @groupBy.js} +6 -6
  21. package/src/builtins/@help.js +1 -1
  22. package/src/builtins/@http.js +1 -1
  23. package/src/builtins/@https.js +1 -1
  24. package/src/builtins/@if.js +1 -1
  25. package/src/builtins/@image/format.js +36 -2
  26. package/src/builtins/@image/resize.js +30 -2
  27. package/src/builtins/@index.js +1 -1
  28. package/src/builtins/@inherited.js +1 -1
  29. package/src/builtins/@inline.js +1 -1
  30. package/src/builtins/{@tree/inners.js → @inners.js} +3 -3
  31. package/src/builtins/@invoke.js +1 -1
  32. package/src/builtins/{@tree/isAsyncTree.js → @isAsyncTree.js} +1 -1
  33. package/src/builtins/@json.js +1 -1
  34. package/src/builtins/{@tree/keys.js → @keys.js} +3 -3
  35. package/src/builtins/{@tree/keysJson.js → @keysJson.js} +3 -3
  36. package/src/builtins/@loaders/ori.js +18 -18
  37. package/src/builtins/@map.js +13 -1
  38. package/src/builtins/@match.js +1 -1
  39. package/src/builtins/{@tree/merge.js → @merge.js} +2 -2
  40. package/src/builtins/{@tree/mergeDeep.js → @mergeDeep.js} +3 -3
  41. package/src/builtins/@once.js +1 -1
  42. package/src/builtins/@ori.js +1 -1
  43. package/src/builtins/@pack.js +1 -1
  44. package/src/builtins/{@tree/parent.js → @parent.js} +3 -3
  45. package/src/builtins/{@tree/paths.js → @paths.js} +3 -3
  46. package/src/builtins/@perf.js +18 -0
  47. package/src/builtins/{@tree/plain.js → @plain.js} +3 -3
  48. package/src/builtins/@project.js +1 -1
  49. package/src/builtins/@redirect.js +8 -0
  50. package/src/builtins/{@tree/reverse.js → @reverse.js} +3 -3
  51. package/src/builtins/@rss.js +1 -1
  52. package/src/builtins/@scope/extend.js +6 -6
  53. package/src/builtins/@scope/get.js +1 -1
  54. package/src/builtins/@scope/set.js +4 -4
  55. package/src/builtins/@serve.js +1 -1
  56. package/src/builtins/{@tree/setDeep.js → @setDeep.js} +1 -1
  57. package/src/builtins/{@tree/shuffle.js → @shuffle.js} +5 -5
  58. package/src/builtins/{@tree/sitemap.js → @sitemap.js} +5 -5
  59. package/src/builtins/{@tree/sort.js → @sort.js} +4 -4
  60. package/src/builtins/{@tree/sortBy.js → @sortBy.js} +6 -6
  61. package/src/builtins/{@tree/static.js → @static.js} +5 -5
  62. package/src/builtins/@svg.js +2 -2
  63. package/src/builtins/{@tree/table.js → @table.js} +3 -3
  64. package/src/builtins/{@tree/take.js → @take.js} +3 -3
  65. package/src/builtins/{@tree/from.js → @tree.js} +3 -3
  66. package/src/builtins/@treeHttp.js +1 -1
  67. package/src/builtins/@treeHttps.js +1 -1
  68. package/src/builtins/@unpack.js +1 -1
  69. package/src/builtins/{@tree/values.js → @values.js} +3 -3
  70. package/src/builtins/{@tree/valuesDeep.js → @valuesDeep.js} +3 -3
  71. package/src/builtins/@watch.js +1 -1
  72. package/src/builtins/@with.js +1 -1
  73. package/src/builtins/@yaml.js +1 -1
  74. package/src/builtins/{@tree/map.d.ts → map.d.ts} +1 -1
  75. package/src/cli/cli.js +2 -15
  76. package/src/common/ExplorableSiteTransform.js +6 -4
  77. package/src/misc/assertScopeIsDefined.js +2 -2
  78. package/src/misc/getTreeArgument.js +16 -6
  79. package/src/{builtins/@tree/dot.js → misc/treeDot.js} +3 -7
  80. package/src/server/constructResponse.js +126 -0
  81. package/src/server/mediaTypes.js +0 -16
  82. package/src/server/server.js +62 -131
  83. package/src/builtins/@tree/flowSvg.js +0 -55
  84. package/src/builtins/@tree/fromJson.js +0 -6
  85. package/src/builtins/@tree/fromYaml.js +0 -24
  86. package/src/builtins/@tree/nextKey.js +0 -29
  87. 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,6 +0,0 @@
1
- export default async function fromJson(text) {
2
- return text ? JSON.parse(text) : undefined;
3
- }
4
-
5
- fromJson.usage = `fromJson <text>\tParse text as JSON`;
6
- fromJson.documentation = "https://weborigami.org/cli/builtins.html#fromJson";
@@ -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";