begin scaffolding for lerna
25
.babelrc
@ -1,19 +1,9 @@
|
|||||||
{
|
{
|
||||||
"presets": [
|
"presets": [
|
||||||
"react",
|
"react",
|
||||||
["env", {
|
"env",
|
||||||
"modules": false
|
|
||||||
}]
|
|
||||||
],
|
],
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"lodash",
|
|
||||||
["babel-plugin-transform-builtin-extend", {
|
|
||||||
"globals": ["Error"]
|
|
||||||
}],
|
|
||||||
["transform-runtime", {
|
|
||||||
"useBuiltIns": true,
|
|
||||||
"useESModules": true
|
|
||||||
}],
|
|
||||||
["module-resolver", {
|
["module-resolver", {
|
||||||
"root": [
|
"root": [
|
||||||
"./src/components"
|
"./src/components"
|
||||||
@ -31,14 +21,9 @@
|
|||||||
"ValueObjects": "./src/valueObjects/",
|
"ValueObjects": "./src/valueObjects/",
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"transform-export-extensions",
|
"inline-svg",
|
||||||
"transform-class-properties",
|
["inline-import", {
|
||||||
"transform-object-rest-spread",
|
"extensions": ["yml"],
|
||||||
"react-hot-loader/babel",
|
}],
|
||||||
],
|
],
|
||||||
"env": {
|
|
||||||
"test": {
|
|
||||||
"plugins": ["transform-es2015-modules-commonjs"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
1
.gitignore
vendored
@ -10,3 +10,4 @@ manifest.yml
|
|||||||
.imdone/
|
.imdone/
|
||||||
website/data/contributors.json
|
website/data/contributors.json
|
||||||
/coverage/
|
/coverage/
|
||||||
|
.cache
|
||||||
|
Before Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 38 KiB |
9
lerna.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"lerna": "2.11.0",
|
||||||
|
"packages": [
|
||||||
|
"packages/*"
|
||||||
|
],
|
||||||
|
"version": "independent",
|
||||||
|
"npmClient": "yarn",
|
||||||
|
"useWorkspaces": true
|
||||||
|
}
|
113
package.json
@ -3,25 +3,6 @@
|
|||||||
"version": "2.0.0-dev",
|
"version": "2.0.0-dev",
|
||||||
"description": "Netlify CMS lets content editors work on structured content stored in git",
|
"description": "Netlify CMS lets content editors work on structured content stored in git",
|
||||||
"main": "dist/cms.js",
|
"main": "dist/cms.js",
|
||||||
"scripts": {
|
|
||||||
"start": "npm run dev",
|
|
||||||
"dev": "webpack-dev-server --env.development",
|
|
||||||
"dev:write": "webpack-dev-server --env.development --env.write",
|
|
||||||
"test": "jest --coverage",
|
|
||||||
"test:watch": "jest --watch",
|
|
||||||
"build": "cross-env NODE_ENV=production webpack-cli --display-error-details --env.production",
|
|
||||||
"add-contributor": "all-contributors add",
|
|
||||||
"generate-contributors": "all-contributors generate",
|
|
||||||
"lint": "npm run lint:js & npm run lint:css",
|
|
||||||
"lint:js": "eslint .",
|
|
||||||
"lint:js:fix": "npm run lint:js -- --fix",
|
|
||||||
"lint:css": "stylelint 'src/**/*.css'",
|
|
||||||
"lint:css:fix": "stylefmt --recursive src/",
|
|
||||||
"lint:staged": "lint-staged",
|
|
||||||
"deps": "npm-check -s",
|
|
||||||
"deps:update": "npm-check -u",
|
|
||||||
"prepublishOnly": "npm run build"
|
|
||||||
},
|
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.js": [
|
"*.js": [
|
||||||
"eslint --fix",
|
"eslint --fix",
|
||||||
@ -72,22 +53,12 @@
|
|||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"all-contributors-cli": "^4.4.0",
|
"all-contributors-cli": "^4.4.0",
|
||||||
"babel": "^6.5.2",
|
"babel-plugin-inline-import": "^3.0.0",
|
||||||
"babel-cli": "^6.18.0",
|
"babel-plugin-inline-svg": "^1.0.0",
|
||||||
"babel-core": "^6.23.1",
|
|
||||||
"babel-jest": "^22.0.0",
|
|
||||||
"babel-loader": "^7.1.4",
|
|
||||||
"babel-plugin-lodash": "^3.2.0",
|
|
||||||
"babel-plugin-module-resolver": "^3.0.0",
|
"babel-plugin-module-resolver": "^3.0.0",
|
||||||
"babel-plugin-transform-builtin-extend": "^1.1.0",
|
"babel-plugin-transform-inline-environment-variables": "^0.4.3",
|
||||||
"babel-plugin-transform-class-properties": "^6.24.1",
|
|
||||||
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
|
|
||||||
"babel-plugin-transform-export-extensions": "^6.22.0",
|
|
||||||
"babel-plugin-transform-object-rest-spread": "^6.26.0",
|
|
||||||
"babel-plugin-transform-runtime": "^6.23.0",
|
|
||||||
"babel-preset-env": "^1.6.0",
|
"babel-preset-env": "^1.6.0",
|
||||||
"babel-preset-react": "^6.23.0",
|
"babel-preset-react": "^6.23.0",
|
||||||
"babel-runtime": "^6.23.0",
|
|
||||||
"cross-env": "^5.1.4",
|
"cross-env": "^5.1.4",
|
||||||
"css-loader": "^0.28.11",
|
"css-loader": "^0.28.11",
|
||||||
"cssnano": "^v4.0.0-rc.2",
|
"cssnano": "^v4.0.0-rc.2",
|
||||||
@ -103,9 +74,11 @@
|
|||||||
"imports-loader": "^0.8.0",
|
"imports-loader": "^0.8.0",
|
||||||
"jest": "^22.0.0",
|
"jest": "^22.0.0",
|
||||||
"jest-cli": "^22.0.0",
|
"jest-cli": "^22.0.0",
|
||||||
|
"lerna": "^2.11.0",
|
||||||
"lint-staged": "^3.3.1",
|
"lint-staged": "^3.3.1",
|
||||||
"mini-css-extract-plugin": "^0.4.0",
|
"mini-css-extract-plugin": "^0.4.0",
|
||||||
"npm-check": "^5.2.3",
|
"npm-check": "^5.2.3",
|
||||||
|
"parcel-plugin-inlinesvg": "^0.0.14",
|
||||||
"postcss-cssnext": "^3.0.2",
|
"postcss-cssnext": "^3.0.2",
|
||||||
"postcss-import": "^11.0.0",
|
"postcss-import": "^11.0.0",
|
||||||
"postcss-loader": "^2.1.3",
|
"postcss-loader": "^2.1.3",
|
||||||
@ -124,76 +97,8 @@
|
|||||||
"webpack-dev-server": "^3.1.3",
|
"webpack-dev-server": "^3.1.3",
|
||||||
"write-file-webpack-plugin": "^4.2.0"
|
"write-file-webpack-plugin": "^4.2.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"workspaces": [
|
||||||
"classnames": "^2.2.5",
|
"packages/*"
|
||||||
"create-react-class": "^15.6.0",
|
],
|
||||||
"diacritics": "^1.3.0",
|
"private": true
|
||||||
"fuzzy": "^0.1.1",
|
|
||||||
"gotrue-js": "^0.9.15",
|
|
||||||
"gray-matter": "^3.0.6",
|
|
||||||
"history": "^4.7.2",
|
|
||||||
"immutable": "^3.7.6",
|
|
||||||
"is-hotkey": "^0.1.1",
|
|
||||||
"js-base64": "^2.1.9",
|
|
||||||
"js-yaml": "^3.10.0",
|
|
||||||
"jwt-decode": "^2.1.0",
|
|
||||||
"localforage": "^1.4.2",
|
|
||||||
"lodash": "^4.13.1",
|
|
||||||
"mdast-util-definitions": "^1.2.2",
|
|
||||||
"mdast-util-to-string": "^1.0.4",
|
|
||||||
"moment": "^2.11.2",
|
|
||||||
"prop-types": "^15.5.10",
|
|
||||||
"react": "^16.0.0",
|
|
||||||
"react-aria-menubutton": "^5.1.0",
|
|
||||||
"react-autosuggest": "^9.3.2",
|
|
||||||
"react-datetime": "^2.11.0",
|
|
||||||
"react-dnd": "^2.5.4",
|
|
||||||
"react-dnd-html5-backend": "^2.5.4",
|
|
||||||
"react-dom": "^16.0.0",
|
|
||||||
"react-frame-component": "^2.0.0",
|
|
||||||
"react-hot-loader": "^4.0.0",
|
|
||||||
"react-immutable-proptypes": "^2.1.0",
|
|
||||||
"react-is": "16.3.1",
|
|
||||||
"react-modal": "^3.1.5",
|
|
||||||
"react-redux": "^4.4.0",
|
|
||||||
"react-router-dom": "^4.2.2",
|
|
||||||
"react-router-redux": "^5.0.0-alpha.8",
|
|
||||||
"react-scroll-sync": "^0.4.0",
|
|
||||||
"react-sortable-hoc": "^0.6.8",
|
|
||||||
"react-split-pane": "^0.1.66",
|
|
||||||
"react-textarea-autosize": "^5.2.0",
|
|
||||||
"react-toggled": "^1.1.2",
|
|
||||||
"react-topbar-progress-indicator": "^2.0.0",
|
|
||||||
"react-transition-group": "^2.2.1",
|
|
||||||
"react-waypoint": "^7.1.0",
|
|
||||||
"redux": "^3.3.1",
|
|
||||||
"redux-notifications": "^4.0.1",
|
|
||||||
"redux-optimist": "^0.0.2",
|
|
||||||
"redux-thunk": "^1.0.3",
|
|
||||||
"rehype-parse": "^3.1.0",
|
|
||||||
"rehype-remark": "^2.0.0",
|
|
||||||
"rehype-stringify": "^3.0.0",
|
|
||||||
"remark-parse": "^3.0.1",
|
|
||||||
"remark-rehype": "^2.0.0",
|
|
||||||
"remark-stringify": "^3.0.1",
|
|
||||||
"sanitize-filename": "^1.6.1",
|
|
||||||
"semaphore": "^1.0.5",
|
|
||||||
"slate": "^0.30.0",
|
|
||||||
"slate-edit-list": "^0.10.1",
|
|
||||||
"slate-edit-table": "^0.12.0",
|
|
||||||
"slate-plain-serializer": "^0.4.0",
|
|
||||||
"slate-react": "0.10.11",
|
|
||||||
"slate-soft-break": "^0.6.0",
|
|
||||||
"toml-j0.4": "^1.1.1",
|
|
||||||
"tomlify-j0.4": "^3.0.0-alpha.0",
|
|
||||||
"unified": "^6.1.4",
|
|
||||||
"unist-builder": "^1.0.2",
|
|
||||||
"unist-util-visit-parents": "^1.1.1",
|
|
||||||
"url": "^0.11.0",
|
|
||||||
"uuid": "^3.1.0",
|
|
||||||
"what-input": "^5.0.3"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"fsevents": "^1.0.14"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 808 KiB After Width: | Height: | Size: 808 KiB |
@ -6,15 +6,14 @@
|
|||||||
<title>This is an example</title>
|
<title>This is an example</title>
|
||||||
|
|
||||||
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500' rel='stylesheet' type='text/css'>
|
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500' rel='stylesheet' type='text/css'>
|
||||||
<link rel="stylesheet" href="/cms.css"/>
|
<link rel="stylesheet" href="../src/index.css"/>
|
||||||
<!--
|
<!--
|
||||||
Netlify CMS will automatically look for a "config.yml" file in the same directory
|
Netlify CMS will automatically look for a "config.yml" file in the same
|
||||||
as this "index.html", but you can override this by providing a link tag like this
|
directory as the CMS HTML file (like this one), but you can override this by
|
||||||
one:
|
providing a link tag like the one below.
|
||||||
|
-->
|
||||||
<link href="path/to/config.yml" type="text/yaml" rel="cms-config-url">
|
|
||||||
-->
|
|
||||||
|
|
||||||
|
<link href="./config.yml" type="text/yaml" rel="cms-config-url">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
window.repoFiles = {
|
window.repoFiles = {
|
||||||
@ -90,7 +89,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<script src='/cms.js'></script>
|
<script src='../src/index.js'></script>
|
||||||
<script>
|
<script>
|
||||||
var PostPreview = createClass({
|
var PostPreview = createClass({
|
||||||
render: function() {
|
render: function() {
|
Before Width: | Height: | Size: 310 KiB After Width: | Height: | Size: 310 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
27009
packages/netlify-cms-core/package-lock.json
generated
Normal file
106
packages/netlify-cms-core/package.json
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
{
|
||||||
|
"name": "netlify-cms-core",
|
||||||
|
"description": "Netlify CMS lets content editors work on structured content stored in git",
|
||||||
|
"version": "2.0.0-alpha.0",
|
||||||
|
"main": "dist/cms.js",
|
||||||
|
"lint-staged": {
|
||||||
|
"*.js": [
|
||||||
|
"eslint --fix",
|
||||||
|
"jest --findRelatedTests",
|
||||||
|
"git add"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"src/",
|
||||||
|
"dist/"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"start": "npm run dev",
|
||||||
|
"dev": "parcel example/index.html --open"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"netlify",
|
||||||
|
"cms",
|
||||||
|
"content editing",
|
||||||
|
"static site generators",
|
||||||
|
"jamstack"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"classnames": "^2.2.5",
|
||||||
|
"create-react-class": "^15.6.0",
|
||||||
|
"diacritics": "^1.3.0",
|
||||||
|
"fuzzy": "^0.1.1",
|
||||||
|
"gotrue-js": "^0.9.15",
|
||||||
|
"gray-matter": "^3.0.6",
|
||||||
|
"history": "^4.7.2",
|
||||||
|
"immutable": "^3.7.6",
|
||||||
|
"is-hotkey": "^0.1.1",
|
||||||
|
"js-base64": "^2.1.9",
|
||||||
|
"js-yaml": "^3.10.0",
|
||||||
|
"jwt-decode": "^2.1.0",
|
||||||
|
"lib": "^3.0.2",
|
||||||
|
"localforage": "^1.4.2",
|
||||||
|
"lodash": "^4.13.1",
|
||||||
|
"mdast-util-definitions": "^1.2.2",
|
||||||
|
"mdast-util-to-string": "^1.0.4",
|
||||||
|
"moment": "^2.11.2",
|
||||||
|
"netlify-cms-lib-auth": "file:../netlify-cms-lib-auth",
|
||||||
|
"netlify-cms-lib-util": "file:../netlify-cms-lib-util",
|
||||||
|
"netlify-cms-ui-default": "file:../netlify-cms-ui-default",
|
||||||
|
"prop-types": "^15.5.10",
|
||||||
|
"react": "^16.0.0",
|
||||||
|
"react-aria-menubutton": "^5.1.0",
|
||||||
|
"react-autosuggest": "^9.3.2",
|
||||||
|
"react-datetime": "^2.11.0",
|
||||||
|
"react-dnd": "^2.5.4",
|
||||||
|
"react-dnd-html5-backend": "^2.5.4",
|
||||||
|
"react-dom": "^16.0.0",
|
||||||
|
"react-frame-component": "^2.0.0",
|
||||||
|
"react-hot-loader": "^4.0.0",
|
||||||
|
"react-immutable-proptypes": "^2.1.0",
|
||||||
|
"react-is": "16.3.1",
|
||||||
|
"react-modal": "^3.1.5",
|
||||||
|
"react-redux": "^4.4.0",
|
||||||
|
"react-router-dom": "^4.2.2",
|
||||||
|
"react-router-redux": "^5.0.0-alpha.8",
|
||||||
|
"react-scroll-sync": "^0.4.0",
|
||||||
|
"react-sortable-hoc": "^0.6.8",
|
||||||
|
"react-split-pane": "^0.1.81",
|
||||||
|
"react-textarea-autosize": "^5.2.0",
|
||||||
|
"react-toggled": "^1.1.2",
|
||||||
|
"react-topbar-progress-indicator": "^2.0.0",
|
||||||
|
"react-transition-group": "^2.2.1",
|
||||||
|
"react-waypoint": "^7.1.0",
|
||||||
|
"redux": "^3.3.1",
|
||||||
|
"redux-notifications": "^4.0.1",
|
||||||
|
"redux-optimist": "^0.0.2",
|
||||||
|
"redux-thunk": "^1.0.3",
|
||||||
|
"rehype-parse": "^3.1.0",
|
||||||
|
"rehype-remark": "^2.0.0",
|
||||||
|
"rehype-stringify": "^3.0.0",
|
||||||
|
"remark-parse": "^3.0.1",
|
||||||
|
"remark-rehype": "^2.0.0",
|
||||||
|
"remark-stringify": "^3.0.1",
|
||||||
|
"sanitize-filename": "^1.6.1",
|
||||||
|
"semaphore": "^1.0.5",
|
||||||
|
"slate": "^0.30.0",
|
||||||
|
"slate-edit-list": "^0.10.1",
|
||||||
|
"slate-edit-table": "^0.12.0",
|
||||||
|
"slate-plain-serializer": "^0.4.0",
|
||||||
|
"slate-react": "0.10.11",
|
||||||
|
"slate-soft-break": "^0.6.0",
|
||||||
|
"toml-j0.4": "^1.1.1",
|
||||||
|
"tomlify-j0.4": "^3.0.0-alpha.0",
|
||||||
|
"unified": "^6.1.4",
|
||||||
|
"unist-builder": "^1.0.2",
|
||||||
|
"unist-util-visit-parents": "^1.1.1",
|
||||||
|
"url": "^0.11.0",
|
||||||
|
"uuid": "^3.1.0",
|
||||||
|
"what-input": "^5.0.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"cross-env": "^5.2.0",
|
||||||
|
"parcel-bundler": "^1.9.4"
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { partial } from 'lodash';
|
import { partial } from 'lodash';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
let component = null;
|
let component = null;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
import { flow } from "lodash";
|
import { flow } from "lodash";
|
||||||
import unsentRequest from "Lib/unsentRequest";
|
import unsentRequest from "netlify-cms-lib-util/unsentRequest";
|
||||||
import { then } from "Lib/promiseHelper";
|
import { then } from "netlify-cms-lib-util/promise";
|
||||||
import GitlabAPI from "Backends/gitlab/API";
|
import GitlabAPI from "Backends/gitlab/API";
|
||||||
|
|
||||||
export default class API extends GitlabAPI {
|
export default class API extends GitlabAPI {
|
@ -1,7 +1,7 @@
|
|||||||
import LocalForage from "Lib/LocalForage";
|
import localForage from "netlify-cms-lib-util/localForage";
|
||||||
import { Base64 } from "js-base64";
|
import { Base64 } from "js-base64";
|
||||||
import { uniq, initial, last, get, find, hasIn } from "lodash";
|
import { uniq, initial, last, get, find, hasIn } from "lodash";
|
||||||
import { filterPromises, resolvePromiseProperties } from "Lib/promiseHelper";
|
import { filterPromises, resolvePromiseProperties } from "netlify-cms-lib-util/promise";
|
||||||
import AssetProxy from "ValueObjects/AssetProxy";
|
import AssetProxy from "ValueObjects/AssetProxy";
|
||||||
import { SIMPLE, EDITORIAL_WORKFLOW, status } from "Constants/publishModes";
|
import { SIMPLE, EDITORIAL_WORKFLOW, status } from "Constants/publishModes";
|
||||||
import { APIError, EditorialWorkflowError } from "ValueObjects/errors";
|
import { APIError, EditorialWorkflowError } from "ValueObjects/errors";
|
||||||
@ -132,7 +132,7 @@ export default class API {
|
|||||||
.then(changeTree => this.commit(`Updating “${ key }” metadata`, changeTree))
|
.then(changeTree => this.commit(`Updating “${ key }” metadata`, changeTree))
|
||||||
.then(response => this.patchRef("meta", "_netlify_cms", response.sha))
|
.then(response => this.patchRef("meta", "_netlify_cms", response.sha))
|
||||||
.then(() => {
|
.then(() => {
|
||||||
LocalForage.setItem(`gh.meta.${ key }`, {
|
localForage.setItem(`gh.meta.${ key }`, {
|
||||||
expires: Date.now() + 300000, // In 5 minutes
|
expires: Date.now() + 300000, // In 5 minutes
|
||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
@ -141,7 +141,7 @@ export default class API {
|
|||||||
}
|
}
|
||||||
|
|
||||||
retrieveMetadata(key) {
|
retrieveMetadata(key) {
|
||||||
const cache = LocalForage.getItem(`gh.meta.${ key }`);
|
const cache = localForage.getItem(`gh.meta.${ key }`);
|
||||||
return cache.then((cached) => {
|
return cache.then((cached) => {
|
||||||
if (cached && cached.expires > Date.now()) { return cached.data; }
|
if (cached && cached.expires > Date.now()) { return cached.data; }
|
||||||
console.log("%c Checking for MetaData files", "line-height: 30px;text-align: center;font-weight: bold"); // eslint-disable-line
|
console.log("%c Checking for MetaData files", "line-height: 30px;text-align: center;font-weight: bold"); // eslint-disable-line
|
||||||
@ -176,13 +176,13 @@ export default class API {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getBlob(sha) {
|
getBlob(sha) {
|
||||||
return LocalForage.getItem(`gh.${sha}`).then(cached => {
|
return localForage.getItem(`gh.${sha}`).then(cached => {
|
||||||
if (cached) { return cached; }
|
if (cached) { return cached; }
|
||||||
|
|
||||||
return this.request(`${this.repoURL}/git/blobs/${sha}`, {
|
return this.request(`${this.repoURL}/git/blobs/${sha}`, {
|
||||||
headers: { Accept: "application/vnd.github.VERSION.raw" },
|
headers: { Accept: "application/vnd.github.VERSION.raw" },
|
||||||
}).then(result => {
|
}).then(result => {
|
||||||
LocalForage.setItem(`gh.${sha}`, result);
|
localForage.setItem(`gh.${sha}`, result);
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
});
|
});
|
@ -1,7 +1,7 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Authenticator from 'Lib/netlify-auth';
|
import Authenticator from 'netlify-cms-lib-auth/netlify-auth';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
export default class AuthenticationPage extends React.Component {
|
export default class AuthenticationPage extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
@ -1,9 +1,9 @@
|
|||||||
import LocalForage from "Lib/LocalForage";
|
import localForage from "netlify-cms-lib-util/localForage";
|
||||||
import { Base64 } from "js-base64";
|
import { Base64 } from "js-base64";
|
||||||
import { fromJS, List, Map } from "immutable";
|
import { fromJS, List, Map } from "immutable";
|
||||||
import { cond, flow, isString, partial, partialRight, pick, omit, set, update } from "lodash";
|
import { cond, flow, isString, partial, partialRight, pick, omit, set, update } from "lodash";
|
||||||
import unsentRequest from "Lib/unsentRequest";
|
import unsentRequest from "netlify-cms-lib-util/unsentRequest";
|
||||||
import { then } from "Lib/promiseHelper";
|
import { then } from "netlify-cms-lib-util/promise";
|
||||||
import AssetProxy from "ValueObjects/AssetProxy";
|
import AssetProxy from "ValueObjects/AssetProxy";
|
||||||
import { APIError } from "ValueObjects/errors";
|
import { APIError } from "ValueObjects/errors";
|
||||||
import Cursor from "ValueObjects/Cursor"
|
import Cursor from "ValueObjects/Cursor"
|
||||||
@ -67,14 +67,14 @@ export default class API {
|
|||||||
});
|
});
|
||||||
|
|
||||||
readFile = async (path, sha, ref=this.branch) => {
|
readFile = async (path, sha, ref=this.branch) => {
|
||||||
const cachedFile = sha ? await LocalForage.getItem(`gl.${ sha }`) : null;
|
const cachedFile = sha ? await localForage.getItem(`gl.${ sha }`) : null;
|
||||||
if (cachedFile) { return cachedFile; }
|
if (cachedFile) { return cachedFile; }
|
||||||
const result = await this.requestText({
|
const result = await this.requestText({
|
||||||
url: `${ this.repoURL }/repository/files/${ encodeURIComponent(path) }/raw`,
|
url: `${ this.repoURL }/repository/files/${ encodeURIComponent(path) }/raw`,
|
||||||
params: { ref },
|
params: { ref },
|
||||||
cache: "no-store",
|
cache: "no-store",
|
||||||
});
|
});
|
||||||
if (sha) { LocalForage.setItem(`gl.${ sha }`, result) }
|
if (sha) { localForage.setItem(`gl.${ sha }`, result) }
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import NetlifyAuthenticator from 'Lib/netlify-auth';
|
import NetlifyAuthenticator from 'netlify-cms-lib-auth/netlify-auth';
|
||||||
import ImplicitAuthenticator from 'Lib/implicit-oauth';
|
import ImplicitAuthenticator from 'netlify-cms-lib-auth/implicit-oauth';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
export default class AuthenticationPage extends React.Component {
|
export default class AuthenticationPage extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
@ -19,6 +19,7 @@ export default class AuthenticationPage extends React.Component {
|
|||||||
base_url: this.props.config.getIn(['backend', 'base_url'], "https://gitlab.com"),
|
base_url: this.props.config.getIn(['backend', 'base_url'], "https://gitlab.com"),
|
||||||
auth_endpoint: this.props.config.getIn(['backend', 'auth_endpoint'], 'oauth/authorize'),
|
auth_endpoint: this.props.config.getIn(['backend', 'auth_endpoint'], 'oauth/authorize'),
|
||||||
app_id: this.props.config.getIn(['backend', 'app_id']),
|
app_id: this.props.config.getIn(['backend', 'app_id']),
|
||||||
|
clearHash: this.props.clearHash,
|
||||||
});
|
});
|
||||||
// Complete implicit authentication if we were redirected back to from the provider.
|
// Complete implicit authentication if we were redirected back to from the provider.
|
||||||
this.auth.completeAuth((err, data) => {
|
this.auth.completeAuth((err, data) => {
|
@ -1,7 +1,7 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
export default class AuthenticationPage extends React.Component {
|
export default class AuthenticationPage extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
@ -21,7 +21,7 @@ function bootstrap(opts = {}) {
|
|||||||
/**
|
/**
|
||||||
* Log the version number.
|
* Log the version number.
|
||||||
*/
|
*/
|
||||||
console.log(`Netlify CMS version ${NETLIFY_CMS_VERSION}`);
|
console.log(`Netlify CMS version ${process.env.NETLIFY_CMS_VERSION}`);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get DOM element where app will mount.
|
* Get DOM element where app will mount.
|
@ -12,7 +12,9 @@ import { currentBackend } from 'Backends/backend';
|
|||||||
import { showCollection, createNewEntry } from 'Actions/collections';
|
import { showCollection, createNewEntry } from 'Actions/collections';
|
||||||
import { openMediaLibrary as actionOpenMediaLibrary } from 'Actions/mediaLibrary';
|
import { openMediaLibrary as actionOpenMediaLibrary } from 'Actions/mediaLibrary';
|
||||||
import MediaLibrary from 'MediaLibrary/MediaLibrary';
|
import MediaLibrary from 'MediaLibrary/MediaLibrary';
|
||||||
import { Loader, Toast } from 'UI';
|
import { Toast } from 'UI';
|
||||||
|
import { Loader } from 'netlify-cms-ui-default';
|
||||||
|
import history from 'Routing/history';
|
||||||
import { getCollectionUrl, getNewEntryUrl } from 'Lib/urlHelper';
|
import { getCollectionUrl, getNewEntryUrl } from 'Lib/urlHelper';
|
||||||
import { SIMPLE, EDITORIAL_WORKFLOW } from 'Constants/publishModes';
|
import { SIMPLE, EDITORIAL_WORKFLOW } from 'Constants/publishModes';
|
||||||
import Collection from 'Collection/Collection';
|
import Collection from 'Collection/Collection';
|
||||||
@ -87,6 +89,7 @@ class App extends React.Component {
|
|||||||
base_url: this.props.config.getIn(["backend", "base_url"], null),
|
base_url: this.props.config.getIn(["backend", "base_url"], null),
|
||||||
authEndpoint: this.props.config.getIn(["backend", "auth_endpoint"]),
|
authEndpoint: this.props.config.getIn(["backend", "auth_endpoint"]),
|
||||||
config: this.props.config,
|
config: this.props.config,
|
||||||
|
clearHash: () => history.replace('/'),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import ImmutablePropTypes from "react-immutable-proptypes";
|
import ImmutablePropTypes from "react-immutable-proptypes";
|
||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
import { Icon, Dropdown, DropdownItem } from 'UI';
|
import { Icon, Dropdown, DropdownItem } from 'netlify-cms-ui-default';
|
||||||
import { stripProtocol } from 'Lib/urlHelper';
|
import { stripProtocol } from 'Lib/urlHelper';
|
||||||
|
|
||||||
export default class Header extends React.Component {
|
export default class Header extends React.Component {
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import c from 'classnames';
|
import c from 'classnames';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
import { VIEW_STYLE_LIST, VIEW_STYLE_GRID } from 'Constants/collectionViews';
|
import { VIEW_STYLE_LIST, VIEW_STYLE_GRID } from 'Constants/collectionViews';
|
||||||
|
|
||||||
const CollectionTop = ({
|
const CollectionTop = ({
|
@ -1,7 +1,7 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import { Loader } from 'UI';
|
import { Loader } from 'netlify-cms-ui-default';
|
||||||
import EntryListing from './EntryListing';
|
import EntryListing from './EntryListing';
|
||||||
|
|
||||||
const Entries = ({
|
const Entries = ({
|
@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import c from 'classnames';
|
import c from 'classnames';
|
||||||
import history from 'Routing/history';
|
import history from 'Routing/history';
|
||||||
import { resolvePath } from 'Lib/pathHelper';
|
import { resolvePath } from 'netlify-cms-lib-util/path';
|
||||||
import { VIEW_STYLE_LIST, VIEW_STYLE_GRID } from 'Constants/collectionViews';
|
import { VIEW_STYLE_LIST, VIEW_STYLE_GRID } from 'Constants/collectionViews';
|
||||||
|
|
||||||
const CollectionLabel = ({ label }) =>
|
const CollectionLabel = ({ label }) =>
|
@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
import { NavLink } from 'react-router-dom';
|
import { NavLink } from 'react-router-dom';
|
||||||
import { searchCollections } from 'Actions/collections';
|
import { searchCollections } from 'Actions/collections';
|
||||||
import { getCollectionUrl } from 'Lib/urlHelper';
|
import { getCollectionUrl } from 'Lib/urlHelper';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
export default class Collection extends React.Component {
|
export default class Collection extends React.Component {
|
||||||
|
|
@ -27,7 +27,7 @@ import { addAsset } from 'Actions/media';
|
|||||||
import { openMediaLibrary, removeInsertedMedia } from 'Actions/mediaLibrary';
|
import { openMediaLibrary, removeInsertedMedia } from 'Actions/mediaLibrary';
|
||||||
import { selectEntry, selectUnpublishedEntry, getAsset } from 'Reducers';
|
import { selectEntry, selectUnpublishedEntry, getAsset } from 'Reducers';
|
||||||
import { selectFields } from 'Reducers/collections';
|
import { selectFields } from 'Reducers/collections';
|
||||||
import { Loader } from 'UI';
|
import { Loader } from 'netlify-cms-ui-default';
|
||||||
import { status } from 'Constants/publishModes';
|
import { status } from 'Constants/publishModes';
|
||||||
import { EDITORIAL_WORKFLOW } from 'Constants/publishModes';
|
import { EDITORIAL_WORKFLOW } from 'Constants/publishModes';
|
||||||
import EditorInterface from './EditorInterface';
|
import EditorInterface from './EditorInterface';
|
@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
import SplitPane from 'react-split-pane';
|
import SplitPane from 'react-split-pane';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { ScrollSync, ScrollSyncPane } from './EditorScrollSync';
|
import { ScrollSync, ScrollSyncPane } from './EditorScrollSync';
|
||||||
import { Icon } from 'UI'
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
import EditorControlPane from './EditorControlPane/EditorControlPane';
|
import EditorControlPane from './EditorControlPane/EditorControlPane';
|
||||||
import EditorPreviewPane from './EditorPreviewPane/EditorPreviewPane';
|
import EditorPreviewPane from './EditorPreviewPane/EditorPreviewPane';
|
||||||
import EditorToolbar from './EditorToolbar';
|
import EditorToolbar from './EditorToolbar';
|
@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import c from 'classnames';
|
import c from 'classnames';
|
||||||
import { Icon } from 'UI';
|
import { Icon } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
const EditorToggle = ({ enabled, active, onClick, icon }) => !enabled ? null :
|
const EditorToggle = ({ enabled, active, onClick, icon }) => !enabled ? null :
|
||||||
<button className={c('nc-editor-toggle', {'nc-editor-toggleActive': active })} onClick={onClick}>
|
<button className={c('nc-editor-toggle', {'nc-editor-toggleActive': active })} onClick={onClick}>
|
@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
import c from 'classnames';
|
import c from 'classnames';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { status } from 'Constants/publishModes';
|
import { status } from 'Constants/publishModes';
|
||||||
import { Icon, Dropdown, DropdownItem } from 'UI';
|
import { Icon, Dropdown, DropdownItem } from 'netlify-cms-ui-default';
|
||||||
import { stripProtocol } from 'Lib/urlHelper';
|
import { stripProtocol } from 'Lib/urlHelper';
|
||||||
|
|
||||||
export default class EditorToolbar extends React.Component {
|
export default class EditorToolbar extends React.Component {
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from "react-immutable-proptypes";
|
import ImmutablePropTypes from "react-immutable-proptypes";
|
||||||
import { isBoolean } from 'lodash';
|
import { isBoolean } from 'lodash';
|
||||||
import { Toggle } from 'UI';
|
import { Toggle } from 'netlify-cms-ui-default';
|
||||||
|
|
||||||
export default class BooleanControl extends React.Component {
|
export default class BooleanControl extends React.Component {
|
||||||
render() {
|
render() {
|