diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/Preview.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/Preview.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/Preview.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/Preview.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image-pbicopilotcreate.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image-pbicopilotcreate.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image-pbicopilotcreate.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image-pbicopilotcreate.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image001.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image001.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image001.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image001.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image002.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image002.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image002.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image002.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image003.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image003.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image003.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image003.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image004.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image004.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image004.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image004.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image005.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image005.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image005.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image005.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image006.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image006.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image006.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image006.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image007.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image007.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image007.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image007.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image008.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image008.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image008.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image008.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image009.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image009.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image009.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image009.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image010.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image010.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image010.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image010.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image011.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image011.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image011.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image011.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image013.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image013.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image013.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image013.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image015.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image015.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image015.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image015.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image016.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image016.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image016.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image016.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image017.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image017.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image017.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image017.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image018.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image018.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image018.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image018.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image019.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image019.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image019.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image019.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image020.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image020.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image020.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image020.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image021.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image021.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image021.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image021.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image022.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image022.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image022.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image022.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image023.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image023.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image023.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image023.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image024.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image024.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image024.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image024.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image025.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image025.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image025.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image025.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image026.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image026.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image026.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image026.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image027.jpg b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image027.jpg similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image027.jpg rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image027.jpg diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image028.jpg b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image028.jpg similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image028.jpg rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image028.jpg diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image029.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image029.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image029.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image029.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image030.jpg b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image030.jpg similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image030.jpg rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image030.jpg diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image031.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image031.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image031.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image031.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image032.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image032.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image032.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image032.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image033.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image033.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image033.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image033.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image034.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image034.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image034.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image034.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image035.jpg b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image035.jpg similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image035.jpg rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image035.jpg diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image036.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image036.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image036.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image036.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image037.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image037.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image037.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image037.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image038.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image038.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image038.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image038.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image039.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image039.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image039.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image039.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image040.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image040.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image040.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image040.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image041.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image041.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image041.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image041.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image042.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image042.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image042.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image042.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image043.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image043.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image043.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image043.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image044.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image044.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image044.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image044.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image045.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image045.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image045.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image045.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image046.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image046.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image046.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image046.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image047.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image047.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image047.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image047.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image048.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image048.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image048.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image048.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image052.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image052.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image052.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image052.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image054.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image054.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image054.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image054.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image055.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image055.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image055.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image055.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image056.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image056.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image056.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image056.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image057.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image057.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image057.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image057.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image058.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image058.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image058.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image058.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image059.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image059.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image059.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image059.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image060.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image060.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image060.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image060.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image061.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image061.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image061.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image061.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image062.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image062.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image062.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image062.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image063.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image063.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image063.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image063.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image064.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image064.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image064.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image064.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image065.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image065.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image065.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image065.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image066.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image066.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image066.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image066.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image067.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image067.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image067.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image067.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image068.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image068.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image068.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image068.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image069.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image069.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image069.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image069.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image070.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image070.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image070.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image070.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image073.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image073.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image073.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image073.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image074.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image074.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image074.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image074.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image075.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image075.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image075.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image075.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image076.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image076.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image076.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image076.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image077.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image077.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image077.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image077.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image078.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image078.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image078.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image078.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image079.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image079.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image079.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image079.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image100.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image100.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image100.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image100.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image101.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image101.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image101.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image101.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image102.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image102.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image102.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image102.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image103.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image103.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image103.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image103.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image104.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image104.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image104.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image104.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image105.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image105.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image105.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image105.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image107.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image107.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image107.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image107.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image108.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image108.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image108.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image108.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image109.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image109.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image109.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image109.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image110.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image110.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image110.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image110.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image111.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image111.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image111.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image111.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image112.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image112.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image112.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image112.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image113.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image113.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image113.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image113.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image114.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image114.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image114.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image114.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image115.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image115.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image115.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image115.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image116.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image116.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image116.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image116.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image119.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image119.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image119.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image119.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image133.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image133.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image133.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image133.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image134.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image134.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image134.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image134.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image135.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image135.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image135.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image135.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image136.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image136.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image136.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image136.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image137.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image137.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image137.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image137.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image138.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image138.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image138.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image138.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image139.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image139.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image139.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image139.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image140.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image140.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image140.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image140.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image141.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image141.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image141.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image141.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image142.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image142.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image142.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image142.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image143.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image143.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image143.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image143.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image144.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image144.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image144.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image144.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image145.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image145.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image145.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image145.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image146.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image146.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image146.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image146.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image147.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image147.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image147.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image147.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image148.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image148.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image148.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image148.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image149.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image149.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image149.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image149.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image150.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image150.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image150.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image150.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image151.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image151.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image151.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image151.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image152.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image152.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image152.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image152.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image153.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image153.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image153.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image153.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/Images/image154.png b/03-Azure/01-02 Data/03-Talk_to_your_data/images/image154.png similarity index 100% rename from 03-Azure/01-02 Data/03-Talk_to_your_data/Images/image154.png rename to 03-Azure/01-02 Data/03-Talk_to_your_data/images/image154.png diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/infra/modules/sqlManagedInstance.bicep b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/infra/modules/sqlManagedInstance.bicep index 90220bf3b..8109a0e6a 100644 --- a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/infra/modules/sqlManagedInstance.bicep +++ b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/infra/modules/sqlManagedInstance.bicep @@ -23,15 +23,6 @@ param administratorLogin string @secure() param administratorLoginPassword string -@description('Entra admin display name (label only).') -param aadAdminLogin string - -@description('Entra admin object ID (sid). Set explicitly so ARM does not resolve the principal.') -param aadAdminSid string - -@description('Entra admin tenant ID.') -param aadAdminTenantId string - @description('Tags to apply to all resources.') param tags object = {} @@ -64,18 +55,6 @@ resource managedInstance 'Microsoft.Sql/managedInstances@2023-08-01-preview' = { } } -// Entra admin enables Azure AD authentication on the instance (SQL auth stays enabled). Explicit sid so ARM does not have to resolve the principal. -resource sqlAadAdmin 'Microsoft.Sql/managedInstances/administrators@2023-08-01-preview' = { - parent: managedInstance - name: 'ActiveDirectory' - properties: { - administratorType: 'ActiveDirectory' - login: aadAdminLogin - sid: aadAdminSid - tenantId: aadAdminTenantId - } -} - output id string = managedInstance.id output name string = managedInstance.name output fqdn string = managedInstance.properties.fullyQualifiedDomainName diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared-deploy-lab.ps1 b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared-deploy-lab.ps1 index 6e806e3c8..2f53d8c10 100644 --- a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared-deploy-lab.ps1 +++ b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared-deploy-lab.ps1 @@ -32,6 +32,12 @@ $ErrorActionPreference = 'Stop' $SharedResourceGroup = 'rg-shared' $SqlAdminLogin = 'sqlmiadmin' $FabricApi = 'https://api.fabric.microsoft.com/v1' +$GraphApi = 'https://graph.microsoft.com/v1.0' +# Power BI Free. Assigning it to a user is what makes the tenant known to Fabric; without it +# Microsoft.Fabric/capacities fails with "Tenant ... wasn't recognized by Microsoft Fabric". +$FabricLicenseSkuPartNumber = 'POWER_BI_STANDARD' +# Only needs to be a country Power BI is offered in; it gates license assignment, nothing else. +$FabricUsageLocation = 'DE' # Microsoft.PowerPlatform is required for the Fabric VNet data gateway's subnet delegation. $RequiredProviders = @('Microsoft.Sql', 'Microsoft.Fabric', 'Microsoft.Storage', 'Microsoft.Web', 'Microsoft.Network', 'Microsoft.PowerPlatform') @@ -80,6 +86,24 @@ function Invoke-MiSql { Invoke-Sqlcmd @splat } +function Invoke-GraphApi { + param( + [Parameter(Mandatory = $true)][ValidateSet('GET', 'POST', 'PATCH')][string]$Method, + [Parameter(Mandatory = $true)][string]$Path, + [object]$Body + ) + $azArgs = @('rest', '--method', $Method, '--url', "$GraphApi/$($Path.TrimStart('/'))", '--resource', 'https://graph.microsoft.com') + if ($Body) { + $azArgs += @('--headers', 'Content-Type=application/json', '--body', ($Body | ConvertTo-Json -Depth 10 -Compress)) + } + $raw = az @azArgs 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Graph $Method $Path failed: $raw" + } + if ([string]::IsNullOrWhiteSpace($raw)) { return $null } + return ($raw | ConvertFrom-Json) +} + function Invoke-FabricApi { param( [Parameter(Mandatory = $true)][ValidateSet('GET', 'POST', 'DELETE')][string]$Method, @@ -127,7 +151,7 @@ foreach ($uid in ($AllowedEntraUserIds | Where-Object { $_ })) { } # ───────────────────────────────────────────── -# 2. Resolve the deploying service principal (becomes SQL MI Entra admin) +# 2. Resolve principals and bootstrap the Fabric tenant # ───────────────────────────────────────────── $account = (Get-AzContext).Account.Id $spObjectId = $null @@ -143,10 +167,77 @@ if (-not $spObjectId) { } if (-not $spObjectId) { throw "Could not resolve the deploying principal object id." } -# Entra admin for the SQL MI (enables Entra auth; set declaratively with an explicit sid so ARM does not resolve the principal). -$aadTenantId = (Get-AzContext).Tenant.Id -$aadAdminLogin = if ($account -as [guid]) { (Get-AzADServicePrincipal -Id $spObjectId -ErrorAction SilentlyContinue).DisplayName } else { $account } -if (-not $aadAdminLogin) { $aadAdminLogin = 'MicroHackDeployer' } +# Resolve every attendee once; reused for Fabric licensing, capacity admins and the SQL MI Entra admin. +$labUsers = [System.Collections.Generic.List[object]]::new() +foreach ($uid in ($AllowedEntraUserIds | Where-Object { $_ })) { + $mhhUser = Get-MhhLabUser -UserId $uid -ErrorAction SilentlyContinue + $memberUpn = $mhhUser.UserPrincipalName + if (-not $memberUpn) { $memberUpn = (Get-AzADUser -ObjectId $uid -ErrorAction SilentlyContinue).UserPrincipalName } + if (-not $memberUpn) { + Write-Warning "[shared] Could not resolve a UPN for '$uid'; skipping it." + continue + } + $labUsers.Add([pscustomobject]@{ + Id = $uid + UserPrincipalName = $memberUpn + ShortName = $mhhUser.ShortName + }) +} +if ($labUsers.Count -eq 0) { throw "Could not resolve any lab user from AllowedEntraUserIds." } + +$firstLabUser = $labUsers | Where-Object { $_.ShortName -match '(?i)labuser-[0-9]{4}' } | Sort-Object ShortName | Select-Object -First 1 +if (-not $firstLabUser) { $firstLabUser = $labUsers | Sort-Object ShortName | Select-Object -First 1 } + +# A service principal cannot sign a tenant up for Fabric; only a licensed user can. Every attendee is +# licensed anyway (they need it to open Fabric), and the first assignment provisions the tenant. +$fabricSku = (Invoke-GraphApi -Method GET -Path 'subscribedSkus').value | + Where-Object { $_.skuPartNumber -eq $FabricLicenseSkuPartNumber } | Select-Object -First 1 +if (-not $fabricSku) { + throw "SKU '$FabricLicenseSkuPartNumber' is not available in this tenant, so Fabric cannot be provisioned. Enable Power BI self-service sign-up or add the SKU." +} + +foreach ($labUser in $labUsers) { + $isBootstrapUser = $labUser.Id -eq $firstLabUser.Id + try { + $graphUser = Invoke-GraphApi -Method GET -Path "users/$($labUser.Id)?`$select=id,usageLocation,assignedLicenses" + if ($graphUser.assignedLicenses.skuId -contains $fabricSku.skuId) { + Write-Host "[shared] $($labUser.UserPrincipalName) already holds $FabricLicenseSkuPartNumber." + continue + } + # assignLicense rejects users without a usage location. + if (-not $graphUser.usageLocation) { + Invoke-GraphApi -Method PATCH -Path "users/$($labUser.Id)" -Body @{ usageLocation = $FabricUsageLocation } | Out-Null + } + Invoke-GraphApi -Method POST -Path "users/$($labUser.Id)/assignLicense" -Body @{ + addLicenses = @(@{ skuId = $fabricSku.skuId; disabledPlans = @() }) + removeLicenses = @() + } | Out-Null + Write-Host "[shared] Assigned $FabricLicenseSkuPartNumber to $($labUser.UserPrincipalName)." + } + catch { + if ($isBootstrapUser) { throw "Could not license '$($labUser.UserPrincipalName)' for Fabric, so the tenant cannot be provisioned: $($_.Exception.Message)" } + Write-Warning "[shared] Fabric license for $($labUser.UserPrincipalName) failed: $($_.Exception.Message)" + } +} + +# Tenant provisioning is asynchronous. Poll until the Fabric API answers rather than letting the +# capacity deployment fail; on timeout continue anyway so ARM produces the authoritative error. +$fabricTenantReady = $false +for ($elapsed = 0; $elapsed -lt 600; $elapsed += 30) { + try { + Invoke-FabricApi -Method GET -Path 'capacities' | Out-Null + $fabricTenantReady = $true + Write-Host "[shared] Fabric recognises this tenant." + break + } + catch { + Write-Host "[shared] Waiting for Fabric tenant provisioning ($elapsed s)..." + Start-Sleep -Seconds 30 + } +} +if (-not $fabricTenantReady) { + Write-Warning "[shared] Fabric did not confirm the tenant within 10 minutes. Continuing; the capacity deployment will report the real cause." +} # Fabric capacity admin members: users must be UPNs (object IDs are rejected); a service principal uses its object ID. $fabricMemberList = [System.Collections.Generic.List[string]]::new() @@ -156,12 +247,7 @@ if ($account -as [guid]) { else { $fabricMemberList.Add($account) # deploying user's UPN } -foreach ($uid in ($AllowedEntraUserIds | Where-Object { $_ })) { - $memberUpn = (Get-MhhLabUser -UserId $uid -ErrorAction SilentlyContinue).UserPrincipalName - if (-not $memberUpn) { $memberUpn = (Get-AzADUser -ObjectId $uid -ErrorAction SilentlyContinue).UserPrincipalName } - if ($memberUpn) { $fabricMemberList.Add($memberUpn) } - else { Write-Warning "[shared] Could not resolve a UPN for '$uid'; omitting it from Fabric admin members." } -} +foreach ($labUser in $labUsers) { $fabricMemberList.Add($labUser.UserPrincipalName) } $fabricAdminMembers = @($fabricMemberList | Select-Object -Unique) $sqlPassword = New-MhhStablePassword -Purpose 'sql-admin' -Length 24 @@ -184,9 +270,6 @@ New-AzResourceGroupDeployment ` sqlPassword = $sqlPassword fabricAdminMembers = $fabricAdminMembers sqlMiNetworkingExists = $sqlMiNetworkingExists - sqlAadAdminLogin = $aadAdminLogin - sqlAadAdminSid = $spObjectId - sqlAadAdminTenantId = $aadTenantId } ` -AsJob | Out-Null @@ -229,6 +312,45 @@ if ($drResult.status -contains 'Failed') { } Write-Host "[shared] SQL MI identity Directory Readers: $($drResult.status -join ', ')." +# ───────────────────────────────────────────── +# 4b. Entra admin on the SQL MI = first lab user +# ───────────────────────────────────────────── +# Deliberately not done in Bicep: ARM cannot resolve the principal in the lab tenant. +# Set-AzSqlInstanceActiveDirectoryAdministrator is unreliable here too, so PUT the +# administrator sub-resource directly. Directory Readers must be granted first. +Start-Sleep -Seconds 30 +Update-MhhTokenQuiet + +$sqlEntraAdmin = Get-AzADUser -ObjectId $firstLabUser.Id -ErrorAction Stop +$mi = Get-AzSqlInstance -ResourceGroupName $SharedResourceGroup -Name $miName +Write-Host "[shared] Configuring $($sqlEntraAdmin.UserPrincipalName) as SQL MI Entra admin." + +# Concatenated, not interpolated: "$($mi.Id)/...?api-version=..." would swallow the '?' into the variable scope. +$adminPath = $mi.Id + '/administrators/ActiveDirectory?api-version=2023-08-01-preview' +$adminPayload = @{ + properties = @{ + administratorType = 'ActiveDirectory' + login = $sqlEntraAdmin.UserPrincipalName + sid = $sqlEntraAdmin.Id + tenantId = (Get-AzContext).Tenant.Id + } +} | ConvertTo-Json -Depth 5 +$adminResp = Invoke-AzRestMethod -Method PUT -Path $adminPath -Payload $adminPayload +if ($adminResp.StatusCode -notin 200, 201, 202) { + throw "Setting the SQL MI Entra admin failed (HTTP $($adminResp.StatusCode)): $($adminResp.Content)" +} + +# The PUT is accepted asynchronously; confirm the admin actually landed before continuing. +$adminConfirmed = $false +for ($elapsed = 0; $elapsed -lt 120; $elapsed += 10) { + Start-Sleep -Seconds 10 + $current = Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName $SharedResourceGroup -InstanceName $miName -ErrorAction SilentlyContinue + if ($current -and $current.ObjectId -eq $sqlEntraAdmin.Id) { $adminConfirmed = $true; break } + Write-Host "[shared] Waiting for the Entra admin to appear ($elapsed s)..." +} +if (-not $adminConfirmed) { throw "The SQL MI Entra admin was not configured within 2 minutes." } +Write-Host "[shared] SQL MI Entra admin is $($sqlEntraAdmin.UserPrincipalName)." + # ───────────────────────────────────────────── # 5. Upload the .bak files and restore the demo databases # ───────────────────────────────────────────── diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared.bicep b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared.bicep index 84d543dcb..d207f51eb 100644 --- a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared.bicep +++ b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/shared.bicep @@ -3,7 +3,8 @@ // infra/modules. // // Non-ARM follow-up performed by shared-deploy-lab.ps1 after this template: -// - SQL MI Directory-Readers grant + Entra admin +// - SQL MI Directory-Readers grant + Entra admin (the admin is set via REST against +// the first lab user; ARM cannot resolve the principal in the lab tenant) // - demo database restores, stored proc, product, Agent job // - Fabric VNet gateway + gateway role assignments // Per-attendee resources (user databases, Fabric workspaces) are created by @@ -22,15 +23,6 @@ param sqlAdminLogin string @secure() param sqlPassword string -@description('Entra admin display name for the SQL MI (label only).') -param sqlAadAdminLogin string - -@description('Entra admin object ID (sid) for the SQL MI.') -param sqlAadAdminSid string - -@description('Entra admin tenant ID for the SQL MI.') -param sqlAadAdminTenantId string - @description('Fabric capacity SKU name.') param fabricSkuName string = 'F32' @@ -66,9 +58,6 @@ module sqlManagedInstance 'infra/modules/sqlManagedInstance.bicep' = { subnetId: vnet.outputs.managedInstanceSubnetId administratorLogin: sqlAdminLogin administratorLoginPassword: sqlPassword - aadAdminLogin: sqlAadAdminLogin - aadAdminSid: sqlAadAdminSid - aadAdminTenantId: sqlAadAdminTenantId tags: commonTags } } diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package-lock.json b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package-lock.json index 853bc54f4..930a8f119 100644 --- a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package-lock.json +++ b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package-lock.json @@ -10,57 +10,75 @@ "dependencies": { "dotenv": "^16.4.5", "express": "^4.19.2", - "mssql": "^12.7.0" + "mssql": "^10.0.2" } }, "node_modules/@azure-rest/core-client": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.8.0.tgz", - "integrity": "sha512-F1ybHeN+++QhyFCF/ehLUEvrOB6fehPdFBFtGdj0C3B2lpQ9zkPiO5JDgsqc6IfjuUe6b3dAbXK0a7+VgSGfhw==", - "license": "MIT", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.6.1.tgz", + "integrity": "sha512-KzI10qnkWTsVS2yRBUdc8NLUJ1rOm+292mYs7Pe9wqAj/jv4bRskVm1l8XkKeVTN0OCQtrU5RG0Yhjbz1Wmg7g==", "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", - "@azure/core-rest-pipeline": "^1.24.0", + "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" } }, - "node_modules/@azure/abort-controller": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz", - "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==", - "license": "MIT", + "node_modules/@azure-rest/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" } }, "node_modules/@azure/core-auth": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz", - "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==", - "license": "MIT", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-client": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.0.tgz", - "integrity": "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA==", - "license": "MIT", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz", + "integrity": "sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==", "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", @@ -71,14 +89,24 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-lro": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.2.0", @@ -89,32 +117,32 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-paging": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.7.0.tgz", - "integrity": "sha512-7GEAoIsaoBr6KELNRb8nypowCqvk8dnCHFCYg4XD4lOQGY2GqjQg5IhkRjyBFRO18CGSMq05PaNqSOE9GQro3g==", - "license": "MIT", + "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-process": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@azure/core-process/-/core-process-1.0.0.tgz", - "integrity": "sha512-/shnJ+ooO8WPxDhPEeI/2oRQuubn16gZ6CvlbpWbEswZfzwI9tI/sMAHmF3x1LuQ9yZYXfLW3TjzGMLEC5blKg==", - "license": "MIT", + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=22.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz", - "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==", - "license": "MIT", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz", + "integrity": "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==", "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", @@ -125,63 +153,83 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-tracing": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz", - "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==", - "license": "MIT", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-util": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz", - "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==", - "license": "MIT", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" } }, - "node_modules/@azure/identity": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.2.tgz", - "integrity": "sha512-NXL2/pCJctLxgw8bvrwwgge743kEq8LBT+O1pmV0vyUwetzFPH9auP6jhkU/cgZCPPtWoewAe3ncaGCgPo07fA==", - "license": "MIT", + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-process": "^1.0.0", - "@azure/core-rest-pipeline": "^1.17.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", + "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.4.0", + "@azure/core-rest-pipeline": "^1.1.0", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", + "@azure/core-util": "^1.6.1", "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^5.5.0", - "@azure/msal-node": "^5.1.5", - "open": "^10.1.0", + "@azure/msal-browser": "^3.5.0", + "@azure/msal-node": "^2.5.1", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", "tslib": "^2.2.0" }, "engines": { - "node": ">=22.0.0" + "node": ">=14.0.0" } }, "node_modules/@azure/keyvault-common": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.1.0.tgz", "integrity": "sha512-aCDidWuKY06LWQ4x7/8TIXK6iRqTaRWRL3t7T+LC+j1b07HtoIsOxP/tU90G4jCSBn5TAyUTCtA4MS/y5Hudaw==", - "license": "MIT", "dependencies": { "@azure-rest/core-client": "^2.3.3", "@azure/abort-controller": "^2.0.0", @@ -196,11 +244,21 @@ "node": ">=20.0.0" } }, + "node_modules/@azure/keyvault-common/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/keyvault-keys": { "version": "4.10.2", "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.10.2.tgz", "integrity": "sha512-VmUSLbXRAbSzDD8grXHGPaknYs0SKr3yuf6U+d4XMpX4XuVYskNqbTTwXce0zR1LyxfTZm9rWEBcvs3vdYwCmQ==", - "license": "MIT", "dependencies": { "@azure-rest/core-client": "^2.3.3", "@azure/abort-controller": "^2.1.2", @@ -218,102 +276,104 @@ "node": ">=20.0.0" } }, + "node_modules/@azure/keyvault-keys/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/logger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz", - "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==", - "license": "MIT", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/msal-browser": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.19.0.tgz", - "integrity": "sha512-DHe9iRcyByGJuLPkl0K31a1JjOdRY2zX38Q07mQpSbR8zOj1EIgsWfTXhSQVyyijUxlcofVy/br7qWJbrMwVXQ==", - "license": "MIT", + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.30.0.tgz", + "integrity": "sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==", "dependencies": { - "@azure/msal-common": "16.13.0" + "@azure/msal-common": "14.16.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "16.13.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.13.0.tgz", - "integrity": "sha512-rOAy0KUcyBbdwVJ+f3uPpthXatFLLZN+/KWAsTLzk1aB23Xl9DRmmXYwSvBFOZyXj4jUQQ5FKxxRkhAFW1fOow==", - "license": "MIT", + "version": "14.16.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", + "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.6.0.tgz", - "integrity": "sha512-uFY9NxrWHw8PwZx7gAX6PDn+9vdfS05+levc/kwkx77IkjfaldnQbbcQzzDIZ5Hq5Zdr6/z92oAIoRWKp6MnOA==", - "license": "MIT", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", + "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", "dependencies": { - "@azure/msal-common": "16.13.0", - "jsonwebtoken": "^9.0.0" + "@azure/msal-common": "14.16.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" }, "engines": { - "node": ">=20" + "node": ">=16" } }, "node_modules/@js-joda/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-6.1.0.tgz", - "integrity": "sha512-H8NTMRDJqad/leyv/D/A3kSOsf5/58Ydj4DJGDyaCWk9OU/zuZOLhndVffJgQjsgrn5GC0znHMHie7TfvPPG4w==", - "license": "BSD-3-Clause" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.7.0.tgz", + "integrity": "sha512-WBu4ULVVxySLLzK1Ppq+OdfP+adRS4ntmDQT915rzDJ++i95gc2jZkM5B6LWEAwN3lGXpfie3yPABozdD3K3Vg==" }, "node_modules/@tediousjs/connection-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-1.1.0.tgz", - "integrity": "sha512-z9ZBWEG+8pIB5V1zYzlRPXx0oRJ5H7coPnMQK8EZOw03UTPI9Umn6viL36f5w+CuqkKsnCM50RVStpjZmR0Bng==", - "license": "MIT" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz", + "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==" }, "node_modules/@types/node": { - "version": "26.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.0.tgz", - "integrity": "sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ==", - "license": "MIT", + "version": "25.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz", + "integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==", "dependencies": { - "undici-types": "~8.3.0" + "undici-types": ">=7.24.0 <7.24.7" } }, "node_modules/@types/readable-stream": { - "version": "4.0.24", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.24.tgz", - "integrity": "sha512-NRvUNC/JFGPJvqdAfEve8oginbM6V08u5NzLWpG8MwA2kTPOLnqk+wpwuPT+mp3aUsxyuT6m2gnrPuHYCruzEg==", - "license": "MIT", + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.23.tgz", + "integrity": "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==", "dependencies": { "@types/node": "*" } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.8.tgz", - "integrity": "sha512-bLMpVcWZNzq6lYOybwFwOAR1IXKcHnhUNqYeHjl1bET/qE3jFPFH+p8Wrh3rU4xwdnifPxmKNESBYnvnmc75aA==", - "license": "MIT", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz", + "integrity": "sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==", "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=22.0.0" + "node": ">=20.0.0" } }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -337,16 +397,72 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", "engines": { "node": ">= 14" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -364,14 +480,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/bl": { "version": "6.1.6", "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.6.tgz", "integrity": "sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==", - "license": "MIT", "dependencies": { "@types/readable-stream": "^4.0.0", "buffer": "^6.0.3", @@ -380,10 +494,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.6", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz", - "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==", - "license": "MIT", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", @@ -421,7 +534,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -430,23 +542,7 @@ "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "node_modules/bytes": { "version": "3.1.2", @@ -456,6 +552,23 @@ "node": ">= 0.8" } }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -523,6 +636,54 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -531,44 +692,44 @@ "ms": "2.0.0" } }, - "node_modules/default-browser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.1.tgz", - "integrity": "sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==", - "license": "MIT", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "license": "MIT", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "license": "MIT", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/depd": { @@ -616,7 +777,6 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" } @@ -634,6 +794,94 @@ "node": ">= 0.8" } }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-aggregate-error": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", + "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", + "dependencies": { + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -661,6 +909,36 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -678,7 +956,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", "engines": { "node": ">=6" } @@ -687,7 +964,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -754,6 +1030,20 @@ "node": ">= 0.8" } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -778,15 +1068,53 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", @@ -813,6 +1141,37 @@ "node": ">= 0.4" } }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -824,6 +1183,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -835,6 +1230,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", @@ -869,7 +1278,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -882,7 +1290,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -898,14 +1305,12 @@ "node_modules/http-proxy-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -918,7 +1323,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -934,8 +1338,7 @@ "node_modules/https-proxy-agent/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/iconv-lite": { "version": "0.4.24", @@ -965,14 +1368,26 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -981,65 +1396,365 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "bin": { "is-docker": "cli.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-inside-container": { + "node_modules/is-document.all": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", "dependencies": { - "is-docker": "^3.0.0" + "call-bound": "^1.0.4" }, - "bin": { - "is-inside-container": "cli.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dependencies": { + "call-bound": "^1.0.3" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "license": "MIT", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { - "is-inside-container": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/js-md4": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "license": "MIT" + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==" + }, + "node_modules/jsbi": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.2.tgz", + "integrity": "sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==" }, "node_modules/jsonwebtoken": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", - "license": "MIT", "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", @@ -1060,14 +1775,12 @@ "node_modules/jsonwebtoken/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/jwa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -1078,7 +1791,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "license": "MIT", "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" @@ -1087,44 +1799,37 @@ "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -1194,22 +1899,22 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/mssql": { - "version": "12.7.0", - "resolved": "https://registry.npmjs.org/mssql/-/mssql-12.7.0.tgz", - "integrity": "sha512-J6SJKXi1jYbhHjjooLNtPnX7+s3cq5IJ701Wgy/UW1SXRpgFlJJsYi3IPve9RVgCUkq0Cqv2aaaSJ4IXtIF3mg==", - "license": "MIT", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/mssql/-/mssql-10.0.4.tgz", + "integrity": "sha512-MhX5IcJ75/q+dUiOe+1ajpqjEe96ZKqMchYYPUIDU+Btqhwt4gbFeZhcGUZaRCEMV9uF+G8kLvaNSFaEzL9OXQ==", "dependencies": { - "@tediousjs/connection-string": "^1.0.0", + "@tediousjs/connection-string": "^0.5.0", "commander": "^11.0.0", "debug": "^4.3.3", + "rfdc": "^1.3.0", "tarn": "^3.0.2", - "tedious": "^19.2.2 || ^20.0.0" + "tedious": "^16.4.0" }, "bin": { "mssql": "bin/mssql" }, "engines": { - "node": ">=18.19.0" + "node": ">=14" } }, "node_modules/mssql/node_modules/debug": { @@ -1236,8 +1941,7 @@ "node_modules/native-duplexpair": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", - "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==", - "license": "MIT" + "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==" }, "node_modules/negotiator": { "version": "0.6.3", @@ -1247,6 +1951,11 @@ "node": ">= 0.6" } }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -1258,6 +1967,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -1270,23 +2006,37 @@ } }, "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "license": "MIT", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1300,11 +2050,18 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -1361,7 +2118,6 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -1373,16 +2129,67 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "license": "MIT", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-buffer": { @@ -1404,16 +2211,46 @@ } ] }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "license": "ISC", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "bin": { "semver": "bin/semver.js" }, @@ -1463,6 +2300,49 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -1539,8 +2419,7 @@ "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/statuses": { "version": "2.0.2", @@ -1550,15 +2429,89 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -1568,40 +2521,35 @@ } }, "node_modules/tedious": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-20.0.0.tgz", - "integrity": "sha512-bTR0aou0Ghucf0ytvZUJjnKHGKDV8tT57jPYtEkSpfTWFe++4uR1wxJLQ4mh5wlSvAYXzmgBxbI0vaE56qigXw==", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.10.1", - "@azure/identity": "^4.13.1", - "@azure/keyvault-keys": "^4.10.2", - "@js-joda/core": "^6.0.1", - "@types/node": ">=22", - "bl": "^6.1.4", - "iconv-lite": "^0.7.0", + "version": "16.7.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-16.7.1.tgz", + "integrity": "sha512-NmedZS0NJiTv3CoYnf1FtjxIDUgVYzEmavrc8q2WHRb+lP4deI9BpQfmNnBZZaWusDbP5FVFZCcvzb3xOlNVlQ==", + "dependencies": { + "@azure/identity": "^3.4.1", + "@azure/keyvault-keys": "^4.4.0", + "@js-joda/core": "^5.5.3", + "bl": "^6.0.3", + "es-aggregate-error": "^1.0.9", + "iconv-lite": "^0.6.3", "js-md4": "^0.3.2", + "jsbi": "^4.3.0", "native-duplexpair": "^1.0.0", - "sprintf-js": "^1.1.3" + "node-abort-controller": "^3.1.1", + "sprintf-js": "^1.1.2" }, "engines": { - "node": ">=22" + "node": ">=16" } }, "node_modules/tedious/node_modules/iconv-lite": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", - "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", - "license": "MIT", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/toidentifier": { @@ -1615,8 +2563,7 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/type-is": { "version": "1.6.18", @@ -1630,11 +2577,97 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undici-types": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", - "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", - "license": "MIT" + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -1652,6 +2685,15 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1660,19 +2702,85 @@ "node": ">= 0.8" } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "license": "MIT", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dependencies": { - "is-wsl": "^3.1.0" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } } } diff --git a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package.json b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package.json index 83449fd23..33e071876 100644 --- a/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package.json +++ b/03-Azure/01-02 Data/03-Talk_to_your_data/labautomation/src/package.json @@ -13,6 +13,6 @@ "dependencies": { "dotenv": "^16.4.5", "express": "^4.19.2", - "mssql": "^12.7.0" + "mssql": "^10.0.2" } }