/*! * Copyright (C) Microsoft Corporation. All rights reserved. */ import type { ConnectionReference as SchemaConnectionReference } from '../Config/Config.types.js'; import type { App, ConnectionReference } from '../services/index.js'; import type { PushAppContext } from '../Types/ActionTypes.js'; export declare function pushApp(context: PushAppContext): Promise; /** * Outcome of resolving which solution (if any) a push should target. * * - `explicit` — user passed `--solution-id`; validated to exist. * - `preferred` — `GetPreferredSolution` result: the explicitly-set preferred * solution, or the Common Data Service Default Solution when * none is set. * - `default` — last-resort fallback to the all-components Default Solution. * - `no-dataverse`— environment has no Dataverse; push the app with no solution. * - `no-solution` — Dataverse present but no preferred/default solution found. * - `skip` — auto-resolution intentionally skipped (e.g. a subsequent * push with no `--solution-id`); leave membership untouched. */ export type SolutionResolution = { kind: 'explicit'; solutionId: string; } | { kind: 'preferred'; solutionId: string; } | { kind: 'default'; solutionId: string; } | { kind: 'no-dataverse'; } | { kind: 'no-solution'; } | { kind: 'skip'; }; /** * Resolve which Dataverse solution a push should target, up front — before any * upload — so that failures are fast and never leave a half-pushed app. * * Rules (see the push verb behavior table): * - Explicit `--solution-id`: * - Blank/whitespace-only value → throw (the flag was supplied on * purpose, so an empty value is a usage error, not "omitted"). * - No Dataverse in the environment → throw (a solution requires DV). * - Not a GUID → throw. * - GUID not found in the environment → throw. * - Otherwise → `explicit`. * - No `--solution-id`: * - `autoResolveWhenUnset === false` (e.g. subsequent push) → `skip`. * - No Dataverse → `no-dataverse` (push app only). * - `GetPreferredSolution` returns a solution (explicit preferred, or the * Common Data Service Default Solution when none is set) → `preferred`. * - Else the all-components Default Solution exists → `default`. * - Else → `no-solution` (push app only). */ export declare function resolveSolutionForPush(environmentName: string, options: { providedSolutionId?: string; autoResolveWhenUnset: boolean; }): Promise; /** * Converts a full file path returned by the VFS (which may use OS-native separators, * e.g. backslashes on Windows) into a relative URL segment suitable for blob storage. * * Steps: * 1. Normalise `buildPath` to forward slashes and strip the leading `./` and any * trailing slash, so the prefix comparison is separator-agnostic. * 2. Normalise `fullFilePath` to forward slashes. * 3. Remove the build-directory prefix and any remaining leading slash. * * @internal Exported for unit-testing only. */ export declare function computeRelativeBlobPath(fullFilePath: string, buildPath: string): string; /** * Builds string-valued RP metadata tags from an app's authored settings. * * Only keys declared in `APP_SETTINGS_DEFINITIONS` are emitted, and every setting is boolean, so * tag names (catalog keys) and values ('true'/'false') are bounded by construction. Unknown flags * are rejected up front by `set-setting`, so they never reach a stored config. * * @internal Exported for unit-testing only. */ export declare function mapAppSettingsToTags(appSettings: Record | undefined): Record; export declare function constructConnectionReferences(configConnectionReferences: Record | undefined): Record; //# sourceMappingURL=PushApp.d.ts.map