@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 @@
|
|
|
1
|
+
{"version":3,"file":"mcpconfig.spec.js","sourceRoot":"","sources":["../../src/setup-core/mcpconfig.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PACKAGE_MANIFEST_FILE = void 0;
|
|
7
|
+
exports.ensurePackageManifest = ensurePackageManifest;
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const writefile_1 = require("./writefile");
|
|
11
|
+
/**
|
|
12
|
+
* `publisher.json` — the file that makes a directory a *package* rather than a
|
|
13
|
+
* folder that happens to contain `.malloy` files.
|
|
14
|
+
*
|
|
15
|
+
* Without it the server loads the environment, finds the mounted directory, and
|
|
16
|
+
* then fails the package with *"Package manifest for … does not exist"* — which
|
|
17
|
+
* it reports as a load error while still binding both ports. So adopting an
|
|
18
|
+
* existing checkout (plan §5.4 source B) needs this written, and the plan did
|
|
19
|
+
* not say so: it assumed a directory a user points at is already a package,
|
|
20
|
+
* which is true for a clone of a published package and false for the loose
|
|
21
|
+
* folder of models that "use this directory" is mostly aimed at.
|
|
22
|
+
*
|
|
23
|
+
* Written only when absent. A package that already has a manifest keeps its own
|
|
24
|
+
* name, version, and description — those are the author's, not ours.
|
|
25
|
+
*/
|
|
26
|
+
exports.PACKAGE_MANIFEST_FILE = "publisher.json";
|
|
27
|
+
function ensurePackageManifest(directory, fallbackName) {
|
|
28
|
+
const filePath = path_1.default.join(directory, exports.PACKAGE_MANIFEST_FILE);
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(fs_1.default.readFileSync(filePath, "utf-8"));
|
|
31
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
32
|
+
const existingName = typeof parsed.name === "string" && parsed.name
|
|
33
|
+
? parsed.name
|
|
34
|
+
: fallbackName;
|
|
35
|
+
return {
|
|
36
|
+
filePath,
|
|
37
|
+
action: "kept",
|
|
38
|
+
name: existingName,
|
|
39
|
+
missingVersion: typeof parsed.version !== "string" || !parsed.version,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Present but not an object: fall through and replace it, since the
|
|
43
|
+
// server cannot load it either way.
|
|
44
|
+
}
|
|
45
|
+
catch (_a) {
|
|
46
|
+
// Absent or unparseable — write one.
|
|
47
|
+
}
|
|
48
|
+
// `version` is not optional in practice: `cred publish` sends it as the
|
|
49
|
+
// version id, and a manifest without one reached the server as
|
|
50
|
+
// `version undefined` and came back as a 500. `0.0.1` is the conventional
|
|
51
|
+
// first version; the author bumps it from there.
|
|
52
|
+
(0, writefile_1.writeFileAtomic)(filePath, `${JSON.stringify({ name: fallbackName, version: "0.0.1", description: "" }, null, 3)}\n`);
|
|
53
|
+
return { filePath, action: "created", name: fallbackName };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=packagemanifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packagemanifest.js","sourceRoot":"","sources":["../../src/setup-core/packagemanifest.ts"],"names":[],"mappings":";;;;;;AAkCA,sDAwCC;AA1ED,4CAAoB;AACpB,gDAAwB;AACxB,2CAA8C;AAE9C;;;;;;;;;;;;;;GAcG;AAEU,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AActD,SAAgB,qBAAqB,CAClC,SAAiB,EACjB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAAqB,CAAC,CAAC;IAE7D,IAAI,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,MAAM,YAAY,GACf,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI;gBAC3C,CAAC,CAAC,MAAM,CAAC,IAAI;gBACb,CAAC,CAAC,YAAY,CAAC;YACrB,OAAO;gBACJ,QAAQ;gBACR,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,YAAY;gBAClB,cAAc,EACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO;aAC1D,CAAC;QACL,CAAC;QACD,oEAAoE;QACpE,oCAAoC;IACvC,CAAC;IAAC,WAAM,CAAC;QACN,qCAAqC;IACxC,CAAC;IAED,wEAAwE;IACxE,+DAA+D;IAC/D,0EAA0E;IAC1E,iDAAiD;IACjD,IAAA,2BAAe,EACZ,QAAQ,EACR,GAAG,IAAI,CAAC,SAAS,CACd,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EACzD,IAAI,EACJ,CAAC,CACH,IAAI,CACP,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
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.DERIVED_RANGE = exports.MIN_UI_PORT = exports.MAX_UI_PORT = exports.MCP_OFFSET = exports.DEFAULT_MCP_PORT = exports.DEFAULT_UI_PORT = void 0;
|
|
16
|
+
exports.isPortFree = isPortFree;
|
|
17
|
+
exports.pairIsFree = pairIsFree;
|
|
18
|
+
exports.pairForUiPort = pairForUiPort;
|
|
19
|
+
exports.suggestFreePair = suggestFreePair;
|
|
20
|
+
exports.derivePairForDirectory = derivePairForDirectory;
|
|
21
|
+
exports.derivedCandidates = derivedCandidates;
|
|
22
|
+
exports.allocatePortPair = allocatePortPair;
|
|
23
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
24
|
+
const net_1 = __importDefault(require("net"));
|
|
25
|
+
/**
|
|
26
|
+
* Choosing the port pair a local Publisher session listens on.
|
|
27
|
+
*
|
|
28
|
+
* ## Why not just ask for an ephemeral port
|
|
29
|
+
*
|
|
30
|
+
* The server accepts `--port 0 --mcp_port 0` and reports what it bound, which
|
|
31
|
+
* looks like the easy answer to two sessions colliding. It is the wrong answer,
|
|
32
|
+
* and the server itself says so: with an ephemeral MCP port it refuses to write
|
|
33
|
+
* `.mcp.json` at all, because "the port changes from run to run and a saved
|
|
34
|
+
* config would be wrong next boot".
|
|
35
|
+
*
|
|
36
|
+
* That reasoning applies to us. `.mcp.json` is a file an agent reads tomorrow,
|
|
37
|
+
* not just for the length of this session. A port that moves every run turns it
|
|
38
|
+
* into a file that silently points at nothing — the failure shows up as an agent
|
|
39
|
+
* whose tools have quietly stopped working, which is far worse than a port
|
|
40
|
+
* conflict at startup.
|
|
41
|
+
*
|
|
42
|
+
* So ports must be *stable for a directory*: the same working directory gets the
|
|
43
|
+
* same pair every run, while two different directories get different pairs.
|
|
44
|
+
*/
|
|
45
|
+
/** The ports a user recognises, and what we try first. */
|
|
46
|
+
exports.DEFAULT_UI_PORT = 4000;
|
|
47
|
+
exports.DEFAULT_MCP_PORT = 4040;
|
|
48
|
+
/**
|
|
49
|
+
* Where derived pairs are drawn from: the IANA dynamic/private range, above the
|
|
50
|
+
* registered range so we are not squatting on a service someone might install.
|
|
51
|
+
*/
|
|
52
|
+
const DERIVED_RANGE_START = 49152;
|
|
53
|
+
const DERIVED_RANGE_END = 65500;
|
|
54
|
+
/** MCP sits this far above the UI port, mirroring the 4000/4040 default. */
|
|
55
|
+
exports.MCP_OFFSET = 40;
|
|
56
|
+
/** Step between pairs, so consecutive derived pairs cannot interleave. */
|
|
57
|
+
const DERIVED_STRIDE = exports.MCP_OFFSET * 2;
|
|
58
|
+
/**
|
|
59
|
+
* How many pairs the range holds. Derived once and shared by the hash and the
|
|
60
|
+
* fallback search, so they cannot disagree about where the range ends.
|
|
61
|
+
*/
|
|
62
|
+
const DERIVED_SLOTS = Math.floor((DERIVED_RANGE_END - exports.MCP_OFFSET - DERIVED_RANGE_START) / DERIVED_STRIDE);
|
|
63
|
+
/** Is `port` free to bind on `host`? */
|
|
64
|
+
function isPortFree(port, host = "127.0.0.1") {
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const probe = net_1.default.createServer();
|
|
67
|
+
probe.once("error", () => resolve(false));
|
|
68
|
+
probe.once("listening", () => probe.close(() => resolve(true)));
|
|
69
|
+
// exclusive: do not share the port with another handle in this process,
|
|
70
|
+
// which would report free a port we cannot actually own.
|
|
71
|
+
probe.listen({ port, host, exclusive: true });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function pairIsFree(pair_1) {
|
|
75
|
+
return __awaiter(this, arguments, void 0, function* (pair, host = "127.0.0.1") {
|
|
76
|
+
// Sequential rather than concurrent: the two probes must not race each other
|
|
77
|
+
// for the same port when uiPort and mcpPort happen to be adjacent.
|
|
78
|
+
return ((yield isPortFree(pair.uiPort, host)) &&
|
|
79
|
+
(yield isPortFree(pair.mcpPort, host)));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** The pair `--port` names: the UI port, and MCP the usual distance above it. */
|
|
83
|
+
function pairForUiPort(uiPort) {
|
|
84
|
+
return { uiPort, mcpPort: uiPort + exports.MCP_OFFSET };
|
|
85
|
+
}
|
|
86
|
+
/** The highest UI port `--port` accepts, so the MCP port above it is valid. */
|
|
87
|
+
exports.MAX_UI_PORT = 65535 - exports.MCP_OFFSET;
|
|
88
|
+
/** The lowest UI port `--port` accepts: above the privileged range. */
|
|
89
|
+
exports.MIN_UI_PORT = 1024;
|
|
90
|
+
/**
|
|
91
|
+
* A free pair to offer in a port-conflict error, so the fix names a number
|
|
92
|
+
* rather than telling the reader to go find one. The directory's own derived
|
|
93
|
+
* pairs, the ones `cred` would have picked itself; undefined when none in the
|
|
94
|
+
* first few is free.
|
|
95
|
+
*/
|
|
96
|
+
function suggestFreePair(directory_1) {
|
|
97
|
+
return __awaiter(this, arguments, void 0, function* (directory, host = "127.0.0.1") {
|
|
98
|
+
for (const candidate of derivedCandidates(directory, 8)) {
|
|
99
|
+
if (yield pairIsFree(candidate, host))
|
|
100
|
+
return candidate;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The pair a given directory prefers, derived from its path.
|
|
107
|
+
*
|
|
108
|
+
* Deterministic so the same directory lands on the same pair every run, and
|
|
109
|
+
* spread out so two directories are unlikely to collide. Exported for tests and
|
|
110
|
+
* for the caller that wants to report the pair before binding it.
|
|
111
|
+
*/
|
|
112
|
+
function derivePairForDirectory(directory) {
|
|
113
|
+
const digest = crypto_1.default.createHash("sha256").update(directory).digest();
|
|
114
|
+
const slot = digest.readUInt32BE(0) % DERIVED_SLOTS;
|
|
115
|
+
return pairForUiPort(DERIVED_RANGE_START + slot * DERIVED_STRIDE);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The pairs to try for a directory, in order, starting at its derived pair.
|
|
119
|
+
*
|
|
120
|
+
* Separate from the probing loop because it is the part with the arithmetic in
|
|
121
|
+
* it, and the part worth asserting directly: the sequence wraps to the bottom of
|
|
122
|
+
* the range rather than stopping at the top, so every directory gets the whole
|
|
123
|
+
* budget. The previous loop walked forward and broke at the range end, which
|
|
124
|
+
* gave a directory whose hash landed near 65500 one or two probes and then said
|
|
125
|
+
* "after 32 attempts".
|
|
126
|
+
*
|
|
127
|
+
* Never longer than the range holds, so `attempts` cannot make it repeat a pair
|
|
128
|
+
* and then report having tried more than it did.
|
|
129
|
+
*/
|
|
130
|
+
function derivedCandidates(directory, attempts) {
|
|
131
|
+
const base = derivePairForDirectory(directory);
|
|
132
|
+
const baseSlot = (base.uiPort - DERIVED_RANGE_START) / DERIVED_STRIDE;
|
|
133
|
+
const budget = Math.max(0, Math.min(attempts, DERIVED_SLOTS));
|
|
134
|
+
const pairs = [];
|
|
135
|
+
for (let step = 0; step < budget; step++) {
|
|
136
|
+
pairs.push(pairForUiPort(DERIVED_RANGE_START +
|
|
137
|
+
((baseSlot + step) % DERIVED_SLOTS) * DERIVED_STRIDE));
|
|
138
|
+
}
|
|
139
|
+
return pairs;
|
|
140
|
+
}
|
|
141
|
+
/** The top and bottom of the derived range, for tests that assert the wrap. */
|
|
142
|
+
exports.DERIVED_RANGE = {
|
|
143
|
+
start: DERIVED_RANGE_START,
|
|
144
|
+
end: DERIVED_RANGE_END,
|
|
145
|
+
stride: DERIVED_STRIDE,
|
|
146
|
+
slots: DERIVED_SLOTS,
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Pick the pair this session should bind.
|
|
150
|
+
*
|
|
151
|
+
* Precedence, so a returning user keeps the URL they bookmarked:
|
|
152
|
+
* 1. `preferred` — the pair this directory used last, from `.credible/config.json`.
|
|
153
|
+
* 2. 4000/4040, the memorable default.
|
|
154
|
+
* 3. The pair derived from the directory path, then successive strides from it.
|
|
155
|
+
*
|
|
156
|
+
* @throws SetupError-worthy Error when nothing in the search window is free,
|
|
157
|
+
* which in practice means something is very wrong rather than busy.
|
|
158
|
+
*/
|
|
159
|
+
function allocatePortPair(directory_1) {
|
|
160
|
+
return __awaiter(this, arguments, void 0, function* (directory, options = {}) {
|
|
161
|
+
var _a, _b, _c;
|
|
162
|
+
const host = (_a = options.host) !== null && _a !== void 0 ? _a : "127.0.0.1";
|
|
163
|
+
const attempts = (_b = options.attempts) !== null && _b !== void 0 ? _b : 32;
|
|
164
|
+
if (options.preferred && (yield pairIsFree(options.preferred, host))) {
|
|
165
|
+
return Object.assign(Object.assign({}, options.preferred), { derived: options.preferred.uiPort !== exports.DEFAULT_UI_PORT ||
|
|
166
|
+
options.preferred.mcpPort !== exports.DEFAULT_MCP_PORT });
|
|
167
|
+
}
|
|
168
|
+
const fallback = { uiPort: exports.DEFAULT_UI_PORT, mcpPort: exports.DEFAULT_MCP_PORT };
|
|
169
|
+
if (yield pairIsFree(fallback, host)) {
|
|
170
|
+
return Object.assign(Object.assign({}, fallback), { derived: false });
|
|
171
|
+
}
|
|
172
|
+
const candidates = derivedCandidates(directory, attempts);
|
|
173
|
+
for (const candidate of candidates) {
|
|
174
|
+
if (yield pairIsFree(candidate, host)) {
|
|
175
|
+
return Object.assign(Object.assign({}, candidate), { derived: true });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
throw new Error(`Could not find a free port pair for ${directory} after ${candidates.length} attempts. ` +
|
|
179
|
+
`Fix: stop whatever is holding ports around ${(_c = candidates[0]) === null || _c === void 0 ? void 0 : _c.uiPort}, or free ${exports.DEFAULT_UI_PORT} and ${exports.DEFAULT_MCP_PORT}.`);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=ports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/setup-core/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
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
|
+
const chai_1 = require("chai");
|
|
16
|
+
const net_1 = __importDefault(require("net"));
|
|
17
|
+
const ports_1 = require("./ports");
|
|
18
|
+
/** Hold a port for the duration of one test. */
|
|
19
|
+
function occupy(port) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const server = net_1.default.createServer();
|
|
22
|
+
yield new Promise((resolve, reject) => {
|
|
23
|
+
server.once("error", reject);
|
|
24
|
+
server.listen({ port, host: "127.0.0.1", exclusive: true }, () => resolve());
|
|
25
|
+
});
|
|
26
|
+
return () => new Promise((resolve) => server.close(() => resolve()));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
describe("ports", () => {
|
|
30
|
+
describe("derivePairForDirectory", () => {
|
|
31
|
+
it("is deterministic — the same directory always gets the same pair", () => {
|
|
32
|
+
// This is the whole point. An ephemeral port would make `.mcp.json`
|
|
33
|
+
// wrong on the next boot, which is why the server refuses to write one.
|
|
34
|
+
const first = (0, ports_1.derivePairForDirectory)("/home/me/models");
|
|
35
|
+
const second = (0, ports_1.derivePairForDirectory)("/home/me/models");
|
|
36
|
+
(0, chai_1.expect)(first).to.eql(second);
|
|
37
|
+
});
|
|
38
|
+
it("gives different directories different pairs", () => {
|
|
39
|
+
(0, chai_1.expect)((0, ports_1.derivePairForDirectory)("/home/me/a")).to.not.eql((0, ports_1.derivePairForDirectory)("/home/me/b"));
|
|
40
|
+
});
|
|
41
|
+
it("keeps the MCP port 40 above the UI port, as the defaults do", () => {
|
|
42
|
+
const pair = (0, ports_1.derivePairForDirectory)("/home/me/models");
|
|
43
|
+
(0, chai_1.expect)(pair.mcpPort - pair.uiPort).to.equal(40);
|
|
44
|
+
});
|
|
45
|
+
it("stays inside the dynamic/private range", () => {
|
|
46
|
+
for (const dir of ["/a", "/b", "/c/d/e", "/very/long/path/indeed"]) {
|
|
47
|
+
const pair = (0, ports_1.derivePairForDirectory)(dir);
|
|
48
|
+
(0, chai_1.expect)(pair.uiPort).to.be.at.least(49152);
|
|
49
|
+
(0, chai_1.expect)(pair.mcpPort).to.be.at.most(65535);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe("derivedCandidates", () => {
|
|
54
|
+
it("starts at the directory's own pair", () => {
|
|
55
|
+
(0, chai_1.expect)((0, ports_1.derivedCandidates)("/some/dir", 3)[0]).to.eql((0, ports_1.derivePairForDirectory)("/some/dir"));
|
|
56
|
+
});
|
|
57
|
+
it("gives every directory the whole budget, wrapping at the range end", () => {
|
|
58
|
+
// A directory whose hash lands near the top used to get one or two
|
|
59
|
+
// probes and then report "after 32 attempts": the search walked forward
|
|
60
|
+
// and broke as soon as a candidate would leave the range. Found by
|
|
61
|
+
// searching for the directory whose base IS the last slot, so the
|
|
62
|
+
// regression is exercised rather than described.
|
|
63
|
+
const lastSlotBase = ports_1.DERIVED_RANGE.start +
|
|
64
|
+
(ports_1.DERIVED_RANGE.slots - 1) * ports_1.DERIVED_RANGE.stride;
|
|
65
|
+
let atTop;
|
|
66
|
+
for (let i = 0; i < 200000 && !atTop; i++) {
|
|
67
|
+
if ((0, ports_1.derivePairForDirectory)(`/d${i}`).uiPort === lastSlotBase) {
|
|
68
|
+
atTop = `/d${i}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
(0, chai_1.expect)(atTop, "no directory hashes to the last slot").to.be.a("string");
|
|
72
|
+
const candidates = (0, ports_1.derivedCandidates)(atTop, 32);
|
|
73
|
+
(0, chai_1.expect)(candidates).to.have.lengthOf(32);
|
|
74
|
+
(0, chai_1.expect)(candidates[0].uiPort).to.equal(lastSlotBase);
|
|
75
|
+
// The one after the last slot is the first, not a port outside the
|
|
76
|
+
// range and not the end of the search.
|
|
77
|
+
(0, chai_1.expect)(candidates[1].uiPort).to.equal(ports_1.DERIVED_RANGE.start);
|
|
78
|
+
for (const pair of candidates) {
|
|
79
|
+
(0, chai_1.expect)(pair.uiPort).to.be.at.least(ports_1.DERIVED_RANGE.start);
|
|
80
|
+
(0, chai_1.expect)(pair.mcpPort).to.be.at.most(ports_1.DERIVED_RANGE.end);
|
|
81
|
+
}
|
|
82
|
+
(0, chai_1.expect)(new Set(candidates.map((p) => p.uiPort)).size).to.equal(32);
|
|
83
|
+
});
|
|
84
|
+
it("never repeats a pair, however large the budget", () => {
|
|
85
|
+
// The error message counts what was tried, so a sequence longer than
|
|
86
|
+
// the range holds would claim probes it did not make.
|
|
87
|
+
const candidates = (0, ports_1.derivedCandidates)("/some/dir", ports_1.DERIVED_RANGE.slots + 50);
|
|
88
|
+
(0, chai_1.expect)(candidates).to.have.lengthOf(ports_1.DERIVED_RANGE.slots);
|
|
89
|
+
(0, chai_1.expect)(new Set(candidates.map((p) => p.uiPort)).size).to.equal(ports_1.DERIVED_RANGE.slots);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("isPortFree", () => {
|
|
93
|
+
it("reports an occupied port as not free", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
94
|
+
const pair = (0, ports_1.derivePairForDirectory)("/isPortFree/test");
|
|
95
|
+
const release = yield occupy(pair.uiPort);
|
|
96
|
+
try {
|
|
97
|
+
(0, chai_1.expect)(yield (0, ports_1.isPortFree)(pair.uiPort)).to.equal(false);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
yield release();
|
|
101
|
+
}
|
|
102
|
+
(0, chai_1.expect)(yield (0, ports_1.isPortFree)(pair.uiPort)).to.equal(true);
|
|
103
|
+
}));
|
|
104
|
+
});
|
|
105
|
+
describe("allocatePortPair", () => {
|
|
106
|
+
it("prefers the pair this directory used last, so the URL stays stable", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
const preferred = { uiPort: 51000, mcpPort: 51040 };
|
|
108
|
+
const allocation = yield (0, ports_1.allocatePortPair)("/some/dir", { preferred });
|
|
109
|
+
(0, chai_1.expect)(allocation).to.eql(Object.assign(Object.assign({}, preferred), { derived: true }));
|
|
110
|
+
}));
|
|
111
|
+
it("falls back to the memorable default when there is no stored pair", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
112
|
+
// Skip rather than fail if something on this machine already holds 4000
|
|
113
|
+
// — a false failure here would be about the developer's laptop, not the
|
|
114
|
+
// code.
|
|
115
|
+
if (!(yield (0, ports_1.isPortFree)(ports_1.DEFAULT_UI_PORT)) ||
|
|
116
|
+
!(yield (0, ports_1.isPortFree)(ports_1.DEFAULT_MCP_PORT))) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const allocation = yield (0, ports_1.allocatePortPair)("/some/dir");
|
|
120
|
+
(0, chai_1.expect)(allocation).to.eql({
|
|
121
|
+
uiPort: ports_1.DEFAULT_UI_PORT,
|
|
122
|
+
mcpPort: ports_1.DEFAULT_MCP_PORT,
|
|
123
|
+
derived: false,
|
|
124
|
+
});
|
|
125
|
+
}));
|
|
126
|
+
it("derives a pair when the stored one is taken", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
+
const preferred = { uiPort: 51100, mcpPort: 51140 };
|
|
128
|
+
const release = yield occupy(preferred.uiPort);
|
|
129
|
+
try {
|
|
130
|
+
const allocation = yield (0, ports_1.allocatePortPair)("/derive/me", {
|
|
131
|
+
preferred,
|
|
132
|
+
});
|
|
133
|
+
(0, chai_1.expect)(allocation.uiPort).to.not.equal(preferred.uiPort);
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
yield release();
|
|
137
|
+
}
|
|
138
|
+
}));
|
|
139
|
+
it("never returns a pair whose MCP port is taken, even if the UI port is free", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
140
|
+
// Both listeners come from one process; a half-free pair fails at boot
|
|
141
|
+
// with EADDRINUSE after setup has already claimed success.
|
|
142
|
+
const preferred = { uiPort: 51200, mcpPort: 51240 };
|
|
143
|
+
const release = yield occupy(preferred.mcpPort);
|
|
144
|
+
try {
|
|
145
|
+
const allocation = yield (0, ports_1.allocatePortPair)("/half/free", {
|
|
146
|
+
preferred,
|
|
147
|
+
});
|
|
148
|
+
(0, chai_1.expect)(allocation.mcpPort).to.not.equal(preferred.mcpPort);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
yield release();
|
|
152
|
+
}
|
|
153
|
+
}));
|
|
154
|
+
it("gives up with an actionable message rather than searching forever", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
155
|
+
let thrown;
|
|
156
|
+
try {
|
|
157
|
+
yield (0, ports_1.allocatePortPair)("/nowhere/free", {
|
|
158
|
+
preferred: { uiPort: 1, mcpPort: 2 },
|
|
159
|
+
attempts: 0,
|
|
160
|
+
// Port 4000/4040 may be free on this machine, so force the
|
|
161
|
+
// fallback path by pointing the probe at an unusable host.
|
|
162
|
+
host: "203.0.113.1",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
thrown = error;
|
|
167
|
+
}
|
|
168
|
+
(0, chai_1.expect)(thrown === null || thrown === void 0 ? void 0 : thrown.message).to.contain("Could not find a free port pair");
|
|
169
|
+
(0, chai_1.expect)(thrown === null || thrown === void 0 ? void 0 : thrown.message).to.contain("Fix:");
|
|
170
|
+
}));
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=ports.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.spec.js","sourceRoot":"","sources":["../../src/setup-core/ports.spec.ts"],"names":[],"mappings":"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"}
|