@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
package/src/logger.spec.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import sinon from "sinon";
|
|
3
|
-
import { AxiosError } from "axios";
|
|
4
|
-
import { logger, logAxiosError } from "./logger";
|
|
5
|
-
|
|
6
|
-
describe("logAxiosError", () => {
|
|
7
|
-
let loggerStub: sinon.SinonStubbedInstance<typeof logger>;
|
|
8
|
-
let sandbox: sinon.SinonSandbox;
|
|
9
|
-
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
sandbox = sinon.createSandbox();
|
|
12
|
-
loggerStub = sandbox.stub(logger);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
sandbox.restore();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("should log 401 Unauthorized error", () => {
|
|
20
|
-
const error = {
|
|
21
|
-
response: {
|
|
22
|
-
status: 401,
|
|
23
|
-
data: null,
|
|
24
|
-
},
|
|
25
|
-
request: { path: "/api/test" },
|
|
26
|
-
isAxiosError: true,
|
|
27
|
-
} as unknown as AxiosError;
|
|
28
|
-
|
|
29
|
-
logAxiosError(error, false);
|
|
30
|
-
|
|
31
|
-
expect(loggerStub.error.calledWith(sinon.match("Unauthorized"))).to.be
|
|
32
|
-
.true;
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("should log 403 Forbidden error", () => {
|
|
36
|
-
const error = {
|
|
37
|
-
response: {
|
|
38
|
-
status: 403,
|
|
39
|
-
data: null,
|
|
40
|
-
},
|
|
41
|
-
request: { path: "/api/test" },
|
|
42
|
-
isAxiosError: true,
|
|
43
|
-
} as unknown as AxiosError;
|
|
44
|
-
|
|
45
|
-
logAxiosError(error, false);
|
|
46
|
-
|
|
47
|
-
expect(loggerStub.error.calledWith(sinon.match("Forbidden"))).to.be.true;
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should log 500 Internal Server Error", () => {
|
|
51
|
-
const error = {
|
|
52
|
-
response: {
|
|
53
|
-
status: 500,
|
|
54
|
-
data: null,
|
|
55
|
-
},
|
|
56
|
-
request: { path: "/api/test" },
|
|
57
|
-
isAxiosError: true,
|
|
58
|
-
} as unknown as AxiosError;
|
|
59
|
-
|
|
60
|
-
logAxiosError(error, false);
|
|
61
|
-
|
|
62
|
-
expect(loggerStub.error.calledWith(sinon.match("Internal Server Error")))
|
|
63
|
-
.to.be.true;
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("should log response data when present", () => {
|
|
67
|
-
const error = {
|
|
68
|
-
response: {
|
|
69
|
-
status: 400,
|
|
70
|
-
data: "Bad request details",
|
|
71
|
-
},
|
|
72
|
-
request: { path: "/api/test" },
|
|
73
|
-
isAxiosError: true,
|
|
74
|
-
} as unknown as AxiosError;
|
|
75
|
-
|
|
76
|
-
logAxiosError(error, false);
|
|
77
|
-
|
|
78
|
-
expect(loggerStub.error.calledWith(sinon.match("Bad request details"))).to
|
|
79
|
-
.be.true;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it("should log debug info with status and path when debug is true", () => {
|
|
83
|
-
const error = {
|
|
84
|
-
response: {
|
|
85
|
-
status: 401,
|
|
86
|
-
data: null,
|
|
87
|
-
},
|
|
88
|
-
request: { path: "/api/test" },
|
|
89
|
-
isAxiosError: true,
|
|
90
|
-
} as unknown as AxiosError;
|
|
91
|
-
|
|
92
|
-
logAxiosError(error, true);
|
|
93
|
-
|
|
94
|
-
expect(loggerStub.error.calledWith(sinon.match("Error 401 at /api/test")))
|
|
95
|
-
.to.be.true;
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it("should not log debug info when debug is false", () => {
|
|
99
|
-
const error = {
|
|
100
|
-
response: {
|
|
101
|
-
status: 401,
|
|
102
|
-
data: null,
|
|
103
|
-
},
|
|
104
|
-
request: { path: "/api/test" },
|
|
105
|
-
isAxiosError: true,
|
|
106
|
-
} as unknown as AxiosError;
|
|
107
|
-
|
|
108
|
-
logAxiosError(error, false);
|
|
109
|
-
|
|
110
|
-
expect(loggerStub.error.calledWith(sinon.match("Error 401 at"))).to.be
|
|
111
|
-
.false;
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
it("should handle request error with no response", () => {
|
|
115
|
-
const error = {
|
|
116
|
-
response: undefined,
|
|
117
|
-
request: {
|
|
118
|
-
_options: {
|
|
119
|
-
method: "GET",
|
|
120
|
-
path: "/api/resource",
|
|
121
|
-
hostname: "example.com",
|
|
122
|
-
port: 443,
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
code: "ECONNREFUSED",
|
|
126
|
-
message: "Connection refused",
|
|
127
|
-
isAxiosError: true,
|
|
128
|
-
} as unknown as AxiosError;
|
|
129
|
-
|
|
130
|
-
logAxiosError(error, false);
|
|
131
|
-
|
|
132
|
-
expect(
|
|
133
|
-
loggerStub.error.calledWith(
|
|
134
|
-
sinon.match(
|
|
135
|
-
"Failed to GET resource /api/resource on example.com:443",
|
|
136
|
-
),
|
|
137
|
-
),
|
|
138
|
-
).to.be.true;
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it("should handle setup error with no request or response", () => {
|
|
142
|
-
const error = {
|
|
143
|
-
response: undefined,
|
|
144
|
-
request: undefined,
|
|
145
|
-
message: "Invalid URL",
|
|
146
|
-
isAxiosError: true,
|
|
147
|
-
} as unknown as AxiosError;
|
|
148
|
-
|
|
149
|
-
logAxiosError(error, false);
|
|
150
|
-
|
|
151
|
-
expect(
|
|
152
|
-
(loggerStub.error as sinon.SinonStub).calledWith(
|
|
153
|
-
"Error",
|
|
154
|
-
"Invalid URL",
|
|
155
|
-
),
|
|
156
|
-
).to.be.true;
|
|
157
|
-
});
|
|
158
|
-
});
|
package/src/logger.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { AxiosError } from "axios";
|
|
2
|
-
import kleur from "kleur";
|
|
3
|
-
import winston from "winston";
|
|
4
|
-
|
|
5
|
-
const logColors = {
|
|
6
|
-
error: kleur.red,
|
|
7
|
-
warn: kleur.yellow,
|
|
8
|
-
info: kleur.cyan,
|
|
9
|
-
http: kleur.magenta,
|
|
10
|
-
debug: kleur.gray,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
// Custom console log format
|
|
14
|
-
const consoleFormat = winston.format.printf(({ level, message, timestamp }) => {
|
|
15
|
-
const colorFn = logColors[level] || ((text: string) => text);
|
|
16
|
-
return `[${kleur.gray(timestamp as string)}] ${colorFn(level.toUpperCase())}: ${message}`;
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
// Create Winston logger
|
|
20
|
-
export const logger = winston.createLogger({
|
|
21
|
-
level: "debug",
|
|
22
|
-
format: winston.format.combine(
|
|
23
|
-
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
|
|
24
|
-
winston.format.errors({ stack: true }),
|
|
25
|
-
winston.format.splat(),
|
|
26
|
-
),
|
|
27
|
-
transports: [
|
|
28
|
-
// Console transport with colored logs. Error/warn go to stderr so they
|
|
29
|
-
// never pollute stdout — commands like `cred ls packages` print JSON to
|
|
30
|
-
// stdout, and a log line landing there makes downstream `JSON.parse`
|
|
31
|
-
// (e.g. the e2e harness) fail cryptically.
|
|
32
|
-
new winston.transports.Console({
|
|
33
|
-
format: consoleFormat,
|
|
34
|
-
stderrLevels: ["error", "warn"],
|
|
35
|
-
}),
|
|
36
|
-
|
|
37
|
-
// NOTE disabled app.log logging
|
|
38
|
-
// File transport (logs without colors)
|
|
39
|
-
// new winston.transports.File({
|
|
40
|
-
// filename: "app.log",
|
|
41
|
-
// level: "info",
|
|
42
|
-
// format: winston.format.json(),
|
|
43
|
-
// }),
|
|
44
|
-
],
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
export const logAxiosError = (error: AxiosError, debug: boolean) => {
|
|
48
|
-
if (error.response) {
|
|
49
|
-
// The request was made and the server responded with a status code
|
|
50
|
-
// that falls out of the range of 2xx
|
|
51
|
-
if (debug) {
|
|
52
|
-
logger.error(
|
|
53
|
-
`Error ${error.response.status} at ${error.request.path}`,
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
switch (error.response.status) {
|
|
57
|
-
case 401:
|
|
58
|
-
logger.error(
|
|
59
|
-
"Unauthorized: Please double check that you are logged in",
|
|
60
|
-
);
|
|
61
|
-
break;
|
|
62
|
-
case 403:
|
|
63
|
-
logger.error(
|
|
64
|
-
"Forbidden: You're not allowed to perform this operation",
|
|
65
|
-
);
|
|
66
|
-
break;
|
|
67
|
-
case 500:
|
|
68
|
-
logger.error("Internal Server Error");
|
|
69
|
-
break;
|
|
70
|
-
default:
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
if (error.response.data) {
|
|
74
|
-
logger.error(error.response.data);
|
|
75
|
-
}
|
|
76
|
-
} else if (error.request) {
|
|
77
|
-
// The request was made but no response was received
|
|
78
|
-
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
|
|
79
|
-
// http.ClientRequest in node.js
|
|
80
|
-
const requestOptions = error.request._options;
|
|
81
|
-
logger.error(
|
|
82
|
-
`Failed to ${requestOptions.method} resource ${requestOptions.path} on ${requestOptions.hostname}:${requestOptions.port}`,
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
logger.error(error.code, error.message);
|
|
86
|
-
} else {
|
|
87
|
-
// Something happened in setting up the request that triggered an Error
|
|
88
|
-
logger.error("Error", error.message);
|
|
89
|
-
}
|
|
90
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-vars -- reserved for future globalThis polyfill */
|
|
2
|
-
import { File, Blob } from "formdata-node";
|
|
3
|
-
|
|
4
|
-
// TODO: Polyfill leads to errors when pushing packages.
|
|
5
|
-
//globalThis.File = File as unknown as typeof globalThis.File;
|
|
6
|
-
//globalThis.Blob = Blob as unknown as typeof globalThis.Blob;
|
package/src/utils.spec.ts
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import axios from "axios";
|
|
2
|
-
import { expect } from "chai";
|
|
3
|
-
import inquirer from "inquirer";
|
|
4
|
-
import sinon from "sinon";
|
|
5
|
-
import * as loggerModule from "./logger";
|
|
6
|
-
import { getConfirmation, prettifyJson, printOutError, sleep } from "./utils";
|
|
7
|
-
|
|
8
|
-
describe("utils", () => {
|
|
9
|
-
let sandbox: sinon.SinonSandbox;
|
|
10
|
-
let loggerStub: sinon.SinonStubbedInstance<typeof loggerModule.logger>;
|
|
11
|
-
let logAxiosErrorStub: sinon.SinonStub;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
sandbox = sinon.createSandbox();
|
|
15
|
-
loggerStub = sandbox.stub(loggerModule.logger);
|
|
16
|
-
logAxiosErrorStub = sandbox.stub(loggerModule, "logAxiosError");
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
afterEach(() => {
|
|
20
|
-
sandbox.restore();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
describe("sleep", () => {
|
|
24
|
-
it("should wait for the specified time", async function () {
|
|
25
|
-
this.timeout(100);
|
|
26
|
-
const start = Date.now();
|
|
27
|
-
await sleep(50);
|
|
28
|
-
const elapsed = Date.now() - start;
|
|
29
|
-
expect(elapsed).to.be.at.least(45);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
describe("prettifyJson", () => {
|
|
34
|
-
it("should format JSON with 2-space indentation", () => {
|
|
35
|
-
const obj = { name: "test", value: 123 };
|
|
36
|
-
const result = prettifyJson(obj);
|
|
37
|
-
expect(result).to.equal('{\n "name": "test",\n "value": 123\n}');
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("should handle empty objects", () => {
|
|
41
|
-
const result = prettifyJson({});
|
|
42
|
-
expect(result).to.equal("{}");
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("should handle nested objects", () => {
|
|
46
|
-
const obj = { nested: { key: "value" } };
|
|
47
|
-
const result = prettifyJson(obj);
|
|
48
|
-
expect(result).to.include("nested");
|
|
49
|
-
expect(result).to.include("key");
|
|
50
|
-
expect(result).to.include("value");
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
describe("printOutError", () => {
|
|
55
|
-
it("should handle axios errors", () => {
|
|
56
|
-
const axiosError = {
|
|
57
|
-
isAxiosError: true,
|
|
58
|
-
response: {
|
|
59
|
-
status: 404,
|
|
60
|
-
data: { message: "Not found" },
|
|
61
|
-
},
|
|
62
|
-
config: {},
|
|
63
|
-
name: "AxiosError",
|
|
64
|
-
message: "Request failed",
|
|
65
|
-
};
|
|
66
|
-
sandbox.stub(axios, "isAxiosError").returns(true);
|
|
67
|
-
|
|
68
|
-
printOutError(axiosError as any, false);
|
|
69
|
-
|
|
70
|
-
expect(logAxiosErrorStub.calledOnce).to.be.true;
|
|
71
|
-
expect(logAxiosErrorStub.firstCall.args[0]).to.equal(axiosError);
|
|
72
|
-
expect(logAxiosErrorStub.firstCall.args[1]).to.equal(false);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it("should handle non-axios errors", () => {
|
|
76
|
-
const error = new Error("Generic error");
|
|
77
|
-
sandbox.stub(axios, "isAxiosError").returns(false);
|
|
78
|
-
|
|
79
|
-
printOutError(error, false);
|
|
80
|
-
|
|
81
|
-
expect(loggerStub.error.calledOnce).to.be.true;
|
|
82
|
-
expect(loggerStub.error.calledWith(sinon.match("Unexpected error"))).to
|
|
83
|
-
.be.true;
|
|
84
|
-
// Check that error was passed as second argument (Winston accepts Error objects)
|
|
85
|
-
const errorCall = loggerStub.error.getCall(0);
|
|
86
|
-
expect(errorCall.args.length).to.be.at.least(2);
|
|
87
|
-
expect((errorCall.args as any)[1]).to.equal(error);
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it("should log debug info when debug is true", () => {
|
|
91
|
-
const error = new Error("Test error");
|
|
92
|
-
sandbox.stub(axios, "isAxiosError").returns(false);
|
|
93
|
-
|
|
94
|
-
printOutError(error, true);
|
|
95
|
-
|
|
96
|
-
expect(loggerStub.debug.calledWith(error)).to.be.true;
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("should not log debug info when debug is false", () => {
|
|
100
|
-
const error = new Error("Test error");
|
|
101
|
-
sandbox.stub(axios, "isAxiosError").returns(false);
|
|
102
|
-
|
|
103
|
-
printOutError(error, false);
|
|
104
|
-
|
|
105
|
-
expect(loggerStub.debug.called).to.be.false;
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
describe("getConfirmation", () => {
|
|
110
|
-
it("should return true when user confirms", async () => {
|
|
111
|
-
const promptStub = sandbox
|
|
112
|
-
.stub(inquirer, "prompt")
|
|
113
|
-
.resolves({ confirm: true });
|
|
114
|
-
|
|
115
|
-
const result = await getConfirmation("Are you sure?");
|
|
116
|
-
|
|
117
|
-
expect(result).to.be.true;
|
|
118
|
-
expect(promptStub.calledOnce).to.be.true;
|
|
119
|
-
expect(promptStub.firstCall.args[0][0].message).to.equal(
|
|
120
|
-
"Are you sure?",
|
|
121
|
-
);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it("should return false when user denies", async () => {
|
|
125
|
-
const promptStub = sandbox
|
|
126
|
-
.stub(inquirer, "prompt")
|
|
127
|
-
.resolves({ confirm: false });
|
|
128
|
-
|
|
129
|
-
const result = await getConfirmation("Are you sure?");
|
|
130
|
-
|
|
131
|
-
expect(result).to.be.false;
|
|
132
|
-
expect(promptStub.calledOnce).to.be.true;
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
});
|
package/src/utils.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import axios from "axios";
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import { logAxiosError, logger } from "./logger";
|
|
4
|
-
|
|
5
|
-
export function sleep(time_in_ms: number): Promise<void> {
|
|
6
|
-
return new Promise((resolve) => setTimeout(resolve, time_in_ms));
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function prettifyJson(payload: object): string {
|
|
10
|
-
return JSON.stringify(payload, null, 2);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function printOutError(e: Error, debug: boolean) {
|
|
14
|
-
if (axios.isAxiosError(e)) {
|
|
15
|
-
logAxiosError(e, debug);
|
|
16
|
-
} else {
|
|
17
|
-
logger.error("Unexpected error", e);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (debug) {
|
|
21
|
-
logger.debug(e);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export async function getConfirmation(message: string): Promise<boolean> {
|
|
26
|
-
const answer = await inquirer.prompt([
|
|
27
|
-
{
|
|
28
|
-
type: "confirm",
|
|
29
|
-
name: "confirm",
|
|
30
|
-
message,
|
|
31
|
-
},
|
|
32
|
-
]);
|
|
33
|
-
return answer.confirm;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export const DEFAULT_PAGE_SIZE = -1; // -1 means return all records
|
|
37
|
-
export const DEFAULT_PAGE = 1;
|
|
38
|
-
export const MAX_PAGE_SIZE = 500;
|
|
39
|
-
|
|
40
|
-
export interface PaginationOptions {
|
|
41
|
-
page?: number;
|
|
42
|
-
pageSize?: number;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export function parsePaginationParams(
|
|
46
|
-
page?: string | number,
|
|
47
|
-
pageSize?: string | number,
|
|
48
|
-
): { limit: number; offset: number } {
|
|
49
|
-
// If no page AND no pageSize specified, return all records
|
|
50
|
-
if (page === undefined && pageSize === undefined) {
|
|
51
|
-
logger.info("--page-size not passed, returning all records");
|
|
52
|
-
return { limit: -1, offset: 0 };
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Parse pageSize
|
|
56
|
-
const parsedPageSize =
|
|
57
|
-
typeof pageSize === "string" ? parseInt(pageSize, 10) : pageSize;
|
|
58
|
-
|
|
59
|
-
// If pageSize is explicitly -1, return all records
|
|
60
|
-
if (parsedPageSize === -1) {
|
|
61
|
-
return { limit: -1, offset: 0 };
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// If page OR pageSize is provided, use pagination
|
|
65
|
-
// Default pageSize to 100 when page is provided but pageSize is not
|
|
66
|
-
const effectivePageSize =
|
|
67
|
-
parsedPageSize !== undefined && !isNaN(parsedPageSize)
|
|
68
|
-
? parsedPageSize
|
|
69
|
-
: page !== undefined
|
|
70
|
-
? 100
|
|
71
|
-
: DEFAULT_PAGE_SIZE;
|
|
72
|
-
|
|
73
|
-
// If we still have -1 (shouldn't happen, but safety check), return all
|
|
74
|
-
if (effectivePageSize === -1) {
|
|
75
|
-
return { limit: -1, offset: 0 };
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Use pagination logic
|
|
79
|
-
const parsedPage =
|
|
80
|
-
typeof page === "string" ? parseInt(page, 10) : page || DEFAULT_PAGE;
|
|
81
|
-
const validPage = Math.max(1, isNaN(parsedPage) ? DEFAULT_PAGE : parsedPage);
|
|
82
|
-
|
|
83
|
-
const validPageSize = Math.min(
|
|
84
|
-
Math.max(1, effectivePageSize),
|
|
85
|
-
MAX_PAGE_SIZE,
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
const offset = (validPage - 1) * validPageSize;
|
|
89
|
-
|
|
90
|
-
return {
|
|
91
|
-
limit: validPageSize,
|
|
92
|
-
offset: offset,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export function extractTotalCount(headers: unknown): number | undefined {
|
|
97
|
-
if (!headers || typeof headers !== "object") {
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
const h = headers as Record<string, unknown>;
|
|
101
|
-
const candidates = [h["x-total-count"], h["Total-Count"], h["total-count"]];
|
|
102
|
-
for (const totalCountHeader of candidates) {
|
|
103
|
-
if (totalCountHeader == null) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const raw = Array.isArray(totalCountHeader)
|
|
107
|
-
? totalCountHeader[0]
|
|
108
|
-
: totalCountHeader;
|
|
109
|
-
const count = parseInt(String(raw), 10);
|
|
110
|
-
if (!isNaN(count)) {
|
|
111
|
-
return count;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return undefined;
|
|
115
|
-
}
|
package/src/validator.spec.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { validatePath, PathType, validateManifest } from "./validator";
|
|
3
|
-
|
|
4
|
-
describe("validator", () => {
|
|
5
|
-
describe("validatePath", () => {
|
|
6
|
-
it("should return PathType.Invalid for a path not starting with '/'", () => {
|
|
7
|
-
expect(validatePath("invalidPath")).to.equal(PathType.Invalid);
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it("should return PathType.Root for '/'", () => {
|
|
11
|
-
expect(validatePath("/")).to.equal(PathType.Root);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it("should return PathType.Package for a valid package path", () => {
|
|
15
|
-
expect(validatePath("/package123")).to.equal(PathType.Package);
|
|
16
|
-
expect(validatePath("/abc-def")).to.equal(PathType.Package);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("should return PathType.Invalid for a package path with invalid characters", () => {
|
|
20
|
-
expect(validatePath("/package@123")).to.equal(PathType.Invalid);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("should return PathType.Version for a valid package and version path", () => {
|
|
24
|
-
expect(validatePath("/package123/1.0.0")).to.equal(PathType.Version);
|
|
25
|
-
expect(validatePath("/abc-def/2.3.4")).to.equal(PathType.Version);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("should return PathType.Invalid for a version path with invalid characters", () => {
|
|
29
|
-
expect(validatePath("/package123/1.0.0-beta")).to.equal(
|
|
30
|
-
PathType.Invalid,
|
|
31
|
-
);
|
|
32
|
-
expect(validatePath("/abc-def/2.3.4!")).to.equal(PathType.Invalid);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("should return PathType.Invalid for a path with too many segments", () => {
|
|
36
|
-
expect(validatePath("/package123/1.0.0/extra")).to.equal(
|
|
37
|
-
PathType.Invalid,
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe("validateManifest", () => {
|
|
43
|
-
it("should return true if manifest validation passes", () => {
|
|
44
|
-
expect(validateManifest()).to.be.true;
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// it("should log an error and return false if manifest validation fails", () => {
|
|
48
|
-
// expect(validateManifest()).to.be.false;
|
|
49
|
-
// });
|
|
50
|
-
});
|
|
51
|
-
});
|
package/src/validator.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { logger } from "./logger";
|
|
2
|
-
|
|
3
|
-
const idRegex = new RegExp("^[a-zA-Z0-9\\-]+$");
|
|
4
|
-
const versionRegex = new RegExp("^[a-zA-Z0-9\\.]+$");
|
|
5
|
-
export enum PathType {
|
|
6
|
-
Root,
|
|
7
|
-
Package,
|
|
8
|
-
Version,
|
|
9
|
-
Invalid,
|
|
10
|
-
}
|
|
11
|
-
export function validatePath(path: string): PathType {
|
|
12
|
-
if (!path.startsWith("/")) {
|
|
13
|
-
return PathType.Invalid;
|
|
14
|
-
}
|
|
15
|
-
const pathParts = path.split("/");
|
|
16
|
-
if (pathParts.length === 2 && !pathParts[1]) {
|
|
17
|
-
return PathType.Root;
|
|
18
|
-
} else if (pathParts.length === 2 && idRegex.test(pathParts[1])) {
|
|
19
|
-
return PathType.Package;
|
|
20
|
-
} else if (
|
|
21
|
-
pathParts.length === 3 &&
|
|
22
|
-
idRegex.test(pathParts[1]) &&
|
|
23
|
-
versionRegex.test(pathParts[2])
|
|
24
|
-
) {
|
|
25
|
-
return PathType.Version;
|
|
26
|
-
} else {
|
|
27
|
-
return PathType.Invalid;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function validateManifest(): boolean {
|
|
32
|
-
try {
|
|
33
|
-
// const packageManifestJson = fs.readFileSync("malloy-package.json");
|
|
34
|
-
// const packageManifest = JSON.parse(packageManifestJson.toString());
|
|
35
|
-
// TODO: Validate packageManigfest.
|
|
36
|
-
return true;
|
|
37
|
-
} catch (error) {
|
|
38
|
-
let message;
|
|
39
|
-
if (error instanceof Error) message = error.message;
|
|
40
|
-
else message = String(error);
|
|
41
|
-
logger.error("Unable to open and parse manifest: " + message);
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"outDir": "dist",
|
|
4
|
-
"rootDir": "src",
|
|
5
|
-
"strict": false,
|
|
6
|
-
"target": "es6",
|
|
7
|
-
"module": "commonjs",
|
|
8
|
-
"sourceMap": true,
|
|
9
|
-
"esModuleInterop": true,
|
|
10
|
-
"moduleResolution": "node",
|
|
11
|
-
"resolveJsonModule": true,
|
|
12
|
-
"skipLibCheck": true,
|
|
13
|
-
"typeRoots": ["./node_modules/@types"]
|
|
14
|
-
},
|
|
15
|
-
"include": ["src/**/*"],
|
|
16
|
-
"exclude": ["node_modules", "dist"]
|
|
17
|
-
}
|