@salesforce/packaging
Version:
Packaging library for the Salesforce packaging platform
146 lines (145 loc) • 7.63 kB
TypeScript
import { Connection, ScratchOrgInfo, SfdcUrl, SfError, SfProject } from '@salesforce/core';
import { NamedPackageDir } from '@salesforce/core/project';
import { Many, Optional } from '@salesforce/ts-types';
import type { SaveError } from '@jsforce/jsforce-node';
import { Duration } from '@salesforce/kit';
import { PackageDescriptorJson, PackageType, PackagingSObjects } from '../interfaces';
export declare const VERSION_NUMBER_SEP = ".";
export type IdRegistryValue = {
prefix: string;
label: string;
};
export type IdRegistry = {
[key: string]: IdRegistryValue;
};
export declare const INSTALL_URL_BASE: SfdcUrl;
export declare const BY_LABEL: IdRegistry;
/**
* A function to generate a unique id and return it in the context of a template, if supplied.
*
* A template is a string that can contain `${%s}` to be replaced with a unique id.
* If the template contains the "%s" placeholder, it will be replaced with the unique id otherwise the id will be appended to the template.
*
* @param options an object with the following properties:
* - template: a template string.
* - length: the length of the unique id as presented in hexadecimal.
*/
export declare function uniqid(options?: {
template?: string;
length?: number;
}): string;
export declare function validateId(idObj: Many<IdRegistryValue>, value: string | undefined): void;
export declare function validateIdNoThrow(idObj: Many<IdRegistryValue>, value: string): IdRegistryValue | boolean;
export declare function applyErrorAction(err: Error & {
action?: string;
}): Error;
export declare function massageErrorMessage(err: Error): Error;
/**
* Given a subscriber package version ID (04t) or package version ID (05i), return the package version ID (05i)
*
* @param versionId The subscriber package version ID
* @param connection For tooling query
*/
export declare function getPackageVersionId(versionId: string, connection: Connection): Promise<string | undefined>;
export declare function escapeInstallationKey(key: string): string;
/**
* Get the ContainerOptions for the specified Package2 (0Ho) IDs.
*
* @return Map of 0Ho id to container option api value
* @param packageIds The list of package IDs
* @param connection For tooling query
*/
export declare function getContainerOptions(packageIds: string | undefined | Array<string | undefined>, connection: Connection): Promise<Map<string, PackageType>>;
/**
* Given a list of subscriber package version IDs (04t), return the associated version strings (e.g., Major.Minor.Patch.Build)
*
* @return Map of subscriberPackageVersionId to versionString
* @param subscriberPackageVersionIds
* @param connection For tooling query
*/
export declare function getPackageVersionStrings(subscriberPackageVersionIds: string[], connection: Connection): Promise<Map<string, string>>;
/**
* For queries with an IN condition, determine if the WHERE clause will exceed
* SOQL's 4000 character limit. Perform multiple queries as needed to stay below the limit.
*
* @return concatenated array of records returned from the resulting query(ies)
* @param query The full query to execute containing the replaceToken param in its IN clause
* @param items The IN clause items. A length-appropriate single-quoted comma-separated string chunk will be made from the items.
* @param replaceToken A placeholder in the query's IN condition that will be replaced with the chunked items
* @param connection For tooling query
*/
export declare function queryWithInConditionChunking<T extends Record<string, unknown> = Record<string, unknown>>(query: string, items: string[], replaceToken: string, connection: Connection): Promise<T[]>;
export declare function getPackageVersionNumber(package2VersionObj: PackagingSObjects.Package2Version, includeBuild?: boolean): string;
/**
* Generate package alias json entry for this package version that can be written to sfdx-project.json
*
* @param connection
* @param project SfProject instance for the project
* @param packageVersionId 04t id of the package to create the alias entry for
* @param packageVersionNumber that will be appended to the package name to form the alias
* @param branch
* @param packageId the 0Ho id
* @private
*/
export declare function generatePackageAliasEntry(connection: Connection, project: SfProject, packageVersionId: string, packageVersionNumber: string, branch: string, packageId: string): Promise<[string, string]>;
export declare function combineSaveErrors(sObject: string, crudOperation: string, errors: SaveError[]): SfError;
/**
* Returns a Duration object from param duration when it is a number, otherwise return itself
*
* @param duration = number to be converted to a Duration or Duration object
* @param unit = (Default Duration.Unit.MILLISECONDS) Duration unit of number - See @link {Duration.Unit} for valid values
*/
export declare function numberToDuration(duration: number | Duration | undefined, unit?: Duration.Unit): Duration;
/**
* Zips directory to given zipfile.
*
* @param dir directory to zip
* @param zipfile path to the zip file to create
*/
export declare function zipDir(dir: string, zipfile: string): Promise<void>;
export declare function copyDir(src: string, dest: string): void;
/**
* Parse and copy properties from both of these arguments into a new object
*
* @param packageDescriptorJson
* @param definitionFileJson
* @returns the resulting object with specific properties
* overridden from definition file based on case-insensitive matches.
*/
export declare function copyDescriptorProperties(packageDescriptorJson: PackageDescriptorJson, definitionFileJson: ScratchOrgInfo): PackageDescriptorJson;
/**
* Resolve descriptor permissions for build/test execution.
*
* When {@link codecoverage} is true, converts {@link apexTestAccess} settings into
* permissionSetNames and permissionSetLicenseDeveloperNames.
* Always converts {@link packageMetadataAccess} settings into
* packageMetadataPermissionSetNames and packageMetadataPermissionSetLicenseNames.
* Removes apexTestAccess and packageMetadataAccess from the returned descriptor.
*
* @param descriptor Package descriptor to normalize
* @param codecoverage Whether to enable apexTestAccess-based permission processing
* @returns A normalized copy of the descriptor with flattened permission fields
*/
export declare function resolveBuildUserPermissions(descriptor: PackageDescriptorJson, codecoverage: boolean): PackageDescriptorJson;
/**
* This function finds the package directory in the project that matches the given packageId
*
* @param project The SfProject instance to search
* @param packageId The package ID to match against
* @returns A NamedPackageDir or empty object if not found
*/
export declare function findPackageDirectory(project: SfProject | undefined, packageId: string): Optional<NamedPackageDir>;
/**
* Brand new SFDX projects contain a force-app directory tree containing empty folders
* and a few .eslintrc.json files. We still want to consider such a directory tree
* as 'empty' for the sake of operations like downloading package version metadata.
*
* @param directory The absolute path to a directory
* @returns true if the directory contains nothing except empty directories or
* directories containing only an .eslintrc.json file.
*/
export declare function isPackageDirectoryEffectivelyEmpty(directory: string): boolean;
/**
* Cleans client-side-only attribute(s) from the packageDescriptorJSON so it can go to API
*/
export declare function cleanPackageDescriptorJson(packageDescriptorJson: PackageDescriptorJson): PackageDescriptorJson;