prh 5.4.3 → 6.0.1
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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +16 -1
- package/lib/changeset/changeset.js +33 -34
- package/lib/changeset/changeset.js.map +1 -1
- package/lib/changeset/diff.d.ts +2 -2
- package/lib/changeset/diff.js +37 -48
- package/lib/changeset/diff.js.map +1 -1
- package/lib/changeset/index.js +10 -9
- package/lib/changeset/index.js.map +1 -1
- package/lib/cli.d.ts +1 -0
- package/lib/cli.js +58 -58
- package/lib/cli.js.map +1 -1
- package/lib/engine.js +42 -44
- package/lib/engine.js.map +1 -1
- package/lib/index.js +46 -58
- package/lib/index.js.map +1 -1
- package/lib/options.js +4 -4
- package/lib/options.js.map +1 -1
- package/lib/paragraph.js +17 -17
- package/lib/paragraph.js.map +1 -1
- package/lib/raw.js.map +1 -1
- package/lib/rule.js +61 -62
- package/lib/rule.js.map +1 -1
- package/lib/ruleSpec.js +7 -7
- package/lib/ruleSpec.js.map +1 -1
- package/lib/target.js +19 -19
- package/lib/target.js.map +1 -1
- package/lib/targetPattern.js +18 -18
- package/lib/targetPattern.js.map +1 -1
- package/lib/utils/content.js +6 -6
- package/lib/utils/content.js.map +1 -1
- package/lib/utils/regexp.js +50 -42
- package/lib/utils/regexp.js.map +1 -1
- package/package.json +24 -25
- package/prh-rules/files/review.yml +2 -0
- package/prh-rules/languages/ja/typo.yml +10 -1
- package/prh-rules/media/WEB+DB_PRESS.yml +19 -6
- package/prh-rules/media/techbooster.yml +5 -3
- package/prh-rules/package-lock.json +145 -0
- package/prh-rules/package.json +1 -1
- package/tsconfig.json +6 -6
- package/.gitmodules +0 -3
- package/.npmignore +0 -30
- package/yarn.lock +0 -1643
package/lib/utils/regexp.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.
|
|
3
|
+
exports.jpChar = exports.jpKanji = exports.jpKana = exports.jpHira = exports.supportRegExpUnicodeFlag = void 0;
|
|
4
|
+
exports.concat = concat;
|
|
5
|
+
exports.combine = combine;
|
|
6
|
+
exports.addBoundary = addBoundary;
|
|
7
|
+
exports.parseRegExpString = parseRegExpString;
|
|
8
|
+
exports.spreadAlphaNum = spreadAlphaNum;
|
|
9
|
+
exports.addDefaultFlags = addDefaultFlags;
|
|
10
|
+
exports.escapeSpecialChars = escapeSpecialChars;
|
|
11
|
+
exports.collectAll = collectAll;
|
|
12
|
+
exports.equals = equals;
|
|
13
|
+
const regexpRegexp = /^\/(.*)\/([gimy]*)$/;
|
|
14
|
+
const hankakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
15
|
+
const zenkakuAlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
16
|
+
exports.supportRegExpUnicodeFlag = (() => {
|
|
7
17
|
try {
|
|
8
18
|
new RegExp("", "u");
|
|
9
19
|
return true;
|
|
@@ -18,20 +28,21 @@ exports.jpKana = /[ァ-ヺ]/;
|
|
|
18
28
|
// http://tama-san.com/?p=196
|
|
19
29
|
exports.jpKanji = /(?:[々〇〻\u3400-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF])/;
|
|
20
30
|
exports.jpChar = combine([exports.jpHira, exports.jpKana, exports.jpKanji]);
|
|
21
|
-
|
|
31
|
+
const regexpSpecialChars = "¥*+.?{}()[]^$-|/".split("");
|
|
22
32
|
function concat(args, flags) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
let prevFlags = flags || "";
|
|
34
|
+
let foundRegExp = false;
|
|
35
|
+
const result = args.reduce((p, c) => {
|
|
26
36
|
if (typeof c === "string") {
|
|
27
37
|
return p + c;
|
|
28
38
|
}
|
|
29
39
|
else if (c instanceof RegExp) {
|
|
30
40
|
c.flags.split("").sort();
|
|
31
|
-
|
|
41
|
+
const currentFlags = c.flags.split("").sort().join("");
|
|
32
42
|
if (foundRegExp) {
|
|
33
43
|
if (prevFlags !== currentFlags) {
|
|
34
|
-
throw new Error(
|
|
44
|
+
throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.
|
|
45
|
+
The pattern ${c} has different flag with other patterns.`);
|
|
35
46
|
}
|
|
36
47
|
}
|
|
37
48
|
prevFlags = currentFlags;
|
|
@@ -39,25 +50,26 @@ function concat(args, flags) {
|
|
|
39
50
|
return p + c.source;
|
|
40
51
|
}
|
|
41
52
|
else {
|
|
42
|
-
throw new Error(
|
|
53
|
+
throw new Error(`unknown type: ${c}`);
|
|
43
54
|
}
|
|
44
55
|
}, "");
|
|
45
56
|
return new RegExp(result, prevFlags);
|
|
46
57
|
}
|
|
47
|
-
exports.concat = concat;
|
|
48
58
|
function combine(args, flags) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
let prevFlags = flags || "";
|
|
60
|
+
let foundRegExp = false;
|
|
61
|
+
const result = args
|
|
62
|
+
.map((arg) => {
|
|
52
63
|
if (typeof arg === "string") {
|
|
53
64
|
return arg;
|
|
54
65
|
}
|
|
55
66
|
else if (arg instanceof RegExp) {
|
|
56
67
|
arg.flags.split("").sort();
|
|
57
|
-
|
|
68
|
+
const currentFlags = arg.flags.split("").sort().join("");
|
|
58
69
|
if (foundRegExp) {
|
|
59
70
|
if (prevFlags !== currentFlags) {
|
|
60
|
-
throw new Error(
|
|
71
|
+
throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.
|
|
72
|
+
The pattern ${arg} has different flag with other patterns.`);
|
|
61
73
|
}
|
|
62
74
|
}
|
|
63
75
|
prevFlags = currentFlags;
|
|
@@ -65,15 +77,15 @@ function combine(args, flags) {
|
|
|
65
77
|
return arg.source;
|
|
66
78
|
}
|
|
67
79
|
else {
|
|
68
|
-
throw new Error(
|
|
80
|
+
throw new Error(`unknown type: ${arg}`);
|
|
69
81
|
}
|
|
70
|
-
})
|
|
82
|
+
})
|
|
83
|
+
.join("|");
|
|
71
84
|
return concat(["(?:", result, ")"], foundRegExp ? prevFlags : void 0);
|
|
72
85
|
}
|
|
73
|
-
exports.combine = combine;
|
|
74
86
|
function addBoundary(arg) {
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
let result;
|
|
88
|
+
let flags = "";
|
|
77
89
|
if (typeof arg === "string") {
|
|
78
90
|
result = arg;
|
|
79
91
|
}
|
|
@@ -82,40 +94,40 @@ function addBoundary(arg) {
|
|
|
82
94
|
flags = arg.flags;
|
|
83
95
|
}
|
|
84
96
|
else {
|
|
85
|
-
throw new Error(
|
|
97
|
+
throw new Error(`unknown type: ${arg}`);
|
|
86
98
|
}
|
|
87
99
|
return concat(["\\b", result, "\\b"], flags);
|
|
88
100
|
}
|
|
89
|
-
exports.addBoundary = addBoundary;
|
|
90
101
|
function parseRegExpString(str) {
|
|
91
|
-
|
|
102
|
+
const result = str.match(regexpRegexp);
|
|
92
103
|
if (!result) {
|
|
93
104
|
return null;
|
|
94
105
|
}
|
|
95
106
|
return new RegExp(result[1], result[2]);
|
|
96
107
|
}
|
|
97
|
-
exports.parseRegExpString = parseRegExpString;
|
|
98
108
|
function spreadAlphaNum(str) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
109
|
+
const result = str
|
|
110
|
+
.split("")
|
|
111
|
+
.map((v) => {
|
|
112
|
+
const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());
|
|
113
|
+
const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());
|
|
102
114
|
if (tmpIdx1 === -1 && tmpIdx2 === -1) {
|
|
103
115
|
// not alpha num
|
|
104
116
|
return v;
|
|
105
117
|
}
|
|
106
118
|
else if (tmpIdx1 === tmpIdx2) {
|
|
107
119
|
// num
|
|
108
|
-
return
|
|
120
|
+
return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;
|
|
109
121
|
}
|
|
110
122
|
else {
|
|
111
|
-
return
|
|
123
|
+
return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;
|
|
112
124
|
}
|
|
113
|
-
})
|
|
125
|
+
})
|
|
126
|
+
.join("");
|
|
114
127
|
return new RegExp(result);
|
|
115
128
|
}
|
|
116
|
-
exports.spreadAlphaNum = spreadAlphaNum;
|
|
117
129
|
function addDefaultFlags(regexp) {
|
|
118
|
-
|
|
130
|
+
let flags = "gm";
|
|
119
131
|
if (exports.supportRegExpUnicodeFlag) {
|
|
120
132
|
flags += "u";
|
|
121
133
|
}
|
|
@@ -124,14 +136,12 @@ function addDefaultFlags(regexp) {
|
|
|
124
136
|
}
|
|
125
137
|
return new RegExp(regexp.source, flags);
|
|
126
138
|
}
|
|
127
|
-
exports.addDefaultFlags = addDefaultFlags;
|
|
128
139
|
function escapeSpecialChars(str) {
|
|
129
|
-
regexpSpecialChars.forEach(
|
|
130
|
-
str = str.replace(new RegExp(
|
|
140
|
+
regexpSpecialChars.forEach((char) => {
|
|
141
|
+
str = str.replace(new RegExp(`\\${char}`, "g"), `\\${char}`);
|
|
131
142
|
});
|
|
132
143
|
return str;
|
|
133
144
|
}
|
|
134
|
-
exports.escapeSpecialChars = escapeSpecialChars;
|
|
135
145
|
function collectAll(regexp, src) {
|
|
136
146
|
if (!regexp.global) {
|
|
137
147
|
throw new Error("g flag is required");
|
|
@@ -139,8 +149,8 @@ function collectAll(regexp, src) {
|
|
|
139
149
|
if (!regexp.source) {
|
|
140
150
|
throw new Error("source is required");
|
|
141
151
|
}
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
const resultList = [];
|
|
153
|
+
let result;
|
|
144
154
|
do {
|
|
145
155
|
result = regexp.exec(src);
|
|
146
156
|
if (result) {
|
|
@@ -149,7 +159,6 @@ function collectAll(regexp, src) {
|
|
|
149
159
|
} while (result);
|
|
150
160
|
return resultList;
|
|
151
161
|
}
|
|
152
|
-
exports.collectAll = collectAll;
|
|
153
162
|
function equals(a, b) {
|
|
154
163
|
if (a.source !== b.source) {
|
|
155
164
|
return false;
|
|
@@ -165,5 +174,4 @@ function equals(a, b) {
|
|
|
165
174
|
}
|
|
166
175
|
return true;
|
|
167
176
|
}
|
|
168
|
-
exports.equals = equals;
|
|
169
177
|
//# sourceMappingURL=regexp.js.map
|
package/lib/utils/regexp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":"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","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\nexport const supportRegExpUnicodeFlag = (() => {\n try {\n new RegExp(\"\", \"u\");\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nconst regexpSpecialChars = \"¥*+.?{}()[]^$-|/\".split(\"\");\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.map(arg => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n }).join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str.split(\"\").map(v => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n }).join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gm\";\n if (supportRegExpUnicodeFlag) {\n flags += \"u\";\n }\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\nexport function escapeSpecialChars(str: string): string {\n regexpSpecialChars.forEach(char => {\n str = str.replace(new RegExp(`\\\\${char}`, \"g\"), `\\\\${char}`);\n });\n return str;\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"regexp.js","sourceRoot":"","sources":["regexp.ts"],"names":[],"mappings":";;;AAwBA,wBAuBC;AAED,0BAyBC;AAED,kCAYC;AAED,8CAMC;AAED,wCAkBC;AAED,0CASC;AAED,gDAKC;AAED,gCAiBC;AAED,wBAeC;AA1KD,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,MAAM,eAAe,GAAG,gEAAgE,CAAC;AACzF,MAAM,eAAe,GACjB,gEAAgE,CAAC;AAExD,QAAA,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAC1C,IAAI,CAAC;QACD,IAAI,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;AAEL,yDAAyD;AAC5C,QAAA,MAAM,GAAG,OAAO,CAAC;AACjB,QAAA,MAAM,GAAG,OAAO,CAAC;AAC9B,6BAA6B;AAChB,QAAA,OAAO,GAAG,oEAAoE,CAAC;AAC/E,QAAA,MAAM,GAAG,OAAO,CAAC,CAAC,cAAM,EAAE,cAAM,EAAE,eAAO,CAAC,CAAC,CAAC;AAEzD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAExD,SAAgB,MAAM,CAAC,IAAyB,EAAE,KAAc;IAC5D,IAAI,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC;IAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;YAC7B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvD,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,QAAQ,YAAY;cAChF,CAAC,0CAA0C,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC;YACD,SAAS,GAAG,YAAY,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,OAAO,CAAC,IAAyB,EAAE,KAAc;IAC7D,IAAI,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC;IAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI;SACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACT,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QACf,CAAC;aAAM,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,WAAW,EAAE,CAAC;gBACd,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,QAAQ,YAAY;cACpF,GAAG,0CAA0C,CAAC,CAAC;gBACzC,CAAC;YACL,CAAC;YACD,SAAS,GAAG,YAAY,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO,GAAG,CAAC,MAAM,CAAC;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,WAAW,CAAC,GAAoB;IAC5C,IAAI,MAAc,CAAC;IACnB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC;IACjB,CAAC;SAAM,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACpB,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,GAAG;SACb,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,gBAAgB;YAChB,OAAO,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM;YACN,OAAO,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACtD,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACxH,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,gCAAwB,EAAE,CAAC;QAC3B,KAAK,IAAI,GAAG,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,IAAI,GAAG,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAW;IAC1C,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAgB,UAAU,CAAC,MAAc,EAAE,GAAW;IAClD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,IAAI,MAA8B,CAAC;IACnC,GAAG,CAAC;QACA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACT,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,QAAQ,MAAM,EAAE;IAEjB,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAgB,MAAM,CAAC,CAAS,EAAE,CAAS;IACvC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC","sourcesContent":["const regexpRegexp = /^\\/(.*)\\/([gimy]*)$/;\n\nconst hankakuAlphaNum = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\nconst zenkakuAlphaNum =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\nexport const supportRegExpUnicodeFlag = (() => {\n try {\n new RegExp(\"\", \"u\");\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// http://www.tamasoft.co.jp/ja/general-info/unicode.html\nexport const jpHira = /[ぁ-ゖ]/;\nexport const jpKana = /[ァ-ヺ]/;\n// http://tama-san.com/?p=196\nexport const jpKanji = /(?:[々〇〻\\u3400-\\u9FFF\\uF900-\\uFAFF]|[\\uD840-\\uD87F][\\uDC00-\\uDFFF])/;\nexport const jpChar = combine([jpHira, jpKana, jpKanji]);\n\nconst regexpSpecialChars = \"¥*+.?{}()[]^$-|/\".split(\"\");\n\nexport function concat(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args.reduce<string>((p, c) => {\n if (typeof c === \"string\") {\n return p + c;\n } else if (c instanceof RegExp) {\n c.flags.split(\"\").sort();\n const currentFlags = c.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${c} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return p + c.source;\n } else {\n throw new Error(`unknown type: ${c}`);\n }\n }, \"\");\n return new RegExp(result, prevFlags);\n}\n\nexport function combine(args: (string | RegExp)[], flags?: string): RegExp {\n let prevFlags = flags || \"\";\n let foundRegExp = false;\n const result = args\n .map((arg) => {\n if (typeof arg === \"string\") {\n return arg;\n } else if (arg instanceof RegExp) {\n arg.flags.split(\"\").sort();\n const currentFlags = arg.flags.split(\"\").sort().join(\"\");\n if (foundRegExp) {\n if (prevFlags !== currentFlags) {\n throw new Error(`combining different flags ${prevFlags} and ${currentFlags}.\nThe pattern ${arg} has different flag with other patterns.`);\n }\n }\n prevFlags = currentFlags;\n foundRegExp = true;\n return arg.source;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n })\n .join(\"|\");\n return concat([\"(?:\", result, \")\"], foundRegExp ? prevFlags : void 0);\n}\n\nexport function addBoundary(arg: string | RegExp): RegExp {\n let result: string;\n let flags = \"\";\n if (typeof arg === \"string\") {\n result = arg;\n } else if (arg instanceof RegExp) {\n result = arg.source;\n flags = arg.flags;\n } else {\n throw new Error(`unknown type: ${arg}`);\n }\n return concat([\"\\\\b\", result, \"\\\\b\"], flags);\n}\n\nexport function parseRegExpString(str: string): RegExp | null {\n const result = str.match(regexpRegexp);\n if (!result) {\n return null;\n }\n return new RegExp(result[1], result[2]);\n}\n\nexport function spreadAlphaNum(str: string): RegExp {\n const result = str\n .split(\"\")\n .map((v) => {\n const tmpIdx1 = hankakuAlphaNum.indexOf(v.toUpperCase());\n const tmpIdx2 = hankakuAlphaNum.indexOf(v.toLowerCase());\n if (tmpIdx1 === -1 && tmpIdx2 === -1) {\n // not alpha num\n return v;\n } else if (tmpIdx1 === tmpIdx2) {\n // num\n return `[${v}${zenkakuAlphaNum.charAt(tmpIdx1)}]`;\n } else {\n return `[${v.toUpperCase()}${v.toLowerCase()}${zenkakuAlphaNum.charAt(tmpIdx1)}${zenkakuAlphaNum.charAt(tmpIdx2)}]`;\n }\n })\n .join(\"\");\n return new RegExp(result);\n}\n\nexport function addDefaultFlags(regexp: RegExp) {\n let flags = \"gm\";\n if (supportRegExpUnicodeFlag) {\n flags += \"u\";\n }\n if (regexp.ignoreCase) {\n flags += \"i\";\n }\n return new RegExp(regexp.source, flags);\n}\n\nexport function escapeSpecialChars(str: string): string {\n regexpSpecialChars.forEach((char) => {\n str = str.replace(new RegExp(`\\\\${char}`, \"g\"), `\\\\${char}`);\n });\n return str;\n}\n\nexport function collectAll(regexp: RegExp, src: string) {\n if (!regexp.global) {\n throw new Error(\"g flag is required\");\n }\n if (!regexp.source) {\n throw new Error(\"source is required\");\n }\n const resultList: RegExpExecArray[] = [];\n let result: RegExpExecArray | null;\n do {\n result = regexp.exec(src);\n if (result) {\n resultList.push(result);\n }\n } while (result);\n\n return resultList;\n}\n\nexport function equals(a: RegExp, b: RegExp) {\n if (a.source !== b.source) {\n return false;\n }\n if (a.global !== b.global) {\n return false;\n }\n if (a.ignoreCase !== b.ignoreCase) {\n return false;\n }\n if (a.multiline !== b.multiline) {\n return false;\n }\n\n return true;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prh",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "proofreading helper",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"prh": "
|
|
7
|
+
"prh": "bin/prh"
|
|
8
8
|
},
|
|
9
9
|
"directories": {
|
|
10
10
|
"test": "test"
|
|
11
11
|
},
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=22"
|
|
14
|
+
},
|
|
12
15
|
"scripts": {
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"lint": "eslint lib/ test/",
|
|
18
|
+
"format": "prettier --write 'lib/**/*.ts' 'test/**/*.ts'",
|
|
19
|
+
"test": "npm run build && vitest run",
|
|
16
20
|
"update-submodules": "git submodule foreach 'git pull --rebase'"
|
|
17
21
|
},
|
|
18
22
|
"repository": {
|
|
19
23
|
"type": "git",
|
|
20
|
-
"url": "https://github.com/prh/prh.git"
|
|
24
|
+
"url": "git+https://github.com/prh/prh.git"
|
|
21
25
|
},
|
|
22
26
|
"author": "vvakame",
|
|
23
27
|
"license": "MIT",
|
|
@@ -26,26 +30,21 @@
|
|
|
26
30
|
},
|
|
27
31
|
"homepage": "https://github.com/prh/prh",
|
|
28
32
|
"dependencies": {
|
|
29
|
-
"
|
|
30
|
-
"diff": "^
|
|
31
|
-
"js-yaml": "^
|
|
33
|
+
"commander": "^14.0.3",
|
|
34
|
+
"diff": "^8.0.3",
|
|
35
|
+
"js-yaml": "^4.1.0"
|
|
32
36
|
},
|
|
33
37
|
"devDependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@types/
|
|
36
|
-
"@types/js-yaml": "^
|
|
37
|
-
"@types/
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"power-assert": "^1.4.4",
|
|
46
|
-
"source-map-support": "^0.4.5",
|
|
47
|
-
"tslint": "^5.5.0",
|
|
48
|
-
"typescript": "^2.4.2",
|
|
49
|
-
"typescript-formatter": "^6.0.0"
|
|
38
|
+
"@eslint/js": "^10.0.1",
|
|
39
|
+
"@types/diff": "^8.0.0",
|
|
40
|
+
"@types/js-yaml": "^4.0.0",
|
|
41
|
+
"@types/node": "^25.2.3",
|
|
42
|
+
"eslint": "^10.0.0",
|
|
43
|
+
"eslint-config-prettier": "^10.1.8",
|
|
44
|
+
"glob": "^13.0.5",
|
|
45
|
+
"prettier": "^3.0.0",
|
|
46
|
+
"typescript": "^5.7.0",
|
|
47
|
+
"typescript-eslint": "^8.0.0",
|
|
48
|
+
"vitest": "^4.0.18"
|
|
50
49
|
}
|
|
51
50
|
}
|
|
@@ -7,6 +7,8 @@ version: 1
|
|
|
7
7
|
targets:
|
|
8
8
|
- file: /\.re$/
|
|
9
9
|
excludes:
|
|
10
|
+
# headlineのID部分はチェックしない
|
|
11
|
+
- pattern: /^=+\{[^}]+\}/
|
|
10
12
|
# 一部ブロック記法は中身をチェックしないようにする
|
|
11
13
|
# TODO 肯定的後読みが使えるようになったら [引数] 部分がチェック対象になるようにする
|
|
12
14
|
- pattern: /^\/\/(list|emlist|listnum|emlistnum|cmd|source|graph)(?:\[.*?\])*\{\n(?:.*\n)*?\/\/\}/m
|
|
@@ -10,6 +10,15 @@ rules:
|
|
|
10
10
|
- expected: なるほど
|
|
11
11
|
pattern: なほるど
|
|
12
12
|
- expected: で
|
|
13
|
-
pattern: でで
|
|
13
|
+
pattern: /(?<!ま)でで(?!(きる|きます|す))/
|
|
14
|
+
specs:
|
|
15
|
+
- from: でで
|
|
16
|
+
to: で
|
|
17
|
+
- from: そこでで、
|
|
18
|
+
to: そこで、
|
|
19
|
+
- from: Aでできる
|
|
20
|
+
to: Aでできる
|
|
21
|
+
- from: Aまでです
|
|
22
|
+
to: Aまでです
|
|
14
23
|
- expected: を
|
|
15
24
|
pattern: をを
|
|
@@ -587,11 +587,17 @@ rules:
|
|
|
587
587
|
expected: づら$1
|
|
588
588
|
- pattern: んで([たなるろよ])
|
|
589
589
|
expected: んでい$1
|
|
590
|
-
- pattern:
|
|
591
|
-
expected:
|
|
590
|
+
- pattern: /ってな(?!く)/
|
|
591
|
+
expected: っていな
|
|
592
592
|
specs:
|
|
593
593
|
- from: わかってない
|
|
594
594
|
to: わかっていない
|
|
595
|
+
- from: 言ってない
|
|
596
|
+
to: 言っていない
|
|
597
|
+
- from: 走ってない
|
|
598
|
+
to: 走っていない
|
|
599
|
+
- from: 持てない
|
|
600
|
+
to: 持てない
|
|
595
601
|
- from: 消えてなくなる
|
|
596
602
|
to: 消えてなくなる
|
|
597
603
|
- pattern: /([^捨当立])てる/
|
|
@@ -611,6 +617,8 @@ rules:
|
|
|
611
617
|
- することができ
|
|
612
618
|
- することが可能で
|
|
613
619
|
expected: でき
|
|
620
|
+
- pattern: するようになります
|
|
621
|
+
expected: します
|
|
614
622
|
- pattern: るようになります
|
|
615
623
|
expected: ます
|
|
616
624
|
- pattern: て欲し
|
|
@@ -653,7 +661,7 @@ rules:
|
|
|
653
661
|
- 取り敢えず
|
|
654
662
|
expected: とりあえず
|
|
655
663
|
- pattern: /([^有])無([かくいけし])/
|
|
656
|
-
expected: $1な$
|
|
664
|
+
expected: $1な$2
|
|
657
665
|
- pattern: /尚([^早徳])/
|
|
658
666
|
expected: なお$1
|
|
659
667
|
- pattern:
|
|
@@ -1329,8 +1337,13 @@ rules:
|
|
|
1329
1337
|
expected: 内蔵
|
|
1330
1338
|
- pattern: /なか([かでに])/
|
|
1331
1339
|
expected: 中$1
|
|
1332
|
-
- pattern: /なら([
|
|
1340
|
+
- pattern: /なら(ば(?!、)|[びぶべぼん])/
|
|
1333
1341
|
expected: 並$1
|
|
1342
|
+
specs:
|
|
1343
|
+
- from: ならびに
|
|
1344
|
+
to: 並びに
|
|
1345
|
+
- from: ならば、
|
|
1346
|
+
to: ならば、
|
|
1334
1347
|
- pattern: /著わ([さしすせそ])/
|
|
1335
1348
|
expected: 著$1
|
|
1336
1349
|
- pattern: 著い
|
|
@@ -1665,8 +1678,6 @@ rules:
|
|
|
1665
1678
|
pattern: /\bWeb Socket\b/
|
|
1666
1679
|
- expected: $1Web$2
|
|
1667
1680
|
pattern: /(?:([^/])ウェブ)|(?:ウェブ([^/\+]))/
|
|
1668
|
-
- expected: $1Web$2
|
|
1669
|
-
pattern: /(?:([^/])\bWEB)|(?:WEB\b([^/\+]))/
|
|
1670
1681
|
- expected: $1Web$2
|
|
1671
1682
|
pattern: /(?:([^/])ウェッブ)|(?:ウェッブ([^/\+]))/
|
|
1672
1683
|
- expected: O/Rマッ
|
|
@@ -3020,3 +3031,5 @@ rules:
|
|
|
3020
3031
|
pattern: /([^も])のの/
|
|
3021
3032
|
- expected: は
|
|
3022
3033
|
pattern: /はは/
|
|
3034
|
+
- expected: "WEB+DB PRESS"
|
|
3035
|
+
pattern: /WEB\+DB PRESS/i
|
|
@@ -91,7 +91,7 @@ rules:
|
|
|
91
91
|
pattern: 綺麗
|
|
92
92
|
prh: 漢字で書かず、ひらがなで書くと読みやすくなります
|
|
93
93
|
- expected: こと
|
|
94
|
-
pattern: /(
|
|
94
|
+
pattern: /(記|大|仕|返|無|食|見|議|当)?事(?!情|件|前|後|象|例|実|体|態|項|務|業|柄|故)/
|
|
95
95
|
regexpMustEmpty: $1
|
|
96
96
|
prh: 漢字で書かず、ひらがなで書くと読みやすくなります
|
|
97
97
|
specs:
|
|
@@ -105,6 +105,8 @@ rules:
|
|
|
105
105
|
to: 事象
|
|
106
106
|
- from: 事柄
|
|
107
107
|
to: 事柄
|
|
108
|
+
- from: 当事
|
|
109
|
+
to: 当事
|
|
108
110
|
- expected: $1とき
|
|
109
111
|
pattern: /(の)時(?!点|代|々|間)/
|
|
110
112
|
specs:
|
|
@@ -276,7 +278,7 @@ rules:
|
|
|
276
278
|
prh: C87でざきさんがやらかした思い出
|
|
277
279
|
|
|
278
280
|
# その他
|
|
279
|
-
- expected:
|
|
280
|
-
pattern:
|
|
281
|
+
- expected: コード補完
|
|
282
|
+
pattern: コード保管
|
|
281
283
|
prh: コード補完の間違いと思われます。
|
|
282
284
|
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "prh-rules",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"lockfileVersion": 1,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"argparse": {
|
|
8
|
+
"version": "1.0.10",
|
|
9
|
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
|
10
|
+
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
|
11
|
+
"requires": {
|
|
12
|
+
"sprintf-js": "~1.0.2"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"balanced-match": {
|
|
16
|
+
"version": "1.0.0",
|
|
17
|
+
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
|
18
|
+
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
|
19
|
+
"dev": true
|
|
20
|
+
},
|
|
21
|
+
"brace-expansion": {
|
|
22
|
+
"version": "1.1.11",
|
|
23
|
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
|
24
|
+
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
|
25
|
+
"dev": true,
|
|
26
|
+
"requires": {
|
|
27
|
+
"balanced-match": "^1.0.0",
|
|
28
|
+
"concat-map": "0.0.1"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"commandpost": {
|
|
32
|
+
"version": "1.4.0",
|
|
33
|
+
"resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz",
|
|
34
|
+
"integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ=="
|
|
35
|
+
},
|
|
36
|
+
"concat-map": {
|
|
37
|
+
"version": "0.0.1",
|
|
38
|
+
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
|
39
|
+
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
|
40
|
+
"dev": true
|
|
41
|
+
},
|
|
42
|
+
"diff": {
|
|
43
|
+
"version": "3.5.0",
|
|
44
|
+
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
|
|
45
|
+
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
|
|
46
|
+
},
|
|
47
|
+
"esprima": {
|
|
48
|
+
"version": "4.0.1",
|
|
49
|
+
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
|
50
|
+
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
|
|
51
|
+
},
|
|
52
|
+
"glob": {
|
|
53
|
+
"version": "4.5.3",
|
|
54
|
+
"resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
|
|
55
|
+
"integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
|
|
56
|
+
"dev": true,
|
|
57
|
+
"requires": {
|
|
58
|
+
"inflight": "^1.0.4",
|
|
59
|
+
"inherits": "2",
|
|
60
|
+
"minimatch": "^2.0.1",
|
|
61
|
+
"once": "^1.3.0"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"glob-expand": {
|
|
65
|
+
"version": "0.2.1",
|
|
66
|
+
"resolved": "https://registry.npmjs.org/glob-expand/-/glob-expand-0.2.1.tgz",
|
|
67
|
+
"integrity": "sha1-GwiKwnK1cViHC3aBYRHaRhimag8=",
|
|
68
|
+
"dev": true,
|
|
69
|
+
"requires": {
|
|
70
|
+
"glob": "~4.5.x",
|
|
71
|
+
"lodash": "~4.13.x"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"inflight": {
|
|
75
|
+
"version": "1.0.6",
|
|
76
|
+
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
|
77
|
+
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
|
78
|
+
"dev": true,
|
|
79
|
+
"requires": {
|
|
80
|
+
"once": "^1.3.0",
|
|
81
|
+
"wrappy": "1"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"inherits": {
|
|
85
|
+
"version": "2.0.4",
|
|
86
|
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
|
87
|
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
88
|
+
"dev": true
|
|
89
|
+
},
|
|
90
|
+
"js-yaml": {
|
|
91
|
+
"version": "3.13.1",
|
|
92
|
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
|
93
|
+
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
|
94
|
+
"requires": {
|
|
95
|
+
"argparse": "^1.0.7",
|
|
96
|
+
"esprima": "^4.0.0"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"lodash": {
|
|
100
|
+
"version": "4.13.1",
|
|
101
|
+
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz",
|
|
102
|
+
"integrity": "sha1-g+SxCRP0hJbU0W/sSlYK8u50S2g=",
|
|
103
|
+
"dev": true
|
|
104
|
+
},
|
|
105
|
+
"minimatch": {
|
|
106
|
+
"version": "2.0.10",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
|
|
108
|
+
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
|
|
109
|
+
"dev": true,
|
|
110
|
+
"requires": {
|
|
111
|
+
"brace-expansion": "^1.0.0"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"once": {
|
|
115
|
+
"version": "1.4.0",
|
|
116
|
+
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
|
117
|
+
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
|
118
|
+
"dev": true,
|
|
119
|
+
"requires": {
|
|
120
|
+
"wrappy": "1"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"prh": {
|
|
124
|
+
"version": "5.4.3",
|
|
125
|
+
"resolved": "https://registry.npmjs.org/prh/-/prh-5.4.3.tgz",
|
|
126
|
+
"integrity": "sha512-W5+gzqOrVLKayPh+2QCur7KYZPsLRfDJd4Tyz5lIXAWwqaX/LQ40FX/P3/Hbfgf7w+EQPdR1yOx6BVf+frG40w==",
|
|
127
|
+
"requires": {
|
|
128
|
+
"commandpost": "^1.2.1",
|
|
129
|
+
"diff": "^3.3.0",
|
|
130
|
+
"js-yaml": "^3.9.1"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"sprintf-js": {
|
|
134
|
+
"version": "1.0.3",
|
|
135
|
+
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
|
136
|
+
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
|
137
|
+
},
|
|
138
|
+
"wrappy": {
|
|
139
|
+
"version": "1.0.2",
|
|
140
|
+
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
141
|
+
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
|
142
|
+
"dev": true
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
package/prh-rules/package.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "
|
|
3
|
+
"target": "es2020",
|
|
4
4
|
"module": "commonjs",
|
|
5
5
|
"lib": [
|
|
6
|
-
"
|
|
6
|
+
"es2020"
|
|
7
7
|
],
|
|
8
8
|
"types": [
|
|
9
|
-
"node"
|
|
10
|
-
"mocha"
|
|
9
|
+
"node"
|
|
11
10
|
],
|
|
12
11
|
"strict": true,
|
|
13
12
|
"stripInternal": true,
|
|
@@ -19,10 +18,11 @@
|
|
|
19
18
|
"noFallthroughCasesInSwitch": true,
|
|
20
19
|
"newLine": "LF",
|
|
21
20
|
"noEmitOnError": true,
|
|
22
|
-
"inlineSources": true
|
|
21
|
+
"inlineSources": true,
|
|
22
|
+
"skipLibCheck": true
|
|
23
23
|
},
|
|
24
24
|
"include": [
|
|
25
25
|
"lib/**/*.ts",
|
|
26
26
|
"test/**/*.ts"
|
|
27
27
|
]
|
|
28
|
-
}
|
|
28
|
+
}
|
package/.gitmodules
DELETED