@grafana/openapi-to-k6 0.1.2 → 0.2.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 (119) hide show
  1. package/.github/workflows/publish.yaml +2 -0
  2. package/.github/workflows/tests.yaml +14 -6
  3. package/README.md +49 -14
  4. package/dist/cli.js +18 -2
  5. package/dist/constants.js +8 -2
  6. package/dist/{generator.js → generator/index.js} +7 -13
  7. package/dist/{k6SdkClient.js → generator/k6Client.js} +148 -161
  8. package/examples/basic_schema/single/k6-script.sample.ts +11 -0
  9. package/examples/basic_schema/single/simpleAPI.ts +87 -0
  10. package/examples/basic_schema/split/k6-script.sample.ts +11 -0
  11. package/examples/basic_schema/split/simpleAPI.schemas.ts +9 -0
  12. package/examples/basic_schema/split/simpleAPI.ts +85 -0
  13. package/examples/basic_schema/tags/default.ts +85 -0
  14. package/examples/basic_schema/tags/k6-script.sample.ts +11 -0
  15. package/examples/basic_schema/tags/simpleAPI.schemas.ts +9 -0
  16. package/examples/form_data_schema/single/formDataAPI.ts +115 -0
  17. package/examples/form_data_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  18. package/examples/form_data_schema/split/formDataAPI.schemas.ts +24 -0
  19. package/examples/form_data_schema/split/formDataAPI.ts +98 -0
  20. package/examples/form_data_schema/split/k6-script.sample.ts +11 -0
  21. package/examples/form_data_schema/tags/default.ts +98 -0
  22. package/examples/form_data_schema/tags/formDataAPI.schemas.ts +24 -0
  23. package/examples/form_data_schema/tags/k6-script.sample.ts +11 -0
  24. package/examples/form_url_encoded_data_schema/single/formURLEncodedAPI.ts +112 -0
  25. package/examples/form_url_encoded_data_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  26. package/examples/form_url_encoded_data_schema/split/formURLEncodedAPI.schemas.ts +24 -0
  27. package/examples/form_url_encoded_data_schema/split/formURLEncodedAPI.ts +98 -0
  28. package/examples/form_url_encoded_data_schema/split/k6-script.sample.ts +11 -0
  29. package/examples/form_url_encoded_data_schema/tags/default.ts +98 -0
  30. package/examples/form_url_encoded_data_schema/tags/formURLEncodedAPI.schemas.ts +24 -0
  31. package/examples/form_url_encoded_data_schema/tags/k6-script.sample.ts +11 -0
  32. package/examples/form_url_encoded_data_with_query_params_schema/single/formURLEncodedAPIWithQueryParameters.ts +128 -0
  33. package/examples/form_url_encoded_data_with_query_params_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  34. package/examples/form_url_encoded_data_with_query_params_schema/split/formURLEncodedAPIWithQueryParameters.schemas.ts +35 -0
  35. package/examples/form_url_encoded_data_with_query_params_schema/split/formURLEncodedAPIWithQueryParameters.ts +104 -0
  36. package/examples/form_url_encoded_data_with_query_params_schema/split/k6-script.sample.ts +14 -0
  37. package/examples/form_url_encoded_data_with_query_params_schema/tags/default.ts +104 -0
  38. package/examples/form_url_encoded_data_with_query_params_schema/tags/formURLEncodedAPIWithQueryParameters.schemas.ts +35 -0
  39. package/examples/form_url_encoded_data_with_query_params_schema/tags/k6-script.sample.ts +14 -0
  40. package/examples/get_request_with_path_parameters_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  41. package/examples/get_request_with_path_parameters_schema/single/simpleAPI.ts +94 -0
  42. package/examples/get_request_with_path_parameters_schema/split/k6-script.sample.ts +11 -0
  43. package/examples/get_request_with_path_parameters_schema/split/simpleAPI.schemas.ts +12 -0
  44. package/examples/get_request_with_path_parameters_schema/split/simpleAPI.ts +90 -0
  45. package/examples/get_request_with_path_parameters_schema/tags/default.ts +90 -0
  46. package/examples/get_request_with_path_parameters_schema/tags/k6-script.sample.ts +11 -0
  47. package/examples/get_request_with_path_parameters_schema/tags/simpleAPI.schemas.ts +12 -0
  48. package/examples/headers_schema/single/headerDemoAPI.ts +202 -0
  49. package/examples/headers_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  50. package/examples/headers_schema/split/headerDemoAPI.schemas.ts +32 -0
  51. package/examples/headers_schema/split/headerDemoAPI.ts +184 -0
  52. package/examples/headers_schema/split/k6-script.sample.ts +25 -0
  53. package/examples/headers_schema/tags/default.ts +182 -0
  54. package/examples/headers_schema/tags/headerDemoAPI.schemas.ts +32 -0
  55. package/examples/headers_schema/tags/k6-script.sample.ts +25 -0
  56. package/examples/no_title_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  57. package/examples/no_title_schema/single/k6Client.ts +87 -0
  58. package/examples/{basic_schema → no_title_schema/split}/k6-script.sample.ts +2 -2
  59. package/examples/no_title_schema/split/k6Client.schemas.ts +9 -0
  60. package/examples/no_title_schema/split/k6Client.ts +85 -0
  61. package/examples/no_title_schema/tags/default.ts +85 -0
  62. package/examples/no_title_schema/tags/k6-script.sample.ts +11 -0
  63. package/examples/no_title_schema/tags/k6Client.schemas.ts +9 -0
  64. package/examples/post_request_with_query_params/single/exampleAPI.ts +126 -0
  65. package/examples/post_request_with_query_params/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  66. package/examples/post_request_with_query_params/split/exampleAPI.schemas.ts +33 -0
  67. package/examples/post_request_with_query_params/split/exampleAPI.ts +105 -0
  68. package/examples/post_request_with_query_params/split/k6-script.sample.ts +14 -0
  69. package/examples/post_request_with_query_params/tags/default.ts +105 -0
  70. package/examples/post_request_with_query_params/tags/exampleAPI.schemas.ts +33 -0
  71. package/examples/post_request_with_query_params/tags/k6-script.sample.ts +14 -0
  72. package/examples/query_params_schema/single/exampleAPI.ts +120 -0
  73. package/examples/query_params_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  74. package/examples/query_params_schema/split/exampleAPI.schemas.ts +37 -0
  75. package/examples/query_params_schema/split/exampleAPI.ts +94 -0
  76. package/examples/query_params_schema/split/k6-script.sample.ts +11 -0
  77. package/examples/query_params_schema/tags/default.ts +94 -0
  78. package/examples/query_params_schema/tags/exampleAPI.schemas.ts +37 -0
  79. package/examples/query_params_schema/tags/k6-script.sample.ts +11 -0
  80. package/examples/simple_post_request_schema/{exampleAPI.ts → single/exampleAPI.ts} +49 -49
  81. package/examples/simple_post_request_schema/{k6-script.sample.ts → single/k6-script.sample.ts} +2 -2
  82. package/examples/simple_post_request_schema/split/exampleAPI.schemas.ts +47 -0
  83. package/examples/simple_post_request_schema/split/exampleAPI.ts +99 -0
  84. package/examples/simple_post_request_schema/split/k6-script.sample.ts +13 -0
  85. package/examples/simple_post_request_schema/tags/default.ts +99 -0
  86. package/examples/simple_post_request_schema/tags/exampleAPI.schemas.ts +47 -0
  87. package/examples/simple_post_request_schema/tags/k6-script.sample.ts +13 -0
  88. package/images/openapi-to-k6.png +0 -0
  89. package/package.json +2 -2
  90. package/src/cli.ts +28 -2
  91. package/src/constants.ts +7 -1
  92. package/src/{generator.ts → generator/index.ts} +8 -21
  93. package/src/{k6SdkClient.ts → generator/k6Client.ts} +174 -222
  94. package/src/type.d.ts +3 -4
  95. package/tests/e2e/schema.json +8 -0
  96. package/tests/e2e/{k6Script.ts → single/k6Script.ts} +7 -2
  97. package/tests/e2e/split/k6Script.ts +82 -0
  98. package/tests/e2e/tags/k6Script.ts +106 -0
  99. package/tests/functional-tests/fixtures/schemas/basic_schema.json +1 -4
  100. package/tests/functional-tests/fixtures/schemas/form_data_schema.json +4 -4
  101. package/tests/functional-tests/fixtures/schemas/form_url_encoded_data_schema.json +3 -3
  102. package/tests/functional-tests/fixtures/schemas/form_url_encoded_data_with_query_params_schema.json +2 -2
  103. package/tests/functional-tests/fixtures/schemas/get_request_with_path_parameters_schema.json +2 -2
  104. package/tests/functional-tests/fixtures/schemas/headers_schema.json +7 -8
  105. package/tests/functional-tests/fixtures/schemas/no_title_schema.json +2 -5
  106. package/tests/functional-tests/fixtures/schemas/post_request_with_query_params.json +3 -4
  107. package/tests/functional-tests/fixtures/schemas/query_params_schema.json +3 -3
  108. package/tests/functional-tests/fixtures/schemas/simple_post_request_schema.json +3 -5
  109. package/tests/functional-tests/generator.test.ts +46 -5
  110. package/examples/basic_schema/simpleAPI.ts +0 -87
  111. package/examples/form_data_schema/formDataAPI.ts +0 -115
  112. package/examples/form_url_encoded_data_schema/formURLEncodedAPI.ts +0 -114
  113. package/examples/form_url_encoded_data_with_query_params_schema/formURLEncodedAPIWithQueryParameters.ts +0 -130
  114. package/examples/get_request_with_path_parameters_schema/simpleAPI.ts +0 -94
  115. package/examples/headers_schema/headerDemoAPI.ts +0 -196
  116. package/examples/no_title_schema/K6Client.ts +0 -86
  117. package/examples/post_request_with_query_params/exampleAPI.ts +0 -124
  118. package/examples/query_params_schema/exampleAPI.ts +0 -118
  119. package/examples/update_examples.sh +0 -21
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * K6Client
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ export type GetExample200 = {
11
+ message?: string
12
+ }
13
+
14
+ /**
15
+ * This is the base client to use for interacting with the API.
16
+ */
17
+ export class K6ClientClient {
18
+ private cleanBaseUrl: string
19
+ private commonRequestParameters: Params
20
+
21
+ constructor(clientOptions: {
22
+ baseUrl: string
23
+ commonRequestParameters?: Params
24
+ }) {
25
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
26
+ }
27
+
28
+ /**
29
+ * @summary Retrieve example data
30
+ */
31
+ getExample(requestParameters?: Params): {
32
+ response: Response
33
+ data: GetExample200
34
+ } {
35
+ const url = new URL(this.cleanBaseUrl + `/example`)
36
+ const mergedRequestParameters = this._mergeRequestParameters(
37
+ requestParameters || {},
38
+ this.commonRequestParameters
39
+ )
40
+ const response = http.request(
41
+ 'GET',
42
+ url.toString(),
43
+ undefined,
44
+ mergedRequestParameters
45
+ )
46
+ let data
47
+
48
+ try {
49
+ data = response.json()
50
+ } catch {
51
+ data = response.body
52
+ }
53
+ return {
54
+ response,
55
+ data,
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Merges the provided request parameters with default parameters for the client.
61
+ *
62
+ * @param {Params} requestParameters - The parameters provided specifically for the request
63
+ * @param {Params} commonRequestParameters - Common parameters for all requests
64
+ * @returns {Params} - The merged parameters
65
+ */
66
+ private _mergeRequestParameters(
67
+ requestParameters?: Params,
68
+ commonRequestParameters?: Params
69
+ ): Params {
70
+ return {
71
+ ...commonRequestParameters, // Default to common parameters
72
+ ...requestParameters, // Override with request-specific parameters
73
+ headers: {
74
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
75
+ ...(requestParameters?.headers || {}),
76
+ },
77
+ cookies: {
78
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
79
+ ...(requestParameters?.cookies || {}),
80
+ },
81
+ tags: {
82
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
83
+ ...(requestParameters?.tags || {}),
84
+ },
85
+ }
86
+ }
87
+ }
@@ -1,7 +1,7 @@
1
- import { createSimpleAPI } from './simpleAPI.ts'
1
+ import { K6ClientClient } from './k6Client.ts'
2
2
 
3
3
  const baseUrl = '<BASE_URL>'
4
- const client = createSimpleAPI({ baseUrl })
4
+ const client = new K6ClientClient({ baseUrl })
5
5
 
6
6
  export default function () {
7
7
  /**
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * K6Client
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type GetExample200 = {
8
+ message?: string
9
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * K6Client
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ import type { GetExample200 } from './k6Client.schemas'
11
+
12
+ /**
13
+ * This is the base client to use for interacting with the API.
14
+ */
15
+ export class K6ClientClient {
16
+ private cleanBaseUrl: string
17
+ private commonRequestParameters: Params
18
+
19
+ constructor(clientOptions: {
20
+ baseUrl: string
21
+ commonRequestParameters?: Params
22
+ }) {
23
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
24
+ }
25
+
26
+ /**
27
+ * @summary Retrieve example data
28
+ */
29
+ getExample(requestParameters?: Params): {
30
+ response: Response
31
+ data: GetExample200
32
+ } {
33
+ const url = new URL(this.cleanBaseUrl + `/example`)
34
+ const mergedRequestParameters = this._mergeRequestParameters(
35
+ requestParameters || {},
36
+ this.commonRequestParameters
37
+ )
38
+ const response = http.request(
39
+ 'GET',
40
+ url.toString(),
41
+ undefined,
42
+ mergedRequestParameters
43
+ )
44
+ let data
45
+
46
+ try {
47
+ data = response.json()
48
+ } catch {
49
+ data = response.body
50
+ }
51
+ return {
52
+ response,
53
+ data,
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Merges the provided request parameters with default parameters for the client.
59
+ *
60
+ * @param {Params} requestParameters - The parameters provided specifically for the request
61
+ * @param {Params} commonRequestParameters - Common parameters for all requests
62
+ * @returns {Params} - The merged parameters
63
+ */
64
+ private _mergeRequestParameters(
65
+ requestParameters?: Params,
66
+ commonRequestParameters?: Params
67
+ ): Params {
68
+ return {
69
+ ...commonRequestParameters, // Default to common parameters
70
+ ...requestParameters, // Override with request-specific parameters
71
+ headers: {
72
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
73
+ ...(requestParameters?.headers || {}),
74
+ },
75
+ cookies: {
76
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
77
+ ...(requestParameters?.cookies || {}),
78
+ },
79
+ tags: {
80
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
81
+ ...(requestParameters?.tags || {}),
82
+ },
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * K6Client
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ import { URL } from 'https://jslib.k6.io/url/1.0.0/index.js'
8
+ import http from 'k6/http'
9
+ import type { Params, Response } from 'k6/http'
10
+ import type { GetExample200 } from './k6Client.schemas'
11
+
12
+ /**
13
+ * This is the base client to use for interacting with the API.
14
+ */
15
+ export class DefaultClient {
16
+ private cleanBaseUrl: string
17
+ private commonRequestParameters: Params
18
+
19
+ constructor(clientOptions: {
20
+ baseUrl: string
21
+ commonRequestParameters?: Params
22
+ }) {
23
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
24
+ }
25
+
26
+ /**
27
+ * @summary Retrieve example data
28
+ */
29
+ getExample(requestParameters?: Params): {
30
+ response: Response
31
+ data: GetExample200
32
+ } {
33
+ const url = new URL(this.cleanBaseUrl + `/example`)
34
+ const mergedRequestParameters = this._mergeRequestParameters(
35
+ requestParameters || {},
36
+ this.commonRequestParameters
37
+ )
38
+ const response = http.request(
39
+ 'GET',
40
+ url.toString(),
41
+ undefined,
42
+ mergedRequestParameters
43
+ )
44
+ let data
45
+
46
+ try {
47
+ data = response.json()
48
+ } catch {
49
+ data = response.body
50
+ }
51
+ return {
52
+ response,
53
+ data,
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Merges the provided request parameters with default parameters for the client.
59
+ *
60
+ * @param {Params} requestParameters - The parameters provided specifically for the request
61
+ * @param {Params} commonRequestParameters - Common parameters for all requests
62
+ * @returns {Params} - The merged parameters
63
+ */
64
+ private _mergeRequestParameters(
65
+ requestParameters?: Params,
66
+ commonRequestParameters?: Params
67
+ ): Params {
68
+ return {
69
+ ...commonRequestParameters, // Default to common parameters
70
+ ...requestParameters, // Override with request-specific parameters
71
+ headers: {
72
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
73
+ ...(requestParameters?.headers || {}),
74
+ },
75
+ cookies: {
76
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
77
+ ...(requestParameters?.cookies || {}),
78
+ },
79
+ tags: {
80
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
81
+ ...(requestParameters?.tags || {}),
82
+ },
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,11 @@
1
+ import { K6ClientClient } from './k6Client.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new K6ClientClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Retrieve example data
9
+ */
10
+ const getExampleResponseData = client.getExample()
11
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * K6Client
5
+ * OpenAPI spec version: 1.0.0
6
+ */
7
+ export type GetExample200 = {
8
+ message?: string
9
+ }
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Example API
5
+ * API with a POST request having an object as the body and query parameters
6
+ * OpenAPI spec version: 1.0.0
7
+ */
8
+ import { URL, URLSearchParams } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ export type CreateExampleData201 = {
12
+ /** The data from the body */
13
+ data?: string
14
+ /** The active status from the query parameter */
15
+ isActive?: boolean
16
+ /** Response status */
17
+ status?: string
18
+ /** The user ID from the query parameter */
19
+ userId?: string
20
+ }
21
+
22
+ export type CreateExampleDataBody = {
23
+ /** A string field representing data */
24
+ data: string
25
+ }
26
+
27
+ export type CreateExampleDataParams = {
28
+ /**
29
+ * A string query parameter for user ID
30
+ */
31
+ userId: string
32
+ /**
33
+ * A boolean query parameter
34
+ */
35
+ isActive?: boolean
36
+ }
37
+
38
+ /**
39
+ * This is the base client to use for interacting with the API.
40
+ */
41
+ export class ExampleAPIClient {
42
+ private cleanBaseUrl: string
43
+ private commonRequestParameters: Params
44
+
45
+ constructor(clientOptions: {
46
+ baseUrl: string
47
+ commonRequestParameters?: Params
48
+ }) {
49
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
50
+ }
51
+
52
+ /**
53
+ * This endpoint demonstrates a POST request with query parameters and a single field object in the body
54
+ * @summary Create example data
55
+ */
56
+ createExampleData(
57
+ createExampleDataBody: CreateExampleDataBody,
58
+ params: CreateExampleDataParams,
59
+ requestParameters?: Params
60
+ ): {
61
+ response: Response
62
+ data: CreateExampleData201
63
+ } {
64
+ const url = new URL(
65
+ this.cleanBaseUrl +
66
+ `/example` +
67
+ `?${new URLSearchParams(params).toString()}`
68
+ )
69
+ const mergedRequestParameters = this._mergeRequestParameters(
70
+ requestParameters || {},
71
+ this.commonRequestParameters
72
+ )
73
+ const response = http.request(
74
+ 'POST',
75
+ url.toString(),
76
+ JSON.stringify(createExampleDataBody),
77
+ {
78
+ ...mergedRequestParameters,
79
+ headers: {
80
+ 'Content-Type': 'application/json',
81
+ ...mergedRequestParameters?.headers,
82
+ },
83
+ }
84
+ )
85
+ let data
86
+
87
+ try {
88
+ data = response.json()
89
+ } catch {
90
+ data = response.body
91
+ }
92
+ return {
93
+ response,
94
+ data,
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Merges the provided request parameters with default parameters for the client.
100
+ *
101
+ * @param {Params} requestParameters - The parameters provided specifically for the request
102
+ * @param {Params} commonRequestParameters - Common parameters for all requests
103
+ * @returns {Params} - The merged parameters
104
+ */
105
+ private _mergeRequestParameters(
106
+ requestParameters?: Params,
107
+ commonRequestParameters?: Params
108
+ ): Params {
109
+ return {
110
+ ...commonRequestParameters, // Default to common parameters
111
+ ...requestParameters, // Override with request-specific parameters
112
+ headers: {
113
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
114
+ ...(requestParameters?.headers || {}),
115
+ },
116
+ cookies: {
117
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
118
+ ...(requestParameters?.cookies || {}),
119
+ },
120
+ tags: {
121
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
122
+ ...(requestParameters?.tags || {}),
123
+ },
124
+ }
125
+ }
126
+ }
@@ -1,7 +1,7 @@
1
- import { createExampleAPI } from './exampleAPI.ts'
1
+ import { ExampleAPIClient } from './exampleAPI.ts'
2
2
 
3
3
  const baseUrl = '<BASE_URL>'
4
- const client = createExampleAPI({ baseUrl })
4
+ const client = new ExampleAPIClient({ baseUrl })
5
5
 
6
6
  export default function () {
7
7
  /**
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Example API
5
+ * API with a POST request having an object as the body and query parameters
6
+ * OpenAPI spec version: 1.0.0
7
+ */
8
+ export type CreateExampleData201 = {
9
+ /** The data from the body */
10
+ data?: string
11
+ /** The active status from the query parameter */
12
+ isActive?: boolean
13
+ /** Response status */
14
+ status?: string
15
+ /** The user ID from the query parameter */
16
+ userId?: string
17
+ }
18
+
19
+ export type CreateExampleDataBody = {
20
+ /** A string field representing data */
21
+ data: string
22
+ }
23
+
24
+ export type CreateExampleDataParams = {
25
+ /**
26
+ * A string query parameter for user ID
27
+ */
28
+ userId: string
29
+ /**
30
+ * A boolean query parameter
31
+ */
32
+ isActive?: boolean
33
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Example API
5
+ * API with a POST request having an object as the body and query parameters
6
+ * OpenAPI spec version: 1.0.0
7
+ */
8
+ import { URL, URLSearchParams } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ import type {
12
+ CreateExampleData201,
13
+ CreateExampleDataBody,
14
+ CreateExampleDataParams,
15
+ } from './exampleAPI.schemas'
16
+
17
+ /**
18
+ * This is the base client to use for interacting with the API.
19
+ */
20
+ export class ExampleAPIClient {
21
+ private cleanBaseUrl: string
22
+ private commonRequestParameters: Params
23
+
24
+ constructor(clientOptions: {
25
+ baseUrl: string
26
+ commonRequestParameters?: Params
27
+ }) {
28
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
29
+ }
30
+
31
+ /**
32
+ * This endpoint demonstrates a POST request with query parameters and a single field object in the body
33
+ * @summary Create example data
34
+ */
35
+ createExampleData(
36
+ createExampleDataBody: CreateExampleDataBody,
37
+ params: CreateExampleDataParams,
38
+ requestParameters?: Params
39
+ ): {
40
+ response: Response
41
+ data: CreateExampleData201
42
+ } {
43
+ const url = new URL(
44
+ this.cleanBaseUrl +
45
+ `/example` +
46
+ `?${new URLSearchParams(params).toString()}`
47
+ )
48
+ const mergedRequestParameters = this._mergeRequestParameters(
49
+ requestParameters || {},
50
+ this.commonRequestParameters
51
+ )
52
+ const response = http.request(
53
+ 'POST',
54
+ url.toString(),
55
+ JSON.stringify(createExampleDataBody),
56
+ {
57
+ ...mergedRequestParameters,
58
+ headers: {
59
+ 'Content-Type': 'application/json',
60
+ ...mergedRequestParameters?.headers,
61
+ },
62
+ }
63
+ )
64
+ let data
65
+
66
+ try {
67
+ data = response.json()
68
+ } catch {
69
+ data = response.body
70
+ }
71
+ return {
72
+ response,
73
+ data,
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Merges the provided request parameters with default parameters for the client.
79
+ *
80
+ * @param {Params} requestParameters - The parameters provided specifically for the request
81
+ * @param {Params} commonRequestParameters - Common parameters for all requests
82
+ * @returns {Params} - The merged parameters
83
+ */
84
+ private _mergeRequestParameters(
85
+ requestParameters?: Params,
86
+ commonRequestParameters?: Params
87
+ ): Params {
88
+ return {
89
+ ...commonRequestParameters, // Default to common parameters
90
+ ...requestParameters, // Override with request-specific parameters
91
+ headers: {
92
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
93
+ ...(requestParameters?.headers || {}),
94
+ },
95
+ cookies: {
96
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
97
+ ...(requestParameters?.cookies || {}),
98
+ },
99
+ tags: {
100
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
101
+ ...(requestParameters?.tags || {}),
102
+ },
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,14 @@
1
+ import { ExampleAPIClient } from './exampleAPI.ts'
2
+
3
+ const baseUrl = '<BASE_URL>'
4
+ const client = new ExampleAPIClient({ baseUrl })
5
+
6
+ export default function () {
7
+ /**
8
+ * Create example data
9
+ */
10
+ const createExampleDataResponseData = client.createExampleData(
11
+ createExampleDataBody,
12
+ params
13
+ )
14
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Automatically generated by @grafana/openapi-to-k6: 0.2.0
3
+ * Do not edit manually.
4
+ * Example API
5
+ * API with a POST request having an object as the body and query parameters
6
+ * OpenAPI spec version: 1.0.0
7
+ */
8
+ import { URL, URLSearchParams } from 'https://jslib.k6.io/url/1.0.0/index.js'
9
+ import http from 'k6/http'
10
+ import type { Params, Response } from 'k6/http'
11
+ import type {
12
+ CreateExampleData201,
13
+ CreateExampleDataBody,
14
+ CreateExampleDataParams,
15
+ } from './exampleAPI.schemas'
16
+
17
+ /**
18
+ * This is the base client to use for interacting with the API.
19
+ */
20
+ export class DefaultClient {
21
+ private cleanBaseUrl: string
22
+ private commonRequestParameters: Params
23
+
24
+ constructor(clientOptions: {
25
+ baseUrl: string
26
+ commonRequestParameters?: Params
27
+ }) {
28
+ this.cleanBaseUrl = clientOptions.baseUrl.replace(/\/+$/, '')
29
+ }
30
+
31
+ /**
32
+ * This endpoint demonstrates a POST request with query parameters and a single field object in the body
33
+ * @summary Create example data
34
+ */
35
+ createExampleData(
36
+ createExampleDataBody: CreateExampleDataBody,
37
+ params: CreateExampleDataParams,
38
+ requestParameters?: Params
39
+ ): {
40
+ response: Response
41
+ data: CreateExampleData201
42
+ } {
43
+ const url = new URL(
44
+ this.cleanBaseUrl +
45
+ `/example` +
46
+ `?${new URLSearchParams(params).toString()}`
47
+ )
48
+ const mergedRequestParameters = this._mergeRequestParameters(
49
+ requestParameters || {},
50
+ this.commonRequestParameters
51
+ )
52
+ const response = http.request(
53
+ 'POST',
54
+ url.toString(),
55
+ JSON.stringify(createExampleDataBody),
56
+ {
57
+ ...mergedRequestParameters,
58
+ headers: {
59
+ 'Content-Type': 'application/json',
60
+ ...mergedRequestParameters?.headers,
61
+ },
62
+ }
63
+ )
64
+ let data
65
+
66
+ try {
67
+ data = response.json()
68
+ } catch {
69
+ data = response.body
70
+ }
71
+ return {
72
+ response,
73
+ data,
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Merges the provided request parameters with default parameters for the client.
79
+ *
80
+ * @param {Params} requestParameters - The parameters provided specifically for the request
81
+ * @param {Params} commonRequestParameters - Common parameters for all requests
82
+ * @returns {Params} - The merged parameters
83
+ */
84
+ private _mergeRequestParameters(
85
+ requestParameters?: Params,
86
+ commonRequestParameters?: Params
87
+ ): Params {
88
+ return {
89
+ ...commonRequestParameters, // Default to common parameters
90
+ ...requestParameters, // Override with request-specific parameters
91
+ headers: {
92
+ ...(commonRequestParameters?.headers || {}), // Ensure headers are defined
93
+ ...(requestParameters?.headers || {}),
94
+ },
95
+ cookies: {
96
+ ...(commonRequestParameters?.cookies || {}), // Ensure cookies are defined
97
+ ...(requestParameters?.cookies || {}),
98
+ },
99
+ tags: {
100
+ ...(commonRequestParameters?.tags || {}), // Ensure tags are defined
101
+ ...(requestParameters?.tags || {}),
102
+ },
103
+ }
104
+ }
105
+ }