@forge/lint 0.0.0-experimental-9fff5da → 0.0.0-experimental-7c72fec

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/CHANGELOG.md CHANGED
@@ -1,15 +1,691 @@
1
1
  # @forge/lint
2
2
 
3
- ## 0.0.0-experimental-9fff5da
3
+ ## 0.0.0-experimental-7c72fec
4
4
 
5
5
  ### Patch Changes
6
6
 
7
+ - Updated dependencies [7c72fec]
8
+ - Updated dependencies [c145946]
9
+ - Updated dependencies [813f8f3]
10
+ - Updated dependencies [8ee1c58]
11
+ - Updated dependencies [5152239]
12
+ - @forge/manifest@0.0.0-experimental-7c72fec
13
+ - @forge/cli-shared@0.0.0-experimental-7c72fec
14
+ - @forge/csp@0.0.0-experimental-7c72fec
15
+
16
+ ## 2.0.1-next.0
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [813f8f3]
21
+ - Updated dependencies [5152239]
22
+ - @forge/manifest@3.1.0-next.0
23
+ - @forge/cli-shared@2.2.1-next.0
24
+
25
+ ## 2.0.0
26
+
27
+ ### Major Changes
28
+
29
+ - 6ceb574: Update ui-hooks to use new granular scopes
30
+
31
+ ### Patch Changes
32
+
33
+ - 69e25c2: Required permissions scope linter should read from the x-atlassian-oauth2-scopes. If it is not present then read from the security OAuth2 field. Combining Product DACIs https://hello.atlassian.net/wiki/spaces/redfox/pages/1046875420/RFC+OAuth+scopes+deprecation+in+Jira+-+DAC and https://hello.atlassian.net/wiki/spaces/redfox/pages/1304762888/OpenAPI+-+DAC+contract.
34
+ - Updated dependencies [bd6e025]
35
+ - Updated dependencies [1c196ff]
36
+ - Updated dependencies [271b98a]
37
+ - Updated dependencies [4cfa56d]
38
+ - Updated dependencies [22a488e]
39
+ - Updated dependencies [218fe20]
40
+ - Updated dependencies [1dba082]
41
+ - Updated dependencies [2bca1c0]
42
+ - Updated dependencies [1dba082]
43
+ - Updated dependencies [689c09b]
44
+ - Updated dependencies [b97660c]
45
+ - Updated dependencies [7c0d2ee]
46
+ - Updated dependencies [1dba082]
47
+ - Updated dependencies [d3afe01]
48
+ - Updated dependencies [dfe9dd8]
49
+ - Updated dependencies [91ea057]
50
+ - Updated dependencies [3010f0e]
51
+ - Updated dependencies [2b7c32b]
52
+ - Updated dependencies [e7ee3a7]
53
+ - Updated dependencies [92d081d]
54
+ - Updated dependencies [d3c8c8d]
55
+ - Updated dependencies [fca240d]
56
+ - Updated dependencies [36c7c8f]
57
+ - Updated dependencies [d2f6992]
58
+ - Updated dependencies [d18c9f1]
59
+ - Updated dependencies [1dba082]
60
+ - Updated dependencies [fa963b1]
61
+ - Updated dependencies [0a7725f]
62
+ - Updated dependencies [1dba082]
63
+ - Updated dependencies [e4a14c7]
64
+ - Updated dependencies [2bb89c5]
65
+ - Updated dependencies [5875eb3]
66
+ - Updated dependencies [b63af27]
67
+ - Updated dependencies [0a39c43]
68
+ - @forge/manifest@3.0.0
69
+ - @forge/csp@1.9.0
70
+ - @forge/cli-shared@2.2.0
71
+
72
+ ## 2.0.0-next.24
73
+
74
+ ### Major Changes
75
+
76
+ - 6ceb574: Update ui-hooks to use new granular scopes
77
+
78
+ ### Patch Changes
79
+
80
+ - Updated dependencies [4cfa56d]
81
+ - Updated dependencies [fca240d]
82
+ - @forge/manifest@3.0.0-next.21
83
+ - @forge/cli-shared@2.2.0-next.22
84
+
85
+ ## 2.0.0-next.23
86
+
87
+ ### Patch Changes
88
+
89
+ - Updated dependencies [271b98a]
90
+ - Updated dependencies [2bca1c0]
91
+ - @forge/manifest@2.6.0-next.20
92
+ - @forge/cli-shared@2.2.0-next.21
93
+
94
+ ## 2.0.0-next.22
95
+
96
+ ### Patch Changes
97
+
98
+ - Updated dependencies [d18c9f1]
99
+ - Updated dependencies [5875eb3]
100
+ - @forge/manifest@2.6.0-next.19
101
+ - @forge/cli-shared@2.2.0-next.20
102
+
103
+ ## 2.0.0-next.21
104
+
105
+ ### Patch Changes
106
+
107
+ - Updated dependencies [1c196ff]
108
+ - Updated dependencies [e7ee3a7]
109
+ - @forge/csp@1.9.0-next.1
110
+ - @forge/manifest@2.6.0-next.18
111
+ - @forge/cli-shared@2.2.0-next.19
112
+
113
+ ## 2.0.0-next.20
114
+
115
+ ### Patch Changes
116
+
117
+ - Updated dependencies [fa963b1]
118
+ - @forge/manifest@2.6.0-next.17
119
+ - @forge/cli-shared@2.2.0-next.18
120
+
121
+ ## 2.0.0-next.19
122
+
123
+ ### Patch Changes
124
+
125
+ - Updated dependencies [218fe20]
126
+ - @forge/manifest@2.6.0-next.16
127
+ - @forge/cli-shared@2.2.0-next.17
128
+
129
+ ## 2.0.0-next.18
130
+
131
+ ### Patch Changes
132
+
133
+ - Updated dependencies [e4a14c7]
134
+ - Updated dependencies [b63af27]
135
+ - @forge/manifest@2.6.0-next.15
136
+ - @forge/cli-shared@2.2.0-next.16
137
+
138
+ ## 2.0.0-next.17
139
+
140
+ ### Patch Changes
141
+
142
+ - Updated dependencies [2b7c32b]
143
+ - @forge/manifest@2.6.0-next.14
144
+ - @forge/cli-shared@2.1.6-next.15
145
+
146
+ ## 2.0.0-next.16
147
+
148
+ ### Patch Changes
149
+
150
+ - Updated dependencies [a0a2c5b]
151
+ - Updated dependencies [689c09b]
152
+ - Updated dependencies [92d081d]
153
+ - Updated dependencies [36c7c8f]
154
+ - @forge/manifest@2.6.0-next.13
155
+ - @forge/cli-shared@2.1.6-next.14
156
+
157
+ ## 2.0.0-next.15
158
+
159
+ ### Patch Changes
160
+
161
+ - Updated dependencies [62089be]
162
+ - @forge/manifest@2.6.0-next.12
163
+ - @forge/cli-shared@2.1.6-next.13
164
+
165
+ ## 2.0.0-next.14
166
+
167
+ ### Patch Changes
168
+
169
+ - c156c18: Reverting ui-hooks changes for Granular scopes since the release date is delayed by 2 weeks
170
+ - Updated dependencies [dfe9dd8]
171
+ - Updated dependencies [d3c8c8d]
172
+ - Updated dependencies [0a7725f]
173
+ - Updated dependencies [2bb89c5]
174
+ - @forge/manifest@2.6.0-next.11
175
+ - @forge/cli-shared@2.1.6-next.12
176
+
177
+ ## 2.0.0-next.13
178
+
179
+ ### Patch Changes
180
+
181
+ - Updated dependencies [bd6e025]
182
+ - Updated dependencies [d2f6992]
183
+ - @forge/manifest@2.6.0-next.10
184
+ - @forge/cli-shared@2.1.6-next.11
185
+
186
+ ## 2.0.0-next.12
187
+
188
+ ### Patch Changes
189
+
190
+ - Updated dependencies [22a488ec]
191
+ - @forge/manifest@2.6.0-next.9
192
+ - @forge/cli-shared@2.1.6-next.10
193
+
194
+ ## 2.0.0-next.11
195
+
196
+ ### Patch Changes
197
+
198
+ - Updated dependencies [c0e5696]
199
+ - Updated dependencies [7c0d2ee]
200
+ - @forge/manifest@2.6.0-next.8
201
+ - @forge/cli-shared@2.1.6-next.9
202
+
203
+ ## 2.0.0-next.10
204
+
205
+ ### Major Changes
206
+
207
+ - cdf001f: Update ui-hooks to use new granular scopes
208
+
209
+ ### Patch Changes
210
+
211
+ - Updated dependencies [d3afe01]
212
+ - @forge/manifest@2.6.0-next.7
213
+ - @forge/cli-shared@2.1.6-next.8
214
+
215
+ ## 1.6.1-next.9
216
+
217
+ ### Patch Changes
218
+
219
+ - Updated dependencies [cdd8645]
220
+ - Updated dependencies [b97660c]
221
+ - @forge/manifest@2.6.0-next.6
222
+ - @forge/cli-shared@2.1.6-next.7
223
+
224
+ ## 1.6.1-next.8
225
+
226
+ ### Patch Changes
227
+
228
+ - Updated dependencies [0a39c43]
229
+ - @forge/manifest@2.6.0-next.5
230
+ - @forge/cli-shared@2.1.6-next.6
231
+
232
+ ## 1.6.1-next.7
233
+
234
+ ### Patch Changes
235
+
236
+ - 69e25c2: Required permissions scope linter should read from the x-atlassian-oauth2-scopes. If it is not present then read from the security OAuth2 field. Combining Product DACIs https://hello.atlassian.net/wiki/spaces/redfox/pages/1046875420/RFC+OAuth+scopes+deprecation+in+Jira+-+DAC and https://hello.atlassian.net/wiki/spaces/redfox/pages/1304762888/OpenAPI+-+DAC+contract.
237
+
238
+ ## 1.6.1-next.6
239
+
240
+ ### Patch Changes
241
+
242
+ - Updated dependencies [91ea057]
243
+ - @forge/manifest@2.5.1-next.4
244
+ - @forge/cli-shared@2.1.6-next.5
245
+
246
+ ## 1.6.1-next.5
247
+
248
+ ### Patch Changes
249
+
250
+ - Updated dependencies [3010f0e]
251
+ - @forge/manifest@2.5.1-next.3
252
+ - @forge/cli-shared@2.1.6-next.4
253
+
254
+ ## 1.6.1-next.4
255
+
256
+ ### Patch Changes
257
+
258
+ - Updated dependencies [04e4152]
259
+ - @forge/csp@1.8.1-next.0
260
+
261
+ ## 1.6.1-next.3
262
+
263
+ ### Patch Changes
264
+
265
+ - Updated dependencies [a017696]
266
+ - @forge/manifest@2.5.1-next.2
267
+ - @forge/cli-shared@2.1.6-next.3
268
+
269
+ ## 1.6.1-next.2
270
+
271
+ ### Patch Changes
272
+
273
+ - Updated dependencies [af1473c]
274
+ - @forge/manifest@2.5.1-next.1
275
+ - @forge/cli-shared@2.1.6-next.2
276
+
277
+ ## 1.6.1-next.1
278
+
279
+ ### Patch Changes
280
+
281
+ - Updated dependencies [06209fc]
282
+ - @forge/manifest@2.5.1-next.0
283
+ - @forge/cli-shared@2.1.6-next.1
284
+
285
+ ## 1.6.1-next.0
286
+
287
+ ### Patch Changes
288
+
289
+ - Updated dependencies [2338be5]
290
+ - @forge/cli-shared@2.1.6-next.0
291
+
292
+ ## 1.6.0
293
+
294
+ ### Minor Changes
295
+
296
+ - 70e9c8c: Support linting external auth api calls.
297
+
298
+ ### Patch Changes
299
+
300
+ - fc38deb: Fix bug on the auto-fix permissions linter
301
+ - Updated dependencies [4de9850]
302
+ - Updated dependencies [70e9c8c]
303
+ - Updated dependencies [fde4ba7]
304
+ - Updated dependencies [601527b]
305
+ - Updated dependencies [755e35e]
306
+ - Updated dependencies [a5656f6]
307
+ - Updated dependencies [cc8799c]
308
+ - Updated dependencies [f5eb8e0]
309
+ - Updated dependencies [f013199]
310
+ - Updated dependencies [78d682f]
311
+ - Updated dependencies [70e9c8c]
312
+ - Updated dependencies [dec8066]
313
+ - Updated dependencies [0e82242]
314
+ - @forge/manifest@2.5.0
315
+ - @forge/cli-shared@2.1.5
316
+
317
+ ## 1.6.0-next.11
318
+
319
+ ### Patch Changes
320
+
321
+ - Updated dependencies [fde4ba7]
322
+ - @forge/manifest@2.5.0-next.10
323
+ - @forge/cli-shared@2.1.5-next.10
324
+
325
+ ## 1.6.0-next.10
326
+
327
+ ### Patch Changes
328
+
329
+ - Updated dependencies [601527b]
330
+ - @forge/manifest@2.5.0-next.9
331
+ - @forge/cli-shared@2.1.5-next.9
332
+
333
+ ## 1.6.0-next.9
334
+
335
+ ### Patch Changes
336
+
337
+ - Updated dependencies [a5656f6]
338
+ - Updated dependencies [78d682f]
339
+ - @forge/manifest@2.5.0-next.8
340
+ - @forge/cli-shared@2.1.5-next.8
341
+
342
+ ## 1.6.0-next.8
343
+
344
+ ### Patch Changes
345
+
346
+ - Updated dependencies [cc8799c]
347
+ - @forge/manifest@2.5.0-next.7
348
+ - @forge/cli-shared@2.1.5-next.7
349
+
350
+ ## 1.6.0-next.7
351
+
352
+ ### Patch Changes
353
+
354
+ - Updated dependencies [0e82242]
355
+ - @forge/manifest@2.5.0-next.6
356
+ - @forge/cli-shared@2.1.5-next.6
357
+
358
+ ## 1.6.0-next.6
359
+
360
+ ### Patch Changes
361
+
362
+ - fc38deb: Fix bug on the auto-fix permissions linter
363
+ - Updated dependencies [f5eb8e0]
364
+ - @forge/manifest@2.5.0-next.5
365
+ - @forge/cli-shared@2.1.5-next.5
366
+
367
+ ## 1.6.0-next.5
368
+
369
+ ### Patch Changes
370
+
371
+ - Updated dependencies [4de9850]
372
+ - @forge/manifest@2.5.0-next.4
373
+ - @forge/cli-shared@2.1.5-next.4
374
+
375
+ ## 1.6.0-next.4
376
+
377
+ ### Patch Changes
378
+
379
+ - Updated dependencies [dec8066]
380
+ - @forge/manifest@2.5.0-next.3
381
+ - @forge/cli-shared@2.1.5-next.3
382
+
383
+ ## 1.6.0-next.3
384
+
385
+ ### Patch Changes
386
+
387
+ - Updated dependencies [755e35e]
388
+ - Updated dependencies [f013199]
389
+ - @forge/manifest@2.5.0-next.2
390
+ - @forge/cli-shared@2.1.5-next.2
391
+
392
+ ## 1.6.0-next.2
393
+
394
+ ### Patch Changes
395
+
396
+ - Updated dependencies [66f60f9]
397
+ - @forge/manifest@2.5.0-next.1
398
+ - @forge/cli-shared@2.1.5-next.1
399
+
400
+ ## 1.6.0-next.1
401
+
402
+ ### Minor Changes
403
+
404
+ - b8aa35d: Support linting external auth api calls.
405
+
406
+ ## 1.5.1-next.0
407
+
408
+ ### Patch Changes
409
+
410
+ - Updated dependencies [bc0c83b]
411
+ - @forge/manifest@2.4.1-next.0
412
+ - @forge/cli-shared@2.1.5-next.0
413
+
414
+ ## 1.5.0
415
+
416
+ ### Minor Changes
417
+
418
+ - fbcb4a3: Add linter detection & auto-fix of deprecated CSP
419
+
420
+ ### Patch Changes
421
+
422
+ - Updated dependencies [fbcb4a3]
423
+ - Updated dependencies [0bc8683]
424
+ - Updated dependencies [f08a9cb]
425
+ - Updated dependencies [e28cc2c]
426
+ - Updated dependencies [b415d76]
427
+ - Updated dependencies [b91d511]
428
+ - Updated dependencies [daa138b]
429
+ - Updated dependencies [33cbdba]
430
+ - Updated dependencies [ee3919d]
431
+ - Updated dependencies [ba6d463]
432
+ - Updated dependencies [1d7f9f1]
433
+ - Updated dependencies [82167f3]
434
+ - Updated dependencies [873f913]
435
+ - Updated dependencies [a9bdd4f]
436
+ - Updated dependencies [2ea75dd]
437
+ - @forge/manifest@2.4.0
438
+ - @forge/cli-shared@2.1.4
439
+
440
+ ## 1.5.0-next.9
441
+
442
+ ### Patch Changes
443
+
444
+ - Updated dependencies [ba6d463]
445
+ - @forge/manifest@2.4.0-next.9
446
+ - @forge/cli-shared@2.1.4-next.9
447
+
448
+ ## 1.5.0-next.8
449
+
450
+ ### Patch Changes
451
+
452
+ - Updated dependencies [e28cc2c]
453
+ - Updated dependencies [ee3919d]
454
+ - @forge/manifest@2.4.0-next.8
455
+ - @forge/cli-shared@2.1.4-next.8
456
+
457
+ ## 1.5.0-next.7
458
+
459
+ ### Patch Changes
460
+
461
+ - Updated dependencies [daa138b]
462
+ - Updated dependencies [2ea75dd]
463
+ - @forge/manifest@2.4.0-next.7
464
+ - @forge/cli-shared@2.1.4-next.7
465
+
466
+ ## 1.5.0-next.6
467
+
468
+ ### Patch Changes
469
+
470
+ - Updated dependencies [f08a9cb]
471
+ - Updated dependencies [873f913]
472
+ - @forge/manifest@2.4.0-next.6
473
+ - @forge/cli-shared@2.1.4-next.6
474
+
475
+ ## 1.5.0-next.5
476
+
477
+ ### Minor Changes
478
+
479
+ - fbcb4a3: Add linter detection & auto-fix of deprecated CSP
480
+
481
+ ### Patch Changes
482
+
483
+ - Updated dependencies [fbcb4a3]
484
+ - Updated dependencies [a9bdd4f]
485
+ - @forge/manifest@2.4.0-next.5
486
+ - @forge/cli-shared@2.1.4-next.5
487
+
488
+ ## 1.4.7-next.4
489
+
490
+ ### Patch Changes
491
+
492
+ - Updated dependencies [0bc8683]
493
+ - @forge/manifest@2.3.1-next.4
494
+ - @forge/cli-shared@2.1.4-next.4
495
+
496
+ ## 1.4.7-next.3
497
+
498
+ ### Patch Changes
499
+
500
+ - Updated dependencies [1d7f9f1]
501
+ - @forge/manifest@2.3.1-next.3
502
+ - @forge/cli-shared@2.1.4-next.3
503
+
504
+ ## 1.4.7-next.2
505
+
506
+ ### Patch Changes
507
+
508
+ - Updated dependencies [b415d76]
509
+ - Updated dependencies [33cbdba]
510
+ - @forge/manifest@2.3.1-next.2
511
+ - @forge/cli-shared@2.1.4-next.2
512
+
513
+ ## 1.4.7-next.1
514
+
515
+ ### Patch Changes
516
+
517
+ - Updated dependencies [b91d511]
518
+ - @forge/manifest@2.3.1-next.1
519
+ - @forge/cli-shared@2.1.4-next.1
520
+
521
+ ## 1.4.7-next.0
522
+
523
+ ### Patch Changes
524
+
525
+ - Updated dependencies [82167f3]
526
+ - @forge/manifest@2.3.1-next.0
527
+ - @forge/cli-shared@2.1.4-next.0
528
+
529
+ ## 1.4.6
530
+
531
+ ### Patch Changes
532
+
533
+ - Updated dependencies [f3c0748]
534
+ - Updated dependencies [962582f]
535
+ - Updated dependencies [bd2be7f]
536
+ - Updated dependencies [46240f3]
537
+ - Updated dependencies [18c799a]
538
+ - Updated dependencies [5ed2e3a]
539
+ - Updated dependencies [7cfcd6c]
540
+ - Updated dependencies [f0d3871]
541
+ - Updated dependencies [9b09fef]
542
+ - @forge/manifest@2.3.0
543
+ - @forge/cli-shared@2.1.3
544
+
545
+ ## 1.4.6-next.4
546
+
547
+ ### Patch Changes
548
+
549
+ - Updated dependencies [46240f3]
550
+ - Updated dependencies [5ed2e3a]
551
+ - @forge/manifest@2.3.0-next.3
552
+ - @forge/cli-shared@2.1.3-next.4
553
+
554
+ ## 1.4.6-next.3
555
+
556
+ ### Patch Changes
557
+
558
+ - Updated dependencies [f3c0748]
559
+ - Updated dependencies [18c799a]
560
+ - Updated dependencies [7cfcd6c]
561
+ - Updated dependencies [9b09fef]
562
+ - @forge/manifest@2.3.0-next.2
563
+ - @forge/cli-shared@2.1.3-next.3
564
+
565
+ ## 1.4.6-next.2
566
+
567
+ ### Patch Changes
568
+
569
+ - Updated dependencies [f0d3871]
570
+ - @forge/manifest@2.2.2-next.1
571
+ - @forge/cli-shared@2.1.3-next.2
572
+
573
+ ## 1.4.6-next.1
574
+
575
+ ### Patch Changes
576
+
577
+ - Updated dependencies [bd2be7f]
578
+ - @forge/manifest@2.2.2-next.0
579
+ - @forge/cli-shared@2.1.3-next.1
580
+
581
+ ## 1.4.6-next.0
582
+
583
+ ### Patch Changes
584
+
585
+ - Updated dependencies [962582f]
586
+ - @forge/cli-shared@2.1.3-next.0
587
+
588
+ ## 1.4.5
589
+
590
+ ### Patch Changes
591
+
592
+ - Updated dependencies [d5f3fac]
593
+ - Updated dependencies [f002362]
594
+ - Updated dependencies [dcc7fc6]
7
595
  - Updated dependencies [371b667]
596
+ - Updated dependencies [b73cfdc]
8
597
  - Updated dependencies [8f2701f]
598
+ - Updated dependencies [a98d79c]
9
599
  - Updated dependencies [371335d]
600
+ - Updated dependencies [ea2dcfd]
601
+ - Updated dependencies [915bb3a]
602
+ - Updated dependencies [84e7667]
603
+ - Updated dependencies [6bd8af9]
604
+ - Updated dependencies [7117c4e]
605
+ - Updated dependencies [663b047]
606
+ - Updated dependencies [3a3a508]
607
+ - Updated dependencies [48762a0]
608
+ - Updated dependencies [4880e78]
609
+ - Updated dependencies [772eb08]
10
610
  - Updated dependencies [2809af6]
11
- - @forge/manifest@0.0.0-experimental-9fff5da
12
- - @forge/cli-shared@0.0.0-experimental-9fff5da
611
+ - Updated dependencies [b23fd66]
612
+ - @forge/csp@1.8.0
613
+ - @forge/cli-shared@2.1.2
614
+ - @forge/manifest@2.2.1
615
+
616
+ ## 1.4.5-next.8
617
+
618
+ ### Patch Changes
619
+
620
+ - Updated dependencies [f002362]
621
+ - @forge/csp@1.8.0-next.1
622
+
623
+ ## 1.4.5-next.7
624
+
625
+ ### Patch Changes
626
+
627
+ - Updated dependencies [b23fd66]
628
+ - @forge/manifest@2.2.1-next.7
629
+ - @forge/cli-shared@2.1.2-next.7
630
+
631
+ ## 1.4.5-next.6
632
+
633
+ ### Patch Changes
634
+
635
+ - Updated dependencies [dcc7fc6]
636
+ - Updated dependencies [48762a0]
637
+ - @forge/cli-shared@2.1.2-next.6
638
+ - @forge/manifest@2.2.1-next.6
639
+
640
+ ## 1.4.5-next.5
641
+
642
+ ### Patch Changes
643
+
644
+ - Updated dependencies [772eb08]
645
+ - @forge/manifest@2.2.1-next.5
646
+ - @forge/cli-shared@2.1.2-next.5
647
+
648
+ ## 1.4.5-next.4
649
+
650
+ ### Patch Changes
651
+
652
+ - Updated dependencies [a98d79c]
653
+ - Updated dependencies [ea2dcfd]
654
+ - Updated dependencies [915bb3a]
655
+ - Updated dependencies [3a3a508]
656
+ - @forge/manifest@2.2.1-next.4
657
+ - @forge/cli-shared@2.1.2-next.4
658
+
659
+ ## 1.4.5-next.3
660
+
661
+ ### Patch Changes
662
+
663
+ - Updated dependencies [84e7667]
664
+ - @forge/manifest@2.2.1-next.3
665
+ - @forge/cli-shared@2.1.2-next.3
666
+
667
+ ## 1.4.5-next.2
668
+
669
+ ### Patch Changes
670
+
671
+ - Updated dependencies [7117c4e]
672
+ - Updated dependencies [663b047]
673
+ - @forge/manifest@2.2.1-next.2
674
+ - @forge/cli-shared@2.1.2-next.2
675
+
676
+ ## 1.4.5-next.1
677
+
678
+ ### Patch Changes
679
+
680
+ - Updated dependencies [d5f3fac]
681
+ - Updated dependencies [371b667]
682
+ - Updated dependencies [b73cfdc]
683
+ - Updated dependencies [8f2701f]
684
+ - Updated dependencies [371335d]
685
+ - Updated dependencies [4880e78]
686
+ - @forge/csp@1.8.0-next.0
687
+ - @forge/manifest@2.2.1-next.1
688
+ - @forge/cli-shared@2.1.2-next.1
13
689
 
14
690
  ## 1.4.5-next.0
15
691
 
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAOxG,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,WAAY,UAAU,eAAe,UAAU,EAAE,4BAAuB,IA6CrG,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAiB,UAAU,EAAE,KAAG,YAQxD,CAAC;AAEF,eAAO,MAAM,eAAe,aAChB,MAAM,UACR,OAAO,QAAQ,oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,KAChD,OAAO,CAAC,SAAS,CAOnB,CAAC;AAEF,eAAO,MAAM,IAAI,gBACF,MAAM,EAAE,YACX,QAAQ,eACL,MAAM,UACX,UAAU,6BAhBR,MAAM,UACR,OAAO,QAAQ,oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,KAChD,OAAO,CAAC,SAAS,CAAC,YAeV,eAAe,EAAE,KAMzB,OAAO,CAAC,UAAU,EAAE,CAmCtB,CAAC;AAEF,eAAO,MAAM,QAAQ,WACX,UAAU,WACV,eAAe,KACtB,OAAO,CAAC,UAAU,EAAE,CAGtB,CAAC"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAQxG,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,WAAY,UAAU,eAAe,UAAU,EAAE,4BAAuB,IA6CrG,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAiB,UAAU,EAAE,KAAG,YAQxD,CAAC;AAEF,eAAO,MAAM,eAAe,aAChB,MAAM,UACR,OAAO,QAAQ,oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,KAChD,OAAO,CAAC,SAAS,CAOnB,CAAC;AAEF,eAAO,MAAM,IAAI,gBACF,MAAM,EAAE,YACX,QAAQ,eACL,MAAM,UACX,UAAU,6BAhBR,MAAM,UACR,OAAO,QAAQ,oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,KAChD,OAAO,CAAC,SAAS,CAAC,YAeV,eAAe,EAAE,KAOzB,OAAO,CAAC,UAAU,EAAE,CAmCtB,CAAC;AAEF,eAAO,MAAM,QAAQ,WACX,UAAU,WACV,eAAe,KACtB,OAAO,CAAC,UAAU,EAAE,CAGtB,CAAC"}
package/out/lint/lint.js CHANGED
@@ -12,6 +12,7 @@ const handler_linter_1 = require("./linters/handler-linter/handler-linter");
12
12
  const full_manifest_linter_1 = require("./linters/manifest-linter/full-manifest-linter");
13
13
  const permissions_manifest_linter_1 = require("./linters/manifest-linter/permissions-manifest-linter");
14
14
  const permission_linter_1 = require("./linters/permission-linter/permission-linter");
15
+ const deprecated_csp_permissions_manifest_linter_1 = require("./linters/manifest-linter/deprecated-csp-permissions-manifest-linter");
15
16
  class FailedLinterError extends Error {
16
17
  }
17
18
  exports.FailedLinterError = FailedLinterError;
@@ -74,6 +75,7 @@ exports.parseSourceFile = async (filepath, parser, readFilePromise = util_1.prom
74
75
  exports.lint = async (filesToLint, manifest, environment, logger, parseFunction = exports.parseSourceFile, linters = [
75
76
  new permission_linter_1.PermissionLinter(environment, manifest, logger),
76
77
  new permissions_manifest_linter_1.PermissionsManifestLinter(logger),
78
+ new deprecated_csp_permissions_manifest_linter_1.DeprecatedCspPermissionsManifestLinter(logger),
77
79
  new full_manifest_linter_1.FullManifestLinter(logger),
78
80
  new handler_linter_1.HandlerLinter(environment, manifest, logger)
79
81
  ]) => {
@@ -0,0 +1,9 @@
1
+ import { ManifestValidationResult, SchemaValidationError } from '@forge/manifest';
2
+ import { AbstractManifestLinter } from './abstract-manifest-linter';
3
+ import { LintResultRule, LintFixState, LintLogger } from '../../linter-interface';
4
+ export declare class DeprecatedCspPermissionsManifestLinter extends AbstractManifestLinter {
5
+ constructor(logger: LintLogger);
6
+ getFixer(): ((errors: LintResultRule[], warnings: LintResultRule[], state: LintFixState) => Promise<LintFixState>) | undefined;
7
+ getResultsForFixer(results: ManifestValidationResult<any>): SchemaValidationError[];
8
+ }
9
+ //# sourceMappingURL=deprecated-csp-permissions-manifest-linter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-csp-permissions-manifest-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/manifest-linter/deprecated-csp-permissions-manifest-linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGlF,qBAAa,sCAAuC,SAAQ,sBAAsB;gBACpE,MAAM,EAAE,UAAU;IAI9B,QAAQ,IACJ,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,qBAAqB,EAAE;CAGpF"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeprecatedCspPermissionsManifestLinter = void 0;
4
+ const manifest_1 = require("@forge/manifest");
5
+ const abstract_manifest_linter_1 = require("./abstract-manifest-linter");
6
+ const permission_linter_1 = require("../permission-linter/permission-linter");
7
+ class DeprecatedCspPermissionsManifestLinter extends abstract_manifest_linter_1.AbstractManifestLinter {
8
+ constructor(logger) {
9
+ super(manifest_1.ValidationTypes.DEPRECATED_CSP_METHOD, logger);
10
+ }
11
+ getFixer() {
12
+ return permission_linter_1.fixMissingPermissions;
13
+ }
14
+ getResultsForFixer(results) {
15
+ var _a;
16
+ return ((_a = results.errors) === null || _a === void 0 ? void 0 : _a.filter((error) => { var _a; return (_a = error.metadata) === null || _a === void 0 ? void 0 : _a.missingContentStylePermission; })) || [];
17
+ }
18
+ }
19
+ exports.DeprecatedCspPermissionsManifestLinter = DeprecatedCspPermissionsManifestLinter;
@@ -9,7 +9,7 @@ interface SwaggerFormat {
9
9
  };
10
10
  }
11
11
  export declare const NON_FWD_SLASH_REGEX = "[^\\/\\s]*";
12
- export declare const findMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], permissionsType: 'missingPermission' | 'missingExternalFetchPermission', state?: LintFixState | undefined) => Set<string>;
12
+ export declare const findMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], permissionsType: 'missingPermission' | 'missingExternalFetchPermission' | 'missingContentStylePermission', state?: LintFixState | undefined) => Set<string>;
13
13
  export declare const fixMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], state: LintFixState) => Promise<LintFixState>;
14
14
  interface PermissionLintCriteriaMatches {
15
15
  [key: string]: ApiCall[];
@@ -1 +1 @@
1
- {"version":3,"file":"permission-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/permission-linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAE/E,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,OAAO,EAEP,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAML,WAAW,EAGZ,MAAM,aAAa,CAAC;AASrB,UAAU,aAAa;IACrB,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;KAC7B,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAKhD,eAAO,MAAM,sBAAsB,WACzB,cAAc,EAAE,YACd,cAAc,EAAE,mBACT,mBAAmB,GAAG,gCAAgC,uCAEtE,GAAG,CAAC,MAAM,CAkBZ,CAAC;AAEF,eAAO,MAAM,qBAAqB,WACxB,cAAc,EAAE,YACd,cAAc,EAAE,SACnB,YAAY,KAClB,OAAO,CAAC,YAAY,CAqDtB,CAAC;AAEF,UAAU,6BAA6B;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,CAAC;IAQhE,OAAO,CAAC,QAAQ;IAPjD,MAAM,CAAC,cAAc,SAAgC;IACrD,MAAM,CAAC,oBAAoB,SAAsC;IAEjE,OAAO,CAAC,IAAI,CAAC,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,KAAK,CAAC,CAAa;gBAEf,WAAW,EAAE,MAAM,EAAU,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAIlE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAajD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsB3D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWnF,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"permission-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/permission-linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAE/E,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,OAAO,EAEP,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAML,WAAW,EAGZ,MAAM,aAAa,CAAC;AASrB,UAAU,aAAa;IACrB,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;KAC7B,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAKhD,eAAO,MAAM,sBAAsB,WACzB,cAAc,EAAE,YACd,cAAc,EAAE,mBACT,mBAAmB,GAAG,gCAAgC,GAAG,+BAA+B,uCAExG,GAAG,CAAC,MAAM,CAkBZ,CAAC;AAEF,eAAO,MAAM,qBAAqB,WACxB,cAAc,EAAE,YACd,cAAc,EAAE,SACnB,YAAY,KAClB,OAAO,CAAC,YAAY,CAsEtB,CAAC;AAEF,UAAU,6BAA6B;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,CAAC;IAQhE,OAAO,CAAC,QAAQ;IAPjD,MAAM,CAAC,cAAc,SAAgC;IACrD,MAAM,CAAC,oBAAoB,SAAsC;IAEjE,OAAO,CAAC,IAAI,CAAC,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,KAAK,CAAC,CAAa;gBAEf,WAAW,EAAE,MAAM,EAAU,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAIlE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAajD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsB3D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWnF,OAAO,CAAC,YAAY;CAarB"}
@@ -30,13 +30,14 @@ exports.findMissingPermissions = (errors, warnings, permissionsType, state) => {
30
30
  return missingPermissions;
31
31
  };
32
32
  exports.fixMissingPermissions = async (errors, warnings, state) => {
33
- var _a, _b, _c, _d, _e, _f, _g, _h;
33
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
34
34
  const missingScopes = exports.findMissingPermissions(errors, warnings, 'missingPermission', state);
35
35
  const missingExternalFetchBackend = exports.findMissingPermissions(errors, warnings, 'missingExternalFetchPermission', state);
36
+ const missingContentStyle = exports.findMissingPermissions(errors, warnings, 'missingContentStylePermission', state);
36
37
  const currentPermissions = (_b = (_a = (await state.configFile.readConfig())) === null || _a === void 0 ? void 0 : _a.permissions) !== null && _b !== void 0 ? _b : {};
37
38
  const currentRemotes = (_d = (_c = (await state.configFile.readConfig())) === null || _c === void 0 ? void 0 : _c.remotes) !== null && _d !== void 0 ? _d : [];
38
39
  const currentScopes = (_e = currentPermissions === null || currentPermissions === void 0 ? void 0 : currentPermissions.scopes) !== null && _e !== void 0 ? _e : [];
39
- currentScopes.forEach(missingScopes.add, missingScopes);
40
+ currentScopes.forEach((e) => missingScopes.add(e));
40
41
  const currentExternalFetchBackend = (_h = (_g = (_f = currentPermissions === null || currentPermissions === void 0 ? void 0 : currentPermissions.external) === null || _f === void 0 ? void 0 : _f.fetch) === null || _g === void 0 ? void 0 : _g.backend) !== null && _h !== void 0 ? _h : [];
41
42
  currentExternalFetchBackend
42
43
  .map((item) => {
@@ -46,9 +47,12 @@ exports.fixMissingPermissions = async (errors, warnings, state) => {
46
47
  return (_a = currentRemotes.find((remote) => remote.key == item.remote)) === null || _a === void 0 ? void 0 : _a.baseUrl;
47
48
  })
48
49
  .filter((item) => typeof item === 'string')
49
- .forEach(missingExternalFetchBackend.add, missingExternalFetchBackend);
50
+ .forEach((e) => missingExternalFetchBackend.add(e));
50
51
  const arrayMissingExternalFetchBackend = [...missingExternalFetchBackend];
51
- await state.configFile.writeToConfigFile('permissions', Object.assign(Object.assign(Object.assign({}, currentPermissions), { scopes: [...missingScopes] }), (arrayMissingExternalFetchBackend.length > 0
52
+ const currentContentStyles = (_k = (_j = currentPermissions === null || currentPermissions === void 0 ? void 0 : currentPermissions.content) === null || _j === void 0 ? void 0 : _j.styles) !== null && _k !== void 0 ? _k : [];
53
+ currentContentStyles.forEach((e) => missingContentStyle.add(e));
54
+ const arrayMissingContentStyles = [...missingContentStyle];
55
+ await state.configFile.writeToConfigFile('permissions', Object.assign(Object.assign(Object.assign(Object.assign({}, currentPermissions), { scopes: [...missingScopes] }), (arrayMissingExternalFetchBackend.length > 0
52
56
  ? {
53
57
  external: currentPermissions.external
54
58
  ? Object.assign(Object.assign({}, currentPermissions.external), { fetch: currentPermissions.external.fetch
@@ -60,6 +64,13 @@ exports.fixMissingPermissions = async (errors, warnings, state) => {
60
64
  }
61
65
  }
62
66
  }
67
+ : {})), (arrayMissingContentStyles.length > 0
68
+ ? {
69
+ content: currentPermissions.content
70
+ ? Object.assign(Object.assign({}, currentPermissions.content), { styles: arrayMissingContentStyles }) : {
71
+ styles: arrayMissingContentStyles
72
+ }
73
+ }
63
74
  : {})));
64
75
  return state;
65
76
  };
@@ -2,6 +2,8 @@ import { LintResultRule, LintClass } from '../../../linter-interface';
2
2
  import { ApiCall, ProductApiCall } from '../api-call-interface';
3
3
  import { LintIssueVerifier, BaseLintIssueVerifier } from '../../verifier-interface';
4
4
  import { ManifestSchema as Manifest } from '@forge/manifest';
5
+ import { Swagger } from 'atlassian-openapi';
6
+ import OAuth2ScopesWithState = Swagger.OAuth2ScopesWithState;
5
7
  export interface ProductMethod {
6
8
  originalPath: string;
7
9
  methods: PathMethods;
@@ -9,6 +11,7 @@ export interface ProductMethod {
9
11
  export interface PathMethods {
10
12
  [method: string]: {
11
13
  security: SecurityEntry[];
14
+ 'x-atlassian-oauth2-scopes'?: OAuth2ScopesWithState[];
12
15
  };
13
16
  }
14
17
  interface SecurityEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"product-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/product-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;KAC3B,CAAC;CACH;AAED,UAAU,aAAa;IACrB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,oBAAY,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAI9F,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EACD,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM;IAKlC,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,iBAAiB;CAY1B"}
1
+ {"version":3,"file":"product-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/product-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,2BAA2B,CAAC,EAAE,qBAAqB,EAAE,CAAC;KACvD,CAAC;CACH;AAED,UAAU,aAAa;IACrB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,oBAAY,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAI9F,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EACD,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM;IAKlC,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,iBAAiB;CAoB1B"}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProductVerifier = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const linter_interface_1 = require("../../../linter-interface");
5
6
  const verifier_interface_1 = require("../../verifier-interface");
6
7
  const cli_shared_1 = require("@forge/cli-shared");
7
8
  const text_1 = require("../../../text");
9
+ const array_prototype_flatmap_1 = tslib_1.__importDefault(require("array.prototype.flatmap"));
8
10
  class ProductVerifier extends verifier_interface_1.BaseLintIssueVerifier {
9
11
  constructor(environment, manifest, pathMap, product) {
10
12
  super(environment, manifest);
@@ -58,10 +60,14 @@ class ProductVerifier extends verifier_interface_1.BaseLintIssueVerifier {
58
60
  return requiredScopes.filter((scope) => { var _a, _b; return !((_b = (_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes) === null || _b === void 0 ? void 0 : _b.includes(scope)); });
59
61
  }
60
62
  getRequiredScopes({ regex, method }) {
61
- var _a, _b;
63
+ var _a, _b, _c;
62
64
  if (!regex)
63
65
  return [];
64
- const swaggerEntries = (_b = (_a = this.pathMap.get(regex)) === null || _a === void 0 ? void 0 : _a.methods[method]) === null || _b === void 0 ? void 0 : _b.security;
66
+ const oAuth2Scopes = (_a = this.pathMap.get(regex)) === null || _a === void 0 ? void 0 : _a.methods[method]['x-atlassian-oauth2-scopes'];
67
+ if (oAuth2Scopes) {
68
+ return array_prototype_flatmap_1.default(oAuth2Scopes.filter((scope) => scope.state === 'Current').map((scope) => scope.scopes), (x) => x);
69
+ }
70
+ const swaggerEntries = (_c = (_b = this.pathMap.get(regex)) === null || _b === void 0 ? void 0 : _b.methods[method]) === null || _c === void 0 ? void 0 : _c.security;
65
71
  if (!swaggerEntries)
66
72
  return [];
67
73
  return swaggerEntries === null || swaggerEntries === void 0 ? void 0 : swaggerEntries.reduce((prev, curr) => [...prev, ...(curr['OAuth2'] || []), ...(curr['oAuthDefinitions'] || [])], []);
@@ -1 +1 @@
1
- {"version":3,"file":"ui-hook-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/ui-hook-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AASpF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC/F,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB1E,OAAO,CAAC,WAAW;CAepB"}
1
+ {"version":3,"file":"ui-hook-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/ui-hook-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAiBpF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC/F,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB1E,OAAO,CAAC,WAAW;CAepB"}
@@ -5,9 +5,17 @@ const linter_interface_1 = require("../../../linter-interface");
5
5
  const verifier_interface_1 = require("../../verifier-interface");
6
6
  const text_1 = require("../../../text");
7
7
  const FORGE_UI_HOOK_PERMISSIONS = {
8
- useContentProperty: ['read:confluence-props', 'write:confluence-props'],
9
- useSpaceProperty: ['read:confluence-props', 'write:confluence-props'],
10
- useIssueProperty: ['read:jira-work', 'write:jira-work']
8
+ useContentProperty: [
9
+ 'read:content-details:confluence',
10
+ 'read:content.property:confluence',
11
+ 'write:content.property:confluence'
12
+ ],
13
+ useSpaceProperty: [
14
+ 'read:content-details:confluence',
15
+ 'read:space.property:confluence',
16
+ 'write:space.property:confluence'
17
+ ],
18
+ useIssueProperty: ['read:issue.property:jira']
11
19
  };
12
20
  class UIHookVerifier extends verifier_interface_1.BaseLintIssueVerifier {
13
21
  getLintClass() {
@@ -3,6 +3,7 @@ import { NodeVisitor } from '../../node-visitor-interface';
3
3
  import { ApiCall } from '../api-call-interface';
4
4
  export declare class ExternalApiCallVisitor implements NodeVisitor<ApiCall> {
5
5
  visit(node: TSESTree.Node, parent: TSESTree.Node | undefined, callback: (fetchCall: ApiCall) => void): void;
6
+ private endpointCanBeChecked;
6
7
  private transformArgsToFetchCall;
7
8
  }
8
9
  //# sourceMappingURL=external-fetch-call-visitor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-fetch-call-visitor.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/visitors/external-fetch-call-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAgB,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,sBAAuB,YAAW,WAAW,CAAC,OAAO,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IA+ClH,OAAO,CAAC,wBAAwB,CAK7B;CACJ"}
1
+ {"version":3,"file":"external-fetch-call-visitor.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/visitors/external-fetch-call-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAgB,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,sBAAuB,YAAW,WAAW,CAAC,OAAO,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IA+ClH,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,wBAAwB,CAK7B;CACJ"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExternalApiCallVisitor = void 0;
4
4
  const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
5
+ const url_1 = require("url");
5
6
  const api_call_interface_1 = require("../api-call-interface");
6
7
  class ExternalApiCallVisitor {
7
8
  constructor() {
@@ -30,15 +31,29 @@ class ExternalApiCallVisitor {
30
31
  node.property.name === 'fetch' &&
31
32
  (parent === null || parent === void 0 ? void 0 : parent.type) === typescript_estree_1.AST_NODE_TYPES.CallExpression) {
32
33
  const [endpointNode] = parent.arguments;
33
- if ((endpointNode === null || endpointNode === void 0 ? void 0 : endpointNode.type) === typescript_estree_1.AST_NODE_TYPES.Literal && typeof (endpointNode === null || endpointNode === void 0 ? void 0 : endpointNode.value) === 'string') {
34
- if (endpointNode.value.trim() !== '') {
35
- const fetchCall = this.transformArgsToFetchCall(endpointNode);
36
- callback(fetchCall);
37
- }
34
+ if (this.endpointCanBeChecked(endpointNode)) {
35
+ const fetchCall = this.transformArgsToFetchCall(endpointNode);
36
+ callback(fetchCall);
38
37
  }
39
38
  }
40
39
  break;
41
40
  }
42
41
  }
42
+ endpointCanBeChecked(endpointNode) {
43
+ const throws = (thunk) => {
44
+ try {
45
+ thunk();
46
+ return false;
47
+ }
48
+ catch (_a) {
49
+ return true;
50
+ }
51
+ };
52
+ const isPathOnlyUrl = (s) => throws(() => new url_1.URL(s)) && !throws(() => new url_1.URL(s, 'http://example'));
53
+ return ((endpointNode === null || endpointNode === void 0 ? void 0 : endpointNode.type) === typescript_estree_1.AST_NODE_TYPES.Literal &&
54
+ typeof (endpointNode === null || endpointNode === void 0 ? void 0 : endpointNode.value) === 'string' &&
55
+ endpointNode.value.trim() !== '' &&
56
+ !isPathOnlyUrl(endpointNode.value));
57
+ }
43
58
  }
44
59
  exports.ExternalApiCallVisitor = ExternalApiCallVisitor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/lint",
3
- "version": "0.0.0-experimental-9fff5da",
3
+ "version": "0.0.0-experimental-7c72fec",
4
4
  "description": "Linting for forge apps",
5
5
  "main": "out/index.js",
6
6
  "license": "UNLICENSED",
@@ -15,11 +15,12 @@
15
15
  "@types/node-fetch": "^2.5.7"
16
16
  },
17
17
  "dependencies": {
18
- "@forge/cli-shared": "0.0.0-experimental-9fff5da",
19
- "@forge/csp": "1.7.1",
20
- "@forge/manifest": "0.0.0-experimental-9fff5da",
18
+ "@forge/cli-shared": "0.0.0-experimental-7c72fec",
19
+ "@forge/csp": "0.0.0-experimental-7c72fec",
20
+ "@forge/manifest": "0.0.0-experimental-7c72fec",
21
21
  "@typescript-eslint/typescript-estree": "^3.5.0",
22
22
  "cross-spawn": "^7.0.1",
23
- "node-fetch": "^2.6.1"
23
+ "node-fetch": "^2.6.1",
24
+ "atlassian-openapi": "^1.0.13"
24
25
  }
25
26
  }