@kitajs/ts-html-plugin 4.1.3 → 5.0.0-next.0

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 CHANGED
@@ -45,11 +45,12 @@
45
45
  - [Running as CLI](#running-as-cli)
46
46
  - [Handling Warnings](#handling-warnings)
47
47
  - [Vscode](#vscode)
48
+ - [tsgo Compatibility](#tsgo-compatibility)
48
49
  - [Error codes](#error-codes)
49
- - [K601](#k601)
50
- - [K602](#k602)
51
- - [K603](#k603)
52
- - [K604](#k604)
50
+ - [TS88601](#ts88601)
51
+ - [TS88602](#ts88602)
52
+ - [TS88603](#ts88603)
53
+ - [TS88604](#ts88604)
53
54
  - [JSX](#jsx)
54
55
  - [Special cases](#special-cases)
55
56
 
@@ -80,9 +81,8 @@ manager, and put this inside your `tsconfig.json`.
80
81
 
81
82
  {
82
83
  "compilerOptions": {
83
- "jsx": "react",
84
- "jsxFactory": "Html.createElement",
85
- "jsxFragmentFactory": "Html.Fragment",
84
+ "jsx": "react-jsx",
85
+ "jsxImportSource": "@kitajs/html",
86
86
  "plugins": [{ "name": "@kitajs/ts-html-plugin" }]
87
87
  }
88
88
  }
@@ -94,7 +94,7 @@ manager, and put this inside your `tsconfig.json`.
94
94
 
95
95
  ## Running as CLI
96
96
 
97
- You can also run this project as a CLI tool. Which is a great way to ensue project-wide
97
+ You can also run this project as a CLI tool. Which is a great way to ensure project-wide
98
98
  security. Also it's a great way to integrate with your CI/CD pipeline.
99
99
 
100
100
  ```sh
@@ -137,9 +137,9 @@ Sometimes, the plugin may not detect that a string or variable is safe for use a
137
137
  emit warnings, even when you are confident there are no security issues. Here are ways to
138
138
  address this:
139
139
 
140
- 1. **Keep using use the `safe` Attribute:** Even if you are certain that the content is
141
- free from XSS vulnerabilities, you can still use the `safe` attribute for added
142
- assurance. After all, what's the problem of being safe twice?
140
+ 1. **Keep using the `safe` Attribute:** Even if you are certain that the content is free
141
+ from XSS vulnerabilities, you can still use the `safe` attribute for added assurance.
142
+ After all, what's the problem of being safe twice?
143
143
 
144
144
  ```tsx
145
145
  const html = <div safe>{content}</div>;
@@ -178,9 +178,29 @@ current project's typescript version.
178
178
 
179
179
  <br />
180
180
 
181
+ ## tsgo Compatibility
182
+
183
+ [tsgo](https://github.com/microsoft/typescript-go) (the native TypeScript compiler
184
+ preview) does not currently implement support for Language Service Plugins. This means
185
+ that when using tsgo, your IDE will not show XSS warnings and errors from this plugin.
186
+
187
+ However, the `xss-scan` CLI tool will continue to work normally, as it uses the standard
188
+ TypeScript compiler APIs. You can still use `xss-scan` in your CI/CD pipeline to catch XSS
189
+ vulnerabilities even when developing with tsgo.
190
+
191
+ ```sh
192
+ # This works regardless of whether you use tsgo or tsc
193
+ xss-scan
194
+ ```
195
+
196
+ <br />
197
+
181
198
  ## Error codes
182
199
 
183
- ### K601
200
+ ### TS88601
201
+
202
+ **Content may introduce an XSS vulnerability and must be marked with the `safe`
203
+ attribute.**
184
204
 
185
205
  Usage of JSX expression without safe attribute. This could lead to XSS vulnerabilities.
186
206
  Please use the safe attribute on the JSX element or prepend your variable with `safe`.
@@ -203,7 +223,9 @@ const html = <div>{safeContent}</div>;
203
223
 
204
224
  <br />
205
225
 
206
- ### K602
226
+ ### TS88602
227
+
228
+ **The `safe` attribute causes this content to be escaped more than once.**
207
229
 
208
230
  Usage of safe attribute on a JSX element whose children contains other JSX elements. It
209
231
  will lead to double escaping. If this is intended behavior, please extract the children
@@ -231,13 +253,16 @@ const html = (
231
253
 
232
254
  <br />
233
255
 
234
- ### K603
256
+ ### TS88603
257
+
258
+ **Content inside a Component must be escaped using escapeHtml().**
235
259
 
236
260
  You are using a xss-prone element as a children of a component. Please wrap it into a
237
261
  Html.escapeHtml() call or prepend it as a variable starting with `safe`.
238
262
 
239
- This error is similar to [K601](#k601), but instead of using `safe` native attribute, you
240
- need to use `Html.escapeHtml()` function because its a component and not a native JSX.
263
+ This error is similar to [TS88601](#ts88601), but instead of using `safe` native
264
+ attribute, you need to use `Html.escapeHtml()` function because its a component and not a
265
+ native JSX.
241
266
 
242
267
  ```tsx
243
268
  // ❌ Content variable may have a value of `<script>alert('xss')</script>`
@@ -256,7 +281,9 @@ const html = <Component>{safeContent}</Component>;
256
281
 
257
282
  <br />
258
283
 
259
- ### K604
284
+ ### TS88604
285
+
286
+ **The `safe` attribute is unused in this context.**
260
287
 
261
288
  You are using the safe attribute on expressions that does not contain any XSS
262
289
  vulnerabilities. Please remove the safe attribute or prepend your variable with `unsafe`.
package/bin/index.js ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { main } = require('../dist/cli.js');
4
+
5
+ void main().catch((error) => {
6
+ console.error(error);
7
+ process.exit(1);
8
+ });
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- #!/usr/bin/env node
2
- export {};
1
+ export declare function main(): Promise<never>;
3
2
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAuGA,wBAAsB,IAAI,mBA6HzB"}
package/dist/cli.js CHANGED
@@ -1,12 +1,14 @@
1
- #!/usr/bin/env node
2
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
3
5
  Object.defineProperty(exports, "__esModule", { value: true });
4
- const tslib_1 = require("tslib");
5
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
- const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
7
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
8
- const typescript_1 = tslib_1.__importDefault(require("typescript"));
9
- const yargs_1 = tslib_1.__importDefault(require("yargs"));
6
+ exports.main = main;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const node_fs_1 = __importDefault(require("node:fs"));
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const typescript_1 = __importDefault(require("typescript"));
11
+ const yargs_1 = __importDefault(require("yargs"));
10
12
  const helpers_1 = require("yargs/helpers");
11
13
  const util_1 = require("./util");
12
14
  const { version } = require('../package.json');
@@ -167,5 +169,4 @@ async function main() {
167
169
  console.log(chalk_1.default.green(`No XSS vulnerabilities found in ${files.length} files!`));
168
170
  process.exit(0);
169
171
  }
170
- main().catch(console.error);
171
172
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  export declare const Xss: {
2
- code: any;
2
+ code: number;
3
3
  message: string;
4
4
  };
5
5
  export declare const DoubleEscape: {
6
- code: any;
6
+ code: number;
7
7
  message: string;
8
8
  };
9
9
  export declare const ComponentXss: {
10
- code: any;
10
+ code: number;
11
11
  message: string;
12
12
  };
13
13
  export declare const UnusedSafe: {
14
- code: any;
14
+ code: number;
15
15
  message: string;
16
16
  };
17
17
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,GAAG;UACI,GAAG;;CAEtB,CAAC;AAEF,eAAO,MAAM,YAAY;UACL,GAAG;;CAEtB,CAAC;AAEF,eAAO,MAAM,YAAY;UACL,GAAG;;CAEtB,CAAC;AAEF,eAAO,MAAM,UAAU;UACH,GAAG;;CAEtB,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,GAAG;;;CAGf,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
package/dist/errors.js CHANGED
@@ -1,23 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnusedSafe = exports.ComponentXss = exports.DoubleEscape = exports.Xss = void 0;
4
- function urlDocs(error) {
5
- return `https://html.kitajs.org/packages/ts-html-plugin#${error}`;
4
+ function createError(code, message) {
5
+ return {
6
+ code,
7
+ message: process.env.INTERNAL_DISABLE_URL_DOCS !== 'true'
8
+ ? `${message}\nSee https://html.kitajs.org/TS${code}`
9
+ : message
10
+ };
6
11
  }
7
- exports.Xss = {
8
- code: '0 K601',
9
- message: `Usage of xss-prone content without \`safe\` attribute. ${urlDocs('k601')}`
10
- };
11
- exports.DoubleEscape = {
12
- code: '0 K602',
13
- message: `Double escaping detected. Please remove the \`safe\` attribute. ${urlDocs('k602')}`
14
- };
15
- exports.ComponentXss = {
16
- code: '0 K603',
17
- message: `Xss-prone content inside a Component, wrap it into a Html.escapeHtml() call. ${urlDocs('k603')}`
18
- };
19
- exports.UnusedSafe = {
20
- code: '0 K604',
21
- message: `Unused safe attribute. ${urlDocs('k604')}`
22
- };
12
+ // 88600 is the base code for all errors in this plugin.
13
+ // KITA in ASCII
14
+ // 75 * 105 * 116 * 97 = 88609500
15
+ // Simplify to 88600
16
+ exports.Xss = createError(88601, `Content may introduce an XSS vulnerability and must be marked with the \`safe\` attribute.`);
17
+ exports.DoubleEscape = createError(88602, `The \`safe\` attribute causes this content to be escaped more than once.`);
18
+ exports.ComponentXss = createError(88603, `Content inside a Component must be escaped using escapeHtml().`);
19
+ exports.UnusedSafe = createError(88604, `The \`safe\` attribute is unused in this context.`);
23
20
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,SAAS,OAAO,CAAC,KAAmB;IAClC,OAAO,mDAAmD,KAAK,EAAE,CAAC;AACpE,CAAC;AAEY,QAAA,GAAG,GAAG;IACjB,IAAI,EAAE,QAAe;IACrB,OAAO,EAAE,0DAA0D,OAAO,CAAC,MAAM,CAAC,EAAE;CACrF,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,QAAe;IACrB,OAAO,EAAE,mEAAmE,OAAO,CAAC,MAAM,CAAC,EAAE;CAC9F,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,QAAe;IACrB,OAAO,EAAE,gFAAgF,OAAO,CAAC,MAAM,CAAC,EAAE;CAC3G,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,QAAe;IACrB,OAAO,EAAE,0BAA0B,OAAO,CAAC,MAAM,CAAC,EAAE;CACrD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE;IAClD,OAAO;QACL,IAAI;QACJ,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM;YAC9C,CAAC,CAAC,GAAG,OAAO,mCAAmC,IAAI,EAAE;YACrD,CAAC,CAAC,OAAO;KACd,CAAC;AAAA,CACH;AAED,wDAAwD;AACxD,gBAAgB;AAChB,iCAAiC;AACjC,oBAAoB;AAEP,QAAA,GAAG,GAAG,WAAW,CAC5B,KAAK,EACL,4FAA4F,CAC7F,CAAC;AAEW,QAAA,YAAY,GAAG,WAAW,CACrC,KAAK,EACL,0EAA0E,CAC3E,CAAC;AAEW,QAAA,YAAY,GAAG,WAAW,CACrC,KAAK,EACL,gEAAgE,CACjE,CAAC;AAEW,QAAA,UAAU,GAAG,WAAW,CACnC,KAAK,EACL,mDAAmD,CACpD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { default as TS, server } from 'typescript/lib/tsserverlibrary';
2
2
  declare const _default: (modules: {
3
3
  typescript: typeof TS;
4
4
  }) => {
5
- create(info: server.PluginCreateInfo): TS.LanguageService;
5
+ create(info: Pick<server.PluginCreateInfo, "languageService">): TS.LanguageService;
6
6
  };
7
7
  export = _default;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;yBAG3C,SAAS;IAAE,UAAU,EAAE,OAAO,EAAE,CAAA;CAAE;iBAIlD,MAAM,CAAC,gBAAgB;;AAJxC,kBAuCE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;;;;;;AAG5E,kBAuCE"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const util_1 = require("./util");
3
- module.exports = function initHtmlPlugin(modules) {
3
+ module.exports = function (modules) {
4
4
  const ts = modules.typescript;
5
5
  return {
6
6
  create(info) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,iCAAmE;AAEnE,iBAAS,SAAS,cAAc,CAAC,OAAkC;IACjE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAE9B,OAAO;QACL,MAAM,CAAC,IAA6B;YAClC,MAAM,KAAK,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEhD,KAAK,CAAC,sBAAsB,GAAG,SAAS,yBAAyB,CAAC,QAAQ;gBACxE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBAE1E,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7D,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;gBAElD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;gBAE7C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,IAAI;oBACnD,IAAA,mCAA4B,EAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;gBAEH,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,iCAAmE;AAEnE,iBAAS,UAAU,OAAkC,EAAE;IACrD,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAE9B,OAAO;QACL,MAAM,CAAC,IAAsD,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEhD,KAAK,CAAC,sBAAsB,GAAG,SAAS,yBAAyB,CAAC,QAAQ,EAAE;gBAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBAE1E,uCAAuC;gBACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7D,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;gBAElD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;gBAE7C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,IAAI,EAAE;oBACrD,IAAA,mCAA4B,EAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAAA,CAClE,CAAC,CAAC;gBAEH,OAAO,WAAW,CAAC;YAAA,CACpB,CAAC;YAEF,OAAO,KAAK,CAAC;QAAA,CACd;KACF,CAAC;AAAA,CACH,CAAC"}
package/dist/util.d.ts CHANGED
@@ -1,9 +1,7 @@
1
- import ts, { type JsxFragment } from 'typescript';
1
+ import { type JsxFragment, type JsxSelfClosingElement, type default as ts } from 'typescript';
2
2
  import type { Diagnostic, JsxElement, JsxOpeningElement, Node, default as TS, Type, TypeChecker } from 'typescript/lib/tsserverlibrary';
3
- /** If the node is a JSX element or fragment */
4
- export declare function isJsx(ts: typeof TS, node: TS.Node): node is JsxElement | JsxFragment;
5
3
  export declare function recursiveDiagnoseJsxElements(ts: typeof TS, node: Node, typeChecker: TypeChecker, original: Diagnostic[]): void;
6
- export declare function diagnoseJsxElement(ts: typeof TS, node: JsxElement | JsxFragment, typeChecker: TypeChecker, diagnostics: Diagnostic[]): void;
4
+ export declare function diagnoseJsxElement(ts: typeof TS, node: JsxElement | JsxFragment | JsxSelfClosingElement, typeChecker: TypeChecker, diagnostics: Diagnostic[]): void;
7
5
  export declare function isSafeAttribute(ts: typeof TS, type: Type | undefined, checker: TypeChecker, node: ts.Node): boolean;
8
6
  export declare function getSafeAttribute(element: JsxOpeningElement): ts.JsxAttributeLike | undefined;
9
7
  export declare function proxyObject<T extends object>(obj: T): T;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAEV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,OAAO,IAAI,EAAE,EACb,IAAI,EACJ,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAMxC,+CAA+C;AAC/C,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,UAAU,GAAG,WAAW,CAIpF;AAED,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EAAE,QAwBvB;AAiBD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,UAAU,EAAE,GACxB,IAAI,CA+FN;AAkED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,EAAE,CAAC,IAAI,GACZ,OAAO,CAkFT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,mCAQ1D;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAUvD"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,OAAO,IAAI,EAAE,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,IAAI,EACJ,OAAO,IAAI,EAAE,EACb,IAAI,EACJ,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAgBxC,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EAAE,QAwBvB;AAkBD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,qBAAqB,EACtD,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,UAAU,EAAE,GACxB,IAAI,CA+FN;AAkED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,OAAO,EAAE,EACb,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,EAAE,CAAC,IAAI,GACZ,OAAO,CAkHT;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,mCAQ1D;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAUvD"}
package/dist/util.js CHANGED
@@ -1,14 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJsx = isJsx;
4
36
  exports.recursiveDiagnoseJsxElements = recursiveDiagnoseJsxElements;
5
37
  exports.diagnoseJsxElement = diagnoseJsxElement;
6
38
  exports.isSafeAttribute = isSafeAttribute;
7
39
  exports.getSafeAttribute = getSafeAttribute;
8
40
  exports.proxyObject = proxyObject;
9
- const tslib_1 = require("tslib");
10
- const typescript_1 = tslib_1.__importDefault(require("typescript"));
11
- const Errors = tslib_1.__importStar(require("./errors"));
41
+ const Errors = __importStar(require("./errors"));
12
42
  const UPPERCASE = /[A-Z]/;
13
43
  const ESCAPE_HTML_REGEX = /^(\w+\.)?(escapeHtml|e\s*`|escape)/i;
14
44
  /** If the node is a JSX element or fragment */
@@ -35,9 +65,9 @@ function recursiveDiagnoseJsxElements(ts, node, typeChecker, original) {
35
65
  }
36
66
  }
37
67
  }
38
- function diagnostic(node, error, category) {
68
+ function diagnostic(ts, node, error, category) {
39
69
  return {
40
- category: typescript_1.default.DiagnosticCategory[category],
70
+ category: ts.DiagnosticCategory[category],
41
71
  messageText: Errors[error].message,
42
72
  code: Errors[error].code,
43
73
  file: node.getSourceFile(),
@@ -60,16 +90,16 @@ function diagnoseJsxElement(ts, node, typeChecker, diagnostics) {
60
90
  node.children.length === 0 ||
61
91
  // Only text elements
62
92
  (node.children.length === 1 && node.children[0].kind === ts.SyntaxKind.JsxText)) {
63
- diagnostics.push(diagnostic(safeAttribute, 'UnusedSafe', 'Warning'));
93
+ diagnostics.push(diagnostic(ts, safeAttribute, 'UnusedSafe', 'Warning'));
64
94
  return;
65
95
  }
66
96
  for (const exp of node.children) {
67
97
  if (
68
- // JSX Element inside safe
69
- ts.isJsxElement(exp) ||
98
+ // JSX Element inside safe (includes self-closing elements like <Component />)
99
+ isJsx(ts, exp) ||
70
100
  // Element is using safe with escapeHtml
71
101
  (ts.isJsxExpression(exp) && exp.expression?.getText().match(ESCAPE_HTML_REGEX))) {
72
- diagnostics.push(diagnostic(safeAttribute, 'DoubleEscape', 'Error'));
102
+ diagnostics.push(diagnostic(ts, safeAttribute, 'DoubleEscape', 'Error'));
73
103
  continue;
74
104
  }
75
105
  // Warn on unnecessary safe attributes
@@ -77,15 +107,15 @@ function diagnoseJsxElement(ts, node, typeChecker, diagnostics) {
77
107
  // has inner expression
78
108
  exp.expression) {
79
109
  // gets this expression or array of sub expressions
80
- const expressions = getNodeExpressions(exp.expression) || [exp.expression];
81
- // at least one jsx inside another jsx with safe
82
- if (expressions.some((inner) => ts.isJsxElement(inner))) {
83
- diagnostics.push(diagnostic(safeAttribute, 'DoubleEscape', 'Error'));
110
+ const expressions = getNodeExpressions(ts, exp.expression) || [exp.expression];
111
+ // at least one jsx inside another jsx with safe (includes self-closing elements)
112
+ if (expressions.some((inner) => isJsx(ts, inner))) {
113
+ diagnostics.push(diagnostic(ts, safeAttribute, 'DoubleEscape', 'Error'));
84
114
  continue;
85
115
  }
86
116
  // all of them must be safe
87
117
  if (expressions.every((inner) => isSafeAttribute(ts, typeChecker.getTypeAtLocation(inner), typeChecker, inner))) {
88
- diagnostics.push(diagnostic(safeAttribute, 'UnusedSafe', 'Warning'));
118
+ diagnostics.push(diagnostic(ts, safeAttribute, 'UnusedSafe', 'Warning'));
89
119
  }
90
120
  }
91
121
  }
@@ -94,7 +124,7 @@ function diagnoseJsxElement(ts, node, typeChecker, diagnostics) {
94
124
  }
95
125
  // If this expression does not have children, we can ignore it
96
126
  // for example it could be a self closing element
97
- if (!node.children) {
127
+ if (ts.isJsxSelfClosingElement(node) || !node.children) {
98
128
  return;
99
129
  }
100
130
  // Look for expressions
@@ -119,7 +149,7 @@ function diagnoseExpression(ts, node, typeChecker, diagnostics, isComponent) {
119
149
  if (isJsx(ts, node)) {
120
150
  return;
121
151
  }
122
- const expressions = getNodeExpressions(node);
152
+ const expressions = getNodeExpressions(ts, node);
123
153
  // ternary or binary expressions should be evaluated on each side
124
154
  if (expressions) {
125
155
  for (const inner of expressions) {
@@ -150,10 +180,10 @@ function diagnoseExpression(ts, node, typeChecker, diagnostics, isComponent) {
150
180
  }
151
181
  // Switch between component and element xss errors
152
182
  if (isComponent || ts.isJsxFragment(node)) {
153
- diagnostics.push(diagnostic(node, 'ComponentXss', 'Error'));
183
+ diagnostics.push(diagnostic(ts, node, 'ComponentXss', 'Error'));
154
184
  }
155
185
  else {
156
- diagnostics.push(diagnostic(node, 'Xss', 'Error'));
186
+ diagnostics.push(diagnostic(ts, node, 'Xss', 'Error'));
157
187
  }
158
188
  }
159
189
  function isSafeAttribute(ts, type, checker, node) {
@@ -161,12 +191,39 @@ function isSafeAttribute(ts, type, checker, node) {
161
191
  if (!type) {
162
192
  return true;
163
193
  }
194
+ // Check if this is a property access to .children (from PropsWithChildren)
195
+ // This must be checked BEFORE union recursion to avoid false positives
196
+ if (ts.isPropertyAccessExpression(node) && node.name.text === 'children') {
197
+ return true;
198
+ }
199
+ // Consolidated identifier checks - MUST be before union recursion
200
+ if (ts.isIdentifier(node)) {
201
+ // Destructured or direct `children` parameter (e.g., function Test({ children }: PropsWithChildren))
202
+ if (node.text === 'children') {
203
+ return true;
204
+ }
205
+ // Check if variable is initialized with JSX (e.g., const element = <div />)
206
+ const symbol = checker.getSymbolAtLocation(node);
207
+ if (symbol) {
208
+ const declarations = symbol.getDeclarations();
209
+ if (declarations) {
210
+ for (const decl of declarations) {
211
+ if (ts.isVariableDeclaration(decl) &&
212
+ decl.initializer &&
213
+ isJsx(ts, decl.initializer)) {
214
+ return true;
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
164
220
  // Any type is never safe
165
221
  if (type.flags & ts.TypeFlags.Any) {
166
222
  return false;
167
223
  }
224
+ // Check type aliases for JSX.Element and Html.Children
168
225
  if (type.aliasSymbol) {
169
- // Allows JSX.Element
226
+ // Allows JSX.Element (when the alias is preserved)
170
227
  if (node &&
171
228
  type.aliasSymbol.escapedName === 'Element' &&
172
229
  // @ts-expect-error - Fast way of checking
@@ -244,36 +301,42 @@ function proxyObject(obj) {
244
301
  * Returns more than one node if the node is a binary expression or a conditional
245
302
  * expression
246
303
  */
247
- function getNodeExpressions(node) {
304
+ function getNodeExpressions(ts, node) {
248
305
  // Checks operators
249
- if (typescript_1.default.isBinaryExpression(node)) {
306
+ if (ts.isBinaryExpression(node)) {
250
307
  // Ignores operations which results in a boolean
251
- if (isBooleanBinaryOperatorToken(node.operatorToken)) {
308
+ if (isBooleanBinaryOperatorToken(ts, node.operatorToken)) {
252
309
  return [];
253
310
  }
254
- // Diagnose both sides since both sides can be executed, e.g:
255
- // a empty string in the left side will execute the right side
311
+ // For && operator, the left side is only rendered when falsy
312
+ // (empty string, null, undefined, 0, false, NaN) - none of which are XSS risks
313
+ // So we only need to diagnose the right side
314
+ if (node.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
315
+ return [node.right];
316
+ }
317
+ // For || and ?? operators, both sides can be rendered with potentially unsafe values
318
+ // So we diagnose both sides
256
319
  return [node.left, node.right];
257
320
  }
258
321
  // Checks the inner expression
259
- if (typescript_1.default.isConditionalExpression(node)) {
322
+ if (ts.isConditionalExpression(node)) {
260
323
  // ignore node.condition because its value will never be rendered
261
- return [node.whenFalse, node.whenFalse];
324
+ return [node.whenTrue, node.whenFalse];
262
325
  }
263
326
  return undefined;
264
327
  }
265
- function isBooleanBinaryOperatorToken(operator) {
328
+ function isBooleanBinaryOperatorToken(ts, operator) {
266
329
  switch (operator.kind) {
267
- case typescript_1.default.SyntaxKind.EqualsEqualsEqualsToken:
268
- case typescript_1.default.SyntaxKind.EqualsEqualsToken:
269
- case typescript_1.default.SyntaxKind.ExclamationEqualsEqualsToken:
270
- case typescript_1.default.SyntaxKind.ExclamationEqualsToken:
271
- case typescript_1.default.SyntaxKind.GreaterThanToken:
272
- case typescript_1.default.SyntaxKind.GreaterThanEqualsToken:
273
- case typescript_1.default.SyntaxKind.LessThanEqualsToken:
274
- case typescript_1.default.SyntaxKind.LessThanToken:
275
- case typescript_1.default.SyntaxKind.InstanceOfKeyword:
276
- case typescript_1.default.SyntaxKind.InKeyword:
330
+ case ts.SyntaxKind.EqualsEqualsEqualsToken:
331
+ case ts.SyntaxKind.EqualsEqualsToken:
332
+ case ts.SyntaxKind.ExclamationEqualsEqualsToken:
333
+ case ts.SyntaxKind.ExclamationEqualsToken:
334
+ case ts.SyntaxKind.GreaterThanToken:
335
+ case ts.SyntaxKind.GreaterThanEqualsToken:
336
+ case ts.SyntaxKind.LessThanEqualsToken:
337
+ case ts.SyntaxKind.LessThanToken:
338
+ case ts.SyntaxKind.InstanceOfKeyword:
339
+ case ts.SyntaxKind.InKeyword:
277
340
  return true;
278
341
  }
279
342
  return false;
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}