From 34e6c527458c42ba9e736976079e3a79bbd6bc8a Mon Sep 17 00:00:00 2001 From: olivermrbl Date: Tue, 15 Dec 2020 13:49:45 +0100 Subject: [PATCH] chore: updates API reference docs --- docs/api/store/endpoints/carts.yaml | 59 ++- docs/api/store/endpoints/customers.yaml | 170 +++++--- docs/api/store/endpoints/orders.yaml | 324 +++++--------- .../api/store/endpoints/product-variants.yaml | 61 +++ docs/api/store/endpoints/products.yaml | 56 +++ docs/api/store/endpoints/regions.yaml | 51 ++- .../api/store/endpoints/shipping-options.yaml | 53 +++ docs/api/store/endpoints/swaps.yaml | 56 +++ www/gatsby-config.js | 1 + www/package.json | 5 + www/src/fonts/Velocista-Demo-FFP.ttf | Bin 0 -> 39916 bytes www/src/fonts/index.css | 4 + www/src/pages/api/store.js | 395 +++++++++++++----- www/src/theme/index.js | 2 + www/src/theme/labels.js | 6 +- www/yarn.lock | 329 ++++++++++++++- 16 files changed, 1149 insertions(+), 423 deletions(-) create mode 100644 docs/api/store/endpoints/product-variants.yaml create mode 100644 docs/api/store/endpoints/products.yaml create mode 100644 docs/api/store/endpoints/shipping-options.yaml create mode 100644 docs/api/store/endpoints/swaps.yaml create mode 100644 www/src/fonts/Velocista-Demo-FFP.ttf create mode 100644 www/src/fonts/index.css 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 0000000000000000000000000000000000000000..5ec955e98fa5c9c1176079634c1070c9688804a4 GIT binary patch literal 39916 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 literal 0 HcmV?d00001 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"