@forge/sql 4.0.5-next.0 → 4.0.5-next.1-experimental-e9e08bb

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 ADDED
@@ -0,0 +1,912 @@
1
+ # @forge/sql
2
+
3
+ ## 4.0.5-next.1-experimental-e9e08bb
4
+
5
+ ### Patch Changes
6
+
7
+ - 067c20a: Add manifest-driven Docker local storage, seeding, reset, status, persistent lifecycle, and local
8
+ SDK routing for Forge tunnels. Simplify `forge storage entities indexes list` to
9
+ `forge storage indexes list`.
10
+ - 01e9f12: Include package changelogs in published artifacts.
11
+ - @forge/api@8.0.5-next.1-experimental-e9e08bb
12
+
13
+ ## 4.0.5-next.1
14
+
15
+ ### Patch Changes
16
+
17
+ - 01e9f12: Include package changelogs in published artifacts.
18
+
19
+ ## 4.0.5-next.0
20
+
21
+ ### Patch Changes
22
+
23
+ - @forge/api@8.0.5-next.0
24
+
25
+ ## 4.0.4
26
+
27
+ ### Patch Changes
28
+
29
+ - @forge/api@8.0.4
30
+
31
+ ## 4.0.4-next.0
32
+
33
+ ### Patch Changes
34
+
35
+ - @forge/api@8.0.4-next.0
36
+
37
+ ## 4.0.3
38
+
39
+ ### Patch Changes
40
+
41
+ - @forge/api@8.0.3
42
+
43
+ ## 4.0.3-next.0
44
+
45
+ ### Patch Changes
46
+
47
+ - @forge/api@8.0.3-next.0
48
+
49
+ ## 4.0.2
50
+
51
+ ### Patch Changes
52
+
53
+ - @forge/api@8.0.2
54
+
55
+ ## 4.0.2-next.0
56
+
57
+ ### Patch Changes
58
+
59
+ - @forge/api@8.0.2-next.0
60
+
61
+ ## 4.0.1
62
+
63
+ ### Patch Changes
64
+
65
+ - @forge/api@8.0.1
66
+
67
+ ## 4.0.1-next.0
68
+
69
+ ### Patch Changes
70
+
71
+ - @forge/api@8.0.1-next.0
72
+
73
+ ## 4.0.0
74
+
75
+ ### Major Changes
76
+
77
+ - 78fcb7f: Adds support for TypeScript 5
78
+
79
+ ### Patch Changes
80
+
81
+ - Updated dependencies [561f8f4]
82
+ - Updated dependencies [78fcb7f]
83
+ - @forge/api@8.0.0
84
+
85
+ ## 4.0.0-next.1
86
+
87
+ ### Major Changes
88
+
89
+ - 78fcb7f: Adds support for TypeScript 5
90
+
91
+ ### Patch Changes
92
+
93
+ - Updated dependencies [78fcb7f]
94
+ - @forge/api@8.0.0-next.2
95
+
96
+ ## 3.0.27-next.0
97
+
98
+ ### Patch Changes
99
+
100
+ - Updated dependencies [561f8f4]
101
+ - @forge/api@8.0.0-next.0
102
+
103
+ ## 3.0.26
104
+
105
+ ### Patch Changes
106
+
107
+ - @forge/api@7.2.2
108
+
109
+ ## 3.0.26-next.0
110
+
111
+ ### Patch Changes
112
+
113
+ - @forge/api@7.2.2-next.0
114
+
115
+ ## 3.0.25
116
+
117
+ ### Patch Changes
118
+
119
+ - @forge/api@7.2.1
120
+
121
+ ## 3.0.25-next.0
122
+
123
+ ### Patch Changes
124
+
125
+ - @forge/api@7.2.1-next.0
126
+
127
+ ## 3.0.24
128
+
129
+ ### Patch Changes
130
+
131
+ - Updated dependencies [7d660c1]
132
+ - Updated dependencies [56e38e9]
133
+ - @forge/api@7.2.0
134
+
135
+ ## 3.0.24-next.0
136
+
137
+ ### Patch Changes
138
+
139
+ - Updated dependencies [56e38e9]
140
+ - @forge/api@7.2.0-next.0
141
+
142
+ ## 3.0.23
143
+
144
+ ### Patch Changes
145
+
146
+ - @forge/api@7.1.4
147
+
148
+ ## 3.0.23-next.0
149
+
150
+ ### Patch Changes
151
+
152
+ - @forge/api@7.1.4-next.0
153
+
154
+ ## 3.0.22
155
+
156
+ ### Patch Changes
157
+
158
+ - @forge/api@7.1.3
159
+
160
+ ## 3.0.22-next.0
161
+
162
+ ### Patch Changes
163
+
164
+ - @forge/api@7.1.3-next.0
165
+
166
+ ## 3.0.21
167
+
168
+ ### Patch Changes
169
+
170
+ - @forge/api@7.1.2
171
+
172
+ ## 3.0.21-next.0
173
+
174
+ ### Patch Changes
175
+
176
+ - @forge/api@7.1.2-next.0
177
+
178
+ ## 3.0.20
179
+
180
+ ### Patch Changes
181
+
182
+ - @forge/api@7.1.1
183
+
184
+ ## 3.0.20-next.0
185
+
186
+ ### Patch Changes
187
+
188
+ - @forge/api@7.1.1-next.0
189
+
190
+ ## 3.0.19
191
+
192
+ ### Patch Changes
193
+
194
+ - Updated dependencies [16a4b01]
195
+ - Updated dependencies [6f9a570]
196
+ - @forge/api@7.1.0
197
+
198
+ ## 3.0.19-next.1
199
+
200
+ ### Patch Changes
201
+
202
+ - Updated dependencies [16a4b01]
203
+ - @forge/api@7.1.0-next.2
204
+
205
+ ## 3.0.19-next.0
206
+
207
+ ### Patch Changes
208
+
209
+ - @forge/api@7.0.3-next.0
210
+
211
+ ## 3.0.18
212
+
213
+ ### Patch Changes
214
+
215
+ - @forge/api@7.0.2
216
+
217
+ ## 3.0.18-next.0
218
+
219
+ ### Patch Changes
220
+
221
+ - @forge/api@7.0.2-next.0
222
+
223
+ ## 3.0.17
224
+
225
+ ### Patch Changes
226
+
227
+ - Updated dependencies [63d29ca]
228
+ - @forge/api@7.0.1
229
+
230
+ ## 3.0.17-next.0
231
+
232
+ ### Patch Changes
233
+
234
+ - @forge/api@7.0.1-next.0
235
+
236
+ ## 3.0.16
237
+
238
+ ### Patch Changes
239
+
240
+ - Updated dependencies [69e97f1]
241
+ - Updated dependencies [8f24ce1]
242
+ - @forge/api@7.0.0
243
+
244
+ ## 3.0.16-next.1
245
+
246
+ ### Patch Changes
247
+
248
+ - Updated dependencies [8f24ce1]
249
+ - @forge/api@7.0.0-next.3
250
+
251
+ ## 3.0.16-next.0
252
+
253
+ ### Patch Changes
254
+
255
+ - @forge/api@6.4.4-next.0
256
+
257
+ ## 3.0.15
258
+
259
+ ### Patch Changes
260
+
261
+ - @forge/api@6.4.3
262
+
263
+ ## 3.0.15-next.0
264
+
265
+ ### Patch Changes
266
+
267
+ - @forge/api@6.4.3-next.0
268
+
269
+ ## 3.0.14
270
+
271
+ ### Patch Changes
272
+
273
+ - Updated dependencies [16e7d61]
274
+ - @forge/api@6.4.2
275
+
276
+ ## 3.0.14-next.0
277
+
278
+ ### Patch Changes
279
+
280
+ - @forge/api@6.4.2-next.0
281
+
282
+ ## 3.0.13
283
+
284
+ ### Patch Changes
285
+
286
+ - Updated dependencies [6f348d9]
287
+ - @forge/api@6.4.1
288
+
289
+ ## 3.0.13-next.0
290
+
291
+ ### Patch Changes
292
+
293
+ - @forge/api@6.4.1-next.0
294
+
295
+ ## 3.0.12
296
+
297
+ ### Patch Changes
298
+
299
+ - Updated dependencies [5e160b1]
300
+ - Updated dependencies [9989c3d]
301
+ - @forge/api@6.4.0
302
+
303
+ ## 3.0.12-next.0
304
+
305
+ ### Patch Changes
306
+
307
+ - Updated dependencies [5e160b1]
308
+ - @forge/api@6.4.0-next.0
309
+
310
+ ## 3.0.11
311
+
312
+ ### Patch Changes
313
+
314
+ - Updated dependencies [def4ec3]
315
+ - @forge/api@6.3.0
316
+
317
+ ## 3.0.11-next.1
318
+
319
+ ### Patch Changes
320
+
321
+ - Updated dependencies [def4ec3]
322
+ - @forge/api@6.3.0-next.2
323
+
324
+ ## 3.0.11-next.0
325
+
326
+ ### Patch Changes
327
+
328
+ - @forge/api@6.2.1-next.0
329
+
330
+ ## 3.0.10
331
+
332
+ ### Patch Changes
333
+
334
+ - Updated dependencies [0af355f]
335
+ - @forge/api@6.2.0
336
+
337
+ ## 3.0.10-next.1
338
+
339
+ ### Patch Changes
340
+
341
+ - Updated dependencies [0af355f]
342
+ - @forge/api@6.2.0-next.1
343
+
344
+ ## 3.0.10-next.0
345
+
346
+ ### Patch Changes
347
+
348
+ - @forge/api@6.1.6-next.0
349
+
350
+ ## 3.0.9
351
+
352
+ ### Patch Changes
353
+
354
+ - Updated dependencies [94243f1]
355
+ - @forge/api@6.1.5
356
+
357
+ ## 3.0.9-next.0
358
+
359
+ ### Patch Changes
360
+
361
+ - Updated dependencies [94243f1]
362
+ - @forge/api@6.1.5-next.0
363
+
364
+ ## 3.0.8
365
+
366
+ ### Patch Changes
367
+
368
+ - @forge/api@6.1.4
369
+
370
+ ## 3.0.8-next.0
371
+
372
+ ### Patch Changes
373
+
374
+ - @forge/api@6.1.4-next.0
375
+
376
+ ## 3.0.7
377
+
378
+ ### Patch Changes
379
+
380
+ - @forge/api@6.1.3
381
+
382
+ ## 3.0.7-next.0
383
+
384
+ ### Patch Changes
385
+
386
+ - @forge/api@6.1.3-next.0
387
+
388
+ ## 3.0.6
389
+
390
+ ### Patch Changes
391
+
392
+ - Updated dependencies [504cd62]
393
+ - @forge/api@6.1.2
394
+
395
+ ## 3.0.6-next.0
396
+
397
+ ### Patch Changes
398
+
399
+ - Updated dependencies [504cd62]
400
+ - @forge/api@6.1.2-next.0
401
+
402
+ ## 3.0.5
403
+
404
+ ### Patch Changes
405
+
406
+ - Updated dependencies [ad46892]
407
+ - @forge/api@6.1.1
408
+
409
+ ## 3.0.5-next.0
410
+
411
+ ### Patch Changes
412
+
413
+ - Updated dependencies [ad46892]
414
+ - @forge/api@6.1.1-next.0
415
+
416
+ ## 3.0.4
417
+
418
+ ### Patch Changes
419
+
420
+ - Updated dependencies [6392355]
421
+ - Updated dependencies [518c490]
422
+ - @forge/api@6.1.0
423
+
424
+ ## 3.0.4-next.0
425
+
426
+ ### Patch Changes
427
+
428
+ - Updated dependencies [518c490]
429
+ - @forge/api@6.1.0-next.0
430
+
431
+ ## 3.0.3
432
+
433
+ ### Patch Changes
434
+
435
+ - @forge/api@6.0.3
436
+
437
+ ## 3.0.3-next.0
438
+
439
+ ### Patch Changes
440
+
441
+ - @forge/api@6.0.3-next.0
442
+
443
+ ## 3.0.2
444
+
445
+ ### Patch Changes
446
+
447
+ - 7abca30: Remove SDK dependency on @atlassian/ari
448
+ - Updated dependencies [7abca30]
449
+ - Updated dependencies [8916328]
450
+ - Updated dependencies [e118b07]
451
+ - Updated dependencies [ebad936]
452
+ - @forge/api@6.0.2
453
+
454
+ ## 3.0.2-next.0
455
+
456
+ ### Patch Changes
457
+
458
+ - 7abca30: Remove SDK dependency on @atlassian/ari
459
+ - Updated dependencies [7abca30]
460
+ - @forge/api@6.0.2-next.0
461
+
462
+ ## 3.0.1
463
+
464
+ ### Patch Changes
465
+
466
+ - 195411c: patch dependencies
467
+ - Updated dependencies [195411c]
468
+ - @forge/api@6.0.1
469
+
470
+ ## 3.0.1-next.0
471
+
472
+ ### Patch Changes
473
+
474
+ - 195411c: patch dependencies
475
+ - Updated dependencies [195411c]
476
+ - @forge/api@6.0.1-next.0
477
+
478
+ ## 3.0.0
479
+
480
+ ### Major Changes
481
+
482
+ - 8f2a3c9: Update the package to build on Node 20
483
+
484
+ ### Patch Changes
485
+
486
+ - Updated dependencies [8f2a3c9]
487
+ - @forge/api@6.0.0
488
+
489
+ ## 3.0.0-next.0
490
+
491
+ ### Major Changes
492
+
493
+ - 8f2a3c9: Update the package to build on Node 20
494
+
495
+ ### Patch Changes
496
+
497
+ - Updated dependencies [8f2a3c9]
498
+ - @forge/api@6.0.0-next.0
499
+
500
+ ## 2.5.2
501
+
502
+ ### Patch Changes
503
+
504
+ - Updated dependencies [908388a]
505
+ - @forge/api@5.3.0
506
+
507
+ ## 2.5.2-next.0
508
+
509
+ ### Patch Changes
510
+
511
+ - Updated dependencies [908388a]
512
+ - @forge/api@5.3.0-next.0
513
+
514
+ ## 2.5.1
515
+
516
+ ### Patch Changes
517
+
518
+ - 984c454: Forcing patch bump to update internal registry
519
+ - Updated dependencies [984c454]
520
+ - @forge/api@5.2.1
521
+
522
+ ## 2.5.1-next.0
523
+
524
+ ### Patch Changes
525
+
526
+ - 984c454: Forcing patch bump to update internal registry
527
+ - Updated dependencies [984c454]
528
+ - @forge/api@5.2.1-next.0
529
+
530
+ ## 2.5.0
531
+
532
+ ### Minor Changes
533
+
534
+ - d2d1ee3: Deprecate `sql._provision()` helper
535
+
536
+ This was used during EAP, and no longer has any function. We are deprecating this helper and will remove it in next major version
537
+
538
+ ### Patch Changes
539
+
540
+ - Updated dependencies [04ab98e]
541
+ - @forge/api@5.2.0
542
+
543
+ ## 2.5.0-next.1
544
+
545
+ ### Minor Changes
546
+
547
+ - d2d1ee3: Deprecate `sql._provision()` helper
548
+
549
+ This was used during EAP, and no longer has any function. We are deprecating this helper and will remove it in next major version
550
+
551
+ ## 2.4.3-next.0
552
+
553
+ ### Patch Changes
554
+
555
+ - Updated dependencies [04ab98e]
556
+ - @forge/api@5.2.0-next.0
557
+
558
+ ## 2.4.2
559
+
560
+ ### Patch Changes
561
+
562
+ - Updated dependencies [576da26]
563
+ - @forge/api@5.1.1
564
+
565
+ ## 2.4.2-next.0
566
+
567
+ ### Patch Changes
568
+
569
+ - Updated dependencies [576da26]
570
+ - @forge/api@5.1.1-next.0
571
+
572
+ ## 2.4.1
573
+
574
+ ### Patch Changes
575
+
576
+ - fa77f8d: Revert the package registry change for the package
577
+ - 503e60e: Add publish config
578
+ - 2086b3d: Remove node-fetch as a dependency
579
+ - 1de89c1: Upgrade dependencies
580
+ - Updated dependencies [fa77f8d]
581
+ - Updated dependencies [fa82e2a]
582
+ - Updated dependencies [a72008e]
583
+ - Updated dependencies [503e60e]
584
+ - Updated dependencies [2086b3d]
585
+ - Updated dependencies [55d56f7]
586
+ - @forge/api@5.1.0
587
+
588
+ ## 2.4.1-next.5
589
+
590
+ ### Patch Changes
591
+
592
+ - fa77f8d: Revert the package registry change for the package
593
+ - Updated dependencies [fa77f8d]
594
+ - @forge/api@5.1.0-next.9
595
+
596
+ ## 2.4.1-next.4
597
+
598
+ ### Patch Changes
599
+
600
+ - 503e60e: Add publish config
601
+ - Updated dependencies [503e60e]
602
+ - @forge/api@5.1.0-next.8
603
+
604
+ ## 2.4.1-next.3
605
+
606
+ ### Patch Changes
607
+
608
+ - 2086b3d: Remove node-fetch as a dependency
609
+ - Updated dependencies [2086b3d]
610
+ - @forge/api@5.1.0-next.7
611
+
612
+ ## 2.4.1-next.2
613
+
614
+ ### Patch Changes
615
+
616
+ - Updated dependencies [a72008e]
617
+ - @forge/api@5.1.0-next.2
618
+
619
+ ## 2.4.1-next.1
620
+
621
+ ### Patch Changes
622
+
623
+ - 1de89c1: Upgrade dependencies
624
+
625
+ ## 2.4.1-next.0
626
+
627
+ ### Patch Changes
628
+
629
+ - Updated dependencies [55d56f7]
630
+ - @forge/api@5.0.2-next.0
631
+
632
+ ## 2.4.0
633
+
634
+ ### Minor Changes
635
+
636
+ - 5330def: Updating dependencies
637
+
638
+ ### Patch Changes
639
+
640
+ - a5e7647: Update license for Forge public packages
641
+ - Updated dependencies [a5e7647]
642
+ - @forge/api@5.0.1
643
+
644
+ ## 2.4.0-next.2
645
+
646
+ ### Minor Changes
647
+
648
+ - 5330def: Updating dependencies
649
+
650
+ ## 2.3.4-next.1
651
+
652
+ ### Patch Changes
653
+
654
+ - a5e7647: Update license for Forge public packages
655
+ - Updated dependencies [a5e7647]
656
+ - @forge/api@5.0.1-next.3
657
+
658
+ ## 2.3.4-next.0
659
+
660
+ ### Patch Changes
661
+
662
+ - @forge/api@5.0.1-next.0
663
+
664
+ ## 2.3.3
665
+
666
+ ### Patch Changes
667
+
668
+ - a5a6cfb: Replacing node-fetch client with Undici for HTTP requests
669
+ - Updated dependencies [a5a6cfb]
670
+ - Updated dependencies [05f0f1a]
671
+ - @forge/api@5.0.0
672
+
673
+ ## 2.3.3-next.0
674
+
675
+ ### Patch Changes
676
+
677
+ - a5a6cfb: Replacing node-fetch client with Undici for HTTP requests
678
+ - Updated dependencies [a5a6cfb]
679
+ - @forge/api@5.0.0-next.0
680
+
681
+ ## 2.3.2
682
+
683
+ ### Patch Changes
684
+
685
+ - Updated dependencies [e23f188]
686
+ - Updated dependencies [7e6baa1]
687
+ - @forge/api@4.3.0
688
+
689
+ ## 2.3.2-next.1
690
+
691
+ ### Patch Changes
692
+
693
+ - Updated dependencies [e23f188]
694
+ - @forge/api@4.3.0-next.1
695
+
696
+ ## 2.3.2-next.0
697
+
698
+ ### Patch Changes
699
+
700
+ - Updated dependencies [7e6baa1]
701
+ - @forge/api@4.2.1-next.0
702
+
703
+ ## 2.3.1
704
+
705
+ ### Patch Changes
706
+
707
+ - Updated dependencies [c0f4d43]
708
+ - @forge/api@4.2.0
709
+
710
+ ## 2.3.1-next.0
711
+
712
+ ### Patch Changes
713
+
714
+ - Updated dependencies [c0f4d43]
715
+ - @forge/api@4.2.0-next.0
716
+
717
+ ## 2.3.0
718
+
719
+ ### Minor Changes
720
+
721
+ - 7c93596: Add a new endpoint /execute/ddl to execute ddl query
722
+ - f11ed8f: Add error details with migration error
723
+
724
+ ## 2.3.0-next.1
725
+
726
+ ### Minor Changes
727
+
728
+ - f11ed8f: Add error details with migration error
729
+
730
+ ## 2.3.0-next.0
731
+
732
+ ### Minor Changes
733
+
734
+ - 7c93596: Add a new endpoint /execute/ddl to execute ddl query
735
+
736
+ ## 2.2.3
737
+
738
+ ### Patch Changes
739
+
740
+ - Updated dependencies [01f334b]
741
+ - @forge/api@4.1.2
742
+
743
+ ## 2.2.3-next.0
744
+
745
+ ### Patch Changes
746
+
747
+ - Updated dependencies [01f334b]
748
+ - @forge/api@4.1.2-next.0
749
+
750
+ ## 2.2.2
751
+
752
+ ### Patch Changes
753
+
754
+ - @forge/api@4.1.1
755
+
756
+ ## 2.2.2-next.0
757
+
758
+ ### Patch Changes
759
+
760
+ - @forge/api@4.1.1-next.0
761
+
762
+ ## 2.2.1
763
+
764
+ ### Patch Changes
765
+
766
+ - 7dda52e:
767
+
768
+ ## 2.2.1-next.0
769
+
770
+ ### Patch Changes
771
+
772
+ - 7dda52e:
773
+
774
+ ## 2.2.0
775
+
776
+ ### Minor Changes
777
+
778
+ - 226ad1b: Add Generic type to SQL helpers
779
+
780
+ You can now pass a Generic type to the `prepare` and `executeRaw` functions to specify the row result type.
781
+
782
+ ```typescript
783
+ const statement = sql.prepare<{
784
+ id: number;
785
+ text: string;
786
+ modifiedAt: string;
787
+ }>('SELECT * FROM example WHERE id = ?');
788
+
789
+ const { rows } = statement.bindParams(42).execute();
790
+
791
+ rows;
792
+ // ^? Array<{ id: number, text: string, modifiedAt: string }>
793
+ ```
794
+
795
+ ### Patch Changes
796
+
797
+ - 8e408f5: Fix response parsing bug for successive use of SqlClient.\_provision() helper
798
+
799
+ This adds new Error handling classes for SQL extending `ForgeSQLError`, though not fully used within the SDK yet
800
+
801
+ - a431d3d: fix: Generic type for result supporting update response as a single value instead of array
802
+ - Updated dependencies [a989ae4]
803
+ - @forge/api@4.1.0
804
+
805
+ ## 2.2.0-next.3
806
+
807
+ ### Patch Changes
808
+
809
+ - 8e408f5: Fix response parsing bug for successive use of SqlClient.\_provision() helper
810
+
811
+ This adds new Error handling classes for SQL extending `ForgeSQLError`, though not fully used within the SDK yet
812
+
813
+ ## 2.2.0-next.2
814
+
815
+ ### Patch Changes
816
+
817
+ - Updated dependencies [a989ae4]
818
+ - @forge/api@4.1.0-next.0
819
+
820
+ ## 2.2.0-next.1
821
+
822
+ ### Patch Changes
823
+
824
+ - a431d3d: fix: Generic type for result supporting update response as a single value instead of array
825
+
826
+ ## 2.2.0-next.0
827
+
828
+ ### Minor Changes
829
+
830
+ - 226ad1b: Add Generic type to SQL helpers
831
+
832
+ You can now pass a Generic type to the `prepare` and `executeRaw` functions to specify the row result type.
833
+
834
+ ```typescript
835
+ const statement = sql.prepare<{
836
+ id: number;
837
+ text: string;
838
+ modifiedAt: string;
839
+ }>('SELECT * FROM example WHERE id = ?');
840
+
841
+ const { rows } = statement.bindParams(42).execute();
842
+
843
+ rows;
844
+ // ^? Array<{ id: number, text: string, modifiedAt: string }>
845
+ ```
846
+
847
+ ## 2.1.0
848
+
849
+ ### Minor Changes
850
+
851
+ - a41411c: Adds schema migrations helpers for Forge SQL
852
+
853
+ ### Patch Changes
854
+
855
+ - Updated dependencies [a17ae69]
856
+ - Updated dependencies [e069ff4]
857
+ - Updated dependencies [7e05319]
858
+ - @forge/api@4.0.0
859
+
860
+ ## 2.1.0-next.2
861
+
862
+ ### Minor Changes
863
+
864
+ - a41411c: Adds schema migrations helpers for Forge SQL
865
+
866
+ ## 2.0.1-next.1
867
+
868
+ ### Patch Changes
869
+
870
+ - Updated dependencies [7e05319]
871
+ - @forge/api@4.0.0-next.1
872
+
873
+ ## 2.0.1-next.0
874
+
875
+ ### Patch Changes
876
+
877
+ - Updated dependencies [a17ae69]
878
+ - @forge/api@3.10.0-next.0
879
+
880
+ ## 2.0.0
881
+
882
+ ### Major Changes
883
+
884
+ - 5db2da9: \* handle schema provisioning error
885
+ - v1.0.0 stable release
886
+
887
+ ## 2.0.0-next.0
888
+
889
+ ### Major Changes
890
+
891
+ - 5db2da9: \* handle schema provisioning error
892
+ - v1.0.0 stable release
893
+
894
+ ## 0.1.0
895
+
896
+ ### Minor Changes
897
+
898
+ - 01516bb: rename execute to executeRaw
899
+
900
+ ### Patch Changes
901
+
902
+ - 0f75e93: Forge SQL SDK added
903
+ - Updated dependencies [d3e9d37]
904
+ - Updated dependencies [fbb27ea]
905
+ - Updated dependencies [0f75e93]
906
+ - @forge/api@3.9.2
907
+
908
+ ## 0.1.0-next.1
909
+
910
+ ### Minor Changes
911
+
912
+ - 01516bb: rename execute to executeRaw
@@ -9,6 +9,9 @@ describe('SqlClient', () => {
9
9
  let sqlClient;
10
10
  let mockFetch;
11
11
  beforeEach(() => {
12
+ for (const key of Object.keys(process.env).filter((key) => key.startsWith('FORGE_LOCAL_')))
13
+ delete process.env[key];
14
+ delete global.__forge_local_fetch__;
12
15
  sqlClient = new sql_1.SqlClient();
13
16
  mockFetch = jest.fn();
14
17
  api_1.__fetchProduct.mockReturnValue(mockFetch);
@@ -107,6 +110,57 @@ describe('SqlClient', () => {
107
110
  await expect(sqlClient['sendRequest'](path)).rejects.toThrow(mockError);
108
111
  expect(mockFetch).toHaveBeenCalledWith(path, expect.any(Object));
109
112
  });
113
+ it('routes local-storage requests directly to loopback without calling hosted Forge SQL', async () => {
114
+ Object.assign(process.env, {
115
+ FORGE_LOCAL_STORAGE: '1',
116
+ FORGE_LOCAL_SQL_URL: 'http://127.0.0.1:18091',
117
+ FORGE_LOCAL_STORAGE_APP_ID: 'local-app',
118
+ FORGE_LOCAL_STORAGE_ENVIRONMENT_ID: 'local-environment',
119
+ FORGE_LOCAL_STORAGE_INSTALLATION_ID: 'local-installation'
120
+ });
121
+ const localFetch = jest.fn().mockResolvedValue(new Response(JSON.stringify({ rows: [] }), { status: 200 }));
122
+ global.__forge_local_fetch__ = localFetch;
123
+ await sqlClient['sendRequest']('/api/v1/execute', { method: 'POST' });
124
+ expect(localFetch).toHaveBeenCalledWith(new URL('http://127.0.0.1:18091/api/v1/execute'), expect.objectContaining({
125
+ method: 'POST',
126
+ headers: expect.objectContaining({
127
+ 'x-forge-app-id': 'local-app',
128
+ 'x-forge-environment-id': 'local-environment',
129
+ 'x-forge-installation-id': 'local-installation',
130
+ 'x-atlassian-forgeapp-app-id': 'local-app',
131
+ 'x-atlassian-forgeapp-environment-id': 'local-environment',
132
+ 'x-atlassian-forgeapp-installation-id': 'local-installation'
133
+ })
134
+ }));
135
+ expect(api_1.__fetchProduct).not.toHaveBeenCalled();
136
+ delete global.__forge_local_fetch__;
137
+ });
138
+ it('fails closed for incomplete or non-loopback local SQL routing', async () => {
139
+ process.env.FORGE_LOCAL_STORAGE = '1';
140
+ process.env.FORGE_LOCAL_SQL_URL = 'http://127.0.0.1:18091';
141
+ await expect(sqlClient['sendRequest']('/api/v1/execute')).rejects.toThrow('local namespace is incomplete');
142
+ expect(api_1.__fetchProduct).not.toHaveBeenCalled();
143
+ Object.assign(process.env, {
144
+ FORGE_LOCAL_STORAGE_APP_ID: 'local-app',
145
+ FORGE_LOCAL_STORAGE_ENVIRONMENT_ID: 'local-environment',
146
+ FORGE_LOCAL_STORAGE_INSTALLATION_ID: 'local-installation',
147
+ FORGE_LOCAL_SQL_URL: 'https://example.com'
148
+ });
149
+ await expect(sqlClient['sendRequest']('/api/v1/execute')).rejects.toThrow('must be http://127.0.0.1:18091');
150
+ expect(api_1.__fetchProduct).not.toHaveBeenCalled();
151
+ });
152
+ it('fails closed when local SQL routing has no tunnel local-fetch bridge', async () => {
153
+ Object.assign(process.env, {
154
+ FORGE_LOCAL_STORAGE: '1',
155
+ FORGE_LOCAL_SQL_URL: 'http://127.0.0.1:18091',
156
+ FORGE_LOCAL_STORAGE_APP_ID: 'local-app',
157
+ FORGE_LOCAL_STORAGE_ENVIRONMENT_ID: 'local-environment',
158
+ FORGE_LOCAL_STORAGE_INSTALLATION_ID: 'local-installation'
159
+ });
160
+ delete global.__forge_local_fetch__;
161
+ await expect(sqlClient['sendRequest']('/api/v1/execute')).rejects.toThrow('requires the tunnel local-fetch bridge');
162
+ expect(api_1.__fetchProduct).not.toHaveBeenCalled();
163
+ });
110
164
  });
111
165
  describe('prepare', () => {
112
166
  it('should return a SqlStatement instance with query', () => {
package/out/sql.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAgC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI7E,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,KAAK,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAElF,qBAAa,SAAS;YACN,WAAW;YAYX,UAAU;YAsBV,qBAAqB;IAYnC,OAAO,CAAC,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,eAA2C,GACpD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAU3B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAQ9D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CAGrE;AAED,eAAO,MAAM,GAAG,WAAkB,CAAC"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAgC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI7E,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,KAAK,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAElF,qBAAa,SAAS;YACN,WAAW;YAcX,UAAU;YAsBV,qBAAqB;IAYnC,OAAO,CAAC,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,eAA2C,GACpD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAU3B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAQ9D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;CAGrE;AAED,eAAO,MAAM,GAAG,WAAkB,CAAC"}
package/out/sql.js CHANGED
@@ -11,15 +11,18 @@ exports.SQL_API_ENDPOINTS = {
11
11
  };
12
12
  class SqlClient {
13
13
  async sendRequest(path, options) {
14
- const response = await (0, api_1.__fetchProduct)({ provider: 'app', remote: 'sql', type: 'sql' })(path, {
14
+ const requestOptions = {
15
15
  ...options,
16
16
  redirect: 'follow',
17
17
  headers: {
18
18
  ...options?.headers,
19
19
  'Content-Type': 'application/json'
20
20
  }
21
- });
22
- return response;
21
+ };
22
+ const localClient = getLocalSqlFetchClient();
23
+ if (localClient)
24
+ return localClient(path, requestOptions);
25
+ return (0, api_1.__fetchProduct)({ provider: 'app', remote: 'sql', type: 'sql' })(path, requestOptions);
23
26
  }
24
27
  async storageApi(query, params = [], method = 'all', endpoint = exports.SQL_API_ENDPOINTS.EXECUTE) {
25
28
  const response = await this.sendRequest(endpoint, {
@@ -55,3 +58,34 @@ class SqlClient {
55
58
  }
56
59
  exports.SqlClient = SqlClient;
57
60
  exports.sql = new SqlClient();
61
+ function getLocalSqlFetchClient() {
62
+ if (process.env.FORGE_LOCAL_STORAGE !== '1')
63
+ return undefined;
64
+ const baseUrl = process.env.FORGE_LOCAL_SQL_URL;
65
+ const appId = process.env.FORGE_LOCAL_STORAGE_APP_ID;
66
+ const environmentId = process.env.FORGE_LOCAL_STORAGE_ENVIRONMENT_ID;
67
+ const installationId = process.env.FORGE_LOCAL_STORAGE_INSTALLATION_ID;
68
+ if (!baseUrl || !appId || !environmentId || !installationId) {
69
+ throw new Error('Forge local SQL routing is enabled but its local namespace is incomplete.');
70
+ }
71
+ if (baseUrl !== 'http://127.0.0.1:18091') {
72
+ throw new Error('Forge local SQL endpoint must be http://127.0.0.1:18091.');
73
+ }
74
+ const fetchImplementation = globalThis.__forge_local_fetch__;
75
+ if (typeof fetchImplementation !== 'function') {
76
+ throw new Error('Forge local SQL routing requires the tunnel local-fetch bridge.');
77
+ }
78
+ const endpoint = new URL(baseUrl);
79
+ return async (requestPath, options) => (await fetchImplementation(new URL(requestPath, endpoint), {
80
+ ...options,
81
+ headers: {
82
+ ...options?.headers,
83
+ 'x-forge-app-id': appId,
84
+ 'x-forge-environment-id': environmentId,
85
+ 'x-forge-installation-id': installationId,
86
+ 'x-atlassian-forgeapp-app-id': appId,
87
+ 'x-atlassian-forgeapp-environment-id': environmentId,
88
+ 'x-atlassian-forgeapp-installation-id': installationId
89
+ }
90
+ }));
91
+ }
package/package.json CHANGED
@@ -1,14 +1,11 @@
1
1
  {
2
2
  "name": "@forge/sql",
3
- "version": "4.0.5-next.0",
3
+ "version": "4.0.5-next.1-experimental-e9e08bb",
4
4
  "description": "Forge SQL sdk",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
7
7
  "main": "out/index.js",
8
8
  "types": "out/index.d.ts",
9
- "files": [
10
- "out"
11
- ],
12
9
  "scripts": {
13
10
  "build": "yarn run clean && yarn run compile",
14
11
  "clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
@@ -21,7 +18,7 @@
21
18
  "typescript": "5.9.2"
22
19
  },
23
20
  "dependencies": {
24
- "@forge/api": "^8.0.5-next.0"
21
+ "@forge/api": "^8.0.5-next.1-experimental-e9e08bb"
25
22
  },
26
23
  "publishConfig": {
27
24
  "registry": "https://packages.atlassian.com/api/npm/npm-public/"