diff --git a/tools/challenge-parser/.npmignore b/tools/challenge-parser/.npmignore
deleted file mode 100644
index 14d50e1e8f..0000000000
--- a/tools/challenge-parser/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-__snapshots__
-fixtures
-*.test.js
\ No newline at end of file
diff --git a/tools/challenge-parser/__snapshots__/challengeSeed-to-data.test.js.snap b/tools/challenge-parser/__snapshots__/challengeSeed-to-data.test.js.snap
deleted file mode 100644
index d3a51ee16b..0000000000
--- a/tools/challenge-parser/__snapshots__/challengeSeed-to-data.test.js.snap
+++ /dev/null
@@ -1,24 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`challengeSeed-to-data plugin should have an output to match the snapshot 1`] = `
-Object {
- "files": Object {
- "indexjs": Object {
- "contents": "function testFunction(arg) {
- return arg;
-}
-
-testFunction('hello');
-",
- "editableRegionBoundaries": Array [],
- "ext": "js",
- "head": "console.log('before the test');
-",
- "key": "indexjs",
- "name": "index",
- "tail": "console.info('after the test');
-",
- },
- },
-}
-`;
diff --git a/tools/challenge-parser/__snapshots__/frontmatter-to-data.test.js.snap b/tools/challenge-parser/__snapshots__/frontmatter-to-data.test.js.snap
deleted file mode 100644
index 7a92697ab3..0000000000
--- a/tools/challenge-parser/__snapshots__/frontmatter-to-data.test.js.snap
+++ /dev/null
@@ -1,10 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`frontmatter-to-data plugin should have an output to match the snapshot 1`] = `
-Object {
- "challengeType": 0,
- "id": "bd7123c8c441eddfaeb5bdef",
- "title": "Say Hello to HTML Elements",
- "videoUrl": "https://scrimba.com/p/pVMPUv/cE8Gpt2",
-}
-`;
diff --git a/tools/challenge-parser/__snapshots__/solution-to-data.test.js.snap b/tools/challenge-parser/__snapshots__/solution-to-data.test.js.snap
deleted file mode 100644
index 941da1d057..0000000000
--- a/tools/challenge-parser/__snapshots__/solution-to-data.test.js.snap
+++ /dev/null
@@ -1,23 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`challengeSeed-to-data plugin should have an output to match the snapshot 1`] = `
-Object {
- "solutions": Array [
- Object {
- "indexjs": Object {
- "contents": "function testFunction(arg) {
- return arg;
-}
-
-testFunction('hello');
-",
- "ext": "js",
- "head": "",
- "key": "indexjs",
- "name": "index",
- "tail": "",
- },
- },
- ],
-}
-`;
diff --git a/tools/challenge-parser/__snapshots__/tests-to-data.test.js.snap b/tools/challenge-parser/__snapshots__/tests-to-data.test.js.snap
deleted file mode 100644
index 4ddbb5c4d9..0000000000
--- a/tools/challenge-parser/__snapshots__/tests-to-data.test.js.snap
+++ /dev/null
@@ -1,28 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`tests-to-data plugin should have an output to match the snapshot 1`] = `
-Object {
- "tests": Array [
- Object {
- "testString": "assert.isTrue((/hello(\\\\s)+world/gi).test($('h1').text()), 'Your h1
element should have the text \\"Hello World\\".');",
- "text": "
Your h1
element should have the text \\"Hello World\\".
",
- },
- ],
-}
-`;
-
-exports[`tests-to-data plugin should match the video snapshot 1`] = `
-Object {
- "question": Object {
- "answers": Array [
- "inline code
",
- "some italics
",
- " code in
code tags
",
- ],
- "solution": 3,
- "text": "Question line one
- var x = 'y';
-
",
- },
-}
-`;
diff --git a/tools/challenge-parser/__snapshots__/text-to-data.test.js.snap b/tools/challenge-parser/__snapshots__/text-to-data.test.js.snap
deleted file mode 100644
index 0fd00e173c..0000000000
--- a/tools/challenge-parser/__snapshots__/text-to-data.test.js.snap
+++ /dev/null
@@ -1,17 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`text-to-data should have an output to match the snapshot 1`] = `
-Object {
- "description": "
-Welcome to freeCodeCamp's HTML coding challenges. These will walk you through web development step-by-step.
-Lorem Ipsum with some code
-
-Some text in a blockquote
-Some text in a blockquote, with code
-
-<p>We aim to preserve this</p>
-
-",
- "instructions": "",
-}
-`;
diff --git a/tools/challenge-parser/challengeSeed-to-data.js b/tools/challenge-parser/challengeSeed-to-data.js
deleted file mode 100644
index c7170131dc..0000000000
--- a/tools/challenge-parser/challengeSeed-to-data.js
+++ /dev/null
@@ -1,124 +0,0 @@
-const visit = require('unist-util-visit');
-const { selectAll, select } = require('hast-util-select');
-
-const { sectionFilter } = require('./utils');
-
-const seedRE = /(.+)-seed$/;
-const headRE = /(.+)-setup$/;
-const tailRE = /(.+)-teardown$/;
-
-const editableRegionMarker = '--fcc-editable-region--';
-
-function defaultFile(lang) {
- return {
- key: `index${lang}`,
- ext: lang,
- name: 'index',
- contents: '',
- head: '',
- tail: ''
- };
-}
-function createCodeGetter(codeKey, regEx, seeds) {
- return container => {
- const {
- properties: { id }
- } = container;
- const lang = id.match(regEx)[1];
- const key = `index${lang}`;
- const code = select('code', container).children[0].value;
- if (key in seeds) {
- seeds[key] = {
- ...seeds[key],
- [codeKey]: code
- };
- } else {
- seeds[key] = {
- ...defaultFile(lang),
- [codeKey]: code
- };
- }
- };
-}
-
-// TODO: any reason to worry about CRLF?
-
-function findRegionMarkers(file) {
- const lines = file.contents.split('\n');
- const editableLines = lines
- .map((line, id) => (line.trim() === editableRegionMarker ? id : -1))
- .filter(id => id >= 0);
-
- if (editableLines.length > 2) {
- throw Error('Editable region has too many markers' + editableLines);
- }
-
- if (editableLines.length === 0) {
- return null;
- } else if (editableLines.length === 1) {
- throw Error(`Editable region not closed`);
- } else {
- return editableLines;
- }
-}
-
-function removeLines(contents, toRemove) {
- const lines = contents.split('\n');
- return lines.filter((_, id) => !toRemove.includes(id)).join('\n');
-}
-
-function createPlugin() {
- return function transformer(tree, file) {
- function visitor(node) {
- if (sectionFilter(node, 'challengeSeed')) {
- let seeds = {};
- const codeDivs = selectAll('div', node);
- const seedContainers = codeDivs.filter(({ properties: { id } }) =>
- seedRE.test(id)
- );
- seedContainers.forEach(createCodeGetter('contents', seedRE, seeds));
-
- const headContainers = codeDivs.filter(({ properties: { id } }) =>
- headRE.test(id)
- );
- headContainers.forEach(createCodeGetter('head', headRE, seeds));
-
- const tailContainers = codeDivs.filter(({ properties: { id } }) =>
- tailRE.test(id)
- );
- tailContainers.forEach(createCodeGetter('tail', tailRE, seeds));
-
- file.data = {
- ...file.data,
- files: seeds
- };
-
- // TODO: make this readable.
-
- Object.keys(seeds).forEach(key => {
- const fileData = seeds[key];
- const editRegionMarkers = findRegionMarkers(fileData);
- if (editRegionMarkers) {
- fileData.contents = removeLines(
- fileData.contents,
- editRegionMarkers
- );
-
- if (editRegionMarkers[1] <= editRegionMarkers[0]) {
- throw Error('Editable region must be non zero');
- }
- fileData.editableRegionBoundaries = editRegionMarkers;
- } else {
- fileData.editableRegionBoundaries = [];
- }
- });
- // TODO: TESTS!
- }
- }
- visit(tree, 'element', visitor);
- };
-}
-
-exports.challengeSeedToData = createPlugin;
-exports.createCodeGetter = createCodeGetter;
-exports.defaultFile = defaultFile;
diff --git a/tools/challenge-parser/challengeSeed-to-data.test.js b/tools/challenge-parser/challengeSeed-to-data.test.js
deleted file mode 100644
index 2cc99df3e0..0000000000
--- a/tools/challenge-parser/challengeSeed-to-data.test.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/* global describe it expect beforeEach */
-const isArray = require('lodash/isArray');
-
-const mockAST = require('./fixtures/challenge-html-ast.json');
-const { challengeSeedToData } = require('./challengeSeed-to-data');
-const { isObject } = require('lodash');
-
-describe('challengeSeed-to-data plugin', () => {
- const plugin = challengeSeedToData();
- let file = { data: {} };
-
- beforeEach(() => {
- file = { data: {} };
- });
-
- it('returns a function', () => {
- expect(typeof plugin).toEqual('function');
- });
-
- it('adds a `files` property to `file.data`', () => {
- plugin(mockAST, file);
- expect('files' in file.data).toBe(true);
- });
-
- it('ensures that the `files` property is an object', () => {
- plugin(mockAST, file);
- expect(isObject(file.data.files)).toBe(true);
- });
-
- it('adds test objects to the files array following a schema', () => {
- expect.assertions(15);
- plugin(mockAST, file);
- const {
- data: { files }
- } = file;
- const testObject = files.indexjs;
- expect(Object.keys(testObject).length).toEqual(7);
- expect(testObject).toHaveProperty('key');
- expect(typeof testObject['key']).toBe('string');
- expect(testObject).toHaveProperty('ext');
- expect(typeof testObject['ext']).toBe('string');
- expect(testObject).toHaveProperty('name');
- expect(typeof testObject['name']).toBe('string');
- expect(testObject).toHaveProperty('contents');
- expect(typeof testObject['contents']).toBe('string');
- expect(testObject).toHaveProperty('head');
- expect(typeof testObject['head']).toBe('string');
- expect(testObject).toHaveProperty('tail');
- expect(typeof testObject['tail']).toBe('string');
- expect(testObject).toHaveProperty('editableRegionBoundaries');
- expect(isArray(testObject['editableRegionBoundaries'])).toBe(true);
- });
-
- it('should have an output to match the snapshot', () => {
- plugin(mockAST, file);
- expect(file.data).toMatchSnapshot();
- });
-});
diff --git a/tools/challenge-parser/fixtures/adjacent-tags-ast.json b/tools/challenge-parser/fixtures/adjacent-tags-ast.json
deleted file mode 100644
index 332bbf93b4..0000000000
--- a/tools/challenge-parser/fixtures/adjacent-tags-ast.json
+++ /dev/null
@@ -1,284 +0,0 @@
-{
- "type": "root",
- "children": [{
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "Description",
- "position": {
- "start": {
- "line": 1,
- "column": 4,
- "offset": 3
- },
- "end": {
- "line": 1,
- "column": 15,
- "offset": 14
- }
- }
- }],
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 1,
- "column": 15,
- "offset": 14
- }
- }
- }, {
- "type": "text",
- "value": "\n"
- }, {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "description"
- },
- "children": [{
- "type": "text",
- "value": "\n",
- "position": {
- "start": {
- "line": 3,
- "column": 27,
- "offset": 42
- },
- "end": {
- "line": 4,
- "column": 1,
- "offset": 43
- }
- }
- }, {
- "type": "element",
- "tagName": "code",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "code",
- "position": {
- "start": {
- "line": 4,
- "column": 7,
- "offset": 49
- },
- "end": {
- "line": 4,
- "column": 11,
- "offset": 53
- }
- }
- }],
- "position": {
- "start": {
- "line": 4,
- "column": 1,
- "offset": 43
- },
- "end": {
- "line": 4,
- "column": 18,
- "offset": 60
- }
- }
- }, {
- "type": "text",
- "value": " ",
- "position": {
- "start": {
- "line": 4,
- "column": 18,
- "offset": 60
- },
- "end": {
- "line": 4,
- "column": 19,
- "offset": 61
- }
- }
- }, {
- "type": "element",
- "tagName": "tag",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "with more after a space",
- "position": {
- "start": {
- "line": 4,
- "column": 24,
- "offset": 66
- },
- "end": {
- "line": 4,
- "column": 47,
- "offset": 89
- }
- }
- }],
- "position": {
- "start": {
- "line": 4,
- "column": 19,
- "offset": 61
- },
- "end": {
- "line": 4,
- "column": 53,
- "offset": 95
- }
- }
- }, {
- "type": "text",
- "value": "\n"
- }, {
- "type": "element",
- "tagName": "p",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "after many new lines another pair of ",
- "position": {
- "start": {
- "line": 9,
- "column": 1,
- "offset": 100
- },
- "end": {
- "line": 9,
- "column": 38,
- "offset": 137
- }
- }
- }, {
- "type": "element",
- "tagName": "strong",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "elements",
- "position": {
- "start": {
- "line": 9,
- "column": 46,
- "offset": 145
- },
- "end": {
- "line": 9,
- "column": 54,
- "offset": 153
- }
- }
- }],
- "position": {
- "start": {
- "line": 9,
- "column": 38,
- "offset": 137
- },
- "end": {
- "line": 9,
- "column": 63,
- "offset": 162
- }
- }
- }, {
- "type": "text",
- "value": " ",
- "position": {
- "start": {
- "line": 9,
- "column": 63,
- "offset": 162
- },
- "end": {
- "line": 9,
- "column": 64,
- "offset": 163
- }
- }
- }, {
- "type": "element",
- "tagName": "em",
- "properties": {},
- "children": [{
- "type": "text",
- "value": "with a space",
- "position": {
- "start": {
- "line": 9,
- "column": 68,
- "offset": 167
- },
- "end": {
- "line": 9,
- "column": 80,
- "offset": 179
- }
- }
- }],
- "position": {
- "start": {
- "line": 9,
- "column": 64,
- "offset": 163
- },
- "end": {
- "line": 9,
- "column": 85,
- "offset": 184
- }
- }
- }],
- "position": {
- "start": {
- "line": 9,
- "column": 1,
- "offset": 100
- },
- "end": {
- "line": 9,
- "column": 85,
- "offset": 184
- }
- }
- }, {
- "type": "text",
- "value": "\n"
- }],
- "position": {
- "start": {
- "line": 3,
- "column": 1,
- "offset": 16
- },
- "end": {
- "line": 10,
- "column": 11,
- "offset": 195
- }
- }
- }],
- "data": {
- "quirksMode": false
- },
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 1,
- "column": 1,
- "offset": 0
- }
- }
-}
diff --git a/tools/challenge-parser/fixtures/challenge-html-ast.json b/tools/challenge-parser/fixtures/challenge-html-ast.json
deleted file mode 100644
index b11e907cc5..0000000000
--- a/tools/challenge-parser/fixtures/challenge-html-ast.json
+++ /dev/null
@@ -1,1058 +0,0 @@
-{
- "type": "root",
- "children": [
- {
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Description",
- "position": {
- "start": {
- "line": 8,
- "column": 4,
- "offset": 139
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 150
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 8,
- "column": 1,
- "offset": 136
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 150
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "description"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "p",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value":
- "Welcome to freeCodeCamp's HTML coding challenges. These will walk you through web development step-by-step.",
- "position": {
- "start": {
- "line": 11,
- "column": 1,
- "offset": 179
- },
- "end": {
- "line": 11,
- "column": 108,
- "offset": 286
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 11,
- "column": 1,
- "offset": 179
- },
- "end": {
- "line": 11,
- "column": 108,
- "offset": 286
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "p",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Lorem Ipsum with ",
- "position": {
- "start": {
- "line": 13,
- "column": 1,
- "offset": 288
- },
- "end": {
- "line": 13,
- "column": 18,
- "offset": 305
- }
- }
- },
- {
- "type": "element",
- "tagName": "code",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "some code"
- }
- ],
- "position": {
- "start": {
- "line": 13,
- "column": 18,
- "offset": 305
- },
- "end": {
- "line": 13,
- "column": 29,
- "offset": 316
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 13,
- "column": 1,
- "offset": 288
- },
- "end": {
- "line": 13,
- "column": 29,
- "offset": 316
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "blockquote",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "p",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Some text in a blockquote",
- "position": {
- "start": {
- "line": 15,
- "column": 3,
- "offset": 320
- },
- "end": {
- "line": 15,
- "column": 28,
- "offset": 345
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 15,
- "column": 3,
- "offset": 320
- },
- "end": {
- "line": 15,
- "column": 28,
- "offset": 345
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "p",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Some text in a blockquote, with ",
- "position": {
- "start": {
- "line": 17,
- "column": 3,
- "offset": 349
- },
- "end": {
- "line": 17,
- "column": 35,
- "offset": 381
- }
- }
- },
- {
- "type": "element",
- "tagName": "code",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "code"
- }
- ],
- "position": {
- "start": {
- "line": 17,
- "column": 35,
- "offset": 381
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 17,
- "column": 3,
- "offset": 349
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 15,
- "column": 1,
- "offset": 318
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-html"]
- },
- "children": [
- {
- "type": "text",
- "value": "We aim to preserve this
\n"
- }
- ],
- "position": {
- "start": {
- "line": 19,
- "column": 1,
- "offset": 389
- },
- "end": {
- "line": 21,
- "column": 4,
- "offset": 431
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 19,
- "column": 1,
- "offset": 389
- },
- "end": {
- "line": 21,
- "column": 4,
- "offset": 431
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 9,
- "column": 1,
- "offset": 151
- },
- "end": {
- "line": 22,
- "column": 11,
- "offset": 442
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Instructions",
- "position": {
- "start": {
- "line": 24,
- "column": 4,
- "offset": 447
- },
- "end": {
- "line": 24,
- "column": 16,
- "offset": 459
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 24,
- "column": 1,
- "offset": 444
- },
- "end": {
- "line": 24,
- "column": 16,
- "offset": 459
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "instructions"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 25,
- "column": 1,
- "offset": 460
- },
- "end": {
- "line": 29,
- "column": 11,
- "offset": 590
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Tests",
- "position": {
- "start": {
- "line": 31,
- "column": 4,
- "offset": 595
- },
- "end": {
- "line": 31,
- "column": 9,
- "offset": 600
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 31,
- "column": 1,
- "offset": 592
- },
- "end": {
- "line": 31,
- "column": 9,
- "offset": 600
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "tests"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-yml"]
- },
- "children": [
- {
- "type": "text",
- "value":
- "tests:\n - text: Your h1
element should have the text \"Hello World\".\n testString: assert.isTrue((/hello(\\s)+world/gi).test($('h1').text()), 'Your h1
element should have the text \"Hello World\".');\n"
- }
- ],
- "position": {
- "start": {
- "line": 34,
- "column": 1,
- "offset": 623
- },
- "end": {
- "line": 38,
- "column": 4,
- "offset": 858
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 34,
- "column": 1,
- "offset": 623
- },
- "end": {
- "line": 38,
- "column": 4,
- "offset": 858
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 32,
- "column": 1,
- "offset": 601
- },
- "end": {
- "line": 40,
- "column": 11,
- "offset": 870
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Challenge Seed",
- "position": {
- "start": {
- "line": 42,
- "column": 4,
- "offset": 875
- },
- "end": {
- "line": 42,
- "column": 18,
- "offset": 889
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 42,
- "column": 1,
- "offset": 872
- },
- "end": {
- "line": 42,
- "column": 18,
- "offset": 889
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "challengeSeed"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "div",
- "properties": {
- "id": "js-seed"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-js"]
- },
- "children": [
- {
- "type": "text",
- "value":
- "function testFunction(arg) {\n return arg;\n}\n\ntestFunction('hello');\n"
- }
- ],
- "position": {
- "start": {
- "line": 47,
- "column": 1,
- "offset": 940
- },
- "end": {
- "line": 53,
- "column": 4,
- "offset": 1018
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 47,
- "column": 1,
- "offset": 940
- },
- "end": {
- "line": 53,
- "column": 4,
- "offset": 1018
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 45,
- "column": 1,
- "offset": 920
- },
- "end": {
- "line": 55,
- "column": 7,
- "offset": 1026
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h3",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Before Test",
- "position": {
- "start": {
- "line": 57,
- "column": 5,
- "offset": 1032
- },
- "end": {
- "line": 57,
- "column": 16,
- "offset": 1043
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 57,
- "column": 1,
- "offset": 1028
- },
- "end": {
- "line": 57,
- "column": 16,
- "offset": 1043
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "div",
- "properties": {
- "id": "js-setup"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-js"]
- },
- "children": [
- {
- "type": "text",
- "value": "console.log('before the test');\n"
- }
- ],
- "position": {
- "start": {
- "line": 60,
- "column": 1,
- "offset": 1065
- },
- "end": {
- "line": 62,
- "column": 4,
- "offset": 1106
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 60,
- "column": 1,
- "offset": 1065
- },
- "end": {
- "line": 62,
- "column": 4,
- "offset": 1106
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 58,
- "column": 1,
- "offset": 1044
- },
- "end": {
- "line": 64,
- "column": 7,
- "offset": 1114
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h3",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "After Test",
- "position": {
- "start": {
- "line": 66,
- "column": 5,
- "offset": 1120
- },
- "end": {
- "line": 66,
- "column": 15,
- "offset": 1130
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 66,
- "column": 1,
- "offset": 1116
- },
- "end": {
- "line": 66,
- "column": 15,
- "offset": 1130
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "div",
- "properties": {
- "id": "js-teardown"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-js"]
- },
- "children": [
- {
- "type": "text",
- "value": "console.info('after the test');\n"
- }
- ],
- "position": {
- "start": {
- "line": 69,
- "column": 1,
- "offset": 1155
- },
- "end": {
- "line": 71,
- "column": 4,
- "offset": 1196
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 69,
- "column": 1,
- "offset": 1155
- },
- "end": {
- "line": 71,
- "column": 4,
- "offset": 1196
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 67,
- "column": 1,
- "offset": 1131
- },
- "end": {
- "line": 73,
- "column": 7,
- "offset": 1204
- }
- }
- },
- {
- "type": "text",
- "value": "\n",
- "position": {
- "start": {
- "line": 73,
- "column": 7,
- "offset": 1204
- },
- "end": {
- "line": 74,
- "column": 1,
- "offset": 1205
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 43,
- "column": 1,
- "offset": 890
- },
- "end": {
- "line": 74,
- "column": 11,
- "offset": 1215
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "h2",
- "properties": {},
- "children": [
- {
- "type": "text",
- "value": "Solution",
- "position": {
- "start": {
- "line": 76,
- "column": 4,
- "offset": 1220
- },
- "end": {
- "line": 76,
- "column": 12,
- "offset": 1228
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 76,
- "column": 1,
- "offset": 1217
- },
- "end": {
- "line": 76,
- "column": 12,
- "offset": 1228
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "section",
- "properties": {
- "id": "solution"
- },
- "children": [
- {
- "type": "text",
- "value": "\n"
- },
- {
- "type": "element",
- "tagName": "pre",
- "properties": {},
- "children": [
- {
- "type": "element",
- "tagName": "code",
- "properties": {
- "className": ["language-js"]
- },
- "children": [
- {
- "type": "text",
- "value":
- "function testFunction(arg) {\n return arg;\n}\n\ntestFunction('hello');\n"
- }
- ],
- "position": {
- "start": {
- "line": 79,
- "column": 1,
- "offset": 1254
- },
- "end": {
- "line": 85,
- "column": 4,
- "offset": 1332
- }
- }
- }
- ],
- "position": {
- "start": {
- "line": 79,
- "column": 1,
- "offset": 1254
- },
- "end": {
- "line": 85,
- "column": 4,
- "offset": 1332
- }
- }
- },
- {
- "type": "text",
- "value": "\n"
- }
- ],
- "position": {
- "start": {
- "line": 77,
- "column": 1,
- "offset": 1229
- },
- "end": {
- "line": 86,
- "column": 11,
- "offset": 1343
- }
- }
- }
- ],
- "data": {
- "quirksMode": false
- },
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 86,
- "column": 11,
- "offset": 1343
- }
- }
-}
diff --git a/tools/challenge-parser/fixtures/challenge-md-ast.json b/tools/challenge-parser/fixtures/challenge-md-ast.json
deleted file mode 100644
index 6c35954616..0000000000
--- a/tools/challenge-parser/fixtures/challenge-md-ast.json
+++ /dev/null
@@ -1,915 +0,0 @@
-{
- "type": "root",
- "children": [
- {
- "type": "yaml",
- "value":
- "id: bd7123c8c441eddfaeb5bdef\ntitle: Say Hello to HTML Elements\nchallengeType: 0\nvideoUrl: https://scrimba.com/p/pVMPUv/cE8Gpt2",
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 6,
- "column": 4,
- "offset": 134
- },
- "indent": [1, 1, 1, 1, 1]
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Description",
- "position": {
- "start": {
- "line": 8,
- "column": 4,
- "offset": 139
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 150
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 8,
- "column": 1,
- "offset": 136
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 150
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 9,
- "column": 1,
- "offset": 151
- },
- "end": {
- "line": 9,
- "column": 27,
- "offset": 177
- },
- "indent": []
- }
- },
- {
- "type": "paragraph",
- "children": [
- {
- "type": "text",
- "value":
- "Welcome to freeCodeCamp's HTML coding challenges. These will walk you through web development step-by-step.",
- "position": {
- "start": {
- "line": 11,
- "column": 1,
- "offset": 179
- },
- "end": {
- "line": 11,
- "column": 108,
- "offset": 286
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 11,
- "column": 1,
- "offset": 179
- },
- "end": {
- "line": 11,
- "column": 108,
- "offset": 286
- },
- "indent": []
- }
- },
- {
- "type": "paragraph",
- "children": [
- {
- "type": "text",
- "value": "Lorem Ipsum with ",
- "position": {
- "start": {
- "line": 13,
- "column": 1,
- "offset": 288
- },
- "end": {
- "line": 13,
- "column": 18,
- "offset": 305
- },
- "indent": []
- }
- },
- {
- "type": "inlineCode",
- "value": "some code",
- "position": {
- "start": {
- "line": 13,
- "column": 18,
- "offset": 305
- },
- "end": {
- "line": 13,
- "column": 29,
- "offset": 316
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 13,
- "column": 1,
- "offset": 288
- },
- "end": {
- "line": 13,
- "column": 29,
- "offset": 316
- },
- "indent": []
- }
- },
- {
- "type": "blockquote",
- "children": [
- {
- "type": "paragraph",
- "children": [
- {
- "type": "text",
- "value": "Some text in a blockquote",
- "position": {
- "start": {
- "line": 15,
- "column": 3,
- "offset": 320
- },
- "end": {
- "line": 15,
- "column": 28,
- "offset": 345
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 15,
- "column": 3,
- "offset": 320
- },
- "end": {
- "line": 15,
- "column": 28,
- "offset": 345
- },
- "indent": []
- }
- },
- {
- "type": "paragraph",
- "children": [
- {
- "type": "text",
- "value": "Some text in a blockquote, with ",
- "position": {
- "start": {
- "line": 17,
- "column": 3,
- "offset": 349
- },
- "end": {
- "line": 17,
- "column": 35,
- "offset": 381
- },
- "indent": []
- }
- },
- {
- "type": "inlineCode",
- "value": "code",
- "position": {
- "start": {
- "line": 17,
- "column": 35,
- "offset": 381
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 17,
- "column": 3,
- "offset": 349
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 15,
- "column": 1,
- "offset": 318
- },
- "end": {
- "line": 17,
- "column": 41,
- "offset": 387
- },
- "indent": [1, 1]
- }
- },
- {
- "type": "code",
- "lang": "html",
- "value": "We aim to preserve this
",
- "position": {
- "start": {
- "line": 19,
- "column": 1,
- "offset": 389
- },
- "end": {
- "line": 21,
- "column": 4,
- "offset": 431
- },
- "indent": [1, 1]
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 22,
- "column": 1,
- "offset": 432
- },
- "end": {
- "line": 22,
- "column": 11,
- "offset": 442
- },
- "indent": []
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Instructions",
- "position": {
- "start": {
- "line": 24,
- "column": 4,
- "offset": 447
- },
- "end": {
- "line": 24,
- "column": 16,
- "offset": 459
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 24,
- "column": 1,
- "offset": 444
- },
- "end": {
- "line": 24,
- "column": 16,
- "offset": 459
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 25,
- "column": 1,
- "offset": 460
- },
- "end": {
- "line": 25,
- "column": 28,
- "offset": 487
- },
- "indent": []
- }
- },
- {
- "type": "paragraph",
- "children": [
- {
- "type": "text",
- "value": "To pass the test on this challenge, change your ",
- "position": {
- "start": {
- "line": 27,
- "column": 1,
- "offset": 489
- },
- "end": {
- "line": 27,
- "column": 49,
- "offset": 537
- },
- "indent": []
- }
- },
- {
- "type": "inlineCode",
- "value": "h1",
- "position": {
- "start": {
- "line": 27,
- "column": 49,
- "offset": 537
- },
- "end": {
- "line": 27,
- "column": 53,
- "offset": 541
- },
- "indent": []
- }
- },
- {
- "type": "text",
- "value": " element's text to say \"Hello World\".",
- "position": {
- "start": {
- "line": 27,
- "column": 53,
- "offset": 541
- },
- "end": {
- "line": 27,
- "column": 90,
- "offset": 578
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 27,
- "column": 1,
- "offset": 489
- },
- "end": {
- "line": 27,
- "column": 90,
- "offset": 578
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 29,
- "column": 1,
- "offset": 580
- },
- "end": {
- "line": 29,
- "column": 11,
- "offset": 590
- },
- "indent": []
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Tests",
- "position": {
- "start": {
- "line": 31,
- "column": 4,
- "offset": 595
- },
- "end": {
- "line": 31,
- "column": 9,
- "offset": 600
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 31,
- "column": 1,
- "offset": 592
- },
- "end": {
- "line": 31,
- "column": 9,
- "offset": 600
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 32,
- "column": 1,
- "offset": 601
- },
- "end": {
- "line": 32,
- "column": 21,
- "offset": 621
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "yml",
- "value":
- "tests:\n - text: Your h1
element should have the text \"Hello World\".\n testString: assert.isTrue((/hello(\\s)+world/gi).test($('h1').text()), 'Your h1
element should have the text \"Hello World\".');",
- "position": {
- "start": {
- "line": 34,
- "column": 1,
- "offset": 623
- },
- "end": {
- "line": 38,
- "column": 4,
- "offset": 858
- },
- "indent": [1, 1, 1, 1]
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 40,
- "column": 1,
- "offset": 860
- },
- "end": {
- "line": 40,
- "column": 11,
- "offset": 870
- },
- "indent": []
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Challenge Seed",
- "position": {
- "start": {
- "line": 42,
- "column": 4,
- "offset": 875
- },
- "end": {
- "line": 42,
- "column": 18,
- "offset": 889
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 42,
- "column": 1,
- "offset": 872
- },
- "end": {
- "line": 42,
- "column": 18,
- "offset": 889
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 43,
- "column": 1,
- "offset": 890
- },
- "end": {
- "line": 43,
- "column": 29,
- "offset": 918
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 45,
- "column": 1,
- "offset": 920
- },
- "end": {
- "line": 45,
- "column": 19,
- "offset": 938
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "js",
- "value":
- "function testFunction(arg) {\n return arg;\n}\n\ntestFunction('hello');",
- "position": {
- "start": {
- "line": 47,
- "column": 1,
- "offset": 940
- },
- "end": {
- "line": 53,
- "column": 4,
- "offset": 1018
- },
- "indent": [1, 1, 1, 1, 1, 1]
- }
- },
- {
- "type": "html",
- "value": "
",
- "position": {
- "start": {
- "line": 55,
- "column": 1,
- "offset": 1020
- },
- "end": {
- "line": 55,
- "column": 7,
- "offset": 1026
- },
- "indent": []
- }
- },
- {
- "type": "heading",
- "depth": 3,
- "children": [
- {
- "type": "text",
- "value": "Before Test",
- "position": {
- "start": {
- "line": 57,
- "column": 5,
- "offset": 1032
- },
- "end": {
- "line": 57,
- "column": 16,
- "offset": 1043
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 57,
- "column": 1,
- "offset": 1028
- },
- "end": {
- "line": 57,
- "column": 16,
- "offset": 1043
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 58,
- "column": 1,
- "offset": 1044
- },
- "end": {
- "line": 58,
- "column": 20,
- "offset": 1063
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "js",
- "value": "console.log('before the test');",
- "position": {
- "start": {
- "line": 60,
- "column": 1,
- "offset": 1065
- },
- "end": {
- "line": 62,
- "column": 4,
- "offset": 1106
- },
- "indent": [1, 1]
- }
- },
- {
- "type": "html",
- "value": "
",
- "position": {
- "start": {
- "line": 64,
- "column": 1,
- "offset": 1108
- },
- "end": {
- "line": 64,
- "column": 7,
- "offset": 1114
- },
- "indent": []
- }
- },
- {
- "type": "heading",
- "depth": 3,
- "children": [
- {
- "type": "text",
- "value": "After Test",
- "position": {
- "start": {
- "line": 66,
- "column": 5,
- "offset": 1120
- },
- "end": {
- "line": 66,
- "column": 15,
- "offset": 1130
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 66,
- "column": 1,
- "offset": 1116
- },
- "end": {
- "line": 66,
- "column": 15,
- "offset": 1130
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 67,
- "column": 1,
- "offset": 1131
- },
- "end": {
- "line": 67,
- "column": 23,
- "offset": 1153
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "js",
- "value": "console.info('after the test');",
- "position": {
- "start": {
- "line": 69,
- "column": 1,
- "offset": 1155
- },
- "end": {
- "line": 71,
- "column": 4,
- "offset": 1196
- },
- "indent": [1, 1]
- }
- },
- {
- "type": "html",
- "value": "
\n",
- "position": {
- "start": {
- "line": 73,
- "column": 1,
- "offset": 1198
- },
- "end": {
- "line": 74,
- "column": 11,
- "offset": 1215
- },
- "indent": [1]
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Solution",
- "position": {
- "start": {
- "line": 76,
- "column": 4,
- "offset": 1220
- },
- "end": {
- "line": 76,
- "column": 12,
- "offset": 1228
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 76,
- "column": 1,
- "offset": 1217
- },
- "end": {
- "line": 76,
- "column": 12,
- "offset": 1228
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 77,
- "column": 1,
- "offset": 1229
- },
- "end": {
- "line": 77,
- "column": 24,
- "offset": 1252
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "js",
- "value":
- "function testFunction(arg) {\n return arg;\n}\n\ntestFunction('hello');",
- "position": {
- "start": {
- "line": 79,
- "column": 1,
- "offset": 1254
- },
- "end": {
- "line": 85,
- "column": 4,
- "offset": 1332
- },
- "indent": [1, 1, 1, 1, 1, 1]
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 86,
- "column": 1,
- "offset": 1333
- },
- "end": {
- "line": 86,
- "column": 11,
- "offset": 1343
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 86,
- "column": 11,
- "offset": 1343
- }
- }
-}
diff --git a/tools/challenge-parser/fixtures/video-challenge-md-ast.json b/tools/challenge-parser/fixtures/video-challenge-md-ast.json
deleted file mode 100644
index 9161b038d3..0000000000
--- a/tools/challenge-parser/fixtures/video-challenge-md-ast.json
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "type": "root",
- "children": [
- {
- "type": "yaml",
- "value": "id: 5e9a093a74c4063ca6f7c151\ntitle: Jupyter Notebooks Importing and Exporting Data\nchallengeType: 11\nvideoId: k1msxD3JIxE",
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 6,
- "column": 4,
- "offset": 129
- },
- "indent": [
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Description",
- "position": {
- "start": {
- "line": 8,
- "column": 4,
- "offset": 134
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 145
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 8,
- "column": 1,
- "offset": 131
- },
- "end": {
- "line": 8,
- "column": 15,
- "offset": 145
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 9,
- "column": 1,
- "offset": 146
- },
- "end": {
- "line": 10,
- "column": 11,
- "offset": 183
- },
- "indent": [
- 1
- ]
- }
- },
- {
- "type": "heading",
- "depth": 2,
- "children": [
- {
- "type": "text",
- "value": "Tests",
- "position": {
- "start": {
- "line": 12,
- "column": 4,
- "offset": 188
- },
- "end": {
- "line": 12,
- "column": 9,
- "offset": 193
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 12,
- "column": 1,
- "offset": 185
- },
- "end": {
- "line": 12,
- "column": 9,
- "offset": 193
- },
- "indent": []
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 13,
- "column": 1,
- "offset": 194
- },
- "end": {
- "line": 13,
- "column": 21,
- "offset": 214
- },
- "indent": []
- }
- },
- {
- "type": "code",
- "lang": "yml",
- "value": "question:\n text: |\n Question line one\n ```js\n var x = 'y';\n ```\n\n answers:\n - inline `code`\n - some *italics*\n - code in
code tags\n solution: 3",
- "position": {
- "start": {
- "line": 15,
- "column": 1,
- "offset": 216
- },
- "end": {
- "line": 28,
- "column": 4,
- "offset": 411
- },
- "indent": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- }
- },
- {
- "type": "html",
- "value": "",
- "position": {
- "start": {
- "line": 30,
- "column": 1,
- "offset": 413
- },
- "end": {
- "line": 30,
- "column": 11,
- "offset": 423
- },
- "indent": []
- }
- }
- ],
- "position": {
- "start": {
- "line": 1,
- "column": 1,
- "offset": 0
- },
- "end": {
- "line": 32,
- "column": 1,
- "offset": 425
- }
- }
-}
diff --git a/tools/challenge-parser/frontmatter-to-data.js b/tools/challenge-parser/frontmatter-to-data.js
deleted file mode 100644
index 5a23cc12a0..0000000000
--- a/tools/challenge-parser/frontmatter-to-data.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const visit = require('unist-util-visit');
-const YAML = require('js-yaml');
-
-function plugin() {
- return transformer;
-
- function transformer(tree, file) {
- visit(tree, 'yaml', visitor);
-
- function visitor(node) {
- const frontmatter = YAML.load(node.value);
-
- file.data = { ...file.data, ...frontmatter };
- }
- }
-}
-
-module.exports = plugin;
diff --git a/tools/challenge-parser/frontmatter-to-data.test.js b/tools/challenge-parser/frontmatter-to-data.test.js
deleted file mode 100644
index aedd072a3a..0000000000
--- a/tools/challenge-parser/frontmatter-to-data.test.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* global describe it expect beforeEach */
-const { isObject } = require('lodash');
-
-const mockAST = require('./fixtures/challenge-md-ast.json');
-const frontmatterToData = require('./frontmatter-to-data');
-
-describe('frontmatter-to-data plugin', () => {
- const plugin = frontmatterToData();
- let file = { data: {} };
- beforeEach(() => {
- file = { data: {} };
- });
-
- it('should return a plugin which is a function', () => {
- expect(typeof plugin).toEqual('function');
- });
-
- it('should maintain an object for the `file.data` property', () => {
- plugin(mockAST, file);
- expect(isObject(file.data)).toBe(true);
- });
-
- it('should add all keys from frontmatter to the `file.data` property', () => {
- const expectedKeys = ['id', 'title', 'challengeType', 'videoUrl'];
- plugin(mockAST, file);
- const actualKeys = Object.keys(file.data);
- expect(actualKeys).toEqual(expectedKeys);
- });
-
- it('should not mutate any type held in the frontmatter', () => {
- expect.assertions(4);
- plugin(mockAST, file);
- const { id, title, challengeType, videoUrl } = file.data;
- expect(typeof id).toEqual('string');
- expect(typeof title).toEqual('string');
- expect(typeof challengeType).toEqual('number');
- expect(typeof videoUrl).toEqual('string');
- });
-
- it('should trim extra whitespace from keys and values', () => {
- expect.assertions(7);
- plugin(mockAST, file);
- const whitespaceRE = /(^\s\S+|\S\s$)/;
- const keys = Object.keys(file.data);
- keys.forEach(key => expect(whitespaceRE.test(key)).toBe(false));
- const values = keys.map(key => file.data[key]);
- values
- .filter(value => typeof value === 'string')
- .forEach(value => expect(whitespaceRE.test(value)).toBe(false));
- });
-
- it('should not mutate url strings', () => {
- const expectedUrl = 'https://scrimba.com/p/pVMPUv/cE8Gpt2';
- plugin(mockAST, file);
- expect(file.data.videoUrl).toEqual(expectedUrl);
- });
-
- it('should have an output to match the snapshot', () => {
- plugin(mockAST, file);
- expect(file.data).toMatchSnapshot();
- });
-});
diff --git a/tools/challenge-parser/index.js b/tools/challenge-parser/index.js
deleted file mode 100644
index 83b6d0bfb1..0000000000
--- a/tools/challenge-parser/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const unified = require('unified');
-const vfile = require('to-vfile');
-const markdown = require('remark-parse');
-const remark2rehype = require('remark-rehype');
-const html = require('rehype-stringify');
-const frontmatter = require('remark-frontmatter');
-const raw = require('rehype-raw');
-
-const frontmatterToData = require('./frontmatter-to-data');
-const textToData = require('./text-to-data');
-const testsToData = require('./tests-to-data');
-const { challengeSeedToData } = require('./challengeSeed-to-data');
-const solutionsToData = require('./solution-to-data');
-
-const processor = unified()
- .use(markdown)
- .use(frontmatter, ['yaml'])
- .use(frontmatterToData)
- .use(testsToData)
- .use(remark2rehype, { allowDangerousHTML: true })
- .use(raw)
- .use(solutionsToData)
- .use(textToData, ['description', 'instructions'])
- .use(challengeSeedToData)
- // the plugins below are just to stop the processor from throwing
- // we need to write a compiler that can create graphql nodes
- .use(html);
-
-exports.parseMarkdown = function parseMarkdown(filename) {
- return new Promise((resolve, reject) =>
- processor.process(vfile.readSync(filename), function(err, file) {
- if (err) {
- err.message += ' in file ' + filename;
- reject(err);
- }
- delete file.contents;
- return resolve(file.data);
- })
- );
-};
diff --git a/tools/challenge-parser/package-lock.json b/tools/challenge-parser/package-lock.json
index 26e6e80cca..a9eb0a6513 100644
--- a/tools/challenge-parser/package-lock.json
+++ b/tools/challenge-parser/package-lock.json
@@ -1,245 +1,9 @@
{
- "name": "@freecodecamp/challenge-parser",
- "version": "2.0.0",
+ "name": "challenge-mdx-parser",
+ "version": "0.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
- "@babel/code-frame": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
- "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/core": {
- "version": "7.11.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz",
- "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.11.6",
- "@babel/helper-module-transforms": "^7.11.0",
- "@babel/helpers": "^7.10.4",
- "@babel/parser": "^7.11.5",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.11.5",
- "@babel/types": "^7.11.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.1",
- "json5": "^2.1.2",
- "lodash": "^4.17.19",
- "resolve": "^1.3.2",
- "semver": "^5.4.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/generator": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz",
- "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==",
- "requires": {
- "@babel/types": "^7.12.1",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
- "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
- "requires": {
- "@babel/helper-get-function-arity": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
- "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
- "requires": {
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz",
- "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz",
- "integrity": "sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz",
- "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==",
- "requires": {
- "@babel/helper-module-imports": "^7.12.1",
- "@babel/helper-replace-supers": "^7.12.1",
- "@babel/helper-simple-access": "^7.12.1",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/helper-validator-identifier": "^7.10.4",
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1",
- "lodash": "^4.17.19"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz",
- "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==",
- "requires": {
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
- "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
- },
- "@babel/helper-replace-supers": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz",
- "integrity": "sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==",
- "requires": {
- "@babel/helper-member-expression-to-functions": "^7.12.1",
- "@babel/helper-optimise-call-expression": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz",
- "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==",
- "requires": {
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
- "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
- "requires": {
- "@babel/types": "^7.11.0"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
- "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw=="
- },
- "@babel/helpers": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.1.tgz",
- "integrity": "sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==",
- "requires": {
- "@babel/template": "^7.10.4",
- "@babel/traverse": "^7.12.1",
- "@babel/types": "^7.12.1"
- }
- },
- "@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.12.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz",
- "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw=="
- },
- "@babel/plugin-proposal-object-rest-spread": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz",
- "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
- "@babel/plugin-transform-parameters": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz",
- "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
- "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/template": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
- "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/parser": "^7.10.4",
- "@babel/types": "^7.10.4"
- }
- },
- "@babel/traverse": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.1.tgz",
- "integrity": "sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==",
- "requires": {
- "@babel/code-frame": "^7.10.4",
- "@babel/generator": "^7.12.1",
- "@babel/helper-function-name": "^7.10.4",
- "@babel/helper-split-export-declaration": "^7.11.0",
- "@babel/parser": "^7.12.1",
- "@babel/types": "^7.12.1",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.19"
- }
- },
- "@babel/types": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz",
- "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@mdx-js/util": {
- "version": "1.6.19",
- "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.19.tgz",
- "integrity": "sha512-bkkQNSHz3xSr3KRHUQ2Qk2XhewvvXAOUqjIUKwcQuL4ijOA4tUHZfUgXExi5CpMysrX7izcsyICtXjZHlfJUjg=="
- },
"@types/mdast": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz",
@@ -249,9 +13,9 @@
}
},
"@types/node": {
- "version": "14.11.8",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz",
- "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw=="
+ "version": "14.11.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.10.tgz",
+ "integrity": "sha512-yV1nWZPlMFpoXyoknm4S56y2nlTAuFYaJuQtYRAOU7xA/FJ9RY0Xm7QOkaYMMmr8ESdHIuUb6oQgR/0+2NqlyA=="
},
"@types/unist": {
"version": "2.0.3",
@@ -276,14 +40,6 @@
"vfile-message": "*"
}
},
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -302,31 +58,17 @@
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ=="
},
- "bcp-47-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.2.tgz",
- "integrity": "sha512-LugfCkkRdq/h8vVcQjhKxgm+c84AKHMvyNkFyy/jxCnTsEqj2lULoEm9ooUWbwWDwL2rok9GoQXMu7iETJO+uw=="
- },
"boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
},
"ccount": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz",
"integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw=="
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
"character-entities": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
@@ -352,36 +94,16 @@
"resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
"integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ=="
},
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
"comma-separated-tokens": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
"integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
},
- "convert-source-map": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
- "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
- "requires": {
- "safe-buffer": "~5.1.1"
- }
- },
"css-selector-parser": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
- "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g=="
+ "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
+ "dev": true
},
"debug": {
"version": "4.2.0",
@@ -391,24 +113,6 @@
"ms": "2.1.2"
}
},
- "detab": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.3.tgz",
- "integrity": "sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A==",
- "requires": {
- "repeat-string": "^1.5.4"
- }
- },
- "direction": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
- "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ=="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -437,16 +141,6 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
- "gensync": {
- "version": "1.0.0-beta.1",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
- "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg=="
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -455,73 +149,11 @@
"function-bind": "^1.1.1"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "hast-to-hyperscript": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz",
- "integrity": "sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg==",
- "requires": {
- "comma-separated-tokens": "^1.0.0",
- "property-information": "^4.0.0",
- "space-separated-tokens": "^1.0.0",
- "style-to-object": "^0.2.1",
- "unist-util-is": "^2.0.0",
- "web-namespaces": "^1.1.2"
- },
- "dependencies": {
- "unist-util-is": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz",
- "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA=="
- }
- }
- },
- "hast-util-from-parse5": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz",
- "integrity": "sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ==",
- "requires": {
- "ccount": "^1.0.3",
- "hastscript": "^4.0.0",
- "property-information": "^4.0.0",
- "web-namespaces": "^1.1.2",
- "xtend": "^4.0.1"
- }
- },
- "hast-util-has-property": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz",
- "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg=="
- },
"hast-util-is-element": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz",
"integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ=="
},
- "hast-util-parse-selector": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz",
- "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA=="
- },
- "hast-util-raw": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-4.0.0.tgz",
- "integrity": "sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw==",
- "requires": {
- "hast-util-from-parse5": "^4.0.2",
- "hast-util-to-parse5": "^4.0.1",
- "html-void-elements": "^1.0.1",
- "parse5": "^5.0.0",
- "unist-util-position": "^3.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.1",
- "zwitch": "^1.0.0"
- }
- },
"hast-util-sanitize": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.0.tgz",
@@ -530,37 +162,6 @@
"xtend": "^4.0.0"
}
},
- "hast-util-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-2.1.0.tgz",
- "integrity": "sha512-wPnaITEMGvTvzA9GUQhj7qyOVLceQfxol3Zj+2BrhuMQNt7/W1Za76ZDspNeRKAZmT4aFikNa2SwuJ7MaQC6LQ==",
- "requires": {
- "bcp-47-match": "^1.0.0",
- "comma-separated-tokens": "^1.0.2",
- "css-selector-parser": "^1.3.0",
- "direction": "^1.0.2",
- "hast-util-has-property": "^1.0.0",
- "hast-util-is-element": "^1.0.0",
- "hast-util-to-string": "^1.0.1",
- "hast-util-whitespace": "^1.0.0",
- "not": "^0.1.0",
- "nth-check": "^1.0.1",
- "property-information": "^4.0.0",
- "space-separated-tokens": "^1.1.0",
- "unist-util-visit": "^1.3.1",
- "zwitch": "^1.0.0"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
- "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
- "requires": {
- "unist-util-visit-parents": "^2.0.0"
- }
- }
- }
- },
"hast-util-to-html": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.1.tgz",
@@ -585,52 +186,14 @@
"requires": {
"xtend": "^4.0.0"
}
- },
- "stringify-entities": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz",
- "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==",
- "requires": {
- "character-entities-html4": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "xtend": "^4.0.0"
- }
}
}
},
- "hast-util-to-parse5": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz",
- "integrity": "sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw==",
- "requires": {
- "hast-to-hyperscript": "^5.0.0",
- "property-information": "^4.0.0",
- "web-namespaces": "^1.0.0",
- "xtend": "^4.0.1",
- "zwitch": "^1.0.0"
- }
- },
- "hast-util-to-string": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz",
- "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w=="
- },
"hast-util-whitespace": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz",
"integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A=="
},
- "hastscript": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-4.1.0.tgz",
- "integrity": "sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ==",
- "requires": {
- "comma-separated-tokens": "^1.0.0",
- "hast-util-parse-selector": "^2.2.0",
- "property-information": "^4.0.0",
- "space-separated-tokens": "^1.0.0"
- }
- },
"html-void-elements": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz",
@@ -641,21 +204,11 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "inline-style-parser": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
- "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
- },
"is-alphabetical": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
},
- "is-alphanumeric": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
- "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ="
- },
"is-alphanumerical": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
@@ -670,14 +223,6 @@
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
},
- "is-core-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz",
- "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==",
- "requires": {
- "has": "^1.0.3"
- }
- },
"is-decimal": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
@@ -689,24 +234,9 @@
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
},
"is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
- },
- "is-whitespace-character": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
- "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w=="
- },
- "is-word-character": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
- "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA=="
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
},
"js-yaml": {
"version": "3.14.0",
@@ -717,19 +247,6 @@
"esprima": "^4.0.0"
}
},
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
- },
- "json5": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
- "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
"lodash": {
"version": "4.17.20",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
@@ -745,15 +262,13 @@
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
"integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg=="
},
- "markdown-escapes": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz",
- "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg=="
- },
"markdown-table": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz",
- "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q=="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+ "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "requires": {
+ "repeat-string": "^1.0.0"
+ }
},
"mdast-builder": {
"version": "1.1.1",
@@ -763,24 +278,6 @@
"@types/unist": "^2.0.3"
}
},
- "mdast-util-compact": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz",
- "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==",
- "requires": {
- "unist-util-visit": "^1.1.0"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
- "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
- "requires": {
- "unist-util-visit-parents": "^2.0.0"
- }
- }
- }
- },
"mdast-util-definitions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz",
@@ -789,6 +286,89 @@
"unist-util-visit": "^2.0.0"
}
},
+ "mdast-util-directive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-1.0.0.tgz",
+ "integrity": "sha512-04nOvmHrQfcgPQDAn9x0gW05vhqXmkGPP9G7o8BE+7Oy16oyTAgJpJyVFTscPyEzfsP7p7LSKJAXWqTCBvPjuw==",
+ "requires": {
+ "mdast-util-to-markdown": "^0.5.0",
+ "parse-entities": "^2.0.0",
+ "repeat-string": "^1.0.0",
+ "stringify-entities": "^3.1.0",
+ "unist-util-visit-parents": "^3.0.0"
+ },
+ "dependencies": {
+ "unist-util-visit-parents": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
+ "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
+ }
+ }
+ }
+ },
+ "mdast-util-from-markdown": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.0.tgz",
+ "integrity": "sha512-x9b9ekG2IfeqHSUPhn4+o8SeXqual0/ZHzzugV/cC21L6s1KyKAwIHKBJ1NN9ZstIlY8YAefELRSWfJMby4a9Q==",
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-string": "^1.0.0",
+ "micromark": "~2.10.0",
+ "parse-entities": "^2.0.0"
+ }
+ },
+ "mdast-util-frontmatter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz",
+ "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==",
+ "requires": {
+ "micromark-extension-frontmatter": "^0.2.0"
+ }
+ },
+ "mdast-util-gfm": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.0.tgz",
+ "integrity": "sha512-HLfygQL6HdhJhFbLta4Ki9hClrzyAxRjyRvpm5caN65QZL+NyHPmqFlnF9vm1Rn58JT2+AbLwNcEDY4MEvkk8Q==",
+ "requires": {
+ "mdast-util-gfm-autolink-literal": "^0.1.0",
+ "mdast-util-gfm-strikethrough": "^0.2.0",
+ "mdast-util-gfm-table": "^0.1.0",
+ "mdast-util-gfm-task-list-item": "^0.1.0"
+ }
+ },
+ "mdast-util-gfm-autolink-literal": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.1.tgz",
+ "integrity": "sha512-gJ2xSpqKCetSr22GEWpZH3f5ffb4pPn/72m4piY0v7T/S+O7n7rw+sfoPLhb2b4O7WdnERoYdALRcmD68FMtlw=="
+ },
+ "mdast-util-gfm-strikethrough": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.2.tgz",
+ "integrity": "sha512-T37ZbaokJcRbHROXmoVAieWnesPD5N21tv2ifYzaGRLbkh1gknItUGhZzHefUn5Zc/eaO/iTDSAFOBrn/E8kWw==",
+ "requires": {
+ "mdast-util-to-markdown": "^0.5.0"
+ }
+ },
+ "mdast-util-gfm-table": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.4.tgz",
+ "integrity": "sha512-T4xFSON9kUb/IpYA5N+KGWcsdGczAvILvKiXQwUGind6V9fvjPCR9yhZnIeaLdBWXaz3m/Gq77ZtuLMjtFR4IQ==",
+ "requires": {
+ "markdown-table": "^2.0.0",
+ "mdast-util-to-markdown": "^0.5.0"
+ }
+ },
+ "mdast-util-gfm-task-list-item": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.3.tgz",
+ "integrity": "sha512-9adbEPNB7oxvwiHErO6v+3D+YyM42G0LHCnBId8trm5mkvjsm8vt9zxo0yGZxih/8luk9uZq8Smf31sDIqrmkA==",
+ "requires": {
+ "mdast-util-to-markdown": "^0.5.0"
+ }
+ },
"mdast-util-to-hast": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.2.tgz",
@@ -804,15 +384,70 @@
"unist-util-visit": "^2.0.0"
}
},
+ "mdast-util-to-markdown": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.2.tgz",
+ "integrity": "sha512-kPPJ98HguKsWuUgR1oVR7oyVIdcSmOEYPL2g0rGTkJLDJrV2JSEq+F6b+mPtpQCexmD7Vdd7MES34rQUGCIMTw==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "longest-streak": "^2.0.0",
+ "mdast-util-to-string": "^1.0.0",
+ "parse-entities": "^2.0.0",
+ "repeat-string": "^1.0.0",
+ "zwitch": "^1.0.0"
+ }
+ },
+ "mdast-util-to-string": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
+ "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A=="
+ },
"mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
},
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ "micromark": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz",
+ "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==",
+ "requires": {
+ "debug": "^4.0.0",
+ "parse-entities": "^2.0.0"
+ }
+ },
+ "micromark-extension-directive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-1.0.0.tgz",
+ "integrity": "sha512-6FjvznI5GpUysZqGtTEMeDaC/D3FdWFVc3CC5gDZB3fBtqiaIRBhCNg4fbqvrFSC0T2eqRbO2dJ7ZFU86gAtEQ==",
+ "requires": {
+ "micromark": "~2.10.0",
+ "parse-entities": "^2.0.0"
+ }
+ },
+ "micromark-extension-frontmatter": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz",
+ "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==",
+ "requires": {
+ "fault": "^1.0.0"
+ }
+ },
+ "micromark-extension-gfm-strikethrough": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.1.tgz",
+ "integrity": "sha512-2+5qpceAqPysnjM0bpONY/3Jdnt7PJpns7rEtlwoThV2OOE7ReoQ07lYSAL8y/1sW5NnmF8XylvBdSlGsphEpQ==",
+ "requires": {
+ "micromark": "~2.10.0"
+ }
+ },
+ "micromark-extension-gfm-table": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.1.tgz",
+ "integrity": "sha512-xVpqOnfFaa2OtC/Y7rlt4tdVFlUHdoLH3RXAZgb/KP3DDyKsAOx6BRS3UxiiyvmD/p2l6VUpD4bMIniuP4o4JA==",
+ "requires": {
+ "micromark": "~2.10.0"
+ }
},
"ms": {
"version": "2.1.2",
@@ -822,21 +457,18 @@
"not": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz",
- "integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0="
+ "integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=",
+ "dev": true
},
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
"requires": {
"boolbase": "~1.0.0"
}
},
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -846,9 +478,9 @@
}
},
"parse-entities": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
- "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+ "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
"requires": {
"character-entities": "^1.0.0",
"character-entities-legacy": "^1.0.0",
@@ -858,161 +490,30 @@
"is-hexadecimal": "^1.0.0"
}
},
- "parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
- },
- "property-information": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz",
- "integrity": "sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==",
- "requires": {
- "xtend": "^4.0.1"
- }
- },
- "rehype-raw": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-3.0.0.tgz",
- "integrity": "sha512-U8OBB1DwrsxK5trvrhZLaJWrFkTFtOaLV7z8O7OAnwJ/+VTNBEaTUgJfMihSxB063m7/eNVA4+yZnDVuTxeTrQ==",
- "requires": {
- "hast-util-raw": "^4.0.0"
- }
- },
- "rehype-stringify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-4.0.0.tgz",
- "integrity": "sha512-ZWBQg2fW3/75jms314hu4YIqqlAwXdbzpmwd4ez/q4nKA/zKnVUKso0xe6PfGr5Xy5GXpn4uDr9gAYgBXam7vA==",
- "requires": {
- "hast-util-to-html": "^4.0.0",
- "xtend": "^4.0.1"
- },
- "dependencies": {
- "hast-util-to-html": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz",
- "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==",
- "requires": {
- "ccount": "^1.0.0",
- "comma-separated-tokens": "^1.0.1",
- "hast-util-is-element": "^1.0.0",
- "hast-util-whitespace": "^1.0.0",
- "html-void-elements": "^1.0.0",
- "property-information": "^4.0.0",
- "space-separated-tokens": "^1.0.0",
- "stringify-entities": "^1.0.1",
- "unist-util-is": "^2.0.0",
- "xtend": "^4.0.1"
- }
- },
- "unist-util-is": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.3.tgz",
- "integrity": "sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA=="
- }
- }
- },
"remark": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz",
- "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz",
+ "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
"requires": {
- "remark-parse": "^8.0.0",
- "remark-stringify": "^8.0.0",
- "unified": "^9.0.0"
+ "remark-parse": "^9.0.0",
+ "remark-stringify": "^9.0.0",
+ "unified": "^9.1.0"
},
"dependencies": {
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
- },
- "markdown-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
- "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
- "requires": {
- "repeat-string": "^1.0.0"
- }
- },
- "mdast-util-compact": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz",
- "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==",
- "requires": {
- "unist-util-visit": "^2.0.0"
- }
- },
- "parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
"remark-parse": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
- "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
+ "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
"requires": {
- "ccount": "^1.0.0",
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^2.0.0",
- "vfile-location": "^3.0.0",
- "xtend": "^4.0.1"
+ "mdast-util-from-markdown": "^0.8.0"
}
},
"remark-stringify": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz",
- "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz",
+ "integrity": "sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==",
"requires": {
- "ccount": "^1.0.0",
- "is-alphanumeric": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "longest-streak": "^2.0.1",
- "markdown-escapes": "^1.0.0",
- "markdown-table": "^2.0.0",
- "mdast-util-compact": "^2.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "stringify-entities": "^3.0.0",
- "unherit": "^1.0.4",
- "xtend": "^4.0.1"
- }
- },
- "stringify-entities": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz",
- "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==",
- "requires": {
- "character-entities-html4": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "xtend": "^4.0.0"
+ "mdast-util-to-markdown": "^0.5.0"
}
},
"unified": {
@@ -1027,58 +528,25 @@
"trough": "^1.0.0",
"vfile": "^4.0.0"
}
- },
- "unist-util-remove-position": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz",
- "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==",
- "requires": {
- "unist-util-visit": "^2.0.0"
- }
- },
- "unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "requires": {
- "@types/unist": "^2.0.2"
- }
- },
- "vfile": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
- "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- }
- },
- "vfile-location": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz",
- "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g=="
- },
- "vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
}
}
},
- "remark-frontmatter": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz",
- "integrity": "sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==",
+ "remark-directive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-1.0.1.tgz",
+ "integrity": "sha512-x6rZs0qa0zu9gW7Avd+rRxHJL2K9TGk+c51NaLfQgCNI7SxwBycRJ3w5mMkjkIjO6O9/qdx0ntu48byCSgF96Q==",
"requires": {
- "fault": "^1.0.1",
- "xtend": "^4.0.1"
+ "mdast-util-directive": "^1.0.0",
+ "micromark-extension-directive": "^1.0.0"
+ }
+ },
+ "remark-frontmatter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz",
+ "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==",
+ "requires": {
+ "mdast-util-frontmatter": "^0.2.0",
+ "micromark-extension-frontmatter": "^0.2.0"
}
},
"remark-html": {
@@ -1092,212 +560,12 @@
"xtend": "^4.0.1"
}
},
- "remark-mdx": {
- "version": "1.6.19",
- "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.19.tgz",
- "integrity": "sha512-UKK1CFatVPNhgjsIlNQ3GjVl3+6O7x7Hag6oyntFTg8s7sgq+rhWaSfM/6lW5UWU6hzkj520KYBuBlsaSriGtA==",
- "requires": {
- "@babel/core": "7.11.6",
- "@babel/helper-plugin-utils": "7.10.4",
- "@babel/plugin-proposal-object-rest-spread": "7.11.0",
- "@babel/plugin-syntax-jsx": "7.10.4",
- "@mdx-js/util": "1.6.19",
- "is-alphabetical": "1.0.4",
- "remark-parse": "8.0.3",
- "unified": "9.2.0"
- },
- "dependencies": {
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
- },
- "parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "remark-parse": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
- "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
- "requires": {
- "ccount": "^1.0.0",
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^2.0.0",
- "vfile-location": "^3.0.0",
- "xtend": "^4.0.1"
- }
- },
- "unified": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz",
- "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==",
- "requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
- }
- },
- "unist-util-remove-position": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz",
- "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==",
- "requires": {
- "unist-util-visit": "^2.0.0"
- }
- },
- "unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "requires": {
- "@types/unist": "^2.0.2"
- }
- },
- "vfile": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
- "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- }
- },
- "vfile-location": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz",
- "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g=="
- },
- "vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
- }
- }
- },
"remark-parse": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz",
- "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
+ "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
"requires": {
- "collapse-white-space": "^1.0.2",
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "is-word-character": "^1.0.0",
- "markdown-escapes": "^1.0.0",
- "parse-entities": "^1.1.0",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^1.0.0",
- "vfile-location": "^2.0.0",
- "xtend": "^4.0.1"
- }
- },
- "remark-rehype": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-3.0.2.tgz",
- "integrity": "sha512-KDRCnMzRyyCDr0I14Kfk5094W7jjhQwAIJ1C6NniGNjp2OIhcrtqRaiTZCoyEtoYILXTmZKmuOnL5yYGaEFFJA==",
- "requires": {
- "mdast-util-to-hast": "^3.0.0"
- },
- "dependencies": {
- "mdast-util-definitions": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz",
- "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==",
- "requires": {
- "unist-util-visit": "^1.0.0"
- }
- },
- "mdast-util-to-hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz",
- "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==",
- "requires": {
- "collapse-white-space": "^1.0.0",
- "detab": "^2.0.0",
- "mdast-util-definitions": "^1.2.0",
- "mdurl": "^1.0.1",
- "trim": "0.0.1",
- "trim-lines": "^1.0.0",
- "unist-builder": "^1.0.1",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^1.1.0",
- "xtend": "^4.0.1"
- }
- },
- "unist-builder": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz",
- "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==",
- "requires": {
- "object-assign": "^4.1.0"
- }
- },
- "unist-util-visit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
- "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
- "requires": {
- "unist-util-visit-parents": "^2.0.0"
- }
- }
- }
- },
- "remark-stringify": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz",
- "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==",
- "requires": {
- "ccount": "^1.0.0",
- "is-alphanumeric": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-whitespace-character": "^1.0.0",
- "longest-streak": "^2.0.1",
- "markdown-escapes": "^1.0.0",
- "markdown-table": "^1.1.0",
- "mdast-util-compact": "^1.0.0",
- "parse-entities": "^1.0.2",
- "repeat-string": "^1.5.4",
- "state-toggle": "^1.0.0",
- "stringify-entities": "^1.0.1",
- "unherit": "^1.0.4",
- "xtend": "^4.0.1"
+ "mdast-util-from-markdown": "^0.8.0"
}
},
"repeat-string": {
@@ -1310,30 +578,6 @@
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
},
- "resolve": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz",
- "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==",
- "requires": {
- "is-core-module": "^2.0.0",
- "path-parse": "^1.0.6"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
"space-separated-tokens": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
@@ -1344,79 +588,47 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
- "state-toggle": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz",
- "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ=="
- },
"stringify-entities": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
- "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz",
+ "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==",
"requires": {
"character-entities-html4": "^1.0.0",
"character-entities-legacy": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
+ "xtend": "^4.0.0"
}
},
- "style-to-object": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.3.tgz",
- "integrity": "sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng==",
- "requires": {
- "inline-style-parser": "0.1.1"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
- },
"to-vfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz",
- "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-5.0.3.tgz",
+ "integrity": "sha512-z1Lfx60yAMDMmr+f426Y4yECsHdl8GVEAE+LymjRF5oOIZ7T4N20IxWNAxXLMRzP9jSSll38Z0fKVAhVLsdLOw==",
"requires": {
"is-buffer": "^2.0.0",
- "vfile": "^4.0.0"
+ "vfile": "^3.0.0"
},
"dependencies": {
"unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "requires": {
- "@types/unist": "^2.0.2"
- }
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
},
"vfile": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
- "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
+ "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
"requires": {
- "@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
"replace-ext": "1.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-message": "^1.0.0"
}
},
"vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
+ "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
"requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
+ "unist-util-stringify-position": "^1.1.1"
}
}
}
@@ -1426,11 +638,6 @@
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
"integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
},
- "trim-lines": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz",
- "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA=="
- },
"trim-trailing-lines": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
@@ -1463,6 +670,37 @@
"trough": "^1.0.0",
"vfile": "^3.0.0",
"x-is-string": "^0.1.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
+ },
+ "unist-util-stringify-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
+ },
+ "vfile": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
+ "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
+ "requires": {
+ "is-buffer": "^2.0.0",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-message": "^1.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
+ "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
+ "requires": {
+ "unist-util-stringify-position": "^1.1.1"
+ }
+ }
}
},
"unist-builder": {
@@ -1490,6 +728,19 @@
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
"integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
},
+ "parse-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
+ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
+ "requires": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
"remark": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz",
@@ -1531,6 +782,17 @@
"unherit": "^1.0.4"
}
},
+ "stringify-entities": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
+ "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
+ "requires": {
+ "character-entities-html4": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
"unified": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz",
@@ -1544,6 +806,14 @@
"vfile": "^1.0.0"
}
},
+ "unist-util-remove-position": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
+ "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
+ "requires": {
+ "unist-util-visit": "^1.1.0"
+ }
+ },
"unist-util-visit": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
@@ -1556,6 +826,11 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz",
"integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c="
+ },
+ "vfile-location": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
+ "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA=="
}
}
},
@@ -1615,24 +890,6 @@
"unist-util-is": "^4.0.0"
}
},
- "unist-util-remove-position": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
- "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
- "requires": {
- "unist-util-visit": "^1.1.0"
- },
- "dependencies": {
- "unist-util-visit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
- "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
- "requires": {
- "unist-util-visit-parents": "^2.0.0"
- }
- }
- }
- },
"unist-util-select": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.1.tgz",
@@ -1647,9 +904,12 @@
}
},
"unist-util-stringify-position": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
- "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+ "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
},
"unist-util-visit": {
"version": "2.0.3",
@@ -1662,9 +922,9 @@
},
"dependencies": {
"unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
+ "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
"requires": {
"@types/unist": "^2.0.0",
"unist-util-is": "^4.0.0"
@@ -1693,34 +953,26 @@
}
},
"vfile": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
- "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
+ "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
"requires": {
+ "@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
"replace-ext": "1.0.0",
- "unist-util-stringify-position": "^1.0.0",
- "vfile-message": "^1.0.0"
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-message": "^2.0.0"
}
},
- "vfile-location": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
- "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA=="
- },
"vfile-message": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
- "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+ "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
"requires": {
- "unist-util-stringify-position": "^1.1.1"
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
}
},
- "web-namespaces": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
- "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="
- },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/tools/challenge-parser/package.json b/tools/challenge-parser/package.json
index ffb013bbc9..4b86c55bed 100644
--- a/tools/challenge-parser/package.json
+++ b/tools/challenge-parser/package.json
@@ -1,40 +1,37 @@
{
- "name": "@freecodecamp/challenge-parser",
- "version": "2.0.0",
- "description": "",
+ "name": "challenge-parser",
+ "version": "0.0.1",
+ "description": "converts mdx files to challenge objects",
"main": "index.js",
- "publishConfig": {
- "access": "public"
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
},
- "author": "",
- "license": "ISC",
"devDependencies": {
"unist-util-select": "^3.0.1"
},
"dependencies": {
- "hast-util-select": "^2.1.0",
"hast-util-to-html": "^7.1.1",
"js-yaml": "^3.12.0",
- "lodash": "^4.17.20",
+ "lodash": "^4.17.19",
"mdast-builder": "^1.1.1",
+ "mdast-util-gfm": "^0.1.0",
"mdast-util-to-hast": "^9.1.1",
- "rehype-raw": "^3.0.0",
- "rehype-stringify": "^4.0.0",
- "remark": "^12.0.1",
- "remark-frontmatter": "^1.3.3",
+ "micromark-extension-gfm-strikethrough": "^0.6.1",
+ "micromark-extension-gfm-table": "^0.4.1",
+ "remark": "^13.0.0",
+ "remark-directive": "^1.0.1",
+ "remark-frontmatter": "^3.0.0",
"remark-html": "^12.0.0",
- "remark-mdx": "^1.6.14",
- "remark-parse": "^5.0.0",
- "remark-rehype": "^3.0.2",
- "remark-stringify": "^6.0.4",
- "to-vfile": "^6.1.0",
- "unified": "^7.1.0",
+ "remark-parse": "^9.0.0",
+ "to-vfile": "^5.0.1",
+ "unified": "^7.0.0",
"unist-util-find": "^1.0.1",
"unist-util-find-after": "^3.0.0",
"unist-util-find-all-after": "^3.0.1",
"unist-util-find-all-between": "^2.0.0",
"unist-util-is": "^4.0.2",
"unist-util-modify-children": "^2.0.0",
+ "unist-util-position": "^3.1.0",
"unist-util-remove": "^2.0.0",
"unist-util-visit": "^2.0.3",
"unist-util-visit-children": "^1.1.4"
diff --git a/tools/challenge-parser/parser/package-lock.json b/tools/challenge-parser/parser/package-lock.json
deleted file mode 100644
index a9eb0a6513..0000000000
--- a/tools/challenge-parser/parser/package-lock.json
+++ /dev/null
@@ -1,997 +0,0 @@
-{
- "name": "challenge-mdx-parser",
- "version": "0.0.1",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@types/mdast": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz",
- "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==",
- "requires": {
- "@types/unist": "*"
- }
- },
- "@types/node": {
- "version": "14.11.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.10.tgz",
- "integrity": "sha512-yV1nWZPlMFpoXyoknm4S56y2nlTAuFYaJuQtYRAOU7xA/FJ9RY0Xm7QOkaYMMmr8ESdHIuUb6oQgR/0+2NqlyA=="
- },
- "@types/unist": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
- "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ=="
- },
- "@types/vfile": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz",
- "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==",
- "requires": {
- "@types/node": "*",
- "@types/unist": "*",
- "@types/vfile-message": "*"
- }
- },
- "@types/vfile-message": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz",
- "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==",
- "requires": {
- "vfile-message": "*"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "array-iterate": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz",
- "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA=="
- },
- "bail": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
- "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ=="
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
- "dev": true
- },
- "ccount": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz",
- "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw=="
- },
- "character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw=="
- },
- "character-entities-html4": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz",
- "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g=="
- },
- "character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA=="
- },
- "character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg=="
- },
- "collapse-white-space": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz",
- "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ=="
- },
- "comma-separated-tokens": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
- "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw=="
- },
- "css-selector-parser": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
- "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
- "dev": true
- },
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "fault": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
- "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
- "requires": {
- "format": "^0.2.0"
- }
- },
- "format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "hast-util-is-element": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz",
- "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ=="
- },
- "hast-util-sanitize": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.0.tgz",
- "integrity": "sha512-gxsM24ARtuulsrWEj8QtVM6FNeAEHklF/t7TEIWvX1wuQcoAQtJtEUcT8t0os4uxCUqh1epX/gTi8fp8gNKvCA==",
- "requires": {
- "xtend": "^4.0.0"
- }
- },
- "hast-util-to-html": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.1.tgz",
- "integrity": "sha512-Ujqj0hGuo3dIQKilkbauAv5teOqPvhaSLEgs1lgApFT0812e114KiffV8XfE4ttR8dRPqxNOIJOMu6SKOVOGlg==",
- "requires": {
- "ccount": "^1.0.0",
- "comma-separated-tokens": "^1.0.0",
- "hast-util-is-element": "^1.0.0",
- "hast-util-whitespace": "^1.0.0",
- "html-void-elements": "^1.0.0",
- "property-information": "^5.0.0",
- "space-separated-tokens": "^1.0.0",
- "stringify-entities": "^3.0.1",
- "unist-util-is": "^4.0.0",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "property-information": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
- "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
- "requires": {
- "xtend": "^4.0.0"
- }
- }
- }
- },
- "hast-util-whitespace": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz",
- "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A=="
- },
- "html-void-elements": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz",
- "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w=="
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg=="
- },
- "is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "requires": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
- "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
- },
- "is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw=="
- },
- "is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw=="
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA=="
- },
- "js-yaml": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
- "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
- },
- "lodash.iteratee": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz",
- "integrity": "sha1-vkF32yiajMw8CZDx2ya1si/BVUw="
- },
- "longest-streak": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
- "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg=="
- },
- "markdown-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
- "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
- "requires": {
- "repeat-string": "^1.0.0"
- }
- },
- "mdast-builder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/mdast-builder/-/mdast-builder-1.1.1.tgz",
- "integrity": "sha512-a3KBk/LmYD6wKsWi8WJrGU/rXR4yuF4Men0JO0z6dSZCm5FrXXWTRDjqK0vGSqa+1M6p9edeuypZAZAzSehTUw==",
- "requires": {
- "@types/unist": "^2.0.3"
- }
- },
- "mdast-util-definitions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz",
- "integrity": "sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA==",
- "requires": {
- "unist-util-visit": "^2.0.0"
- }
- },
- "mdast-util-directive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-1.0.0.tgz",
- "integrity": "sha512-04nOvmHrQfcgPQDAn9x0gW05vhqXmkGPP9G7o8BE+7Oy16oyTAgJpJyVFTscPyEzfsP7p7LSKJAXWqTCBvPjuw==",
- "requires": {
- "mdast-util-to-markdown": "^0.5.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.0.0",
- "stringify-entities": "^3.1.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "dependencies": {
- "unist-util-visit-parents": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
- "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "mdast-util-from-markdown": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.0.tgz",
- "integrity": "sha512-x9b9ekG2IfeqHSUPhn4+o8SeXqual0/ZHzzugV/cC21L6s1KyKAwIHKBJ1NN9ZstIlY8YAefELRSWfJMby4a9Q==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^1.0.0",
- "micromark": "~2.10.0",
- "parse-entities": "^2.0.0"
- }
- },
- "mdast-util-frontmatter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz",
- "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==",
- "requires": {
- "micromark-extension-frontmatter": "^0.2.0"
- }
- },
- "mdast-util-gfm": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.0.tgz",
- "integrity": "sha512-HLfygQL6HdhJhFbLta4Ki9hClrzyAxRjyRvpm5caN65QZL+NyHPmqFlnF9vm1Rn58JT2+AbLwNcEDY4MEvkk8Q==",
- "requires": {
- "mdast-util-gfm-autolink-literal": "^0.1.0",
- "mdast-util-gfm-strikethrough": "^0.2.0",
- "mdast-util-gfm-table": "^0.1.0",
- "mdast-util-gfm-task-list-item": "^0.1.0"
- }
- },
- "mdast-util-gfm-autolink-literal": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.1.tgz",
- "integrity": "sha512-gJ2xSpqKCetSr22GEWpZH3f5ffb4pPn/72m4piY0v7T/S+O7n7rw+sfoPLhb2b4O7WdnERoYdALRcmD68FMtlw=="
- },
- "mdast-util-gfm-strikethrough": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.2.tgz",
- "integrity": "sha512-T37ZbaokJcRbHROXmoVAieWnesPD5N21tv2ifYzaGRLbkh1gknItUGhZzHefUn5Zc/eaO/iTDSAFOBrn/E8kWw==",
- "requires": {
- "mdast-util-to-markdown": "^0.5.0"
- }
- },
- "mdast-util-gfm-table": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.4.tgz",
- "integrity": "sha512-T4xFSON9kUb/IpYA5N+KGWcsdGczAvILvKiXQwUGind6V9fvjPCR9yhZnIeaLdBWXaz3m/Gq77ZtuLMjtFR4IQ==",
- "requires": {
- "markdown-table": "^2.0.0",
- "mdast-util-to-markdown": "^0.5.0"
- }
- },
- "mdast-util-gfm-task-list-item": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.3.tgz",
- "integrity": "sha512-9adbEPNB7oxvwiHErO6v+3D+YyM42G0LHCnBId8trm5mkvjsm8vt9zxo0yGZxih/8luk9uZq8Smf31sDIqrmkA==",
- "requires": {
- "mdast-util-to-markdown": "^0.5.0"
- }
- },
- "mdast-util-to-hast": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-9.1.2.tgz",
- "integrity": "sha512-OpkFLBC2VnNAb2FNKcKWu9FMbJhQKog+FCT8nuKmQNIKXyT1n3SIskE7uWDep6x+cA20QXlK5AETHQtYmQmxtQ==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "mdast-util-definitions": "^3.0.0",
- "mdurl": "^1.0.0",
- "unist-builder": "^2.0.0",
- "unist-util-generated": "^1.0.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
- }
- },
- "mdast-util-to-markdown": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.2.tgz",
- "integrity": "sha512-kPPJ98HguKsWuUgR1oVR7oyVIdcSmOEYPL2g0rGTkJLDJrV2JSEq+F6b+mPtpQCexmD7Vdd7MES34rQUGCIMTw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "longest-streak": "^2.0.0",
- "mdast-util-to-string": "^1.0.0",
- "parse-entities": "^2.0.0",
- "repeat-string": "^1.0.0",
- "zwitch": "^1.0.0"
- }
- },
- "mdast-util-to-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz",
- "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A=="
- },
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
- },
- "micromark": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz",
- "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==",
- "requires": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
- }
- },
- "micromark-extension-directive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-1.0.0.tgz",
- "integrity": "sha512-6FjvznI5GpUysZqGtTEMeDaC/D3FdWFVc3CC5gDZB3fBtqiaIRBhCNg4fbqvrFSC0T2eqRbO2dJ7ZFU86gAtEQ==",
- "requires": {
- "micromark": "~2.10.0",
- "parse-entities": "^2.0.0"
- }
- },
- "micromark-extension-frontmatter": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz",
- "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==",
- "requires": {
- "fault": "^1.0.0"
- }
- },
- "micromark-extension-gfm-strikethrough": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.1.tgz",
- "integrity": "sha512-2+5qpceAqPysnjM0bpONY/3Jdnt7PJpns7rEtlwoThV2OOE7ReoQ07lYSAL8y/1sW5NnmF8XylvBdSlGsphEpQ==",
- "requires": {
- "micromark": "~2.10.0"
- }
- },
- "micromark-extension-gfm-table": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.1.tgz",
- "integrity": "sha512-xVpqOnfFaa2OtC/Y7rlt4tdVFlUHdoLH3RXAZgb/KP3DDyKsAOx6BRS3UxiiyvmD/p2l6VUpD4bMIniuP4o4JA==",
- "requires": {
- "micromark": "~2.10.0"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "not": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz",
- "integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=",
- "dev": true
- },
- "nth-check": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
- "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
- "dev": true,
- "requires": {
- "boolbase": "~1.0.0"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "remark": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz",
- "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
- "requires": {
- "remark-parse": "^9.0.0",
- "remark-stringify": "^9.0.0",
- "unified": "^9.1.0"
- },
- "dependencies": {
- "remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
- "requires": {
- "mdast-util-from-markdown": "^0.8.0"
- }
- },
- "remark-stringify": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz",
- "integrity": "sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==",
- "requires": {
- "mdast-util-to-markdown": "^0.5.0"
- }
- },
- "unified": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz",
- "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==",
- "requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^2.0.0",
- "trough": "^1.0.0",
- "vfile": "^4.0.0"
- }
- }
- }
- },
- "remark-directive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-1.0.1.tgz",
- "integrity": "sha512-x6rZs0qa0zu9gW7Avd+rRxHJL2K9TGk+c51NaLfQgCNI7SxwBycRJ3w5mMkjkIjO6O9/qdx0ntu48byCSgF96Q==",
- "requires": {
- "mdast-util-directive": "^1.0.0",
- "micromark-extension-directive": "^1.0.0"
- }
- },
- "remark-frontmatter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz",
- "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==",
- "requires": {
- "mdast-util-frontmatter": "^0.2.0",
- "micromark-extension-frontmatter": "^0.2.0"
- }
- },
- "remark-html": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-12.0.0.tgz",
- "integrity": "sha512-M104NMHs48+uswChJkCDXCdabzxAinpHikpt6kS3gmGMyIvPZ5kn53tB9shFsL2O4HUJ9DIEsah1SX1Ve5FXHA==",
- "requires": {
- "hast-util-sanitize": "^3.0.0",
- "hast-util-to-html": "^7.0.0",
- "mdast-util-to-hast": "^9.0.0",
- "xtend": "^4.0.1"
- }
- },
- "remark-parse": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
- "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
- "requires": {
- "mdast-util-from-markdown": "^0.8.0"
- }
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
- },
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
- },
- "space-separated-tokens": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
- "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA=="
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
- },
- "stringify-entities": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz",
- "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==",
- "requires": {
- "character-entities-html4": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "to-vfile": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-5.0.3.tgz",
- "integrity": "sha512-z1Lfx60yAMDMmr+f426Y4yECsHdl8GVEAE+LymjRF5oOIZ7T4N20IxWNAxXLMRzP9jSSll38Z0fKVAhVLsdLOw==",
- "requires": {
- "is-buffer": "^2.0.0",
- "vfile": "^3.0.0"
- },
- "dependencies": {
- "unist-util-stringify-position": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
- "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
- },
- "vfile": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
- "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
- "requires": {
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^1.0.0",
- "vfile-message": "^1.0.0"
- }
- },
- "vfile-message": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
- "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
- "requires": {
- "unist-util-stringify-position": "^1.1.1"
- }
- }
- }
- },
- "trim": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
- "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
- },
- "trim-trailing-lines": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz",
- "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA=="
- },
- "trough": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
- "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA=="
- },
- "unherit": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz",
- "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==",
- "requires": {
- "inherits": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "unified": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz",
- "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "@types/vfile": "^3.0.0",
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^1.1.0",
- "trough": "^1.0.0",
- "vfile": "^3.0.0",
- "x-is-string": "^0.1.0"
- },
- "dependencies": {
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
- },
- "unist-util-stringify-position": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
- "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
- },
- "vfile": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz",
- "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==",
- "requires": {
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^1.0.0",
- "vfile-message": "^1.0.0"
- }
- },
- "vfile-message": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz",
- "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==",
- "requires": {
- "unist-util-stringify-position": "^1.1.1"
- }
- }
- }
- },
- "unist-builder": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz",
- "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw=="
- },
- "unist-util-find": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-find/-/unist-util-find-1.0.1.tgz",
- "integrity": "sha1-EGK7tpKMepfGrcibU3RdTEbCIqI=",
- "requires": {
- "lodash.iteratee": "^4.5.0",
- "remark": "^5.0.1",
- "unist-util-visit": "^1.1.0"
- },
- "dependencies": {
- "longest-streak": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz",
- "integrity": "sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU="
- },
- "markdown-table": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
- "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
- },
- "parse-entities": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz",
- "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==",
- "requires": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "remark": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz",
- "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=",
- "requires": {
- "remark-parse": "^1.1.0",
- "remark-stringify": "^1.1.0",
- "unified": "^4.1.1"
- }
- },
- "remark-parse": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-1.1.0.tgz",
- "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=",
- "requires": {
- "collapse-white-space": "^1.0.0",
- "extend": "^3.0.0",
- "parse-entities": "^1.0.2",
- "repeat-string": "^1.5.4",
- "trim": "0.0.1",
- "trim-trailing-lines": "^1.0.0",
- "unherit": "^1.0.4",
- "unist-util-remove-position": "^1.0.0",
- "vfile-location": "^2.0.0"
- }
- },
- "remark-stringify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-1.1.0.tgz",
- "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=",
- "requires": {
- "ccount": "^1.0.0",
- "extend": "^3.0.0",
- "longest-streak": "^1.0.0",
- "markdown-table": "^0.4.0",
- "parse-entities": "^1.0.2",
- "repeat-string": "^1.5.4",
- "stringify-entities": "^1.0.1",
- "unherit": "^1.0.4"
- }
- },
- "stringify-entities": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
- "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
- "requires": {
- "character-entities-html4": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
- }
- },
- "unified": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz",
- "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=",
- "requires": {
- "bail": "^1.0.0",
- "extend": "^3.0.0",
- "has": "^1.0.1",
- "once": "^1.3.3",
- "trough": "^1.0.0",
- "vfile": "^1.0.0"
- }
- },
- "unist-util-remove-position": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz",
- "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==",
- "requires": {
- "unist-util-visit": "^1.1.0"
- }
- },
- "unist-util-visit": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz",
- "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==",
- "requires": {
- "unist-util-visit-parents": "^2.0.0"
- }
- },
- "vfile": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz",
- "integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c="
- },
- "vfile-location": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz",
- "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA=="
- }
- }
- },
- "unist-util-find-after": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz",
- "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==",
- "requires": {
- "unist-util-is": "^4.0.0"
- }
- },
- "unist-util-find-all-after": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz",
- "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==",
- "requires": {
- "unist-util-is": "^4.0.0"
- }
- },
- "unist-util-find-all-between": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-find-all-between/-/unist-util-find-all-between-2.1.0.tgz",
- "integrity": "sha512-OCCUtDD8UHKeODw3TPXyFDxPCbpgBzbGTTaDpR68nvxkwiVcawBqMVrokfBMvUi7ij2F5q7S4s4Jq5dvkcBt+w==",
- "requires": {
- "unist-util-find": "^1.0.1",
- "unist-util-is": "^4.0.2"
- }
- },
- "unist-util-generated": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz",
- "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw=="
- },
- "unist-util-is": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
- "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ=="
- },
- "unist-util-modify-children": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz",
- "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==",
- "requires": {
- "array-iterate": "^1.0.0"
- }
- },
- "unist-util-position": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz",
- "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA=="
- },
- "unist-util-remove": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz",
- "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==",
- "requires": {
- "unist-util-is": "^4.0.0"
- }
- },
- "unist-util-select": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.1.tgz",
- "integrity": "sha512-VQpTuqZVJlRbosQdnLdTPIIqwZeU70YZ5aMBOqtFNGeeCdYn6ORZt/9RiaVlbl06ocuf58SVMoFa7a13CSGPMA==",
- "dev": true,
- "requires": {
- "css-selector-parser": "^1.0.0",
- "not": "^0.1.0",
- "nth-check": "^1.0.0",
- "unist-util-is": "^4.0.0",
- "zwitch": "^1.0.0"
- }
- },
- "unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "requires": {
- "@types/unist": "^2.0.2"
- }
- },
- "unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
- },
- "dependencies": {
- "unist-util-visit-parents": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
- "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
- }
- }
- }
- },
- "unist-util-visit-children": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz",
- "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ=="
- },
- "unist-util-visit-parents": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz",
- "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==",
- "requires": {
- "unist-util-is": "^3.0.0"
- },
- "dependencies": {
- "unist-util-is": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz",
- "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A=="
- }
- }
- },
- "vfile": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz",
- "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==",
- "requires": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "^2.0.0",
- "vfile-message": "^2.0.0"
- }
- },
- "vfile-message": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
- "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "x-is-string": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
- "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI="
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "zwitch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
- "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw=="
- }
- }
-}
diff --git a/tools/challenge-parser/parser/package.json b/tools/challenge-parser/parser/package.json
deleted file mode 100644
index 4b86c55bed..0000000000
--- a/tools/challenge-parser/parser/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "challenge-parser",
- "version": "0.0.1",
- "description": "converts mdx files to challenge objects",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "devDependencies": {
- "unist-util-select": "^3.0.1"
- },
- "dependencies": {
- "hast-util-to-html": "^7.1.1",
- "js-yaml": "^3.12.0",
- "lodash": "^4.17.19",
- "mdast-builder": "^1.1.1",
- "mdast-util-gfm": "^0.1.0",
- "mdast-util-to-hast": "^9.1.1",
- "micromark-extension-gfm-strikethrough": "^0.6.1",
- "micromark-extension-gfm-table": "^0.4.1",
- "remark": "^13.0.0",
- "remark-directive": "^1.0.1",
- "remark-frontmatter": "^3.0.0",
- "remark-html": "^12.0.0",
- "remark-parse": "^9.0.0",
- "to-vfile": "^5.0.1",
- "unified": "^7.0.0",
- "unist-util-find": "^1.0.1",
- "unist-util-find-after": "^3.0.0",
- "unist-util-find-all-after": "^3.0.1",
- "unist-util-find-all-between": "^2.0.0",
- "unist-util-is": "^4.0.2",
- "unist-util-modify-children": "^2.0.0",
- "unist-util-position": "^3.1.0",
- "unist-util-remove": "^2.0.0",
- "unist-util-visit": "^2.0.3",
- "unist-util-visit-children": "^1.1.4"
- }
-}
diff --git a/tools/challenge-parser/solution-to-data.js b/tools/challenge-parser/solution-to-data.js
deleted file mode 100644
index cd3fc5ae6c..0000000000
--- a/tools/challenge-parser/solution-to-data.js
+++ /dev/null
@@ -1,55 +0,0 @@
-const visit = require('unist-util-visit');
-const { selectAll } = require('hast-util-select');
-
-const { sectionFilter } = require('./utils');
-const { createCodeGetter, defaultFile } = require('./challengeSeed-to-data');
-const { isEmpty } = require('lodash');
-
-const solutionRE = /(.+)-solution$/;
-
-function indexByKey(obj) {
- return { [obj.key]: { ...obj } };
-}
-
-function createPlugin() {
- return function transformer(tree, file) {
- function visitor(node) {
- if (sectionFilter(node, 'solution')) {
- // fallback for single-file challenges
- const rawSolutions = selectAll('code', node).map(element => ({
- lang: element.properties.className[0].split('-')[1],
- contents: element.children[0].value
- }));
-
- const solutionFiles = {};
-
- const codeDivs = selectAll('div', node);
- const solutionContainers = codeDivs.filter(({ properties: { id } }) =>
- solutionRE.test(id)
- );
- solutionContainers.forEach(
- createCodeGetter('contents', solutionRE, solutionFiles)
- );
-
- const solutionsAsFiles = rawSolutions
- .map(({ lang, contents }) => ({
- ...defaultFile(lang),
- contents
- }))
- .map(indexByKey);
-
- const solutions = isEmpty(solutionFiles)
- ? solutionsAsFiles
- : [solutionFiles];
-
- file.data = {
- ...file.data,
- solutions
- };
- }
- }
- visit(tree, 'element', visitor);
- };
-}
-
-module.exports = createPlugin;
diff --git a/tools/challenge-parser/solution-to-data.test.js b/tools/challenge-parser/solution-to-data.test.js
deleted file mode 100644
index 762a9186ff..0000000000
--- a/tools/challenge-parser/solution-to-data.test.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/* global describe it expect beforeEach */
-const mockAST = require('./fixtures/challenge-html-ast.json');
-const solutionToData = require('./solution-to-data');
-const { isObject } = require('lodash');
-
-describe('challengeSeed-to-data plugin', () => {
- const plugin = solutionToData();
- let file = { data: {} };
-
- beforeEach(() => {
- file = { data: {} };
- });
-
- it('returns a function', () => {
- expect(typeof plugin).toEqual('function');
- });
-
- it('adds a `solutions` property to `file.data`', () => {
- plugin(mockAST, file);
- expect('solutions' in file.data).toBe(true);
- });
-
- it('ensures that the `solutions` property is an array', () => {
- plugin(mockAST, file);
- expect(Array.isArray(file.data.solutions)).toBe(true);
- });
-
- it('each entry in the `solutions` array is an object', () => {
- plugin(mockAST, file);
-
- expect(file.data.solutions.every(el => isObject(el))).toBe(true);
- });
-
- it('should have an output to match the snapshot', () => {
- plugin(mockAST, file);
- expect(file.data).toMatchSnapshot();
- });
-});
diff --git a/tools/challenge-parser/tests-to-data.js b/tools/challenge-parser/tests-to-data.js
deleted file mode 100644
index bd957a4bcd..0000000000
--- a/tools/challenge-parser/tests-to-data.js
+++ /dev/null
@@ -1,55 +0,0 @@
-const visit = require('unist-util-visit');
-const YAML = require('js-yaml');
-const unified = require('unified');
-const markdown = require('remark-parse');
-const remark2rehype = require('remark-rehype');
-const html = require('rehype-stringify');
-const raw = require('rehype-raw');
-
-const processor = unified()
- .use(markdown)
- .use(remark2rehype, { allowDangerousHTML: true })
- .use(raw)
- .use(html);
-
-function mdToHTML(str) {
- return processor.processSync(str).toString();
-}
-
-function plugin() {
- return transformer;
-
- function transformer(tree, file) {
- visit(tree, 'code', visitor);
-
- function visitor(node) {
- const { lang, value } = node;
- if (lang === 'yml') {
- const tests = YAML.load(value);
- if (tests.question) {
- // mdToHTML can not parse numbers. If an answer is a number
- // (i.e. 5, not '5') it has to be converted.
- tests.question.answers = tests.question.answers.map(answer =>
- mdToHTML(answer.toString())
- );
- tests.question.text = mdToHTML(tests.question.text);
- }
- // since tests are overloaded (they're both a list of projects and
- // actual tests), it's necessary to check which they are:
- if (tests.tests && tests.tests[0] && tests.tests[0].text) {
- tests.tests = tests.tests.map(({ text, testString }) => ({
- text: mdToHTML(text),
- testString
- }));
- }
- file.data = {
- ...file.data,
- ...tests
- };
- }
- }
- }
-}
-
-module.exports = plugin;
-module.exports.mdToHTML = mdToHTML;
diff --git a/tools/challenge-parser/tests-to-data.test.js b/tools/challenge-parser/tests-to-data.test.js
deleted file mode 100644
index 4bb16f8bb3..0000000000
--- a/tools/challenge-parser/tests-to-data.test.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/* global describe it expect beforeEach */
-const mockAST = require('./fixtures/challenge-md-ast.json');
-const mockVideoAST = require('./fixtures/video-challenge-md-ast.json');
-const testsToData = require('./tests-to-data');
-
-const { mdToHTML } = testsToData;
-
-describe('mdToHTML', () => {
- it('converts Markdown to HTML', () => {
- // a line of text on its own is parsed as a paragraph, hence the p tags
- expect(mdToHTML('*it*')).toBe('it
');
- });
-
- it('preserves code language', () => {
- expect(mdToHTML('```js\n var x = "y";\n```')).toBe(
- ' var x = "y";\n
'
- );
- });
-});
-
-describe('tests-to-data plugin', () => {
- const plugin = testsToData();
- let file = { data: {} };
-
- beforeEach(() => {
- file = { data: {} };
- });
-
- it('returns a function', () => {
- expect(typeof plugin).toEqual('function');
- });
-
- it('adds a `tests` property to `file.data`', () => {
- plugin(mockAST, file);
-
- expect('tests' in file.data).toBe(true);
- });
-
- it('adds test objects to the tests array following a schema', () => {
- expect.assertions(3);
- plugin(mockAST, file);
- const testObject = file.data.tests[0];
- expect(Object.keys(testObject).length).toBe(2);
- expect(testObject).toHaveProperty('testString');
- expect(testObject).toHaveProperty('text');
- });
-
- it('should generate a question object from a video challenge AST', () => {
- expect.assertions(4);
- plugin(mockVideoAST, file);
- const testObject = file.data.question;
- expect(Object.keys(testObject).length).toBe(3);
- expect(testObject).toHaveProperty('text');
- expect(testObject).toHaveProperty('solution');
- expect(testObject).toHaveProperty('answers');
- });
-
- it('should convert question and answer markdown into html', () => {
- plugin(mockVideoAST, file);
- const testObject = file.data.question;
- expect(Object.keys(testObject).length).toBe(3);
- expect(testObject.text).toBe(
- 'Question line one
\n' +
- ` var x = 'y';\n` +
- '
'
- );
- expect(testObject.solution).toBe(3);
- expect(testObject.answers[0]).toBe('inline code
');
- expect(testObject.answers[1]).toBe('some italics
');
- expect(testObject.answers[2]).toBe(
- ' code in
code tags
'
- );
- });
-
- it('should have an output to match the snapshot', () => {
- plugin(mockAST, file);
- expect(file.data).toMatchSnapshot();
- });
-
- it('should match the video snapshot', () => {
- plugin(mockVideoAST, file);
- expect(file.data).toMatchSnapshot();
- });
-});
diff --git a/tools/challenge-parser/text-to-data.js b/tools/challenge-parser/text-to-data.js
deleted file mode 100644
index e89d1811cf..0000000000
--- a/tools/challenge-parser/text-to-data.js
+++ /dev/null
@@ -1,82 +0,0 @@
-const visit = require('unist-util-visit');
-const toHTML = require('hast-util-to-html');
-
-const { sectionFilter } = require('./utils');
-
-function createPNode() {
- return {
- type: 'element',
- tagName: 'p',
- children: [],
- properties: {}
- };
-}
-function createBlankLineNode() {
- return {
- type: 'text',
- value: '\n'
- };
-}
-
-function textToData(sectionIds) {
- if (!sectionIds || !Array.isArray(sectionIds) || sectionIds.length <= 0) {
- throw new Error("textToData must have an array of section id's supplied");
- }
- function transformer(tree, file) {
- visit(tree, 'element', visitor);
- function visitor(node) {
- sectionIds.forEach(sectionId => {
- if (sectionFilter(node, sectionId)) {
- const newChildren = [];
- let currentParagraph = null;
- node.children.forEach(child => {
- if (child.type !== 'text') {
- if (child.type === 'element' && child.tagName === 'p') {
- newChildren.push(child);
- currentParagraph = null;
- } else {
- if (!currentParagraph) {
- currentParagraph = createPNode();
- newChildren.push(currentParagraph);
- }
- currentParagraph.children.push(child);
- }
- } else {
- const lines = child.value.split('\n');
- if (lines.filter(Boolean).length > 0) {
- lines.forEach((line, index) => {
- if (line === '') {
- currentParagraph = null;
- } else {
- if (!currentParagraph || index > 0) {
- newChildren.push(createBlankLineNode());
- currentParagraph = createPNode();
- newChildren.push(currentParagraph);
- }
- currentParagraph.children.push({ ...child, value: line });
- }
- });
- } else {
- currentParagraph = null;
- newChildren.push(createBlankLineNode());
- }
- }
- });
- const hasData = newChildren.some(
- node => node.type !== 'text' || !/^\s*$/.test(node.value)
- );
- const textArray = hasData
- ? toHTML({ ...node, children: newChildren })
- : '';
- file.data = {
- ...file.data,
- [sectionId]: textArray
- };
- }
- });
- }
- }
- return transformer;
-}
-
-module.exports = textToData;
diff --git a/tools/challenge-parser/text-to-data.test.js b/tools/challenge-parser/text-to-data.test.js
deleted file mode 100644
index 7fd0d7cd01..0000000000
--- a/tools/challenge-parser/text-to-data.test.js
+++ /dev/null
@@ -1,90 +0,0 @@
-/* global describe it expect */
-const mockAST = require('./fixtures/challenge-html-ast.json');
-const adjacentTagsAST = require('./fixtures/adjacent-tags-ast.json');
-const textToData = require('./text-to-data');
-
-describe('text-to-data', () => {
- const expectedField = 'description';
- const otherExpectedField = 'instructions';
- const unexpectedField = 'does-not-exist';
- let file = { data: {} };
-
- beforeEach(() => {
- file = { data: {} };
- });
-
- it('should take return a function', () => {
- const plugin = textToData(['a-section-id']);
-
- expect(typeof plugin).toEqual('function');
- });
-
- it('throws when no argument or the incorrect argument is supplied', () => {
- expect.assertions(5);
- const expectedError =
- "textToData must have an array of section id's supplied";
- expect(() => {
- textToData();
- }).toThrow(expectedError);
- expect(() => {
- textToData('');
- }).toThrow(expectedError);
- expect(() => {
- textToData({});
- }).toThrow(expectedError);
- expect(() => {
- textToData(1);
- }).toThrow(expectedError);
- expect(() => {
- textToData([]);
- }).toThrow(expectedError);
- });
-
- it("should only add a value for 'found' section id's", () => {
- const plugin = textToData([expectedField, unexpectedField]);
- plugin(mockAST, file);
- expect(expectedField in file.data && !(unexpectedField in file.data)).toBe(
- true
- );
- });
-
- it('should add a string relating to the section id to `file.data`', () => {
- const plugin = textToData([expectedField]);
- plugin(mockAST, file);
- const expectedText = 'Welcome to freeCodeCamp';
- expect(file.data[expectedField].includes(expectedText)).toBe(true);
- });
-
- // eslint-disable-next-line max-len
- it('should add an empty string relating to the section id without data to `file.data`', () => {
- const plugin = textToData([otherExpectedField]);
- plugin(mockAST, file);
- expect(file.data[otherExpectedField]).toEqual('');
- });
-
- it('should preserve nested html', () => {
- const plugin = textToData([expectedField]);
- plugin(mockAST, file);
- const expectedText = `
-Some text in a blockquote
-Some text in a blockquote, with code
-
`;
- expect(file.data[expectedField].includes(expectedText)).toBe(true);
- });
-
- // eslint-disable-next-line max-len
- it('should not add paragraphs when html elements are separated by whitespace', () => {
- const plugin = textToData([expectedField]);
- plugin(adjacentTagsAST, file);
- const expectedText1 = `code
with more after a space`;
- const expectedText2 = `another pair of elements with a space`;
- expect(file.data[expectedField].includes(expectedText1)).toBe(true);
- expect(file.data[expectedField].includes(expectedText2)).toBe(true);
- });
-
- it('should have an output to match the snapshot', () => {
- const plugin = textToData([expectedField, otherExpectedField]);
- plugin(mockAST, file);
- expect(file.data).toMatchSnapshot();
- });
-});
diff --git a/tools/challenge-parser/utils/index.js b/tools/challenge-parser/utils/index.js
deleted file mode 100644
index 6c27bc3251..0000000000
--- a/tools/challenge-parser/utils/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-exports.sectionFilter = (
- { type, tagName, properties: { id = '' } },
- sectionId
-) => {
- return type === 'element' && tagName === 'section' && id === sectionId;
-};