keycloakify 11.14.0 → 11.14.2
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/README.md +3 -0
- package/bin/502.index.js +11 -9
- package/bin/97.index.js +11 -9
- package/lib/kcSanitize/KcSanitizerPolicy.d.ts +1 -0
- package/lib/kcSanitize/KcSanitizerPolicy.js +4 -0
- package/lib/kcSanitize/KcSanitizerPolicy.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/tools/npmInstall.ts +13 -13
- package/src/lib/kcSanitize/KcSanitizerPolicy.ts +6 -0
package/README.md
CHANGED
|
@@ -142,6 +142,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
142
142
|
<td align="center" valign="top" width="14.28%"><a href="http://www.aaronwong.se"><img src="https://avatars.githubusercontent.com/u/450741?v=4?s=100" width="100px;" alt="Aaron Wong"/><br /><sub><b>Aaron Wong</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=acreations" title="Code">💻</a></td>
|
|
143
143
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/db6edr"><img src="https://avatars.githubusercontent.com/u/264334?v=4?s=100" width="100px;" alt="Dirk Raeder"/><br /><sub><b>Dirk Raeder</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=db6edr" title="Code">💻</a></td>
|
|
144
144
|
</tr>
|
|
145
|
+
<tr>
|
|
146
|
+
<td align="center" valign="top" width="14.28%"><a href="https://th.wtf"><img src="https://avatars.githubusercontent.com/u/13462281?v=4?s=100" width="100px;" alt="Thiago"/><br /><sub><b>Thiago</b></sub></a><br /><a href="https://github.com/keycloakify/keycloakify/commits?author=Langsdorf" title="Code">💻</a></td>
|
|
147
|
+
</tr>
|
|
145
148
|
</tbody>
|
|
146
149
|
</table>
|
|
147
150
|
|
package/bin/502.index.js
CHANGED
|
@@ -243,29 +243,31 @@ async function npmInstall(params) {
|
|
|
243
243
|
const packageMangers = [
|
|
244
244
|
{
|
|
245
245
|
binName: "yarn",
|
|
246
|
-
|
|
246
|
+
lockFileBasenames: ["yarn.lock"]
|
|
247
247
|
},
|
|
248
248
|
{
|
|
249
249
|
binName: "npm",
|
|
250
|
-
|
|
250
|
+
lockFileBasenames: ["package-lock.json"]
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
253
|
binName: "pnpm",
|
|
254
|
-
|
|
254
|
+
lockFileBasenames: ["pnpm-lock.yaml"]
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
binName: "bun",
|
|
258
|
-
|
|
258
|
+
lockFileBasenames: ["bun.lockdb", "bun.lockb", "bun.lock"]
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
binName: "deno",
|
|
262
|
-
|
|
262
|
+
lockFileBasenames: ["deno.lock"]
|
|
263
263
|
}
|
|
264
264
|
];
|
|
265
|
-
for (const
|
|
266
|
-
|
|
267
|
-
external_fs_.existsSync((0,external_path_.join)(
|
|
268
|
-
|
|
265
|
+
for (const { binName, lockFileBasenames } of packageMangers) {
|
|
266
|
+
for (const lockFileBasename of lockFileBasenames) {
|
|
267
|
+
if (external_fs_.existsSync((0,external_path_.join)(packageJsonDirPath, lockFileBasename)) ||
|
|
268
|
+
external_fs_.existsSync((0,external_path_.join)(process.cwd(), lockFileBasename))) {
|
|
269
|
+
return binName;
|
|
270
|
+
}
|
|
269
271
|
}
|
|
270
272
|
}
|
|
271
273
|
throw new Error("No lock file found, cannot tell which package manager to use for installing dependencies.");
|
package/bin/97.index.js
CHANGED
|
@@ -1088,29 +1088,31 @@ async function npmInstall(params) {
|
|
|
1088
1088
|
const packageMangers = [
|
|
1089
1089
|
{
|
|
1090
1090
|
binName: "yarn",
|
|
1091
|
-
|
|
1091
|
+
lockFileBasenames: ["yarn.lock"]
|
|
1092
1092
|
},
|
|
1093
1093
|
{
|
|
1094
1094
|
binName: "npm",
|
|
1095
|
-
|
|
1095
|
+
lockFileBasenames: ["package-lock.json"]
|
|
1096
1096
|
},
|
|
1097
1097
|
{
|
|
1098
1098
|
binName: "pnpm",
|
|
1099
|
-
|
|
1099
|
+
lockFileBasenames: ["pnpm-lock.yaml"]
|
|
1100
1100
|
},
|
|
1101
1101
|
{
|
|
1102
1102
|
binName: "bun",
|
|
1103
|
-
|
|
1103
|
+
lockFileBasenames: ["bun.lockdb", "bun.lockb", "bun.lock"]
|
|
1104
1104
|
},
|
|
1105
1105
|
{
|
|
1106
1106
|
binName: "deno",
|
|
1107
|
-
|
|
1107
|
+
lockFileBasenames: ["deno.lock"]
|
|
1108
1108
|
}
|
|
1109
1109
|
];
|
|
1110
|
-
for (const
|
|
1111
|
-
|
|
1112
|
-
external_fs_.existsSync((0,external_path_.join)(
|
|
1113
|
-
|
|
1110
|
+
for (const { binName, lockFileBasenames } of packageMangers) {
|
|
1111
|
+
for (const lockFileBasename of lockFileBasenames) {
|
|
1112
|
+
if (external_fs_.existsSync((0,external_path_.join)(packageJsonDirPath, lockFileBasename)) ||
|
|
1113
|
+
external_fs_.existsSync((0,external_path_.join)(process.cwd(), lockFileBasename))) {
|
|
1114
|
+
return binName;
|
|
1115
|
+
}
|
|
1114
1116
|
}
|
|
1115
1117
|
}
|
|
1116
1118
|
throw new Error("No lock file found, cannot tell which package manager to use for installing dependencies.");
|
|
@@ -12,6 +12,7 @@ export declare class KcSanitizerPolicy {
|
|
|
12
12
|
static readonly OFFSITE_URL: RegExp;
|
|
13
13
|
static readonly NUMBER: RegExp;
|
|
14
14
|
static readonly NAME: RegExp;
|
|
15
|
+
static readonly TARGET: RegExp;
|
|
15
16
|
static readonly ALIGN: RegExp;
|
|
16
17
|
static readonly VALIGN: RegExp;
|
|
17
18
|
static readonly HISTORY_BACK: RegExp;
|
|
@@ -50,6 +50,9 @@ export class KcSanitizerPolicy {
|
|
|
50
50
|
.allowAttributes("name")
|
|
51
51
|
.matching(this.NAME)
|
|
52
52
|
.onElements("a")
|
|
53
|
+
.allowAttributes("target")
|
|
54
|
+
.matching(this.TARGET)
|
|
55
|
+
.onElements("a")
|
|
53
56
|
.allowAttributes("onfocus", "onblur", "onclick", "onmousedown", "onmouseup")
|
|
54
57
|
.matching(this.HISTORY_BACK)
|
|
55
58
|
.onElements("a")
|
|
@@ -139,6 +142,7 @@ KcSanitizerPolicy.OFFSITE_URL = new RegExp("\\s*(?:(?:ht|f)tps?://|mailto:)[\\p{
|
|
|
139
142
|
);
|
|
140
143
|
KcSanitizerPolicy.NUMBER = new RegExp("[+-]?(?:(?:[0-9]+(?:\\.[0-9]*)?)|\\.[0-9]+)");
|
|
141
144
|
KcSanitizerPolicy.NAME = new RegExp("[a-zA-Z0-9\\-_\\$]+");
|
|
145
|
+
KcSanitizerPolicy.TARGET = new RegExp("^_blank$");
|
|
142
146
|
KcSanitizerPolicy.ALIGN = new RegExp("\\b(center|left|right|justify|char)\\b", "i" // Case-insensitive flag
|
|
143
147
|
);
|
|
144
148
|
KcSanitizerPolicy.VALIGN = new RegExp("\\b(baseline|bottom|middle|top)\\b", "i" // Case-insensitive flag
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KcSanitizerPolicy.js","sourceRoot":"","sources":["../../src/lib/kcSanitize/KcSanitizerPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qEAAqE;AACrE,2IAA2I;AAC3I,8DAA8D;AAC9D,+JAA+J;AAC/J,MAAM,OAAO,iBAAiB;
|
|
1
|
+
{"version":3,"file":"KcSanitizerPolicy.js","sourceRoot":"","sources":["../../src/lib/kcSanitize/KcSanitizerPolicy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,34 +18,34 @@ export async function npmInstall(params: { packageJsonDirPath: string }) {
|
|
|
18
18
|
const packageMangers = [
|
|
19
19
|
{
|
|
20
20
|
binName: "yarn",
|
|
21
|
-
|
|
21
|
+
lockFileBasenames: ["yarn.lock"]
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
binName: "npm",
|
|
25
|
-
|
|
25
|
+
lockFileBasenames: ["package-lock.json"]
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
binName: "pnpm",
|
|
29
|
-
|
|
29
|
+
lockFileBasenames: ["pnpm-lock.yaml"]
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
binName: "bun",
|
|
33
|
-
|
|
33
|
+
lockFileBasenames: ["bun.lockdb", "bun.lockb", "bun.lock"]
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
binName: "deno",
|
|
37
|
-
|
|
37
|
+
lockFileBasenames: ["deno.lock"]
|
|
38
38
|
}
|
|
39
39
|
] as const;
|
|
40
40
|
|
|
41
|
-
for (const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
pathJoin(packageJsonDirPath,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
for (const { binName, lockFileBasenames } of packageMangers) {
|
|
42
|
+
for (const lockFileBasename of lockFileBasenames) {
|
|
43
|
+
if (
|
|
44
|
+
fs.existsSync(pathJoin(packageJsonDirPath, lockFileBasename)) ||
|
|
45
|
+
fs.existsSync(pathJoin(process.cwd(), lockFileBasename))
|
|
46
|
+
) {
|
|
47
|
+
return binName;
|
|
48
|
+
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -46,6 +46,8 @@ export class KcSanitizerPolicy {
|
|
|
46
46
|
);
|
|
47
47
|
public static readonly NAME = new RegExp("[a-zA-Z0-9\\-_\\$]+");
|
|
48
48
|
|
|
49
|
+
public static readonly TARGET = new RegExp("^_blank$");
|
|
50
|
+
|
|
49
51
|
public static readonly ALIGN = new RegExp(
|
|
50
52
|
"\\b(center|left|right|justify|char)\\b",
|
|
51
53
|
"i" // Case-insensitive flag
|
|
@@ -136,6 +138,10 @@ export class KcSanitizerPolicy {
|
|
|
136
138
|
.matching(this.NAME)
|
|
137
139
|
.onElements("a")
|
|
138
140
|
|
|
141
|
+
.allowAttributes("target")
|
|
142
|
+
.matching(this.TARGET)
|
|
143
|
+
.onElements("a")
|
|
144
|
+
|
|
139
145
|
.allowAttributes("onfocus", "onblur", "onclick", "onmousedown", "onmouseup")
|
|
140
146
|
.matching(this.HISTORY_BACK)
|
|
141
147
|
.onElements("a")
|