@kwiz/common 1.0.107 → 1.0.109

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.
Files changed (116) hide show
  1. package/.github/workflows/npm-publish.yml +24 -24
  2. package/.madgerc +2 -2
  3. package/LICENSE +21 -21
  4. package/fix-folder-imports.js +26 -26
  5. package/lib/cjs/helpers/browser.js +9 -5
  6. package/lib/cjs/helpers/browser.js.map +1 -1
  7. package/lib/cjs/types/libs/msal.types.js +26 -26
  8. package/lib/cjs/types/libs/msal.types.js.map +1 -1
  9. package/lib/cjs/types/sharepoint.utils.types.js +9 -1
  10. package/lib/cjs/types/sharepoint.utils.types.js.map +1 -1
  11. package/lib/cjs/utils/sharepoint.rest/file.folder.js +4 -4
  12. package/lib/cjs/utils/sharepoint.rest/file.folder.js.map +1 -1
  13. package/lib/cjs/utils/sharepoint.rest/list.js +60 -1
  14. package/lib/cjs/utils/sharepoint.rest/list.js.map +1 -1
  15. package/lib/cjs/utils/sharepoint.rest/user.js +11 -11
  16. package/lib/esm/helpers/browser.js +9 -5
  17. package/lib/esm/helpers/browser.js.map +1 -1
  18. package/lib/esm/types/libs/msal.types.js +26 -26
  19. package/lib/esm/types/libs/msal.types.js.map +1 -1
  20. package/lib/esm/types/sharepoint.utils.types.js +8 -0
  21. package/lib/esm/types/sharepoint.utils.types.js.map +1 -1
  22. package/lib/esm/utils/sharepoint.rest/file.folder.js +4 -4
  23. package/lib/esm/utils/sharepoint.rest/file.folder.js.map +1 -1
  24. package/lib/esm/utils/sharepoint.rest/list.js +57 -0
  25. package/lib/esm/utils/sharepoint.rest/list.js.map +1 -1
  26. package/lib/esm/utils/sharepoint.rest/user.js +11 -11
  27. package/lib/types/types/libs/msal.types.d.ts +8 -3
  28. package/lib/types/types/sharepoint.utils.types.d.ts +17 -0
  29. package/lib/types/utils/sharepoint.rest/list.d.ts +7 -1
  30. package/package.json +81 -81
  31. package/readme.md +17 -17
  32. package/src/_dependencies.ts +12 -12
  33. package/src/config.ts +17 -17
  34. package/src/helpers/Guid.ts +181 -181
  35. package/src/helpers/base64.ts +173 -173
  36. package/src/helpers/browser.test.js +13 -13
  37. package/src/helpers/browser.ts +1448 -1448
  38. package/src/helpers/browserinfo.ts +292 -292
  39. package/src/helpers/collections.base.test.js +25 -25
  40. package/src/helpers/collections.base.ts +437 -437
  41. package/src/helpers/collections.ts +107 -107
  42. package/src/helpers/color.ts +54 -54
  43. package/src/helpers/cookies.ts +59 -59
  44. package/src/helpers/date.test.js +119 -119
  45. package/src/helpers/date.ts +188 -188
  46. package/src/helpers/debug.ts +186 -186
  47. package/src/helpers/diagrams.ts +43 -43
  48. package/src/helpers/emails.ts +6 -6
  49. package/src/helpers/eval.ts +5 -5
  50. package/src/helpers/file.test.js +50 -50
  51. package/src/helpers/file.ts +63 -63
  52. package/src/helpers/flatted.ts +149 -149
  53. package/src/helpers/functions.ts +16 -16
  54. package/src/helpers/graph/calendar.types.ts +10 -10
  55. package/src/helpers/http.ts +69 -69
  56. package/src/helpers/images.ts +22 -22
  57. package/src/helpers/json.ts +44 -44
  58. package/src/helpers/md5.ts +189 -189
  59. package/src/helpers/objects.test.js +33 -33
  60. package/src/helpers/objects.ts +274 -274
  61. package/src/helpers/promises.test.js +37 -37
  62. package/src/helpers/promises.ts +165 -165
  63. package/src/helpers/random.ts +27 -27
  64. package/src/helpers/scheduler/scheduler.test.js +103 -103
  65. package/src/helpers/scheduler/scheduler.ts +131 -131
  66. package/src/helpers/sharepoint.ts +785 -785
  67. package/src/helpers/strings.test.js +122 -122
  68. package/src/helpers/strings.ts +337 -337
  69. package/src/helpers/typecheckers.test.js +34 -34
  70. package/src/helpers/typecheckers.ts +266 -266
  71. package/src/helpers/url.test.js +43 -43
  72. package/src/helpers/url.ts +207 -207
  73. package/src/helpers/urlhelper.ts +111 -111
  74. package/src/index.ts +6 -6
  75. package/src/types/auth.ts +54 -54
  76. package/src/types/common.types.ts +15 -15
  77. package/src/types/flatted.types.ts +59 -59
  78. package/src/types/globals.types.ts +6 -6
  79. package/src/types/graph/calendar.types.ts +80 -80
  80. package/src/types/knownscript.types.ts +18 -18
  81. package/src/types/libs/datajs.types.ts +28 -28
  82. package/src/types/libs/ics.types.ts +30 -30
  83. package/src/types/libs/msal.types.ts +57 -49
  84. package/src/types/locales.ts +125 -125
  85. package/src/types/localstoragecache.types.ts +8 -8
  86. package/src/types/location.types.ts +27 -27
  87. package/src/types/moment.ts +11 -11
  88. package/src/types/regex.types.ts +16 -16
  89. package/src/types/rest.types.ts +95 -95
  90. package/src/types/sharepoint.types.ts +1466 -1466
  91. package/src/types/sharepoint.utils.types.ts +306 -287
  92. package/src/utils/auth/common.ts +74 -74
  93. package/src/utils/auth/discovery.test.js +12 -12
  94. package/src/utils/auth/discovery.ts +132 -132
  95. package/src/utils/base64.ts +27 -27
  96. package/src/utils/consolelogger.ts +320 -320
  97. package/src/utils/date.ts +172 -172
  98. package/src/utils/emails.ts +24 -24
  99. package/src/utils/knownscript.ts +286 -286
  100. package/src/utils/localstoragecache.ts +446 -446
  101. package/src/utils/rest.ts +501 -501
  102. package/src/utils/script.ts +170 -170
  103. package/src/utils/sharepoint.rest/common.ts +154 -154
  104. package/src/utils/sharepoint.rest/date.ts +62 -62
  105. package/src/utils/sharepoint.rest/file.folder.ts +598 -598
  106. package/src/utils/sharepoint.rest/item.ts +547 -547
  107. package/src/utils/sharepoint.rest/list.ts +1548 -1482
  108. package/src/utils/sharepoint.rest/listutils/GetListItemsByCaml.ts +774 -774
  109. package/src/utils/sharepoint.rest/listutils/GetListItemsById.ts +275 -275
  110. package/src/utils/sharepoint.rest/listutils/common.ts +206 -206
  111. package/src/utils/sharepoint.rest/location.ts +141 -141
  112. package/src/utils/sharepoint.rest/navigation-links.ts +86 -86
  113. package/src/utils/sharepoint.rest/user-search.ts +252 -252
  114. package/src/utils/sharepoint.rest/user.ts +491 -491
  115. package/src/utils/sharepoint.rest/web.ts +1384 -1384
  116. package/src/utils/sod.ts +194 -194
@@ -1,174 +1,174 @@
1
-
2
- export async function blobToBase64(data: Blob): Promise<string> {
3
- return new Promise<string>((resolve, reject) => {
4
- var fileReader = new FileReader();
5
- fileReader.onloadend = () => {
6
- resolve(fileReader.result as string);
7
- };
8
- fileReader.onerror = () => {
9
- reject();
10
- };
11
- fileReader.readAsDataURL(data);
12
- });
13
- }
14
-
15
- /** returns true of the string is a data: with base64 content */
16
- export function isBase64ImageData(str: string): boolean {
17
- return str.startsWith("data") && str.indexOf("base64") > 0;
18
- }
19
-
20
- const alphabet = [
21
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
22
- 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
23
- 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
24
- 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
25
- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
26
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
27
- 'w', 'x', 'y', 'z', '0', '1', '2', '3',
28
- '4', '5', '6', '7', '8', '9', '+', '/'
29
- ];
30
-
31
- const values = {};
32
- for (let i = 0; i < alphabet.length; ++i) {
33
- values[alphabet[i]] = i;
34
- }
35
-
36
- function encode(bytes: ArrayBuffer): string {
37
- const array = new Uint8Array(bytes);
38
- const base64 = [];
39
- let index = 0;
40
- let quantum;
41
- let value;
42
-
43
- // Grab as many sets of 3 bytes as we can, that form 24 bits.
44
- while (index + 2 < array.byteLength) {
45
- quantum = (array[index] << 16) | (array[index + 1] << 8) | array[index + 2];
46
- // 24 bits will become 4 base64 chars.
47
- value = (quantum >> 18) & 0x3f;
48
- base64.push(alphabet[value]);
49
- value = (quantum >> 12) & 0x3f;
50
- base64.push(alphabet[value]);
51
- value = (quantum >> 6) & 0x3f;
52
- base64.push(alphabet[value]);
53
- value = quantum & 0x3f;
54
- base64.push(alphabet[value]);
55
- index += 3;
56
- }
57
- // At this point, there are 0, 1 or 2 bytes left.
58
- if (index + 1 === array.byteLength) {
59
- // 8 bits; shift by 4 to pad on the right with 0s to make 12 bits total.
60
- quantum = array[index] << 4;
61
- value = (quantum >> 6) & 0x3f;
62
- base64.push(alphabet[value]);
63
- value = quantum & 0x3f;
64
- base64.push(alphabet[value]);
65
- base64.push('==');
66
- } else if (index + 2 === array.byteLength) {
67
- // 16 bits; shift by 2 to pad on the right with 0s to make 18 bits total.
68
- quantum = (array[index] << 10) | (array[index + 1] << 2);
69
- value = (quantum >> 12) & 0x3f;
70
- base64.push(alphabet[value]);
71
- value = (quantum >> 6) & 0x3f;
72
- base64.push(alphabet[value]);
73
- value = quantum & 0x3f;
74
- base64.push(alphabet[value]);
75
- base64.push('=');
76
- }
77
- return base64.join('');
78
- }
79
-
80
- function decode(string: string): Uint8Array {
81
- let size = string.length;
82
- if (size === 0) {
83
- return new Uint8Array(new ArrayBuffer(0));
84
- }
85
- if (size % 4 !== 0) {
86
- throw new Error('Bad length: ' + size);
87
- }
88
- if (!string.match(/^[a-zA-Z0-9+/]+={0,2}$/)) {
89
- throw new Error('Invalid base64 encoded value');
90
- }
91
- // Every 4 base64 chars = 24 bits = 3 bytes. But, we also need to figure out
92
- // padding, if any.
93
- let bytes = 3 * (size / 4);
94
- let numPad = 0;
95
- if (string.charAt(size - 1) === '=') {
96
- numPad++;
97
- bytes--;
98
- }
99
- if (string.charAt(size - 2) === '=') {
100
- numPad++;
101
- bytes--;
102
- }
103
- const buffer = new Uint8Array(new ArrayBuffer(bytes));
104
- let index = 0;
105
- let bufferIndex = 0;
106
- let quantum;
107
- if (numPad > 0) {
108
- size -= 4; // handle the last one specially
109
- }
110
-
111
- while (index < size) {
112
- quantum = 0;
113
- for (let i = 0; i < 4; ++i) {
114
- quantum = (quantum << 6) | values[string.charAt(index + i)];
115
- }
116
- // quantum is now a 24-bit value.
117
- buffer[bufferIndex++] = (quantum >> 16) & 0xff;
118
- buffer[bufferIndex++] = (quantum >> 8) & 0xff;
119
- buffer[bufferIndex++] = quantum & 0xff;
120
- index += 4;
121
- }
122
- if (numPad > 0) {
123
- // if numPad === 1, there is one =, and we have 18 bits with 2 0s at end.
124
- // if numPad === 2, there is two ==, and we have 12 bits with 4 0s at end.
125
- // First, grab my quantum.
126
- quantum = 0;
127
- for (let i = 0; i < 4 - numPad; ++i) {
128
- quantum = (quantum << 6) | values[string.charAt(index + i)];
129
- }
130
- if (numPad === 1) {
131
- // quantum is 18 bits, but really represents two bytes.
132
- quantum = quantum >> 2;
133
- buffer[bufferIndex++] = (quantum >> 8) & 0xff;
134
- buffer[bufferIndex++] = quantum & 0xff;
135
- } else {
136
- // quantum is 12 bits, but really represents only one byte.
137
- quantum = quantum >> 4;
138
- buffer[bufferIndex++] = quantum & 0xff;
139
- }
140
- }
141
- return buffer;
142
- }
143
-
144
- export function toArrayBuffer(base64: string): ArrayBuffer {
145
- var uint8Array = decode(base64);
146
- return uint8Array.buffer;
147
- }
148
-
149
- export function toUint8Array(base64: string): Uint8Array {
150
- return decode(base64);
151
- }
152
-
153
- export function fromArrayBuffer(arraybuffer: ArrayBuffer) {
154
- return encode(arraybuffer);
155
- }
156
-
157
- export function fromUint8Array(uint8Array: Uint8Array) {
158
- return encode(uint8Array.buffer);
159
- }
160
-
161
- export function dataURLtoFile(dataurl, filename): File {
162
-
163
- var arr = dataurl.split(','),
164
- mime = arr[0].match(/:(.*?);/)[1],
165
- bstr = atob(arr[1]),
166
- n = bstr.length,
167
- u8arr = new Uint8Array(n);
168
-
169
- while (n--) {
170
- u8arr[n] = bstr.charCodeAt(n);
171
- }
172
-
173
- return new File([u8arr], filename, { type: mime });
1
+
2
+ export async function blobToBase64(data: Blob): Promise<string> {
3
+ return new Promise<string>((resolve, reject) => {
4
+ var fileReader = new FileReader();
5
+ fileReader.onloadend = () => {
6
+ resolve(fileReader.result as string);
7
+ };
8
+ fileReader.onerror = () => {
9
+ reject();
10
+ };
11
+ fileReader.readAsDataURL(data);
12
+ });
13
+ }
14
+
15
+ /** returns true of the string is a data: with base64 content */
16
+ export function isBase64ImageData(str: string): boolean {
17
+ return str.startsWith("data") && str.indexOf("base64") > 0;
18
+ }
19
+
20
+ const alphabet = [
21
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
22
+ 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
23
+ 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
24
+ 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
25
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
26
+ 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
27
+ 'w', 'x', 'y', 'z', '0', '1', '2', '3',
28
+ '4', '5', '6', '7', '8', '9', '+', '/'
29
+ ];
30
+
31
+ const values = {};
32
+ for (let i = 0; i < alphabet.length; ++i) {
33
+ values[alphabet[i]] = i;
34
+ }
35
+
36
+ function encode(bytes: ArrayBuffer): string {
37
+ const array = new Uint8Array(bytes);
38
+ const base64 = [];
39
+ let index = 0;
40
+ let quantum;
41
+ let value;
42
+
43
+ // Grab as many sets of 3 bytes as we can, that form 24 bits.
44
+ while (index + 2 < array.byteLength) {
45
+ quantum = (array[index] << 16) | (array[index + 1] << 8) | array[index + 2];
46
+ // 24 bits will become 4 base64 chars.
47
+ value = (quantum >> 18) & 0x3f;
48
+ base64.push(alphabet[value]);
49
+ value = (quantum >> 12) & 0x3f;
50
+ base64.push(alphabet[value]);
51
+ value = (quantum >> 6) & 0x3f;
52
+ base64.push(alphabet[value]);
53
+ value = quantum & 0x3f;
54
+ base64.push(alphabet[value]);
55
+ index += 3;
56
+ }
57
+ // At this point, there are 0, 1 or 2 bytes left.
58
+ if (index + 1 === array.byteLength) {
59
+ // 8 bits; shift by 4 to pad on the right with 0s to make 12 bits total.
60
+ quantum = array[index] << 4;
61
+ value = (quantum >> 6) & 0x3f;
62
+ base64.push(alphabet[value]);
63
+ value = quantum & 0x3f;
64
+ base64.push(alphabet[value]);
65
+ base64.push('==');
66
+ } else if (index + 2 === array.byteLength) {
67
+ // 16 bits; shift by 2 to pad on the right with 0s to make 18 bits total.
68
+ quantum = (array[index] << 10) | (array[index + 1] << 2);
69
+ value = (quantum >> 12) & 0x3f;
70
+ base64.push(alphabet[value]);
71
+ value = (quantum >> 6) & 0x3f;
72
+ base64.push(alphabet[value]);
73
+ value = quantum & 0x3f;
74
+ base64.push(alphabet[value]);
75
+ base64.push('=');
76
+ }
77
+ return base64.join('');
78
+ }
79
+
80
+ function decode(string: string): Uint8Array {
81
+ let size = string.length;
82
+ if (size === 0) {
83
+ return new Uint8Array(new ArrayBuffer(0));
84
+ }
85
+ if (size % 4 !== 0) {
86
+ throw new Error('Bad length: ' + size);
87
+ }
88
+ if (!string.match(/^[a-zA-Z0-9+/]+={0,2}$/)) {
89
+ throw new Error('Invalid base64 encoded value');
90
+ }
91
+ // Every 4 base64 chars = 24 bits = 3 bytes. But, we also need to figure out
92
+ // padding, if any.
93
+ let bytes = 3 * (size / 4);
94
+ let numPad = 0;
95
+ if (string.charAt(size - 1) === '=') {
96
+ numPad++;
97
+ bytes--;
98
+ }
99
+ if (string.charAt(size - 2) === '=') {
100
+ numPad++;
101
+ bytes--;
102
+ }
103
+ const buffer = new Uint8Array(new ArrayBuffer(bytes));
104
+ let index = 0;
105
+ let bufferIndex = 0;
106
+ let quantum;
107
+ if (numPad > 0) {
108
+ size -= 4; // handle the last one specially
109
+ }
110
+
111
+ while (index < size) {
112
+ quantum = 0;
113
+ for (let i = 0; i < 4; ++i) {
114
+ quantum = (quantum << 6) | values[string.charAt(index + i)];
115
+ }
116
+ // quantum is now a 24-bit value.
117
+ buffer[bufferIndex++] = (quantum >> 16) & 0xff;
118
+ buffer[bufferIndex++] = (quantum >> 8) & 0xff;
119
+ buffer[bufferIndex++] = quantum & 0xff;
120
+ index += 4;
121
+ }
122
+ if (numPad > 0) {
123
+ // if numPad === 1, there is one =, and we have 18 bits with 2 0s at end.
124
+ // if numPad === 2, there is two ==, and we have 12 bits with 4 0s at end.
125
+ // First, grab my quantum.
126
+ quantum = 0;
127
+ for (let i = 0; i < 4 - numPad; ++i) {
128
+ quantum = (quantum << 6) | values[string.charAt(index + i)];
129
+ }
130
+ if (numPad === 1) {
131
+ // quantum is 18 bits, but really represents two bytes.
132
+ quantum = quantum >> 2;
133
+ buffer[bufferIndex++] = (quantum >> 8) & 0xff;
134
+ buffer[bufferIndex++] = quantum & 0xff;
135
+ } else {
136
+ // quantum is 12 bits, but really represents only one byte.
137
+ quantum = quantum >> 4;
138
+ buffer[bufferIndex++] = quantum & 0xff;
139
+ }
140
+ }
141
+ return buffer;
142
+ }
143
+
144
+ export function toArrayBuffer(base64: string): ArrayBuffer {
145
+ var uint8Array = decode(base64);
146
+ return uint8Array.buffer;
147
+ }
148
+
149
+ export function toUint8Array(base64: string): Uint8Array {
150
+ return decode(base64);
151
+ }
152
+
153
+ export function fromArrayBuffer(arraybuffer: ArrayBuffer) {
154
+ return encode(arraybuffer);
155
+ }
156
+
157
+ export function fromUint8Array(uint8Array: Uint8Array) {
158
+ return encode(uint8Array.buffer);
159
+ }
160
+
161
+ export function dataURLtoFile(dataurl, filename): File {
162
+
163
+ var arr = dataurl.split(','),
164
+ mime = arr[0].match(/:(.*?);/)[1],
165
+ bstr = atob(arr[1]),
166
+ n = bstr.length,
167
+ u8arr = new Uint8Array(n);
168
+
169
+ while (n--) {
170
+ u8arr[n] = bstr.charCodeAt(n);
171
+ }
172
+
173
+ return new File([u8arr], filename, { type: mime });
174
174
  }
@@ -1,13 +1,13 @@
1
- import assert from 'assert/strict';
2
- import test from 'node:test';
3
- import { DisableAnchorInterceptInHtml, HTMLDecode } from "./browser";
4
-
5
- test('DisableAnchorInterceptInHtml', async t => {
6
- assert.strictEqual(DisableAnchorInterceptInHtml(`<a href="blah">test</a>`), `<a data-interception="off" href="blah">test</a>`);
7
- assert.strictEqual(DisableAnchorInterceptInHtml(`<div><a href="blah">test</a><a href="blah">test</a></div>`), `<div><a data-interception="off" href="blah">test</a><a data-interception="off" href="blah">test</a></div>`);
8
- assert.strictEqual(DisableAnchorInterceptInHtml(`<p href="blah">test</p>`), `<p href="blah">test</p>`);
9
- });
10
-
11
- test('HTMLDecode', async t => {
12
- assert.strictEqual(HTMLDecode(`hello &lt; &#58;`), `hello < :`);
13
- });
1
+ import assert from 'assert/strict';
2
+ import test from 'node:test';
3
+ import { DisableAnchorInterceptInHtml, HTMLDecode } from "./browser";
4
+
5
+ test('DisableAnchorInterceptInHtml', async t => {
6
+ assert.strictEqual(DisableAnchorInterceptInHtml(`<a href="blah">test</a>`), `<a data-interception="off" href="blah">test</a>`);
7
+ assert.strictEqual(DisableAnchorInterceptInHtml(`<div><a href="blah">test</a><a href="blah">test</a></div>`), `<div><a data-interception="off" href="blah">test</a><a data-interception="off" href="blah">test</a></div>`);
8
+ assert.strictEqual(DisableAnchorInterceptInHtml(`<p href="blah">test</p>`), `<p href="blah">test</p>`);
9
+ });
10
+
11
+ test('HTMLDecode', async t => {
12
+ assert.strictEqual(HTMLDecode(`hello &lt; &#58;`), `hello < :`);
13
+ });