From 52687cd3793a5872ee8435b091909eabad5ab5bb Mon Sep 17 00:00:00 2001 From: Kyle Gill Date: Tue, 11 Aug 2020 10:41:07 -0600 Subject: [PATCH 01/70] add redirects for cloud unif --- www/cloud-redirects.yaml | 45 +++++++++++++++++++++++++++++++ www/gatsby-node.js | 58 +++++++++++++++++++++++++++++++++------- 2 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 www/cloud-redirects.yaml diff --git a/www/cloud-redirects.yaml b/www/cloud-redirects.yaml new file mode 100644 index 0000000000000..0818a5f6323f9 --- /dev/null +++ b/www/cloud-redirects.yaml @@ -0,0 +1,45 @@ +# slugified tags on .org had dashes that WP doesn't include +- fromPath: /blog/tags/a-11-y/ + toPath: https://gatsbyjs.com/blog/tags/a11y/ +- fromPath: /blog/tags/i-18-n/ + toPath: https://gatsbyjs.com/blog/tags/i18n/ +- fromPath: /blog/tags/s-3/ + toPath: https://gatsbyjs.com/blog/tags/s3/ +- fromPath: /blog/tags/v-1/ + toPath: https://gatsbyjs.com/blog/tags/v1/ +- fromPath: /blog/tags/v-2/ + toPath: https://gatsbyjs.com/blog/tags/v2/ +# 100days posts lived under another folder, WP doesn't support "-" in slugs +- fromPath: /blog/100days/accessibility/ + toPath: https://gatsbyjs.com/blog/100days-accessibility/ +- fromPath: /blog/100days/apps/ + toPath: https://gatsbyjs.com/blog/100days-apps/ +- fromPath: /blog/100days/cms/ + toPath: https://gatsbyjs.com/blog/100days-cms/ +- fromPath: /blog/100days/comments/ + toPath: https://gatsbyjs.com/blog/100days-comments/ +- fromPath: /blog/100days/create-themes/ + toPath: https://gatsbyjs.com/blog/100days-create-themes/ +- fromPath: /blog/100days/free-hosting/ + toPath: https://gatsbyjs.com/blog/100days-free-hosting/ +- fromPath: /blog/100days/gatsby-image/ + toPath: https://gatsbyjs.com/blog/100days-gatsby-image/ +- fromPath: /blog/100days/mdx/ + toPath: https://gatsbyjs.com/blog/100days-mdx/ +- fromPath: /blog/100days/performance/ + toPath: https://gatsbyjs.com/blog/100days-performance/ +- fromPath: /blog/100days/pwa/ + toPath: https://gatsbyjs.com/blog/100days-pwa/ +- fromPath: /blog/100days/react-component/ + toPath: https://gatsbyjs.com/blog/100days-react-component/ +- fromPath: /blog/100days/seo/ + toPath: https://gatsbyjs.com/blog/100days-seo/ +- fromPath: /blog/100days/serverless/ + toPath: https://gatsbyjs.com/blog/100days-serverless/ +- fromPath: /blog/100days/start-blog/ + toPath: https://gatsbyjs.com/blog/100days-start-blog/ +- fromPath: /blog/100days/use-themes/ + toPath: https://gatsbyjs.com/blog/100days-use-themes/ +# sunsetting /ecosystem, directing to plugins makes sense +- fromPath: /ecosystem + toPath: https://gatsbyjs.com/plugins/ diff --git a/www/gatsby-node.js b/www/gatsby-node.js index a574d47e38381..3a5dc07b06a05 100644 --- a/www/gatsby-node.js +++ b/www/gatsby-node.js @@ -3,6 +3,7 @@ const startersRedirects = require(`./starter-redirects.json`) const { loadYaml } = require(`./src/utils/load-yaml`) const redirects = loadYaml(`./redirects.yaml`) +const cloudRedirects = loadYaml(`./cloud-redirects.yaml`) // Split the logic into files based on the section of the website. // The eventual goal is to split www into different themes per section. @@ -23,7 +24,7 @@ const sections = [ creators, packages, features, - apiCalls, + apiCalls ] // Run the provided API on all defined sections of the site @@ -36,16 +37,16 @@ async function runApiForSections(api, helpers) { exports.onCreateWebpackConfig = ({ actions, plugins }) => { const currentCommitSHA = require(`child_process`) .execSync(`git rev-parse HEAD`, { - encoding: `utf-8`, + encoding: `utf-8` }) .trim() actions.setWebpackConfig({ plugins: [ plugins.define({ - "process.env.COMMIT_SHA": JSON.stringify(currentCommitSHA), - }), - ], + "process.env.COMMIT_SHA": JSON.stringify(currentCommitSHA) + }) + ] }) } @@ -53,7 +54,7 @@ exports.createSchemaCustomization = async helpers => { await runApiForSections(`createSchemaCustomization`, helpers) const { - actions: { createTypes }, + actions: { createTypes } } = helpers // Explicitly define Airtable types so that queries still work @@ -104,9 +105,9 @@ exports.createResolvers = async helpers => { } return [] - }, - }, - }, + } + } + } }) } @@ -120,6 +121,13 @@ exports.createPages = async helpers => { const { actions } = helpers const { createRedirect } = actions + /** + * ============================================================================ + * REDIIRECTS + * NOTE: Order matters!! Higher specificity comes first + * ============================================================================ + */ + redirects.forEach(redirect => { createRedirect({ isPermanent: true, ...redirect, force: true }) }) @@ -129,7 +137,37 @@ exports.createPages = async helpers => { fromPath: `/starters${fromSlug}`, toPath: `/starters${toSlug}`, isPermanent: true, - force: true, + force: true }) }) + + // one-off redirects for .com + // pages that don't line up 1 to 1 with data stored in WP + cloudRedirects.forEach(redirect => { + createRedirect({ isPermanent: true, ...redirect, force: true }) + }) + + // splat redirects + await createRedirect({ + fromPath: `/packages/*`, + toPath: `https://gatsbyjs.com/plugins/:splat`, + isPermanent: true, + force: true + }) + + await createRedirect({ + fromPath: `/creators/*`, + toPath: `https://gatsbyjs.com/partner/`, + isPermanent: true, + force: true + }) + + // catch all redirect + // this needs to be the last redirect created or it'll match everything + await createRedirect({ + fromPath: `/*`, + toPath: `https://gatsbyjs.com/:splat`, + isPermanent: true, + force: true + }) } From d74ea66cea5fdf79b271f3d4ca018e61f09b8a83 Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Wed, 12 Aug 2020 09:59:58 +0200 Subject: [PATCH 02/70] fix(structured-logging): fix wrongly reporting status as success when we should still be in pending state (#26380) --- .../reporter/redux/__tests__/integration.ts | 71 +++++++++++ .../redux/__tests__/internal-actions.ts | 113 ++++++++++++++++++ .../gatsby-cli/src/reporter/redux/index.ts | 2 +- .../src/reporter/redux/internal-actions.ts | 107 ++++++++--------- 4 files changed, 237 insertions(+), 56 deletions(-) create mode 100644 packages/gatsby-cli/src/reporter/redux/__tests__/integration.ts create mode 100644 packages/gatsby-cli/src/reporter/redux/__tests__/internal-actions.ts diff --git a/packages/gatsby-cli/src/reporter/redux/__tests__/integration.ts b/packages/gatsby-cli/src/reporter/redux/__tests__/integration.ts new file mode 100644 index 0000000000000..4a6f595a218ed --- /dev/null +++ b/packages/gatsby-cli/src/reporter/redux/__tests__/integration.ts @@ -0,0 +1,71 @@ +import { ActivityStatuses, ActivityTypes } from "../../constants" +import { ISetStatus } from "../types" + +jest.useFakeTimers() + +describe(`integration`, () => { + let dispatchSpy, internalActions + + const getDispatchedSetStatusActions = (): Array => + dispatchSpy.mock.calls + .map(args => args[0]) + .filter(action => action.type === `SET_STATUS`) + + beforeEach(async () => { + jest.resetModules() + const { getStore } = require(`../`) + dispatchSpy = jest.spyOn(getStore(), `dispatch`) + internalActions = await import(`../actions`) + }) + + test(`Doesn't dispatch pre-emptive SUCCESS `, async () => { + const { + createPendingActivity, + endActivity, + startActivity, + } = internalActions + + startActivity({ + id: `activity-1`, + text: `activity-1`, + type: ActivityTypes.Spinner, + }) + endActivity({ id: `activity-1`, status: ActivityStatuses.Success }) + startActivity({ + id: `activity-2`, + text: `activity-2`, + type: ActivityTypes.Spinner, + }) + createPendingActivity({ id: `pending-activity` }) + endActivity({ id: `activity-2`, status: ActivityStatuses.Success }) + + jest.runOnlyPendingTimers() + + let dispatchedSetStatusActions = getDispatchedSetStatusActions() + + // we don't expect to see SET_STATUS other than initial IN_PROGRESS + // as we still have pending activity + expect(dispatchedSetStatusActions.length).toEqual(1) + expect(dispatchedSetStatusActions[0]).toEqual({ + type: `SET_STATUS`, + payload: `IN_PROGRESS`, + timestamp: expect.any(String), + }) + + endActivity({ id: `pending-activity`, status: ActivityStatuses.Cancelled }) + jest.runOnlyPendingTimers() + + dispatchedSetStatusActions = getDispatchedSetStatusActions() + expect(dispatchedSetStatusActions.length).toEqual(2) + expect(dispatchedSetStatusActions[0]).toEqual({ + type: `SET_STATUS`, + payload: `IN_PROGRESS`, + timestamp: expect.any(String), + }) + expect(dispatchedSetStatusActions[1]).toEqual({ + type: `SET_STATUS`, + payload: `SUCCESS`, + timestamp: expect.any(String), + }) + }) +}) diff --git a/packages/gatsby-cli/src/reporter/redux/__tests__/internal-actions.ts b/packages/gatsby-cli/src/reporter/redux/__tests__/internal-actions.ts new file mode 100644 index 0000000000000..7e2dc75b1bbf6 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/redux/__tests__/internal-actions.ts @@ -0,0 +1,113 @@ +import { Dispatch, CombinedState } from "redux" + +import { ActivityStatuses } from "../../constants" +import { ISetStatus, IGatsbyCLIState } from "../types" +import { GatsbyCLIStore } from "../" + +jest.useFakeTimers() + +describe(`setStatus action creator`, () => { + let mockStatus: ActivityStatuses | "" = `` + let setStatus + + const dispatchMockFn: Dispatch = ( + action: T + ): T => { + mockStatus = action.payload + return action + } + + const dispatch = jest.fn(dispatchMockFn) + + const setStatusWithDispatch = ( + status: ActivityStatuses | "" + ): T => setStatus(status)(dispatch) + + beforeAll(async () => { + jest.doMock(`../`, () => { + return { + getStore: (): Partial => { + return { + getState: (): CombinedState<{ logs: IGatsbyCLIState }> => { + return { + logs: { status: mockStatus, messages: [], activities: {} }, + } + }, + } + }, + } + }) + jest.resetModules() + setStatus = (await import(`../internal-actions`)).setStatus + }) + + afterAll(() => { + jest.unmock(`../`) + }) + + beforeEach(() => { + mockStatus = `` + dispatch.mockClear() + }) + + it(`debounces SUCCESS in case activities don't overlap`, () => { + setStatusWithDispatch(ActivityStatuses.InProgress) + setStatusWithDispatch(ActivityStatuses.Success) + setStatusWithDispatch(ActivityStatuses.InProgress) + setStatusWithDispatch(ActivityStatuses.Success) + + // we should only emit initial IN_PROGRESS event + expect(dispatch).toHaveBeenCalledTimes(1) + expect(dispatch).toHaveBeenNthCalledWith(1, { + type: `SET_STATUS`, + payload: ActivityStatuses.InProgress, + }) + + jest.runOnlyPendingTimers() + + expect(dispatch).toHaveBeenCalledTimes(2) + expect(dispatch).toHaveBeenNthCalledWith(2, { + type: `SET_STATUS`, + payload: ActivityStatuses.Success, + }) + }) + + it(`debounces FAILED in case activities don't overlap`, () => { + setStatusWithDispatch(ActivityStatuses.InProgress) + setStatusWithDispatch(ActivityStatuses.Success) + setStatusWithDispatch(ActivityStatuses.InProgress) + setStatusWithDispatch(ActivityStatuses.Failed) + + // we should only emit initial IN_PROGRESS event + expect(dispatch).toHaveBeenCalledTimes(1) + expect(dispatch).toHaveBeenNthCalledWith(1, { + type: `SET_STATUS`, + payload: ActivityStatuses.InProgress, + }) + + jest.runOnlyPendingTimers() + + expect(dispatch).toHaveBeenCalledTimes(2) + expect(dispatch).toHaveBeenNthCalledWith(2, { + type: `SET_STATUS`, + payload: ActivityStatuses.Failed, + }) + }) + + it(`doesn't wrongly emit SUCCESS when we are still in progress `, () => { + setStatusWithDispatch(ActivityStatuses.InProgress) + setStatusWithDispatch(ActivityStatuses.Success) + setStatusWithDispatch(ActivityStatuses.InProgress) + + expect(dispatch).toHaveBeenCalledTimes(1) + expect(dispatch).toHaveBeenNthCalledWith(1, { + type: `SET_STATUS`, + payload: ActivityStatuses.InProgress, + }) + + jest.runOnlyPendingTimers() + + //we are still in progress, so we shouldn't emit anything other than initial IN_PROGRESS + expect(dispatch).toHaveBeenCalledTimes(1) + }) +}) diff --git a/packages/gatsby-cli/src/reporter/redux/index.ts b/packages/gatsby-cli/src/reporter/redux/index.ts index f3c207d1467ad..bd29a252c76ce 100644 --- a/packages/gatsby-cli/src/reporter/redux/index.ts +++ b/packages/gatsby-cli/src/reporter/redux/index.ts @@ -11,7 +11,7 @@ let store = createStore( {} ) -type GatsbyCLIStore = typeof store +export type GatsbyCLIStore = typeof store type StoreListener = (store: GatsbyCLIStore) => void type ActionLogListener = (action: ActionsUnion) => any type Thunk = (...args: any[]) => ActionsUnion diff --git a/packages/gatsby-cli/src/reporter/redux/internal-actions.ts b/packages/gatsby-cli/src/reporter/redux/internal-actions.ts index 449ef26658a98..57f18d4d70b32 100644 --- a/packages/gatsby-cli/src/reporter/redux/internal-actions.ts +++ b/packages/gatsby-cli/src/reporter/redux/internal-actions.ts @@ -44,23 +44,40 @@ signalExit(() => { }) let cancelDelayedSetStatus: (() => void) | null -// TODO: THIS IS NOT WORKING ATM + +let pendingStatus: ActivityStatuses | "" = `` + +// We debounce "done" statuses because activities don't always overlap +// and there is timing window after one activity ends and before next one starts +// where technically we are "done" (all activities are done). +// We don't want to emit multiple SET_STATUS events that would toggle between +// IN_PROGRESS and SUCCESS/FAILED in short succession in those cases. export const setStatus = ( status: ActivityStatuses | "", force: boolean = false ) => (dispatch: Dispatch): void => { const currentStatus = getStore().getState().logs.status + if (cancelDelayedSetStatus) { cancelDelayedSetStatus() cancelDelayedSetStatus = null } - if (status !== currentStatus) { - if (status === `IN_PROGRESS` || force || weShouldExit) { - dispatch({ - type: Actions.SetStatus, - payload: status, - }) - } else { + + if ( + status !== currentStatus && + (status === ActivityStatuses.InProgress || force || weShouldExit) + ) { + dispatch({ + type: Actions.SetStatus, + payload: status, + }) + pendingStatus = `` + } else { + // use pending status if truthy, fallback to current status if we don't have pending status + const pendingOrCurrentStatus = pendingStatus || currentStatus + + if (status !== pendingOrCurrentStatus) { + pendingStatus = status cancelDelayedSetStatus = delayedCall(() => { setStatus(status, true)(dispatch) }, 1000) @@ -135,26 +152,18 @@ export const createPendingActivity = ({ id: string status?: ActivityStatuses }): ActionsToEmit => { - const actionsToEmit: ActionsToEmit = [] - - const logsState = getStore().getState().logs - const globalStatus = getGlobalStatus(id, status) - - if (globalStatus !== logsState.status) { - actionsToEmit.push(setStatus(globalStatus)) - } - - actionsToEmit.push({ - type: Actions.PendingActivity, - payload: { - id, - type: ActivityTypes.Pending, - status, + return [ + setStatus(globalStatus), + { + type: Actions.PendingActivity, + payload: { + id, + type: ActivityTypes.Pending, + status, + }, }, - }) - - return actionsToEmit + ] } type QueuedStartActivityActions = Array< @@ -175,32 +184,25 @@ export const startActivity = ({ current?: number total?: number }): QueuedStartActivityActions => { - const actionsToEmit: QueuedStartActivityActions = [] - - const logsState = getStore().getState().logs - const globalStatus = getGlobalStatus(id, status) - if (globalStatus !== logsState.status) { - actionsToEmit.push(setStatus(globalStatus)) - } - - actionsToEmit.push({ - type: Actions.StartActivity, - payload: { - id, - uuid: uuidv4(), - text, - type, - status, - startTime: process.hrtime(), - statusText: ``, - current, - total, + return [ + setStatus(globalStatus), + { + type: Actions.StartActivity, + payload: { + id, + uuid: uuidv4(), + text, + type, + status, + startTime: process.hrtime(), + statusText: ``, + current, + total, + }, }, - }) - - return actionsToEmit + ] } type QueuedEndActivity = Array< @@ -276,13 +278,8 @@ export const endActivity = ({ } } - const logsState = getStore().getState().logs - const globalStatus = getGlobalStatus(id, status) - - if (globalStatus !== logsState.status) { - actionsToEmit.push(setStatus(globalStatus)) - } + actionsToEmit.push(setStatus(globalStatus)) return actionsToEmit } From baa0d6c1f0571d9d6b9d2e752de1e39cd0e315f0 Mon Sep 17 00:00:00 2001 From: Sidhartha Chatterjee Date: Wed, 12 Aug 2020 13:30:59 +0530 Subject: [PATCH 03/70] chore(release): Publish - gatsby-admin@0.1.133 - gatsby-cli@2.12.84 - gatsby@2.24.44 --- packages/gatsby-admin/CHANGELOG.md | 4 ++++ packages/gatsby-admin/package.json | 4 ++-- packages/gatsby-cli/CHANGELOG.md | 6 ++++++ packages/gatsby-cli/package.json | 2 +- packages/gatsby/CHANGELOG.md | 4 ++++ packages/gatsby/package.json | 4 ++-- 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/gatsby-admin/CHANGELOG.md b/packages/gatsby-admin/CHANGELOG.md index 6765e396da715..414991a401557 100644 --- a/packages/gatsby-admin/CHANGELOG.md +++ b/packages/gatsby-admin/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.133](https://github.com/gatsbyjs/gatsby/compare/gatsby-admin@0.1.132...gatsby-admin@0.1.133) (2020-08-12) + +**Note:** Version bump only for package gatsby-admin + ## [0.1.132](https://github.com/gatsbyjs/gatsby/compare/gatsby-admin@0.1.131...gatsby-admin@0.1.132) (2020-08-11) **Note:** Version bump only for package gatsby-admin diff --git a/packages/gatsby-admin/package.json b/packages/gatsby-admin/package.json index ac5af45fcbe6e..3acb662319842 100644 --- a/packages/gatsby-admin/package.json +++ b/packages/gatsby-admin/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-admin", - "version": "0.1.132", + "version": "0.1.133", "main": "index.js", "author": "Max Stoiber", "license": "MIT", @@ -19,7 +19,7 @@ "csstype": "^2.6.10", "feedback-fish": "^0.1.12", "formik": "^2.1.4", - "gatsby": "^2.24.43", + "gatsby": "^2.24.44", "gatsby-interface": "0.0.183", "gatsby-plugin-typescript": "^2.4.18", "gatsby-plugin-webfonts": "^1.1.3", diff --git a/packages/gatsby-cli/CHANGELOG.md b/packages/gatsby-cli/CHANGELOG.md index b1fc1689465b9..ce587e1c02702 100644 --- a/packages/gatsby-cli/CHANGELOG.md +++ b/packages/gatsby-cli/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.12.84](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.12.83...gatsby-cli@2.12.84) (2020-08-12) + +### Bug Fixes + +- **structured-logging:** fix wrongly reporting status as success when we should still be in pending state ([#26380](https://github.com/gatsbyjs/gatsby/issues/26380)) ([d74ea66](https://github.com/gatsbyjs/gatsby/commit/d74ea66)) + ## [2.12.83](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.12.82...gatsby-cli@2.12.83) (2020-08-11) **Note:** Version bump only for package gatsby-cli diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 592998970b175..658bae5f87343 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-cli", "description": "Gatsby command-line interface for creating new sites and running Gatsby commands", - "version": "2.12.83", + "version": "2.12.84", "author": "Kyle Mathews ", "bin": { "gatsby": "cli.js" diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index e25e8ecd086b5..8b855b3c1887c 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.44](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.43...gatsby@2.24.44) (2020-08-12) + +**Note:** Version bump only for package gatsby + ## [2.24.43](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.42...gatsby@2.24.43) (2020-08-11) ### Bug Fixes diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 7cce9df6f104e..002a73f0e15aa 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.24.43", + "version": "2.24.44", "author": "Kyle Mathews ", "bin": { "gatsby": "./cli.js" @@ -71,7 +71,7 @@ "find-cache-dir": "^3.3.1", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.12.83", + "gatsby-cli": "^2.12.84", "gatsby-core-utils": "^1.3.15", "gatsby-graphiql-explorer": "^0.4.12", "gatsby-legacy-polyfills": "^0.0.2", From be6d21e2747a22a4f8ea1fef38756f5dcc629ec5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2020 13:35:15 +0530 Subject: [PATCH 04/70] chore: update www (#26343) Co-authored-by: Renovate Bot --- www/package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/www/package.json b/www/package.json index 5a27ef13a8e8b..985d1f33d278a 100644 --- a/www/package.json +++ b/www/package.json @@ -21,11 +21,11 @@ "dotenv": "^8.2.0", "email-validator": "^1.2.3", "fuse.js": "^3.6.1", - "gatsby": "^2.24.37", + "gatsby": "^2.24.43", "gatsby-alias-imports": "^1.0.4", "gatsby-core-utils": "^1.3.15", "gatsby-design-tokens": "^2.0.10", - "gatsby-image": "^2.4.14", + "gatsby-image": "^2.4.15", "gatsby-plugin-canonical-urls": "^2.3.10", "gatsby-plugin-catch-links": "^2.3.11", "gatsby-plugin-emotion": "^4.3.10", @@ -35,16 +35,16 @@ "gatsby-plugin-guess-js": "^1.3.11", "gatsby-plugin-layout": "^1.3.10", "gatsby-plugin-mailchimp": "^2.2.3", - "gatsby-plugin-manifest": "^2.4.22", + "gatsby-plugin-manifest": "^2.4.23", "gatsby-plugin-mdx": "1.2.34", - "gatsby-plugin-netlify": "^2.3.12", + "gatsby-plugin-netlify": "^2.3.13", "gatsby-plugin-netlify-cache": "^0.1.0", "gatsby-plugin-nprogress": "^2.3.10", - "gatsby-plugin-offline": "^3.2.22", + "gatsby-plugin-offline": "^3.2.23", "gatsby-plugin-react-helmet": "^3.3.10", "gatsby-plugin-react-svg": "^3.0.0", "gatsby-plugin-remove-serviceworker": "^1.0.0", - "gatsby-plugin-sharp": "^2.6.25", + "gatsby-plugin-sharp": "^2.6.27", "gatsby-plugin-sitemap": "^2.4.11", "gatsby-plugin-theme-ui": "^0.3.0", "gatsby-plugin-twitter": "^2.3.10", @@ -68,7 +68,7 @@ "gatsby-transformer-documentationjs": "^4.3.13", "gatsby-transformer-remark": "^2.8.28", "gatsby-transformer-screenshot": "^2.3.16", - "gatsby-transformer-sharp": "^2.5.12", + "gatsby-transformer-sharp": "^2.5.13", "gatsby-transformer-yaml": "^2.4.10", "get-package-json-from-github": "^1.2.1", "graphql-request": "1.8.2", @@ -124,7 +124,7 @@ "forestry:preview": "gatsby develop -p 8080 -H 0.0.0.0" }, "devDependencies": { - "@testing-library/jest-dom": "^5.11.2", + "@testing-library/jest-dom": "^5.11.3", "@testing-library/react": "^10.4.8", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^24.9.0", From e6b626859307f94905e1c617b86057d827bb505c Mon Sep 17 00:00:00 2001 From: Juliano Farias Date: Wed, 12 Aug 2020 10:24:24 +0200 Subject: [PATCH 05/70] fix(recipes): Install storybook dependencies with development type on typescript recipe (#25989) Dependencies were being added as direct dependencies, against what's suggested in the storybook documentation. --- .../gatsby-recipes/recipes/storybook-ts.mdx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/gatsby-recipes/recipes/storybook-ts.mdx b/packages/gatsby-recipes/recipes/storybook-ts.mdx index ec94b075f398f..85ce52533ac49 100644 --- a/packages/gatsby-recipes/recipes/storybook-ts.mdx +++ b/packages/gatsby-recipes/recipes/storybook-ts.mdx @@ -11,17 +11,17 @@ This recipe: Installs TypesScript + babel plugins and presets as well as the Storybook React NPM packages and addons. - - - - - - - - - - - + + + + + + + + + + + --- From 08e0aa1be204b6c7255b857095fb6d628431822c Mon Sep 17 00:00:00 2001 From: Matt Schwartz Date: Wed, 12 Aug 2020 03:27:16 -0500 Subject: [PATCH 06/70] fix(gatsby-image): Fix typings for fixed and fluid props (#24767) Co-authored-by: Matt Kane --- packages/gatsby-image/index.d.ts | 20 ++++++++++++++++--- .../gatsby-image/withIEPolyfill/index.d.ts | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/gatsby-image/index.d.ts b/packages/gatsby-image/index.d.ts index e4f1eec6344ee..c88fc622870bf 100644 --- a/packages/gatsby-image/index.d.ts +++ b/packages/gatsby-image/index.d.ts @@ -24,11 +24,15 @@ export interface FluidObject { media?: string } -interface GatsbyImageProps { +interface GatsbyImageOptionalProps { + /** + * @deprecated Use `fixed` + */ resolutions?: FixedObject + /** + * @deprecated Use `fluid` + */ sizes?: FluidObject - fixed?: FixedObject | FixedObject[] - fluid?: FluidObject | FluidObject[] fadeIn?: boolean durationFadeIn?: number title?: string @@ -49,6 +53,16 @@ interface GatsbyImageProps { loading?: `auto` | `lazy` | `eager` draggable?: boolean } + +interface GatsbyImageFluidProps extends GatsbyImageOptionalProps { + fluid: FluidObject | FluidObject[] +} + +interface GatsbyImageFixedProps extends GatsbyImageOptionalProps { + fixed: FixedObject | FixedObject[] +} + +export type GatsbyImageProps = GatsbyImageFluidProps | GatsbyImageFixedProps export default class GatsbyImage extends React.Component< GatsbyImageProps, diff --git a/packages/gatsby-image/withIEPolyfill/index.d.ts b/packages/gatsby-image/withIEPolyfill/index.d.ts index 54c745305d976..8365de1624cdf 100644 --- a/packages/gatsby-image/withIEPolyfill/index.d.ts +++ b/packages/gatsby-image/withIEPolyfill/index.d.ts @@ -2,7 +2,7 @@ import * as React from "react" import GatsbyImage, { GatsbyImageProps } from "../index" -interface GatsbyImageWithIEPolyfillProps extends GatsbyImageProps { +type GatsbyImageWithIEPolyfillProps = GatsbyImageProps & { objectFit?: `fill` | `contain` | `cover` | `none` | `scale-down` objectPosition?: string } From 88a8025f5e53706a14f8763ad7a4ee7d5882c643 Mon Sep 17 00:00:00 2001 From: Juliano Farias Date: Wed, 12 Aug 2020 10:29:01 +0200 Subject: [PATCH 07/70] fix(deps): install deps as devDependencies on storybook recipe (#25991) As suggested in the storybook documentation. --- .../gatsby-recipes/recipes/storybook-js.mdx | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/gatsby-recipes/recipes/storybook-js.mdx b/packages/gatsby-recipes/recipes/storybook-js.mdx index cf55c78185047..545fb00e935f6 100644 --- a/packages/gatsby-recipes/recipes/storybook-js.mdx +++ b/packages/gatsby-recipes/recipes/storybook-js.mdx @@ -8,16 +8,16 @@ This recipe: Installs babel plugins and presets as well as the Storybook React NPM packages and addons. - - - - - - - - - - + + + + + + + + + + --- From 81a1c03aa99d16f9a8d8adcfe4f25b6d869bf2d2 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Wed, 12 Aug 2020 11:00:26 +0200 Subject: [PATCH 08/70] fix(gatsby-source-graphql): use the latest version of graphql-tools (#26392) --- packages/gatsby-source-graphql/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/gatsby-source-graphql/package.json b/packages/gatsby-source-graphql/package.json index a99c2484820a7..a0776afa71f89 100644 --- a/packages/gatsby-source-graphql/package.json +++ b/packages/gatsby-source-graphql/package.json @@ -8,9 +8,9 @@ }, "dependencies": { "@babel/runtime": "^7.10.3", - "@graphql-tools/links": "v6.0.9", - "@graphql-tools/utils": "v6.0.9", - "@graphql-tools/wrap": "v6.0.9", + "@graphql-tools/links": "^6.0.9", + "@graphql-tools/utils": "^6.0.9", + "@graphql-tools/wrap": "^6.0.9", "apollo-link": "1.2.14", "apollo-link-http": "^1.5.17", "dataloader": "^2.0.0", From 3ed62dfff57d8cf97793f6eb786225610db84cf7 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Wed, 12 Aug 2020 12:05:25 +0200 Subject: [PATCH 09/70] fix: update yarn.lock after recent gatsby-source-graphql version bump (#26397) --- yarn.lock | 183 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 134 insertions(+), 49 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0d790df82ef86..239e7d906b345 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,24 @@ # yarn lockfile v1 +"@apollo/client@^3.0.2": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.1.3.tgz#4ea9c3818bd2836a3dbe26088227c3d8cb46ad2b" + integrity sha512-zXMiaj+dX0sgXIwEV5d/PI6B8SZT2bqlKNjZWcEXRY7NjESF5J3nd4v8KOsrhHe+A3YhNv63tIl35Sq7uf41Pg== + dependencies: + "@types/zen-observable" "^0.8.0" + "@wry/context" "^0.5.2" + "@wry/equality" "^0.2.0" + fast-json-stable-stringify "^2.0.0" + graphql-tag "^2.11.0" + hoist-non-react-statics "^3.3.2" + optimism "^0.12.1" + prop-types "^15.7.2" + symbol-observable "^1.2.0" + ts-invariant "^0.4.4" + tslib "^1.10.0" + zen-observable "^0.8.14" + "@ardatan/aggregate-error@0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.1.tgz#1403ac5de10d8ca689fc1f65844c27179ae1d44f" @@ -1363,6 +1381,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.10.5": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/standalone@^7.10.2": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.11.0.tgz#c8882afdb737306cb127f58f0befec4def31beb5" @@ -1670,33 +1695,36 @@ unique-filename "^1.1.1" which "^1.3.1" -"@graphql-tools/delegate@6.0.9": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.0.9.tgz#f3cd06837c502c596d1a3e1d625d9c95168825fc" - integrity sha512-v3qiQspXCr0/UGu0V8nEBS1Qwkb/zscgD321PgxgYFDljvBsAuysz7Q0DXl9OYkPqwS2RTPeYZZqsgahEpfpeg== +"@graphql-tools/delegate@6.0.18": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.0.18.tgz#093e335e346cd26791222e066a3e5929bc38b79c" + integrity sha512-CmNTD60qcTEZM3bvOV2t3Zdj7veY0zgXXVXNgMC9Fx+D2dNdJFCwXdcPAF0SKqlJoj/alBDSl1U6nqYKT9fQOA== dependencies: - "@graphql-tools/schema" "6.0.9" - "@graphql-tools/utils" "6.0.9" + "@ardatan/aggregate-error" "0.0.1" + "@graphql-tools/schema" "6.0.18" + "@graphql-tools/utils" "6.0.18" + is-promise "4.0.0" tslib "~2.0.0" -"@graphql-tools/links@v6.0.9": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.0.9.tgz#4dd0e7ffc96bc1a22bb9f3a2817e21ec16b52992" - integrity sha512-bw++CJ7Txr49ISPHEvnw4UUE+a/2lxsGFrF99ioXJUqeiluukdjVdszgxOr+SOrW/BdJYwMh7094dRkXc07mfg== +"@graphql-tools/links@^6.0.9": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.0.18.tgz#cc0d0542b98a12ee6a5763462255e9421343509d" + integrity sha512-r1unH0UqlUNT985zGfajhq5iysFDCeHB5I2mu+fdaAoIWQB+1dizUpwVkYarWX+u9W4OSNFrF9Hw8IwzKS+51Q== dependencies: - "@graphql-tools/utils" "6.0.9" + "@graphql-tools/utils" "6.0.18" apollo-link "1.2.14" - apollo-upload-client "13.0.0" - cross-fetch "3.0.4" + apollo-upload-client "14.1.1" + cross-fetch "3.0.5" form-data "3.0.0" + is-promise "4.0.0" tslib "~2.0.0" -"@graphql-tools/schema@6.0.9": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.9.tgz#1b9d7a465c0459cdfbce5860fa8c7ef89f0d96b5" - integrity sha512-lemY+UeZRVmMYPvszCKvPfaR+R0dR2FgqjhESzlNWBbLhHuCewilTzYuQ+A+o8hQxdtPGIHfNPGf6A0ZZ70jWw== +"@graphql-tools/schema@6.0.18": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.0.18.tgz#243eb370e4cded00767202bbabf0893f65c3f5b9" + integrity sha512-xrScjRX9pTSVxqiSkx7Hn/9rzxLweysINa5Pkirdkv5lJY4e0Db53osur0nG/+SJyUmIN70tUtuhEZq4Ezr/PA== dependencies: - "@graphql-tools/utils" "6.0.9" + "@graphql-tools/utils" "6.0.18" tslib "~2.0.0" "@graphql-tools/schema@^6.0.14": @@ -1715,21 +1743,24 @@ "@ardatan/aggregate-error" "0.0.1" camel-case "4.1.1" -"@graphql-tools/utils@6.0.9", "@graphql-tools/utils@v6.0.9": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.0.9.tgz#135a56f6520a99a2bbbfaf7d76bd5f681d1ce457" - integrity sha512-WtX+t64SCN9VejKA/gdtm2sHPOX8D1G1tAyrrKH7hnh6RaCmQwYkhs/f6tBnTTYOIBy7yVYNoXzqiv/tmOkAOQ== +"@graphql-tools/utils@6.0.18", "@graphql-tools/utils@^6.0.9": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.0.18.tgz#bba960f0ab327c8304089d41da0b7a3e00fe430f" + integrity sha512-8ntYuXJucBtjViOYljeKBzScfpVTnv7BfqIPU/WJ65h6nXD+qf8fMUR1C4MpCUeFvSjMiDSB5Z4enJmau/9D3A== dependencies: + "@ardatan/aggregate-error" "0.0.1" camel-case "4.1.1" -"@graphql-tools/wrap@v6.0.9": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.0.9.tgz#c8f447513ca9d10c31e695ad09992fb0c4ae0518" - integrity sha512-tvygPTfI8DcbT1rJ45dqkpbF6xYxy3/54yvrzgHJc674clAI9q98i16mql9iso3Rc9oSEt1CWUugmrNqgcgWrA== +"@graphql-tools/wrap@^6.0.9": + version "6.0.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.0.18.tgz#a9a9bd8e1dac469671274153f419ab35317164ac" + integrity sha512-AHegxtawd+ivpUhI1gP4xQWWYPl5GvCmvzaas03DfrGlGcV/LyKJIzdZDEs2E4oCgwCU7F9UQMxgTsq+Dttn5Q== dependencies: - "@graphql-tools/delegate" "6.0.9" - "@graphql-tools/schema" "6.0.9" - "@graphql-tools/utils" "6.0.9" + "@graphql-tools/delegate" "6.0.18" + "@graphql-tools/schema" "6.0.18" + "@graphql-tools/utils" "6.0.18" + aggregate-error "3.0.1" + is-promise "4.0.0" tslib "~2.0.0" "@gustavnikolaj/async-main-wrap@^3.0.1": @@ -4277,6 +4308,11 @@ resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== +"@types/zen-observable@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" + integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== + "@typescript-eslint/eslint-plugin@^2.24.0", "@typescript-eslint/eslint-plugin@^2.28.0": version "2.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.28.0.tgz#4431bc6d3af41903e5255770703d4e55a0ccbdec" @@ -4531,6 +4567,13 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@wry/context@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.5.2.tgz#f2a5d5ab9227343aa74c81e06533c1ef84598ec7" + integrity sha512-B/JLuRZ/vbEKHRUiGj6xiMojST1kHhu4WcreLfNN7q9DqQFrb97cWgf/kiYsPSUCAMVN0HzfFc8XjJdzgZzfjw== + dependencies: + tslib "^1.9.3" + "@wry/equality@^0.1.2": version "0.1.9" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz#b13e18b7a8053c6858aa6c85b54911fb31e3a909" @@ -4538,6 +4581,13 @@ dependencies: tslib "^1.9.3" +"@wry/equality@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.2.0.tgz#a312d1b6a682d0909904c2bcd355b02303104fb7" + integrity sha512-Y4d+WH6hs+KZJUC8YKLYGarjGekBrhslDbf/R20oV+AakHPINSitHfDRQz3EGcEWc1luXYNUvMhawWtZVWNGvQ== + dependencies: + tslib "^1.9.3" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -4716,6 +4766,14 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" +aggregate-error@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + aggregate-error@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79" @@ -4934,7 +4992,7 @@ apache-md5@1.1.2: resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.2.tgz#ee49736b639b4f108b6e9e626c6da99306b41692" integrity sha1-7klza2ObTxCLbp5ibG2pkwa0FpI= -apollo-link-http-common@^0.2.14, apollo-link-http-common@^0.2.16: +apollo-link-http-common@^0.2.16: version "0.2.16" resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== @@ -4952,7 +5010,7 @@ apollo-link-http@^1.5.17: apollo-link-http-common "^0.2.16" tslib "^1.9.3" -apollo-link@1.2.14, apollo-link@^1.2.12, apollo-link@^1.2.14: +apollo-link@1.2.14, apollo-link@^1.2.14: version "1.2.14" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== @@ -4962,15 +5020,14 @@ apollo-link@1.2.14, apollo-link@^1.2.12, apollo-link@^1.2.14: tslib "^1.9.3" zen-observable-ts "^0.8.21" -apollo-upload-client@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-13.0.0.tgz#146d1ddd85d711fcac8ca97a72d3ca6787f2b71b" - integrity sha512-lJ9/bk1BH1lD15WhWRha2J3+LrXrPIX5LP5EwiOUHv8PCORp4EUrcujrA3rI5hZeZygrTX8bshcuMdpqpSrvtA== +apollo-upload-client@14.1.1: + version "14.1.1" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-14.1.1.tgz#2b21bb3424293a56ad9c4b9678395f5898f9b9be" + integrity sha512-6H6AW5habDHH/9XCJ8l2qlkaohwIcO+Lt/8P2908/yx0TC0oaiDNVu+0v2YE/5gA6NP0RvztUodzJUZJz27C0g== dependencies: - "@babel/runtime" "^7.9.2" - apollo-link "^1.2.12" - apollo-link-http-common "^0.2.14" - extract-files "^8.0.0" + "@apollo/client" "^3.0.2" + "@babel/runtime" "^7.10.5" + extract-files "^9.0.0" apollo-utilities@^1.3.0: version "1.3.2" @@ -7859,13 +7916,12 @@ cross-fetch@2.2.2: node-fetch "2.1.2" whatwg-fetch "2.0.4" -cross-fetch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" - integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== +cross-fetch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.5.tgz#2739d2981892e7ab488a7ad03b92df2816e03f4c" + integrity sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew== dependencies: node-fetch "2.6.0" - whatwg-fetch "3.0.0" cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" @@ -10217,10 +10273,10 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-8.1.0.tgz#46a0690d0fe77411a2e3804852adeaa65cd59288" - integrity sha512-PTGtfthZK79WUMk+avLmwx3NGdU8+iVFXC2NMGxKsn0MnihOG2lvumj+AZo8CTwTrwjXDgZ5tztbRlEdRjBonQ== +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== extract-zip@^1.6.6: version "1.7.0" @@ -11822,6 +11878,11 @@ graphql-subscriptions@^1.1.0: dependencies: iterall "^1.2.1" +graphql-tag@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" + integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== + graphql-type-json@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9" @@ -12331,6 +12392,13 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" +hoist-non-react-statics@^3.3.2: + 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== + dependencies: + react-is "^16.7.0" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -13557,6 +13625,11 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -17605,6 +17678,13 @@ opn@^5.4.0, opn@^5.5.0: dependencies: is-wsl "^1.1.0" +optimism@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.12.1.tgz#933f9467b9aef0e601655adb9638f893e486ad02" + integrity sha512-t8I7HM1dw0SECitBYAqFOVHoBAHEQBTeKjIL9y9ImHzAVkdyPK4ifTgM4VJRDtTUY4r/u5Eqxs4XcGPHaoPkeQ== + dependencies: + "@wry/context" "^0.5.2" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -24052,7 +24132,7 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== -ts-invariant@^0.4.0: +ts-invariant@^0.4.0, ts-invariant@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== @@ -26254,6 +26334,11 @@ zen-observable@^0.8.0: version "0.8.9" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.9.tgz#0475c760ff0eda046bbdfa4dc3f95d392807ac53" +zen-observable@^0.8.14: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== + zipkin-javascript-opentracing@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/zipkin-javascript-opentracing/-/zipkin-javascript-opentracing-2.1.0.tgz#05aed5ff7b609f60ca54020de7f3b0b6c0b0a973" From 76be951eef5e95a03dc8faafe57a5888943e3f62 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Wed, 12 Aug 2020 12:11:41 +0200 Subject: [PATCH 10/70] chore(release): Publish - gatsby-admin@0.1.134 - gatsby-cli@2.12.85 - gatsby-image@2.4.16 - gatsby-recipes@0.2.14 - gatsby-source-graphql@2.7.1 - gatsby@2.24.45 --- packages/gatsby-admin/CHANGELOG.md | 4 ++++ packages/gatsby-admin/package.json | 6 +++--- packages/gatsby-cli/CHANGELOG.md | 4 ++++ packages/gatsby-cli/package.json | 4 ++-- packages/gatsby-image/CHANGELOG.md | 6 ++++++ packages/gatsby-image/package.json | 2 +- packages/gatsby-recipes/CHANGELOG.md | 7 +++++++ packages/gatsby-recipes/package.json | 2 +- packages/gatsby-source-graphql/CHANGELOG.md | 6 ++++++ packages/gatsby-source-graphql/package.json | 2 +- packages/gatsby/CHANGELOG.md | 4 ++++ packages/gatsby/package.json | 4 ++-- 12 files changed, 41 insertions(+), 10 deletions(-) diff --git a/packages/gatsby-admin/CHANGELOG.md b/packages/gatsby-admin/CHANGELOG.md index 414991a401557..15e5da0b795a1 100644 --- a/packages/gatsby-admin/CHANGELOG.md +++ b/packages/gatsby-admin/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.134](https://github.com/gatsbyjs/gatsby/compare/gatsby-admin@0.1.133...gatsby-admin@0.1.134) (2020-08-12) + +**Note:** Version bump only for package gatsby-admin + ## [0.1.133](https://github.com/gatsbyjs/gatsby/compare/gatsby-admin@0.1.132...gatsby-admin@0.1.133) (2020-08-12) **Note:** Version bump only for package gatsby-admin diff --git a/packages/gatsby-admin/package.json b/packages/gatsby-admin/package.json index 3acb662319842..95ef2b55e3d9f 100644 --- a/packages/gatsby-admin/package.json +++ b/packages/gatsby-admin/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-admin", - "version": "0.1.133", + "version": "0.1.134", "main": "index.js", "author": "Max Stoiber", "license": "MIT", @@ -19,11 +19,11 @@ "csstype": "^2.6.10", "feedback-fish": "^0.1.12", "formik": "^2.1.4", - "gatsby": "^2.24.44", + "gatsby": "^2.24.45", "gatsby-interface": "0.0.183", "gatsby-plugin-typescript": "^2.4.18", "gatsby-plugin-webfonts": "^1.1.3", - "gatsby-source-graphql": "^2.7.0", + "gatsby-source-graphql": "^2.7.1", "lodash-es": "^4.17.15", "ncp": "^2.0.0", "nodemon": "^2.0.4", diff --git a/packages/gatsby-cli/CHANGELOG.md b/packages/gatsby-cli/CHANGELOG.md index ce587e1c02702..368421795e258 100644 --- a/packages/gatsby-cli/CHANGELOG.md +++ b/packages/gatsby-cli/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.12.85](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.12.84...gatsby-cli@2.12.85) (2020-08-12) + +**Note:** Version bump only for package gatsby-cli + ## [2.12.84](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.12.83...gatsby-cli@2.12.84) (2020-08-12) ### Bug Fixes diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 658bae5f87343..da269fde9c79b 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-cli", "description": "Gatsby command-line interface for creating new sites and running Gatsby commands", - "version": "2.12.84", + "version": "2.12.85", "author": "Kyle Mathews ", "bin": { "gatsby": "cli.js" @@ -24,7 +24,7 @@ "fs-exists-cached": "^1.0.0", "fs-extra": "^8.1.0", "gatsby-core-utils": "^1.3.15", - "gatsby-recipes": "^0.2.13", + "gatsby-recipes": "^0.2.14", "gatsby-telemetry": "^1.3.27", "hosted-git-info": "^3.0.4", "ink": "^2.7.1", diff --git a/packages/gatsby-image/CHANGELOG.md b/packages/gatsby-image/CHANGELOG.md index 8075952fbd488..0e54d99ef8afe 100644 --- a/packages/gatsby-image/CHANGELOG.md +++ b/packages/gatsby-image/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.4.16](https://github.com/gatsbyjs/gatsby/compare/gatsby-image@2.4.15...gatsby-image@2.4.16) (2020-08-12) + +### Bug Fixes + +- **gatsby-image:** Fix typings for fixed and fluid props ([#24767](https://github.com/gatsbyjs/gatsby/issues/24767)) ([08e0aa1](https://github.com/gatsbyjs/gatsby/commit/08e0aa1)) + ## [2.4.15](https://github.com/gatsbyjs/gatsby/compare/gatsby-image@2.4.14...gatsby-image@2.4.15) (2020-08-10) **Note:** Version bump only for package gatsby-image diff --git a/packages/gatsby-image/package.json b/packages/gatsby-image/package.json index 3c28942649822..b2b01980379ae 100644 --- a/packages/gatsby-image/package.json +++ b/packages/gatsby-image/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-image", "description": "Lazy-loading React image component with optional support for the blur-up effect.", - "version": "2.4.15", + "version": "2.4.16", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-recipes/CHANGELOG.md b/packages/gatsby-recipes/CHANGELOG.md index 5449d05fcc80c..935c14beab56b 100644 --- a/packages/gatsby-recipes/CHANGELOG.md +++ b/packages/gatsby-recipes/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.14](https://github.com/gatsbyjs/gatsby/compare/gatsby-recipes@0.2.13...gatsby-recipes@0.2.14) (2020-08-12) + +### Bug Fixes + +- **deps:** install deps as devDependencies on storybook recipe ([#25991](https://github.com/gatsbyjs/gatsby/issues/25991)) ([88a8025](https://github.com/gatsbyjs/gatsby/commit/88a8025)) +- **recipes:** Install storybook dependencies with development type on typescript recipe ([#25989](https://github.com/gatsbyjs/gatsby/issues/25989)) ([e6b6268](https://github.com/gatsbyjs/gatsby/commit/e6b6268)) + ## [0.2.13](https://github.com/gatsbyjs/gatsby/compare/gatsby-recipes@0.2.12...gatsby-recipes@0.2.13) (2020-08-11) ### Bug Fixes diff --git a/packages/gatsby-recipes/package.json b/packages/gatsby-recipes/package.json index e8d1843456405..f213705ff68c1 100644 --- a/packages/gatsby-recipes/package.json +++ b/packages/gatsby-recipes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-recipes", "description": "Core functionality for Gatsby Recipes", - "version": "0.2.13", + "version": "0.2.14", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-graphql/CHANGELOG.md b/packages/gatsby-source-graphql/CHANGELOG.md index f8eee7a50cfa8..eb42d19745202 100644 --- a/packages/gatsby-source-graphql/CHANGELOG.md +++ b/packages/gatsby-source-graphql/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.7.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-graphql@2.7.0...gatsby-source-graphql@2.7.1) (2020-08-12) + +### Bug Fixes + +- **gatsby-source-graphql:** use the latest version of graphql-tools ([#26392](https://github.com/gatsbyjs/gatsby/issues/26392)) ([81a1c03](https://github.com/gatsbyjs/gatsby/commit/81a1c03)) + # [2.7.0](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-graphql@2.6.2...gatsby-source-graphql@2.7.0) (2020-08-06) ### Features diff --git a/packages/gatsby-source-graphql/package.json b/packages/gatsby-source-graphql/package.json index a0776afa71f89..3d062271c77e7 100644 --- a/packages/gatsby-source-graphql/package.json +++ b/packages/gatsby-source-graphql/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-graphql", "description": "Gatsby plugin which adds a third-party GraphQL API to Gatsby GraphQL", - "version": "2.7.0", + "version": "2.7.1", "author": "Mikhail Novikov ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index 8b855b3c1887c..a21794cddc68b 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.45](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.44...gatsby@2.24.45) (2020-08-12) + +**Note:** Version bump only for package gatsby + ## [2.24.44](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.24.43...gatsby@2.24.44) (2020-08-12) **Note:** Version bump only for package gatsby diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 002a73f0e15aa..69281becac905 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.24.44", + "version": "2.24.45", "author": "Kyle Mathews ", "bin": { "gatsby": "./cli.js" @@ -71,7 +71,7 @@ "find-cache-dir": "^3.3.1", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.12.84", + "gatsby-cli": "^2.12.85", "gatsby-core-utils": "^1.3.15", "gatsby-graphiql-explorer": "^0.4.12", "gatsby-legacy-polyfills": "^0.0.2", From 22d2b27c3b8ddd91e961194656c4044a374cf599 Mon Sep 17 00:00:00 2001 From: vaporwavy Date: Wed, 12 Aug 2020 19:18:39 +0900 Subject: [PATCH 11/70] chore(starters): update gatsby-vapor (#25243) --- docs/starters.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/starters.yml b/docs/starters.yml index ae0527800959c..16d5fd05def94 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -6841,6 +6841,7 @@ tags: - Blog - SEO + - Search - Markdown - HTML5UP - Pagination From 7d7f6f429894b96721464791e8dde62e1475717f Mon Sep 17 00:00:00 2001 From: Eric Howey Date: Wed, 12 Aug 2020 04:24:31 -0600 Subject: [PATCH 12/70] chore(starters): add gatsby-starter-catalyst-lithium (#25535) --- docs/starters.yml | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 16d5fd05def94..a90c8f37153d0 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -6743,6 +6743,7 @@ - Designed with component shadowing in mind to allow easier customization. - Theme UI is deeply integrated with design tokens and variants throughout. - Color mode switching available by default. + - RSS Feed - SEO optimized to include social media images and Twitter handles. - React Scroll for one page, anchor based navigation is available. - Code highlighting via Prism. @@ -6917,6 +6918,57 @@ - Pagination - Share Button - Prism for code preview +- url: https://gatsby-starter-catalyst-lithium.netlify.app/ + repo: https://github.com/ehowey/gatsby-starter-catalyst-lithium + description: A personal blog starter with large featured images, SEO optimization, dark mode, and support for many different frontmatter fields. Based on Gatsby Theme Catalyst. Uses MDX for content and Theme UI for styling. Includes a core theme, a header theme, a footer theme, and a blog theme. + tags: + - MDX + - Styling:Theme-UI + - SEO + - PWA + - Blog + features: + - Based on Gatsby Theme Catalyst series of themes and starters. + - Theme options are used to enable some simple layout changes. + - Designed with component shadowing in mind to allow easier customization. + - Theme UI is deeply integrated with design tokens and variants throughout. + - Color mode switching available by default. + - RSS Feed + - SEO optimized to include social media images and Twitter handles. + - React Scroll for one page, anchor based navigation is available. + - Code highlighting via Prism. +- url: https://ghost-novela-preview.draftbox.co/ + repo: https://github.com/draftbox-co/gatsby-ghost-novela-starter + description: A Gatsby starter for creating blogs from headless Ghost CMS. + tags: + - AMP + - Blog + - CMS:Headless + - CMS:Ghost + - Disqus + - Language:TypeScript + - Markdown + - MDX + - Netlify + - Pagination + - PWA + - RSS + - SEO + - Styling:CSS-in-JS + - Styling:Theme-UI + features: + - Novela theme by Narrative + - Data sourcing from headless Ghost + - Responsive design + - SEO optimized + - OpenGraph structured data + - Twitter Cards meta + - Sitemap Generation + - XML Sitemaps + - Progressive Web App + - Offline Support + - RSS Feed + - Composable and extensible - url: https://gatsby-starter-portfolio.herokuapp.com/ repo: https://github.com/surudhb/gatsby-personal-site-template description: A minimalist dev portfolio featuring a blog, SEO, app-theming with React.Context, Bootstrap and Sass From 61a6256ca8044534f1126e834bea5dd86f5b8433 Mon Sep 17 00:00:00 2001 From: Alex Gabites Date: Wed, 12 Aug 2020 22:24:49 +1200 Subject: [PATCH 13/70] chore(starters): add awesome-gatsby-starter-ts (#25692) --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index a90c8f37153d0..ed7aceba0fd30 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -1629,6 +1629,23 @@ - ESLint with Airbnb's config - Prettier integrated into ESLint - A few example components and pages with stories and simple site structure +- url: https://awesome-gatsby-starter-ts.netlify.app/ + repo: https://github.com/South-Paw/awesome-gatsby-starter-ts + description: TypeScript starter with a preconfigured MDX, Storybook, and ESLint environment for component first development of your next Gatsby site. + tags: + - Language:TypeScript + - MDX + - Markdown + - Storybook + - Styling:CSS-in-JS + - Linting + features: + - Gatsby MDX for JSX in Markdown loading, parsing, and rendering of pages + - Storybook for isolated component development + - styled-components for CSS-in-JS + - ESLint with Airbnb's config + - Prettier integrated into ESLint + - A few example components and pages with stories and simple site structure - url: https://santosfrancisco.github.io/gatsby-starter-cv/ repo: https://github.com/santosfrancisco/gatsby-starter-cv description: A simple starter to get up and developing your digital curriculum with Gatsby' From 475ef12eb125ce68c66e6359bc796a4d72765883 Mon Sep 17 00:00:00 2001 From: John Kavanagh Date: Wed, 12 Aug 2020 11:29:02 +0100 Subject: [PATCH 14/70] chore(showcase): Add redcentral.co.uk (#26089) --- docs/sites.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/sites.yml b/docs/sites.yml index 97e80dfc9f2dc..9b7d3a1906a87 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11541,7 +11541,7 @@ - Community - Event - SEO -- title: John Kavanagh Portfolio +- title: John Kavanagh's Portfolio url: https://johnkavanagh.co.uk/ main_url: https://johnkavanagh.co.uk/ description: > @@ -11550,6 +11550,22 @@ - Portfolio - Technology - Web Development + - Blog + - Freelance + built_by: John Kavanagh + built_by_url: https://johnkavanagh.co.uk/ + featured: false +- title: Red Central + url: https://redcentral.co.uk/ + main_url: https://redcentral.co.uk/ + description: > + Based in Bristol in the UK, Red Central is the World's no.1 creative agency for entertainment and brand licensing. + categories: + - Agency + - Entertainment + - Media + - Consulting + - Design built_by: John Kavanagh built_by_url: https://johnkavanagh.co.uk/ featured: false From 49aeac5ffd542aa4a3bd07c8ed7f2d78307472da Mon Sep 17 00:00:00 2001 From: Daisuke Kume / Mei <34794762+kmdisk@users.noreply.github.com> Date: Wed, 12 Aug 2020 19:29:42 +0900 Subject: [PATCH 15/70] chore(showcase): Add Crogic (#25754) --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 9b7d3a1906a87..116418b80e4d3 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11519,6 +11519,17 @@ built_by: HiringSolved built_by_url: https://hiringsolved.com/home/ featured: false +- title: Crogic + url: https://crogic.jp + main_url: https://crogic.jp + description: > + Web and Music Creator's porfolio site. + categories: + - Portfolio + - Web Development + - Music + built_by: Mei + built_by_url: https://twitter.com/vo_mei0623 - title: Reactive Resume url: https://rxresu.me main_url: https://rxresu.me From 059a7de16dc3ebdfb524ba67e0b910ff5b3f9435 Mon Sep 17 00:00:00 2001 From: Alex Perronnet Date: Wed, 12 Aug 2020 12:30:02 +0200 Subject: [PATCH 16/70] chore(showcase): add alexperronnet.io (#26384) --- docs/sites.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 116418b80e4d3..f4e6965d1b736 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11629,3 +11629,15 @@ built_by: Donovan Nagel built_by_url: https://www.donovannagel.com featured: false +- title: Alex Perronnet Personal Website + url: https://alexperronnet.io + main_url: https://alexperronnet.io + source_url: https://github.com/alexperronnet/alexperronnet.io + description: > + I'm Alex Perronnet, a french freelance developer and designer. I'm also an open-source contributor and a content creator. + categories: + - Open Source + - Freelance + built_by: Alex Perronnet + built_by_url: https://alexperronnet.io + featured: false From eee7da219754173d4fdc84e902948268cec4ad5b Mon Sep 17 00:00:00 2001 From: Alec Lomas Date: Wed, 12 Aug 2020 03:31:25 -0700 Subject: [PATCH 17/70] update lowmess repo (#25660) the new profile README feature conflicted with the name of the repo. boo --- docs/sites.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sites.yml b/docs/sites.yml index f4e6965d1b736..e0b8073ff5356 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -856,7 +856,7 @@ - title: Alec Lomas's Portfolio / Blog main_url: https://www.lowmess.com/ url: https://www.lowmess.com/ - source_url: https://github.com/lowmess/lowmess + source_url: https://github.com/lowmess/lowmess.com featured: false categories: - Web Development From 2ceb8dcdc1cfacaa9517dcce6a3cd37af1156cf4 Mon Sep 17 00:00:00 2001 From: Eric Chan Date: Wed, 12 Aug 2020 20:32:08 +1000 Subject: [PATCH 18/70] chore(showcase): Add Laputan Schools (schools.laputan.com.au) (#26257) --- docs/sites.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index e0b8073ff5356..182fb7a24eb60 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11303,6 +11303,15 @@ - Marketing built_by: Laputan Software built_by_url: https://laputan.com.au +- title: Laputan Schools + main_url: https://schools.laputan.com.au + url: https://schools.laputan.com.au + description: > + Laputan Schools helps parents to research and engage with the schools around their areas. + categories: + - Education + built_by: Laputan Software + built_by_url: https://laputan.com.au - title: LeanyLabs main_url: https://leanylabs.com/ url: https://leanylabs.com/mvp-development/ From 381294ec3fe29937bcb4359e2a7421691e81da65 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Wed, 12 Aug 2020 12:34:43 +0200 Subject: [PATCH 19/70] chore(starters): add BooGi starter (#26014) --- docs/starters.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index ed7aceba0fd30..f8f0b07da341d 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7011,6 +7011,36 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://boogi.netlify.app + repo: https://github.com/filipowm/boogi + description: Create awesome documentation with modern, Gitbook-like look-and-feel. + tags: + - Documentation + - PWA + - SEO + - Markdown + - MDX + - Styling:CSS-in-JS + - CMS:Netlify + features: + - Customize your page to match your branding and needs + - Responsive, GitBook-like design inspired by https://gitbook.com/ + - Light / dark mode themes for entire app + - Custom [BooGi CLI](https://github.com/filipowm/boogi-cli) wrapping Gatsby CLI + to start quickly, simplify codebase, easily run locally and build you BooGi-based app + - Rich-content and rich-text features like text formatting, graphs and diagrams, + quotes, columnar layout, emojis, feather icons, highlights, live code editor, + syntax highlighting, external code snippets, social buttons and many many more! + - draft pages + - Search capabilities with [Algolia](https://www.algolia.com/) + - local search (search in a browser without need to integrate with Algolia) + - Progressive Web App (PWA) support - app can work entirely offline + - Integration with Google Analytics + - SEO friendliness + - full screen mode + - RSS feed + - Edit content on Gitlab, Github or Bitbucket with edit-on-repo feature + - Fully customizable using plain Yaml files - url: https://texblog.akshatbisht.com/ repo: https://github.com/aaaakshat/gatsby-starter-texblog description: A lightweight, LaTeX enabled starter to beautifully showcase your typeset articles. From b305f3d3a0f1ae7a01727623045436b3129d9d1c Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 12 Aug 2020 06:35:04 -0400 Subject: [PATCH 20/70] chore(starters): add gatsby-starter-hoa (#26374) --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index f8f0b07da341d..4fcba0477655b 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7059,3 +7059,20 @@ - Uses SCSS for easy-to-understand naming - Google Analytics support - Responsive design +- url: https://frosty-torvalds-822eb0.netlify.app + repo: https://github.com/willb335/gatsby-starter-hoa + description: A template for home owner associations built with Gatsby, Contentful, and Netlify + tags: + - Blog + - CMS:Headless + - CMS:Contentful + - Styling:CSS-in-JS + - Netlify + features: + - CMS:Contentful integration with ready to go placeholder content + - Netlify integration including a pre-built contact form + - Pagination logic + - Styled Components + - SEO friendly components + - Prebuilt events calendar + - Material UI From 9c80623d457d2617b435d01060317b04ad470288 Mon Sep 17 00:00:00 2001 From: Caelin Sutch <32991829+caelinsutch@users.noreply.github.com> Date: Wed, 12 Aug 2020 03:35:51 -0700 Subject: [PATCH 21/70] chore(starters): add gatsby-typescript-markdown-starter (#25145) * Update starters.yml * Removed duplicate tags and removed categories tag that isn't valid * Realized I misread the categories.yml section. Removed offending tag "Accessibility". --- docs/starters.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 4fcba0477655b..7ed78b61bcd92 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -60,6 +60,31 @@ - Offline Support - RSS Feed - Composable and extensible +- url: https://gatsby-typescript-markdown-starter.vercel.app/ + repo: https://github.com/caelinsutch/gatsby-typescript-markdown-starter + description: A Gatsby starter with TypeScript and Markdown Preconfigured to Make a Portfolio. + tags: + - Blog + - SEO + - Styling:SCSS + - Styling:CSS-in-JS + - Markdown + - Portfolio + features: + - Eslint/Prettier configured + - Easy to customize + - Typescript pre configured + - Markdown posts with PrismJS code styling + - Categories based off a yaml file + - Preconfigured with Gatsby Image + - High Lighthouse Scores + - Easy to understand product structure + - CSS in JS with Emotion + - Sass stylesheets + - React Helmet for SEO best practices and metatags + - SEO optimized + - Projects page, categories, home, 404 page + - Responsive - url: https://gatsby-starter-wordpress-twenty-twenty.netlify.app/ repo: https://github.com/henrikwirth/gatsby-starter-wordpress-twenty-twenty description: A port of the WordPress Twenty Twenty theme to Gatsby. From ff93347b233fe7266d56267c18511538011b7e62 Mon Sep 17 00:00:00 2001 From: Tal Hayut Date: Wed, 12 Aug 2020 13:36:07 +0300 Subject: [PATCH 22/70] chore(starters): adding gatsby-starter-github-repositories (#25026) * feat: adding gatsby-starter-github-repositories * feat: adding gatsby-starter-github-repositories --- docs/starters.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 7ed78b61bcd92..b2f9469be6961 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -411,6 +411,16 @@ - Use your GitHub as your own portfolio site - List your GitHub repositories - GitHub GraphQL API v4 +- url: https://gatsby-starter-github-repositories.netlify.app + repo: https://github.com/tool3/gatsby-starter-github-repositories + description: Single page starter based on gatsby-source-github-api and gatsby-starter-github-api + tags: + - Portfolio + - Onepage + features: + - Use your GitHub as your own portfolio site + - List your GitHub repositories + - GitHub GraphQL API v4 - url: https://gatsby-starter-bloomer.netlify.app/ repo: https://github.com/Cethy/gatsby-starter-bloomer From 537889946f6e97ae989b468d2fb1631ed5ab669a Mon Sep 17 00:00:00 2001 From: Zander Martineau Date: Wed, 12 Aug 2020 11:37:11 +0100 Subject: [PATCH 23/70] chore(starters): Add gatsby-starter-code-notes (#24901) Co-authored-by: Sidhartha Chatterjee ` --- docs/starters.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index b2f9469be6961..03196a1c92759 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -6876,6 +6876,21 @@ - Fully responsive - Includes React Helmet to allow editing site meta tags - All landing page content can be customised through YAML files stored in content folder and in gatsby-config.js +- url: https://code-notes-example.netlify.com/ + repo: https://github.com/MrMartineau/gatsby-starter-code-notes + description: A starter for the "Code Notes" Gatsby theme + tags: + - Markdown + - MDX + - Documentation + - Styling:Theme-UI + features: + - Notes can be written using Markdown or MDX + - Full syntax highlighting for most programming languages + - Notes can be tagged + - Notes can have associated emojis 👏 + - Extra markdown features have also been added. See the demo for in-depth examples + - Note search powered by the super-fast Flexsearch - url: https://adityaketkar.netlify.app/ repo: https://github.com/adityaketkar/circle-packing-personal-homepage description: A Customizable Personal-Website Template, Ready to Deploy in 10 mins! From 551ea11a752ec487469cb542e753a7be14a99344 Mon Sep 17 00:00:00 2001 From: Danail Date: Wed, 12 Aug 2020 11:37:54 +0100 Subject: [PATCH 24/70] chore(starters): add gatsby-starter-testing (#25542) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 03196a1c92759..468795fbcf0be 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,19 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-starter-testing.netlify.app/ + repo: https://github.com/DanailMinchev/gatsby-starter-testing + description: A simple Gatsby starter with configured testing frameworks and tools for each layer of the Test Pyramid and more. + tags: + - Linting + - Storybook + - Testing + features: + - Unit Testing - Jest with React Testing Library + - Structural Testing - Jest Snapshot Testing + - End-to-End Testing - Cypress with Cypress Testing Library + - Accessibility Testing - axe with cypress-axe + - Automated Visual Testing - Storybook with jest-puppeteer and jest-image-snapshot - url: https://boogi.netlify.app repo: https://github.com/filipowm/boogi description: Create awesome documentation with modern, Gitbook-like look-and-feel. From b4a353d68d39b4f97a0679978ae7df113a8c961a Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Wed, 12 Aug 2020 16:08:47 +0530 Subject: [PATCH 25/70] chore(starters): Add gatsby-starter-fresh to starters (#25731) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 468795fbcf0be..d8029df2b1202 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,31 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-starter-fresh.netlify.app + repo: https://github.com/mishal23/gatsby-starter-fresh + description: A minimal GatsbyJS starter blog template using the Fresh Theme for anyone to build a blogging site + tags: + - Portfolio + - Blog + - SEO + - Markdown + features: + - Gatsby v2 + - Blazing fast loading time + - Mobile Friendly + - High quality code + - Component seperated code + - Custom 404 page + - In-built contact form powered by Formspree + - Markdown support for new posts + - Code syntax highlighting + - Disqus support for comments + - Supports PWA + - Social Media icons + - SEO friendly + - Twitter Tags + - Sitemap Generation + - Google Analytics - url: https://gatsby-starter-testing.netlify.app/ repo: https://github.com/DanailMinchev/gatsby-starter-testing description: A simple Gatsby starter with configured testing frameworks and tools for each layer of the Test Pyramid and more. From 817491197267f40cdfa09924557ac5ff49866d84 Mon Sep 17 00:00:00 2001 From: Yaroslav Kasperovych Date: Wed, 12 Aug 2020 12:40:40 +0200 Subject: [PATCH 26/70] chore(starters): add gatsby-opinionated-starter (#25697) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index d8029df2b1202..c1d66f22895a7 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,29 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-opinionated-starter.netlify.app/ + repo: https://github.com/datacrafts-io/gatsby-opinionated-starter + description: Opinionated full-fledged TypeScript dev environment starter + tags: + - Styling:SCSS + - Styling:Other + - Testing + - Language:TypeScript + - Linting + - Storybook + features: + - Storybook support + - SCSS + SCSS Modules support + - Jest + testing-library support + - TypeScript support + - ESLint support for both ES and TS + - remark-lint support for linting markdown files + - style-lint support for linting SCSS and SCSS Modules + - GitHub Actions CI optional support + - Renovate bot optional support + - Husky optional support + - Typography.js support + - Netlify deploy optional support - url: https://gatsby-starter-fresh.netlify.app repo: https://github.com/mishal23/gatsby-starter-fresh description: A minimal GatsbyJS starter blog template using the Fresh Theme for anyone to build a blogging site From c83d3bc062acb8c0e93e5d47b5ddb6e25a0b432b Mon Sep 17 00:00:00 2001 From: Renyuan Zou Date: Wed, 12 Aug 2020 18:41:40 +0800 Subject: [PATCH 27/70] chore(starters): add gatsby-starter-leonids (#26061) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index c1d66f22895a7..75017d9d22b4b 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,23 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://renyuanz.github.io/leonids/ + repo: https://github.com/renyuanz/leonids + description: A simple, fixed sidebar two columns blog theme using tailwind to polish and Github Actions to deploy + tags: + - Blog + - SEO + - Markdown + - Styling:Tailwind + - Styling:PostCSS + features: + - All gatsby-starter-blog (the official blog theme) features + - Light/Dark mode + - Uses PostCSS with Tailwind to make styling pleasurable + - Auto-deploys to Github pages with Github actions CI + - SEO enabled on each page with react-helmet + - Features optimized image rendering using gatsby-image + - Writes with Markdown, your favourite writing tool - url: https://gatsby-opinionated-starter.netlify.app/ repo: https://github.com/datacrafts-io/gatsby-opinionated-starter description: Opinionated full-fledged TypeScript dev environment starter From dd9bd7444b994cf92c0725077d6567dc74c06cf3 Mon Sep 17 00:00:00 2001 From: Sudharaka Palamakumbura Date: Wed, 12 Aug 2020 03:45:24 -0700 Subject: [PATCH 28/70] docs(starters): Add Minimal Portfolio Starter (#25772) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 75017d9d22b4b..70535f4900701 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,21 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://www.minimal-portfolio.openarchitex.dev/ + repo: https://github.com/OpenArchitex/gatsby-starter-minimal-portfolio + description: A simple portfolio with About, Projects and Contact sections created using Theme UI and MDX + tags: + - Portfolio + - Markdown + - MDX + - Styling:Tailwind + - Styling:Theme-UI + - Onepage + features: + - Gatsby v2 + - Simple portfolio with About, Projects and Contact sections + - Uses MDX and Theme UI for styling + - SEO enabled on each page with react-helmet - url: https://renyuanz.github.io/leonids/ repo: https://github.com/renyuanz/leonids description: A simple, fixed sidebar two columns blog theme using tailwind to polish and Github Actions to deploy From 4e4d200a5d72412c42516c8619b6e6501c0e7808 Mon Sep 17 00:00:00 2001 From: Tengku Hafidz Date: Wed, 12 Aug 2020 18:46:43 +0800 Subject: [PATCH 29/70] chore(starters): add websheets-listing-page (#26070) Co-authored-by: gatsbybot Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 70535f4900701..3238766bdd997 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,31 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://demo.websheets.co + repo: https://github.com/tengkuhafidz/WebSheets-Listing-Page + description: A listing website generator based on a standard Google Sheets template. Manage the branding, layout, and data of the site by just updating the Google Sheets. + tags: + - Google Sheets + - Language:TypeScript + - Styling:Tailwind + - Styling:PostCSS + - PWA + - SEO + - Onepage + - Gallery + - Portfolio + features: + - Google Sheets as data point + - Change the Branding, template, and data of the site by just updating the Google Sheets + - Fast-loading static site + - Progressive web app with offline capabilities + - Customisable SEO and site metadata + - Social share + - Dark Mode + - Google Analytics + - Search functionality + - Responsive Design + - Preconfigured prettier, eslint, husky - url: https://www.minimal-portfolio.openarchitex.dev/ repo: https://github.com/OpenArchitex/gatsby-starter-minimal-portfolio description: A simple portfolio with About, Projects and Contact sections created using Theme UI and MDX From 9828967768328e7f4620fcd5ad85c6b9067b92a8 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Wed, 12 Aug 2020 06:50:16 -0400 Subject: [PATCH 30/70] chore(starters): add gatsby-bootstrap-template (#26251) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 3238766bdd997..f3e54b6f8a5a5 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,17 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://varunagrawal.github.io/gatsby-bootstrap-template/ + repo: https://github.com/varunagrawal/gatsby-bootstrap-template + description: A minimalistic Gatsby starter template with Bootstrap 4 included. Great for getting started with Gatsby without worrying out styling. + tags: + - Styling:Bootstrap + - Client-side App + - Landing Page + features: + - Minimalistic, so nothing extra other than the barebones. + - Boostrap 4 support out of the box. + - Comes with React Helmet for adding site meta tags. - url: https://demo.websheets.co repo: https://github.com/tengkuhafidz/WebSheets-Listing-Page description: A listing website generator based on a standard Google Sheets template. Manage the branding, layout, and data of the site by just updating the Google Sheets. From 181ddfc96b25245e671b9462c77f46387443b900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Chrastina?= <9218736+Simply007@users.noreply.github.com> Date: Wed, 12 Aug 2020 12:52:50 +0200 Subject: [PATCH 31/70] chore(starter): add Kentico Kontent Intranet showcase (#25000) Co-authored-by: gatsbybot Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index f3e54b6f8a5a5..a8f21d7db6874 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,22 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://kontent-sample-app-gatsby-intranet.netlify.app + repo: https://github.com/Simply007/kontent-sample-app-gatsby-intranet + description: Showcase of Kentico Kontent Intranet admin UI using Material design. + tags: + - CMS:Headless + - CMS:Kontent + - Netlify + - Styling:Material + - i18n + features: + - Kentico Kontent CaaS platform as the data source + - Kentico Kontent rich text element resolution example + - Showcasing multilingual possibilities + - Includes plugins for easy, beautiful typography + - Material Design + - Intranet showcase - url: https://varunagrawal.github.io/gatsby-bootstrap-template/ repo: https://github.com/varunagrawal/gatsby-bootstrap-template description: A minimalistic Gatsby starter template with Bootstrap 4 included. Great for getting started with Gatsby without worrying out styling. From 1e8322373afaf4b74f1df22850e48b50051d2e52 Mon Sep 17 00:00:00 2001 From: Evan Willhite Date: Wed, 12 Aug 2020 05:57:31 -0500 Subject: [PATCH 32/70] chore(starters): adds gatsby-starter-emulsify-mdx (#25893) Co-authored-by: Sidhartha Chatterjee --- docs/categories.yml | 1 + docs/starters.yml | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/docs/categories.yml b/docs/categories.yml index 5ed2a767394ff..0aa283ada6c51 100644 --- a/docs/categories.yml +++ b/docs/categories.yml @@ -53,6 +53,7 @@ starter: - Square - Storybook - Stripe + - Style Guide - Styling:Ant Design - Styling:Bootstrap - Styling:Bulma diff --git a/docs/starters.yml b/docs/starters.yml index a8f21d7db6874..3e71c09b9ca13 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7061,6 +7061,27 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://emulsify-ds.github.io/gatsby-starter-emulsify-mdx/ + repo: https://github.com/emulsify-ds/gatsby-starter-emulsify-mdx + description: A starter for a style guide powered by Gatsby Theme Emulsify + tags: + - Style Guide + - Documentation + - Storybook + - Markdown + - MDX + - Styling:Theme-UI + features: + - Fully customizable style guide + - Document pages and components using Markdown/MDX + - Show live Storybook components with a shortcode + - Flexible code syntax highlighting using PrismJS + - Theming using config-based Theme UI + - Support for modes - light/dark built-in + - Image and file support in Markdown + - Shortcodes for wrapping components and building tab links + - Gatsby shadowing for Gatsby Theme Emulsify components + - Supports linking multiple style guides - url: https://kontent-sample-app-gatsby-intranet.netlify.app repo: https://github.com/Simply007/kontent-sample-app-gatsby-intranet description: Showcase of Kentico Kontent Intranet admin UI using Material design. From bba7d6f4de9dd71313c33b6629772ccd3f0c429b Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Wed, 12 Aug 2020 12:59:16 +0200 Subject: [PATCH 33/70] fix(reporter): add missing verbose/debug log handler to yurnalist logger (#26400) --- packages/gatsby-cli/src/reporter/loggers/yurnalist/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/gatsby-cli/src/reporter/loggers/yurnalist/index.ts b/packages/gatsby-cli/src/reporter/loggers/yurnalist/index.ts index 35b9199f16c1b..63c80b547e0f5 100644 --- a/packages/gatsby-cli/src/reporter/loggers/yurnalist/index.ts +++ b/packages/gatsby-cli/src/reporter/loggers/yurnalist/index.ts @@ -30,6 +30,7 @@ export function initializeYurnalistLogger(): void { [LogLevels.Error]: yurnalist.error.bind(yurnalist), [LogLevels.Info]: yurnalist.info.bind(yurnalist), [LogLevels.Success]: yurnalist.success.bind(yurnalist), + [LogLevels.Debug]: yurnalist.verbose.bind(yurnalist), [ActivityLogLevels.Success]: yurnalist.success.bind(yurnalist), [ActivityLogLevels.Failed]: (text: string): void => { yurnalist.log(`${chalk.red(`failed`)} ${text}`) From 9cbb63ac80e5a2ec823203dd0d062e4d04517d53 Mon Sep 17 00:00:00 2001 From: Jack Oliver Date: Wed, 12 Aug 2020 13:02:22 +0200 Subject: [PATCH 34/70] chore(starters): add gatsby-starter-emotion-theme (#25415) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 3e71c09b9ca13..2a55a3c4c5395 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -6985,6 +6985,16 @@ - Pagination - Share Button - Prism for code preview +- url: https://gatsby-starter-emotion-theme.netlify.app/ + repo: https://github.com/jackoliver/gatsby-starter-emotion-theme + description: Gatsby+Emotion+Theming, made to get up and running quicker with standard marketing microsites. + tags: + - Styling:CSS-in-JS + features: + - Alias imports for quicker development + - Emotion theming out of the box + - Easy to change global parameters + - BYOD (Bring your own data sources) - url: https://gatsby-starter-catalyst-lithium.netlify.app/ repo: https://github.com/ehowey/gatsby-starter-catalyst-lithium description: A personal blog starter with large featured images, SEO optimization, dark mode, and support for many different frontmatter fields. Based on Gatsby Theme Catalyst. Uses MDX for content and Theme UI for styling. Includes a core theme, a header theme, a footer theme, and a blog theme. From d03207d2cde1630abd043ffeb1fd189caac4b2f2 Mon Sep 17 00:00:00 2001 From: Wendy Dherin Date: Wed, 12 Aug 2020 12:03:21 +0100 Subject: [PATCH 35/70] chore(starters): add gatsy-p5-starter (#26170) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 2a55a3c4c5395..a0348b5bcde1a 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7071,6 +7071,16 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-p5-gallery-starter.herokuapp.com/ + repo: https://github.com/doubledherin/gatsby-p5-starter + description: A responsive gallery / portofolio site for showing off your p5.js sketches, with React-p5.js integration via a built-in wrapper. + tags: + - Gallery + - Portfolio + - Styling:SCSS + + features: + - A responsive gallery website set up to easily contain generative art and other works created with p5.js - url: https://emulsify-ds.github.io/gatsby-starter-emulsify-mdx/ repo: https://github.com/emulsify-ds/gatsby-starter-emulsify-mdx description: A starter for a style guide powered by Gatsby Theme Emulsify From ece188f296a96ca7f031ac8fa02af195efc5686d Mon Sep 17 00:00:00 2001 From: Kirill <43724526+p1t1ch@users.noreply.github.com> Date: Wed, 12 Aug 2020 14:05:57 +0300 Subject: [PATCH 36/70] chore(starters): add gatsby-starter-vadyan (#26317) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index a0348b5bcde1a..6641e6f1bb78f 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7071,6 +7071,30 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-starter-vadyan.netlify.app/ + repo: https://github.com/p1t1ch/gatsby-starter-vadyan + description: A modern content-agnostic Gatsby starter + tags: + - Language:TypeScript + - Linting + - Netlify + - PWA + - SEO + - Storybook + - Styling:CSS-in-JS + - Testing + features: + - 💬 Static type checking with Typescript + - 🥇 Linting environment with ESLint, Prettier, Husky & lint-staged + - 🎲 Testing environment with Jest, RTL & Cypress + - 👩‍🎤 CSS in JS styling with Emotion + - 📕 Work with components in Storybook + - 🌀 Transform SVGs into React components with SVGR + - ✨ Full PWA support + - 🧠 Apollo Client setup for dynamic data + - 🚦 Ready to use CI/CD setup with Github Actions + - 📊 Analyze generated build with Webpack Bundle Analyzer + - 💥 Write pretty imports with Webpack aliases - url: https://gatsby-p5-gallery-starter.herokuapp.com/ repo: https://github.com/doubledherin/gatsby-p5-starter description: A responsive gallery / portofolio site for showing off your p5.js sketches, with React-p5.js integration via a built-in wrapper. From 154312e56044cdef6f2186904a3ba7f083c6b40a Mon Sep 17 00:00:00 2001 From: Sebastian Andil Date: Wed, 12 Aug 2020 13:06:58 +0200 Subject: [PATCH 37/70] chore(starters): add gatsby-starter-essentials (#26286) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 6641e6f1bb78f..f2f22113db5d0 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7319,6 +7319,23 @@ - Uses SCSS for easy-to-understand naming - Google Analytics support - Responsive design +- url: https://gatsby-starter-essentials.netlify.app/ + repo: https://github.com/selrond/gatsby-starter-essentials + description: A solid base to build your project upon + tags: + - Styling:CSS-in-JS + features: + - Sensible folder structure + - Only linted code is commit-able with pre-commit eslint hook + - Absolute imports (no more import Button from '../../../../../components/atoms/Button') + - styled-components set up + - sanitize.css included for sane out-of-the-box CSS defaults + - eslint with Airbnb config + - Auto formatted code via `prettier` as an `eslint` plugin + - Always up-to-date starter dependencies thanks to Dependabot + - Improved npm scripts - npm start runs a local server, so you can view your site live on multiple devices at once + - .nvmrc requiring lts node version + - Simple circleci integration to utilize CI/CD in your app - url: https://frosty-torvalds-822eb0.netlify.app repo: https://github.com/willb335/gatsby-starter-hoa description: A template for home owner associations built with Gatsby, Contentful, and Netlify From 5ade08e74eeb9355f397ce6c2da89d18a91a3f99 Mon Sep 17 00:00:00 2001 From: Mark Todd Date: Wed, 12 Aug 2020 13:08:10 +0200 Subject: [PATCH 38/70] chore(starters): add gatsby-starter-level-2 (#26180) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index f2f22113db5d0..6cfb934edebc5 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7319,6 +7319,26 @@ - Uses SCSS for easy-to-understand naming - Google Analytics support - Responsive design +- url: https://knochenmark.github.io/gatsby-starter-level-2/ + repo: https://github.com/Knochenmark/gatsby-starter-level-2 + description: A minimalistic, responsive and easily configurable Gatsby starter that will help to bring your portfolio to the next level. + tags: + - Portfolio + - Blog + - Markdown + - Styling:CSS-in-JS + - Linting + features: + - Responsive Layout + - High configurability + - Configurable Sections via Markdown + - Organized Projects by techs and Blog Posts by tags + - Posts in Markdown + - Pagination support + - Syntax highlighting in code blocks + - Styled Components with Emotion + - ESLint and Prettier + - FontAwsome Library for icons - url: https://gatsby-starter-essentials.netlify.app/ repo: https://github.com/selrond/gatsby-starter-essentials description: A solid base to build your project upon From 6f18069ca470d03fc4dee95f834a6d270c178818 Mon Sep 17 00:00:00 2001 From: Tiago Formosinho Sanchez Date: Wed, 12 Aug 2020 19:10:02 +0800 Subject: [PATCH 39/70] Chore(docs): add gatsby-tfs-acme-starter to starter (#25043) Co-authored-by: gatsbybot Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 6cfb934edebc5..e9e98ee24ac3c 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -6876,6 +6876,20 @@ - Fully responsive - Includes React Helmet to allow editing site meta tags - All landing page content can be customised through YAML files stored in content folder and in gatsby-config.js +- url: https://gatsby-tfs-acme-starter.netlify.app/ + repo: https://github.com/tiagofsanchez/gatsby-tfs-acme-starter + description: Your new digital garden. ACME Blog is a starter that was build on top of a gatsby-theme-acmeblog + tags: + - SEO + - Blog + - MDX + features: + - MDX + - Light and Dark mode + - Includes React Helmet to allow editing site meta tags + - Theme-ui + - Tags + - Categories - url: https://code-notes-example.netlify.com/ repo: https://github.com/MrMartineau/gatsby-starter-code-notes description: A starter for the "Code Notes" Gatsby theme From 0fe72faa12227205a0eecb6fc57758921dc03512 Mon Sep 17 00:00:00 2001 From: AbdelAli Dahir Date: Wed, 12 Aug 2020 13:11:12 +0200 Subject: [PATCH 40/70] chore(starters): add gatsby-portfolio (#26331) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index e9e98ee24ac3c..133067329b222 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7085,6 +7085,26 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-persoanl.netlify.app/ + repo: https://github.com/AbdaliDahir/gatsby-portfolio + description: creative personal & portfolio template based on gatsby. designed so you can showcase your work and write your blogs. + tags: + - Blog + - Portfolio + - SEO + - Styling:CSS-in-JS + - Markdown + - Landing Page + features: + - creative portfolio + blog + - Styled components + - Responsive Design + - Portfolio + - Blog + - Github Api + - Google Analytics + - Create pages and posts + - Show works - url: https://gatsby-starter-vadyan.netlify.app/ repo: https://github.com/p1t1ch/gatsby-starter-vadyan description: A modern content-agnostic Gatsby starter From 66b9cbc2534de2ad580f41b9907454bd8cd3af54 Mon Sep 17 00:00:00 2001 From: Matias Sallent Date: Wed, 12 Aug 2020 08:13:05 -0300 Subject: [PATCH 41/70] chore(starters): add gatsby-starter-skeleton (#26278) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/starters.yml b/docs/starters.yml index 133067329b222..a40724642f2e2 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -4053,20 +4053,6 @@ - Alternate links to other languages - Sitemap with language information - Localized 404 pages -- url: https://gatsby-skeleton.netlify.app/ - repo: https://github.com/msallent/gatsby-skeleton - description: Gatsby starter with TypeScript and all sort of linting - tags: - - Language:TypeScript - - Styling:CSS-in-JS - - SEO - features: - - TypeScript - - Styled-Components - - ESLint - - Prettier - - Stylelint - - SEO - url: https://nehalem.netlify.app/ repo: https://github.com/nehalist/gatsby-starter-nehalem description: A starter for the Gatsby Nehalem Theme @@ -7085,6 +7071,23 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://gatsby-starter-skeleton.netlify.app/ + repo: https://github.com/msallent/gatsby-starter-skeleton + description: Gatsby starter featuring TypeScript, ESLint, Prettier and more... + tags: + - Language:TypeScript + - Linting + - Styling:SCSS + - SEO + features: + - TypeScript (even for gatsby-* files!) + - ESLint + - Prettier + - stylelint + - husky + - lint-staged + - Layout and SEO components + - SCSS Modules - url: https://gatsby-persoanl.netlify.app/ repo: https://github.com/AbdaliDahir/gatsby-portfolio description: creative personal & portfolio template based on gatsby. designed so you can showcase your work and write your blogs. From 62d06fe7cc27f57141ec7b92f744e4b5868f6a11 Mon Sep 17 00:00:00 2001 From: Peter Durham <42736364+peterdurham@users.noreply.github.com> Date: Wed, 12 Aug 2020 07:14:02 -0400 Subject: [PATCH 42/70] chore(starters): add gatsby-starter-blog-boost (#26220) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index a40724642f2e2..6d8c3bf54da6c 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7071,6 +7071,18 @@ - Blog posts page features a live filter tool - Uses site metadata to populate About page - Resume page generated using template Markdown files +- url: https://cocky-williams-9d49bd.netlify.app/ + repo: https://github.com/peterdurham/gatsby-starter-blog-boost + description: A Netlify CMS powered blog starter to jumpstart your personal or company's development. + tags: + - Blog + - Markdown + - CMS:Netlify + features: + - Articles (Blog Post) CMS Model + - Topics pages + - Tag Pages + - Mobile ready - url: https://gatsby-starter-skeleton.netlify.app/ repo: https://github.com/msallent/gatsby-starter-skeleton description: Gatsby starter featuring TypeScript, ESLint, Prettier and more... From c2b17b607a881ab79a3e59a9b53790adddc698b3 Mon Sep 17 00:00:00 2001 From: Samuel Wong <35249407+desktopofsamuel@users.noreply.github.com> Date: Wed, 12 Aug 2020 19:18:26 +0800 Subject: [PATCH 43/70] chore(starters): add gatsby-starter-lamma (#26288) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 6d8c3bf54da6c..0ce9aba31b553 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -1,3 +1,20 @@ +- url: https://gatsby-starter-lamma.netlify.app/ + repo: https://github.com/desktopofsamuel/gatsby-starter-lamma/ + description: A minimal, elegant, dark theme blog starter. Forked from Gatsby Advance Starter. + tags: + - Blog + - SEO + - Markdown + - MDX + features: + - Gatsby v2 + MDX + - Main page, Blog page, Category page, Tags Page + - Dark mode using use-dark-mode + - Subtle table of content component + - SEO with react-helmet + - Optimized image rendering using gatsby-image + - Icons from Font Awesome + - Programmatically generates styled pages for each blog post written in Markdown - url: https://mdx-cms-docs.netlify.app/ repo: https://github.com/danielcurtis/gatsby-starter-netlify-docs description: An accessible and blazing fast documentation starter for Gatsby integrated with Netlify CMS. From 0032b3af8ad251abeab98b3f7fff4093ec7bf014 Mon Sep 17 00:00:00 2001 From: Alexander Fountain Date: Wed, 12 Aug 2020 06:19:23 -0500 Subject: [PATCH 44/70] Showcase addition: LANDTX (#25445) Co-authored-by: Alexander Fountain Co-authored-by: Obinna Ekwuno Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 182fb7a24eb60..1319c008f4ce1 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11392,6 +11392,18 @@ built_by: Gabriel Giordano built_by_url: https://gabrielgiordano.com featured: false +- title: LANDTX + main_url: https://www.landtx.com + url: https://www.landtx.com + source_url: https://github.com/ltx-digett/landtx + description: > + LANDTX markets investment, recreational, ranch and farm lands throughout Texas. + categories: + - Real Estate + - Business + built_by: Digett + built_by_url: https://www.digett.com + featured: false - title: Raleigh Bikes url: https://www.raleigh.co.uk/gb/en/ main_url: https://raleigh.co.uk/ From b41366002a548d338ca4a77f867799cd278650ef Mon Sep 17 00:00:00 2001 From: Sidhartha Chatterjee Date: Wed, 12 Aug 2020 16:50:14 +0530 Subject: [PATCH 45/70] Fix lint --- docs/sites.yml | 1 - docs/starters.yml | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/sites.yml b/docs/sites.yml index 1319c008f4ce1..6832ed897948c 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -10867,7 +10867,6 @@ description: > Narration Box provides cost effective voiceovers and narrations at scale using an intuitive editor and state of the art speech synthesis. categories: - - Styling:Tailwind - Productivity - Technology - Podcast diff --git a/docs/starters.yml b/docs/starters.yml index 0ce9aba31b553..1146d0ff4ffbb 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -1,5 +1,5 @@ - url: https://gatsby-starter-lamma.netlify.app/ - repo: https://github.com/desktopofsamuel/gatsby-starter-lamma/ + repo: https://github.com/desktopofsamuel/gatsby-starter-lamma description: A minimal, elegant, dark theme blog starter. Forked from Gatsby Advance Starter. tags: - Blog @@ -7301,7 +7301,7 @@ - Netlify deploy optional support - url: https://gatsby-starter-fresh.netlify.app repo: https://github.com/mishal23/gatsby-starter-fresh - description: A minimal GatsbyJS starter blog template using the Fresh Theme for anyone to build a blogging site + description: A minimal GatsbyJS starter blog template using the Fresh Theme for anyone to build a blogging site tags: - Portfolio - Blog From b5715c2d3e5e1c661e67888195ea4d70ddaf656a Mon Sep 17 00:00:00 2001 From: Tengku Hafidz Date: Wed, 12 Aug 2020 19:23:43 +0800 Subject: [PATCH 46/70] chore(showcase): add websheets-listing-page (#26080) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 6832ed897948c..5cfa506022276 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11636,6 +11636,20 @@ - Business built_by: leaniercode featured: false +- title: WebSheets Generator + url: https://my.websheets.co + main_url: https://demo.websheets.co + source_url: https://github.com/tengkuhafidz/websheets-generator + description: Generate websites with just Google Sheets + categories: + - Open Source + - Web Development + - Directory + - Gallery + - Portfolio + - Documentation + built_by: Tengku Hafidz + built_by_url: https://twitter.com/sohafidz - title: The Mezzofanti Guild - Language Learning Made Simple url: https://www.mezzoguild.com main_url: https://www.mezzoguild.com From d70d38905969424888a2aef267ddbd16aaea9598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20R=C3=B6tsch?= Date: Wed, 12 Aug 2020 13:25:12 +0200 Subject: [PATCH 47/70] fix(gatsby-remark-images-contentful): Support custom Url search params in inline markdown images (#25947) * Added a try/catch around the axios request inside `getBase64Img`. * The 'buildResponsiveSizes' function now strips out search params in the image url before constructing base64 and srcset urls * use WHATWG URL api and add tests responsive sizes calculation * remove console.log Co-authored-by: Chris Queen Co-authored-by: gatsbybot --- .../utils/__snapshots__/index.js.snap | 19 +++++++ .../src/__tests__/utils/index.js | 49 ++++++++++++++++ .../src/index.js | 13 +++-- .../src/utils/index.js | 57 ++++++++++++------- 4 files changed, 113 insertions(+), 25 deletions(-) create mode 100644 packages/gatsby-remark-images-contentful/src/__tests__/utils/__snapshots__/index.js.snap create mode 100644 packages/gatsby-remark-images-contentful/src/__tests__/utils/index.js diff --git a/packages/gatsby-remark-images-contentful/src/__tests__/utils/__snapshots__/index.js.snap b/packages/gatsby-remark-images-contentful/src/__tests__/utils/__snapshots__/index.js.snap new file mode 100644 index 0000000000000..09a084e4c3340 --- /dev/null +++ b/packages/gatsby-remark-images-contentful/src/__tests__/utils/__snapshots__/index.js.snap @@ -0,0 +1,19 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`builds responsive sizes proberly calculates responsive values 1`] = ` +Object { + "aspectRatio": 1.3333333333333333, + "base64": "data:image/jpeg;base64,bW9ja2VkQmFzZTY0", + "density": 72, + "presentationHeight": 600, + "presentationWidth": 800, + "sizes": "(max-width: 800px) 100vw, 800px", + "src": "//images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg", + "srcSet": "https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=200 200w, +https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=400 400w, +https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=800 800w", + "webpSrcSet": "https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=200&fm=webp 200w, +https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=400&fm=webp 400w, +https://images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg?w=800&fm=webp 800w", +} +`; diff --git a/packages/gatsby-remark-images-contentful/src/__tests__/utils/index.js b/packages/gatsby-remark-images-contentful/src/__tests__/utils/index.js new file mode 100644 index 0000000000000..042e7c9985d4d --- /dev/null +++ b/packages/gatsby-remark-images-contentful/src/__tests__/utils/index.js @@ -0,0 +1,49 @@ +import axios from "axios" +import { buildResponsiveSizes } from "../../utils/index" + +jest.mock(`axios`) + +const reporterMock = jest.fn() + +describe(`builds responsive sizes`, () => { + const imageUrl = `//images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg` + const metadata = { + width: 800, + height: 600, + density: 72, + } + const options = { + maxWidth: 2000, + } + + beforeEach(() => { + axios.mockClear() + axios.mockImplementation(() => + Promise.resolve({ + data: `mockedBase64`, + headers: { + "content-type": `image/jpeg`, + }, + }) + ) + }) + + test(`proberly calculates responsive values`, async () => { + const result = await buildResponsiveSizes( + { metadata, imageUrl, options }, + reporterMock + ) + + expect(result).toMatchSnapshot() + }) + test(`does not remove search parameters`, async () => { + const result = await buildResponsiveSizes( + { metadata, imageUrl: `${imageUrl}?q=70`, options }, + reporterMock + ) + + expect(result.src).toContain(`q=70`) + expect(result.srcSet).toContain(`q=70`) + expect(result.webpSrcSet).toContain(`q=70`) + }) +}) diff --git a/packages/gatsby-remark-images-contentful/src/index.js b/packages/gatsby-remark-images-contentful/src/index.js index 0550704eeaad6..c8330f9795daa 100644 --- a/packages/gatsby-remark-images-contentful/src/index.js +++ b/packages/gatsby-remark-images-contentful/src/index.js @@ -91,11 +91,14 @@ module.exports = async ( response.data.destroy() - const responsiveSizesResult = await buildResponsiveSizes({ - metadata, - imageUrl: originalImg, - options, - }) + const responsiveSizesResult = await buildResponsiveSizes( + { + metadata, + imageUrl: originalImg, + options, + }, + reporter + ) // Calculate the paddingBottom % const ratio = `${(1 / responsiveSizesResult.aspectRatio) * 100}%` diff --git a/packages/gatsby-remark-images-contentful/src/utils/index.js b/packages/gatsby-remark-images-contentful/src/utils/index.js index 8c416f42f1d6c..3a3d65c3ce039 100644 --- a/packages/gatsby-remark-images-contentful/src/utils/index.js +++ b/packages/gatsby-remark-images-contentful/src/utils/index.js @@ -1,20 +1,34 @@ +const { URL } = require(`url`) const axios = require(`axios`) -const getBase64Img = async url => { - const response = await axios({ - method: `GET`, - responseType: `arraybuffer`, - url: `${url}`, - }) +// This should be replaced with the solution for https://github.com/gatsbyjs/gatsby/issues/24220 +const getBase64Img = async (url, reporter) => { + try { + const response = await axios({ + method: `GET`, + responseType: `arraybuffer`, + url: `${url}`, + }) - const base64Img = `data:${ - response.headers[`content-type`] - };base64,${new Buffer(response.data).toString(`base64`)}` + const base64Img = `data:${ + response.headers[`content-type`] + };base64,${new Buffer(response.data).toString(`base64`)}` - return base64Img + return base64Img + } catch (err) { + reporter.panic(`Failed downloading the base64 image for ${url}`, err) + return undefined + } } -const buildResponsiveSizes = async ({ metadata, imageUrl, options = {} }) => { +const buildResponsiveSizes = async ( + { metadata, imageUrl, options = {} }, + reporter +) => { + const imageURL = new URL( + imageUrl.indexOf(`/`) === 0 ? `https:${imageUrl}` : imageUrl + ) + const { width, height, density } = metadata const { sizeByPixelDensity, maxWidth, sizes } = options const aspectRatio = width / height @@ -41,17 +55,20 @@ const buildResponsiveSizes = async ({ metadata, imageUrl, options = {} }) => { filteredSizes.push(width) - const base64Img = await getBase64Img(`${imageUrl}?w=40`) + imageURL.searchParams.set(`w`, `40`) + + const base64Img = await getBase64Img(imageURL.href, reporter) + + const getSrcSetUrl = size => { + imageURL.searchParams.set(`w`, `${Math.round(size)}`) + return `${imageURL.href} ${Math.round(size)}w` + } + + const srcSet = filteredSizes.map(getSrcSetUrl).join(`,\n`) - const srcSet = filteredSizes - .map(size => `${imageUrl}?w=${Math.round(size)} ${Math.round(size)}w`) - .join(`,\n`) + imageURL.searchParams.set(`fm`, `webp`) - const webpSrcSet = filteredSizes - .map( - size => `${imageUrl}?fm=webp&w=${Math.round(size)} ${Math.round(size)}w` - ) - .join(`,\n`) + const webpSrcSet = filteredSizes.map(getSrcSetUrl).join(`,\n`) // TODO think about a better structure to save srcset types instead of adding them to the root return { From fcadd1048aef3fece2356fd00f9910e713c4a5e2 Mon Sep 17 00:00:00 2001 From: Tengku Hafidz Date: Wed, 12 Aug 2020 19:25:17 +0800 Subject: [PATCH 48/70] chore(showcase): add FatihaTV (#26107) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 5cfa506022276..d713245d354f6 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11636,6 +11636,17 @@ - Business built_by: leaniercode featured: false +- title: FatihaTV + url: https://fatihatv.com + main_url: https://fatihatv.com + description: A distaction-free platform to consume Islamic content from reputable Youtube Channels + categories: + - Community + - Library + - Media + - Nonprofit + - SEO + built_by: TengkuHafidz - title: WebSheets Generator url: https://my.websheets.co main_url: https://demo.websheets.co From 4971ff435ceb863114a00a0092b3adb08e29bc22 Mon Sep 17 00:00:00 2001 From: raubin Date: Wed, 12 Aug 2020 07:26:37 -0400 Subject: [PATCH 49/70] Showcase: request to add Oomph to directory (#26140) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index d713245d354f6..14495fe154d6e 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11636,6 +11636,22 @@ - Business built_by: leaniercode featured: false +- title: Oomph + url: https://www.oomphinc.com/agency + main_url: https://www.oomphinc.com + description: > + We craft digital products — but we make so much more. We design delight. We make a lasting first impression. We communicate value & purpose. We build lifelong relationships. + categories: + - Accessibility + - Agency + - Business + - Design + - Marketing + - Technology + - User Experience + - Web Development + built_by: Oomph, Inc. + built_by_url: https://www.oomphinc.com - title: FatihaTV url: https://fatihatv.com main_url: https://fatihatv.com From 9ab11ec6d2e02fd9004432d371ad0d690fe12708 Mon Sep 17 00:00:00 2001 From: Ramnath Date: Wed, 12 Aug 2020 16:57:25 +0530 Subject: [PATCH 50/70] Update sites.yml (#26261) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 14495fe154d6e..4ab795f8a0f41 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11636,6 +11636,16 @@ - Business built_by: leaniercode featured: false +- title: Motherhost + main_url: https://motherhost.com/ + url: https://motherhost.com/ + description: > + Ecommerce website for web hosting company. + categories: + - Web Development + - E-commerce + built_by: Motherhost + built_by_url: https://motherhost.com - title: Oomph url: https://www.oomphinc.com/agency main_url: https://www.oomphinc.com From bd6034d42697f6d97e9474def59b8337f7ced685 Mon Sep 17 00:00:00 2001 From: webplaceaus Date: Wed, 12 Aug 2020 21:28:36 +1000 Subject: [PATCH 51/70] updated showcase to include webplace.com.au (#26260) Co-authored-by: Sidhartha Chatterjee --- docs/creators/creators.yml | 8 ++++++++ docs/creators/images/webplace.png | Bin 0 -> 40945 bytes docs/sites.yml | 11 +++++++++++ 3 files changed, 19 insertions(+) create mode 100644 docs/creators/images/webplace.png diff --git a/docs/creators/creators.yml b/docs/creators/creators.yml index 3a5d52adc5a28..cb690d56767ad 100644 --- a/docs/creators/creators.yml +++ b/docs/creators/creators.yml @@ -554,3 +554,11 @@ for_hire: true hiring: false portfolio: true +- name: Webplace + type: agency + image: webplace.png + description: >- + Webplace have been providing exceptional digital experiences for a vast range of clients since 2003. We provide digital strategy, UX / UI design, Web development, QA testing and ongoing maintenance & support. We are experts at WordPress, Drupal & Joomla and now use WordPress and Drupal as a Headless CMS with React / Gatsby as the frontend. + website: https://www.webplace.com.au + for_hire: true + portfolio: true \ No newline at end of file diff --git a/docs/creators/images/webplace.png b/docs/creators/images/webplace.png new file mode 100644 index 0000000000000000000000000000000000000000..cf42f7be64d3ec6c38b53f92a026c24a104a666f GIT binary patch literal 40945 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 Date: Wed, 12 Aug 2020 08:29:45 -0300 Subject: [PATCH 52/70] chore(starters): add gatsby-snipcart-eccomerce (#25516) Co-authored-by: Sidhartha Chatterjee --- docs/starters.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 1146d0ff4ffbb..abab7a8ba848e 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7002,6 +7002,18 @@ - Pagination - Share Button - Prism for code preview +- url: https://gatsby-bootstrap-snipcart.netlify.app/ + repo: https://github.com/julianbattaglino/gatsby-snipcart-eccomerce.git + description: A simple e-commerce shop built using Gatsby / React Bootstrap and Snipcart. + tags: + - E-commerce + - React-Bootstrap CSS framework + - Snipcart + - Shop + - Products + features: + - Pwa + - Styled Components - url: https://gatsby-starter-emotion-theme.netlify.app/ repo: https://github.com/jackoliver/gatsby-starter-emotion-theme description: Gatsby+Emotion+Theming, made to get up and running quicker with standard marketing microsites. From f015ac4a6831a096840b9777deb58dd23f1c0b3a Mon Sep 17 00:00:00 2001 From: Sidhartha Chatterjee Date: Wed, 12 Aug 2020 17:00:19 +0530 Subject: [PATCH 53/70] Remove invalid tags --- docs/starters.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/starters.yml b/docs/starters.yml index abab7a8ba848e..ed8476e1d8038 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -7007,10 +7007,6 @@ description: A simple e-commerce shop built using Gatsby / React Bootstrap and Snipcart. tags: - E-commerce - - React-Bootstrap CSS framework - - Snipcart - - Shop - - Products features: - Pwa - Styled Components From c5ddf1f09b5299de841f7f2245a2c1d7150f481f Mon Sep 17 00:00:00 2001 From: Marcus Wood Date: Wed, 12 Aug 2020 07:31:46 -0400 Subject: [PATCH 54/70] chore(showcase) Adds marcuswood.io (#25842) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 75da0f2fa87f8..f75fa98d2cb4f 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11539,6 +11539,17 @@ built_by: HiringSolved built_by_url: https://hiringsolved.com/home/ featured: false +- title: Marcus Wood + main_url: https://www.marcuswood.io/ + url: https://www.marcuswood.io/ + description: > + Personal website for Marcus Wood, a web developer that builds products with React, TypeScript, and GraphQL. + categories: + - Blog + - Portfolio + - Web Development + built_by: Marcus Wood + built_by_url: https://www.marcuswood.io/ - title: Crogic url: https://crogic.jp main_url: https://crogic.jp From e165e0e620e3203b97e3fbfde51104d13d0cafec Mon Sep 17 00:00:00 2001 From: Axel Date: Wed, 12 Aug 2020 13:32:41 +0200 Subject: [PATCH 55/70] Add UP42 website (#26123) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index f75fa98d2cb4f..41e785fa48ce8 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11647,6 +11647,19 @@ - Business built_by: leaniercode featured: false +- title: UP42 + main_url: https://up42.com/ + url: https://up42.com/ + description: UP42 is an open marketplace to buy and sell Earth Observation data and analytics algorithms. UP42 is also a platform to build and run analytics algorithms. + built_by: Axel Fuhrmann + built_by_url: https://axelfuhrmann.com/ + featured: false + categories: + - Data + - Technology + - Business + - Blog + - API - title: Webplace url: https:/www.webplace.com.au main_url: https:/www.webplace.com.au From 91adb36fff68ba621e098dcbbf2cf68d2f6ad84a Mon Sep 17 00:00:00 2001 From: Alexander Fountain Date: Wed, 12 Aug 2020 06:33:36 -0500 Subject: [PATCH 56/70] chore(showcase): Prescriptive Solutions (#25431) Co-authored-by: Alexander Fountain Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 41e785fa48ce8..7fdfa16e0ae9e 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11391,6 +11391,15 @@ built_by: Gabriel Giordano built_by_url: https://gabrielgiordano.com featured: false +- title: Prescriptive Data Solutions + main_url: https://www.prescriptive.solutions + url: https://www.prescriptive.solutions + source_url: https://github.com/prescriptive/2018Q4Website + description: > + IT Solution Delivery with Unique Benefits to the Enterprise Buyer. + categories: + - Technology + - Consulting - title: LANDTX main_url: https://www.landtx.com url: https://www.landtx.com From ec00cf6daa7a963f723543a006d44d82801ead07 Mon Sep 17 00:00:00 2001 From: nzerk <57467466+nzerk@users.noreply.github.com> Date: Wed, 12 Aug 2020 21:34:34 +1000 Subject: [PATCH 57/70] Added zn.agency to showcase (#25781) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 7fdfa16e0ae9e..6db851c92e67b 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11548,6 +11548,21 @@ built_by: HiringSolved built_by_url: https://hiringsolved.com/home/ featured: false +- title: ZN Agency + url: https://zn.agency + main_url: https://zn.agency + description: > + We are a digital consulting agency in Brisbane with UI/UX, Web Design & Development and Branding services. Our purpose is to contribute our share of positive experiences to this world. + categories: + - Agency + - Business + - Consulting + - Portfolio + - Technology + - User Experience + - Web Development + built_by: Nate Zerk + built_by_url: https://natezerk.com - title: Marcus Wood main_url: https://www.marcuswood.io/ url: https://www.marcuswood.io/ From e362ccdaa8cf30b21c69e4389f0b91aa14de7091 Mon Sep 17 00:00:00 2001 From: Ariel Falduto Date: Wed, 12 Aug 2020 08:35:21 -0300 Subject: [PATCH 58/70] =?UTF-8?q?chore(showcase):=20Add=20"=C3=81mbito=20D?= =?UTF-8?q?=C3=B3lar"=20site.=20(#26255)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 6db851c92e67b..3ba4685f75a99 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11671,6 +11671,17 @@ - Business built_by: leaniercode featured: false +- title: Ámbito Dólar + url: https://ambito-dolar.app + main_url: https://ambito-dolar.app + description: > + Free mobile application that informs the different exchange rates USD vs ARS in Argentina. + categories: + - App + - Landing Page + - Finance + built_by: Ariel Falduto + built_by_url: https://outa.im - title: UP42 main_url: https://up42.com/ url: https://up42.com/ From 10f93454261842fb20ee4d6628e4233620cdca1e Mon Sep 17 00:00:00 2001 From: Tengku Hafidz Date: Wed, 12 Aug 2020 19:37:29 +0800 Subject: [PATCH 59/70] chore(showcase): add kuliahsg (#26086) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 3ba4685f75a99..5172d1418a915 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11671,6 +11671,10 @@ - Business built_by: leaniercode featured: false +- title: KuliahSG + url: https://kuliah.sg + main_url: https://kuliah.sg + description: Online Islamic content in Singapore - title: Ámbito Dólar url: https://ambito-dolar.app main_url: https://ambito-dolar.app @@ -11743,6 +11747,7 @@ - Nonprofit - SEO built_by: TengkuHafidz + built_by_url: https://fidz.dev - title: WebSheets Generator url: https://my.websheets.co main_url: https://demo.websheets.co From 1dfe8d42a3b8cc0385c7f3d21e0a76deaaf1f69a Mon Sep 17 00:00:00 2001 From: Sidhartha Chatterjee Date: Wed, 12 Aug 2020 17:09:59 +0530 Subject: [PATCH 60/70] Add required tag --- docs/sites.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 5172d1418a915..88eff9e67cf4b 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11674,6 +11674,8 @@ - title: KuliahSG url: https://kuliah.sg main_url: https://kuliah.sg + categories: + - Education description: Online Islamic content in Singapore - title: Ámbito Dólar url: https://ambito-dolar.app From 3cd1cacb99885f6690ebca01c537373af19d33fb Mon Sep 17 00:00:00 2001 From: Rahul Jain Date: Wed, 12 Aug 2020 17:11:13 +0530 Subject: [PATCH 61/70] chore(showcase): Add Github Profile README Generator (#26062) Co-authored-by: gatsbybot Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 88eff9e67cf4b..b1506267d22e3 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11671,6 +11671,17 @@ - Business built_by: leaniercode featured: false +- title: Github Profile README Generator + url: https://rahuldkjain.github.io/gh-profile-readme-generator/ + main_url: https://rahuldkjain.github.io/gh-profile-readme-generator/ + source_url: https://github.com/rahuldkjain/github-profile-readme-generator + description: > + Generate github profile README easily with latest add-ons like visitors count, github stats, etc using minimal UI. + categories: + - Portfolio + - Open Source + built_by: Rahul Jain + built_by_url: https://rahuldkjain.github.io - title: KuliahSG url: https://kuliah.sg main_url: https://kuliah.sg From bc748616753d24705b6ddffe3a5603be79f3c8ae Mon Sep 17 00:00:00 2001 From: Harsh Solanki Date: Wed, 12 Aug 2020 17:11:55 +0530 Subject: [PATCH 62/70] add conceptclassesindore to site showcase (#25826) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index b1506267d22e3..d9ea99374dc56 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11548,6 +11548,15 @@ built_by: HiringSolved built_by_url: https://hiringsolved.com/home/ featured: false +- title: Concept Classes + main_url: https://conceptclassesindore.xyz/ + url: https://www.conceptclassesindore.xyz/ + description: > + A fast and blazing website made for coaching classes + categories: + - Education + - Featured + built_by: Harsh Solanki - title: ZN Agency url: https://zn.agency main_url: https://zn.agency From b5aee43dfb3a21567fbc684992df074d9c1436e2 Mon Sep 17 00:00:00 2001 From: Carie Fisher <15240149+cehfisher@users.noreply.github.com> Date: Wed, 12 Aug 2020 06:44:18 -0500 Subject: [PATCH 63/70] Accessible blog + portfolio to site showcase (#25801) Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index d9ea99374dc56..ffdc380756135 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11548,6 +11548,18 @@ built_by: HiringSolved built_by_url: https://hiringsolved.com/home/ featured: false +- title: Carie Fisher brings accessibility + fun to the web + url: https://cariefisher.com + main_url: https://cariefisher.com + source_url: https://github.com/cehfisher/cehfisher.github.io + description: > + Who says accessible websites have to be ugly and boring? Carie Fisher's blog/portfolio website aims to prove otherwise. + categories: + - Accessibility + - Blog + - Design + built_by: Carie Fisher + built_by_url: https://twitter.com/cariefisher - title: Concept Classes main_url: https://conceptclassesindore.xyz/ url: https://www.conceptclassesindore.xyz/ From 0c3bb3a243ef3dfa8ae78fad649b003d9071c6a2 Mon Sep 17 00:00:00 2001 From: Laury Bueno Date: Wed, 12 Aug 2020 08:44:58 -0300 Subject: [PATCH 64/70] add laury.dev to site showcase (#26233) Co-authored-by: gatsbybot Co-authored-by: Sidhartha Chatterjee --- docs/sites.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index ffdc380756135..13a46daf89411 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -11692,6 +11692,20 @@ - Business built_by: leaniercode featured: false +- title: laury.dev + url: https://laury.dev + main_url: https://laury.dev + source_url: https://github.com/laurybueno/laury.dev + description: > + Blog and portfolio of Laury Bueno, software developer and journalist + categories: + - Open Source + - Blog + - Portfolio + - Programming + - Technology + built_by: Laury Bueno + built_by_url: https://github.com/laurybueno/ - title: Github Profile README Generator url: https://rahuldkjain.github.io/gh-profile-readme-generator/ main_url: https://rahuldkjain.github.io/gh-profile-readme-generator/ From 2d3191feb04b97a07b7399193187d3f8d89c8e4f Mon Sep 17 00:00:00 2001 From: Sidhartha Chatterjee Date: Wed, 12 Aug 2020 17:48:28 +0530 Subject: [PATCH 65/70] Fix lint --- docs/creators/creators.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/creators/creators.yml b/docs/creators/creators.yml index cb690d56767ad..010ada2a5ccbd 100644 --- a/docs/creators/creators.yml +++ b/docs/creators/creators.yml @@ -558,7 +558,7 @@ type: agency image: webplace.png description: >- - Webplace have been providing exceptional digital experiences for a vast range of clients since 2003. We provide digital strategy, UX / UI design, Web development, QA testing and ongoing maintenance & support. We are experts at WordPress, Drupal & Joomla and now use WordPress and Drupal as a Headless CMS with React / Gatsby as the frontend. + Webplace have been providing exceptional digital experiences for a vast range of clients since 2003. We provide digital strategy, UX / UI design, Web development, QA testing and ongoing maintenance & support. We are experts at WordPress, Drupal & Joomla and now use WordPress and Drupal as a Headless CMS with React / Gatsby as the frontend. website: https://www.webplace.com.au for_hire: true - portfolio: true \ No newline at end of file + portfolio: true From 609a99800c6cd36287e5efa389d8149abd6c64ce Mon Sep 17 00:00:00 2001 From: Jono Hewitt <47791294+jonohewitt@users.noreply.github.com> Date: Wed, 12 Aug 2020 13:57:17 +0100 Subject: [PATCH 66/70] Change to lowercase p on 'About withWebP' header (#26399) --- docs/docs/gatsby-image.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/gatsby-image.md b/docs/docs/gatsby-image.md index b8f9b67b626a1..ae093360198b1 100644 --- a/docs/docs/gatsby-image.md +++ b/docs/docs/gatsby-image.md @@ -314,7 +314,7 @@ If you don't want to use the [blur-up effect](https://using-gatsby-image.gatsbyj If you want to use the [traced placeholder SVGs](https://using-gatsby-image.gatsbyjs.org/traced-svg/), choose the fragment with `tracedSVG` at the end. -#### About `withWebP` +#### About `withWebp` If you want to automatically use [WebP images](https://developers.google.com/speed/webp/) when the browser supports the file format, use the `withWebp` fragments. If the browser doesn't support WebP, `gatsby-image` will fall back to the default image format. From 0e76ab0130d93b52b6ef5a2405993b654b0597d7 Mon Sep 17 00:00:00 2001 From: Pedro Cruz <1933933+pedcru@users.noreply.github.com> Date: Wed, 12 Aug 2020 07:57:40 -0500 Subject: [PATCH 67/70] Update index.md (#26395) Change the slash symbol to the hash symbol because if the code is copied, this generates an error from GraphQL: "There was a problem parsing the GraphQL query in file". --- docs/tutorial/part-seven/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorial/part-seven/index.md b/docs/tutorial/part-seven/index.md index 9a4f1dda9cdca..ce0fb51ab23cc 100644 --- a/docs/tutorial/part-seven/index.md +++ b/docs/tutorial/part-seven/index.md @@ -369,11 +369,11 @@ export const query = graphql` title date(formatString: "DD MMMM, YYYY") } - // highlight-start + # highlight-start fields { slug } - // highlight-end + # highlight-end excerpt } } From 9590a2cf2fc09c1daea6bab32f03cf86b7b6c626 Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Wed, 12 Aug 2020 15:11:19 +0200 Subject: [PATCH 68/70] fix(gatsby): place auto-generated virtual modules in `.cache` (#26396) * fix(gatsby): place auto-generated virtual modules in `.cache` * adjust async-requires paths in map-template-to-static-query-hashes --- .../src/utils/__tests__/map-templates-to-static-query-hashes.js | 2 +- packages/gatsby/src/utils/gatsby-webpack-virtual-modules.ts | 2 +- .../gatsby/src/utils/map-templates-to-static-query-hashes.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/gatsby/src/utils/__tests__/map-templates-to-static-query-hashes.js b/packages/gatsby/src/utils/__tests__/map-templates-to-static-query-hashes.js index eac045a272123..c8c0499808bac 100644 --- a/packages/gatsby/src/utils/__tests__/map-templates-to-static-query-hashes.js +++ b/packages/gatsby/src/utils/__tests__/map-templates-to-static-query-hashes.js @@ -47,7 +47,7 @@ const createModule = (resource, reasons = []) => { describe(`map-templates-to-static-query-hashes`, () => { it(`should map static-queries to a component file on all platforms`, () => { const asyncRequires = createModule( - `_this_is_virtual_fs_path_/$virtual/async-requires.js` + `.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js` ) const templateMap = mapTemplatesToStaticQueryHashes( diff --git a/packages/gatsby/src/utils/gatsby-webpack-virtual-modules.ts b/packages/gatsby/src/utils/gatsby-webpack-virtual-modules.ts index c8f51554232c6..d35822e641639 100644 --- a/packages/gatsby/src/utils/gatsby-webpack-virtual-modules.ts +++ b/packages/gatsby/src/utils/gatsby-webpack-virtual-modules.ts @@ -22,7 +22,7 @@ interface IGatsbyWebpackVirtualModulesContext { const fileContentLookup: Record = {} const instances: IGatsbyWebpackVirtualModulesContext[] = [] -export const VIRTUAL_MODULES_BASE_PATH = `_this_is_virtual_fs_path_` +export const VIRTUAL_MODULES_BASE_PATH = `.cache/_this_is_virtual_fs_path_` export class GatsbyWebpackVirtualModules { apply(compiler): void { diff --git a/packages/gatsby/src/utils/map-templates-to-static-query-hashes.ts b/packages/gatsby/src/utils/map-templates-to-static-query-hashes.ts index efcfa0f0d2855..18b49560be4cd 100644 --- a/packages/gatsby/src/utils/map-templates-to-static-query-hashes.ts +++ b/packages/gatsby/src/utils/map-templates-to-static-query-hashes.ts @@ -25,7 +25,7 @@ interface IModule extends Omit { */ const entryNodes = [ `.cache/api-runner-browser-plugins.js`, - `.cache/async-requires.js`, + `.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js`, ] /* This function takes the current Redux state and a compilation From f6b782c86dbfeba87be1f6e252ce58bb098845b0 Mon Sep 17 00:00:00 2001 From: Dustin Schau Date: Wed, 12 Aug 2020 09:17:00 -0500 Subject: [PATCH 69/70] chore: fix image --- docs/creators/creators.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/creators/creators.yml b/docs/creators/creators.yml index 010ada2a5ccbd..0afcc06ae6901 100644 --- a/docs/creators/creators.yml +++ b/docs/creators/creators.yml @@ -556,7 +556,7 @@ portfolio: true - name: Webplace type: agency - image: webplace.png + image: images/webplace.png description: >- Webplace have been providing exceptional digital experiences for a vast range of clients since 2003. We provide digital strategy, UX / UI design, Web development, QA testing and ongoing maintenance & support. We are experts at WordPress, Drupal & Joomla and now use WordPress and Drupal as a Headless CMS with React / Gatsby as the frontend. website: https://www.webplace.com.au From 8f5f2a59408e4f033b6a387f7c43ff6d6ca5c2a1 Mon Sep 17 00:00:00 2001 From: Dustin Schau Date: Wed, 12 Aug 2020 09:20:42 -0500 Subject: [PATCH 70/70] chore: run format --- www/gatsby-node.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/www/gatsby-node.js b/www/gatsby-node.js index 3a5dc07b06a05..37dff05dbc817 100644 --- a/www/gatsby-node.js +++ b/www/gatsby-node.js @@ -24,7 +24,7 @@ const sections = [ creators, packages, features, - apiCalls + apiCalls, ] // Run the provided API on all defined sections of the site @@ -37,16 +37,16 @@ async function runApiForSections(api, helpers) { exports.onCreateWebpackConfig = ({ actions, plugins }) => { const currentCommitSHA = require(`child_process`) .execSync(`git rev-parse HEAD`, { - encoding: `utf-8` + encoding: `utf-8`, }) .trim() actions.setWebpackConfig({ plugins: [ plugins.define({ - "process.env.COMMIT_SHA": JSON.stringify(currentCommitSHA) - }) - ] + "process.env.COMMIT_SHA": JSON.stringify(currentCommitSHA), + }), + ], }) } @@ -54,7 +54,7 @@ exports.createSchemaCustomization = async helpers => { await runApiForSections(`createSchemaCustomization`, helpers) const { - actions: { createTypes } + actions: { createTypes }, } = helpers // Explicitly define Airtable types so that queries still work @@ -105,9 +105,9 @@ exports.createResolvers = async helpers => { } return [] - } - } - } + }, + }, + }, }) } @@ -137,7 +137,7 @@ exports.createPages = async helpers => { fromPath: `/starters${fromSlug}`, toPath: `/starters${toSlug}`, isPermanent: true, - force: true + force: true, }) }) @@ -152,14 +152,14 @@ exports.createPages = async helpers => { fromPath: `/packages/*`, toPath: `https://gatsbyjs.com/plugins/:splat`, isPermanent: true, - force: true + force: true, }) await createRedirect({ fromPath: `/creators/*`, toPath: `https://gatsbyjs.com/partner/`, isPermanent: true, - force: true + force: true, }) // catch all redirect @@ -168,6 +168,6 @@ exports.createPages = async helpers => { fromPath: `/*`, toPath: `https://gatsbyjs.com/:splat`, isPermanent: true, - force: true + force: true, }) }