@decocms/apps-vtex 8.1.0-next.0 → 8.1.0-next.1
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/package.json +7 -52
- package/src/index.ts +10 -28
- package/src/utils/constants.ts +2 -56
- package/src/utils/cookieSanitizer.ts +59 -59
- package/src/utils/operationRouter.ts +75 -65
- package/src/utils/types.ts +709 -1557
- package/src/vtexClient.ts +354 -343
- package/src/README.md +0 -6
- package/src/__conformance__/upstream.test.ts +0 -158
- package/src/__tests__/client-segment-cookie.test.ts +0 -255
- package/src/__tests__/client-set-cookie-forward.test.ts +0 -257
- package/src/__tests__/schemas.test.ts +0 -71
- package/src/actions/address.ts +0 -250
- package/src/actions/analytics/sendEvent.ts +0 -86
- package/src/actions/auth.ts +0 -333
- package/src/actions/checkout.ts +0 -659
- package/src/actions/index.ts +0 -11
- package/src/actions/masterData.ts +0 -168
- package/src/actions/misc.ts +0 -188
- package/src/actions/newsletter.ts +0 -105
- package/src/actions/orders.ts +0 -34
- package/src/actions/profile.ts +0 -201
- package/src/actions/session.ts +0 -85
- package/src/actions/trigger.ts +0 -43
- package/src/actions/wishlist.ts +0 -114
- package/src/client.ts +0 -724
- package/src/commerceLoaders.ts +0 -267
- package/src/hooks/__tests__/createCart.render.test.ts +0 -114
- package/src/hooks/__tests__/createCart.test.ts +0 -92
- package/src/hooks/__tests__/createUseCart.test.ts +0 -184
- package/src/hooks/__tests__/createUseUser.test.ts +0 -48
- package/src/hooks/__tests__/createUseWishlist.test.ts +0 -87
- package/src/hooks/cartQuery.ts +0 -204
- package/src/hooks/createCart.ts +0 -427
- package/src/hooks/createUseCart.ts +0 -360
- package/src/hooks/createUseUser.ts +0 -153
- package/src/hooks/createUseWishlist.ts +0 -242
- package/src/hooks/index.ts +0 -25
- package/src/hooks/useAutocomplete.ts +0 -83
- package/src/hooks/useCart.ts +0 -243
- package/src/hooks/useUser.ts +0 -78
- package/src/hooks/useWishlist.ts +0 -119
- package/src/invoke.ts +0 -235
- package/src/loaders/ProductDetailsPage.ts +0 -1
- package/src/loaders/ProductList.ts +0 -1
- package/src/loaders/ProductListingPage.ts +0 -1
- package/src/loaders/__tests__/legacyProductList.test.ts +0 -157
- package/src/loaders/address.ts +0 -115
- package/src/loaders/autocomplete.ts +0 -56
- package/src/loaders/brands.ts +0 -44
- package/src/loaders/cart/attachments.ts +0 -53
- package/src/loaders/cart/full.ts +0 -67
- package/src/loaders/cart/gifts.ts +0 -43
- package/src/loaders/cart/orderFormId.ts +0 -31
- package/src/loaders/cart/shipping.test.ts +0 -125
- package/src/loaders/cart/shipping.ts +0 -136
- package/src/loaders/cart/summary.ts +0 -36
- package/src/loaders/cart.ts +0 -52
- package/src/loaders/catalog.ts +0 -163
- package/src/loaders/collections.ts +0 -55
- package/src/loaders/index.ts +0 -20
- package/src/loaders/intelligentSearch/__tests__/productListingPage.test.ts +0 -51
- package/src/loaders/intelligentSearch/productDetailsPage.ts +0 -111
- package/src/loaders/intelligentSearch/productList.ts +0 -170
- package/src/loaders/intelligentSearch/productListingPage.ts +0 -525
- package/src/loaders/intelligentSearch/suggestions.ts +0 -44
- package/src/loaders/legacy/productDetailsPage.ts +0 -1
- package/src/loaders/legacy/productList.ts +0 -1
- package/src/loaders/legacy/relatedProductsLoader.ts +0 -79
- package/src/loaders/legacy.ts +0 -710
- package/src/loaders/logistics.ts +0 -111
- package/src/loaders/minicart.ts +0 -78
- package/src/loaders/navbar.ts +0 -26
- package/src/loaders/orders.ts +0 -92
- package/src/loaders/pageType.ts +0 -68
- package/src/loaders/paths/PDPDefaultPath.ts +0 -51
- package/src/loaders/payment.ts +0 -97
- package/src/loaders/productListFull.ts +0 -157
- package/src/loaders/profile.ts +0 -138
- package/src/loaders/promotion.ts +0 -30
- package/src/loaders/search.ts +0 -124
- package/src/loaders/session.ts +0 -83
- package/src/loaders/user.ts +0 -87
- package/src/loaders/wishlist.ts +0 -89
- package/src/loaders/wishlistProducts.ts +0 -69
- package/src/loaders/workflow/products.ts +0 -62
- package/src/loaders/workflow.ts +0 -316
- package/src/logo.png +0 -0
- package/src/manifest.gen.ts +0 -89
- package/src/middleware.cacheHeaders.test.ts +0 -44
- package/src/middleware.ts +0 -240
- package/src/mod.ts +0 -173
- package/src/registry.ts +0 -9
- package/src/schemas.gen.ts +0 -3191
- package/src/schemas.ts +0 -30
- package/src/types.ts +0 -248
- package/src/utils/__tests__/cartProjection.test.ts +0 -118
- package/src/utils/__tests__/cookieSanitizer.test.ts +0 -162
- package/src/utils/__tests__/fetch.test.ts +0 -80
- package/src/utils/__tests__/fetchCache.test.ts +0 -155
- package/src/utils/__tests__/instrumentedFetch.test.ts +0 -158
- package/src/utils/__tests__/intelligentSearch.test.ts +0 -88
- package/src/utils/__tests__/minicart.test.ts +0 -184
- package/src/utils/__tests__/operationRouter.test.ts +0 -227
- package/src/utils/__tests__/resilience.test.ts +0 -205
- package/src/utils/__tests__/resourceRange.test.ts +0 -32
- package/src/utils/__tests__/simulationCache.test.ts +0 -40
- package/src/utils/__tests__/sitemap.test.ts +0 -185
- package/src/utils/__tests__/slugify.test.ts +0 -31
- package/src/utils/__tests__/storefrontBaseUrl.test.ts +0 -61
- package/src/utils/__tests__/transform.test.ts +0 -1111
- package/src/utils/accountLoaders.ts +0 -203
- package/src/utils/authHelpers.ts +0 -85
- package/src/utils/batch.ts +0 -18
- package/src/utils/buildOfferShelf.test.ts +0 -59
- package/src/utils/cartProjection.ts +0 -96
- package/src/utils/cookies.ts +0 -167
- package/src/utils/enrichment.ts +0 -556
- package/src/utils/fetch.ts +0 -111
- package/src/utils/fetchCache.ts +0 -55
- package/src/utils/index.ts +0 -19
- package/src/utils/instrumentedFetch.ts +0 -98
- package/src/utils/intelligentSearch.ts +0 -96
- package/src/utils/legacy.ts +0 -139
- package/src/utils/minicart.ts +0 -139
- package/src/utils/pickAndOmit.ts +0 -25
- package/src/utils/proxy.ts +0 -495
- package/src/utils/resilience.ts +0 -352
- package/src/utils/resourceRange.ts +0 -10
- package/src/utils/segment.ts +0 -152
- package/src/utils/similars.ts +0 -35
- package/src/utils/simulationCache.ts +0 -73
- package/src/utils/sitemap.ts +0 -283
- package/src/utils/slugCache.ts +0 -28
- package/src/utils/slugify.ts +0 -13
- package/src/utils/transform.ts +0 -1691
- package/src/utils/vtexId.ts +0 -151
- package/src/vtexClient.test.ts +0 -204
- package/tsconfig.json +0 -7
package/src/mod.ts
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VTEX app module — standard autoconfig contract.
|
|
3
|
-
*
|
|
4
|
-
* Exports `configure` following the AppModContract pattern.
|
|
5
|
-
* The framework's `autoconfigApps()` calls these generically.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```ts
|
|
9
|
-
* import * as vtexApp from "@decocms/apps/vtex/mod";
|
|
10
|
-
*
|
|
11
|
-
* const app = await vtexApp.configure(blocks.vtex, resolveSecret);
|
|
12
|
-
* if (app) {
|
|
13
|
-
* // app.manifest, app.state, app.middleware are available
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type { AppDefinition, AppMiddleware, ResolveSecretFn } from "@decocms/apps-commerce/app-types";
|
|
19
|
-
import type { Secret } from "@decocms/apps-website/mod";
|
|
20
|
-
import { configureVtex, type VtexConfig } from "./client";
|
|
21
|
-
import manifest from "./manifest.gen";
|
|
22
|
-
import { extractVtexContext, propagateISCookies, vtexCacheControl } from "./middleware";
|
|
23
|
-
import { registerVtexSchemas } from "./schemas";
|
|
24
|
-
|
|
25
|
-
// -------------------------------------------------------------------------
|
|
26
|
-
// CMS Props (mirrors deco-cx/apps/vtex/mod.ts)
|
|
27
|
-
// -------------------------------------------------------------------------
|
|
28
|
-
|
|
29
|
-
/** @title VTEX */
|
|
30
|
-
export interface Props {
|
|
31
|
-
/**
|
|
32
|
-
* @description VTEX Account name
|
|
33
|
-
*/
|
|
34
|
-
account: string;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @title Public store URL
|
|
38
|
-
* @description Domain registered on License Manager (e.g. secure.mystore.com.br)
|
|
39
|
-
*/
|
|
40
|
-
publicUrl: string;
|
|
41
|
-
|
|
42
|
-
/** @title App Key */
|
|
43
|
-
appKey?: Secret;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @title App Token
|
|
47
|
-
* @format password
|
|
48
|
-
*/
|
|
49
|
-
appToken?: Secret;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @title Default Sales Channel
|
|
53
|
-
* @deprecated
|
|
54
|
-
*/
|
|
55
|
-
salesChannel?: string;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @title Set Refresh Token
|
|
59
|
-
* @default false
|
|
60
|
-
*/
|
|
61
|
-
setRefreshToken?: boolean;
|
|
62
|
-
|
|
63
|
-
defaultSegment?: Record<string, unknown>;
|
|
64
|
-
|
|
65
|
-
usePortalSitemap?: boolean;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @hide true
|
|
69
|
-
* @default vtex
|
|
70
|
-
*/
|
|
71
|
-
platform?: "vtex";
|
|
72
|
-
|
|
73
|
-
advancedConfigs?: {
|
|
74
|
-
doNotFetchVariantsForRelatedProducts?: boolean;
|
|
75
|
-
removeUTMFromCacheKey?: boolean;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/** @title Cached Search Terms */
|
|
79
|
-
cachedSearchTerms?: {
|
|
80
|
-
terms?: unknown;
|
|
81
|
-
extraTerms?: string[];
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export type { Secret };
|
|
86
|
-
|
|
87
|
-
// -------------------------------------------------------------------------
|
|
88
|
-
// State
|
|
89
|
-
// -------------------------------------------------------------------------
|
|
90
|
-
|
|
91
|
-
export interface VtexState {
|
|
92
|
-
config: VtexConfig;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// -------------------------------------------------------------------------
|
|
96
|
-
// Middleware
|
|
97
|
-
// -------------------------------------------------------------------------
|
|
98
|
-
|
|
99
|
-
export const vtexMiddleware: AppMiddleware = async (request, next) => {
|
|
100
|
-
const ctx = extractVtexContext(request);
|
|
101
|
-
const response = await next();
|
|
102
|
-
|
|
103
|
-
// This middleware wraps the framework's whole edge-cache layer, so it is the
|
|
104
|
-
// LAST writer of Cache-Control — including on a cache HIT. It used to
|
|
105
|
-
// overwrite unconditionally, which downgraded a home page the cache layer had
|
|
106
|
-
// resolved as `s-maxage=900` to vtexCacheControl's generic `s-maxage=60`.
|
|
107
|
-
//
|
|
108
|
-
// Now it only speaks up for the case it actually knows better about: a
|
|
109
|
-
// personalized request, which must not be cached anywhere. And when it does,
|
|
110
|
-
// it clears CDN-Cache-Control too — otherwise a response can go out as
|
|
111
|
-
// `Cache-Control: private, no-store` alongside `CDN-Cache-Control: public,
|
|
112
|
-
// max-age=300`, and Cloudflare gives the CDN header precedence. Same pairing
|
|
113
|
-
// the worker's own bypasses use, and utils/proxy.ts's hardenProxyCacheHeaders.
|
|
114
|
-
if (ctx.isLoggedIn || ctx.hasCustomPricing) {
|
|
115
|
-
response.headers.set("Cache-Control", vtexCacheControl(ctx));
|
|
116
|
-
response.headers.delete("CDN-Cache-Control");
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
propagateISCookies(ctx, response);
|
|
120
|
-
return response;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
// -------------------------------------------------------------------------
|
|
124
|
-
// Configure
|
|
125
|
-
// -------------------------------------------------------------------------
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Configure the VTEX app from CMS block data.
|
|
129
|
-
* Returns an AppDefinition or null if required fields are missing.
|
|
130
|
-
*/
|
|
131
|
-
export async function configure(
|
|
132
|
-
// biome-ignore lint/suspicious/noExplicitAny: block data comes from CMS with no fixed schema
|
|
133
|
-
block: any,
|
|
134
|
-
resolveSecret: ResolveSecretFn,
|
|
135
|
-
): Promise<AppDefinition<VtexState> | null> {
|
|
136
|
-
if (!block?.account) return null;
|
|
137
|
-
|
|
138
|
-
// Real props schemas for the admin meta — must be in place before
|
|
139
|
-
// setupApps() auto-registers the __resolveType-only stubs.
|
|
140
|
-
registerVtexSchemas();
|
|
141
|
-
|
|
142
|
-
const appKey = await resolveSecret(block.appKey, "VTEX_APP_KEY");
|
|
143
|
-
const appToken = await resolveSecret(block.appToken, "VTEX_APP_TOKEN");
|
|
144
|
-
|
|
145
|
-
const config: VtexConfig = {
|
|
146
|
-
account: block.account,
|
|
147
|
-
publicUrl: block.publicUrl,
|
|
148
|
-
salesChannel: block.salesChannel || "1",
|
|
149
|
-
locale: block.locale || block.defaultLocale,
|
|
150
|
-
appKey: appKey ?? undefined,
|
|
151
|
-
appToken: appToken ?? undefined,
|
|
152
|
-
country: block.country,
|
|
153
|
-
domain: block.domain,
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// Bridge: maintain global singleton for backward compat
|
|
157
|
-
configureVtex(config);
|
|
158
|
-
|
|
159
|
-
return {
|
|
160
|
-
name: "vtex",
|
|
161
|
-
manifest,
|
|
162
|
-
state: { config },
|
|
163
|
-
middleware: vtexMiddleware,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/** Placeholder preview for CMS editor — evolves when admin supports it. */
|
|
168
|
-
export const preview = undefined;
|
|
169
|
-
|
|
170
|
-
/** Default export for schema generation and Deno-style app bridges. */
|
|
171
|
-
export default function VTEX(_props: Props) {
|
|
172
|
-
return { state: _props };
|
|
173
|
-
}
|
package/src/registry.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AppRegistryEntry } from "@decocms/apps-commerce/registry";
|
|
2
|
-
|
|
3
|
-
export const VTEX_REGISTRY_ENTRY: AppRegistryEntry = {
|
|
4
|
-
blockKey: "deco-vtex",
|
|
5
|
-
module: () => import("./mod"),
|
|
6
|
-
displayName: "VTEX",
|
|
7
|
-
category: "commerce",
|
|
8
|
-
description: "VTEX IO commerce integration",
|
|
9
|
-
};
|