[njs] Types: added forgotten ts types for XML modification API.
Dmitry Volyntsev
xeioex at nginx.com
Thu Apr 27 04:06:05 UTC 2023
details: https://hg.nginx.org/njs/rev/5f18ec3b9e53
branches:
changeset: 2091:5f18ec3b9e53
user: Dmitry Volyntsev <xeioex at nginx.com>
date: Wed Apr 26 19:38:21 2023 -0700
description:
Types: added forgotten ts types for XML modification API.
diffstat:
test/ts/test.ts | 17 ++++++-
ts/njs_modules/xml.d.ts | 118 +++++++++++++++++++++--------------------------
2 files changed, 69 insertions(+), 66 deletions(-)
diffs (181 lines):
diff -r 2efa017faaed -r 5f18ec3b9e53 test/ts/test.ts
--- a/test/ts/test.ts Wed Apr 26 19:38:13 2023 -0700
+++ b/test/ts/test.ts Wed Apr 26 19:38:21 2023 -0700
@@ -174,11 +174,24 @@ function xml_module(str: NjsByteString)
children = node.$tags;
selectedChildren = node.$tags$xxx;
- node?.xxx?.yyy?.$attr$zzz;
+ node?.$tag$xxx?.$tag$yyy?.$attr$zzz;
let buf:Buffer = xml.exclusiveC14n(node);
- buf = xml.exclusiveC14n(doc, node.xxx, false);
+ buf = xml.exclusiveC14n(doc, node.$tag$xxx, false);
buf = xml.exclusiveC14n(node, null, true, "aa bb");
+
+ node.setText("xxx");
+ node.removeText();
+ node.setText(null);
+
+ node.addChild(node);
+ node.removeChildren('xx');
+
+ node.removeAttribute('xx');
+ node.removeAllAttributes();
+ node.setAttribute('xx', 'yy');
+ node.setAttribute('xx', null);
+ node.$tags = [node, node];
}
function crypto_module(str: NjsByteString) {
diff -r 2efa017faaed -r 5f18ec3b9e53 ts/njs_modules/xml.d.ts
--- a/ts/njs_modules/xml.d.ts Wed Apr 26 19:38:13 2023 -0700
+++ b/ts/njs_modules/xml.d.ts Wed Apr 26 19:38:21 2023 -0700
@@ -2,61 +2,6 @@
declare module "xml" {
- type XMLTagName =
- | `_${string}`
- | `a${string}`
- | `b${string}`
- | `c${string}`
- | `d${string}`
- | `e${string}`
- | `f${string}`
- | `g${string}`
- | `h${string}`
- | `i${string}`
- | `j${string}`
- | `k${string}`
- | `l${string}`
- | `m${string}`
- | `n${string}`
- | `o${string}`
- | `p${string}`
- | `q${string}`
- | `r${string}`
- | `s${string}`
- | `t${string}`
- | `u${string}`
- | `v${string}`
- | `w${string}`
- | `x${string}`
- | `y${string}`
- | `z${string}`
- | `A${string}`
- | `B${string}`
- | `C${string}`
- | `D${string}`
- | `E${string}`
- | `F${string}`
- | `G${string}`
- | `H${string}`
- | `I${string}`
- | `J${string}`
- | `K${string}`
- | `L${string}`
- | `M${string}`
- | `N${string}`
- | `O${string}`
- | `P${string}`
- | `Q${string}`
- | `R${string}`
- | `S${string}`
- | `T${string}`
- | `U${string}`
- | `V${string}`
- | `W${string}`
- | `X${string}`
- | `Y${string}`
- | `Z${string}`;
-
export interface XMLDoc {
/**
* The doc's root node.
@@ -66,17 +11,68 @@ declare module "xml" {
/**
* The doc's root by its name or undefined.
*/
- readonly [rootTagName: XMLTagName]: XMLNode | undefined;
+ readonly [rootTagName: string]: XMLNode | undefined;
}
export interface XMLNode {
/**
- * node.$attr$xxx - the node's attribute value of "xxx".
+ * Adds a child node. Node is recursively copied before adding.
+ * @param node - XMLNode to be added.
+ * @since 0.7.11.
+ */
+ addChild(node: XMLNode): void;
+
+ /**
+ * node.$attr$xxx - value of the node's attribute "xxx".
* @since 0.7.11 the property is writable.
*/
[key: `$attr$${string}`]: string | undefined;
/**
+ * Removes attribute by name.
+ * @param name - name of the attribute to remove.
+ * @since 0.7.11.
+ */
+ removeAttribute(name: string): void;
+
+ /**
+ * Removes all the attribute of the node.
+ * @since 0.7.11.
+ */
+ removeAllAttributes(): void;
+
+ /**
+ * Removes all the children tags named tag_name.
+ * @param tag_name - name of the children's tags to remove.
+ * If tag_name is absent all children tags are removed.
+ * @since 0.7.11.
+ */
+ removeChildren(tag_name?:string): void;
+
+ /**
+ * Removes the text value of the node.
+ * @since 0.7.11.
+ */
+ removeText(): void;
+
+ /**
+ * Sets a value for the attribute.
+ * @param attr_name - name of the attribute to set.
+ * @param value - value of the attribute to set. When value is null
+ * the attribute is removed.
+ * @since 0.7.11.
+ */
+ setAttribute(attr_name: string, value: string | null): void;
+
+ /**
+ * Sets a text value for the node.
+ * @param text - a value to set as a text. If value is null the
+ * node's text is deleted.
+ * @since 0.7.11.
+ */
+ setText(text:string | null): void;
+
+ /**
* node.$attrs - an XMLAttr wrapper object for all the attributes
* of the node.
*/
@@ -118,13 +114,7 @@ declare module "xml" {
/**
* node.$tags - all the node's children tags.
*/
- readonly $tags: XMLNode[] | undefined;
-
- /**
- * node.xxx is the same as node.$tag$xxx.
- * @since 0.7.11 the property is writable.
- */
- [key: XMLTagName]: XMLNode | undefined;
+ $tags: XMLNode[] | undefined;
}
export interface XMLAttr {
More information about the nginx-devel
mailing list