@zohodesk/react-cli 0.0.1-exp.161.1 → 0.0.1-exp.161.2
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +11 -1
- package/lib/pluginUtils/getDevPlugins.js +2 -0
- package/lib/pluginUtils/getProdPlugins.js +2 -0
- package/lib/plugins/EFCPlugin.js +15 -1
- package/lib/plugins/EFCTemplatePlugin.js +151 -0
- package/lib/schemas/index.js +2 -1
- package/node_modules0/history/CHANGES.md +395 -0
- package/node_modules0/history/DOMUtils.js +3 -0
- package/node_modules0/history/ExecutionEnvironment.js +3 -0
- package/node_modules0/history/LICENSE +21 -0
- package/node_modules0/history/LocationUtils.js +3 -0
- package/node_modules0/history/PathUtils.js +3 -0
- package/node_modules0/history/README.md +282 -0
- package/node_modules0/history/cjs/history.js +933 -0
- package/node_modules0/history/cjs/history.min.js +1 -0
- package/node_modules0/history/createBrowserHistory.js +3 -0
- package/node_modules0/history/createHashHistory.js +3 -0
- package/node_modules0/history/createMemoryHistory.js +3 -0
- package/node_modules0/history/createTransitionManager.js +3 -0
- package/node_modules0/history/es/DOMUtils.js +7 -0
- package/node_modules0/history/es/ExecutionEnvironment.js +7 -0
- package/node_modules0/history/es/LocationUtils.js +7 -0
- package/node_modules0/history/es/PathUtils.js +7 -0
- package/node_modules0/history/es/createBrowserHistory.js +7 -0
- package/node_modules0/history/es/createHashHistory.js +7 -0
- package/node_modules0/history/es/createMemoryHistory.js +7 -0
- package/node_modules0/history/es/createTransitionManager.js +7 -0
- package/node_modules0/history/es/warnAboutDeprecatedESMImport.js +35 -0
- package/node_modules0/history/esm/history.js +904 -0
- package/node_modules0/history/index.js +7 -0
- package/node_modules0/history/package.json +120 -0
- package/node_modules0/history/umd/history.js +1059 -0
- package/node_modules0/history/umd/history.min.js +1 -0
- package/node_modules0/history/warnAboutDeprecatedCJSRequire.js +35 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -2,10 +2,20 @@
|
|
2
2
|
|
3
3
|
A CLI tool for build modern web application and libraries
|
4
4
|
|
5
|
+
# 0.0.1-exp.161.2
|
6
|
+
|
7
|
+
- Features
|
8
|
+
- feature added for efc `templateFilePath` in `paakage.json` option palce is `"react-cli" => "efc" `
|
9
|
+
- `(('publicPath'))` this placeholder will be replace as publicPath string `publicPath`
|
10
|
+
- `(('getInitalAssets'))` this placeholder will be replace as function `getInitalAssets`
|
11
|
+
- `getInitalAssets` this function has two arguments `assetsType`, `lang`
|
12
|
+
- `assetsType` are `js`, `css`, `i18n`
|
13
|
+
- `lang` this argument only works when `i18n` is `assetsType`
|
14
|
+
|
5
15
|
# 0.0.1-exp.161.1
|
6
16
|
|
7
17
|
- Features
|
8
|
-
- feature added for efc cdnStatement
|
18
|
+
- feature added for efc `cdnStatement`
|
9
19
|
- Issue fixes:-
|
10
20
|
- css classname hash change issue fix
|
11
21
|
- debug package conflit issue fix in nock in (react-cli test)
|
@@ -55,6 +55,7 @@ let getDevPlugins = (options, publicPath) => {
|
|
55
55
|
},
|
56
56
|
efc: {
|
57
57
|
hasEFC: newOptionForEnableEFC,
|
58
|
+
templateFilePath,
|
58
59
|
nameScope: efcNameSpace,
|
59
60
|
localeAttr: efcLocaleAttr
|
60
61
|
},
|
@@ -162,6 +163,7 @@ let getDevPlugins = (options, publicPath) => {
|
|
162
163
|
plugins.push(new _plugins.EFCPlugin({
|
163
164
|
isDevelopment: true,
|
164
165
|
i18nManifestFileName,
|
166
|
+
templateFilePath,
|
165
167
|
i18nFileNameTemplate,
|
166
168
|
serverUrl: publicPath,
|
167
169
|
entryPointName: 'efc',
|
@@ -72,6 +72,7 @@ let getProdPlugins = (options, publicPath = '') => {
|
|
72
72
|
const {
|
73
73
|
hasEFC: newOptionForEnableEFC,
|
74
74
|
nameScope: efcNameSpace,
|
75
|
+
templateFilePath,
|
75
76
|
localeAttr: efcLocaleAttr
|
76
77
|
} = options.efc;
|
77
78
|
const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
|
@@ -166,6 +167,7 @@ let getProdPlugins = (options, publicPath = '') => {
|
|
166
167
|
isDevelopment,
|
167
168
|
serverUrl: publicPath,
|
168
169
|
i18nFileNameTemplate,
|
170
|
+
templateFilePath,
|
169
171
|
i18nManifestFileName,
|
170
172
|
entryPointName: 'efc',
|
171
173
|
// outputFile: 'zohodesk-efc-sdk-latest.js',
|
package/lib/plugins/EFCPlugin.js
CHANGED
@@ -17,6 +17,8 @@ var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nK
|
|
17
17
|
|
18
18
|
var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
|
19
19
|
|
20
|
+
var _EFCTemplatePlugin = _interopRequireDefault(require("./EFCTemplatePlugin"));
|
21
|
+
|
20
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
23
|
|
22
24
|
// import { getShortI18nAssets } from './I18nSplitPlugin/utils/hashUtils';
|
@@ -41,6 +43,7 @@ const {
|
|
41
43
|
class EFCPlugin {
|
42
44
|
constructor(options = {}) {
|
43
45
|
this.isDevelopment = options.isDevelopment;
|
46
|
+
this.templateFilePath = options.templateFilePath;
|
44
47
|
this.serverUrl = options.serverUrl;
|
45
48
|
this.i18nFileNameTemplate = options.i18nFileNameTemplate; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
46
49
|
// this.i18nManifestFileName = options.i18nManifestFileName;
|
@@ -154,7 +157,7 @@ class EFCPlugin {
|
|
154
157
|
window["${cdnVariableName}"] = 'https:' + getAssetUrl('css') + '/';
|
155
158
|
}
|
156
159
|
|
157
|
-
let initalI18nAssets = ${initalI18nAssets}
|
160
|
+
let initalI18nAssets = ${initalI18nAssets};
|
158
161
|
let initialAssets = initalI18nAssets.concat(${JSON.stringify(enableRTLSplit ? filteredInitialFiles.map(filePath => (0, _replaceCssDirTemplate.replaceCssDirTemplate)(filePath, cssDirTemplate)) : filteredInitialFiles)});
|
159
162
|
|
160
163
|
let loadAsset = (id, type, url) => {
|
@@ -202,6 +205,17 @@ class EFCPlugin {
|
|
202
205
|
apply(compiler) {
|
203
206
|
if (!createSDkFile) {
|
204
207
|
return;
|
208
|
+
} //console.log('this.templateFilePath', this.templateFilePath, this.options);
|
209
|
+
|
210
|
+
|
211
|
+
if (this.templateFilePath) {
|
212
|
+
new _EFCTemplatePlugin.default({
|
213
|
+
templateFilePath: this.templateFilePath,
|
214
|
+
publicPath: this.serverUrl,
|
215
|
+
i18nFileNameTemplate: this.i18nFileNameTemplate,
|
216
|
+
entryPointName: this.options.entryPointName
|
217
|
+
}).apply(compiler);
|
218
|
+
return;
|
205
219
|
}
|
206
220
|
|
207
221
|
compiler.hooks.emit.tap('EFCPlugin', compilation => {
|
@@ -0,0 +1,151 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _webpackSources = require("webpack-sources");
|
9
|
+
|
10
|
+
var _utils = require("../utils");
|
11
|
+
|
12
|
+
var _path = _interopRequireDefault(require("path"));
|
13
|
+
|
14
|
+
var _fs = require("fs");
|
15
|
+
|
16
|
+
var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUrlPathTemplate");
|
17
|
+
|
18
|
+
var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nKeysIdentifer"));
|
19
|
+
|
20
|
+
var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
|
21
|
+
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
|
+
|
24
|
+
// import { getShortI18nAssets } from './I18nSplitPlugin/utils/hashUtils';
|
25
|
+
const cliOptions = (0, _utils.getOptions)();
|
26
|
+
const {
|
27
|
+
i18n: {
|
28
|
+
chunkSplitEnable
|
29
|
+
},
|
30
|
+
css: {
|
31
|
+
enableRTLSplit
|
32
|
+
},
|
33
|
+
efc: efcOptios
|
34
|
+
} = cliOptions;
|
35
|
+
const {
|
36
|
+
createSDkFile
|
37
|
+
} = efcOptios; // for smap relate changes
|
38
|
+
// CdnChangePlugin
|
39
|
+
// SourceMapHookPlugin
|
40
|
+
|
41
|
+
class EFCTemplatePlugin {
|
42
|
+
constructor(options = {}) {
|
43
|
+
// console.log(' templateFilePath ', process.cwd(), options.templateFilePath, templateFilePath);
|
44
|
+
this.templateFilePath = _path.default.join(process.cwd(), options.templateFilePath); // console.log(' templateFilePath ', this.templateFilePath);
|
45
|
+
|
46
|
+
this.i18nFileNameTemplate = options.i18nFileNameTemplate;
|
47
|
+
this.publicPath = options.publicPath; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
48
|
+
// this.i18nManifestFileName = options.i18nManifestFileName;
|
49
|
+
// IMPORTANT: here we mergeing optionds from pacakge.json and options via constructor
|
50
|
+
// So when debugging consider this as well
|
51
|
+
// this.options = Object.assign({}, efcOptios, options);
|
52
|
+
|
53
|
+
this.entryPointName = options.entryPointName || 'efc';
|
54
|
+
this.outputFile = efcOptios.outputFile.replace('[version]', efcOptios.version);
|
55
|
+
} // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
56
|
+
// getI18nManifest(compilation) {
|
57
|
+
// const i18nManifestFile =
|
58
|
+
// compilation.assets[this.options.i18nManifestFileName];
|
59
|
+
// if (i18nManifestFile) {
|
60
|
+
// const manifest = JSON.parse(i18nManifestFile.source());
|
61
|
+
// return manifest;
|
62
|
+
// }
|
63
|
+
// return {};
|
64
|
+
// }
|
65
|
+
|
66
|
+
|
67
|
+
getI18nAssetsStr(entryPoint, compilation) {
|
68
|
+
// NOTE: we have used lang variable inside
|
69
|
+
if (!chunkSplitEnable) {
|
70
|
+
let i18nAsstes = {};
|
71
|
+
let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1); //hook for i18n url contains i18n/ may cause problem
|
72
|
+
|
73
|
+
i18nAsstes = i18nFiles.reduce((res, i18nFilePath) => {
|
74
|
+
let fileName = i18nFilePath.replace(`i18n${_path.default.sep}`, '');
|
75
|
+
let splittedFileName = fileName.split('.');
|
76
|
+
res[splittedFileName[0]] = i18nFilePath;
|
77
|
+
return res;
|
78
|
+
}, {});
|
79
|
+
return `[${JSON.stringify(i18nAsstes)}[lang]]`;
|
80
|
+
}
|
81
|
+
|
82
|
+
let initalI18nAssets = entryPoint.chunks.filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).map(chunk => (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@'));
|
83
|
+
return `${JSON.stringify(initalI18nAssets)}.map(urlpath => urlpath.replace(/@locale@/g, lang))`;
|
84
|
+
}
|
85
|
+
|
86
|
+
templateReplacer(entryPoint, compilation) {
|
87
|
+
const cssDirTemplate = '@dir@'; // const i18nManifest = this.getI18nManifest(compilation);
|
88
|
+
|
89
|
+
const initialFiles = entryPoint.getFiles();
|
90
|
+
const filteredInitialFiles = initialFiles.filter(file => /\.(css|js)$/.test(file));
|
91
|
+
const initialJsFiles = filteredInitialFiles.filter(file => /\.js$/.test(file));
|
92
|
+
let initialCssFiles = filteredInitialFiles.filter(file => /\.css$/.test(file));
|
93
|
+
|
94
|
+
if (enableRTLSplit) {
|
95
|
+
initialCssFiles = initialCssFiles.map(filePath => (0, _replaceCssDirTemplate.replaceCssDirTemplate)(filePath, cssDirTemplate));
|
96
|
+
} // const i18nAssets = getShortI18nAssets(
|
97
|
+
// entryPoint.chunks,
|
98
|
+
// i18nManifest,
|
99
|
+
// '' // i18nJsPath
|
100
|
+
// );
|
101
|
+
|
102
|
+
|
103
|
+
const initalI18nAssets = this.getI18nAssetsStr(entryPoint, compilation, '' // i18nJsPath
|
104
|
+
);
|
105
|
+
let templateStr = (0, _fs.readFileSync)(this.templateFilePath).toString();
|
106
|
+
return templateStr.replace('((\'getInitalAssets\'))', `function getInitalAssets(assetsType, lang) {
|
107
|
+
if (assetsType === "js") {
|
108
|
+
return ${JSON.stringify(initialJsFiles)}
|
109
|
+
}
|
110
|
+
if (assetsType === "css") {
|
111
|
+
return ${JSON.stringify(initialCssFiles)}
|
112
|
+
}
|
113
|
+
if (assetsType === "i18n") {
|
114
|
+
return ${initalI18nAssets};
|
115
|
+
}
|
116
|
+
return [];
|
117
|
+
}`).replace('((\'@dir@\'))', '\'@dir@\'').replace('((\'publicPath\'))', this.publicPath).replace('((\'@locale@\'))', '\'@locale@\'');
|
118
|
+
}
|
119
|
+
|
120
|
+
apply(compiler) {
|
121
|
+
if (!createSDkFile) {
|
122
|
+
return;
|
123
|
+
}
|
124
|
+
|
125
|
+
compiler.hooks.emit.tap('EFCTemplatePlugin', compilation => {
|
126
|
+
const {
|
127
|
+
entryPointName,
|
128
|
+
outputFile
|
129
|
+
} = this;
|
130
|
+
const entryPoint = compilation.entrypoints.get(entryPointName);
|
131
|
+
|
132
|
+
if (!entryPoint) {
|
133
|
+
return;
|
134
|
+
}
|
135
|
+
|
136
|
+
if (!(0, _fs.existsSync)(this.templateFilePath)) {
|
137
|
+
console.error(`EFC Template file not exists ${this.templateFilePath}`);
|
138
|
+
return;
|
139
|
+
}
|
140
|
+
|
141
|
+
const source = new _webpackSources.RawSource(this.templateReplacer(entryPoint, compilation));
|
142
|
+
compilation.assets[outputFile] = source; // console.log('EFCTemplatePlugin working');
|
143
|
+
// eslint-disable-next-line no-console
|
144
|
+
|
145
|
+
console.log('The EFC embedded code was created successfully..!!!');
|
146
|
+
});
|
147
|
+
}
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
exports.default = EFCTemplatePlugin;
|
package/lib/schemas/index.js
CHANGED
@@ -42,13 +42,14 @@ var _default = {
|
|
42
42
|
nameScope: 'ZOHODESK',
|
43
43
|
version: 'default',
|
44
44
|
outputFile: 'zohodesk-efc-sdk-[version].js',
|
45
|
+
templateFilePath: '',
|
45
46
|
localeAttr: 'data-efc-locale',
|
46
47
|
localeDefaultValue: 'en_US',
|
47
48
|
localeStatement: null,
|
48
49
|
cssDirAttr: 'data-efc-dir',
|
49
50
|
cssDirDefaultValue: 'ltr',
|
50
51
|
cdnStatement: '',
|
51
|
-
// cdnStatement:
|
52
|
+
// cdnStatement: "new URL(document.querySelector(\"script[src*='zohodesk-efc-sdk']\").src).origin",
|
52
53
|
cssDirStatement: null
|
53
54
|
},
|
54
55
|
app: {
|
@@ -0,0 +1,395 @@
|
|
1
|
+
## [v4.6.3]
|
2
|
+
> Jun 20, 2017
|
3
|
+
|
4
|
+
- Add main/module entries to package.json (thanks @pshrmn)
|
5
|
+
|
6
|
+
[v4.6.3]: https://github.com/ReactTraining/history/compare/v4.6.2...v4.6.3
|
7
|
+
|
8
|
+
## [v4.6.2]
|
9
|
+
> Jun 14, 2017
|
10
|
+
|
11
|
+
- Rely on the user/browser to encode pathname portion of the URL
|
12
|
+
- Add more complete basename matching support (case insensitive matching, basename must be a complete match, see [#459])
|
13
|
+
|
14
|
+
[v4.6.2]: https://github.com/ReactTraining/history/compare/v4.6.1...v4.6.2
|
15
|
+
[#459]: https://github.com/ReactTraining/history/pull/459
|
16
|
+
|
17
|
+
## [v4.6.1]
|
18
|
+
> Mar 15, 2017
|
19
|
+
|
20
|
+
- Only encode/decode pathname portion of the URL (see [#445])
|
21
|
+
|
22
|
+
[v4.6.1]: https://github.com/ReactTraining/history/compare/v4.6.0...v4.6.1
|
23
|
+
[#445]: https://github.com/ReactTraining/history/pull/445
|
24
|
+
|
25
|
+
## [v4.6.0]
|
26
|
+
> Mar 7, 2017
|
27
|
+
|
28
|
+
- Encode/decode URLs
|
29
|
+
- Added `location.key` to the initial location in memory history
|
30
|
+
- Added ES modules build in `es` package directory
|
31
|
+
- Improve `basename` slash handling (source of a common user error, see [#404] and [#432])
|
32
|
+
|
33
|
+
[v4.6.0]: https://github.com/ReactTraining/history/compare/v4.5.1...v4.6.0
|
34
|
+
[#404]: https://github.com/ReactTraining/history/issues/404
|
35
|
+
[#432]: https://github.com/ReactTraining/history/pull/432
|
36
|
+
|
37
|
+
## [v4.5.1]
|
38
|
+
> Jan 9, 2017
|
39
|
+
|
40
|
+
- Fix a bug that allowed a history listener to still be called if it was
|
41
|
+
unregistered in another listener
|
42
|
+
|
43
|
+
[v4.5.1]: https://github.com/ReactTraining/history/compare/v4.5.0...v4.5.1
|
44
|
+
|
45
|
+
## [v4.5.0]
|
46
|
+
> Dec 14, 2016
|
47
|
+
|
48
|
+
- Added `history.createHref(location)` for creating hrefs suitable for use in `<a href>`
|
49
|
+
|
50
|
+
[v4.5.0]: https://github.com/ReactTraining/history/compare/v4.4.1...v4.5.0
|
51
|
+
|
52
|
+
## [v4.4.1]
|
53
|
+
> Nov 24, 2016
|
54
|
+
|
55
|
+
- Fix the back button on Chrome iOS
|
56
|
+
|
57
|
+
[v4.4.1]: https://github.com/ReactTraining/history/compare/v4.4.0...v4.4.1
|
58
|
+
|
59
|
+
## [v4.4.0]
|
60
|
+
> Nov 1, 2016
|
61
|
+
|
62
|
+
- Use `value-equal` instead of own `deepEqual` function for checking state equality
|
63
|
+
|
64
|
+
[v4.4.0]: https://github.com/ReactTraining/history/compare/v4.3.0...v4.4.0
|
65
|
+
|
66
|
+
## [v4.3.0]
|
67
|
+
> Sep 29, 2016
|
68
|
+
|
69
|
+
- Allow relative pathnames in `history.push` and `history.replace` ([#135])
|
70
|
+
|
71
|
+
[v4.3.0]: https://github.com/ReactTraining/history/compare/v4.2.1...v4.3.0
|
72
|
+
[#135]: https://github.com/ReactTraining/history/issues/135
|
73
|
+
|
74
|
+
## [v4.2.1]
|
75
|
+
> Sep 29, 2016
|
76
|
+
|
77
|
+
- Fixed `createLocation` defaults when using objects instead of strings
|
78
|
+
|
79
|
+
[v4.2.1]: https://github.com/ReactTraining/history/compare/v4.2.0...v4.2.1
|
80
|
+
|
81
|
+
## [v4.2.0]
|
82
|
+
> Sep 15, 2016
|
83
|
+
|
84
|
+
- Add `createLocation` to top-level exports
|
85
|
+
- Better warnings
|
86
|
+
|
87
|
+
[v4.2.0]: https://github.com/ReactTraining/history/compare/v4.1.0...v4.2.0
|
88
|
+
|
89
|
+
## [v4.1.0]
|
90
|
+
> Sep 15, 2016
|
91
|
+
|
92
|
+
- Automatically use a leading `/` when doing `history.push('')`
|
93
|
+
- Automatically clean up bad location descriptors
|
94
|
+
|
95
|
+
[v4.1.0]: https://github.com/ReactTraining/history/compare/v4.0.0...v4.1.0
|
96
|
+
|
97
|
+
## [v4.0.0]
|
98
|
+
> Sep 10, 2016
|
99
|
+
|
100
|
+
- Added back two-arg form of `push` and `replace`
|
101
|
+
|
102
|
+
[v4.0.0]: https://github.com/ReactTraining/history/compare/v4.0.0-2...v4.0.0
|
103
|
+
|
104
|
+
## [v4.0.0-2]
|
105
|
+
> Sep 9, 2016
|
106
|
+
|
107
|
+
- Added `history.length`, `history.location`, and `history.action` properties
|
108
|
+
- Added `history.index` and `history.entries` properties in memory history
|
109
|
+
- Added `location.pathname`, `location.search`, and `location.hash` instead of
|
110
|
+
`location.path` since this is work most people will always have to do
|
111
|
+
- Added `parsePath` and `createPath` helpers to top-level exports
|
112
|
+
- Removed `history.getCurrentLocation()`
|
113
|
+
|
114
|
+
[v4.0.0-2]: https://github.com/ReactTraining/history/compare/v4.0.0-1...v4.0.0-2
|
115
|
+
|
116
|
+
## [v4.0.0-1]
|
117
|
+
> Sep 6, 2016
|
118
|
+
|
119
|
+
- Fix blocking POP transitions in browsers where listen() has not yet been called
|
120
|
+
- Use block(false) to prevent transitions
|
121
|
+
- Better warnings for PUSH with the same path using hash history
|
122
|
+
|
123
|
+
[v4.0.0-1]: https://github.com/ReactTraining/history/compare/v4.0.0-0...v4.0.0-1
|
124
|
+
|
125
|
+
## [v4.0.0-0]
|
126
|
+
> Sep 3, 2016
|
127
|
+
|
128
|
+
- Easier top-level `import`s. Use `import createHistory from "history/createBrowserHistory"` instead of `history/lib/createBrowserHistory`.
|
129
|
+
- Removed the "middleware" API (i.e. all "use" functions).
|
130
|
+
- Moved path and query parsing out of core. Location objects are now `{ path, state, key }`. Any other parsing can be done outside core.
|
131
|
+
- Removed the `Actions` module. `location.action` is now just a string. No need to `import` our constants.
|
132
|
+
- Switched to using `window.history.state` in `createBrowserHistory` instead of `sessionStorage`.
|
133
|
+
- Removed `location.state` entirely from `createHashHistory` locations.
|
134
|
+
- Removed support for basename in `createMemoryHistory`.
|
135
|
+
- Refactored the test suite. Tests are much more flexible and easier to zero in on one that is failing.
|
136
|
+
|
137
|
+
[v4.0.0-0]: https://github.com/ReactTraining/history/compare/v3.2.1...v4.0.0-0
|
138
|
+
|
139
|
+
## [v3.2.0]
|
140
|
+
> Sep 1, 2016
|
141
|
+
|
142
|
+
- Exposed `canGo` in memory history
|
143
|
+
|
144
|
+
[v3.2.0]: https://github.com/ReactTraining/history/compare/v3.1.0...v3.2.0
|
145
|
+
|
146
|
+
## [v3.1.0]
|
147
|
+
> Sep 1, 2016
|
148
|
+
|
149
|
+
- Added `hashType` option to hash history for supporting different
|
150
|
+
hash URL schemes including "hashbang" and no leading slash
|
151
|
+
- **Bugfix:** Fix URL restoration on canceled popstate transitions
|
152
|
+
- Better React Native support
|
153
|
+
|
154
|
+
[v3.1.0]: https://github.com/ReactTraining/history/compare/v3.0.0...v3.1.0
|
155
|
+
|
156
|
+
## [v3.0.0]
|
157
|
+
> May 30, 2016
|
158
|
+
|
159
|
+
- `location.query` has no prototype
|
160
|
+
- Warn about protocol-relative URLs ([#243])
|
161
|
+
- **Bugfix:** Ignore errors when saving hash history state if
|
162
|
+
`window.sessionStorage` is undefined ([#295])
|
163
|
+
- **Bugfix:** Fix replacing hash path in IE served via file protocol ([#126])
|
164
|
+
|
165
|
+
[v3.0.0]: https://github.com/ReactTraining/history/compare/v3.0.0-2...v3.0.0
|
166
|
+
[#243]: https://github.com/ReactTraining/history/issues/243
|
167
|
+
[#295]: https://github.com/ReactTraining/history/issues/295
|
168
|
+
[#126]: https://github.com/ReactTraining/history/issues/126
|
169
|
+
|
170
|
+
## [v3.0.0-2]
|
171
|
+
> Apr 19, 2016
|
172
|
+
|
173
|
+
- Lower-cased UMD build file name
|
174
|
+
|
175
|
+
[v3.0.0-2]: https://github.com/ReactTraining/history/compare/v3.0.0-1...v3.0.0-2
|
176
|
+
|
177
|
+
## [v3.0.0-1]
|
178
|
+
> Apr 19, 2016
|
179
|
+
|
180
|
+
- Added `locationsAreEqual` to top-level exports
|
181
|
+
- **Breakage:** Removed support for `<base href>` as `basename` ([#94])
|
182
|
+
- Removed dependency on `deep-equal`
|
183
|
+
|
184
|
+
[v3.0.0-1]: https://github.com/ReactTraining/history/compare/v3.0.0-0...v3.0.0-1
|
185
|
+
[#94]: https://github.com/ReactTraining/history/issues/94
|
186
|
+
|
187
|
+
## [3.0.0-0]
|
188
|
+
> Mar 19, 2016
|
189
|
+
|
190
|
+
- Added `history.getCurrentLocation()` method
|
191
|
+
- **Breakage:** `history.listen` no longer calls the callback synchronously once.
|
192
|
+
Use `history.getCurrentLocation` instead
|
193
|
+
- **Breakage:** `location.key` on the initial POP is `null`. Users who relied on
|
194
|
+
this key may immediately use `replace` to get it back
|
195
|
+
- **Breakage:** `location.state` is `undefined` (instead of `null`) if the location
|
196
|
+
has no state. This helps us know when we need to access session storage and when
|
197
|
+
we can safely ignore it
|
198
|
+
- **Bugfix:** Hash history now uses a custom query string key/value pair only if
|
199
|
+
the location has state. This obsoletes using `{ queryKey: false }` to prevent
|
200
|
+
the query string from being used ([#163])
|
201
|
+
- **Bugfix:** Do not access `window.sessionStorage` unless the location has state.
|
202
|
+
This should minimize the # of times we access session storage and allow users to
|
203
|
+
opt-out of using it entirely by not using location state
|
204
|
+
|
205
|
+
[3.0.0-0]: https://github.com/ReactTraining/history/compare/v2.0.0...v3.0.0-0
|
206
|
+
[#163]: https://github.com/ReactTraining/history/issues/163
|
207
|
+
|
208
|
+
## [v2.0.0]
|
209
|
+
> Feb 4, 2016
|
210
|
+
|
211
|
+
- **Bugfix:** Fix search base logic with an empty query ([#221])
|
212
|
+
- **Bugfix:** Fail gracefully when Safari 5 security settings prevent access to window.sessionStorage ([#223])
|
213
|
+
|
214
|
+
[v2.0.0]: https://github.com/ReactTraining/history/compare/v2.0.0-rc3...v2.0.0
|
215
|
+
[#221]: https://github.com/ReactTraining/history/issues/221
|
216
|
+
[#223]: https://github.com/ReactTraining/history/pull/223
|
217
|
+
|
218
|
+
## [v2.0.0-rc3]
|
219
|
+
> Feb 3, 2016
|
220
|
+
|
221
|
+
- **Bugfix:** Don't convert same-path `PUSH` to `REPLACE` when `location.state` changes ([#179])
|
222
|
+
- **Bugfix:** Re-enable browser history on Chrome iOS ([#208])
|
223
|
+
- **Bugfix:** Properly support location descriptors in `history.createLocation` ([#200])
|
224
|
+
|
225
|
+
[v2.0.0-rc3]: https://github.com/ReactTraining/history/compare/v2.0.0-rc2...v2.0.0-rc3
|
226
|
+
[#179]: https://github.com/ReactTraining/history/pull/179
|
227
|
+
[#208]: https://github.com/ReactTraining/history/pull/208
|
228
|
+
[#200]: https://github.com/ReactTraining/history/pull/200
|
229
|
+
|
230
|
+
## [v2.0.0-rc2]
|
231
|
+
> Jan 9, 2016
|
232
|
+
|
233
|
+
- Add back deprecation warnings
|
234
|
+
|
235
|
+
[v2.0.0-rc2]: https://github.com/ReactTraining/history/compare/v2.0.0-rc1...v2.0.0-rc2
|
236
|
+
|
237
|
+
## [v2.0.0-rc1]
|
238
|
+
> Jan 2, 2016
|
239
|
+
|
240
|
+
- **Bugfix:** Don't create empty entries in session storage ([#177])
|
241
|
+
|
242
|
+
[v2.0.0-rc1]: https://github.com/ReactTraining/history/compare/v1.17.0...v2.0.0-rc1
|
243
|
+
[#177]: https://github.com/ReactTraining/history/pull/177
|
244
|
+
|
245
|
+
## [v1.17.0]
|
246
|
+
> Dec 19, 2015
|
247
|
+
|
248
|
+
- **Bugfix:** Don't throw in memory history when out of history entries ([#170])
|
249
|
+
- **Bugfix:** Fix the deprecation warnings on `createPath` and `createHref` ([#189])
|
250
|
+
|
251
|
+
[v1.17.0]: https://github.com/ReactTraining/history/compare/v1.16.0...v1.17.0
|
252
|
+
[#170]: https://github.com/ReactTraining/history/pull/170
|
253
|
+
[#189]: https://github.com/ReactTraining/history/pull/189
|
254
|
+
|
255
|
+
## [v1.16.0]
|
256
|
+
> Dec 10, 2015
|
257
|
+
|
258
|
+
- **Bugfix:** Silence all warnings that were introduced since 1.13 (see [reactjs/react-router#2682])
|
259
|
+
- Deprecate the `createLocation` method in the top-level exports
|
260
|
+
- Deprecate the `state` arg to `history.createLocation`
|
261
|
+
|
262
|
+
[v1.16.0]: https://github.com/ReactTraining/history/compare/v1.15.0...v1.16.0
|
263
|
+
[reactjs/react-router#2682]: https://github.com/reactjs/react-router/issues/2682
|
264
|
+
|
265
|
+
## [v1.15.0]
|
266
|
+
> Dec 7, 2015
|
267
|
+
|
268
|
+
- Accept location descriptors in `createPath` and `createHref` ([#173])
|
269
|
+
- Deprecate the `query` arg to `createPath` and `createHref` in favor of using location descriptor objects ([#173])
|
270
|
+
|
271
|
+
[v1.15.0]: https://github.com/ReactTraining/history/compare/v1.14.0...v1.15.0
|
272
|
+
[#173]: https://github.com/ReactTraining/history/pull/173
|
273
|
+
|
274
|
+
## [v1.14.0]
|
275
|
+
> Dec 6, 2015
|
276
|
+
|
277
|
+
- Accept objects in `history.push` and `history.replace` ([#141])
|
278
|
+
- Deprecate `history.pushState` and `history.replaceState` in favor of passing objects to `history.push` and `history.replace` ([#168])
|
279
|
+
- **Bugfix:** Disable browser history on Chrome iOS ([#146])
|
280
|
+
- **Bugfix:** Do not convert same-path PUSH to REPLACE if the hash has changed ([#167])
|
281
|
+
- Add ES2015 module build ([#152])
|
282
|
+
- Use query-string module instead of qs to save on bytes ([#121])
|
283
|
+
|
284
|
+
[v1.14.0]: https://github.com/ReactTraining/history/compare/v1.13.1...v1.14.0
|
285
|
+
[#121]: https://github.com/ReactTraining/history/issues/121
|
286
|
+
[#141]: https://github.com/ReactTraining/history/pull/141
|
287
|
+
[#146]: https://github.com/ReactTraining/history/pull/146
|
288
|
+
[#152]: https://github.com/ReactTraining/history/pull/152
|
289
|
+
[#167]: https://github.com/ReactTraining/history/pull/167
|
290
|
+
[#168]: https://github.com/ReactTraining/history/pull/168
|
291
|
+
|
292
|
+
## [v1.13.1]
|
293
|
+
> Nov 13, 2015
|
294
|
+
|
295
|
+
- Fail gracefully when Safari security settings prevent access to window.sessionStorage
|
296
|
+
- Pushing the currently active path will result in a replace to not create additional browser history entries ([#43])
|
297
|
+
- Strip the protocol and domain from `<base href>` ([#139])
|
298
|
+
|
299
|
+
[v1.13.1]: https://github.com/ReactTraining/history/compare/v1.13.0...v1.13.1
|
300
|
+
[#43]: https://github.com/ReactTraining/history/pull/43
|
301
|
+
[#139]: https://github.com/ReactTraining/history/pull/139
|
302
|
+
|
303
|
+
## [v1.13.0]
|
304
|
+
> Oct 28, 2015
|
305
|
+
|
306
|
+
- `useBasename` transparently handles trailing slashes ([#108])
|
307
|
+
- `useBasename` automatically uses the value of `<base href>` when no
|
308
|
+
`basename` option is provided ([#94])
|
309
|
+
|
310
|
+
[v1.13.0]: https://github.com/ReactTraining/history/compare/v1.12.6...v1.13.0
|
311
|
+
[#108]: https://github.com/ReactTraining/history/pull/108
|
312
|
+
[#94]: https://github.com/ReactTraining/history/issues/94
|
313
|
+
|
314
|
+
## [v1.12.6]
|
315
|
+
> Oct 25, 2015
|
316
|
+
|
317
|
+
- Add `forceRefresh` option to `createBrowserHistory` that forces
|
318
|
+
full page refreshes even when the browser supports pushState ([#95])
|
319
|
+
|
320
|
+
[v1.12.6]: https://github.com/ReactTraining/history/compare/v1.12.5...v1.12.6
|
321
|
+
[#95]: https://github.com/ReactTraining/history/issues/95
|
322
|
+
|
323
|
+
## [v1.12.5]
|
324
|
+
> Oct 11, 2015
|
325
|
+
|
326
|
+
- Un-deprecate top-level createLocation method
|
327
|
+
- Add ability to use `{ pathname, search, hash }` object anywhere
|
328
|
+
a path can be used
|
329
|
+
- Fix `useQueries` handling of hashes ([#93])
|
330
|
+
|
331
|
+
[v1.12.5]: https://github.com/ReactTraining/history/compare/v1.12.4...v1.12.5
|
332
|
+
[#93]: https://github.com/ReactTraining/history/issues/93
|
333
|
+
|
334
|
+
## [v1.12.4]
|
335
|
+
> Oct 9, 2015
|
336
|
+
|
337
|
+
- Fix npm postinstall hook on Windows ([#62])
|
338
|
+
|
339
|
+
[v1.12.4]: https://github.com/ReactTraining/history/compare/v1.12.3...v1.12.4
|
340
|
+
[#62]: https://github.com/ReactTraining/history/issues/62
|
341
|
+
|
342
|
+
## [v1.12.3]
|
343
|
+
> Oct 7, 2015
|
344
|
+
|
345
|
+
- Fix listenBefore hooks not being called unless a listen hook was also registered ([#71])
|
346
|
+
- Add a warning when we cannot save state in Safari private mode ([#42])
|
347
|
+
|
348
|
+
[v1.12.3]: https://github.com/ReactTraining/history/compare/v1.12.2...v1.12.3
|
349
|
+
[#71]: https://github.com/ReactTraining/history/issues/71
|
350
|
+
[#42]: https://github.com/ReactTraining/history/issues/42
|
351
|
+
|
352
|
+
## [v1.12.2]
|
353
|
+
> Oct 6, 2015
|
354
|
+
|
355
|
+
- Fix hash support (see [comments in #51][#51-comments])
|
356
|
+
|
357
|
+
[v1.12.2]: https://github.com/ReactTraining/history/compare/v1.12.1...v1.12.2
|
358
|
+
[#51-comments]: https://github.com/ReactTraining/history/pull/51#issuecomment-143189672
|
359
|
+
|
360
|
+
## [v1.12.1]
|
361
|
+
> Oct 5, 2015
|
362
|
+
|
363
|
+
- Give `location` objects a `key` by default
|
364
|
+
- Deprecate `history.setState`
|
365
|
+
|
366
|
+
[v1.12.1]: https://github.com/ReactTraining/history/compare/v1.12.0...v1.12.1
|
367
|
+
|
368
|
+
## [v1.12.0]
|
369
|
+
> Oct 4, 2015
|
370
|
+
|
371
|
+
- Add `history.createLocation` instance method. This allows history enhancers such as `useQueries` to modify `location` objects when creating them directly
|
372
|
+
- Deprecate `createLocation` method on top-level exports
|
373
|
+
|
374
|
+
[v1.12.0]: https://github.com/ReactTraining/history/compare/v1.11.1...v1.12.0
|
375
|
+
|
376
|
+
## [v1.11.1]
|
377
|
+
> Sep 26, 2015
|
378
|
+
|
379
|
+
- Fix `location.basename` when location matches exactly ([#68])
|
380
|
+
- Allow transitions to be interrupted by another
|
381
|
+
|
382
|
+
[v1.11.1]: https://github.com/ReactTraining/history/compare/v1.11.0...v1.11.1
|
383
|
+
[#68]: https://github.com/ReactTraining/history/issues/68
|
384
|
+
|
385
|
+
## [v1.11.0]
|
386
|
+
> Sep 24, 2015
|
387
|
+
|
388
|
+
- Add `useBasename` history enhancer
|
389
|
+
- Add `history.listenBefore`
|
390
|
+
- Add `history.listenBeforeUnload` to `useBeforeUnload` history enhancer
|
391
|
+
- Deprecate (un)registerTransitionHook
|
392
|
+
- Deprecate (un)registerBeforeUnloadHook
|
393
|
+
- Fix installing directly from git repo
|
394
|
+
|
395
|
+
[v1.11.0]: https://github.com/ReactTraining/history/compare/v1.10.2...v1.11.0
|