@shopify/shopify-api
Version:
Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks
59 lines (50 loc) • 1.78 kB
text/typescript
import {type ShopifyLogger} from '../lib/logger';
import {type ConfigInterface} from '../lib/base-types';
/**
* Future flags are used to enable features that are not yet available by default.
*/
export interface FutureFlags {
/**
* Enable support for managed pricing, so apps can check for payments without needing a billing config.
*/
unstable_managedPricingSupport?: boolean;
/**
* Change the CustomerAddress classes to expose a `is_default` property instead of `default` when fetching data. This
* resolves a conflict with the default() method in that class.
*/
customerAddressDefaultFix?: boolean;
}
/**
* Configuration option for future flags.
*/
export type FutureFlagOptions = FutureFlags | undefined;
export type FeatureEnabled<
Future extends FutureFlagOptions,
Flag extends keyof FutureFlags,
> = Future extends FutureFlags
? Future[Flag] extends true
? true
: false
: false;
export function logDisabledFutureFlags(
config: ConfigInterface,
logger: ShopifyLogger,
) {
if (!config._logDisabledFutureFlags) {
return;
}
const logFlag = (flag: string, message: string) =>
logger.info(`Future flag ${flag} is disabled.\n\n ${message}\n`);
if (!config.future?.customerAddressDefaultFix) {
logFlag(
'customerAddressDefaultFix',
"Enable this flag to change the CustomerAddress classes to expose a 'is_default' property instead of 'default' when fetching data.",
);
}
if (!config.future?.unstable_managedPricingSupport) {
logFlag(
'unstable_managedPricingSupport',
'Enable this flag to support managed pricing, so apps can check for payments without needing a billing config. Learn more at https://shopify.dev/docs/apps/launch/billing/managed-pricing',
);
}
}