@thymian/plugin-har 0.1.8 → 0.1.9-canary.20260513-e6b82ed
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/dist/har-schema.d.ts.map +1 -1
- package/dist/har-schema.js +3 -10
- package/dist/har-schema.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/load-transactions.d.ts +1 -1
- package/dist/load-transactions.d.ts.map +1 -1
- package/dist/load-transactions.js +16 -3
- package/dist/load-transactions.js.map +1 -1
- package/package.json +3 -3
package/dist/har-schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"har-schema.d.ts","sourceRoot":"","sources":["../src/har-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"har-schema.d.ts","sourceRoot":"","sources":["../src/har-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AA2F7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEzD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
|
package/dist/har-schema.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { ajv } from '@thymian/core';
|
|
2
2
|
/**
|
|
3
3
|
* Minimal JSON Schema for HAR 1.2 structure validation.
|
|
4
|
-
* Validates only the
|
|
5
|
-
*
|
|
4
|
+
* Validates only the field types consumed by the plugin.
|
|
5
|
+
* All fields are optional because there is no official HAR JSON schema
|
|
6
|
+
* and exporters commonly produce partial variants.
|
|
6
7
|
*/
|
|
7
8
|
const harLogSchema = {
|
|
8
9
|
type: 'object',
|
|
9
|
-
required: ['log'],
|
|
10
10
|
additionalProperties: true,
|
|
11
11
|
properties: {
|
|
12
12
|
log: {
|
|
13
13
|
type: 'object',
|
|
14
|
-
required: ['entries'],
|
|
15
14
|
additionalProperties: true,
|
|
16
15
|
properties: {
|
|
17
16
|
version: { type: 'string' },
|
|
@@ -19,13 +18,11 @@ const harLogSchema = {
|
|
|
19
18
|
type: 'array',
|
|
20
19
|
items: {
|
|
21
20
|
type: 'object',
|
|
22
|
-
required: ['request', 'time'],
|
|
23
21
|
additionalProperties: true,
|
|
24
22
|
properties: {
|
|
25
23
|
time: { type: 'number' },
|
|
26
24
|
request: {
|
|
27
25
|
type: 'object',
|
|
28
|
-
required: ['method', 'url', 'headers'],
|
|
29
26
|
additionalProperties: true,
|
|
30
27
|
properties: {
|
|
31
28
|
method: { type: 'string' },
|
|
@@ -34,7 +31,6 @@ const harLogSchema = {
|
|
|
34
31
|
type: 'array',
|
|
35
32
|
items: {
|
|
36
33
|
type: 'object',
|
|
37
|
-
required: ['name', 'value'],
|
|
38
34
|
additionalProperties: true,
|
|
39
35
|
properties: {
|
|
40
36
|
name: { type: 'string' },
|
|
@@ -56,7 +52,6 @@ const harLogSchema = {
|
|
|
56
52
|
response: {
|
|
57
53
|
type: 'object',
|
|
58
54
|
nullable: true,
|
|
59
|
-
required: ['status', 'headers', 'content'],
|
|
60
55
|
additionalProperties: true,
|
|
61
56
|
properties: {
|
|
62
57
|
status: { type: 'number' },
|
|
@@ -64,7 +59,6 @@ const harLogSchema = {
|
|
|
64
59
|
type: 'array',
|
|
65
60
|
items: {
|
|
66
61
|
type: 'object',
|
|
67
|
-
required: ['name', 'value'],
|
|
68
62
|
additionalProperties: true,
|
|
69
63
|
properties: {
|
|
70
64
|
name: { type: 'string' },
|
|
@@ -74,7 +68,6 @@ const harLogSchema = {
|
|
|
74
68
|
},
|
|
75
69
|
content: {
|
|
76
70
|
type: 'object',
|
|
77
|
-
required: ['size'],
|
|
78
71
|
additionalProperties: true,
|
|
79
72
|
properties: {
|
|
80
73
|
text: { type: 'string', nullable: true },
|
package/dist/har-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"har-schema.js","sourceRoot":"","sources":["../src/har-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIpC
|
|
1
|
+
{"version":3,"file":"har-schema.js","sourceRoot":"","sources":["../src/har-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,aAAa,EACd,MAAM,eAAe,CAAC;AAOvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,SAAwB,GACjC,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,aAAa,EACd,MAAM,eAAe,CAAC;AAOvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,wBAAgB,eAAe,CAC7B,UAAU,SAAwB,GACjC,aAAa,CAAC,gBAAgB,CAAC,CA2FjC;AAED,eAAO,MAAM,SAAS,iCAAoB,CAAC;AAE3C,eAAe,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -61,7 +61,7 @@ export function createHarPlugin(pluginName = '@thymian/plugin-har') {
|
|
|
61
61
|
const allTransactions = [];
|
|
62
62
|
for (const harInput of harInputs) {
|
|
63
63
|
logger.info(`Loading traffic from HAR file: ${String(harInput.location)}`);
|
|
64
|
-
const transactions = await loadTransactionsFromHar(String(harInput.location), logger, options.cwd, maxFileSize, clientRole, serverRole);
|
|
64
|
+
const transactions = await loadTransactionsFromHar(String(harInput.location), logger, options.cwd, maxFileSize, clientRole, serverRole, input.validateTrafficSource);
|
|
65
65
|
// Avoid spread (`allTransactions.push(...transactions)`) because
|
|
66
66
|
// large HAR files can contain thousands of entries, which would
|
|
67
67
|
// exceed the JavaScript call-stack size limit.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,2DAA2D;AAC3D,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAyBrD,MAAM,UAAU,eAAe,CAC7B,UAAU,GAAG,qBAAqB;IAElC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,YAAY;oBACrB,IAAI,EAAE;wBACJ,cAAc;wBACd,OAAO;wBACP,SAAS;wBACT,QAAQ;wBACR,eAAe;wBACf,QAAQ;wBACR,QAAQ;wBACR,YAAY;wBACZ,OAAO;qBACR;iBACF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,eAAe;oBACxB,IAAI,EAAE;wBACJ,cAAc;wBACd,OAAO;wBACP,SAAS;wBACT,QAAQ;wBACR,eAAe;wBACf,QAAQ;wBACR,QAAQ;wBACR,YAAY;wBACZ,OAAO;qBACR;iBACF;aACF;YACD,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE;YACP,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC;QACD,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAc,EAAE,OAAO;YAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,2BAA2B,CAAC;YACvE,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;YACrC,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,eAAe,CAAC;YAExC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACzD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAE/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;oBAC7D,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC;gBAED,MAAM,eAAe,GAA0B,EAAE,CAAC;gBAElD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CACT,kCAAkC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAC9D,CAAC;oBAEF,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAChD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACzB,MAAM,EACN,OAAO,CAAC,GAAG,EACX,WAAW,EACX,UAAU,EACV,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ import type { CapturedTransaction, HttpParticipantRole, Logger } from '@thymian/
|
|
|
6
6
|
* @throws {ThymianBaseError} if the file is too large, unreadable,
|
|
7
7
|
* not valid JSON, or not a valid HAR structure.
|
|
8
8
|
*/
|
|
9
|
-
export declare function loadTransactionsFromHar(location: string, logger: Logger, cwd: string, maxFileSize: number, clientRole: HttpParticipantRole, serverRole: HttpParticipantRole): Promise<CapturedTransaction[]>;
|
|
9
|
+
export declare function loadTransactionsFromHar(location: string, logger: Logger, cwd: string, maxFileSize: number, clientRole: HttpParticipantRole, serverRole: HttpParticipantRole, validateTrafficSource: boolean): Promise<CapturedTransaction[]>;
|
|
10
10
|
//# sourceMappingURL=load-transactions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-transactions.d.ts","sourceRoot":"","sources":["../src/load-transactions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACP,MAAM,eAAe,CAAC;AAMvB;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"load-transactions.d.ts","sourceRoot":"","sources":["../src/load-transactions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACP,MAAM,eAAe,CAAC;AAMvB;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,mBAAmB,EAC/B,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoEhC"}
|
|
@@ -10,7 +10,7 @@ import { transformHar } from './har-transformer.js';
|
|
|
10
10
|
* @throws {ThymianBaseError} if the file is too large, unreadable,
|
|
11
11
|
* not valid JSON, or not a valid HAR structure.
|
|
12
12
|
*/
|
|
13
|
-
export async function loadTransactionsFromHar(location, logger, cwd, maxFileSize, clientRole, serverRole) {
|
|
13
|
+
export async function loadTransactionsFromHar(location, logger, cwd, maxFileSize, clientRole, serverRole, validateTrafficSource) {
|
|
14
14
|
const filePath = isAbsolute(location) ? location : join(cwd, location);
|
|
15
15
|
// Guard against oversized files to prevent out-of-memory crashes.
|
|
16
16
|
// JSON.parse roughly doubles memory usage, so capping the file size
|
|
@@ -40,9 +40,22 @@ export async function loadTransactionsFromHar(location, logger, cwd, maxFileSize
|
|
|
40
40
|
throw new ThymianBaseError(`Failed to parse HAR file as JSON: ${filePath}`);
|
|
41
41
|
}
|
|
42
42
|
if (!validateHar(parsed)) {
|
|
43
|
-
|
|
43
|
+
const validationErrors = getValidationErrors();
|
|
44
|
+
if (validateTrafficSource) {
|
|
45
|
+
throw new ThymianBaseError(`Invalid HAR structure in ${filePath}: ${validationErrors}`);
|
|
46
|
+
}
|
|
47
|
+
logger.warn(`HAR schema validation failed for ${filePath}: ${validationErrors}.`);
|
|
44
48
|
}
|
|
45
|
-
|
|
49
|
+
let transformed;
|
|
50
|
+
try {
|
|
51
|
+
transformed = transformHar(parsed, clientRole, serverRole);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
throw new ThymianBaseError(`Failed to transform HAR file: ${filePath}`, {
|
|
55
|
+
cause: err instanceof Error ? err : undefined,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const { transactions, skippedCount, skippedReasons } = transformed;
|
|
46
59
|
if (skippedCount > 0) {
|
|
47
60
|
const uniqueReasons = [...new Set(skippedReasons)].join(', ');
|
|
48
61
|
logger.warn(`Skipped ${skippedCount.toString()} HAR ${skippedCount === 1 ? 'entry' : 'entries'} in ${filePath} due to: ${uniqueReasons}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-transactions.js","sourceRoot":"","sources":["../src/load-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAO7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,MAAc,EACd,GAAW,EACX,WAAmB,EACnB,UAA+B,EAC/B,UAA+B
|
|
1
|
+
{"version":3,"file":"load-transactions.js","sourceRoot":"","sources":["../src/load-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAO7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,MAAc,EACd,GAAW,EACX,WAAmB,EACnB,UAA+B,EAC/B,UAA+B,EAC/B,qBAA8B;IAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEvE,kEAAkE;IAClE,oEAAoE;IACpE,uCAAuC;IACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5D,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,QAAQ,EAAE,EAAE;YACjE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,gBAAgB,CACxB,kCAAkC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,WAAW,CAAC,QAAQ,EAAE,YAAY,QAAQ,EAAE,CACpH,CAAC;IACJ,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,QAAQ,EAAE,EAAE;YACjE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;QAE/C,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,QAAQ,KAAK,gBAAgB,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CACT,oCAAoC,QAAQ,KAAK,gBAAgB,GAAG,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC;IAEhB,IAAI,CAAC;QACH,WAAW,GAAG,YAAY,CAAC,MAAe,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CAAC,iCAAiC,QAAQ,EAAE,EAAE;YACtE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC;IAEnE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,WAAW,YAAY,CAAC,QAAQ,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,QAAQ,YAAY,aAAa,EAAE,CAC7H,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thymian/plugin-har",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9-canary.20260513-e6b82ed",
|
|
4
4
|
"description": "Thymian plugin for loading HAR (HTTP Archive) files into the traffic pipeline",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"bugs": {
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"!**/*.tsbuildinfo"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@thymian/core": "0.1.
|
|
42
|
+
"@thymian/core": "0.1.9-canary.20260513-e6b82ed",
|
|
43
43
|
"tslib": "^2.3.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@thymian/core-testing": "0.1.
|
|
46
|
+
"@thymian/core-testing": "0.1.9-canary.20260513-e6b82ed"
|
|
47
47
|
}
|
|
48
48
|
}
|