@rockcarver/frodo-lib 2.0.0-27 → 2.0.0-28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build.zip +0 -0
- package/cjs/ops/ConnectionProfileOps.js +2 -3
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/utils/ExportImportUtils.js +1 -0
- package/cjs/utils/ExportImportUtils.js.map +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js +50 -4
- package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +2 -3
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +2 -1
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/SetupPollyForFrodoLib.js +50 -4
- package/esm/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/mocks/agent_1340600742/export_4211608755/0_A_2106804035/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_a_2643687843/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/export_4211608755/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_a_file_4115838018/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/export_4211608755/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_agent-id_1875961465/am_1076162899/recording.har +41 -41
- package/mocks/agent_1340600742/export_4211608755/0_agent-id_1875961465/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_agent-id_1875961465/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_all-separate_1302576399/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/export_4211608755/0_all-separate_1302576399/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_all-separate_1302576399/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_all_1797740195/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/export_4211608755/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_i_2777908795/am_1076162899/recording.har +41 -41
- package/mocks/agent_1340600742/export_4211608755/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/export_4211608755/0_i_f_3126144190/am_1076162899/recording.har +41 -41
- package/mocks/agent_1340600742/export_4211608755/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/export_4211608755/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_A_2106804035/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-export_2823509578/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_2643687843/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_file_4115838018/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_agent-id_1875961465/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/gateway-export_2823509578/0_agent-id_1875961465/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_agent-id_1875961465/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all-separate_1302576399/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all-separate_1302576399/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all-separate_1302576399/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all_1797740195/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_2777908795/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_f_3126144190/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-export_2823509578/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-list_1965875812/0_890022063/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-list_1965875812/0_890022063/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-list_1965875812/0_890022063/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-list_1965875812/0_l_2828241652/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-list_1965875812/0_l_2828241652/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-list_1965875812/0_l_2828241652/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/gateway-list_1965875812/0_long_276218670/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/gateway-list_1965875812/0_long_276218670/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/gateway-list_1965875812/0_long_276218670/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_A_2106804035/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-export_871692766/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_a_2643687843/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-export_871692766/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_a_file_4115838018/am_1076162899/recording.har +40 -40
- package/mocks/agent_1340600742/java-export_871692766/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_agent-id_1875961465/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/java-export_871692766/0_agent-id_1875961465/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_agent-id_1875961465/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_all-separate_1302576399/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-export_871692766/0_all-separate_1302576399/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_all-separate_1302576399/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_all_1797740195/am_1076162899/recording.har +40 -40
- package/mocks/agent_1340600742/java-export_871692766/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_i_2777908795/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/java-export_871692766/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-export_871692766/0_i_f_3126144190/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/java-export_871692766/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-export_871692766/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-list_188393120/0_890022063/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-list_188393120/0_890022063/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-list_188393120/0_890022063/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-list_188393120/0_l_2828241652/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-list_188393120/0_l_2828241652/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-list_188393120/0_l_2828241652/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/java-list_188393120/0_long_276218670/am_1076162899/recording.har +38 -38
- package/mocks/agent_1340600742/java-list_188393120/0_long_276218670/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/java-list_188393120/0_long_276218670/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/list_217798785/0_890022063/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/list_217798785/0_890022063/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/list_217798785/0_890022063/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/list_217798785/0_l_2828241652/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/list_217798785/0_l_2828241652/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/list_217798785/0_l_2828241652/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/list_217798785/0_long_276218670/am_1076162899/recording.har +64 -64
- package/mocks/agent_1340600742/list_217798785/0_long_276218670/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/list_217798785/0_long_276218670/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_A_2106804035/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-export_2240982210/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_a_2643687843/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-export_2240982210/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_a_file_4115838018/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-export_2240982210/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_agent-id_1875961465/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/web-export_2240982210/0_agent-id_1875961465/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_agent-id_1875961465/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_all-separate_1302576399/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-export_2240982210/0_all-separate_1302576399/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_all-separate_1302576399/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_all_1797740195/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-export_2240982210/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_i_2777908795/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/web-export_2240982210/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-export_2240982210/0_i_f_3126144190/am_1076162899/recording.har +32 -32
- package/mocks/agent_1340600742/web-export_2240982210/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-export_2240982210/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-list_4172195356/0_890022063/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-list_4172195356/0_890022063/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-list_4172195356/0_890022063/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-list_4172195356/0_l_2828241652/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-list_4172195356/0_l_2828241652/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-list_4172195356/0_l_2828241652/openidm_3290118515/recording.har +9 -9
- package/mocks/agent_1340600742/web-list_4172195356/0_long_276218670/am_1076162899/recording.har +36 -36
- package/mocks/agent_1340600742/web-list_4172195356/0_long_276218670/oauth2_393036114/recording.har +10 -10
- package/mocks/agent_1340600742/web-list_4172195356/0_long_276218670/openidm_3290118515/recording.har +9 -9
- package/mocks/app_527074092/export_4211608755/0_A_2106804035/am_1076162899/recording.har +1289 -295
- package/mocks/app_527074092/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +1774 -17
- package/mocks/app_527074092/export_4211608755/0_A_no-deps_f_1969277133/am_1076162899/recording.har +296 -0
- package/mocks/app_527074092/export_4211608755/0_A_no-deps_f_1969277133/oauth2_393036114/recording.har +138 -0
- package/mocks/app_527074092/export_4211608755/0_A_no-deps_f_1969277133/openidm_3290118515/recording.har +1378 -0
- package/mocks/app_527074092/export_4211608755/0_a_2643687843/am_1076162899/recording.har +2159 -164
- package/mocks/app_527074092/export_4211608755/0_a_2643687843/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_a_2643687843/openidm_3290118515/recording.har +686 -17
- package/mocks/app_527074092/export_4211608755/0_a_file_4115838018/am_1076162899/recording.har +2160 -165
- package/mocks/app_527074092/export_4211608755/0_a_file_4115838018/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_a_file_4115838018/openidm_3290118515/recording.har +684 -15
- package/mocks/app_527074092/export_4211608755/0_a_no-deps_f_1567170093/am_1076162899/recording.har +296 -0
- package/mocks/app_527074092/export_4211608755/0_a_no-deps_f_1567170093/oauth2_393036114/recording.har +138 -0
- package/mocks/app_527074092/export_4211608755/0_a_no-deps_f_1567170093/openidm_3290118515/recording.har +290 -0
- package/mocks/app_527074092/export_4211608755/0_all-separate_f_3774887970/am_1076162899/recording.har +3054 -0
- package/mocks/app_527074092/export_4211608755/0_all-separate_f_3774887970/oauth2_393036114/recording.har +138 -0
- package/mocks/app_527074092/export_4211608755/0_all-separate_f_3774887970/openidm_3290118515/recording.har +1907 -0
- package/mocks/app_527074092/export_4211608755/0_all_f_3868128406/am_1076162899/recording.har +3054 -0
- package/mocks/app_527074092/export_4211608755/0_all_f_3868128406/oauth2_393036114/recording.har +138 -0
- package/mocks/app_527074092/export_4211608755/0_all_f_3868128406/openidm_3290118515/recording.har +819 -0
- package/mocks/app_527074092/export_4211608755/0_app-id_4268273935/am_1076162899/recording.har +28 -592
- package/mocks/app_527074092/export_4211608755/0_app-id_4268273935/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_app-id_4268273935/openidm_3290118515/recording.har +555 -17
- package/mocks/app_527074092/export_4211608755/0_i_2777908795/am_1076162899/recording.har +28 -592
- package/mocks/app_527074092/export_4211608755/0_i_2777908795/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_i_2777908795/openidm_3290118515/recording.har +555 -17
- package/mocks/app_527074092/export_4211608755/0_i_f_3126144190/am_1076162899/recording.har +28 -592
- package/mocks/app_527074092/export_4211608755/0_i_f_3126144190/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/export_4211608755/0_i_f_3126144190/openidm_3290118515/recording.har +555 -17
- package/mocks/app_527074092/export_4211608755/0_i_no-deps_f_1411069845/am_1076162899/recording.har +296 -0
- package/mocks/app_527074092/export_4211608755/0_i_no-deps_f_1411069845/oauth2_393036114/recording.har +138 -0
- package/mocks/app_527074092/export_4211608755/0_i_no-deps_f_1411069845/openidm_3290118515/recording.har +290 -0
- package/mocks/app_527074092/list_217798785/0_890022063/am_1076162899/recording.har +28 -172
- package/mocks/app_527074092/list_217798785/0_890022063/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/list_217798785/0_890022063/openidm_3290118515/recording.har +157 -17
- package/mocks/app_527074092/list_217798785/0_l_2828241652/am_1076162899/recording.har +28 -172
- package/mocks/app_527074092/list_217798785/0_l_2828241652/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/list_217798785/0_l_2828241652/openidm_3290118515/recording.har +157 -17
- package/mocks/app_527074092/list_217798785/0_long_276218670/am_1076162899/recording.har +28 -172
- package/mocks/app_527074092/list_217798785/0_long_276218670/oauth2_393036114/recording.har +14 -14
- package/mocks/app_527074092/list_217798785/0_long_276218670/openidm_3290118515/recording.har +157 -17
- package/mocks/authz_674614127/type-export_2624616838/0_A_2106804035/am_1076162899/recording.har +110 -110
- package/mocks/authz_674614127/type-export_2624616838/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_a_file_4115838018/am_1076162899/recording.har +33 -33
- package/mocks/authz_674614127/type-export_2624616838/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_all_1797740195/am_1076162899/recording.har +33 -33
- package/mocks/authz_674614127/type-export_2624616838/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_i_f_3126144190/am_1076162899/recording.har +34 -34
- package/mocks/authz_674614127/type-export_2624616838/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_n_2861796890/am_1076162899/recording.har +33 -33
- package/mocks/authz_674614127/type-export_2624616838/0_n_2861796890/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_n_2861796890/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_type-id_3756868834/am_1076162899/recording.har +34 -34
- package/mocks/authz_674614127/type-export_2624616838/0_type-id_3756868834/oauth2_393036114/recording.har +10 -10
- package/mocks/authz_674614127/type-export_2624616838/0_type-id_3756868834/openidm_3290118515/recording.har +9 -9
- package/mocks/authz_674614127/type-export_2624616838/0_type-name_f_666657597/am_1076162899/recording.har +444 -0
- package/mocks/authz_674614127/type-export_2624616838/0_type-name_f_666657597/oauth2_393036114/recording.har +138 -0
- package/mocks/authz_674614127/type-export_2624616838/0_type-name_f_666657597/openidm_3290118515/recording.har +150 -0
- package/mocks/default_2470140894/recording.har +33 -33
- package/mocks/email_2324124615/template-export_3631781680/0_A_2106804035/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/email_2324124615/template-export_3631781680/0_A_2106804035/openidm_3290118515/recording.har +21 -21
- package/mocks/email_2324124615/template-export_3631781680/0_a_2643687843/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_a_2643687843/oauth2_393036114/recording.har +8 -8
- package/mocks/email_2324124615/template-export_3631781680/0_a_2643687843/openidm_3290118515/recording.har +21 -21
- package/mocks/email_2324124615/template-export_3631781680/0_a_file_4115838018/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/email_2324124615/template-export_3631781680/0_a_file_4115838018/openidm_3290118515/recording.har +21 -21
- package/mocks/email_2324124615/template-export_3631781680/0_i_2777908795/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/email_2324124615/template-export_3631781680/0_i_2777908795/openidm_3290118515/recording.har +22 -22
- package/mocks/email_2324124615/template-export_3631781680/0_i_f_3126144190/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/email_2324124615/template-export_3631781680/0_i_f_3126144190/openidm_3290118515/recording.har +22 -22
- package/mocks/email_2324124615/template-export_3631781680/0_template-id_4260181200/am_1076162899/recording.har +23 -23
- package/mocks/email_2324124615/template-export_3631781680/0_template-id_4260181200/oauth2_393036114/recording.har +10 -10
- package/mocks/email_2324124615/template-export_3631781680/0_template-id_4260181200/openidm_3290118515/recording.har +22 -22
- package/mocks/github_584874290/recording.har +15 -15
- package/mocks/npmjs_1455397529/recording.har +13 -13
- package/mocks/saml_3289136144/export_4211608755/0_A_2106804035/am_1076162899/recording.har +86 -86
- package/mocks/saml_3289136144/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/export_4211608755/0_a_2643687843/am_1076162899/recording.har +59 -59
- package/mocks/saml_3289136144/export_4211608755/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/export_4211608755/0_a_file_4115838018/am_1076162899/recording.har +59 -59
- package/mocks/saml_3289136144/export_4211608755/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/export_4211608755/0_entity-id_2668930943/am_1076162899/recording.har +41 -41
- package/mocks/saml_3289136144/export_4211608755/0_entity-id_2668930943/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_entity-id_2668930943/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/export_4211608755/0_i_2777908795/am_1076162899/recording.har +41 -41
- package/mocks/saml_3289136144/export_4211608755/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/export_4211608755/0_i_f_3126144190/am_1076162899/recording.har +41 -41
- package/mocks/saml_3289136144/export_4211608755/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/saml_3289136144/export_4211608755/0_i_f_3126144190/openidm_3290118515/recording.har +9 -9
- package/mocks/saml_3289136144/metadata-export_2948078437/0_entity-id_f_3411885682/am_1076162899/recording.har +296 -0
- package/mocks/saml_3289136144/metadata-export_2948078437/0_entity-id_f_3411885682/oauth2_393036114/recording.har +138 -0
- package/mocks/saml_3289136144/metadata-export_2948078437/0_entity-id_f_3411885682/openidm_3290118515/recording.har +150 -0
- package/mocks/script_540962730/export_4211608755/0_A_2106804035/am_1076162899/recording.har +2907 -2907
- package/mocks/script_540962730/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/script_540962730/export_4211608755/0_Ax_3923321313/am_1076162899/recording.har +2895 -2895
- package/mocks/script_540962730/export_4211608755/0_Ax_3923321313/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_Ax_3923321313/openidm_3290118515/recording.har +9 -9
- package/mocks/script_540962730/export_4211608755/0_a_file_4115838018/am_1076162899/recording.har +2895 -2895
- package/mocks/script_540962730/export_4211608755/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_a_file_4115838018/openidm_3290118515/recording.har +9 -9
- package/mocks/script_540962730/export_4211608755/0_all_1797740195/am_1076162899/recording.har +2901 -2901
- package/mocks/script_540962730/export_4211608755/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_all_1797740195/openidm_3290118515/recording.har +9 -9
- package/mocks/script_540962730/export_4211608755/0_n_f_4242328059/am_1076162899/recording.har +32 -32
- package/mocks/script_540962730/export_4211608755/0_n_f_4242328059/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_n_f_4242328059/openidm_3290118515/recording.har +9 -9
- package/mocks/script_540962730/export_4211608755/0_script-name_2276253025/am_1076162899/recording.har +32 -32
- package/mocks/script_540962730/export_4211608755/0_script-name_2276253025/oauth2_393036114/recording.har +10 -10
- package/mocks/script_540962730/export_4211608755/0_script-name_2276253025/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_A_2106804035/am_1076162899/recording.har +179 -187
- package/mocks/service_1457512036/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_a_2643687843/am_1076162899/recording.har +168 -168
- package/mocks/service_1457512036/export_4211608755/0_a_2643687843/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_a_2643687843/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_all_file_3124693826/am_1076162899/recording.har +2428 -0
- package/mocks/service_1457512036/export_4211608755/0_all_file_3124693826/oauth2_393036114/recording.har +138 -0
- package/mocks/service_1457512036/export_4211608755/0_all_file_3124693826/openidm_3290118515/recording.har +150 -0
- package/mocks/service_1457512036/export_4211608755/0_gA_3577199932/am_1076162899/recording.har +68 -68
- package/mocks/service_1457512036/export_4211608755/0_gA_3577199932/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_gA_3577199932/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_ga_4114083740/am_1076162899/recording.har +68 -68
- package/mocks/service_1457512036/export_4211608755/0_ga_4114083740/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_ga_4114083740/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_gi_4248304692/am_1076162899/recording.har +41 -41
- package/mocks/service_1457512036/export_4211608755/0_gi_4248304692/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_gi_4248304692/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_global_all_f_963945950/am_1076162899/recording.har +992 -0
- package/mocks/service_1457512036/export_4211608755/0_global_all_f_963945950/oauth2_393036114/recording.har +138 -0
- package/mocks/service_1457512036/export_4211608755/0_global_all_f_963945950/openidm_3290118515/recording.har +150 -0
- package/mocks/service_1457512036/export_4211608755/0_global_service-id_f_119036562/am_1076162899/recording.har +592 -0
- package/mocks/service_1457512036/export_4211608755/0_global_service-id_f_119036562/oauth2_393036114/recording.har +138 -0
- package/mocks/service_1457512036/export_4211608755/0_global_service-id_f_119036562/openidm_3290118515/recording.har +150 -0
- package/mocks/service_1457512036/export_4211608755/0_i_2777908795/am_1076162899/recording.har +41 -41
- package/mocks/service_1457512036/export_4211608755/0_i_2777908795/oauth2_393036114/recording.har +10 -10
- package/mocks/service_1457512036/export_4211608755/0_i_2777908795/openidm_3290118515/recording.har +9 -9
- package/mocks/service_1457512036/export_4211608755/0_service-id_f_3200391018/am_1076162899/recording.har +592 -0
- package/mocks/service_1457512036/export_4211608755/0_service-id_f_3200391018/oauth2_393036114/recording.har +138 -0
- package/mocks/service_1457512036/export_4211608755/0_service-id_f_3200391018/openidm_3290118515/recording.har +150 -0
- package/mocks/theme_2834462706/export_4211608755/0_A_2106804035/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_A_2106804035/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_A_2106804035/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_a_file_4115838018/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_a_file_4115838018/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_a_file_4115838018/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_all_1797740195/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_all_1797740195/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_all_1797740195/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_i_f_3126144190/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_i_f_3126144190/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_i_f_3126144190/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_n_f_4242328059/am_1076162899/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_n_f_4242328059/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_n_f_4242328059/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_theme-id_1554519189/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_theme-id_1554519189/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_theme-id_1554519189/openidm_3290118515/recording.har +21 -21
- package/mocks/theme_2834462706/export_4211608755/0_theme-name_1325589195/am_1076162899/recording.har +23 -23
- package/mocks/theme_2834462706/export_4211608755/0_theme-name_1325589195/oauth2_393036114/recording.har +10 -10
- package/mocks/theme_2834462706/export_4211608755/0_theme-name_1325589195/openidm_3290118515/recording.har +21 -21
- package/package.json +1 -1
- package/types/ops/ConnectionProfileOps.d.ts +1 -2
- package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
- package/types/utils/ExportImportUtils.d.ts.map +1 -1
- package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -1
package/build.zip
CHANGED
|
Binary file
|
|
@@ -374,7 +374,6 @@ function _saveConnectionProfile() {
|
|
|
374
374
|
_saveConnectionProfile = _asyncToGenerator(function* (_ref6) {
|
|
375
375
|
var {
|
|
376
376
|
host,
|
|
377
|
-
offline = false,
|
|
378
377
|
state
|
|
379
378
|
} = _ref6;
|
|
380
379
|
(0, _Console.debugMessage)({
|
|
@@ -461,7 +460,7 @@ function _saveConnectionProfile() {
|
|
|
461
460
|
// service account
|
|
462
461
|
if (state.getServiceAccountId()) {
|
|
463
462
|
profile.svcacctId = state.getServiceAccountId();
|
|
464
|
-
if (
|
|
463
|
+
if (state.getBearerToken()) {
|
|
465
464
|
profile.svcacctName = (yield (0, _ServiceAccountOps.getServiceAccount)({
|
|
466
465
|
serviceAccountId: state.getServiceAccountId(),
|
|
467
466
|
state
|
|
@@ -470,7 +469,7 @@ function _saveConnectionProfile() {
|
|
|
470
469
|
}
|
|
471
470
|
if (state.getServiceAccountJwk()) profile.encodedSvcacctJwk = yield dataProtection.encrypt(state.getServiceAccountJwk());
|
|
472
471
|
// update existing service account profile
|
|
473
|
-
if (
|
|
472
|
+
if (state.getBearerToken() && profile.svcacctId && !profile.svcacctName) {
|
|
474
473
|
profile.svcacctName = (yield (0, _ServiceAccountOps.getServiceAccount)({
|
|
475
474
|
serviceAccountId: profile.svcacctId,
|
|
476
475
|
state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","_Constants","_Console","_DataProtection","_ExportImportUtils","_MiscUtils","_ServiceAccountOps","_JoseOps","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","_default","state","getConnectionProfilesPath","findConnectionProfiles","connectionProfiles","host","initConnectionProfiles","getConnectionProfileByHost","getConnectionProfile","saveConnectionProfile","deleteConnectionProfile","addNewServiceAccount","exports","fileOptions","indentation","legacyProfileFilename","newProfileFilename","_ref","process","env","Constants","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","_ref2","profiles","tenant","debugMessage","message","includes","foundProfile","migrateFromLegacyProfile","legacyPath","newPath","fs","existsSync","writeFileSync","JSON","stringify","copyFileSync","renameSync","_x","_initConnectionProfiles","_ref3","dataProtection","DataProtection","pathToMasterKey","getMasterKeyPath","filename","folderName","path","dirname","mkdirSync","recursive","data","readFileSync","connectionsData","parse","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","_x2","_getConnectionProfileByHost","_ref4","printMessage","type","p","username","password","decrypt","logApiKey","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctName","svcacctId","svcacctJwk","_x3","_getConnectionProfile","_ref5","getHost","_x4","_saveConnectionProfile","_ref6","offline","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","serviceAccountId","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","includeMeta","_ref7","stat","code","_x5","_addNewServiceAccount","_ref8","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","accountStatus","scopes","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport Constants from '../shared/Constants';\nimport { State } from '../shared/State';\nimport { debugMessage, printMessage, verboseMessage } from '../utils/Console';\nimport DataProtection from '../utils/DataProtection';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport { isValidUrl } from '../utils/MiscUtils';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\n\nexport type ConnectionProfile = {\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string;\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[];\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n initConnectionProfiles(): Promise<void>;\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n getConnectionProfileByHost(host: string): Promise<ConnectionProfileInterface>;\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n getConnectionProfile(): Promise<ConnectionProfileInterface>;\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n saveConnectionProfile(host: string): Promise<boolean>;\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void;\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n addNewServiceAccount(): Promise<IdObjectSkeletonInterface>;\n};\n\nexport default (state: State): ConnectionProfile => {\n return {\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string {\n return getConnectionProfilesPath({ state });\n },\n\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[] {\n return findConnectionProfiles({\n connectionProfiles,\n host,\n state,\n });\n },\n\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n async initConnectionProfiles() {\n initConnectionProfiles({ state });\n },\n\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n async getConnectionProfileByHost(\n host: string\n ): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host, state });\n },\n\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n async getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfile({ state });\n },\n\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n async saveConnectionProfile(host: string): Promise<boolean> {\n return saveConnectionProfile({ host, state });\n },\n\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void {\n deleteConnectionProfile({ host, state });\n },\n\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n return addNewServiceAccount({ state });\n },\n };\n};\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @param {State} state library state\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath({ state }: { state: State }): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[Constants.FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @param {State} state library state\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles({\n connectionProfiles,\n host,\n state,\n}: {\n connectionProfiles: ConnectionsFileInterface;\n host: string;\n state: State;\n}): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage({\n message: `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`,\n state,\n });\n if (tenant.includes(host)) {\n debugMessage({\n message: `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`,\n state,\n });\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n * @param {State} state library state\n */\nexport async function initConnectionProfiles({ state }: { state: State }) {\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath({ state });\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await dataProtection.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret =\n await dataProtection.encrypt(connectionsData[conn]['logApiSecret']);\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await dataProtection.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @param {State} state library state\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<ConnectionProfileInterface> {\n try {\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n const filename = getConnectionProfilesPath({ state });\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n state,\n });\n if (profiles.length == 0) {\n printMessage({\n message: `Profile for ${host} not found. Please specify credentials on command line`,\n type: 'error',\n state,\n });\n return null;\n }\n if (profiles.length > 1) {\n printMessage({\n message: `Multiple matching profiles found.`,\n type: 'error',\n state,\n });\n profiles.forEach((p) => {\n printMessage({ message: `- ${p.tenant}`, type: 'error', state });\n });\n printMessage({\n message: `Please specify a unique sub-string`,\n type: 'error',\n state,\n });\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await dataProtection.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await dataProtection.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await dataProtection.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage({\n message: `Can not read saved connection info, please specify credentials on command line: ${e}`,\n type: 'error',\n state,\n });\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile({\n state,\n}: {\n state: State;\n}): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host: state.getHost(), state });\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile({\n host,\n offline = false,\n state,\n}: {\n host: string;\n offline?: boolean;\n state: State;\n}): Promise<boolean> {\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: start`,\n state,\n });\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n const filename = getConnectionProfilesPath({ state });\n debugMessage({ message: `Saving connection profile in ${filename}`, state });\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles({\n connectionProfiles: profiles,\n host,\n state,\n });\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage({ message: `Existing profile: ${profile.tenant}`, state });\n debugMessage({ message: profile, state });\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage({ message: `New profile: ${host}`, state });\n } else {\n printMessage({\n message: `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n type: 'error',\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: end [false]`,\n state,\n });\n return false;\n }\n }\n } catch (error) {\n debugMessage({\n message: `New profiles file ${filename} with new profile ${host}`,\n state,\n });\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await dataProtection.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await dataProtection.encrypt(\n state.getLogApiSecret()\n );\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n if (!offline) {\n profile.svcacctName = (\n await getServiceAccount({\n serviceAccountId: state.getServiceAccountId(),\n state,\n })\n ).name;\n }\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await dataProtection.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (!offline && profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (\n await getServiceAccount({ serviceAccountId: profile.svcacctId, state })\n ).name;\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: added missing service account name`,\n state,\n });\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage({\n message:\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n type: 'info',\n state,\n });\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage({\n message: 'Advanced setting: Authentication Header Overrides: ',\n type: 'info',\n state,\n });\n printMessage({\n message: state.getAuthenticationHeaderOverrides(),\n type: 'info',\n state,\n });\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile({\n data: orderedProfiles,\n filename,\n includeMeta: false,\n state,\n });\n verboseMessage({\n message: `Saved connection profile ${state.getHost()} in ${filename}`,\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: end [true]`,\n state,\n });\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}) {\n const filename = getConnectionProfilesPath({ state });\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n state,\n });\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage({\n message: `Deleted connection profile ${profiles[0].tenant}`,\n state,\n });\n } else {\n if (profiles.length > 1) {\n printMessage({\n message: `Multiple matching profiles found.`,\n type: 'error',\n state,\n });\n profiles.forEach((p) => {\n printMessage({ message: `- ${p.tenant}`, type: 'error', state });\n });\n printMessage({\n message: `Please specify a unique sub-string`,\n type: 'error',\n state,\n });\n return null;\n } else {\n printMessage({\n message: `No connection profile ${host} found`,\n state,\n });\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage({\n message: `Connection profile file ${filename} not found`,\n state,\n });\n } else {\n printMessage({\n message: `Error in deleting connection profile: ${err.code}`,\n type: 'error',\n state,\n });\n }\n });\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount({\n state,\n}: {\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: start`,\n state,\n });\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: name=${name}...`,\n state,\n });\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount({\n name,\n description,\n accountStatus: 'Active',\n scopes: scope,\n jwks,\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`,\n state,\n });\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: end`,\n state,\n });\n return sa;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["_fs","_interopRequireDefault","require","_os","_path","_Constants","_Console","_DataProtection","_ExportImportUtils","_MiscUtils","_ServiceAccountOps","_JoseOps","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","_default","state","getConnectionProfilesPath","findConnectionProfiles","connectionProfiles","host","initConnectionProfiles","getConnectionProfileByHost","getConnectionProfile","saveConnectionProfile","deleteConnectionProfile","addNewServiceAccount","exports","fileOptions","indentation","legacyProfileFilename","newProfileFilename","_ref","process","env","Constants","FRODO_CONNECTION_PROFILES_PATH_KEY","concat","os","homedir","_ref2","profiles","tenant","debugMessage","message","includes","foundProfile","migrateFromLegacyProfile","legacyPath","newPath","fs","existsSync","writeFileSync","JSON","stringify","copyFileSync","renameSync","_x","_initConnectionProfiles","_ref3","dataProtection","DataProtection","pathToMasterKey","getMasterKeyPath","filename","folderName","path","dirname","mkdirSync","recursive","data","readFileSync","connectionsData","parse","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","_x2","_getConnectionProfileByHost","_ref4","printMessage","type","p","username","password","decrypt","logApiKey","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctName","svcacctId","svcacctJwk","_x3","_getConnectionProfile","_ref5","getHost","_x4","_saveConnectionProfile","_ref6","profile","statSync","found","setHost","verboseMessage","isValidUrl","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getBearerToken","getServiceAccount","serviceAccountId","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","saveJsonToFile","includeMeta","_ref7","stat","code","_x5","_addNewServiceAccount","_ref8","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","accountStatus","scopes","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["../../src/ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { IdObjectSkeletonInterface } from '../api/ApiTypes';\nimport Constants from '../shared/Constants';\nimport { State } from '../shared/State';\nimport { debugMessage, printMessage, verboseMessage } from '../utils/Console';\nimport DataProtection from '../utils/DataProtection';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport { isValidUrl } from '../utils/MiscUtils';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\n\nexport type ConnectionProfile = {\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string;\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[];\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n initConnectionProfiles(): Promise<void>;\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n getConnectionProfileByHost(host: string): Promise<ConnectionProfileInterface>;\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n getConnectionProfile(): Promise<ConnectionProfileInterface>;\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n saveConnectionProfile(host: string): Promise<boolean>;\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void;\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n addNewServiceAccount(): Promise<IdObjectSkeletonInterface>;\n};\n\nexport default (state: State): ConnectionProfile => {\n return {\n /**\n * Get connection profiles file name\n * @returns {string} connection profiles file name\n */\n getConnectionProfilesPath(): string {\n return getConnectionProfilesPath({ state });\n },\n\n /**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\n findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n ): SecureConnectionProfileInterface[] {\n return findConnectionProfiles({\n connectionProfiles,\n host,\n state,\n });\n },\n\n /**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\n async initConnectionProfiles() {\n initConnectionProfiles({ state });\n },\n\n /**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\n async getConnectionProfileByHost(\n host: string\n ): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host, state });\n },\n\n /**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\n async getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfile({ state });\n },\n\n /**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\n async saveConnectionProfile(host: string): Promise<boolean> {\n return saveConnectionProfile({ host, state });\n },\n\n /**\n * Delete connection profile\n * @param {string} host host tenant host url or unique substring\n */\n deleteConnectionProfile(host: string): void {\n deleteConnectionProfile({ host, state });\n },\n\n /**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\n async addNewServiceAccount(): Promise<IdObjectSkeletonInterface> {\n return addNewServiceAccount({ state });\n },\n };\n};\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @param {State} state library state\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath({ state }: { state: State }): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[Constants.FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @param {State} state library state\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles({\n connectionProfiles,\n host,\n state,\n}: {\n connectionProfiles: ConnectionsFileInterface;\n host: string;\n state: State;\n}): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n debugMessage({\n message: `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`,\n state,\n });\n if (tenant.includes(host)) {\n debugMessage({\n message: `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`,\n state,\n });\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n * @param {State} state library state\n */\nexport async function initConnectionProfiles({ state }: { state: State }) {\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath({ state });\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await dataProtection.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret =\n await dataProtection.encrypt(connectionsData[conn]['logApiSecret']);\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await dataProtection.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @param {State} state library state\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<ConnectionProfileInterface> {\n try {\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n const filename = getConnectionProfilesPath({ state });\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n state,\n });\n if (profiles.length == 0) {\n printMessage({\n message: `Profile for ${host} not found. Please specify credentials on command line`,\n type: 'error',\n state,\n });\n return null;\n }\n if (profiles.length > 1) {\n printMessage({\n message: `Multiple matching profiles found.`,\n type: 'error',\n state,\n });\n profiles.forEach((p) => {\n printMessage({ message: `- ${p.tenant}`, type: 'error', state });\n });\n printMessage({\n message: `Please specify a unique sub-string`,\n type: 'error',\n state,\n });\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await dataProtection.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await dataProtection.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await dataProtection.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage({\n message: `Can not read saved connection info, please specify credentials on command line: ${e}`,\n type: 'error',\n state,\n });\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile({\n state,\n}: {\n state: State;\n}): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost({ host: state.getHost(), state });\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}): Promise<boolean> {\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: start`,\n state,\n });\n const dataProtection = new DataProtection({\n pathToMasterKey: state.getMasterKeyPath(),\n state,\n });\n const filename = getConnectionProfilesPath({ state });\n debugMessage({ message: `Saving connection profile in ${filename}`, state });\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles({\n connectionProfiles: profiles,\n host,\n state,\n });\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage({ message: `Existing profile: ${profile.tenant}`, state });\n debugMessage({ message: profile, state });\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage({ message: `New profile: ${host}`, state });\n } else {\n printMessage({\n message: `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n type: 'error',\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: end [false]`,\n state,\n });\n return false;\n }\n }\n } catch (error) {\n debugMessage({\n message: `New profiles file ${filename} with new profile ${host}`,\n state,\n });\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await dataProtection.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await dataProtection.encrypt(\n state.getLogApiSecret()\n );\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n if (state.getBearerToken()) {\n profile.svcacctName = (\n await getServiceAccount({\n serviceAccountId: state.getServiceAccountId(),\n state,\n })\n ).name;\n }\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await dataProtection.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (state.getBearerToken() && profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (\n await getServiceAccount({ serviceAccountId: profile.svcacctId, state })\n ).name;\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: added missing service account name`,\n state,\n });\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage({\n message:\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n type: 'info',\n state,\n });\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage({\n message: 'Advanced setting: Authentication Header Overrides: ',\n type: 'info',\n state,\n });\n printMessage({\n message: state.getAuthenticationHeaderOverrides(),\n type: 'info',\n state,\n });\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile({\n data: orderedProfiles,\n filename,\n includeMeta: false,\n state,\n });\n verboseMessage({\n message: `Saved connection profile ${state.getHost()} in ${filename}`,\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.saveConnectionProfile: end [true]`,\n state,\n });\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile({\n host,\n state,\n}: {\n host: string;\n state: State;\n}) {\n const filename = getConnectionProfilesPath({ state });\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles({\n connectionProfiles: connectionsData,\n host,\n state,\n });\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage({\n message: `Deleted connection profile ${profiles[0].tenant}`,\n state,\n });\n } else {\n if (profiles.length > 1) {\n printMessage({\n message: `Multiple matching profiles found.`,\n type: 'error',\n state,\n });\n profiles.forEach((p) => {\n printMessage({ message: `- ${p.tenant}`, type: 'error', state });\n });\n printMessage({\n message: `Please specify a unique sub-string`,\n type: 'error',\n state,\n });\n return null;\n } else {\n printMessage({\n message: `No connection profile ${host} found`,\n state,\n });\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage({\n message: `Connection profile file ${filename} not found`,\n state,\n });\n } else {\n printMessage({\n message: `Error in deleting connection profile: ${err.code}`,\n type: 'error',\n state,\n });\n }\n });\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<IdObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount({\n state,\n}: {\n state: State;\n}): Promise<IdObjectSkeletonInterface> {\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: start`,\n state,\n });\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: name=${name}...`,\n state,\n });\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount({\n name,\n description,\n accountStatus: 'Active',\n scopes: scope,\n jwks,\n state,\n });\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`,\n state,\n });\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage({\n message: `ConnectionProfileOps.addNewServiceAccount: end`,\n state,\n });\n return sa;\n}\n"],"mappings":"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"}
|
|
@@ -250,6 +250,7 @@ function saveJsonToFile(_ref5) {
|
|
|
250
250
|
if (includeMeta) exportData['meta'] = getMetadata({
|
|
251
251
|
state
|
|
252
252
|
});
|
|
253
|
+
(0, _JsonUtils.deleteDeepByKey)(exportData, '_rev');
|
|
253
254
|
try {
|
|
254
255
|
_fs.default.writeFileSync(filename, (0, _JsonUtils.stringify)(exportData));
|
|
255
256
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportImportUtils.js","names":["_fs","_interopRequireDefault","require","_promises","_path","_replaceall","_slugify","_Constants","_Base64Utils","_Console","_JsonUtils","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_default","state","getMetadata","titleCase","input","getRealmString","convertBase64TextToArray","b64text","convertBase64UrlTextToArray","b64UTF8Text","convertTextArrayToBase64","textArray","convertTextArrayToBase64Url","validateImport","metadata","getTypedFilename","name","type","suffix","length","getWorkingDirectory","saveToFile","data","identifier","filename","saveJsonToFile","includeMeta","appendTextToFile","findFilesByName","fileName","fast","path","readFilesRecursive","directory","substituteEnvParams","reader","unSubstituteEnvParams","exports","_ref","origin","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","Date","toISOString","exportTool","Constants","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","str","toString","splitStr","toLowerCase","split","i","charAt","toUpperCase","slice","join","_ref2","realm","getRealm","reduce","result","item","concat","arrayOut","plainText","decode","replace","decodeBase64Url","joinedText","b64encodedScript","encode","encodeBase64Url","slug","slugify","_ref3","wd","getDirectory","fs","existsSync","debugMessage","message","mkdirSync","recursive","_ref4","exportData","Array","isArray","forEach","element","writeFile","stringify","printMessage","_ref5","writeFileSync","appendFileSync","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","_x","_readFilesRecursive","items","readdir","filePathsNested","all","_ref6","entity","lstat","_x2","flat","each","replaceall"],"sources":["../../src/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { Reader } from 'properties-reader';\nimport replaceall from 'replaceall';\nimport slugify from 'slugify';\n\nimport { ExportMetaData } from '../ops/OpsTypes';\nimport Constants from '../shared/Constants';\nimport { State } from '../shared/State';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\nimport { stringify } from './JsonUtils';\n\nexport type ExportImport = {\n getMetadata(): ExportMetaData;\n titleCase(input: string): string;\n getRealmString(): string;\n convertBase64TextToArray(b64text: string): any[];\n convertBase64UrlTextToArray(b64UTF8Text: string): any[];\n convertTextArrayToBase64(textArray: string[]): string;\n convertTextArrayToBase64Url(textArray: string[]): any;\n validateImport(metadata: any): boolean;\n getTypedFilename(name: string, type: string, suffix?: string): string;\n getWorkingDirectory(): string;\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ): void;\n /**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta?: boolean\n ): boolean;\n /**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\n appendTextToFile(data: string, filename: string): void;\n /**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\n findFilesByName(fileName: string, fast?: boolean, path?: string): string[];\n /**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\n readFilesRecursive(directory: string): Promise<string[]>;\n\n substituteEnvParams(input: string, reader: Reader): string;\n\n unSubstituteEnvParams(input: string, reader: Reader): string;\n};\n\nexport default (state: State): ExportImport => {\n return {\n getMetadata(): ExportMetaData {\n return getMetadata({ state });\n },\n titleCase(input: string) {\n return titleCase(input);\n },\n getRealmString() {\n return getRealmString({ state });\n },\n convertBase64TextToArray(b64text: string) {\n return convertBase64TextToArray(b64text);\n },\n convertBase64UrlTextToArray(b64UTF8Text: string) {\n return convertBase64UrlTextToArray(b64UTF8Text);\n },\n convertTextArrayToBase64(textArray: string[]) {\n return convertTextArrayToBase64(textArray);\n },\n convertTextArrayToBase64Url(textArray: string[]) {\n return convertTextArrayToBase64Url(textArray);\n },\n validateImport(metadata): boolean {\n return validateImport(metadata);\n },\n getTypedFilename(name: string, type: string, suffix = 'json') {\n return getTypedFilename(name, type, suffix);\n },\n getWorkingDirectory() {\n return getWorkingDirectory({ state });\n },\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ) {\n return saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n });\n },\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta = true\n ): boolean {\n return saveJsonToFile({ data, filename, includeMeta, state });\n },\n appendTextToFile(data: string, filename: string) {\n return appendTextToFile(data, filename);\n },\n findFilesByName(fileName: string, fast = true, path = './'): string[] {\n return findFilesByName(fileName, fast, path);\n },\n async readFilesRecursive(directory: string): Promise<string[]> {\n return readFilesRecursive(directory);\n },\n substituteEnvParams(input: string, reader: Reader): string {\n return substituteEnvParams(input, reader);\n },\n unSubstituteEnvParams(input: string, reader: Reader): string {\n return unSubstituteEnvParams(input, reader);\n },\n };\n};\n\nexport function getMetadata({ state }: { state: State }): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: new Date().toISOString(),\n exportTool: Constants.FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input: string) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString({ state }: { state: State }) {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text: string) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text: string) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory({ state }: { state: State }) {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage({\n message: `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`,\n state,\n });\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n}: {\n type: string;\n data: object;\n identifier: string;\n filename: string;\n state: State;\n}) {\n const exportData = {};\n exportData['meta'] = getMetadata({ state });\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, stringify(exportData), (err) => {\n if (err) {\n return printMessage({\n message: `ERROR - can't save ${type} to file`,\n state,\n type: 'error',\n });\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {any} data data object\n * @param {string} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile({\n data,\n filename,\n includeMeta = true,\n state,\n}: {\n data: object;\n filename: string;\n includeMeta?: boolean;\n state: State;\n}): boolean {\n const exportData = data;\n if (includeMeta) exportData['meta'] = getMetadata({ state });\n try {\n fs.writeFileSync(filename, stringify(exportData));\n return true;\n } catch (err) {\n printMessage({\n message: `ERROR - can't save ${filename}`,\n type: 'error',\n state,\n });\n return false;\n }\n}\n\n/**\n * Append text data to file\n * @param {string} data text data\n * @param {string} filename file name\n */\nexport function appendTextToFile(data: string, filename: string) {\n fs.appendFileSync(filename, data);\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n\nexport function substituteEnvParams(input: string, reader: Reader): string {\n reader.each((key, value) => {\n input = replaceall(value, `\\${${key}}`, input);\n });\n return input;\n}\n\nexport function unSubstituteEnvParams(input: string, reader: Reader): string {\n reader.each((key, value) => {\n input = replaceall(`\\${${key}}`, value, input);\n });\n return input;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExportImportUtils.js","names":["_fs","_interopRequireDefault","require","_promises","_path","_replaceall","_slugify","_Constants","_Base64Utils","_Console","_JsonUtils","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_default","state","getMetadata","titleCase","input","getRealmString","convertBase64TextToArray","b64text","convertBase64UrlTextToArray","b64UTF8Text","convertTextArrayToBase64","textArray","convertTextArrayToBase64Url","validateImport","metadata","getTypedFilename","name","type","suffix","length","getWorkingDirectory","saveToFile","data","identifier","filename","saveJsonToFile","includeMeta","appendTextToFile","findFilesByName","fileName","fast","path","readFilesRecursive","directory","substituteEnvParams","reader","unSubstituteEnvParams","exports","_ref","origin","getHost","originAmVersion","getAmVersion","exportedBy","getUsername","exportDate","Date","toISOString","exportTool","Constants","FRODO_METADATA_ID","exportToolVersion","getFrodoVersion","str","toString","splitStr","toLowerCase","split","i","charAt","toUpperCase","slice","join","_ref2","realm","getRealm","reduce","result","item","concat","arrayOut","plainText","decode","replace","decodeBase64Url","joinedText","b64encodedScript","encode","encodeBase64Url","slug","slugify","_ref3","wd","getDirectory","fs","existsSync","debugMessage","message","mkdirSync","recursive","_ref4","exportData","Array","isArray","forEach","element","writeFile","stringify","printMessage","_ref5","deleteDeepByKey","writeFileSync","appendFileSync","entries","readdirSync","encoding","withFileTypes","files","filter","entry","isDirectory","file","map","folders","folder","push","_x","_readFilesRecursive","items","readdir","filePathsNested","all","_ref6","entity","lstat","_x2","flat","each","replaceall"],"sources":["../../src/utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport { lstat, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { Reader } from 'properties-reader';\nimport replaceall from 'replaceall';\nimport slugify from 'slugify';\n\nimport { ExportMetaData } from '../ops/OpsTypes';\nimport Constants from '../shared/Constants';\nimport { State } from '../shared/State';\nimport {\n decode,\n decodeBase64Url,\n encode,\n encodeBase64Url,\n} from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\nimport { deleteDeepByKey, stringify } from './JsonUtils';\n\nexport type ExportImport = {\n getMetadata(): ExportMetaData;\n titleCase(input: string): string;\n getRealmString(): string;\n convertBase64TextToArray(b64text: string): any[];\n convertBase64UrlTextToArray(b64UTF8Text: string): any[];\n convertTextArrayToBase64(textArray: string[]): string;\n convertTextArrayToBase64Url(textArray: string[]): any;\n validateImport(metadata: any): boolean;\n getTypedFilename(name: string, type: string, suffix?: string): string;\n getWorkingDirectory(): string;\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ): void;\n /**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n * @return {boolean} true if successful, false otherwise\n */\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta?: boolean\n ): boolean;\n /**\n * Append text data to file\n * @param {String} data text data\n * @param {String} filename file name\n */\n appendTextToFile(data: string, filename: string): void;\n /**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\n findFilesByName(fileName: string, fast?: boolean, path?: string): string[];\n /**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\n readFilesRecursive(directory: string): Promise<string[]>;\n\n substituteEnvParams(input: string, reader: Reader): string;\n\n unSubstituteEnvParams(input: string, reader: Reader): string;\n};\n\nexport default (state: State): ExportImport => {\n return {\n getMetadata(): ExportMetaData {\n return getMetadata({ state });\n },\n titleCase(input: string) {\n return titleCase(input);\n },\n getRealmString() {\n return getRealmString({ state });\n },\n convertBase64TextToArray(b64text: string) {\n return convertBase64TextToArray(b64text);\n },\n convertBase64UrlTextToArray(b64UTF8Text: string) {\n return convertBase64UrlTextToArray(b64UTF8Text);\n },\n convertTextArrayToBase64(textArray: string[]) {\n return convertTextArrayToBase64(textArray);\n },\n convertTextArrayToBase64Url(textArray: string[]) {\n return convertTextArrayToBase64Url(textArray);\n },\n validateImport(metadata): boolean {\n return validateImport(metadata);\n },\n getTypedFilename(name: string, type: string, suffix = 'json') {\n return getTypedFilename(name, type, suffix);\n },\n getWorkingDirectory() {\n return getWorkingDirectory({ state });\n },\n saveToFile(\n type: string,\n data: object,\n identifier: string,\n filename: string\n ) {\n return saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n });\n },\n saveJsonToFile(\n data: object,\n filename: string,\n includeMeta = true\n ): boolean {\n return saveJsonToFile({ data, filename, includeMeta, state });\n },\n appendTextToFile(data: string, filename: string) {\n return appendTextToFile(data, filename);\n },\n findFilesByName(fileName: string, fast = true, path = './'): string[] {\n return findFilesByName(fileName, fast, path);\n },\n async readFilesRecursive(directory: string): Promise<string[]> {\n return readFilesRecursive(directory);\n },\n substituteEnvParams(input: string, reader: Reader): string {\n return substituteEnvParams(input, reader);\n },\n unSubstituteEnvParams(input: string, reader: Reader): string {\n return unSubstituteEnvParams(input, reader);\n },\n };\n};\n\nexport function getMetadata({ state }: { state: State }): ExportMetaData {\n const metadata: ExportMetaData = {\n origin: state.getHost(),\n originAmVersion: state.getAmVersion(),\n exportedBy: state.getUsername(),\n exportDate: new Date().toISOString(),\n exportTool: Constants.FRODO_METADATA_ID,\n exportToolVersion: state.getFrodoVersion(),\n };\n return metadata;\n}\n\n/*\n * Output str in title case\n *\n * e.g.: 'ALL UPPERCASE AND all lowercase' = 'All Uppercase And All Lowercase'\n */\nexport function titleCase(input: string) {\n const str = input.toString();\n const splitStr = str.toLowerCase().split(' ');\n for (let i = 0; i < splitStr.length; i += 1) {\n splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].slice(1);\n }\n return splitStr.join(' ');\n}\n\nexport function getRealmString({ state }: { state: State }) {\n const realm = state.getRealm();\n return realm\n .split('/')\n .reduce((result, item) => `${result}${titleCase(item)}`, '');\n}\n\nexport function convertBase64TextToArray(b64text: string) {\n let arrayOut = [];\n let plainText = decode(b64text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertBase64UrlTextToArray(b64UTF8Text: string) {\n let arrayOut = [];\n let plainText = decodeBase64Url(b64UTF8Text);\n plainText = plainText.replace(/\\t/g, ' ');\n arrayOut = plainText.split('\\n');\n return arrayOut;\n}\n\nexport function convertTextArrayToBase64(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encode(joinedText);\n return b64encodedScript;\n}\n\nexport function convertTextArrayToBase64Url(textArray: string[]) {\n const joinedText = textArray.join('\\n');\n const b64encodedScript = encodeBase64Url(joinedText);\n return b64encodedScript;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function validateImport(metadata): boolean {\n return metadata || true;\n}\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\nexport function getWorkingDirectory({ state }: { state: State }) {\n let wd = '.';\n if (state.getDirectory()) {\n wd = state.getDirectory().replace(/\\/$/, '');\n // create directory if it doesn't exist\n if (!fs.existsSync(wd)) {\n debugMessage({\n message: `ExportImportUtils.getWorkingDirectory: creating directory '${wd}'`,\n state,\n });\n fs.mkdirSync(wd, { recursive: true });\n }\n }\n return wd;\n}\n\nexport function saveToFile({\n type,\n data,\n identifier,\n filename,\n state,\n}: {\n type: string;\n data: object;\n identifier: string;\n filename: string;\n state: State;\n}) {\n const exportData = {};\n exportData['meta'] = getMetadata({ state });\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, stringify(exportData), (err) => {\n if (err) {\n return printMessage({\n message: `ERROR - can't save ${type} to file`,\n state,\n type: 'error',\n });\n }\n return '';\n });\n}\n\n/**\n * Save JSON object to file\n * @param {any} data data object\n * @param {string} filename file name\n * @return {boolean} true if successful, false otherwise\n */\nexport function saveJsonToFile({\n data,\n filename,\n includeMeta = true,\n state,\n}: {\n data: object;\n filename: string;\n includeMeta?: boolean;\n state: State;\n}): boolean {\n const exportData = data;\n if (includeMeta) exportData['meta'] = getMetadata({ state });\n deleteDeepByKey(exportData, '_rev');\n try {\n fs.writeFileSync(filename, stringify(exportData));\n return true;\n } catch (err) {\n printMessage({\n message: `ERROR - can't save ${filename}`,\n type: 'error',\n state,\n });\n return false;\n }\n}\n\n/**\n * Append text data to file\n * @param {string} data text data\n * @param {string} filename file name\n */\nexport function appendTextToFile(data: string, filename: string) {\n fs.appendFileSync(filename, data);\n}\n\n/**\n * Find files by name\n * @param {string} fileName file name to search for\n * @param {boolean} fast return first result and stop search\n * @param {string} path path to directory where to start the search\n * @returns {string[]} array of found file paths relative to starting directory\n */\nexport function findFilesByName(\n fileName: string,\n fast = true,\n path = './'\n): string[] {\n const entries = fs.readdirSync(path, {\n encoding: 'utf8',\n withFileTypes: true,\n });\n\n // Get files within the current directory and add a path key to the file objects\n const files: string[] = entries\n .filter((entry) => !entry.isDirectory())\n .filter((file) => file.name === fileName)\n // .map((file) => ({ ...file, path: path + file.name }));\n .map((file) => path + file.name);\n\n if (fast && files.length > 0) return files;\n\n // search sub-folders\n const folders = entries.filter((entry) => entry.isDirectory());\n for (const folder of folders)\n files.push(...findFilesByName(fileName, fast, `${path}${folder.name}/`));\n\n return files;\n}\n\n/**\n * find all (nested) files in a directory\n *\n * @param directory directory to search\n * @returns list of files\n */\nexport async function readFilesRecursive(directory: string): Promise<string[]> {\n const items = await readdir(directory);\n\n const filePathsNested = await Promise.all(\n items.map(async (entity) => {\n const path = join(directory, entity);\n const isDirectory = (await lstat(path)).isDirectory();\n\n if (isDirectory) {\n return readFilesRecursive(path);\n }\n return path;\n })\n );\n\n return filePathsNested.flat();\n}\n\nexport function substituteEnvParams(input: string, reader: Reader): string {\n reader.each((key, value) => {\n input = replaceall(value, `\\${${key}}`, input);\n });\n return input;\n}\n\nexport function unSubstituteEnvParams(input: string, reader: Reader): string {\n reader.each((key, value) => {\n input = replaceall(`\\${${key}}`, value, input);\n });\n return input;\n}\n"],"mappings":"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"}
|
|
@@ -10,12 +10,13 @@ var _persisterFs = _interopRequireDefault(require("@pollyjs/persister-fs"));
|
|
|
10
10
|
var _utils = require("@pollyjs/utils");
|
|
11
11
|
var _path = _interopRequireDefault(require("path"));
|
|
12
12
|
var _url = require("url");
|
|
13
|
+
var _Base64Utils = require("./Base64Utils.js");
|
|
13
14
|
var _Console = require("./Console.js");
|
|
14
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
16
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
16
17
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
17
18
|
var _dirname = _path.default.dirname((0, _url.fileURLToPath)(require('url').pathToFileURL(__filename).toString()));
|
|
18
|
-
var FRODO_MOCK_HOSTS = ['https://openam-frodo-dev.forgeblocks.com', 'https://openam-volker-dev.forgeblocks.com'];
|
|
19
|
+
var FRODO_MOCK_HOSTS = ['https://openam-frodo-dev.forgeblocks.com', 'https://openam-volker-dev.forgeblocks.com', 'https://openam-volker-demo.forgeblocks.com'];
|
|
19
20
|
var recordIfMissing = false;
|
|
20
21
|
var mode = _utils.MODES.REPLAY;
|
|
21
22
|
|
|
@@ -31,7 +32,7 @@ if (process.env.FRODO_MOCK) {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
function defaultMatchRequestsBy() {
|
|
34
|
-
return
|
|
35
|
+
return {
|
|
35
36
|
method: true,
|
|
36
37
|
headers: false,
|
|
37
38
|
// do not match headers, because "Authorization" header is sent only at recording time
|
|
@@ -48,11 +49,11 @@ function defaultMatchRequestsBy() {
|
|
|
48
49
|
query: true,
|
|
49
50
|
hash: true
|
|
50
51
|
}
|
|
51
|
-
}
|
|
52
|
+
};
|
|
52
53
|
}
|
|
53
54
|
function authenticationMatchRequestsBy() {
|
|
54
55
|
var matchRequestsBy = defaultMatchRequestsBy();
|
|
55
|
-
matchRequestsBy
|
|
56
|
+
matchRequestsBy['body'] = false;
|
|
56
57
|
matchRequestsBy.order = true;
|
|
57
58
|
return matchRequestsBy;
|
|
58
59
|
}
|
|
@@ -199,6 +200,49 @@ function getFrodoCommand(_ref3) {
|
|
|
199
200
|
});
|
|
200
201
|
return cmd;
|
|
201
202
|
}
|
|
203
|
+
function filterRecording(recording) {
|
|
204
|
+
var _recording$request, _recording$request2, _recording$response;
|
|
205
|
+
// request headers
|
|
206
|
+
if ((_recording$request = recording.request) !== null && _recording$request !== void 0 && _recording$request.headers) {
|
|
207
|
+
var headers = recording.request.headers;
|
|
208
|
+
headers.map(header => {
|
|
209
|
+
if (header.name.toUpperCase() === 'AUTHORIZATION') {
|
|
210
|
+
if ((0, _Base64Utils.isBase64Encoded)(header.value)) {
|
|
211
|
+
header.value = (0, _Base64Utils.encode)('username:password');
|
|
212
|
+
} else {
|
|
213
|
+
header.value = header.value.replace(/Bearer .+/, 'Bearer <bearer token>');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (header.name.toUpperCase() === 'X-API-KEY') {
|
|
217
|
+
header.value = '<api key>';
|
|
218
|
+
}
|
|
219
|
+
if (header.name.toUpperCase() === 'X-API-SECRET') {
|
|
220
|
+
header.value = '<api secret>';
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
recording.request.headers = headers;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// request post body
|
|
227
|
+
if ((_recording$request2 = recording.request) !== null && _recording$request2 !== void 0 && (_recording$request2 = _recording$request2.postData) !== null && _recording$request2 !== void 0 && _recording$request2.text) {
|
|
228
|
+
var body = recording.request.postData.text;
|
|
229
|
+
body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');
|
|
230
|
+
recording.request.postData.text = body;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// response body
|
|
234
|
+
if ((_recording$response = recording.response) !== null && _recording$response !== void 0 && (_recording$response = _recording$response.content) !== null && _recording$response !== void 0 && _recording$response.text) {
|
|
235
|
+
var _body = recording.response.content.text;
|
|
236
|
+
try {
|
|
237
|
+
var json = JSON.parse(_body);
|
|
238
|
+
if (json['access_token']) json['access_token'] = '<access token>';
|
|
239
|
+
_body = JSON.stringify(json);
|
|
240
|
+
} catch (error) {
|
|
241
|
+
// ignore
|
|
242
|
+
}
|
|
243
|
+
recording.response.content.text = _body;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
202
246
|
function setupPollyForFrodoLib(_ref4) {
|
|
203
247
|
var {
|
|
204
248
|
matchRequestsBy = defaultMatchRequestsBy(),
|
|
@@ -275,6 +319,8 @@ function setupPollyForFrodoLib(_ref4) {
|
|
|
275
319
|
// console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);
|
|
276
320
|
ttl = timeout;
|
|
277
321
|
}
|
|
322
|
+
}).on('beforePersist', (_req, recording) => {
|
|
323
|
+
filterRecording(recording);
|
|
278
324
|
});
|
|
279
325
|
if (mode === _utils.MODES.RECORD) {
|
|
280
326
|
scheduleShutdown({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["_adapterNodeHttp","_interopRequireDefault","require","_core","_persisterFs","_utils","_path","_url","_Console","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","__dirname","path","dirname","fileURLToPath","pathToFileURL","__filename","toString","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","JSON","parse","stringify","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","_x","_delay","ms","setTimeout","countdown","_x2","_countdown","ttl","timeout","scheduleShutdown","_x3","_scheduleShutdown","_ref","polly","state","console","log","concat","getFrodoCommand","stop","getFrodoArgsId","_ref2","start","result","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","length","paramsId","join","argsId","debugMessage","message","_ref3","cmd","endsWith","name","printMessage","type","setupPollyForFrodoLib","_ref4","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { State } from '../shared/State';\nimport { debugMessage, printMessage } from './Console';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return JSON.parse(\n JSON.stringify({\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n })\n );\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy.body = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server\n .any('/environment/*')\n .recordingName(`${getFrodoCommand({ state })}/environment`);\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server.any().on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SetupPollyForFrodoLib.js","names":["_adapterNodeHttp","_interopRequireDefault","require","_core","_persisterFs","_utils","_path","_url","_Base64Utils","_Console","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","__dirname","path","dirname","fileURLToPath","pathToFileURL","__filename","toString","FRODO_MOCK_HOSTS","recordIfMissing","mode","MODES","REPLAY","recordingsDir","replace","process","env","FRODO_MOCK","Polly","register","NodeHttpAdapter","FSPersister","RECORD","defaultMatchRequestsBy","method","headers","body","order","url","protocol","username","password","hostname","port","pathname","query","hash","authenticationMatchRequestsBy","matchRequestsBy","delay","_x","_delay","ms","setTimeout","countdown","_x2","_countdown","ttl","timeout","scheduleShutdown","_x3","_scheduleShutdown","_ref","polly","state","console","log","concat","getFrodoCommand","stop","getFrodoArgsId","_ref2","start","result","params","expectValue","argv","filter","_v","i","map","v","startsWith","push","length","paramsId","join","argsId","debugMessage","message","_ref3","cmd","endsWith","parse","name","printMessage","type","filterRecording","recording","_recording$request","_recording$request2","_recording$response","request","header","toUpperCase","isBase64Encoded","encode","postData","text","response","content","json","JSON","stringify","setupPollyForFrodoLib","_ref4","configure","adapters","flushRequestsOnStop","logLevel","FRODO_POLLY_LOG_LEVEL","recordFailedRequests","persister","persisterOptions","fs","host","server","any","recordingName","on","req","_req","config"],"sources":["../../src/utils/SetupPollyForFrodoLib.ts"],"sourcesContent":["import NodeHttpAdapter from '@pollyjs/adapter-node-http';\nimport { Polly } from '@pollyjs/core';\nimport FSPersister from '@pollyjs/persister-fs';\nimport { MODES } from '@pollyjs/utils';\nimport { LogLevelDesc } from 'loglevel';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { State } from '../shared/State';\nimport { encode, isBase64Encoded } from './Base64Utils';\nimport { debugMessage, printMessage } from './Console';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst FRODO_MOCK_HOSTS = [\n 'https://openam-frodo-dev.forgeblocks.com',\n 'https://openam-volker-dev.forgeblocks.com',\n 'https://openam-volker-demo.forgeblocks.com',\n];\n\nlet recordIfMissing = false;\nlet mode = MODES.REPLAY;\n\n// resolve \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/esm/api\" to\n// \"/home/sandeepc/work/ForgeRock/sources/frodo-lib/src/test/recordings\"\nconst recordingsDir = __dirname.replace(\n /^(.*\\/frodo-\\w{3})(.*)$/gi,\n '$1/mocks'\n);\n\nif (process.env.FRODO_MOCK) {\n Polly.register(NodeHttpAdapter);\n Polly.register(FSPersister);\n if (process.env.FRODO_MOCK === 'record') {\n mode = MODES.RECORD;\n recordIfMissing = true;\n }\n}\n\nfunction defaultMatchRequestsBy() {\n return {\n method: true,\n headers: false, // do not match headers, because \"Authorization\" header is sent only at recording time\n body: true,\n order: false,\n url: {\n protocol: false,\n username: false,\n password: false,\n hostname: false, // we will record from different envs but run tests always against `frodo-dev`\n port: false,\n pathname: true,\n query: true,\n hash: true,\n },\n };\n}\n\nfunction authenticationMatchRequestsBy() {\n const matchRequestsBy = defaultMatchRequestsBy();\n matchRequestsBy['body'] = false;\n matchRequestsBy.order = true;\n return matchRequestsBy;\n}\n\n// returns a delayed promise\nasync function delay(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function countdown(ms) {\n await delay(ms);\n return --ttl;\n}\n\nconst timeout = 15;\nlet ttl = timeout;\nasync function scheduleShutdown({\n polly,\n state,\n}: {\n polly: Polly;\n state: State;\n}) {\n ++ttl;\n while (await countdown(1000)) {\n if (ttl < 4)\n console.log(\n `Polly instance '${getFrodoCommand({ state })}' stopping in ${ttl}s...`\n );\n }\n await polly.stop();\n console.log(`Polly instance '${getFrodoCommand({ state })}' stopped.`);\n}\n\nfunction getFrodoArgsId({ start, state }: { start: number; state: State }) {\n const result: string[] = [];\n const args: string[] = [];\n const params: string[] = [];\n let expectValue = false;\n process.argv\n .filter((_v, i) => i >= start)\n .map((v) => {\n if (v.startsWith('--')) {\n params.push(v.replace('--', ''));\n expectValue = true;\n } else if (v.startsWith('-')) {\n params.push(v.replace('-', ''));\n expectValue = true;\n } else if (expectValue) {\n expectValue = false;\n } else {\n args.push(v);\n }\n return v;\n });\n result.push(`${args.length}`);\n const paramsId = params.join('_');\n if (paramsId) result.push(paramsId);\n const argsId = result.join('_');\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoArgsId: argsId=${argsId}`,\n state,\n });\n return argsId;\n}\n\n/*\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/usr/local/bin/frodo',\n 'journey',\n 'list',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\nargv:\n[\n '/Users/vscheuber/.nvm/versions/node/v18.7.0/bin/node',\n '/Users/vscheuber/Projects/frodo-cli/esm/cli/journey/journey-list.js',\n '-l',\n 'https://openam-volker-dev.forgeblocks.com/am',\n 'alpha',\n 'volker.scheuber@forgerock.com',\n 'Sup3rS3cr3t!'\n]\n*/\nfunction getFrodoCommand({ state }: { state: State }) {\n let cmd = 'unknown';\n try {\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: process.argv=${process.argv}`,\n state,\n });\n if (\n !process.argv[1].endsWith('frodo') &&\n !process.argv[1].endsWith('frodo.exe') &&\n !process.argv[1].endsWith('app.js')\n ) {\n cmd =\n path.parse(process.argv[1]).name.replace('-', '/') +\n '/' +\n getFrodoArgsId({ start: 2, state });\n } else {\n cmd = process.argv[2] + '/' + getFrodoArgsId({ start: 3, state });\n }\n } catch (error) {\n printMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: ${error}`,\n type: 'error',\n state,\n });\n printMessage({ message: process.argv, type: 'error', state });\n cmd = 'error';\n }\n if (mode !== MODES.RECORD)\n debugMessage({\n message: `SetupPollyForFrodoLib.getFrodoCommand: cmd=${cmd}`,\n state,\n });\n return cmd;\n}\n\nfunction filterRecording(recording: {\n request: {\n headers: [{ name: string; value: string }];\n postData: { text: any };\n };\n response: { content: { text: any } };\n}) {\n // request headers\n if (recording.request?.headers) {\n const headers: [{ name: string; value: string }] =\n recording.request.headers;\n headers.map((header) => {\n if (header.name.toUpperCase() === 'AUTHORIZATION') {\n if (isBase64Encoded(header.value)) {\n header.value = encode('username:password');\n } else {\n header.value = header.value.replace(\n /Bearer .+/,\n 'Bearer <bearer token>'\n );\n }\n }\n if (header.name.toUpperCase() === 'X-API-KEY') {\n header.value = '<api key>';\n }\n if (header.name.toUpperCase() === 'X-API-SECRET') {\n header.value = '<api secret>';\n }\n });\n recording.request.headers = headers;\n }\n\n // request post body\n if (recording.request?.postData?.text) {\n let body = recording.request.postData.text;\n body = body.replace(/assertion=.+?&/, 'assertion=<assertion jwt token>&');\n recording.request.postData.text = body;\n }\n\n // response body\n if (recording.response?.content?.text) {\n let body = recording.response.content.text;\n try {\n const json = JSON.parse(body);\n if (json['access_token']) json['access_token'] = '<access token>';\n body = JSON.stringify(json);\n } catch (error) {\n // ignore\n }\n recording.response.content.text = body;\n }\n}\n\nexport function setupPollyForFrodoLib({\n matchRequestsBy = defaultMatchRequestsBy(),\n state,\n}: {\n matchRequestsBy?: any;\n state: State;\n}): Polly {\n const polly = new Polly('default');\n\n polly.configure({\n adapters: ['node-http'],\n mode,\n recordIfMissing,\n flushRequestsOnStop: true,\n logLevel: (process.env.FRODO_POLLY_LOG_LEVEL as LogLevelDesc) || 'warn',\n recordFailedRequests: true,\n persister: 'fs',\n persisterOptions: {\n fs: {\n recordingsDir,\n },\n },\n matchRequestsBy,\n });\n\n for (const host of FRODO_MOCK_HOSTS) {\n if (mode === MODES.RECORD) console.log(`***** Host: ${host}`);\n polly.server.host(host, () => {\n polly.server\n .any('/am/oauth2/*')\n .recordingName(`${getFrodoCommand({ state })}/oauth2`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/am/json/*')\n .recordingName(`${getFrodoCommand({ state })}/am`);\n polly.server\n .any('/openidm/managed/svcacct')\n .recordingName(`${getFrodoCommand({ state })}/openidm/managed/svcacct`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/openidm/*')\n .recordingName(`${getFrodoCommand({ state })}/openidm`);\n polly.server\n .any('/environment/*')\n .recordingName(`${getFrodoCommand({ state })}/environment`);\n polly.server\n .any('/keys')\n .recordingName(`${getFrodoCommand({ state })}/keys`)\n .on('request', (req) => {\n req.configure({ matchRequestsBy: authenticationMatchRequestsBy() });\n });\n polly.server\n .any('/monitoring/*')\n .recordingName(`${getFrodoCommand({ state })}/monitoring`);\n polly.server\n .any('/feature')\n .recordingName(`${getFrodoCommand({ state })}/feature`);\n polly.server\n .any('/dashboard/*')\n .recordingName(`${getFrodoCommand({ state })}/dashboard`);\n });\n }\n polly.server.host('https://api.github.com', () => {\n polly.server.any('/*').recordingName(`github`);\n });\n polly.server.host('https://registry.npmjs.org', () => {\n polly.server.any('/*').recordingName(`npmjs`);\n });\n polly.server\n .any()\n .on('request', () => {\n if (ttl < timeout) {\n // console.log(`Reset polly stop ttl (${ttl}) to ${timeout}`);\n ttl = timeout;\n }\n })\n .on('beforePersist', (_req, recording) => {\n filterRecording(recording);\n });\n\n if (mode === MODES.RECORD) {\n scheduleShutdown({ polly, state });\n } else {\n // only output debug messages if not recording as this polly instance is\n // primarily used by frodo-cli e2e tests, which capture stdout in snapshots.\n // debug messages falsify the snapshot recordings.\n debugMessage({ message: `Polly config:`, state });\n debugMessage({ message: polly.config, state });\n }\n\n return polly;\n}\n"],"mappings":"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"}
|
|
@@ -315,7 +315,6 @@ export async function getConnectionProfile({
|
|
|
315
315
|
*/
|
|
316
316
|
export async function saveConnectionProfile({
|
|
317
317
|
host,
|
|
318
|
-
offline = false,
|
|
319
318
|
state
|
|
320
319
|
}) {
|
|
321
320
|
debugMessage({
|
|
@@ -402,7 +401,7 @@ export async function saveConnectionProfile({
|
|
|
402
401
|
// service account
|
|
403
402
|
if (state.getServiceAccountId()) {
|
|
404
403
|
profile.svcacctId = state.getServiceAccountId();
|
|
405
|
-
if (
|
|
404
|
+
if (state.getBearerToken()) {
|
|
406
405
|
profile.svcacctName = (await getServiceAccount({
|
|
407
406
|
serviceAccountId: state.getServiceAccountId(),
|
|
408
407
|
state
|
|
@@ -411,7 +410,7 @@ export async function saveConnectionProfile({
|
|
|
411
410
|
}
|
|
412
411
|
if (state.getServiceAccountJwk()) profile.encodedSvcacctJwk = await dataProtection.encrypt(state.getServiceAccountJwk());
|
|
413
412
|
// update existing service account profile
|
|
414
|
-
if (
|
|
413
|
+
if (state.getBearerToken() && profile.svcacctId && !profile.svcacctName) {
|
|
415
414
|
profile.svcacctName = (await getServiceAccount({
|
|
416
415
|
serviceAccountId: profile.svcacctId,
|
|
417
416
|
state
|