Socket
Socket
Sign inDemoInstall

slashes

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slashes - npm Package Compare versions

Comparing version 3.0.2 to 3.0.3

.browserslistrc

57

lib/commonjs/add-slashes.js
"use strict";
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addSlashes = void 0;
var get_escaped_any_1 = require("./get-escaped-any");
var get_escaped_json_unsafe_1 = require("./get-escaped-json-unsafe");
var addSlashes = function (str, _a) {
var e_1, _b;
var _c = _a === void 0 ? {} : _a, _d = _c.getEscaped, getEscaped = _d === void 0 ? get_escaped_json_unsafe_1.getEscapedJsonUnsafe : _d;
var result = '';
try {
for (var str_1 = __values(str), str_1_1 = str_1.next(); !str_1_1.done; str_1_1 = str_1.next()) {
var char = str_1_1.value;
if (char === '\\') {
result += '\\\\';
continue;
}
var escaped = getEscaped(char);
if (!escaped) {
result += char;
}
else if (escaped === true) {
result += (0, get_escaped_any_1.getEscapedAny)(char);
}
else {
result += escaped;
}
const get_escaped_any_1 = require("./get-escaped-any");
const get_escaped_json_unsafe_1 = require("./get-escaped-json-unsafe");
const addSlashes = (str, { getEscaped = get_escaped_json_unsafe_1.getEscapedJsonUnsafe } = {}) => {
let result = '';
for (const char of str) {
if (char === '\\') {
result += '\\\\';
continue;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (str_1_1 && !str_1_1.done && (_b = str_1.return)) _b.call(str_1);
const escaped = getEscaped(char);
if (!escaped) {
result += char;
}
finally { if (e_1) throw e_1.error; }
else if (escaped === true) {
result += (0, get_escaped_any_1.getEscapedAny)(char);
}
else {
result += escaped;
}
}

@@ -47,0 +24,0 @@ return result;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEscapedAny = void 0;
var getEscapedAny = function (char) {
const getEscapedAny = (char) => {
switch (char) {

@@ -16,8 +16,8 @@ case '\b':

return '\\t';
case "\"":
return "\\".concat(char);
case `"`:
return `\\${char}`;
}
var unicode = '';
for (var index = char.length - 1; index >= 0; index--) {
unicode = "\\u".concat(('000' + char.charCodeAt(index).toString(16)).slice(-4)).concat(unicode);
let unicode = '';
for (let index = char.length - 1; index >= 0; index--) {
unicode = `\\u${('000' + char.charCodeAt(index).toString(16)).slice(-4)}${unicode}`;
}

@@ -24,0 +24,0 @@ return unicode;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEscapedJsonUnsafe = void 0;
var getEscapedJsonUnsafe = function (char) {
const getEscapedJsonUnsafe = (char) => {
switch (char) {

@@ -13,3 +13,3 @@ case '\b':

case '\0':
case "\"":
case `"`:
return true;

@@ -16,0 +16,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUnescapedAny = void 0;
var getUnescapedAny = function (sequence, code) {
const getUnescapedAny = (sequence, code) => {
if (code != null) {

@@ -6,0 +6,0 @@ return String.fromCodePoint(code);

import { type EscapeSequence } from './types/escape-sequence';
declare type RemoveSlashesOptions = {
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => string | false;
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => boolean | string;
};

@@ -5,0 +5,0 @@ declare const removeSlashes: (source: string, { getUnescaped }?: RemoveSlashesOptions) => string;

"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.stripSlashes = exports.removeSlashes = void 0;
var get_unescaped_any_1 = require("./get-unescaped-any");
var removeSlashes = function (source, _a) {
var _b = _a === void 0 ? {} : _a, _c = _b.getUnescaped, getUnescaped = _c === void 0 ? get_unescaped_any_1.getUnescapedAny : _c;
var rx = /(?:\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$))|[\s\S])/giu;
var match;
var result = '';
const get_unescaped_any_1 = require("./get-unescaped-any");
const removeSlashes = (source, { getUnescaped = get_unescaped_any_1.getUnescapedAny } = {}) => {
const rx = /(?:(\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$)))|([\s\S]))/giu;
let match;
let result = '';
while (null != (match = rx.exec(source))) {
var _d = __read(match, 7), sequence = _d[0], escapedFallback = _d[1], unicode = _d[2], unicodePoint = _d[3], hex = _d[4], octal = _d[5], char = _d[6];
const [, sequence, fallback, unicode, unicodePoint, hex, octal, char, literal] = match;
if (literal) {
result += literal;
continue;
}
let code;
if (char != null) {
code = null;
}
else if (octal) {
code = Number.parseInt(octal, 8);
}
else {
code = Number.parseInt(unicodePoint || unicode || hex, 16);
}
try {
if (char != null) {
result += getUnescaped(sequence, null) || escapedFallback;
const unescaped = getUnescaped(sequence, code);
if (!unescaped) {
result += fallback;
}
else if (octal) {
result += getUnescaped(sequence, Number.parseInt(octal, 8)) || escapedFallback;
else if (unescaped === true) {
result += (0, get_unescaped_any_1.getUnescapedAny)(sequence, code) || fallback;
}
else {
var code = unicodePoint || unicode || hex;
if (code) {
result += getUnescaped(sequence, Number.parseInt(code, 16)) || escapedFallback;
}
else {
result += sequence;
}
result += unescaped;
}
}
catch (_error) {
result += escapedFallback;
result += fallback;
}

@@ -52,4 +44,4 @@ }

exports.removeSlashes = removeSlashes;
var stripSlashes = removeSlashes;
const stripSlashes = removeSlashes;
exports.stripSlashes = stripSlashes;
//# sourceMappingURL=remove-slashes.js.map

@@ -1,43 +0,20 @@

var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
import { getEscapedAny } from './get-escaped-any';
import { getEscapedJsonUnsafe } from './get-escaped-json-unsafe';
var addSlashes = function (str, _a) {
var e_1, _b;
var _c = _a === void 0 ? {} : _a, _d = _c.getEscaped, getEscaped = _d === void 0 ? getEscapedJsonUnsafe : _d;
var result = '';
try {
for (var str_1 = __values(str), str_1_1 = str_1.next(); !str_1_1.done; str_1_1 = str_1.next()) {
var char = str_1_1.value;
if (char === '\\') {
result += '\\\\';
continue;
}
var escaped = getEscaped(char);
if (!escaped) {
result += char;
}
else if (escaped === true) {
result += getEscapedAny(char);
}
else {
result += escaped;
}
const addSlashes = (str, { getEscaped = getEscapedJsonUnsafe } = {}) => {
let result = '';
for (const char of str) {
if (char === '\\') {
result += '\\\\';
continue;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (str_1_1 && !str_1_1.done && (_b = str_1.return)) _b.call(str_1);
const escaped = getEscaped(char);
if (!escaped) {
result += char;
}
finally { if (e_1) throw e_1.error; }
else if (escaped === true) {
result += getEscapedAny(char);
}
else {
result += escaped;
}
}

@@ -44,0 +21,0 @@ return result;

@@ -1,2 +0,2 @@

var getEscapedAny = function (char) {
const getEscapedAny = (char) => {
switch (char) {

@@ -13,8 +13,8 @@ case '\b':

return '\\t';
case "\"":
return "\\".concat(char);
case `"`:
return `\\${char}`;
}
var unicode = '';
for (var index = char.length - 1; index >= 0; index--) {
unicode = "\\u".concat(('000' + char.charCodeAt(index).toString(16)).slice(-4)).concat(unicode);
let unicode = '';
for (let index = char.length - 1; index >= 0; index--) {
unicode = `\\u${('000' + char.charCodeAt(index).toString(16)).slice(-4)}${unicode}`;
}

@@ -21,0 +21,0 @@ return unicode;

@@ -1,2 +0,2 @@

var getEscapedJsonUnsafe = function (char) {
const getEscapedJsonUnsafe = (char) => {
switch (char) {

@@ -10,3 +10,3 @@ case '\b':

case '\0':
case "\"":
case `"`:
return true;

@@ -13,0 +13,0 @@ }

@@ -1,2 +0,2 @@

var getUnescapedAny = function (sequence, code) {
const getUnescapedAny = (sequence, code) => {
if (code != null) {

@@ -3,0 +3,0 @@ return String.fromCodePoint(code);

import { type EscapeSequence } from './types/escape-sequence';
declare type RemoveSlashesOptions = {
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => string | false;
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => boolean | string;
};

@@ -5,0 +5,0 @@ declare const removeSlashes: (source: string, { getUnescaped }?: RemoveSlashesOptions) => string;

@@ -1,44 +0,36 @@

var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
import { getUnescapedAny } from './get-unescaped-any';
var removeSlashes = function (source, _a) {
var _b = _a === void 0 ? {} : _a, _c = _b.getUnescaped, getUnescaped = _c === void 0 ? getUnescapedAny : _c;
var rx = /(?:\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$))|[\s\S])/giu;
var match;
var result = '';
const removeSlashes = (source, { getUnescaped = getUnescapedAny } = {}) => {
const rx = /(?:(\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$)))|([\s\S]))/giu;
let match;
let result = '';
while (null != (match = rx.exec(source))) {
var _d = __read(match, 7), sequence = _d[0], escapedFallback = _d[1], unicode = _d[2], unicodePoint = _d[3], hex = _d[4], octal = _d[5], char = _d[6];
const [, sequence, fallback, unicode, unicodePoint, hex, octal, char, literal] = match;
if (literal) {
result += literal;
continue;
}
let code;
if (char != null) {
code = null;
}
else if (octal) {
code = Number.parseInt(octal, 8);
}
else {
code = Number.parseInt(unicodePoint || unicode || hex, 16);
}
try {
if (char != null) {
result += getUnescaped(sequence, null) || escapedFallback;
const unescaped = getUnescaped(sequence, code);
if (!unescaped) {
result += fallback;
}
else if (octal) {
result += getUnescaped(sequence, Number.parseInt(octal, 8)) || escapedFallback;
else if (unescaped === true) {
result += getUnescapedAny(sequence, code) || fallback;
}
else {
var code = unicodePoint || unicode || hex;
if (code) {
result += getUnescaped(sequence, Number.parseInt(code, 16)) || escapedFallback;
}
else {
result += sequence;
}
result += unescaped;
}
}
catch (_error) {
result += escapedFallback;
result += fallback;
}

@@ -48,4 +40,4 @@ }

};
var stripSlashes = removeSlashes;
const stripSlashes = removeSlashes;
export { removeSlashes, stripSlashes };
//# sourceMappingURL=remove-slashes.js.map
import { type EscapeSequence } from './types/escape-sequence';
declare type RemoveSlashesOptions = {
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => string | false;
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => boolean | string;
};

@@ -5,0 +5,0 @@ /**

{
"name": "slashes",
"description": "Add or remove backslashes (escape or unescape).",
"version": "3.0.2",
"version": "3.0.3",
"license": "ISC",

@@ -6,0 +6,0 @@ "author": {

@@ -31,2 +31,3 @@ import { removeSlashes } from './remove-slashes';

expect(removeSlashes('\\r\\n\\t', { getUnescaped: (sequence) => `${sequence}`.slice(1) })).toBe('rnt');
expect(removeSlashes('\\r\\n\\t\\a', { getUnescaped: () => true })).toBe('\r\n\ta');
});

@@ -5,3 +5,3 @@ import { getUnescapedAny } from './get-unescaped-any';

type RemoveSlashesOptions = {
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => string | false;
readonly getUnescaped?: (sequence: EscapeSequence, code: number | null) => boolean | string;
};

@@ -16,3 +16,3 @@

const removeSlashes = (source: string, { getUnescaped = getUnescapedAny }: RemoveSlashesOptions = {}): string => {
const rx = /(?:\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$))|[\s\S])/giu;
const rx = /(?:(\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$)))|([\s\S]))/giu;

@@ -23,20 +23,31 @@ let match: RegExpExecArray | null;

while (null != (match = rx.exec(source))) {
const [sequence, escapedFallback, unicode, unicodePoint, hex, octal, char] = match;
const [, sequence, fallback, unicode, unicodePoint, hex, octal, char, literal] = match;
if (literal) {
result += literal;
continue;
}
let code: number | null;
if (char != null) {
code = null;
} else if (octal) {
code = Number.parseInt(octal, 8);
} else {
code = Number.parseInt(unicodePoint || unicode || hex, 16);
}
try {
if (char != null) {
result += getUnescaped(sequence as EscapeSequence, null) || escapedFallback;
} else if (octal) {
result += getUnescaped(sequence as EscapeSequence, Number.parseInt(octal, 8)) || escapedFallback;
const unescaped = getUnescaped(sequence as EscapeSequence, code);
if (!unescaped) {
result += fallback;
} else if (unescaped === true) {
result += getUnescapedAny(sequence as EscapeSequence, code) || fallback;
} else {
const code = unicodePoint || unicode || hex;
if (code) {
result += getUnescaped(sequence as EscapeSequence, Number.parseInt(code, 16)) || escapedFallback;
} else {
result += sequence;
}
result += unescaped;
}
} catch (_error) {
result += escapedFallback;
result += fallback;
}

@@ -43,0 +54,0 @@ }

@@ -6,4 +6,4 @@ // Modern code (to be polyfilled) and explicit ambient types.

"module": "ES2020",
"target": "ES5",
"lib": ["ES2015"],
"target": "ES2021",
"lib": ["ES2021"],
"types": ["jest"],

@@ -10,0 +10,0 @@ "strict": true,

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

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

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

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