@zohodesk/react-cli 0.0.1-exp.161.1 → 0.0.1-exp.161.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|