@thymian/plugin-http-analyzer 0.0.0-PLACEHOLDER

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 (35) hide show
  1. package/README.md +59 -0
  2. package/dist/analytics-api-context.d.ts +31 -0
  3. package/dist/analytics-api-context.d.ts.map +1 -0
  4. package/dist/analytics-api-context.js +167 -0
  5. package/dist/analytics-api-context.js.map +1 -0
  6. package/dist/db/http-filter-to-groupby-clause.d.ts +6 -0
  7. package/dist/db/http-filter-to-groupby-clause.d.ts.map +1 -0
  8. package/dist/db/http-filter-to-groupby-clause.js +64 -0
  9. package/dist/db/http-filter-to-groupby-clause.js.map +1 -0
  10. package/dist/db/http-filter-to-where-clause.d.ts +5 -0
  11. package/dist/db/http-filter-to-where-clause.d.ts.map +1 -0
  12. package/dist/db/http-filter-to-where-clause.js +188 -0
  13. package/dist/db/http-filter-to-where-clause.js.map +1 -0
  14. package/dist/db/http-transaction-repository.d.ts +15 -0
  15. package/dist/db/http-transaction-repository.d.ts.map +1 -0
  16. package/dist/db/http-transaction-repository.js +2 -0
  17. package/dist/db/http-transaction-repository.js.map +1 -0
  18. package/dist/db/init.sql +87 -0
  19. package/dist/db/sqlite-http-transaction-repository.d.ts +32 -0
  20. package/dist/db/sqlite-http-transaction-repository.d.ts.map +1 -0
  21. package/dist/db/sqlite-http-transaction-repository.js +472 -0
  22. package/dist/db/sqlite-http-transaction-repository.js.map +1 -0
  23. package/dist/db/types.d.ts +5 -0
  24. package/dist/db/types.d.ts.map +1 -0
  25. package/dist/db/types.js +2 -0
  26. package/dist/db/types.js.map +1 -0
  27. package/dist/db/utils.d.ts +6 -0
  28. package/dist/db/utils.d.ts.map +1 -0
  29. package/dist/db/utils.js +2 -0
  30. package/dist/db/utils.js.map +1 -0
  31. package/dist/index.d.ts +51 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +136 -0
  34. package/dist/index.js.map +1 -0
  35. package/package.json +52 -0
@@ -0,0 +1,51 @@
1
+ import { type CapturedTrace, type CapturedTransaction, type EvaluatedRuleViolation, type Rule, type RulesConfiguration, type SerializedThymianFormat, type ThymianPlugin, type ThymianReport } from '@thymian/core';
2
+ export { AnalyticsApiContext } from './analytics-api-context.js';
3
+ export type { HttpTransactionRepository } from './db/http-transaction-repository.js';
4
+ export { SqliteHttpTransactionRepository } from './db/sqlite-http-transaction-repository.js';
5
+ declare module '@thymian/core' {
6
+ interface ThymianActions {
7
+ 'http-analyzer.lint-analytics': {
8
+ event: {
9
+ format?: SerializedThymianFormat;
10
+ transactions?: CapturedTransaction[];
11
+ traces?: CapturedTrace[];
12
+ rules?: Rule[];
13
+ rulesConfig?: RulesConfiguration;
14
+ };
15
+ response: {
16
+ reports: ThymianReport[];
17
+ violations: EvaluatedRuleViolation[];
18
+ valid: boolean;
19
+ };
20
+ };
21
+ 'http-analyzer.lint-analytics-batch': {
22
+ event: {
23
+ format?: SerializedThymianFormat;
24
+ rules?: Rule[];
25
+ rulesConfig?: RulesConfiguration;
26
+ };
27
+ response: {
28
+ reports: ThymianReport[];
29
+ violations: EvaluatedRuleViolation[];
30
+ valid: boolean;
31
+ };
32
+ };
33
+ }
34
+ interface ThymianEvents {
35
+ 'http-analyzer.transaction': CapturedTransaction;
36
+ 'http-analyzer.trace': CapturedTrace;
37
+ }
38
+ }
39
+ export type HttpAnalyzerStorage = {
40
+ type: 'memory';
41
+ } | {
42
+ type: 'sqlite';
43
+ path?: string;
44
+ };
45
+ export type HttpAnalyzerPluginOptions = {
46
+ storage?: HttpAnalyzerStorage;
47
+ };
48
+ export declare function createHttpAnalyzerPlugin(pluginName?: string): ThymianPlugin<HttpAnalyzerPluginOptions>;
49
+ export declare const httpAnalyzerPlugin: ThymianPlugin<HttpAnalyzerPluginOptions>;
50
+ export default httpAnalyzerPlugin;
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAE3B,KAAK,IAAI,EAET,KAAK,kBAAkB,EAEvB,KAAK,uBAAuB,EAG5B,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAE7F,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,cAAc;QACtB,8BAA8B,EAAE;YAC9B,KAAK,EAAE;gBACL,MAAM,CAAC,EAAE,uBAAuB,CAAC;gBACjC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;gBACrC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;gBACzB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;gBACf,WAAW,CAAC,EAAE,kBAAkB,CAAC;aAClC,CAAC;YACF,QAAQ,EAAE;gBACR,OAAO,EAAE,aAAa,EAAE,CAAC;gBACzB,UAAU,EAAE,sBAAsB,EAAE,CAAC;gBACrC,KAAK,EAAE,OAAO,CAAC;aAChB,CAAC;SACH,CAAC;QAEF,oCAAoC,EAAE;YACpC,KAAK,EAAE;gBACL,MAAM,CAAC,EAAE,uBAAuB,CAAC;gBACjC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;gBACf,WAAW,CAAC,EAAE,kBAAkB,CAAC;aAClC,CAAC;YACF,QAAQ,EAAE;gBACR,OAAO,EAAE,aAAa,EAAE,CAAC;gBACzB,UAAU,EAAE,sBAAsB,EAAE,CAAC;gBACrC,KAAK,EAAE,OAAO,CAAC;aAChB,CAAC;SACH,CAAC;KACH;IAED,UAAU,aAAa;QACrB,2BAA2B,EAAE,mBAAmB,CAAC;QACjD,qBAAqB,EAAE,aAAa,CAAC;KACtC;CACF;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAwBF,wBAAgB,wBAAwB,CACtC,UAAU,SAAkC,GAC3C,aAAa,CAAC,yBAAyB,CAAC,CAwL1C;AAED,eAAO,MAAM,kBAAkB,0CAA6B,CAAC;AAE7D,eAAe,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,136 @@
1
+ import { isAbsolute, join } from 'node:path';
2
+ import { runRules, ThymianFormat, } from '@thymian/core';
3
+ import { AnalyticsApiContext } from './analytics-api-context.js';
4
+ import { SqliteHttpTransactionRepository } from './db/sqlite-http-transaction-repository.js';
5
+ export { AnalyticsApiContext } from './analytics-api-context.js';
6
+ export { SqliteHttpTransactionRepository } from './db/sqlite-http-transaction-repository.js';
7
+ function createAnalyzerAdapter(logger, reportFn, format, repository) {
8
+ return {
9
+ errorName: 'AnalyzeLinterError',
10
+ mode: 'analytics',
11
+ getRuleFn: (rule) => rule.analyzeRule,
12
+ createContext: (rule, options) => new AnalyticsApiContext(repository, logger, format, reportFn, rule.meta.appliesTo, (options ?? {}).skipOrigins),
13
+ };
14
+ }
15
+ export function createHttpAnalyzerPlugin(pluginName = '@thymian/plugin-http-analyzer') {
16
+ return {
17
+ name: pluginName,
18
+ version: '0.x',
19
+ options: {
20
+ type: 'object',
21
+ nullable: true,
22
+ properties: {
23
+ storage: {
24
+ type: 'object',
25
+ required: ['type'],
26
+ nullable: true,
27
+ oneOf: [
28
+ {
29
+ type: 'object',
30
+ properties: {
31
+ type: { const: 'memory' },
32
+ },
33
+ required: ['type'],
34
+ additionalProperties: false,
35
+ },
36
+ {
37
+ type: 'object',
38
+ properties: {
39
+ type: { const: 'sqlite' },
40
+ path: { type: 'string' },
41
+ },
42
+ required: ['type'],
43
+ additionalProperties: false,
44
+ },
45
+ ],
46
+ },
47
+ },
48
+ additionalProperties: false,
49
+ },
50
+ actions: {
51
+ listensOn: ['core.analyze'],
52
+ },
53
+ events: {
54
+ listensOn: ['http-analyzer.transaction'],
55
+ },
56
+ async plugin(emitter, logger, options) {
57
+ let location = ':memory:';
58
+ if (options.storage?.type === 'sqlite') {
59
+ const filePath = options.storage.path;
60
+ location = filePath
61
+ ? isAbsolute(filePath)
62
+ ? filePath
63
+ : join(options.cwd, filePath)
64
+ : join(options.cwd, '.thymian', 'db', `${Date.now().toString()}.db`);
65
+ }
66
+ const initializedRepository = new SqliteHttpTransactionRepository(location, logger.child(`${pluginName}:HttpTransactionRepository`));
67
+ await initializedRepository.init();
68
+ emitter.onAction('core.close', async (_, ctx) => {
69
+ await initializedRepository.close();
70
+ ctx.reply();
71
+ });
72
+ emitter.on('http-analyzer.transaction', (transaction) => {
73
+ initializedRepository.insertHttpTransaction(transaction);
74
+ });
75
+ emitter.onAction('core.analyze', async ({ format, rules = [], rulesConfig = {}, traffic }, ctx) => {
76
+ const thymianFormat = format
77
+ ? ThymianFormat.import(format)
78
+ : new ThymianFormat();
79
+ const repo = new SqliteHttpTransactionRepository(':memory:', logger.child(`${pluginName}:HttpTransactionRepository`));
80
+ await repo.init();
81
+ for (const trace of traffic.traces ?? []) {
82
+ repo.insertHttpTrace(trace);
83
+ }
84
+ for (const transaction of traffic.transactions ?? []) {
85
+ repo.insertHttpTransaction(transaction);
86
+ }
87
+ const reportFn = (report) => emitter.emit('core.report', report);
88
+ const { violations, statistics } = await runRules(logger, rules, thymianFormat, rulesConfig, createAnalyzerAdapter(logger, reportFn, thymianFormat, repo));
89
+ await repo.close();
90
+ ctx.reply({
91
+ source: pluginName,
92
+ status: violations.length === 0 ? 'success' : 'failed',
93
+ violations,
94
+ statistics,
95
+ });
96
+ });
97
+ emitter.onAction('http-analyzer.lint-analytics-batch', async ({ format, rules = [], rulesConfig = {} }, ctx) => {
98
+ const thymianFormat = format
99
+ ? ThymianFormat.import(format)
100
+ : new ThymianFormat();
101
+ const reports = [];
102
+ const reportFn = (report) => reports.push(report);
103
+ const { violations } = await runRules(logger, rules, thymianFormat, rulesConfig, createAnalyzerAdapter(logger, reportFn, thymianFormat, initializedRepository));
104
+ ctx.reply({
105
+ reports,
106
+ violations,
107
+ valid: violations.length === 0,
108
+ });
109
+ });
110
+ emitter.onAction('http-analyzer.lint-analytics', async ({ format, traces, transactions, rules = [], rulesConfig = {} }, ctx) => {
111
+ const repo = new SqliteHttpTransactionRepository(':memory:', logger.child(`${pluginName}:HttpTransactionRepository`));
112
+ await repo.init();
113
+ for (const trace of traces ?? []) {
114
+ repo.insertHttpTrace(trace);
115
+ }
116
+ for (const transaction of transactions ?? []) {
117
+ repo.insertHttpTransaction(transaction);
118
+ }
119
+ const thymianFormat = format
120
+ ? ThymianFormat.import(format)
121
+ : new ThymianFormat();
122
+ const reports = [];
123
+ const reportFn = (report) => reports.push(report);
124
+ const { violations } = await runRules(logger, rules, thymianFormat, rulesConfig, createAnalyzerAdapter(logger, reportFn, thymianFormat, repo));
125
+ ctx.reply({
126
+ reports,
127
+ violations,
128
+ valid: violations.length === 0,
129
+ });
130
+ });
131
+ },
132
+ };
133
+ }
134
+ export const httpAnalyzerPlugin = createHttpAnalyzerPlugin();
135
+ export default httpAnalyzerPlugin;
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@thymian/plugin-http-analyzer",
3
+ "version": "0.0.0-PLACEHOLDER",
4
+ "description": "Thymian plugin for analyzing captured HTTP traffic against conformance rules",
5
+ "license": "AGPL-3.0-only",
6
+ "bugs": {
7
+ "url": "https://github.com/thymianofficial/thymian/issues"
8
+ },
9
+ "homepage": "https://thymian.dev",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/thymianofficial/thymian.git",
13
+ "directory": "packages/plugin-http-analyzer"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "keywords": [
19
+ "thymian",
20
+ "api-conformance",
21
+ "har",
22
+ "http",
23
+ "http-analysis",
24
+ "traffic-analysis",
25
+ "validator"
26
+ ],
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "type": "module",
31
+ "exports": {
32
+ "./package.json": "./package.json",
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "import": "./dist/index.js",
36
+ "default": "./dist/index.js"
37
+ }
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "!**/*.tsbuildinfo"
42
+ ],
43
+ "dependencies": {
44
+ "@thymian/core": "0.0.0-PLACEHOLDER",
45
+ "better-sqlite3": "^12.9.0",
46
+ "tslib": "^2.3.0"
47
+ },
48
+ "devDependencies": {
49
+ "@thymian/core-testing": "0.0.0-PLACEHOLDER",
50
+ "@types/better-sqlite3": "^7.6.12"
51
+ }
52
+ }