@utilix-tech/sdk 0.75.0 → 0.76.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/CHANGELOG.md +4 -0
- package/README.md +11 -2
- package/dist/{chunk-P7TXG7CI.js → chunk-QVOK3BXM.js} +97 -1
- package/dist/index.cjs +96 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{text-DWUcY8H1.d.cts → text-CNn3whZA.d.cts} +55 -2
- package/dist/{text-DWUcY8H1.d.ts → text-CNn3whZA.d.ts} +55 -2
- package/dist/tools/text.cjs +96 -0
- package/dist/tools/text.d.cts +1 -1
- package/dist/tools/text.d.ts +1 -1
- package/dist/tools/text.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Full release notes for all Utilix surfaces (browser tools, REST API, SDKs, MCP server) live at [utilix.tech/changelog](https://utilix.tech/changelog). This file tracks just this package.
|
|
4
4
|
|
|
5
|
+
## 0.76.0
|
|
6
|
+
- Add `detectWordyPhrases` (wordy-phrase-detector): scan text against a curated table of wordy/redundant phrases ("due to the fact that", "in order to") and flag each occurrence with a suggested concise replacement, an occurrence count, and character offsets.
|
|
7
|
+
- Add `checkOxfordCommaConsistency` (oxford-comma-checker): scan a document for comma-before-and/or usage in three-or-more-item lists and flag documents that mix Oxford comma styles.
|
|
8
|
+
|
|
5
9
|
## 0.75.0
|
|
6
10
|
- Add `verifyWebhookSignature` (webhook-signature-verifier): recompute an HMAC over a raw webhook payload and compare it to a provided signature, supporting the `sha256=` prefix style (Stripe/GitHub-style webhooks) plus raw hex or base64 encoding.
|
|
7
11
|
- Add `calculateTransferTime` and `calculateRequiredBandwidth` (data-transfer-time-estimator): estimate the theoretical time to transfer a file over a connection of a given speed, or the reverse: the bandwidth required to hit a target time.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @utilix-tech/sdk
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**703 developer utility functions for Node.js: runs locally, no API key required.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@utilix-tech/sdk)
|
|
6
6
|
[](https://www.npmjs.com/package/@utilix-tech/sdk)
|
|
@@ -152,7 +152,8 @@ generateEtag("console.log(1)");
|
|
|
152
152
|
```ts
|
|
153
153
|
import { convertCase, slugify, countWords, generateWords, generateParagraphs,
|
|
154
154
|
escapeString, htmlToMarkdown, applyOps, detectPassiveVoice, scoreReadability,
|
|
155
|
-
detectFillerWords,
|
|
155
|
+
detectFillerWords, detectWordyPhrases, checkOxfordCommaConsistency,
|
|
156
|
+
calculateStringDistance, analyzeSentenceLengths,
|
|
156
157
|
analyzeKeywordDensity, searchEmoji, getEmojiByShortcode } from "@utilix-tech/sdk/text";
|
|
157
158
|
|
|
158
159
|
convertCase("hello world", "camelCase"); // "helloWorld"
|
|
@@ -183,6 +184,14 @@ scoreReadability("The cat sat on the mat. It was a sunny day.");
|
|
|
183
184
|
detectFillerWords("At the end of the day, I just really think we should circle back.");
|
|
184
185
|
// { totalMatches: 4, fillerCount: 2, clicheCount: 2, density: 28.6, matches: [...] }
|
|
185
186
|
|
|
187
|
+
// Flag wordy/redundant phrases with a suggested concise replacement
|
|
188
|
+
detectWordyPhrases("Due to the fact that it was late, we decided, in order to save time, to skip the meeting.");
|
|
189
|
+
// { totalMatches: 2, density: 10.5, matches: [{ phrase: "due to the fact that", suggestion: "because", ... }, ...] }
|
|
190
|
+
|
|
191
|
+
// Flag a document that mixes Oxford-comma and non-Oxford-comma lists
|
|
192
|
+
checkOxfordCommaConsistency("I bought apples, bananas, and pears. Then I bought milk, eggs and bread.");
|
|
193
|
+
// { totalLists: 2, withOxfordComma: 1, withoutOxfordComma: 1, consistent: false, instances: [...] }
|
|
194
|
+
|
|
186
195
|
// Levenshtein edit distance + similarity ratio; pass mode: "damerau" to count a transposition as 1 edit
|
|
187
196
|
calculateStringDistance("kitten", "sitting");
|
|
188
197
|
// { distance: 3, similarity: 0.5714, maxLength: 7, mode: "levenshtein" }
|
|
@@ -18,6 +18,7 @@ __export(text_exports, {
|
|
|
18
18
|
applyOps: () => applyOps,
|
|
19
19
|
calculateStringDistance: () => calculateStringDistance,
|
|
20
20
|
centerText: () => centerText,
|
|
21
|
+
checkOxfordCommaConsistency: () => checkOxfordCommaConsistency,
|
|
21
22
|
convertAll: () => convertAll,
|
|
22
23
|
convertCase: () => convertCase,
|
|
23
24
|
countWords: () => countWords,
|
|
@@ -26,6 +27,7 @@ __export(text_exports, {
|
|
|
26
27
|
detectDelimiter: () => detectDelimiter,
|
|
27
28
|
detectFillerWords: () => detectFillerWords,
|
|
28
29
|
detectPassiveVoice: () => detectPassiveVoice,
|
|
30
|
+
detectWordyPhrases: () => detectWordyPhrases,
|
|
29
31
|
diffLines: () => diffLines,
|
|
30
32
|
diffLinesSimple: () => diffLinesSimple,
|
|
31
33
|
diffStats: () => diffStats,
|
|
@@ -3095,5 +3097,99 @@ function getEmojiByCategory(category) {
|
|
|
3095
3097
|
function getEmojiCategories() {
|
|
3096
3098
|
return Array.from(new Set(EMOJI_TABLE.map((e) => e.category)));
|
|
3097
3099
|
}
|
|
3100
|
+
var WORDY_PHRASES = [
|
|
3101
|
+
{ phrase: "due to the fact that", suggestion: "because" },
|
|
3102
|
+
{ phrase: "in spite of the fact that", suggestion: "although" },
|
|
3103
|
+
{ phrase: "despite the fact that", suggestion: "although" },
|
|
3104
|
+
{ phrase: "in order to", suggestion: "to" },
|
|
3105
|
+
{ phrase: "for the purpose of", suggestion: "for" },
|
|
3106
|
+
{ phrase: "in the event that", suggestion: "if" },
|
|
3107
|
+
{ phrase: "in the near future", suggestion: "soon" },
|
|
3108
|
+
{ phrase: "at this point in time", suggestion: "now" },
|
|
3109
|
+
{ phrase: "at the present time", suggestion: "now" },
|
|
3110
|
+
{ phrase: "on a daily basis", suggestion: "daily" },
|
|
3111
|
+
{ phrase: "on a regular basis", suggestion: "regularly" },
|
|
3112
|
+
{ phrase: "in a timely manner", suggestion: "promptly" },
|
|
3113
|
+
{ phrase: "with regard to", suggestion: "regarding" },
|
|
3114
|
+
{ phrase: "with respect to", suggestion: "regarding" },
|
|
3115
|
+
{ phrase: "in regards to", suggestion: "regarding" },
|
|
3116
|
+
{ phrase: "with the exception of", suggestion: "except" },
|
|
3117
|
+
{ phrase: "in close proximity to", suggestion: "near" },
|
|
3118
|
+
{ phrase: "take into consideration", suggestion: "consider" },
|
|
3119
|
+
{ phrase: "give consideration to", suggestion: "consider" },
|
|
3120
|
+
{ phrase: "make a decision", suggestion: "decide" },
|
|
3121
|
+
{ phrase: "is able to", suggestion: "can" },
|
|
3122
|
+
{ phrase: "are able to", suggestion: "can" },
|
|
3123
|
+
{ phrase: "a large number of", suggestion: "many" },
|
|
3124
|
+
{ phrase: "a majority of", suggestion: "most" },
|
|
3125
|
+
{ phrase: "each and every", suggestion: "each" },
|
|
3126
|
+
{ phrase: "first and foremost", suggestion: "first" },
|
|
3127
|
+
{ phrase: "last but not least", suggestion: "finally" },
|
|
3128
|
+
{ phrase: "null and void", suggestion: "void" },
|
|
3129
|
+
{ phrase: "whether or not", suggestion: "whether" },
|
|
3130
|
+
{ phrase: "the reason why", suggestion: "the reason" },
|
|
3131
|
+
{ phrase: "end result", suggestion: "result" },
|
|
3132
|
+
{ phrase: "future plans", suggestion: "plans" },
|
|
3133
|
+
{ phrase: "past history", suggestion: "history" },
|
|
3134
|
+
{ phrase: "basic fundamentals", suggestion: "fundamentals" },
|
|
3135
|
+
{ phrase: "absolutely essential", suggestion: "essential" },
|
|
3136
|
+
{ phrase: "it is important to note that", suggestion: "(often removable)" },
|
|
3137
|
+
{ phrase: "as a matter of fact", suggestion: "in fact" },
|
|
3138
|
+
{ phrase: "in the process of", suggestion: "(often removable)" }
|
|
3139
|
+
];
|
|
3140
|
+
function _wordyRegex(phrase) {
|
|
3141
|
+
const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
3142
|
+
return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
|
|
3143
|
+
}
|
|
3144
|
+
function detectWordyPhrases(text) {
|
|
3145
|
+
const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
|
|
3146
|
+
const matches = [];
|
|
3147
|
+
for (const entry of WORDY_PHRASES) {
|
|
3148
|
+
const re = _wordyRegex(entry.phrase);
|
|
3149
|
+
const indices = [];
|
|
3150
|
+
let m;
|
|
3151
|
+
while ((m = re.exec(text)) !== null) {
|
|
3152
|
+
indices.push(m.index);
|
|
3153
|
+
if (m.index === re.lastIndex) re.lastIndex++;
|
|
3154
|
+
}
|
|
3155
|
+
if (indices.length > 0) {
|
|
3156
|
+
matches.push({ phrase: entry.phrase, suggestion: entry.suggestion, count: indices.length, indices });
|
|
3157
|
+
}
|
|
3158
|
+
}
|
|
3159
|
+
matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
|
|
3160
|
+
const totalMatches = matches.reduce((s, m) => s + m.count, 0);
|
|
3161
|
+
const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
|
|
3162
|
+
return { totalWords, totalMatches, density, matches };
|
|
3163
|
+
}
|
|
3164
|
+
var _OXFORD_CONJ_RE = /(,)?\s+\b(?:and|or)\b\s+/gi;
|
|
3165
|
+
function checkOxfordCommaConsistency(text) {
|
|
3166
|
+
const instances = [];
|
|
3167
|
+
_OXFORD_CONJ_RE.lastIndex = 0;
|
|
3168
|
+
let m;
|
|
3169
|
+
while ((m = _OXFORD_CONJ_RE.exec(text)) !== null) {
|
|
3170
|
+
const matchStart = m.index;
|
|
3171
|
+
const hasCommaBefore = !!m[1];
|
|
3172
|
+
let clauseStart = -1;
|
|
3173
|
+
for (const ch of [".", "!", "?", "\n"]) {
|
|
3174
|
+
const idx = text.lastIndexOf(ch, matchStart - 1);
|
|
3175
|
+
if (idx > clauseStart) clauseStart = idx;
|
|
3176
|
+
}
|
|
3177
|
+
clauseStart += 1;
|
|
3178
|
+
const clause = text.slice(clauseStart, matchStart);
|
|
3179
|
+
const commaCount = (clause.match(/,/g) ?? []).length;
|
|
3180
|
+
if (commaCount < 1) continue;
|
|
3181
|
+
const snippetStart = Math.max(clauseStart, matchStart - 60);
|
|
3182
|
+
const afterConjEnd = _OXFORD_CONJ_RE.lastIndex;
|
|
3183
|
+
const tail = text.slice(afterConjEnd);
|
|
3184
|
+
const boundaryOffset = tail.search(/[.!?\n,]/);
|
|
3185
|
+
const snippetEnd = boundaryOffset === -1 ? Math.min(text.length, afterConjEnd + 40) : afterConjEnd + boundaryOffset;
|
|
3186
|
+
const snippet = text.slice(snippetStart, snippetEnd).trim();
|
|
3187
|
+
instances.push({ snippet, hasOxfordComma: hasCommaBefore, index: matchStart });
|
|
3188
|
+
}
|
|
3189
|
+
const withOxfordComma = instances.filter((i) => i.hasOxfordComma).length;
|
|
3190
|
+
const withoutOxfordComma = instances.length - withOxfordComma;
|
|
3191
|
+
const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
|
|
3192
|
+
return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
|
|
3193
|
+
}
|
|
3098
3194
|
|
|
3099
|
-
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, text_exports, unescapeString, wordFrequency };
|
|
3195
|
+
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, text_exports, unescapeString, wordFrequency };
|
package/dist/index.cjs
CHANGED
|
@@ -2103,6 +2103,7 @@ __export(text_exports, {
|
|
|
2103
2103
|
applyOps: () => applyOps,
|
|
2104
2104
|
calculateStringDistance: () => calculateStringDistance,
|
|
2105
2105
|
centerText: () => centerText,
|
|
2106
|
+
checkOxfordCommaConsistency: () => checkOxfordCommaConsistency,
|
|
2106
2107
|
convertAll: () => convertAll,
|
|
2107
2108
|
convertCase: () => convertCase,
|
|
2108
2109
|
countWords: () => countWords,
|
|
@@ -2111,6 +2112,7 @@ __export(text_exports, {
|
|
|
2111
2112
|
detectDelimiter: () => detectDelimiter,
|
|
2112
2113
|
detectFillerWords: () => detectFillerWords,
|
|
2113
2114
|
detectPassiveVoice: () => detectPassiveVoice,
|
|
2115
|
+
detectWordyPhrases: () => detectWordyPhrases,
|
|
2114
2116
|
diffLines: () => diffLines,
|
|
2115
2117
|
diffLinesSimple: () => diffLinesSimple,
|
|
2116
2118
|
diffStats: () => diffStats,
|
|
@@ -5180,6 +5182,100 @@ function getEmojiByCategory(category) {
|
|
|
5180
5182
|
function getEmojiCategories() {
|
|
5181
5183
|
return Array.from(new Set(EMOJI_TABLE.map((e) => e.category)));
|
|
5182
5184
|
}
|
|
5185
|
+
var WORDY_PHRASES = [
|
|
5186
|
+
{ phrase: "due to the fact that", suggestion: "because" },
|
|
5187
|
+
{ phrase: "in spite of the fact that", suggestion: "although" },
|
|
5188
|
+
{ phrase: "despite the fact that", suggestion: "although" },
|
|
5189
|
+
{ phrase: "in order to", suggestion: "to" },
|
|
5190
|
+
{ phrase: "for the purpose of", suggestion: "for" },
|
|
5191
|
+
{ phrase: "in the event that", suggestion: "if" },
|
|
5192
|
+
{ phrase: "in the near future", suggestion: "soon" },
|
|
5193
|
+
{ phrase: "at this point in time", suggestion: "now" },
|
|
5194
|
+
{ phrase: "at the present time", suggestion: "now" },
|
|
5195
|
+
{ phrase: "on a daily basis", suggestion: "daily" },
|
|
5196
|
+
{ phrase: "on a regular basis", suggestion: "regularly" },
|
|
5197
|
+
{ phrase: "in a timely manner", suggestion: "promptly" },
|
|
5198
|
+
{ phrase: "with regard to", suggestion: "regarding" },
|
|
5199
|
+
{ phrase: "with respect to", suggestion: "regarding" },
|
|
5200
|
+
{ phrase: "in regards to", suggestion: "regarding" },
|
|
5201
|
+
{ phrase: "with the exception of", suggestion: "except" },
|
|
5202
|
+
{ phrase: "in close proximity to", suggestion: "near" },
|
|
5203
|
+
{ phrase: "take into consideration", suggestion: "consider" },
|
|
5204
|
+
{ phrase: "give consideration to", suggestion: "consider" },
|
|
5205
|
+
{ phrase: "make a decision", suggestion: "decide" },
|
|
5206
|
+
{ phrase: "is able to", suggestion: "can" },
|
|
5207
|
+
{ phrase: "are able to", suggestion: "can" },
|
|
5208
|
+
{ phrase: "a large number of", suggestion: "many" },
|
|
5209
|
+
{ phrase: "a majority of", suggestion: "most" },
|
|
5210
|
+
{ phrase: "each and every", suggestion: "each" },
|
|
5211
|
+
{ phrase: "first and foremost", suggestion: "first" },
|
|
5212
|
+
{ phrase: "last but not least", suggestion: "finally" },
|
|
5213
|
+
{ phrase: "null and void", suggestion: "void" },
|
|
5214
|
+
{ phrase: "whether or not", suggestion: "whether" },
|
|
5215
|
+
{ phrase: "the reason why", suggestion: "the reason" },
|
|
5216
|
+
{ phrase: "end result", suggestion: "result" },
|
|
5217
|
+
{ phrase: "future plans", suggestion: "plans" },
|
|
5218
|
+
{ phrase: "past history", suggestion: "history" },
|
|
5219
|
+
{ phrase: "basic fundamentals", suggestion: "fundamentals" },
|
|
5220
|
+
{ phrase: "absolutely essential", suggestion: "essential" },
|
|
5221
|
+
{ phrase: "it is important to note that", suggestion: "(often removable)" },
|
|
5222
|
+
{ phrase: "as a matter of fact", suggestion: "in fact" },
|
|
5223
|
+
{ phrase: "in the process of", suggestion: "(often removable)" }
|
|
5224
|
+
];
|
|
5225
|
+
function _wordyRegex(phrase) {
|
|
5226
|
+
const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
5227
|
+
return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
|
|
5228
|
+
}
|
|
5229
|
+
function detectWordyPhrases(text) {
|
|
5230
|
+
const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
|
|
5231
|
+
const matches = [];
|
|
5232
|
+
for (const entry of WORDY_PHRASES) {
|
|
5233
|
+
const re = _wordyRegex(entry.phrase);
|
|
5234
|
+
const indices = [];
|
|
5235
|
+
let m;
|
|
5236
|
+
while ((m = re.exec(text)) !== null) {
|
|
5237
|
+
indices.push(m.index);
|
|
5238
|
+
if (m.index === re.lastIndex) re.lastIndex++;
|
|
5239
|
+
}
|
|
5240
|
+
if (indices.length > 0) {
|
|
5241
|
+
matches.push({ phrase: entry.phrase, suggestion: entry.suggestion, count: indices.length, indices });
|
|
5242
|
+
}
|
|
5243
|
+
}
|
|
5244
|
+
matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
|
|
5245
|
+
const totalMatches = matches.reduce((s, m) => s + m.count, 0);
|
|
5246
|
+
const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
|
|
5247
|
+
return { totalWords, totalMatches, density, matches };
|
|
5248
|
+
}
|
|
5249
|
+
var _OXFORD_CONJ_RE = /(,)?\s+\b(?:and|or)\b\s+/gi;
|
|
5250
|
+
function checkOxfordCommaConsistency(text) {
|
|
5251
|
+
const instances = [];
|
|
5252
|
+
_OXFORD_CONJ_RE.lastIndex = 0;
|
|
5253
|
+
let m;
|
|
5254
|
+
while ((m = _OXFORD_CONJ_RE.exec(text)) !== null) {
|
|
5255
|
+
const matchStart = m.index;
|
|
5256
|
+
const hasCommaBefore = !!m[1];
|
|
5257
|
+
let clauseStart = -1;
|
|
5258
|
+
for (const ch of [".", "!", "?", "\n"]) {
|
|
5259
|
+
const idx = text.lastIndexOf(ch, matchStart - 1);
|
|
5260
|
+
if (idx > clauseStart) clauseStart = idx;
|
|
5261
|
+
}
|
|
5262
|
+
clauseStart += 1;
|
|
5263
|
+
const clause = text.slice(clauseStart, matchStart);
|
|
5264
|
+
const commaCount = (clause.match(/,/g) ?? []).length;
|
|
5265
|
+
if (commaCount < 1) continue;
|
|
5266
|
+
const snippetStart = Math.max(clauseStart, matchStart - 60);
|
|
5267
|
+
const afterConjEnd = _OXFORD_CONJ_RE.lastIndex;
|
|
5268
|
+
const tail = text.slice(afterConjEnd);
|
|
5269
|
+
const boundaryOffset = tail.search(/[.!?\n,]/);
|
|
5270
|
+
const snippetEnd = boundaryOffset === -1 ? Math.min(text.length, afterConjEnd + 40) : afterConjEnd + boundaryOffset;
|
|
5271
|
+
const snippet = text.slice(snippetStart, snippetEnd).trim();
|
|
5272
|
+
instances.push({ snippet, hasOxfordComma: hasCommaBefore, index: matchStart });
|
|
5273
|
+
}
|
|
5274
|
+
const withOxfordComma = instances.filter((i) => i.hasOxfordComma).length;
|
|
5275
|
+
const withoutOxfordComma = instances.length - withOxfordComma;
|
|
5276
|
+
const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
|
|
5277
|
+
return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
|
|
5278
|
+
}
|
|
5183
5279
|
|
|
5184
5280
|
// src/tools/data.ts
|
|
5185
5281
|
var data_exports = {};
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { j as json } from './json-CaiYsGDQ.cjs';
|
|
2
2
|
export { e as encoding } from './encoding-Dk3wpmb3.cjs';
|
|
3
3
|
export { h as hashing } from './hashing-CJjlvqS_.cjs';
|
|
4
|
-
export { t as text } from './text-
|
|
4
|
+
export { t as text } from './text-CNn3whZA.cjs';
|
|
5
5
|
export { d as data } from './data-26TALa9U.cjs';
|
|
6
6
|
export { g as generators } from './generators-DAXXrMvG.cjs';
|
|
7
7
|
export { t as time } from './time-KqJjdqII.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { j as json } from './json-CaiYsGDQ.js';
|
|
2
2
|
export { e as encoding } from './encoding-Dk3wpmb3.js';
|
|
3
3
|
export { h as hashing } from './hashing-CJjlvqS_.js';
|
|
4
|
-
export { t as text } from './text-
|
|
4
|
+
export { t as text } from './text-CNn3whZA.js';
|
|
5
5
|
export { d as data } from './data-26TALa9U.js';
|
|
6
6
|
export { g as generators } from './generators-DAXXrMvG.js';
|
|
7
7
|
export { t as time } from './time-KqJjdqII.js';
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ export { ai_agent_exports as ai_agent } from './chunk-EKIXOA7B.js';
|
|
|
10
10
|
export { json_exports as json } from './chunk-34C6GXCC.js';
|
|
11
11
|
export { encoding_exports as encoding } from './chunk-DOWQZUTP.js';
|
|
12
12
|
export { hashing_exports as hashing } from './chunk-PET2CGTH.js';
|
|
13
|
-
export { text_exports as text } from './chunk-
|
|
13
|
+
export { text_exports as text } from './chunk-QVOK3BXM.js';
|
|
14
14
|
export { data_exports as data } from './chunk-HJVSH7FQ.js';
|
|
15
15
|
export { generators_exports as generators } from './chunk-422ICOZX.js';
|
|
16
16
|
export { time_exports as time } from './chunk-IEPWZERQ.js';
|
|
@@ -409,6 +409,53 @@ declare function getEmojiByChar(char: string): EmojiEntry | undefined;
|
|
|
409
409
|
declare function getEmojiByCategory(category: string): EmojiEntry[];
|
|
410
410
|
/** All distinct category names present in the table, in table order. */
|
|
411
411
|
declare function getEmojiCategories(): string[];
|
|
412
|
+
interface WordyPhraseMatch {
|
|
413
|
+
phrase: string;
|
|
414
|
+
suggestion: string;
|
|
415
|
+
count: number;
|
|
416
|
+
indices: number[];
|
|
417
|
+
}
|
|
418
|
+
interface WordyPhraseResult {
|
|
419
|
+
totalWords: number;
|
|
420
|
+
totalMatches: number;
|
|
421
|
+
/** Matches per 100 words, to one decimal place. */
|
|
422
|
+
density: number;
|
|
423
|
+
matches: WordyPhraseMatch[];
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Scan text against a curated table of wordy/redundant phrases ("due to the
|
|
427
|
+
* fact that", "in order to", "at this point in time") and flag each
|
|
428
|
+
* occurrence with a suggested concise replacement and character offsets.
|
|
429
|
+
* Dictionary-based heuristic, same shape as detectFillerWords: a flagged
|
|
430
|
+
* phrase is a candidate to tighten, not always wrong in context.
|
|
431
|
+
*/
|
|
432
|
+
declare function detectWordyPhrases(text: string): WordyPhraseResult;
|
|
433
|
+
interface OxfordCommaInstance {
|
|
434
|
+
/** A short readable window of text around the matched "and"/"or". */
|
|
435
|
+
snippet: string;
|
|
436
|
+
hasOxfordComma: boolean;
|
|
437
|
+
index: number;
|
|
438
|
+
}
|
|
439
|
+
interface OxfordCommaResult {
|
|
440
|
+
totalLists: number;
|
|
441
|
+
withOxfordComma: number;
|
|
442
|
+
withoutOxfordComma: number;
|
|
443
|
+
/** True when every detected list uses the same Oxford-comma style, or when no lists were found. */
|
|
444
|
+
consistent: boolean;
|
|
445
|
+
instances: OxfordCommaInstance[];
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Scan a document for comma-before-and/or usage in three-or-more-item lists
|
|
449
|
+
* and flag inconsistency: some lists using the Oxford (serial) comma while
|
|
450
|
+
* others in the same document don't. For each "and"/"or" conjunction found,
|
|
451
|
+
* it counts the commas since the start of the enclosing sentence; one or
|
|
452
|
+
* more prior commas means the conjunction is closing a list of at least
|
|
453
|
+
* three items, which is where the Oxford comma question applies. This is a
|
|
454
|
+
* heuristic over punctuation, not a grammar parser, so an unrelated comma
|
|
455
|
+
* earlier in the same sentence (e.g. an introductory clause) can occasionally
|
|
456
|
+
* be counted as part of a list.
|
|
457
|
+
*/
|
|
458
|
+
declare function checkOxfordCommaConsistency(text: string): OxfordCommaResult;
|
|
412
459
|
|
|
413
460
|
type text_AsciiFont = AsciiFont;
|
|
414
461
|
type text_AsciiOptions = AsciiOptions;
|
|
@@ -439,6 +486,8 @@ type text_LoremUnit = LoremUnit;
|
|
|
439
486
|
declare const text_MORSE_CODE: typeof MORSE_CODE;
|
|
440
487
|
type text_MarkdownResult = MarkdownResult;
|
|
441
488
|
type text_MorseOptions = MorseOptions;
|
|
489
|
+
type text_OxfordCommaInstance = OxfordCommaInstance;
|
|
490
|
+
type text_OxfordCommaResult = OxfordCommaResult;
|
|
442
491
|
type text_ParsedDiff = ParsedDiff;
|
|
443
492
|
type text_ParsedTable = ParsedTable;
|
|
444
493
|
type text_PassiveVoiceMatch = PassiveVoiceMatch;
|
|
@@ -454,6 +503,8 @@ type text_StringDistanceResult = StringDistanceResult;
|
|
|
454
503
|
type text_TableOptions = TableOptions;
|
|
455
504
|
type text_TextAnalysis = TextAnalysis;
|
|
456
505
|
type text_WordCountResult = WordCountResult;
|
|
506
|
+
type text_WordyPhraseMatch = WordyPhraseMatch;
|
|
507
|
+
type text_WordyPhraseResult = WordyPhraseResult;
|
|
457
508
|
declare const text_addBorder: typeof addBorder;
|
|
458
509
|
declare const text_analyzeKeywordDensity: typeof analyzeKeywordDensity;
|
|
459
510
|
declare const text_analyzeSentenceLengths: typeof analyzeSentenceLengths;
|
|
@@ -462,6 +513,7 @@ declare const text_applyOp: typeof applyOp;
|
|
|
462
513
|
declare const text_applyOps: typeof applyOps;
|
|
463
514
|
declare const text_calculateStringDistance: typeof calculateStringDistance;
|
|
464
515
|
declare const text_centerText: typeof centerText;
|
|
516
|
+
declare const text_checkOxfordCommaConsistency: typeof checkOxfordCommaConsistency;
|
|
465
517
|
declare const text_convertAll: typeof convertAll;
|
|
466
518
|
declare const text_convertCase: typeof convertCase;
|
|
467
519
|
declare const text_countWords: typeof countWords;
|
|
@@ -470,6 +522,7 @@ declare const text_csvToMarkdown: typeof csvToMarkdown;
|
|
|
470
522
|
declare const text_detectDelimiter: typeof detectDelimiter;
|
|
471
523
|
declare const text_detectFillerWords: typeof detectFillerWords;
|
|
472
524
|
declare const text_detectPassiveVoice: typeof detectPassiveVoice;
|
|
525
|
+
declare const text_detectWordyPhrases: typeof detectWordyPhrases;
|
|
473
526
|
declare const text_diffLines: typeof diffLines;
|
|
474
527
|
declare const text_diffLinesSimple: typeof diffLinesSimple;
|
|
475
528
|
declare const text_diffStats: typeof diffStats;
|
|
@@ -515,7 +568,7 @@ declare const text_textToMorse: typeof textToMorse;
|
|
|
515
568
|
declare const text_unescapeString: typeof unescapeString;
|
|
516
569
|
declare const text_wordFrequency: typeof wordFrequency;
|
|
517
570
|
declare namespace text {
|
|
518
|
-
export { type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
|
|
571
|
+
export { type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
|
|
519
572
|
}
|
|
520
573
|
|
|
521
|
-
export {
|
|
574
|
+
export { applyOp as $, type AsciiFont as A, type PassiveVoiceSentence as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type ReadabilityScore as G, type SentenceLengthDistribution as H, type SlugSeparator as I, type StringDistanceMode as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type StringDistanceResult as N, type OxfordCommaInstance as O, type ParsedDiff as P, type TextAnalysis as Q, type ReadabilityResult as R, type SentenceLengthBucket as S, type TableOptions as T, type WordyPhraseMatch as U, type WordyPhraseResult as V, type WordCountResult as W, addBorder as X, analyzeKeywordDensity as Y, analyzeSentenceLengths as Z, analyzeText as _, type AsciiOptions as a, applyOps as a0, calculateStringDistance as a1, centerText as a2, checkOxfordCommaConsistency as a3, convertAll as a4, convertCase as a5, countWords as a6, csvToHtml as a7, csvToMarkdown as a8, detectDelimiter as a9, markdownToHtml as aA, morseToText as aB, numberToOrdinal as aC, numberToRoman as aD, numberToWords as aE, ordinalWords as aF, parseDiff as aG, parseTableData as aH, readabilityScore as aI, renderMarkdown as aJ, romanToNumber as aK, scoreReadability as aL, searchEmoji as aM, sentenceCount as aN, slugify as aO, slugifyAll as aP, syllableCount as aQ, textToAscii as aR, textToMorse as aS, unescapeString as aT, wordFrequency as aU, detectFillerWords as aa, detectPassiveVoice as ab, detectWordyPhrases as ac, diffLines as ad, diffLinesSimple as ae, diffStats as af, escapeAll as ag, escapeString as ah, extractHeadings as ai, formatReadingTime as aj, generate as ak, generateDiff as al, generateHtmlTable as am, generateMarkdownTable as an, generateParagraphs as ao, generateSentences as ap, generateWords as aq, getAvailableFonts as ar, getEmojiByCategory as as, getEmojiByChar as at, getEmojiByShortcode as au, getEmojiCategories as av, getMorseForChar as aw, getMorseTiming as ax, htmlToMarkdown as ay, isValidMorse as az, type CaseFormat as b, type ConvertOptions as c, type DiffFile as d, type DiffHunk as e, type DiffLine as f, type DiffResult as g, type DiffType as h, type DiffViewerLine as i, ESCAPE_MODES as j, type EmojiEntry as k, type EscapeMode as l, type FillerMatch as m, type FillerWordResult as n, type KeywordDensityOptions as o, type KeywordDensityResult as p, type LineOp as q, type LineType as r, type LoremUnit as s, text as t, type MarkdownResult as u, type MorseOptions as v, type OxfordCommaResult as w, type ParsedTable as x, type PassiveVoiceMatch as y, type PassiveVoiceResult as z };
|
|
@@ -409,6 +409,53 @@ declare function getEmojiByChar(char: string): EmojiEntry | undefined;
|
|
|
409
409
|
declare function getEmojiByCategory(category: string): EmojiEntry[];
|
|
410
410
|
/** All distinct category names present in the table, in table order. */
|
|
411
411
|
declare function getEmojiCategories(): string[];
|
|
412
|
+
interface WordyPhraseMatch {
|
|
413
|
+
phrase: string;
|
|
414
|
+
suggestion: string;
|
|
415
|
+
count: number;
|
|
416
|
+
indices: number[];
|
|
417
|
+
}
|
|
418
|
+
interface WordyPhraseResult {
|
|
419
|
+
totalWords: number;
|
|
420
|
+
totalMatches: number;
|
|
421
|
+
/** Matches per 100 words, to one decimal place. */
|
|
422
|
+
density: number;
|
|
423
|
+
matches: WordyPhraseMatch[];
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Scan text against a curated table of wordy/redundant phrases ("due to the
|
|
427
|
+
* fact that", "in order to", "at this point in time") and flag each
|
|
428
|
+
* occurrence with a suggested concise replacement and character offsets.
|
|
429
|
+
* Dictionary-based heuristic, same shape as detectFillerWords: a flagged
|
|
430
|
+
* phrase is a candidate to tighten, not always wrong in context.
|
|
431
|
+
*/
|
|
432
|
+
declare function detectWordyPhrases(text: string): WordyPhraseResult;
|
|
433
|
+
interface OxfordCommaInstance {
|
|
434
|
+
/** A short readable window of text around the matched "and"/"or". */
|
|
435
|
+
snippet: string;
|
|
436
|
+
hasOxfordComma: boolean;
|
|
437
|
+
index: number;
|
|
438
|
+
}
|
|
439
|
+
interface OxfordCommaResult {
|
|
440
|
+
totalLists: number;
|
|
441
|
+
withOxfordComma: number;
|
|
442
|
+
withoutOxfordComma: number;
|
|
443
|
+
/** True when every detected list uses the same Oxford-comma style, or when no lists were found. */
|
|
444
|
+
consistent: boolean;
|
|
445
|
+
instances: OxfordCommaInstance[];
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Scan a document for comma-before-and/or usage in three-or-more-item lists
|
|
449
|
+
* and flag inconsistency: some lists using the Oxford (serial) comma while
|
|
450
|
+
* others in the same document don't. For each "and"/"or" conjunction found,
|
|
451
|
+
* it counts the commas since the start of the enclosing sentence; one or
|
|
452
|
+
* more prior commas means the conjunction is closing a list of at least
|
|
453
|
+
* three items, which is where the Oxford comma question applies. This is a
|
|
454
|
+
* heuristic over punctuation, not a grammar parser, so an unrelated comma
|
|
455
|
+
* earlier in the same sentence (e.g. an introductory clause) can occasionally
|
|
456
|
+
* be counted as part of a list.
|
|
457
|
+
*/
|
|
458
|
+
declare function checkOxfordCommaConsistency(text: string): OxfordCommaResult;
|
|
412
459
|
|
|
413
460
|
type text_AsciiFont = AsciiFont;
|
|
414
461
|
type text_AsciiOptions = AsciiOptions;
|
|
@@ -439,6 +486,8 @@ type text_LoremUnit = LoremUnit;
|
|
|
439
486
|
declare const text_MORSE_CODE: typeof MORSE_CODE;
|
|
440
487
|
type text_MarkdownResult = MarkdownResult;
|
|
441
488
|
type text_MorseOptions = MorseOptions;
|
|
489
|
+
type text_OxfordCommaInstance = OxfordCommaInstance;
|
|
490
|
+
type text_OxfordCommaResult = OxfordCommaResult;
|
|
442
491
|
type text_ParsedDiff = ParsedDiff;
|
|
443
492
|
type text_ParsedTable = ParsedTable;
|
|
444
493
|
type text_PassiveVoiceMatch = PassiveVoiceMatch;
|
|
@@ -454,6 +503,8 @@ type text_StringDistanceResult = StringDistanceResult;
|
|
|
454
503
|
type text_TableOptions = TableOptions;
|
|
455
504
|
type text_TextAnalysis = TextAnalysis;
|
|
456
505
|
type text_WordCountResult = WordCountResult;
|
|
506
|
+
type text_WordyPhraseMatch = WordyPhraseMatch;
|
|
507
|
+
type text_WordyPhraseResult = WordyPhraseResult;
|
|
457
508
|
declare const text_addBorder: typeof addBorder;
|
|
458
509
|
declare const text_analyzeKeywordDensity: typeof analyzeKeywordDensity;
|
|
459
510
|
declare const text_analyzeSentenceLengths: typeof analyzeSentenceLengths;
|
|
@@ -462,6 +513,7 @@ declare const text_applyOp: typeof applyOp;
|
|
|
462
513
|
declare const text_applyOps: typeof applyOps;
|
|
463
514
|
declare const text_calculateStringDistance: typeof calculateStringDistance;
|
|
464
515
|
declare const text_centerText: typeof centerText;
|
|
516
|
+
declare const text_checkOxfordCommaConsistency: typeof checkOxfordCommaConsistency;
|
|
465
517
|
declare const text_convertAll: typeof convertAll;
|
|
466
518
|
declare const text_convertCase: typeof convertCase;
|
|
467
519
|
declare const text_countWords: typeof countWords;
|
|
@@ -470,6 +522,7 @@ declare const text_csvToMarkdown: typeof csvToMarkdown;
|
|
|
470
522
|
declare const text_detectDelimiter: typeof detectDelimiter;
|
|
471
523
|
declare const text_detectFillerWords: typeof detectFillerWords;
|
|
472
524
|
declare const text_detectPassiveVoice: typeof detectPassiveVoice;
|
|
525
|
+
declare const text_detectWordyPhrases: typeof detectWordyPhrases;
|
|
473
526
|
declare const text_diffLines: typeof diffLines;
|
|
474
527
|
declare const text_diffLinesSimple: typeof diffLinesSimple;
|
|
475
528
|
declare const text_diffStats: typeof diffStats;
|
|
@@ -515,7 +568,7 @@ declare const text_textToMorse: typeof textToMorse;
|
|
|
515
568
|
declare const text_unescapeString: typeof unescapeString;
|
|
516
569
|
declare const text_wordFrequency: typeof wordFrequency;
|
|
517
570
|
declare namespace text {
|
|
518
|
-
export { type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
|
|
571
|
+
export { type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
|
|
519
572
|
}
|
|
520
573
|
|
|
521
|
-
export {
|
|
574
|
+
export { applyOp as $, type AsciiFont as A, type PassiveVoiceSentence as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type ReadabilityScore as G, type SentenceLengthDistribution as H, type SlugSeparator as I, type StringDistanceMode as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type StringDistanceResult as N, type OxfordCommaInstance as O, type ParsedDiff as P, type TextAnalysis as Q, type ReadabilityResult as R, type SentenceLengthBucket as S, type TableOptions as T, type WordyPhraseMatch as U, type WordyPhraseResult as V, type WordCountResult as W, addBorder as X, analyzeKeywordDensity as Y, analyzeSentenceLengths as Z, analyzeText as _, type AsciiOptions as a, applyOps as a0, calculateStringDistance as a1, centerText as a2, checkOxfordCommaConsistency as a3, convertAll as a4, convertCase as a5, countWords as a6, csvToHtml as a7, csvToMarkdown as a8, detectDelimiter as a9, markdownToHtml as aA, morseToText as aB, numberToOrdinal as aC, numberToRoman as aD, numberToWords as aE, ordinalWords as aF, parseDiff as aG, parseTableData as aH, readabilityScore as aI, renderMarkdown as aJ, romanToNumber as aK, scoreReadability as aL, searchEmoji as aM, sentenceCount as aN, slugify as aO, slugifyAll as aP, syllableCount as aQ, textToAscii as aR, textToMorse as aS, unescapeString as aT, wordFrequency as aU, detectFillerWords as aa, detectPassiveVoice as ab, detectWordyPhrases as ac, diffLines as ad, diffLinesSimple as ae, diffStats as af, escapeAll as ag, escapeString as ah, extractHeadings as ai, formatReadingTime as aj, generate as ak, generateDiff as al, generateHtmlTable as am, generateMarkdownTable as an, generateParagraphs as ao, generateSentences as ap, generateWords as aq, getAvailableFonts as ar, getEmojiByCategory as as, getEmojiByChar as at, getEmojiByShortcode as au, getEmojiCategories as av, getMorseForChar as aw, getMorseTiming as ax, htmlToMarkdown as ay, isValidMorse as az, type CaseFormat as b, type ConvertOptions as c, type DiffFile as d, type DiffHunk as e, type DiffLine as f, type DiffResult as g, type DiffType as h, type DiffViewerLine as i, ESCAPE_MODES as j, type EmojiEntry as k, type EscapeMode as l, type FillerMatch as m, type FillerWordResult as n, type KeywordDensityOptions as o, type KeywordDensityResult as p, type LineOp as q, type LineType as r, type LoremUnit as s, text as t, type MarkdownResult as u, type MorseOptions as v, type OxfordCommaResult as w, type ParsedTable as x, type PassiveVoiceMatch as y, type PassiveVoiceResult as z };
|
package/dist/tools/text.cjs
CHANGED
|
@@ -3027,6 +3027,100 @@ function getEmojiByCategory(category) {
|
|
|
3027
3027
|
function getEmojiCategories() {
|
|
3028
3028
|
return Array.from(new Set(EMOJI_TABLE.map((e) => e.category)));
|
|
3029
3029
|
}
|
|
3030
|
+
var WORDY_PHRASES = [
|
|
3031
|
+
{ phrase: "due to the fact that", suggestion: "because" },
|
|
3032
|
+
{ phrase: "in spite of the fact that", suggestion: "although" },
|
|
3033
|
+
{ phrase: "despite the fact that", suggestion: "although" },
|
|
3034
|
+
{ phrase: "in order to", suggestion: "to" },
|
|
3035
|
+
{ phrase: "for the purpose of", suggestion: "for" },
|
|
3036
|
+
{ phrase: "in the event that", suggestion: "if" },
|
|
3037
|
+
{ phrase: "in the near future", suggestion: "soon" },
|
|
3038
|
+
{ phrase: "at this point in time", suggestion: "now" },
|
|
3039
|
+
{ phrase: "at the present time", suggestion: "now" },
|
|
3040
|
+
{ phrase: "on a daily basis", suggestion: "daily" },
|
|
3041
|
+
{ phrase: "on a regular basis", suggestion: "regularly" },
|
|
3042
|
+
{ phrase: "in a timely manner", suggestion: "promptly" },
|
|
3043
|
+
{ phrase: "with regard to", suggestion: "regarding" },
|
|
3044
|
+
{ phrase: "with respect to", suggestion: "regarding" },
|
|
3045
|
+
{ phrase: "in regards to", suggestion: "regarding" },
|
|
3046
|
+
{ phrase: "with the exception of", suggestion: "except" },
|
|
3047
|
+
{ phrase: "in close proximity to", suggestion: "near" },
|
|
3048
|
+
{ phrase: "take into consideration", suggestion: "consider" },
|
|
3049
|
+
{ phrase: "give consideration to", suggestion: "consider" },
|
|
3050
|
+
{ phrase: "make a decision", suggestion: "decide" },
|
|
3051
|
+
{ phrase: "is able to", suggestion: "can" },
|
|
3052
|
+
{ phrase: "are able to", suggestion: "can" },
|
|
3053
|
+
{ phrase: "a large number of", suggestion: "many" },
|
|
3054
|
+
{ phrase: "a majority of", suggestion: "most" },
|
|
3055
|
+
{ phrase: "each and every", suggestion: "each" },
|
|
3056
|
+
{ phrase: "first and foremost", suggestion: "first" },
|
|
3057
|
+
{ phrase: "last but not least", suggestion: "finally" },
|
|
3058
|
+
{ phrase: "null and void", suggestion: "void" },
|
|
3059
|
+
{ phrase: "whether or not", suggestion: "whether" },
|
|
3060
|
+
{ phrase: "the reason why", suggestion: "the reason" },
|
|
3061
|
+
{ phrase: "end result", suggestion: "result" },
|
|
3062
|
+
{ phrase: "future plans", suggestion: "plans" },
|
|
3063
|
+
{ phrase: "past history", suggestion: "history" },
|
|
3064
|
+
{ phrase: "basic fundamentals", suggestion: "fundamentals" },
|
|
3065
|
+
{ phrase: "absolutely essential", suggestion: "essential" },
|
|
3066
|
+
{ phrase: "it is important to note that", suggestion: "(often removable)" },
|
|
3067
|
+
{ phrase: "as a matter of fact", suggestion: "in fact" },
|
|
3068
|
+
{ phrase: "in the process of", suggestion: "(often removable)" }
|
|
3069
|
+
];
|
|
3070
|
+
function _wordyRegex(phrase) {
|
|
3071
|
+
const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
3072
|
+
return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
|
|
3073
|
+
}
|
|
3074
|
+
function detectWordyPhrases(text) {
|
|
3075
|
+
const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
|
|
3076
|
+
const matches = [];
|
|
3077
|
+
for (const entry of WORDY_PHRASES) {
|
|
3078
|
+
const re = _wordyRegex(entry.phrase);
|
|
3079
|
+
const indices = [];
|
|
3080
|
+
let m;
|
|
3081
|
+
while ((m = re.exec(text)) !== null) {
|
|
3082
|
+
indices.push(m.index);
|
|
3083
|
+
if (m.index === re.lastIndex) re.lastIndex++;
|
|
3084
|
+
}
|
|
3085
|
+
if (indices.length > 0) {
|
|
3086
|
+
matches.push({ phrase: entry.phrase, suggestion: entry.suggestion, count: indices.length, indices });
|
|
3087
|
+
}
|
|
3088
|
+
}
|
|
3089
|
+
matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
|
|
3090
|
+
const totalMatches = matches.reduce((s, m) => s + m.count, 0);
|
|
3091
|
+
const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
|
|
3092
|
+
return { totalWords, totalMatches, density, matches };
|
|
3093
|
+
}
|
|
3094
|
+
var _OXFORD_CONJ_RE = /(,)?\s+\b(?:and|or)\b\s+/gi;
|
|
3095
|
+
function checkOxfordCommaConsistency(text) {
|
|
3096
|
+
const instances = [];
|
|
3097
|
+
_OXFORD_CONJ_RE.lastIndex = 0;
|
|
3098
|
+
let m;
|
|
3099
|
+
while ((m = _OXFORD_CONJ_RE.exec(text)) !== null) {
|
|
3100
|
+
const matchStart = m.index;
|
|
3101
|
+
const hasCommaBefore = !!m[1];
|
|
3102
|
+
let clauseStart = -1;
|
|
3103
|
+
for (const ch of [".", "!", "?", "\n"]) {
|
|
3104
|
+
const idx = text.lastIndexOf(ch, matchStart - 1);
|
|
3105
|
+
if (idx > clauseStart) clauseStart = idx;
|
|
3106
|
+
}
|
|
3107
|
+
clauseStart += 1;
|
|
3108
|
+
const clause = text.slice(clauseStart, matchStart);
|
|
3109
|
+
const commaCount = (clause.match(/,/g) ?? []).length;
|
|
3110
|
+
if (commaCount < 1) continue;
|
|
3111
|
+
const snippetStart = Math.max(clauseStart, matchStart - 60);
|
|
3112
|
+
const afterConjEnd = _OXFORD_CONJ_RE.lastIndex;
|
|
3113
|
+
const tail = text.slice(afterConjEnd);
|
|
3114
|
+
const boundaryOffset = tail.search(/[.!?\n,]/);
|
|
3115
|
+
const snippetEnd = boundaryOffset === -1 ? Math.min(text.length, afterConjEnd + 40) : afterConjEnd + boundaryOffset;
|
|
3116
|
+
const snippet = text.slice(snippetStart, snippetEnd).trim();
|
|
3117
|
+
instances.push({ snippet, hasOxfordComma: hasCommaBefore, index: matchStart });
|
|
3118
|
+
}
|
|
3119
|
+
const withOxfordComma = instances.filter((i) => i.hasOxfordComma).length;
|
|
3120
|
+
const withoutOxfordComma = instances.length - withOxfordComma;
|
|
3121
|
+
const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
|
|
3122
|
+
return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
|
|
3123
|
+
}
|
|
3030
3124
|
|
|
3031
3125
|
exports.CASE_FORMATS = CASE_FORMATS;
|
|
3032
3126
|
exports.DEFAULT_CONVERT_OPTIONS = DEFAULT_CONVERT_OPTIONS;
|
|
@@ -3042,6 +3136,7 @@ exports.applyOp = applyOp;
|
|
|
3042
3136
|
exports.applyOps = applyOps;
|
|
3043
3137
|
exports.calculateStringDistance = calculateStringDistance;
|
|
3044
3138
|
exports.centerText = centerText;
|
|
3139
|
+
exports.checkOxfordCommaConsistency = checkOxfordCommaConsistency;
|
|
3045
3140
|
exports.convertAll = convertAll;
|
|
3046
3141
|
exports.convertCase = convertCase;
|
|
3047
3142
|
exports.countWords = countWords;
|
|
@@ -3050,6 +3145,7 @@ exports.csvToMarkdown = csvToMarkdown;
|
|
|
3050
3145
|
exports.detectDelimiter = detectDelimiter;
|
|
3051
3146
|
exports.detectFillerWords = detectFillerWords;
|
|
3052
3147
|
exports.detectPassiveVoice = detectPassiveVoice;
|
|
3148
|
+
exports.detectWordyPhrases = detectWordyPhrases;
|
|
3053
3149
|
exports.diffLines = diffLines;
|
|
3054
3150
|
exports.diffLinesSimple = diffLinesSimple;
|
|
3055
3151
|
exports.diffStats = diffStats;
|
package/dist/tools/text.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, P as ParsedDiff,
|
|
1
|
+
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, O as OxfordCommaInstance, w as OxfordCommaResult, P as ParsedDiff, x as ParsedTable, y as PassiveVoiceMatch, z as PassiveVoiceResult, B as PassiveVoiceSentence, R as ReadabilityResult, G as ReadabilityScore, S as SentenceLengthBucket, H as SentenceLengthDistribution, I as SlugSeparator, J as StringDistanceMode, N as StringDistanceResult, T as TableOptions, Q as TextAnalysis, W as WordCountResult, U as WordyPhraseMatch, V as WordyPhraseResult, X as addBorder, Y as analyzeKeywordDensity, Z as analyzeSentenceLengths, _ as analyzeText, $ as applyOp, a0 as applyOps, a1 as calculateStringDistance, a2 as centerText, a3 as checkOxfordCommaConsistency, a4 as convertAll, a5 as convertCase, a6 as countWords, a7 as csvToHtml, a8 as csvToMarkdown, a9 as detectDelimiter, aa as detectFillerWords, ab as detectPassiveVoice, ac as detectWordyPhrases, ad as diffLines, ae as diffLinesSimple, af as diffStats, ag as escapeAll, ah as escapeString, ai as extractHeadings, aj as formatReadingTime, ak as generate, al as generateDiff, am as generateHtmlTable, an as generateMarkdownTable, ao as generateParagraphs, ap as generateSentences, aq as generateWords, ar as getAvailableFonts, as as getEmojiByCategory, at as getEmojiByChar, au as getEmojiByShortcode, av as getEmojiCategories, aw as getMorseForChar, ax as getMorseTiming, ay as htmlToMarkdown, az as isValidMorse, aA as markdownToHtml, aB as morseToText, aC as numberToOrdinal, aD as numberToRoman, aE as numberToWords, aF as ordinalWords, aG as parseDiff, aH as parseTableData, aI as readabilityScore, aJ as renderMarkdown, aK as romanToNumber, aL as scoreReadability, aM as searchEmoji, aN as sentenceCount, aO as slugify, aP as slugifyAll, aQ as syllableCount, aR as textToAscii, aS as textToMorse, aT as unescapeString, aU as wordFrequency } from '../text-CNn3whZA.cjs';
|
package/dist/tools/text.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, P as ParsedDiff,
|
|
1
|
+
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, O as OxfordCommaInstance, w as OxfordCommaResult, P as ParsedDiff, x as ParsedTable, y as PassiveVoiceMatch, z as PassiveVoiceResult, B as PassiveVoiceSentence, R as ReadabilityResult, G as ReadabilityScore, S as SentenceLengthBucket, H as SentenceLengthDistribution, I as SlugSeparator, J as StringDistanceMode, N as StringDistanceResult, T as TableOptions, Q as TextAnalysis, W as WordCountResult, U as WordyPhraseMatch, V as WordyPhraseResult, X as addBorder, Y as analyzeKeywordDensity, Z as analyzeSentenceLengths, _ as analyzeText, $ as applyOp, a0 as applyOps, a1 as calculateStringDistance, a2 as centerText, a3 as checkOxfordCommaConsistency, a4 as convertAll, a5 as convertCase, a6 as countWords, a7 as csvToHtml, a8 as csvToMarkdown, a9 as detectDelimiter, aa as detectFillerWords, ab as detectPassiveVoice, ac as detectWordyPhrases, ad as diffLines, ae as diffLinesSimple, af as diffStats, ag as escapeAll, ah as escapeString, ai as extractHeadings, aj as formatReadingTime, ak as generate, al as generateDiff, am as generateHtmlTable, an as generateMarkdownTable, ao as generateParagraphs, ap as generateSentences, aq as generateWords, ar as getAvailableFonts, as as getEmojiByCategory, at as getEmojiByChar, au as getEmojiByShortcode, av as getEmojiCategories, aw as getMorseForChar, ax as getMorseTiming, ay as htmlToMarkdown, az as isValidMorse, aA as markdownToHtml, aB as morseToText, aC as numberToOrdinal, aD as numberToRoman, aE as numberToWords, aF as ordinalWords, aG as parseDiff, aH as parseTableData, aI as readabilityScore, aJ as renderMarkdown, aK as romanToNumber, aL as scoreReadability, aM as searchEmoji, aN as sentenceCount, aO as slugify, aP as slugifyAll, aQ as syllableCount, aR as textToAscii, aS as textToMorse, aT as unescapeString, aU as wordFrequency } from '../text-CNn3whZA.js';
|
package/dist/tools/text.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, unescapeString, wordFrequency } from '../chunk-
|
|
1
|
+
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, unescapeString, wordFrequency } from '../chunk-QVOK3BXM.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@utilix-tech/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.0",
|
|
4
4
|
"description": "154+ developer utility tools for Node.js: JSON, encoding, hashing, color, CSS, network and more. Runs locally, no API key required.",
|
|
5
5
|
"author": "Utilix <hello@utilix.tech>",
|
|
6
6
|
"license": "MIT",
|