norn-cli 1.3.18 → 1.3.20

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-15T17:34:40.588Z",
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,35 @@
2
2
 
3
3
  All notable changes to the "Norn" extension will be documented in this file.
4
4
 
5
+ ## [1.3.20] - 2026-02-15
6
+
7
+ ### Fixed
8
+ - **API Coverage (Run Sequences)**:
9
+ - Status assertions written after `run` calls are now applied to the returned request from the called sequence.
10
+ - Coverage now correctly reflects patterns like `var user = run GetUser` followed by `assert user.status == 200`.
11
+ - **Coverage Assertion Scanning**:
12
+ - Improved scan boundaries so assertions do not leak across `var ... = run ...` step boundaries.
13
+ - **Compile Compatibility (Node 16)**:
14
+ - Added compatibility shims in ESLint config for `structuredClone` and `AbortSignal.throwIfAborted` so `npm run compile` succeeds on older Node runtimes.
15
+
16
+ ## [1.3.19] - 2026-02-15
17
+
18
+ ### Added
19
+ - **Swagger Request Body IntelliSense (Endpoint Calls)**:
20
+ - Added request body template insertion for `POST`/`PUT`/`PATCH` endpoint calls backed by Swagger metadata.
21
+ - Added inline JSON key suggestions inside request bodies using cached Swagger request schemas.
22
+ - Added persistent request-schema cache in `.norn-cache/swagger-body-intellisense.json`.
23
+
24
+ ### Improved
25
+ - **Swagger Schema Cache Availability**:
26
+ - Extension now warms request-body schema cache from `.nornapi` `swagger` URLs on startup and on `.nornapi` save.
27
+
28
+ ### Fixed
29
+ - **Request Body Completions**:
30
+ - Fixed endpoint-to-swagger path mapping when endpoint URLs use variable prefixes like `{{baseUrl}}/...`.
31
+ - Fixed body-start completion filtering so template suggestions appear reliably when typing `{` / `[`.
32
+ - Fixed template insertion indentation and fallback behavior when schema has no required fields.
33
+
5
34
  ## [1.3.18] - 2026-02-15
6
35
 
7
36
  ### Improved
package/README.md CHANGED
@@ -31,7 +31,7 @@ A powerful REST client extension for VS Code with sequences, assertions, environ
31
31
  - **Response Comparison**: Compare any two API responses side-by-side with VS Code's diff view
32
32
  - **Clickable JSON**: Click any JSON value in the response panel to auto-generate assertions
33
33
  - **Syntax Highlighting**: Full syntax highlighting for requests, headers, JSON bodies
34
- - **IntelliSense**: Autocomplete for HTTP methods, headers, variables, and keywords
34
+ - **IntelliSense**: Autocomplete for HTTP methods, headers, variables, keywords, and Swagger-based request body keys/templates for endpoint POST/PUT/PATCH calls
35
35
  - **Diagnostics**: Error highlighting for undefined variables
36
36
  - **CLI**: Run tests from terminal with JUnit/HTML reports for CI/CD automation
37
37
 
@@ -105,6 +105,8 @@ Content-Type: application/json
105
105
  }
106
106
  ```
107
107
 
108
+ If the request uses an imported endpoint (`POST/PUT/PATCH EndpointName`) backed by a cached Swagger spec, typing `{` on the body line offers **Insert request body template** (required fields only). As you type JSON keys, IntelliSense suggests schema properties for that object.
109
+
108
110
  ### Sequences (Chained Requests)
109
111
 
110
112
  Chain multiple requests and capture response data:
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.18",
5
+ "version": "1.3.20",
6
6
  "publisher": "Norn-PeterKrustanov",
7
7
  "author": {
8
8
  "name": "Peter Krastanov"