@e-mc/document 0.5.3 → 0.5.4
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 +7 -11
- package/README.md +3 -3
- package/asset.d.ts +7 -7
- package/asset.js +1 -1
- package/index.d.ts +4 -4
- package/index.js +64 -67
- package/package.json +6 -6
- package/parse/dom.d.ts +8 -8
- package/parse/dom.js +13 -13
- package/parse/index.d.ts +8 -8
- package/parse/index.js +6 -6
- package/transform/index.d.ts +7 -7
- package/transform/index.js +7 -11
- package/util.js +1 -1
package/LICENSE
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
Copyright 2023
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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.
|
|
1
|
+
Copyright 2023 Mile Square Park
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
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
package/asset.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ExternalAsset } from '../types/lib/asset';
|
|
2
|
-
|
|
3
|
-
declare namespace asset {
|
|
4
|
-
function isEqual(item: ExternalAsset, other: ExternalAsset): boolean;
|
|
5
|
-
function setInitialValue(file: ExternalAsset, cacheable?: boolean): void;
|
|
6
|
-
}
|
|
7
|
-
|
|
1
|
+
import type { ExternalAsset } from '../types/lib/asset';
|
|
2
|
+
|
|
3
|
+
declare namespace asset {
|
|
4
|
+
function isEqual(item: ExternalAsset, other: ExternalAsset): boolean;
|
|
5
|
+
function setInitialValue(file: ExternalAsset, cacheable?: boolean): void;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
8
|
export = asset;
|
package/asset.js
CHANGED
|
@@ -6,6 +6,6 @@ function isEqual(item, other) {
|
|
|
6
6
|
}
|
|
7
7
|
exports.isEqual = isEqual;
|
|
8
8
|
function setInitialValue(file, cacheable = true) {
|
|
9
|
-
file.initialValue || (file.initialValue = { pathname: file.pathname, filename: file.filename, mimeType: file.mimeType, localUri: file.localUri, inlineFilename: file.inlineFilename, cacheable });
|
|
9
|
+
return file.initialValue || (file.initialValue = { pathname: file.pathname, filename: file.filename, mimeType: file.mimeType, localUri: file.localUri, inlineFilename: file.inlineFilename, cacheable });
|
|
10
10
|
}
|
|
11
11
|
exports.setInitialValue = setInitialValue;
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DocumentConstructor, IFileManager } from '../types/lib';
|
|
2
|
-
|
|
3
|
-
declare const Document: DocumentConstructor<IFileManager>;
|
|
4
|
-
|
|
1
|
+
import type { DocumentConstructor, IFileManager } from '../types/lib';
|
|
2
|
+
|
|
3
|
+
declare const Document: DocumentConstructor<IFileManager>;
|
|
4
|
+
|
|
5
5
|
export = Document;
|
package/index.js
CHANGED
|
@@ -5,12 +5,12 @@ const fs = require("fs");
|
|
|
5
5
|
const pm = require("picomatch");
|
|
6
6
|
const yaml = require("js-yaml");
|
|
7
7
|
const chalk = require("chalk");
|
|
8
|
-
const types_1 = require("
|
|
9
|
-
const core_1 = require("
|
|
10
|
-
const db_1 = require("
|
|
11
|
-
const util_1 = require("
|
|
12
|
-
const transform_1 = require("
|
|
13
|
-
const parse_1 = require("
|
|
8
|
+
const types_1 = require("@e-mc/types");
|
|
9
|
+
const core_1 = require("@e-mc/core");
|
|
10
|
+
const db_1 = require("@e-mc/db");
|
|
11
|
+
const util_1 = require("@e-mc/document/util");
|
|
12
|
+
const transform_1 = require("@e-mc/document/transform");
|
|
13
|
+
const parse_1 = require("@e-mc/document/parse");
|
|
14
14
|
const PIR_PLUGINS = Object.freeze({
|
|
15
15
|
"@babel/core": "@pi-r/babel",
|
|
16
16
|
"clean-css": "@pi-r/clean-css",
|
|
@@ -52,7 +52,7 @@ function deleteTransform(map, key, timeout) {
|
|
|
52
52
|
--CACHE_TOTAL;
|
|
53
53
|
}
|
|
54
54
|
function getSourceMappingURL(value, css) {
|
|
55
|
-
if (value.
|
|
55
|
+
if (value.includes(' ')) {
|
|
56
56
|
value = encodeURIComponent(value);
|
|
57
57
|
}
|
|
58
58
|
return css ? `\n/*# sourceMappingURL=${value} */\n` : `\n//# sourceMappingURL=${value}\n`;
|
|
@@ -112,17 +112,16 @@ class Document extends core_1.Client {
|
|
|
112
112
|
}
|
|
113
113
|
try {
|
|
114
114
|
const args = [instance];
|
|
115
|
-
|
|
116
|
-
if (ext["__cjs__" /* INTERNAL.CJS */]) {
|
|
115
|
+
if (ext["__cjs__"]) {
|
|
117
116
|
args.push(__dirname);
|
|
118
117
|
}
|
|
119
|
-
else if (core_1.Client.enabled("node.require.inline"
|
|
118
|
+
else if (core_1.Client.enabled("node.require.inline")) {
|
|
120
119
|
args.push(require);
|
|
121
120
|
}
|
|
122
121
|
await ext.apply(this, args);
|
|
123
122
|
}
|
|
124
123
|
catch (err) {
|
|
125
|
-
instance.writeFail(["Unknown"
|
|
124
|
+
instance.writeFail(["Unknown", this.moduleName], err);
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
}
|
|
@@ -144,7 +143,7 @@ class Document extends core_1.Client {
|
|
|
144
143
|
map.sources = [""];
|
|
145
144
|
}
|
|
146
145
|
try {
|
|
147
|
-
let css = mimeType === 'text/css', flags = 0
|
|
146
|
+
let css = mimeType === 'text/css', flags = 0;
|
|
148
147
|
const output = JSON.stringify(map);
|
|
149
148
|
const toBase64 = () => 'data:application/json;base64,' + Buffer.from(output).toString('base64');
|
|
150
149
|
if (!inlineMap) {
|
|
@@ -165,24 +164,24 @@ class Document extends core_1.Client {
|
|
|
165
164
|
}
|
|
166
165
|
}
|
|
167
166
|
let code = data.code.replace(transform_1.SourceMap.RE_SOURCE_MAPPING_URL, (...capture) => {
|
|
168
|
-
flags |= 1
|
|
167
|
+
flags |= 1;
|
|
169
168
|
if (capture[2] && capture[5]) {
|
|
170
169
|
css = true;
|
|
171
170
|
}
|
|
172
171
|
if (inlineMap || capture[3]) {
|
|
173
|
-
flags |= 2
|
|
172
|
+
flags |= 2;
|
|
174
173
|
return getSourceMappingURL(toBase64(), css);
|
|
175
174
|
}
|
|
176
175
|
return capture[1] || css ? getSourceMappingURL(sourceMappingURL, css) : capture[0];
|
|
177
176
|
});
|
|
178
|
-
if (inlineMap || flags & 2
|
|
179
|
-
if (flags === 0
|
|
177
|
+
if (inlineMap || flags & 2) {
|
|
178
|
+
if (flags === 0) {
|
|
180
179
|
code += getSourceMappingURL(toBase64(), css);
|
|
181
180
|
}
|
|
182
181
|
data.code = code;
|
|
183
182
|
}
|
|
184
183
|
else {
|
|
185
|
-
if (flags === 0
|
|
184
|
+
if (flags === 0) {
|
|
186
185
|
code += getSourceMappingURL(sourceMappingURL, css);
|
|
187
186
|
}
|
|
188
187
|
const result = path.join(path.dirname(uri), sourceMappingURL);
|
|
@@ -293,7 +292,7 @@ class Document extends core_1.Client {
|
|
|
293
292
|
for (const { severity, line, column, ruleId, message, fatal } of messages) {
|
|
294
293
|
let error;
|
|
295
294
|
if (severity) {
|
|
296
|
-
if (error = severity === 2
|
|
295
|
+
if (error = severity === 2 || severity === "error") {
|
|
297
296
|
++errorCount;
|
|
298
297
|
}
|
|
299
298
|
else {
|
|
@@ -370,20 +369,18 @@ class Document extends core_1.Client {
|
|
|
370
369
|
for (const pattern in pages) {
|
|
371
370
|
const item = pages[pattern];
|
|
372
371
|
if ((0, types_1.isPlainObject)(item)) {
|
|
373
|
-
|
|
374
|
-
if (!(isMatch = CACHE_PICOMATCH.get(pattern)) && (0, types_1.hasGlob)(pattern)) {
|
|
375
|
-
isMatch = pm(pattern, { matchBase: true });
|
|
376
|
-
CACHE_PICOMATCH.set(pattern, isMatch);
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
continue;
|
|
380
|
-
}
|
|
381
|
-
if (isMatch(baseUrl)) {
|
|
372
|
+
if (pattern === baseUrl) {
|
|
382
373
|
items.push(item);
|
|
383
374
|
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
375
|
+
else if ((0, types_1.hasGlob)(pattern)) {
|
|
376
|
+
let isMatch = CACHE_PICOMATCH.get(pattern);
|
|
377
|
+
if (!isMatch) {
|
|
378
|
+
CACHE_PICOMATCH.set(pattern, isMatch = pm(pattern, { matchBase: true }));
|
|
379
|
+
}
|
|
380
|
+
if (isMatch(baseUrl)) {
|
|
381
|
+
items.push(item);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
387
384
|
}
|
|
388
385
|
}
|
|
389
386
|
if (items.length > 1) {
|
|
@@ -413,18 +410,18 @@ class Document extends core_1.Client {
|
|
|
413
410
|
const handler = db.handler;
|
|
414
411
|
const database = this.dataSource.filter(this.forDb.bind(this));
|
|
415
412
|
let instance;
|
|
416
|
-
if ((0, types_1.isString)(handler) && handler !== "@e-mc/db"
|
|
413
|
+
if ((0, types_1.isString)(handler) && handler !== "@e-mc/db") {
|
|
417
414
|
try {
|
|
418
415
|
const Handler = require(handler);
|
|
419
416
|
if (isFunction(Handler) && Handler.prototype instanceof core_1.ClientDb) {
|
|
420
417
|
instance = new Handler(db, database);
|
|
421
418
|
}
|
|
422
419
|
else {
|
|
423
|
-
throw (0, types_1.errorMessage)(this.moduleName, "Not a Db constructor"
|
|
420
|
+
throw (0, types_1.errorMessage)(this.moduleName, "Not a Db constructor", handler);
|
|
424
421
|
}
|
|
425
422
|
}
|
|
426
423
|
catch (err) {
|
|
427
|
-
this.checkPackage(err, handler, ["Unable to load handler"
|
|
424
|
+
this.checkPackage(err, handler, ["Unable to load handler", this.moduleName], 65536);
|
|
428
425
|
}
|
|
429
426
|
}
|
|
430
427
|
else {
|
|
@@ -581,7 +578,7 @@ class Document extends core_1.Client {
|
|
|
581
578
|
return getObject(result, false);
|
|
582
579
|
}
|
|
583
580
|
else {
|
|
584
|
-
warning(path.isAbsolute(value) ? "Unsupported access"
|
|
581
|
+
warning(path.isAbsolute(value) ? "Unsupported access" + ` (${value})` : "Unknown");
|
|
585
582
|
}
|
|
586
583
|
break;
|
|
587
584
|
}
|
|
@@ -624,7 +621,7 @@ class Document extends core_1.Client {
|
|
|
624
621
|
result = CACHE_REQUIRE[pkgName];
|
|
625
622
|
}
|
|
626
623
|
if (!result) {
|
|
627
|
-
if (!core_1.Client.enabled("node.require.npm"
|
|
624
|
+
if (!core_1.Client.enabled("node.require.npm")) {
|
|
628
625
|
return null;
|
|
629
626
|
}
|
|
630
627
|
try {
|
|
@@ -636,11 +633,11 @@ class Document extends core_1.Client {
|
|
|
636
633
|
CACHE_REQUIRE[pkgName] = result;
|
|
637
634
|
}
|
|
638
635
|
if (typeof result === 'function') {
|
|
639
|
-
return Object.defineProperty(result, "__cjs__"
|
|
636
|
+
return Object.defineProperty(result, "__cjs__", { value: true });
|
|
640
637
|
}
|
|
641
638
|
}
|
|
642
639
|
catch (err) {
|
|
643
|
-
this.checkPackage(err, pkgName, "Unknown"
|
|
640
|
+
this.checkPackage(err, pkgName, "Unknown");
|
|
644
641
|
}
|
|
645
642
|
if (!result) {
|
|
646
643
|
return null;
|
|
@@ -659,13 +656,12 @@ class Document extends core_1.Client {
|
|
|
659
656
|
catch {
|
|
660
657
|
}
|
|
661
658
|
}
|
|
662
|
-
|
|
663
|
-
if ((0, types_1.isObject)(result) || typeof result === 'function' && (result["__cjs__" /* INTERNAL.CJS */] || this.hasEval('function'))) {
|
|
659
|
+
if ((0, types_1.isObject)(result) || typeof result === 'function' && (result["__cjs__"] || this.hasEval('function'))) {
|
|
664
660
|
return result;
|
|
665
661
|
}
|
|
666
662
|
}
|
|
667
663
|
catch (err) {
|
|
668
|
-
this.writeFail(["Unable to read file"
|
|
664
|
+
this.writeFail(["Unable to read file", path.basename(value)], err, 8192);
|
|
669
665
|
}
|
|
670
666
|
return null;
|
|
671
667
|
}
|
|
@@ -690,7 +686,7 @@ class Document extends core_1.Client {
|
|
|
690
686
|
if (imports) {
|
|
691
687
|
const normalizeDir = (value) => {
|
|
692
688
|
const sep = value.includes('\\') && !value.includes('/') ? '\\' : '/';
|
|
693
|
-
return value + (value
|
|
689
|
+
return value + (!value.endsWith(sep) ? sep : '');
|
|
694
690
|
};
|
|
695
691
|
for (const url in imports) {
|
|
696
692
|
if (uri === url || normalizeDir(uri) === normalizeDir(url)) {
|
|
@@ -743,7 +739,7 @@ class Document extends core_1.Client {
|
|
|
743
739
|
}
|
|
744
740
|
}
|
|
745
741
|
catch (err) {
|
|
746
|
-
this.writeFail(["Unable to read file"
|
|
742
|
+
this.writeFail(["Unable to read file", localUri && path.basename(localUri)], 32);
|
|
747
743
|
}
|
|
748
744
|
}
|
|
749
745
|
else if (bundleContent) {
|
|
@@ -799,7 +795,7 @@ class Document extends core_1.Client {
|
|
|
799
795
|
catch (err) {
|
|
800
796
|
const name = (0, util_1.getModuleName)(err);
|
|
801
797
|
if (name) {
|
|
802
|
-
this.checkPackage(err, (0, util_1.getModuleName)(err), "Unknown"
|
|
798
|
+
this.checkPackage(err, (0, util_1.getModuleName)(err), "Unknown");
|
|
803
799
|
}
|
|
804
800
|
throw err;
|
|
805
801
|
}
|
|
@@ -838,7 +834,7 @@ class Document extends core_1.Client {
|
|
|
838
834
|
if (!((0, types_1.isPlainObject)(target) && target.name)) {
|
|
839
835
|
this.abort('view_engine');
|
|
840
836
|
const from = typeof viewEngine === 'string' ? viewEngine : this.moduleName;
|
|
841
|
-
this.writeFail(["Unable to load configuration"
|
|
837
|
+
this.writeFail(["Unable to load configuration", from], (0, types_1.errorMessage)('view-engine', from, "Unknown"));
|
|
842
838
|
return null;
|
|
843
839
|
}
|
|
844
840
|
const length = data.length;
|
|
@@ -866,25 +862,25 @@ class Document extends core_1.Client {
|
|
|
866
862
|
const cacheKey = username + core_1.Client.asHash(template + (compile ? core_1.Client.asString(compile) : ''));
|
|
867
863
|
let result = '', render, valid;
|
|
868
864
|
if (!(render = cache[cacheKey])) {
|
|
869
|
-
render = await context.compile(template, compile);
|
|
865
|
+
render = await context.compile(template, compile);
|
|
870
866
|
cache[cacheKey] = render;
|
|
871
|
-
if (!core_1.Client.enabled("memory.settings.users"
|
|
872
|
-
setTimeout(() => delete cache[cacheKey], 60000
|
|
867
|
+
if (!core_1.Client.enabled("memory.settings.users", username)) {
|
|
868
|
+
setTimeout(() => delete cache[cacheKey], 60000);
|
|
873
869
|
}
|
|
874
870
|
}
|
|
875
871
|
for (let i = 0, j = 0, row; i < length; ++i) {
|
|
876
872
|
if ((0, types_1.isPlainObject)(row = data[i])) {
|
|
877
|
-
row
|
|
873
|
+
row.__index__ ?? (row.__index__ = ++j);
|
|
878
874
|
if (output) {
|
|
879
875
|
row = { ...output, ...row };
|
|
880
876
|
}
|
|
881
877
|
}
|
|
882
878
|
else if (!(0, types_1.isObject)(row)) {
|
|
883
|
-
this.addLog(types_1.STATUS_TYPE.WARN, joinString(`view engine[${name}]`, `row #${i + 1}`, core_1.Client.asString(row) || "Unknown"
|
|
879
|
+
this.addLog(types_1.STATUS_TYPE.WARN, joinString(`view engine[${name}]`, `row #${i + 1}`, core_1.Client.asString(row) || "Unknown"));
|
|
884
880
|
continue;
|
|
885
881
|
}
|
|
886
882
|
if (!singleRow) {
|
|
887
|
-
const content = await render.call(context, row);
|
|
883
|
+
const content = await render.call(context, row);
|
|
888
884
|
if (content !== undefined && content !== null) {
|
|
889
885
|
result += content;
|
|
890
886
|
valid = true;
|
|
@@ -895,7 +891,7 @@ class Document extends core_1.Client {
|
|
|
895
891
|
}
|
|
896
892
|
catch (err) {
|
|
897
893
|
this.abort('view_engine');
|
|
898
|
-
this.checkPackage(err, name, "Unknown"
|
|
894
|
+
this.checkPackage(err, name, "Unknown", 4);
|
|
899
895
|
}
|
|
900
896
|
return null;
|
|
901
897
|
}
|
|
@@ -911,7 +907,7 @@ class Document extends core_1.Client {
|
|
|
911
907
|
const username = this.host?.username || '';
|
|
912
908
|
const config = this._transformConfig;
|
|
913
909
|
const cacheData = config && options.cacheData;
|
|
914
|
-
const cacheType = username && core_1.Client.enabled("memory.settings.users"
|
|
910
|
+
const cacheType = username && core_1.Client.enabled("memory.settings.users", username) ? true : this.cacheDir || core_1.Client.enabled("memory.settings.users");
|
|
915
911
|
let formatKey, hashKey, excludeKey;
|
|
916
912
|
if (cacheData && cacheType && !CACHE_EXTERNAL[excludeKey = moduleName + '_' + type + '_' + format] && (!config.exclude[type] || Array.isArray(config.exclude[type]) && !format.some(value => config.exclude[type].includes(value)) || Array.isArray(config.include[type]) && format.every(value => config.include[type].includes(value)))) {
|
|
917
913
|
const { uri, etag } = cacheData;
|
|
@@ -987,7 +983,7 @@ class Document extends core_1.Client {
|
|
|
987
983
|
}
|
|
988
984
|
if (result) {
|
|
989
985
|
result.storedLog?.forEach(log => this.addLog(log));
|
|
990
|
-
this.formatMessage(4
|
|
986
|
+
this.formatMessage(4, type, [joinString(cacheName, format.filter(value => value).join(' | '), options.filename), 'cache'], uri, { ...core_1.Client.LOG_STYLE_NOTICE, hintBold: true });
|
|
991
987
|
return result;
|
|
992
988
|
}
|
|
993
989
|
}
|
|
@@ -1065,7 +1061,7 @@ class Document extends core_1.Client {
|
|
|
1065
1061
|
if (typeof value !== 'string' || (0, types_1.isArray)(out.sourceFiles) && this.hasOwnPermission() && out.sourceFiles.some(item => !this.canRead(item, { ownPermissionOnly: true }))) {
|
|
1066
1062
|
failed = true;
|
|
1067
1063
|
ignoreCache = true;
|
|
1068
|
-
this.writeFail(["Unable to transform document"
|
|
1064
|
+
this.writeFail(["Unable to transform document", plugin], (0, types_1.errorMessage)(plugin, name, typeof value === 'string' ? "Unsupported access" : 'Empty'), { type: 4, startTime });
|
|
1069
1065
|
}
|
|
1070
1066
|
else if (source !== value) {
|
|
1071
1067
|
series.code = value;
|
|
@@ -1097,19 +1093,18 @@ class Document extends core_1.Client {
|
|
|
1097
1093
|
}
|
|
1098
1094
|
this.writeTimeProcess(failed ? 'CHECK' : type, joinString(hint, options.filename) + (series.out.messageAppend || ''), startTime, { failed, bypassLog });
|
|
1099
1095
|
};
|
|
1100
|
-
this.formatMessage(4
|
|
1096
|
+
this.formatMessage(4, type, ['Transforming source...', hint], options.filename, { hintColor: 'cyan' });
|
|
1101
1097
|
try {
|
|
1102
1098
|
let context = require(plugin);
|
|
1103
1099
|
series.packageName = plugin;
|
|
1104
1100
|
if (typeof baseConfig === 'function') {
|
|
1105
1101
|
series.baseConfig = outputConfig;
|
|
1106
|
-
|
|
1107
|
-
if (baseConfig["__cjs__" /* INTERNAL.CJS */]) {
|
|
1102
|
+
if (baseConfig["__cjs__"]) {
|
|
1108
1103
|
next(await baseConfig(context, source, series));
|
|
1109
1104
|
}
|
|
1110
1105
|
else {
|
|
1111
|
-
const thisArg = core_1.Client.enabled("node.process.inline"
|
|
1112
|
-
const inline = core_1.Client.enabled("node.require.inline"
|
|
1106
|
+
const thisArg = core_1.Client.enabled("node.process.inline") ? process : null;
|
|
1107
|
+
const inline = core_1.Client.enabled("node.require.inline");
|
|
1113
1108
|
const args = [context, source, series];
|
|
1114
1109
|
if (baseConfig.toString().startsWith('async')) {
|
|
1115
1110
|
if (inline) {
|
|
@@ -1133,7 +1128,7 @@ class Document extends core_1.Client {
|
|
|
1133
1128
|
if (!transformer) {
|
|
1134
1129
|
try {
|
|
1135
1130
|
let pkg = this.resolveDir('package', plugin + '.js') || userImports?.[plugin] || imports[plugin] || PIR_PLUGINS[plugin];
|
|
1136
|
-
if (
|
|
1131
|
+
if (pkg) {
|
|
1137
1132
|
const match = /^(@?\S+)@(\d+(?:\.\d+(?:\.\S+)?)?|[a-z]+)$/.exec(pkg);
|
|
1138
1133
|
if (match) {
|
|
1139
1134
|
pkg = match[1];
|
|
@@ -1144,10 +1139,12 @@ class Document extends core_1.Client {
|
|
|
1144
1139
|
else {
|
|
1145
1140
|
transformer = context;
|
|
1146
1141
|
context = this;
|
|
1147
|
-
pkg = undefined;
|
|
1148
1142
|
}
|
|
1149
|
-
if (typeof transformer !== 'function'
|
|
1150
|
-
|
|
1143
|
+
if (typeof transformer !== 'function') {
|
|
1144
|
+
transformer && (transformer = transformer.default);
|
|
1145
|
+
if (typeof transformer !== 'function') {
|
|
1146
|
+
throw (0, types_1.errorMessage)(plugin, pkg || name, 'Invalid function');
|
|
1147
|
+
}
|
|
1151
1148
|
}
|
|
1152
1149
|
if (pkg) {
|
|
1153
1150
|
CACHE_PACKAGE[plugin + username] = transformer;
|
|
@@ -1155,7 +1152,7 @@ class Document extends core_1.Client {
|
|
|
1155
1152
|
}
|
|
1156
1153
|
catch (err) {
|
|
1157
1154
|
abort();
|
|
1158
|
-
this.writeFail(["Unknown"
|
|
1155
|
+
this.writeFail(["Unknown", username ? plugin + ':' + username : hint], err, { type: 4, startTime });
|
|
1159
1156
|
continue;
|
|
1160
1157
|
}
|
|
1161
1158
|
}
|
|
@@ -1165,7 +1162,7 @@ class Document extends core_1.Client {
|
|
|
1165
1162
|
}
|
|
1166
1163
|
catch (err) {
|
|
1167
1164
|
abort();
|
|
1168
|
-
this.checkPackage(err, (0, util_1.getModuleName)(err), ["Unable to transform document"
|
|
1165
|
+
this.checkPackage(err, (0, util_1.getModuleName)(err), ["Unable to transform document", hint], { type: 4, startTime });
|
|
1169
1166
|
if (i < length - 1) {
|
|
1170
1167
|
series.reset();
|
|
1171
1168
|
}
|
|
@@ -1174,10 +1171,10 @@ class Document extends core_1.Client {
|
|
|
1174
1171
|
else {
|
|
1175
1172
|
abort();
|
|
1176
1173
|
if (plugin) {
|
|
1177
|
-
this.writeFail("Unable to load configuration"
|
|
1174
|
+
this.writeFail("Unable to load configuration", (0, types_1.errorMessage)(plugin, name, 'Invalid config'), 4);
|
|
1178
1175
|
}
|
|
1179
1176
|
else {
|
|
1180
|
-
this.writeFail('Format method was not found', (0, types_1.errorValue)(name, "Unknown"
|
|
1177
|
+
this.writeFail('Format method was not found', (0, types_1.errorValue)(name, "Unknown"), 4);
|
|
1181
1178
|
}
|
|
1182
1179
|
}
|
|
1183
1180
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e-mc/document",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "Document constructor for E-mc.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/anpham6/e-mc.git",
|
|
12
|
+
"url": "git+https://github.com/anpham6/e-mc.git",
|
|
13
13
|
"directory": "src/document"
|
|
14
14
|
},
|
|
15
15
|
"keywords": [
|
|
@@ -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.5.
|
|
24
|
-
"@e-mc/db": "0.5.
|
|
25
|
-
"@e-mc/types": "0.5.
|
|
23
|
+
"@e-mc/core": "0.5.4",
|
|
24
|
+
"@e-mc/db": "0.5.4",
|
|
25
|
+
"@e-mc/types": "0.5.4",
|
|
26
26
|
"chalk": "4.1.2",
|
|
27
27
|
"htmlparser2": "^9.0.0",
|
|
28
28
|
"js-yaml": "^4.1.0",
|
package/parse/dom.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { IGNORE_FLAG, DomWriterConstructor, HtmlElementConstructor } from './types';
|
|
2
|
-
|
|
3
|
-
declare namespace dom {
|
|
4
|
-
const IGNORE_FLAG: IGNORE_FLAG;
|
|
5
|
-
const DomWriter: DomWriterConstructor;
|
|
6
|
-
const HtmlElement: HtmlElementConstructor;
|
|
7
|
-
}
|
|
8
|
-
|
|
1
|
+
import type { IGNORE_FLAG, DomWriterConstructor, HtmlElementConstructor } from './types';
|
|
2
|
+
|
|
3
|
+
declare namespace dom {
|
|
4
|
+
const IGNORE_FLAG: IGNORE_FLAG;
|
|
5
|
+
const DomWriter: DomWriterConstructor;
|
|
6
|
+
const HtmlElement: HtmlElementConstructor;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
9
|
export = dom;
|
package/parse/dom.js
CHANGED
|
@@ -4,9 +4,9 @@ exports.IGNORE_FLAG = exports.HtmlElement = exports.DomWriter = void 0;
|
|
|
4
4
|
const htmlparser2 = require("htmlparser2");
|
|
5
5
|
const domhandler = require("domhandler");
|
|
6
6
|
const domutils = require("domutils");
|
|
7
|
-
const types_1 = require("
|
|
8
|
-
const util_1 = require("
|
|
9
|
-
const index_1 = require("
|
|
7
|
+
const types_1 = require("@e-mc/types");
|
|
8
|
+
const util_1 = require("@e-mc/document/util");
|
|
9
|
+
const index_1 = require("@e-mc/document/parse");
|
|
10
10
|
Object.defineProperty(exports, "IGNORE_FLAG", { enumerable: true, get: function () { return index_1.IGNORE_FLAG; } });
|
|
11
11
|
const Parser = htmlparser2.Parser;
|
|
12
12
|
const DomHandler = domhandler.DomHandler;
|
|
@@ -30,7 +30,7 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
30
30
|
if (ignoreTagGroup) {
|
|
31
31
|
for (let i = 0, length = ignoreTagGroup.length; i < length; i += 2) {
|
|
32
32
|
const start = ignoreTagGroup[i];
|
|
33
|
-
if (start
|
|
33
|
+
if (start.startsWith('<')) {
|
|
34
34
|
tagGroup.push(new RegExp('^' + (0, types_1.escapePattern)(start)));
|
|
35
35
|
}
|
|
36
36
|
const end = ignoreTagGroup[i + 1];
|
|
@@ -89,7 +89,7 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
89
89
|
const result = { element: null, error: null };
|
|
90
90
|
new Parser(new DomHandler((err, dom) => {
|
|
91
91
|
if (!err) {
|
|
92
|
-
result.element = domutils.findOne(elem => elem.tagName === "html"
|
|
92
|
+
result.element = domutils.findOne(elem => elem.tagName === "html", dom);
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
95
|
result.error = err;
|
|
@@ -111,8 +111,8 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
111
111
|
parser || (parser = { ...PARSER_OPTIONS });
|
|
112
112
|
super(documentName, source, elements, { parser });
|
|
113
113
|
this.documentElement = null;
|
|
114
|
-
this.ignoreTagName = "title|style|script"
|
|
115
|
-
this.rootName = "html"
|
|
114
|
+
this.ignoreTagName = "title|style|script";
|
|
115
|
+
this.rootName = "html";
|
|
116
116
|
this.ignoreCaseTagName = true;
|
|
117
117
|
const items = [];
|
|
118
118
|
let outerXml = '', documentElement, offsetMap, startIndex = -1;
|
|
@@ -121,7 +121,7 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
121
121
|
item.tagName = item.tagName.toLowerCase();
|
|
122
122
|
item.ignoreCase = true;
|
|
123
123
|
}
|
|
124
|
-
if (item.tagName === "html"
|
|
124
|
+
if (item.tagName === "html") {
|
|
125
125
|
items.push(item);
|
|
126
126
|
if (!documentElement && item.innerXml) {
|
|
127
127
|
documentElement = item;
|
|
@@ -198,7 +198,7 @@ class DomWriter extends index_1.XmlWriter {
|
|
|
198
198
|
if (this.modified && this.documentElement) {
|
|
199
199
|
let innerXml;
|
|
200
200
|
for (const item of this.elements) {
|
|
201
|
-
if (item.tagName === "html"
|
|
201
|
+
if (item.tagName === "html") {
|
|
202
202
|
if (!innerXml && index_1.XmlWriter.isIndex(item.endIndex)) {
|
|
203
203
|
innerXml = this.source.substring(item.endIndex + 1, this.source.length - 7).trim();
|
|
204
204
|
}
|
|
@@ -223,7 +223,7 @@ class HtmlElement extends index_1.XmlElement {
|
|
|
223
223
|
constructor(documentName, node, attributes, options = {}) {
|
|
224
224
|
options.parser || (options.parser = { ...PARSER_OPTIONS });
|
|
225
225
|
super(documentName, node, attributes, { ...options, tagVoid: TAG_VOID.includes(node.tagName) });
|
|
226
|
-
this._documentType = "HTML"
|
|
226
|
+
this._documentType = "HTML";
|
|
227
227
|
}
|
|
228
228
|
getTagOffset(source) {
|
|
229
229
|
switch (this.node.append?.tagName || this.tagName) {
|
|
@@ -233,7 +233,7 @@ class HtmlElement extends index_1.XmlElement {
|
|
|
233
233
|
case 'script':
|
|
234
234
|
return;
|
|
235
235
|
default:
|
|
236
|
-
return super.getTagOffset(source, { ignoreCase: this.ignoreCase, ignoreTagName: "title|style|script"
|
|
236
|
+
return super.getTagOffset(source, { ignoreCase: this.ignoreCase, ignoreTagName: "title|style|script", parser: this.parser });
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
findIndexOf(source) {
|
|
@@ -244,8 +244,8 @@ class HtmlElement extends index_1.XmlElement {
|
|
|
244
244
|
}
|
|
245
245
|
get outerXml() {
|
|
246
246
|
const [tagName, items, innerXml] = this.getOuterContent();
|
|
247
|
-
return '<' + tagName + HtmlElement.writeAttributes(items) + '>' + (DomWriter.hasInnerXml(tagName) && tagName !== "html"
|
|
247
|
+
return '<' + tagName + HtmlElement.writeAttributes(items) + '>' + (DomWriter.hasInnerXml(tagName) && tagName !== "html" ? (tagName === 'title' ? index_1.XmlWriter.escapeXmlString(innerXml) : innerXml) + `</${tagName}>` : '');
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
exports.HtmlElement = HtmlElement;
|
|
251
|
-
index_1.XmlWriter.namesOfTagVoid("HTML"
|
|
251
|
+
index_1.XmlWriter.namesOfTagVoid("HTML", TAG_VOID);
|
package/parse/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { IGNORE_FLAG, XmlWriterConstructor, XmlElementConstructor } from './types';
|
|
2
|
-
|
|
3
|
-
declare namespace parse {
|
|
4
|
-
const IGNORE_FLAG: IGNORE_FLAG;
|
|
5
|
-
const XmlWriter: XmlWriterConstructor;
|
|
6
|
-
const XmlElement: XmlElementConstructor;
|
|
7
|
-
}
|
|
8
|
-
|
|
1
|
+
import type { IGNORE_FLAG, XmlWriterConstructor, XmlElementConstructor } from './types';
|
|
2
|
+
|
|
3
|
+
declare namespace parse {
|
|
4
|
+
const IGNORE_FLAG: IGNORE_FLAG;
|
|
5
|
+
const XmlWriter: XmlWriterConstructor;
|
|
6
|
+
const XmlElement: XmlElementConstructor;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
9
|
export = parse;
|
package/parse/index.js
CHANGED
|
@@ -4,8 +4,8 @@ exports.XmlElement = exports.XmlWriter = exports.IGNORE_FLAG = void 0;
|
|
|
4
4
|
const htmlparser2 = require("htmlparser2");
|
|
5
5
|
const domhandler = require("domhandler");
|
|
6
6
|
const domutils = require("domutils");
|
|
7
|
-
const types_1 = require("
|
|
8
|
-
const module_1 = require("
|
|
7
|
+
const types_1 = require("@e-mc/types");
|
|
8
|
+
const module_1 = require("@e-mc/module");
|
|
9
9
|
var IGNORE_FLAG;
|
|
10
10
|
(function (IGNORE_FLAG) {
|
|
11
11
|
IGNORE_FLAG[IGNORE_FLAG["NONE"] = 0] = "NONE";
|
|
@@ -174,7 +174,7 @@ class XmlWriter {
|
|
|
174
174
|
}
|
|
175
175
|
static getNewlineString(leading, trailing, newline) {
|
|
176
176
|
const value = leading + trailing;
|
|
177
|
-
return getNewlineCount(value) > 1 ? newline || (value.
|
|
177
|
+
return getNewlineCount(value) > 1 ? newline || (value.includes('\r') ? '\r\n' : '\n') : '';
|
|
178
178
|
}
|
|
179
179
|
static findCloseTag(source, startIndex = 0) {
|
|
180
180
|
const length = source.length;
|
|
@@ -910,11 +910,11 @@ class XmlWriter {
|
|
|
910
910
|
}
|
|
911
911
|
let tagName = this.ignoreTagName || '';
|
|
912
912
|
if (tagName) {
|
|
913
|
-
if (value
|
|
913
|
+
if (!value.startsWith('|') && !tagName.endsWith('|')) {
|
|
914
914
|
tagName += '|';
|
|
915
915
|
}
|
|
916
916
|
}
|
|
917
|
-
else if (value
|
|
917
|
+
else if (value.startsWith('|')) {
|
|
918
918
|
value = value.substring(1);
|
|
919
919
|
}
|
|
920
920
|
this.ignoreTagName = tagName + value;
|
|
@@ -1260,7 +1260,7 @@ class XmlElement {
|
|
|
1260
1260
|
const { tagName, tagIndex = -1, tagCount = Infinity, ignoreCase } = node;
|
|
1261
1261
|
const id = this.id;
|
|
1262
1262
|
const flags = ignoreCase ? 'gi' : 'g';
|
|
1263
|
-
const hasId = (startIndex, endIndex) => source.substring(startIndex, endIndex).
|
|
1263
|
+
const hasId = (startIndex, endIndex) => source.substring(startIndex, endIndex).includes(id);
|
|
1264
1264
|
const errorResult = () => ['', '', (0, types_1.errorValue)('Element was not found', tagName.toUpperCase() + (isIndex(tagIndex) ? ' @ ' + tagIndex : ''))];
|
|
1265
1265
|
let position;
|
|
1266
1266
|
if (XmlWriter.isTagVoid(this.documentType, tagName)) {
|
package/transform/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { SourceMapConstructor, TransformSeriesConstructor } from '../../types/lib/document';
|
|
2
|
-
|
|
3
|
-
declare namespace transform {
|
|
4
|
-
const TransformSeries: TransformSeriesConstructor;
|
|
5
|
-
const SourceMap: SourceMapConstructor;
|
|
6
|
-
}
|
|
7
|
-
|
|
1
|
+
import type { SourceMapConstructor, TransformSeriesConstructor } from '../../types/lib/document';
|
|
2
|
+
|
|
3
|
+
declare namespace transform {
|
|
4
|
+
const TransformSeries: TransformSeriesConstructor;
|
|
5
|
+
const SourceMap: SourceMapConstructor;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
8
|
export = transform;
|
package/transform/index.js
CHANGED
|
@@ -3,8 +3,8 @@ var _a, _b, _c, _d;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.SourceMap = exports.TransformSeries = void 0;
|
|
5
5
|
const path = require("path");
|
|
6
|
-
const types_1 = require("
|
|
7
|
-
const core_1 = require("
|
|
6
|
+
const types_1 = require("@e-mc/types");
|
|
7
|
+
const core_1 = require("@e-mc/core");
|
|
8
8
|
const kCode = Symbol('code');
|
|
9
9
|
const kMap = Symbol('map');
|
|
10
10
|
const kOut = Symbol('out');
|
|
@@ -16,7 +16,7 @@ const kUsername = Symbol('username');
|
|
|
16
16
|
const kProductionRelease = Symbol('productionRelease');
|
|
17
17
|
function parseMap(data, value) {
|
|
18
18
|
let [mimeType, encoding] = data.split(';');
|
|
19
|
-
if (!encoding && mimeType.
|
|
19
|
+
if (!encoding && !mimeType.includes('/')) {
|
|
20
20
|
encoding = mimeType;
|
|
21
21
|
}
|
|
22
22
|
return encoding.includes('base64') ? Buffer.from(value, 'base64').toString() : value;
|
|
@@ -185,21 +185,17 @@ class TransformSeries extends core_1.Module {
|
|
|
185
185
|
return this.options.external;
|
|
186
186
|
}
|
|
187
187
|
set version(value) {
|
|
188
|
-
|
|
189
|
-
this.metadata['__version__'] = value;
|
|
188
|
+
this.metadata.__version__ = value;
|
|
190
189
|
}
|
|
191
190
|
get version() {
|
|
192
|
-
|
|
193
|
-
return this.metadata['__version__'] || '';
|
|
191
|
+
return this.metadata.__version__ || '';
|
|
194
192
|
}
|
|
195
193
|
set packageName(value) {
|
|
196
|
-
|
|
197
|
-
this.metadata['__packagename__'] = value;
|
|
194
|
+
this.metadata.__packagename__ = value;
|
|
198
195
|
this.version = 'latest';
|
|
199
196
|
}
|
|
200
197
|
get packageName() {
|
|
201
|
-
|
|
202
|
-
return this.metadata['__packagename__'] || '';
|
|
198
|
+
return this.metadata.__packagename__ || '';
|
|
203
199
|
}
|
|
204
200
|
get packageVersion() {
|
|
205
201
|
const packageName = this.packageName;
|
package/util.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isObject = exports.removeInternalProperties = exports.getModuleName = exports.hasValue = exports.getHashData = exports.getNewline = exports.getIndent = exports.appendSuffix = exports.splitEnclosing = exports.concatString = exports.replaceAll = exports.loadPlugins = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const types_1 = require("
|
|
5
|
+
const types_1 = require("@e-mc/types");
|
|
6
6
|
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return types_1.isObject; } });
|
|
7
7
|
function loadPlugins(name, plugins = []) {
|
|
8
8
|
if (Array.isArray(name)) {
|