bdy 1.23.13-dev-target-commands → 1.23.13-dev

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.
Files changed (59) hide show
  1. package/distTs/README.md +181 -0
  2. package/distTs/package.json +3 -5
  3. package/distTs/src/agent/manager.js +9 -2
  4. package/distTs/src/api/client.js +12 -222
  5. package/distTs/src/cliIndex.js +0 -4
  6. package/distTs/src/command/artifact/list.js +6 -2
  7. package/distTs/src/command/distro/list.js +0 -1
  8. package/distTs/src/command/distro/route/update.js +1 -1
  9. package/distTs/src/command/distro/update.js +9 -9
  10. package/distTs/src/command/pre.js +9 -8
  11. package/distTs/src/command/project/get.js +18 -0
  12. package/distTs/src/command/project/set.js +31 -0
  13. package/distTs/src/command/sandbox/get/yaml.js +30 -0
  14. package/distTs/src/command/version.js +1 -1
  15. package/distTs/src/command/vt/scrape.js +193 -0
  16. package/distTs/src/input.js +0 -65
  17. package/distTs/src/logger.js +7 -1
  18. package/distTs/src/output.js +2 -21
  19. package/distTs/src/texts.js +27 -252
  20. package/distTs/src/tunnel/server/sftp.js +24 -5
  21. package/distTs/src/tunnel/ssh/client.js +35 -4
  22. package/distTs/src/utils.js +50 -31
  23. package/package.json +3 -5
  24. package/distTs/detect-rules.json +0 -351
  25. package/distTs/src/command/environment/create.js +0 -70
  26. package/distTs/src/command/environment/delete.js +0 -29
  27. package/distTs/src/command/environment/get.js +0 -48
  28. package/distTs/src/command/environment/list.js +0 -45
  29. package/distTs/src/command/environment/resolve.js +0 -22
  30. package/distTs/src/command/environment/update.js +0 -59
  31. package/distTs/src/command/environment.js +0 -20
  32. package/distTs/src/command/pipeline/run/apply.js +0 -62
  33. package/distTs/src/command/target/create.js +0 -33
  34. package/distTs/src/command/target/delete.js +0 -30
  35. package/distTs/src/command/target/exec/command.js +0 -103
  36. package/distTs/src/command/target/exec/kill.js +0 -31
  37. package/distTs/src/command/target/exec/list.js +0 -53
  38. package/distTs/src/command/target/exec/logs.js +0 -27
  39. package/distTs/src/command/target/exec/status.js +0 -44
  40. package/distTs/src/command/target/exec.js +0 -24
  41. package/distTs/src/command/target/get.js +0 -63
  42. package/distTs/src/command/target/list.js +0 -49
  43. package/distTs/src/command/target/scope.js +0 -108
  44. package/distTs/src/command/target/update.js +0 -31
  45. package/distTs/src/command/target.js +0 -22
  46. package/distTs/src/command/yaml/actions/detect.js +0 -268
  47. package/distTs/src/command/yaml/actions/info.js +0 -56
  48. package/distTs/src/command/yaml/actions/list.js +0 -70
  49. package/distTs/src/command/yaml/actions/schema.js +0 -104
  50. package/distTs/src/command/yaml/actions.js +0 -13
  51. package/distTs/src/command/yaml/agents.js +0 -88
  52. package/distTs/src/command/yaml/cache.js +0 -98
  53. package/distTs/src/command/yaml/init.js +0 -110
  54. package/distTs/src/command/yaml/pipeline.js +0 -42
  55. package/distTs/src/command/yaml/render.js +0 -83
  56. package/distTs/src/command/yaml/schemaUtils.js +0 -139
  57. package/distTs/src/command/yaml/validate.js +0 -259
  58. package/distTs/src/command/yaml.js +0 -18
  59. package/distTs/src/diskCache.js +0 -82
@@ -36,8 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getRootDir = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.ARTIFACT_AUTH_TYPE = exports.TARGET_EXEC_STATUS = exports.TARGET_SCOPE = exports.ARTIFACT_TYPE = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_APP_STATUS = exports.SANDBOX_SETUP_STATUS = exports.SANDBOX_EXEC_STATUS = exports.SANDBOX_EXEC_RUNTIME = exports.SANDBOX_STATUS = exports.REST_API_ENDPOINT = exports.REST_API_REGION = exports.DEFAULT_SANDBOX_CP_USER = exports.ARTIFACT_DEFAULT_VERSION = exports.SUGGESTED_BROWSER_VERSION = exports.AGENT_UPDATE_STATUS_TTL_MS = exports.AGENT_UPDATE_PROBATION_MS = exports.AGENT_UPDATE_MAX_ATTEMPTS = exports.AGENT_FETCH_RETRY_MAX = exports.AGENT_FETCH_RETRY_MIN = exports.SSH_HANDSHAKE_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.getSshIdent = exports.TUNNEL_SSH_IDENT_SHARED_H2 = exports.TUNNEL_CLIENT_IP_HEADER = exports.TUNNEL_HTTP2_SHED_LOG_INTERVAL = exports.TUNNEL_HTTP2_MAX_SESSIONS = exports.TUNNEL_HTTP2_SESSION_IDLE_TIMEOUT = exports.TUNNEL_HTTP_RETRY_AFTER = exports.TUNNEL_HTTP_MAX_INFLIGHT = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = void 0;
40
- exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.truncate = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.getVersionWithoutEnv = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = exports.isStringRegExp = exports.getWorkingDir = void 0;
39
+ exports.isStringRegExp = exports.getWorkingDir = exports.getRootDir = exports.TARGET_ONLY_PORT_REGEX = exports.TARGET_HTTP_REGEX = exports.TARGET_TCP_TLS_REGEX = exports.ApiErrorTunnelsDisabled = exports.ApiErrorWorkspaceFlagged = exports.ApiErrorTunnelLimitReached = exports.ApiErrorAgentLimitReached = exports.ApiErrorDomainRestricted = exports.ApiErrorTargetInvalid = exports.ApiErrorWrongToken = exports.ApiErrorFailedToConnect = exports.ApiErrorAgentNotFound = exports.ARTIFACT_AUTH_TYPE = exports.ARTIFACT_TYPE = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_APP_STATUS = exports.SANDBOX_SETUP_STATUS = exports.SANDBOX_EXEC_STATUS = exports.SANDBOX_EXEC_RUNTIME = exports.SANDBOX_STATUS = exports.REST_API_ENDPOINT = exports.REST_API_REGION = exports.DEFAULT_SANDBOX_CP_USER = exports.ARTIFACT_DEFAULT_VERSION = exports.SUGGESTED_BROWSER_VERSION = exports.AGENT_UPDATE_STATUS_TTL_MS = exports.AGENT_UPDATE_PROBATION_MS = exports.AGENT_UPDATE_MAX_ATTEMPTS = exports.AGENT_FETCH_RETRY_MAX = exports.AGENT_FETCH_RETRY_MIN = exports.SSH_HANDSHAKE_TIMEOUT = exports.DEFAULT_TIMEOUT = exports.getSshIdent = exports.TUNNEL_SSH_IDENT_SHARED_H2 = exports.TUNNEL_CLIENT_IP_HEADER = exports.TUNNEL_HTTP2_SHED_LOG_INTERVAL = exports.TUNNEL_HTTP2_MAX_SESSIONS = exports.TUNNEL_HTTP2_SESSION_IDLE_TIMEOUT = exports.TUNNEL_HTTP_RETRY_AFTER = exports.TUNNEL_HTTP_MAX_INFLIGHT = exports.TUNNEL_HTTP_CB_MIN_REQUESTS = exports.TUNNEL_HTTP_CB_WINDOW = exports.TUNNEL_MAX_REQUEST_SIZE_TO_SYNC = exports.TUNNEL_HTTP_LOG_MAX_REQUESTS = exports.TUNNEL_HTTP_LOG_MAX_BODY = exports.TUNNEL_HTTP_RATE_WINDOW = exports.TUNNEL_HTTP_RATE_LIMIT = void 0;
40
+ exports.getGitName = exports.getGitEmail = exports.MCP_TOOL_CATEGORIES = exports.getBasicCommandTls = exports.getBasicCommandHttp = exports.getBasicCommandSandboxEndpoint = exports.getBasicCommandTcp = exports.getCurrentUser = exports.getServiceUser = exports.getRealTargetHost = exports.isWindows = exports.isLinux = exports.isOsx = exports.isDocker = exports.sleep = exports.getLatestVersion = exports.getVersionEnv = exports.getCurrentVersionWithoutEnv = exports.isVersionNewer = exports.getVersionWithoutEnv = exports.parseVersion = exports.getVersion = exports.isInstalledByChoco = exports.isInstalledByApt = exports.isInstalledByBrew = exports.isInstalledByNpm = exports.isNpmGlobalWritable = exports.isPathWritable = exports.tryGetEmail = exports.execLocally = exports.getHomeDirectory = exports.HOME_DIR_NAME = exports.chownToHomeOwner = exports.isDomainAvailable = exports.newCommand = exports.formatBytes = exports.formatHelp = exports.getPlatform = exports.getHostname = void 0;
41
41
  exports.apiErrorCodeToClass = apiErrorCodeToClass;
42
42
  exports.isFile = isFile;
43
43
  exports.getAppWorkspaceUrl = getAppWorkspaceUrl;
@@ -132,7 +132,7 @@ exports.AGENT_UPDATE_PROBATION_MS = 30 * 60 * 1000;
132
132
  // 15s; anything past it waits for the one at 60s, so a longer ttl here shows the outcome for
133
133
  // four times as long as it says.
134
134
  exports.AGENT_UPDATE_STATUS_TTL_MS = 10 * 1000;
135
- exports.SUGGESTED_BROWSER_VERSION = '130.0.6723.69';
135
+ exports.SUGGESTED_BROWSER_VERSION = '151.0.7922.77';
136
136
  exports.ARTIFACT_DEFAULT_VERSION = 'latest';
137
137
  exports.DEFAULT_SANDBOX_CP_USER = 'buddy';
138
138
  var REST_API_REGION;
@@ -195,20 +195,6 @@ var ARTIFACT_TYPE;
195
195
  ARTIFACT_TYPE["BUCKET"] = "BUCKET";
196
196
  ARTIFACT_TYPE["CONTAINER"] = "CONTAINER";
197
197
  })(ARTIFACT_TYPE || (exports.ARTIFACT_TYPE = ARTIFACT_TYPE = {}));
198
- var TARGET_SCOPE;
199
- (function (TARGET_SCOPE) {
200
- TARGET_SCOPE["WORKSPACE"] = "WORKSPACE";
201
- TARGET_SCOPE["PROJECT"] = "PROJECT";
202
- TARGET_SCOPE["ENVIRONMENT"] = "ENVIRONMENT";
203
- TARGET_SCOPE["PIPELINE"] = "PIPELINE";
204
- })(TARGET_SCOPE || (exports.TARGET_SCOPE = TARGET_SCOPE = {}));
205
- var TARGET_EXEC_STATUS;
206
- (function (TARGET_EXEC_STATUS) {
207
- TARGET_EXEC_STATUS["INPROGRESS"] = "INPROGRESS";
208
- TARGET_EXEC_STATUS["SUCCESSFUL"] = "SUCCESSFUL";
209
- TARGET_EXEC_STATUS["FAILED"] = "FAILED";
210
- TARGET_EXEC_STATUS["CANCELLED"] = "CANCELLED";
211
- })(TARGET_EXEC_STATUS || (exports.TARGET_EXEC_STATUS = TARGET_EXEC_STATUS = {}));
212
198
  var ARTIFACT_AUTH_TYPE;
213
199
  (function (ARTIFACT_AUTH_TYPE) {
214
200
  ARTIFACT_AUTH_TYPE["NONE"] = "NONE";
@@ -599,19 +585,44 @@ const getVersion = () => {
599
585
  return cachedVersion;
600
586
  };
601
587
  exports.getVersion = getVersion;
588
+ // The one place that knows what a version string looks like: `x.y.z` optionally followed by
589
+ // a channel suffix. AgentSystem.verifyBinary keeps a regex of its own on purpose - it fishes
590
+ // a version out of selftest output rather than parsing one, so it must not be anchored.
591
+ const parseVersion = (version) => {
592
+ const m = (version || '').match(/^(\d+)\.(\d+)\.(\d+)/);
593
+ if (!m)
594
+ return null;
595
+ return {
596
+ version: m[0],
597
+ major: Number(m[1]),
598
+ minor: Number(m[2]),
599
+ patch: Number(m[3]),
600
+ };
601
+ };
602
+ exports.parseVersion = parseVersion;
602
603
  const getVersionWithoutEnv = (version) => {
603
- const m = version.match(/^\d+\.\d+\.\d+/);
604
- if (m)
605
- return m[0];
606
- return '0.0.0';
604
+ return (0, exports.parseVersion)(version)?.version || '0.0.0';
607
605
  };
608
606
  exports.getVersionWithoutEnv = getVersionWithoutEnv;
607
+ // An update is only an update when the other side is actually ahead. Comparing the strings
608
+ // for inequality also fired on a build that is newer than what the channel publishes - a
609
+ // local dev build, or a machine that got the release before es.buddy.works did - and told
610
+ // the user to "update" to an older version. Both sides carry the same env suffix (latest is
611
+ // fetched per env), so the numeric triple decides.
612
+ const isVersionNewer = (version, than) => {
613
+ const a = (0, exports.parseVersion)(version);
614
+ const b = (0, exports.parseVersion)(than);
615
+ if (!a || !b)
616
+ return false;
617
+ if (a.major !== b.major)
618
+ return a.major > b.major;
619
+ if (a.minor !== b.minor)
620
+ return a.minor > b.minor;
621
+ return a.patch > b.patch;
622
+ };
623
+ exports.isVersionNewer = isVersionNewer;
609
624
  const getCurrentVersionWithoutEnv = () => {
610
- const v = (0, exports.getVersion)();
611
- const m = v.match(/^\d+\.\d+\.\d+/);
612
- if (m)
613
- return m[0];
614
- return '0.0.0';
625
+ return (0, exports.getVersionWithoutEnv)((0, exports.getVersion)());
615
626
  };
616
627
  exports.getCurrentVersionWithoutEnv = getCurrentVersionWithoutEnv;
617
628
  const getVersionEnv = () => {
@@ -640,10 +651,20 @@ const getLatestVersion = async () => {
640
651
  });
641
652
  if (response.status === 200) {
642
653
  const data = await response.text();
643
- const v = data.trim();
654
+ // A 200 whose body is not a version - a padded value, an error page from something in
655
+ // front of the bucket - is nothing a caller can act on, so it fails here rather than
656
+ // downstream, where every comparison would read it as "no update". The parsed triple
657
+ // is what gets returned, not the body: the regex is unanchored at the end, so a body
658
+ // that merely starts with a version would otherwise carry its tail into the banners,
659
+ // the update log and the equality test in AgentManager.remoteUpdate.
660
+ // Only the agent's remote update surfaces this - `commandPre` swallows it, so the CLI
661
+ // stays quiet about a channel it could not read.
662
+ const parsed = (0, exports.parseVersion)(data.trim());
663
+ if (!parsed)
664
+ throw new Error(texts_1.ERR_FETCH_VERSION);
644
665
  if (env === 'prod')
645
- return v;
646
- return `${v}-${env}`;
666
+ return parsed.version;
667
+ return `${parsed.version}-${env}`;
647
668
  }
648
669
  else {
649
670
  return '0.0.0';
@@ -660,8 +681,6 @@ const sleep = (ms) => {
660
681
  });
661
682
  };
662
683
  exports.sleep = sleep;
663
- const truncate = (txt, max) => txt.length > max ? `${txt.substring(0, max)}...` : txt;
664
- exports.truncate = truncate;
665
684
  const isDocker = () => {
666
685
  return process.env['IS_IN_DOCKER'] === '1';
667
686
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.23.13-dev-target-commands",
4
+ "version": "1.23.13-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "homepage": "https://buddy.works/docs/cli",
@@ -27,8 +27,6 @@
27
27
  "e2e:tunnel": "vitest run --config e2e/vitest.config.ts e2e/modules/tunnel/",
28
28
  "e2e:agent": "vitest run --config e2e/vitest.config.ts e2e/modules/agent/",
29
29
  "e2e:distro": "vitest run --config e2e/vitest.config.ts e2e/modules/distro/",
30
- "e2e:target": "vitest run --config e2e/vitest.config.ts e2e/modules/target/",
31
- "e2e:environment": "vitest run --config e2e/vitest.config.ts e2e/modules/environment/",
32
30
  "unit": "vitest run --config vitest.config.ts"
33
31
  },
34
32
  "files": [
@@ -53,7 +51,7 @@
53
51
  "@fastify/cors": "11.2.0",
54
52
  "@inquirer/prompts": "8.5.2",
55
53
  "@modelcontextprotocol/sdk": "1.30.0",
56
- "@puppeteer/browsers": "2.13.0",
54
+ "@puppeteer/browsers": "3.2.0",
57
55
  "@scalar/json-magic": "0.12.16",
58
56
  "@scalar/openapi-parser": "0.28.7",
59
57
  "@scalar/openapi-types": "0.9.1",
@@ -81,7 +79,7 @@
81
79
  "picomatch": "4.0.4",
82
80
  "pino": "10.3.1",
83
81
  "punycode": "2.3.1",
84
- "puppeteer-core": "23.11.1",
82
+ "puppeteer-core": "25.6.0",
85
83
  "range-parser": "1.2.1",
86
84
  "socket.io-client": "4.8.3",
87
85
  "ssh2": "1.17.0",
@@ -1,351 +0,0 @@
1
- {
2
- "BUILD": {
3
- "files": ["package.json", "requirements.txt", "pyproject.toml", "go.mod", "Gemfile", "pom.xml", "build.gradle", "build.gradle.kts", "Cargo.toml", "composer.json", "pubspec.yaml", "Makefile", "CMakeLists.txt"],
4
- "packages": ["eslint", "oxlint", "@oxlint/cli", "@biomejs/biome", "prettier", "stylelint", "xo", "standard", "typescript"]
5
- },
6
- "DOCKERFILE": {
7
- "files": ["Dockerfile", "Containerfile", "compose.yaml", "compose.yml", "docker-compose.yml", "docker-compose.yaml"]
8
- },
9
- "DOCKER_PUSH": {
10
- "files": ["Dockerfile", "Containerfile"]
11
- },
12
- "RUN_DOCKER_CONTAINER": {
13
- "files": ["Dockerfile", "Containerfile", "compose.yaml", "compose.yml", "docker-compose.yml"]
14
- },
15
- "DOCKERFILE_LINTER": {
16
- "files": ["Dockerfile", "Containerfile"]
17
- },
18
- "DOCKER": {
19
- "files": ["Dockerfile", "Containerfile", "compose.yaml", "compose.yml", "docker-compose.yml"]
20
- },
21
- "DOCKER_BUILD_MULTI_ARCH": {
22
- "files": ["Dockerfile", "Containerfile"]
23
- },
24
- "NATIVE_BUILD_DOCKER_CLI": {
25
- "files": ["Dockerfile", "Containerfile"]
26
- },
27
- "PROMOTE_IMAGE": {
28
- "files": ["Dockerfile", "Containerfile"]
29
- },
30
- "KUBERNETES_APPLY": {
31
- "files": ["k8s/", "kubernetes/", "kustomization.yaml", "kustomization.yml", "Kustomization"],
32
- "packages": ["@aws-sdk/client-eks", "@google-cloud/container", "@azure/arm-containerservice"]
33
- },
34
- "KUBERNETES_SET_IMAGE": {
35
- "files": ["k8s/", "kubernetes/"]
36
- },
37
- "KUBERNETES_RUN_POD": {
38
- "files": ["k8s/", "kubernetes/"]
39
- },
40
- "KUBERNETES_RUN_JOB": {
41
- "files": ["k8s/", "kubernetes/"]
42
- },
43
- "KUBERNETES_CLI": {
44
- "files": ["k8s/", "kubernetes/", "kustomization.yaml", "kustomization.yml", "Kustomization"],
45
- "packages": ["@kubernetes/client-node", "@aws-sdk/client-eks", "@google-cloud/container", "@azure/arm-containerservice"]
46
- },
47
- "HELM": {
48
- "files": ["Chart.yaml", "helm/", "charts/"]
49
- },
50
- "WAIT_FOR_APPLY": {
51
- "files": ["k8s/", "kubernetes/"]
52
- },
53
- "AMAZON_S3": {
54
- "packages": ["aws-sdk", "@aws-sdk/client-s3"]
55
- },
56
- "AWS_CLI": {
57
- "files": ["buildspec.yml"],
58
- "packages": ["aws-sdk", "@aws-sdk/*"]
59
- },
60
- "AWS_CLI_2": {
61
- "files": ["buildspec.yml"],
62
- "packages": ["aws-sdk", "@aws-sdk/*"]
63
- },
64
- "AWS_LAMBDA_DEPLOY": {
65
- "files": ["serverless.yml", "serverless.yaml", "samconfig.toml", "sam-template.yaml"],
66
- "packages": ["aws-sdk", "@aws-sdk/client-lambda"]
67
- },
68
- "LAMBDA": {
69
- "files": ["serverless.yml", "samconfig.toml"],
70
- "packages": ["@aws-sdk/client-lambda"]
71
- },
72
- "AWS_ECS": {
73
- "files": ["ecs-task-definition.json", "task-definition.json"],
74
- "packages": ["@aws-sdk/client-ecs"]
75
- },
76
- "CODE_DEPLOY": {
77
- "files": ["appspec.yml", "appspec.yaml"]
78
- },
79
- "ELASTIC_BEANSTALK": {
80
- "files": [".elasticbeanstalk/"]
81
- },
82
- "MONITOR": {
83
- "files": [".elasticbeanstalk/"]
84
- },
85
- "AWS_CLOUD_FORMATION": {
86
- "files": ["cloudformation/"]
87
- },
88
- "CLOUD_FRONT": {
89
- "packages": ["aws-sdk", "@aws-sdk/client-cloudfront"]
90
- },
91
- "CODE_PIPELINE": {
92
- "files": ["buildspec.yml"]
93
- },
94
- "AWS_APP_RUNNER_DEPLOY": {
95
- "packages": ["@aws-sdk/client-apprunner"]
96
- },
97
- "AWS_APP_RUNNER_MONITOR": {
98
- "packages": ["@aws-sdk/client-apprunner"]
99
- },
100
- "AWS_CDK_CLI": {
101
- "files": ["cdk.json"],
102
- "packages": ["aws-cdk-lib", "aws-cdk"]
103
- },
104
- "DOWNLOAD_S3": {
105
- "packages": ["aws-sdk", "@aws-sdk/client-s3"]
106
- },
107
- "GOOGLE_CLOUD_STORAGE": {
108
- "packages": ["@google-cloud/storage"]
109
- },
110
- "GOOGLE_CLOUD_CLI": {
111
- "packages": ["@google-cloud/*"]
112
- },
113
- "GOOGLE_APP_DEPLOY": {
114
- "files": ["app.yaml"]
115
- },
116
- "GOOGLE_FUNCTION_DEPLOY": {
117
- "files": ["firebase.json"],
118
- "packages": ["@google-cloud/functions-framework"]
119
- },
120
- "GOOGLE_FUNCTION_INVOKE": {
121
- "packages": ["@google-cloud/functions-framework"]
122
- },
123
- "GOOGLE_CLOUD_RUN_DEPLOY": {
124
- "files": ["Dockerfile", "Containerfile"]
125
- },
126
- "GOOGLE_CDN_INVALIDATE": {
127
- "packages": ["@google-cloud/compute"]
128
- },
129
- "FIREBASE": {
130
- "files": ["firebase.json", ".firebaserc"],
131
- "packages": ["firebase", "firebase-admin"]
132
- },
133
- "DOWNLOAD_GCS": {
134
- "packages": ["@google-cloud/storage"]
135
- },
136
- "AZURE": {
137
- "files": ["azure-pipelines.yml"]
138
- },
139
- "AZURE_CLI": {
140
- "files": ["azure-pipelines.yml"],
141
- "packages": ["@azure/*"]
142
- },
143
- "AZURE_STORAGE": {
144
- "packages": ["@azure/storage-blob"]
145
- },
146
- "HEROKU": {
147
- "files": ["Procfile"]
148
- },
149
- "HEROKU_CLI": {
150
- "files": ["Procfile"]
151
- },
152
- "NETLIFY": {
153
- "files": ["netlify.toml"]
154
- },
155
- "TERRAFORM": {
156
- "files": ["*.tf", "*.tofu", "terraform/", ".terraform/"]
157
- },
158
- "ANDROID_SIGN": {
159
- "files": ["android/", "app/src/main/AndroidManifest.xml"]
160
- },
161
- "ANDROID_SIGN_BUNDLE": {
162
- "files": ["android/", "app/src/main/AndroidManifest.xml"]
163
- },
164
- "ANDROID_PUBLISH_APK": {
165
- "files": ["android/", "app/src/main/AndroidManifest.xml"]
166
- },
167
- "ANDROID_PUBLISH_APP_BUNDLE": {
168
- "files": ["android/", "app/src/main/AndroidManifest.xml"]
169
- },
170
- "FASTLANE_ANDROID": {
171
- "files": ["fastlane/", "android/"]
172
- },
173
- "NATIVE_BUILD_MAC": {
174
- "files": ["*.xcodeproj", "*.xcworkspace"]
175
- },
176
- "NATIVE_BUILD_MAC_VM": {
177
- "files": ["*.xcodeproj", "*.xcworkspace"]
178
- },
179
- "NATIVE_BUILD_MAC_SIGN": {
180
- "files": ["*.xcodeproj", "*.xcworkspace"]
181
- },
182
- "NATIVE_BUILD_MAC_DEPLOY": {
183
- "files": ["*.xcodeproj", "*.xcworkspace"]
184
- },
185
- "NATIVE_BUILD_MAC_REACT": {
186
- "files": ["ios/"],
187
- "packages": ["react-native"]
188
- },
189
- "NATIVE_BUILD_MAC_CORDOVA": {
190
- "packages": ["cordova"]
191
- },
192
- "NATIVE_BUILD_MAC_FASTLANE": {
193
- "files": ["fastlane/Fastfile"]
194
- },
195
- "NATIVE_BUILD_MAC_FLUTTER": {
196
- "files": ["pubspec.yaml", "ios/"]
197
- },
198
- "PLAYWRIGHT": {
199
- "files": ["playwright.config.*"],
200
- "packages": ["@playwright/test", "playwright"]
201
- },
202
- "CYPRESS": {
203
- "files": ["cypress.config.*", "cypress/"],
204
- "packages": ["cypress"]
205
- },
206
- "STORYBOOK": {
207
- "files": [".storybook/"],
208
- "packages": ["storybook", "@storybook/react"]
209
- },
210
- "LIGHTHOUSE": {
211
- "packages": ["lighthouse"]
212
- },
213
- "JMETER_CLI": {
214
- "files": ["*.jmx"]
215
- },
216
- "SNYK_CLI": {
217
- "files": [".snyk"],
218
- "packages": ["snyk"]
219
- },
220
- "STACK_HAWK_CLI": {
221
- "files": ["stackhawk.yml"]
222
- },
223
- "BLACKFIRE_PHP": {
224
- "packages": ["blackfire/php-sdk"]
225
- },
226
- "BLACKFIRE_PYTHON": {
227
- "packages": ["blackfire"]
228
- },
229
- "BLACKFIRE_GO": {
230
- "packages": ["github.com/blackfireio/go-blackfire"]
231
- },
232
- "SENTRY": {
233
- "packages": ["@sentry/node", "@sentry/browser", "@sentry/react"]
234
- },
235
- "SENTRY_ENTERPRISE": {
236
- "packages": ["@sentry/node", "@sentry/browser"]
237
- },
238
- "NEW_RELIC": {
239
- "packages": ["newrelic"]
240
- },
241
- "NEW_RELIC_CLI": {
242
- "packages": ["newrelic"]
243
- },
244
- "DATADOG": {
245
- "packages": ["dd-trace", "datadog-metrics"]
246
- },
247
- "DATADOG_STATUS_CHECK": {
248
- "packages": ["dd-trace"]
249
- },
250
- "ROLLBAR": {
251
- "packages": ["rollbar"]
252
- },
253
- "HONEYBADGER": {
254
- "packages": ["@honeybadger-io/js"]
255
- },
256
- "BUGSNAG": {
257
- "packages": ["@bugsnag/js", "@bugsnag/node"]
258
- },
259
- "RAYGUN": {
260
- "packages": ["raygun"]
261
- },
262
- "LOGGLY": {
263
- "packages": ["node-loggly-bulk", "winston-loggly-bulk"]
264
- },
265
- "DO_SPACES": {
266
- "packages": ["aws-sdk", "@aws-sdk/client-s3"]
267
- },
268
- "GIT_HUB_RELEASE": {
269
- "files": [".github/workflows/"]
270
- },
271
- "GIT_HUB_CLI": {
272
- "files": [".github/workflows/"]
273
- },
274
- "GIT_LAB_CLI": {
275
- "files": [".gitlab-ci.yml"]
276
- },
277
- "SHOPIFY": {
278
- "files": ["shopify.app.toml"],
279
- "packages": ["@shopify/shopify-api"]
280
- },
281
- "SHOPIFY_CLI": {
282
- "files": ["shopify.app.toml"],
283
- "packages": ["@shopify/cli"]
284
- },
285
- "SHOPIFY_THEMEKIT_CLI": {
286
- "files": ["shopify.app.toml"]
287
- },
288
- "WP_CLI": {
289
- "files": ["wp-config.php", "wp-content/"]
290
- },
291
- "CONTENTFUL_CLI": {
292
- "packages": ["contentful", "contentful-management"]
293
- },
294
- "MYSQL_CLI": {
295
- "packages": ["mysql", "mysql2", "sequelize", "typeorm", "prisma", "drizzle-orm"]
296
- },
297
- "CLOUDFLARE": {
298
- "files": ["wrangler.toml", "wrangler.json", "wrangler.jsonc"],
299
- "packages": ["wrangler"]
300
- },
301
- "NATIVE_BUILD_WINDOWS": {
302
- "files": ["*.sln", "*.slnx", "*.csproj"]
303
- },
304
- "GIT_CRYPT_UNLOCK": {
305
- "files": [".git-crypt/"]
306
- },
307
- "GIT_CRYPT_LOCK": {
308
- "files": [".git-crypt/"]
309
- },
310
- "JIRA_BUILD": {
311
- "files": [".jira/"]
312
- },
313
- "JIRA_DEPLOYMENT": {
314
- "files": [".jira/"]
315
- },
316
- "NPM_PUBLISH": {
317
- "files": ["package.json"]
318
- },
319
- "DOCTL": {
320
- "files": [".do/"],
321
- "packages": ["digitalocean", "do-wrapper"]
322
- },
323
- "DIGITAL_OCEAN_CDN": {
324
- "files": [".do/"],
325
- "packages": ["digitalocean", "do-wrapper"]
326
- },
327
- "SLACK": {
328
- "packages": ["@slack/web-api", "@slack/bolt", "@slack/webhook"]
329
- },
330
- "DISCORD2": {
331
- "packages": ["discord.js", "discord-webhook-node"]
332
- },
333
- "MICROSOFT_TEAMS": {
334
- "packages": ["botbuilder", "@microsoft/teams-js"]
335
- },
336
- "TELEGRAM": {
337
- "packages": ["telegraf", "node-telegram-bot-api", "grammy"]
338
- },
339
- "EMAIL": {
340
- "packages": ["nodemailer", "@sendgrid/mail", "postmark", "mailgun-js"]
341
- },
342
- "POWERSHELL": {
343
- "files": ["*.ps1", "*.psm1"]
344
- },
345
- "GHOST_INSPECTOR_CLI": {
346
- "packages": ["ghost-inspector"]
347
- },
348
- "BACKBLAZE_B2": {
349
- "packages": ["backblaze-b2"]
350
- }
351
- }
@@ -1,70 +0,0 @@
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
- const utils_1 = require("../../utils");
7
- const texts_1 = require("../../texts");
8
- const input_1 = __importDefault(require("../../input"));
9
- const output_1 = __importDefault(require("../../output"));
10
- const distro_1 = require("../../types/distro");
11
- const commandEnvironmentCreate = (0, utils_1.newCommand)('create', texts_1.DESC_COMMAND_ENVIRONMENT_CREATE);
12
- commandEnvironmentCreate.alias('add');
13
- commandEnvironmentCreate.option('-i, --identifier <identifier>', texts_1.OPTION_ENVIRONMENT_CREATE_IDENTIFIER);
14
- commandEnvironmentCreate.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
15
- commandEnvironmentCreate.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
16
- commandEnvironmentCreate.option('--scope <scope>', texts_1.OPT_COMMAND_SCOPE);
17
- commandEnvironmentCreate.option('--tags <tags>', texts_1.OPTION_ENVIRONMENT_TAGS);
18
- commandEnvironmentCreate.option('--public-url <url>', texts_1.OPTION_ENVIRONMENT_PUBLIC_URL);
19
- commandEnvironmentCreate.option('--icon <icon>', texts_1.OPTION_ENVIRONMENT_ICON);
20
- commandEnvironmentCreate.option('--note <note>', texts_1.OPT_COMMAND_NOTE);
21
- commandEnvironmentCreate.option('--agent-note <note>', texts_1.OPT_COMMAND_AGENT_NOTE);
22
- commandEnvironmentCreate.argument('[name]', texts_1.OPTION_ENVIRONMENT_NAME);
23
- commandEnvironmentCreate.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_ENVIRONMENT_CREATE}`);
24
- commandEnvironmentCreate.action(async (name, options) => {
25
- const humanId = require('human-id').default;
26
- const workspace = input_1.default.restApiWorkspace(options.workspace);
27
- const project = input_1.default.restApiProject(options.project, true);
28
- const scope = input_1.default.scope(project, options.scope);
29
- if (!name) {
30
- if (options.identifier)
31
- name = options.identifier;
32
- else
33
- name = humanId({ separator: '-', capitalize: false });
34
- }
35
- // identifier is required by the API; derive a slug from the name when
36
- // -i is not given (hyphens cannot appear at the start or end)
37
- const slug = name
38
- .toLowerCase()
39
- .replace(/[^a-z0-9_-]+/g, '-')
40
- .replace(/^-+|-+$/g, '');
41
- const data = {
42
- name,
43
- identifier: options.identifier || slug,
44
- scope,
45
- };
46
- if (project && scope === distro_1.SCOPE.PROJECT) {
47
- data.project = {
48
- name: project,
49
- };
50
- }
51
- if (options.tags) {
52
- data.tags = input_1.default.tags(options.tags);
53
- }
54
- if (options.publicUrl) {
55
- data.public_url = options.publicUrl;
56
- }
57
- if (options.icon) {
58
- data.icon = options.icon;
59
- }
60
- if (options.note) {
61
- data.note = options.note;
62
- }
63
- if (options.agentNote) {
64
- data.agent_note = options.agentNote;
65
- }
66
- const client = input_1.default.restApiTokenClient();
67
- const result = await client.createEnvironment(workspace, data);
68
- output_1.default.exitSuccess((0, texts_1.TXT_ENVIRONMENT_CREATED)(result.identifier, result.html_url));
69
- });
70
- exports.default = commandEnvironmentCreate;
@@ -1,29 +0,0 @@
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
- const utils_1 = require("../../utils");
7
- const texts_1 = require("../../texts");
8
- const output_1 = __importDefault(require("../../output"));
9
- const input_1 = __importDefault(require("../../input"));
10
- const resolve_1 = require("./resolve");
11
- const commandEnvironmentDelete = (0, utils_1.newCommand)('delete', texts_1.DESC_COMMAND_ENVIRONMENT_DELETE);
12
- commandEnvironmentDelete.alias('rm');
13
- commandEnvironmentDelete.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
14
- commandEnvironmentDelete.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
15
- commandEnvironmentDelete.option('-f, --force', texts_1.OPTION_CONFIRM_FORCE);
16
- commandEnvironmentDelete.argument('<identifier>', texts_1.OPTION_ENVIRONMENT_IDENTIFIER);
17
- commandEnvironmentDelete.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_ENVIRONMENT_DELETE}`);
18
- commandEnvironmentDelete.action(async (identifier, options) => {
19
- const workspace = input_1.default.restApiWorkspace(options.workspace);
20
- const client = input_1.default.restApiTokenClient();
21
- const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options);
22
- const confirmed = options.force ||
23
- (await output_1.default.confirm((0, texts_1.TXT_ENVIRONMENT_DELETE_CONFIRM)(identifier)));
24
- if (!confirmed)
25
- output_1.default.exitNormal();
26
- await client.deleteEnvironment(workspace, environment_id);
27
- output_1.default.exitSuccess((0, texts_1.TXT_ENVIRONMENT_DELETED)(identifier));
28
- });
29
- exports.default = commandEnvironmentDelete;
@@ -1,48 +0,0 @@
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
- const utils_1 = require("../../utils");
7
- const texts_1 = require("../../texts");
8
- const output_1 = __importDefault(require("../../output"));
9
- const input_1 = __importDefault(require("../../input"));
10
- const resolve_1 = require("./resolve");
11
- const commandEnvironmentGet = (0, utils_1.newCommand)('get', texts_1.DESC_COMMAND_ENVIRONMENT_GET);
12
- commandEnvironmentGet.option('-w, --workspace <domain>', texts_1.OPTION_REST_API_WORKSPACE);
13
- commandEnvironmentGet.option('-p, --project <name>', texts_1.OPTION_REST_API_PROJECT);
14
- commandEnvironmentGet.option('--format <text|json>', texts_1.OPTION_FORMAT);
15
- commandEnvironmentGet.argument('<identifier>', texts_1.OPTION_ENVIRONMENT_IDENTIFIER);
16
- commandEnvironmentGet.addHelpText('after', `\nEXAMPLES:${texts_1.EXAMPLE_ENVIRONMENT_GET}`);
17
- commandEnvironmentGet.action(async (identifier, options) => {
18
- const workspace = input_1.default.restApiWorkspace(options.workspace);
19
- const client = input_1.default.restApiTokenClient();
20
- const environment_id = await (0, resolve_1.resolveEnvironmentId)(client, workspace, identifier, options);
21
- const environment = await client.getEnvironment(workspace, environment_id);
22
- if (options.format === 'json') {
23
- output_1.default.json(environment);
24
- }
25
- else {
26
- const data = [
27
- ['Field', 'Value'],
28
- ['ID', environment.id || '-'],
29
- ['Identifier', environment.identifier || '-'],
30
- ['Name', environment.name || '-'],
31
- ['Scope', environment.scope || '-'],
32
- ['Tags', (environment.tags || []).join(', ') || '-'],
33
- ['Public URL', environment.public_url || '-'],
34
- ['Icon', environment.icon || '-'],
35
- ['Note', environment.note || '-'],
36
- ['Agent note', environment.agent_note || '-'],
37
- ];
38
- if (environment.project) {
39
- data.push(['Project', environment.project.name || '-']);
40
- }
41
- if (environment.html_url) {
42
- data.push(['URL', environment.html_url]);
43
- }
44
- output_1.default.table(data);
45
- }
46
- output_1.default.exitNormal();
47
- });
48
- exports.default = commandEnvironmentGet;