@microsoft/managed-apps-cli 0.10.0 → 0.12.0

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 (139) hide show
  1. package/README.md +4 -308
  2. package/dist/ArgumentProvider.d.ts.map +1 -1
  3. package/dist/ArgumentProvider.js +5 -1
  4. package/dist/ArgumentProvider.js.map +1 -1
  5. package/dist/Cli.d.ts.map +1 -1
  6. package/dist/Cli.js +6 -2
  7. package/dist/Cli.js.map +1 -1
  8. package/dist/Constants/CommandRegistry.d.ts +1 -2
  9. package/dist/Constants/CommandRegistry.d.ts.map +1 -1
  10. package/dist/Constants/CommandRegistry.js +27 -27
  11. package/dist/Constants/CommandRegistry.js.map +1 -1
  12. package/dist/Constants/HelpStrings.d.ts +5 -2
  13. package/dist/Constants/HelpStrings.d.ts.map +1 -1
  14. package/dist/Constants/HelpStrings.js +25 -12
  15. package/dist/Constants/HelpStrings.js.map +1 -1
  16. package/dist/Constants.d.ts +1 -1
  17. package/dist/Constants.d.ts.map +1 -1
  18. package/dist/Constants.js +9 -4
  19. package/dist/Constants.js.map +1 -1
  20. package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
  21. package/dist/Errors/GitHubErrorMap.js +1 -0
  22. package/dist/Errors/GitHubErrorMap.js.map +1 -1
  23. package/dist/HttpClient/CliHttpClient.d.ts +12 -15
  24. package/dist/HttpClient/CliHttpClient.d.ts.map +1 -1
  25. package/dist/HttpClient/CliHttpClient.js +131 -49
  26. package/dist/HttpClient/CliHttpClient.js.map +1 -1
  27. package/dist/Logger/CliLogger.d.ts +1 -0
  28. package/dist/Logger/CliLogger.d.ts.map +1 -1
  29. package/dist/Logger/CliLogger.js +7 -0
  30. package/dist/Logger/CliLogger.js.map +1 -1
  31. package/dist/Logger/ConsoleWriter.d.ts +2 -0
  32. package/dist/Logger/ConsoleWriter.d.ts.map +1 -1
  33. package/dist/Logger/ConsoleWriter.js +17 -7
  34. package/dist/Logger/ConsoleWriter.js.map +1 -1
  35. package/dist/Types/Command.types.d.ts +6 -0
  36. package/dist/Types/Command.types.d.ts.map +1 -1
  37. package/dist/Types/Command.types.js +8 -0
  38. package/dist/Types/Command.types.js.map +1 -1
  39. package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +1 -1
  40. package/dist/Utils/BuildVerbDescriptionTable.js +6 -2
  41. package/dist/Utils/BuildVerbDescriptionTable.js.map +1 -1
  42. package/dist/Utils/ConnectorIds.d.ts +12 -0
  43. package/dist/Utils/ConnectorIds.d.ts.map +1 -0
  44. package/dist/Utils/ConnectorIds.js +20 -0
  45. package/dist/Utils/ConnectorIds.js.map +1 -0
  46. package/dist/Utils/DownloadTemplate.d.ts.map +1 -1
  47. package/dist/Utils/DownloadTemplate.js +7 -5
  48. package/dist/Utils/DownloadTemplate.js.map +1 -1
  49. package/dist/Utils/EnvVars.d.ts +1 -1
  50. package/dist/Utils/EnvVars.d.ts.map +1 -1
  51. package/dist/Utils/EnvVars.js.map +1 -1
  52. package/dist/Utils/EnvironmentRoutingUtils.d.ts +20 -1
  53. package/dist/Utils/EnvironmentRoutingUtils.d.ts.map +1 -1
  54. package/dist/Utils/EnvironmentRoutingUtils.js +78 -3
  55. package/dist/Utils/EnvironmentRoutingUtils.js.map +1 -1
  56. package/dist/Utils/GitErrorClassifier.d.ts +40 -0
  57. package/dist/Utils/GitErrorClassifier.d.ts.map +1 -0
  58. package/dist/Utils/GitErrorClassifier.js +120 -0
  59. package/dist/Utils/GitErrorClassifier.js.map +1 -0
  60. package/dist/Utils/GitRunner.d.ts +107 -0
  61. package/dist/Utils/GitRunner.d.ts.map +1 -0
  62. package/dist/Utils/GitRunner.js +89 -0
  63. package/dist/Utils/GitRunner.js.map +1 -0
  64. package/dist/Utils/GitUtils.d.ts +12 -0
  65. package/dist/Utils/GitUtils.d.ts.map +1 -1
  66. package/dist/Utils/GitUtils.js +83 -20
  67. package/dist/Utils/GitUtils.js.map +1 -1
  68. package/dist/Utils/GitVersionChecker.d.ts.map +1 -1
  69. package/dist/Utils/GitVersionChecker.js +11 -8
  70. package/dist/Utils/GitVersionChecker.js.map +1 -1
  71. package/dist/Utils/Paging.d.ts +1 -0
  72. package/dist/Utils/Paging.d.ts.map +1 -1
  73. package/dist/Utils/Paging.js +7 -1
  74. package/dist/Utils/Paging.js.map +1 -1
  75. package/dist/Utils/RepoDetails.d.ts +29 -0
  76. package/dist/Utils/RepoDetails.d.ts.map +1 -0
  77. package/dist/Utils/RepoDetails.js +37 -0
  78. package/dist/Utils/RepoDetails.js.map +1 -0
  79. package/dist/Utils/ResolveCommand.d.ts.map +1 -1
  80. package/dist/Utils/ResolveCommand.js +6 -4
  81. package/dist/Utils/ResolveCommand.js.map +1 -1
  82. package/dist/Verbs/AddConnector.d.ts +1 -1
  83. package/dist/Verbs/AddConnector.d.ts.map +1 -1
  84. package/dist/Verbs/AddConnector.js +13 -7
  85. package/dist/Verbs/AddConnector.js.map +1 -1
  86. package/dist/Verbs/AddConnectorFlows.d.ts +2 -2
  87. package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -1
  88. package/dist/Verbs/AddConnectorFlows.js +11 -13
  89. package/dist/Verbs/AddConnectorFlows.js.map +1 -1
  90. package/dist/Verbs/AddDataSource.js +1 -1
  91. package/dist/Verbs/AddDataSource.js.map +1 -1
  92. package/dist/Verbs/AddTable.js +1 -1
  93. package/dist/Verbs/AddTable.js.map +1 -1
  94. package/dist/Verbs/ConnectorHelpers.d.ts +2 -0
  95. package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
  96. package/dist/Verbs/ConnectorHelpers.js +7 -1
  97. package/dist/Verbs/ConnectorHelpers.js.map +1 -1
  98. package/dist/Verbs/CreateMaafApp.d.ts +25 -13
  99. package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
  100. package/dist/Verbs/CreateMaafApp.js +265 -116
  101. package/dist/Verbs/CreateMaafApp.js.map +1 -1
  102. package/dist/Verbs/Dev.js +2 -0
  103. package/dist/Verbs/Dev.js.map +1 -1
  104. package/dist/Verbs/GetMaafApp.d.ts.map +1 -1
  105. package/dist/Verbs/GetMaafApp.js +10 -0
  106. package/dist/Verbs/GetMaafApp.js.map +1 -1
  107. package/dist/Verbs/Init.d.ts.map +1 -1
  108. package/dist/Verbs/Init.js +36 -21
  109. package/dist/Verbs/Init.js.map +1 -1
  110. package/dist/Verbs/ListConnectors.d.ts.map +1 -1
  111. package/dist/Verbs/ListConnectors.js +1 -0
  112. package/dist/Verbs/ListConnectors.js.map +1 -1
  113. package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -1
  114. package/dist/Verbs/MaafAppPermissions.js +87 -15
  115. package/dist/Verbs/MaafAppPermissions.js.map +1 -1
  116. package/dist/Verbs/Pack.d.ts +1 -1
  117. package/dist/Verbs/RefreshDataSource.js +1 -1
  118. package/dist/Verbs/RefreshDataSource.js.map +1 -1
  119. package/dist/Verbs/{DeleteDataSource.d.ts → RemoveDataSource.d.ts} +2 -2
  120. package/dist/Verbs/RemoveDataSource.d.ts.map +1 -0
  121. package/dist/Verbs/RemoveDataSource.js +158 -0
  122. package/dist/Verbs/RemoveDataSource.js.map +1 -0
  123. package/dist/Verbs/ShareLinkList.js +1 -1
  124. package/dist/Verbs/ShareLinkList.js.map +1 -1
  125. package/dist/Verbs/ShowMaafApp.d.ts +6 -0
  126. package/dist/Verbs/ShowMaafApp.d.ts.map +1 -1
  127. package/dist/Verbs/ShowMaafApp.js +8 -0
  128. package/dist/Verbs/ShowMaafApp.js.map +1 -1
  129. package/dist/Verbs/VerbConstants.d.ts +1 -1
  130. package/dist/Verbs/VerbConstants.js +1 -1
  131. package/dist/Verbs/VerbConstants.js.map +1 -1
  132. package/dist/Verbs/index.d.ts +1 -1
  133. package/dist/Verbs/index.d.ts.map +1 -1
  134. package/dist/Verbs/index.js +1 -1
  135. package/dist/Verbs/index.js.map +1 -1
  136. package/package.json +5 -5
  137. package/dist/Verbs/DeleteDataSource.d.ts.map +0 -1
  138. package/dist/Verbs/DeleteDataSource.js +0 -105
  139. package/dist/Verbs/DeleteDataSource.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import { execSync } from 'child_process';
4
+ import { execFileSync } from 'child_process';
5
+ import { runGit } from './GitRunner.js';
5
6
  /**
6
7
  * Reads the current branch and commit SHA from the working directory's git repo.
7
8
  * Returns null when git is unavailable or the directory is not a git repo.
@@ -9,28 +10,89 @@ import { execSync } from 'child_process';
9
10
  * literal string 'HEAD' and callers should not treat it as a branch name.
10
11
  */
11
12
  export function resolveGitDefaults() {
12
- try {
13
- const commitSha = execSync('git rev-parse HEAD', { stdio: 'pipe' }).toString().trim();
14
- const branch = execSync('git rev-parse --abbrev-ref HEAD', { stdio: 'pipe' }).toString().trim();
15
- return { branch, commitSha, detached: branch === 'HEAD' };
16
- }
17
- catch {
13
+ const sha = runGit(['rev-parse', 'HEAD'], {
14
+ captureStdout: true,
15
+ allowFailure: true,
16
+ emitStderr: false,
17
+ });
18
+ if (!sha.success)
18
19
  return null;
19
- }
20
+ const ref = runGit(['rev-parse', '--abbrev-ref', 'HEAD'], {
21
+ captureStdout: true,
22
+ allowFailure: true,
23
+ emitStderr: false,
24
+ });
25
+ if (!ref.success)
26
+ return null;
27
+ const commitSha = sha.stdout.trim();
28
+ const branch = ref.stdout.trim();
29
+ return { branch, commitSha, detached: branch === 'HEAD' };
20
30
  }
21
31
  /**
22
32
  * Reads the current git remote origin URL from the working directory's git repo.
23
33
  * Returns null when git is unavailable or the directory is not a git repo
24
34
  */
25
35
  export function getCurrentGitRemoteUrl() {
36
+ const result = runGit(['config', '--get', 'remote.origin.url'], {
37
+ captureStdout: true,
38
+ allowFailure: true,
39
+ emitStderr: false,
40
+ });
41
+ if (!result.success)
42
+ return undefined;
43
+ return result.stdout.trim() || undefined;
44
+ }
45
+ // Only allow transport schemes the platform actually returns: HTTPS clone URLs
46
+ // (native Azure DevOps and GitHub HTTPS) and SSH clone URLs. This blocks git's
47
+ // `ext::`, `fd::`, and similar protocols that can spawn external commands as
48
+ // transport helpers without the shell ever being involved.
49
+ const allowedGitRemoteSchemes = ['https://', 'ssh://', 'git@'];
50
+ function isSafeGitRemoteUrl(remoteUrl) {
51
+ return (allowedGitRemoteSchemes.some((scheme) => remoteUrl.startsWith(scheme)) &&
52
+ remoteUrl.trim() === remoteUrl &&
53
+ !remoteUrl.startsWith('-') &&
54
+ !/[\r\n\0]/.test(remoteUrl));
55
+ }
56
+ // A failing `execFileSync` sets `error.message` to
57
+ // "Command failed: git remote add origin <url>", embedding the remote URL
58
+ // verbatim. If that URL ever carries credentials (e.g. https://<PAT>@host/...),
59
+ // returning the raw message would leak the secret into telemetry. Redact any
60
+ // userinfo segment before surfacing the error to callers.
61
+ function scrubGitErrorMessage(message) {
62
+ return message.replace(/:\/\/[^@\s/]+@/g, '://[REDACTED]@');
63
+ }
64
+ /**
65
+ * Initializes a local git repository in the current working directory and
66
+ * optionally configures the origin remote in the supplied working directory.
67
+ * Returns true when `git init` succeeds, false when git is unavailable or the
68
+ * command fails for any reason (e.g. permissions). Callers should treat false as
69
+ * a soft failure — the app was already created; git can be initialized manually.
70
+ */
71
+ export function initializeLocalGitRepo(remoteUrl, cwd = process.cwd()) {
26
72
  try {
27
- const remoteUrl = execSync('git config --get remote.origin.url', { stdio: 'pipe' })
28
- .toString()
29
- .trim();
30
- return remoteUrl || undefined;
73
+ if (remoteUrl !== undefined && !isSafeGitRemoteUrl(remoteUrl)) {
74
+ return {
75
+ success: false,
76
+ error: 'Unsafe git remote URL.',
77
+ };
78
+ }
79
+ execFileSync('git', ['init'], { stdio: 'pipe', windowsHide: true, cwd });
80
+ if (remoteUrl) {
81
+ execFileSync('git', ['remote', 'add', 'origin', remoteUrl], {
82
+ stdio: 'pipe',
83
+ windowsHide: true,
84
+ cwd,
85
+ });
86
+ }
87
+ return {
88
+ success: true,
89
+ };
31
90
  }
32
- catch {
33
- return undefined;
91
+ catch (error) {
92
+ return {
93
+ success: false,
94
+ error: scrubGitErrorMessage(error instanceof Error ? error.message : String(error)),
95
+ };
34
96
  }
35
97
  }
36
98
  /**
@@ -39,12 +101,13 @@ export function getCurrentGitRemoteUrl() {
39
101
  * the check rather than treat it as a clean tree.
40
102
  */
41
103
  export function hasUncommittedChanges() {
42
- try {
43
- const status = execSync('git status --porcelain', { stdio: 'pipe' }).toString().trim();
44
- return status.length > 0;
45
- }
46
- catch {
104
+ const result = runGit(['status', '--porcelain'], {
105
+ captureStdout: true,
106
+ allowFailure: true,
107
+ emitStderr: false,
108
+ });
109
+ if (!result.success)
47
110
  return null;
48
- }
111
+ return result.stdout.trim().length > 0;
49
112
  }
50
113
  //# sourceMappingURL=GitUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GitUtils.js","sourceRoot":"","sources":["../../src/Utils/GitUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQzC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACtF,MAAM,MAAM,GAAG,QAAQ,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAChF,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,IAAI,SAAS,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACvF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"GitUtils.js","sourceRoot":"","sources":["../../src/Utils/GitUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GitVersionChecker.d.ts","sourceRoot":"","sources":["../../src/Utils/GitVersionChecker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAmBzC"}
1
+ {"version":3,"file":"GitVersionChecker.d.ts","sourceRoot":"","sources":["../../src/Utils/GitVersionChecker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAuBzC"}
@@ -1,10 +1,10 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import { execFileSync } from 'child_process';
5
4
  import semver from 'semver';
6
5
  import packageJson from '../../package.json' with { type: 'json' };
7
6
  import { ConfigurationError } from '../Errors/CliError.js';
7
+ import { runGit } from './GitRunner.js';
8
8
  /**
9
9
  * Preflight guard for `ms app create`: throws `ConfigurationError` when `git` is
10
10
  * missing from PATH, or present but older than this package's `engines.git`
@@ -39,15 +39,18 @@ import { ConfigurationError } from '../Errors/CliError.js';
39
39
  * format we couldn't predict.
40
40
  */
41
41
  export function ensureGitInstalled() {
42
- let versionOutput;
43
- try {
44
- versionOutput = execFileSync('git', ['--version'], {
45
- stdio: ['ignore', 'pipe', 'ignore'],
46
- }).toString();
47
- }
48
- catch {
42
+ // `runGit` with allowFailure turns a missing-git spawn failure into a
43
+ // structured result instead of a throw; emitStderr is off because we own the
44
+ // user-facing message here (the raw "command not found" stderr would be noise).
45
+ const result = runGit(['--version'], {
46
+ captureStdout: true,
47
+ allowFailure: true,
48
+ emitStderr: false,
49
+ });
50
+ if (!result.success) {
49
51
  throw new ConfigurationError("'git' is required but was not found on PATH.");
50
52
  }
53
+ const versionOutput = result.stdout;
51
54
  const required = packageJson.engines.git;
52
55
  if (!semver.validRange(required))
53
56
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"GitVersionChecker.js","sourceRoot":"","sources":["../../src/Utils/GitVersionChecker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;YACjD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,8CAA8C,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QAAE,OAAO;IAE9C,MAAM,IAAI,kBAAkB,CAC1B,OAAO,QAAQ,uBAAuB,KAAK,CAAC,OAAO,wBAAwB,CAC5E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"GitVersionChecker.js","sourceRoot":"","sources":["../../src/Utils/GitVersionChecker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,kBAAkB;IAChC,sEAAsE;IACtE,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE;QACnC,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,8CAA8C,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;QAAE,OAAO;IAE9C,MAAM,IAAI,kBAAkB,CAC1B,OAAO,QAAQ,uBAAuB,KAAK,CAAC,OAAO,wBAAwB,CAC5E,CAAC;AACJ,CAAC"}
@@ -24,5 +24,6 @@ export declare function printPagedTable(options: {
24
24
  rows: string[][];
25
25
  emptyMessage?: string;
26
26
  totalLabel: string;
27
+ hint?: string;
27
28
  }): Promise<void>;
28
29
  //# sourceMappingURL=Paging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Paging.d.ts","sourceRoot":"","sources":["../../src/Utils/Paging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,CA2BnE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhB"}
1
+ {"version":3,"file":"Paging.d.ts","sourceRoot":"","sources":["../../src/Utils/Paging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,CA2BnE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChB"}
@@ -69,11 +69,14 @@ export async function printPagedText(text) {
69
69
  * or a single full table in non-TTY/piped mode.
70
70
  */
71
71
  export async function printPagedTable(options) {
72
- const { title, metadata, columns, rows, emptyMessage, totalLabel } = options;
72
+ const { title, metadata, columns, rows, emptyMessage, totalLabel, hint } = options;
73
73
  const total = rows.length;
74
74
  if (!process.stdout.isTTY) {
75
75
  printTable({ title, metadata, columns, rows, emptyMessage });
76
76
  console.log(styleText('dim', ` Showing ${total} of ${total} ${totalLabel}`));
77
+ if (hint) {
78
+ console.log(styleText('dim', ` ${hint}`));
79
+ }
77
80
  return;
78
81
  }
79
82
  const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));
@@ -83,6 +86,9 @@ export async function printPagedTable(options) {
83
86
  const isLastPage = page === totalPages - 1;
84
87
  printTable({ title, metadata, columns, rows: pageRows, emptyMessage });
85
88
  console.log(styleText('dim', ` Showing ${start + pageRows.length} of ${total} ${totalLabel}`));
89
+ if (hint) {
90
+ console.log(styleText('dim', ` ${hint}`));
91
+ }
86
92
  if (!isLastPage) {
87
93
  console.log(styleText('dim', ' Press Enter for more, Esc or q to exit'));
88
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Paging.js","sourceRoot":"","sources":["../../src/Utils/Paging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAE5B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,GAAiB,EAAE,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAEtB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC9C,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAE7D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,UAAU;YAAE,MAAM;QAEtB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM;IAC/B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAOrC;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAE7D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC;QAE3C,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,KAAK,GAAG,QAAQ,CAAC,MAAM,OAAO,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,UAAU;YAAE,MAAM;QAEtB,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;QACtC,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Paging.js","sourceRoot":"","sources":["../../src/Utils/Paging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { MaafAppDefinition, ManagedAppRepoType } from '@microsoft/managed-apps-actions';
5
+ /** Display-ready repository classification + clone URL derived from a `MaafAppDefinition`. */
6
+ export type RepoDetails = {
7
+ /**
8
+ * Repository-type label for display. Known {@link ManagedAppRepoType} values
9
+ * are mapped to friendly labels; unknown/forward-compat values pass through
10
+ * as the raw server string (see {@link friendlyRepoType}).
11
+ */
12
+ repoType?: string;
13
+ /** Git clone URL for the backing repository, when applicable. */
14
+ cloneUrl?: string;
15
+ };
16
+ /**
17
+ * Maps the raw {@link ManagedAppRepoType} enum returned by the server to a
18
+ * human-friendly label for display. Unknown/forward-compat values fall through
19
+ * to the raw string; `undefined` (legacy apps with no source-control metadata)
20
+ * yields `undefined` so callers can omit the line entirely.
21
+ */
22
+ export declare function friendlyRepoType(repoType: ManagedAppRepoType | undefined): string | undefined;
23
+ /**
24
+ * Derives the display-ready {@link RepoDetails} from an app definition. Returns
25
+ * `undefined` when the app exposes no source-control metadata at all (no
26
+ * `repoType` and no `cloneUrl`), so callers can omit the lines entirely.
27
+ */
28
+ export declare function toRepoDetails(app: Pick<MaafAppDefinition, 'repoType' | 'cloneUrl'>): RepoDetails | undefined;
29
+ //# sourceMappingURL=RepoDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoDetails.d.ts","sourceRoot":"","sources":["../../src/Utils/RepoDetails.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE7F,8FAA8F;AAC9F,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAa7F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,UAAU,CAAC,GACpD,WAAW,GAAG,SAAS,CAOzB"}
@@ -0,0 +1,37 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ /**
5
+ * Maps the raw {@link ManagedAppRepoType} enum returned by the server to a
6
+ * human-friendly label for display. Unknown/forward-compat values fall through
7
+ * to the raw string; `undefined` (legacy apps with no source-control metadata)
8
+ * yields `undefined` so callers can omit the line entirely.
9
+ */
10
+ export function friendlyRepoType(repoType) {
11
+ switch (repoType) {
12
+ case undefined:
13
+ return undefined;
14
+ case 'Native':
15
+ return 'Platform-managed Git repository';
16
+ case 'ExternallyProvidedBuild':
17
+ return 'Externally provided build (no source)';
18
+ case 'ExternalGitProviderBound':
19
+ return 'External Git provider';
20
+ default:
21
+ return repoType;
22
+ }
23
+ }
24
+ /**
25
+ * Derives the display-ready {@link RepoDetails} from an app definition. Returns
26
+ * `undefined` when the app exposes no source-control metadata at all (no
27
+ * `repoType` and no `cloneUrl`), so callers can omit the lines entirely.
28
+ */
29
+ export function toRepoDetails(app) {
30
+ const repoType = friendlyRepoType(app.repoType);
31
+ const cloneUrl = app.cloneUrl ?? undefined;
32
+ if (!repoType && !cloneUrl) {
33
+ return undefined;
34
+ }
35
+ return { repoType, cloneUrl };
36
+ }
37
+ //# sourceMappingURL=RepoDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RepoDetails.js","sourceRoot":"","sources":["../../src/Utils/RepoDetails.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAwC;IACvE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,iCAAiC,CAAC;QAC3C,KAAK,yBAAyB;YAC5B,OAAO,uCAAuC,CAAC;QACjD,KAAK,0BAA0B;YAC7B,OAAO,uBAAuB,CAAC;QACjC;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAqD;IAErD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResolveCommand.d.ts","sourceRoot":"","sources":["../../src/Utils/ResolveCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,WAAW,EAEX,OAAO,EACP,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAWjG;AAuDD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,iGAAiG;IACjG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,uGAAuG;IACvG,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,WAAW,GAChB,mBAAmB,GAAG,IAAI,CA8B5B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,KAAK,IAAI,OAAO,CAE9E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAK1F"}
1
+ {"version":3,"file":"ResolveCommand.d.ts","sourceRoot":"","sources":["../../src/Utils/ResolveCommand.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAEV,WAAW,EAEX,OAAO,EACP,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAWjG;AA0DD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,iGAAiG;IACjG,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,uGAAuG;IACvG,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,WAAW,GAChB,mBAAmB,GAAG,IAAI,CA8B5B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,KAAK,IAAI,OAAO,CAE9E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAK1F"}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import { hasParentHandler, isTypedVerbDef } from '../Types/Command.types.js';
4
+ import { getCommandEntry, hasParentHandler, isTypedVerbDef } from '../Types/Command.types.js';
5
5
  /**
6
6
  * Resolves command-line tokens against the command tree.
7
7
  *
@@ -57,7 +57,7 @@ function walkCommands(commands, tokens, index, path) {
57
57
  const token = tokens[index];
58
58
  if (token.startsWith('-'))
59
59
  return null;
60
- const entry = commands[token];
60
+ const entry = getCommandEntry(commands, token);
61
61
  if (!entry)
62
62
  return null;
63
63
  const nextPath = [...path, token];
@@ -65,7 +65,9 @@ function walkCommands(commands, tokens, index, path) {
65
65
  return { path: nextPath, handler: entry.handler, tokensConsumed: index + 1 };
66
66
  }
67
67
  const next = tokens[index + 1];
68
- const nextIsKnownSub = next !== undefined && !next.startsWith('-') && next in entry.commands;
68
+ const nextIsKnownSub = next !== undefined &&
69
+ !next.startsWith('-') &&
70
+ getCommandEntry(entry.commands, next) !== undefined;
69
71
  if (nextIsKnownSub) {
70
72
  return walkCommands(entry.commands, tokens, index + 1, nextPath);
71
73
  }
@@ -104,7 +106,7 @@ export function findIncompleteTypedPath(argv, tree) {
104
106
  const pathTokens = [noun];
105
107
  let inTypedGroup = false;
106
108
  for (const token of rest) {
107
- const entry = commands[token];
109
+ const entry = getCommandEntry(commands, token);
108
110
  if (!entry) {
109
111
  return inTypedGroup ? { pathTokens, unknownToken: token } : null;
110
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResolveCommand.js","sourceRoot":"","sources":["../../src/Utils/ResolveCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResolveCommand.js","sourceRoot":"","sources":["../../src/Utils/ResolveCommand.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import type { ArgumentProvider } from '../ArgumentProvider.js';
5
5
  /**
6
- * `ms app add connector` — a single entry point that adds a connector to
6
+ * `ms app add data-source` — a single entry point that adds a connector to
7
7
  * the app and picks the right shape (table or action) based on the
8
8
  * connector's capabilities.
9
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AddConnector.d.ts","sourceRoot":"","sources":["../../src/Verbs/AddConnector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkB5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGzF"}
1
+ {"version":3,"file":"AddConnector.d.ts","sourceRoot":"","sources":["../../src/Verbs/AddConnector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkB5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FzF"}
@@ -5,13 +5,13 @@ import { getSettings } from '../CliSettings.js';
5
5
  import { createDefaultStringOption, promptConfirm } from '../CliUtils.js';
6
6
  import { HelpStrings } from '../Constants/HelpStrings.js';
7
7
  import { UsageError } from '../Errors/CliError.js';
8
+ import { isCdsConnectorId } from '../Utils/ConnectorIds.js';
8
9
  import { isTabularConnector, runAddActionFlowAsync, runAddTableFlowAsync, } from './AddConnectorFlows.js';
9
10
  import { runConnectorDlpPreflightAsync } from './ConnectorHelpers.js';
10
11
  import { AddConnectorArguments, SharedArguments } from './VerbConstants.js';
11
- const COMMON_DATA_SERVICE_FOR_APPS_API_ID = 'shared_commondataserviceforapps';
12
12
  const DATAVERSE_PAIR_ERROR = '--dataverse-environment-id and --table must be specified together for the Common Data Service for Apps connector. Provide both or neither.';
13
13
  /**
14
- * `ms app add connector` — a single entry point that adds a connector to
14
+ * `ms app add data-source` — a single entry point that adds a connector to
15
15
  * the app and picks the right shape (table or action) based on the
16
16
  * connector's capabilities.
17
17
  *
@@ -60,8 +60,7 @@ export async function addConnectorAsync(argumentProvider) {
60
60
  asFlag,
61
61
  connectorLabel,
62
62
  });
63
- const isCommonDataServiceForApps = apiId.toLowerCase() === COMMON_DATA_SERVICE_FOR_APPS_API_ID ||
64
- apiId.toLowerCase().endsWith(`/${COMMON_DATA_SERVICE_FOR_APPS_API_ID}`);
63
+ const isCommonDataServiceForApps = isCdsConnectorId(apiId);
65
64
  // ── CDS connector special case: reinterpret --table as Dataverse logical name ─
66
65
  // For the Common Data Service for Apps connector, `--table` (existing flag) carries
67
66
  // the Dataverse entity logical name and pairs with `--dataverse-environment-id`. The
@@ -79,7 +78,7 @@ export async function addConnectorAsync(argumentProvider) {
79
78
  }
80
79
  }
81
80
  else if (!isCommonDataServiceForApps && dataverseEnvironmentIdFlag) {
82
- throw new UsageError('--dataverse-environment-id can only be used with --connector shared_commondataserviceforapps.');
81
+ throw new UsageError('--dataverse-environment-id can only be used with the Common Data Service for Apps connector (--connector shared_commondataserviceforapps or --connector commondataserviceforapps).');
83
82
  }
84
83
  // ── Reject contradictory flags when adding actions (CDS already handled above) ─
85
84
  if (mode === 'action' && !isCommonDataServiceForApps && (datasetFlag || tableFlag)) {
@@ -135,8 +134,15 @@ async function resolveModeAsync(input) {
135
134
  return addAsTable ? 'table' : 'action';
136
135
  }
137
136
  function createOptionSchema(argumentProvider) {
138
- argumentProvider.setDescription(HelpStrings.app.add.connector.description);
139
- argumentProvider.addExamples(HelpStrings.app.add.connector.examples);
137
+ const invokedAsConnector = argumentProvider.getResolvedCommand()?.path.at(-1) === 'connector';
138
+ if (invokedAsConnector) {
139
+ argumentProvider.setDescription(`${HelpStrings.app.add.connector.deprecation}\n\n${HelpStrings.app.add.connector.description}`);
140
+ argumentProvider.addExamples(HelpStrings.app.add.connector.deprecatedExamples);
141
+ }
142
+ else {
143
+ argumentProvider.setDescription(HelpStrings.app.add.connector.description);
144
+ argumentProvider.addExamples(HelpStrings.app.add.connector.examples);
145
+ }
140
146
  argumentProvider.addOptions([
141
147
  createDefaultStringOption({
142
148
  flags: { key: SharedArguments.Connector.name },
@@ -1 +1 @@
1
- {"version":3,"file":"AddConnector.js","sourceRoot":"","sources":["../../src/Verbs/AddConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AddConnector.js","sourceRoot":"","sources":["../../src/Verbs/AddConnector.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { ArgumentProvider } from '../ArgumentProvider.js';
7
7
  * Shared helpers for the two "add a connector data source" flows.
8
8
  *
9
9
  * Both `ms app add table` and `ms app add action` are thin wrappers around
10
- * these helpers; `ms app add connector` calls them after deciding which mode
10
+ * these helpers; `ms app add data-source` calls them after deciding which mode
11
11
  * to run.
12
12
  *
13
13
  * Design contract:
@@ -17,7 +17,7 @@ import type { ArgumentProvider } from '../ArgumentProvider.js';
17
17
  * invocation.
18
18
  * - The caller is responsible for any capability checks specific to its
19
19
  * intent (e.g., `ms app add table` enforces that the connector is
20
- * tabular; `ms app add connector` already branched on capability).
20
+ * tabular; `ms app add data-source` already branched on capability).
21
21
  * - These helpers handle: connection resolution (with interactive prompt or
22
22
  * print-and-exit), dataset/table resolution (table flow only), invoking
23
23
  * the underlying action, and printing the success message.
@@ -1 +1 @@
1
- {"version":3,"file":"AddConnectorFlows.d.ts","sourceRoot":"","sources":["../../src/Verbs/AddConnectorFlows.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAGV,GAAG,EACH,4BAA4B,EAG7B,MAAM,iCAAiC,CAAC;AAWzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAa5D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD;;;;OAIG;IACH,MAAM,CAAC,EAAE,4BAA4B,CAAC;IACtC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HhF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GlF;AAyCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAE1D"}
1
+ {"version":3,"file":"AddConnectorFlows.d.ts","sourceRoot":"","sources":["../../src/Verbs/AddConnectorFlows.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAGV,GAAG,EACH,4BAA4B,EAG7B,MAAM,iCAAiC,CAAC;AAWzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAY5D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD;;;;OAIG;IACH,MAAM,CAAC,EAAE,4BAA4B,CAAC;IACtC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HhF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GlF;AAyCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAE1D"}
@@ -6,9 +6,9 @@ import { getCliLogger, getSettings } from '../CliSettings.js';
6
6
  import { promptConfirm, promptSelectOrInput, promptText } from '../CliUtils.js';
7
7
  import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
8
8
  import { UsageError } from '../Errors/CliError.js';
9
+ import { isCdsConnectorId } from '../Utils/ConnectorIds.js';
9
10
  import { printInfo, printSuccess, printTable } from '../Utils/ConsoleOutput.js';
10
11
  import { requestCliUserConsentAsync, resolveConnectionInteractivelyAsync, } from './ConnectorHelpers.js';
11
- const COMMON_DATA_SERVICE_FOR_APPS_API_ID = 'shared_commondataserviceforapps';
12
12
  /**
13
13
  * Runs the connection → dataset → table → addConnectorTableAsync flow.
14
14
  * Caller must have already verified the connector exists, passed the
@@ -107,9 +107,9 @@ export async function runAddTableFlowAsync(args) {
107
107
  ...baseContext,
108
108
  actionsParams: { apiId, connectionId, dataset, tableName, skipCodegen, useV1Codegen },
109
109
  };
110
- await addConnectorTableAsync(context);
111
- printSuccess(`Table '${tableName}' from connector '${connector.properties.displayName ?? apiId}' added successfully.`);
112
- printInfo(`Hint: Run '${CLI_BINARY_NAME} dev' to test locally, or '${CLI_BINARY_NAME} push' to deploy.`);
110
+ const dataSourceName = await addConnectorTableAsync(context);
111
+ printSuccess(`Data source '${dataSourceName}' added successfully (table '${tableName}' from connector '${connector.properties.displayName ?? apiId}').`);
112
+ printInfo(`Hint: Run '${CLI_BINARY_NAME} app dev' to test locally, or '${CLI_BINARY_NAME} app deploy' to deploy.`);
113
113
  }
114
114
  /**
115
115
  * Runs the optional-connection → addConnectorActionAsync flow.
@@ -155,9 +155,7 @@ export async function runAddActionFlowAsync(args) {
155
155
  const actionPolicy = policy
156
156
  ? getConnectorActionPolicy(policy, connector.name ?? apiId)
157
157
  : undefined;
158
- const normalizedApiId = apiId.toLowerCase();
159
- const isCommonDataServiceForApps = normalizedApiId === COMMON_DATA_SERVICE_FOR_APPS_API_ID ||
160
- normalizedApiId.endsWith(`/${COMMON_DATA_SERVICE_FOR_APPS_API_ID}`);
158
+ const isCommonDataServiceForApps = isCdsConnectorId(apiId);
161
159
  const initialDataverseParams = await resolveInitialDataverseParamsAsync({
162
160
  isCommonDataServiceForApps,
163
161
  dataverseEnvironmentId,
@@ -185,9 +183,9 @@ export async function runAddActionFlowAsync(args) {
185
183
  },
186
184
  logger,
187
185
  });
188
- let filterResult;
186
+ let actionResult;
189
187
  try {
190
- filterResult = await addConnectorActionAsync(createContext(initialDataverseParams));
188
+ actionResult = await addConnectorActionAsync(createContext(initialDataverseParams));
191
189
  }
192
190
  catch (err) {
193
191
  if (err instanceof AllActionsBlockedError) {
@@ -199,10 +197,10 @@ export async function runAddActionFlowAsync(args) {
199
197
  }
200
198
  // Surface the filter result to the user (count only — blocked names go to
201
199
  // telemetry via AddConnectorAction.DlpFiltered).
202
- if (filterResult.filteredCount > 0) {
203
- printInfo(`Skipped ${filterResult.filteredCount} of ${filterResult.totalCount} actions due to your organization's connector policy.`);
200
+ if (actionResult.filteredCount > 0) {
201
+ printInfo(`Skipped ${actionResult.filteredCount} of ${actionResult.totalCount} actions due to your organization's connector policy.`);
204
202
  }
205
- printSuccess(`Connector '${connector.properties.displayName ?? apiId}' added successfully.`);
203
+ printSuccess(`Data source '${actionResult.dataSourceName}' added successfully (connector '${connector.properties.displayName ?? apiId}').`);
206
204
  if (isCommonDataServiceForApps && settings.interactive && !initialDataverseParams) {
207
205
  const connectTable = await promptConfirm({
208
206
  message: 'Connect this to a specific Dataverse table?',
@@ -213,7 +211,7 @@ export async function runAddActionFlowAsync(args) {
213
211
  printSuccess('Dataverse table binding added successfully.');
214
212
  }
215
213
  }
216
- printInfo(`Hint: Run '${CLI_BINARY_NAME} dev' to test locally, or '${CLI_BINARY_NAME} push' to deploy.`);
214
+ printInfo(`Hint: Run '${CLI_BINARY_NAME} app dev' to test locally, or '${CLI_BINARY_NAME} app deploy' to deploy.`);
217
215
  }
218
216
  async function resolveInitialDataverseParamsAsync(input) {
219
217
  if (!input.isCommonDataServiceForApps) {