barrelize 1.1.7 → 1.2.0

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/lib/index.js CHANGED
@@ -1,9 +1,9 @@
1
+ import * as actualFS from "node:fs";
2
+ import { existsSync } from "node:fs";
1
3
  import { writeFile, readFile, realpath, readlink, readdir, lstat } from "node:fs/promises";
2
- import { fileURLToPath } from "node:url";
3
4
  import { resolve, dirname, win32, posix, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
4
6
  import { realpathSync as realpathSync$1, readlinkSync, readdirSync, readdir as readdir$1, lstatSync } from "fs";
5
- import * as actualFS from "node:fs";
6
- import { existsSync } from "node:fs";
7
7
  import { EventEmitter as EventEmitter$1 } from "node:events";
8
8
  import Stream from "node:stream";
9
9
  import { StringDecoder } from "node:string_decoder";
@@ -591,7 +591,7 @@ class CAC extends EventEmitter {
591
591
  }
592
592
  const cac = (name2 = "") => new CAC(name2);
593
593
  const name = "barrelize";
594
- const version = "1.1.6";
594
+ const version = "1.1.7";
595
595
  function cliInit() {
596
596
  const cli = cac(name);
597
597
  cli.command("[config path]", `Generate 'index.ts' files for all directories`).action(async (config) => {
@@ -612,6 +612,36 @@ function cliInit() {
612
612
  }
613
613
  }
614
614
  }
615
+ const configTemplate = {
616
+ $schema: "node_modules/barrelize/schema.json",
617
+ directories: [
618
+ {
619
+ path: "src",
620
+ include: ["**/*.ts"],
621
+ exclude: ["**/*.test.ts"],
622
+ indexFilePath: "index.ts"
623
+ }
624
+ ]
625
+ };
626
+ async function runInitCommand(baseConfigFilePath) {
627
+ const configFilePath = resolve(process.cwd(), baseConfigFilePath);
628
+ if (existsSync(configFilePath)) {
629
+ logWarning(`Config file '${configFilePath}' already exists`);
630
+ return;
631
+ }
632
+ const configDirectoryPath = dirname(configFilePath);
633
+ if (!existsSync(configDirectoryPath)) {
634
+ logWarning(`Directory '${configDirectoryPath}' does not exist`);
635
+ return;
636
+ }
637
+ const configTemplateJson = JSON.stringify(configTemplate, null, 2);
638
+ await writeFile(configFilePath, configTemplateJson);
639
+ console.log(
640
+ colorize(baseConfigFilePath, TerminalColor.CYAN),
641
+ colorize(`config file created`, TerminalColor.GRAY)
642
+ );
643
+ console.log(colorize(configTemplateJson, TerminalColor.GREEN));
644
+ }
615
645
  function getDefaultExportFromCjs(x) {
616
646
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
617
647
  }
@@ -879,37 +909,50 @@ async function runGenerateCommand(options) {
879
909
  return;
880
910
  }
881
911
  const rootPath = resolve(dirname(options.configPath));
882
- await generateBarrels(rootPath, validatedConfig.data);
912
+ await generateBarrels(rootPath, options.configPath, validatedConfig.data);
883
913
  }
884
- const configTemplate = {
885
- $schema: "node_modules/barrelize/schema.json",
886
- directories: [
887
- {
888
- path: "src",
889
- include: ["**/*.ts"],
890
- exclude: ["**/*.test.ts"],
891
- indexFilePath: "index.ts"
892
- }
893
- ]
894
- };
895
- async function runInitCommand(baseConfigFilePath) {
896
- const configFilePath = resolve(process.cwd(), baseConfigFilePath);
897
- if (existsSync(configFilePath)) {
898
- logWarning(`Config file '${configFilePath}' already exists`);
899
- return;
900
- }
901
- const configDirectoryPath = dirname(configFilePath);
902
- if (!existsSync(configDirectoryPath)) {
903
- logWarning(`Directory '${configDirectoryPath}' does not exist`);
904
- return;
914
+ function logError(message) {
915
+ console.log(colorize(message, TerminalColor.RED));
916
+ }
917
+ function logWarning(message) {
918
+ console.log(colorize(message, TerminalColor.YELLOW));
919
+ }
920
+ function logInfo(message) {
921
+ console.log(colorize(message, TerminalColor.BLUE));
922
+ }
923
+ var TerminalColor = /* @__PURE__ */ ((TerminalColor2) => {
924
+ TerminalColor2[TerminalColor2["BLACK"] = 0] = "BLACK";
925
+ TerminalColor2[TerminalColor2["RED"] = 1] = "RED";
926
+ TerminalColor2[TerminalColor2["GREEN"] = 2] = "GREEN";
927
+ TerminalColor2[TerminalColor2["YELLOW"] = 3] = "YELLOW";
928
+ TerminalColor2[TerminalColor2["BLUE"] = 4] = "BLUE";
929
+ TerminalColor2[TerminalColor2["MAGENTA"] = 5] = "MAGENTA";
930
+ TerminalColor2[TerminalColor2["CYAN"] = 6] = "CYAN";
931
+ TerminalColor2[TerminalColor2["WHITE"] = 7] = "WHITE";
932
+ TerminalColor2[TerminalColor2["GRAY"] = 60] = "GRAY";
933
+ return TerminalColor2;
934
+ })(TerminalColor || {});
935
+ function colorize(text, foreground, background) {
936
+ if (background == null) {
937
+ return `\x1B[${30 + foreground}m${text}\x1B[0m`;
905
938
  }
906
- const configTemplateJson = JSON.stringify(configTemplate, null, 2);
907
- await writeFile(configFilePath, configTemplateJson);
908
- console.log(
909
- colorize(baseConfigFilePath, TerminalColor.CYAN),
910
- colorize(`config file created`, TerminalColor.GRAY)
911
- );
912
- console.log(colorize(configTemplateJson, TerminalColor.GREEN));
939
+ return `\x1B[${30 + foreground}m\x1B[${40 + background}m${text}\x1B[0m`;
940
+ }
941
+ function logValidationError(message, validation) {
942
+ const formatError = (e) => {
943
+ const property = e.path.replace("$input.", "");
944
+ if (e.expected === "undefined") {
945
+ return `Property '${property}' is not allowed in configuration`;
946
+ }
947
+ if (e.value === void 0) {
948
+ return `Missing required property '${property}' in configuration`;
949
+ }
950
+ return `Invalid type for property '${property}'`;
951
+ };
952
+ const errors = validation.errors.map((x) => ` ` + formatError(x)).join("\n");
953
+ const text = `${message}:
954
+ ${errors}`;
955
+ logError(text);
913
956
  }
914
957
  const DEFAULT_CONFIG = {
915
958
  path: "",
@@ -917,19 +960,22 @@ const DEFAULT_CONFIG = {
917
960
  exclude: [],
918
961
  order: [],
919
962
  indexFilePath: "index.ts",
920
- replace: [{ find: "\\.ts$", replacement: "" }]
963
+ replace: [{ find: "\\.ts$", replacement: "" }],
964
+ singleQuote: true,
965
+ semi: true,
966
+ insertFinalNewline: true
921
967
  };
922
968
  const validateConfig = (() => {
923
- const _io0 = (input, _exceptionable = true) => (void 0 === input.$schema || "string" === typeof input.$schema) && (Array.isArray(input.directories) && input.directories.every((elem, _index1) => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io1(elem, _exceptionable))) && (1 === Object.keys(input).length || Object.keys(input).every((key2) => {
924
- if (["$schema", "directories"].some((prop) => key2 === prop))
969
+ const _io0 = (input, _exceptionable = true) => (void 0 === input.$schema || "string" === typeof input.$schema) && (void 0 === input.singleQuote || "boolean" === typeof input.singleQuote) && (void 0 === input.semi || "boolean" === typeof input.semi) && (void 0 === input.insertFinalNewline || "boolean" === typeof input.insertFinalNewline) && (Array.isArray(input.directories) && input.directories.every((elem, _index1) => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io1(elem, _exceptionable))) && (1 === Object.keys(input).length || Object.keys(input).every((key2) => {
970
+ if (["$schema", "singleQuote", "semi", "insertFinalNewline", "directories"].some((prop) => key2 === prop))
925
971
  return true;
926
972
  const value = input[key2];
927
973
  if (void 0 === value)
928
974
  return true;
929
975
  return false;
930
976
  }));
931
- const _io1 = (input, _exceptionable = true) => (void 0 === input.path || "string" === typeof input.path) && (void 0 === input.include || Array.isArray(input.include) && input.include.every((elem, _index2) => "string" === typeof elem)) && (void 0 === input.exclude || Array.isArray(input.exclude) && input.exclude.every((elem, _index3) => "string" === typeof elem)) && (void 0 === input.order || Array.isArray(input.order) && input.order.every((elem, _index4) => "string" === typeof elem)) && (void 0 === input.indexFilePath || "string" === typeof input.indexFilePath) && (void 0 === input.replace || Array.isArray(input.replace) && input.replace.every((elem, _index5) => "object" === typeof elem && null !== elem && _io2(elem, _exceptionable))) && (0 === Object.keys(input).length || Object.keys(input).every((key2) => {
932
- if (["path", "include", "exclude", "order", "indexFilePath", "replace"].some((prop) => key2 === prop))
977
+ const _io1 = (input, _exceptionable = true) => (void 0 === input.path || "string" === typeof input.path) && (void 0 === input.include || Array.isArray(input.include) && input.include.every((elem, _index2) => "string" === typeof elem)) && (void 0 === input.exclude || Array.isArray(input.exclude) && input.exclude.every((elem, _index3) => "string" === typeof elem)) && (void 0 === input.order || Array.isArray(input.order) && input.order.every((elem, _index4) => "string" === typeof elem)) && (void 0 === input.indexFilePath || "string" === typeof input.indexFilePath) && (void 0 === input.replace || Array.isArray(input.replace) && input.replace.every((elem, _index5) => "object" === typeof elem && null !== elem && _io2(elem, _exceptionable))) && (void 0 === input.singleQuote || "boolean" === typeof input.singleQuote) && (void 0 === input.semi || "boolean" === typeof input.semi) && (void 0 === input.insertFinalNewline || "boolean" === typeof input.insertFinalNewline) && (0 === Object.keys(input).length || Object.keys(input).every((key2) => {
978
+ if (["path", "include", "exclude", "order", "indexFilePath", "replace", "singleQuote", "semi", "insertFinalNewline"].some((prop) => key2 === prop))
933
979
  return true;
934
980
  const value = input[key2];
935
981
  if (void 0 === value)
@@ -948,24 +994,36 @@ const validateConfig = (() => {
948
994
  path: _path + ".$schema",
949
995
  expected: "(string | undefined)",
950
996
  value: input.$schema
997
+ }), void 0 === input.singleQuote || "boolean" === typeof input.singleQuote || _report(_exceptionable, {
998
+ path: _path + ".singleQuote",
999
+ expected: "(boolean | undefined)",
1000
+ value: input.singleQuote
1001
+ }), void 0 === input.semi || "boolean" === typeof input.semi || _report(_exceptionable, {
1002
+ path: _path + ".semi",
1003
+ expected: "(boolean | undefined)",
1004
+ value: input.semi
1005
+ }), void 0 === input.insertFinalNewline || "boolean" === typeof input.insertFinalNewline || _report(_exceptionable, {
1006
+ path: _path + ".insertFinalNewline",
1007
+ expected: "(boolean | undefined)",
1008
+ value: input.insertFinalNewline
951
1009
  }), (Array.isArray(input.directories) || _report(_exceptionable, {
952
1010
  path: _path + ".directories",
953
- expected: "Array<__type>",
1011
+ expected: "Array<DirectoryConfig>",
954
1012
  value: input.directories
955
1013
  })) && input.directories.map((elem, _index6) => ("object" === typeof elem && null !== elem && false === Array.isArray(elem) || _report(_exceptionable, {
956
1014
  path: _path + ".directories[" + _index6 + "]",
957
- expected: "__type",
1015
+ expected: "DirectoryConfig",
958
1016
  value: elem
959
1017
  })) && _vo1(elem, _path + ".directories[" + _index6 + "]", _exceptionable) || _report(_exceptionable, {
960
1018
  path: _path + ".directories[" + _index6 + "]",
961
- expected: "__type",
1019
+ expected: "DirectoryConfig",
962
1020
  value: elem
963
1021
  })).every((flag) => flag) || _report(_exceptionable, {
964
1022
  path: _path + ".directories",
965
- expected: "Array<__type>",
1023
+ expected: "Array<DirectoryConfig>",
966
1024
  value: input.directories
967
1025
  }), 1 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
968
- if (["$schema", "directories"].some((prop) => key2 === prop))
1026
+ if (["$schema", "singleQuote", "semi", "insertFinalNewline", "directories"].some((prop) => key2 === prop))
969
1027
  return true;
970
1028
  const value = input[key2];
971
1029
  if (void 0 === value)
@@ -1022,22 +1080,34 @@ const validateConfig = (() => {
1022
1080
  value: input.indexFilePath
1023
1081
  }), void 0 === input.replace || (Array.isArray(input.replace) || _report(_exceptionable, {
1024
1082
  path: _path + ".replace",
1025
- expected: "(Array<__type>.o1 | undefined)",
1083
+ expected: "(Array<__type> | undefined)",
1026
1084
  value: input.replace
1027
1085
  })) && input.replace.map((elem, _index10) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
1028
1086
  path: _path + ".replace[" + _index10 + "]",
1029
- expected: "__type.o1",
1087
+ expected: "__type",
1030
1088
  value: elem
1031
1089
  })) && _vo2(elem, _path + ".replace[" + _index10 + "]", _exceptionable) || _report(_exceptionable, {
1032
1090
  path: _path + ".replace[" + _index10 + "]",
1033
- expected: "__type.o1",
1091
+ expected: "__type",
1034
1092
  value: elem
1035
1093
  })).every((flag) => flag) || _report(_exceptionable, {
1036
1094
  path: _path + ".replace",
1037
- expected: "(Array<__type>.o1 | undefined)",
1095
+ expected: "(Array<__type> | undefined)",
1038
1096
  value: input.replace
1097
+ }), void 0 === input.singleQuote || "boolean" === typeof input.singleQuote || _report(_exceptionable, {
1098
+ path: _path + ".singleQuote",
1099
+ expected: "(boolean | undefined)",
1100
+ value: input.singleQuote
1101
+ }), void 0 === input.semi || "boolean" === typeof input.semi || _report(_exceptionable, {
1102
+ path: _path + ".semi",
1103
+ expected: "(boolean | undefined)",
1104
+ value: input.semi
1105
+ }), void 0 === input.insertFinalNewline || "boolean" === typeof input.insertFinalNewline || _report(_exceptionable, {
1106
+ path: _path + ".insertFinalNewline",
1107
+ expected: "(boolean | undefined)",
1108
+ value: input.insertFinalNewline
1039
1109
  }), 0 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
1040
- if (["path", "include", "exclude", "order", "indexFilePath", "replace"].some((prop) => key2 === prop))
1110
+ if (["path", "include", "exclude", "order", "indexFilePath", "replace", "singleQuote", "semi", "insertFinalNewline"].some((prop) => key2 === prop))
1041
1111
  return true;
1042
1112
  const value = input[key2];
1043
1113
  if (void 0 === value)
@@ -1100,123 +1170,6 @@ const validateConfig = (() => {
1100
1170
  };
1101
1171
  });
1102
1172
  })();
1103
- const validateOutputConfig = (() => {
1104
- const _io0 = (input, _exceptionable = true) => "string" === typeof input.cwd && (Array.isArray(input.directories) && input.directories.every((elem, _index1) => "object" === typeof elem && null !== elem && _io1(elem, _exceptionable))) && (2 === Object.keys(input).length || Object.keys(input).every((key2) => {
1105
- if (["cwd", "directories"].some((prop) => key2 === prop))
1106
- return true;
1107
- const value = input[key2];
1108
- if (void 0 === value)
1109
- return true;
1110
- return false;
1111
- }));
1112
- const _io1 = (input, _exceptionable = true) => Array.isArray(input.files) && input.files.every((elem, _index2) => "string" === typeof elem) && (void 0 === input.order || Array.isArray(input.order) && input.order.every((elem, _index3) => "string" === typeof elem)) && (1 === Object.keys(input).length || Object.keys(input).every((key2) => {
1113
- if (["files", "order"].some((prop) => key2 === prop))
1114
- return true;
1115
- const value = input[key2];
1116
- if (void 0 === value)
1117
- return true;
1118
- return false;
1119
- }));
1120
- const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.cwd || _report(_exceptionable, {
1121
- path: _path + ".cwd",
1122
- expected: "string",
1123
- value: input.cwd
1124
- }), (Array.isArray(input.directories) || _report(_exceptionable, {
1125
- path: _path + ".directories",
1126
- expected: "Array<__type>",
1127
- value: input.directories
1128
- })) && input.directories.map((elem, _index4) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
1129
- path: _path + ".directories[" + _index4 + "]",
1130
- expected: "__type",
1131
- value: elem
1132
- })) && _vo1(elem, _path + ".directories[" + _index4 + "]", _exceptionable) || _report(_exceptionable, {
1133
- path: _path + ".directories[" + _index4 + "]",
1134
- expected: "__type",
1135
- value: elem
1136
- })).every((flag) => flag) || _report(_exceptionable, {
1137
- path: _path + ".directories",
1138
- expected: "Array<__type>",
1139
- value: input.directories
1140
- }), 2 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
1141
- if (["cwd", "directories"].some((prop) => key2 === prop))
1142
- return true;
1143
- const value = input[key2];
1144
- if (void 0 === value)
1145
- return true;
1146
- return _report(_exceptionable, {
1147
- path: _path + _accessExpressionAsStringExports._accessExpressionAsString(key2),
1148
- expected: "undefined",
1149
- value
1150
- });
1151
- }).every((flag) => flag))].every((flag) => flag);
1152
- const _vo1 = (input, _path, _exceptionable = true) => [(Array.isArray(input.files) || _report(_exceptionable, {
1153
- path: _path + ".files",
1154
- expected: "Array<string>",
1155
- value: input.files
1156
- })) && input.files.map((elem, _index5) => "string" === typeof elem || _report(_exceptionable, {
1157
- path: _path + ".files[" + _index5 + "]",
1158
- expected: "string",
1159
- value: elem
1160
- })).every((flag) => flag) || _report(_exceptionable, {
1161
- path: _path + ".files",
1162
- expected: "Array<string>",
1163
- value: input.files
1164
- }), void 0 === input.order || (Array.isArray(input.order) || _report(_exceptionable, {
1165
- path: _path + ".order",
1166
- expected: "(Array<string> | undefined)",
1167
- value: input.order
1168
- })) && input.order.map((elem, _index6) => "string" === typeof elem || _report(_exceptionable, {
1169
- path: _path + ".order[" + _index6 + "]",
1170
- expected: "string",
1171
- value: elem
1172
- })).every((flag) => flag) || _report(_exceptionable, {
1173
- path: _path + ".order",
1174
- expected: "(Array<string> | undefined)",
1175
- value: input.order
1176
- }), 1 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
1177
- if (["files", "order"].some((prop) => key2 === prop))
1178
- return true;
1179
- const value = input[key2];
1180
- if (void 0 === value)
1181
- return true;
1182
- return _report(_exceptionable, {
1183
- path: _path + _accessExpressionAsStringExports._accessExpressionAsString(key2),
1184
- expected: "undefined",
1185
- value
1186
- });
1187
- }).every((flag) => flag))].every((flag) => flag);
1188
- const __is = (input, _exceptionable = true) => "object" === typeof input && null !== input && _io0(input, true);
1189
- let errors;
1190
- let _report;
1191
- return _createStandardSchemaExports._createStandardSchema((input) => {
1192
- if (false === __is(input)) {
1193
- errors = [];
1194
- _report = _validateReportExports._validateReport(errors);
1195
- ((input2, _path, _exceptionable = true) => ("object" === typeof input2 && null !== input2 || _report(true, {
1196
- path: _path + "",
1197
- expected: "OutputConfig",
1198
- value: input2
1199
- })) && _vo0(input2, _path + "", true) || _report(true, {
1200
- path: _path + "",
1201
- expected: "OutputConfig",
1202
- value: input2
1203
- }))(input, "$input", true);
1204
- const success = 0 === errors.length;
1205
- return success ? {
1206
- success,
1207
- data: input
1208
- } : {
1209
- success,
1210
- errors,
1211
- data: input
1212
- };
1213
- }
1214
- return {
1215
- success: true,
1216
- data: input
1217
- };
1218
- });
1219
- })();
1220
1173
  var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
1221
1174
  var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
1222
1175
  var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
@@ -8871,7 +8824,142 @@ const glob = Object.assign(glob_, {
8871
8824
  unescape
8872
8825
  });
8873
8826
  glob.glob = glob;
8874
- async function generateBarrels(rootPath, config) {
8827
+ async function globPaths(cwd, directoryConfig) {
8828
+ const ignore = [...directoryConfig.exclude ?? DEFAULT_CONFIG.exclude, "**/index.ts", "**/index.js"];
8829
+ let paths = await glob(directoryConfig.include ?? DEFAULT_CONFIG.include, {
8830
+ cwd,
8831
+ ignore,
8832
+ nodir: true,
8833
+ includeChildMatches: true
8834
+ });
8835
+ paths = paths.map((file) => file.replace(/\\/g, "/"));
8836
+ return paths;
8837
+ }
8838
+ const validateOutputConfig = (() => {
8839
+ const _io0 = (input, _exceptionable = true) => "string" === typeof input.cwd && (Array.isArray(input.directories) && input.directories.every((elem, _index1) => "object" === typeof elem && null !== elem && _io1(elem, _exceptionable))) && (2 === Object.keys(input).length || Object.keys(input).every((key2) => {
8840
+ if (["cwd", "directories"].some((prop) => key2 === prop))
8841
+ return true;
8842
+ const value = input[key2];
8843
+ if (void 0 === value)
8844
+ return true;
8845
+ return false;
8846
+ }));
8847
+ const _io1 = (input, _exceptionable = true) => Array.isArray(input.files) && input.files.every((elem, _index2) => "string" === typeof elem) && (void 0 === input.order || Array.isArray(input.order) && input.order.every((elem, _index3) => "string" === typeof elem)) && (1 === Object.keys(input).length || Object.keys(input).every((key2) => {
8848
+ if (["files", "order"].some((prop) => key2 === prop))
8849
+ return true;
8850
+ const value = input[key2];
8851
+ if (void 0 === value)
8852
+ return true;
8853
+ return false;
8854
+ }));
8855
+ const _vo0 = (input, _path, _exceptionable = true) => ["string" === typeof input.cwd || _report(_exceptionable, {
8856
+ path: _path + ".cwd",
8857
+ expected: "string",
8858
+ value: input.cwd
8859
+ }), (Array.isArray(input.directories) || _report(_exceptionable, {
8860
+ path: _path + ".directories",
8861
+ expected: "Array<__type>",
8862
+ value: input.directories
8863
+ })) && input.directories.map((elem, _index4) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
8864
+ path: _path + ".directories[" + _index4 + "]",
8865
+ expected: "__type",
8866
+ value: elem
8867
+ })) && _vo1(elem, _path + ".directories[" + _index4 + "]", _exceptionable) || _report(_exceptionable, {
8868
+ path: _path + ".directories[" + _index4 + "]",
8869
+ expected: "__type",
8870
+ value: elem
8871
+ })).every((flag) => flag) || _report(_exceptionable, {
8872
+ path: _path + ".directories",
8873
+ expected: "Array<__type>",
8874
+ value: input.directories
8875
+ }), 2 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
8876
+ if (["cwd", "directories"].some((prop) => key2 === prop))
8877
+ return true;
8878
+ const value = input[key2];
8879
+ if (void 0 === value)
8880
+ return true;
8881
+ return _report(_exceptionable, {
8882
+ path: _path + _accessExpressionAsStringExports._accessExpressionAsString(key2),
8883
+ expected: "undefined",
8884
+ value
8885
+ });
8886
+ }).every((flag) => flag))].every((flag) => flag);
8887
+ const _vo1 = (input, _path, _exceptionable = true) => [(Array.isArray(input.files) || _report(_exceptionable, {
8888
+ path: _path + ".files",
8889
+ expected: "Array<string>",
8890
+ value: input.files
8891
+ })) && input.files.map((elem, _index5) => "string" === typeof elem || _report(_exceptionable, {
8892
+ path: _path + ".files[" + _index5 + "]",
8893
+ expected: "string",
8894
+ value: elem
8895
+ })).every((flag) => flag) || _report(_exceptionable, {
8896
+ path: _path + ".files",
8897
+ expected: "Array<string>",
8898
+ value: input.files
8899
+ }), void 0 === input.order || (Array.isArray(input.order) || _report(_exceptionable, {
8900
+ path: _path + ".order",
8901
+ expected: "(Array<string> | undefined)",
8902
+ value: input.order
8903
+ })) && input.order.map((elem, _index6) => "string" === typeof elem || _report(_exceptionable, {
8904
+ path: _path + ".order[" + _index6 + "]",
8905
+ expected: "string",
8906
+ value: elem
8907
+ })).every((flag) => flag) || _report(_exceptionable, {
8908
+ path: _path + ".order",
8909
+ expected: "(Array<string> | undefined)",
8910
+ value: input.order
8911
+ }), 1 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).map((key2) => {
8912
+ if (["files", "order"].some((prop) => key2 === prop))
8913
+ return true;
8914
+ const value = input[key2];
8915
+ if (void 0 === value)
8916
+ return true;
8917
+ return _report(_exceptionable, {
8918
+ path: _path + _accessExpressionAsStringExports._accessExpressionAsString(key2),
8919
+ expected: "undefined",
8920
+ value
8921
+ });
8922
+ }).every((flag) => flag))].every((flag) => flag);
8923
+ const __is = (input, _exceptionable = true) => "object" === typeof input && null !== input && _io0(input, true);
8924
+ let errors;
8925
+ let _report;
8926
+ return _createStandardSchemaExports._createStandardSchema((input) => {
8927
+ if (false === __is(input)) {
8928
+ errors = [];
8929
+ _report = _validateReportExports._validateReport(errors);
8930
+ ((input2, _path, _exceptionable = true) => ("object" === typeof input2 && null !== input2 || _report(true, {
8931
+ path: _path + "",
8932
+ expected: "OutputConfig",
8933
+ value: input2
8934
+ })) && _vo0(input2, _path + "", true) || _report(true, {
8935
+ path: _path + "",
8936
+ expected: "OutputConfig",
8937
+ value: input2
8938
+ }))(input, "$input", true);
8939
+ const success = 0 === errors.length;
8940
+ return success ? {
8941
+ success,
8942
+ data: input
8943
+ } : {
8944
+ success,
8945
+ errors,
8946
+ data: input
8947
+ };
8948
+ }
8949
+ return {
8950
+ success: true,
8951
+ data: input
8952
+ };
8953
+ });
8954
+ })();
8955
+ async function generateBarrel(rootPath, directoryConfig) {
8956
+ const cwd = resolve(rootPath, directoryConfig.path ?? DEFAULT_CONFIG.path);
8957
+ let paths = await globPaths(cwd, directoryConfig);
8958
+ paths = handlePathOrder(directoryConfig, paths);
8959
+ paths = handlePathReplacement(directoryConfig, paths);
8960
+ return paths;
8961
+ }
8962
+ async function generateBarrels(rootPath, configPath, config) {
8875
8963
  for (const directoryConfig of config.directories) {
8876
8964
  const indexFileBasePath = directoryConfig.indexFilePath ?? DEFAULT_CONFIG.indexFilePath;
8877
8965
  const indexFileRelativePath = join(directoryConfig.path ?? DEFAULT_CONFIG.path, indexFileBasePath);
@@ -8879,31 +8967,87 @@ async function generateBarrels(rootPath, config) {
8879
8967
  const indexDirectory = dirname(indexFileAbsolutePath);
8880
8968
  if (!existsSync(indexDirectory)) {
8881
8969
  console.error(logWarning(`Index directory '${indexDirectory}' does not exist - skipping`));
8882
- console.error(logWarning(` Please verify the directory path in your configuration`));
8970
+ console.error(logWarning(` Please verify the directory path in your '${configPath}' configuration`));
8883
8971
  continue;
8884
8972
  }
8885
- const files = await generateBarrel(rootPath, directoryConfig);
8886
- const content = files.map((x) => `export * from './${x}';`).join("\n");
8973
+ const paths = await generateBarrel(rootPath, directoryConfig);
8974
+ const quote = directoryConfig.singleQuote ?? config.singleQuote ?? DEFAULT_CONFIG.singleQuote ? "'" : '"';
8975
+ const semiIfNeeded = directoryConfig.semi ?? config.semi ?? DEFAULT_CONFIG.semi ? ";" : "";
8976
+ const newLineIfNeeded = directoryConfig.insertFinalNewline ?? config.insertFinalNewline ?? DEFAULT_CONFIG.insertFinalNewline ? "\n" : "";
8977
+ const formatExportLine = (path2) => `export * from ${quote}./${path2}${quote}${semiIfNeeded}`;
8978
+ const content = paths.map(formatExportLine).join("\n") + newLineIfNeeded;
8979
+ const exportedText = `${paths.length} file${plural(paths)} exported`;
8980
+ if (existsSync(indexFileAbsolutePath)) {
8981
+ const oldContent = (await readFile(indexFileAbsolutePath)).toString();
8982
+ const oldPaths = await indexFileExportedPaths(oldContent);
8983
+ if (content === oldContent) {
8984
+ console.log(
8985
+ colorize("IGNORE", TerminalColor.GREEN),
8986
+ colorize(indexFileRelativePath, TerminalColor.CYAN),
8987
+ colorize(exportedText, TerminalColor.GRAY)
8988
+ );
8989
+ return;
8990
+ }
8991
+ await writeFile(indexFileAbsolutePath, content);
8992
+ const { insertions, deletions } = pathsDifferences(oldPaths, paths);
8993
+ const insertionsText = insertions.length > 0 ? `, ${insertions.length} insertion${plural(insertions)}` : "";
8994
+ const deletionsText = deletions.length > 0 ? `, ${deletions.length} deletion${plural(deletions)}` : "";
8995
+ console.log(
8996
+ colorize("UPDATE", TerminalColor.GREEN),
8997
+ colorize(indexFileRelativePath, TerminalColor.CYAN),
8998
+ colorize(`${exportedText}${insertionsText}${deletionsText}`, TerminalColor.GRAY)
8999
+ );
9000
+ printDifferences(insertions, deletions);
9001
+ return;
9002
+ }
8887
9003
  await writeFile(indexFileAbsolutePath, content);
8888
9004
  console.log(
9005
+ colorize("CREATE", TerminalColor.GREEN),
8889
9006
  colorize(indexFileRelativePath, TerminalColor.CYAN),
8890
- colorize(`exports ${files.length} file${files.length > 1 ? "s" : ""}`, TerminalColor.GRAY)
9007
+ colorize(exportedText, TerminalColor.GRAY)
8891
9008
  );
8892
9009
  }
8893
9010
  }
8894
- async function generateBarrel(rootPath, directoryConfig) {
8895
- const ignore = [...directoryConfig.exclude ?? DEFAULT_CONFIG.exclude, "**/index.ts", "**/index.js"];
8896
- const cwd = resolve(rootPath, directoryConfig.path ?? DEFAULT_CONFIG.path);
8897
- let files = await glob(directoryConfig.include ?? DEFAULT_CONFIG.include, {
8898
- cwd,
8899
- ignore,
8900
- nodir: true,
8901
- includeChildMatches: true
8902
- });
8903
- files = files.map((file) => file.replace(/\\/g, "/"));
8904
- files = handleOrder(directoryConfig, files);
8905
- files = handlePathReplacement(directoryConfig, files);
8906
- return files;
9011
+ function printDifferences(insertions, deletions) {
9012
+ for (const path2 of insertions) {
9013
+ console.log(colorize(` + ${path2}`, TerminalColor.GREEN));
9014
+ }
9015
+ for (const path2 of deletions) {
9016
+ console.log(colorize(` - ${path2}`, TerminalColor.RED));
9017
+ }
9018
+ }
9019
+ function plural(array) {
9020
+ return array.length > 1 ? "s" : "";
9021
+ }
9022
+ function handlePathOrder(config, paths) {
9023
+ paths = paths.sort((a, b) => a.localeCompare(b));
9024
+ const orders = config.order ?? DEFAULT_CONFIG.order;
9025
+ if (!orders.length) {
9026
+ return paths;
9027
+ }
9028
+ return paths.sort((a, b) => pathCompare(config.order, a, b));
9029
+ }
9030
+ function pathCompare(order, a, b) {
9031
+ const normalizeWeight = (index) => index < 0 ? order.length : index;
9032
+ const orderWeightA = normalizeWeight(order.findIndex((x) => a.startsWith(x)));
9033
+ const orderWeightB = normalizeWeight(order.findIndex((x) => b.startsWith(x)));
9034
+ if (orderWeightA !== orderWeightB) {
9035
+ return orderWeightA - orderWeightB;
9036
+ }
9037
+ const pathPortionsA = a.split("/").length;
9038
+ const pathPortionsB = b.split("/").length;
9039
+ if (pathPortionsA !== pathPortionsB) {
9040
+ return pathPortionsA - pathPortionsB;
9041
+ }
9042
+ return a.length - b.length;
9043
+ }
9044
+ function pathsDifferences(oldPaths, newPaths) {
9045
+ const insertions = newPaths.filter((x) => !oldPaths.includes(x));
9046
+ const deletions = oldPaths.filter((x) => !newPaths.includes(x));
9047
+ return {
9048
+ insertions,
9049
+ deletions
9050
+ };
8907
9051
  }
8908
9052
  function handlePathReplacement(config, files) {
8909
9053
  const replaces = config.replace ?? DEFAULT_CONFIG.replace;
@@ -8927,75 +9071,27 @@ function handlePathReplacement(config, files) {
8927
9071
  }
8928
9072
  return files;
8929
9073
  }
8930
- function handleOrder(config, files) {
8931
- files = files.sort((a, b) => a.localeCompare(b));
8932
- const orders = config.order ?? DEFAULT_CONFIG.order;
8933
- if (!orders.length) {
8934
- return files;
8935
- }
8936
- return files.sort((a, b) => sortPathWeight(config.order, b) - sortPathWeight(config.order, a));
8937
- }
8938
- function sortPathWeight(order, path2) {
8939
- const orderIndex = order.findIndex((x) => path2.startsWith(x));
8940
- if (orderIndex >= 0) {
8941
- return (order.length - orderIndex) * 100 - path2.split("/").length;
8942
- }
8943
- return -path2.split("/").length;
8944
- }
8945
- var TerminalColor = /* @__PURE__ */ ((TerminalColor2) => {
8946
- TerminalColor2[TerminalColor2["BLACK"] = 0] = "BLACK";
8947
- TerminalColor2[TerminalColor2["RED"] = 1] = "RED";
8948
- TerminalColor2[TerminalColor2["GREEN"] = 2] = "GREEN";
8949
- TerminalColor2[TerminalColor2["YELLOW"] = 3] = "YELLOW";
8950
- TerminalColor2[TerminalColor2["BLUE"] = 4] = "BLUE";
8951
- TerminalColor2[TerminalColor2["MAGENTA"] = 5] = "MAGENTA";
8952
- TerminalColor2[TerminalColor2["CYAN"] = 6] = "CYAN";
8953
- TerminalColor2[TerminalColor2["WHITE"] = 7] = "WHITE";
8954
- TerminalColor2[TerminalColor2["GRAY"] = 60] = "GRAY";
8955
- return TerminalColor2;
8956
- })(TerminalColor || {});
8957
- function colorize(text, foreground, background) {
8958
- if (background == null) {
8959
- return `\x1B[${30 + foreground}m${text}\x1B[0m`;
8960
- }
8961
- return `\x1B[${30 + foreground}m\x1B[${40 + background}m${text}\x1B[0m`;
8962
- }
8963
- function logError(message) {
8964
- console.log(colorize(message, TerminalColor.RED));
8965
- }
8966
- function logWarning(message) {
8967
- console.log(colorize(message, TerminalColor.YELLOW));
8968
- }
8969
- function logInfo(message) {
8970
- console.log(colorize(message, TerminalColor.BLUE));
8971
- }
8972
- function logValidationError(message, validation) {
8973
- const formatError = (e) => {
8974
- const property = e.path.replace("$input.", "");
8975
- if (e.expected === "undefined") {
8976
- return `Property '${property}' is not allowed in configuration`;
8977
- }
8978
- if (e.value === void 0) {
8979
- return `Missing required property '${property}' in configuration`;
8980
- }
8981
- return `Invalid type for property '${property}'`;
8982
- };
8983
- const errors = validation.errors.map((x) => ` ` + formatError(x)).join("\n");
8984
- const text = `${message}:
8985
- ${errors}`;
8986
- logError(text);
9074
+ async function indexFileExportedPaths(indexFileContent) {
9075
+ const matches = indexFileContent.match(/(?<='\.\/).+(?=')/g);
9076
+ return matches?.map((x) => x) ?? [];
8987
9077
  }
8988
9078
  export {
8989
9079
  DEFAULT_CONFIG,
8990
9080
  TerminalColor,
8991
9081
  cliInit,
8992
9082
  colorize,
9083
+ generateBarrel,
8993
9084
  generateBarrels,
9085
+ globPaths,
9086
+ handlePathOrder,
9087
+ handlePathReplacement,
9088
+ indexFileExportedPaths,
8994
9089
  logError,
8995
9090
  logInfo,
8996
9091
  logValidationError,
8997
9092
  logWarning,
8998
9093
  parseConfig,
9094
+ pathsDifferences,
8999
9095
  runGenerateCommand,
9000
9096
  runInitCommand,
9001
9097
  validateConfig,
@@ -1,16 +1,23 @@
1
+ export type DirectoryConfig = {
2
+ path?: string;
3
+ include?: string[];
4
+ exclude?: string[];
5
+ order?: string[];
6
+ indexFilePath?: string;
7
+ replace?: {
8
+ find: string;
9
+ replacement: string;
10
+ }[];
11
+ singleQuote?: boolean;
12
+ semi?: boolean;
13
+ insertFinalNewline?: boolean;
14
+ };
1
15
  export type Config = {
2
16
  $schema?: string;
3
- directories: {
4
- path?: string;
5
- include?: string[];
6
- exclude?: string[];
7
- order?: string[];
8
- indexFilePath?: string;
9
- replace?: {
10
- find: string;
11
- replacement: string;
12
- }[];
13
- }[];
17
+ singleQuote?: boolean;
18
+ semi?: boolean;
19
+ insertFinalNewline?: boolean;
20
+ directories: DirectoryConfig[];
14
21
  };
15
- export declare const DEFAULT_CONFIG: Required<Config['directories'][0]>;
22
+ export declare const DEFAULT_CONFIG: Required<DirectoryConfig>;
16
23
  export declare const validateConfig: ((input: unknown) => import('typia').IValidation<Config>) & import('@standard-schema/spec').StandardSchemaV1<unknown, Config>;
@@ -0,0 +1,2 @@
1
+ import { DirectoryConfig } from '../index.ts';
2
+ export declare function generateBarrel(rootPath: string, directoryConfig: DirectoryConfig): Promise<string[]>;
@@ -1,2 +1,2 @@
1
1
  import { Config } from '../index.ts';
2
- export declare function generateBarrels(rootPath: string, config: Config): Promise<void>;
2
+ export declare function generateBarrels(rootPath: string, configPath: string, config: Config): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import { DirectoryConfig } from '../index.ts';
2
+ export declare function globPaths(cwd: string, directoryConfig: DirectoryConfig): Promise<string[]>;
@@ -0,0 +1,2 @@
1
+ import { DirectoryConfig } from '../index.ts';
2
+ export declare function handlePathOrder(config: DirectoryConfig, paths: string[]): string[];
@@ -0,0 +1,2 @@
1
+ import { DirectoryConfig } from '../index.ts';
2
+ export declare function handlePathReplacement(config: DirectoryConfig, files: string[]): string[];
@@ -0,0 +1 @@
1
+ export declare function indexFileExportedPaths(indexFileContent: string): Promise<string[]>;
@@ -0,0 +1,5 @@
1
+ export type PathsDifferences = {
2
+ insertions: string[];
3
+ deletions: string[];
4
+ };
5
+ export declare function pathsDifferences(oldPaths: string[], newPaths: string[]): PathsDifferences;
@@ -1,11 +1,17 @@
1
1
  export * from './cli/cli';
2
+ export * from './cli/commands/init-command';
2
3
  export * from './cli/commands/generate-command';
3
4
  export * from './cli/commands/generate-command-options';
4
- export * from './cli/commands/init-command';
5
+ export * from './log/log';
6
+ export * from './log/colorize';
7
+ export * from './log/log-validation-error';
5
8
  export * from './config/config';
6
- export * from './config/output-config';
7
9
  export * from './config/parse-config';
10
+ export * from './generate/glob-paths';
11
+ export * from './config/output-config';
12
+ export * from './generate/generate-barrel';
8
13
  export * from './generate/generate-barrels';
9
- export * from './log/colorize';
10
- export * from './log/log';
11
- export * from './log/log-validation-error';
14
+ export * from './generate/handle-path-order';
15
+ export * from './generate/paths-differences';
16
+ export * from './generate/handle-path-replacement';
17
+ export * from './generate/index-file-exported-paths';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "barrelize",
3
- "version": "1.1.7",
3
+ "version": "1.2.0",
4
4
  "description": "Automatically generating index (barrel) files",
5
5
  "scripts": {
6
6
  "build": "npm run schema && vite build",
package/schema.json CHANGED
@@ -5,6 +5,18 @@
5
5
  "$schema": {
6
6
  "type": "string"
7
7
  },
8
+ "singleQuote": {
9
+ "type": "boolean",
10
+ "default": true
11
+ },
12
+ "semi": {
13
+ "type": "boolean",
14
+ "default": true
15
+ },
16
+ "insertFinalNewline": {
17
+ "type": "boolean",
18
+ "default": true
19
+ },
8
20
  "directories": {
9
21
  "type": "array",
10
22
  "items": {
@@ -64,6 +76,18 @@
64
76
  "replacement": ""
65
77
  }
66
78
  ]
79
+ },
80
+ "singleQuote": {
81
+ "type": "boolean",
82
+ "default": true
83
+ },
84
+ "semi": {
85
+ "type": "boolean",
86
+ "default": true
87
+ },
88
+ "insertFinalNewline": {
89
+ "type": "boolean",
90
+ "default": true
67
91
  }
68
92
  },
69
93
  "required": []