@faststore/api 3.0.20 → 3.0.21

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 (35) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/__generated__/schema.d.ts +2 -2
  3. package/dist/cjs/src/platforms/vtex/clients/search/types/ProductSearchResult.d.ts +7 -0
  4. package/dist/cjs/src/platforms/vtex/clients/sp/index.d.ts +14 -0
  5. package/dist/cjs/src/platforms/vtex/clients/sp/index.js +49 -0
  6. package/dist/cjs/src/platforms/vtex/clients/sp/index.js.map +1 -0
  7. package/dist/cjs/src/platforms/vtex/resolvers/product.js +7 -2
  8. package/dist/cjs/src/platforms/vtex/resolvers/product.js.map +1 -1
  9. package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js +1 -1
  10. package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js.map +1 -1
  11. package/dist/cjs/src/platforms/vtex/utils/propertyValue.d.ts +11 -0
  12. package/dist/cjs/src/platforms/vtex/utils/propertyValue.js +14 -1
  13. package/dist/cjs/src/platforms/vtex/utils/propertyValue.js.map +1 -1
  14. package/dist/cjs/src/typeDefs/propertyValue.graphql +2 -2
  15. package/dist/esm/package.json +1 -1
  16. package/dist/esm/src/__generated__/schema.d.ts +2 -2
  17. package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.d.ts +7 -0
  18. package/dist/esm/src/platforms/vtex/clients/sp/index.d.ts +14 -0
  19. package/dist/esm/src/platforms/vtex/clients/sp/index.js +45 -0
  20. package/dist/esm/src/platforms/vtex/clients/sp/index.js.map +1 -0
  21. package/dist/esm/src/platforms/vtex/resolvers/product.js +8 -3
  22. package/dist/esm/src/platforms/vtex/resolvers/product.js.map +1 -1
  23. package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js +1 -1
  24. package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js.map +1 -1
  25. package/dist/esm/src/platforms/vtex/utils/propertyValue.d.ts +11 -0
  26. package/dist/esm/src/platforms/vtex/utils/propertyValue.js +12 -0
  27. package/dist/esm/src/platforms/vtex/utils/propertyValue.js.map +1 -1
  28. package/dist/esm/src/typeDefs/propertyValue.graphql +2 -2
  29. package/package.json +2 -2
  30. package/src/__generated__/schema.ts +2 -2
  31. package/src/platforms/vtex/clients/search/types/ProductSearchResult.ts +8 -0
  32. package/src/platforms/vtex/resolvers/product.ts +9 -1
  33. package/src/platforms/vtex/resolvers/propertyValue.ts +1 -1
  34. package/src/platforms/vtex/utils/propertyValue.ts +14 -0
  35. package/src/typeDefs/propertyValue.graphql +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "3.0.7",
3
+ "version": "3.0.20",
4
4
  "license": "MIT",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "typings": "dist/esm/src/index.d.ts",
@@ -249,7 +249,7 @@ export type IStorePropertyValue = {
249
249
  /** Property value. May hold a string or the string representation of an object. */
250
250
  value: Scalars['ObjectOrString'];
251
251
  /** Specifies the nature of the value */
252
- valueReference: Scalars['String'];
252
+ valueReference: Scalars['ObjectOrString'];
253
253
  };
254
254
  /** Selected search facet input. */
255
255
  export type IStoreSelectedFacet = {
@@ -936,7 +936,7 @@ export type StorePropertyValue = {
936
936
  /** Property value. May hold a string or the string representation of an object. */
937
937
  value: Scalars['ObjectOrString'];
938
938
  /** Specifies the nature of the value */
939
- valueReference: Scalars['String'];
939
+ valueReference: Scalars['ObjectOrString'];
940
940
  };
941
941
  /**
942
942
  * Redirect informations, including url returned by the query.
@@ -136,6 +136,7 @@ export interface Item {
136
136
  itemId: string;
137
137
  amount: number;
138
138
  }>;
139
+ attributes: Attribute[];
139
140
  }
140
141
  export interface CommertialOffer {
141
142
  DeliverySlaSamplesPerRegion: Record<string, {
@@ -203,4 +204,10 @@ interface SpecificationGroup {
203
204
  values: string[];
204
205
  }>;
205
206
  }
207
+ export interface Attribute {
208
+ id: string;
209
+ name: string;
210
+ value: string;
211
+ visible: boolean;
212
+ }
206
213
  export {};
@@ -0,0 +1,14 @@
1
+ import type { Options, Context } from '../../';
2
+ export type SearchEvent = {
3
+ type: 'search.query';
4
+ text: string;
5
+ misspelled: boolean;
6
+ match: number;
7
+ operator: 'and' | 'or';
8
+ locale: string;
9
+ session?: string;
10
+ anonymous?: string;
11
+ };
12
+ export declare const SP: ({ account }: Options, _: Context) => {
13
+ sendEvent: (options: SearchEvent) => Promise<any>;
14
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SP = void 0;
4
+ /**
5
+ * Client for SP, Intelligent search's analytics event API
6
+ * More info at: https://www.notion.so/vtexhandbook/Event-API-Documentation-48eee26730cf4d7f80f8fd7262231f84
7
+ */
8
+ const fetch_1 = require("../fetch");
9
+ const THIRTY_MINUTES_S = 30 * 60;
10
+ const ONE_YEAR_S = 365 * 24 * 3600;
11
+ const randomUUID = () => (Math.random() * 1e6).toFixed(0);
12
+ const timelapsed = (past) => (Date.now() - past) / 1e3;
13
+ const createId = (expiresSecond) => {
14
+ let payload = randomUUID();
15
+ let createdAt = Date.now();
16
+ return () => {
17
+ if (timelapsed(createdAt) > expiresSecond) {
18
+ payload = randomUUID();
19
+ createdAt = Date.now();
20
+ }
21
+ return payload;
22
+ };
23
+ };
24
+ const user = {
25
+ anonymous: createId(ONE_YEAR_S),
26
+ session: createId(THIRTY_MINUTES_S),
27
+ };
28
+ const SP = ({ account }, _) => {
29
+ const base = `https://sp.vtex.com/event-api/v1/${account}/event`;
30
+ const sendEvent = (options) => {
31
+ return (0, fetch_1.fetchAPI)(base, {
32
+ method: 'POST',
33
+ body: JSON.stringify({
34
+ ...options,
35
+ agent: '@faststore/api',
36
+ anonymous: user.anonymous(), // 'zZlNhqz1vFJP6iPG5Oqtt'
37
+ session: user.session(), // 'Om1TNluGvgmSgU5OOTvkkd'
38
+ }),
39
+ headers: {
40
+ 'content-type': 'application/json',
41
+ },
42
+ });
43
+ };
44
+ return {
45
+ sendEvent,
46
+ };
47
+ };
48
+ exports.SP = SP;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/platforms/vtex/clients/sp/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,oCAAmC;AAGnC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAA;AAChC,MAAM,UAAU,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA;AAE9D,MAAM,QAAQ,GAAG,CAAC,aAAqB,EAAE,EAAE;IACzC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAA;IAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE1B,OAAO,GAAG,EAAE;QACV,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,aAAa,EAAE,CAAC;YAC1C,OAAO,GAAG,UAAU,EAAE,CAAA;YACtB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;CACpC,CAAA;AAaM,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAW,EAAE,CAAU,EAAE,EAAE;IACrD,MAAM,IAAI,GAAG,oCAAoC,OAAO,QAAQ,CAAA;IAEhE,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAE,EAAE;QACzC,OAAO,IAAA,gBAAQ,EAAC,IAAI,EAAE;YACpB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,OAAO;gBACV,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,0BAA0B;gBACvD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,2BAA2B;aACrD,CAAC;YACF,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC,CAAA;AArBY,QAAA,EAAE,MAqBd"}
@@ -82,14 +82,19 @@ exports.StoreProduct = {
82
82
  isVariantOf: (root) => root,
83
83
  additionalProperty: ({
84
84
  // Search uses the name variations for specifications
85
- variations: specifications = [], attachmentsValues = [], }) => {
85
+ variations: specifications = [], attachmentsValues = [], attributes = [], }) => {
86
86
  const propertyValueSpecifications = specifications.flatMap(({ name, values }) => values.map((value) => ({
87
87
  name,
88
88
  value,
89
89
  valueReference: propertyValue_1.VALUE_REFERENCES.specification,
90
90
  })));
91
91
  const propertyValueAttachments = attachmentsValues.map(propertyValue_1.attachmentToPropertyValue);
92
- return [...propertyValueSpecifications, ...propertyValueAttachments];
92
+ const propertyValueAttributes = attributes.map(propertyValue_1.attributeToPropertyValue);
93
+ return [
94
+ ...propertyValueSpecifications,
95
+ ...propertyValueAttachments,
96
+ ...propertyValueAttributes,
97
+ ];
93
98
  },
94
99
  releaseDate: ({ isVariantOf: { releaseDate } }) => releaseDate ?? '',
95
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/product.ts"],"names":[],"mappings":";;;AAAA,kDAAyD;AACzD,4EAAwE;AACxE,wDAAsD;AACtD,8CAA0C;AAK1C,0DAG+B;AAU/B,MAAM,aAAa,GAAG;IACpB,SAAS,EAAE,OAAO;IAClB,QAAQ,EACN,6GAA6G;IAC/G,UAAU,EAAE,OAAO;CACpB,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAA;AAC7D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;AACvE,MAAM,aAAa,GAAG,CAAI,KAA6B,EAAE,EAAE,CACzD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAE5C,QAAA,YAAY,GAUrB;IACF,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;IACjC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC,WAAW;IAChE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1E,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW;IAC9D,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,WAAW,CAAC,WAAW;QAC9B,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,SAAS,EAAE,IAAA,gCAAoB,EAAC,WAAW,CAAC;KAC7C,CAAC;IACF,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,cAAc,EAAE,CAAC,EACf,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,EAClD,MAAM,GACP,EAAE,EAAE;QACH,OAAO;YACL,eAAe,EAAE;gBACf,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;oBAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAE5C,OAAO;wBACL,IAAI;wBACJ,IAAI;wBACJ,QAAQ,EAAE,KAAK,GAAG,CAAC;qBACpB,CAAA;gBACH,CAAC,CAAC;gBACF;oBACE,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;oBAC/B,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;iBAChC;aACF;YACD,aAAa,EAAE,UAAU,CAAC,MAAM;SACjC,CAAA;IACH,CAAC;IACD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,cAAc,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CACnE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,aAAa,EAAE,SAAS,IAAI,EAAE;YAC9B,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;YACzD,QAAQ,EAAE,UAAU;SACrB,CAAC,CACH,CAAA;QAED,IAAG,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAA6B,CAAA;QAEtD,MAAM,YAAY,GAAG,OAAO,KAAK,SAAS,CAAA;QAE1C,sGAAsG;QACtG,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAA;QACnB,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;QAEvC,IAAI,cAAc,GAAG,YAAY;YAC/B,CAAC,CAAC,cAAc,CAAC,MAAM,CACnB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,KAAK,OAAO,CAC3D;YACH,CAAC,CAAC,cAAc,CAAA;QAElB,cAAc;YACZ,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAA;QAE/D,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC;IACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM;IAC3B,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;IACtD,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;IAChB,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,OAAO;SACT,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACd,IAAA,+CAAsB,EAAC;QACrB,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,MAAM;QACN,OAAO,EAAE,IAAI;KACd,CAAC,CACH;SACA,IAAI,CAAC,6BAAc,CAAC;IACzB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;IAC3B,kBAAkB,EAAE,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,cAAc,GAAG,EAAE,EAC/B,iBAAiB,GAAG,EAAE,GACvB,EAAE,EAAE;QACH,MAAM,2BAA2B,GAAG,cAAc,CAAC,OAAO,CACxD,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACrB,IAAI;YACJ,KAAK;YACL,cAAc,EAAE,gCAAgB,CAAC,aAAa;SAC/C,CAAC,CAAC,CACN,CAAA;QAED,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,GAAG,CACpD,yCAAyB,CAC1B,CAAA;QAED,OAAO,CAAC,GAAG,2BAA2B,EAAE,GAAG,wBAAwB,CAAC,CAAA;IACtE,CAAC;IACD,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE;CACrE,CAAA"}
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/product.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StorePropertyValue = void 0;
4
4
  const propertyValue_1 = require("../utils/propertyValue");
5
5
  exports.StorePropertyValue = {
6
- propertyID: (root) => (0, propertyValue_1.getPropertyId)(root),
6
+ propertyID: (root) => root.propertyID || (0, propertyValue_1.getPropertyId)(root),
7
7
  name: ({ name }) => name,
8
8
  value: ({ value }) => value,
9
9
  valueReference: ({ valueReference }) => valueReference,
@@ -1 +1 @@
1
- {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/propertyValue.ts"],"names":[],"mappings":";;;AAEA,0DAAsD;AAIzC,QAAA,kBAAkB,GAAmC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC;IACzC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IACxB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC3B,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc;CACvD,CAAA"}
1
+ {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/propertyValue.ts"],"names":[],"mappings":";;;AAEA,0DAAsD;AAIzC,QAAA,kBAAkB,GAAmC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAA,6BAAa,EAAC,IAAI,CAAC;IAC5D,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IACxB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC3B,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc;CACvD,CAAA"}
@@ -1,12 +1,23 @@
1
1
  import type { IStorePropertyValue } from '../../../__generated__/schema';
2
2
  import type { Attachment } from '../clients/commerce/types/OrderForm';
3
+ import type { Attribute } from '../clients/search/types/ProductSearchResult';
3
4
  export declare const VALUE_REFERENCES: {
4
5
  readonly attachment: "ATTACHMENT";
5
6
  readonly specification: "SPECIFICATION";
7
+ readonly attribute: "ATTRIBUTE";
6
8
  };
7
9
  export declare function attachmentToPropertyValue(attachment: Attachment): {
8
10
  name: string;
9
11
  value: Record<string, string>;
10
12
  valueReference: "ATTACHMENT";
11
13
  };
14
+ export declare function attributeToPropertyValue(attribute: Attribute): {
15
+ propertyID: string;
16
+ name: string;
17
+ value: string;
18
+ valueReference: {
19
+ valueReference: "ATTRIBUTE";
20
+ visible: boolean;
21
+ };
22
+ };
12
23
  export declare function getPropertyId(item: IStorePropertyValue): string;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPropertyId = exports.attachmentToPropertyValue = exports.VALUE_REFERENCES = void 0;
3
+ exports.getPropertyId = exports.attributeToPropertyValue = exports.attachmentToPropertyValue = exports.VALUE_REFERENCES = void 0;
4
4
  const md5_1 = require("./md5");
5
5
  exports.VALUE_REFERENCES = {
6
6
  attachment: 'ATTACHMENT',
7
7
  specification: 'SPECIFICATION',
8
+ attribute: 'ATTRIBUTE',
8
9
  };
9
10
  function attachmentToPropertyValue(attachment) {
10
11
  return {
@@ -14,6 +15,18 @@ function attachmentToPropertyValue(attachment) {
14
15
  };
15
16
  }
16
17
  exports.attachmentToPropertyValue = attachmentToPropertyValue;
18
+ function attributeToPropertyValue(attribute) {
19
+ return {
20
+ propertyID: attribute.id,
21
+ name: attribute.name,
22
+ value: attribute.value,
23
+ valueReference: {
24
+ valueReference: exports.VALUE_REFERENCES.attribute,
25
+ visible: attribute.visible,
26
+ },
27
+ };
28
+ }
29
+ exports.attributeToPropertyValue = attributeToPropertyValue;
17
30
  function getPropertyId(item) {
18
31
  return (0, md5_1.md5)(`${item.name}:${JSON.stringify(item.value)}:${item.valueReference}`);
19
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/propertyValue.ts"],"names":[],"mappings":";;;AAEA,+BAA2B;AAEd,QAAA,gBAAgB,GAAG;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAA;AAEV,SAAgB,yBAAyB,CAAC,UAAsB;IAC9D,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,OAAO;QACzB,cAAc,EAAE,wBAAgB,CAAC,UAAU;KAC5C,CAAA;AACH,CAAC;AAND,8DAMC;AAED,SAAgB,aAAa,CAAC,IAAyB;IACrD,OAAO,IAAA,SAAG,EACR,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CACpE,CAAA;AACH,CAAC;AAJD,sCAIC"}
1
+ {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/propertyValue.ts"],"names":[],"mappings":";;;AAGA,+BAA2B;AAEd,QAAA,gBAAgB,GAAG;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;CACd,CAAA;AAEV,SAAgB,yBAAyB,CAAC,UAAsB;IAC9D,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,OAAO;QACzB,cAAc,EAAE,wBAAgB,CAAC,UAAU;KAC5C,CAAA;AACH,CAAC;AAND,8DAMC;AAED,SAAgB,wBAAwB,CAAC,SAAoB;IAC3D,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,EAAE;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE;YACd,cAAc,EAAE,wBAAgB,CAAC,SAAS;YAC1C,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B;KACF,CAAA;AACH,CAAC;AAVD,4DAUC;AAED,SAAgB,aAAa,CAAC,IAAyB;IACrD,OAAO,IAAA,SAAG,EACR,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CACpE,CAAA;AACH,CAAC;AAJD,sCAIC"}
@@ -17,7 +17,7 @@ type StorePropertyValue {
17
17
  """
18
18
  Specifies the nature of the value
19
19
  """
20
- valueReference: String!
20
+ valueReference: ObjectOrString!
21
21
  }
22
22
 
23
23
  input IStorePropertyValue {
@@ -36,5 +36,5 @@ input IStorePropertyValue {
36
36
  """
37
37
  Specifies the nature of the value
38
38
  """
39
- valueReference: String!
39
+ valueReference: ObjectOrString!
40
40
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "3.0.7",
3
+ "version": "3.0.20",
4
4
  "license": "MIT",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "typings": "dist/esm/src/index.d.ts",
@@ -249,7 +249,7 @@ export type IStorePropertyValue = {
249
249
  /** Property value. May hold a string or the string representation of an object. */
250
250
  value: Scalars['ObjectOrString'];
251
251
  /** Specifies the nature of the value */
252
- valueReference: Scalars['String'];
252
+ valueReference: Scalars['ObjectOrString'];
253
253
  };
254
254
  /** Selected search facet input. */
255
255
  export type IStoreSelectedFacet = {
@@ -936,7 +936,7 @@ export type StorePropertyValue = {
936
936
  /** Property value. May hold a string or the string representation of an object. */
937
937
  value: Scalars['ObjectOrString'];
938
938
  /** Specifies the nature of the value */
939
- valueReference: Scalars['String'];
939
+ valueReference: Scalars['ObjectOrString'];
940
940
  };
941
941
  /**
942
942
  * Redirect informations, including url returned by the query.
@@ -136,6 +136,7 @@ export interface Item {
136
136
  itemId: string;
137
137
  amount: number;
138
138
  }>;
139
+ attributes: Attribute[];
139
140
  }
140
141
  export interface CommertialOffer {
141
142
  DeliverySlaSamplesPerRegion: Record<string, {
@@ -203,4 +204,10 @@ interface SpecificationGroup {
203
204
  values: string[];
204
205
  }>;
205
206
  }
207
+ export interface Attribute {
208
+ id: string;
209
+ name: string;
210
+ value: string;
211
+ visible: boolean;
212
+ }
206
213
  export {};
@@ -0,0 +1,14 @@
1
+ import type { Options, Context } from '../../';
2
+ export type SearchEvent = {
3
+ type: 'search.query';
4
+ text: string;
5
+ misspelled: boolean;
6
+ match: number;
7
+ operator: 'and' | 'or';
8
+ locale: string;
9
+ session?: string;
10
+ anonymous?: string;
11
+ };
12
+ export declare const SP: ({ account }: Options, _: Context) => {
13
+ sendEvent: (options: SearchEvent) => Promise<any>;
14
+ };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Client for SP, Intelligent search's analytics event API
3
+ * More info at: https://www.notion.so/vtexhandbook/Event-API-Documentation-48eee26730cf4d7f80f8fd7262231f84
4
+ */
5
+ import { fetchAPI } from '../fetch';
6
+ const THIRTY_MINUTES_S = 30 * 60;
7
+ const ONE_YEAR_S = 365 * 24 * 3600;
8
+ const randomUUID = () => (Math.random() * 1e6).toFixed(0);
9
+ const timelapsed = (past) => (Date.now() - past) / 1e3;
10
+ const createId = (expiresSecond) => {
11
+ let payload = randomUUID();
12
+ let createdAt = Date.now();
13
+ return () => {
14
+ if (timelapsed(createdAt) > expiresSecond) {
15
+ payload = randomUUID();
16
+ createdAt = Date.now();
17
+ }
18
+ return payload;
19
+ };
20
+ };
21
+ const user = {
22
+ anonymous: createId(ONE_YEAR_S),
23
+ session: createId(THIRTY_MINUTES_S),
24
+ };
25
+ export const SP = ({ account }, _) => {
26
+ const base = `https://sp.vtex.com/event-api/v1/${account}/event`;
27
+ const sendEvent = (options) => {
28
+ return fetchAPI(base, {
29
+ method: 'POST',
30
+ body: JSON.stringify({
31
+ ...options,
32
+ agent: '@faststore/api',
33
+ anonymous: user.anonymous(), // 'zZlNhqz1vFJP6iPG5Oqtt'
34
+ session: user.session(), // 'Om1TNluGvgmSgU5OOTvkkd'
35
+ }),
36
+ headers: {
37
+ 'content-type': 'application/json',
38
+ },
39
+ });
40
+ };
41
+ return {
42
+ sendEvent,
43
+ };
44
+ };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/platforms/vtex/clients/sp/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAA;AAChC,MAAM,UAAU,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA;AAE9D,MAAM,QAAQ,GAAG,CAAC,aAAqB,EAAE,EAAE;IACzC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAA;IAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE1B,OAAO,GAAG,EAAE;QACV,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,aAAa,EAAE,CAAC;YAC1C,OAAO,GAAG,UAAU,EAAE,CAAA;YACtB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;CACpC,CAAA;AAaD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAW,EAAE,CAAU,EAAE,EAAE;IACrD,MAAM,IAAI,GAAG,oCAAoC,OAAO,QAAQ,CAAA;IAEhE,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAE,EAAE;QACzC,OAAO,QAAQ,CAAC,IAAI,EAAE;YACpB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,GAAG,OAAO;gBACV,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,0BAA0B;gBACvD,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,2BAA2B;aACrD,CAAC;YACF,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
@@ -2,7 +2,7 @@ import { canonicalFromProduct } from '../utils/canonical';
2
2
  import { enhanceCommercialOffer } from '../utils/enhanceCommercialOffer';
3
3
  import { bestOfferFirst } from '../utils/productStock';
4
4
  import { slugify } from '../utils/slugify';
5
- import { attachmentToPropertyValue, VALUE_REFERENCES, } from '../utils/propertyValue';
5
+ import { attachmentToPropertyValue, attributeToPropertyValue, VALUE_REFERENCES, } from '../utils/propertyValue';
6
6
  const DEFAULT_IMAGE = {
7
7
  imageText: 'image',
8
8
  imageUrl: 'https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg',
@@ -79,14 +79,19 @@ export const StoreProduct = {
79
79
  isVariantOf: (root) => root,
80
80
  additionalProperty: ({
81
81
  // Search uses the name variations for specifications
82
- variations: specifications = [], attachmentsValues = [], }) => {
82
+ variations: specifications = [], attachmentsValues = [], attributes = [], }) => {
83
83
  const propertyValueSpecifications = specifications.flatMap(({ name, values }) => values.map((value) => ({
84
84
  name,
85
85
  value,
86
86
  valueReference: VALUE_REFERENCES.specification,
87
87
  })));
88
88
  const propertyValueAttachments = attachmentsValues.map(attachmentToPropertyValue);
89
- return [...propertyValueSpecifications, ...propertyValueAttachments];
89
+ const propertyValueAttributes = attributes.map(attributeToPropertyValue);
90
+ return [
91
+ ...propertyValueSpecifications,
92
+ ...propertyValueAttachments,
93
+ ...propertyValueAttributes,
94
+ ];
90
95
  },
91
96
  releaseDate: ({ isVariantOf: { releaseDate } }) => releaseDate ?? '',
92
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/product.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/product.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { getPropertyId } from '../utils/propertyValue';
2
2
  export const StorePropertyValue = {
3
- propertyID: (root) => getPropertyId(root),
3
+ propertyID: (root) => root.propertyID || getPropertyId(root),
4
4
  name: ({ name }) => name,
5
5
  value: ({ value }) => value,
6
6
  valueReference: ({ valueReference }) => valueReference,
@@ -1 +1 @@
1
- {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/propertyValue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IACzC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IACxB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC3B,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc;CACvD,CAAA"}
1
+ {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/resolvers/propertyValue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC;IAC5D,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IACxB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC3B,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc;CACvD,CAAA"}
@@ -1,12 +1,23 @@
1
1
  import type { IStorePropertyValue } from '../../../__generated__/schema';
2
2
  import type { Attachment } from '../clients/commerce/types/OrderForm';
3
+ import type { Attribute } from '../clients/search/types/ProductSearchResult';
3
4
  export declare const VALUE_REFERENCES: {
4
5
  readonly attachment: "ATTACHMENT";
5
6
  readonly specification: "SPECIFICATION";
7
+ readonly attribute: "ATTRIBUTE";
6
8
  };
7
9
  export declare function attachmentToPropertyValue(attachment: Attachment): {
8
10
  name: string;
9
11
  value: Record<string, string>;
10
12
  valueReference: "ATTACHMENT";
11
13
  };
14
+ export declare function attributeToPropertyValue(attribute: Attribute): {
15
+ propertyID: string;
16
+ name: string;
17
+ value: string;
18
+ valueReference: {
19
+ valueReference: "ATTRIBUTE";
20
+ visible: boolean;
21
+ };
22
+ };
12
23
  export declare function getPropertyId(item: IStorePropertyValue): string;
@@ -2,6 +2,7 @@ import { md5 } from './md5';
2
2
  export const VALUE_REFERENCES = {
3
3
  attachment: 'ATTACHMENT',
4
4
  specification: 'SPECIFICATION',
5
+ attribute: 'ATTRIBUTE',
5
6
  };
6
7
  export function attachmentToPropertyValue(attachment) {
7
8
  return {
@@ -10,6 +11,17 @@ export function attachmentToPropertyValue(attachment) {
10
11
  valueReference: VALUE_REFERENCES.attachment,
11
12
  };
12
13
  }
14
+ export function attributeToPropertyValue(attribute) {
15
+ return {
16
+ propertyID: attribute.id,
17
+ name: attribute.name,
18
+ value: attribute.value,
19
+ valueReference: {
20
+ valueReference: VALUE_REFERENCES.attribute,
21
+ visible: attribute.visible,
22
+ },
23
+ };
24
+ }
13
25
  export function getPropertyId(item) {
14
26
  return md5(`${item.name}:${JSON.stringify(item.value)}:${item.valueReference}`);
15
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/propertyValue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAA;AAEV,MAAM,UAAU,yBAAyB,CAAC,UAAsB;IAC9D,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,OAAO;QACzB,cAAc,EAAE,gBAAgB,CAAC,UAAU;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAyB;IACrD,OAAO,GAAG,CACR,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CACpE,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"propertyValue.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/propertyValue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;CACd,CAAA;AAEV,MAAM,UAAU,yBAAyB,CAAC,UAAsB;IAC9D,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,OAAO;QACzB,cAAc,EAAE,gBAAgB,CAAC,UAAU;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAoB;IAC3D,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,EAAE;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,cAAc,EAAE;YACd,cAAc,EAAE,gBAAgB,CAAC,SAAS;YAC1C,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAyB;IACrD,OAAO,GAAG,CACR,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CACpE,CAAA;AACH,CAAC"}
@@ -17,7 +17,7 @@ type StorePropertyValue {
17
17
  """
18
18
  Specifies the nature of the value
19
19
  """
20
- valueReference: String!
20
+ valueReference: ObjectOrString!
21
21
  }
22
22
 
23
23
  input IStorePropertyValue {
@@ -36,5 +36,5 @@ input IStorePropertyValue {
36
36
  """
37
37
  Specifies the nature of the value
38
38
  """
39
- valueReference: String!
39
+ valueReference: ObjectOrString!
40
40
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "3.0.20",
3
+ "version": "3.0.21",
4
4
  "license": "MIT",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "typings": "dist/esm/src/index.d.ts",
@@ -76,5 +76,5 @@
76
76
  "volta": {
77
77
  "extends": "../../package.json"
78
78
  },
79
- "gitHead": "c75d1f53d7efeae52483db94d9e66ddbebb8de5f"
79
+ "gitHead": "ef086297cc7d6882d73138b5d8aa60a8713c7136"
80
80
  }
@@ -259,7 +259,7 @@ export type IStorePropertyValue = {
259
259
  /** Property value. May hold a string or the string representation of an object. */
260
260
  value: Scalars['ObjectOrString'];
261
261
  /** Specifies the nature of the value */
262
- valueReference: Scalars['String'];
262
+ valueReference: Scalars['ObjectOrString'];
263
263
  };
264
264
 
265
265
  /** Selected search facet input. */
@@ -1026,7 +1026,7 @@ export type StorePropertyValue = {
1026
1026
  /** Property value. May hold a string or the string representation of an object. */
1027
1027
  value: Scalars['ObjectOrString'];
1028
1028
  /** Specifies the nature of the value */
1029
- valueReference: Scalars['String'];
1029
+ valueReference: Scalars['ObjectOrString'];
1030
1030
  };
1031
1031
 
1032
1032
  /**
@@ -140,6 +140,7 @@ export interface Item {
140
140
  itemId: string
141
141
  amount: number
142
142
  }>
143
+ attributes: Attribute[]
143
144
  }
144
145
 
145
146
  export interface CommertialOffer {
@@ -214,3 +215,10 @@ interface SpecificationGroup {
214
215
  values: string[]
215
216
  }>
216
217
  }
218
+
219
+ export interface Attribute {
220
+ id: string
221
+ name: string
222
+ value: string
223
+ visible: boolean
224
+ }
@@ -8,6 +8,7 @@ import type { PromiseType } from '../../../typings'
8
8
  import type { Query } from './query'
9
9
  import {
10
10
  attachmentToPropertyValue,
11
+ attributeToPropertyValue,
11
12
  VALUE_REFERENCES,
12
13
  } from '../utils/propertyValue'
13
14
  import type { Attachment } from '../clients/commerce/types/OrderForm'
@@ -129,6 +130,7 @@ export const StoreProduct: Record<string, Resolver<Root>> & {
129
130
  // Search uses the name variations for specifications
130
131
  variations: specifications = [],
131
132
  attachmentsValues = [],
133
+ attributes = [],
132
134
  }) => {
133
135
  const propertyValueSpecifications = specifications.flatMap(
134
136
  ({ name, values }) =>
@@ -143,7 +145,13 @@ export const StoreProduct: Record<string, Resolver<Root>> & {
143
145
  attachmentToPropertyValue
144
146
  )
145
147
 
146
- return [...propertyValueSpecifications, ...propertyValueAttachments]
148
+ const propertyValueAttributes = attributes.map(attributeToPropertyValue)
149
+
150
+ return [
151
+ ...propertyValueSpecifications,
152
+ ...propertyValueAttachments,
153
+ ...propertyValueAttributes,
154
+ ]
147
155
  },
148
156
  releaseDate: ({ isVariantOf: { releaseDate } }) => releaseDate ?? '',
149
157
  }
@@ -5,7 +5,7 @@ import { getPropertyId } from '../utils/propertyValue'
5
5
  export type Root = StorePropertyValueType
6
6
 
7
7
  export const StorePropertyValue: Record<string, Resolver<Root>> = {
8
- propertyID: (root) => getPropertyId(root),
8
+ propertyID: (root) => root.propertyID || getPropertyId(root),
9
9
  name: ({ name }) => name,
10
10
  value: ({ value }) => value,
11
11
  valueReference: ({ valueReference }) => valueReference,
@@ -1,10 +1,12 @@
1
1
  import type { IStorePropertyValue } from '../../../__generated__/schema'
2
2
  import type { Attachment } from '../clients/commerce/types/OrderForm'
3
+ import type { Attribute } from '../clients/search/types/ProductSearchResult'
3
4
  import { md5 } from './md5'
4
5
 
5
6
  export const VALUE_REFERENCES = {
6
7
  attachment: 'ATTACHMENT',
7
8
  specification: 'SPECIFICATION',
9
+ attribute: 'ATTRIBUTE',
8
10
  } as const
9
11
 
10
12
  export function attachmentToPropertyValue(attachment: Attachment) {
@@ -15,6 +17,18 @@ export function attachmentToPropertyValue(attachment: Attachment) {
15
17
  }
16
18
  }
17
19
 
20
+ export function attributeToPropertyValue(attribute: Attribute) {
21
+ return {
22
+ propertyID: attribute.id,
23
+ name: attribute.name,
24
+ value: attribute.value,
25
+ valueReference: {
26
+ valueReference: VALUE_REFERENCES.attribute,
27
+ visible: attribute.visible,
28
+ },
29
+ }
30
+ }
31
+
18
32
  export function getPropertyId(item: IStorePropertyValue) {
19
33
  return md5(
20
34
  `${item.name}:${JSON.stringify(item.value)}:${item.valueReference}`
@@ -17,7 +17,7 @@ type StorePropertyValue {
17
17
  """
18
18
  Specifies the nature of the value
19
19
  """
20
- valueReference: String!
20
+ valueReference: ObjectOrString!
21
21
  }
22
22
 
23
23
  input IStorePropertyValue {
@@ -36,5 +36,5 @@ input IStorePropertyValue {
36
36
  """
37
37
  Specifies the nature of the value
38
38
  """
39
- valueReference: String!
39
+ valueReference: ObjectOrString!
40
40
  }