@credibledata/cred-cli 0.0.103 → 0.0.105
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/README.md +106 -1
- package/dist/agent-contract.spec.js +548 -0
- package/dist/agent-contract.spec.js.map +1 -0
- package/dist/browser.js +72 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.spec.js +125 -0
- package/dist/browser.spec.js.map +1 -0
- package/dist/client/api.js +4137 -1159
- package/dist/client/api.js.map +1 -1
- package/dist/client-codeassist/api.js +476 -0
- package/dist/client-codeassist/api.js.map +1 -0
- package/dist/client-codeassist/base.js +69 -0
- package/dist/client-codeassist/base.js.map +1 -0
- package/dist/client-codeassist/common.js +162 -0
- package/dist/client-codeassist/common.js.map +1 -0
- package/dist/client-codeassist/configuration.js +44 -0
- package/dist/client-codeassist/configuration.js.map +1 -0
- package/dist/client-codeassist/index.js +32 -0
- package/dist/client-codeassist/index.js.map +1 -0
- package/dist/clientconfiguration.js +17 -289
- package/dist/clientconfiguration.js.map +1 -1
- package/dist/clientconfiguration.spec.js +35 -96
- package/dist/clientconfiguration.spec.js.map +1 -1
- package/dist/commands/add.js +103 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/add.spec.js +113 -0
- package/dist/commands/add.spec.js.map +1 -0
- package/dist/commands/connection/createconnections.js +104 -7
- package/dist/commands/connection/createconnections.js.map +1 -1
- package/dist/commands/connection/createconnections.spec.js +35 -1
- package/dist/commands/connection/createconnections.spec.js.map +1 -1
- package/dist/commands/connection/deleteconnection.js +4 -2
- package/dist/commands/connection/deleteconnection.js.map +1 -1
- package/dist/commands/connection/deleteconnection.spec.js +6 -1
- package/dist/commands/connection/deleteconnection.spec.js.map +1 -1
- package/dist/commands/connection/listconnections.js +2 -0
- package/dist/commands/connection/listconnections.js.map +1 -1
- package/dist/commands/connection/updateconnection.js +365 -0
- package/dist/commands/connection/updateconnection.js.map +1 -0
- package/dist/commands/connection/updateconnection.spec.js +625 -0
- package/dist/commands/connection/updateconnection.spec.js.map +1 -0
- package/dist/commands/database/createdatabase.js +52 -0
- package/dist/commands/database/createdatabase.js.map +1 -0
- package/dist/commands/database/database.spec.js +267 -0
- package/dist/commands/database/database.spec.js.map +1 -0
- package/dist/commands/database/deletedatabase.js +91 -0
- package/dist/commands/database/deletedatabase.js.map +1 -0
- package/dist/commands/database/getdatabase.js +97 -0
- package/dist/commands/database/getdatabase.js.map +1 -0
- package/dist/commands/database/listdatabases.js +36 -0
- package/dist/commands/database/listdatabases.js.map +1 -0
- package/dist/commands/database/shared.js +125 -0
- package/dist/commands/database/shared.js.map +1 -0
- package/dist/commands/database/shared.spec.js +109 -0
- package/dist/commands/database/shared.spec.js.map +1 -0
- package/dist/commands/database/updatedatabase.js +39 -0
- package/dist/commands/database/updatedatabase.js.map +1 -0
- package/dist/commands/environment/createenvironment.js +59 -28
- package/dist/commands/environment/createenvironment.js.map +1 -1
- package/dist/commands/environment/createenvironment.spec.js +29 -0
- package/dist/commands/environment/createenvironment.spec.js.map +1 -1
- package/dist/commands/environment/deleteenvironment.js +3 -2
- package/dist/commands/environment/deleteenvironment.js.map +1 -1
- package/dist/commands/environment/deleteenvironment.spec.js +5 -1
- package/dist/commands/environment/deleteenvironment.spec.js.map +1 -1
- package/dist/commands/environment/getenvironment.js +1 -0
- package/dist/commands/environment/getenvironment.js.map +1 -1
- package/dist/commands/environment/listenvironments.js +40 -8
- package/dist/commands/environment/listenvironments.js.map +1 -1
- package/dist/commands/environment/listenvironments.spec.js +41 -2
- package/dist/commands/environment/listenvironments.spec.js.map +1 -1
- package/dist/commands/environment/setenvironment.js +145 -6
- package/dist/commands/environment/setenvironment.js.map +1 -1
- package/dist/commands/environment/setenvironment.spec.js +256 -8
- package/dist/commands/environment/setenvironment.spec.js.map +1 -1
- package/dist/commands/environment/updateenvironment.js +12 -8
- package/dist/commands/environment/updateenvironment.js.map +1 -1
- package/dist/commands/environment/updateenvironment.spec.js +36 -2
- package/dist/commands/environment/updateenvironment.spec.js.map +1 -1
- package/dist/commands/get.js +64 -1
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/group/addmember.js +3 -1
- package/dist/commands/group/addmember.js.map +1 -1
- package/dist/commands/group/addmember.spec.js +7 -2
- package/dist/commands/group/addmember.spec.js.map +1 -1
- package/dist/commands/group/creategroup.js +2 -0
- package/dist/commands/group/creategroup.js.map +1 -1
- package/dist/commands/group/deletegroup.js +3 -1
- package/dist/commands/group/deletegroup.js.map +1 -1
- package/dist/commands/group/deletegroup.spec.js +7 -1
- package/dist/commands/group/deletegroup.spec.js.map +1 -1
- package/dist/commands/group/getgroup.js +2 -0
- package/dist/commands/group/getgroup.js.map +1 -1
- package/dist/commands/group/listgroups.js +2 -0
- package/dist/commands/group/listgroups.js.map +1 -1
- package/dist/commands/group/removemember.js +3 -1
- package/dist/commands/group/removemember.js.map +1 -1
- package/dist/commands/group/removemember.spec.js +7 -2
- package/dist/commands/group/removemember.spec.js.map +1 -1
- package/dist/commands/groupaccesstoken/deleteToken.js +2 -1
- package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -1
- package/dist/commands/groupaccesstoken/groupContainer.js +2 -0
- package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -1
- package/dist/commands/list.js +24 -4
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/materialization/cancelrun.js +3 -1
- package/dist/commands/materialization/cancelrun.js.map +1 -1
- package/dist/commands/materialization/getindex.js +2 -0
- package/dist/commands/materialization/getindex.js.map +1 -1
- package/dist/commands/materialization/getmaterialization.js +2 -0
- package/dist/commands/materialization/getmaterialization.js.map +1 -1
- package/dist/commands/materialization/getpreaggregate.js +2 -0
- package/dist/commands/materialization/getpreaggregate.js.map +1 -1
- package/dist/commands/materialization/getrun.js +2 -0
- package/dist/commands/materialization/getrun.js.map +1 -1
- package/dist/commands/materialization/listindexes.js +2 -0
- package/dist/commands/materialization/listindexes.js.map +1 -1
- package/dist/commands/materialization/listmaterializations.js +2 -0
- package/dist/commands/materialization/listmaterializations.js.map +1 -1
- package/dist/commands/materialization/listpreaggregates.js +2 -0
- package/dist/commands/materialization/listpreaggregates.js.map +1 -1
- package/dist/commands/materialization/listruns.js +3 -1
- package/dist/commands/materialization/listruns.js.map +1 -1
- package/dist/commands/materialization/rerun.js +3 -1
- package/dist/commands/materialization/rerun.js.map +1 -1
- package/dist/commands/misc/inquirerHost.js +87 -0
- package/dist/commands/misc/inquirerHost.js.map +1 -0
- package/dist/commands/misc/inquirerHost.spec.js +91 -0
- package/dist/commands/misc/inquirerHost.spec.js.map +1 -0
- package/dist/commands/misc/login.js +348 -58
- package/dist/commands/misc/login.js.map +1 -1
- package/dist/commands/misc/login.spec.js +525 -7
- package/dist/commands/misc/login.spec.js.map +1 -1
- package/dist/commands/misc/logout.js +26 -3
- package/dist/commands/misc/logout.js.map +1 -1
- package/dist/commands/misc/logout.spec.js +52 -12
- package/dist/commands/misc/logout.spec.js.map +1 -1
- package/dist/commands/misc/resolveLoginTarget.spec.js +90 -0
- package/dist/commands/misc/resolveLoginTarget.spec.js.map +1 -0
- package/dist/commands/misc/scope.spec.js +108 -0
- package/dist/commands/misc/scope.spec.js.map +1 -0
- package/dist/commands/misc/set-access-token.js +1 -1
- package/dist/commands/misc/set-access-token.js.map +1 -1
- package/dist/commands/misc/set-access-token.spec.js +13 -2
- package/dist/commands/misc/set-access-token.spec.js.map +1 -1
- package/dist/commands/misc/setup.js +819 -0
- package/dist/commands/misc/setup.js.map +1 -0
- package/dist/commands/misc/setup.spec.js +783 -0
- package/dist/commands/misc/setup.spec.js.map +1 -0
- package/dist/commands/misc/status.js +168 -0
- package/dist/commands/misc/status.js.map +1 -0
- package/dist/commands/misc/status.spec.js +301 -0
- package/dist/commands/misc/status.spec.js.map +1 -0
- package/dist/commands/misc/token.js +57 -0
- package/dist/commands/misc/token.js.map +1 -0
- package/dist/commands/misc/token.spec.js +92 -0
- package/dist/commands/misc/token.spec.js.map +1 -0
- package/dist/commands/package/deletepackage.js +4 -2
- package/dist/commands/package/deletepackage.js.map +1 -1
- package/dist/commands/package/deletepackage.spec.js +7 -1
- package/dist/commands/package/deletepackage.spec.js.map +1 -1
- package/dist/commands/package/getpackage.js +142 -0
- package/dist/commands/package/getpackage.js.map +1 -0
- package/dist/commands/package/getpackage.spec.js +246 -0
- package/dist/commands/package/getpackage.spec.js.map +1 -0
- package/dist/commands/package/listpackages.js +2 -0
- package/dist/commands/package/listpackages.js.map +1 -1
- package/dist/commands/package/publish.archive.spec.js +570 -0
- package/dist/commands/package/publish.archive.spec.js.map +1 -0
- package/dist/commands/package/publish.js +780 -49
- package/dist/commands/package/publish.js.map +1 -1
- package/dist/commands/package/publish.spec.js +451 -8
- package/dist/commands/package/publish.spec.js.map +1 -1
- package/dist/commands/package/updatepackage.js +22 -19
- package/dist/commands/package/updatepackage.js.map +1 -1
- package/dist/commands/package/updatepackage.spec.js +36 -1
- package/dist/commands/package/updatepackage.spec.js.map +1 -1
- package/dist/commands/permission/createpermission.js +3 -1
- package/dist/commands/permission/createpermission.js.map +1 -1
- package/dist/commands/permission/deletepermission.js +6 -3
- package/dist/commands/permission/deletepermission.js.map +1 -1
- package/dist/commands/permission/getpermission.js +2 -0
- package/dist/commands/permission/getpermission.js.map +1 -1
- package/dist/commands/permission/listpermissions.js +2 -0
- package/dist/commands/permission/listpermissions.js.map +1 -1
- package/dist/commands/rm.js +21 -0
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/set.js +40 -6
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/set.spec.js +123 -0
- package/dist/commands/set.spec.js.map +1 -0
- package/dist/commands/table/addtable.js +155 -0
- package/dist/commands/table/addtable.js.map +1 -0
- package/dist/commands/table/deletetable.js +45 -0
- package/dist/commands/table/deletetable.js.map +1 -0
- package/dist/commands/table/gettable.js +32 -0
- package/dist/commands/table/gettable.js.map +1 -0
- package/dist/commands/table/listtables.js +36 -0
- package/dist/commands/table/listtables.js.map +1 -0
- package/dist/commands/table/table.spec.js +304 -0
- package/dist/commands/table/table.spec.js.map +1 -0
- package/dist/commands/table/tablefile.js +195 -0
- package/dist/commands/table/tablefile.js.map +1 -0
- package/dist/commands/table/tablefile.spec.js +158 -0
- package/dist/commands/table/tablefile.spec.js.map +1 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/version/archive-unarchive-version.js +4 -2
- package/dist/commands/version/archive-unarchive-version.js.map +1 -1
- package/dist/commands/version/archive-unarchive-version.spec.js +6 -1
- package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -1
- package/dist/commands/version/listversions.js +2 -0
- package/dist/commands/version/listversions.js.map +1 -1
- package/dist/common/UserGroupId.js +9 -4
- package/dist/common/UserGroupId.js.map +1 -1
- package/dist/common/UserGroupId.spec.js +5 -0
- package/dist/common/UserGroupId.spec.js.map +1 -1
- package/dist/constants.js +37 -143
- package/dist/constants.js.map +1 -1
- package/dist/index.js +487 -90
- package/dist/index.js.map +1 -1
- package/dist/logger.js +42 -9
- package/dist/logger.js.map +1 -1
- package/dist/session.js +56 -0
- package/dist/session.js.map +1 -0
- package/dist/session.spec.js +103 -0
- package/dist/session.spec.js.map +1 -0
- package/dist/setup-core/briefing.js +176 -0
- package/dist/setup-core/briefing.js.map +1 -0
- package/dist/setup-core/credstore.js +415 -0
- package/dist/setup-core/credstore.js.map +1 -0
- package/dist/setup-core/credstore.spec.js +238 -0
- package/dist/setup-core/credstore.spec.js.map +1 -0
- package/dist/setup-core/environments.js +267 -0
- package/dist/setup-core/environments.js.map +1 -0
- package/dist/setup-core/flow.e2e.js +165 -0
- package/dist/setup-core/flow.e2e.js.map +1 -0
- package/dist/setup-core/flow.js +765 -0
- package/dist/setup-core/flow.js.map +1 -0
- package/dist/setup-core/flow.spec.js +1348 -0
- package/dist/setup-core/flow.spec.js.map +1 -0
- package/dist/setup-core/folderconfig.js +283 -0
- package/dist/setup-core/folderconfig.js.map +1 -0
- package/dist/setup-core/git.js +97 -0
- package/dist/setup-core/git.js.map +1 -0
- package/dist/setup-core/host.js +77 -0
- package/dist/setup-core/host.js.map +1 -0
- package/dist/setup-core/importconnections.js +470 -0
- package/dist/setup-core/importconnections.js.map +1 -0
- package/dist/setup-core/importconnections.spec.js +594 -0
- package/dist/setup-core/importconnections.spec.js.map +1 -0
- package/dist/setup-core/liveness.js +94 -0
- package/dist/setup-core/liveness.js.map +1 -0
- package/dist/setup-core/liveness.spec.js +59 -0
- package/dist/setup-core/liveness.spec.js.map +1 -0
- package/dist/setup-core/localpublisherconfig.js +26 -0
- package/dist/setup-core/localpublisherconfig.js.map +1 -0
- package/dist/setup-core/localpublisherconfig.spec.js +29 -0
- package/dist/setup-core/localpublisherconfig.spec.js.map +1 -0
- package/dist/setup-core/mcpconfig.js +198 -0
- package/dist/setup-core/mcpconfig.js.map +1 -0
- package/dist/setup-core/mcpconfig.spec.js +205 -0
- package/dist/setup-core/mcpconfig.spec.js.map +1 -0
- package/dist/setup-core/packagemanifest.js +55 -0
- package/dist/setup-core/packagemanifest.js.map +1 -0
- package/dist/setup-core/ports.js +182 -0
- package/dist/setup-core/ports.js.map +1 -0
- package/dist/setup-core/ports.spec.js +173 -0
- package/dist/setup-core/ports.spec.js.map +1 -0
- package/dist/setup-core/publisherconfig.js +268 -0
- package/dist/setup-core/publisherconfig.js.map +1 -0
- package/dist/setup-core/publisherconfig.oracle.js +166 -0
- package/dist/setup-core/publisherconfig.oracle.js.map +1 -0
- package/dist/setup-core/publisherconfig.spec.js +277 -0
- package/dist/setup-core/publisherconfig.spec.js.map +1 -0
- package/dist/setup-core/publisherversion.js +26 -0
- package/dist/setup-core/publisherversion.js.map +1 -0
- package/dist/setup-core/readiness.spec.js +161 -0
- package/dist/setup-core/readiness.spec.js.map +1 -0
- package/dist/setup-core/readylines.js +169 -0
- package/dist/setup-core/readylines.js.map +1 -0
- package/dist/setup-core/readylines.spec.js +70 -0
- package/dist/setup-core/readylines.spec.js.map +1 -0
- package/dist/setup-core/refresh.js +348 -0
- package/dist/setup-core/refresh.js.map +1 -0
- package/dist/setup-core/refresh.spec.js +501 -0
- package/dist/setup-core/refresh.spec.js.map +1 -0
- package/dist/setup-core/skills.js +279 -0
- package/dist/setup-core/skills.js.map +1 -0
- package/dist/setup-core/skills.spec.js +334 -0
- package/dist/setup-core/skills.spec.js.map +1 -0
- package/dist/setup-core/supervisor.js +879 -0
- package/dist/setup-core/supervisor.js.map +1 -0
- package/dist/setup-core/supervisor.spec.js +833 -0
- package/dist/setup-core/supervisor.spec.js.map +1 -0
- package/dist/setup-core/writefile.js +61 -0
- package/dist/setup-core/writefile.js.map +1 -0
- package/dist/setup-core/writefile.spec.js +68 -0
- package/dist/setup-core/writefile.spec.js.map +1 -0
- package/dist/utils.js +409 -3
- package/dist/utils.js.map +1 -1
- package/dist/utils.spec.js +373 -2
- package/dist/utils.spec.js.map +1 -1
- package/dist/versioncheck-refresh.js +18 -0
- package/dist/versioncheck-refresh.js.map +1 -0
- package/dist/versioncheck.js +324 -0
- package/dist/versioncheck.js.map +1 -0
- package/dist/versioncheck.spec.js +587 -0
- package/dist/versioncheck.spec.js.map +1 -0
- package/node_modules/@credibledata/cli-auth/dist/index.d.ts +86 -0
- package/node_modules/@credibledata/cli-auth/dist/index.js +102 -0
- package/node_modules/@credibledata/cli-auth/package.json +19 -0
- package/package.json +18 -6
- package/.github/workflows/build.yml +0 -23
- package/.mocharc.json +0 -10
- package/.prettierignore +0 -2
- package/.prettierrc +0 -4
- package/README-DEV.md +0 -40
- package/coverage/coverage-summary.json +0 -40
- package/coverage/tmp/coverage-2152-1789496974457-0.json +0 -1
- package/coverage/tmp/coverage-2153-1789496954404-0.json +0 -1
- package/docker/Dockerfile.ci +0 -18
- package/docker-compose.yml +0 -18
- package/eslint.config.mjs +0 -45
- package/generate-client.sh +0 -27
- package/mocha.setup.ts +0 -4
- package/openapitools.json +0 -10
- package/src/client/.openapi-generator/FILES +0 -9
- package/src/client/.openapi-generator/VERSION +0 -1
- package/src/client/.openapi-generator-ignore +0 -23
- package/src/client/api.ts +0 -15999
- package/src/client/base.ts +0 -86
- package/src/client/common.ts +0 -150
- package/src/client/configuration.ts +0 -110
- package/src/client/git_push.sh +0 -57
- package/src/client/index.ts +0 -18
- package/src/clientconfiguration.spec.ts +0 -615
- package/src/clientconfiguration.ts +0 -364
- package/src/commands/add.ts +0 -191
- package/src/commands/connection/createconnections.spec.ts +0 -413
- package/src/commands/connection/createconnections.ts +0 -109
- package/src/commands/connection/deleteconnection.spec.ts +0 -189
- package/src/commands/connection/deleteconnection.ts +0 -57
- package/src/commands/connection/listconnections.spec.ts +0 -132
- package/src/commands/connection/listconnections.ts +0 -58
- package/src/commands/environment/createenvironment.spec.ts +0 -249
- package/src/commands/environment/createenvironment.ts +0 -73
- package/src/commands/environment/deleteenvironment.spec.ts +0 -152
- package/src/commands/environment/deleteenvironment.ts +0 -48
- package/src/commands/environment/getenvironment.spec.ts +0 -110
- package/src/commands/environment/getenvironment.ts +0 -43
- package/src/commands/environment/listenvironments.spec.ts +0 -123
- package/src/commands/environment/listenvironments.ts +0 -67
- package/src/commands/environment/setenvironment.spec.ts +0 -63
- package/src/commands/environment/setenvironment.ts +0 -14
- package/src/commands/environment/updateenvironment.spec.ts +0 -386
- package/src/commands/environment/updateenvironment.ts +0 -168
- package/src/commands/get.ts +0 -153
- package/src/commands/group/addmember.spec.ts +0 -257
- package/src/commands/group/addmember.ts +0 -85
- package/src/commands/group/creategroup.spec.ts +0 -146
- package/src/commands/group/creategroup.ts +0 -54
- package/src/commands/group/deletegroup.spec.ts +0 -120
- package/src/commands/group/deletegroup.ts +0 -45
- package/src/commands/group/getgroup.spec.ts +0 -129
- package/src/commands/group/getgroup.ts +0 -47
- package/src/commands/group/listgroups.spec.ts +0 -137
- package/src/commands/group/listgroups.ts +0 -45
- package/src/commands/group/removemember.spec.ts +0 -224
- package/src/commands/group/removemember.ts +0 -75
- package/src/commands/groupaccesstoken/createToken.spec.ts +0 -211
- package/src/commands/groupaccesstoken/createToken.ts +0 -72
- package/src/commands/groupaccesstoken/deleteToken.spec.ts +0 -147
- package/src/commands/groupaccesstoken/deleteToken.ts +0 -29
- package/src/commands/groupaccesstoken/groupContainer.ts +0 -83
- package/src/commands/groupaccesstoken/listTokens.spec.ts +0 -147
- package/src/commands/groupaccesstoken/listTokens.ts +0 -29
- package/src/commands/legacy.ts +0 -5
- package/src/commands/list.ts +0 -326
- package/src/commands/materialization/cancelrun.ts +0 -70
- package/src/commands/materialization/getindex.ts +0 -55
- package/src/commands/materialization/getmaterialization.ts +0 -57
- package/src/commands/materialization/getpreaggregate.ts +0 -58
- package/src/commands/materialization/getrun.ts +0 -55
- package/src/commands/materialization/listindexes.ts +0 -69
- package/src/commands/materialization/listmaterializations.ts +0 -53
- package/src/commands/materialization/listpreaggregates.ts +0 -74
- package/src/commands/materialization/listruns.ts +0 -77
- package/src/commands/materialization/rerun.ts +0 -123
- package/src/commands/misc/login.spec.ts +0 -371
- package/src/commands/misc/login.ts +0 -343
- package/src/commands/misc/logout.spec.ts +0 -32
- package/src/commands/misc/logout.ts +0 -9
- package/src/commands/misc/loopbackOAuth.ts +0 -127
- package/src/commands/misc/set-access-token.spec.ts +0 -95
- package/src/commands/misc/set-access-token.ts +0 -32
- package/src/commands/package/deletepackage.spec.ts +0 -164
- package/src/commands/package/deletepackage.ts +0 -58
- package/src/commands/package/listpackages.spec.ts +0 -163
- package/src/commands/package/listpackages.ts +0 -74
- package/src/commands/package/publish.spec.ts +0 -642
- package/src/commands/package/publish.ts +0 -236
- package/src/commands/package/updatepackage.spec.ts +0 -319
- package/src/commands/package/updatepackage.ts +0 -95
- package/src/commands/permission/createpermission.spec.ts +0 -507
- package/src/commands/permission/createpermission.ts +0 -181
- package/src/commands/permission/deletepermission.ts +0 -117
- package/src/commands/permission/getpermission.ts +0 -115
- package/src/commands/permission/listpermissions.ts +0 -101
- package/src/commands/permission/scope.ts +0 -180
- package/src/commands/rm.ts +0 -146
- package/src/commands/set.ts +0 -25
- package/src/commands/update.ts +0 -107
- package/src/commands/version/archive-unarchive-version.spec.ts +0 -456
- package/src/commands/version/archive-unarchive-version.ts +0 -108
- package/src/commands/version/listversions.spec.ts +0 -138
- package/src/commands/version/listversions.ts +0 -45
- package/src/common/UserGroupId.spec.ts +0 -115
- package/src/common/UserGroupId.ts +0 -137
- package/src/constants.spec.ts +0 -111
- package/src/constants.ts +0 -228
- package/src/index.ts +0 -378
- package/src/logger.spec.ts +0 -158
- package/src/logger.ts +0 -90
- package/src/polyfills/file.polyfill.ts +0 -6
- package/src/utils.spec.ts +0 -135
- package/src/utils.ts +0 -115
- package/src/validator.spec.ts +0 -51
- package/src/validator.ts +0 -44
- package/tsconfig.json +0 -17
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CONNECTIONS_QUESTION = exports.CONNECTIONS_FLAG = void 0;
|
|
16
|
+
exports.findLocalPublisherConfig = findLocalPublisherConfig;
|
|
17
|
+
exports.unsetVariables = unsetVariables;
|
|
18
|
+
exports.substituteVariables = substituteVariables;
|
|
19
|
+
exports.localPublisherConfigProblem = localPublisherConfigProblem;
|
|
20
|
+
exports.importLocalConnections = importLocalConnections;
|
|
21
|
+
exports.checkSelection = checkSelection;
|
|
22
|
+
const fs_1 = __importDefault(require("fs"));
|
|
23
|
+
const path_1 = __importDefault(require("path"));
|
|
24
|
+
const host_1 = require("./host");
|
|
25
|
+
const localpublisherconfig_1 = require("./localpublisherconfig");
|
|
26
|
+
const publisherconfig_1 = require("./publisherconfig");
|
|
27
|
+
/** Attachment types that reach a remote service rather than a file on this machine. */
|
|
28
|
+
const REMOTE_ATTACHMENTS = new Set([
|
|
29
|
+
"bigquery",
|
|
30
|
+
"snowflake",
|
|
31
|
+
"postgres",
|
|
32
|
+
"gcs",
|
|
33
|
+
"s3",
|
|
34
|
+
"azure",
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* A duckdb connection is portable only as attachments to remote services and
|
|
38
|
+
* nothing else: the Publisher reads just `attachedDatabases` and `setupSQL`,
|
|
39
|
+
* and Credible workers refuse `setupSQL`.
|
|
40
|
+
*/
|
|
41
|
+
function duckdbBlocker(connection) {
|
|
42
|
+
var _a;
|
|
43
|
+
const duckdb = ((_a = connection.duckdbConnection) !== null && _a !== void 0 ? _a : {});
|
|
44
|
+
if (duckdb.setupSQL !== undefined) {
|
|
45
|
+
return "a DuckDB connection with setupSQL, which Credible workers refuse";
|
|
46
|
+
}
|
|
47
|
+
const attached = duckdb.attachedDatabases;
|
|
48
|
+
if (!Array.isArray(attached) || attached.length === 0) {
|
|
49
|
+
return "a local DuckDB file, or one with no attached database — publish it with the package instead";
|
|
50
|
+
}
|
|
51
|
+
if (attached.some((db) => {
|
|
52
|
+
var _a;
|
|
53
|
+
return !REMOTE_ATTACHMENTS.has((_a = db === null || db === void 0 ? void 0 : db.type) !== null && _a !== void 0 ? _a : "");
|
|
54
|
+
})) {
|
|
55
|
+
return "a DuckDB connection with an attachment that is not a remote service (such as a local DuckDB file) — publish it with the package instead";
|
|
56
|
+
}
|
|
57
|
+
if (Object.keys(duckdb).some((key) => key !== "attachedDatabases")) {
|
|
58
|
+
return "a DuckDB connection with settings beyond attachedDatabases, such as a local file path — publish it with the package instead";
|
|
59
|
+
}
|
|
60
|
+
// The server refuses the host's credential chain on a user connection.
|
|
61
|
+
if (attached.some((db) => {
|
|
62
|
+
const s3 = db === null || db === void 0 ? void 0 : db.s3Connection;
|
|
63
|
+
return s3 && (s3.provider !== undefined || s3.chain !== undefined);
|
|
64
|
+
})) {
|
|
65
|
+
return "an S3 attachment that uses the host credential chain, which needs an access key and secret instead";
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
/** Why a connection cannot mean anything to Credible, if it cannot. See the note above. */
|
|
70
|
+
function notPortableReason(type, connection) {
|
|
71
|
+
var _a;
|
|
72
|
+
if (publisherconfig_1.RESERVED_CONNECTION_NAMES.has((_a = connection.name) !== null && _a !== void 0 ? _a : "")) {
|
|
73
|
+
return "its name is reserved for the per-package sandbox, so rename it first";
|
|
74
|
+
}
|
|
75
|
+
if (type === "publisher") {
|
|
76
|
+
return "a proxy connection, which is what setup writes";
|
|
77
|
+
}
|
|
78
|
+
return type === "duckdb" ? duckdbBlocker(connection) : undefined;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Read a `publisher.config.json` sitting in the modeling directory, if there is
|
|
82
|
+
* one.
|
|
83
|
+
*
|
|
84
|
+
* Only this directory — never `~/.credible/sessions/`, where setup writes its
|
|
85
|
+
* own. Ours carries a live Credible token and describes proxies back to
|
|
86
|
+
* Credible; importing it would be circular, and reading it here would put a
|
|
87
|
+
* credential on a path it does not need to be on.
|
|
88
|
+
*/
|
|
89
|
+
function findLocalPublisherConfig(directory) {
|
|
90
|
+
// Absent, or not JSON. Either way there is nothing to offer, and this is an
|
|
91
|
+
// optional extra step rather than something that can fail setup. A caller
|
|
92
|
+
// that was told to import something asks `localPublisherConfigProblem` why.
|
|
93
|
+
const parsed = (0, localpublisherconfig_1.readLocalPublisherConfig)(directory);
|
|
94
|
+
if (parsed === undefined)
|
|
95
|
+
return undefined;
|
|
96
|
+
const candidates = [];
|
|
97
|
+
const skipped = [];
|
|
98
|
+
for (const connection of collectConnections(parsed)) {
|
|
99
|
+
const name = typeof connection.name === "string" ? connection.name : "";
|
|
100
|
+
const type = typeof connection.type === "string" ? connection.type : "";
|
|
101
|
+
if (!name || !type)
|
|
102
|
+
continue;
|
|
103
|
+
// The permanent reason first: a duckdb path written `${DATA_DIR}/x.db`
|
|
104
|
+
// was told to export DATA_DIR, then refused as a local file anyway.
|
|
105
|
+
const notPortable = notPortableReason(type, connection);
|
|
106
|
+
if (notPortable) {
|
|
107
|
+
skipped.push({ name, reason: notPortable });
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// Filled in the way the publisher reads the same file, so what Credible
|
|
111
|
+
// tests is what the local publisher used. Sent as written, a
|
|
112
|
+
// `"${BQ_KEY}"` placeholder failed its test with a generic message.
|
|
113
|
+
const unset = unsetVariables(connection);
|
|
114
|
+
if (unset.length) {
|
|
115
|
+
skipped.push({
|
|
116
|
+
name,
|
|
117
|
+
reason: `it uses ${unset.map((v) => `\${${v}}`).join(", ")}, which ${unset.length === 1 ? "is" : "are"} not set in this shell`,
|
|
118
|
+
fix: `export ${unset.join(", ")} and run this again`,
|
|
119
|
+
});
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// Name and type from the filled-in connection, so matching and the
|
|
123
|
+
// clash check compare what the server will receive.
|
|
124
|
+
const resolved = substituteVariables(connection);
|
|
125
|
+
candidates.push({
|
|
126
|
+
connection: resolved,
|
|
127
|
+
name: typeof resolved.name === "string" ? resolved.name : name,
|
|
128
|
+
type: typeof resolved.type === "string" ? resolved.type : type,
|
|
129
|
+
describe: describe(resolved),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (candidates.length === 0 && skipped.length === 0)
|
|
133
|
+
return undefined;
|
|
134
|
+
return {
|
|
135
|
+
path: path_1.default.join(directory, "publisher.config.json"),
|
|
136
|
+
candidates,
|
|
137
|
+
skipped,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The publisher's own rule (`substituteEnvVars` in its config loader): every
|
|
142
|
+
* `${NAME}` in a string, NAME in upper case, is replaced from the environment,
|
|
143
|
+
* and an unset one is an error. Kept identical so a connection imports with
|
|
144
|
+
* the value the local publisher ran on.
|
|
145
|
+
*/
|
|
146
|
+
const ENV_REFERENCE = /\$\{([A-Z_][A-Z0-9_]*)\}/g;
|
|
147
|
+
/** Every `${NAME}` in `value` that the environment does not set. */
|
|
148
|
+
function unsetVariables(value) {
|
|
149
|
+
const unset = new Set();
|
|
150
|
+
const walk = (node) => {
|
|
151
|
+
if (typeof node === "string") {
|
|
152
|
+
for (const match of node.matchAll(ENV_REFERENCE)) {
|
|
153
|
+
if (process.env[match[1]] === undefined)
|
|
154
|
+
unset.add(match[1]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (Array.isArray(node)) {
|
|
158
|
+
node.forEach(walk);
|
|
159
|
+
}
|
|
160
|
+
else if (node && typeof node === "object") {
|
|
161
|
+
Object.values(node).forEach(walk);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
walk(value);
|
|
165
|
+
return [...unset].sort();
|
|
166
|
+
}
|
|
167
|
+
/** `value` with every `${NAME}` replaced. Call {@link unsetVariables} first. */
|
|
168
|
+
function substituteVariables(value) {
|
|
169
|
+
if (typeof value === "string") {
|
|
170
|
+
return value.replace(ENV_REFERENCE, (_, name) => { var _a; return (_a = process.env[name]) !== null && _a !== void 0 ? _a : ""; });
|
|
171
|
+
}
|
|
172
|
+
if (Array.isArray(value))
|
|
173
|
+
return value.map(substituteVariables);
|
|
174
|
+
if (value && typeof value === "object") {
|
|
175
|
+
return Object.fromEntries(Object.entries(value).map(([key, inner]) => [
|
|
176
|
+
key,
|
|
177
|
+
substituteVariables(inner),
|
|
178
|
+
]));
|
|
179
|
+
}
|
|
180
|
+
return value;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Why {@link findLocalPublisherConfig} found nothing in `directory`, said so a
|
|
184
|
+
* person can fix it. A named `--connections` list that finds nothing is a
|
|
185
|
+
* failed instruction, and "not valid JSON" and "not there" have different
|
|
186
|
+
* fixes.
|
|
187
|
+
*/
|
|
188
|
+
function localPublisherConfigProblem(directory) {
|
|
189
|
+
const configPath = path_1.default.join(directory, "publisher.config.json");
|
|
190
|
+
if (!fs_1.default.existsSync(configPath))
|
|
191
|
+
return `There is no ${configPath}.`;
|
|
192
|
+
try {
|
|
193
|
+
JSON.parse(fs_1.default.readFileSync(configPath, "utf-8"));
|
|
194
|
+
}
|
|
195
|
+
catch (_a) {
|
|
196
|
+
return `${configPath} is not valid JSON, so its connections cannot be read.`;
|
|
197
|
+
}
|
|
198
|
+
return `${configPath} has no connections in it.`;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Every connection in the file, across every environment it defines.
|
|
202
|
+
*
|
|
203
|
+
* Both shapes are real: the server's own config nests connections under
|
|
204
|
+
* `environments[]`, and older hand-written files put a flat `connections[]` at
|
|
205
|
+
* the top. Reading both costs a few lines and means a user is not told "nothing
|
|
206
|
+
* to import" about a file plainly full of connections.
|
|
207
|
+
*/
|
|
208
|
+
function collectConnections(parsed) {
|
|
209
|
+
if (!parsed || typeof parsed !== "object")
|
|
210
|
+
return [];
|
|
211
|
+
const root = parsed;
|
|
212
|
+
const found = [];
|
|
213
|
+
const push = (value) => {
|
|
214
|
+
if (Array.isArray(value)) {
|
|
215
|
+
for (const entry of value) {
|
|
216
|
+
if (entry && typeof entry === "object") {
|
|
217
|
+
found.push(entry);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
push(root.connections);
|
|
223
|
+
if (Array.isArray(root.environments)) {
|
|
224
|
+
for (const environment of root.environments) {
|
|
225
|
+
if (environment && typeof environment === "object") {
|
|
226
|
+
push(environment.connections);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return found;
|
|
231
|
+
}
|
|
232
|
+
/** Fields safe to show. Anything that could be a secret is omitted by omission. */
|
|
233
|
+
const SHOWN_FIELDS = [
|
|
234
|
+
"host",
|
|
235
|
+
"account",
|
|
236
|
+
"server",
|
|
237
|
+
"serverHostname",
|
|
238
|
+
"projectId",
|
|
239
|
+
"databaseName",
|
|
240
|
+
"database",
|
|
241
|
+
"catalog",
|
|
242
|
+
"warehouse",
|
|
243
|
+
"path",
|
|
244
|
+
];
|
|
245
|
+
/**
|
|
246
|
+
* A one-line description of where a connection points.
|
|
247
|
+
*
|
|
248
|
+
* An allowlist, never a redaction pass: a denylist of secret-looking key names
|
|
249
|
+
* fails open the moment a driver adds a field nobody thought of, and this string
|
|
250
|
+
* is printed to a terminal and possibly a screen share.
|
|
251
|
+
*/
|
|
252
|
+
function describe(connection) {
|
|
253
|
+
for (const key of Object.keys(connection)) {
|
|
254
|
+
const nested = connection[key];
|
|
255
|
+
if (!nested || typeof nested !== "object")
|
|
256
|
+
continue;
|
|
257
|
+
const values = nested;
|
|
258
|
+
const parts = SHOWN_FIELDS.filter((field) => typeof values[field] === "string" && values[field]).map((field) => `${field}=${values[field]}`);
|
|
259
|
+
if (parts.length)
|
|
260
|
+
return parts.slice(0, 2).join(" ");
|
|
261
|
+
}
|
|
262
|
+
return "";
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* The flag an agent passes to `cred init` instead of answering the picker.
|
|
266
|
+
* Other front doors pass their own: `cred add connection
|
|
267
|
+
* --from-publisher-config` takes `--name`, not this.
|
|
268
|
+
*/
|
|
269
|
+
exports.CONNECTIONS_FLAG = "--connections <all|none|name,name>";
|
|
270
|
+
/**
|
|
271
|
+
* Offer the local connections, preflight them, and create the ones the user
|
|
272
|
+
* accepts.
|
|
273
|
+
*
|
|
274
|
+
* Preflight is the reason this is worth building rather than telling people to
|
|
275
|
+
* run `cred add connection`. Credible tests a connection before saving it, and
|
|
276
|
+
* `dryRun` exposes that test on its own — so a warehouse only this laptop can
|
|
277
|
+
* reach (`localhost:5432`, a VPN-only host) is reported as unreachable *before*
|
|
278
|
+
* the user decides, instead of becoming a saved connection that fails later for
|
|
279
|
+
* everyone. The user then chooses knowing which of their connections actually
|
|
280
|
+
* survive the move.
|
|
281
|
+
*
|
|
282
|
+
* Two questions, deliberately not merged, each saying what it gates. The first
|
|
283
|
+
* is the picker: ticking a connection sends it, credentials included, to
|
|
284
|
+
* Credible for a reachability test that saves nothing. The second names the
|
|
285
|
+
* environment and asks whether to store them there, because agreeing to a test
|
|
286
|
+
* is not agreeing to keep a password. A `selection` passed in stands for both
|
|
287
|
+
* answers — the caller named the connections, which is the explicit form of the
|
|
288
|
+
* same consent — so the flag path asks nothing at all.
|
|
289
|
+
*
|
|
290
|
+
* A named selection is an instruction, so any connection in it that cannot be
|
|
291
|
+
* added fails the call: one that fails the test stops it before anything is
|
|
292
|
+
* created, and one that fails the create fails it after the others are added.
|
|
293
|
+
* `all` means "whichever work", so its unreachable ones are only reported.
|
|
294
|
+
*/
|
|
295
|
+
function importLocalConnections(found_1, host_2, credibleEnvironment_1, create_1) {
|
|
296
|
+
return __awaiter(this, arguments, void 0, function* (found, host, credibleEnvironment, create, options = {}) {
|
|
297
|
+
var _a;
|
|
298
|
+
const flag = (_a = options.flag) !== null && _a !== void 0 ? _a : exports.CONNECTIONS_FLAG;
|
|
299
|
+
const nothing = {
|
|
300
|
+
created: [],
|
|
301
|
+
rejected: [],
|
|
302
|
+
declined: false,
|
|
303
|
+
};
|
|
304
|
+
if (options.selection === "none")
|
|
305
|
+
return nothing;
|
|
306
|
+
// Before the empty-file return below: a file with nothing importable still
|
|
307
|
+
// has to refuse a named connection, or `--name local` against an all-duckdb
|
|
308
|
+
// file imported nothing and exited 0.
|
|
309
|
+
checkSelection(found, options.selection);
|
|
310
|
+
for (const { name, reason } of found.skipped) {
|
|
311
|
+
host.log("info", `Not importing '${name}': ${reason}.`);
|
|
312
|
+
}
|
|
313
|
+
if (found.candidates.length === 0)
|
|
314
|
+
return nothing;
|
|
315
|
+
const explicit = options.selection !== undefined;
|
|
316
|
+
const named = Array.isArray(options.selection);
|
|
317
|
+
let chosen = yield chooseCandidates(found, host, options.selection, flag);
|
|
318
|
+
if (chosen.length === 0)
|
|
319
|
+
return Object.assign(Object.assign({}, nothing), { declined: !explicit });
|
|
320
|
+
if (options.existingNames) {
|
|
321
|
+
const existing = new Set(yield options.existingNames());
|
|
322
|
+
const clashing = chosen.filter((c) => existing.has(c.name));
|
|
323
|
+
if (clashing.length) {
|
|
324
|
+
const names = clashing.map((c) => `'${c.name}'`).join(", ");
|
|
325
|
+
// Skipped, named or not, so re-running the same `cred init
|
|
326
|
+
// --connections warehouse` after it worked is a no-op rather than
|
|
327
|
+
// an error before anything is wired. The server does not refuse a
|
|
328
|
+
// create under an existing name, so this check is the only guard.
|
|
329
|
+
host.log("info", `Not importing ${names}: ${credibleEnvironment} already has ${clashing.length === 1 ? "a connection" : "connections"} with ${clashing.length === 1 ? "that name" : "those names"}, which the local publisher uses. Rename ${clashing.length === 1 ? "it" : "them"} in ${found.path} to import ${clashing.length === 1 ? "it" : "them"} as well.`);
|
|
330
|
+
chosen = chosen.filter((c) => !existing.has(c.name));
|
|
331
|
+
if (chosen.length === 0)
|
|
332
|
+
return nothing;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
const reachable = [];
|
|
336
|
+
const rejected = [];
|
|
337
|
+
for (const candidate of chosen) {
|
|
338
|
+
const result = yield create(candidate.connection, { dryRun: true });
|
|
339
|
+
if (result.ok) {
|
|
340
|
+
reachable.push(candidate);
|
|
341
|
+
host.log("info", ` ${candidate.name}: reachable from Credible.`);
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
rejected.push({ name: candidate.name, reason: result.reason });
|
|
345
|
+
host.log("warn", ` ${candidate.name}: ${result.reason}`);
|
|
346
|
+
}
|
|
347
|
+
const describeRejected = () => rejected.map((r) => `${r.name}: ${r.reason}`).join("; ");
|
|
348
|
+
// Named on the command line and unusable is a failed instruction, not a
|
|
349
|
+
// step to shrug past: the caller asked for these specifically. Stopped
|
|
350
|
+
// before any create, so a re-run with the list fixed starts from nothing.
|
|
351
|
+
if (named && rejected.length) {
|
|
352
|
+
throw new host_1.SetupError(
|
|
353
|
+
// "failed its test", not "could not reach": the dry run also refuses
|
|
354
|
+
// a bad password or a field the server rejects.
|
|
355
|
+
`${rejected.map((r) => `'${r.name}'`).join(", ")} failed Credible's connection test, so nothing was added. ${rejected.length === 1 ? `Credible said: ${rejected[0].reason}` : describeRejected()}`, `correct ${rejected.length === 1 ? "its" : "their"} credentials in ${found.path}, or drop ${rejected.length === 1 ? "it" : "them"} from ${flag.split(" ")[0]}.`);
|
|
356
|
+
}
|
|
357
|
+
if (reachable.length === 0) {
|
|
358
|
+
const message = "None of these are reachable from Credible, so there is nothing to add. A warehouse only this machine can reach has to be exposed to Credible first.";
|
|
359
|
+
if (explicit) {
|
|
360
|
+
throw new host_1.SetupError(message, `fix the connection${rejected.length === 1 ? "" : "s"} (${describeRejected()}), or name only the ones to import.`);
|
|
361
|
+
}
|
|
362
|
+
host.log("warn", message);
|
|
363
|
+
return { created: [], rejected, declined: false };
|
|
364
|
+
}
|
|
365
|
+
if (!explicit) {
|
|
366
|
+
// The second question. The test has already sent the connections; this
|
|
367
|
+
// one decides whether Credible keeps them.
|
|
368
|
+
const confirmed = yield host.confirm(`Store ${reachable.map((c) => c.name).join(", ")} in environment '${credibleEnvironment}'? Credible keeps their credentials to run queries against them.`, {
|
|
369
|
+
flag,
|
|
370
|
+
options: reachable.map((c) => c.name),
|
|
371
|
+
});
|
|
372
|
+
if (!confirmed)
|
|
373
|
+
return { created: [], rejected, declined: true };
|
|
374
|
+
}
|
|
375
|
+
const created = [];
|
|
376
|
+
const failed = [];
|
|
377
|
+
for (const candidate of reachable) {
|
|
378
|
+
const result = yield create(candidate.connection, { dryRun: false });
|
|
379
|
+
if (result.ok) {
|
|
380
|
+
created.push(candidate.name);
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
failed.push({ name: candidate.name, reason: result.reason });
|
|
384
|
+
host.log("warn", `Could not add ${candidate.name}: ${result.reason}`);
|
|
385
|
+
}
|
|
386
|
+
if (created.length) {
|
|
387
|
+
host.log("info", `Added to Credible: ${created.join(", ")}.`);
|
|
388
|
+
}
|
|
389
|
+
// Passed the test and then failed the create. No caller reads `rejected`,
|
|
390
|
+
// so for a selection the caller made, this is where the exit code comes from.
|
|
391
|
+
if (explicit && failed.length) {
|
|
392
|
+
throw new host_1.SetupError(`Could not add ${failed.map((f) => `'${f.name}'`).join(", ")} to environment '${credibleEnvironment}'${created.length ? `; added ${created.join(", ")}` : ""}.`, `fix the reported problem (${failed.map((f) => `${f.name}: ${f.reason}`).join("; ")}) and run this again for ${failed.length === 1 ? "that one" : "those"}.`);
|
|
393
|
+
}
|
|
394
|
+
return { created, rejected: [...rejected, ...failed], declined: false };
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
/** The question `--connections` answers. */
|
|
398
|
+
exports.CONNECTIONS_QUESTION = "Which connections should Credible test? Ticking one sends it to Credible for a reachability test; nothing is saved yet.";
|
|
399
|
+
/** "export X and run this again, or leave it out." from the parts that apply. */
|
|
400
|
+
function describeFix(fixes, fallback) {
|
|
401
|
+
const specific = [...new Set(fixes.filter((f) => Boolean(f)))];
|
|
402
|
+
return specific.length
|
|
403
|
+
? `${specific.join("; ")}, or ${fallback}.`
|
|
404
|
+
: `${fallback}.`;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Refuse a `--connections` list that names a connection the file does not
|
|
408
|
+
* have, listing the ones it does. `--connections warehous` must never import
|
|
409
|
+
* nothing and report success. A name that is in the file but cannot be
|
|
410
|
+
* imported (a `duckdb` or `publisher` connection) is refused with that reason,
|
|
411
|
+
* not as missing.
|
|
412
|
+
*/
|
|
413
|
+
function checkSelection(found, selection) {
|
|
414
|
+
if (!Array.isArray(selection))
|
|
415
|
+
return;
|
|
416
|
+
const names = new Set(found.candidates.map((c) => c.name));
|
|
417
|
+
const skipped = new Map(found.skipped.map((s) => [s.name, s.reason]));
|
|
418
|
+
const skippedFix = new Map(found.skipped.map((s) => [s.name, s.fix]));
|
|
419
|
+
const notImportable = selection.filter((name) => !names.has(name) && skipped.has(name));
|
|
420
|
+
if (notImportable.length) {
|
|
421
|
+
throw new host_1.SetupError(`${notImportable.map((n) => `'${n}' is in ${found.path} but cannot be imported: ${skipped.get(n)}`).join("; ")}.`, describeFix(notImportable.map((n) => skippedFix.get(n)), names.size
|
|
422
|
+
? `leave it out, or pick from: ${[...names].join(", ")}`
|
|
423
|
+
: "leave it out; nothing in that file can be imported"));
|
|
424
|
+
}
|
|
425
|
+
const unknown = selection.filter((name) => !names.has(name));
|
|
426
|
+
if (unknown.length) {
|
|
427
|
+
const named = unknown.map((n) => `'${n}'`).join(", ");
|
|
428
|
+
throw names.size
|
|
429
|
+
? new host_1.SetupError(`No connection named ${named} in ${found.path}.`, `pick from: ${[...names].join(", ")}.`)
|
|
430
|
+
: new host_1.SetupError(`No connection named ${named} in ${found.path}, and nothing in that file can be imported.`, "add the connection to that file, or leave the name out.");
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Resolve a selection to candidates: by flag when given, by picker otherwise.
|
|
435
|
+
* A name given twice is tested and created once.
|
|
436
|
+
*/
|
|
437
|
+
function chooseCandidates(found, host, selection, flag) {
|
|
438
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
439
|
+
const byName = new Map(found.candidates.map((c) => [c.name, c]));
|
|
440
|
+
if (selection === "all")
|
|
441
|
+
return found.candidates;
|
|
442
|
+
if (Array.isArray(selection)) {
|
|
443
|
+
checkSelection(found, selection);
|
|
444
|
+
return [...new Set(selection)].map((name) => byName.get(name));
|
|
445
|
+
}
|
|
446
|
+
const summary = found.candidates
|
|
447
|
+
.map((c) => ` ${c.name} (${c.type})${c.describe ? ` — ${c.describe}` : ""}`)
|
|
448
|
+
.join("\n");
|
|
449
|
+
host.log("info", `Found ${found.candidates.length} connection(s) in ${found.path}:\n${summary}`);
|
|
450
|
+
// The skipped rows are shown disabled so the user sees why a connection
|
|
451
|
+
// they know is in the file is not on offer, rather than wondering.
|
|
452
|
+
return host.selectMany(exports.CONNECTIONS_QUESTION, [
|
|
453
|
+
...found.candidates.map((candidate) => ({
|
|
454
|
+
name: `${candidate.name} (${candidate.type})${candidate.describe ? ` — ${candidate.describe}` : ""}`,
|
|
455
|
+
value: candidate,
|
|
456
|
+
})),
|
|
457
|
+
// Only the name: the picker prints `disabled` after it in parentheses,
|
|
458
|
+
// so putting the reason in both printed it twice.
|
|
459
|
+
...found.skipped.map(({ name, reason }) => ({
|
|
460
|
+
name,
|
|
461
|
+
value: undefined,
|
|
462
|
+
disabled: reason,
|
|
463
|
+
})),
|
|
464
|
+
], {
|
|
465
|
+
flag,
|
|
466
|
+
options: found.candidates.map((c) => c.name),
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=importconnections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importconnections.js","sourceRoot":"","sources":["../../src/setup-core/importconnections.ts"],"names":[],"mappings":"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"}
|