Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@journeyapps/core-xml

Package Overview
Dependencies
Maintainers
2
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@journeyapps/core-xml - npm Package Compare versions

Comparing version 0.0.0-dev.a60b154.6665eb3 to 0.0.0-dev.ae608c2.224c284

dist/@types/src/serialize.d.ts

2

dist/@types/src/pretty.d.ts

@@ -14,3 +14,3 @@ import { XMLNode, XMLDocument } from '@journeyapps/domparser/types';

export declare function pretty(document: XMLDocument, options?: Partial<PrettyOptions>): XMLDocument;
export declare function prettyText(document: XMLDocument, options?: Partial<PrettyOptions>): string;
export declare function prettyText(node: XMLDocument | XMLNode, options?: Partial<PrettyOptions>): string;
export declare function serializeToString(node: XMLNode): string;

@@ -17,0 +17,0 @@ /**

@@ -1,7 +0,11 @@

import { XMLElement, XMLNode, IterableNodeList } from '@journeyapps/domparser/types';
import { XMLElement, XMLNode, IterableNodeList, XMLCharacterNode } from '@journeyapps/domparser/types';
export declare const ELEMENT_NODE = 1;
export declare const ATTRIBUTE_NODE = 2;
export declare const TEXT_NODE = 3;
export declare const DOCUMENT_NODE = 9;
export declare function isAttribute(node: unknown): node is AttributeNode;
export declare function isElement(node: unknown): node is XMLElement;
export declare function isText(node: unknown): node is XMLCharacterNode;
export declare function isCdataNode(node: unknown): node is XMLCharacterNode;
export declare function isCommentNode(node: unknown): node is XMLCharacterNode;
/**

@@ -13,2 +17,3 @@ * Subset of the fields we're interested in.

name: string;
value: string;
}

@@ -18,2 +23,6 @@ /**

*
* If an attribute value is either null or matches the default, and the current
* element attribute value is also either null or matches the default, it is preserved.
* If the current element attribute value is anything else, it is removed.
*
* @param element - The element to set the attributes on

@@ -23,5 +32,8 @@ * @param attributes - The attributes to set.

* If an attribute is present in the element but not this map, it is preserved.
* @param defaults - Default attribute values, which are treated the same as not present.
*/
export declare function setAttributes(element: XMLElement, attributes: {
[key: string]: string | null;
}, defaults?: {
[key: string]: string;
}): void;

@@ -28,0 +40,0 @@ /**

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const xml_1 = require("./xml");
const types_1 = require("@journeyapps/domparser/types");
const utils_1 = require("./utils");
const serialize_1 = require("./serialize");
/**

@@ -18,3 +19,3 @@ * Given a document, return a copy that is formatted.

const child = document.childNodes.item(i);
if (isText(child)) {
if (utils_1.isText(child)) {
// workaround for xmldom that has text nodes in the document

@@ -28,13 +29,25 @@ continue;

exports.pretty = pretty;
function prettyText(document, options) {
const doc = pretty(document, options);
// TODO: close tags with " />".
return serializeToString(doc);
function isDocument(document) {
return document.nodeType == types_1.DOCUMENT_NODE;
}
function prettyText(node, options) {
if (isDocument(node)) {
const doc = pretty(node, options);
// TODO: close tags with " />".
return serializeToString(doc);
}
else {
const actualOptions = {
indentSpaces: 4,
...options
};
const prettyElement = prettyNode(node.ownerDocument, node, actualOptions, 0);
return serializeToString(prettyElement);
}
}
exports.prettyText = prettyText;
function serializeToString(node) {
const { serializer } = xml_1.getParser();
if (node.nodeType != types_1.DOCUMENT_NODE) {
// Not a document - use the default
return serializer.serializeToString(node);
return serialize_1.serializer.serializeToString(node);
}

@@ -54,9 +67,9 @@ // Whitespace characters between processing instructions are lost, and browsers serialize them differently.

const children = node.childNodes;
for (var i = 0; i < children.length; i++) {
for (let i = 0; i < children.length; i++) {
const child = children[i];
if (isText(child)) {
if (utils_1.isText(child)) {
// Workaround for xmldom inserting extra newlines
continue;
}
const part = serializer.serializeToString(children[i]);
const part = serialize_1.serializer.serializeToString(child);
result += part;

@@ -84,8 +97,2 @@ result += '\n';

exports.stripWhitespace = stripWhitespace;
function isElement(node) {
return node.nodeType == types_1.ELEMENT_NODE;
}
function isText(node) {
return node.nodeType == types_1.TEXT_NODE;
}
function indent(n, options) {

@@ -100,5 +107,12 @@ let r = '\n';

const DOUBLE_NEW_LINE = {};
function removeFinalNewline(text) {
const lines = text.split('\n');
if (/^\s*$/.test(lines[lines.length - 1])) {
lines.pop();
}
return lines.join('\n');
}
function prettyNode(doc, node, options, level) {
let newNode = node.cloneNode(false);
if (isText(node)) {
if (utils_1.isText(node)) {
const trimmedText = node.nodeValue.trim();

@@ -121,3 +135,3 @@ const newLines = node.nodeValue.split('\n').length - 1;

}
else if (isElement(node)) {
else if (utils_1.isElement(node)) {
let filteredChildren = [];

@@ -129,3 +143,4 @@ for (let i = 0; i < node.childNodes.length; i++) {

filteredChildren = filteredChildren.filter(node => node != null);
if (filteredChildren.length == 1 && isText(filteredChildren[0])) {
if (filteredChildren.length == 1 && utils_1.isText(filteredChildren[0])) {
// Text on its own. Preserve whitespace.
newNode.appendChild(filteredChildren[0]);

@@ -155,6 +170,16 @@ }

else {
if (level != null) {
newNode.appendChild(doc.createTextNode(indent(level + 1, options)));
if (utils_1.isText(child)) {
// Text in mixed-mode.
// We currently preserve whitespace _before_ the text element, but not _after_.
// If the last line is a blank line, remove it, and replace it with our indentation.
let text = child.nodeValue;
newNode.appendChild(doc.createTextNode(removeFinalNewline(text)));
}
newNode.appendChild(child);
else {
if (level != null) {
const indentation = indent(level + 1, options);
newNode.appendChild(doc.createTextNode(indentation));
}
newNode.appendChild(child);
}
}

@@ -161,0 +186,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("@journeyapps/domparser/types");
// From: http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247

@@ -9,2 +10,3 @@ // These constants are also defined one Node, but it's better to not

exports.TEXT_NODE = 3;
exports.DOCUMENT_NODE = 9;
function isAttribute(node) {

@@ -20,5 +22,21 @@ return (node.nodeType == exports.ATTRIBUTE_NODE ||

exports.isElement = isElement;
function isText(node) {
return node.nodeType == exports.TEXT_NODE;
}
exports.isText = isText;
function isCdataNode(node) {
return node.nodeType == types_1.CDATA_SECTION_NODE;
}
exports.isCdataNode = isCdataNode;
function isCommentNode(node) {
return node.nodeType == types_1.COMMENT_NODE;
}
exports.isCommentNode = isCommentNode;
/**
* Set or clear a set of attributes.
*
* If an attribute value is either null or matches the default, and the current
* element attribute value is also either null or matches the default, it is preserved.
* If the current element attribute value is anything else, it is removed.
*
* @param element - The element to set the attributes on

@@ -28,8 +46,20 @@ * @param attributes - The attributes to set.

* If an attribute is present in the element but not this map, it is preserved.
* @param defaults - Default attribute values, which are treated the same as not present.
*/
function setAttributes(element, attributes) {
function setAttributes(element, attributes, defaults) {
if (defaults == null) {
defaults = {};
}
for (let key in attributes) {
const value = attributes[key];
if (value == null) {
element.removeAttribute(key);
const defaultValue = defaults[key];
if (value == null || value === defaultValue) {
if (element.getAttribute(key) !== defaultValue) {
// The attribute is not currently equal to the default value, so we remove it.
element.removeAttribute(key);
}
else {
// The element currently contains the default value explicitly.
// We preserve it.
}
}

@@ -36,0 +66,0 @@ else {

@@ -160,3 +160,9 @@ "use strict";

if (element.getAttributeNode(attributeName)) {
return { ownerElement: element, name: attributeName };
return {
ownerElement: element,
name: attributeName,
get value() {
return element.getAttribute(attributeName);
}
};
}

@@ -163,0 +169,0 @@ else {

{
"name": "@journeyapps/core-xml",
"version": "0.0.0-dev.a60b154.6665eb3",
"version": "0.0.0-dev.ae608c2.224c284",
"description": "Journey JS library",

@@ -18,3 +18,3 @@ "main": "./dist/src/node.js",

"devDependencies": {
"@journeyapps/core-test-helpers": "0.0.0-dev.a60b154.6665eb3"
"@journeyapps/core-test-helpers": "0.0.0-dev.ae608c2.224c284"
},

@@ -26,3 +26,3 @@ "files": [

],
"gitHead": "412bef70c5f3bf3a45658b3c438ab079c988d3ba"
"gitHead": "e1cedf0b9f9515cbca7436ed517e9bbdad9560b4"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc