@thymian/plugin-sampler 0.1.2-canary.20260410-043042b → 0.1.2

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.
@@ -10,7 +10,7 @@ export default class Check extends BaseCliRunCommand<typeof Check> {
10
10
  private checkAllTransactions;
11
11
  private checkTransactionsIncremental;
12
12
  private isCheckableTransaction;
13
- private checkTransaction;
13
+ private runTransaction;
14
14
  private logFailureDetails;
15
15
  }
16
16
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/sampler/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAW,MAAM,qBAAqB,CAAC;AAoBxE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,iBAAiB,CAAC,OAAO,KAAK,CAAC;IAChE,OAAgB,WAAW,SACoD;IAE/E,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;MAWnB;IAEa,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBrB,oBAAoB;YAiDpB,4BAA4B;IAyD1C,OAAO,CAAC,sBAAsB;YAOhB,gBAAgB;IAmC9B,OAAO,CAAC,iBAAiB;CAkC1B"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/sampler/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAW,MAAM,qBAAqB,CAAC;AAmBxE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,iBAAiB,CAAC,OAAO,KAAK,CAAC;IAChE,OAAgB,WAAW,SACoD;IAE/E,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;MAWnB;IAEa,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BrB,oBAAoB;YAwDpB,4BAA4B;IAgE1C,OAAO,CAAC,sBAAsB;YAOhB,cAAc;IA2B5B,OAAO,CAAC,iBAAiB;CAmB1B"}
@@ -1,7 +1,7 @@
1
1
  import { BaseCliRunCommand, oclif, prompts } from '@thymian/common-cli';
2
2
  import { Flags } from '@thymian/common-cli/oclif';
3
- import { getHeader, httpStatusCodeToPhrase, isValidClientErrorStatusCode, isValidHttpStatusCode, isValidSuccessfulStatusCode, serializeRequest, thymianHttpTransactionToString, } from '@thymian/core';
4
- const MAX_BODY_PREVIEW_LENGTH = 500;
3
+ import { filterHttpTransactions, generateRequests, httpTest, isValidClientErrorStatusCode, isValidSuccessfulStatusCode, mapToTestCase, runRequests, thymianHttpTransactionToString, } from '@thymian/core';
4
+ import { createContext } from '../../create-context.js';
5
5
  export default class Check extends BaseCliRunCommand {
6
6
  static description = 'Verify that all sampled transactions can be executed against the live API.';
7
7
  static examples = [
@@ -20,22 +20,23 @@ export default class Check extends BaseCliRunCommand {
20
20
  }),
21
21
  };
22
22
  async run() {
23
- await this.thymian.run(async () => {
23
+ await this.thymian.run(async (emitter) => {
24
24
  const specifications = this.thymianConfig.specifications ?? [];
25
25
  const format = await this.thymian.loadFormat({
26
26
  inputs: specifications,
27
27
  });
28
28
  const transactions = format.getThymianHttpTransactions();
29
29
  const targetUrl = this.flags['target-url'] ?? this.thymianConfig.targetUrl;
30
+ const context = createContext(format, this.logger.child('sampler-check'), emitter);
30
31
  if (this.flags.incremental) {
31
- await this.checkTransactionsIncremental(transactions, targetUrl);
32
+ await this.checkTransactionsIncremental(transactions, context, targetUrl);
32
33
  }
33
34
  else {
34
- await this.checkAllTransactions(transactions, targetUrl);
35
+ await this.checkAllTransactions(transactions, context, targetUrl);
35
36
  }
36
37
  });
37
38
  }
38
- async checkAllTransactions(transactions, targetUrl) {
39
+ async checkAllTransactions(transactions, context, targetUrl) {
39
40
  let successful = 0;
40
41
  let failed = 0;
41
42
  for (const transaction of transactions) {
@@ -44,14 +45,15 @@ export default class Check extends BaseCliRunCommand {
44
45
  }
45
46
  const transactionName = thymianHttpTransactionToString(transaction.thymianReq, transaction.thymianRes);
46
47
  this.logger.debug('Checking transaction: ' + transactionName);
47
- const result = await this.checkTransaction(transaction, targetUrl);
48
- if (result.passed) {
48
+ const testResult = await this.runTransaction(transaction, context, targetUrl);
49
+ const testCase = testResult.cases[0];
50
+ if (testCase && testCase.status === 'passed') {
49
51
  this.log(oclif.ux.colorize('green', `✔ ${transactionName}`));
50
52
  successful++;
51
53
  }
52
54
  else {
53
55
  this.log(oclif.ux.colorize('red', `✖ ${transactionName}`));
54
- this.logFailureDetails(result);
56
+ this.logFailureDetails(testCase);
55
57
  this.log();
56
58
  failed++;
57
59
  }
@@ -65,20 +67,21 @@ export default class Check extends BaseCliRunCommand {
65
67
  this.log(oclif.ux.colorize('green', `Checked ${successful + failed} transactions. All passed.`));
66
68
  }
67
69
  }
68
- async checkTransactionsIncremental(transactions, targetUrl) {
70
+ async checkTransactionsIncremental(transactions, context, targetUrl) {
69
71
  for (const transaction of transactions) {
70
72
  if (!this.isCheckableTransaction(transaction)) {
71
73
  continue;
72
74
  }
73
75
  const transactionName = thymianHttpTransactionToString(transaction.thymianReq, transaction.thymianRes);
74
76
  this.logger.debug('Checking transaction: ' + transactionName);
75
- const result = await this.checkTransaction(transaction, targetUrl);
76
- if (result.passed) {
77
+ const testResult = await this.runTransaction(transaction, context, targetUrl);
78
+ const testCase = testResult.cases[0];
79
+ if (testCase && testCase.status === 'passed') {
77
80
  this.log(oclif.ux.colorize('green', `✔ ${transactionName}`));
78
81
  continue;
79
82
  }
80
83
  this.log(oclif.ux.colorize('red', `✖ ${transactionName}`));
81
- this.logFailureDetails(result);
84
+ this.logFailureDetails(testCase);
82
85
  this.log();
83
86
  this.log('You can generate a hook for this transaction with:');
84
87
  this.log(` $ thymian sampler generate hook --for-transaction ${transaction.transactionId}`);
@@ -106,52 +109,26 @@ export default class Check extends BaseCliRunCommand {
106
109
  return (isValidSuccessfulStatusCode(transaction.thymianRes.statusCode) ||
107
110
  isValidClientErrorStatusCode(transaction.thymianRes.statusCode));
108
111
  }
109
- async checkTransaction(transaction, targetUrl) {
110
- try {
111
- const template = await this.thymian.sample({ transaction });
112
- const request = serializeRequest({
113
- requestTemplate: template,
114
- source: transaction,
115
- });
116
- if (targetUrl) {
117
- request.origin = targetUrl;
118
- }
119
- const response = await this.thymian.dispatch({ request });
120
- if (response.statusCode !== transaction.thymianRes.statusCode) {
121
- return {
122
- passed: false,
123
- reason: `Expected status ${transaction.thymianRes.statusCode}, got ${response.statusCode}.`,
124
- response,
125
- };
126
- }
127
- return { passed: true };
128
- }
129
- catch (error) {
130
- return {
131
- passed: false,
132
- reason: error instanceof Error ? error.message : String(error),
133
- };
134
- }
112
+ async runTransaction(transaction, context, targetUrl) {
113
+ const transactionName = thymianHttpTransactionToString(transaction.thymianReq, transaction.thymianRes);
114
+ const reqFilter = (_req, reqId) => reqId === transaction.thymianReqId;
115
+ const resFilter = (_res, resId) => resId === transaction.thymianResId;
116
+ const test = httpTest(transactionName, (transactions) => transactions.pipe(filterHttpTransactions(reqFilter, resFilter), mapToTestCase(), generateRequests(), runRequests({ checkResponse: false, origin: targetUrl })));
117
+ return test(context);
135
118
  }
136
- logFailureDetails(result) {
137
- this.log(oclif.ux.colorize('dim', ` Reason: ${result.reason}`));
138
- if (!result.response) {
119
+ logFailureDetails(testCase) {
120
+ if (!testCase) {
121
+ this.log(oclif.ux.colorize('dim', ' Reason: No test result.'));
139
122
  return;
140
123
  }
141
- const { statusCode, headers, body } = result.response;
142
- const phrase = isValidHttpStatusCode(statusCode)
143
- ? httpStatusCodeToPhrase[statusCode]
144
- : '';
145
- const contentType = getHeader(headers, 'content-type');
146
- const contentTypeStr = Array.isArray(contentType)
147
- ? contentType[0]
148
- : contentType;
149
- this.log(oclif.ux.colorize('dim', ` Received: ${statusCode} ${phrase}${contentTypeStr ? ` (${contentTypeStr})` : ''}`));
150
- if (body) {
151
- const preview = body.length > MAX_BODY_PREVIEW_LENGTH
152
- ? body.slice(0, MAX_BODY_PREVIEW_LENGTH) + '…'
153
- : body;
154
- this.log(oclif.ux.colorize('dim', ` Body: ${preview}`));
124
+ if (testCase.reason) {
125
+ this.log(oclif.ux.colorize('dim', ` Reason: ${testCase.reason}`));
126
+ }
127
+ for (const result of testCase.results) {
128
+ if (result.type === 'assertion-failure' ||
129
+ result.type === 'invalid-transaction') {
130
+ this.log(oclif.ux.colorize('dim', ` ${result.message}`));
131
+ }
155
132
  }
156
133
  }
157
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/cli/commands/sampler/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/cli/commands/sampler/check.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { BaseCliRunCommand } from '@thymian/common-cli';
2
2
  import { Flags } from '@thymian/common-cli/oclif';
3
3
  import { generateHook } from '../../../generate-hook.js';
4
4
  export default class GenerateHook extends BaseCliRunCommand {
5
- static aliases = ['sampler:g:h', 'sampler:generate:h'];
5
+ static aliases = ['sampler g h', 'sampler generate h'];
6
6
  static flags = {
7
7
  'for-transaction': Flags.string({
8
8
  description: 'For which transaction do you want to generate a hook?',
@@ -37,7 +37,7 @@ export class HookRunner {
37
37
  if (!this.initialized) {
38
38
  throw new ThymianBaseError('Cannot run hooks before @thymian/plugin-sampler is initialized.', {
39
39
  name: 'HookRunnerNotInitialized',
40
- suggestions: ['Did you run "thymian sampler:init"?'],
40
+ suggestions: ['Did you run "thymian sampler init"?'],
41
41
  });
42
42
  }
43
43
  const { value, ctx } = hook;
@@ -81,7 +81,7 @@ export class HookRunner {
81
81
  if (!this.initialized) {
82
82
  throw new ThymianBaseError('Cannot run hooks before @thymian/plugin-sampler is initialized.', {
83
83
  name: 'HookRunnerNotInitialized',
84
- suggestions: ['Did you run "thymian sampler:init"?'],
84
+ suggestions: ['Did you run "thymian sampler init"?'],
85
85
  });
86
86
  }
87
87
  const { value, ctx } = hook;
@@ -128,7 +128,7 @@ export class HookRunner {
128
128
  if (!this.initialized) {
129
129
  throw new ThymianBaseError('Cannot run hooks before @thymian/plugin-sampler is initialized.', {
130
130
  name: 'HookRunnerNotInitialized',
131
- suggestions: ['Did you run "thymian sampler:init"?'],
131
+ suggestions: ['Did you run "thymian sampler init"?'],
132
132
  });
133
133
  }
134
134
  const { value, ctx } = hook;
package/dist/index.js CHANGED
@@ -118,7 +118,7 @@ export const samplePlugin = {
118
118
  name: 'VersionMismatchError',
119
119
  suggestions: [
120
120
  `The loaded samples were generated at ${requestSampler.timestamp()}. Did you forget to regenerate the samples?`,
121
- '$ thymian sampler:init',
121
+ '$ thymian sampler init',
122
122
  ],
123
123
  ref: 'https://thymian.dev/guides/samples/update-samples',
124
124
  });
@@ -55,7 +55,7 @@ export class RequestSampler {
55
55
  sampleForTransaction(transactionId) {
56
56
  if (!this.initialized) {
57
57
  throw new ThymianBaseError('Cannot sample for transaction before @thymian/plugin-sampler was initialized.', {
58
- suggestions: ['Did you run "thymian sampler:init"?'],
58
+ suggestions: ['Did you run "thymian sampler init"?'],
59
59
  name: 'SamplerNotInitializedError',
60
60
  });
61
61
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thymian/plugin-sampler",
3
- "version": "0.1.2-canary.20260410-043042b",
3
+ "version": "0.1.2",
4
4
  "license": "AGPL-3.0-only",
5
5
  "bugs": {
6
6
  "url": "https://github.com/thymianofficial/thymian/issues"
@@ -31,9 +31,9 @@
31
31
  "!**/*.tsbuildinfo"
32
32
  ],
33
33
  "dependencies": {
34
- "@thymian/common-cli": "0.1.2-canary.20260410-043042b",
35
- "@thymian/core": "0.1.2-canary.20260410-043042b",
36
- "@thymian/plugin-request-dispatcher": "0.1.2-canary.20260410-043042b",
34
+ "@thymian/common-cli": "0.1.2",
35
+ "@thymian/core": "0.1.2",
36
+ "@thymian/plugin-request-dispatcher": "0.1.2",
37
37
  "code-block-writer": "^13.0.3",
38
38
  "jiti": "^2.6.1",
39
39
  "json-schema-to-typescript": "^15.0.4",
@@ -53,7 +53,7 @@
53
53
  }
54
54
  },
55
55
  "devDependencies": {
56
- "@thymian/core-testing": "0.1.2-canary.20260410-043042b",
56
+ "@thymian/core-testing": "0.1.2",
57
57
  "fast-json-stable-stringify": "^2.1.0",
58
58
  "ts-morph": "^27.0.2"
59
59
  }