[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of storedash-proxy/README.md from the storedash-proxy VTEX app.

[Assistant]
Here's the implementation:

```markdown
# React+GraphQL
Example app to show how to create an app using React and GraphQL.

This App acts as a catalog management system and uses some advanced VTEX IO GraphQL features, like `@autopersisted` and `@cacheControl` directives.

## Autopersisted Types
Once a GraphQL type is decorated with the `@autopersisted` directive, VTEX IO Builders automatically generates all CRUD operations for that type. If you want to know more about autopersisted types, read our [wiki](https://github.com/vtex/graphql-server/wiki/Features#autopersisted-types)

## Cached Types
VTEX IO GraphQL increases the performance of your queries by caching types decorated with `@cacheControl` hints directly in the CDN. To know more about GraphQL cache hints, visit [apollo](https://www.apollographql.com/docs/engine/caching.html)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of storedash-proxy/manifest.json from the storedash-proxy VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "storedash-proxy",
  "vendor": "vtex",
  "version": "0.2.0",
  "title": "IO Console API",
  "description": "VTEX developer console API",
  "mustUpdateAt": "2019-10-16",
  "scripts": {
    "postreleasy": "vtex publish --public"
  },
  "builders": {
    "node": "3.x",
    "graphql": "1.x"
  },
  "credential": "relative",
  "policies": [
    {
      "name": "read-workspace-apps"
    },
    {
      "name": "vbase-read-write"
    },
    {
      "name": "read-private-registry-assets"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "api.vtex.com",
        "path": "/api/storedash/{{account}}/metrics/*"
      }
    }
  ]
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of supplier-provider-example/dangerfile.js from the supplier-provider-example VTEX app.

[Assistant]
Here's the implementation:

```javascript
// dangerfile.js
const { verify } = require('@vtex/danger')

const config = {
  // Set to true to enforce keepachangelog rules.
  keepachangelog: {
    changeVersion: false,
  },
  rules: {
    description: ['fail', { minLength: 20 }],
    assignee: 'fail',
    reviewers: 'fail',
    pr_size: ['warn', { additionLimit: 800, deletionLimit: -1 }],
    lock_file: 'warn',
    no_ignored_test: ['fail', { pattern: /test|spec/i }],
    no_debugger: ['fail', { pattern: /\.[tj]sx?$/i }],
    enforce_graphql_provider: 'off',
  },
}

verify(config)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of supplier-provider-example/README.md from the supplier-provider-example VTEX app.

[Assistant]
Here's the implementation:

```markdown
# Supplier Protocol

### Glossary

| Word               | Meaning                                                                                |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Supplier           | Anyone who provides a service to the merchant and participate in the split                                                                            |
| Split              | The operation that splits the amount of the payment among the suppliers                                                                               |
| Supplier Provider  | An API that provides the supplier that will be called by the `recipients builder`                                                                     |
| [Recipients builder](https://github.com/vtex/recipients-builder) | The IO App that will identify the supplier provider linked in the account and will request all the providers, then send the result to the ``gateway`` |
| Gateway            | The application that process the payment                                                                                |
| Suppliers Providers Builder | A builder present in the builder-hub, declared in the manifest.json <br> This builder automatically sets the route that will be called by the recipients-builder and the necessaries policies of the supplier provider |

# Supplier Protocol

## How It Works

An brief overview of the Supplier Protocol is this image
![Supplier Protocol Overview](docs///SupplierProtocol.png)

In the moment where the split will occurr the `RecipientsBuilder` app will be called. This app will make a request to all apps that use the `SupplierProviderBuilder`, after that it will respond the merged recipients to the `Payment Gateway`.
The route that will be called by the `RecipientsBuilder` app is `/minicart-supplier`

### Pre-requirements
There are some mandatory requirements to use the Supplier Protocol
- The recipient builder app **must** be installed in the account
  - You can check if is installed by `vtex ls` command
  - If it's not you can install using `vtex install recipients-builder`
- You need to configure the account to use split. So you must use an connector that allows split and a configured afiliation.

### The payload format
Currently the data that the supplier provider will receive has this payload:
```ts
{
  miniCart: MiniCart
  transactionId?: string
  orderId?: string
  currency?: string = 'BRL'
  operationValue?: number
  chargeProcessingFee?: boolean = null
  chargebackLiable?: boolean = null
  proportionalRefund?: boolean = false
}
```
Where MiniCart is
```ts
{
  items?: Items[]
  sellers?: Array<{
    id: string
    name: string
    document: string
    documentType: string
  }>
  freight?: number
  orderUrl?: string
  tax?: number
  shippingdate?: Date
  shippingestimated?: string
  isGiftRegistry?: bool
  giftRegistryDescription?: string
  giftRegistryId?: strinsg
  isPickupStore?: boolean
  isCallCenter?: bool
}
```
Where Item is
```ts
 {
  id: string
  name: string
  value: number
  quantity: number
  priceTags?: [
    {
      name: string
      value: number
      isPercentual: bool
    }
  ]
  components?: Item[]
  comissions?: number
  freightCommission?: number
  sellerChain?: string[]
  shippingDiscout?: number
  discount?: number
  refId?: string
  productId?: string
  sellingPrice?: number
  sellerId?: string | null
  dockId?: string
  categoryId?: string
  categoryName?: string
  deliveryChannel?: string
  deliveryType?: string
  deliverySlaInMinutes?: Long
  deliveryWindow?: {
    startDate: Date
    endDate: Date
  }
  tax?: number
  freight?: number
}
```

### The response format
The expected response type is a list of suppliers
  ```Typescript
    [{
      id: string
      name: string
      documentType: string
      document: string
      role: string
      amount: number
    }]
  ```

# Implementing a supplier provider

1. Clone this repo
2. Verify the configs and requirements
3. Start hacking!

In this example, you can just write you implementation in this controller:

```ts
export async function provideSuppliersUsingMiniCart({
  req,
  response,
}: Context) {
  const payload = await json(req)
  const suppliers = getSuppliersByMiniCart(payload)

  response.status = 200
  response.body = suppliers
}
```

#### Verify Builder

The `Supplier Provider Builder` will automatically set the route `/minicart-suppliers` , this route is the one that will be called by the `Recipients Builder` . By default this build is already declared in this example.
``` json
{
	...

	"builders":
	{
		"supplierProvider": "0.x",
		"node": "6.x"
	}
	...
}
```
If the `supplierProvider` build it's not declared the app will not be used

## Testing

You can test your Supplier Provider by link it (`vtex link`) and mock the Gateway request, by making a resquest to this route:
```
POST https://app.io.vtex.com/vtex.recipients-builder/v1/{account}/{workspace}/minicart-suppliers
```
The payload that you need to send implements the same interface that you will be recieving.

Here's an example of payload

``` json

{
    "transactionId": "8C8D8541553211EEE2D08E3B3B3F9",
    "orderId": "1234567",
    "currency": "BRL",
    "operationValue": 38639,
    "chargeProcessingFee": "false",
    "chargebackLiable": "false",
    "proportionalRefund": "false",
    "miniCart": {
        "items": [
            {
                "id": "76671",
                "name": "Mocked Item",
                "value": 0,
                "quantity": 1,
                "priceTags": [],
                "components": null,
                "commission": 0,
                "freightCommission": 0,
                "sellerChain": null,
                "shippingDiscount": 0,
                "discount": 0,
                "refId": null,
                "productId": null,
                "sellingPrice": 0,
                "sellerId": null,
                "dockId": null,
                "categoryId": null,
                "categoryName": null,
                "catergoryName": null,
                "deliveryChannel": null,
                "deliveryType": null,
                "deliverySlaInMinutes": null,
                "deliveryWindow": null,
                "tax": 0,
                "freight": 0
            }
        ],
        "freight": 1739,
        "orderUrl": "http://www.someaccount.com/admin/checkout/#/orders?q=10000",
        "tax": 0,
        "shippingdate": null,
        "shippingestimated": "2bd",
        "isGiftRegistry": null,
        "giftRegistryDescription": null,
        "giftRegistryId": null,
        "isPickupStore": null,
        "isCallCenter": null
    }
}
```
If everything works well the response it will be a list like this:
```json
[
    {
        "id": "mock",
        "name": "mocked",
        "amount": 38639,
        "document": "1111",
        "documentType": "CNPJ",
        "role": "influencer",
        "commissionAmount": 100,
        "chargebackLiable": false,
        "chargeProcesssingFee": false
    },
    {
        "id": "coinshop",
        "name": "coinshop",
        "documentType": "CNPJ",
        "document": "05314972000174",
        "role": "seller",
        "amount": 0,
        "commissionAmount": 0,
        "chargeProcessingFee": "false",
        "chargebackLiable": "false"
    }
]
```
#### Attention: The sum of recipients amount must be less or equal to the transaction value

After this you can try to finish a transaction using a account that allows supplier protocol. If everything is ok, the recipients of the transaction it will be the provided by the supplier provider apps installed in the account

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of supplier-provider-example/package.json from the supplier-provider-example VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "service-example",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "^12.12.21",
    "@vtex/danger": "^0.2.7",
    "@vtex/prettier-config": "^1.0.0",
    "eslint": "^7.16.0",
    "eslint-config-vtex": "^12.9.3",
    "husky": "^4.3.6",
    "lint-staged": "^10.5.3",
    "prettier": "^2.2.1",
    "typescript": "^3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of supplier-provider-example/manifest.json from the supplier-provider-example VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "supplier-provider-example",
  "vendor": "vtex",
  "version": "0.0.0",
  "title": "Supplier Provider",
  "description": "Reference app for Supplier Provider Protocol usage",
  "mustUpdateAt": "2022-08-01",
  "categories": [],
  "dependencies": {
    "vtex.recipients-builder": "1.x"
  },
  "builders": {
    "supplierProvider": "0.x",
    "node": "6.x"
  },
  "scripts": {
    "prereleasy": "bash lint.sh"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "colossus-fire-event"
    },
    {
      "name": "colossus-write-logs"
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of shipping-option-components/package.json from the shipping-option-components VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "version": "0.0.0",
  "name": "shipping-option-components",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\"",
    "lint:locales": "intl-equalizer",
    "test": "cd ./react && yarn test"
  },
  "intl-equalizer": {
    "referenceLocale": "en",
    "localeDirectory": "messages"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ],
    "messages/*.json": [
      "yarn lint:locales"
    ]
  },
  "devDependencies": {
    "@vtex/intl-equalizer": "^2.5.0",
    "@vtex/prettier-config": "^0.3.5",
    "eslint": "^7.14.0",
    "eslint-config-vtex": "^12.8.11",
    "eslint-config-vtex-react": "^6.8.3",
    "husky": "^4.3.0",
    "lint-staged": "^10.5.1",
    "prettier": "^2.2.0",
    "typescript": "^3.9.6"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of shipping-option-components/manifest.json from the shipping-option-components VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "vendor": "vtex",
  "name": "shipping-option-components",
  "version": "2.0.0",
  "title": "Shipping Option Zipcode component",
  "description": "Shipping Option Zipcode component",
  "builders": {
    "react": "3.x",
    "messages": "1.x",
    "docs": "0.x",
    "store": "0.x"
  },
  "dependencies": {
    "vtex.styleguide": "9.x",
    "vtex.css-handles": "0.x",
    "vtex.render-runtime": "8.x",
    "vtex.pixel-manager": "1.x",
    "vtex.device-detector": "0.x",
    "vtex.address-form": "4.x",
    "vtex.product-summary-context": "0.x",
    "vtex.order-items": "0.x"
  },
  "registries": [
    "smartcheckout"
  ],
  "policies": [],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of policies-example/dangerfile.js from the policies-example VTEX app.

[Assistant]
Here's the implementation:

```javascript
// dangerfile.js
const { verify } = require('@vtex/danger')

const config = {
  // Set to true to enforce keepachangelog rules.
  keepachangelog: {
    changeVersion: false,
  },
  rules: {
    description: ['fail', { minLength: 20 }],
    assignee: 'fail',
    reviewers: 'fail',
    pr_size: ['warn', { additionLimit: 800, deletionLimit: -1 }],
    lock_file: 'warn',
    no_ignored_test: ['fail', { pattern: /test|spec/i }],
    no_debugger: ['fail', { pattern: /\.[tj]sx?$/i }],
    enforce_graphql_provider: 'off',
  },
}

verify(config)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of policies-example/package.json from the policies-example VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "service-example",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "^12.12.21",
    "@vtex/danger": "^0.2.7",
    "@vtex/prettier-config": "^0.3.6",
    "eslint": "^7.16.0",
    "eslint-config-vtex": "^12.9.3",
    "husky": "^4.3.6",
    "lint-staged": "^10.5.3",
    "prettier": "^2.2.1",
    "typescript": "^3.7.5"
  },
  "dependencies": {
    "dom-parser": "^0.1.6"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of policies-example/manifest.json from the policies-example VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "policies-example",
  "vendor": "vtex",
  "version": "1.3.1",
  "title": "Service Example",
  "description": "Reference app for VTEX IO Services",
  "mustUpdateAt": "2018-01-04",
  "categories": [],
  "dependencies": {},
  "builders": {
    "node": "6.x",
    "docs": "0.x"
  },
  "scripts": {
    "prereleasy": "bash lint.sh"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "outbound-access",
      "attrs": {
        "host": "httpstat.us",
        "path": "*"
      }
    },
    {
      "name": "colossus-fire-event"
    },
    {
      "name": "colossus-write-logs"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "ergast.com",
        "path": "/api/f1/2020/*"
      }
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of broadcaster-worker/policies.json from the broadcaster-worker VTEX app.

[Assistant]
Here's the implementation:

```json
[
  {
    "name": "index-routes",
    "description": "Allows access to send change notifications for all items in the store's catalog",
    "statements": [
      {
        "effect": "allow",
        "actions": ["post"],
        "resources": [
          "vrn:vtex.broadcaster-worker:{{region}}:{{account}}:{{workspace}}:/index-routes"
        ]
      }
    ]
  }
]

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of broadcaster-worker/manifest.json from the broadcaster-worker VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema",
  "name": "broadcaster-worker",
  "vendor": "vtex",
  "version": "0.5.2",
  "title": "Broadcaster Worker",
  "description": "Reference app for VTEX IO Services",
  "dependencies": {
    "vtex.catalog-api-proxy": "0.x",
    "vtex.catalog-graphql": "1.x"
  },
  "builders": {
    "node": "6.x",
    "docs": "0.x"
  },
  "scripts": {
    "prereleasy": "bash lint.sh"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "outbound-access",
      "attrs": {
        "host": "portal.vtexcommercestable.com.br",
        "path": "/api/segments/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "portal.vtexcommercestable.com.br",
        "path": "/api/tenant/tenants"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "{{account}}.vtexcommercestable.com.br",
        "path": "/api/catalog_system/*"
      }
    },
    {
      "name": "colossus-fire-event"
    },
    {
      "name": "colossus-write-logs"
    },
    {
      "name": "vbase-read-write"
    },
    {
      "name": "vtex.catalog-graphql:resolve-graphql"
    }
  ],
  "settingsSchema": {
    "title": "VTEX Broadcaster-worker",
    "type": "object",
    "properties": {
      "disableIndexation": {
        "title": "Disable update events",
        "description": "This will make the app not raise update events.",
        "type": "boolean",
        "default": false
      }
    }
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of datadog-log-forwarder/manifest.json from the datadog-log-forwarder VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "datadog-log-forwarder",
  "vendor": "vtex",
  "version": "0.0.1",
  "title": "Datadog Log Forwarder",
  "description": "Consumes logs from VTEX IO and forwards to Datadog",
  "categories": [],
  "dependencies": {},
  "builders": {
    "node": "6.x",
    "docs": "0.x"
  },
  "settingsSchema": {
    "title": "VTEX Datadog Log Forwarder",
    "type": "object",
    "properties": {
      "region": {
        "title": "Datadog Region",
        "type": "string",
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "com"
            ],
            "title": "Datadog US"
          },
          {
            "type": "string",
            "enum": [
              "eu"
            ],
            "title": "Datadog EU"
          }
        ]
      },
      "apiKey": {
        "title": "Datadog API Key",
        "description": "Setup a API key and paste here",
        "type": "string"
      }
    }
  },
  "scripts": {
    "prereleasy": "bash lint.sh"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "outbound-access",
      "attrs": {
        "host": "http-intake.logs.datadoghq.com",
        "path": "/v1/input/"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "http-intake.logs.datadoghq.eu",
        "path": "/v1/input/"
      }
    },
    {
      "name": "read-vendor-logs"
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of trustpilot/package.json from the trustpilot VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "trustpilot",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@vtex/prettier-config": "^0.1.3",
    "eslint": "^6.8.0",
    "eslint-config-vtex": "^12.2.1",
    "eslint-config-vtex-react": "^6.2.1",
    "husky": "^4.2.0",
    "lint-staged": "^10.0.2",
    "prettier": "^1.19.1",
    "typescript": "^3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of trustpilot/manifest.json from the trustpilot VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "trustpilot",
  "vendor": "vtex",
  "version": "2.2.2",
  "title": "Trustpilot",
  "description": "Trustpilot integration",
  "billingOptions": {
    "termsURL": "",
    "support": {
      "url": "https://support.vtex.com/hc/requests"
    },
    "free": true
  },
  "builders": {
    "react": "3.x",
    "store": "0.x",
    "pixel": "0.x",
    "docs": "0.x",
    "messages": "1.x"
  },
  "dependencies": {
    "vtex.pixel-interfaces": "1.x",
    "vtex.render-runtime": "8.x",
    "vtex.shop-review-interfaces": "0.x"
  },
  "settingsSchema": {
    "title": "Trustpilot opions",
    "type": "object",
    "properties": {
      "trustpilotIntegrationKey": {
        "title": "Integration Key",
        "description": "Enter the integration key from your Trustpilot business account",
        "type": "string"
      }
    }
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of vtex-b2b-core/dangerfile.js from the vtex-b2b-core VTEX app.

[Assistant]
Here's the implementation:

```javascript
// dangerfile.js
const { verify } = require('@vtex/danger')

const config = {
  // Set to true to enforce keepachangelog rules.
  keepachangelog: {
    changeVersion: false,
  },
  rules: {
    description: ['fail', { minLength: 20 }],
    assignee: 'fail',
    reviewers: 'fail',
    pr_size: ['warn', { additionLimit: 800, deletionLimit: -1 }],
    lock_file: 'warn',
    no_ignored_test: ['fail', { pattern: /test|spec/i }],
    no_debugger: ['fail', { pattern: /\.[tj]sx?$/i }],
    enforce_graphql_provider: 'off',
  },
}

verify(config)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of vtex-b2b-core/package.json from the vtex-b2b-core VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "b2b-core",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "^12.12.21",
    "@vtex/prettier-config": "^0.3.6",
    "@vtex/danger": "^0.2.7",
    "eslint": "^7.16.0",
    "eslint-config-vtex": "^12.9.3",
    "husky": "^4.3.6",
    "lint-staged": "^10.5.3",
    "prettier": "^2.2.1",
    "typescript": "^3.7.5"
  },
  "dependencies": {}
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of vtex-b2b-core/manifest.json from the vtex-b2b-core VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "b2b-core",
  "vendor": "vtex",
  "version": "1.0.0",
  "title": "B2B Core Admin",
  "description": "App to configure B2B entity in MasterData",
  "scripts": {
    "prereleasy": "bash lint.sh"
  },
  "categories": [],
  "dependencies": {},
  "builders": {
    "masterdata": "1.x",
    "node": "6.x",
    "docs": "0.x"
  },
  "policies": [
    {
      "name": "outbound-access",
      "attrs": {
        "host": "httpstat.us",
        "path": "*"
      }
    },
    {
      "name": "colossus-fire-event"
    },
    {
      "name": "colossus-write-logs"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "api.vtex.com",
        "path": "/api/*"
      }
    },
    {
      "name": "ADMIN_DS"
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of search-segment-graphql/policies.json from the search-segment-graphql VTEX app.

[Assistant]
Here's the implementation:

```json
[
  {
    "name": "resolve-graphql",
    "description": "Allows access to resolve a graphql request",
    "statements": [
      {
        "actions": ["post", "get"],
        "effect": "allow",
        "resources": [
          "vrn:vtex.search-segment-graphql:{{region}}:{{account}}:{{workspace}}:/_v/graphql"
        ]
      }
    ]
  }
]

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of search-segment-graphql/manifest.json from the search-segment-graphql VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "vendor": "vtex",
  "name": "search-segment-graphql",
  "version": "0.1.1",
  "title": "Search segment graphql",
  "description": "GraphQL shchema for the search segment",
  "credentialType": "absolute",
  "builders": {
    "graphql": "1.x",
    "docs": "0.x"
  },
  "dependencies": {
    "vtex.catalog-api-proxy": "0.x"
  },
  "policies": [
    {
      "name": "vtex.catalog-api-proxy:catalog-proxy"
    },
    {
      "name": "vbase-read-write"
    },
    {
      "name": "colossus-fire-event"
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of KI-520322/KI-520322.js from the KI-520322 VTEX app.

[Assistant]
Here's the implementation:

```javascript
function getIdOfElement(elementId) {
  const splited = elementId.split(" ");
  let splitedWithputStart = "";
  splited.forEach((sp, index) => {
    if (index !== 0) {
      if (index === splited.length - 1) {
        splitedWithputStart += sp;
      } else {
        splitedWithputStart += sp + " ";
      }
    }
  });

  const id = splited[0] + "-" + splitedWithputStart;
  return id;
}

function getSlaList(orderForm) {
  var shippingData = orderForm.shippingData;
  const slaList = [];
  shippingData.logisticsInfo.forEach((logisticsInfo) => {
    const selectedSla = logisticsInfo.selectedSla;
    logisticsInfo.slas.forEach((sla) => {
      if (selectedSla === sla.id) {
        if (
          !slaList
            .map((s) => {
              return s.sla;
            })
            .includes(selectedSla)
        ) {
          slaList.push({ sla: sla.id, price: sla.price });
        } else {
          slaList.find((item) => item.sla === selectedSla).price += sla.price;
        }
      }
    });
  });
  return slaList;
}

function changePriceOfElement(slaList){
  slaList.forEach((s) => {
    const elementId = `scheduled-delivery-${s.sla}`;
    const id = getIdOfElement(elementId);
    const delivery = document.querySelector('[id="' + id + '"]');
    if (delivery) {
        delivery.childNodes.forEach((child) => {
          const textContent = child.textContent.split('    ');
          const price = textContent[1].split(' ')
          child.textContent = textContent[0] + '\xA0\xA0\xA0\xA0' + price[0] + ' ' + parseFloat(s.price/100).toFixed(2);
        })
    }
  });
}

vtexjs.checkout.getOrderForm().then((orderForm) => {
  const slaList = getSlaList(orderForm);
  console.log(slaList);
  changePriceOfElement(slaList)
});

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of KI-520322/README.md from the KI-520322 VTEX app.

[Assistant]
Here's the implementation:

```markdown
# [KI-520322] Price divergence between the values of the scheduled delivery with what is shown in the cart and in the summaries

This script solves the KI https://vtexhelp.zendesk.com/agent/tickets/520322

You need to add the script to the checkout at the `checkout6-custom.js`.

### *TO DO: Execute the script every time the items displaying the delivery price are updated.*

## Contributors ✨

Thanks goes to these wonderful people:

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tr>
    <td align="center"><a href="https://github.com/germanBonacchi"><img src="https://avatars.githubusercontent.com/u/55905671?v=4" width="100px;" alt=""/><br /><sub><b>Germán Bonacchi</b></sub></a><br /><a href="https://github.com/vtex-apps/vtex-logger-react/commits?author=germanBonacchi" title="Code">💻</a></td>
</tr>
</table>

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of flixmedia/README.md from the flixmedia VTEX app.

[Assistant]
Here's the implementation:

```markdown
# VTEX FlixMedia

> 🚧 WARNING
>
> This app is now supported by ACCT. For more information and support, email `support@acct.global`.

## Description
VTEX FlixMedia
https://flixmedia.eu/

## Usage

This app uses our store builder with the blocks architecture. To know more about Store Builder [click here.](https://help.vtex.com/en/tutorial/understanding-storebuilder-and-stylesbuilder#structuring-and-configuring-our-store-with-object-object).

To configure or customize this app, you need to import it in your dependencies in `manifest.json`.

```json
  dependencies: {
    "vtex.flixmedia": "0.x"
  }
```

Just add `product-details.flixmedia` as a child in your `store.product` like so:

```json
"store.product": {
    "children": [
      "product-description",
      "product-description.flixmedia",
    ]
}
```

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of flixmedia/manifest.json from the flixmedia VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "flixmedia",
  "vendor": "vtex",
  "version": "0.1.9",
  "title": "Flixmedia",
  "description": "Flix Media",
  "builders": {
    "react": "3.x",
    "graphql": "1.x",
    "node": "4.x",
    "store": "0.x",
    "docs": "0.x"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "vbase-read-write"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "api.flixmedia.com",
        "path": "/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "myvtex.com",
        "path": "/_v/graphql/private/v1"
      }
    }
  ],
  "mustUpdateAt": "2020-01-22",
  "categories": [],
  "registries": [
    "smartcheckout"
  ],
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "settingsSchema": {
    "title": "flixmedia",
    "type": "object",
    "properties": {
      "flixDistributor": {
        "title": "Flix Distributor",
        "description": "Enter Distributor",
        "type": "string"
      },
      "flixLanguage": {
        "title": "Flix Language",
        "description": "Enter Language",
        "type": "string"
      },
      "flixBrand": {
        "title": "Flix Brand",
        "description": "Enter Brand",
        "type": "string"
      },
      "flixButton": {
        "title": "Flix Button",
        "description": "Enter Button",
        "type": "string"
      },
      "flixInpage": {
        "title": "Flix Inpage",
        "description": "Enter Inpage",
        "type": "string"
      },
      "flixButtonImage": {
        "title": "Flix Button Image",
        "description": "Enter Button-image",
        "type": "string"
      },
      "flixPrice": {
        "title": "Flix Price",
        "description": "Enter Price",
        "type": "string"
      },
      "flixFallback": {
        "title": "Flix Fallback",
        "description": "Enter Fallback",
        "type": "string"
      }
    }
  },
  "dependencies": {
    "vtex.styleguide": "9.x",
    "vtex.product-review-interfaces": "1.x",
    "vtex.product-summary": "2.x",
    "vtex.store-header": "2.x",
    "vtex.store": "2.x",
    "vtex.product-context": "0.x",
    "vtex.store-components": "3.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of admin-organizations/manifest.json from the admin-organizations VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "admin-organizations",
  "vendor": "vtex",
  "version": "1.1.0",
  "title": "Admin app for managing organizations",
  "description": "",
  "mustUpdateAt": "2022-08-28",
  "scripts": {
    "postreleasy": "vtex publish"
  },
  "dependencies": {
    "vtex.styleguide": "9.x",
    "vtex.organizations-graphql": "1.x"
  },
  "builders": {
    "react": "3.x",
    "admin": "0.x",
    "messages": "1.x",
    "docs": "0.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of regionalization-theme/manifest.json from the regionalization-theme VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "vendor": "vtex",
  "name": "regionalization-theme",
  "version": "0.0.2",
  "builders": {
    "styles": "2.x",
    "store": "0.x",
    "docs": "0.x"
  },
  "mustUpdateAt": "2018-09-05",
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "dependencies": {
    "vtex.store": "2.x",
    "vtex.store-header": "2.x",
    "vtex.product-summary": "2.x",
    "vtex.store-footer": "2.x",
    "vtex.store-components": "3.x",
    "vtex.styleguide": "9.x",
    "vtex.shelf": "1.x",
    "vtex.menu": "2.x",
    "vtex.minicart": "2.x",
    "vtex.product-details": "1.x",
    "vtex.search": "2.x",
    "vtex.search-result": "3.x",
    "vtex.login": "2.x",
    "vtex.my-account": "1.x",
    "vtex.flex-layout": "0.x",
    "vtex.rich-text": "0.x",
    "vtex.store-drawer": "0.x",
    "vtex.locale-switcher": "0.x",
    "vtex.product-quantity": "1.x",
    "vtex.product-identifier": "0.x",
    "vtex.breadcrumb": "1.x",
    "vtex.sticky-layout": "0.x",
    "vtex.product-customizer": "2.x",
    "vtex.stack-layout": "0.x",
    "vtex.product-specification-badges": "0.x",
    "vtex.telemarketing": "2.x",
    "vtex.order-placed": "2.x",
    "vtex.checkout-summary": "0.x",
    "vtex.product-list": "0.x",
    "vtex.add-to-cart-button": "0.x",
    "vtex.responsive-layout": "0.x",
    "vtex.slider-layout": "0.x",
    "vtex.store-image": "0.x",
    "vtex.store-icons": "0.x",
    "vtex.modal-layout": "0.x",
    "vtex.store-link": "0.x",
    "vtex.store-video": "1.x",
    "vtex.product-gifts": "0.x",
    "vtex.product-price": "1.x",
    "vtex.disclosure-layout": "1.x",
    "vtex.store-form": "0.x",
    "vtex.product-highlights": "2.x",
    "vtex.product-specifications": "1.x",
    "vtex.tab-layout": "0.x",
    "vtex.condition-layout": "2.x",
    "vtex.shipping-option-components": "1.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of releases-graphql/manifest.json from the releases-graphql VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "releases-graphql",
  "vendor": "vtex",
  "version": "0.4.1",
  "title": "Releases Graphql",
  "description": "VTEX Releases GraphQL server",
  "mustUpdateAt": "2019-08-09",
  "builders": {
    "graphql": "1.x",
    "node": "4.x",
    "docs": "0.x"
  },
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "credentialType": "absolute",
  "policies": [
    {
      "name": "vbase-read-write"
    },
    {
      "name": "read-workspace-apps"
    },
    {
      "name": "read-public-registry-assets"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "koto.vtex.com",
        "path": "/api/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "koto.vtex.com",
        "path": "/api/Authentication"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "delorean.vtex.com",
        "path": "/publications/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "rlsnts-env-stable.us-east-1.elasticbeanstalk.com",
        "path": "/releases/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "vtexid.vtex.com.br",
        "path": "/api/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "portal.vtexcommercestable.com.br",
        "path": "/api/license_manager/*"
      }
    }
  ]
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of mycheckout-sdk/README.md from the mycheckout-sdk VTEX app.

[Assistant]
Here's the implementation:

```markdown
# Kuikpay

[![NPM](https://img.shields.io/npm/v/kuikpay-sdk.svg)](https://www.npmjs.com/package/kuikpay-sdk) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save kuikpay-sdk
```

## Usage

### KuikpayButton Props

| Prop name                  | Type          | Description                                                                                | Default value          |
| -------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| `addToCart`                | `function`    | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function that adds a product to your cart                                                                                | `undefined`            |
| `itemToAdd`                | `ItemToAdd`   | Product to be added to your cart                                                                                | `undefined`            |
| `isVisible`                | `boolean`     | Option to hide the button according to your needs, for example if a product has no inventory                                                                                | `true`                 |
| `disabled`                 | `boolean`     | Option to enable button                                                                                | `false`                |
| `validateBeforeOfAdd`      | `function`    | Function in which you want to execute something before adding. Returns `(true)` if you want to add the product to the cart.                                                                                | `undefined`            |
| `multipleAvailableSKUs`    | `boolean`     | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Indicates if the product has several skus available                                                                                | `false or undefined`   |
| `onClickBehavior`          | `string`      | Controls what happens when users click on the button. (If multiple SKUs are available, users will see a product window to select the desired one. If the product only has 1 SKU available, it will be added to the cart once the button is clicked.) | `ensure-sku-selection` |
| `product`                  | `Product`     | Product Information                                                                                | `undefined`            |
| `selectedItem`             | `ProductItem` | Information of the selected product                                                                                | `undefined`            |
| `handleSelectedItem`       | `function`    | This function is executed when the product has several SKUS and you select one of them.                                                                                | `undefined`            |
| `processOpenCoverageModal` | `function`    | Function that allows you to open a geolocation window if the store has this type of functionality.                                                                                | `undefined`            |
| `forceOpenModal`           | `boolean`     | Force open the kuikpay modal.                                                                                | `undefined`            |
| `runtime`                  | `Runtime`     | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Account information and workspace in which you are working. If you are `VTEX` you can take it from the `__RUNTIME__` variable.                           | `undefined`            |
| `sandbox`                  | `boolean`     | Option to change enviroments. Example `(true)` It is to use both the account and the workspace for development, `(false)` only workspace                                                                                | `false`                |

### KuikpayWrapper Props

| Prop name                  | Type               | Description                                                                                | Default value |
| -------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `updateSelectedAddress`    | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function to update selected address for the user                                                                                | `undefined`   |
| `cartSimulation`           | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function to make the cart simulations in your store                                                                                | `undefined`   |
| `sandbox`                  | `boolean`          | Option to change enviroments. Example `(true)` It is to use both the account and the workspace for development, `(false)` only workspace                                                                                | `false`       |
| `language`                 | `string`           | Language in which the messages will be displayed                                                                                | `undefined`   |
| `theme`                    | `enum`             | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Allows you to change templates, styles and more. Possible values are: `kuikpay`, `vtex` and `generic`                                         | `undefined`   |
| `runtime`                  | `Runtime`          | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Account information and workspace in which you are working. If you are `VTEX` you can take it from the `__RUNTIME__` variable.                | `undefined`   |
| `children`                 | `JSX.Element`      | child components of the wrapper                                                                                | `undefined`   |
| `orderForm`                | `OrderForm`        | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Information to make the order                                                                                | `undefined`   |
| `clearData`                | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function to reset your store information after making the order                                                                               | `undefined`   |
| `updateItems`              | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function that removes products from your cart                                                                                | `undefined`   |
| `validateItems`            | `function`         | Function that returns the items that cannot be paid with `kuikpay` and is executed when you add a product to the cart.                                                                                | `undefined`   |
| `insertCoupon`             | `function`         | Function that inserts a coupon, for discount issues.                                                                                | `undefined`   |
| `addItemOffering`          | `function`         | Function that adds a service of a product.                                                                                | `undefined`   |
| `removeItemOffering`       | `function`         | Function that removes a service from a product.                                                                                | `undefined`   |
| `customData`               | `CustomData`       | Personalized information.                                                                                | `undefined`   |
| `config`                   | `Config`           | Store configuration settings.                                                                                | `undefined`   |
| `handleGetDocumentsClient` | `function`         | Function that allows to obtain the last time the user logged in and in that case update it. (**This is for specific clients that require it**).                                                                                | `undefined`   |
| `updateOrderFormProfile`   | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function to update the user in your cart                                                                                | `undefined`   |
| `manageBag`                | `function`         | Function that manages the bag process, this function receives three parameters: `item`, `addToCart`, `updateItems`. It should allow adding a bag or updating the quantity of the bag and should return the quantity and price of the bag. | `undefined`   |
| `clearOrderFormProfile`    | `function`         | ![https://img.shields.io/badge/-Mandatory-red](https://img.shields.io/badge/-Mandatory-red) Function that remove info user from your cart                                                                                | `undefined`   |
| `skuSelectorProps`         | `SkuSelectorProps` | configurate sku selector                                                                                | `undefined`   |

### Types

### `SkuSelectorProps` Type

| Property            | Type       | Description                     |
| ------------------- | ---------- | ------------------------------- |
| `visibleVariations` | `string[]` | list of variations name to show |
| `useImageInColor`   | `boolean`  | show image in color             |

### `ItemToAdd` Type

| Property   | Type             | Description     |
| ---------- | ---------------- | --------------- |
| `id`       | `number, string` | Sku ID          |
| `quantity` | `number`         | Quantity to add |
| `seller`   | `string`         | Seller ID       |

### `OrderForm` Type

| Property            | Type                                                          | Description                                                              |
| ------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `clientProfileData` | `ClientProfileData`                                           | Client information                                                       |
| `items`             | `Item[]`                                                      | Items added to cart                                                      |
| `totalizers`        | `Totalizer[]`                                                 | Totals                                                                   |
| `shippingData`      | `{ selectedAddress?: Address, addressAlternative?: Address }` | Information on the shipping method (address or pick up in store or more) |
| `value`             | `number`                                                      | Amount to be paid                                                        |
| `paymentData`       | `PaymentData`                                                 | Payment method information                                               |
| `messages`          | `Message[]`                                                   | Information, error, caution and more messages                            |
| `marketingData`     | `MarketingData`                                               | Marketing information                                                    |

### `ClientProfileData` Type

| Property | Type     | Description  |
| -------- | -------- | ------------ |
| `email`  | `string` | Client email |

### `Item` Type

| Property            | Type           | Description                                                      |
| ------------------- | -------------- | ---------------------------------------------------------------- |
| `uniqueId`          | `string`       | SKU Unique Id                                                    |
| `id`                | `string`       | SKU ID                                                           |
| `name`              | `string`       | Name SKU                                                         |
| `quantity`          | `number`       | Quantity to add                                                  |
| `sellingPrice`      | `number`       | Price in the seller                                              |
| `imageUrl`          | `string`       | URL image                                                        |
| `availability`      | `string`       | Enabled Product. Possible values are: `available`, `unavailable` |
| `index`             | `number`       | Position located in the cart                                     |
| `seller`            | `string`       | Seller ID                                                        |
| `offerings`         | `Offering[]`   | List of available services associated with the SKU               |
| `bundleItems`       | `BundleItem[]` | List of ??                                                       |
| `isGift`            | `boolean`      | Valid if the sku is a gift                                       |
| `price`             | `number`       | SKU price                                                        |
| `productCategories` | `any[]`        | Product categories                                               |
| `skuSpecifications` | `any[]`        | SKU specification list. Example: size, color                     |
| `listPrice`         | `number`       | List price ?? `(Optional)`                                       |

### `Offering` Type

| Property           | Type      | Description  |
| ------------------ | --------- | ------------ |
| `allowGiftMessage` | `boolean` | Message Gift |
| `id`               | `string`  | Offering ID  |
| `name`             | `string`  | Name         |
| `price`            | `number`  | Price        |
| `type`             | `string`  | Type         |

### `BundleItem` Type

| Property | Type     | Description    |
| -------- | -------- | -------------- |
| `id`     | `string` | Bundle item ID |
| `name`   | `string` | Name           |
| `price`  | `number` | Price          |

### `Totalizer` Type

| Property | Type     | Description                                      |
| -------- | -------- | ------------------------------------------------ |
| `id`     | `string` | Totalizer ID. Options `Items`, `Shipping`, `Tax` |
| `name`   | `string` | Totalizer name                                   |
| `value`  | `number` | Value                                            |

### `Address` Type

| Property         | Type             | Description                                             |
| ---------------- | ---------------- | ------------------------------------------------------- |
| `addressId`      | `string`         | Address identifier                                      |
| `addressType`    | `string`         | Type of address                                         |
| `city`           | `string`         | city                                                    |
| `complement`     | `string`         | Additional information about the location. `(Optional)` |
| `completed`      | `Boolean`        | Information completed                                   |
| `country`        | `string`         | Country                                                 |
| `geoCoordinates` | `GeoCoordinates` | Geo coordinates (latitude, longitude)                   |
| `isDisposable`   | `boolean`        | The location is available `(Optional)`                  |
| `neighborhood`   | `string`         | neighborhood                                            |
| `number`         | `string`         | Code `(Optional)` ??                                    |
| `postalCode`     | `string`         | Postal code                                             |
| `receiverName`   | `string`         | Name of the person who receives the purchase            |
| `reference`      | `string`         | Reference ?? `(Optional)`                               |
| `state`          | `string`         | State or department or province                         |
| `street`         | `string`         | Full address                                            |

### `GeoCoordinates` Type

| Property    | Type     | Description |
| ----------- | -------- | ----------- |
| `latitude`  | `string` | Latitude    |
| `longitude` | `string` | Longitude   |

### `PaymentData` Type

| Property                       | Type                  | Description                                                                              |
| ------------------------------ | --------------------- | ---------------------------------------------------------------------------------------- |
| `availablePaymentMethods`      | `PaymentMethod[]`     | User available payment methods                                                           |
| `selectedPaymentMethod`        | `PaymentMethod`       | Selected payment methods                                                                 |
| `paymentMethod`                | `PaymentMethod`       | Payment method information ??                                                            |
| `completed`                    | `boolean`             | Completed process ??                                                                     |
| `otherAvailablePaymentMethods` | `PaymentMethod[]`     | Other payment methods available to the user                                              |
| `bin`                          | `string`              | Get the first 5 digits of the credit card. (This only applies to payment by credit card) |
| `installmentOptions`           | `InstallmentOption[]` | List of fees with respect to credit cards enabled for the store.                         |

### `PaymentMethod` Type

| Property        | Type     | Description                                                                              |
| --------------- | -------- | ---------------------------------------------------------------------------------------- |
| `id`            | `string` | Credit card                                                                              |
| `gateway`       | `string` | ?? `(Optional)`                                                                          |
| `email`         | `string` | Email `(Optional)`                                                                       |
| `franchise`     | `string` | Franchise credit card. Example: visa                                                     |
| `number`        | `string` | Get the last 4 digits of the credit card. (This only applies to payment by credit card)  |
| `ccToken`       | `string` | Token ??                                                                                |
| `paymentMethod` | `string` | Payment method                                                                           |
| `card`          | `string` | `(Optional)`                                                                             |
| `bin`           | `string` | Get the first 5 digits of the credit card. (This only applies to payment by credit card) |

### `InstallmentOption` Type

| Property       | Type            | Description                                                                              |
| -------------- | --------------- | ---------------------------------------------------------------------------------------- |
| `bin`          | `string`        | Get the first 5 digits of the credit card. (This only applies to payment by credit card) |
| `installments` | `Installment[]` | List of installments, their price in each installment and the total including interest   |
| `paymentName`  | `string`        | Payment method name                                                                      |
| `value`        | `number`        | Total purchase price paying with that franchise                                          |

### `Installment` Type

| Property | Type     | Description                                         |
| -------- | -------- | --------------------------------------------------- |
| `count`  | `number` | Installment number                                  |
| `value`  | `number` | Order value including interest depending on the fee |
| `total`  | `number` | Total price if you pay with that fee                |

### `Message` Type

| Property | Type     | Description |
| -------- | -------- | ----------- |
| `code`   | `string` | Code        |

### `MarketingData` Type

| Property | Type     | Description |
| -------- | -------- | ----------- |
| `coupon` | `string` | Coupon      |

### `CustomData` Type

| Property     | Type          | Description              |
| ------------ | ------------- | ------------------------ |
| `customApps` | `CustomApp[]` | Personalized information |

### `CustomApp` Type

| Property | Type               | Description                |
| -------- | ------------------ | -------------------------- |
| `id`     | `string`           | ID                         |
| `fields` | `CustomAppField[]` | Inputs to add in the store |
| `major`  | `number`           | Version or number ?        |

### `CustomAppField` Type

| Property | Type     | Description           |
| -------- | -------- | --------------------- |
| `key`    | `string` | Identification or key |
| `value`  | `string` | Description           |

### `Config` Type

| Property            | Type                      | Description                            |
| ------------------- | ------------------------- | -------------------------------------- |
| `bagId`             | `string`                  | If the store implements bag add the ID |
| `mainSellerId`      | `string`                  | Main seller id                         |
| `oneBagForProducts` | `number`                  | Number of bags per product             |
| `salesChannel`      | `string`                  | Channel identifier seller              |
| `productCategories` | `ProductCategoriesConfig` | Categories to apply the bag            |

### `ProductCategoriesConfig` Type

| Property          | Type       | Description                           |
| ----------------- | ---------- | ------------------------------------- |
| `market`          | `string[]` | List of market identifiers            |
| `healthAndBeauty` | `string[]` | List of health and beauty identifiers |

### `Product` Type

| Property            | Type                                                      | Description                                                             |
| ------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------- |
| `items`             | `ProductItem[]`                                           | Information of the items that this product contains. Example: SKUS      |
| `skuSpecifications` | `SkuSpecification[]`                                      | Information about SKUS specifications. Example: color, size             |
| `categories`        | `string[]`                                                | Information on categories and subcategories where the product is found. |
| `priceRange`        | `{ listPrice: { highPrice?: number, lowPrice: number } }` | It shows different price channels.                                      |

### `ProductItem` Type

| Property       | Type                                                                     | Description               |
| -------------- | ------------------------------------------------------------------------ | ------------------------- |
| `itemId`       | `string`                                                                 | Item identification       |
| `name`         | `string`                                                                 | Name                      |
| `images`       | `Image[]`                                                                | List of image information |
| `variations`   | `Array<{ name: string, values: string[] }>`                              | Variety of types          |
| `sellers`      | `Array<{ sellerDefault: boolean, commertialOffer: ProductItemSellers }>` | Distributions             |
| `nameComplete` | `string`                                                                 | Name                      |

### `Image` Type

| Property     | Type     | Description |
| ------------ | -------- | ----------- |
| `imageId`    | `string` |             |
| `imageLabel` | `string` |             |
| `imageTag`   | `string` |             |
| `imageUrl`   | `string` |             |
| `imageText`  | `string` |             |

### `ProductItemSellers` Type

| Property            | Type     | Description        |
| ------------------- | -------- | ------------------ |
| `Price`             | `number` | Price item         |
| `ListPrice`         | `number` | List price item    |
| `AvailableQuantity` | `number` | Quantity available |

### `SkuSpecification` Type

| Property | Type                       | Description                   |
| -------- | -------------------------- | ----------------------------- |
| `field`  | `SkuSpecificationField`    | Information specification SKU |
| `values` | `SkuSpecificationValues[]` | Information specification SKU |

### `SkuSpecificationField` Type

| Property       | Type     | Description |
| -------------- | -------- | ----------- |
| `name`         | `string` |             |
| `originalName` | `string` |             |

### `SkuSpecificationValues` Type

| Property       | Type     | Description |
| -------------- | -------- | ----------- |
| `name`         | `string` |             |
| `originalName` | `string` |             |

### `Runtime` Type

| Property    | Type     | Description                                    |
| ----------- | -------- | ---------------------------------------------- |
| `account`   | `string` | Vtex account                                   |
| `workspace` | `string` | Vtex workspace                                 |
| `platform`  | `string` | Vtex platform. . Options `vtex-io`, `vtex-cms` |

```tsx
import React, { Component } from 'react'

import { Kuikpay, KuikpayWrapper } from 'kuikpay-sdk'
import 'kuikpay-sdk/dist/index.css'

class Example extends Component {
  render() {
    return (
      <Kuikpay {...props} />
      <KuikpayWrapper {...props} />
    )
  }
}
```

## License

MIT © [](https://github.com/)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of mycheckout-sdk/tsconfig.test.json from the mycheckout-sdk VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "commonjs"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of mycheckout-sdk/package.json from the mycheckout-sdk VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "kuikpay-sdk",
  "version": "1.0.29",
  "description": "Made with create-react-library",
  "author": "",
  "license": "MIT",
  "repository": "/",
  "main": "dist/index.js",
  "module": "dist/index.modern.js",
  "source": "src/index.tsx",
  "engines": {
    "node": ">=10"
  },
  "scripts": {
    "build": "microbundle-crl --no-compress --css-modules _kuikpay-[name]__[local] --format modern,cjs",
    "start": "microbundle-crl watch --no-compress --css-modules _kuikpay-[name]__[local] --format modern,cjs",
    "prepare": "run-s build",
    "test": "run-s test:unit test:lint test:build",
    "test:build": "run-s build",
    "test:lint": "eslint .",
    "test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
    "test:watch": "react-scripts test --env=jsdom",
    "predeploy": "cd example && npm install && npm run build",
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "deploy": "gh-pages -d example/build",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\"",
    "lint:locales": "intl-equalizer",
    "build:dev": "npm publish --tag dev",
    "build:beta": "npm publish --tag beta"
  },
  "intl-equalizer": {
    "referenceLocale": "en",
    "localeDirectory": "messages"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ],
    "messages/*.json": [
      "yarn lint:locales"
    ]
  },
  "peerDependencies": {
    "react": "^16.0.0"
  },
  "devDependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "@types/enzyme": "^3.10.10",
    "@types/enzyme-adapter-react-16": "^1.0.6",
    "@types/jest": "^25.2.3",
    "@types/lodash": "^4.14.182",
    "@types/node": "^12.12.38",
    "@types/payment": "^2.1.3",
    "@types/react": "^16.9.27",
    "@types/react-dom": "^16.9.7",
    "@types/react-intl": "^3.0.0",
    "@types/react-lottie": "^1.2.6",
    "@types/react-select": "^4.0.17",
    "@typescript-eslint/eslint-plugin": "^4.22.0",
    "@typescript-eslint/parser": "^4.22.0",
    "@vtex/intl-equalizer": "^2.5.0",
    "@vtex/prettier-config": "^0.3.5",
    "babel-eslint": "^10.0.3",
    "cross-env": "^7.0.2",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.6",
    "eslint": "^6.8.0",
    "eslint-config-prettier": "^6.7.0",
    "eslint-config-standard": "^14.1.0",
    "eslint-config-standard-react": "^9.2.0",
    "eslint-config-vtex": "^12.8.11",
    "eslint-config-vtex-react": "^6.8.3",
    "eslint-plugin-import": "^2.18.2",
    "eslint-plugin-node": "^11.0.0",
    "eslint-plugin-prettier": "^3.1.1",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-react": "^7.17.0",
    "eslint-plugin-standard": "^4.0.1",
    "gh-pages": "^2.2.0",
    "husky": "^4.3.0",
    "lint-staged": "^10.5.1",
    "microbundle-crl": "^0.13.10",
    "npm-run-all": "^4.1.5",
    "prettier": "^2.0.4",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "^3.4.1",
    "typescript": "^3.7.5"
  },
  "files": [
    "dist"
  ],
  "dependencies": {
    "@apollo/client": "^3.3.21",
    "@formatjs/intl-datetimeformat": "^4.2.3",
    "@reduxjs/toolkit": "^1.7.1",
    "@types/ramda": "^0.27.60",
    "classnames": "^2.3.1",
    "graphql": "^15.5.1",
    "payment": "^2.4.6",
    "ramda": "^0.27.1",
    "react-collapsible": "^2.8.3",
    "react-content-loader": "^6.2.0",
    "react-intl": "^5.20.10",
    "react-lottie": "^1.2.3",
    "react-redux": "^7.2.6",
    "react-select": "^4.3.1"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of affirm-payment/package.json from the affirm-payment VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "affirm-payment",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,js,json}\"",
    "cy-r": "cd ./cy-runner && node cy-runner"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "^13.7.0",
    "@vtex/prettier-config": "^0.1.4",
    "eslint": "6.8.0",
    "eslint-config-vtex": "12.2.1",
    "eslint-config-vtex-react": "^6.0.5",
    "husky": "4.2.0",
    "lint-staged": "10.0.2",
    "prettier": "1.19.1",
    "typescript": "3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of affirm-payment/manifest.json from the affirm-payment VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "affirm-payment",
  "vendor": "vtex",
  "version": "2.3.0",
  "title": "Affirm Payment",
  "description": "An implentation of Affirm payment method",
  "categories": [],
  "registries": [
    "smartcheckout"
  ],
  "builders": {
    "react": "2.x",
    "node": "6.x",
    "pages": "0.x",
    "docs": "0.x",
    "graphql": "1.x"
  },
  "mustUpdateAt": "2018-09-05",
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "dependencies": {
    "vtex.store": "2.x",
    "vtex.styleguide": "9.x",
    "vtex.affirm-api": "1.x"
  },
  "settingsSchema": {
    "title": "Affirm Integration",
    "type": "object",
    "properties": {
      "enableKatapult": {
        "title": "Enable Katapult",
        "description": "Set to true if you wish to enable Katapult leasing option",
        "type": "boolean",
        "default": false
      },
      "companyName": {
        "title": "Company Name (optional)",
        "description": "If you have multiple sites operating under a single Affirm account, you can override the external company/brand name that the customer sees. This affects all references to your company name in the Affirm UI. Leave blank to use your default company name stored in your Affirm account.",
        "type": "string",
        "default": ""
      },
      "publicApiKey": {
        "title": "Public API Key for promotional components",
        "description": "The public API key for your Affirm account",
        "type": "string",
        "default": ""
      },
      "isLive": {
        "title": "Production Mode for promotional components",
        "description": "Set to true for production mode, false for sandbox mode. Does NOT affect Affirm checkout - use payment gateway setting to change checkout mode.",
        "type": "boolean",
        "default": false
      },
      "delayInterval": {
        "title": "Interval to use for the following three settings",
        "type": "string",
        "enum": [
          "Minutes",
          "Hours",
          "Days"
        ],
        "default": "Days"
      },
      "delayToAutoSettle": {
        "title": "Delay to automatic payment capture",
        "description": "Number of minutes/hours/days before authorized Affirm payments are automatically settled",
        "type": "number",
        "default": 30
      },
      "delayToAutoSettleAfterAntifraud": {
        "title": "Delay to automatic payment capture after antifraud analysis",
        "description": "Number of minutes/hours/days before authorized Affirm payments are automatically settled after merchant's antifraud approval",
        "type": "number",
        "default": 30
      },
      "delayToCancel": {
        "title": "Delay to cancel",
        "description": "Number of minutes/hours/days before Affirm payments are automatically canceled",
        "type": "number",
        "default": 1
      },
      "katapultPublicToken": {
        "title": "Katapult public token (optional)",
        "description": "The public API token for your Katapult account",
        "type": "string",
        "default": ""
      },
      "katapultPrivateToken": {
        "title": "Katapult private token (optional)",
        "description": "The private API token for your Katapult account",
        "type": "string",
        "default": ""
      },
      "enablePartialCancellation": {
        "title": "Partial cancellation",
        "description": "Enable partial cancellation",
        "type": "boolean",
        "default": false
      }
    }
  },
  "policies": [
    {
      "name": "Get_Account_By_Identifier"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "{{account}}.vtexcommercestable.com.br",
        "path": "/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "{{account}}.vtexpayments.com.br",
        "path": "/*"
      }
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "*",
        "path": "/affirm/*"
      }
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of admin-catalog-translations/package.json from the admin-catalog-translations VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "admin-catalog-translation",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "12.12.21",
    "@vtex/prettier-config": "^0.3.6",
    "eslint": "^6.8.0",
    "eslint-config-vtex": "^12.4.0",
    "eslint-config-vtex-react": "^6.4.0",
    "husky": "^4.2.5",
    "lint-staged": "^10.2.2",
    "prettier": "^2.0.5",
    "typescript": "^3.8.3"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of admin-catalog-translations/manifest.json from the admin-catalog-translations VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "admin-catalog-translation",
  "vendor": "vtex",
  "version": "2.4.0",
  "title": "Catalog Translation",
  "description": "",
  "mustUpdateAt": "2022-08-28",
  "scripts": {
    "postreleasy": "vtex publish"
  },
  "dependencies": {
    "vtex.styleguide": "9.x",
    "vtex.tenant-graphql": "0.x",
    "vtex.catalog-graphql": "1.x",
    "vtex.messages": "1.x"
  },
  "builders": {
    "react": "3.x",
    "admin": "0.x",
    "messages": "1.x",
    "docs": "0.x",
    "node": "6.x",
    "graphql": "1.x"
  },
  "policies": [
    {
      "name": "vtex.catalog-graphql:resolve-graphql"
    },
    {
      "name": "vtex.messages:graphql-save-translation-messages"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "portal.vtexcommercestable.com.br",
        "path": "/api/catalog_system/*"
      }
    },
    {
      "name": "vbase-read-write"
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema",
  "billingOptions": {
    "support": {
      "url": "https://support.vtex.com/hc/requests"
    },
    "type": "free",
    "availableCountries": [
      "*"
    ]
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of marketplace-financial-commission-cron/dangerfile.js from the marketplace-financial-commission-cron VTEX app.

[Assistant]
Here's the implementation:

```javascript
// dangerfile.js
const { verify } = require('@vtex/danger')

const config = {
  // Set to true to enforce keepachangelog rules.
  keepachangelog: {
    changeVersion: false,
  },
  rules: {
    description: ['fail', { minLength: 20 }],
    assignee: 'fail',
    reviewers: 'fail',
    pr_size: ['warn', { additionLimit: 800, deletionLimit: -1 }],
    lock_file: 'warn',
    no_ignored_test: ['fail', { pattern: /test|spec/i }],
    no_debugger: ['fail', { pattern: /\.[tj]sx?$/i }],
    enforce_graphql_provider: 'off',
  },
}

verify(config)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of marketplace-financial-commission-cron/package.json from the marketplace-financial-commission-cron VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "marketplace-financial-commission-cron",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/node": "^12.12.21",
    "@vtex/prettier-config": "^0.3.6",
    "@vtex/danger": "^0.2.7",
    "eslint": "^7.16.0",
    "eslint-config-vtex": "^12.9.3",
    "husky": "^4.3.6",
    "lint-staged": "^10.5.3",
    "prettier": "^2.2.1",
    "typescript": "^3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of marketplace-financial-commission-cron/manifest.json from the marketplace-financial-commission-cron VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "marketplace-financial-commission-cron",
  "vendor": "vtex",
  "version": "1.1.4",
  "title": "Financial commission for Marketplace Cron",
  "description": "",
  "categories": [],
  "dependencies": {},
  "builders": {
    "node": "6.x",
    "docs": "0.x"
  },
  "credentialType": "absolute",
  "billingOptions": {
    "termsURL": "https://compliance.vtex.com/gdpr/policies/vtex-privacy-policy",
    "support": {
      "url": "https://support.vtex.com/hc/requests"
    },
    "free": true,
    "type": "free",
    "availableCountries": ["*"]
  },
  "policies": [
    {
      "name": "colossus-fire-event"
    },
    {
      "name": "colossus-write-logs"
    },
    {
      "name": "ADMIN_DS"
    },
    {
      "name": "vbase-read-write"
    },
    {
      "name": "outbound-access",
      "attrs": {
        "host": "portal.vtexcommercestable.com.br",
        "path": "*"
      }
    }
  ],
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of product-summary-context/README.md from the product-summary-context VTEX app.

[Assistant]
Here's the implementation:

```markdown
# Product Summary Context

> Provides the product context to the product-summary child blocks.

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of product-summary-context/manifest.json from the product-summary-context VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "product-summary-context",
  "vendor": "vtex",
  "version": "0.13.0",
  "title": "VTEX Product Summary Context",
  "description": "",
  "settingsSchema": {},
  "dependencies": {
    "vtex.product-group-context": "0.x"
  },
  "builders": {
    "react": "3.x",
    "docs": "0.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of product-identifier/manifest.json from the product-identifier VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "vendor": "vtex",
  "name": "product-identifier",
  "version": "0.5.1",
  "title": "IO Base Component",
  "description": "IO Base component",
  "defaultLocale": "pt-BR",
  "builders": {
    "messages": "1.x",
    "store": "0.x",
    "react": "3.x",
    "docs": "0.x"
  },
  "mustUpdateAt": "2019-04-02",
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "dependencies": {
    "vtex.product-context": "0.x",
    "vtex.product-summary-context": "0.x",
    "vtex.native-types": "0.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cookiebot/package.json from the cookiebot VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "cookiebot",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@vtex/prettier-config": "^0.1.3",
    "eslint": "^6.8.0",
    "eslint-config-vtex": "^12.2.1",
    "eslint-config-vtex-react": "^6.2.1",
    "husky": "^4.2.0",
    "lint-staged": "^10.0.2",
    "prettier": "^1.19.1",
    "typescript": "^3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cookiebot/manifest.json from the cookiebot VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "cookiebot",
  "vendor": "vtex",
  "version": "2.0.8",
  "title": "Cookiebot",
  "description": "With a few clicks configure and preview your own cookie declaration and consent dialog.",
  "billingOptions": {
    "termsURL": "https://compliance.vtex.com/gdpr/policies/vtex-privacy-policy",
    "support": {
      "url": "https://support.vtex.com/hc/requests"
    },
    "free": true,
    "type": "free",
    "availableCountries": [
      "*"
    ]
  },
  "builders": {
    "pixel": "0.x",
    "docs": "0.x",
    "store": "0.x",
    "react": "3.x",
    "messages": "1.x"
  },
  "dependencies": {
    "vtex.store": "2.x"
  },
  "settingsSchema": {
    "title": "Cookiebot",
    "type": "object",
    "properties": {
      "cbid": {
        "title": "Domain Group ID",
        "type": "string"
      },
      "gcm": {
        "title": "Google Consent Mode",
        "type": "string",
        "default": "enabled",
        "enum": [
          "enabled",
          "disabled"
        ],
        "enumNames": [
          "enabled",
          "disabled"
        ]
      }
    }
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of checkout-coupon/package.json from the checkout-coupon VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "coupon",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "lint": "eslint --ext js,jsx,ts,tsx .",
    "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json}\""
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{ts,js,tsx,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,graphql,gql}": [
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@vtex/prettier-config": "^0.1.3",
    "eslint": "^6.8.0",
    "eslint-config-vtex": "^12.2.1",
    "eslint-config-vtex-react": "^6.2.1",
    "husky": "^4.2.0",
    "lint-staged": "^10.0.2",
    "prettier": "^1.19.1",
    "typescript": "^3.7.5"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of checkout-coupon/manifest.json from the checkout-coupon VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "vendor": "vtex",
  "name": "coupon",
  "version": "0.11.0",
  "title": "Coupon",
  "description": "Checkout coupon component",
  "defaultLocale": "pt-BR",
  "builders": {
    "messages": "1.x",
    "store": "0.x",
    "react": "3.x",
    "docs": "0.x"
  },
  "mustUpdateAt": "2019-04-02",
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "dependencies": {
    "vtex.styleguide": "9.x",
    "vtex.order-coupon": "0.x"
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of ki-532487/index.js from the ki-532487 VTEX app.

[Assistant]
Here's the implementation:

```javascript
$(window).on("orderFormUpdated.vtex", function (evt, orderForm) {
  setTimeout(() => {
    shippingValue(orderForm);
  }, 1000);
});

window.addEventListener("load", function (event) {
  if ($(".srp-toggle__delivery").hasClass("blue")) {
    setTimeout(() => {
      shippingValue(vtexjs.checkout.orderForm);
    }, 1000);
  }

  $(".srp-toggle__delivery").click(function () {
    setTimeout(() => {
      shippingValue(vtexjs.checkout.orderForm);
    }, 1000);
  });
});

function shippingValue(orderForm) {
  if (
    window.location.hash === "#/cart" &&
    $(".srp-shipping-current-single__price").length > -1 &&
    orderForm.shippingData.selectedAddresses != null &&
    orderForm.totalizers.length > 1 &&
    $(".srp-toggle__delivery").hasClass("blue")
  ) {
    let price = orderForm.totalizers[1].value;
    const locale = orderForm.clientPreferencesData.locale;
    const currency = orderForm.storePreferencesData.currencyCode;
    const formattedPrice = formatValue(price, locale, currency);

    if (formattedPrice) {
      $("#shipping-preview-container .srp-shipping-current-single__price").html(
        "$ " + formattedPrice
      );
    }
  }
}

function formatValue(value, locale, currency) {
  try {
    let shippingPrice = value.toString().slice(0, -2);
    shippingPrice = shippingPrice.toLocaleString(locale, {
      style: "currency",
      currency: currency,
    });
    return shippingPrice;
  } catch (error) {
    console.error(error);
    return value;
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of ki-532487/README.md from the ki-532487 VTEX app.

[Assistant]
Here's the implementation:

```markdown
# KI-532487

This script is a workaround to KI https://vtexhelp.zendesk.com/agent/tickets/532487.

You need to add the script to the checkout at the `checkout6-custom.js`.

This script takes local store configuration from `orderForm.clientPreferencesData.locale` and `orderForm.storePreferencesData.currencyCode` and apply these setting to the shipping price presented in `../checkout/#/cart`.

![screenshot](image.png)

Additionally, this script takes the last two decimals out from the shipping preview.

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of sidecar-pixel/manifest.json from the sidecar-pixel VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "sidecar-pixel",
  "vendor": "vtex",
  "version": "1.0.5",
  "title": "Sidecar",
  "description": "Sidecar first party integration.",
  "scripts": {
    "postreleasy": "vtex publish --verbose"
  },
  "billingOptions": {
    "termsURL": "",
    "support": {
      "url": "https://support.vtex.com/hc/requests"
    },
    "free": true
  },
  "builders": {
    "pixel": "0.x",
    "store": "0.x",
    "react": "3.x"
  },
  "dependencies": {
    "vtex.pixel-interfaces": "1.x"
  },
  "settingsSchema": {
    "title": "Sidecar",
    "type": "object",
    "properties": {
      "domain": {
        "title": "Site Domain",
        "type": "string"
      },
      "id": {
        "title": "Site ID",
        "type": "string"
      }
    }
  },
  "$schema": "https://raw.githubusercontent.com/vtex/node-vtex-api/master/gen/manifest.schema"
}

```