@faststore/api 4.10.1-dev.3 → 4.10.1-dev.5
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/dist/cjs/index.js +46 -46
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.mjs +860 -787
- package/dist/es/index.mjs.map +1 -1
- package/dist/src/platforms/vtex/clients/commerce/index.d.ts +16 -2
- package/dist/src/platforms/vtex/clients/commerce/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/clients/fetch.d.ts +1 -0
- package/dist/src/platforms/vtex/clients/fetch.d.ts.map +1 -1
- package/dist/src/platforms/vtex/clients/index.d.ts +2 -2
- package/dist/src/platforms/vtex/clients/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/getOrderEntryOperation.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/query.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/subscribeToNewsletter.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/platforms/vtex/clients/commerce/index.ts +80 -3
- package/src/platforms/vtex/clients/fetch.ts +52 -1
- package/src/platforms/vtex/resolvers/subscribeToNewsletter.ts +28 -1
|
@@ -30,6 +30,8 @@ export interface RecommendationArgs {
|
|
|
30
30
|
salesChannel?: string;
|
|
31
31
|
locale?: string;
|
|
32
32
|
}
|
|
33
|
+
/** Test-only: forget which accounts were warned about the anonymous fallback. */
|
|
34
|
+
export declare const resetAnonymousNewsletterWarnings: () => void;
|
|
33
35
|
export declare const VtexCommerce: ({ account, environment, incrementAddress, subDomainPrefix }: Options, ctx: GraphqlContext) => {
|
|
34
36
|
catalog: {
|
|
35
37
|
salesChannel: (sc: string) => Promise<SalesChannel>;
|
|
@@ -112,8 +114,20 @@ export declare const VtexCommerce: ({ account, environment, incrementAddress, su
|
|
|
112
114
|
*/
|
|
113
115
|
attachedContracts: (orgUnitId: string) => Promise<AttachedContractsResponse>;
|
|
114
116
|
};
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Creates a newsletter subscription in the `NL` Master Data entity.
|
|
119
|
+
*
|
|
120
|
+
* With `FS_NEWSLETTER_APP_KEY`/`FS_NEWSLETTER_APP_TOKEN` set, the document is
|
|
121
|
+
* created with a `POST` authenticated by that dedicated key, so `NL` fields
|
|
122
|
+
* can stay private. The request is create-only: the body is built here from
|
|
123
|
+
* the validated fields and never carries a document id, so the caller can't
|
|
124
|
+
* reach an existing record.
|
|
125
|
+
*
|
|
126
|
+
* Without the credentials, it falls back to the legacy anonymous `PATCH`,
|
|
127
|
+
* which only works while `NL` fields are public.
|
|
128
|
+
*/
|
|
129
|
+
subscribeToNewsletter: ({ name, email, }: {
|
|
130
|
+
name?: string;
|
|
117
131
|
email: string;
|
|
118
132
|
}) => Promise<MasterDataResponse>;
|
|
119
133
|
profile: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/clients/commerce/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/clients/commerce/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
interface FetchAPIOptions {
|
|
2
2
|
storeCookies?: (headers: Headers) => void;
|
|
3
3
|
}
|
|
4
|
+
export declare const redactHeaders: (headers?: HeadersInit) => Record<string, string> | undefined;
|
|
4
5
|
export declare const fetchAPI: (info: RequestInfo, init?: RequestInit, options?: FetchAPIOptions) => Promise<any>;
|
|
5
6
|
export {};
|
|
6
7
|
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/clients/fetch.ts"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1C;AAED,eAAO,MAAM,QAAQ,GACnB,MAAM,WAAW,EACjB,OAAO,WAAW,EAClB,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/clients/fetch.ts"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1C;AAWD,eAAO,MAAM,aAAa,GACxB,UAAU,WAAW,KACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAsB3B,CAAA;AAED,eAAO,MAAM,QAAQ,GACnB,MAAM,WAAW,EACjB,OAAO,WAAW,EAClB,UAAU,eAAe,iBA0D1B,CAAA"}
|
|
@@ -83,8 +83,8 @@ export declare const getClients: (options: Options, ctx: GraphqlContext) => {
|
|
|
83
83
|
storeFront: {
|
|
84
84
|
attachedContracts: (orgUnitId: string) => Promise<import('./commerce/types/StoreFrontContracts').AttachedContractsResponse>;
|
|
85
85
|
};
|
|
86
|
-
subscribeToNewsletter: (
|
|
87
|
-
name
|
|
86
|
+
subscribeToNewsletter: ({ name, email, }: {
|
|
87
|
+
name?: string;
|
|
88
88
|
email: string;
|
|
89
89
|
}) => Promise<import('./commerce/types/Newsletter').MasterDataResponse>;
|
|
90
90
|
profile: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAKvD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,EAAE,KAAK,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAKvD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,EAAE,KAAK,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAW2wT,CAAC;;;;;;;;;4BAAmxC,CAAC;;;;;;;;;;;;kBAA+kF,CAAC;mCAAoC,CAAC;uBAAyB,CAAC;oCAA4U,CAAC;;;;;;;;iCAAquD,CAAC;4BAAoC,CAAC;+BAAgC,CAAC;;;;;;;;;;;;;;;;;gBAA86K,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAA2te,CAAC;;;;;;;;;uBAAkwB,CAAC;4BAA6B,CAAC;;4BAAqD,CAAC;;;;;;;;;;;;;;;;;;;;;CADz0qC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/vtex/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,SAAS,CAAA;AAKtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;SAKK;IACL,OAAO,EAAE;QACP,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1B,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,YAAY,CAAA;QACnB,+EAA+E;QAC/E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5C;;;;;WAKG;QACH,wBAAwB,CAAC,EAAE,GAAG,CAC5B,MAAM,EACN,OAAO,CAAC,OAAO,mBAAmB,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAClE,CAAA;KACF,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C;AAED,eAAO,MAAM,yBAAyB,GAAU,SAAS,OAAO,mBACjD,GAAG,KAAG,cAAc,CAmBlC,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,QAAQ,CAC/D,cAAc,EACd,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAA;AAED,wBAAgB,YAAY;;;;;;gJAkCyqB,6CAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAs0hB,CAAC;mBAAsB,CAAC;kBAAqB,CAAC;yBAA8B,CAAC;uBAA0B,CAAC;yBAA4B,CAAC;uBAA0B,CAAC;iBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA/DpsjB,CAAC;yBAAoB,CAAC;0BAAqB,CAAC;0BAClD,CAAC;8BAAyB,CAAC;gCACd,CAAC;;;6BAEb,CAAF;+BAA0B,CAAC;+BACR,CAAC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/vtex/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,SAAS,CAAA;AAKtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;SAKK;IACL,OAAO,EAAE;QACP,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1B,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,YAAY,CAAA;QACnB,+EAA+E;QAC/E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACrC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5C;;;;;WAKG;QACH,wBAAwB,CAAC,EAAE,GAAG,CAC5B,MAAM,EACN,OAAO,CAAC,OAAO,mBAAmB,EAAE,qBAAqB,GAAG,IAAI,CAAC,CAClE,CAAA;KACF,CAAA;IACD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C;AAED,eAAO,MAAM,yBAAyB,GAAU,SAAS,OAAO,mBACjD,GAAG,KAAG,cAAc,CAmBlC,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,QAAQ,CAC/D,cAAc,EACd,CAAC,EACD,CAAC,EACD,CAAC,CACF,CAAA;AAED,wBAAgB,YAAY;;;;;;gJAkCyqB,6CAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAs0hB,CAAC;mBAAsB,CAAC;kBAAqB,CAAC;yBAA8B,CAAC;uBAA0B,CAAC;yBAA4B,CAAC;uBAA0B,CAAC;iBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA/DpsjB,CAAC;yBAAoB,CAAC;0BAAqB,CAAC;0BAClD,CAAC;8BAAyB,CAAC;gCACd,CAAC;;;6BAEb,CAAF;+BAA0B,CAAC;+BACR,CAAC;;;;;;;;;;;wBA0DyhkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAlBjjkC;AAED,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,aAAa,iBAe5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOrderEntryOperation.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/getOrderEntryOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAGjF,eAAO,MAAM,sBAAsB,GACjC,GAAG,OAAO,EACV,iBAAiB,4BAA4B,EAC7C,2BAA2B,cAAc;;;;;;
|
|
1
|
+
{"version":3,"file":"getOrderEntryOperation.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/getOrderEntryOperation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAGjF,eAAO,MAAM,sBAAsB,GACjC,GAAG,OAAO,EACV,iBAAiB,4BAA4B,EAC7C,2BAA2B,cAAc;;;;;;gBAQ42qC,CAAC;;;EADv5qC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/index.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,YAAY;;;;;;oJAC6uG,mCAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAs0hB,CAAC;mBAAsB,CAAC;kBAAqB,CAAC;yBAA8B,CAAC;uBAA0B,CAAC;yBAA4B,CAAC;uBAA0B,CAAC;iBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAAn8mB,CAAC;yBAAoB,CAAC;0BAAqB,CAAC;0BAAqB,CAAC;8BAAyB,CAAC;gCAA2B,CAAC;;;6BAA0D,CAAC;+BAA0B,CAAC;+BAA0B,CAAC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/index.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,YAAY;;;;;;oJAC6uG,mCAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAAs0hB,CAAC;mBAAsB,CAAC;kBAAqB,CAAC;yBAA8B,CAAC;uBAA0B,CAAC;yBAA4B,CAAC;uBAA0B,CAAC;iBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAAn8mB,CAAC;yBAAoB,CAAC;0BAAqB,CAAC;0BAAqB,CAAC;8BAAyB,CAAC;gCAA2B,CAAC;;;6BAA0D,CAAC;+BAA0B,CAAC;+BAA0B,CAAC;;;;;;;;;;;wBAA4jnC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CADpkpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAElB,aAAa,EAEd,MAAM,+BAA+B,CAAA;AAUtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAoIlE,eAAO,MAAM,KAAK;iBAEX,OAAO,eACG,gBAAgB,OACxB,cAAc;oBAyChB,OAAO,YACA,mBAAmB,OACxB,cAAc;gBAgBhB,OAAO,6EAQP,eAAe,OACb,cAAc;;;;qBA4EhB,OAAO,gCACoB,oBAAoB,OAC7C,cAAc;;;;;;;;;;;;;kBAkChB,OAAO,kBACM,iBAAiB,OAC5B,cAAc;wBAwBhB,OAAO,gCACoB,uBAAuB,OAChD,cAAc;;;;;;;;;;;;;kBA8EhB,OAAO,kCACsB,iBAAiB,OAC5C,cAAc;;;;;;;;;;;;;;;;;kBAkBhB,OAAO,4BACgB,iBAAiB,OACtC,cAAc;;;iBAqBhB,OAAO,yDAC6C,gBAAgB,OAClE,cAAc;;;;iBAqBhB,OAAO,UACF,gBAAgB,OACnB,cAAc;;;sBAyBhB,OAAO,YACA,qBAAqB,OAC1B,cAAc;mBAahB,OAAO,eACG,kBAAkB,OAC1B,cAAc;;;;;;;;;;;;;;;;;;;;;;;wBAqGhB,OAAO,WACD,uBAAuB,OAC3B,cAAc;;;;;;;;;;;;;;;yBAwBM,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;;;;;;;;;4BAqBtC,OAAO,MAAM,OAAO,OAAO,cAAc;wBA0BlE,OAAO,WACD;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,OACI,cAAc;;;;;;;;;;;;;;;;sBAoDG,OAAO,MAAM,OAAO,QAAQ,cAAc;;;8BAQ7D,OAAO,MACN,OAAO,OACN,cAAc;qBAWE,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;;;;wBAqCtC,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;4BA2E9D,OAAO,iBACK,2BAA2B,OACrC,cAAc,KAClB,OAAO,CAAC,aAAa,EAAE,CAAC;sBA4DtB,OAAO,oDACwC,qBAAqB,OAClE,cAAc;;;;;;;oBAv7BI,CAAA;qBAAoB,CAAC;sBACnC,CAAC;sBAAsB,CAAA;0BAGjC,CAAC;4BAA2B,CAAC;;;yBACtB,CAAC;2BAA0B,CAAC;2BAA0B,CAAC;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAElB,aAAa,EAEd,MAAM,+BAA+B,CAAA;AAUtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAoIlE,eAAO,MAAM,KAAK;iBAEX,OAAO,eACG,gBAAgB,OACxB,cAAc;oBAyChB,OAAO,YACA,mBAAmB,OACxB,cAAc;gBAgBhB,OAAO,6EAQP,eAAe,OACb,cAAc;;;;qBA4EhB,OAAO,gCACoB,oBAAoB,OAC7C,cAAc;;;;;;;;;;;;;kBAkChB,OAAO,kBACM,iBAAiB,OAC5B,cAAc;wBAwBhB,OAAO,gCACoB,uBAAuB,OAChD,cAAc;;;;;;;;;;;;;kBA8EhB,OAAO,kCACsB,iBAAiB,OAC5C,cAAc;;;;;;;;;;;;;;;;;kBAkBhB,OAAO,4BACgB,iBAAiB,OACtC,cAAc;;;iBAqBhB,OAAO,yDAC6C,gBAAgB,OAClE,cAAc;;;;iBAqBhB,OAAO,UACF,gBAAgB,OACnB,cAAc;;;sBAyBhB,OAAO,YACA,qBAAqB,OAC1B,cAAc;mBAahB,OAAO,eACG,kBAAkB,OAC1B,cAAc;;;;;;;;;;;;;;;;;;;;;;;wBAqGhB,OAAO,WACD,uBAAuB,OAC3B,cAAc;;;;;;;;;;;;;;;yBAwBM,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;;;;;;;;;4BAqBtC,OAAO,MAAM,OAAO,OAAO,cAAc;wBA0BlE,OAAO,WACD;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,OACI,cAAc;;;;;;;;;;;;;;;;sBAoDG,OAAO,MAAM,OAAO,QAAQ,cAAc;;;8BAQ7D,OAAO,MACN,OAAO,OACN,cAAc;qBAWE,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;;;;wBAqCtC,OAAO,MAAM,OAAO,OAAO,cAAc;;;;;4BA2E9D,OAAO,iBACK,2BAA2B,OACrC,cAAc,KAClB,OAAO,CAAC,aAAa,EAAE,CAAC;sBA4DtB,OAAO,oDACwC,qBAAqB,OAClE,cAAc;;;;;;;oBAv7BI,CAAA;qBAAoB,CAAC;sBACnC,CAAC;sBAAsB,CAAA;0BAGjC,CAAC;4BAA2B,CAAC;;;yBACtB,CAAC;2BAA0B,CAAC;2BAA0B,CAAC;;;;;;;;;;;oBAg9BwsR,CAAC;;;;;;;;;;;;;;;;;;;;CADzwR,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribeToNewsletter.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/subscribeToNewsletter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EACV,iCAAiC,EACjC,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"subscribeToNewsletter.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/vtex/resolvers/subscribeToNewsletter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACxC,OAAO,KAAK,EACV,iCAAiC,EACjC,gBAAgB,EACjB,MAAM,+BAA+B,CAAA;AAStC,eAAO,MAAM,qBAAqB,GAChC,GAAG,GAAG,EACN,UAAU,iCAAiC,EAC3C,2BAA2B,cAAc,KACxC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAuBjC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/api",
|
|
3
|
-
"version": "4.10.1-dev.
|
|
3
|
+
"version": "4.10.1-dev.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"vite": "7.1.5",
|
|
59
59
|
"vite-plugin-dts": "4.5.4",
|
|
60
60
|
"vitest": "4.0.18",
|
|
61
|
-
"@faststore/diagnostics": "^4.10.1-dev.
|
|
61
|
+
"@faststore/diagnostics": "^4.10.1-dev.5"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"graphql": "16.11.0",
|
|
65
|
-
"@faststore/diagnostics": "4.10.1-dev.
|
|
65
|
+
"@faststore/diagnostics": "4.10.1-dev.5"
|
|
66
66
|
},
|
|
67
67
|
"publishConfig": {
|
|
68
68
|
"access": "public"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { parse } from 'cookie'
|
|
2
2
|
import type { Options } from '../../../../typings/globals'
|
|
3
3
|
import type { FACET_CROSS_SELLING_MAP } from '../../utils/facets'
|
|
4
|
+
import { OTELLogger } from '../../../../observability/telemetry'
|
|
4
5
|
import { fetchAPI } from '../fetch'
|
|
5
6
|
|
|
6
7
|
import {
|
|
@@ -82,6 +83,19 @@ const BASE_INIT = {
|
|
|
82
83
|
},
|
|
83
84
|
}
|
|
84
85
|
|
|
86
|
+
// Accounts already warned that they rely on public `NL` fields. The commerce
|
|
87
|
+
// client is created per request, so the warning is kept once per account
|
|
88
|
+
// instead of per instance, to avoid flooding the logs. The account comes from
|
|
89
|
+
// the store's API options, not from the request, so the set holds at most one
|
|
90
|
+
// entry per account the process is configured for (usually one). It's still
|
|
91
|
+
// capped, so it can't grow without bound if that ever changes.
|
|
92
|
+
const MAX_WARNED_NEWSLETTER_ACCOUNTS = 100
|
|
93
|
+
const accountsWarnedAboutAnonymousNewsletter = new Set<string>()
|
|
94
|
+
|
|
95
|
+
/** Test-only: forget which accounts were warned about the anonymous fallback. */
|
|
96
|
+
export const resetAnonymousNewsletterWarnings = () =>
|
|
97
|
+
accountsWarnedAboutAnonymousNewsletter.clear()
|
|
98
|
+
|
|
85
99
|
/**
|
|
86
100
|
* Encode a by-linkid path for the category endpoint. Category link paths can be
|
|
87
101
|
* multi-segment (e.g. "computer---software/eletronicos"); the Catalog endpoint
|
|
@@ -673,15 +687,78 @@ export const VtexCommerce = (
|
|
|
673
687
|
)
|
|
674
688
|
},
|
|
675
689
|
},
|
|
676
|
-
|
|
677
|
-
|
|
690
|
+
/**
|
|
691
|
+
* Creates a newsletter subscription in the `NL` Master Data entity.
|
|
692
|
+
*
|
|
693
|
+
* With `FS_NEWSLETTER_APP_KEY`/`FS_NEWSLETTER_APP_TOKEN` set, the document is
|
|
694
|
+
* created with a `POST` authenticated by that dedicated key, so `NL` fields
|
|
695
|
+
* can stay private. The request is create-only: the body is built here from
|
|
696
|
+
* the validated fields and never carries a document id, so the caller can't
|
|
697
|
+
* reach an existing record.
|
|
698
|
+
*
|
|
699
|
+
* Without the credentials, it falls back to the legacy anonymous `PATCH`,
|
|
700
|
+
* which only works while `NL` fields are public.
|
|
701
|
+
*/
|
|
702
|
+
subscribeToNewsletter: ({
|
|
703
|
+
name,
|
|
704
|
+
email,
|
|
705
|
+
}: {
|
|
706
|
+
name?: string
|
|
678
707
|
email: string
|
|
679
708
|
}): Promise<MasterDataResponse> => {
|
|
709
|
+
const body = JSON.stringify({
|
|
710
|
+
...(name ? { name } : {}),
|
|
711
|
+
email,
|
|
712
|
+
isNewsletterOptIn: true,
|
|
713
|
+
})
|
|
714
|
+
// Use a key dedicated to the newsletter, whose role has only the Dynamic
|
|
715
|
+
// Storage "Insert or update document (not remove)" resource. Master Data
|
|
716
|
+
// permissions aren't scoped by entity, so never reuse a key that serves
|
|
717
|
+
// other features, and rotate it like any other secret. Setup steps:
|
|
718
|
+
// https://developers.vtex.com/docs/guides/faststore/organisms-newsletter#setting-up-newsletter-subscriptions
|
|
719
|
+
const appKey = process.env.FS_NEWSLETTER_APP_KEY
|
|
720
|
+
const appToken = process.env.FS_NEWSLETTER_APP_TOKEN
|
|
721
|
+
|
|
722
|
+
if (appKey && appToken) {
|
|
723
|
+
return fetchAPI(`${base}/api/dataentities/NL/documents`, {
|
|
724
|
+
method: 'POST',
|
|
725
|
+
headers: {
|
|
726
|
+
'content-type': 'application/json',
|
|
727
|
+
accept: 'application/json',
|
|
728
|
+
'X-VTEX-API-AppKey': appKey,
|
|
729
|
+
'X-VTEX-API-AppToken': appToken,
|
|
730
|
+
},
|
|
731
|
+
body,
|
|
732
|
+
})
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
if (!accountsWarnedAboutAnonymousNewsletter.has(account)) {
|
|
736
|
+
if (
|
|
737
|
+
accountsWarnedAboutAnonymousNewsletter.size >=
|
|
738
|
+
MAX_WARNED_NEWSLETTER_ACCOUNTS
|
|
739
|
+
) {
|
|
740
|
+
accountsWarnedAboutAnonymousNewsletter.clear()
|
|
741
|
+
}
|
|
742
|
+
accountsWarnedAboutAnonymousNewsletter.add(account)
|
|
743
|
+
|
|
744
|
+
// Name only the missing variables, so a partial setup is easy to spot.
|
|
745
|
+
const missing = [
|
|
746
|
+
!appKey && 'FS_NEWSLETTER_APP_KEY',
|
|
747
|
+
!appToken && 'FS_NEWSLETTER_APP_TOKEN',
|
|
748
|
+
].filter(Boolean)
|
|
749
|
+
const message = `[subscribeToNewsletter] ${missing.join(' and ')} ${missing.length > 1 ? 'are' : 'is'} not set. Falling back to an anonymous Master Data request, which requires public fields in the NL entity. Configure both credentials and make the NL fields private.`
|
|
750
|
+
|
|
751
|
+
// Also sent to OpenTelemetry logs, so a missing credential reaches
|
|
752
|
+
// operators and not only stdout.
|
|
753
|
+
console.warn(message)
|
|
754
|
+
OTELLogger('warn', '%s', message)
|
|
755
|
+
}
|
|
756
|
+
|
|
680
757
|
return fetchAPI(
|
|
681
758
|
`${base}/api/dataentities/NL/documents/`,
|
|
682
759
|
{
|
|
683
760
|
...BASE_INIT,
|
|
684
|
-
body
|
|
761
|
+
body,
|
|
685
762
|
method: 'PATCH',
|
|
686
763
|
},
|
|
687
764
|
{ storeCookies }
|
|
@@ -14,6 +14,41 @@ interface FetchAPIOptions {
|
|
|
14
14
|
storeCookies?: (headers: Headers) => void
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
// Headers that may carry credentials: store API keys (`X-VTEX-API-AppKey`,
|
|
18
|
+
// `X-VTEX-API-AppToken`), shopper cookies (`Cookie`, `Set-Cookie`,
|
|
19
|
+
// `VtexIdclientAutCookie_*`), `Authorization`, and generic token, secret or
|
|
20
|
+
// API key headers. They are replaced before a failed request and its response
|
|
21
|
+
// are logged. Matched by substring so new credential headers are covered too.
|
|
22
|
+
const SENSITIVE_HEADER = /authorization|cookie|token|secret|api-?key|appkey/i
|
|
23
|
+
|
|
24
|
+
const REDACTED = '[redacted]'
|
|
25
|
+
|
|
26
|
+
export const redactHeaders = (
|
|
27
|
+
headers?: HeadersInit
|
|
28
|
+
): Record<string, string> | undefined => {
|
|
29
|
+
if (!headers) {
|
|
30
|
+
return undefined
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const redacted: Record<string, string> = {}
|
|
34
|
+
const add = (name: string, value: string) => {
|
|
35
|
+
redacted[name] = SENSITIVE_HEADER.test(name) ? REDACTED : value
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (Array.isArray(headers)) {
|
|
39
|
+
headers.forEach(([name, value]) => add(name, value))
|
|
40
|
+
} else if (typeof (headers as Headers).forEach === 'function') {
|
|
41
|
+
// Matches both the global `Headers` and the polyfill returned by
|
|
42
|
+
// `isomorphic-unfetch` on Node, which isn't an instance of the global one.
|
|
43
|
+
const headerList = headers as Headers
|
|
44
|
+
headerList.forEach((value, name) => add(name, value))
|
|
45
|
+
} else {
|
|
46
|
+
Object.entries(headers).forEach(([name, value]) => add(name, value))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return redacted
|
|
50
|
+
}
|
|
51
|
+
|
|
17
52
|
export const fetchAPI = async (
|
|
18
53
|
info: RequestInfo,
|
|
19
54
|
init?: RequestInit,
|
|
@@ -35,7 +70,23 @@ export const fetchAPI = async (
|
|
|
35
70
|
return response.status !== 204 ? response.json() : undefined
|
|
36
71
|
}
|
|
37
72
|
|
|
38
|
-
|
|
73
|
+
// Log a summary instead of the raw Response, whose headers may include
|
|
74
|
+
// `Set-Cookie` with shopper credentials. The request body is omitted because
|
|
75
|
+
// it can carry personal data (e.g. the newsletter email and name).
|
|
76
|
+
console.error(
|
|
77
|
+
// Only the URL: a `Request` instance could carry unredacted headers.
|
|
78
|
+
typeof info === 'string' ? info : info.url,
|
|
79
|
+
init && {
|
|
80
|
+
...init,
|
|
81
|
+
headers: redactHeaders(init.headers),
|
|
82
|
+
body: init.body ? REDACTED : undefined,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
status: response.status,
|
|
86
|
+
statusText: response.statusText,
|
|
87
|
+
headers: redactHeaders(response.headers),
|
|
88
|
+
}
|
|
89
|
+
)
|
|
39
90
|
const text = await response.text()
|
|
40
91
|
|
|
41
92
|
// Check if response has a valid status property
|
|
@@ -3,12 +3,39 @@ import type {
|
|
|
3
3
|
MutationSubscribeToNewsletterArgs,
|
|
4
4
|
PersonNewsletter,
|
|
5
5
|
} from '../../../__generated__/schema'
|
|
6
|
+
import { BadRequestError } from '../../errors'
|
|
7
|
+
|
|
8
|
+
const EMAIL_MAX_LENGTH = 254
|
|
9
|
+
const NAME_MAX_LENGTH = 100
|
|
10
|
+
// Character classes exclude `.`, so each domain label is matched once and the
|
|
11
|
+
// pattern stays linear on long inputs.
|
|
12
|
+
const EMAIL_PATTERN = /^[^\s@]+@[^\s@.]+(\.[^\s@.]+)+$/
|
|
6
13
|
|
|
7
14
|
export const subscribeToNewsletter = async (
|
|
8
15
|
_: any,
|
|
9
16
|
{ data }: MutationSubscribeToNewsletterArgs,
|
|
10
17
|
{ clients: { commerce } }: GraphqlContext
|
|
11
18
|
): Promise<PersonNewsletter | null> => {
|
|
12
|
-
|
|
19
|
+
// The subscription is written with a store credential, so only validated
|
|
20
|
+
// values reach Master Data. See "Create-only writes from anonymous visitors"
|
|
21
|
+
// in https://developers.vtex.com/docs/guides/faststore/api-extensions-authentication-in-api-extensions
|
|
22
|
+
const email = data.email?.trim().toLowerCase() ?? ''
|
|
23
|
+
const name = data.name?.trim() ?? ''
|
|
24
|
+
|
|
25
|
+
if (email.length > EMAIL_MAX_LENGTH || !EMAIL_PATTERN.test(email)) {
|
|
26
|
+
throw new BadRequestError('Invalid email')
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (name.length > NAME_MAX_LENGTH) {
|
|
30
|
+
throw new BadRequestError(
|
|
31
|
+
`Invalid name: must have at most ${NAME_MAX_LENGTH} characters`
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const response = await commerce.subscribeToNewsletter({
|
|
36
|
+
email,
|
|
37
|
+
name: name || undefined,
|
|
38
|
+
})
|
|
39
|
+
|
|
13
40
|
return { id: response?.Id }
|
|
14
41
|
}
|