@funnelsgrove/runtime 0.1.7 → 0.1.9

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.
@@ -2,8 +2,8 @@ export declare const readRuntimeEnv: (reader: () => string | undefined) => strin
2
2
  export declare const isDevelopmentRuntime: () => boolean;
3
3
  export declare const RUNTIME_ENV_KEYS: {
4
4
  readonly appDealsApiBaseUrl: readonly ["NEXT_PUBLIC_APP_DEALS_API_BASE_URL", "APP_DEALS_API_BASE_URL"];
5
- readonly funnelSdkPublishableKey: readonly ["NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY", "NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY", "FUNNEL_SDK_PUBLISHABLE_KEY"];
6
- readonly funnelId: readonly ["NEXT_PUBLIC_FUNNEL_ID", "FUNNEL_ID", "NEXT_PUBLIC_RAG_FUNNEL_ID", "RAG_FUNNEL_ID", "NEXT_PUBLIC_PREVIEW_TEST_FUNNEL_ID", "PREVIEW_TEST_FUNNEL_ID"];
5
+ readonly funnelSdkPublishableKey: readonly ["NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY", "FUNNEL_SDK_PUBLISHABLE_KEY"];
6
+ readonly funnelId: readonly ["NEXT_PUBLIC_FUNNEL_ID", "FUNNEL_ID", "NEXT_PUBLIC_RAG_FUNNEL_ID"];
7
7
  readonly projectId: readonly ["NEXT_PUBLIC_PROJECT_ID", "PROJECT_ID"];
8
8
  readonly funnelVersionId: readonly ["NEXT_PUBLIC_FUNNEL_VERSION_ID", "FUNNEL_VERSION_ID"];
9
9
  readonly posthogProjectApiKey: readonly ["NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY", "POSTHOG_PROJECT_API_KEY"];
@@ -14,7 +14,6 @@ export const isDevelopmentRuntime = () => {
14
14
  export const RUNTIME_ENV_KEYS = {
15
15
  appDealsApiBaseUrl: ['NEXT_PUBLIC_APP_DEALS_API_BASE_URL', 'APP_DEALS_API_BASE_URL'],
16
16
  funnelSdkPublishableKey: [
17
- 'NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY',
18
17
  'NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY',
19
18
  'FUNNEL_SDK_PUBLISHABLE_KEY',
20
19
  ],
@@ -22,9 +21,6 @@ export const RUNTIME_ENV_KEYS = {
22
21
  'NEXT_PUBLIC_FUNNEL_ID',
23
22
  'FUNNEL_ID',
24
23
  'NEXT_PUBLIC_RAG_FUNNEL_ID',
25
- 'RAG_FUNNEL_ID',
26
- 'NEXT_PUBLIC_PREVIEW_TEST_FUNNEL_ID',
27
- 'PREVIEW_TEST_FUNNEL_ID',
28
24
  ],
29
25
  projectId: ['NEXT_PUBLIC_PROJECT_ID', 'PROJECT_ID'],
30
26
  funnelVersionId: ['NEXT_PUBLIC_FUNNEL_VERSION_ID', 'FUNNEL_VERSION_ID'],
@@ -114,10 +110,7 @@ const RUNTIME_ENV_VALUES = {
114
110
  CLAIMBEE_WEEKLY_PRICE_ID: readRuntimeEnv(() => process.env.CLAIMBEE_WEEKLY_PRICE_ID),
115
111
  CLAIMBEE_MONTHLY_PRICE_ID: readRuntimeEnv(() => process.env.CLAIMBEE_MONTHLY_PRICE_ID),
116
112
  CLAIMBEE_YEARLY_PRICE_ID: readRuntimeEnv(() => process.env.CLAIMBEE_YEARLY_PRICE_ID),
117
- RAG_FUNNEL_ID: readRuntimeEnv(() => process.env.RAG_FUNNEL_ID),
118
- PREVIEW_TEST_FUNNEL_ID: readRuntimeEnv(() => process.env.PREVIEW_TEST_FUNNEL_ID),
119
113
  NEXT_PUBLIC_APP_DEALS_API_BASE_URL: readRuntimeEnv(() => process.env.NEXT_PUBLIC_APP_DEALS_API_BASE_URL),
120
- NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY),
121
114
  NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY),
122
115
  NEXT_PUBLIC_FUNNEL_ID: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_ID),
123
116
  NEXT_PUBLIC_FUNNEL_VERSION_ID: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_VERSION_ID),
@@ -143,7 +136,6 @@ const RUNTIME_ENV_VALUES = {
143
136
  NEXT_PUBLIC_FUNNEL_ANDROID_DEEP_LINK: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_ANDROID_DEEP_LINK),
144
137
  NEXT_PUBLIC_FUNNEL_QR_TARGET: readRuntimeEnv(() => process.env.NEXT_PUBLIC_FUNNEL_QR_TARGET),
145
138
  NEXT_PUBLIC_RAG_FUNNEL_ID: readRuntimeEnv(() => process.env.NEXT_PUBLIC_RAG_FUNNEL_ID),
146
- NEXT_PUBLIC_PREVIEW_TEST_FUNNEL_ID: readRuntimeEnv(() => process.env.NEXT_PUBLIC_PREVIEW_TEST_FUNNEL_ID),
147
139
  NEXT_PUBLIC_STRIPE_ACTIVE_MODE: readRuntimeEnv(() => process.env.NEXT_PUBLIC_STRIPE_ACTIVE_MODE),
148
140
  NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: readRuntimeEnv(() => process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY),
149
141
  NEXT_PUBLIC_STRIPE_TEST_PUBLISHABLE_KEY: readRuntimeEnv(() => process.env.NEXT_PUBLIC_STRIPE_TEST_PUBLISHABLE_KEY),
package/dist/index.d.ts CHANGED
@@ -22,6 +22,7 @@ export * from './services/api.service.js';
22
22
  export * from './services/funnel-state.service.js';
23
23
  export * from './services/logger.js';
24
24
  export * from './services/preview-frame.service.js';
25
+ export * from './services/project-env.js';
25
26
  export * from './services/public-env.js';
26
27
  export * from './services/runtime-api.config.js';
27
28
  export * from './services/runtime-mode.service.js';
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ export * from './services/api.service.js';
22
22
  export * from './services/funnel-state.service.js';
23
23
  export * from './services/logger.js';
24
24
  export * from './services/preview-frame.service.js';
25
+ export * from './services/project-env.js';
25
26
  export * from './services/public-env.js';
26
27
  export * from './services/runtime-api.config.js';
27
28
  export * from './services/runtime-mode.service.js';
@@ -0,0 +1,94 @@
1
+ export declare const PROJECT_ENV_STANDARD_KEYS: {
2
+ readonly funnelSdkPublishableKey: "NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY";
3
+ readonly funnelId: "NEXT_PUBLIC_FUNNEL_ID";
4
+ readonly funnelVersionId: "NEXT_PUBLIC_FUNNEL_VERSION_ID";
5
+ readonly projectId: "NEXT_PUBLIC_PROJECT_ID";
6
+ readonly posthogProjectApiKey: "NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY";
7
+ readonly stripeEnabled: "STRIPE_ENABLED";
8
+ readonly stripeActiveMode: "NEXT_PUBLIC_STRIPE_ACTIVE_MODE";
9
+ readonly stripeTestPublishableKey: "NEXT_PUBLIC_STRIPE_TEST_PUBLISHABLE_KEY";
10
+ readonly stripeTestSecretKey: "STRIPE_TEST_SECRET_KEY";
11
+ readonly stripeTestWebhookSecret: "STRIPE_TEST_WEBHOOK_SECRET";
12
+ readonly stripeLivePublishableKey: "NEXT_PUBLIC_STRIPE_LIVE_PUBLISHABLE_KEY";
13
+ readonly stripeLiveSecretKey: "STRIPE_LIVE_SECRET_KEY";
14
+ readonly stripeLiveWebhookSecret: "STRIPE_LIVE_WEBHOOK_SECRET";
15
+ readonly funnelIosDeepLink: "NEXT_PUBLIC_FUNNEL_IOS_DEEP_LINK";
16
+ readonly funnelAndroidPlayStoreUrl: "NEXT_PUBLIC_ANDROID_PLAY_STORE_URL";
17
+ readonly funnelUniversalLink: "NEXT_PUBLIC_FUNNEL_UNIVERSAL_LINK";
18
+ readonly funnelAppStoreId: "NEXT_PUBLIC_FUNNEL_APP_STORE_ID";
19
+ readonly funnelGoogleStoreId: "NEXT_PUBLIC_FUNNEL_GOOGLE_STORE_ID";
20
+ readonly funnelTimezone: "NEXT_PUBLIC_FUNNEL_TIMEZONE";
21
+ readonly funnelFaviconUrl: "NEXT_PUBLIC_FUNNEL_FAVICON_URL";
22
+ readonly funnelPageTitle: "NEXT_PUBLIC_FUNNEL_PAGE_TITLE";
23
+ readonly funnelPageDescription: "NEXT_PUBLIC_FUNNEL_PAGE_DESCRIPTION";
24
+ readonly funnelPagePreviewImageUrl: "NEXT_PUBLIC_FUNNEL_PAGE_PREVIEW_IMAGE_URL";
25
+ readonly funnelCompanyName: "NEXT_PUBLIC_FUNNEL_COMPANY_NAME";
26
+ readonly funnelCompanyAddress: "NEXT_PUBLIC_FUNNEL_COMPANY_ADDRESS";
27
+ readonly funnelCompanyCountry: "NEXT_PUBLIC_FUNNEL_COMPANY_COUNTRY";
28
+ readonly funnelPrivacyUrl: "NEXT_PUBLIC_FUNNEL_PRIVACY_URL";
29
+ readonly funnelTermsUrl: "NEXT_PUBLIC_FUNNEL_TERMS_URL";
30
+ readonly funnelCustomDomain: "FUNNEL_CUSTOM_DOMAIN";
31
+ readonly funnelSupportEmail: "NEXT_PUBLIC_FUNNEL_SUPPORT_EMAIL";
32
+ readonly metaPixelEnabled: "NEXT_PUBLIC_META_PIXEL_ENABLED";
33
+ readonly metaPixelId: "NEXT_PUBLIC_META_PIXEL_ID";
34
+ readonly metaConversionsAccessToken: "META_CONVERSIONS_ACCESS_TOKEN";
35
+ readonly metaTestEventCode: "META_TEST_EVENT_CODE";
36
+ };
37
+ export type ProjectEnvStandardKey = keyof typeof PROJECT_ENV_STANDARD_KEYS;
38
+ export type ProjectEnvStandardValues = Record<ProjectEnvStandardKey, string>;
39
+ export declare const PROJECT_ENV_STANDARD_KEY_ALIASES: {
40
+ readonly funnelSdkPublishableKey: readonly ["NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY", "NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY"];
41
+ readonly funnelId: readonly ["NEXT_PUBLIC_FUNNEL_ID"];
42
+ readonly funnelVersionId: readonly ["NEXT_PUBLIC_FUNNEL_VERSION_ID"];
43
+ readonly projectId: readonly ["NEXT_PUBLIC_PROJECT_ID"];
44
+ readonly posthogProjectApiKey: readonly ["NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY"];
45
+ readonly stripeEnabled: readonly ["STRIPE_ENABLED"];
46
+ readonly stripeActiveMode: readonly ["NEXT_PUBLIC_STRIPE_ACTIVE_MODE", "STRIPE_ACTIVE_MODE"];
47
+ readonly stripeTestPublishableKey: readonly ["NEXT_PUBLIC_STRIPE_TEST_PUBLISHABLE_KEY", "STRIPE_TEST_PUBLISHABLE_KEY"];
48
+ readonly stripeTestSecretKey: readonly ["STRIPE_TEST_SECRET_KEY"];
49
+ readonly stripeTestWebhookSecret: readonly ["STRIPE_TEST_WEBHOOK_SECRET"];
50
+ readonly stripeLivePublishableKey: readonly ["NEXT_PUBLIC_STRIPE_LIVE_PUBLISHABLE_KEY", "STRIPE_LIVE_PUBLISHABLE_KEY"];
51
+ readonly stripeLiveSecretKey: readonly ["STRIPE_LIVE_SECRET_KEY"];
52
+ readonly stripeLiveWebhookSecret: readonly ["STRIPE_LIVE_WEBHOOK_SECRET"];
53
+ readonly funnelIosDeepLink: readonly ["NEXT_PUBLIC_FUNNEL_IOS_DEEP_LINK", "APPSTORE_DEEPLINK_URL"];
54
+ readonly funnelAndroidPlayStoreUrl: readonly ["NEXT_PUBLIC_ANDROID_PLAY_STORE_URL", "GOOGLE_PLAY_URL"];
55
+ readonly funnelUniversalLink: readonly ["NEXT_PUBLIC_FUNNEL_UNIVERSAL_LINK", "WEB_LANDING_URL"];
56
+ readonly funnelAppStoreId: readonly ["NEXT_PUBLIC_FUNNEL_APP_STORE_ID"];
57
+ readonly funnelGoogleStoreId: readonly ["NEXT_PUBLIC_FUNNEL_GOOGLE_STORE_ID"];
58
+ readonly funnelTimezone: readonly ["NEXT_PUBLIC_FUNNEL_TIMEZONE"];
59
+ readonly funnelFaviconUrl: readonly ["NEXT_PUBLIC_FUNNEL_FAVICON_URL"];
60
+ readonly funnelPageTitle: readonly ["NEXT_PUBLIC_FUNNEL_PAGE_TITLE"];
61
+ readonly funnelPageDescription: readonly ["NEXT_PUBLIC_FUNNEL_PAGE_DESCRIPTION"];
62
+ readonly funnelPagePreviewImageUrl: readonly ["NEXT_PUBLIC_FUNNEL_PAGE_PREVIEW_IMAGE_URL"];
63
+ readonly funnelCompanyName: readonly ["NEXT_PUBLIC_FUNNEL_COMPANY_NAME"];
64
+ readonly funnelCompanyAddress: readonly ["NEXT_PUBLIC_FUNNEL_COMPANY_ADDRESS"];
65
+ readonly funnelCompanyCountry: readonly ["NEXT_PUBLIC_FUNNEL_COMPANY_COUNTRY"];
66
+ readonly funnelPrivacyUrl: readonly ["NEXT_PUBLIC_FUNNEL_PRIVACY_URL"];
67
+ readonly funnelTermsUrl: readonly ["NEXT_PUBLIC_FUNNEL_TERMS_URL"];
68
+ readonly funnelCustomDomain: readonly ["FUNNEL_CUSTOM_DOMAIN"];
69
+ readonly funnelSupportEmail: readonly ["NEXT_PUBLIC_FUNNEL_SUPPORT_EMAIL", "FUNNEL_SUPPORT_EMAIL"];
70
+ readonly metaPixelEnabled: readonly ["NEXT_PUBLIC_META_PIXEL_ENABLED", "META_PIXEL_ENABLED"];
71
+ readonly metaPixelId: readonly ["NEXT_PUBLIC_META_PIXEL_ID", "META_PIXEL_ID"];
72
+ readonly metaConversionsAccessToken: readonly ["META_CONVERSIONS_ACCESS_TOKEN"];
73
+ readonly metaTestEventCode: readonly ["META_TEST_EVENT_CODE"];
74
+ };
75
+ export type ProjectEnvVariableLike = {
76
+ key: string;
77
+ value: string | null | undefined;
78
+ };
79
+ export type ProjectEnvVariableInputLike = {
80
+ key: string;
81
+ value: string;
82
+ };
83
+ export interface ParsedProjectEnvVariables {
84
+ envMap: Map<string, string>;
85
+ standard: ProjectEnvStandardValues;
86
+ }
87
+ export declare const canonicalizeProjectEnvKey: (key: string) => string;
88
+ export declare const normalizeProjectEnvValue: (value: string | null | undefined) => string;
89
+ export declare const buildProjectEnvMap: (variables: readonly ProjectEnvVariableLike[]) => Map<string, string>;
90
+ export declare const getProjectEnvValue: (envMap: ReadonlyMap<string, string>, keys: readonly string[], options?: {
91
+ requireNonEmpty?: boolean;
92
+ }) => string;
93
+ export declare const parseProjectEnvVariables: (variables: readonly ProjectEnvVariableLike[]) => ParsedProjectEnvVariables;
94
+ export declare const normalizeProjectEnvVariables: (variables: readonly ProjectEnvVariableInputLike[]) => ProjectEnvVariableInputLike[];
@@ -0,0 +1,184 @@
1
+ export const PROJECT_ENV_STANDARD_KEYS = {
2
+ funnelSdkPublishableKey: 'NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY',
3
+ funnelId: 'NEXT_PUBLIC_FUNNEL_ID',
4
+ funnelVersionId: 'NEXT_PUBLIC_FUNNEL_VERSION_ID',
5
+ projectId: 'NEXT_PUBLIC_PROJECT_ID',
6
+ posthogProjectApiKey: 'NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY',
7
+ stripeEnabled: 'STRIPE_ENABLED',
8
+ stripeActiveMode: 'NEXT_PUBLIC_STRIPE_ACTIVE_MODE',
9
+ stripeTestPublishableKey: 'NEXT_PUBLIC_STRIPE_TEST_PUBLISHABLE_KEY',
10
+ stripeTestSecretKey: 'STRIPE_TEST_SECRET_KEY',
11
+ stripeTestWebhookSecret: 'STRIPE_TEST_WEBHOOK_SECRET',
12
+ stripeLivePublishableKey: 'NEXT_PUBLIC_STRIPE_LIVE_PUBLISHABLE_KEY',
13
+ stripeLiveSecretKey: 'STRIPE_LIVE_SECRET_KEY',
14
+ stripeLiveWebhookSecret: 'STRIPE_LIVE_WEBHOOK_SECRET',
15
+ funnelIosDeepLink: 'NEXT_PUBLIC_FUNNEL_IOS_DEEP_LINK',
16
+ funnelAndroidPlayStoreUrl: 'NEXT_PUBLIC_ANDROID_PLAY_STORE_URL',
17
+ funnelUniversalLink: 'NEXT_PUBLIC_FUNNEL_UNIVERSAL_LINK',
18
+ funnelAppStoreId: 'NEXT_PUBLIC_FUNNEL_APP_STORE_ID',
19
+ funnelGoogleStoreId: 'NEXT_PUBLIC_FUNNEL_GOOGLE_STORE_ID',
20
+ funnelTimezone: 'NEXT_PUBLIC_FUNNEL_TIMEZONE',
21
+ funnelFaviconUrl: 'NEXT_PUBLIC_FUNNEL_FAVICON_URL',
22
+ funnelPageTitle: 'NEXT_PUBLIC_FUNNEL_PAGE_TITLE',
23
+ funnelPageDescription: 'NEXT_PUBLIC_FUNNEL_PAGE_DESCRIPTION',
24
+ funnelPagePreviewImageUrl: 'NEXT_PUBLIC_FUNNEL_PAGE_PREVIEW_IMAGE_URL',
25
+ funnelCompanyName: 'NEXT_PUBLIC_FUNNEL_COMPANY_NAME',
26
+ funnelCompanyAddress: 'NEXT_PUBLIC_FUNNEL_COMPANY_ADDRESS',
27
+ funnelCompanyCountry: 'NEXT_PUBLIC_FUNNEL_COMPANY_COUNTRY',
28
+ funnelPrivacyUrl: 'NEXT_PUBLIC_FUNNEL_PRIVACY_URL',
29
+ funnelTermsUrl: 'NEXT_PUBLIC_FUNNEL_TERMS_URL',
30
+ funnelCustomDomain: 'FUNNEL_CUSTOM_DOMAIN',
31
+ funnelSupportEmail: 'NEXT_PUBLIC_FUNNEL_SUPPORT_EMAIL',
32
+ metaPixelEnabled: 'NEXT_PUBLIC_META_PIXEL_ENABLED',
33
+ metaPixelId: 'NEXT_PUBLIC_META_PIXEL_ID',
34
+ metaConversionsAccessToken: 'META_CONVERSIONS_ACCESS_TOKEN',
35
+ metaTestEventCode: 'META_TEST_EVENT_CODE',
36
+ };
37
+ export const PROJECT_ENV_STANDARD_KEY_ALIASES = {
38
+ funnelSdkPublishableKey: [
39
+ PROJECT_ENV_STANDARD_KEYS.funnelSdkPublishableKey,
40
+ 'NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY',
41
+ ],
42
+ funnelId: [PROJECT_ENV_STANDARD_KEYS.funnelId],
43
+ funnelVersionId: [PROJECT_ENV_STANDARD_KEYS.funnelVersionId],
44
+ projectId: [PROJECT_ENV_STANDARD_KEYS.projectId],
45
+ posthogProjectApiKey: [PROJECT_ENV_STANDARD_KEYS.posthogProjectApiKey],
46
+ stripeEnabled: [PROJECT_ENV_STANDARD_KEYS.stripeEnabled],
47
+ stripeActiveMode: [PROJECT_ENV_STANDARD_KEYS.stripeActiveMode, 'STRIPE_ACTIVE_MODE'],
48
+ stripeTestPublishableKey: [PROJECT_ENV_STANDARD_KEYS.stripeTestPublishableKey, 'STRIPE_TEST_PUBLISHABLE_KEY'],
49
+ stripeTestSecretKey: [PROJECT_ENV_STANDARD_KEYS.stripeTestSecretKey],
50
+ stripeTestWebhookSecret: [PROJECT_ENV_STANDARD_KEYS.stripeTestWebhookSecret],
51
+ stripeLivePublishableKey: [PROJECT_ENV_STANDARD_KEYS.stripeLivePublishableKey, 'STRIPE_LIVE_PUBLISHABLE_KEY'],
52
+ stripeLiveSecretKey: [PROJECT_ENV_STANDARD_KEYS.stripeLiveSecretKey],
53
+ stripeLiveWebhookSecret: [PROJECT_ENV_STANDARD_KEYS.stripeLiveWebhookSecret],
54
+ funnelIosDeepLink: [PROJECT_ENV_STANDARD_KEYS.funnelIosDeepLink, 'APPSTORE_DEEPLINK_URL'],
55
+ funnelAndroidPlayStoreUrl: [PROJECT_ENV_STANDARD_KEYS.funnelAndroidPlayStoreUrl, 'GOOGLE_PLAY_URL'],
56
+ funnelUniversalLink: [PROJECT_ENV_STANDARD_KEYS.funnelUniversalLink, 'WEB_LANDING_URL'],
57
+ funnelAppStoreId: [PROJECT_ENV_STANDARD_KEYS.funnelAppStoreId],
58
+ funnelGoogleStoreId: [PROJECT_ENV_STANDARD_KEYS.funnelGoogleStoreId],
59
+ funnelTimezone: [PROJECT_ENV_STANDARD_KEYS.funnelTimezone],
60
+ funnelFaviconUrl: [PROJECT_ENV_STANDARD_KEYS.funnelFaviconUrl],
61
+ funnelPageTitle: [PROJECT_ENV_STANDARD_KEYS.funnelPageTitle],
62
+ funnelPageDescription: [PROJECT_ENV_STANDARD_KEYS.funnelPageDescription],
63
+ funnelPagePreviewImageUrl: [PROJECT_ENV_STANDARD_KEYS.funnelPagePreviewImageUrl],
64
+ funnelCompanyName: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyName],
65
+ funnelCompanyAddress: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyAddress],
66
+ funnelCompanyCountry: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyCountry],
67
+ funnelPrivacyUrl: [PROJECT_ENV_STANDARD_KEYS.funnelPrivacyUrl],
68
+ funnelTermsUrl: [PROJECT_ENV_STANDARD_KEYS.funnelTermsUrl],
69
+ funnelCustomDomain: [PROJECT_ENV_STANDARD_KEYS.funnelCustomDomain],
70
+ funnelSupportEmail: [PROJECT_ENV_STANDARD_KEYS.funnelSupportEmail, 'FUNNEL_SUPPORT_EMAIL'],
71
+ metaPixelEnabled: [PROJECT_ENV_STANDARD_KEYS.metaPixelEnabled, 'META_PIXEL_ENABLED'],
72
+ metaPixelId: [PROJECT_ENV_STANDARD_KEYS.metaPixelId, 'META_PIXEL_ID'],
73
+ metaConversionsAccessToken: [PROJECT_ENV_STANDARD_KEYS.metaConversionsAccessToken],
74
+ metaTestEventCode: [PROJECT_ENV_STANDARD_KEYS.metaTestEventCode],
75
+ };
76
+ const LEGACY_TO_CANONICAL_KEY = new Map([
77
+ ['NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY', PROJECT_ENV_STANDARD_KEYS.funnelSdkPublishableKey],
78
+ ['STRIPE_ACTIVE_MODE', PROJECT_ENV_STANDARD_KEYS.stripeActiveMode],
79
+ ['STRIPE_TEST_PUBLISHABLE_KEY', PROJECT_ENV_STANDARD_KEYS.stripeTestPublishableKey],
80
+ ['STRIPE_LIVE_PUBLISHABLE_KEY', PROJECT_ENV_STANDARD_KEYS.stripeLivePublishableKey],
81
+ ['APPSTORE_DEEPLINK_URL', PROJECT_ENV_STANDARD_KEYS.funnelIosDeepLink],
82
+ ['GOOGLE_PLAY_URL', PROJECT_ENV_STANDARD_KEYS.funnelAndroidPlayStoreUrl],
83
+ ['WEB_LANDING_URL', PROJECT_ENV_STANDARD_KEYS.funnelUniversalLink],
84
+ ['FUNNEL_SUPPORT_EMAIL', PROJECT_ENV_STANDARD_KEYS.funnelSupportEmail],
85
+ ['META_PIXEL_ENABLED', PROJECT_ENV_STANDARD_KEYS.metaPixelEnabled],
86
+ ['META_PIXEL_ID', PROJECT_ENV_STANDARD_KEYS.metaPixelId],
87
+ ['NEXT_PUBLIC_PROJECT_ID', PROJECT_ENV_STANDARD_KEYS.projectId],
88
+ ['NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY', PROJECT_ENV_STANDARD_KEYS.posthogProjectApiKey],
89
+ ]);
90
+ export const canonicalizeProjectEnvKey = (key) => {
91
+ return LEGACY_TO_CANONICAL_KEY.get(key) || key;
92
+ };
93
+ export const normalizeProjectEnvValue = (value) => {
94
+ return (value === null || value === void 0 ? void 0 : value.trim()) || '';
95
+ };
96
+ export const buildProjectEnvMap = (variables) => {
97
+ const envMap = new Map();
98
+ for (const variable of variables) {
99
+ const key = canonicalizeProjectEnvKey(variable.key.trim());
100
+ if (!key) {
101
+ continue;
102
+ }
103
+ const nextValue = normalizeProjectEnvValue(variable.value);
104
+ const existingValue = envMap.get(key);
105
+ if (existingValue === undefined || (!existingValue && nextValue)) {
106
+ envMap.set(key, nextValue);
107
+ }
108
+ }
109
+ return envMap;
110
+ };
111
+ export const getProjectEnvValue = (envMap, keys, options) => {
112
+ const requireNonEmpty = Boolean(options === null || options === void 0 ? void 0 : options.requireNonEmpty);
113
+ for (const key of keys) {
114
+ const canonicalKey = canonicalizeProjectEnvKey(key.trim());
115
+ if (!canonicalKey || !envMap.has(canonicalKey)) {
116
+ continue;
117
+ }
118
+ const value = normalizeProjectEnvValue(envMap.get(canonicalKey));
119
+ if (requireNonEmpty && !value) {
120
+ continue;
121
+ }
122
+ return value;
123
+ }
124
+ return '';
125
+ };
126
+ const buildProjectStandardValues = (envMap) => {
127
+ return {
128
+ funnelSdkPublishableKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelSdkPublishableKey),
129
+ funnelId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelId),
130
+ funnelVersionId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelVersionId),
131
+ projectId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.projectId),
132
+ posthogProjectApiKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.posthogProjectApiKey),
133
+ stripeEnabled: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeEnabled),
134
+ stripeActiveMode: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeActiveMode),
135
+ stripeTestPublishableKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeTestPublishableKey),
136
+ stripeTestSecretKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeTestSecretKey),
137
+ stripeTestWebhookSecret: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeTestWebhookSecret),
138
+ stripeLivePublishableKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeLivePublishableKey),
139
+ stripeLiveSecretKey: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeLiveSecretKey),
140
+ stripeLiveWebhookSecret: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.stripeLiveWebhookSecret),
141
+ funnelIosDeepLink: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelIosDeepLink),
142
+ funnelAndroidPlayStoreUrl: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelAndroidPlayStoreUrl),
143
+ funnelUniversalLink: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelUniversalLink),
144
+ funnelAppStoreId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelAppStoreId),
145
+ funnelGoogleStoreId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelGoogleStoreId),
146
+ funnelTimezone: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelTimezone),
147
+ funnelFaviconUrl: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelFaviconUrl),
148
+ funnelPageTitle: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelPageTitle),
149
+ funnelPageDescription: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelPageDescription),
150
+ funnelPagePreviewImageUrl: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelPagePreviewImageUrl),
151
+ funnelCompanyName: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelCompanyName),
152
+ funnelCompanyAddress: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelCompanyAddress),
153
+ funnelCompanyCountry: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelCompanyCountry),
154
+ funnelPrivacyUrl: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelPrivacyUrl),
155
+ funnelTermsUrl: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelTermsUrl),
156
+ funnelCustomDomain: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelCustomDomain),
157
+ funnelSupportEmail: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.funnelSupportEmail),
158
+ metaPixelEnabled: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.metaPixelEnabled),
159
+ metaPixelId: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.metaPixelId),
160
+ metaConversionsAccessToken: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.metaConversionsAccessToken),
161
+ metaTestEventCode: getProjectEnvValue(envMap, PROJECT_ENV_STANDARD_KEY_ALIASES.metaTestEventCode),
162
+ };
163
+ };
164
+ export const parseProjectEnvVariables = (variables) => {
165
+ const envMap = buildProjectEnvMap(variables);
166
+ return {
167
+ envMap,
168
+ standard: buildProjectStandardValues(envMap),
169
+ };
170
+ };
171
+ export const normalizeProjectEnvVariables = (variables) => {
172
+ const deduped = new Map();
173
+ for (const variable of variables) {
174
+ const key = canonicalizeProjectEnvKey(variable.key.trim());
175
+ if (!key) {
176
+ continue;
177
+ }
178
+ deduped.set(key, variable.value);
179
+ }
180
+ return Array.from(deduped.entries()).map(([key, value]) => ({
181
+ key,
182
+ value,
183
+ }));
184
+ };
@@ -2,8 +2,8 @@ import { isDevelopmentRuntime, readRuntimeEnv } from '../config/env.config.js';
2
2
  export { isDevelopmentRuntime, readRuntimeEnv };
3
3
  export declare const RUNTIME_PUBLIC_ENV_KEYS: {
4
4
  readonly apiBaseUrl: readonly ["NEXT_PUBLIC_APP_DEALS_API_BASE_URL", "APP_DEALS_API_BASE_URL"];
5
- readonly funnelSdkPublishableKey: readonly ["NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY", "NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY", "FUNNEL_SDK_PUBLISHABLE_KEY"];
6
- readonly funnelId: readonly ["NEXT_PUBLIC_FUNNEL_ID", "FUNNEL_ID", "NEXT_PUBLIC_RAG_FUNNEL_ID", "RAG_FUNNEL_ID", "NEXT_PUBLIC_PREVIEW_TEST_FUNNEL_ID", "PREVIEW_TEST_FUNNEL_ID"];
5
+ readonly funnelSdkPublishableKey: readonly ["NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY", "FUNNEL_SDK_PUBLISHABLE_KEY"];
6
+ readonly funnelId: readonly ["NEXT_PUBLIC_FUNNEL_ID", "FUNNEL_ID", "NEXT_PUBLIC_RAG_FUNNEL_ID"];
7
7
  readonly funnelVersionId: readonly ["NEXT_PUBLIC_FUNNEL_VERSION_ID", "FUNNEL_VERSION_ID"];
8
8
  readonly projectId: readonly ["NEXT_PUBLIC_PROJECT_ID", "PROJECT_ID"];
9
9
  readonly posthogProjectApiKey: readonly ["NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY", "POSTHOG_PROJECT_API_KEY"];
@@ -1,4 +1,5 @@
1
1
  import { RUNTIME_ENV_KEYS, isDevelopmentRuntime, readRuntimeEnv, runtimeEnvConfig, } from '../config/env.config.js';
2
+ import { PROJECT_ENV_STANDARD_KEYS } from './project-env.js';
2
3
  export { isDevelopmentRuntime, readRuntimeEnv };
3
4
  const DEFAULT_API_BASE_URL = 'https://sdk-api.funnelsgrove.com';
4
5
  const DEFAULT_FUNNEL_SDK_PUBLISHABLE_KEY = 'pk_test_app_deals_seed_public';
@@ -95,58 +96,55 @@ const NEXT_STATIC_EXPORT_RUNTIME_PUBLIC_KEYS = [
95
96
  inputKeys: ['NEXT_PUBLIC_APP_DEALS_API_BASE_URL'],
96
97
  },
97
98
  {
98
- outputKey: 'NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY',
99
- inputKeys: [
100
- 'NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY',
101
- 'NEXT_PUBLIC_FUNNEL_SDK_PUBLISHABLE_KEY',
102
- ],
99
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelSdkPublishableKey,
100
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelSdkPublishableKey],
103
101
  },
104
- { outputKey: 'NEXT_PUBLIC_FUNNEL_ID', inputKeys: ['NEXT_PUBLIC_FUNNEL_ID'] },
105
- { outputKey: 'NEXT_PUBLIC_FUNNEL_VERSION_ID', inputKeys: ['NEXT_PUBLIC_FUNNEL_VERSION_ID'] },
106
- { outputKey: 'NEXT_PUBLIC_PROJECT_ID', inputKeys: ['NEXT_PUBLIC_PROJECT_ID'] },
102
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelId] },
103
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelVersionId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelVersionId] },
104
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.projectId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.projectId] },
107
105
  {
108
- outputKey: 'NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY',
109
- inputKeys: ['NEXT_PUBLIC_POSTHOG_PROJECT_API_KEY'],
106
+ outputKey: PROJECT_ENV_STANDARD_KEYS.posthogProjectApiKey,
107
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.posthogProjectApiKey],
110
108
  },
111
- { outputKey: 'NEXT_PUBLIC_FUNNEL_SUPPORT_EMAIL', inputKeys: ['NEXT_PUBLIC_FUNNEL_SUPPORT_EMAIL'] },
109
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelSupportEmail, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelSupportEmail] },
112
110
  { outputKey: 'NEXT_PUBLIC_IOS_APP_STORE_URL', inputKeys: ['NEXT_PUBLIC_IOS_APP_STORE_URL'] },
113
- { outputKey: 'NEXT_PUBLIC_ANDROID_PLAY_STORE_URL', inputKeys: ['NEXT_PUBLIC_ANDROID_PLAY_STORE_URL'] },
114
- { outputKey: 'NEXT_PUBLIC_FUNNEL_APP_STORE_ID', inputKeys: ['NEXT_PUBLIC_FUNNEL_APP_STORE_ID'] },
115
- { outputKey: 'NEXT_PUBLIC_FUNNEL_GOOGLE_STORE_ID', inputKeys: ['NEXT_PUBLIC_FUNNEL_GOOGLE_STORE_ID'] },
116
- { outputKey: 'NEXT_PUBLIC_FUNNEL_TIMEZONE', inputKeys: ['NEXT_PUBLIC_FUNNEL_TIMEZONE'] },
117
- { outputKey: 'NEXT_PUBLIC_FUNNEL_FAVICON_URL', inputKeys: ['NEXT_PUBLIC_FUNNEL_FAVICON_URL'] },
118
- { outputKey: 'NEXT_PUBLIC_FUNNEL_PAGE_TITLE', inputKeys: ['NEXT_PUBLIC_FUNNEL_PAGE_TITLE'] },
111
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelAndroidPlayStoreUrl, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelAndroidPlayStoreUrl] },
112
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelAppStoreId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelAppStoreId] },
113
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelGoogleStoreId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelGoogleStoreId] },
114
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelTimezone, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelTimezone] },
115
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelFaviconUrl, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelFaviconUrl] },
116
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelPageTitle, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelPageTitle] },
119
117
  {
120
- outputKey: 'NEXT_PUBLIC_FUNNEL_PAGE_DESCRIPTION',
121
- inputKeys: ['NEXT_PUBLIC_FUNNEL_PAGE_DESCRIPTION'],
118
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelPageDescription,
119
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelPageDescription],
122
120
  },
123
121
  {
124
- outputKey: 'NEXT_PUBLIC_FUNNEL_PAGE_PREVIEW_IMAGE_URL',
125
- inputKeys: ['NEXT_PUBLIC_FUNNEL_PAGE_PREVIEW_IMAGE_URL'],
122
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelPagePreviewImageUrl,
123
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelPagePreviewImageUrl],
126
124
  },
127
- { outputKey: 'NEXT_PUBLIC_FUNNEL_COMPANY_NAME', inputKeys: ['NEXT_PUBLIC_FUNNEL_COMPANY_NAME'] },
125
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelCompanyName, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyName] },
128
126
  {
129
- outputKey: 'NEXT_PUBLIC_FUNNEL_COMPANY_ADDRESS',
130
- inputKeys: ['NEXT_PUBLIC_FUNNEL_COMPANY_ADDRESS'],
127
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelCompanyAddress,
128
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyAddress],
131
129
  },
132
130
  {
133
- outputKey: 'NEXT_PUBLIC_FUNNEL_COMPANY_COUNTRY',
134
- inputKeys: ['NEXT_PUBLIC_FUNNEL_COMPANY_COUNTRY'],
131
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelCompanyCountry,
132
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelCompanyCountry],
135
133
  },
136
- { outputKey: 'NEXT_PUBLIC_FUNNEL_PRIVACY_URL', inputKeys: ['NEXT_PUBLIC_FUNNEL_PRIVACY_URL'] },
137
- { outputKey: 'NEXT_PUBLIC_FUNNEL_TERMS_URL', inputKeys: ['NEXT_PUBLIC_FUNNEL_TERMS_URL'] },
134
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelPrivacyUrl, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelPrivacyUrl] },
135
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelTermsUrl, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelTermsUrl] },
138
136
  {
139
- outputKey: 'NEXT_PUBLIC_FUNNEL_UNIVERSAL_LINK',
140
- inputKeys: ['NEXT_PUBLIC_FUNNEL_UNIVERSAL_LINK'],
137
+ outputKey: PROJECT_ENV_STANDARD_KEYS.funnelUniversalLink,
138
+ inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelUniversalLink],
141
139
  },
142
- { outputKey: 'NEXT_PUBLIC_FUNNEL_IOS_DEEP_LINK', inputKeys: ['NEXT_PUBLIC_FUNNEL_IOS_DEEP_LINK'] },
140
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.funnelIosDeepLink, inputKeys: [PROJECT_ENV_STANDARD_KEYS.funnelIosDeepLink] },
143
141
  {
144
142
  outputKey: 'NEXT_PUBLIC_FUNNEL_ANDROID_DEEP_LINK',
145
143
  inputKeys: ['NEXT_PUBLIC_FUNNEL_ANDROID_DEEP_LINK'],
146
144
  },
147
145
  { outputKey: 'NEXT_PUBLIC_FUNNEL_QR_TARGET', inputKeys: ['NEXT_PUBLIC_FUNNEL_QR_TARGET'] },
148
- { outputKey: 'NEXT_PUBLIC_META_PIXEL_ENABLED', inputKeys: ['NEXT_PUBLIC_META_PIXEL_ENABLED'] },
149
- { outputKey: 'NEXT_PUBLIC_META_PIXEL_ID', inputKeys: ['NEXT_PUBLIC_META_PIXEL_ID'] },
146
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.metaPixelEnabled, inputKeys: [PROJECT_ENV_STANDARD_KEYS.metaPixelEnabled] },
147
+ { outputKey: PROJECT_ENV_STANDARD_KEYS.metaPixelId, inputKeys: [PROJECT_ENV_STANDARD_KEYS.metaPixelId] },
150
148
  ];
151
149
  const readNonEmptyStaticExportEnv = (env, keys) => {
152
150
  var _a;
@@ -170,8 +168,8 @@ export const resolveNextStaticExportRuntimeEnv = (env) => {
170
168
  }));
171
169
  }
172
170
  return {
173
- NEXT_PUBLIC_FUNNEL_PUBLISHABLE_KEY: DEFAULT_PREVIEW_PAYMENT_PUBLISHABLE_KEY,
174
- NEXT_PUBLIC_FUNNEL_ID: ((_b = env.NEXT_PUBLIC_RAG_FUNNEL_ID) === null || _b === void 0 ? void 0 : _b.trim()) || '',
171
+ [PROJECT_ENV_STANDARD_KEYS.funnelSdkPublishableKey]: DEFAULT_PREVIEW_PAYMENT_PUBLISHABLE_KEY,
172
+ [PROJECT_ENV_STANDARD_KEYS.funnelId]: ((_b = env.NEXT_PUBLIC_RAG_FUNNEL_ID) === null || _b === void 0 ? void 0 : _b.trim()) || '',
175
173
  };
176
174
  };
177
175
  export const isSeedFunnelSdkPublishableKey = (value) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnelsgrove/runtime",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./dist/index.js",
@@ -16,6 +16,11 @@
16
16
  "types": "./dist/config/env.config.d.ts",
17
17
  "import": "./dist/config/env.config.js",
18
18
  "default": "./dist/config/env.config.js"
19
+ },
20
+ "./services/project-env": {
21
+ "types": "./dist/services/project-env.d.ts",
22
+ "import": "./dist/services/project-env.js",
23
+ "default": "./dist/services/project-env.js"
19
24
  }
20
25
  },
21
26
  "files": [