@sophonz/redaction 0.0.3 → 0.0.4
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.
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/types.d.ts +2 -0
- package/build/types.d.ts.map +1 -1
- package/build/url.d.ts +1 -0
- package/build/url.d.ts.map +1 -1
- package/build/url.js +40 -13
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createAttributeScrubber } from './attributes';
|
|
2
|
-
export { createSanitizeUrl, DEFAULT_QUERY_PARAMS_TO_SCRUB, defaultSanitizeUrl, REDACTED, } from './url';
|
|
2
|
+
export { createSanitizeUrl, DEFAULT_QUERY_PARAMS_TO_DROP, DEFAULT_QUERY_PARAMS_TO_SCRUB, defaultSanitizeUrl, REDACTED, } from './url';
|
|
3
3
|
export type { AttributeScrubber, AttributeScrubberOptions, SanitizeUrl, SanitizeUrlOptions, ScrubAttributes, ScrubbableValue, } from './types';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,6BAA6B,EAC7B,kBAAkB,EAClB,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REDACTED = exports.defaultSanitizeUrl = exports.DEFAULT_QUERY_PARAMS_TO_SCRUB = exports.createSanitizeUrl = exports.createAttributeScrubber = void 0;
|
|
3
|
+
exports.REDACTED = exports.defaultSanitizeUrl = exports.DEFAULT_QUERY_PARAMS_TO_SCRUB = exports.DEFAULT_QUERY_PARAMS_TO_DROP = exports.createSanitizeUrl = exports.createAttributeScrubber = void 0;
|
|
4
4
|
var attributes_1 = require("./attributes");
|
|
5
5
|
Object.defineProperty(exports, "createAttributeScrubber", { enumerable: true, get: function () { return attributes_1.createAttributeScrubber; } });
|
|
6
6
|
var url_1 = require("./url");
|
|
7
7
|
Object.defineProperty(exports, "createSanitizeUrl", { enumerable: true, get: function () { return url_1.createSanitizeUrl; } });
|
|
8
|
+
Object.defineProperty(exports, "DEFAULT_QUERY_PARAMS_TO_DROP", { enumerable: true, get: function () { return url_1.DEFAULT_QUERY_PARAMS_TO_DROP; } });
|
|
8
9
|
Object.defineProperty(exports, "DEFAULT_QUERY_PARAMS_TO_SCRUB", { enumerable: true, get: function () { return url_1.DEFAULT_QUERY_PARAMS_TO_SCRUB; } });
|
|
9
10
|
Object.defineProperty(exports, "defaultSanitizeUrl", { enumerable: true, get: function () { return url_1.defaultSanitizeUrl; } });
|
|
10
11
|
Object.defineProperty(exports, "REDACTED", { enumerable: true, get: function () { return url_1.REDACTED; } });
|
package/build/types.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export type SanitizeUrl = (url: string) => string;
|
|
|
2
2
|
export interface SanitizeUrlOptions {
|
|
3
3
|
additionalQueryParamsToScrub?: readonly string[];
|
|
4
4
|
queryParamsToScrub?: readonly string[];
|
|
5
|
+
additionalQueryParamsToDrop?: readonly string[];
|
|
6
|
+
queryParamsToDrop?: readonly string[];
|
|
5
7
|
redactCredentials?: boolean;
|
|
6
8
|
scrubFragment?: boolean;
|
|
7
9
|
}
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAKlD,MAAM,WAAW,kBAAkB;IAWjC,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAUjD,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAKlD,MAAM,WAAW,kBAAkB;IAWjC,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAUjD,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAavC,2BAA2B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAQhD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAKtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAW5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAsBD,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,UAAU,GACV,eAAe,EAAE,GACjB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,CAAC;AAyBvC,MAAM,WAAW,iBAAiB;IAQhC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IASzB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAgBxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAWvC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,eAAe,GAAG,SAAS,CAAC;CAC9E;AAKD,MAAM,WAAW,wBAAwB;IAQvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACtD;AAYD,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC"}
|
package/build/url.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SanitizeUrl, SanitizeUrlOptions } from './types';
|
|
2
2
|
export declare const REDACTED = "REDACTED";
|
|
3
3
|
export declare const DEFAULT_QUERY_PARAMS_TO_SCRUB: readonly string[];
|
|
4
|
+
export declare const DEFAULT_QUERY_PARAMS_TO_DROP: readonly string[];
|
|
4
5
|
export declare function createSanitizeUrl(options?: SanitizeUrlOptions): SanitizeUrl;
|
|
5
6
|
export declare function defaultSanitizeUrl(url: string): string;
|
|
6
7
|
//# sourceMappingURL=url.d.ts.map
|
package/build/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAY/D,eAAO,MAAM,QAAQ,aAAa,CAAC;AAMnC,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAoBzD,CAAC;
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAY/D,eAAO,MAAM,QAAQ,aAAa,CAAC;AAMnC,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAoBzD,CAAC;AAkBH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAKxD,CAAC;AA6NH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAmDb;AAgBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/build/url.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_QUERY_PARAMS_TO_SCRUB = exports.REDACTED = void 0;
|
|
3
|
+
exports.DEFAULT_QUERY_PARAMS_TO_DROP = exports.DEFAULT_QUERY_PARAMS_TO_SCRUB = exports.REDACTED = void 0;
|
|
4
4
|
exports.createSanitizeUrl = createSanitizeUrl;
|
|
5
5
|
exports.defaultSanitizeUrl = defaultSanitizeUrl;
|
|
6
6
|
exports.REDACTED = 'REDACTED';
|
|
@@ -25,6 +25,10 @@ exports.DEFAULT_QUERY_PARAMS_TO_SCRUB = Object.freeze([
|
|
|
25
25
|
'signature',
|
|
26
26
|
'hash',
|
|
27
27
|
]);
|
|
28
|
+
exports.DEFAULT_QUERY_PARAMS_TO_DROP = Object.freeze([
|
|
29
|
+
'_rsc',
|
|
30
|
+
'_',
|
|
31
|
+
]);
|
|
28
32
|
const SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*:/;
|
|
29
33
|
function isSlash(ch) {
|
|
30
34
|
return ch === '/' || ch === '\\';
|
|
@@ -43,36 +47,44 @@ function normalizeParamName(raw) {
|
|
|
43
47
|
}
|
|
44
48
|
return name.trim().toLowerCase();
|
|
45
49
|
}
|
|
46
|
-
function scrubParams(params, scrub) {
|
|
50
|
+
function scrubParams(params, scrub, drop) {
|
|
47
51
|
if (params === '' || params.indexOf('=') === -1) {
|
|
48
52
|
return params;
|
|
49
53
|
}
|
|
50
54
|
const pairs = params.split('&');
|
|
55
|
+
const kept = [];
|
|
51
56
|
let changed = false;
|
|
52
57
|
for (let i = 0; i < pairs.length; i++) {
|
|
53
58
|
const pair = pairs[i];
|
|
54
59
|
const eq = pair.indexOf('=');
|
|
55
60
|
if (eq === -1) {
|
|
61
|
+
kept.push(pair);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const name = normalizeParamName(pair.slice(0, eq));
|
|
65
|
+
if (drop.has(name)) {
|
|
66
|
+
changed = true;
|
|
56
67
|
continue;
|
|
57
68
|
}
|
|
58
69
|
const rawName = pair.slice(0, eq);
|
|
59
|
-
if (!scrub.has(
|
|
70
|
+
if (!scrub.has(name)) {
|
|
71
|
+
kept.push(pair);
|
|
60
72
|
continue;
|
|
61
73
|
}
|
|
62
74
|
const redacted = rawName + '=' + exports.REDACTED;
|
|
63
75
|
if (redacted !== pair) {
|
|
64
|
-
pairs[i] = redacted;
|
|
65
76
|
changed = true;
|
|
66
77
|
}
|
|
78
|
+
kept.push(redacted);
|
|
67
79
|
}
|
|
68
|
-
return changed ?
|
|
80
|
+
return changed ? kept.join('&') : params;
|
|
69
81
|
}
|
|
70
|
-
function scrubFragmentParams(fragment, scrub) {
|
|
82
|
+
function scrubFragmentParams(fragment, scrub, drop) {
|
|
71
83
|
const q = fragment.indexOf('?');
|
|
72
84
|
if (q !== -1) {
|
|
73
|
-
return fragment.slice(0, q + 1) + scrubParams(fragment.slice(q + 1), scrub);
|
|
85
|
+
return (fragment.slice(0, q + 1) + scrubParams(fragment.slice(q + 1), scrub, drop));
|
|
74
86
|
}
|
|
75
|
-
return scrubParams(fragment, scrub);
|
|
87
|
+
return scrubParams(fragment, scrub, drop);
|
|
76
88
|
}
|
|
77
89
|
function redactCredentials(head) {
|
|
78
90
|
let start = -1;
|
|
@@ -112,7 +124,7 @@ function redactCredentials(head) {
|
|
|
112
124
|
}
|
|
113
125
|
return head.slice(0, start) + replacement + head.slice(start + at);
|
|
114
126
|
}
|
|
115
|
-
function sanitize(url, scrub, credentials, fragment) {
|
|
127
|
+
function sanitize(url, scrub, drop, credentials, fragment) {
|
|
116
128
|
const hash = url.indexOf('#');
|
|
117
129
|
const beforeHash = hash === -1 ? url : url.slice(0, hash);
|
|
118
130
|
const fragmentText = hash === -1 ? '' : url.slice(hash + 1);
|
|
@@ -121,17 +133,20 @@ function sanitize(url, scrub, credentials, fragment) {
|
|
|
121
133
|
const query = question === -1 ? '' : beforeHash.slice(question + 1);
|
|
122
134
|
let out = credentials ? redactCredentials(head) : head;
|
|
123
135
|
if (question !== -1) {
|
|
124
|
-
|
|
136
|
+
const scrubbed = scrubParams(query, scrub, drop);
|
|
137
|
+
if (scrubbed !== '' || query === '') {
|
|
138
|
+
out += '?' + scrubbed;
|
|
139
|
+
}
|
|
125
140
|
}
|
|
126
141
|
if (hash !== -1) {
|
|
127
142
|
out +=
|
|
128
143
|
'#' +
|
|
129
|
-
(fragment ? scrubFragmentParams(fragmentText, scrub) : fragmentText);
|
|
144
|
+
(fragment ? scrubFragmentParams(fragmentText, scrub, drop) : fragmentText);
|
|
130
145
|
}
|
|
131
146
|
return out;
|
|
132
147
|
}
|
|
133
148
|
function createSanitizeUrl(options = {}) {
|
|
134
|
-
var _a;
|
|
149
|
+
var _a, _b;
|
|
135
150
|
const scrub = new Set();
|
|
136
151
|
const base = (_a = options.queryParamsToScrub) !== null && _a !== void 0 ? _a : exports.DEFAULT_QUERY_PARAMS_TO_SCRUB;
|
|
137
152
|
for (let i = 0; i < base.length; i++) {
|
|
@@ -144,6 +159,18 @@ function createSanitizeUrl(options = {}) {
|
|
|
144
159
|
}
|
|
145
160
|
}
|
|
146
161
|
scrub.delete('');
|
|
162
|
+
const drop = new Set();
|
|
163
|
+
const dropBase = (_b = options.queryParamsToDrop) !== null && _b !== void 0 ? _b : exports.DEFAULT_QUERY_PARAMS_TO_DROP;
|
|
164
|
+
for (let i = 0; i < dropBase.length; i++) {
|
|
165
|
+
drop.add(normalizeParamName(dropBase[i]));
|
|
166
|
+
}
|
|
167
|
+
const dropExtra = options.additionalQueryParamsToDrop;
|
|
168
|
+
if (dropExtra) {
|
|
169
|
+
for (let i = 0; i < dropExtra.length; i++) {
|
|
170
|
+
drop.add(normalizeParamName(dropExtra[i]));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
drop.delete('');
|
|
147
174
|
const credentials = options.redactCredentials !== false;
|
|
148
175
|
const fragment = options.scrubFragment !== false;
|
|
149
176
|
return function sanitizeUrl(url) {
|
|
@@ -151,7 +178,7 @@ function createSanitizeUrl(options = {}) {
|
|
|
151
178
|
return '';
|
|
152
179
|
}
|
|
153
180
|
try {
|
|
154
|
-
return sanitize(url, scrub, credentials, fragment);
|
|
181
|
+
return sanitize(url, scrub, drop, credentials, fragment);
|
|
155
182
|
}
|
|
156
183
|
catch {
|
|
157
184
|
return exports.REDACTED;
|
package/build/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.0.
|
|
1
|
+
export declare const VERSION = "0.0.3";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/version.js
CHANGED