@helloao/tools 0.0.12 → 0.0.14

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.
Files changed (34) hide show
  1. package/dist/cjs/generation/api.cjs +42 -11
  2. package/dist/cjs/generation/api.cjs.map +2 -2
  3. package/dist/cjs/generation/audio.cjs +1 -1
  4. package/dist/cjs/generation/audio.cjs.map +2 -2
  5. package/dist/cjs/generation/book-order.cjs +241 -398
  6. package/dist/cjs/generation/book-order.cjs.map +2 -2
  7. package/dist/cjs/generation/common-types.cjs.map +1 -1
  8. package/dist/cjs/generation/dataset.cjs +20 -8
  9. package/dist/cjs/generation/dataset.cjs.map +2 -2
  10. package/dist/cjs/parser/types.cjs.map +1 -1
  11. package/dist/cjs/parser/usx-parser.cjs +41 -1
  12. package/dist/cjs/parser/usx-parser.cjs.map +2 -2
  13. package/dist/cjs/utils.cjs +22 -1
  14. package/dist/cjs/utils.cjs.map +2 -2
  15. package/dist/esm/generation/api.js +42 -11
  16. package/dist/esm/generation/api.js.map +2 -2
  17. package/dist/esm/generation/audio.js +1 -1
  18. package/dist/esm/generation/audio.js.map +2 -2
  19. package/dist/esm/generation/book-order.js +239 -398
  20. package/dist/esm/generation/book-order.js.map +2 -2
  21. package/dist/esm/generation/dataset.js +25 -9
  22. package/dist/esm/generation/dataset.js.map +2 -2
  23. package/dist/esm/parser/usx-parser.js +41 -1
  24. package/dist/esm/parser/usx-parser.js.map +2 -2
  25. package/dist/esm/utils.js +20 -1
  26. package/dist/esm/utils.js.map +2 -2
  27. package/dist/types/generation/api.d.ts +38 -2
  28. package/dist/types/generation/book-order.d.ts +4 -0
  29. package/dist/types/generation/common-types.d.ts +4 -0
  30. package/dist/types/generation/dataset.d.ts +4 -0
  31. package/dist/types/parser/types.d.ts +8 -0
  32. package/dist/types/parser/usx-parser.d.ts +4 -0
  33. package/dist/types/utils.d.ts +5 -0
  34. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../utils.ts"],
4
- "sourcesContent": ["/**\r\n * Normalizes the given language code into a ISO 639 code.\r\n * @param language The language code to normalize.\r\n */\r\nexport function normalizeLanguage(language: string): string {\r\n return language;\r\n}\r\n\r\n/**\r\n * The map of translation IDs from fetch.bible to their translation ID in the API.\r\n */\r\nconst TRANSLATION_ID_MAP: Map<string, string> = new Map([\r\n ['eng_bsb', 'BSB'],\r\n ['arb_nav', 'ARBNAV'],\r\n ['eng_webp', 'ENGWEBP'],\r\n ['hin_irv', 'HINIRV'],\r\n ['hbo_mas', 'HBOMAS'],\r\n]);\r\n\r\n/**\r\n * Gets the ID of the translation.\r\n * @param translation The translation to get the ID for.\r\n */\r\nexport function getTranslationId(translationId: string): string {\r\n return TRANSLATION_ID_MAP.get(translationId) ?? translationId;\r\n}\r\n\r\nexport function isEmptyOrWhitespace(str: string | null | undefined): boolean {\r\n return !str || /^\\s*$/.test(str);\r\n}\r\n\r\nexport function getFirstNonEmpty<T extends string>(...values: T[]): T {\r\n for (let value of values) {\r\n if (!isEmptyOrWhitespace(value)) {\r\n return value;\r\n }\r\n }\r\n\r\n throw new Error('All values are empty or whitespace!');\r\n}\r\n\r\nexport interface VerseRef {\r\n book: string;\r\n chapter: number;\r\n verse: number;\r\n\r\n /**\r\n * The rest of the content of the verse.\r\n */\r\n content?: string;\r\n\r\n /**\r\n * The chapter that the verse reference ends at.\r\n */\r\n endChapter?: number;\r\n\r\n /**\r\n * The verse that the verse reference ends at.\r\n */\r\n endVerse?: number;\r\n}\r\n\r\n/**\r\n * Parses the given verse reference.\r\n * Formatted like \"GEN 1:1\".\r\n *\r\n * @param text The reference to parse.\r\n */\r\nexport function parseVerseReference(text: string): VerseRef | null {\r\n const match = text.match(\r\n /^\\s*([0-9A-Za-z\\s]+)[\\s\\.]+(\\d+)[:\\.](\\d+)(?:-([0-9]+)(?:[\\s:\\.]([0-9]+))?)?/\r\n );\r\n\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const [reference, book, chapterStr, verseStr, endChapterStr, endVerseStr] =\r\n match;\r\n\r\n const chapter = parseInt(chapterStr);\r\n const verse = parseInt(verseStr);\r\n\r\n let endChapter = endChapterStr ? parseInt(endChapterStr) : undefined;\r\n let endVerse = endVerseStr ? parseInt(endVerseStr) : undefined;\r\n\r\n if (endChapter && !endVerse) {\r\n endVerse = endChapter;\r\n endChapter = undefined;\r\n }\r\n\r\n if (isNaN(chapter) || isNaN(verse)) {\r\n return null;\r\n }\r\n\r\n if (reference.length !== text.length) {\r\n return {\r\n book: getBookId(book) ?? book,\r\n chapter,\r\n verse,\r\n content: text.substring(reference.length).trim(),\r\n endChapter,\r\n endVerse,\r\n };\r\n }\r\n\r\n return {\r\n book: getBookId(book) ?? book,\r\n chapter,\r\n verse,\r\n endChapter,\r\n endVerse,\r\n };\r\n}\r\n\r\n/**\r\n * Defines a map that maps the book ID to the numerical order of the book.\r\n */\r\nconst BOOK_ID_MAP: Map<string, string> = new Map([\r\n ['gen', 'GEN'],\r\n ['genesis', 'GEN'],\r\n ['exo', 'EXO'],\r\n ['exodus', 'EXO'],\r\n ['lev', 'LEV'],\r\n ['lev', 'LEV'],\r\n ['laviticus', 'LEV'],\r\n ['num', 'NUM'],\r\n ['numbers', 'NUM'],\r\n ['deu', 'DEU'],\r\n ['deuteronomy', 'DEU'],\r\n ['jos', 'JOS'],\r\n ['joshua', 'JOS'],\r\n ['jdg', 'JDG'],\r\n ['judges', 'JDG'],\r\n ['rut', 'RUT'],\r\n ['ruth', 'RUT'],\r\n ['1sa', '1SA'],\r\n ['1samuel', '1SA'],\r\n ['2sa', '2SA'],\r\n ['2samuel', '2SA'],\r\n ['1ki', '1KI'],\r\n ['1kings', '1KI'],\r\n ['1kgs', '1KI'],\r\n ['2ki', '2KI'],\r\n ['2kings', '2KI'],\r\n ['2kgs', '2KI'],\r\n ['1ch', '1CH'],\r\n ['1chronicles', '1CH'],\r\n ['chronicles1', '1CH'],\r\n ['2ch', '2CH'],\r\n ['2chronicles', '2CH'],\r\n ['chronicles2', '2CH'],\r\n ['ezr', 'EZR'],\r\n ['ezra', 'EZR'],\r\n ['neh', 'NEH'],\r\n ['nehemiah', 'NEH'],\r\n ['est', 'EST'],\r\n ['ester', 'EST'],\r\n ['job', 'JOB'],\r\n ['ps', 'PSA'],\r\n ['psa', 'PSA'],\r\n ['psalms', 'PSA'],\r\n ['psalm', 'PSA'],\r\n ['pr', 'PRO'],\r\n ['pro', 'PRO'],\r\n ['proverbs', 'PRO'],\r\n ['ecc', 'ECC'],\r\n ['ecclesiastes', 'ECC'],\r\n ['eccl', 'ECC'],\r\n ['sng', 'SNG'],\r\n ['song', 'SNG'],\r\n ['songofsolomon', 'SNG'],\r\n ['isa', 'ISA'],\r\n ['isaiah', 'ISA'],\r\n ['jer', 'JER'],\r\n ['jeremiah', 'JER'],\r\n ['lam', 'LAM'],\r\n ['lamentations', 'LAM'],\r\n ['ezk', 'EZK'],\r\n ['ezekiel', 'EZK'],\r\n ['ezek', 'EZK'],\r\n ['dan', 'DAN'],\r\n ['daniel', 'DAN'],\r\n ['hos', 'HOS'],\r\n ['hosea', 'HOS'],\r\n ['jol', 'JOL'],\r\n ['joel', 'JOL'],\r\n ['amo', 'AMO'],\r\n ['amos', 'AMO'],\r\n ['oba', 'OBA'],\r\n ['obadiah', 'OBA'],\r\n ['jon', 'JON'],\r\n ['jonah', 'JON'],\r\n ['mic', 'MIC'],\r\n ['micah', 'MIC'],\r\n ['nam', 'NAM'],\r\n ['nahum', 'NAM'],\r\n ['nah', 'NAM'],\r\n ['hab', 'HAB'],\r\n ['habakkuk', 'HAB'],\r\n ['zep', 'ZEP'],\r\n ['zepaniah', 'ZEP'],\r\n ['hag', 'HAG'],\r\n ['haggai', 'HAG'],\r\n ['zec', 'ZEC'],\r\n ['zechariah', 'ZEC'],\r\n ['mal', 'MAL'],\r\n ['malachi', 'MAL'],\r\n ['mat', 'MAT'],\r\n ['matthew', 'MAT'],\r\n ['mrk', 'MRK'],\r\n ['mark', 'MRK'],\r\n ['luk', 'LUK'],\r\n ['luke', 'LUK'],\r\n ['jhn', 'JHN'],\r\n ['john', 'JHN'],\r\n ['act', 'ACT'],\r\n ['acts', 'ACT'],\r\n ['rom', 'ROM'],\r\n ['romans', 'ROM'],\r\n ['1co', '1CO'],\r\n ['1corinthians', '1CO'],\r\n ['2co', '2CO'],\r\n ['2corinthians', '2CO'],\r\n ['gal', 'GAL'],\r\n ['galatians', 'GAL'],\r\n ['eph', 'EPH'],\r\n ['ephesians', 'EPH'],\r\n ['php', 'PHP'],\r\n ['philippians', 'PHP'],\r\n ['phil', 'PHP'],\r\n ['col', 'COL'],\r\n ['colossians', 'COL'],\r\n ['1th', '1TH'],\r\n ['1thessalonians', '1TH'],\r\n ['2th', '2TH'],\r\n ['2thessalonians', '2TH'],\r\n ['1ti', '1TI'],\r\n ['1timothy', '1TI'],\r\n ['2ti', '2TI'],\r\n ['2timothy', '2TI'],\r\n ['tit', 'TIT'],\r\n ['titus', 'TIT'],\r\n ['phm', 'PHM'],\r\n ['philemon', 'PHM'],\r\n ['phlm', 'PHM'],\r\n ['heb', 'HEB'],\r\n ['hebrews', 'HEB'],\r\n ['jas', 'JAS'],\r\n ['james', 'JAS'],\r\n ['1pe', '1PE'],\r\n ['1peter', '1PE'],\r\n ['2pe', '2PE'],\r\n ['2peter', '2PE'],\r\n ['1jn', '1JN'],\r\n ['1john', '1JN'],\r\n ['2jn', '2JN'],\r\n ['2john', '2JN'],\r\n ['3jn', '3JN'],\r\n ['3john', '3JN'],\r\n ['jud', 'JUD'],\r\n ['jude', 'JUD'],\r\n ['rev', 'REV'],\r\n ['revelation', 'REV'],\r\n]);\r\n\r\n/**\r\n * Gets the ID of the given book.\r\n * Returns null if the ID could not be found.\r\n * @param book The name/ID of the book.\r\n */\r\nexport function getBookId(book: string): string | null {\r\n const bookLower = book.toLowerCase().replaceAll(/\\s+/g, '');\r\n\r\n const id = BOOK_ID_MAP.get(bookLower);\r\n if (id) {\r\n return id;\r\n }\r\n\r\n for (let [key, id] of BOOK_ID_MAP) {\r\n if (bookLower.startsWith(key)) {\r\n return id;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Normalizes the given language code into a ISO 639 code.\n * @param language The language code to normalize.\n */\nexport function normalizeLanguage(language: string): string {\n return language;\n}\n\n/**\n * The map of translation IDs from fetch.bible to their translation ID in the API.\n */\nconst TRANSLATION_ID_MAP: Map<string, string> = new Map([\n ['eng_bsb', 'BSB'],\n ['arb_nav', 'ARBNAV'],\n ['eng_webp', 'ENGWEBP'],\n ['hin_irv', 'HINIRV'],\n ['hbo_mas', 'HBOMAS'],\n ['eng_drv', 'eng_dra'],\n]);\n\n/**\n * Gets the ID of the translation.\n * @param translation The translation to get the ID for.\n */\nexport function getTranslationId(translationId: string): string {\n return TRANSLATION_ID_MAP.get(translationId) ?? translationId;\n}\n\nexport function isEmptyOrWhitespace(str: string | null | undefined): boolean {\n return !str || /^\\s*$/.test(str);\n}\n\nexport function getFirstNonEmpty<T extends string>(...values: T[]): T {\n for (let value of values) {\n if (!isEmptyOrWhitespace(value)) {\n return value;\n }\n }\n\n throw new Error('All values are empty or whitespace!');\n}\n\nexport interface VerseRef {\n book: string;\n chapter: number;\n verse: number;\n\n /**\n * The rest of the content of the verse.\n */\n content?: string;\n\n /**\n * The chapter that the verse reference ends at.\n */\n endChapter?: number;\n\n /**\n * The verse that the verse reference ends at.\n */\n endVerse?: number;\n}\n\n/**\n * Parses the given verse reference.\n * Formatted like \"GEN 1:1\".\n *\n * @param text The reference to parse.\n */\nexport function parseVerseReference(text: string): VerseRef | null {\n const match = text.match(\n /^\\s*([0-9A-Za-z\\s]+)[\\s\\.]+(\\d+)[:\\.](\\d+)(?:-([0-9]+)(?:[\\s:\\.]([0-9]+))?)?/\n );\n\n if (!match) {\n return null;\n }\n\n const [reference, book, chapterStr, verseStr, endChapterStr, endVerseStr] =\n match;\n\n const chapter = parseInt(chapterStr);\n const verse = parseInt(verseStr);\n\n let endChapter = endChapterStr ? parseInt(endChapterStr) : undefined;\n let endVerse = endVerseStr ? parseInt(endVerseStr) : undefined;\n\n if (endChapter && !endVerse) {\n endVerse = endChapter;\n endChapter = undefined;\n }\n\n if (isNaN(chapter) || isNaN(verse)) {\n return null;\n }\n\n if (reference.length !== text.length) {\n return {\n book: getBookId(book) ?? book,\n chapter,\n verse,\n content: text.substring(reference.length).trim(),\n endChapter,\n endVerse,\n };\n }\n\n return {\n book: getBookId(book) ?? book,\n chapter,\n verse,\n endChapter,\n endVerse,\n };\n}\n\n/**\n * Defines a map that maps the book ID to the USFM Book identifier.\n */\nconst BOOK_ID_MAP: Map<string, string> = new Map([\n ['gen', 'GEN'],\n ['genesis', 'GEN'],\n ['exo', 'EXO'],\n ['exodus', 'EXO'],\n ['lev', 'LEV'],\n ['lev', 'LEV'],\n ['laviticus', 'LEV'],\n ['num', 'NUM'],\n ['numbers', 'NUM'],\n ['deu', 'DEU'],\n ['deuteronomy', 'DEU'],\n ['jos', 'JOS'],\n ['joshua', 'JOS'],\n ['jdg', 'JDG'],\n ['judges', 'JDG'],\n ['rut', 'RUT'],\n ['ruth', 'RUT'],\n ['1sa', '1SA'],\n ['1samuel', '1SA'],\n ['2sa', '2SA'],\n ['2samuel', '2SA'],\n ['1ki', '1KI'],\n ['1kings', '1KI'],\n ['1kgs', '1KI'],\n ['2ki', '2KI'],\n ['2kings', '2KI'],\n ['2kgs', '2KI'],\n ['1ch', '1CH'],\n ['1chronicles', '1CH'],\n ['chronicles1', '1CH'],\n ['2ch', '2CH'],\n ['2chronicles', '2CH'],\n ['chronicles2', '2CH'],\n ['ezr', 'EZR'],\n ['ezra', 'EZR'],\n ['neh', 'NEH'],\n ['nehemiah', 'NEH'],\n ['est', 'EST'],\n ['ester', 'EST'],\n ['job', 'JOB'],\n ['ps', 'PSA'],\n ['psa', 'PSA'],\n ['psalms', 'PSA'],\n ['psalm', 'PSA'],\n ['pr', 'PRO'],\n ['pro', 'PRO'],\n ['proverbs', 'PRO'],\n ['ecc', 'ECC'],\n ['ecclesiastes', 'ECC'],\n ['eccl', 'ECC'],\n ['sng', 'SNG'],\n ['song', 'SNG'],\n ['songofsolomon', 'SNG'],\n ['isa', 'ISA'],\n ['isaiah', 'ISA'],\n ['jer', 'JER'],\n ['jeremiah', 'JER'],\n ['lam', 'LAM'],\n ['lamentations', 'LAM'],\n ['ezk', 'EZK'],\n ['ezekiel', 'EZK'],\n ['ezek', 'EZK'],\n ['dan', 'DAN'],\n ['daniel', 'DAN'],\n ['hos', 'HOS'],\n ['hosea', 'HOS'],\n ['jol', 'JOL'],\n ['joel', 'JOL'],\n ['amo', 'AMO'],\n ['amos', 'AMO'],\n ['oba', 'OBA'],\n ['obadiah', 'OBA'],\n ['jon', 'JON'],\n ['jonah', 'JON'],\n ['mic', 'MIC'],\n ['micah', 'MIC'],\n ['nam', 'NAM'],\n ['nahum', 'NAM'],\n ['nah', 'NAM'],\n ['hab', 'HAB'],\n ['habakkuk', 'HAB'],\n ['zep', 'ZEP'],\n ['zepaniah', 'ZEP'],\n ['hag', 'HAG'],\n ['haggai', 'HAG'],\n ['zec', 'ZEC'],\n ['zechariah', 'ZEC'],\n ['mal', 'MAL'],\n ['malachi', 'MAL'],\n ['mat', 'MAT'],\n ['matthew', 'MAT'],\n ['mrk', 'MRK'],\n ['mark', 'MRK'],\n ['luk', 'LUK'],\n ['luke', 'LUK'],\n ['jhn', 'JHN'],\n ['john', 'JHN'],\n ['act', 'ACT'],\n ['acts', 'ACT'],\n ['rom', 'ROM'],\n ['romans', 'ROM'],\n ['1co', '1CO'],\n ['1corinthians', '1CO'],\n ['2co', '2CO'],\n ['2corinthians', '2CO'],\n ['gal', 'GAL'],\n ['galatians', 'GAL'],\n ['eph', 'EPH'],\n ['ephesians', 'EPH'],\n ['php', 'PHP'],\n ['philippians', 'PHP'],\n ['phil', 'PHP'],\n ['col', 'COL'],\n ['colossians', 'COL'],\n ['1th', '1TH'],\n ['1thessalonians', '1TH'],\n ['2th', '2TH'],\n ['2thessalonians', '2TH'],\n ['1ti', '1TI'],\n ['1timothy', '1TI'],\n ['2ti', '2TI'],\n ['2timothy', '2TI'],\n ['tit', 'TIT'],\n ['titus', 'TIT'],\n ['phm', 'PHM'],\n ['philemon', 'PHM'],\n ['phlm', 'PHM'],\n ['heb', 'HEB'],\n ['hebrews', 'HEB'],\n ['jas', 'JAS'],\n ['james', 'JAS'],\n ['1pe', '1PE'],\n ['1peter', '1PE'],\n ['2pe', '2PE'],\n ['2peter', '2PE'],\n ['1jn', '1JN'],\n ['1john', '1JN'],\n ['2jn', '2JN'],\n ['2john', '2JN'],\n ['3jn', '3JN'],\n ['3john', '3JN'],\n ['jud', 'JUD'],\n ['jude', 'JUD'],\n ['rev', 'REV'],\n ['revelation', 'REV'],\n]);\n\n/**\n * Gets the ID of the given book.\n * Returns null if the ID could not be found.\n * @param book The name/ID of the book.\n */\nexport function getBookId(book: string): string | null {\n const bookLower = book.toLowerCase().replaceAll(/\\s+/g, '');\n\n const id = BOOK_ID_MAP.get(bookLower);\n if (id) {\n return id;\n }\n\n for (let [key, id] of BOOK_ID_MAP) {\n if (bookLower.startsWith(key)) {\n return id;\n }\n }\n\n return null;\n}\n\n/**\n * A brief list of verses which may appear in some older translations\n * but are not present in more modern translations.\n */\nexport const KNOWN_SKIPPED_VERSES = new Set([\n 'MAT 12:47',\n 'MAT 17:21',\n 'MAT 18:11',\n 'MAT 23:14',\n 'MRK 7:16',\n 'MRK 9:44',\n 'MRK 9:46',\n 'MRK 11:26',\n 'LUK 17:36',\n 'LUK 23:17',\n 'JHN 5:4',\n 'ACT 8:37',\n 'ACT 15:34',\n 'ACT 24:7',\n 'ACT 28:29',\n 'ROM 16:24',\n]);\n"],
5
+ "mappings": "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",
6
6
  "names": ["id"]
7
7
  }
@@ -109,6 +109,18 @@ export interface ApiTranslation extends Translation {
109
109
  * Complete translations should have the same number of verses as the Bible (around 31,102 - some translations exclude verses based on the aparent likelyhood of existing in the original source texts).
110
110
  */
111
111
  totalNumberOfVerses: number;
112
+ /**
113
+ * The total number of apocryphal books that are contained in this translation.
114
+ */
115
+ numberOfApocryphalBooks?: number;
116
+ /**
117
+ * The total number of apocryphal chapters that are contained in this translation.
118
+ */
119
+ totalNumberOfApocryphalChapters?: number;
120
+ /**
121
+ * the total number of apocryphal verses that are contained in this translation.
122
+ */
123
+ totalNumberOfApocryphalVerses?: number;
112
124
  /**
113
125
  * Gets the name of the language that the translation is in.
114
126
  * Null or undefined if the name of the language is not known.
@@ -227,10 +239,18 @@ export interface ApiCommentaryProfile extends CommentaryProfile {
227
239
  * Defines a translation book that is used in the API.
228
240
  */
229
241
  export interface ApiTranslationBook extends TranslationBook {
242
+ /**
243
+ * The number of the first chapter in the book.
244
+ */
245
+ firstChapterNumber: number;
230
246
  /**
231
247
  * The link to the first chapter of the book.
232
248
  */
233
249
  firstChapterApiLink: string;
250
+ /**
251
+ * The number of the last chapter in the book.
252
+ */
253
+ lastChapterNumber: number;
234
254
  /**
235
255
  * The link to the last chapter of the book.
236
256
  */
@@ -248,14 +268,30 @@ export interface ApiTranslationBook extends TranslationBook {
248
268
  * Defines a commentary book that is used in the API.
249
269
  */
250
270
  export interface ApiCommentaryBook extends CommentaryBook {
271
+ /**
272
+ * The number of the first chapter in the book.
273
+ *
274
+ * Null if the comentary book has no chapters.
275
+ */
276
+ firstChapterNumber: number | null;
251
277
  /**
252
278
  * The link to the first chapter of the book.
279
+ *
280
+ * Null if the comentary book has no chapters.
253
281
  */
254
- firstChapterApiLink: string;
282
+ firstChapterApiLink: string | null;
283
+ /**
284
+ * The number of the last chapter in the book.
285
+ *
286
+ * Null if the comentary book has no chapters.
287
+ */
288
+ lastChapterNumber: number | null;
255
289
  /**
256
290
  * The link to the last chapter of the book.
291
+ *
292
+ * Null if the comentary book has no chapters.
257
293
  */
258
- lastChapterApiLink: string;
294
+ lastChapterApiLink: string | null;
259
295
  /**
260
296
  * The number of chapters that the book contains.
261
297
  */
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Defines a map that maps the book ID of apocryphal books to the numerical order of the book.
3
+ */
4
+ export declare const apocryphaBooks: Map<string, number>;
1
5
  /**
2
6
  * Defines a map that maps the book ID to the numerical order of the book.
3
7
  */
@@ -191,6 +191,10 @@ export interface TranslationBook {
191
191
  * The numerical order of the book in the translation.
192
192
  */
193
193
  order: number;
194
+ /**
195
+ * Whether the book is an apocryphal book.
196
+ */
197
+ isApocryphal?: boolean;
194
198
  }
195
199
  /**
196
200
  * Defines an interface that contains information about a book in a commentary.
@@ -1,4 +1,5 @@
1
1
  import { Commentary, CommentaryBook, CommentaryBookChapter, CommentaryProfile, InputFile, Translation, TranslationBook, TranslationBookChapter } from './common-types.js';
2
+ import { ParseMessage } from '../parser/types.js';
2
3
  /**
3
4
  * Defines an interface that contains generated dataset info.
4
5
  */
@@ -11,6 +12,9 @@ export interface DatasetOutput {
11
12
  * The list of commentaries that are available in the dataset.
12
13
  */
13
14
  commentaries: DatasetCommentary[];
15
+ parseMessages?: {
16
+ [key: string]: ParseMessage[];
17
+ };
14
18
  }
15
19
  /**
16
20
  * Defines a translation that is used in the dataset.
@@ -20,6 +20,14 @@ export interface ParseTree {
20
20
  * The list of chapters for the tree.
21
21
  */
22
22
  content: (Heading | Chapter)[];
23
+ /**
24
+ * The list of messages that were generated during parsing.
25
+ */
26
+ parseMessages?: ParseMessage[];
27
+ }
28
+ export interface ParseMessage {
29
+ type: 'warning' | 'error';
30
+ message: string;
23
31
  }
24
32
  export interface Heading {
25
33
  type: 'heading';
@@ -11,6 +11,10 @@ export declare const PARSER_VERSION = "2";
11
11
  export declare class USXParser {
12
12
  private _domParser;
13
13
  private _noteCounter;
14
+ private _messages;
15
+ private _lastVerse;
16
+ private _currentChapter;
17
+ private _bookId;
14
18
  constructor(domParser: DOMParser);
15
19
  /**
16
20
  * Parses the specified USX content.
@@ -40,4 +40,9 @@ export declare function parseVerseReference(text: string): VerseRef | null;
40
40
  * @param book The name/ID of the book.
41
41
  */
42
42
  export declare function getBookId(book: string): string | null;
43
+ /**
44
+ * A brief list of verses which may appear in some older translations
45
+ * but are not present in more modern translations.
46
+ */
47
+ export declare const KNOWN_SKIPPED_VERSES: Set<string>;
43
48
  //# sourceMappingURL=utils.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helloao/tools",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "A set of tools for managing HelloAO's Free Bible API",
5
5
  "main": "./dist/cjs/index.cjs",
6
6
  "module": "./dist/esm/index.js",