@e-mc/document 0.8.6 → 0.8.8
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/LICENSE +3 -7
- package/README.md +11 -11
- package/index.js +44 -30
- package/package.json +5 -5
- package/parse/dom.js +3 -2
- package/parse/index.js +24 -16
- package/transform/index.js +2 -1
package/LICENSE
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
Copyright 2024 An Pham
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
10
|
-
|
|
11
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @e-mc/document
|
|
2
2
|
|
|
3
3
|
* NodeJS 14
|
|
4
|
-
*
|
|
4
|
+
* ES2019
|
|
5
5
|
|
|
6
6
|
## General Usage
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
## Interface
|
|
11
11
|
|
|
12
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
12
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/index.d.ts
|
|
13
13
|
|
|
14
14
|
```typescript
|
|
15
15
|
import type { DataSource, ViewEngine } from "./squared";
|
|
@@ -85,15 +85,15 @@ interface DocumentConstructor extends ModuleConstructor {
|
|
|
85
85
|
|
|
86
86
|
## References
|
|
87
87
|
|
|
88
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
89
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
90
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
91
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
92
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
93
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
94
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
95
|
-
- https://www.unpkg.com/@e-mc/types@0.8.
|
|
88
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/squared.d.ts
|
|
89
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/asset.d.ts
|
|
90
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/core.d.ts
|
|
91
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/document.d.ts
|
|
92
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/filemanager.d.ts
|
|
93
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/logger.d.ts
|
|
94
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/settings.d.ts
|
|
95
|
+
- https://www.unpkg.com/@e-mc/types@0.8.8/lib/watch.d.ts
|
|
96
96
|
|
|
97
97
|
## LICENSE
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
MIT
|
package/index.js
CHANGED
|
@@ -218,7 +218,7 @@ class Document extends core_1.Client {
|
|
|
218
218
|
let match;
|
|
219
219
|
while (match = pattern.exec(source)) {
|
|
220
220
|
const preceding = source.substring(lastIndex, match.index);
|
|
221
|
-
let opening = 0, closing =
|
|
221
|
+
let opening = 0, closing = 0;
|
|
222
222
|
for (let j = 0, q = preceding.length; j < q; ++j) {
|
|
223
223
|
switch (preceding[j]) {
|
|
224
224
|
case '{':
|
|
@@ -229,8 +229,11 @@ class Document extends core_1.Client {
|
|
|
229
229
|
break;
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
|
-
if (opening === closing
|
|
233
|
-
|
|
232
|
+
if (opening === closing) {
|
|
233
|
+
if (!multiple || match[1] && sanitizeValue(match[1]) === sanitizeValue(local[3])) {
|
|
234
|
+
return upgrade ? parse_1.XmlWriter.replaceMatch(match, source, value, pattern) : source;
|
|
235
|
+
}
|
|
236
|
+
lastIndex = match.index + match[0].length;
|
|
234
237
|
}
|
|
235
238
|
}
|
|
236
239
|
return spliceSource(source, lastIndex, lastIndex, ident.repeat(length) + value + newline);
|
|
@@ -251,6 +254,7 @@ class Document extends core_1.Client {
|
|
|
251
254
|
return lastIndex > 0 ? spliceSource(source, lastIndex, lastIndex, content) : source + newline + content;
|
|
252
255
|
}
|
|
253
256
|
static generateLintTable(messages, options) {
|
|
257
|
+
var _a, _b, _c;
|
|
254
258
|
const { leadingText, trailingText, pathname, filename, ruleWidth = 30, messageWidth = 60 } = options;
|
|
255
259
|
const result = [];
|
|
256
260
|
const truncate = (value, width) => value.length > width ? value.substring(0, width - 3) + '...' : value.padStart(width);
|
|
@@ -296,9 +300,9 @@ class Document extends core_1.Client {
|
|
|
296
300
|
maxWidth += maxLine + maxColumn;
|
|
297
301
|
const title = (leadingText || '') + (pathname || filename ? (leadingText ? ': ' : '') + (pathname && filename ? path.join(pathname, filename) : pathname || filename) : '');
|
|
298
302
|
const divider = { type: types_1.STATUS_TYPE.INFO, value: '-'.repeat(maxWidth), timeStamp };
|
|
299
|
-
errorCount = (options.errorCount
|
|
300
|
-
warningCount = (options.warningCount
|
|
301
|
-
fatalErrorCount = (options.fatalErrorCount
|
|
303
|
+
errorCount = ((_a = options.errorCount) !== null && _a !== void 0 ? _a : errorCount).toString();
|
|
304
|
+
warningCount = ((_b = options.warningCount) !== null && _b !== void 0 ? _b : warningCount).toString();
|
|
305
|
+
fatalErrorCount = ((_c = options.fatalErrorCount) !== null && _c !== void 0 ? _c : fatalErrorCount).toString();
|
|
302
306
|
const hasFatal = fatalErrorCount !== '0';
|
|
303
307
|
result.unshift(divider, { type: types_1.STATUS_TYPE.INFO, value: title + ' '.repeat(maxWidth - title.length - (hasFatal ? fatalErrorCount.length + 9 : 0)) + (hasFatal ? `fatal(${chalk.bold.bgRed.white(` ${fatalErrorCount} `)})` : ''), timeStamp, duration: currentTime - timeStamp }, divider);
|
|
304
308
|
result.push(divider);
|
|
@@ -383,7 +387,7 @@ class Document extends core_1.Client {
|
|
|
383
387
|
}
|
|
384
388
|
}
|
|
385
389
|
}
|
|
386
|
-
if (this.dataSource.length && !ignoreModules
|
|
390
|
+
if (this.dataSource.length && !(ignoreModules === null || ignoreModules === void 0 ? void 0 : ignoreModules.includes('db'))) {
|
|
387
391
|
const db = (_a = this.module).db || (_a.db = {});
|
|
388
392
|
const handler = db.handler;
|
|
389
393
|
const database = this.dataSource.filter(this.forDb.bind(this));
|
|
@@ -466,7 +470,7 @@ class Document extends core_1.Client {
|
|
|
466
470
|
this._transformConfig = null;
|
|
467
471
|
return;
|
|
468
472
|
}
|
|
469
|
-
switch (algorithm = algorithm
|
|
473
|
+
switch (algorithm = algorithm === null || algorithm === void 0 ? void 0 : algorithm.toLowerCase()) {
|
|
470
474
|
case 'md5':
|
|
471
475
|
case 'sha1':
|
|
472
476
|
case 'sha224':
|
|
@@ -584,11 +588,12 @@ class Document extends core_1.Client {
|
|
|
584
588
|
delete data[name];
|
|
585
589
|
}
|
|
586
590
|
resolveDir(name, ...paths) {
|
|
587
|
-
|
|
591
|
+
var _a, _b;
|
|
592
|
+
let baseDir = (_a = this.settings.directory) === null || _a === void 0 ? void 0 : _a[name];
|
|
588
593
|
if (baseDir) {
|
|
589
594
|
try {
|
|
590
595
|
baseDir = path.resolve(baseDir);
|
|
591
|
-
const username = this.host
|
|
596
|
+
const username = (_b = this.host) === null || _b === void 0 ? void 0 : _b.username;
|
|
592
597
|
let result;
|
|
593
598
|
if (username) {
|
|
594
599
|
const leading = path.join(baseDir, 'users', username);
|
|
@@ -661,6 +666,7 @@ class Document extends core_1.Client {
|
|
|
661
666
|
return null;
|
|
662
667
|
}
|
|
663
668
|
findVersion(name, fallback = '') {
|
|
669
|
+
var _a;
|
|
664
670
|
let result;
|
|
665
671
|
const versions = this.module.versions;
|
|
666
672
|
if (versions) {
|
|
@@ -672,7 +678,7 @@ class Document extends core_1.Client {
|
|
|
672
678
|
}
|
|
673
679
|
}
|
|
674
680
|
else {
|
|
675
|
-
result = this.module.versions
|
|
681
|
+
result = (_a = this.module.versions) === null || _a === void 0 ? void 0 : _a[name];
|
|
676
682
|
}
|
|
677
683
|
}
|
|
678
684
|
return result || fallback;
|
|
@@ -692,6 +698,7 @@ class Document extends core_1.Client {
|
|
|
692
698
|
return [];
|
|
693
699
|
}
|
|
694
700
|
findSourceRoot(uri, imports = this.imports) {
|
|
701
|
+
var _a, _b;
|
|
695
702
|
if (!(0, types_1.isPlainObject)(imports)) {
|
|
696
703
|
return;
|
|
697
704
|
}
|
|
@@ -703,7 +710,7 @@ class Document extends core_1.Client {
|
|
|
703
710
|
}
|
|
704
711
|
return value.endsWith(sep) ? value : value + sep;
|
|
705
712
|
};
|
|
706
|
-
const importsStrict = this.getUserSettings()
|
|
713
|
+
const importsStrict = (_b = (_a = this.getUserSettings()) === null || _a === void 0 ? void 0 : _a.imports_strict) !== null && _b !== void 0 ? _b : this.settings.imports_strict;
|
|
707
714
|
const scopes = (importsStrict ? this.findSourceScope(uri, imports) : []).concat([imports]);
|
|
708
715
|
const isDir = /[\\/]$/;
|
|
709
716
|
let result;
|
|
@@ -774,6 +781,7 @@ class Document extends core_1.Client {
|
|
|
774
781
|
}
|
|
775
782
|
locateSourceFiles(file, code, bundleContent) {
|
|
776
783
|
return (imports = this.imports) => {
|
|
784
|
+
var _a;
|
|
777
785
|
const href = file.uri;
|
|
778
786
|
const sourceFile = [];
|
|
779
787
|
let mainFile, invalid;
|
|
@@ -816,7 +824,7 @@ class Document extends core_1.Client {
|
|
|
816
824
|
invalid = true;
|
|
817
825
|
break;
|
|
818
826
|
}
|
|
819
|
-
sourceFile.push(['', this.resolveImports
|
|
827
|
+
sourceFile.push(['', ((_a = this.resolveImports) === null || _a === void 0 ? void 0 : _a.call(this, item, source, localFile)) || source, localFile]);
|
|
820
828
|
}
|
|
821
829
|
}
|
|
822
830
|
}
|
|
@@ -827,10 +835,11 @@ class Document extends core_1.Client {
|
|
|
827
835
|
}
|
|
828
836
|
resolveSourceFile(file) {
|
|
829
837
|
return (code, imports = this.imports) => {
|
|
838
|
+
var _a;
|
|
830
839
|
const uri = file.uri;
|
|
831
840
|
let source, sourceFile;
|
|
832
841
|
if (code && imports && Object.keys(imports).length) {
|
|
833
|
-
const output = this.resolveImports
|
|
842
|
+
const output = (_a = this.resolveImports) === null || _a === void 0 ? void 0 : _a.call(this, file, code, uri && this.findSourceRoot(uri, imports));
|
|
834
843
|
if (output) {
|
|
835
844
|
source = output;
|
|
836
845
|
}
|
|
@@ -871,19 +880,22 @@ class Document extends core_1.Client {
|
|
|
871
880
|
return item.source !== 'cloud';
|
|
872
881
|
}
|
|
873
882
|
hasEval(name) {
|
|
874
|
-
|
|
883
|
+
var _a;
|
|
884
|
+
return !!((_a = this.module.eval) === null || _a === void 0 ? void 0 : _a[name]);
|
|
875
885
|
}
|
|
876
886
|
settingsOf(name, option) {
|
|
877
|
-
|
|
887
|
+
var _a;
|
|
888
|
+
const options = (_a = this.settings.options) === null || _a === void 0 ? void 0 : _a[name];
|
|
878
889
|
if ((0, types_1.isObject)(options)) {
|
|
879
890
|
return options[option];
|
|
880
891
|
}
|
|
881
892
|
}
|
|
882
893
|
async parseTemplate(viewEngine, template, data) {
|
|
894
|
+
var _a, _b, _c, _d, _e, _f;
|
|
883
895
|
let target, stored;
|
|
884
896
|
if (typeof viewEngine === 'string') {
|
|
885
|
-
target = this.settings.view_engine
|
|
886
|
-
const userConfig = this.getUserSettings()
|
|
897
|
+
target = (_a = this.settings.view_engine) === null || _a === void 0 ? void 0 : _a[viewEngine];
|
|
898
|
+
const userConfig = (_c = (_b = this.getUserSettings()) === null || _b === void 0 ? void 0 : _b.view_engine) === null || _c === void 0 ? void 0 : _c[viewEngine];
|
|
887
899
|
if ((0, types_1.isPlainObject)(userConfig)) {
|
|
888
900
|
if ((0, types_1.isPlainObject)(target)) {
|
|
889
901
|
(0, types_1.cloneObject)(userConfig, { target, deep: true, preserve: true });
|
|
@@ -923,7 +935,7 @@ class Document extends core_1.Client {
|
|
|
923
935
|
(0, types_1.coerceObject)(output, stored);
|
|
924
936
|
}
|
|
925
937
|
}
|
|
926
|
-
const username = this.host
|
|
938
|
+
const username = ((_d = this.host) === null || _d === void 0 ? void 0 : _d.username) || '';
|
|
927
939
|
const cache = CACHE_TEMPLATE[name] || (CACHE_TEMPLATE[name] = {});
|
|
928
940
|
const cacheKey = username + core_1.Client.asHash(template + (compile ? core_1.Client.asString(compile) : ''));
|
|
929
941
|
let result = '', render, valid;
|
|
@@ -936,7 +948,7 @@ class Document extends core_1.Client {
|
|
|
936
948
|
}
|
|
937
949
|
for (let i = 0, j = 0, row; i < length; ++i) {
|
|
938
950
|
if ((0, types_1.isPlainObject)(row = data[i])) {
|
|
939
|
-
row.__index__
|
|
951
|
+
(_e = row.__index__) !== null && _e !== void 0 ? _e : (row.__index__ = ++j);
|
|
940
952
|
if (output) {
|
|
941
953
|
row = { ...output, ...row };
|
|
942
954
|
}
|
|
@@ -953,7 +965,7 @@ class Document extends core_1.Client {
|
|
|
953
965
|
}
|
|
954
966
|
}
|
|
955
967
|
}
|
|
956
|
-
return singleRow ? render.call(context, data)
|
|
968
|
+
return singleRow ? (_f = render.call(context, data)) !== null && _f !== void 0 ? _f : null : valid ? result : null;
|
|
957
969
|
}
|
|
958
970
|
catch (err) {
|
|
959
971
|
this.abort('view_engine');
|
|
@@ -962,13 +974,14 @@ class Document extends core_1.Client {
|
|
|
962
974
|
return null;
|
|
963
975
|
}
|
|
964
976
|
async transform(type, code, format, options = {}) {
|
|
977
|
+
var _a, _b, _c, _d;
|
|
965
978
|
let transform = this.settings.transform, data;
|
|
966
979
|
if (!transform || !(0, types_1.isObject)(data = transform[type])) {
|
|
967
980
|
return;
|
|
968
981
|
}
|
|
969
982
|
format = typeof format === 'string' ? format.trim().split(/\s*\+\s*/) : format.map(item => typeof item === 'string' ? item.trim() : '');
|
|
970
983
|
const moduleName = this.moduleName;
|
|
971
|
-
const username = this.host
|
|
984
|
+
const username = ((_a = this.host) === null || _a === void 0 ? void 0 : _a.username) || '';
|
|
972
985
|
const config = this._transformConfig;
|
|
973
986
|
const cacheData = config && options.cacheData;
|
|
974
987
|
const cacheType = username && core_1.Client.enabled("memory.settings.users", username) ? true : this.cacheDir || core_1.Client.enabled("memory.settings.users");
|
|
@@ -1046,7 +1059,7 @@ class Document extends core_1.Client {
|
|
|
1046
1059
|
}
|
|
1047
1060
|
}
|
|
1048
1061
|
if (result) {
|
|
1049
|
-
result.storedLog
|
|
1062
|
+
(_b = result.storedLog) === null || _b === void 0 ? void 0 : _b.forEach(log => this.addLog(log));
|
|
1050
1063
|
this.formatMessage(4, type, [joinString(cacheName, format.filter(value => value).join(' | '), options.filename), 'cache'], uri, { ...core_1.Client.LOG_STYLE_NOTICE, hintBold: true });
|
|
1051
1064
|
return result;
|
|
1052
1065
|
}
|
|
@@ -1058,7 +1071,7 @@ class Document extends core_1.Client {
|
|
|
1058
1071
|
const series = new transform_1.TransformSeries(type, code, options);
|
|
1059
1072
|
series.init(this, __dirname);
|
|
1060
1073
|
let valid, excluded, userData, userImports, ignoreCache, storedLog, sourceFiles;
|
|
1061
|
-
if (username && (transform = this.settings.users
|
|
1074
|
+
if (username && (transform = (_d = (_c = this.settings.users) === null || _c === void 0 ? void 0 : _c[username]) === null || _d === void 0 ? void 0 : _d.transform)) {
|
|
1062
1075
|
userData = transform[type];
|
|
1063
1076
|
userImports = transform.imports;
|
|
1064
1077
|
}
|
|
@@ -1067,12 +1080,12 @@ class Document extends core_1.Client {
|
|
|
1067
1080
|
this.abort('transform');
|
|
1068
1081
|
};
|
|
1069
1082
|
const includes = (name) => {
|
|
1070
|
-
const include = config
|
|
1071
|
-
if (include === true || include
|
|
1083
|
+
const include = config === null || config === void 0 ? void 0 : config.include[type];
|
|
1084
|
+
if (include === true || (include === null || include === void 0 ? void 0 : include.includes(name))) {
|
|
1072
1085
|
const exclude = config.exclude[type];
|
|
1073
1086
|
return !exclude || exclude === true && include !== true || Array.isArray(exclude) && !exclude.includes(name);
|
|
1074
1087
|
}
|
|
1075
|
-
return cacheData
|
|
1088
|
+
return (cacheData === null || cacheData === void 0 ? void 0 : cacheData.override) === true;
|
|
1076
1089
|
};
|
|
1077
1090
|
for (let i = 0, length = format.length, name; i < length; ++i) {
|
|
1078
1091
|
if (this.aborted) {
|
|
@@ -1191,7 +1204,7 @@ class Document extends core_1.Client {
|
|
|
1191
1204
|
let transformer = CACHE_PACKAGE[plugin + username];
|
|
1192
1205
|
if (!transformer) {
|
|
1193
1206
|
try {
|
|
1194
|
-
let pkg = this.resolveDir('package', plugin + '.js') || userImports
|
|
1207
|
+
let pkg = this.resolveDir('package', plugin + '.js') || (userImports === null || userImports === void 0 ? void 0 : userImports[plugin]) || imports[plugin] || util_1.IMPORTS[plugin];
|
|
1195
1208
|
if ((0, types_1.isString)(pkg)) {
|
|
1196
1209
|
const match = /^(@?\S+)@(\d+(?:\.\d+(?:\.\S+)?)?|[a-z]+)$/.exec(pkg);
|
|
1197
1210
|
if (match) {
|
|
@@ -1260,7 +1273,7 @@ class Document extends core_1.Client {
|
|
|
1260
1273
|
output.map = sourceMap.map;
|
|
1261
1274
|
}
|
|
1262
1275
|
if ((0, types_1.isArray)(series.supplementChunks)) {
|
|
1263
|
-
output.chunks = series.supplementChunks.map(item => ({ code: item.code, map: output.map && item.sourceMap
|
|
1276
|
+
output.chunks = series.supplementChunks.map(item => { var _a; return ({ code: item.code, map: output.map && ((_a = item.sourceMap) === null || _a === void 0 ? void 0 : _a.map), entryPoint: item.entryPoint, filename: item.filename }); });
|
|
1264
1277
|
}
|
|
1265
1278
|
if (sourceFiles) {
|
|
1266
1279
|
output.sourceFiles = sourceFiles;
|
|
@@ -1350,6 +1363,7 @@ class Document extends core_1.Client {
|
|
|
1350
1363
|
return this._dataSource || [];
|
|
1351
1364
|
}
|
|
1352
1365
|
set imports(value) {
|
|
1366
|
+
var _a;
|
|
1353
1367
|
if (!(0, types_1.isPlainObject)(value)) {
|
|
1354
1368
|
this._imports = null;
|
|
1355
1369
|
return;
|
|
@@ -1359,7 +1373,7 @@ class Document extends core_1.Client {
|
|
|
1359
1373
|
this._imports = Object.assign(imports, value);
|
|
1360
1374
|
}
|
|
1361
1375
|
else {
|
|
1362
|
-
imports = this.getUserSettings()
|
|
1376
|
+
imports = ((_a = this.getUserSettings()) === null || _a === void 0 ? void 0 : _a.imports) || this.module.imports;
|
|
1363
1377
|
this._imports = Object.assign(this._imports || {}, (0, types_1.isPlainObject)(imports) ? imports : undefined, value);
|
|
1364
1378
|
}
|
|
1365
1379
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e-mc/document",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.8",
|
|
4
4
|
"description": "Document constructor for E-mc.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"squared-functions"
|
|
18
18
|
],
|
|
19
19
|
"author": "An Pham <anpham6@gmail.com>",
|
|
20
|
-
"license": "
|
|
20
|
+
"license": "MIT",
|
|
21
21
|
"homepage": "https://github.com/anpham6/e-mc#readme",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@e-mc/core": "0.8.
|
|
24
|
-
"@e-mc/db": "0.8.
|
|
25
|
-
"@e-mc/types": "0.8.
|
|
23
|
+
"@e-mc/core": "0.8.8",
|
|
24
|
+
"@e-mc/db": "0.8.8",
|
|
25
|
+
"@e-mc/types": "0.8.8",
|
|
26
26
|
"chalk": "4.1.2",
|
|
27
27
|
"htmlparser2": "^9.1.0",
|
|
28
28
|
"js-yaml": "^4.1.0",
|
package/parse/dom.js
CHANGED
|
@@ -34,7 +34,7 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
34
34
|
tagGroup.push(new RegExp('^' + (0, types_1.escapePattern)(start)));
|
|
35
35
|
}
|
|
36
36
|
const end = ignoreTagGroup[i + 1];
|
|
37
|
-
if (end
|
|
37
|
+
if ((end === null || end === void 0 ? void 0 : end[end.length - 1]) === '>') {
|
|
38
38
|
tagGroup.push(new RegExp((0, types_1.escapePattern)(start) + '$'));
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -226,7 +226,8 @@ class HtmlElement extends index_1.XmlElement {
|
|
|
226
226
|
this._documentType = "HTML";
|
|
227
227
|
}
|
|
228
228
|
getTagOffset(source) {
|
|
229
|
-
|
|
229
|
+
var _a;
|
|
230
|
+
switch (((_a = this.node.append) === null || _a === void 0 ? void 0 : _a.tagName) || this.tagName) {
|
|
230
231
|
case 'html':
|
|
231
232
|
case 'title':
|
|
232
233
|
case 'style':
|
package/parse/index.js
CHANGED
|
@@ -235,7 +235,7 @@ class XmlWriter {
|
|
|
235
235
|
return result;
|
|
236
236
|
}
|
|
237
237
|
const nodes = domutils.getElementsByTagName(node.tagName, outDom, true);
|
|
238
|
-
if (!parser
|
|
238
|
+
if (!(parser === null || parser === void 0 ? void 0 : parser.xmlMode)) {
|
|
239
239
|
nodes.filter(item => item.next && item.next.startIndex <= item.endIndex).forEach(item => {
|
|
240
240
|
for (let i = 0, length = nodes.length; i < length; ++i) {
|
|
241
241
|
const element = nodes[i];
|
|
@@ -262,7 +262,7 @@ class XmlWriter {
|
|
|
262
262
|
const locator = node.locator;
|
|
263
263
|
if (locator && locatorAttr) {
|
|
264
264
|
const { element } = this.locateElement(source, locator, locatorAttr, { parser, outDom });
|
|
265
|
-
if (element
|
|
265
|
+
if ((element === null || element === void 0 ? void 0 : element.tagName) === node.tagName) {
|
|
266
266
|
result.element = element;
|
|
267
267
|
index = nodes.findIndex(item => item === element);
|
|
268
268
|
}
|
|
@@ -346,10 +346,12 @@ class XmlWriter {
|
|
|
346
346
|
CACHE_TAGVOID[type] = values;
|
|
347
347
|
}
|
|
348
348
|
static isTagVoid(type, tagName) {
|
|
349
|
-
|
|
349
|
+
var _a;
|
|
350
|
+
return !!((_a = CACHE_TAGVOID[type]) === null || _a === void 0 ? void 0 : _a.includes(tagName));
|
|
350
351
|
}
|
|
351
352
|
static getNodeId(node, document) {
|
|
352
|
-
|
|
353
|
+
var _a;
|
|
354
|
+
return ((_a = node.id) === null || _a === void 0 ? void 0 : _a[document]) || '';
|
|
353
355
|
}
|
|
354
356
|
static getNameOfId(document) {
|
|
355
357
|
return `data-${document}-id`;
|
|
@@ -424,7 +426,7 @@ class XmlWriter {
|
|
|
424
426
|
if ((ignoreCase ? tagName.toLowerCase() === other.tagName.toLowerCase() : tagName === other.tagName) && (index === other.index && isIndex(index) || tagIndex === other.tagIndex && tagCount === other.tagCount && isIndex(tagIndex) && isCount(tagCount))) {
|
|
425
427
|
return true;
|
|
426
428
|
}
|
|
427
|
-
return document && other.id && id
|
|
429
|
+
return document && other.id && (id === null || id === void 0 ? void 0 : id[document]) ? id[document] === other.id[document] : false;
|
|
428
430
|
}
|
|
429
431
|
static isIndex(value) {
|
|
430
432
|
return isIndex(value);
|
|
@@ -450,7 +452,7 @@ class XmlWriter {
|
|
|
450
452
|
this._patternIgnore = null;
|
|
451
453
|
this._writeStartIndex = -1;
|
|
452
454
|
this._source = source;
|
|
453
|
-
this.parser = options
|
|
455
|
+
this.parser = options === null || options === void 0 ? void 0 : options.parser;
|
|
454
456
|
}
|
|
455
457
|
init(offsetMap) {
|
|
456
458
|
const appending = [];
|
|
@@ -461,7 +463,7 @@ class XmlWriter {
|
|
|
461
463
|
}
|
|
462
464
|
if (isCount(item.tagCount)) {
|
|
463
465
|
const tagName = item.tagName;
|
|
464
|
-
item.tagCount += offsetMap
|
|
466
|
+
item.tagCount += (offsetMap === null || offsetMap === void 0 ? void 0 : offsetMap[tagName]) || 0;
|
|
465
467
|
this._tagCount[tagName] = item.tagCount;
|
|
466
468
|
}
|
|
467
469
|
deletePosition(item, rootName);
|
|
@@ -550,6 +552,7 @@ class XmlWriter {
|
|
|
550
552
|
return null;
|
|
551
553
|
}
|
|
552
554
|
write(element) {
|
|
555
|
+
var _a;
|
|
553
556
|
if (!element.modified) {
|
|
554
557
|
return true;
|
|
555
558
|
}
|
|
@@ -580,7 +583,7 @@ class XmlWriter {
|
|
|
580
583
|
if (append) {
|
|
581
584
|
const { tagName, id, textContent = '', prepend, nextSibling } = append;
|
|
582
585
|
if (!prepend) {
|
|
583
|
-
node.index = nextSibling
|
|
586
|
+
node.index = nextSibling !== null && nextSibling !== void 0 ? nextSibling : -1;
|
|
584
587
|
}
|
|
585
588
|
(node.id || (node.id = {}))[this.documentName] = id;
|
|
586
589
|
element.id = id;
|
|
@@ -603,7 +606,7 @@ class XmlWriter {
|
|
|
603
606
|
this.renameTag(node, element.tagName);
|
|
604
607
|
}
|
|
605
608
|
this.update(node, outerXml, append, element.tagOffset);
|
|
606
|
-
if (element.innerXml && !element.remove && (element.hasModifiedContent() || this.patternIgnore
|
|
609
|
+
if (element.innerXml && !element.remove && (element.hasModifiedContent() || ((_a = this.patternIgnore) === null || _a === void 0 ? void 0 : _a.test(element.tagName)))) {
|
|
607
610
|
this._hasInvalidContent = true;
|
|
608
611
|
this._writeStartIndex = -1;
|
|
609
612
|
}
|
|
@@ -802,6 +805,7 @@ class XmlWriter {
|
|
|
802
805
|
}
|
|
803
806
|
}
|
|
804
807
|
indexTag(tagName, append, offset = 0) {
|
|
808
|
+
var _a;
|
|
805
809
|
if (tagName in this._tagCount) {
|
|
806
810
|
const elements = [];
|
|
807
811
|
const revised = [];
|
|
@@ -871,7 +875,7 @@ class XmlWriter {
|
|
|
871
875
|
return;
|
|
872
876
|
}
|
|
873
877
|
}
|
|
874
|
-
const id = append ? append.id : revised[0].id
|
|
878
|
+
const id = append ? append.id : (_a = revised[0].id) === null || _a === void 0 ? void 0 : _a[this.documentName];
|
|
875
879
|
if (id) {
|
|
876
880
|
const element = XmlWriter.findElement(this.source, (append || revised[0]), { document: this.documentName, id, tagCount: nextCount, parser: this.parser });
|
|
877
881
|
if (element) {
|
|
@@ -893,7 +897,7 @@ class XmlWriter {
|
|
|
893
897
|
item.index = -1;
|
|
894
898
|
}
|
|
895
899
|
const append = item.append;
|
|
896
|
-
if (append
|
|
900
|
+
if ((append === null || append === void 0 ? void 0 : append.tagName) === tagName) {
|
|
897
901
|
delete append.tagCount;
|
|
898
902
|
const nextSibling = append.nextSibling;
|
|
899
903
|
if (isIndex(nextSibling)) {
|
|
@@ -954,6 +958,7 @@ class XmlWriter {
|
|
|
954
958
|
}
|
|
955
959
|
getElementsByTagName(tagName, ignoreCase = false, options) {
|
|
956
960
|
var _a;
|
|
961
|
+
var _b;
|
|
957
962
|
let tagVoid;
|
|
958
963
|
if (options) {
|
|
959
964
|
({ tagVoid } = options);
|
|
@@ -963,14 +968,14 @@ class XmlWriter {
|
|
|
963
968
|
const result = [];
|
|
964
969
|
const patternId = XmlWriter.getPatternId(this.nameOfId);
|
|
965
970
|
const flags = ignoreCase ? 'gi' : 'g';
|
|
966
|
-
const pattern = CACHE_TAGNAME[
|
|
971
|
+
const pattern = CACHE_TAGNAME[_b = tagName + flags + '3'] || (CACHE_TAGNAME[_b] = new RegExp(`<${escapeTagName(tagName) + PATTERN_TAGOPEN}*>`, flags));
|
|
967
972
|
pattern.lastIndex = 0;
|
|
968
973
|
let match;
|
|
969
974
|
while (match = pattern.exec(source)) {
|
|
970
975
|
const startIndex = match.index;
|
|
971
976
|
let outerXml = match[0], endIndex = startIndex + outerXml.length - 1;
|
|
972
977
|
if (!invalid || isValidIndex(invalid, startIndex, endIndex)) {
|
|
973
|
-
const id = patternId.exec(outerXml)
|
|
978
|
+
const id = (_a = patternId.exec(outerXml)) === null || _a === void 0 ? void 0 : _a[1];
|
|
974
979
|
if (!tagVoid) {
|
|
975
980
|
const [index, closeTag] = findCloseIndex(source, tagName, endIndex + 1, ignoreCase);
|
|
976
981
|
if (index !== -1) {
|
|
@@ -1152,6 +1157,7 @@ class XmlElement {
|
|
|
1152
1157
|
}
|
|
1153
1158
|
}
|
|
1154
1159
|
getAttribute(name) {
|
|
1160
|
+
var _a;
|
|
1155
1161
|
let result = this._attributes.get(this._ignoreCase ? name = name.toLowerCase() : name);
|
|
1156
1162
|
if (result) {
|
|
1157
1163
|
return result;
|
|
@@ -1164,7 +1170,7 @@ class XmlElement {
|
|
|
1164
1170
|
if (outerXml) {
|
|
1165
1171
|
const index = XmlWriter.findCloseTag(outerXml);
|
|
1166
1172
|
if (index !== -1) {
|
|
1167
|
-
return XmlWriter.getPatternId(this.nameOfId).exec(outerXml.substring(0, index))
|
|
1173
|
+
return ((_a = XmlWriter.getPatternId(this.nameOfId).exec(outerXml.substring(0, index))) === null || _a === void 0 ? void 0 : _a[1]) || '';
|
|
1168
1174
|
}
|
|
1169
1175
|
}
|
|
1170
1176
|
}
|
|
@@ -1376,7 +1382,8 @@ class XmlElement {
|
|
|
1376
1382
|
return [this.tagName, attributes, this.innerXml];
|
|
1377
1383
|
}
|
|
1378
1384
|
getInnerOffset(tagName) {
|
|
1379
|
-
|
|
1385
|
+
var _a;
|
|
1386
|
+
return ((_a = this._tagOffset) === null || _a === void 0 ? void 0 : _a[tagName]) || 0;
|
|
1380
1387
|
}
|
|
1381
1388
|
hasPosition() {
|
|
1382
1389
|
return isIndex(this.node.startIndex) && isIndex(this.node.endIndex);
|
|
@@ -1412,7 +1419,8 @@ class XmlElement {
|
|
|
1412
1419
|
return this._documentType || this.documentName;
|
|
1413
1420
|
}
|
|
1414
1421
|
get tagVoid() {
|
|
1415
|
-
|
|
1422
|
+
var _a;
|
|
1423
|
+
return (_a = this._tagVoid) !== null && _a !== void 0 ? _a : XmlWriter.isTagVoid(this.documentType, this.tagName);
|
|
1416
1424
|
}
|
|
1417
1425
|
set innerXml(value) {
|
|
1418
1426
|
if (!this.tagVoid && value !== this._innerXml) {
|
package/transform/index.js
CHANGED
|
@@ -136,8 +136,9 @@ class TransformSeries extends core_1.Module {
|
|
|
136
136
|
return context;
|
|
137
137
|
}
|
|
138
138
|
close(instance) {
|
|
139
|
+
var _e;
|
|
139
140
|
core_1.AbortComponent.detach(instance, this.signal);
|
|
140
|
-
this.host
|
|
141
|
+
(_e = this.host) === null || _e === void 0 ? void 0 : _e.release(this);
|
|
141
142
|
}
|
|
142
143
|
set code(value) {
|
|
143
144
|
this[kCode] = value;
|