norn-cli 1.3.19 → 1.3.21

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.
@@ -0,0 +1,409 @@
1
+ {
2
+ "version": 1,
3
+ "urls": {
4
+ "https://petstore.swagger.io/v2/swagger.json": {
5
+ "baseUrl": "https://petstore.swagger.io/v2",
6
+ "fetchedAt": "2026-02-17T21:19:04.966Z",
7
+ "schemas": [
8
+ {
9
+ "operationId": "AddPet",
10
+ "method": "POST",
11
+ "path": "/pet",
12
+ "required": [
13
+ "name",
14
+ "photoUrls"
15
+ ],
16
+ "schema": {
17
+ "$schema": "http://json-schema.org/draft-07/schema#",
18
+ "title": "AddPet Request",
19
+ "type": "object",
20
+ "required": [
21
+ "name",
22
+ "photoUrls"
23
+ ],
24
+ "properties": {
25
+ "id": {
26
+ "type": "integer",
27
+ "format": "int64"
28
+ },
29
+ "category": {
30
+ "type": "object",
31
+ "properties": {
32
+ "id": {
33
+ "type": "integer",
34
+ "format": "int64"
35
+ },
36
+ "name": {
37
+ "type": "string"
38
+ }
39
+ },
40
+ "xml": {
41
+ "name": "Category"
42
+ }
43
+ },
44
+ "name": {
45
+ "type": "string",
46
+ "example": "doggie"
47
+ },
48
+ "photoUrls": {
49
+ "type": "array",
50
+ "xml": {
51
+ "wrapped": true
52
+ },
53
+ "items": {
54
+ "type": "string",
55
+ "xml": {
56
+ "name": "photoUrl"
57
+ }
58
+ }
59
+ },
60
+ "tags": {
61
+ "type": "array",
62
+ "xml": {
63
+ "wrapped": true
64
+ },
65
+ "items": {
66
+ "type": "object",
67
+ "properties": {
68
+ "id": {
69
+ "type": "integer",
70
+ "format": "int64"
71
+ },
72
+ "name": {
73
+ "type": "string"
74
+ }
75
+ },
76
+ "xml": {
77
+ "name": "Tag"
78
+ }
79
+ }
80
+ },
81
+ "status": {
82
+ "type": "string",
83
+ "description": "pet status in the store",
84
+ "enum": [
85
+ "available",
86
+ "pending",
87
+ "sold"
88
+ ]
89
+ }
90
+ },
91
+ "xml": {
92
+ "name": "Pet"
93
+ }
94
+ }
95
+ },
96
+ {
97
+ "operationId": "UpdatePet",
98
+ "method": "PUT",
99
+ "path": "/pet",
100
+ "required": [
101
+ "name",
102
+ "photoUrls"
103
+ ],
104
+ "schema": {
105
+ "$schema": "http://json-schema.org/draft-07/schema#",
106
+ "title": "UpdatePet Request",
107
+ "type": "object",
108
+ "required": [
109
+ "name",
110
+ "photoUrls"
111
+ ],
112
+ "properties": {
113
+ "id": {
114
+ "type": "integer",
115
+ "format": "int64"
116
+ },
117
+ "category": {
118
+ "type": "object",
119
+ "properties": {
120
+ "id": {
121
+ "type": "integer",
122
+ "format": "int64"
123
+ },
124
+ "name": {
125
+ "type": "string"
126
+ }
127
+ },
128
+ "xml": {
129
+ "name": "Category"
130
+ }
131
+ },
132
+ "name": {
133
+ "type": "string",
134
+ "example": "doggie"
135
+ },
136
+ "photoUrls": {
137
+ "type": "array",
138
+ "xml": {
139
+ "wrapped": true
140
+ },
141
+ "items": {
142
+ "type": "string",
143
+ "xml": {
144
+ "name": "photoUrl"
145
+ }
146
+ }
147
+ },
148
+ "tags": {
149
+ "type": "array",
150
+ "xml": {
151
+ "wrapped": true
152
+ },
153
+ "items": {
154
+ "type": "object",
155
+ "properties": {
156
+ "id": {
157
+ "type": "integer",
158
+ "format": "int64"
159
+ },
160
+ "name": {
161
+ "type": "string"
162
+ }
163
+ },
164
+ "xml": {
165
+ "name": "Tag"
166
+ }
167
+ }
168
+ },
169
+ "status": {
170
+ "type": "string",
171
+ "description": "pet status in the store",
172
+ "enum": [
173
+ "available",
174
+ "pending",
175
+ "sold"
176
+ ]
177
+ }
178
+ },
179
+ "xml": {
180
+ "name": "Pet"
181
+ }
182
+ }
183
+ },
184
+ {
185
+ "operationId": "PlaceOrder",
186
+ "method": "POST",
187
+ "path": "/store/order",
188
+ "required": [],
189
+ "schema": {
190
+ "$schema": "http://json-schema.org/draft-07/schema#",
191
+ "title": "PlaceOrder Request",
192
+ "type": "object",
193
+ "properties": {
194
+ "id": {
195
+ "type": "integer",
196
+ "format": "int64"
197
+ },
198
+ "petId": {
199
+ "type": "integer",
200
+ "format": "int64"
201
+ },
202
+ "quantity": {
203
+ "type": "integer",
204
+ "format": "int32"
205
+ },
206
+ "shipDate": {
207
+ "type": "string",
208
+ "format": "date-time"
209
+ },
210
+ "status": {
211
+ "type": "string",
212
+ "description": "Order Status",
213
+ "enum": [
214
+ "placed",
215
+ "approved",
216
+ "delivered"
217
+ ]
218
+ },
219
+ "complete": {
220
+ "type": "boolean"
221
+ }
222
+ },
223
+ "xml": {
224
+ "name": "Order"
225
+ }
226
+ }
227
+ },
228
+ {
229
+ "operationId": "CreateUsersWithListInput",
230
+ "method": "POST",
231
+ "path": "/user/createWithList",
232
+ "required": [],
233
+ "schema": {
234
+ "$schema": "http://json-schema.org/draft-07/schema#",
235
+ "title": "CreateUsersWithListInput Request",
236
+ "type": "array",
237
+ "items": {
238
+ "type": "object",
239
+ "properties": {
240
+ "id": {
241
+ "type": "integer",
242
+ "format": "int64"
243
+ },
244
+ "username": {
245
+ "type": "string"
246
+ },
247
+ "firstName": {
248
+ "type": "string"
249
+ },
250
+ "lastName": {
251
+ "type": "string"
252
+ },
253
+ "email": {
254
+ "type": "string"
255
+ },
256
+ "password": {
257
+ "type": "string"
258
+ },
259
+ "phone": {
260
+ "type": "string"
261
+ },
262
+ "userStatus": {
263
+ "type": "integer",
264
+ "format": "int32",
265
+ "description": "User Status"
266
+ }
267
+ },
268
+ "xml": {
269
+ "name": "User"
270
+ }
271
+ }
272
+ }
273
+ },
274
+ {
275
+ "operationId": "UpdateUser",
276
+ "method": "PUT",
277
+ "path": "/user/{username}",
278
+ "required": [],
279
+ "schema": {
280
+ "$schema": "http://json-schema.org/draft-07/schema#",
281
+ "title": "UpdateUser Request",
282
+ "type": "object",
283
+ "properties": {
284
+ "id": {
285
+ "type": "integer",
286
+ "format": "int64"
287
+ },
288
+ "username": {
289
+ "type": "string"
290
+ },
291
+ "firstName": {
292
+ "type": "string"
293
+ },
294
+ "lastName": {
295
+ "type": "string"
296
+ },
297
+ "email": {
298
+ "type": "string"
299
+ },
300
+ "password": {
301
+ "type": "string"
302
+ },
303
+ "phone": {
304
+ "type": "string"
305
+ },
306
+ "userStatus": {
307
+ "type": "integer",
308
+ "format": "int32",
309
+ "description": "User Status"
310
+ }
311
+ },
312
+ "xml": {
313
+ "name": "User"
314
+ }
315
+ }
316
+ },
317
+ {
318
+ "operationId": "CreateUsersWithArrayInput",
319
+ "method": "POST",
320
+ "path": "/user/createWithArray",
321
+ "required": [],
322
+ "schema": {
323
+ "$schema": "http://json-schema.org/draft-07/schema#",
324
+ "title": "CreateUsersWithArrayInput Request",
325
+ "type": "array",
326
+ "items": {
327
+ "type": "object",
328
+ "properties": {
329
+ "id": {
330
+ "type": "integer",
331
+ "format": "int64"
332
+ },
333
+ "username": {
334
+ "type": "string"
335
+ },
336
+ "firstName": {
337
+ "type": "string"
338
+ },
339
+ "lastName": {
340
+ "type": "string"
341
+ },
342
+ "email": {
343
+ "type": "string"
344
+ },
345
+ "password": {
346
+ "type": "string"
347
+ },
348
+ "phone": {
349
+ "type": "string"
350
+ },
351
+ "userStatus": {
352
+ "type": "integer",
353
+ "format": "int32",
354
+ "description": "User Status"
355
+ }
356
+ },
357
+ "xml": {
358
+ "name": "User"
359
+ }
360
+ }
361
+ }
362
+ },
363
+ {
364
+ "operationId": "CreateUser",
365
+ "method": "POST",
366
+ "path": "/user",
367
+ "required": [],
368
+ "schema": {
369
+ "$schema": "http://json-schema.org/draft-07/schema#",
370
+ "title": "CreateUser Request",
371
+ "type": "object",
372
+ "properties": {
373
+ "id": {
374
+ "type": "integer",
375
+ "format": "int64"
376
+ },
377
+ "username": {
378
+ "type": "string"
379
+ },
380
+ "firstName": {
381
+ "type": "string"
382
+ },
383
+ "lastName": {
384
+ "type": "string"
385
+ },
386
+ "email": {
387
+ "type": "string"
388
+ },
389
+ "password": {
390
+ "type": "string"
391
+ },
392
+ "phone": {
393
+ "type": "string"
394
+ },
395
+ "userStatus": {
396
+ "type": "integer",
397
+ "format": "int32",
398
+ "description": "User Status"
399
+ }
400
+ },
401
+ "xml": {
402
+ "name": "User"
403
+ }
404
+ }
405
+ }
406
+ ]
407
+ }
408
+ }
409
+ }
package/AGENTS.md CHANGED
@@ -56,6 +56,12 @@ The Test Verification agent runs:
56
56
 
57
57
  **Trigger words:** publish, release, version, patch, bump, deploy
58
58
 
59
+ ## Publishing Ownership
60
+
61
+ When release verification and version prep are complete, **do not run publishing commands** (`npm run publish:npm`, `npm run publish:vsce`, `npm run publish:all`).
62
+
63
+ The **user runs publish commands manually**.
64
+
59
65
  ## Key Files
60
66
 
61
67
  | Purpose | File |
package/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  All notable changes to the "Norn" extension will be documented in this file.
4
4
 
5
+ ## [1.3.21] - 2026-02-17
6
+
7
+ ### Fixed
8
+ - **API Coverage Scope (Swagger CodeLens/Panel)**:
9
+ - Coverage for a `.nornapi` file now only includes `.norn` tests in that file's directory and descendants.
10
+ - Parent/sibling directories are no longer counted when opening coverage from a specific `.nornapi` file.
11
+ - `run SequenceName` resolution for coverage is now scoped by directory tree to avoid cross-folder name collisions.
12
+ - **Endpoint Path Mapping for Coverage**:
13
+ - Fixed coverage endpoint mapping when `.nornapi` endpoints use variable-prefixed URLs such as `{{baseUrl}}/path`.
14
+ - This prevents false 0% coverage in isolated folder setups.
15
+ - **Coverage UI Accuracy**:
16
+ - Swagger coverage CodeLens now shows a stable `Show Coverage` action instead of stale global percentages.
17
+ - Coverage status bar now behaves as a context-aware action button and no longer shows drifting percentage values.
18
+ - Status bar click target now follows the active `.nornapi` editor context.
19
+ - **Diagnostics – Invalid JSON Body Shape**:
20
+ - Added `.norn` diagnostic for JSON-like request body properties missing surrounding `{ }` in `POST`/`PUT`/`PATCH` requests.
21
+ - Example now flagged: property lines like `"username": "value"` directly under a request without an object wrapper.
22
+ - Diagnostic correctly skips form-style bodies when `Content-Type` is `application/x-www-form-urlencoded` or `multipart/form-data` (inline header or header group).
23
+
24
+ ## [1.3.20] - 2026-02-15
25
+
26
+ ### Fixed
27
+ - **API Coverage (Run Sequences)**:
28
+ - Status assertions written after `run` calls are now applied to the returned request from the called sequence.
29
+ - Coverage now correctly reflects patterns like `var user = run GetUser` followed by `assert user.status == 200`.
30
+ - **Coverage Assertion Scanning**:
31
+ - Improved scan boundaries so assertions do not leak across `var ... = run ...` step boundaries.
32
+ - **Compile Compatibility (Node 16)**:
33
+ - Added compatibility shims in ESLint config for `structuredClone` and `AbortSignal.throwIfAborted` so `npm run compile` succeeds on older Node runtimes.
34
+
5
35
  ## [1.3.19] - 2026-02-15
6
36
 
7
37
  ### Added
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "norn-cli",
3
3
  "displayName": "Norn - REST Client",
4
4
  "description": "A powerful REST client for making HTTP requests with sequences, variables, scripts, and cookie support",
5
- "version": "1.3.19",
5
+ "version": "1.3.21",
6
6
  "publisher": "Norn-PeterKrustanov",
7
7
  "author": {
8
8
  "name": "Peter Krastanov"