Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
31a83b7
Switch to Create React App.
May 4, 2017
9c6d85a
Add AMP html validation.
May 4, 2017
c512faa
Bump Node version for CircleCI.
May 4, 2017
2452f0c
Automatically deploy to staging if CircleCI passes.
May 4, 2017
9e36803
Add ci-deploy npm script.
May 4, 2017
1985537
Fix warnings.
May 4, 2017
65f5bd4
Add firebase-tools as a dev dependency.
May 4, 2017
afeaff7
Test CircleCI deployment.
May 4, 2017
14768ee
Add react-router and react-snapshot.
May 11, 2017
765a31f
Add react-helmet.
May 11, 2017
0ee9395
Add service worker.
May 11, 2017
124d117
Add manifest.json.
May 11, 2017
6f53bb6
Add theme-color meta tag.
May 11, 2017
27d9f71
Fix cache headers for service worker.
May 11, 2017
30eba02
Add async attribute to script tags.
May 11, 2017
844a507
Configure Firebase to cache js files.
May 11, 2017
a73ade7
Cache our favicon for longer.
May 11, 2017
590a244
Switch to Preact.
May 11, 2017
eb616b1
Implement push notifications.
May 16, 2017
4861e56
Defer loading the manifest and favicon.
May 16, 2017
3accb29
Get started on a little design work.
May 18, 2017
5fce72b
Add kaleidoscope place-holder and first pass overlay.
iandoesallthethings May 19, 2017
55fb72f
Clean up hero.
May 20, 2017
1d72a29
Integrate kaleidoscope.
May 20, 2017
e173a01
Use black and white star while working on design.
May 20, 2017
dea1af0
Add image resizing as part of build.
May 20, 2017
c8b28fc
Fix resizeImages build script.
May 20, 2017
70ba9c3
Use top and bottom bars for navigation.
May 22, 2017
6c79362
Invert 'A' in a nicer way.
May 22, 2017
f4bd909
Add placeholders for other pages.
May 22, 2017
c1c28b8
Remove React dependencies.
May 23, 2017
4426bc4
Use pixi.js npm package.
May 25, 2017
385375e
Add basic styling to /shows.
May 25, 2017
bf9f93e
Make it easy to remove the footer if we want to.
May 25, 2017
6a02408
Make shows page look nicer.
May 29, 2017
e6fc5dc
Fix details link for mobile screens.
May 29, 2017
d26ae3b
Hide extra header and footer stuff on small screens.
May 29, 2017
c9ea1e4
Query Google Calendar API for shows.
May 29, 2017
597746a
Add spinner to shows.
May 30, 2017
7840ad1
Improve layout for push permission toggle.
May 30, 2017
5e9b999
Add toggle to shows page.
May 30, 2017
e9d4a59
Finish up shows page.
May 30, 2017
cf3314b
Show push permission toggle even while shows are loading.
May 30, 2017
0294a74
Remove spurious markup from shows page.
May 30, 2017
78937e9
Don't display past shows.
May 30, 2017
a88d7e5
Make tab menu items more clickable.
May 30, 2017
99f8b29
Fix header borkenness.
May 30, 2017
92a3756
Make footer look nice without icons.
May 31, 2017
7d37346
Prevent the tab menu's box shadow from peeking out of the bottom.
May 31, 2017
7dc75f0
Another little gotcha from that bug.
May 31, 2017
eb41d52
Use placeholders until high quality images load.
Jun 1, 2017
a90f3ab
Build infrastructure for smaller placeholders.
Jun 1, 2017
5e56dff
Load placeholder image in img tag so we don't have to parse js first.
Jun 1, 2017
f976082
Avoid jumps when controlling kaleidoscope with device orientation.
Jun 1, 2017
1ba21cf
Remove material icons dependency.
Jun 1, 2017
28e3737
Make a bunch of improvements.
Jun 2, 2017
637fce4
Blur using CSS filters.
Jun 2, 2017
0b65aac
Shrink dependencies.
Jun 3, 2017
b78608f
Try registering service worker before loading budnle.
Jun 3, 2017
9cf8a7b
Fix warnings.
Jun 3, 2017
1677983
Add first pass on social media icons.
Jun 3, 2017
a96b491
Make tab menu items easier to click. And add social media icons to co…
Jun 5, 2017
21686f9
Darken call to action when it's hovered.
Jun 5, 2017
edea782
Switch back from Old Plum.
Jun 5, 2017
657b3aa
Separate tab menu items on smaller screens.
Jun 5, 2017
728c37c
Fix vertical position of inverted A.
Jun 5, 2017
5144320
Clean up compiler warnings.
Jun 5, 2017
bfd04e7
Fix mobile jank.
Jun 7, 2017
de0dcb0
Generate webp images.
Jun 10, 2017
1490322
Use webp and srcset.
Jun 10, 2017
1a88288
Try another solution for detecting image load for cached images.
Jun 10, 2017
935c949
Can we detect cached image load this way?
Jun 10, 2017
89f769e
How about this way?
Jun 10, 2017
5a24422
Fix loading weirdness.
Jun 10, 2017
0d53863
Odds and ends.
Jun 14, 2017
a9e790c
Clean up previous work.
Sep 24, 2017
d203942
Add vectorized kaleidoscope image.
Sep 27, 2017
3b057fa
Try vector kaleidoscopes.
Sep 27, 2017
6a54986
More work on streaming.
Nov 2, 2017
ae1411f
Prepare for regenerating repo.
Nov 3, 2017
8cdc4e6
Get svg streaming working.
Nov 4, 2017
742eac0
Cache the first few kaleidoscope paths in the JavaScript bundle.
Nov 4, 2017
e22485a
Make streaming look pretty.
Nov 4, 2017
0523a75
Remove some cruft.
Nov 4, 2017
555f596
Get started on integrating the Shopify Buy SDK.
Nov 5, 2017
35c2def
Show spinner before JS bundle is parsed.
Jan 19, 2018
f60ff45
Send users to Shopify for the store.
Jan 19, 2018
39705d5
Add press page and prep for release.
Jan 24, 2018
a5535de
More work on the press page, and improve the contact page.
Jan 25, 2018
bff0ea5
Fix some visual bugs on the press page.
Jan 25, 2018
73481d4
Make text bigger on contact page.
Jan 25, 2018
e367a3d
Make images less ridiculously huge.
Jan 25, 2018
f151d9f
Cleaning up odds and ends.
Jan 25, 2018
7b1fbad
Associate repo with partialsband.com. Also temporarily remove News se…
Jan 25, 2018
199fdc2
Temporarily change 'listen free' link in footer to 'pre-order'.
Jan 25, 2018
ac48c7a
Make kaleidoscope touchable.
Jan 25, 2018
42842e2
Add link to the Clash Magazine premier of Man Made Machine.
Jan 25, 2018
38f87ad
Update website to reflect release.
Apr 8, 2018
1335d97
Add redirect for Incredible Speed video.
Oct 11, 2018
9a447be
Make sure the Incredible Speed video redirect isn't cached.
Oct 11, 2018
c376659
Tweak firebaserc.
Mar 1, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .babelrc

This file was deleted.

9 changes: 9 additions & 0 deletions .cache/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"env": {
"browser": true
},
"globals": {
"__PATH_PREFIX__": false,
"___emitter": false
}
}
41 changes: 41 additions & 0 deletions .cache/__tests__/.babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
babelrc: false,
presets: [
[
"@babel/preset-env",
{
loose: true,
modules: false,
useBuiltIns: "usage",
shippedProposals: true,
targets: {
browsers: [">0.25%", "not dead"],
},
},
],
[
"@babel/preset-react",
{
useBuiltIns: true,
pragma: "React.createElement",
},
],
],
plugins: [
[
"@babel/plugin-proposal-class-properties",
{
loose: true,
},
],
"@babel/plugin-syntax-dynamic-import",
[
"@babel/plugin-transform-runtime",
{
helpers: true,
regenerator: true,
corejs: false,
},
],
],
}
13 changes: 13 additions & 0 deletions .cache/__tests__/__snapshots__/static-entry.js.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`develop-static-entry onPreRenderHTML can be used to replace headComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><style>.style3 </style><style>.style2 </style><style>.style1 </style><script src=\\"/socket.io/socket.io.js\\"></script></head><body><div id=\\"___gatsby\\"></div><script src=\\"/commons.js\\"></script></body></html>"`;

exports[`develop-static-entry onPreRenderHTML can be used to replace postBodyComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><script src=\\"/socket.io/socket.io.js\\"></script></head><body><div id=\\"___gatsby\\"></div><div>div3</div><div>div2</div><div>div1</div><script src=\\"/commons.js\\"></script></body></html>"`;

exports[`develop-static-entry onPreRenderHTML can be used to replace preBodyComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><script src=\\"/socket.io/socket.io.js\\"></script></head><body><div>div3</div><div>div2</div><div>div1</div><div id=\\"___gatsby\\"></div><script src=\\"/commons.js\\"></script></body></html>"`;

exports[`static-entry onPreRenderHTML can be used to replace headComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><style>.style3 </style><style>.style2 </style><style>.style1 </style><meta name=\\"generator\\" content=\\"Gatsby 2.0.0\\"/></head><body><div id=\\"___gatsby\\"><div style=\\"outline:none\\" tabindex=\\"-1\\" role=\\"group\\"></div></div><script id=\\"gatsby-script-loader\\">/*<![CDATA[*/window.page={\\"path\\":\\"/about/\\",\\"componentChunkName\\":\\"page-component---src-pages-test-js\\",\\"jsonName\\":\\"about.json\\"};/*]]>*/</script><script id=\\"gatsby-chunk-mapping\\">/*<![CDATA[*/window.___chunkMapping={};/*]]>*/</script></body></html>"`;

exports[`static-entry onPreRenderHTML can be used to replace postBodyComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><meta name=\\"generator\\" content=\\"Gatsby 2.0.0\\"/></head><body><div id=\\"___gatsby\\"><div style=\\"outline:none\\" tabindex=\\"-1\\" role=\\"group\\"></div></div><div>div3</div><div>div2</div><div>div1</div><script id=\\"gatsby-script-loader\\">/*<![CDATA[*/window.page={\\"path\\":\\"/about/\\",\\"componentChunkName\\":\\"page-component---src-pages-test-js\\",\\"jsonName\\":\\"about.json\\"};/*]]>*/</script><script id=\\"gatsby-chunk-mapping\\">/*<![CDATA[*/window.___chunkMapping={};/*]]>*/</script></body></html>"`;

exports[`static-entry onPreRenderHTML can be used to replace preBodyComponents 1`] = `"<!DOCTYPE html><html><head><meta charSet=\\"utf-8\\"/><meta http-equiv=\\"x-ua-compatible\\" content=\\"ie=edge\\"/><meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1, shrink-to-fit=no\\"/><meta name=\\"generator\\" content=\\"Gatsby 2.0.0\\"/></head><body><div>div3</div><div>div2</div><div>div1</div><div id=\\"___gatsby\\"><div style=\\"outline:none\\" tabindex=\\"-1\\" role=\\"group\\"></div></div><script id=\\"gatsby-script-loader\\">/*<![CDATA[*/window.page={\\"path\\":\\"/about/\\",\\"componentChunkName\\":\\"page-component---src-pages-test-js\\",\\"jsonName\\":\\"about.json\\"};/*]]>*/</script><script id=\\"gatsby-chunk-mapping\\">/*<![CDATA[*/window.___chunkMapping={};/*]]>*/</script></body></html>"`;
67 changes: 67 additions & 0 deletions .cache/__tests__/find-page.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
const pageFinderFactory = require(`../find-page`).default

let findPage

describe(`find-page`, () => {
beforeEach(() => {
const newPages = [
{
path: `/about/`,
componentChunkName: `page-component---src-pages-test-js`,
jsonName: `about.json`,
},
{
path: `/about/me/`,
componentChunkName: `page-component---src-pages-test-js`,
jsonName: `about-me.json`,
},
{
path: `/about/the best/`,
componentChunkName: `page-component---src-pages-test-js`,
jsonName: `the-best.json`,
},
{
path: `/app/`,
matchPath: `/app/*`,
componentChunkName: `page-component---src-pages-app-js`,
jsonName: `app.json`,
},
]
findPage = pageFinderFactory(newPages)
})

it(`can find a page`, () => {
expect(findPage(`/about/`).path).toBe(`/about/`)
expect(findPage(`/about/me/`).path).toBe(`/about/me/`)
})

it(`can find a page with space in its path`, () => {
expect(findPage(`/about/the best/`).path).toBe(`/about/the best/`)
expect(findPage(`/about/the%20best/`).path).toBe(`/about/the best/`)
})

it(`can find a client only path`, () => {
expect(findPage(`/about/super-duper/`)).toBeUndefined()
expect(findPage(`/app/client/only/path`).path).toBe(`/app/`)
})

it(`can find links with hashes`, () => {
expect(findPage(`/about/me/#hashtagawesome`).path).toBe(`/about/me/`)
})

it(`can find links with search query`, () => {
expect(findPage(`/about/me/?query=awesome`).path).toBe(`/about/me/`)
})

it(`handles finding prefixed links`, () => {
const newPages = [
{
path: `/about/`,
componentChunkName: `page-component---src-pages-test-js`,
jsonName: `about.json`,
},
]
const findPage2 = pageFinderFactory(newPages, `/my-test-prefix`)
expect(findPage2(`/my-test-prefix/about/`).path).toBe(`/about/`)
})
})
30 changes: 30 additions & 0 deletions .cache/__tests__/minimal-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const path = require(`path`)
const child = require(`child_process`)

it(`Builds cache-dir with minimal config`, done => {
const args = [
require.resolve(`@babel/cli/bin/babel.js`),
path.join(__dirname, `..`),
`--config-file`,
path.join(__dirname, `.babelrc`),
]

const spawn = child.spawn(process.execPath, args)

let stderr = ``
let stdout = ``

spawn.stderr.on(`data`, function (chunk) {
stderr += chunk
})

spawn.stdout.on(`data`, function (chunk) {
stdout += chunk
})

spawn.on(`close`, function () {
expect(stderr).toEqual(``)
expect(stdout).not.toEqual(``)
done()
})
}, 30000)
171 changes: 171 additions & 0 deletions .cache/__tests__/static-entry.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
import React from "react"
import DevelopStaticEntry from "../develop-static-entry"

jest.mock(`fs`)
jest.mock(`gatsby/package.json`, () => ({
version: '2.0.0'
}));

jest.mock(
`../sync-requires`,
() => {
return {
components: {
"page-component---src-pages-test-js": () => null,
},
}
},
{ virtual: true }
)

jest.mock(
`../data.json`,
() => {
return {
dataPaths: [
{
[`about.json`]: `/400/about`,
},
],
pages: [
{
path: `/about/`,
componentChunkName: `page-component---src-pages-test-js`,
jsonName: `about.json`,
},
],
}
},
{ virtual: true }
)

const MOCK_FILE_INFO = {
[`${process.cwd()}/public/webpack.stats.json`]: `{}`,
[`${process.cwd()}/public/chunk-map.json`]: `{}`,
}

require(`fs`).__setMockFiles(MOCK_FILE_INFO)

// Needs to be imported after __setMockFiles is called, and imports get hoisted.
const StaticEntry = require(`../static-entry`).default

const reverseHeadersPlugin = {
plugin: {
onPreRenderHTML: ({ getHeadComponents, replaceHeadComponents }) => {
const headComponents = getHeadComponents()
headComponents.reverse()
replaceHeadComponents(headComponents)
},
},
}

const fakeStylesPlugin = {
plugin: {
onRenderBody: ({ setHeadComponents }) =>
setHeadComponents([
<style key="style1">.style1 {}</style>,
<style key="style2">.style2 {}</style>,
<style key="style3">.style3 {}</style>,
]),
},
}

const reverseBodyComponentsPluginFactory = type => {
return {
plugin: {
onPreRenderHTML: props => {
const components = props[`get${type}BodyComponents`]()
components.reverse()
props[`replace${type}BodyComponents`](components)
},
},
}
}

const fakeComponentsPluginFactory = type => {
return {
plugin: {
onRenderBody: props => {
props[`set${type}BodyComponents`]([
<div key="div1">div1</div>,
<div key="div2">div2</div>,
<div key="div3">div3</div>,
])
},
},
}
}

describe(`develop-static-entry`, () => {
test(`onPreRenderHTML can be used to replace headComponents`, done => {
global.plugins = [fakeStylesPlugin, reverseHeadersPlugin]

DevelopStaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})

test(`onPreRenderHTML can be used to replace postBodyComponents`, done => {
global.plugins = [
fakeComponentsPluginFactory(`Post`),
reverseBodyComponentsPluginFactory(`Post`),
]

DevelopStaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})

test(`onPreRenderHTML can be used to replace preBodyComponents`, done => {
global.plugins = [
fakeComponentsPluginFactory(`Pre`),
reverseBodyComponentsPluginFactory(`Pre`),
]

DevelopStaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})
})

describe(`static-entry`, () => {
beforeEach(() => {
global.__PATH_PREFIX__ = ``
})

test(`onPreRenderHTML can be used to replace headComponents`, done => {
global.plugins = [fakeStylesPlugin, reverseHeadersPlugin]

StaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})

test(`onPreRenderHTML can be used to replace postBodyComponents`, done => {
global.plugins = [
fakeComponentsPluginFactory(`Post`),
reverseBodyComponentsPluginFactory(`Post`),
]

StaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})

test(`onPreRenderHTML can be used to replace preBodyComponents`, done => {
global.plugins = [
fakeComponentsPluginFactory(`Pre`),
reverseBodyComponentsPluginFactory(`Pre`),
]

StaticEntry(`/about/`, (_, html) => {
expect(html).toMatchSnapshot()
done()
})
})
})
23 changes: 23 additions & 0 deletions .cache/__tests__/strip-prefix.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
const stripPrefix = require(`../strip-prefix`).default

describe(`strip-prefix`, () => {
it(`strips a prefix`, () => {
expect(stripPrefix(`/foo/bar/`, `/foo`)).toBe(`/bar/`)
})

it(`strips first instance only`, () => {
expect(stripPrefix(`/foo/foo/bar/`, `/foo`)).toBe(`/foo/bar/`)
})

it(`ignores prefix appearing elsewhere in the string`, () => {
expect(stripPrefix(`/foo/bar/`, `bar`)).toBe(`/foo/bar/`)
})

it(`ignores a non-existent prefix`, () => {
expect(stripPrefix(`/bar`, `/foo`)).toBe(`/bar`)
})

it(`returns input str if no prefix is provided`, () => {
expect(stripPrefix(`/bar`)).toBe(`/bar`)
})
})
1 change: 1 addition & 0 deletions .cache/api-runner-browser-plugins.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = []
Loading