├── .editorconfig
├── .gitignore
├── .htmlhintrc
├── .stylelintrc
├── AUTHORS
├── CHANGELOG.md
├── CNAME
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── docs
├── error.html
└── index.html
├── labels.json
├── package.json
├── public
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon-precomposed.png
├── apple-touch-icon.png
├── browserconfig.xml
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── humans.txt
├── konami.js
├── main.css
├── manifest.json
├── mstile-150x150.png
├── mstile-310x310.png
├── mutation-summary.js
├── nuclear-reset.css
├── nuclear-reset.js
└── safari-pinned-tab.svg
├── server.js
└── views
└── enter-url.html
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent coding styles
2 | # between different editors and IDEs
3 | # editorconfig.org
4 |
5 |
6 | # Topmost EditorConfig file
7 | root = true
8 |
9 | # Overall defaults
10 | [*]
11 |
12 | # Tab style
13 | indent_style = space
14 | indent_size = 4
15 |
16 | # File format and handling
17 | charset = utf-8
18 | end_of_line = lf
19 | insert_final_newline = true
20 | trim_trailing_whitespace = true
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | npm-debug.log
3 | .DS_Store
4 |
--------------------------------------------------------------------------------
/.htmlhintrc:
--------------------------------------------------------------------------------
1 | {
2 | "tagname-lowercase": true,
3 | "attr-lowercase": true,
4 | "attr-value-double-quotes": true,
5 | "tag-pair": true,
6 | "tag-self-close": true,
7 | "spec-char-escape": true,
8 | "id-unique": true,
9 | "src-not-empty": true,
10 | "attr-no-duplication": true,
11 | "title-require": true,
12 | "alt-require": true,
13 | "doctype-html5": true,
14 | "space-tab-mixed-disabled": true,
15 | "id-class-ad-disabled": true,
16 | "attr-unsafe-chars": true
17 | }
18 |
--------------------------------------------------------------------------------
/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "rules": {
3 | "at-rule-no-unknown": [true, {
4 | "ignoreAtRules": ["at-root", "debug", "each", "else", "error", "extend", "for", "function", "import", "if", "include", "media", "mixin", "return", "warn", "while"]
5 | }],
6 | "at-rule-no-vendor-prefix": [true, {
7 | "message": "Vendor prefixes are automatically generated (at-rule-no-vendor-prefix)"
8 | }],
9 | "at-rule-semicolon-newline-after": ["always", {
10 | "message": "Make @ rules visually distinct from other declarations (at-rule-semicolon-newline-after)"
11 | }],
12 | "at-rule-empty-line-before": ["always", {
13 | "except": ["blockless-group", "first-nested"],
14 | "ignore": ["after-comment"]
15 | }],
16 | "block-closing-brace-empty-line-before": "never",
17 | "block-closing-brace-newline-after": "always",
18 | "block-closing-brace-newline-before": "always-multi-line",
19 | "block-closing-brace-space-before": "always-single-line",
20 | "block-no-empty": true,
21 | "block-opening-brace-newline-after": "always-multi-line",
22 | "block-opening-brace-space-after": "always-single-line",
23 | "block-opening-brace-space-before": "always",
24 | "color-hex-case": ["lower", {
25 | "severity": "warning",
26 | "message": "Lowercase letters in hex code are more distinct (color-hex-case)"
27 | }],
28 | "color-hex-length": ["long", {
29 | "severity": "warning",
30 | "message": "Keep all hex code values at a standardized six character length (color-hex-length)"
31 | }],
32 | "color-named": ["never", {
33 | "severity": "warning",
34 | "message": "Browsers can render named colors inconsistently, use variables instead (color-named)"
35 | }],
36 | "color-no-invalid-hex": true,
37 | "comment-no-empty": true,
38 | "custom-property-empty-line-before": ["always", {
39 | "except": "after-custom-property",
40 | "ignore": "after-comment"
41 | }],
42 | "declaration-bang-space-after": "never",
43 | "declaration-bang-space-before": "always",
44 | "declaration-colon-newline-after": "always-multi-line",
45 | "declaration-colon-space-after": "always-single-line",
46 | "declaration-colon-space-before": "never",
47 | "declaration-block-no-duplicate-properties": true,
48 | "declaration-block-no-shorthand-property-overrides": true,
49 | "declaration-block-semicolon-newline-after": "always-multi-line",
50 | "declaration-block-semicolon-space-after": "always-single-line",
51 | "declaration-block-semicolon-space-before": "never",
52 | "declaration-block-single-line-max-declarations": [1, {
53 | "severity": "warning"
54 | }],
55 | "declaration-block-trailing-semicolon": "always",
56 | "font-family-name-quotes": "always-unless-keyword",
57 | "font-weight-notation": ["numeric", {
58 | "severity": "warning",
59 | "message": "Use numeric font weights for better typographic control (font-weight-notation)"
60 | }],
61 | "function-calc-no-unspaced-operator": true,
62 | "function-comma-space-after": "always-single-line",
63 | "function-comma-space-before": "never-single-line",
64 | "function-linear-gradient-no-nonstandard-direction": true,
65 | "function-parentheses-newline-inside": "always-multi-line",
66 | "function-parentheses-space-inside": "never-single-line",
67 | "function-url-quotes": "never",
68 | "function-whitespace-after": "always",
69 | "length-zero-no-unit": true,
70 | "media-feature-colon-space-after": "always",
71 | "media-feature-colon-space-before": "never",
72 | "media-feature-name-case": "lower",
73 | "media-feature-name-no-vendor-prefix": [true, {
74 | "message": "Vendor prefixes are automatically generated (media-feature-name-no-vendor-prefix)"
75 | }],
76 | "media-feature-no-missing-punctuation": true,
77 | "media-feature-parentheses-space-inside": "never",
78 | "media-feature-range-operator-space-after": "always",
79 | "media-feature-range-operator-space-before": "always",
80 | "media-query-list-comma-newline-after": "always-multi-line",
81 | "media-query-list-comma-newline-before": "never-multi-line",
82 | "max-empty-lines": [3, {
83 | "severity": "warning",
84 | "message": "More than 3 empty lines are present (max-empty-lines)"
85 | }],
86 | "no-duplicate-selectors": true,
87 | "no-eol-whitespace": true,
88 | "no-extra-semicolons": true,
89 | "no-indistinguishable-colors": [true, {
90 | "severity": "warning"
91 | }],
92 | "no-unknown-animations": true,
93 | "number-leading-zero": "always",
94 | "number-max-precision": [5, {
95 | "severity": "warning",
96 | "message": "More than 5 decimal places are present (number-max-precision)"
97 | }],
98 | "number-no-trailing-zeros": true,
99 | "property-no-unknown": true,
100 | "property-no-vendor-prefix": [true, {
101 | "message": "Vendor prefixes are automatically generated (property-no-vendor-prefix)"
102 | }],
103 | "root-no-standard-properties": true,
104 | "rule-nested-empty-line-before": ["always-multi-line", {
105 | "except": ["first-nested"],
106 | "ignore": "after-comment"
107 | }],
108 | "rule-non-nested-empty-line-before": ["always", {
109 | "ignore": ["after-comment"]
110 | }],
111 | "selector-combinator-space-after": "always",
112 | "selector-combinator-space-before": "always",
113 | "selector-no-id": true,
114 | "selector-no-vendor-prefix": [true, {
115 | "message": "Vendor prefixes are automatically generated (selector-no-vendor-prefix)"
116 | }],
117 | "selector-pseudo-element-colon-notation": "double",
118 | "selector-root-no-composition": true,
119 | "selector-type-case": "lower",
120 | "selector-list-comma-newline-after": "always-multi-line",
121 | "selector-list-comma-space-after": "always-single-line",
122 | "selector-list-comma-space-before": "never",
123 | "selector-max-specificity": "0,3,1",
124 | "string-quotes": "double",
125 | "value-list-comma-space-after": "always-single-line",
126 | "value-list-comma-space-before": "never-single-line",
127 | "value-no-vendor-prefix": [true, {
128 | "message": "Vendor prefixes are automatically generated (value-no-vendor-prefix)"
129 | }]
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | Daniel McLaughlin
2 | Eric Bailey
3 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | This project adheres to [Semantic Versioning](http://semver.org/) and tries to follow the [Keep a CHANGELOG](http://keepachangelog.com) convention.
6 |
7 | ## vNext - Unreleased
8 |
9 | - Inline input validation
10 |
11 | ## v0.0.2 - 2016-10-10
12 |
13 | - Updated the design of the landing page
14 | - Fleshed out the project README
15 | - Added error page
16 |
17 | ## v0.0.1 - 2016-10-03
18 |
19 | - Initial release.
20 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | structure.exposed
2 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | ## Table of Contents
4 | 1. [Before you get started](#before-you-get-started)
5 | 1. [Code of Conduct](#code-of-conduct)
6 | - [Terms of Use](#terms-of-use)
7 | - [Labeling](#labeling)
8 | - [Templates](#templates)
9 | - [Submitting Issues](#submitting-issues)
10 | - [Pull and Feature Requests](#pull-and-feature-requests)
11 | 1. [Submitting Pull Requests](#submitting-pull-requests)
12 | - [Submitting Feature Requests](#submitting-feature-requests)
13 |
14 | Thanks for getting involved! Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
15 |
16 | Following these guidelines helps to communicate that you respect the time of the people managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features.
17 |
18 |
19 | ## Before you get started
20 |
21 | ### Code of Conduct
22 | This project adheres to the [Contributor Covenant code of conduct](http://contributor-covenant.org/version/1/4/). By participating, you are expected to uphold this code. Please report unacceptable behavior to [the project authors](https://github.com/danielsmc/structure-exposed/blob/master/AUTHORS).
23 |
24 | ### Terms of Use
25 | By submitting code or a feature request, you agree to allow the project owners to license your work under the terms of the [project license](https://github.com/danielsmc/structure-exposed/blob/master/LICENSE).
26 |
27 | ### Labeling
28 | This project uses labels to help organize and prioritize contributions. The labels are broken into three main types: **Type**, **Status**, and **Priority**.
29 |
30 | When submitting a Bug Report, Pull Request, or Feature Request, please select an appropriate label from each of the three types. Contributions that don't observe this labeling schema are likely to be rejected.
31 |
32 | Labels will be updated throughout the submission process to reflect the submission's overall status. For more information, please refer to [this article](https://medium.com/@dave_lunny/sane-github-labels-c5d2e6004b63#.fh462xzfj).
33 |
34 | ### Templates
35 | This project uses templates for Issue and Pull Requests. Following the provided template helps the project maintainers have all the right details up front, which makes addressing feedback easier.
36 |
37 | ## Submitting Issues
38 | *An Issue is a demonstrable problem that is caused by the code in the repository.*
39 |
40 | First, use the [GitHub Issue search](https://github.com/danielsmc/structure-exposed/issues) to check if the issue has already been reported—then, check if the issue has been fixed. Try to reproduce it using the latest [master branch](https://github.com/danielsmc/structure-exposed) in the repository. Next, isolate the problem—ideally [create a reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example.
41 |
42 | A good Issue report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and OS versions experience the problem? What would you expect to be the outcome? Any guesses to a possible solution? All these details will help people to fix any potential bugs.
43 |
44 | ## Pull and Feature Requests
45 |
46 | ### Submitting Pull Requests
47 | *A Pull Request is a collection of changes submitted with the intention of being incorporated into the project.*
48 |
49 | Good Pull Requests, patches, improvements, new features, etc. are a fantastic help. They should remain focused in scope and avoid containing unrelated commits.
50 |
51 | When submitting a Pull Request, first use the [GitHub Pull Request search](https://github.com/danielsmc/structure-exposed/pulls) to check if the request has already been submitted.
52 |
53 | If it hasn't, please ask first before embarking on any significant Pull Request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project.
54 |
55 | Please adhere to the coding conventions used throughout a project (indentation, accurate comments, etc.) and any other requirements (such as test coverage).
56 |
57 |
58 | ### Submitting Feature Requests
59 | *A Feature Request is a new component or an enhancement to existing functionality.*
60 |
61 | Feature Requests are welcome. It's up to you to make a strong case to convince the project team of the merits of this feature. Remember that your request will be prioritized accordingly and not all requests can always be implemented in a timely fashion.
62 |
63 | Before submitting, take a moment to find out whether your idea fits with the scope and aims of the project. Use the GitHub Issue and Pull Request searches to see if there is something similar to your propose feature being worked on already.
64 |
65 | Use the [GitHub Issues page](https://github.com/danielsmc/structure-exposed/issues) to submit your Feature Request. Please provide as much detail and context in your request as possible.
66 |
--------------------------------------------------------------------------------
/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Issue title
2 |
3 | ## Expected behavior
4 |
5 |
6 | ## Actual behavior
7 |
8 |
9 | ## Steps to reproduce behavior
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2016 Daniel McLaughlin
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Pull Request title
2 |
3 | ## What does this Pull Request do?
4 |
5 |
6 | ## Where should the reviewer start?
7 |
8 |
9 | ## How should this be manually tested?
10 |
11 |
12 | ## Any background context you want to provide?
13 |
14 |
15 | ## What are the relevant tickets?
16 |
17 |
18 | ## Applicable screenshots
19 |
20 |
21 | ## Additional questions
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [structure.exposed](http://structure.exposed/)
2 |
3 | A simple proxy that strips away CSS frippery.
4 |
5 | ## Why?
6 |
7 | [structure.exposed](http://structure.exposed/) is a good way to check how your site will behave if styles fail to load.
8 |
9 | Aggressive firewalls, intermittent connection, shiesty service providers, bad caches, browser plugins, content blockers, non-standard browsers, large blocking assets, sloppy JavaScript, compromised ad networks, VPNs, CDN outages, scrapers and archivers, and panicky production hotfixes can all conspire to interrupt your style's HTTP request.
10 |
11 | Authoring your markup in a logical order using semantic markup ensures that basic functionality is retained even if the visuals are not. It is also great for [helping to make your site accessible](http://a11yproject.com/posts/navigate-using-just-your-keyboard/).
12 |
13 | ## Frequently Asked Questions
14 |
15 | ### How are styles removed?
16 |
17 | Styles are removed by [an injected script](https://github.com/danielsmc/structure-exposed/blob/master/public/nuclear-reset.js) that removes every `
141 |
142 |
143 |
144 |
145 |
146 |
womp womp
147 |
148 |
149 | Looks like our burning pile of garbage server is having an issue at the moment, but you are welcome to peruse our code on GitHub.
150 |