cloudcommerce 0.29.0 → 0.31.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/.github/workflows/test-apps.yml +1 -3
- package/CHANGELOG.md +103 -0
- package/action.yml +20 -8
- package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
- package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
- package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/barra-doce/package.json +2 -2
- package/ecomplus-stores/monocard/functions/many/package.json +3 -3
- package/ecomplus-stores/monocard/functions/ssr/package.json +6 -6
- package/ecomplus-stores/monocard/functions/with-apps/package.json +3 -3
- package/ecomplus-stores/monocard/package.json +2 -2
- package/package.json +10 -10
- package/packages/api/lib/api.d.ts +2 -2
- package/packages/api/package.json +1 -1
- package/packages/apps/affilate-program/lib/events-to-affilate-program.js +4 -5
- package/packages/apps/affilate-program/lib/events-to-affilate-program.js.map +1 -1
- package/packages/apps/affilate-program/package.json +1 -1
- package/packages/apps/affilate-program/src/events-to-affilate-program.ts +6 -7
- package/packages/apps/correios/lib/correios.d.ts +1 -0
- package/packages/apps/correios/lib/correios.js +2 -1
- package/packages/apps/correios/lib/correios.js.map +1 -1
- package/packages/apps/correios/lib-mjs/calculate-shipping.mjs +430 -0
- package/packages/apps/correios/lib-mjs/correios-db.mjs +189 -0
- package/packages/apps/correios/lib-mjs/correios-v2.mjs +84 -0
- package/packages/apps/correios/lib-mjs/utils/constants-parsers.mjs +135 -0
- package/packages/apps/correios/lib-mjs/utils/correios-axios.mjs +93 -0
- package/packages/apps/correios/package.json +12 -4
- package/packages/apps/correios/scripts/tests.sh +11 -0
- package/packages/apps/correios/src/correios.ts +2 -1
- package/packages/apps/correios/tests/calculate-shipping.test.mjs +1 -1
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/datafrete/package.json +2 -2
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/lib/firebase.js +1 -1
- package/packages/apps/emails/lib/firebase.js.map +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/emails/src/firebase.ts +1 -1
- package/packages/apps/fb-conversions/lib/fb-conversions-events.js +1 -2
- package/packages/apps/fb-conversions/lib/fb-conversions-events.js.map +1 -1
- package/packages/apps/fb-conversions/package.json +2 -2
- package/packages/apps/fb-conversions/src/fb-conversions-events.ts +4 -2
- package/packages/apps/flash-courier/lib/flash-courier-events.js +1 -1
- package/packages/apps/flash-courier/lib/flash-courier-events.js.map +1 -1
- package/packages/apps/flash-courier/package.json +2 -2
- package/packages/apps/flash-courier/src/flash-courier-events.ts +1 -1
- package/packages/apps/frenet/lib/frenet-events.js +1 -1
- package/packages/apps/frenet/lib/frenet-events.js.map +1 -1
- package/packages/apps/frenet/package.json +2 -2
- package/packages/apps/frenet/src/frenet-events.ts +1 -1
- package/packages/apps/galaxpay/package.json +2 -2
- package/packages/apps/google-analytics/package.json +2 -2
- package/packages/apps/jadlog/package.json +2 -2
- package/packages/apps/loyalty-points/lib/functions-lib/cron-add-points.js.map +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-create-transaction.js.map +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js +1 -1
- package/packages/apps/loyalty-points/lib/loyalty-points-events.js.map +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/loyalty-points/src/functions-lib/cron-add-points.ts +1 -1
- package/packages/apps/loyalty-points/src/loyalty-create-transaction.ts +1 -1
- package/packages/apps/loyalty-points/src/loyalty-points-events.ts +1 -1
- package/packages/apps/mandae/CHANGELOG.md +1 -0
- package/packages/apps/mandae/README.md +1 -0
- package/packages/apps/mandae/lib/index.d.ts +1 -0
- package/packages/apps/mandae/lib/index.js +2 -0
- package/packages/apps/mandae/lib/index.js.map +1 -0
- package/packages/apps/mandae/lib/mandae.d.ts +2 -0
- package/packages/apps/mandae/lib/mandae.js +6 -0
- package/packages/apps/mandae/lib/mandae.js.map +1 -0
- package/packages/apps/mandae/lib-mjs/calculate-mandae.mjs +297 -0
- package/packages/apps/mandae/package.json +31 -0
- package/packages/apps/mandae/scripts/tests.sh +7 -0
- package/packages/apps/mandae/src/index.ts +1 -0
- package/packages/apps/mandae/src/mandae.ts +7 -0
- package/packages/apps/mandae/tests/calculate-shipping.test.mjs +37 -0
- package/packages/apps/mandae/tsconfig.json +6 -0
- package/packages/apps/melhor-envio/lib/functions-lib/database.d.ts +5 -4
- package/packages/apps/melhor-envio/lib/functions-lib/database.js.map +1 -1
- package/packages/apps/melhor-envio/lib/functions-lib/events-to-melhor-envio.d.ts +2 -6
- package/packages/apps/melhor-envio/lib/functions-lib/events-to-melhor-envio.js.map +1 -1
- package/packages/apps/melhor-envio/lib/functions-lib/tracking-codes.js +1 -1
- package/packages/apps/melhor-envio/lib/melhor-envio-events.js +1 -1
- package/packages/apps/melhor-envio/lib/melhor-envio-events.js.map +1 -1
- package/packages/apps/melhor-envio/package.json +2 -2
- package/packages/apps/melhor-envio/src/functions-lib/database.ts +8 -7
- package/packages/apps/melhor-envio/src/functions-lib/events-to-melhor-envio.ts +4 -3
- package/packages/apps/melhor-envio/src/functions-lib/tracking-codes.ts +3 -3
- package/packages/apps/melhor-envio/src/melhor-envio-events.ts +1 -2
- package/packages/apps/mercadopago/package.json +2 -2
- package/packages/apps/pagarme/package.json +2 -2
- package/packages/apps/paghiper/package.json +2 -2
- package/packages/apps/pix/package.json +2 -2
- package/packages/apps/tiny-erp/lib/event-to-tiny.js +3 -3
- package/packages/apps/tiny-erp/lib/event-to-tiny.js.map +1 -1
- package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js +1 -1
- package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js.map +1 -1
- package/packages/apps/tiny-erp/lib/tiny-webhook.js +3 -3
- package/packages/apps/tiny-erp/lib/tiny-webhook.js.map +1 -1
- package/packages/apps/tiny-erp/package.json +2 -2
- package/packages/apps/tiny-erp/src/event-to-tiny.ts +3 -3
- package/packages/apps/tiny-erp/src/integration/post-tiny-erp.ts +1 -1
- package/packages/apps/tiny-erp/src/tiny-webhook.ts +4 -4
- package/packages/apps/webhooks/lib/events-to-webhooks-app.js.map +1 -1
- package/packages/apps/webhooks/package.json +2 -2
- package/packages/apps/webhooks/src/events-to-webhooks-app.ts +2 -2
- package/packages/cli/config/firebase.json +17 -1
- package/packages/cli/lib/create-auth.js +0 -2
- package/packages/cli/lib/login.js +3 -6
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/create-auth.ts +0 -2
- package/packages/cli/src/login.ts +3 -6
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +5 -5
- package/packages/eslint/package.json +6 -6
- package/packages/events/package.json +1 -1
- package/packages/feeds/package.json +1 -1
- package/packages/firebase/lib/config.d.ts +7 -0
- package/packages/firebase/lib/config.js +12 -2
- package/packages/firebase/lib/config.js.map +1 -1
- package/packages/firebase/lib/handlers/check-store-events.js +17 -11
- package/packages/firebase/lib/handlers/check-store-events.js.map +1 -1
- package/packages/firebase/lib/index.js +2 -2
- package/packages/firebase/lib/index.js.map +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/firebase/src/config.ts +12 -1
- package/packages/firebase/src/handlers/check-store-events.ts +24 -12
- package/packages/firebase/src/index.ts +2 -2
- package/packages/i18n/lib/en_us/i19emailWasSentMsg.txt +1 -0
- package/packages/i18n/lib/en_us/i19sendLoginLinkByEmail.txt +1 -0
- package/packages/i18n/lib/en_us.d.ts +2 -0
- package/packages/i18n/lib/en_us.js +2 -0
- package/packages/i18n/lib/en_us.js.map +1 -1
- package/packages/i18n/lib/pt_br/i19emailWasSentMsg.txt +1 -0
- package/packages/i18n/lib/pt_br/i19sendLoginLinkByEmail.txt +1 -0
- package/packages/i18n/lib/pt_br.d.ts +2 -0
- package/packages/i18n/lib/pt_br.js +2 -0
- package/packages/i18n/lib/pt_br.js.map +1 -1
- package/packages/i18n/package.json +1 -1
- package/packages/i18n/src/en_us.ts +2 -0
- package/packages/i18n/src/pt_br.ts +2 -0
- package/packages/modules/lib/firebase/call-app-module.js +5 -0
- package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
- package/packages/modules/package.json +3 -2
- package/packages/modules/src/firebase/call-app-module.ts +5 -0
- package/packages/passport/lib/firebase.js +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/passport/src/firebase.ts +1 -1
- package/packages/ssr/package.json +3 -3
- package/packages/storefront/config/storefront.tailwind.cjs +5 -4
- package/packages/storefront/package.json +11 -11
- package/packages/storefront/server.d.ts +0 -2
- package/packages/storefront/src/helpers/browser-env.ts +1 -8
- package/packages/storefront/src/lib/components/AccountLink.vue +1 -1
- package/packages/storefront/src/lib/components/Carousel.vue +6 -2
- package/packages/storefront/src/lib/components/CheckoutLink.vue +2 -2
- package/packages/storefront/src/lib/components/Drawer.vue +3 -3
- package/packages/storefront/src/lib/components/ViewTransitions.astro +14 -1
- package/packages/storefront/src/lib/composables/use-login-form.ts +80 -0
- package/packages/storefront/src/lib/composables/use-sticky-header.ts +8 -5
- package/packages/storefront/src/lib/layouts/BaseHead.astro +2 -1
- package/packages/storefront/src/lib/scripts/vbeta-app.ts +44 -0
- package/packages/storefront/src/lib/ssr-context.ts +23 -5
- package/packages/storefront/src/lib/state/customer-session.ts +13 -4
- package/packages/test-base/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/apps/correios/lib-mjs/calculate-correios.mjs +0 -470
- package/packages/apps/correios/lib-mjs/correios-ws.mjs +0 -155
- package/packages/storefront/src/lib/components/LoginForm.vue +0 -115
|
@@ -288,7 +288,10 @@ const { fallback = 'animate' } = Astro.props as Props;
|
|
|
288
288
|
document.head.append(link);
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
if (
|
|
291
|
+
if (
|
|
292
|
+
(supportsViewTransitions || getFallback() !== 'none') &&
|
|
293
|
+
!location.pathname.startsWith('/app/')
|
|
294
|
+
) {
|
|
292
295
|
markScriptsExec();
|
|
293
296
|
|
|
294
297
|
document.addEventListener('click', (ev) => {
|
|
@@ -302,7 +305,10 @@ const { fallback = 'animate' } = Astro.props as Props;
|
|
|
302
305
|
if (
|
|
303
306
|
!link ||
|
|
304
307
|
!(link instanceof HTMLAnchorElement) ||
|
|
308
|
+
link.dataset.astroReload !== undefined ||
|
|
309
|
+
link.hasAttribute('download') ||
|
|
305
310
|
!link.href ||
|
|
311
|
+
link.pathname.startsWith('/app/') || // "real" SPA routes
|
|
306
312
|
(link.target && link.target !== '_self') ||
|
|
307
313
|
link.origin !== location.origin ||
|
|
308
314
|
ev.button !== 0 || // left clicks only
|
|
@@ -382,6 +388,13 @@ const { fallback = 'animate' } = Astro.props as Props;
|
|
|
382
388
|
if (
|
|
383
389
|
el.origin === location.origin &&
|
|
384
390
|
el.pathname !== location.pathname &&
|
|
391
|
+
!el.pathname.startsWith('/app/') && // "real" SPA routes
|
|
392
|
+
el.dataset.astroReload === undefined &&
|
|
393
|
+
!el.hasAttribute('download') &&
|
|
394
|
+
/* <a role=button> commonly used as no-JS interaction fallback,
|
|
395
|
+
thus, on-click redirect may be prevented after component hydration.
|
|
396
|
+
Shouldn't prefetch. */
|
|
397
|
+
el.role !== 'button' &&
|
|
385
398
|
transitionEnabledOnThisPage()
|
|
386
399
|
) {
|
|
387
400
|
maybePrefetch(el.pathname);
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ref, watch } from 'vue';
|
|
2
|
+
import { useUrlSearchParams, useThrottleFn } from '@vueuse/core';
|
|
3
|
+
import {
|
|
4
|
+
getAuth,
|
|
5
|
+
sendSignInLinkToEmail,
|
|
6
|
+
signInWithEmailAndPassword,
|
|
7
|
+
} from 'firebase/auth';
|
|
8
|
+
import {
|
|
9
|
+
EMAIL_STORAGE_KEY,
|
|
10
|
+
customerEmail as email,
|
|
11
|
+
initializeFirebaseAuth,
|
|
12
|
+
} from '@@sf/state/customer-session';
|
|
13
|
+
|
|
14
|
+
export interface Props {
|
|
15
|
+
canUseUrlParams?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const useLoginForm = (props?: Props) => {
|
|
19
|
+
initializeFirebaseAuth();
|
|
20
|
+
const canUseUrlParams = props?.canUseUrlParams !== false;
|
|
21
|
+
const params = canUseUrlParams ? useUrlSearchParams('history') : {};
|
|
22
|
+
const isInitSignUp = params.sign_up !== undefined && params.sign_up !== '0';
|
|
23
|
+
const isInitPasswordSignIn = params.password !== undefined && params.password !== '0';
|
|
24
|
+
const isSignUp = ref(isInitSignUp);
|
|
25
|
+
const isLinkSignIn = ref(!isInitSignUp && !isInitPasswordSignIn);
|
|
26
|
+
watch(isSignUp, (_isSignUp) => {
|
|
27
|
+
if (_isSignUp) {
|
|
28
|
+
isLinkSignIn.value = true;
|
|
29
|
+
params.sign_up = '1';
|
|
30
|
+
} else {
|
|
31
|
+
params.sign_up = '0';
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
watch(isLinkSignIn, (_isLinkSignIn) => {
|
|
35
|
+
params.password = _isLinkSignIn ? '0' : '1';
|
|
36
|
+
});
|
|
37
|
+
const password = ref('');
|
|
38
|
+
const isSubmitting = ref(false);
|
|
39
|
+
const submitLogin = useThrottleFn(async (linkActionUrl?: string | null) => {
|
|
40
|
+
isSubmitting.value = true;
|
|
41
|
+
const timestamp = Date.now();
|
|
42
|
+
const firebaseAuth = getAuth();
|
|
43
|
+
if (!email.value) return;
|
|
44
|
+
window.localStorage.setItem(EMAIL_STORAGE_KEY, email.value);
|
|
45
|
+
try {
|
|
46
|
+
if (isLinkSignIn.value) {
|
|
47
|
+
const url = new URL(linkActionUrl || window.location.toString());
|
|
48
|
+
url.searchParams.append('email', email.value);
|
|
49
|
+
await sendSignInLinkToEmail(firebaseAuth, email.value, {
|
|
50
|
+
url: url.toString(),
|
|
51
|
+
handleCodeInApp: true,
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
await signInWithEmailAndPassword(
|
|
55
|
+
firebaseAuth,
|
|
56
|
+
email.value,
|
|
57
|
+
password.value,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
} catch (error: any) {
|
|
61
|
+
console.warn(error.code);
|
|
62
|
+
console.error(error);
|
|
63
|
+
}
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
isSubmitting.value = false;
|
|
66
|
+
}, Math.min(2000 - (Date.now() - timestamp), 1));
|
|
67
|
+
}, 2000);
|
|
68
|
+
return {
|
|
69
|
+
isLinkSignIn,
|
|
70
|
+
isSignUp,
|
|
71
|
+
email,
|
|
72
|
+
password,
|
|
73
|
+
isSubmitting,
|
|
74
|
+
submitLogin,
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default useLoginForm;
|
|
79
|
+
|
|
80
|
+
export { useLoginForm };
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
useScroll,
|
|
13
13
|
watchDebounced,
|
|
14
14
|
} from '@vueuse/core';
|
|
15
|
-
import { isMobile } from '@@sf/sf-lib';
|
|
15
|
+
import { isMobile, isScreenXs } from '@@sf/sf-lib';
|
|
16
16
|
|
|
17
17
|
export interface Props {
|
|
18
18
|
header: Ref<HTMLElement | null>;
|
|
@@ -34,13 +34,16 @@ const useStickyHeader = (props: Props) => {
|
|
|
34
34
|
canCreateHeightDiv: true,
|
|
35
35
|
...props,
|
|
36
36
|
};
|
|
37
|
-
const { ready, start } = useTimeout(100, {
|
|
37
|
+
const { ready, start } = useTimeout(100, {
|
|
38
|
+
controls: true,
|
|
39
|
+
immediate: false,
|
|
40
|
+
});
|
|
38
41
|
const staticHeight = ref(0);
|
|
39
42
|
const staticY = ref(0);
|
|
40
43
|
let heightDiv: HTMLElement | undefined;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
const canWatchScroll = !import.meta.env.SSR
|
|
45
|
+
&& (isShownOnMobile || (!isMobile && !isScreenXs));
|
|
46
|
+
const { y: _y } = canWatchScroll ? useScroll(document) : { y: ref(0) };
|
|
44
47
|
const y = ref(0);
|
|
45
48
|
watchDebounced(_y, (nextY) => {
|
|
46
49
|
y.value = nextY;
|
|
@@ -9,7 +9,8 @@ export interface Props {
|
|
|
9
9
|
|
|
10
10
|
// @ts-ignore
|
|
11
11
|
const isPWA = pwaInfo !== false; // config/astro/mock-pwa-info.mjs
|
|
12
|
-
const hasViewTransitions = Astro.props.hasViewTransitions !== false
|
|
12
|
+
const hasViewTransitions = Astro.props.hasViewTransitions !== false
|
|
13
|
+
&& !Astro.url.pathname.startsWith('/app/');
|
|
13
14
|
const deployRand = import.meta.env.DEPLOY_RAND || '_';
|
|
14
15
|
const getIconUrl = (size: number) => {
|
|
15
16
|
return `/_image?f=png&w=${size}&h=${size}`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { watch } from 'vue';
|
|
2
|
+
import {
|
|
3
|
+
GET_PASSPORT_API_URI,
|
|
4
|
+
session,
|
|
5
|
+
isAuthenticated,
|
|
6
|
+
customer,
|
|
7
|
+
} from '@@sf/state/customer-session';
|
|
8
|
+
|
|
9
|
+
// https://github.com/ecomplus/storefront/tree/master/%40ecomplus/storefront-app compat
|
|
10
|
+
if (!import.meta.env.SSR) {
|
|
11
|
+
const onLoad = () => {
|
|
12
|
+
const { ecomPassport } = window as Record<string, any>;
|
|
13
|
+
watch(isAuthenticated, async () => {
|
|
14
|
+
if (isAuthenticated.value) {
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
window.ECOMCLIENT_API_PASSPORT = GET_PASSPORT_API_URI();
|
|
17
|
+
ecomPassport.setSession({
|
|
18
|
+
auth: {
|
|
19
|
+
...session.auth,
|
|
20
|
+
id: session.auth?.customer_id,
|
|
21
|
+
level: 3,
|
|
22
|
+
},
|
|
23
|
+
customer: customer.value,
|
|
24
|
+
});
|
|
25
|
+
} else if (ecomPassport.checkLogin()) {
|
|
26
|
+
ecomPassport.logout();
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
immediate: true,
|
|
30
|
+
});
|
|
31
|
+
watch(customer, (_customer) => {
|
|
32
|
+
if (_customer.display_name || _customer.main_email) {
|
|
33
|
+
ecomPassport.setCustomer(_customer);
|
|
34
|
+
}
|
|
35
|
+
}, {
|
|
36
|
+
immediate: true,
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const appScript = document.createElement('script');
|
|
41
|
+
appScript.src = 'https://cdn.jsdelivr.net/npm/@ecomplus/storefront-app@2.0.0-beta.186/dist/lib/js/app.js';
|
|
42
|
+
appScript.onload = onLoad;
|
|
43
|
+
document.body.appendChild(appScript);
|
|
44
|
+
}
|
|
@@ -29,6 +29,11 @@ if (!globalThis.$apiMergeConfig) {
|
|
|
29
29
|
canCache: true,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
declare global {
|
|
33
|
+
/* eslint-disable no-var, vars-on-top */
|
|
34
|
+
var $apiPrefetchEndpoints: Array<ApiEndpoint | ':slug'>;
|
|
35
|
+
/* eslint-enable no-var */
|
|
36
|
+
}
|
|
32
37
|
if (!globalThis.$apiPrefetchEndpoints) {
|
|
33
38
|
globalThis.$apiPrefetchEndpoints = [];
|
|
34
39
|
}
|
|
@@ -42,12 +47,25 @@ if (!globalThis.$storefront) {
|
|
|
42
47
|
};
|
|
43
48
|
}
|
|
44
49
|
|
|
50
|
+
declare global {
|
|
51
|
+
/* eslint-disable no-var, vars-on-top */
|
|
52
|
+
var $storefrontCacheController: undefined
|
|
53
|
+
| ((Astro: AstroGlobal, maxAge: number, sMaxAge?: number) => string | null);
|
|
54
|
+
/* eslint-enable no-var */
|
|
55
|
+
}
|
|
45
56
|
const setResponseCache = (Astro: AstroGlobal, maxAge: number, sMaxAge?: number) => {
|
|
46
57
|
const headerName = import.meta.env.PROD ? 'Cache-Control' : 'X-Cache-Control';
|
|
47
|
-
let cacheControl
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
let cacheControl: string | null = null;
|
|
59
|
+
if (globalThis.$storefrontCacheController) {
|
|
60
|
+
cacheControl = globalThis.$storefrontCacheController(Astro, maxAge, sMaxAge);
|
|
61
|
+
} else {
|
|
62
|
+
cacheControl = `public, max-age=${maxAge}, must-revalidate`;
|
|
63
|
+
if (sMaxAge) cacheControl += `, s-maxage=${sMaxAge}`;
|
|
64
|
+
if (sMaxAge || maxAge >= 60) cacheControl += `, stale-while-revalidate=604800`;
|
|
65
|
+
}
|
|
66
|
+
if (cacheControl) {
|
|
67
|
+
Astro.response.headers.set(headerName, cacheControl);
|
|
68
|
+
}
|
|
51
69
|
};
|
|
52
70
|
|
|
53
71
|
export type ApiPrefetchEndpoints = Array<ApiEndpoint | ':slug'>;
|
|
@@ -99,7 +117,7 @@ const loadRouteContext = async (Astro: Readonly<AstroGlobal>, {
|
|
|
99
117
|
} else if (slug) {
|
|
100
118
|
if (contentCollection) {
|
|
101
119
|
cmsContent = await config.getContent(`${contentCollection}/${slug}`);
|
|
102
|
-
} else if (slug.startsWith('
|
|
120
|
+
} else if (slug.startsWith('_api/')) {
|
|
103
121
|
const err: any = new Error('/api/* routes not implemented on SSR directly');
|
|
104
122
|
Astro.response.status = 501;
|
|
105
123
|
err.responseHTML = `<head></head><body>${err.message}</body>`;
|
|
@@ -6,6 +6,13 @@ import { computed } from 'vue';
|
|
|
6
6
|
import { requestIdleCallback } from '@@sf/sf-lib';
|
|
7
7
|
import useStorage from '@@sf/state/use-storage';
|
|
8
8
|
|
|
9
|
+
export const EMAIL_STORAGE_KEY = 'emailForSignIn';
|
|
10
|
+
|
|
11
|
+
export const GET_PASSPORT_API_URI = () => {
|
|
12
|
+
const { domain } = globalThis.$storefront.settings;
|
|
13
|
+
return `https://${domain}/_api/passport/`;
|
|
14
|
+
};
|
|
15
|
+
|
|
9
16
|
const storageKey = 'ecomSession';
|
|
10
17
|
const emptySession = {
|
|
11
18
|
customer: {
|
|
@@ -61,9 +68,8 @@ const authenticate = async () => {
|
|
|
61
68
|
throwNoAuth('Can\'t get Firebase user ID token');
|
|
62
69
|
return;
|
|
63
70
|
}
|
|
64
|
-
const { domain } = window.$storefront.settings;
|
|
65
71
|
try {
|
|
66
|
-
const resAuth = await fetch(
|
|
72
|
+
const resAuth = await fetch(`${GET_PASSPORT_API_URI()}token`, {
|
|
67
73
|
method: 'POST',
|
|
68
74
|
headers: {
|
|
69
75
|
'Content-Type': 'application/json',
|
|
@@ -95,8 +101,11 @@ const fetchCustomer = async () => {
|
|
|
95
101
|
};
|
|
96
102
|
|
|
97
103
|
let isAuthInitialized = false;
|
|
98
|
-
const initializeFirebaseAuth = (canWaitIdle
|
|
104
|
+
const initializeFirebaseAuth = (canWaitIdle?: boolean) => {
|
|
99
105
|
if (import.meta.env.SSR || isAuthInitialized) return;
|
|
106
|
+
if (canWaitIdle === undefined) {
|
|
107
|
+
canWaitIdle = !window.location.pathname.startsWith('/app/');
|
|
108
|
+
}
|
|
100
109
|
isAuthInitialized = true;
|
|
101
110
|
const runImport = () => import('../scripts/firebase-app')
|
|
102
111
|
.then(({
|
|
@@ -132,7 +141,7 @@ const initializeFirebaseAuth = (canWaitIdle = !window.location.pathname.startsWi
|
|
|
132
141
|
const email = urlParams.get('email');
|
|
133
142
|
if (email) {
|
|
134
143
|
signInWithEmailLink(firebaseAuth, email, window.location.href)
|
|
135
|
-
.then(() => window.localStorage.removeItem(
|
|
144
|
+
.then(() => window.localStorage.removeItem(EMAIL_STORAGE_KEY))
|
|
136
145
|
.catch(console.error);
|
|
137
146
|
}
|
|
138
147
|
}
|