diff --git a/docs/api/store/endpoints/carts.yaml b/docs/api/store/endpoints/carts.yaml index dbd15e4c79..e9fb136837 100644 --- a/docs/api/store/endpoints/carts.yaml +++ b/docs/api/store/endpoints/carts.yaml @@ -1,11 +1,34 @@ title: Carts domain: store +routes: + - method: POST + path: /carts + - method: GET + path: /carts/:id + - method: POST + path: /carts/:id + - method: POST + path: /carts/:id/line-items + - method: POST + path: /carts/:id/line-items/:line_id + - method: DELETE + path: /carts/:id/line-items/:line_id + - method: POST + path: /carts/:id/payment-sessions + - method: DELETE + path: /carts/:id/payment-sessions/:provider_id + - method: POST + path: /carts/:id/payment-method + - method: POST + path: /carts/:id/shipping-methods + - method: DELETE + path: /carts/:id/discounts/:code route: /carts description: > A Cart is the preliminary step to an Order. The Cart holds a collection of items that the customer wishes to purchase, along with the customer's - preferred payment and shipping method. -endpoints: + preferred payment and shipping method. +endpoints: - path: / method: POST title: Create a Cart @@ -35,7 +58,7 @@ endpoints: - path: /:id method: POST title: Update a Cart - params: + params: - name: id type: String description: Id of the cart. @@ -68,8 +91,8 @@ endpoints: calling the endpoint with an array of discounts. - path: /:id/line-items method: POST - title: Add a Line Item to a Cart - params: + title: Add line item + params: - name: id type: String body: @@ -90,7 +113,7 @@ endpoints: functionality. - path: /:id/line-items/:line_id method: POST - title: Update a Line Item + title: Update line item params: - name: id type: String @@ -108,7 +131,7 @@ endpoints: the inventory level cannot fulfill the desired quantity. - path: /:id/line-items/:line_id method: DELETE - title: Remove a Line Item + title: Remove line item params: - name: id type: String @@ -120,8 +143,8 @@ endpoints: Removes a the given line item from the cart. - path: /:id/discounts/:code method: DELETE - title: Remove a Discount Code - params: + title: Remove discount code + params: - name: id type: String description: Id of the cart. @@ -131,8 +154,8 @@ endpoints: description: Removes a discount code from the cart. - path: /:id/payment-sessions method: POST - title: Initialize Payment Sessions for a Cart - params: + title: Create payment sessions + params: - name: id type: String description: Id of the cart. @@ -141,7 +164,7 @@ endpoints: the cart. This is usually called when a customer proceeds to checkout. - path: /:id/payment-sessions/:provider_id method: DELETE - title: Delete a Payment Session + title: Delete payment session params: - name: id type: String @@ -156,12 +179,12 @@ endpoints: reaches a state that cannot be recovered from. - path: /:id/payment-method method: POST - title: Set the Payment Method for a Cart - params: + title: Add payment method + params: - name: id type: String description: Id of the cart. - body: + body: - name: provider_id type: String required: true @@ -182,12 +205,12 @@ endpoints: payment. - path: /:id/shipping-methods method: POST - title: Add a Shipping Method to a Cart + title: Add shipping method params: - name: id type: String description: Id of the cart. - body: + body: - name: option_id type: String required: true @@ -199,7 +222,7 @@ endpoints: fulfillment of the order. Look at the documentation for your installed fulfillment providers to find out what to send. description: > - Adds a shipping method to the cart. + Adds a shipping method to the cart. response: | { "cart": { diff --git a/docs/api/store/endpoints/customers.yaml b/docs/api/store/endpoints/customers.yaml index fb2fe6bc6b..25f5682999 100644 --- a/docs/api/store/endpoints/customers.yaml +++ b/docs/api/store/endpoints/customers.yaml @@ -1,13 +1,30 @@ title: Customers domain: store +routes: + - method: POST + path: /customers + - method: GET + path: /customers/:id + - method: POST + path: /customers/:id + - method: POST + path: /customers/:id/addresses + - method: POST + path: /customers/:id/:address_id + - method: POST + path: /customers/:id/payment-methods + - method: POST + path: /customers/:id/reset-password + - method: POST + path: /customers/:id/reset-password-token route: /customers description: > Customers can create a login to view Order history and manage details. Customers must have unique emails. -endpoints: +endpoints: - path: / method: POST - title: Create a Customer Login + title: Create customer body: - name: email type: String @@ -32,48 +49,10 @@ endpoints: Creates a customer profile with the given details. If the email has been used on previous orders the newly created Customer profile will be able to view the order history associated with this email. - - - path: /password-reset - method: POST - title: Reset Customer password - body: - - name: email - type: String - required: true - description: The email of the Customer. - - name: token - type: String - required: true - description: > - The token that will be used to reset the password. Should be generated - with a prior call to `/password-token`. - - name: password - type: String - required: true - description: > - The new password to authenticate the user with. - description: > - Resets a customer's password. The reset call requires a valid token - - - path: /password-token - method: POST - title: Request Customer password reset token - body: - - name: email - type: String - required: true - description: The email of the Customer profile to reset password for. - description: > - Generates a reset password token. The token should be sent to the customer - via an email provider. Note that this doesn't send any emails it only - generates the token and informs listeners to - `customer.password_token_generated` that the token was created. - - - path: /:id method: GET - title: Retrieve Customer - params: + title: Retrieve customer + params: - name: id type: String description: The id of the Customer to retrieve. @@ -83,8 +62,8 @@ endpoints: - path: /:id method: POST - title: Update Customer details - params: + title: Update customer + params: - name: id type: String description: The id of the customer. @@ -105,10 +84,9 @@ endpoints: description: > Updates the customer's details. The customer identified by `id` must be authenticated in order to call this endpoint. - - path: /:id/addresses method: POST - title: Create a new Customer address + title: Create customer shipping address params: - name: id type: String @@ -123,7 +101,7 @@ endpoints: - path: /:id/addresses/:address_id method: POST - title: Update a Customer address + title: Update customer shipping address params: - name: id type: String @@ -141,8 +119,8 @@ endpoints: - path: /:id/payment-methods method: GET - title: Retrieve Customer's saved payment methods - params: + title: Retrieve saved payment methods + params: - name: id type: String description: The id of the customer. @@ -151,16 +129,98 @@ endpoints: will only return in methods in the case where the payment provider allows payment methods to be saved. The customer must be authenticated in order to call this endpoint. + - path: /password-reset + method: POST + title: Reset password + body: + - name: email + type: String + required: true + description: The email of the Customer. + - name: token + type: String + required: true + description: > + The token that will be used to reset the password. Should be generated + with a prior call to `/password-token`. + - name: password + type: String + required: true + description: > + The new password to authenticate the user with. + description: > + Resets a customer's password. The reset call requires a valid token + + - path: /password-token + method: POST + title: Generate password reset token + body: + - name: email + type: String + required: true + description: The email of the Customer profile to reset password for. + description: > + Generates a reset password token. The token should be sent to the customer + via an email provider. Note that this doesn't send any emails it only + generates the token and informs listeners to + `customer.password_token_generated` that the token was created. response: | { "customer": { - "_id": "5ea80c76d9549d0006c21da7", - "email": "mrs@potato.com", - "orders": [], - "shipping_addresses": [], - "first_name": "Potato", - "last_name": "Head", + "id": "cus_4eThzYSuGv", + "email": "iron@man.com", + "first_name": "Tony", + "last_name": "Stark", + "billing_address": { + "id": "addr_WgNn0BSfIu", + "customer_id": "cus_4eThzYSuGv", + "company": "Stark Industries", + "first_name": "Tony", + "last_name": "Stark", + "address_1": "Hollywood Boulevard 1", + "address_2": null, + "city": "Los Angeles", + "country_code": "US", + "province": "CA", + "postal_code": "90046", + "phone": null, + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "deleted_at": null, + "metadata": null + }, + "shipping_addresses": [{ + "id": "addr_WgNn0BSfIu", + "customer_id": "cus_4eThzYSuGv", + "company": "Stark Industries", + "first_name": "Tony", + "last_name": "Stark", + "address_1": "Hollywood Boulevard 1", + "address_2": null, + "city": "Los Angeles", + "country_code": "US", + "province": "CA", + "postal_code": "90046", + "phone": null, + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "deleted_at": null, + "metadata": null + }], + "phone": "4242424242", + "has_account": false, + "orders": [{ + "id": "order_fi13oadpo2r3vc2g4592", + "status": "pending", + "fulfillment_status": "shipped", + "payment_status": "captured", + "display_id": 50433, + "total": 4004000, + "metadata": null + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", "metadata": {} } } diff --git a/docs/api/store/endpoints/orders.yaml b/docs/api/store/endpoints/orders.yaml index fbdf1bef92..a6257b1b9f 100644 --- a/docs/api/store/endpoints/orders.yaml +++ b/docs/api/store/endpoints/orders.yaml @@ -1,235 +1,137 @@ title: Orders domain: store +routes: + - method: POST + path: /orders + - method: GET + path: /orders/:id route: /orders description: > - An Order represents a selection of items purchased and holds information about - how the items have been purchased and will be fulfilled. + An order represents a selection of items purchased and holds information about + how the items have been purchased and will be fulfilled. endpoints: - path: /:id method: GET - title: Retrieve an Order - params: + title: Retrieve an order + params: - name: id type: String description: The id of the order. description: > - Retrieves an order. + Retrieves an order. - path: / method: POST - title: Creates an Order + title: Creates an order body: - - name: cartId + - name: cart_id type: String + required: true description: Id of the cart from which the order should be created. description: > Creates an order from a cart. response: | { - "_id": "5f65c961395b3e0021d8f994", - "status": "pending", - "fulfillment_status": "not_fulfilled", - "payment_status": "awaiting", - "display_id": "1000", - "payment_method": { - "_id": "5f65c961395b3e0021d8f995", - "provider_id": "provider", - "data": { - "id": "importantForPaymentProvider", - "more": "information" - } - }, - "discounts": [ - { - "regions": [ - "5f40ce8f7743b30021337e2b", - "5f4788eff847d30021ac331d", - "5f4cb9a07435de0021c69f09" + "order": { + "id": "order_fi13oadpo2r3vc2g4592", + "status": "pending", + "fulfillment_status": "shipped", + "payment_status": "captured", + "email": "iron@man.com", + "billing_address": { + "id": "addr_WgNn0BSfIu", + "customer_id": "cus_4eThzYSuGv", + "company": "Stark Industries", + "first_name": "Tony", + "last_name": "Stark", + "address_1": "Hollywood Boulevard 1", + "address_2": null, + "city": "Los Angeles", + "country_code": "US", + "province": "CA", + "postal_code": "90046", + "phone": null, + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "deleted_at": null, + "metadata": null + }, + "shipping_address": { + "id": "addr_WgNn0BSfIu", + "customer_id": "cus_4eThzYSuGv", + "company": "Stark Industries", + "first_name": "Tony", + "last_name": "Stark", + "address_1": "Hollywood Boulevard 1", + "address_2": null, + "city": "Los Angeles", + "country_code": "US", + "province": "CA", + "postal_code": "90046", + "phone": null, + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "deleted_at": null, + "metadata": null + }, + "items": [ + { + "id": "item_fn2uaQH95vG9ZMnhj2aU03xg", + "cart_id": null, + "order_id": "order_s9RojwCU2AM8RztcldM2Uof7", + "swap_id": null, + "title": "Ironman suit", + "description": "Awesome Ironman suit", + "thumbnail": null, + "is_giftcard": false, + "should_merge": false, + "allow_discounts": true, + "unit_price": 119600, + "variant_id": "variant_rdEH6PykBuH57giw", + "quantity": 1, + "fulfilled_quantity": 1, + "returned_quantity": 0, + "shipped_quantity": 0, + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null + } ], - "_id": "5f626102bd79500021ea17a3", - "is_giftcard": false, - "usage_count": 6, - "disabled": false, - "code": "TEST", - "discount_rule": { - "valid_for": [], - "_id": "5f626102bd79500021ea17a4", - "description": "TEST", - "value": 99, - "type": "percentage", - "allocation": "total" - } - } - ], - "shipping_methods": [ - { - "name": "Always Free", - "items": [], - "_id": "5f5b7c1b55c13000213c0989", - "data": { - "id": "manual-fulfillment" - }, - "profile_id": "5f3e8fd5cac0ff0021a2be66", - "price": 0, - "provider_id": "manual" - } - ], - "items": [ - { - "is_giftcard": false, - "has_shipping": true, - "shipped_quantity": 0, - "returned": false, - "fulfilled": false, - "fulfilled_quantity": 0, - "returned_quantity": 0, - "_id": "5f65c927395b3e0021d8f984", - "title": "Item", - "description": "70x140", - "quantity": 1, - "thumbnail": "", - "content": { - "unit_price": 316, - "variant": { - "_id": "5f40f0a2b687940021667170", - "barcode": "", - "image": "", - "published": false, - "inventory_quantity": 20, - "allow_backorder": false, - "manage_inventory": true, - "title": "1234", - "sku": "SKU1234", - "ean": "5713682002297", - "options": [ - { - "_id": "5f40f0a2b687940021667171", - "value": "70x140", - "option_id": "5f40f0a2b687940021667163" - } - ], - "prices": [ - { - "_id": "5f40f0a2b687940021667172", - "currency_code": "EUR", - "amount": 44 - }, - { - "_id": "5f40f0a2b687940021667173", - "currency_code": "DKK", - "amount": 316 - } - ], - "__v": 0 - }, - "product": { - "_id": "5f40f0a2b687940021667162", - "description": "100% Good", - "tags": "", - "is_giftcard": false, - "images": [], - "thumbnail": "", - "variants": [ - "5f40f0a2b687940021667164", - "5f40f0a2b687940021667168", - "5f40f0a2b68794002166716c", - "5f40f0a2b687940021667170", - "5f40f0a2b687940021667174" - ], - "published": false, - "title": "Item", - "options": [ - { - "values": [], - "_id": "5f40f0a2b687940021667163", - "title": "Size" - } - ], - "__v": 0 - }, - "quantity": 1 - }, - "refundable": 3.95 - } - ], - "shipping_address": { - "_id": "5f60adf22162dd0021362beb", - "country_code": "DK", - "first_name": "John", - "last_name": "Jones", - "address_1": "Jone ST 9", - "city": "Jonstown", - "postal_code": "12332" - }, - "billing_address": { - "_id": "5f60adf22162dd0021362beb", - "country_code": "DK", - "first_name": "John", - "last_name": "Jones", - "address_1": "Jone ST 9", - "city": "Jonstown", - "postal_code": "12332" - }, - "region_id": "5f40ce8f7743b30021337e2b", - "email": "jojo@jon.com", - "customer_id": "5f42870e715758002170ed86", - "cart_id": "5f4bd6b47435de0021c69f04", - "tax_rate": 0.25, - "currency_code": "DKK", - "shipments": [], - "fulfillments": [], - "returns": [], - "refunds": [], - "created": "2020-09-19T09:03:29.000Z", - "shipping_total": 0, - "discount_total": 312.84, - "tax_total": 0.79, - "subtotal": 316, - "total": 3.95, - "refunded_total": 0, - "refundable_amount": 3.95, - "region": { - "_id": "5f40ce8f7743b30021337e2b", - "tax_rate": 0.25, - "countries": [ - "DK" - ], - "payment_providers": [ - "provider" - ], - "fulfillment_providers": [ - "manual" - ], - "name": "Denmark", - "currency_code": "DKK", - "tax_code": "D25", - "__v": 0 - }, - "customer": { - "_id": "5f42870e715758002170ed86", - "payment_methods": [], - "has_account": true, - "orders": [ - "5f65c961395b3e0021d8f994" - ], - "email": "jojo@jon.com", - "shipping_addresses": [ - { - "_id": "5f60adf22162dd0021362beb", - "country_code": "DK", - "first_name": "John", - "last_name": "Jones", - "address_1": "Jone ST 9", - "city": "Jonstown", - "postal_code": "12332" - } - ], - "__v": 0, - "metadata": { - "stripe_id": "cus_123123123" - }, - "first_name": "John", - "last_name": "Jones", - "password_hash": "c2NyeXB0AAEAAAABAAAAAd3Q0jehDc8N3cTdqlPCfeZtF5pILidEESwxcA9Yh8PuojRYBXG0xIiFKVq1xXGfXZlY6zkp1IGBXZDHKb9ZtExImjKlFJNwFxwiiaLFS6oD" + "discounts": [ + { + "id": "disc_OpYQN4H8MOWHN2en", + "code": "CCC3C4LL88", + "is_dynamic": true, + "discount_rule_id": "dru_MDyr3lJLa00uxOsY", + "parent_discount_id": "disc_ubtdlkASI7bfUj81", + "metadata": null + } + ], + "customer_id": "cus_4eThzYSuGv", + "shipping_methods": [ + { + "id": "sm_77bEapbO8tkCqw3yo1NBuCUl", + "shipping_option_id": "so_nRvwHhEdZw", + "order_id": "order_s9RojwCU2AM8RztcldM2Uof7", + "cart_id": null, + "swap_id": null, + "return_id": null, + "price": 0, + "data": { + "id": "Parcel shop", + "city": "Los Angeles", + "postal": "90046" + } + } + ], + "metadata": null, + "display_id": 50433, + "currency_code": "dkk", + "region_id": "reg_HMnixPlOicAs7aBlXuchAGxd", + "shipping_total": 0, + "discount_total": 0, + "tax_total": 3850000, + "subtotal": 154000, + "total": 4004000 } } diff --git a/docs/api/store/endpoints/product-variants.yaml b/docs/api/store/endpoints/product-variants.yaml new file mode 100644 index 0000000000..8a752120e6 --- /dev/null +++ b/docs/api/store/endpoints/product-variants.yaml @@ -0,0 +1,61 @@ +title: Product variants +domain: store +routes: + - method: GET + path: /product-variants + - method: GET + path: /product-variants/:id +route: /product-variants +description: > + A product variant represents a specific type of product. E.g. a variant can differ from other variants based on size and color. A variant will always belong to a product. +endpoints: + - path: /:id + method: GET + title: Retrieve product variant + params: + - name: id + type: String + description: Id of the product variant. + description: > + Retrieves product variant + - path: / + method: GET + title: List product variants + params: + - name: ids + optional: true + type: String + description: String of product variant ids. Id's needs to be separated by comma. + description: > + Retrieves product variants. Specific variants can be retrieved using `ids` query param in the request. + +response: | + { + "region": { + "id": "reg_HMnixPlOicAs7aBlXuchAGxd", + "name": "Denmark", + "currency_code": "DKK", + "currency": "DKK", + "tax_rate": 0.25, + "tax_code": null, + "countries": [{ + "id": "1001", + "iso_2": "DK", + "iso_3": "DNK", + "num_code": "208", + "name": "denmark", + "display_name": "Denmark" + }], + "payment_providers": [{ + "id": "stripe", + "is_installed": true + }], + "fulfillment_providers": [{ + "id": "manual", + "is_installed": true + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null + } + } diff --git a/docs/api/store/endpoints/products.yaml b/docs/api/store/endpoints/products.yaml new file mode 100644 index 0000000000..29251734b6 --- /dev/null +++ b/docs/api/store/endpoints/products.yaml @@ -0,0 +1,56 @@ +title: Products +domain: store +routes: + - method: POST + path: /products + - method: GET + path: /products/:id +route: /products +description: > + A product represents the object, that are to be sold on the website. A product can have variants, that differ by e.g. size and color. +endpoints: + - path: /:id + method: GET + title: Retrieve product + params: + - name: id + type: String + description: Id of the product. + description: > + Retrieves a product + - path: / + method: GET + title: List products + description: > + Retrieves the products for the configured store. + +response: | + { + "region": { + "id": "reg_HMnixPlOicAs7aBlXuchAGxd", + "name": "Denmark", + "currency_code": "DKK", + "currency": "DKK", + "tax_rate": 0.25, + "tax_code": null, + "countries": [{ + "id": "1001", + "iso_2": "DK", + "iso_3": "DNK", + "num_code": "208", + "name": "denmark", + "display_name": "Denmark" + }], + "payment_providers": [{ + "id": "stripe", + "is_installed": true + }], + "fulfillment_providers": [{ + "id": "manual", + "is_installed": true + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null + } + } diff --git a/docs/api/store/endpoints/regions.yaml b/docs/api/store/endpoints/regions.yaml index 9b191ebd40..e0a1e2d52e 100644 --- a/docs/api/store/endpoints/regions.yaml +++ b/docs/api/store/endpoints/regions.yaml @@ -1,41 +1,58 @@ title: Regions domain: store +routes: + - method: POST + path: /regions + - method: GET + path: /regions/:id route: /regions description: > - A Region represents a collection of countries that have common pricing + A region represents a collection of countries that have common pricing schemes, shipping options, tax schemes, etc. Carts must have a region associated. endpoints: - - path: / - method: GET - title: List Regions - description: > - Retrieves the regions configured for the store. - path: /:id method: GET - title: Retrieve a Region + title: Retrieve region params: - name: id type: String description: Id of the region. description: > Retrieves a region + - path: / + method: GET + title: List regions + description: > + Retrieves the regions configured for the store. response: | { "region": { + "id": "reg_HMnixPlOicAs7aBlXuchAGxd", "name": "Denmark", "currency_code": "DKK", + "currency": "DKK", "tax_rate": 0.25, - "countries": [ - "DK" - ], - "payment_providers": [ - "stripe" - ], - "fulfillment_providers": [ - "manual" - ], - "_id": "5f4cd45b5d1e3200214c0e49" + "tax_code": null, + "countries": [{ + "id": "1001", + "iso_2": "DK", + "iso_3": "DNK", + "num_code": "208", + "name": "denmark", + "display_name": "Denmark" + }], + "payment_providers": [{ + "id": "stripe", + "is_installed": true + }], + "fulfillment_providers": [{ + "id": "manual", + "is_installed": true + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null } } diff --git a/docs/api/store/endpoints/shipping-options.yaml b/docs/api/store/endpoints/shipping-options.yaml new file mode 100644 index 0000000000..0b5b478701 --- /dev/null +++ b/docs/api/store/endpoints/shipping-options.yaml @@ -0,0 +1,53 @@ +title: Shipping options +domain: store +routes: + - method: GET + path: /shipping-options +route: /shipping-options +description: > + A shipping option represents a delivery method for products and belongs to a region. +endpoints: + - path: / + method: GET + title: List shipping options + params: + - name: product_ids + optional: true + type: String + description: String of product ids. Id's needs to be separated by comma. + - name: region_id + type: String + description: Id of region + description: > + Retrieves shipping options in a given region. Shipping options for specific products can be retrieved using the `product_ids` query param. + +response: | + { + "region": { + "id": "reg_HMnixPlOicAs7aBlXuchAGxd", + "name": "Denmark", + "currency_code": "DKK", + "currency": "DKK", + "tax_rate": 0.25, + "tax_code": null, + "countries": [{ + "id": "1001", + "iso_2": "DK", + "iso_3": "DNK", + "num_code": "208", + "name": "denmark", + "display_name": "Denmark" + }], + "payment_providers": [{ + "id": "stripe", + "is_installed": true + }], + "fulfillment_providers": [{ + "id": "manual", + "is_installed": true + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null + } + } diff --git a/docs/api/store/endpoints/swaps.yaml b/docs/api/store/endpoints/swaps.yaml new file mode 100644 index 0000000000..3588f28f6a --- /dev/null +++ b/docs/api/store/endpoints/swaps.yaml @@ -0,0 +1,56 @@ +title: Swaps +domain: store +routes: + - method: GET + path: /swaps/:cart_id + - method: POST + path: /swaps +route: /swaps +description: > + A swap represents an order, that are created in the process of swapping items in an existing order. In the context of the store, the swap can be retrieved in order to make the payment (if relevant). Furthermore, it is possible to create / complete a swap in the store. +endpoints: + - path: / + method: GET + title: Get swap by cart + params: + - name: cart_id + type: String + description: Id of cart to retrieve swap for. + description: > + Retrieves swap by cart id. + - path: / + method: POST + title: Create swap + description: > + Creates / completes a swap. + +response: | + { + "region": { + "id": "reg_HMnixPlOicAs7aBlXuchAGxd", + "name": "Denmark", + "currency_code": "DKK", + "currency": "DKK", + "tax_rate": 0.25, + "tax_code": null, + "countries": [{ + "id": "1001", + "iso_2": "DK", + "iso_3": "DNK", + "num_code": "208", + "name": "denmark", + "display_name": "Denmark" + }], + "payment_providers": [{ + "id": "stripe", + "is_installed": true + }], + "fulfillment_providers": [{ + "id": "manual", + "is_installed": true + }], + "created_at": "2020-12-11T17:03:54.458Z", + "updated_at": "2020-12-11T17:03:54.458Z", + "metadata": null + } + } diff --git a/www/gatsby-config.js b/www/gatsby-config.js index 3185eed6a6..da3e9e907d 100644 --- a/www/gatsby-config.js +++ b/www/gatsby-config.js @@ -14,6 +14,7 @@ module.exports = { }, }, `gatsby-transformer-yaml`, + `gatsby-plugin-emotion`, { resolve: `gatsby-source-filesystem`, options: { diff --git a/www/package.json b/www/package.json index 828fb25930..93cc562e42 100644 --- a/www/package.json +++ b/www/package.json @@ -14,17 +14,22 @@ "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1" }, "dependencies": { + "@emotion/react": "^11.1.2", + "@emotion/styled": "^11.0.0", "emotion-theming": "^10.0.27", "gatsby": "^2.24.66", "gatsby-plugin-anchor-links": "^1.1.1", + "gatsby-plugin-emotion": "^5.0.0", "gatsby-plugin-react-helmet": "^3.3.12", "gatsby-source-filesystem": "^2.3.31", "gatsby-transformer-yaml": "^2.4.13", "react": "^16.12.0", + "react-collapsible": "^2.8.1", "react-dom": "^16.12.0", "react-helmet": "^6.1.0", "react-highlight.js": "^1.0.7", "react-intersection-observer": "^8.29.0", + "react-markdown": "^5.0.3", "rebass": "^4.0.7" }, "devDependencies": { diff --git a/www/src/fonts/Velocista-Demo-FFP.ttf b/www/src/fonts/Velocista-Demo-FFP.ttf new file mode 100644 index 0000000000..5ec955e98f Binary files /dev/null and b/www/src/fonts/Velocista-Demo-FFP.ttf differ diff --git a/www/src/fonts/index.css b/www/src/fonts/index.css new file mode 100644 index 0000000000..9aa214f71e --- /dev/null +++ b/www/src/fonts/index.css @@ -0,0 +1,4 @@ +@font-face { + font-family: "Medusa"; + src: url("./Velocista-Demo-FFP.ttf"); +} \ No newline at end of file diff --git a/www/src/pages/api/store.js b/www/src/pages/api/store.js index da5415ea6e..fb8623b849 100644 --- a/www/src/pages/api/store.js +++ b/www/src/pages/api/store.js @@ -1,49 +1,186 @@ import React, { useState, useEffect } from "react" import { graphql } from "gatsby" -import { Flex, Box, Text } from "rebass" +import { Flex, Box, Text, Image } from "rebass" +import styled from "@emotion/styled" import { AnchorLink } from "gatsby-plugin-anchor-links" +import Markdown from "react-markdown" import Highlight from "react-highlight.js" import { Helmet } from "react-helmet" -import { InView } from "react-intersection-observer" +import Collapsible from "react-collapsible" +import logo from "../../images/logo.png" import Layout from "../../components/layout" -import "highlight.js/styles/a11y-dark.css" +import "highlight.js/styles/a11y-light.css" + +const EndpointContainer = styled(Flex)` + min-height: 90vh; + position: relative; + border-top: hairline; + + code { + background-color: #e3e8ee; + border-radius: 5px; + padding: 4px; + } +` + +const StyledRoutesOverview = styled(Flex)` + border: 1px solid #e3e8ee; + border-radius: 5px; + margin-left: auto; + margin-right: auto; + width: 45%; + max-height: calc(90vh - 20px); + overflow-y: scroll; + align-self: flex-start; + font-size: 1; + top: 20px; + bottom: 20px; +` + +const ResponseContainer = styled(Flex)` + border: 1px solid #e3e8ee; + border-radius: 5px; + margin-left: auto; + margin-right: auto; + width: 100%; + max-height: calc(90vh - 20px); + overflow-y: scroll; + align-self: flex-start; + font-size: 1; + position: sticky; + top: 20px; + bottom: 20px; + + code { + background: #f7fafc !important; + } +` + +const StyledNavItem = styled(Flex)` + padding-left: 10px; + padding-right: 10px; + align-items: center; + border-radius: 5pt; + cursor: pointer; + margin-bottom: 5px; + height: 25px; + + &:hover { + background-color: #e0e0e059; + } +` + +const StyledAnchorLink = styled(AnchorLink)` + display: flex; + padding-left: 10px; + padding-right: 10px; + margin-left: 10px; + align-items: center; + border-radius: 5pt; + cursor: pointer; + margin-bottom: 5px; + text-decoration: none; + align-items: center; + color: black; + height: 25px; + [fill*="red"] { + fill: #454545; + } + &:hover { + ${props => + !props.active && + ` + background-color: #e0e0e059; + `} + } + &.active { + background-color: #e0e0e0; + } +` + +const SideBarContainer = styled(Flex)` + position: sticky; + top: 0; + height: 100vh; + overflow-y: scroll; + background-color: #f0f0f0; + min-width: 250px; + flex-direction: column; +` const convertToKebabCase = string => { return string.replace(/\s+/g, "-").toLowerCase() } +const RoutesOverview = ({ content }) => { + if (!content) return null + + return ( + + + ENDPOINTS + + + + {content.map(route => ( + + + {route.method} + + {route.path} + + ))} + + + + ) +} + const JsonBox = ({ content }) => { const json = JSON.parse(content) return ( - - + + RESPONSE - + {JSON.stringify(json, undefined, 2)} - + ) } @@ -66,14 +203,14 @@ const ParamSection = ({ routeParam, param }) => { ) } -const RouteSection = ({ path, method }) => { +const RouteSection = ({ basePath, path, method }) => { return ( {method} - {path} + {`${basePath}${path === "/" ? "" : path}`} ) @@ -81,34 +218,59 @@ const RouteSection = ({ path, method }) => { const SideBar = ({ endpoints }) => { return ( - + + + + MEDUSA + + {endpoints.edges.map(({ node }) => { return ( - - - {node.title} - - {node.endpoints.map(e => ( - - - {e.title} - - - ))} + + {node.title}} + > + {node.endpoints.map(e => ( + + {e.title} + + ))} + ) })} + + ) +} + +const EndpointOverview = ({ title, description, routes }) => { + return ( + + + + {title} + + {description} + + {routes && } ) } @@ -123,73 +285,77 @@ const StoreApi = ({ data }) => { - + {endpoints.edges.map(({ node }) => ( - - - - - {node.title} - - - {node.route} - - {node.description} - {node.endpoints.map(endpoint => ( - - - {endpoint.title} - - - {endpoint.description} - {((endpoint.params && endpoint.params.length) || - (endpoint.body && endpoint.body.length)) && ( - + + + + + + {node.endpoints.map((endpoint, i) => ( + - Parameters - {(endpoint.params || []).map(p => ( - - ))} - {(endpoint.body || []).map(p => ( - - ))} - - )} + + + {endpoint.title} + + + {endpoint.description} + {((endpoint.params && endpoint.params.length) || + (endpoint.body && endpoint.body.length)) && ( + + Parameters + {(endpoint.params || []).map(p => ( + + ))} + {(endpoint.body || []).map(p => ( + + ))} + + )} + + + ))} - ))} + + + + - - - - + ))} @@ -206,6 +372,10 @@ export const pageQuery = graphql` node { id title + routes { + method + path + } route response description @@ -215,6 +385,7 @@ export const pageQuery = graphql` params { description name + optional type } method diff --git a/www/src/theme/index.js b/www/src/theme/index.js index 28d3cbd377..8c202dab01 100644 --- a/www/src/theme/index.js +++ b/www/src/theme/index.js @@ -1,6 +1,8 @@ import React from "react" import { ThemeProvider as Provider } from "emotion-theming" +import "../fonts/index.css" + import breakpoints from "./breakpoints" import buttons from "./buttons" import spacing from "./spacing" diff --git a/www/src/theme/labels.js b/www/src/theme/labels.js index 8fe0dbea24..2331fc32d1 100644 --- a/www/src/theme/labels.js +++ b/www/src/theme/labels.js @@ -4,13 +4,13 @@ export const labels = { fontSize: 0, }, GET: { - color: "green", + color: "#4159de", }, POST: { - color: "blue", + color: "#09825d", }, DELETE: { - color: "danger", + color: "#b50a0a", }, } diff --git a/www/yarn.lock b/www/yarn.lock index d59d63371f..f9d65be119 100644 --- a/www/yarn.lock +++ b/www/yarn.lock @@ -85,6 +85,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" + integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -102,6 +109,15 @@ "@babel/helper-module-imports" "^7.10.4" "@babel/types" "^7.11.5" +"@babel/helper-builder-react-jsx-experimental@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2" + integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.10" + "@babel/helper-module-imports" "^7.12.5" + "@babel/types" "^7.12.10" + "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" @@ -195,6 +211,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.5", "@babel/helper-module-imports@^7.7.0": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -465,6 +488,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -747,6 +777,16 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" +"@babel/plugin-transform-react-jsx@^7.12.1": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3" + integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.10" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" @@ -1000,6 +1040,50 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.10", "@babel/types@^7.12.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" + integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@emotion/babel-plugin-jsx-pragmatic@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-0.1.5.tgz#27debfe9c27c4d83574d509787ae553bf8a34d7e" + integrity sha512-y+3AJ0SItMDaAgGPVkQBC/S/BaqaPACkQ6MyCI2CUlrjTxKttTVfD3TMtcs7vLEcLxqzZ1xiG0vzwCXjhopawQ== + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@emotion/babel-plugin@^11.0.0": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.1.2.tgz#68fe1aa3130099161036858c64ee92056c6730b7" + integrity sha512-Nz1k7b11dWw8Nw4Z1R99A9mlB6C6rRsCtZnwNUOj4NsoZdrO2f2A/83ST7htJORD5zpOiLKY59aJN23092949w== + dependencies: + "@babel/helper-module-imports" "^7.7.0" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/runtime" "^7.7.2" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.0" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "^4.0.3" + +"@emotion/babel-preset-css-prop@^11.0.0": + version "11.0.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.0.0.tgz#25b868affa620b9e97024b67f67ad32c03a0510e" + integrity sha512-E7z3jMf1OyThGpp3ngYGxOSGX5AdoSQTuqM9QgJNAHFh3Fi8N5CbWx6g+IdySJ8bjPiMgFQsIeEhkyy+4mDpCQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/runtime" "^7.7.2" + "@emotion/babel-plugin" "^11.0.0" + "@emotion/babel-plugin-jsx-pragmatic" "^0.1.5" + "@emotion/cache@^10.0.27": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" @@ -1010,6 +1094,17 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" +"@emotion/cache@^11.0.0": + version "11.0.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.0.0.tgz#473adcaf9e04c6a0e30fb1421e79a209a96818f8" + integrity sha512-NStfcnLkL5vj3mBILvkR2m/5vFxo3G0QEreYKDGHNHm9IMYoT/t3j6xwjx6lMI/S1LUJfVHQqn0m9wSINttTTQ== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.0.0" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "^4.0.3" + "@emotion/core@^10.0.0", "@emotion/core@^10.0.14": version "10.0.35" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" @@ -1031,7 +1126,7 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@0.8.0": +"@emotion/hash@0.8.0", "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== @@ -1043,11 +1138,36 @@ dependencies: "@emotion/memoize" "0.7.4" +"@emotion/is-prop-valid@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.0.0.tgz#1dbe82e52a12c065d416a702e2d106e552cde5be" + integrity sha512-G5X0t7eR9pkhUvAY32QS3lToP9JyNF8It5CcmMvbWjmC9/Yq7IhevaKqxl+me2BKR93iTPiL/h3En1ZX/1G3PQ== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/memoize@0.7.4", "@emotion/memoize@^0.7.1": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/react@^11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.2.tgz#a635cfc6bc0974756f690b848c684338183b2593" + integrity sha512-zEpxynUhHm2GqjY556RnA12Ijt0v6rYUwV6WliyGoFbQKJKkXFuTzGHGQx4UY2jKUV1I4yjr66Ajj/qoQMVPeQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@emotion/cache" "^11.0.0" + "@emotion/serialize" "^1.0.0" + "@emotion/sheet" "^1.0.1" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + hoist-non-react-statics "^3.3.1" + "@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": version "0.11.16" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" @@ -1059,11 +1179,27 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" +"@emotion/serialize@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.0.tgz#1a61f4f037cf39995c97fc80ebe99abc7b191ca9" + integrity sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw== + dependencies: + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.4" + "@emotion/unitless" "^0.7.5" + "@emotion/utils" "^1.0.0" + csstype "^3.0.2" + "@emotion/sheet@0.9.4": version "0.9.4" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698" + integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g== + "@emotion/styled-base@^10.0.27": version "10.0.31" resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" @@ -1082,12 +1218,23 @@ "@emotion/styled-base" "^10.0.27" babel-plugin-emotion "^10.0.27" +"@emotion/styled@^11.0.0": + version "11.0.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.0.0.tgz#698196c2822746360a8644a73a5d842b2d1a78a5" + integrity sha512-498laccxJlBiJqrr2r/fx9q+Pr55D0URP2UyOkoSGLjevb8LLAFWueqthsQ5XijE66iGo7y3rzzEYdA7CHmZEQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@emotion/babel-plugin" "^11.0.0" + "@emotion/is-prop-valid" "^1.0.0" + "@emotion/serialize" "^1.0.0" + "@emotion/utils" "^1.0.0" + "@emotion/stylis@0.8.5": version "0.8.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@0.7.5": +"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== @@ -1097,7 +1244,12 @@ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== -"@emotion/weak-memoize@0.2.5": +"@emotion/utils@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" + integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== + +"@emotion/weak-memoize@0.2.5", "@emotion/weak-memoize@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== @@ -1665,7 +1817,7 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18" integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA== -"@types/mdast@^3.0.0": +"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== @@ -2501,7 +2653,7 @@ babel-plugin-lodash@3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: +babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.6.1, babel-plugin-macros@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -4028,6 +4180,13 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^4.0.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" @@ -4335,6 +4494,15 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + entities "^2.0.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -4355,6 +4523,11 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== +domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -4362,6 +4535,20 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + domutils@1.5.1, domutils@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -4378,6 +4565,15 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.4.2: + version "2.4.4" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" + integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -5577,6 +5773,14 @@ gatsby-plugin-anchor-links@^1.1.1: dependencies: scroll-to-element "^2.0.3" +gatsby-plugin-emotion@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-emotion/-/gatsby-plugin-emotion-5.0.0.tgz#146b9de51f3c95687d4e9afc6741ac68ddba8d48" + integrity sha512-hOPzvYG3N4Ml4hu92pzHiTZCXc5oO32C08eMdAthp/3hWNBfOc+wdI+Xb+18txGvE9Na3yCdCB4/yo6nQWyyOQ== + dependencies: + "@babel/runtime" "^7.11.2" + "@emotion/babel-preset-css-prop" "^11.0.0" + gatsby-plugin-page-creator@^2.3.29: version "2.3.29" resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.29.tgz#b3783bf8356769467dde555986c1cb07c469b824" @@ -6437,7 +6641,7 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6498,6 +6702,16 @@ html-tag-names@^1.1.5: resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.5.tgz#f537420c16769511283f8ae1681785fbc89ee0a9" integrity sha512-aI5tKwNTBzOZApHIynaAwecLBv8TlZTEy/P4Sj2SzzAhBrGuI8yGZ0UIXVPQzOHGS+to2mjb04iy6VWt/8+d8A== +html-to-react@^1.3.4: + version "1.4.5" + resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.5.tgz#59091c11021d1ef315ef738460abb6a4a41fe1ce" + integrity sha512-KONZUDFPg5OodWaQu2ymfkDmU0JA7zB1iPfvyHehTmMUZnk0DS7/TyCMTzsLH6b4BvxX15g88qZCXFhJWktsmA== + dependencies: + domhandler "^3.3.0" + htmlparser2 "^5.0" + lodash.camelcase "^4.3.0" + ramda "^0.27.1" + html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" @@ -6515,6 +6729,16 @@ htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^5.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" + integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.3.0" + domutils "^2.4.2" + entities "^2.0.0" + http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -7656,6 +7880,11 @@ lodash-es@^4.17.14: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + lodash.clonedeep@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -7869,6 +8098,13 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-add-list-metadata@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz#95e73640ce2fc1fa2dcb7ec443d09e2bfe7db4cf" + integrity sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA== + dependencies: + unist-util-visit-parents "1.1.2" + mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" @@ -7890,6 +8126,17 @@ mdast-util-definitions@^3.0.0: dependencies: unist-util-visit "^2.0.0" +mdast-util-from-markdown@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz#2882100c1b9fc967d3f83806802f303666682d32" + integrity sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + mdast-util-to-hast@9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.0.tgz#6ef121dd3cd3b006bf8650b1b9454da0faf79ffe" @@ -7907,6 +8154,11 @@ mdast-util-to-hast@9.1.0: unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -7968,6 +8220,14 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromark@~2.11.0: + version "2.11.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.2.tgz#e8b6a05f54697d2d3d27fc89600c6bc40dd05f35" + integrity sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -9682,6 +9942,11 @@ raf@^3.4.0: dependencies: performance-now "^2.1.0" +ramda@^0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -9749,6 +10014,11 @@ react-clientside-effect@^1.2.2: dependencies: "@babel/runtime" "^7.0.0" +react-collapsible@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/react-collapsible/-/react-collapsible-2.8.1.tgz#60f47a12203bb8477d4c0e221b109fa839fed66c" + integrity sha512-ykV+EpCBYC6UoOsZLtBxrs/kFVgJc2gFMU1/SS2JLG+LrMHSOERpWSG+fexyFYk44hdfJRmc/If+HlSjXcbCiw== + react-dev-utils@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.3.tgz#5b42d9ea58d5e9e017a2f57a40a8af408a3a46fb" @@ -9854,7 +10124,7 @@ react-intersection-observer@^8.29.0: resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.29.0.tgz#8349a6301bfc24329a029036c6bed30f9864f3ad" integrity sha512-Bqp7GBa5Aieo8C33Bz0e5WuUnFUKN3WOayKMT/2f0ujfW+YpzOEdNE4MK/TnaHp+cisK7n1At3qcFaNPfhHbqw== -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9864,6 +10134,22 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-markdown@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-5.0.3.tgz#41040ea7a9324b564b328fb81dd6c04f2a5373ac" + integrity sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w== + dependencies: + "@types/mdast" "^3.0.3" + "@types/unist" "^2.0.3" + html-to-react "^1.3.4" + mdast-add-list-metadata "1.0.1" + prop-types "^15.7.2" + react-is "^16.8.6" + remark-parse "^9.0.0" + unified "^9.0.0" + unist-util-visit "^2.0.0" + xtend "^4.0.1" + react-reconciler@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.24.0.tgz#5a396b2c2f5efe8554134a5935f49f546723f2dd" @@ -10221,6 +10507,13 @@ remark-parse@^6.0.3: vfile-location "^2.0.0" xtend "^4.0.1" +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + remark-squeeze-paragraphs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" @@ -11336,6 +11629,11 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548" + integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg== + subscriptions-transport-ws@^0.9.16: version "0.9.18" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" @@ -11791,6 +12089,18 @@ unified@^8.4.2: trough "^1.0.0" vfile "^4.0.0" +unified@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -11894,6 +12204,11 @@ unist-util-stringify-position@^2.0.0, unist-util-stringify-position@^2.0.3: dependencies: "@types/unist" "^2.0.2" +unist-util-visit-parents@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" + integrity sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q== + unist-util-visit-parents@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"