whopper 0.4.0 → 0.5.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 (46) hide show
  1. package/dist/analyzer/apply.js +2 -2
  2. package/dist/analyzer/apply.js.map +1 -1
  3. package/dist/analyzer/match.d.ts +1 -0
  4. package/dist/analyzer/match.d.ts.map +1 -1
  5. package/dist/analyzer/match.js +1 -0
  6. package/dist/analyzer/match.js.map +1 -1
  7. package/dist/browser/active_scan.d.ts +5 -0
  8. package/dist/browser/active_scan.d.ts.map +1 -0
  9. package/dist/browser/active_scan.js +73 -0
  10. package/dist/browser/active_scan.js.map +1 -0
  11. package/dist/browser/active_scan.test.d.ts +2 -0
  12. package/dist/browser/active_scan.test.d.ts.map +1 -0
  13. package/dist/browser/active_scan.test.js +207 -0
  14. package/dist/browser/active_scan.test.js.map +1 -0
  15. package/dist/browser/index.d.ts.map +1 -1
  16. package/dist/browser/index.js +148 -36
  17. package/dist/browser/index.js.map +1 -1
  18. package/dist/browser/index.test.js +141 -3
  19. package/dist/browser/index.test.js.map +1 -1
  20. package/dist/browser/types.d.ts +1 -0
  21. package/dist/browser/types.d.ts.map +1 -1
  22. package/dist/commands/active_scan_runner.d.ts +5 -0
  23. package/dist/commands/active_scan_runner.d.ts.map +1 -0
  24. package/dist/commands/active_scan_runner.js +28 -0
  25. package/dist/commands/active_scan_runner.js.map +1 -0
  26. package/dist/commands/active_scan_runner.test.d.ts +2 -0
  27. package/dist/commands/active_scan_runner.test.d.ts.map +1 -0
  28. package/dist/commands/active_scan_runner.test.js +80 -0
  29. package/dist/commands/active_scan_runner.test.js.map +1 -0
  30. package/dist/commands/detect.d.ts.map +1 -1
  31. package/dist/commands/detect.js +7 -0
  32. package/dist/commands/detect.js.map +1 -1
  33. package/dist/commands/detect.test.js +12 -0
  34. package/dist/commands/detect.test.js.map +1 -1
  35. package/dist/signatures/_types.d.ts +6 -0
  36. package/dist/signatures/_types.d.ts.map +1 -1
  37. package/dist/signatures/signatures.test.js +24 -2
  38. package/dist/signatures/signatures.test.js.map +1 -1
  39. package/dist/signatures/technologies/magento.d.ts.map +1 -1
  40. package/dist/signatures/technologies/magento.js +6 -0
  41. package/dist/signatures/technologies/magento.js.map +1 -1
  42. package/dist/signatures/technologies/magento.test.d.ts +2 -0
  43. package/dist/signatures/technologies/magento.test.d.ts.map +1 -0
  44. package/dist/signatures/technologies/magento.test.js +28 -0
  45. package/dist/signatures/technologies/magento.test.js.map +1 -0
  46. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ import { applyActiveScans } from "./active_scan_runner.js";
3
+ const makeRequest = (impl) => {
4
+ const get = vi.fn(async (url) => {
5
+ const r = impl(url);
6
+ return {
7
+ status: () => r.status,
8
+ headers: () => ({}),
9
+ text: async () => r.body,
10
+ };
11
+ });
12
+ return { get, request: { get } };
13
+ };
14
+ const sig = {
15
+ name: "Magento",
16
+ rule: { confidence: "high" },
17
+ activeRules: [{ path: "./magento_version", bodyRegex: "^Magento/(\\S+)" }],
18
+ };
19
+ const otherSig = {
20
+ name: "Other",
21
+ rule: { confidence: "medium" },
22
+ };
23
+ describe("applyActiveScans", () => {
24
+ it("adds version evidence when detected and body matches", async () => {
25
+ const detections = [{ name: "Magento", evidences: [] }];
26
+ const { get, request } = makeRequest((url) => {
27
+ expect(url).toBe("https://example.com/shop/magento_version");
28
+ return { status: 200, body: "Magento/2.4 (Community)" };
29
+ });
30
+ await applyActiveScans("https://example.com/shop/", detections, [sig, otherSig], request, 5000);
31
+ expect(get).toHaveBeenCalledTimes(1);
32
+ expect(detections[0].evidences).toHaveLength(1);
33
+ expect(detections[0].evidences[0]).toMatchObject({
34
+ type: "body",
35
+ version: "2.4",
36
+ confidence: "high",
37
+ sourceUrl: "https://example.com/shop/magento_version",
38
+ });
39
+ });
40
+ it("does not run when signature is not in detections", async () => {
41
+ const detections = [{ name: "Other", evidences: [] }];
42
+ const { get, request } = makeRequest(() => ({ status: 200, body: "x" }));
43
+ await applyActiveScans("https://example.com/", detections, [sig, otherSig], request, 5000);
44
+ expect(get).not.toHaveBeenCalled();
45
+ expect(detections[0].evidences).toEqual([]);
46
+ });
47
+ it("leaves detection unchanged on non-200", async () => {
48
+ const detections = [{ name: "Magento", evidences: [] }];
49
+ const { request } = makeRequest(() => ({ status: 404, body: "" }));
50
+ await applyActiveScans("https://example.com/", detections, [sig], request, 5000);
51
+ expect(detections[0].evidences).toEqual([]);
52
+ });
53
+ it("leaves detection unchanged when bodyRegex does not match", async () => {
54
+ const detections = [{ name: "Magento", evidences: [] }];
55
+ const { request } = makeRequest(() => ({ status: 200, body: "<html/>" }));
56
+ await applyActiveScans("https://example.com/", detections, [sig], request, 5000);
57
+ expect(detections[0].evidences).toEqual([]);
58
+ });
59
+ it("uses activeRule.confidence override when present", async () => {
60
+ const sigLow = {
61
+ name: "Magento",
62
+ rule: { confidence: "high" },
63
+ activeRules: [
64
+ {
65
+ path: "./magento_version",
66
+ bodyRegex: "^Magento/(\\S+)",
67
+ confidence: "low",
68
+ },
69
+ ],
70
+ };
71
+ const detections = [{ name: "Magento", evidences: [] }];
72
+ const { request } = makeRequest(() => ({
73
+ status: 200,
74
+ body: "Magento/2.4.6",
75
+ }));
76
+ await applyActiveScans("https://example.com/", detections, [sigLow], request, 5000);
77
+ expect(detections[0].evidences[0].confidence).toBe("low");
78
+ });
79
+ });
80
+ //# sourceMappingURL=active_scan_runner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active_scan_runner.test.js","sourceRoot":"","sources":["../../src/commands/active_scan_runner.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,aAAa,QAAO,OAsHhC,CAAC"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,aAAa,QAAO,OA+IhC,CAAC"}
@@ -2,6 +2,7 @@ import { Command } from "commander";
2
2
  import { openPage } from "../browser/index.js";
3
3
  import { analyze } from "../analyzer/index.js";
4
4
  import { signatures } from "../signatures/index.js";
5
+ import { applyActiveScans } from "./active_scan_runner.js";
5
6
  import { logger, setLogLevel } from "../logger/index.js";
6
7
  import { LogLevel } from "../logger/types.js";
7
8
  import chalk from "chalk";
@@ -20,6 +21,8 @@ export const detectCommand = () => {
20
21
  .option("-l, --locale <locale>", "Browser locale (e.g. ja-JP, en-US)")
21
22
  .option("-H, --header <header>", "Extra HTTP header (e.g. -H \"X-Custom: value\"), can be specified multiple times", (value, prev) => [...prev, value], [])
22
23
  .option("-b, --block-cross-domain-redirect", "Block redirects to a different host", false)
24
+ .option("--idle-timeout <ms>", "Network idle threshold in milliseconds (default: 2000)", (v) => Number(v), 2000)
25
+ .option("-a, --active", "Enable active scanning (sends additional requests to technology-specific paths)", false)
23
26
  .action(async (url, options) => {
24
27
  if (options.debug) {
25
28
  logger.info("Debug mode enabled");
@@ -51,8 +54,12 @@ export const detectCommand = () => {
51
54
  ? extraHTTPHeaders
52
55
  : undefined,
53
56
  blockCrossDomainRedirect: options.blockCrossDomainRedirect,
57
+ networkIdleThresholdMs: options.idleTimeout,
54
58
  });
55
59
  const detections = analyze(context, signatures);
60
+ if (options.active && detections.length > 0) {
61
+ await applyActiveScans(context.page.url(), detections, signatures, context.page.context().request, options.timeout);
62
+ }
56
63
  const output = makeDetectCommandOutput(context.urls, detections, signatures);
57
64
  if (detections.length === 0) {
58
65
  logger.info("No technologies detected.");
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAY,EAAE;IACzC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;SAClD,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CACL,oBAAoB,EACpB,yBAAyB,EACzB,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAChB,KAAK,CACN;SACA,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,EAAE,KAAK,CAAC;SAC/D,MAAM,CAAC,YAAY,EAAE,+BAA+B,EAAE,KAAK,CAAC;SAC5D,MAAM,CAAC,2BAA2B,EAAE,0BAA0B,CAAC;SAC/D,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,CAAC;SACrE,MAAM,CACL,uBAAuB,EACvB,kFAAkF,EAClF,CAAC,KAAa,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EACnD,EAAc,CACf;SACA,MAAM,CACL,mCAAmC,EACnC,qCAAqC,EACrC,KAAK,CACN;SACA,MAAM,CACL,KAAK,EACH,GAAW,EACX,OASC,EACD,EAAE;QACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CACT,iBAAiB;YACjB,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAC7D,CAAC;QAEF,IAAI,OAAO,GAAgD,IAAI,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,gBAAgB,GAA2B,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;oBAClD,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;oBACzC,SAAS;gBACX,CAAC;gBACD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,CAAC;YAED,OAAO,GAAG,MAAM,QAAQ,CACtB,GAAG,EACH,OAAO,CAAC,OAAO,EACf,0BAA0B,CAAC,UAAU,CAAC,EACtC;gBACE,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC;oBACxD,CAAC,CAAC,gBAAgB;oBAClB,CAAC,CAAC,SAAS;gBACb,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;aAC3D,CACF,CAAC;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,uBAAuB,CACpC,OAAO,CAAC,IAAI,EACZ,UAAU,EACV,UAAU,CACX,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,8BAA8B,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IACE,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACtC,CAAC;gBACD,MAAM,CAAC,KAAK,CACV,qDAAqD;oBACrD,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CACvC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,13 @@ describe("detectCommand", () => {
108
108
  expect(blockOpt).toBeDefined();
109
109
  expect(blockOpt?.defaultValue).toBe(false);
110
110
  });
111
+ it("should have idle-timeout option with default 2000", () => {
112
+ const command = detectCommand();
113
+ const options = command.options;
114
+ const idleOpt = options.find((o) => o.long === "--idle-timeout");
115
+ expect(idleOpt).toBeDefined();
116
+ expect(idleOpt?.defaultValue).toBe(2000);
117
+ });
111
118
  });
112
119
  describe("action execution", () => {
113
120
  it("should call openPage with correct arguments", async () => {
@@ -117,6 +124,7 @@ describe("detectCommand", () => {
117
124
  locale: undefined,
118
125
  extraHTTPHeaders: undefined,
119
126
  blockCrossDomainRedirect: false,
127
+ networkIdleThresholdMs: 2000,
120
128
  });
121
129
  });
122
130
  it("should use custom timeout when provided", async () => {
@@ -131,6 +139,10 @@ describe("detectCommand", () => {
131
139
  await runCommand(["--block-cross-domain-redirect"]);
132
140
  expect(openPage).toHaveBeenCalledWith("https://example.com", 10000, expect.any(Array), expect.objectContaining({ blockCrossDomainRedirect: true }));
133
141
  });
142
+ it("should pass custom idle-timeout when provided", async () => {
143
+ await runCommand(["--idle-timeout", "500"]);
144
+ expect(openPage).toHaveBeenCalledWith("https://example.com", 10000, expect.any(Array), expect.objectContaining({ networkIdleThresholdMs: 500 }));
145
+ });
134
146
  it("should pass locale when provided", async () => {
135
147
  await runCommand(["--locale", "ja-JP"]);
136
148
  expect(openPage).toHaveBeenCalledWith("https://example.com", 10000, expect.any(Array), expect.objectContaining({ locale: "ja-JP" }));
@@ -1 +1 @@
1
- {"version":3,"file":"detect.test.js","sourceRoot":"","sources":["../../src/commands/detect.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.test.js","sourceRoot":"","sources":["../../src/commands/detect.test.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,18 @@ export type Rule = {
10
10
  javascriptVariables?: Record<string, Regex>;
11
11
  requiredJavascriptVariables?: string[];
12
12
  };
13
+ export type ActiveRule = {
14
+ path: string;
15
+ bodyRegex: Regex;
16
+ confidence?: Confidence;
17
+ };
13
18
  export type Signature = {
14
19
  name: string;
15
20
  description?: string;
16
21
  cpe?: string;
17
22
  runtime?: Runtime;
18
23
  rule?: Rule;
24
+ activeRules?: ActiveRule[];
19
25
  impliedSoftwares?: string[];
20
26
  };
21
27
  //# sourceMappingURL=_types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/signatures/_types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,IAAI,GAAG;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAG5C,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../src/signatures/_types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,IAAI,GAAG;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAG5C,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
  import { signatures } from "./index.js";
3
+ import { isRelativePath } from "../browser/active_scan.js";
4
+ const VALID_CONFIDENCES = ["high", "medium", "low"];
3
5
  describe("signatures validation", () => {
4
6
  describe("required fields", () => {
5
7
  it("all signatures should have a non-empty name", () => {
@@ -18,10 +20,9 @@ describe("signatures validation", () => {
18
20
  });
19
21
  describe("confidence values", () => {
20
22
  it("all rules should have valid confidence values", () => {
21
- const validConfidences = ["high", "medium", "low"];
22
23
  for (const sig of signatures) {
23
24
  if (sig.rule) {
24
- expect(validConfidences, `Invalid confidence "${sig.rule.confidence}" in ${sig.name}`).toContain(sig.rule.confidence);
25
+ expect(VALID_CONFIDENCES, `Invalid confidence "${sig.rule.confidence}" in ${sig.name}`).toContain(sig.rule.confidence);
25
26
  }
26
27
  }
27
28
  });
@@ -81,6 +82,27 @@ describe("signatures validation", () => {
81
82
  }
82
83
  }
83
84
  });
85
+ it("all activeRules bodyRegex patterns should be valid regex", () => {
86
+ for (const sig of signatures) {
87
+ if (sig.activeRules) {
88
+ for (const [i, rule] of sig.activeRules.entries()) {
89
+ testRegex(rule.bodyRegex, sig.name, `activeRules[${i}].bodyRegex`);
90
+ }
91
+ }
92
+ }
93
+ });
94
+ it("all activeRules paths should be relative", () => {
95
+ for (const sig of signatures) {
96
+ if (!sig.activeRules)
97
+ continue;
98
+ for (const [i, rule] of sig.activeRules.entries()) {
99
+ expect(isRelativePath(rule.path), `${sig.name}.activeRules[${i}].path must be relative: "${rule.path}"`).toBe(true);
100
+ if (rule.confidence) {
101
+ expect(VALID_CONFIDENCES, `Invalid confidence in ${sig.name}.activeRules[${i}]`).toContain(rule.confidence);
102
+ }
103
+ }
104
+ }
105
+ });
84
106
  it("all javascriptVariables patterns should be valid regex", () => {
85
107
  for (const sig of signatures) {
86
108
  if (sig.rule?.javascriptVariables) {
@@ -1 +1 @@
1
- {"version":3,"file":"signatures.test.js","sourceRoot":"","sources":["../../src/signatures/signatures.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAC/C,CAAC;YACF,MAAM,CACJ,UAAU,EACV,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,MAAM,CACJ,gBAAgB,EAChB,uBAAuB,GAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,GAAG,CAAC,IAAI,EAAE,CAC7D,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,MAAM,CACJ,aAAa,EACb,oBAAoB,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,IAAI,EAAE,CAClD,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;YACpE,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,IAAI,KAAK,MAAM,OAAO,GAAG,CACrD,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;oBACtB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjE,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;oBACrB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACtC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBACnB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACpC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;oBACtB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjE,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,MAAM,EAAE,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;oBAClC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAC7C,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAC7B,EAAE,CAAC;wBACF,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,uBAAuB,OAAO,EAAE,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBACzB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;wBAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;wBAChD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,CACJ,WAAW,EACX,wCAAwC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC7E,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,MAAM,kBAAkB,GACtB,GAAG,CAAC,IAAI,CAAC,OAAO;wBAChB,GAAG,CAAC,IAAI,CAAC,MAAM;wBACf,GAAG,CAAC,IAAI,CAAC,IAAI;wBACb,GAAG,CAAC,IAAI,CAAC,OAAO;wBAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;oBAE/B,MAAM,CACJ,kBAAkB,EAClB,GAAG,GAAG,CAAC,IAAI,qCAAqC,CACjD,CAAC,UAAU,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,UAAU,GAAG,+CAA+C,CAAC;YACnE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,MAAM,CACJ,GAAG,CAAC,GAAG,EACP,yBAAyB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,CAClD,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"signatures.test.js","sourceRoot":"","sources":["../../src/signatures/signatures.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"magento.d.ts","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,gBAAgB,EAAE,SA0B9B,CAAC"}
1
+ {"version":3,"file":"magento.d.ts","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,eAAO,MAAM,gBAAgB,EAAE,SAgC9B,CAAC"}
@@ -25,6 +25,12 @@ export const magentoSignature = {
25
25
  VarienForm: "",
26
26
  },
27
27
  },
28
+ activeRules: [
29
+ {
30
+ path: "/magento_version",
31
+ bodyRegex: "^Magento/(\\S+)",
32
+ },
33
+ ],
28
34
  impliedSoftwares: [phpSignature.name, mysqlSignature.name],
29
35
  };
30
36
  //# sourceMappingURL=magento.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"magento.js","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,8DAA8D;IAC3E,GAAG,EAAE,wBAAwB;IAC7B,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;QACxD,MAAM,EAAE;YACN,+CAA+C;YAC/C,qBAAqB;YACrB,8BAA8B;SAC/B;QACD,OAAO,EAAE;YACP,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,IAAI;YAC1B,yCAAyC,EAAE,IAAI;YAC/C,+BAA+B,EAAE,IAAI;YACrC,0BAA0B,EAAE,IAAI;SACjC;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;SACf;KACF;IACD,gBAAgB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;CAC3D,CAAC"}
1
+ {"version":3,"file":"magento.js","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,8DAA8D;IAC3E,GAAG,EAAE,wBAAwB;IAC7B,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;QACxD,MAAM,EAAE;YACN,+CAA+C;YAC/C,qBAAqB;YACrB,8BAA8B;SAC/B;QACD,OAAO,EAAE;YACP,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,IAAI;YACd,oBAAoB,EAAE,IAAI;YAC1B,yCAAyC,EAAE,IAAI;YAC/C,+BAA+B,EAAE,IAAI;YACrC,0BAA0B,EAAE,IAAI;SACjC;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;SACf;KACF;IACD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS,EAAE,iBAAiB;SAC7B;KACF;IACD,gBAAgB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;CAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=magento.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magento.test.d.ts","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { matchString } from "../../analyzer/match.js";
3
+ import { magentoSignature } from "./magento.js";
4
+ describe("magentoSignature", () => {
5
+ describe("activeRules", () => {
6
+ it("defines a /magento_version probe", () => {
7
+ expect(magentoSignature.activeRules).toHaveLength(1);
8
+ expect(magentoSignature.activeRules?.[0]?.path).toBe("/magento_version");
9
+ });
10
+ it("extracts version from 'Magento/2.4 (Community)'", () => {
11
+ const rule = magentoSignature.activeRules[0];
12
+ const result = matchString("Magento/2.4 (Community)", rule.bodyRegex);
13
+ expect(result.hit).toBe(true);
14
+ expect(result.version).toBe("2.4");
15
+ });
16
+ it("extracts version from 'Magento/2.4.6'", () => {
17
+ const rule = magentoSignature.activeRules[0];
18
+ const result = matchString("Magento/2.4.6", rule.bodyRegex);
19
+ expect(result.hit).toBe(true);
20
+ expect(result.version).toBe("2.4.6");
21
+ });
22
+ it("does not match unrelated responses", () => {
23
+ const rule = magentoSignature.activeRules[0];
24
+ expect(matchString("<html>not magento</html>", rule.bodyRegex).hit).toBe(false);
25
+ });
26
+ });
27
+ });
28
+ //# sourceMappingURL=magento.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magento.test.js","sourceRoot":"","sources":["../../../src/signatures/technologies/magento.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAY,CAAC,CAAC,CAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAY,CAAC,CAAC,CAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAY,CAAC,CAAC,CAAE,CAAC;YAC/C,MAAM,CAAC,WAAW,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CACtE,KAAK,CACN,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whopper",
3
- "version": "0.4.0",
3
+ "version": "0.5.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",