whopper 0.7.1 → 0.8.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.
Files changed (42) hide show
  1. package/dist/analyzer/apply.d.ts.map +1 -1
  2. package/dist/analyzer/apply.js +31 -2
  3. package/dist/analyzer/apply.js.map +1 -1
  4. package/dist/analyzer/apply.test.js +60 -2
  5. package/dist/analyzer/apply.test.js.map +1 -1
  6. package/dist/analyzer/match.d.ts +10 -2
  7. package/dist/analyzer/match.d.ts.map +1 -1
  8. package/dist/analyzer/match.js +80 -3
  9. package/dist/analyzer/match.js.map +1 -1
  10. package/dist/analyzer/match.test.js +60 -1
  11. package/dist/analyzer/match.test.js.map +1 -1
  12. package/dist/analyzer/scope.d.ts +17 -0
  13. package/dist/analyzer/scope.d.ts.map +1 -0
  14. package/dist/analyzer/scope.js +43 -0
  15. package/dist/analyzer/scope.js.map +1 -0
  16. package/dist/analyzer/scope.test.d.ts +2 -0
  17. package/dist/analyzer/scope.test.d.ts.map +1 -0
  18. package/dist/analyzer/scope.test.js +51 -0
  19. package/dist/analyzer/scope.test.js.map +1 -0
  20. package/dist/analyzer/types.d.ts +1 -0
  21. package/dist/analyzer/types.d.ts.map +1 -1
  22. package/dist/commands/detect_utils.d.ts.map +1 -1
  23. package/dist/commands/detect_utils.js +14 -0
  24. package/dist/commands/detect_utils.js.map +1 -1
  25. package/dist/commands/detect_utils.test.js +75 -0
  26. package/dist/commands/detect_utils.test.js.map +1 -1
  27. package/dist/signatures/_types.d.ts +10 -5
  28. package/dist/signatures/_types.d.ts.map +1 -1
  29. package/dist/signatures/signatures.test.js +15 -2
  30. package/dist/signatures/signatures.test.js.map +1 -1
  31. package/dist/signatures/technologies/movable_type.test.js +2 -2
  32. package/dist/signatures/technologies/movable_type.test.js.map +1 -1
  33. package/dist/signatures/technologies/tinymce.d.ts.map +1 -1
  34. package/dist/signatures/technologies/tinymce.js +17 -1
  35. package/dist/signatures/technologies/tinymce.js.map +1 -1
  36. package/dist/signatures/technologies/tinymce.test.d.ts +2 -0
  37. package/dist/signatures/technologies/tinymce.test.d.ts.map +1 -0
  38. package/dist/signatures/technologies/tinymce.test.js +106 -0
  39. package/dist/signatures/technologies/tinymce.test.js.map +1 -0
  40. package/dist/signatures/technologies/wordpress.test.js +41 -0
  41. package/dist/signatures/technologies/wordpress.test.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { applySignature } from "../../analyzer/apply.js";
3
+ import { tinyMceSignature } from "./tinymce.js";
4
+ function createMockContext(overrides = {}) {
5
+ return {
6
+ browser: {},
7
+ page: {},
8
+ urls: [],
9
+ responses: [],
10
+ cookies: [],
11
+ javascriptVariables: {},
12
+ timeoutMs: 30000,
13
+ timeoutOccurred: false,
14
+ ...overrides,
15
+ };
16
+ }
17
+ function createMockResponse(overrides = {}) {
18
+ return {
19
+ url: "https://example.com/js/tinymce/tinymce.min.js",
20
+ host: "example.com",
21
+ isFirstParty: true,
22
+ status: 200,
23
+ headers: { "content-type": "application/javascript" },
24
+ body: "",
25
+ ...overrides,
26
+ };
27
+ }
28
+ function versionsOf(detection) {
29
+ return [
30
+ ...new Set((detection?.evidences ?? [])
31
+ .map((evidence) => evidence.version)
32
+ .filter((version) => version !== undefined)),
33
+ ];
34
+ }
35
+ function editorManager(major, minor) {
36
+ return `documentBaseURL:null,suffix:null,majorVersion:"${major}",minorVersion:"${minor}",releaseDate:"2026-07-27",i18n:t`;
37
+ }
38
+ describe("tinyMceSignature", () => {
39
+ describe("body matching", () => {
40
+ it("joins the major and minor fields into the full version", () => {
41
+ const context = createMockContext({
42
+ responses: [createMockResponse({ body: editorManager("8", "8.2") })],
43
+ });
44
+ expect(versionsOf(applySignature(context, tinyMceSignature))).toEqual([
45
+ "8.8.2",
46
+ ]);
47
+ });
48
+ it("reads the same fields in a TinyMCE 4 bundle", () => {
49
+ const context = createMockContext({
50
+ responses: [createMockResponse({ body: editorManager("4", "9.11") })],
51
+ });
52
+ expect(versionsOf(applySignature(context, tinyMceSignature))).toEqual([
53
+ "4.9.11",
54
+ ]);
55
+ });
56
+ it("reads the version out of an application bundle", () => {
57
+ const context = createMockContext({
58
+ responses: [
59
+ createMockResponse({
60
+ url: "https://example.com/static/spa/index-3ef96762.js",
61
+ body: `var e=1;${editorManager("8", "8.2")};export{e};`,
62
+ }),
63
+ ],
64
+ });
65
+ expect(versionsOf(applySignature(context, tinyMceSignature))).toEqual([
66
+ "8.8.2",
67
+ ]);
68
+ });
69
+ it("ignores a version named in prose on an unrelated page", () => {
70
+ const context = createMockContext({
71
+ responses: [
72
+ createMockResponse({
73
+ url: "https://example.com/blog/release-notes.html",
74
+ headers: { "content-type": "text/html" },
75
+ body: "<p>We upgraded to TinyMCE version 5.10.9 (2023-11-15) last year.</p>",
76
+ }),
77
+ ],
78
+ });
79
+ expect(applySignature(context, tinyMceSignature)).toBeUndefined();
80
+ });
81
+ it("detects a bundle without the version fields but reports no version", () => {
82
+ const context = createMockContext({
83
+ responses: [
84
+ createMockResponse({ body: '!function(){"use strict"}();' }),
85
+ ],
86
+ });
87
+ const detection = applySignature(context, tinyMceSignature);
88
+ expect(detection).toBeDefined();
89
+ expect(versionsOf(detection)).toEqual([]);
90
+ });
91
+ });
92
+ describe("javascript variables", () => {
93
+ it("detects TinyMCE without reporting the major number as a version", () => {
94
+ const context = createMockContext({
95
+ javascriptVariables: {
96
+ "tinyMCE.majorVersion": "8",
97
+ tinymce: { majorVersion: "8", minorVersion: "8.2" },
98
+ },
99
+ });
100
+ const detection = applySignature(context, tinyMceSignature);
101
+ expect(detection).toBeDefined();
102
+ expect(versionsOf(detection)).toEqual([]);
103
+ });
104
+ });
105
+ });
106
+ //# sourceMappingURL=tinymce.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tinymce.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/tinymce.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,SAAS,iBAAiB,CACxB,YAAyE,EAAE;IAE3E,OAAO;QACL,OAAO,EAAE,EAAwB;QACjC,IAAI,EAAE,EAAqB;QAC3B,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,mBAAmB,EAAE,EAAE;QACvB,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,KAAK;QACtB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,YAA+B,EAAE;IAC3D,OAAO;QACL,GAAG,EAAE,+CAA+C;QACpD,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,wBAAwB,EAAE;QACrD,IAAI,EAAE,EAAE;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,SAA4C;IAC9D,OAAO;QACL,GAAG,IAAI,GAAG,CACR,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;aACzB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;aACnC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CACjE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,KAAa;IACjD,OAAO,kDAAkD,KAAK,mBAAmB,KAAK,mCAAmC,CAAC;AAC5H,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aACrE,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpE,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;aACtE,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpE,QAAQ;aACT,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE;oBACT,kBAAkB,CAAC;wBACjB,GAAG,EAAE,kDAAkD;wBACvD,IAAI,EAAE,WAAW,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa;qBACxD,CAAC;iBACH;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpE,OAAO;aACR,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE;oBACT,kBAAkB,CAAC;wBACjB,GAAG,EAAE,6CAA6C;wBAClD,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;wBACxC,IAAI,EAAE,sEAAsE;qBAC7E,CAAC;iBACH;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,SAAS,EAAE;oBACT,kBAAkB,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;iBAC7D;aACF,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,mBAAmB,EAAE;oBACnB,sBAAsB,EAAE,GAAG;oBAC3B,OAAO,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE;iBACpD;aACF,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -86,6 +86,47 @@ describe("wordpressSignature", () => {
86
86
  const result = applySignature(context, wordpressSignature);
87
87
  expect(result).toBeDefined();
88
88
  });
89
+ it("does not detect WordPress from a third-party URL quoted inside a first-party script", () => {
90
+ const context = createMockContext({
91
+ responses: [
92
+ createMockResponse({
93
+ url: "https://example.com/js/app.min.js",
94
+ host: "example.com",
95
+ headers: { "content-type": "application/javascript" },
96
+ body: '"https://external.example/wp-content/plugins/foo/bar.js"',
97
+ }),
98
+ ],
99
+ });
100
+ const result = applySignature(context, wordpressSignature);
101
+ expect(result).toBeUndefined();
102
+ });
103
+ it("detects WordPress from an in-scope absolute wp-content URL", () => {
104
+ const context = createMockContext({
105
+ responses: [
106
+ createMockResponse({
107
+ body: '<link href="https://example.com/wp-content/themes/foo/style.css">',
108
+ }),
109
+ ],
110
+ });
111
+ const result = applySignature(context, wordpressSignature);
112
+ expect(result).toBeDefined();
113
+ });
114
+ it("does not read a version across an out-of-scope URL between the tokens", () => {
115
+ // "WordPress" and "6.4.2" are separated by an out-of-scope URL. Because
116
+ // the URL is excluded by span (not replaced with whitespace), the version
117
+ // pattern must not bridge the two into a spurious 6.4.2 detection. An
118
+ // in-scope relative path still yields a WordPress detection.
119
+ const context = createMockContext({
120
+ responses: [
121
+ createMockResponse({
122
+ body: '<link href="/wp-content/style.css"> WordPress https://external.example/a/b.js 6.4.2',
123
+ }),
124
+ ],
125
+ });
126
+ const result = applySignature(context, wordpressSignature);
127
+ expect(result).toBeDefined();
128
+ expect(result?.evidences?.every((e) => e.version !== "6.4.2")).toBe(true);
129
+ });
89
130
  });
90
131
  });
91
132
  //# sourceMappingURL=wordpress.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wordpress.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/wordpress.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wordpress.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/wordpress.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whopper",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "Whopper is a CLI tool that discovers and detects web technologies used on websites.",
5
5
  "scripts": {
6
6
  "build": "tsc -p tsconfig.json",