bruce-models 7.1.117 → 7.1.118

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.
@@ -140,5 +140,5 @@ __exportStar(require("./workflow/workflow-item"), exports);
140
140
  __exportStar(require("./workflow/workflow-schedule"), exports);
141
141
  __exportStar(require("./workflow/workflow-type"), exports);
142
142
  // This is updated with the package.json version on build.
143
- exports.VERSION = "7.1.117";
143
+ exports.VERSION = "7.1.118";
144
144
  //# sourceMappingURL=bruce-models.js.map
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UrlUtils = void 0;
4
4
  var UrlUtils;
5
5
  (function (UrlUtils) {
6
+ // The "S:{expires}.{signature}/" segment the API puts in the path of URLs it signs.
7
+ const SIGNED_SEGMENT = /\/S:(\d+)\.[A-Za-z0-9_-]+\//;
6
8
  /**
7
9
  * Returns a url-safe string that is human readable.
8
10
  * Eg: 'My Project View!' into 'My-Project-View'.
@@ -32,6 +34,52 @@ var UrlUtils;
32
34
  return urlObj.toString();
33
35
  }
34
36
  UrlUtils.AddQueryParam = AddQueryParam;
37
+ /**
38
+ * Removes every occurrence of a query parameter from a url.
39
+ * Eg: RemoveQueryParam('http://example.com/?key=value&other=1', 'key') => 'http://example.com/?other=1'
40
+ * @param url absolute or relative url.
41
+ * @param key decoded name of the parameter to remove.
42
+ * @returns
43
+ */
44
+ function RemoveQueryParam(url, key) {
45
+ if (!url) {
46
+ return url;
47
+ }
48
+ const hashStart = url.indexOf("#");
49
+ const hash = hashStart === -1 ? "" : url.substring(hashStart);
50
+ const beforeHash = hashStart === -1 ? url : url.substring(0, hashStart);
51
+ const queryStart = beforeHash.indexOf("?");
52
+ if (queryStart === -1) {
53
+ return url;
54
+ }
55
+ // Works on the raw string so the parameters that stay keep their exact encoding, which a signed query depends on.
56
+ const kept = beforeHash.substring(queryStart + 1).split("&").filter(pair => {
57
+ return decodeQueryName(pair.split("=")[0]) !== key;
58
+ });
59
+ const query = kept.length ? "?" + kept.join("&") : "";
60
+ return beforeHash.substring(0, queryStart) + query + hash;
61
+ }
62
+ UrlUtils.RemoveQueryParam = RemoveQueryParam;
63
+ /**
64
+ * Returns true when the url carries an API signature that has not expired, so it authorises itself.
65
+ * @param url
66
+ * @returns
67
+ */
68
+ function IsSignedUrl(url) {
69
+ const match = url === null || url === void 0 ? void 0 : url.match(SIGNED_SEGMENT);
70
+ return !!match && Number(match[1]) * 1000 > Date.now();
71
+ }
72
+ UrlUtils.IsSignedUrl = IsSignedUrl;
73
+ /**
74
+ * Removes the API signature from a url.
75
+ * Eg: comparing two urls for the same file that were signed at different times, or a link leaving the app that should grant no more than the reader's own access.
76
+ * @param url
77
+ * @returns
78
+ */
79
+ function RemoveSignature(url) {
80
+ return url ? url.replace(SIGNED_SEGMENT, "/") : url;
81
+ }
82
+ UrlUtils.RemoveSignature = RemoveSignature;
35
83
  /**
36
84
  * Returns a url with the provided url appended to the provided existing url.
37
85
  * @param params
@@ -84,5 +132,16 @@ var UrlUtils;
84
132
  return full;
85
133
  }
86
134
  UrlUtils.ConstructUrl = ConstructUrl;
135
+ /**
136
+ * Decodes a query parameter name the way URLSearchParams does, keeping the raw name when it is malformed.
137
+ */
138
+ function decodeQueryName(name) {
139
+ try {
140
+ return decodeURIComponent(name.replace(/\+/g, " "));
141
+ }
142
+ catch (_a) {
143
+ return name;
144
+ }
145
+ }
87
146
  })(UrlUtils = exports.UrlUtils || (exports.UrlUtils = {}));
88
147
  //# sourceMappingURL=url-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../../../src/util/url-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../../../src/util/url-utils.ts"],"names":[],"mappings":"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"}
@@ -122,4 +122,4 @@ export * from "./util/url-utils";
122
122
  export * from "./workflow/workflow-item";
123
123
  export * from "./workflow/workflow-schedule";
124
124
  export * from "./workflow/workflow-type";
125
- export declare const VERSION = "7.1.117";
125
+ export declare const VERSION = "7.1.118";
@@ -16,6 +16,27 @@ export declare namespace UrlUtils {
16
16
  * @returns
17
17
  */
18
18
  function AddQueryParam(url: string, key: string, value: string): string;
19
+ /**
20
+ * Removes every occurrence of a query parameter from a url.
21
+ * Eg: RemoveQueryParam('http://example.com/?key=value&other=1', 'key') => 'http://example.com/?other=1'
22
+ * @param url absolute or relative url.
23
+ * @param key decoded name of the parameter to remove.
24
+ * @returns
25
+ */
26
+ function RemoveQueryParam(url: string, key: string): string;
27
+ /**
28
+ * Returns true when the url carries an API signature that has not expired, so it authorises itself.
29
+ * @param url
30
+ * @returns
31
+ */
32
+ function IsSignedUrl(url: string): boolean;
33
+ /**
34
+ * Removes the API signature from a url.
35
+ * Eg: comparing two urls for the same file that were signed at different times, or a link leaving the app that should grant no more than the reader's own access.
36
+ * @param url
37
+ * @returns
38
+ */
39
+ function RemoveSignature(url: string): string;
19
40
  /**
20
41
  * Returns a url with the provided url appended to the provided existing url.
21
42
  * @param params
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bruce-models",
3
- "version": "7.1.117",
3
+ "version": "7.1.118",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "dist/bruce-models.umd.js",