Skip to content

Commit

Permalink
Release v0.5.1
Browse files Browse the repository at this point in the history
  • Loading branch information
dpilafian committed Jun 11, 2021
1 parent e87c7b4 commit 410f642
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 97 deletions.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ _A package for testing HTML files or URLs against the W3C validator_
[![Vulnerabilities](https://snyk.io/test/github/center-key/w3c-html-validator/badge.svg)](https://snyk.io/test/github/center-key/w3c-html-validator)
[![Build](https://github.com/center-key/w3c-html-validator/workflows/build/badge.svg)](https://github.com/center-key/w3c-html-validator/actions?query=workflow%3Abuild)


## Setup

### Install
Expand All @@ -17,8 +16,16 @@ Install package for node:
$ npm install --save-dev w3c-html-validator
```

## Import
### Import
Import into your application:
```javascript
import { w3cHtmlValidator } from 'w3c-html-validator';
```

### Validate
Call the `validate()` function:
```javascript
const handleValidation = (error, info) => console.log(error || info);
const options = { file: 'https://pretty-print-json.js.org/', callback: handleValidation };
w3cHtmlValidator.validate(options);
```
13 changes: 5 additions & 8 deletions dist/w3c-html-validator.d.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
//! W3C HTML Validator v0.5.0 ~ github.com/center-key/w3c-html-validator ~ MIT License
//! W3C HTML Validator v0.5.1 ~ github.com/center-key/w3c-html-validator ~ MIT License

export declare type ValidatorOptions = {
output?: string;
doctype?: string;
charset?: string;
file?: string;
input?: string;
checkUrl?: string;
output?: 'json' | 'html';
proxy?: string;
callback?: (response: unknown, info?: unknown) => void;
file: string;
input: string;
};
declare const w3cHtmlValidator: {
version: string;
w3cCheckUrl: string;
setW3cCheckUrl(newW3cCheckUrl: string): void;
validate(options: ValidatorOptions): void;
};
export { w3cHtmlValidator };
51 changes: 20 additions & 31 deletions dist/w3c-html-validator.js
Original file line number Diff line number Diff line change
@@ -1,59 +1,48 @@
//! W3C HTML Validator v0.5.0 ~ github.com/center-key/w3c-html-validator ~ MIT License
//! W3C HTML Validator v0.5.1 ~ github.com/center-key/w3c-html-validator ~ MIT License

import { readFileSync } from 'fs';
import * as request from 'superagent';
import withProxy from 'superagent-proxy';
withProxy(request);
const w3cHtmlValidator = {
version: '0.5.0',
w3cCheckUrl: 'https://validator.w3.org/nu/',
setW3cCheckUrl(newW3cCheckUrl) {
w3cHtmlValidator.w3cCheckUrl = newW3cCheckUrl;
},
version: '0.5.1',
validate(options) {
const defaults = {
checkUrl: 'https://validator.w3.org/nu/',
output: 'json',
doctype: null,
charset: null,
proxy: null,
callback: (response) => console.log(response),
};
const settings = { ...defaults, ...options };
const checkUrl = w3cHtmlValidator.w3cCheckUrl;
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const getRequest = (isLocal) => {
const req = isLocal ? request.default.post(checkUrl) : request.default.get(checkUrl);
const req = isLocal ? request.default.post(settings.checkUrl) :
request.default.get(settings.checkUrl);
if (settings.proxy)
req.proxy(settings.proxy);
req.set('User-Agent', 'w3c-html-validator');
req.set('Content-Type', 'text/html; encoding=utf-8');
return req;
};
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const remoteMode = /^http[s]?:/.test(settings.file);
const remoteMode = settings.file && /^http[s]?:/.test(settings.file);
const type = settings.input ? 'string' : remoteMode ? 'remote' : 'local';
const context = settings.input || settings.file;
const req = getRequest(type !== 'remote');
if (type === 'remote') {
req.query({ out: settings.output });
req.query({ out: settings.output });
if (type === 'remote')
req.query({ doc: settings.file });
}
else {
req.query({ out: settings.output });
req.send((type === 'local') ? readFileSync(settings.file, 'utf8') : settings.input + '');
}
req.end(function (error, res) {
if (error) {
settings.callback(error);
}
else if (settings.output === 'json') {
else
req.send(type === 'local' ? readFileSync(String(settings.file), 'utf8') : settings.input + '');
const handleResponse = (error, res) => {
const getBody = () => {
res.body.context = context;
settings.callback(null, res.body);
}
else {
settings.callback(null, res.text);
}
});
return res.body;
};
const getContext = () => settings.output === 'json' ? getBody() : res.text;
return error ? settings.callback(error) : settings.callback(null, getContext());
};
req.end(handleResponse);
},
};
export { w3cHtmlValidator };
51 changes: 20 additions & 31 deletions dist/w3c-html-validator.umd.cjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//! W3C HTML Validator v0.5.0 ~ github.com/center-key/w3c-html-validator ~ MIT License
//! W3C HTML Validator v0.5.1 ~ github.com/center-key/w3c-html-validator ~ MIT License

var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Expand Down Expand Up @@ -39,55 +39,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
const superagent_proxy_1 = __importDefault(require("superagent-proxy"));
superagent_proxy_1.default(request);
const w3cHtmlValidator = {
version: '0.5.0',
w3cCheckUrl: 'https://validator.w3.org/nu/',
setW3cCheckUrl(newW3cCheckUrl) {
w3cHtmlValidator.w3cCheckUrl = newW3cCheckUrl;
},
version: '0.5.1',
validate(options) {
const defaults = {
checkUrl: 'https://validator.w3.org/nu/',
output: 'json',
doctype: null,
charset: null,
proxy: null,
callback: (response) => console.log(response),
};
const settings = { ...defaults, ...options };
const checkUrl = w3cHtmlValidator.w3cCheckUrl;
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const getRequest = (isLocal) => {
const req = isLocal ? request.default.post(checkUrl) : request.default.get(checkUrl);
const req = isLocal ? request.default.post(settings.checkUrl) :
request.default.get(settings.checkUrl);
if (settings.proxy)
req.proxy(settings.proxy);
req.set('User-Agent', 'w3c-html-validator');
req.set('Content-Type', 'text/html; encoding=utf-8');
return req;
};
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const remoteMode = /^http[s]?:/.test(settings.file);
const remoteMode = settings.file && /^http[s]?:/.test(settings.file);
const type = settings.input ? 'string' : remoteMode ? 'remote' : 'local';
const context = settings.input || settings.file;
const req = getRequest(type !== 'remote');
if (type === 'remote') {
req.query({ out: settings.output });
req.query({ out: settings.output });
if (type === 'remote')
req.query({ doc: settings.file });
}
else {
req.query({ out: settings.output });
req.send((type === 'local') ? fs_1.readFileSync(settings.file, 'utf8') : settings.input + '');
}
req.end(function (error, res) {
if (error) {
settings.callback(error);
}
else if (settings.output === 'json') {
else
req.send(type === 'local' ? fs_1.readFileSync(String(settings.file), 'utf8') : settings.input + '');
const handleResponse = (error, res) => {
const getBody = () => {
res.body.context = context;
settings.callback(null, res.body);
}
else {
settings.callback(null, res.text);
}
});
return res.body;
};
const getContext = () => settings.output === 'json' ? getBody() : res.text;
return error ? settings.callback(error) : settings.callback(null, getContext());
};
req.end(handleResponse);
},
};
exports.w3cHtmlValidator = w3cHtmlValidator;
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "w3c-html-validator",
"version": "0.5.0",
"version": "0.5.1",
"description": "A package for testing HTML files or URLs against the W3C validator (written in TypeScript)",
"license": "MIT",
"type": "module",
Expand Down
42 changes: 18 additions & 24 deletions w3c-html-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import withProxy from 'superagent-proxy';
withProxy(request);

export type ValidatorOptions = {
file: string,
input: string,
checkUrl: string,
file?: string,
input?: string,
checkUrl?: string,
output?: 'json' | 'html',
proxy?: string,
callback?: (response: unknown, info?: unknown) => void,
Expand All @@ -26,6 +26,8 @@ const w3cHtmlValidator = {
callback: (response: unknown) => console.log(response),
};
const settings = { ...defaults, ...options };
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const getRequest = (isLocal: boolean): request.SuperAgentRequest => {
const req = isLocal ? request.default.post(settings.checkUrl) :
request.default.get(settings.checkUrl);
Expand All @@ -35,32 +37,24 @@ const w3cHtmlValidator = {
req.set('Content-Type', 'text/html; encoding=utf-8');
return req;
};
if (!settings.input && !settings.file)
throw Error('No "input" or "file" specified.');
const remoteMode = /^http[s]?:/.test(settings.file);
const remoteMode = settings.file && /^http[s]?:/.test(settings.file);
const type = settings.input ? 'string' : remoteMode ? 'remote' : 'local';
const context = settings.input || settings.file;
const req = getRequest(type !== 'remote');
if (type === 'remote') {
req.query({ out: settings.output });
req.query({ out: settings.output });
if (type === 'remote')
req.query({ doc: settings.file });
}
else {
req.query({ out: settings.output });
req.send((type === 'local') ? readFileSync(settings.file, 'utf8') : settings.input + '');
}
req.end(function(error, res) {
if (error) {
settings.callback(error);
}
else if (settings.output === 'json') {
else
req.send(type === 'local' ? readFileSync(String(settings.file), 'utf8') : settings.input + '');
const handleResponse = (error: unknown, res: request.Response) => {
const getBody = () => {
res.body.context = context;
settings.callback(null, res.body);
}
else {
settings.callback(null, res.text);
}
});
return res.body;
};
const getContext = () => settings.output === 'json' ? getBody() : res.text;
return error ? settings.callback(error) : settings.callback(null, getContext());
};
req.end(handleResponse);
},

};
Expand Down

0 comments on commit 410f642

Please sign in to comment.