cloudcommerce 0.29.0 → 0.30.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.
Files changed (147) hide show
  1. package/.github/workflows/test-apps.yml +0 -2
  2. package/CHANGELOG.md +39 -0
  3. package/action.yml +7 -7
  4. package/ecomplus-stores/barra-doce/functions/many/package.json +3 -3
  5. package/ecomplus-stores/barra-doce/functions/ssr/package.json +6 -6
  6. package/ecomplus-stores/barra-doce/functions/with-apps/package.json +3 -3
  7. package/ecomplus-stores/barra-doce/package.json +2 -2
  8. package/ecomplus-stores/monocard/functions/many/package.json +3 -3
  9. package/ecomplus-stores/monocard/functions/ssr/package.json +6 -6
  10. package/ecomplus-stores/monocard/functions/with-apps/package.json +3 -3
  11. package/ecomplus-stores/monocard/package.json +2 -2
  12. package/package.json +9 -9
  13. package/packages/api/package.json +1 -1
  14. package/packages/apps/affilate-program/package.json +1 -1
  15. package/packages/apps/correios/package.json +2 -2
  16. package/packages/apps/custom-payment/package.json +1 -1
  17. package/packages/apps/custom-shipping/package.json +1 -1
  18. package/packages/apps/datafrete/package.json +2 -2
  19. package/packages/apps/discounts/package.json +1 -1
  20. package/packages/apps/emails/lib/firebase.js +1 -1
  21. package/packages/apps/emails/lib/firebase.js.map +1 -1
  22. package/packages/apps/emails/package.json +1 -1
  23. package/packages/apps/emails/src/firebase.ts +1 -1
  24. package/packages/apps/fb-conversions/lib/fb-conversions-events.js +1 -2
  25. package/packages/apps/fb-conversions/lib/fb-conversions-events.js.map +1 -1
  26. package/packages/apps/fb-conversions/package.json +2 -2
  27. package/packages/apps/fb-conversions/src/fb-conversions-events.ts +4 -2
  28. package/packages/apps/flash-courier/lib/flash-courier-events.js +1 -1
  29. package/packages/apps/flash-courier/lib/flash-courier-events.js.map +1 -1
  30. package/packages/apps/flash-courier/package.json +2 -2
  31. package/packages/apps/flash-courier/src/flash-courier-events.ts +1 -1
  32. package/packages/apps/frenet/lib/frenet-events.js +1 -1
  33. package/packages/apps/frenet/lib/frenet-events.js.map +1 -1
  34. package/packages/apps/frenet/package.json +2 -2
  35. package/packages/apps/frenet/src/frenet-events.ts +1 -1
  36. package/packages/apps/galaxpay/package.json +2 -2
  37. package/packages/apps/google-analytics/package.json +2 -2
  38. package/packages/apps/jadlog/package.json +2 -2
  39. package/packages/apps/loyalty-points/lib/functions-lib/cron-add-points.js.map +1 -1
  40. package/packages/apps/loyalty-points/lib/loyalty-create-transaction.js.map +1 -1
  41. package/packages/apps/loyalty-points/lib/loyalty-points-events.js +1 -1
  42. package/packages/apps/loyalty-points/lib/loyalty-points-events.js.map +1 -1
  43. package/packages/apps/loyalty-points/package.json +1 -1
  44. package/packages/apps/loyalty-points/src/functions-lib/cron-add-points.ts +1 -1
  45. package/packages/apps/loyalty-points/src/loyalty-create-transaction.ts +1 -1
  46. package/packages/apps/loyalty-points/src/loyalty-points-events.ts +1 -1
  47. package/packages/apps/mandae/CHANGELOG.md +1 -0
  48. package/packages/apps/mandae/README.md +1 -0
  49. package/packages/apps/mandae/lib/index.d.ts +1 -0
  50. package/packages/apps/mandae/lib/index.js +2 -0
  51. package/packages/apps/mandae/lib/index.js.map +1 -0
  52. package/packages/apps/mandae/lib/mandae.d.ts +2 -0
  53. package/packages/apps/mandae/lib/mandae.js +6 -0
  54. package/packages/apps/mandae/lib/mandae.js.map +1 -0
  55. package/packages/apps/mandae/lib-mjs/calculate-mandae.mjs +297 -0
  56. package/packages/apps/mandae/package.json +31 -0
  57. package/packages/apps/mandae/scripts/tests.sh +7 -0
  58. package/packages/apps/mandae/src/index.ts +1 -0
  59. package/packages/apps/mandae/src/mandae.ts +7 -0
  60. package/packages/apps/mandae/tests/calculate-shipping.test.mjs +37 -0
  61. package/packages/apps/mandae/tsconfig.json +6 -0
  62. package/packages/apps/melhor-envio/lib/functions-lib/database.d.ts +5 -4
  63. package/packages/apps/melhor-envio/lib/functions-lib/database.js.map +1 -1
  64. package/packages/apps/melhor-envio/lib/functions-lib/events-to-melhor-envio.d.ts +2 -6
  65. package/packages/apps/melhor-envio/lib/functions-lib/events-to-melhor-envio.js.map +1 -1
  66. package/packages/apps/melhor-envio/lib/functions-lib/tracking-codes.js +1 -1
  67. package/packages/apps/melhor-envio/lib/melhor-envio-events.js +1 -1
  68. package/packages/apps/melhor-envio/lib/melhor-envio-events.js.map +1 -1
  69. package/packages/apps/melhor-envio/package.json +2 -2
  70. package/packages/apps/melhor-envio/src/functions-lib/database.ts +8 -7
  71. package/packages/apps/melhor-envio/src/functions-lib/events-to-melhor-envio.ts +4 -3
  72. package/packages/apps/melhor-envio/src/functions-lib/tracking-codes.ts +3 -3
  73. package/packages/apps/melhor-envio/src/melhor-envio-events.ts +1 -2
  74. package/packages/apps/mercadopago/package.json +2 -2
  75. package/packages/apps/pagarme/package.json +2 -2
  76. package/packages/apps/paghiper/package.json +2 -2
  77. package/packages/apps/pix/package.json +2 -2
  78. package/packages/apps/tiny-erp/lib/event-to-tiny.js +3 -3
  79. package/packages/apps/tiny-erp/lib/event-to-tiny.js.map +1 -1
  80. package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js +1 -1
  81. package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js.map +1 -1
  82. package/packages/apps/tiny-erp/lib/tiny-webhook.js +3 -3
  83. package/packages/apps/tiny-erp/lib/tiny-webhook.js.map +1 -1
  84. package/packages/apps/tiny-erp/package.json +2 -2
  85. package/packages/apps/tiny-erp/src/event-to-tiny.ts +3 -3
  86. package/packages/apps/tiny-erp/src/integration/post-tiny-erp.ts +1 -1
  87. package/packages/apps/tiny-erp/src/tiny-webhook.ts +4 -4
  88. package/packages/apps/webhooks/lib/events-to-webhooks-app.js.map +1 -1
  89. package/packages/apps/webhooks/package.json +2 -2
  90. package/packages/apps/webhooks/src/events-to-webhooks-app.ts +2 -2
  91. package/packages/cli/lib/create-auth.js +0 -2
  92. package/packages/cli/lib/login.js +3 -6
  93. package/packages/cli/package.json +1 -1
  94. package/packages/cli/src/create-auth.ts +0 -2
  95. package/packages/cli/src/login.ts +3 -6
  96. package/packages/config/package.json +1 -1
  97. package/packages/emails/package.json +5 -5
  98. package/packages/eslint/package.json +6 -6
  99. package/packages/events/package.json +1 -1
  100. package/packages/feeds/package.json +1 -1
  101. package/packages/firebase/lib/config.d.ts +7 -0
  102. package/packages/firebase/lib/config.js +11 -1
  103. package/packages/firebase/lib/config.js.map +1 -1
  104. package/packages/firebase/lib/handlers/check-store-events.js +17 -11
  105. package/packages/firebase/lib/handlers/check-store-events.js.map +1 -1
  106. package/packages/firebase/lib/index.js +2 -2
  107. package/packages/firebase/lib/index.js.map +1 -1
  108. package/packages/firebase/package.json +1 -1
  109. package/packages/firebase/src/config.ts +11 -0
  110. package/packages/firebase/src/handlers/check-store-events.ts +24 -12
  111. package/packages/firebase/src/index.ts +2 -2
  112. package/packages/i18n/lib/en_us/i19sendLoginLinkByEmail.txt +1 -0
  113. package/packages/i18n/lib/en_us.d.ts +1 -0
  114. package/packages/i18n/lib/en_us.js +1 -0
  115. package/packages/i18n/lib/en_us.js.map +1 -1
  116. package/packages/i18n/lib/pt_br/i19sendLoginLinkByEmail.txt +1 -0
  117. package/packages/i18n/lib/pt_br.d.ts +1 -0
  118. package/packages/i18n/lib/pt_br.js +1 -0
  119. package/packages/i18n/lib/pt_br.js.map +1 -1
  120. package/packages/i18n/package.json +1 -1
  121. package/packages/i18n/src/en_us.ts +1 -0
  122. package/packages/i18n/src/pt_br.ts +1 -0
  123. package/packages/modules/lib/firebase/call-app-module.js +5 -0
  124. package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
  125. package/packages/modules/package.json +3 -2
  126. package/packages/modules/src/firebase/call-app-module.ts +5 -0
  127. package/packages/passport/lib/firebase.js +1 -1
  128. package/packages/passport/package.json +1 -1
  129. package/packages/passport/src/firebase.ts +1 -1
  130. package/packages/ssr/package.json +3 -3
  131. package/packages/storefront/config/storefront.tailwind.cjs +5 -4
  132. package/packages/storefront/package.json +11 -11
  133. package/packages/storefront/server.d.ts +0 -2
  134. package/packages/storefront/src/helpers/browser-env.ts +1 -8
  135. package/packages/storefront/src/lib/components/AccountLink.vue +1 -1
  136. package/packages/storefront/src/lib/components/Carousel.vue +6 -2
  137. package/packages/storefront/src/lib/components/CheckoutLink.vue +2 -2
  138. package/packages/storefront/src/lib/components/Drawer.vue +3 -3
  139. package/packages/storefront/src/lib/components/ViewTransitions.astro +10 -0
  140. package/packages/storefront/src/lib/composables/use-login-form.ts +71 -0
  141. package/packages/storefront/src/lib/composables/use-sticky-header.ts +8 -5
  142. package/packages/storefront/src/lib/layouts/BaseHead.astro +2 -1
  143. package/packages/storefront/src/lib/ssr-context.ts +23 -5
  144. package/packages/storefront/src/lib/state/customer-session.ts +3 -1
  145. package/packages/test-base/package.json +1 -1
  146. package/packages/types/package.json +1 -1
  147. package/packages/storefront/src/lib/components/LoginForm.vue +0 -115
@@ -0,0 +1,71 @@
1
+ import { ref, watch } from 'vue';
2
+ import { useUrlSearchParams } 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
+ } from '@@sf/state/customer-session';
12
+
13
+ export interface Props {
14
+ canUseUrlParams?: boolean;
15
+ }
16
+
17
+ const useLoginForm = (props?: Props) => {
18
+ const canUseUrlParams = props?.canUseUrlParams !== false;
19
+ const params = canUseUrlParams ? useUrlSearchParams('history') : {};
20
+ const isInitSignUp = params.sign_up !== undefined && params.sign_up !== '0';
21
+ const isInitPasswordSignIn = params.password !== undefined && params.password !== '0';
22
+ const isSignUp = ref(isInitSignUp);
23
+ const isLinkSignIn = ref(!isInitSignUp && !isInitPasswordSignIn);
24
+ watch(isSignUp, (_isSignUp) => {
25
+ if (_isSignUp) {
26
+ isLinkSignIn.value = true;
27
+ params.sign_up = '1';
28
+ } else {
29
+ params.sign_up = '0';
30
+ }
31
+ });
32
+ watch(isLinkSignIn, (_isLinkSignIn) => {
33
+ params.password = _isLinkSignIn ? '0' : '1';
34
+ });
35
+ const password = ref('');
36
+ const submitLogin = async () => {
37
+ const firebaseAuth = getAuth();
38
+ if (!email.value) return;
39
+ window.localStorage.setItem(EMAIL_STORAGE_KEY, email.value);
40
+ try {
41
+ if (isLinkSignIn.value) {
42
+ const url = new URL(window.location.toString());
43
+ url.searchParams.append('email', email.value);
44
+ await sendSignInLinkToEmail(firebaseAuth, email.value, {
45
+ url: url.toString(),
46
+ handleCodeInApp: true,
47
+ });
48
+ } else {
49
+ await signInWithEmailAndPassword(
50
+ firebaseAuth,
51
+ email.value,
52
+ password.value,
53
+ );
54
+ }
55
+ } catch (error: any) {
56
+ console.warn(error.code);
57
+ console.error(error);
58
+ }
59
+ };
60
+ return {
61
+ isLinkSignIn,
62
+ isSignUp,
63
+ email,
64
+ password,
65
+ submitLogin,
66
+ };
67
+ };
68
+
69
+ export default useLoginForm;
70
+
71
+ 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, { controls: true, immediate: false });
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 { y: _y } = !import.meta.env.SSR && (isShownOnMobile || !isMobile)
42
- ? useScroll(document)
43
- : { y: ref(0) };
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}`
@@ -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 = `public, max-age=${maxAge}, must-revalidate`;
48
- if (sMaxAge) cacheControl += `, s-maxage=${sMaxAge}`;
49
- if (sMaxAge || maxAge >= 60) cacheControl += `, stale-while-revalidate=604800`;
50
- Astro.response.headers.set(headerName, cacheControl);
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('api/')) {
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,8 @@ 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
+
9
11
  const storageKey = 'ecomSession';
10
12
  const emptySession = {
11
13
  customer: {
@@ -132,7 +134,7 @@ const initializeFirebaseAuth = (canWaitIdle = !window.location.pathname.startsWi
132
134
  const email = urlParams.get('email');
133
135
  if (email) {
134
136
  signInWithEmailLink(firebaseAuth, email, window.location.href)
135
- .then(() => window.localStorage.removeItem('emailForSignIn'))
137
+ .then(() => window.localStorage.removeItem(EMAIL_STORAGE_KEY))
136
138
  .catch(console.error);
137
139
  }
138
140
  }
@@ -2,7 +2,7 @@
2
2
  "name": "@cloudcommerce/test-base",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "0.29.0",
5
+ "version": "0.30.0",
6
6
  "description": "E-Com Plus Cloud Commerce basic setup for testing",
7
7
  "main": "lib/index.js",
8
8
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/types",
3
3
  "type": "module",
4
- "version": "0.29.0",
4
+ "version": "0.30.0",
5
5
  "description": "E-Com Plus Cloud Commerce reusable type definitions",
6
6
  "main": "index.ts",
7
7
  "repository": {
@@ -1,115 +0,0 @@
1
- <script lang="ts" setup>
2
- import { ref, watch } from 'vue';
3
- import {
4
- i19accessMyAccount,
5
- i19createAnAccount,
6
- i19enterWithPassword,
7
- i19iForgotMyPassword,
8
- i19password,
9
- i19sendLoginCodeByEmail,
10
- i19signUp,
11
- } from '@@i18n';
12
- import {
13
- getAuth,
14
- sendSignInLinkToEmail,
15
- signInWithEmailAndPassword,
16
- } from 'firebase/auth';
17
- import {
18
- customerName,
19
- customerEmail as email,
20
- isLogged,
21
- } from '@@sf/state/customer-session';
22
-
23
- // eslint-disable-next-line no-spaced-func, func-call-spacing
24
- const emit = defineEmits<{
25
- (e: 'set:is-logged', value: boolean): void
26
- (e: 'set:email', value: string): void
27
- (e: 'set:customer-name', value: string): void
28
- }>();
29
- watch(isLogged, (_isLogged) => {
30
- emit('set:is-logged', _isLogged);
31
- emit('set:customer-name', customerName.value);
32
- }, {
33
- immediate: true,
34
- });
35
- watch(email, (_email) => {
36
- emit('set:email', _email as string);
37
- }, {
38
- immediate: true,
39
- });
40
- const isLinkSignIn = ref(true);
41
- const isSignUp = ref(false);
42
- watch(isSignUp, (_isSignUp) => {
43
- if (_isSignUp) {
44
- isLinkSignIn.value = true;
45
- }
46
- });
47
- const password = ref('');
48
- const submitLogin = async () => {
49
- const firebaseAuth = getAuth();
50
- if (!email.value) return;
51
- window.localStorage.setItem('emailForSignIn', email.value);
52
- try {
53
- if (isLinkSignIn.value) {
54
- const url = new URL(window.location.toString());
55
- url.searchParams.append('email', email.value);
56
- await sendSignInLinkToEmail(firebaseAuth, email.value, {
57
- url: url.toString(),
58
- handleCodeInApp: true,
59
- });
60
- } else {
61
- await signInWithEmailAndPassword(firebaseAuth, email.value, password.value);
62
- }
63
- } catch (error: any) {
64
- console.warn(error.code);
65
- console.error(error);
66
- }
67
- };
68
- </script>
69
-
70
- <template>
71
- <form
72
- class="login-form text-base"
73
- @submit.prevent="submitLogin"
74
- >
75
- <label v-if="isLinkSignIn" for="login-form-email">
76
- {{ i19sendLoginCodeByEmail }}
77
- </label>
78
- <input
79
- id="login-form-email"
80
- type="email"
81
- placeholder="email@mail.com"
82
- v-model="email"
83
- required
84
- >
85
- <input
86
- v-if="!isLinkSignIn"
87
- type="password"
88
- class="lowercase"
89
- :placeholder="i19password"
90
- v-model="password"
91
- required
92
- >
93
- <small v-show="!isSignUp" class="text-right lowercase">
94
- <a
95
- href="#"
96
- class="text-muted"
97
- @click.prevent="isLinkSignIn = !isLinkSignIn"
98
- >
99
- {{ isLinkSignIn ? i19enterWithPassword : i19iForgotMyPassword }}
100
- </a>
101
- </small>
102
- <button type="submit">
103
- <slot name="button-content" v-bind="{ isSignUp }">
104
- {{ isSignUp ? i19signUp : i19accessMyAccount }}
105
- </slot>
106
- </button>
107
- <a
108
- href="#"
109
- class="block text-center"
110
- @click.prevent="isSignUp = !isSignUp"
111
- >
112
- {{ isSignUp ? i19accessMyAccount : i19createAnAccount }}
113
- </a>
114
- </form>
115
- </template>