@weborigami/origami 0.0.64 → 0.0.65-beta.2

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.
@@ -47,9 +47,9 @@ export { default as inners } from "../src/builtins/@inners.js";
47
47
  export { default as invoke } from "../src/builtins/@invoke.js";
48
48
  export { default as js } from "../src/builtins/@js.js";
49
49
  export { default as json } from "../src/builtins/@json.js";
50
+ export { default as jsonKeys } from "../src/builtins/@jsonKeys.js";
50
51
  export { default as jsonParse } from "../src/builtins/@jsonParse.js";
51
52
  export { default as keys } from "../src/builtins/@keys.js";
52
- export { default as keysJson } from "../src/builtins/@keysJson.js";
53
53
  export { default as length } from "../src/builtins/@length.js";
54
54
  export { default as log } from "../src/builtins/@log.js";
55
55
  export { default as map } from "../src/builtins/@map.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weborigami/origami",
3
- "version": "0.0.64",
3
+ "version": "0.0.65-beta.2",
4
4
  "description": "Web Origami language, CLI, framework, and server",
5
5
  "type": "module",
6
6
  "repository": {
@@ -13,22 +13,22 @@
13
13
  "main": "./exports/exports.js",
14
14
  "types": "./index.ts",
15
15
  "devDependencies": {
16
- "@types/node": "20.14.9",
17
- "typescript": "5.5.3"
16
+ "@types/node": "22.5.4",
17
+ "typescript": "5.5.4"
18
18
  },
19
19
  "dependencies": {
20
- "@weborigami/async-tree": "0.0.64",
21
- "@weborigami/language": "0.0.64",
22
- "@weborigami/types": "0.0.64",
20
+ "@weborigami/async-tree": "0.0.65-beta.2",
21
+ "@weborigami/language": "0.0.65-beta.2",
22
+ "@weborigami/types": "0.0.65-beta.2",
23
23
  "exif-parser": "0.1.12",
24
24
  "graphviz-wasm": "3.0.2",
25
- "highlight.js": "11.9.0",
26
- "marked": "13.0.1",
27
- "marked-gfm-heading-id": "4.0.0",
28
- "marked-highlight": "2.1.3",
29
- "marked-smartypants": "1.1.7",
30
- "sharp": "0.33.4",
31
- "yaml": "2.4.5"
25
+ "highlight.js": "11.10.0",
26
+ "marked": "14.1.1",
27
+ "marked-gfm-heading-id": "4.1.0",
28
+ "marked-highlight": "2.1.4",
29
+ "marked-smartypants": "1.1.8",
30
+ "sharp": "0.33.5",
31
+ "yaml": "2.5.1"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "ori exports/buildExports.js src > exports/exports.js",
@@ -1,4 +1,4 @@
1
- import { Tree, keysJson } from "@weborigami/async-tree";
1
+ import { Tree, jsonKeys } from "@weborigami/async-tree";
2
2
  import { transformObject } from "../common/utilities.js";
3
3
  import getTreeArgument from "../misc/getTreeArgument.js";
4
4
 
@@ -10,7 +10,7 @@ import getTreeArgument from "../misc/getTreeArgument.js";
10
10
  * @this {AsyncTree|null}
11
11
  * @param {Treelike} treelike
12
12
  */
13
- export default async function treeKeysJson(treelike) {
13
+ export default async function jsonKeysBuiltin(treelike) {
14
14
  const tree = await getTreeArgument(
15
15
  this,
16
16
  arguments,
@@ -26,7 +26,7 @@ function KeysJsonTransform(Base) {
26
26
  async get(key) {
27
27
  let value = await super.get(key);
28
28
  if (value === undefined && key === ".keys.json") {
29
- value = await keysJson.stringify(this);
29
+ value = await jsonKeys.stringify(this);
30
30
  } else if (Tree.isTreelike(value)) {
31
31
  const tree = Tree.from(value, { deep: true });
32
32
  value = transformObject(KeysJsonTransform, tree);
@@ -9,7 +9,7 @@ import yaml from "./@yaml.js";
9
9
  * @param {any} [result]
10
10
  */
11
11
  export default async function log(result, object = result) {
12
- let text = await yaml.call(this, object);
12
+ let text = object !== undefined ? await yaml.call(this, object) : "undefined";
13
13
  text = text?.trim();
14
14
  console.log(text);
15
15
  return result;
@@ -1,4 +1,4 @@
1
- import { Tree, keysJson } from "@weborigami/async-tree";
1
+ import { Tree, jsonKeys } from "@weborigami/async-tree";
2
2
  import { transformObject } from "../common/utilities.js";
3
3
  import getTreeArgument from "../misc/getTreeArgument.js";
4
4
  import index from "./@index.js";
@@ -24,7 +24,7 @@ function StaticTransform(Base) {
24
24
  if (value === undefined && key === "index.html") {
25
25
  value = index.call(this, this);
26
26
  } else if (value === undefined && key === ".keys.json") {
27
- value = keysJson.stringify(this);
27
+ value = jsonKeys.stringify(this);
28
28
  } else if (Tree.isAsyncTree(value)) {
29
29
  value = transformObject(StaticTransform, value);
30
30
  }
@@ -1,4 +1,4 @@
1
- import { Tree, keysJson } from "@weborigami/async-tree";
1
+ import { Tree, jsonKeys } from "@weborigami/async-tree";
2
2
  import index from "../builtins/@index.js";
3
3
  import { isTransformApplied, transformObject } from "../common/utilities.js";
4
4
 
@@ -39,7 +39,7 @@ export default function ExplorableSiteTransform(Base) {
39
39
  // This tree is both the function call target and the parameter.
40
40
  value = await index.call(this, this);
41
41
  } else if (key === ".keys.json") {
42
- value = await keysJson.stringify(this);
42
+ value = await jsonKeys.stringify(this);
43
43
  }
44
44
  }
45
45
 
@@ -44,7 +44,7 @@ export default async function constructResponse(request, resource) {
44
44
 
45
45
  if (!url.pathname.endsWith("/") && Tree.isTreelike(resource)) {
46
46
  // Treelike resource: redirect to its index page.
47
- const Location = `${request.url}/`;
47
+ const Location = `${url.pathname}/`;
48
48
  return new Response("ok", {
49
49
  headers: {
50
50
  Location,
@@ -1,4 +1,4 @@
1
- import { DeepObjectTree, Tree, keysFromPath } from "@weborigami/async-tree";
1
+ import { ObjectTree, Tree, keysFromPath } from "@weborigami/async-tree";
2
2
  import { formatError } from "@weborigami/language";
3
3
  import { ServerResponse } from "node:http";
4
4
  import constructResponse from "./constructResponse.js";
@@ -51,11 +51,17 @@ function extendTreeScopeWithParams(tree, url) {
51
51
  return tree;
52
52
  }
53
53
 
54
- const paramTree = new DeepObjectTree({
54
+ const paramTree = new ObjectTree({
55
55
  "@params": params,
56
56
  });
57
- paramTree.parent = tree;
58
- return paramTree;
57
+
58
+ // Create a new tree that's like the original one, but has the parameters in
59
+ // its parent hierarchy.
60
+ const extendedTree = Object.create(tree);
61
+ const realParent = tree.parent;
62
+ paramTree.parent = realParent;
63
+ extendedTree.parent = paramTree;
64
+ return extendedTree;
59
65
  }
60
66
 
61
67
  /**