@microsoft/managed-apps-cli 0.6.1 → 0.7.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.
- package/README.md +25 -9
- package/dist/ArgumentProvider.d.ts +10 -2
- package/dist/ArgumentProvider.d.ts.map +1 -1
- package/dist/ArgumentProvider.js +11 -2
- package/dist/ArgumentProvider.js.map +1 -1
- package/dist/Authentication/ActiveAccountStore.d.ts +24 -0
- package/dist/Authentication/ActiveAccountStore.d.ts.map +1 -0
- package/dist/Authentication/ActiveAccountStore.js +54 -0
- package/dist/Authentication/ActiveAccountStore.js.map +1 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +57 -3
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +187 -27
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
- package/dist/Cli.d.ts.map +1 -1
- package/dist/Cli.js +7 -2
- package/dist/Cli.js.map +1 -1
- package/dist/CliUtils.d.ts +2 -8
- package/dist/CliUtils.d.ts.map +1 -1
- package/dist/CliUtils.js.map +1 -1
- package/dist/Constants/CommandRegistry.d.ts.map +1 -1
- package/dist/Constants/CommandRegistry.js +17 -6
- package/dist/Constants/CommandRegistry.js.map +1 -1
- package/dist/Constants/HelpStrings.d.ts +25 -3
- package/dist/Constants/HelpStrings.d.ts.map +1 -1
- package/dist/Constants/HelpStrings.js +40 -9
- package/dist/Constants/HelpStrings.js.map +1 -1
- package/dist/Errors/GitHubErrorMap.d.ts +3 -3
- package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
- package/dist/Errors/GitHubErrorMap.js +11 -6
- package/dist/Errors/GitHubErrorMap.js.map +1 -1
- package/dist/Logger/ConsoleWriter.d.ts.map +1 -1
- package/dist/Logger/ConsoleWriter.js +7 -7
- package/dist/Logger/ConsoleWriter.js.map +1 -1
- package/dist/Middletier/FunctionsBundler.d.ts +17 -0
- package/dist/Middletier/FunctionsBundler.d.ts.map +1 -0
- package/dist/Middletier/FunctionsBundler.js +165 -0
- package/dist/Middletier/FunctionsBundler.js.map +1 -0
- package/dist/Middletier/PackFunctions.d.ts +52 -0
- package/dist/Middletier/PackFunctions.d.ts.map +1 -0
- package/dist/Middletier/PackFunctions.js +122 -0
- package/dist/Middletier/PackFunctions.js.map +1 -0
- package/dist/Types/Cli.types.d.ts +42 -1
- package/dist/Types/Cli.types.d.ts.map +1 -1
- package/dist/Utils/ConsoleOutput.d.ts.map +1 -1
- package/dist/Utils/ConsoleOutput.js +15 -12
- package/dist/Utils/ConsoleOutput.js.map +1 -1
- package/dist/Utils/EnvVars.d.ts +1 -1
- package/dist/Utils/EnvVars.d.ts.map +1 -1
- package/dist/Utils/EnvVars.js.map +1 -1
- package/dist/Utils/EnvironmentRoutingUtils.d.ts +8 -0
- package/dist/Utils/EnvironmentRoutingUtils.d.ts.map +1 -0
- package/dist/Utils/EnvironmentRoutingUtils.js +45 -0
- package/dist/Utils/EnvironmentRoutingUtils.js.map +1 -0
- package/dist/Utils/GitHubDcfFlow.d.ts +4 -5
- package/dist/Utils/GitHubDcfFlow.d.ts.map +1 -1
- package/dist/Utils/GitHubDcfFlow.js +4 -5
- package/dist/Utils/GitHubDcfFlow.js.map +1 -1
- package/dist/Utils/GitUtils.d.ts +5 -0
- package/dist/Utils/GitUtils.d.ts.map +1 -1
- package/dist/Utils/GitUtils.js +15 -0
- package/dist/Utils/GitUtils.js.map +1 -1
- package/dist/Utils/Paging.d.ts.map +1 -1
- package/dist/Utils/Paging.js +4 -4
- package/dist/Utils/Paging.js.map +1 -1
- package/dist/Utils/Spinner.d.ts +9 -1
- package/dist/Utils/Spinner.d.ts.map +1 -1
- package/dist/Utils/Spinner.js +25 -5
- package/dist/Utils/Spinner.js.map +1 -1
- package/dist/Verbs/AddAction.d.ts.map +1 -1
- package/dist/Verbs/AddAction.js +12 -41
- package/dist/Verbs/AddAction.js.map +1 -1
- package/dist/Verbs/AddConnector.d.ts +24 -0
- package/dist/Verbs/AddConnector.d.ts.map +1 -0
- package/dist/Verbs/AddConnector.js +156 -0
- package/dist/Verbs/AddConnector.js.map +1 -0
- package/dist/Verbs/AddConnectorFlows.d.ts +72 -0
- package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -0
- package/dist/Verbs/AddConnectorFlows.js +198 -0
- package/dist/Verbs/AddConnectorFlows.js.map +1 -0
- package/dist/Verbs/AddDataSource.js +1 -1
- package/dist/Verbs/AddDataSource.js.map +1 -1
- package/dist/Verbs/AddTable.d.ts.map +1 -1
- package/dist/Verbs/AddTable.js +15 -100
- package/dist/Verbs/AddTable.js.map +1 -1
- package/dist/Verbs/AuthStatus.d.ts.map +1 -1
- package/dist/Verbs/AuthStatus.js +34 -6
- package/dist/Verbs/AuthStatus.js.map +1 -1
- package/dist/Verbs/AuthSwitch.d.ts +6 -0
- package/dist/Verbs/AuthSwitch.d.ts.map +1 -0
- package/dist/Verbs/AuthSwitch.js +67 -0
- package/dist/Verbs/AuthSwitch.js.map +1 -0
- package/dist/Verbs/ConnectorHelpers.d.ts +54 -1
- package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
- package/dist/Verbs/ConnectorHelpers.js +217 -16
- package/dist/Verbs/ConnectorHelpers.js.map +1 -1
- package/dist/Verbs/CreateMaafApp.d.ts +26 -0
- package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
- package/dist/Verbs/CreateMaafApp.js +291 -75
- package/dist/Verbs/CreateMaafApp.js.map +1 -1
- package/dist/Verbs/DeployMaafApp.d.ts.map +1 -1
- package/dist/Verbs/DeployMaafApp.js +4 -0
- package/dist/Verbs/DeployMaafApp.js.map +1 -1
- package/dist/Verbs/Dev.js +5 -5
- package/dist/Verbs/Dev.js.map +1 -1
- package/dist/Verbs/Init.d.ts.map +1 -1
- package/dist/Verbs/Init.js +129 -61
- package/dist/Verbs/Init.js.map +1 -1
- package/dist/Verbs/ListConnectors.d.ts.map +1 -1
- package/dist/Verbs/ListConnectors.js +4 -2
- package/dist/Verbs/ListConnectors.js.map +1 -1
- package/dist/Verbs/ListDatasets.d.ts.map +1 -1
- package/dist/Verbs/ListDatasets.js +5 -0
- package/dist/Verbs/ListDatasets.js.map +1 -1
- package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +1 -1
- package/dist/Verbs/ListSqlStoredProcedures.js +5 -0
- package/dist/Verbs/ListSqlStoredProcedures.js.map +1 -1
- package/dist/Verbs/ListTables.d.ts.map +1 -1
- package/dist/Verbs/ListTables.js +5 -0
- package/dist/Verbs/ListTables.js.map +1 -1
- package/dist/Verbs/Login.d.ts.map +1 -1
- package/dist/Verbs/Login.js +16 -13
- package/dist/Verbs/Login.js.map +1 -1
- package/dist/Verbs/Logout.d.ts.map +1 -1
- package/dist/Verbs/Logout.js +19 -13
- package/dist/Verbs/Logout.js.map +1 -1
- package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -1
- package/dist/Verbs/MaafAppPermissions.js +4 -0
- package/dist/Verbs/MaafAppPermissions.js.map +1 -1
- package/dist/Verbs/Pack.d.ts +6 -6
- package/dist/Verbs/Pack.d.ts.map +1 -1
- package/dist/Verbs/Pack.js +80 -12
- package/dist/Verbs/Pack.js.map +1 -1
- package/dist/Verbs/VerbConstants.d.ts +50 -16
- package/dist/Verbs/VerbConstants.d.ts.map +1 -1
- package/dist/Verbs/VerbConstants.js +39 -16
- package/dist/Verbs/VerbConstants.js.map +1 -1
- package/dist/Verbs/index.d.ts +2 -0
- package/dist/Verbs/index.d.ts.map +1 -1
- package/dist/Verbs/index.js +2 -0
- package/dist/Verbs/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -13,19 +13,30 @@ export const HelpStrings = {
|
|
|
13
13
|
description: 'Sign in to Microsoft Entra ID.',
|
|
14
14
|
examples: [
|
|
15
15
|
`${CLI_BINARY_NAME} auth login`,
|
|
16
|
-
`${CLI_BINARY_NAME} auth login --
|
|
16
|
+
`${CLI_BINARY_NAME} auth login --account user@contoso.com`,
|
|
17
17
|
],
|
|
18
18
|
options: {
|
|
19
|
-
|
|
19
|
+
account: 'Username (email) to pre-fill in the browser sign-in prompt. This is a hint passed to the identity provider, not validated against cached accounts — use `auth switch --account` to choose between cached accounts.',
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
logout: {
|
|
23
|
-
description: '
|
|
23
|
+
description: 'Clear all cached credentials. Removes every cached account and the active-account ' +
|
|
24
|
+
'pointer. Use `auth switch` to change which cached account is active without logging out.',
|
|
24
25
|
examples: [`${CLI_BINARY_NAME} auth logout`],
|
|
25
26
|
},
|
|
26
27
|
status: {
|
|
27
|
-
description: 'Show
|
|
28
|
-
examples: [`${CLI_BINARY_NAME} auth status`],
|
|
28
|
+
description: 'Show cached accounts. The active account (used by other CLI commands) is marked.',
|
|
29
|
+
examples: [`${CLI_BINARY_NAME} auth status`, `${CLI_BINARY_NAME} auth status --json`],
|
|
30
|
+
},
|
|
31
|
+
switch: {
|
|
32
|
+
description: 'Choose which cached account other CLI commands run as. When more than one account is cached and --account is omitted, prompts interactively; in non-interactive mode --account is required.',
|
|
33
|
+
examples: [
|
|
34
|
+
`${CLI_BINARY_NAME} auth switch`,
|
|
35
|
+
`${CLI_BINARY_NAME} auth switch --account user@contoso.com`,
|
|
36
|
+
],
|
|
37
|
+
options: {
|
|
38
|
+
account: 'Username (email) or home account ID of the account to make active.',
|
|
39
|
+
},
|
|
29
40
|
},
|
|
30
41
|
},
|
|
31
42
|
app: {
|
|
@@ -38,7 +49,9 @@ export const HelpStrings = {
|
|
|
38
49
|
template: 'GitHub repository or subpath to scaffold the app from (e.g. github:owner/repo/subdir). Defaults to github:microsoft/Managed-Apps/templates/vite8. Not allowed with --repo none (nothing is scaffolded in that mode).',
|
|
39
50
|
buildPath: 'Path to the build output directory. Defaults to ./dist.',
|
|
40
51
|
buildCommand: 'Full shell command used to build the app. Defaults to "npm run build".',
|
|
52
|
+
buildEntryPoint: 'Entry point HTML file for the app. Defaults to index.html.',
|
|
41
53
|
repo: "Source-control binding for the new app. Omit to use the default platform-managed (GRS) flow. Pass a GitHub Enterprise Cloud repo URL (*.ghe.com, e.g. https://myorg.ghe.com/contoso/expense-tracker) to bind to an external repo — the repo must already exist and must be empty, and the CLI clones it into [directory] and overlays the Vite template. Pass '--repo none' to create only the server-side app record: no git binding, no template scaffold, just ms.config.json in [directory]. Cannot be combined with --repository-id.",
|
|
54
|
+
noBrowser: 'Suppress automatic browser launch during inline GitHub authentication. Useful for headless / CI flows. Has no effect when `--json` is set (JSON mode never launches a browser).',
|
|
42
55
|
},
|
|
43
56
|
examples: [
|
|
44
57
|
`${CLI_BINARY_NAME} app create --display-name "My App" --repository-id <id>`,
|
|
@@ -57,9 +70,10 @@ export const HelpStrings = {
|
|
|
57
70
|
description: 'Optional description for the app.',
|
|
58
71
|
buildPath: 'Path to the build output directory. Defaults to ./dist.',
|
|
59
72
|
buildCommand: 'Full shell command used to build the app. Defaults to npm run build.',
|
|
60
|
-
|
|
61
|
-
appUrl: 'Local development URL for the app. Defaults to http://localhost:3000.',
|
|
73
|
+
buildEntryPoint: 'Entry point HTML file for the app. Defaults to index.html.',
|
|
62
74
|
logoPath: 'Path to the app logo. Defaults to Default.',
|
|
75
|
+
useExistingGitRepo: 'When set, the CLI will attempt to use an existing git repository in the current directory instead of initializing a new one. The existing repository must have a remote origin configured, and the CLI will use that remote URL as the repo source for the app.',
|
|
76
|
+
provisionGitRepo: 'When set, the CLI will provision a new platform managed git repository for the app even if an existing repository is detected in the current directory. This is useful when you want to initialize an app in a directory that has a git repository, but you do not want to use that repository for the app.',
|
|
63
77
|
},
|
|
64
78
|
examples: [
|
|
65
79
|
`${CLI_BINARY_NAME} app init --display-name "My App" --environment-id <id>`,
|
|
@@ -212,7 +226,7 @@ export const HelpStrings = {
|
|
|
212
226
|
skipCodegen: 'Skip TypeScript code generation after adding the data source.',
|
|
213
227
|
},
|
|
214
228
|
examples: [
|
|
215
|
-
`${CLI_BINARY_NAME} app add
|
|
229
|
+
`${CLI_BINARY_NAME} app add connector --api-id shared_office365`,
|
|
216
230
|
`${CLI_BINARY_NAME} app add table --api-id shared_sql --connection-id <id> --dataset <db> --table <tbl>`,
|
|
217
231
|
`${CLI_BINARY_NAME} app add procedure --api-id shared_sql --connection-id <id> --dataset <db>`,
|
|
218
232
|
],
|
|
@@ -244,6 +258,23 @@ export const HelpStrings = {
|
|
|
244
258
|
`${CLI_BINARY_NAME} app add table --api-id shared_sharepointonline --skip-codegen`,
|
|
245
259
|
],
|
|
246
260
|
},
|
|
261
|
+
connector: {
|
|
262
|
+
description: 'Add a connector to the app, routing to table or action based on capabilities. Dual-capability connectors (e.g. SharePoint) prompt, or require --as in non-interactive mode.',
|
|
263
|
+
options: {
|
|
264
|
+
apiId: 'Connector API identifier (e.g. shared_office365, shared_sql).',
|
|
265
|
+
connectionId: 'Connection ID to use. If omitted (and a connection is required), you will be prompted to select one.',
|
|
266
|
+
dataset: 'Dataset name (only used when adding as a table). If omitted in table mode, you will be prompted.',
|
|
267
|
+
table: 'Table name (only used when adding as a table). If omitted in table mode, you will be prompted.',
|
|
268
|
+
as: 'Force the dispatch to "table" or "action". Required in non-interactive mode when the connector supports tables.',
|
|
269
|
+
skipCodegen: 'Skip TypeScript code generation after adding the connector.',
|
|
270
|
+
},
|
|
271
|
+
examples: [
|
|
272
|
+
`${CLI_BINARY_NAME} app add connector --api-id shared_office365`,
|
|
273
|
+
`${CLI_BINARY_NAME} app add connector --api-id shared_sql --as table --connection-id <id> --dataset <db> --table <tbl>`,
|
|
274
|
+
`${CLI_BINARY_NAME} app add connector --api-id shared_sharepointonline --as action`,
|
|
275
|
+
`${CLI_BINARY_NAME} app add connector --api-id shared_sql --as table --skip-codegen`,
|
|
276
|
+
],
|
|
277
|
+
},
|
|
247
278
|
},
|
|
248
279
|
remove: {
|
|
249
280
|
description: `Remove an action, table or procedure from the app.`,
|
|
@@ -443,7 +474,7 @@ export const HelpStrings = {
|
|
|
443
474
|
refresh: {
|
|
444
475
|
description: 'Authenticate against a GitHub repository so subsequent app create / deploy / preview / build ' +
|
|
445
476
|
'commands targeting that repo know your GitHub identity. Runs the GitHub device-code flow via ' +
|
|
446
|
-
|
|
477
|
+
'the Managed Apps GitHub App; no GitHub token is stored locally.',
|
|
447
478
|
options: {
|
|
448
479
|
repo: 'GitHub repository URL (required, must be a ghe.com URL).',
|
|
449
480
|
openBrowser: 'Launch the browser to complete the GitHub device-code flow. Default: do not launch.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpStrings.js","sourceRoot":"","sources":["../../src/Constants/HelpStrings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,kBAAkB,EAAE,yBAAyB;QAC7C,KAAK,EACH,0HAA0H;KAC7H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE;gBACR,GAAG,eAAe,aAAa;gBAC/B,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"HelpStrings.js","sourceRoot":"","sources":["../../src/Constants/HelpStrings.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export interface MapErrorContext {
|
|
|
18
18
|
/**
|
|
19
19
|
* Map a structured server error code to a CLI-facing {@link AppError}.
|
|
20
20
|
* Returns `null` for codes the CLI doesn't recognize so callers can fall back
|
|
21
|
-
* to generic error handling.
|
|
21
|
+
* to generic error handling.
|
|
22
22
|
*/
|
|
23
23
|
export declare function mapGitHubServerErrorToCliError(payload: ServerErrorPayload, context: MapErrorContext): AppError | null;
|
|
24
24
|
/**
|
|
@@ -27,13 +27,13 @@ export declare function mapGitHubServerErrorToCliError(payload: ServerErrorPaylo
|
|
|
27
27
|
* payload + matched code, or `null` if the error is unrelated.
|
|
28
28
|
*
|
|
29
29
|
* Matches:
|
|
30
|
-
* - `GrsServerError` with `code === 'GitHubMappingMissing' | 'GitHubMappingExpired'`
|
|
30
|
+
* - `GrsServerError` with `code === 'GitHubMappingMissing' | 'GitHubMappingExpired' | 'GitHubMappingStale'`
|
|
31
31
|
* - A plain `Error` with `.status === 401` whose message is JSON containing
|
|
32
32
|
* `error.code` of one of the above values (legacy path before catch-and-retry
|
|
33
33
|
* wires `allowErrorResponse` everywhere).
|
|
34
34
|
*/
|
|
35
35
|
export declare function matchGitHubAuthError(error: unknown): {
|
|
36
|
-
code: 'GitHubMappingMissing' | 'GitHubMappingExpired';
|
|
36
|
+
code: 'GitHubMappingMissing' | 'GitHubMappingExpired' | 'GitHubMappingStale';
|
|
37
37
|
payload: ServerErrorPayload;
|
|
38
38
|
} | null;
|
|
39
39
|
//# sourceMappingURL=GitHubErrorMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubErrorMap.d.ts","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"GitHubErrorMap.d.ts","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,OAAO,EAAE,KAAK,QAAQ,EAAqE,MAAM,YAAY,CAAC;AAE9G,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wGAAwG;IACxG,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,eAAe,GACvB,QAAQ,GAAG,IAAI,CA8GjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG;IACpD,IAAI,EAAE,sBAAsB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;IAC7E,OAAO,EAAE,kBAAkB,CAAC;CAC7B,GAAG,IAAI,CAiDP"}
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
* after a {@link GrsServerError}; returns `null` for unrecognized codes
|
|
12
12
|
* so the caller can fall back to its default error path.
|
|
13
13
|
* - {@link matchGitHubAuthError} — used by catch-and-retry callers (e.g.
|
|
14
|
-
* `app build` re-running DCF on a 401) to detect the
|
|
15
|
-
* mapping-error codes
|
|
14
|
+
* `app build` re-running DCF on a 401) to detect the recoverable
|
|
15
|
+
* mapping-error codes (`GitHubMappingMissing`, `GitHubMappingExpired`,
|
|
16
|
+
* `GitHubMappingStale`) regardless of whether the error came back as a
|
|
16
17
|
* {@link GrsServerError} or a legacy plain {@link Error}.
|
|
17
18
|
*/
|
|
18
19
|
import { GrsServerError } from '@microsoft/managed-apps-actions';
|
|
@@ -21,7 +22,7 @@ import { AuthenticationError, ConfigurationError, NetworkError, UsageError } fro
|
|
|
21
22
|
/**
|
|
22
23
|
* Map a structured server error code to a CLI-facing {@link AppError}.
|
|
23
24
|
* Returns `null` for codes the CLI doesn't recognize so callers can fall back
|
|
24
|
-
* to generic error handling.
|
|
25
|
+
* to generic error handling.
|
|
25
26
|
*/
|
|
26
27
|
export function mapGitHubServerErrorToCliError(payload, context) {
|
|
27
28
|
const code = payload.code;
|
|
@@ -100,14 +101,16 @@ export function mapGitHubServerErrorToCliError(payload, context) {
|
|
|
100
101
|
* payload + matched code, or `null` if the error is unrelated.
|
|
101
102
|
*
|
|
102
103
|
* Matches:
|
|
103
|
-
* - `GrsServerError` with `code === 'GitHubMappingMissing' | 'GitHubMappingExpired'`
|
|
104
|
+
* - `GrsServerError` with `code === 'GitHubMappingMissing' | 'GitHubMappingExpired' | 'GitHubMappingStale'`
|
|
104
105
|
* - A plain `Error` with `.status === 401` whose message is JSON containing
|
|
105
106
|
* `error.code` of one of the above values (legacy path before catch-and-retry
|
|
106
107
|
* wires `allowErrorResponse` everywhere).
|
|
107
108
|
*/
|
|
108
109
|
export function matchGitHubAuthError(error) {
|
|
109
110
|
if (error instanceof GrsServerError) {
|
|
110
|
-
if (error.code === 'GitHubMappingMissing' ||
|
|
111
|
+
if (error.code === 'GitHubMappingMissing' ||
|
|
112
|
+
error.code === 'GitHubMappingExpired' ||
|
|
113
|
+
error.code === 'GitHubMappingStale') {
|
|
111
114
|
return {
|
|
112
115
|
code: error.code,
|
|
113
116
|
payload: {
|
|
@@ -131,7 +134,9 @@ export function matchGitHubAuthError(error) {
|
|
|
131
134
|
try {
|
|
132
135
|
const parsed = JSON.parse(jsonMatch[0]);
|
|
133
136
|
const code = parsed?.error?.code;
|
|
134
|
-
if (code === 'GitHubMappingMissing' ||
|
|
137
|
+
if (code === 'GitHubMappingMissing' ||
|
|
138
|
+
code === 'GitHubMappingExpired' ||
|
|
139
|
+
code === 'GitHubMappingStale') {
|
|
135
140
|
return {
|
|
136
141
|
code,
|
|
137
142
|
payload: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubErrorMap.js","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH
|
|
1
|
+
{"version":3,"file":"GitHubErrorMap.js","sourceRoot":"","sources":["../../src/Errors/GitHubErrorMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/ConsoleWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsoleWriter.d.ts","sourceRoot":"","sources":["../../src/Logger/ConsoleWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAsBnE,qBAAa,aAAc,YAAW,gBAAgB;IAC7C,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7D,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhE,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI;IAItF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAG9D"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import { styleText } from 'node:util';
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
6
|
// Logger function factory
|
|
7
|
-
function loggerFn(
|
|
7
|
+
function loggerFn(format, log = console.log.bind(console)) {
|
|
8
8
|
return (scenarioName, ...data) => {
|
|
9
9
|
const time = new Date().toISOString().split('T')[1];
|
|
10
|
-
const prefix = `${
|
|
10
|
+
const prefix = `${styleText('gray', time)}: [${styleText(format, scenarioName)}]: `;
|
|
11
11
|
log(prefix, ...data);
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
const activity = loggerFn(
|
|
15
|
-
const scenario = loggerFn(
|
|
16
|
-
const error = loggerFn(
|
|
17
|
-
const warn = loggerFn(
|
|
14
|
+
const activity = loggerFn(['white', 'bold']);
|
|
15
|
+
const scenario = loggerFn(['cyan', 'bold']);
|
|
16
|
+
const error = loggerFn(['red', 'bold'], console.error.bind(console));
|
|
17
|
+
const warn = loggerFn(['yellow', 'bold']);
|
|
18
18
|
export class ConsoleWriter {
|
|
19
19
|
trackActivityEvent(eventName, eventData) {
|
|
20
20
|
activity(eventName, eventData || {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleWriter.js","sourceRoot":"","sources":["../../src/Logger/ConsoleWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"ConsoleWriter.js","sourceRoot":"","sources":["../../src/Logger/ConsoleWriter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMtC,uDAAuD;AACvD,0BAA0B;AAC1B,SAAS,QAAQ,CACf,MAAmB,EACnB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;IAE/B,OAAO,CAAC,YAAoB,EAAE,GAAG,IAAW,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;QACpF,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1C,MAAM,OAAO,aAAa;IACjB,kBAAkB,CAAC,SAAiB,EAAE,SAAkB;QAC7D,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAEM,eAAe,CAAC,SAAiB,EAAE,SAAkB;QAC1D,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAEM,aAAa,CAAC,YAAoB,EAAE,SAAkB;QAC3D,QAAQ,CAAC,oBAAoB,YAAY,EAAE,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAEM,gBAAgB,CAAC,YAAoB,EAAE,YAAqB;QACjE,QAAQ,CAAC,uBAAuB,YAAY,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAEM,cAAc,CAAC,YAAoB,EAAE,WAAoB;QAC9D,KAAK,CAAC,sBAAsB,YAAY,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,0BAA0B,CAAC,YAAoB,EAAE,qBAA8B;QACpF,IAAI,CAAC,gCAAgC,YAAY,EAAE,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAEM,KAAK;QACV,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CAAC,IAAY,EAAE,MAAc;QACpD,2BAA2B;IAC7B,CAAC;CACF;AACD,sDAAsD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { DiscoveredFunction } from './PackFunctions.js';
|
|
5
|
+
/**
|
|
6
|
+
* Bundles each discovered function entry point to ESM JavaScript using esbuild.
|
|
7
|
+
* Returns a Map keyed by the function's `relPath` (same key as
|
|
8
|
+
* {@link DiscoveredFunction.relPath}) with the bundled JS source as the value.
|
|
9
|
+
*
|
|
10
|
+
* esbuild is imported dynamically (`await import('esbuild')`) so the CLI can be
|
|
11
|
+
* shipped into environments that mark esbuild `--external` and supply their own.
|
|
12
|
+
*/
|
|
13
|
+
export declare function bundleFunctionsAsync(args: {
|
|
14
|
+
projectRoot: string;
|
|
15
|
+
functions: readonly DiscoveredFunction[];
|
|
16
|
+
}): Promise<Map<string, string>>;
|
|
17
|
+
//# sourceMappingURL=FunctionsBundler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionsBundler.d.ts","sourceRoot":"","sources":["../../src/Middletier/FunctionsBundler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AA2B1D;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC1C,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2C/B"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { AppError } from '../Errors/CliError.js';
|
|
6
|
+
/**
|
|
7
|
+
* Maps the browser-SDK specifiers that generated/customer code imports to the
|
|
8
|
+
* workerd-SDK specifiers that survive into the bundled output. esbuild uses
|
|
9
|
+
* this map for two things:
|
|
10
|
+
* - `alias`: rewrites every key to its value during resolution.
|
|
11
|
+
* - `external`: marks every value as external so the import statement is
|
|
12
|
+
* left intact in the bundle and resolved at workerd instantiation time.
|
|
13
|
+
*
|
|
14
|
+
* The allowlist plugin also derives from this map (see {@link ALLOWED_PACKAGES}),
|
|
15
|
+
* so this is the single source of truth — the three derived uses stay in sync
|
|
16
|
+
* automatically.
|
|
17
|
+
*/
|
|
18
|
+
const MIDDLETIER_PACKAGE_ALIAS_MAP = {
|
|
19
|
+
'@microsoft/managed-apps/data': '@microsoft/managed-apps-functions/data',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Specifier the externalized `generated/dataSources` import gets rewritten to.
|
|
23
|
+
* The functions-runtime registers a workerd `json` module under this name with
|
|
24
|
+
* the pack's `dataSources.json` as its content, so every customer bundle reads
|
|
25
|
+
* the data sources from a single shared file instead of inlining a per-bundle
|
|
26
|
+
* copy of the ~16KB config blob.
|
|
27
|
+
*/
|
|
28
|
+
const DATA_SOURCES_MODULE = '@config/dataSources';
|
|
29
|
+
/**
|
|
30
|
+
* Bundles each discovered function entry point to ESM JavaScript using esbuild.
|
|
31
|
+
* Returns a Map keyed by the function's `relPath` (same key as
|
|
32
|
+
* {@link DiscoveredFunction.relPath}) with the bundled JS source as the value.
|
|
33
|
+
*
|
|
34
|
+
* esbuild is imported dynamically (`await import('esbuild')`) so the CLI can be
|
|
35
|
+
* shipped into environments that mark esbuild `--external` and supply their own.
|
|
36
|
+
*/
|
|
37
|
+
export async function bundleFunctionsAsync(args) {
|
|
38
|
+
const { projectRoot, functions } = args;
|
|
39
|
+
if (functions.length === 0)
|
|
40
|
+
return new Map();
|
|
41
|
+
// `.catch` so a missing-esbuild error gets a clear, actionable message
|
|
42
|
+
// instead of the raw module-resolution failure surfacing to the user.
|
|
43
|
+
const esbuild = await import('esbuild').catch((err) => {
|
|
44
|
+
throw new AppError(`esbuild is required to pack functions but could not be loaded: ${err.message}`);
|
|
45
|
+
});
|
|
46
|
+
// esbuild's Go worker pool parallelises within a single `build()`, but
|
|
47
|
+
// running per-file builds in parallel still lets us overlap plugin
|
|
48
|
+
// callbacks and JS-side work. esbuild self-bounds concurrency internally,
|
|
49
|
+
// so we don't need our own semaphore.
|
|
50
|
+
const entries = await Promise.all(functions.map(async (fn) => {
|
|
51
|
+
const result = await esbuild.build({
|
|
52
|
+
entryPoints: [fn.absPath],
|
|
53
|
+
bundle: true,
|
|
54
|
+
write: false,
|
|
55
|
+
format: 'esm',
|
|
56
|
+
platform: 'neutral',
|
|
57
|
+
target: 'es2022',
|
|
58
|
+
external: [...Object.values(MIDDLETIER_PACKAGE_ALIAS_MAP), DATA_SOURCES_MODULE],
|
|
59
|
+
alias: MIDDLETIER_PACKAGE_ALIAS_MAP,
|
|
60
|
+
// Plugin order matters — `dataSourcesPlugin` returns first so the
|
|
61
|
+
// allowlist never sees the externalised `@config/dataSources` rewrite
|
|
62
|
+
// and the resolved-path lookup for `generated/dataSources.ts` short-
|
|
63
|
+
// circuits before the allowlist would have admitted it via the
|
|
64
|
+
// `generated/` rule.
|
|
65
|
+
plugins: [dataSourcesPlugin(projectRoot), allowlistPlugin(projectRoot)],
|
|
66
|
+
logLevel: 'silent',
|
|
67
|
+
});
|
|
68
|
+
const output = result.outputFiles?.[0];
|
|
69
|
+
if (!output) {
|
|
70
|
+
throw new AppError(`Failed to bundle function ${fn.relPath}: esbuild produced no output`);
|
|
71
|
+
}
|
|
72
|
+
return [fn.relPath, output.text];
|
|
73
|
+
}));
|
|
74
|
+
return new Map(entries);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* esbuild `onResolve` plugin that intercepts the codegen-emitted
|
|
78
|
+
* `import dataSources from '../dataSources'` (or any path resolving to
|
|
79
|
+
* `<projectRoot>/generated/dataSources.<ext>`) and rewrites it to the
|
|
80
|
+
* canonical {@link DATA_SOURCES_MODULE} specifier, marked external. The
|
|
81
|
+
* functions-runtime supplies the resolved value at workerd config time as a
|
|
82
|
+
* `json` module embedded from the pack's `dataSources.json`, so a single
|
|
83
|
+
* shared copy is read by every function instead of the ~16KB config map
|
|
84
|
+
* being inlined into each bundle.
|
|
85
|
+
*
|
|
86
|
+
* Matching is by resolved file path (not import-specifier string) so codegen
|
|
87
|
+
* layout changes that move the file or alter the relative-path shape don't
|
|
88
|
+
* break the substitution.
|
|
89
|
+
*/
|
|
90
|
+
function dataSourcesPlugin(projectRoot) {
|
|
91
|
+
// Codegen always emits `generated/dataSources.ts`; specifier is extensionless
|
|
92
|
+
// (`../dataSources`), so we resolve the relative path and tack on `.ts` to
|
|
93
|
+
// get the candidate filesystem location, then compare.
|
|
94
|
+
const target = path.resolve(projectRoot, 'generated/dataSources.ts');
|
|
95
|
+
return {
|
|
96
|
+
name: 'external-data-sources',
|
|
97
|
+
setup(build) {
|
|
98
|
+
build.onResolve({ filter: /(^|\/)dataSources$/ }, (args) => {
|
|
99
|
+
if (!args.path.startsWith('.'))
|
|
100
|
+
return null;
|
|
101
|
+
const resolved = path.resolve(path.dirname(args.importer), args.path) + '.ts';
|
|
102
|
+
if (resolved !== target)
|
|
103
|
+
return null;
|
|
104
|
+
return { path: DATA_SOURCES_MODULE, external: true };
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* esbuild `onResolve` plugin that fails the build when customer code imports
|
|
111
|
+
* anything outside the allowlist. Two categories pass:
|
|
112
|
+
*
|
|
113
|
+
* - Relative imports that resolve inside the project's `generated/` folder.
|
|
114
|
+
* - Bare specifiers exactly matching an entry in {@link ALLOWED_PACKAGES}.
|
|
115
|
+
*
|
|
116
|
+
* esbuild applies `alias` substitution *after* `onResolve` plugins run, so the
|
|
117
|
+
* incoming `args.path` is always the pre-alias specifier.
|
|
118
|
+
*/
|
|
119
|
+
function allowlistPlugin(projectRoot) {
|
|
120
|
+
const generatedDir = path.resolve(projectRoot, 'generated');
|
|
121
|
+
return {
|
|
122
|
+
name: 'allowlist-imports',
|
|
123
|
+
setup(build) {
|
|
124
|
+
build.onResolve({ filter: /.*/ }, (args) => {
|
|
125
|
+
if (args.kind === 'entry-point')
|
|
126
|
+
return null;
|
|
127
|
+
if (args.path.startsWith('.')) {
|
|
128
|
+
const resolved = path.resolve(path.dirname(args.importer), args.path);
|
|
129
|
+
if (resolved.startsWith(generatedDir + path.sep)) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
errors: [
|
|
134
|
+
{
|
|
135
|
+
text: `Relative import '${args.path}' is outside the allowed 'generated/' folder`,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The exact module specifiers customer/generated code is allowed to import
|
|
142
|
+
* from outside the project's `generated/` folder. Anything else — arbitrary
|
|
143
|
+
* npm packages, `node:*` built-ins, other scopes, deeper subpaths — is a
|
|
144
|
+
* build error.
|
|
145
|
+
*
|
|
146
|
+
* esbuild applies `alias` substitution *after* `onResolve` plugins run, so the
|
|
147
|
+
* allowlist matches the pre-alias specifier (the map key), not the post-alias
|
|
148
|
+
* target.
|
|
149
|
+
*/
|
|
150
|
+
if (MIDDLETIER_PACKAGE_ALIAS_MAP[args.path])
|
|
151
|
+
return null;
|
|
152
|
+
return {
|
|
153
|
+
errors: [
|
|
154
|
+
{
|
|
155
|
+
text: `Import '${args.path}' is not on the allowlist. Allowed: relative imports into 'generated/' and ${Object.keys(MIDDLETIER_PACKAGE_ALIAS_MAP)
|
|
156
|
+
.map((p) => `'${p}'`)
|
|
157
|
+
.join(', ')}.`,
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=FunctionsBundler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionsBundler.js","sourceRoot":"","sources":["../../src/Middletier/FunctionsBundler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { FunctionRoute, FunctionsPackage } from '@microsoft/managed-apps-common/types';
|
|
5
|
+
/** Filename of the functions archive written next to manifest.json. */
|
|
6
|
+
export declare const FUNCTIONS_ARCHIVE_NAME = "functions.zip";
|
|
7
|
+
/** Archive format/compression embedded in the manifest. Standard zip uses DEFLATE. */
|
|
8
|
+
export declare const FUNCTIONS_ARCHIVE_DESCRIPTOR: Omit<FunctionsPackage, 'path'>;
|
|
9
|
+
/** A single `.ts` function discovered under `functions.baseDirectory`. */
|
|
10
|
+
export interface DiscoveredFunction {
|
|
11
|
+
/** Path relative to `functions.baseDirectory`, with forward slashes. Includes `.ts` suffix. */
|
|
12
|
+
relPath: string;
|
|
13
|
+
/** Absolute path to the source file on disk. */
|
|
14
|
+
absPath: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Recursively walks `baseDirectory` and returns every `.ts` file beneath it.
|
|
18
|
+
*
|
|
19
|
+
* The directory must exist; callers are expected to have validated this via
|
|
20
|
+
* {@link assertFunctionsDirectoryExists}. An existing directory containing no
|
|
21
|
+
* `.ts` files returns an empty array — that case maps to "skip packing" per the
|
|
22
|
+
* pack spec, not an error.
|
|
23
|
+
*/
|
|
24
|
+
export declare function discoverFunctionsAsync(baseDirectory: string): Promise<DiscoveredFunction[]>;
|
|
25
|
+
export declare function assertFunctionsDirectoryExists(baseDirectory: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Builds the `routes` entries for compiled functions. The key is the basename
|
|
28
|
+
* of `functions.baseDirectory` joined with the function's path relative to
|
|
29
|
+
* that directory (`.ts` stripped); `path` is the same string with `.js`. Both
|
|
30
|
+
* mirror the entry's location inside the archive.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildFunctionRoutes(functions: readonly DiscoveredFunction[], baseDirName: string): Record<string, FunctionRoute>;
|
|
33
|
+
/**
|
|
34
|
+
* Builds a zip Buffer containing one bundled `.js` per discovered `.ts` source
|
|
35
|
+
* (mirroring the source layout under `<baseDirName>/`), plus the generated
|
|
36
|
+
* `manifest.json` and — when present — `dataSources.json`.
|
|
37
|
+
*
|
|
38
|
+
* `bundles` is a Map keyed by `DiscoveredFunction.relPath` whose value is the
|
|
39
|
+
* bundled JS source from {@link bundleFunctionsAsync}. Every discovered function
|
|
40
|
+
* must have a corresponding bundle; missing entries throw.
|
|
41
|
+
*
|
|
42
|
+
* Returning a `Buffer` (vs. streaming to disk) lets callers use `fsp.writeFile`,
|
|
43
|
+
* which keeps the implementation testable under memfs.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildFunctionsArchiveAsync(args: {
|
|
46
|
+
baseDirName: string;
|
|
47
|
+
functions: readonly DiscoveredFunction[];
|
|
48
|
+
bundles: ReadonlyMap<string, string>;
|
|
49
|
+
manifestContent: string;
|
|
50
|
+
dataSourcesJson: string | undefined;
|
|
51
|
+
}): Promise<Buffer>;
|
|
52
|
+
//# sourceMappingURL=PackFunctions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackFunctions.d.ts","sourceRoot":"","sources":["../../src/Middletier/PackFunctions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAK5F,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAEtD,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAGvE,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,+FAA+F;IAC/F,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAKjG;AA6BD,wBAAsB,8BAA8B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAU/B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BlB"}
|