@helloao/tools 0.0.6 → 0.0.9

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 (104) hide show
  1. package/dist/cjs/generation/api.cjs +240 -0
  2. package/dist/cjs/generation/api.cjs.map +7 -0
  3. package/dist/cjs/generation/audio.cjs +83 -0
  4. package/dist/cjs/generation/audio.cjs.map +7 -0
  5. package/dist/cjs/generation/book-order.cjs +508 -0
  6. package/dist/cjs/generation/book-order.cjs.map +7 -0
  7. package/dist/cjs/generation/common-types.cjs +17 -0
  8. package/dist/cjs/generation/common-types.cjs.map +7 -0
  9. package/dist/cjs/generation/dataset.cjs +158 -0
  10. package/dist/cjs/generation/dataset.cjs.map +7 -0
  11. package/dist/cjs/generation/index.cjs +51 -0
  12. package/dist/cjs/generation/index.cjs.map +7 -0
  13. package/dist/cjs/index.cjs +45 -0
  14. package/dist/cjs/index.cjs.map +7 -0
  15. package/dist/cjs/parser/codex-parser.cjs +176 -0
  16. package/dist/cjs/parser/codex-parser.cjs.map +7 -0
  17. package/dist/cjs/parser/index.cjs +48 -0
  18. package/dist/cjs/parser/index.cjs.map +7 -0
  19. package/dist/cjs/parser/iterators.cjs +204 -0
  20. package/dist/cjs/parser/iterators.cjs.map +7 -0
  21. package/dist/cjs/parser/types.cjs +17 -0
  22. package/dist/cjs/parser/types.cjs.map +7 -0
  23. package/dist/cjs/parser/usfm-parser.cjs +791 -0
  24. package/dist/cjs/parser/usfm-parser.cjs.map +7 -0
  25. package/dist/cjs/parser/usx-parser.cjs +471 -0
  26. package/dist/cjs/parser/usx-parser.cjs.map +7 -0
  27. package/dist/cjs/utils.cjs +85 -0
  28. package/dist/cjs/utils.cjs.map +7 -0
  29. package/dist/esm/generation/api.js +198 -0
  30. package/dist/esm/generation/api.js.map +7 -0
  31. package/dist/esm/generation/audio.js +53 -0
  32. package/dist/esm/generation/audio.js.map +7 -0
  33. package/dist/esm/generation/book-order.js +478 -0
  34. package/dist/esm/generation/book-order.js.map +7 -0
  35. package/dist/esm/generation/common-types.js +2 -0
  36. package/dist/esm/generation/common-types.js.map +7 -0
  37. package/dist/esm/generation/dataset.js +132 -0
  38. package/dist/esm/generation/dataset.js.map +7 -0
  39. package/dist/esm/generation/index.js +8 -0
  40. package/dist/esm/generation/index.js.map +7 -0
  41. package/dist/esm/index.js +6 -0
  42. package/dist/esm/index.js.map +7 -0
  43. package/dist/esm/parser/codex-parser.js +144 -0
  44. package/dist/esm/parser/codex-parser.js.map +7 -0
  45. package/dist/esm/parser/index.js +8 -0
  46. package/dist/esm/parser/index.js.map +7 -0
  47. package/dist/esm/parser/iterators.js +152 -0
  48. package/dist/esm/parser/iterators.js.map +7 -0
  49. package/dist/esm/parser/types.js +2 -0
  50. package/dist/esm/parser/types.js.map +7 -0
  51. package/dist/esm/parser/usfm-parser.js +749 -0
  52. package/dist/esm/parser/usfm-parser.js.map +7 -0
  53. package/dist/esm/parser/usx-parser.js +447 -0
  54. package/dist/esm/parser/usx-parser.js.map +7 -0
  55. package/dist/esm/utils.js +51 -0
  56. package/dist/esm/utils.js.map +7 -0
  57. package/{generation → dist/types/generation}/api.d.ts +2 -2
  58. package/{generation → dist/types/generation}/audio.d.ts +1 -1
  59. package/{generation → dist/types/generation}/dataset.d.ts +1 -1
  60. package/dist/types/generation/index.d.ts +7 -0
  61. package/dist/types/index.d.ts +5 -0
  62. package/{parser → dist/types/parser}/codex-parser.d.ts +1 -1
  63. package/dist/types/parser/index.d.ts +7 -0
  64. package/{parser → dist/types/parser}/usfm-parser.d.ts +1 -1
  65. package/{parser → dist/types/parser}/usx-parser.d.ts +2 -2
  66. package/package.json +25 -3
  67. package/generation/api.js +0 -187
  68. package/generation/api.spec.d.ts +0 -2
  69. package/generation/api.spec.js +0 -620
  70. package/generation/audio.js +0 -60
  71. package/generation/audio.spec.d.ts +0 -2
  72. package/generation/audio.spec.js +0 -36
  73. package/generation/book-order.js +0 -494
  74. package/generation/book-order.spec.d.ts +0 -2
  75. package/generation/book-order.spec.js +0 -8
  76. package/generation/common-types.js +0 -2
  77. package/generation/dataset.js +0 -106
  78. package/generation/index.d.ts +0 -7
  79. package/generation/index.js +0 -38
  80. package/index.d.ts +0 -5
  81. package/index.js +0 -32
  82. package/parser/codex-parser.js +0 -160
  83. package/parser/codex-parser.spec.d.ts +0 -2
  84. package/parser/codex-parser.spec.js +0 -645
  85. package/parser/index.d.ts +0 -7
  86. package/parser/index.js +0 -35
  87. package/parser/iterators.js +0 -222
  88. package/parser/iterators.spec.d.ts +0 -2
  89. package/parser/iterators.spec.js +0 -174
  90. package/parser/types.js +0 -2
  91. package/parser/usfm-parser.js +0 -840
  92. package/parser/usfm-parser.spec.d.ts +0 -2
  93. package/parser/usfm-parser.spec.js +0 -1593
  94. package/parser/usx-parser.js +0 -486
  95. package/parser/usx-parser.spec.d.ts +0 -2
  96. package/parser/usx-parser.spec.js +0 -1260
  97. package/utils.js +0 -73
  98. package/utils.spec.d.ts +0 -2
  99. package/utils.spec.js +0 -42
  100. /package/{generation → dist/types/generation}/book-order.d.ts +0 -0
  101. /package/{generation → dist/types/generation}/common-types.d.ts +0 -0
  102. /package/{parser → dist/types/parser}/iterators.d.ts +0 -0
  103. /package/{parser → dist/types/parser}/types.d.ts +0 -0
  104. /package/{utils.d.ts → dist/types/utils.d.ts} +0 -0
@@ -1,620 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const api_1 = require("./api");
7
- const _01GENBSB_usfm_1 = __importDefault(require("../../../bible/bsb/01GENBSB.usfm"));
8
- const _02EXOBSB_usfm_1 = __importDefault(require("../../../bible/bsb/02EXOBSB.usfm"));
9
- const _131CHBSB_usfm_1 = __importDefault(require("../../../bible/bsb/131CHBSB.usfm"));
10
- const dataset_1 = require("./dataset");
11
- const linkedom_1 = require("linkedom");
12
- describe('replaceSpacesWithUnderscores()', () => {
13
- const cases = [
14
- ['Hello World', 'Hello_World'],
15
- ['Hello World 2', 'Hello_World_2'],
16
- ];
17
- it.each(cases)('should replace spaces with underscores', (input, expected) => {
18
- expect((0, api_1.replaceSpacesWithUnderscores)(input)).toBe(expected);
19
- });
20
- });
21
- describe('generateApiForDataset()', () => {
22
- it('should output a file tree', () => {
23
- let translation1 = {
24
- id: 'bsb',
25
- name: 'Berean Standard Bible',
26
- englishName: 'Berean Standard Bible',
27
- shortName: 'BSB',
28
- language: 'eng',
29
- direction: 'ltr',
30
- licenseUrl: 'https://berean.bible/terms.htm',
31
- website: 'https://berean.bible',
32
- };
33
- let inputFiles = [
34
- {
35
- fileType: 'usfm',
36
- metadata: {
37
- translation: translation1,
38
- },
39
- content: firstXLines(_01GENBSB_usfm_1.default, 13),
40
- },
41
- {
42
- fileType: 'usfm',
43
- metadata: {
44
- translation: translation1,
45
- },
46
- content: firstXLines(_02EXOBSB_usfm_1.default, 14),
47
- },
48
- ];
49
- const dataset = (0, dataset_1.generateDataset)(inputFiles, new linkedom_1.DOMParser());
50
- const generated = (0, api_1.generateApiForDataset)(dataset);
51
- const files = (0, api_1.generateFilesForApi)(generated);
52
- const tree = fileTree(files);
53
- const expectedTranslation = {
54
- id: 'bsb',
55
- name: 'Berean Standard Bible',
56
- englishName: 'Berean Standard Bible',
57
- shortName: 'BSB',
58
- language: 'eng',
59
- textDirection: 'ltr',
60
- licenseUrl: 'https://berean.bible/terms.htm',
61
- website: 'https://berean.bible',
62
- availableFormats: ['json'],
63
- listOfBooksApiLink: '/api/bsb/books.json',
64
- numberOfBooks: 2,
65
- totalNumberOfChapters: 2,
66
- totalNumberOfVerses: 4,
67
- languageName: 'English',
68
- languageEnglishName: 'English',
69
- };
70
- expect(tree).toEqual({
71
- '/api/available_translations.json': {
72
- translations: [expectedTranslation],
73
- },
74
- '/api/bsb/books.json': {
75
- translation: expectedTranslation,
76
- books: [
77
- {
78
- id: 'GEN',
79
- name: 'Genesis',
80
- commonName: 'Genesis',
81
- title: 'Genesis',
82
- order: 1,
83
- numberOfChapters: 1,
84
- totalNumberOfVerses: 2,
85
- firstChapterApiLink: '/api/bsb/GEN/1.json',
86
- lastChapterApiLink: '/api/bsb/GEN/1.json',
87
- },
88
- {
89
- id: 'EXO',
90
- name: 'Exodus',
91
- commonName: 'Exodus',
92
- title: 'Exodus',
93
- order: 2,
94
- numberOfChapters: 1,
95
- totalNumberOfVerses: 2,
96
- firstChapterApiLink: '/api/bsb/EXO/1.json',
97
- lastChapterApiLink: '/api/bsb/EXO/1.json',
98
- },
99
- ],
100
- },
101
- '/api/bsb/GEN/1.json': {
102
- translation: expectedTranslation,
103
- book: {
104
- id: 'GEN',
105
- name: 'Genesis',
106
- commonName: 'Genesis',
107
- title: 'Genesis',
108
- order: 1,
109
- numberOfChapters: 1,
110
- totalNumberOfVerses: 2,
111
- firstChapterApiLink: '/api/bsb/GEN/1.json',
112
- lastChapterApiLink: '/api/bsb/GEN/1.json',
113
- },
114
- thisChapterLink: '/api/bsb/GEN/1.json',
115
- thisChapterAudioLinks: {},
116
- nextChapterApiLink: '/api/bsb/EXO/1.json',
117
- nextChapterAudioLinks: {},
118
- previousChapterApiLink: null,
119
- previousChapterAudioLinks: null,
120
- numberOfVerses: 2,
121
- chapter: {
122
- number: 1,
123
- content: [
124
- {
125
- type: 'heading',
126
- content: ['The Creation'],
127
- },
128
- {
129
- type: 'line_break',
130
- },
131
- {
132
- type: 'verse',
133
- number: 1,
134
- content: [
135
- 'In the beginning God created the heavens and the earth.',
136
- ],
137
- },
138
- {
139
- type: 'line_break',
140
- },
141
- {
142
- type: 'verse',
143
- number: 2,
144
- content: [
145
- 'Now the earth was formless and void, and darkness was over the surface of the deep. And the Spirit of God was hovering over the surface of the waters.',
146
- ],
147
- },
148
- ],
149
- footnotes: [],
150
- },
151
- },
152
- '/api/bsb/EXO/1.json': {
153
- translation: expectedTranslation,
154
- book: {
155
- id: 'EXO',
156
- name: 'Exodus',
157
- commonName: 'Exodus',
158
- title: 'Exodus',
159
- order: 2,
160
- numberOfChapters: 1,
161
- totalNumberOfVerses: 2,
162
- firstChapterApiLink: '/api/bsb/EXO/1.json',
163
- lastChapterApiLink: '/api/bsb/EXO/1.json',
164
- },
165
- thisChapterLink: '/api/bsb/EXO/1.json',
166
- thisChapterAudioLinks: {},
167
- nextChapterApiLink: null,
168
- nextChapterAudioLinks: null,
169
- previousChapterApiLink: '/api/bsb/GEN/1.json',
170
- previousChapterAudioLinks: {},
171
- numberOfVerses: 2,
172
- chapter: {
173
- number: 1,
174
- content: [
175
- {
176
- type: 'heading',
177
- content: ['The Israelites Multiply in Egypt'],
178
- },
179
- {
180
- type: 'line_break',
181
- },
182
- {
183
- type: 'verse',
184
- number: 1,
185
- content: [
186
- 'These are the names of the sons of Israel who went to Egypt with Jacob, each with his family:',
187
- ],
188
- },
189
- {
190
- type: 'line_break',
191
- },
192
- {
193
- type: 'verse',
194
- number: 2,
195
- content: ['Reuben, Simeon, Levi, and Judah;'],
196
- },
197
- ],
198
- footnotes: [],
199
- },
200
- },
201
- });
202
- // expect(availableTranslations).toEqual({
203
- // translations: [
204
- // expectedTranslation
205
- // ]
206
- // });
207
- });
208
- it('should use the given path prefix', () => {
209
- let translation1 = {
210
- id: 'bsb',
211
- name: 'Berean Standard Bible',
212
- englishName: 'Berean Standard Bible',
213
- shortName: 'BSB',
214
- language: 'eng',
215
- direction: 'ltr',
216
- licenseUrl: 'https://berean.bible/terms.htm',
217
- website: 'https://berean.bible',
218
- };
219
- let inputFiles = [
220
- {
221
- fileType: 'usfm',
222
- metadata: {
223
- translation: translation1,
224
- },
225
- content: firstXLines(_01GENBSB_usfm_1.default, 13),
226
- },
227
- {
228
- fileType: 'usfm',
229
- metadata: {
230
- translation: translation1,
231
- },
232
- content: firstXLines(_02EXOBSB_usfm_1.default, 14),
233
- },
234
- ];
235
- const dataset = (0, dataset_1.generateDataset)(inputFiles, new linkedom_1.DOMParser());
236
- const generated = (0, api_1.generateApiForDataset)(dataset, {
237
- pathPrefix: '/hello',
238
- });
239
- const files = (0, api_1.generateFilesForApi)(generated);
240
- const tree = fileTree(files);
241
- const expectedTranslation = {
242
- id: 'bsb',
243
- name: 'Berean Standard Bible',
244
- englishName: 'Berean Standard Bible',
245
- shortName: 'BSB',
246
- language: 'eng',
247
- textDirection: 'ltr',
248
- licenseUrl: 'https://berean.bible/terms.htm',
249
- website: 'https://berean.bible',
250
- availableFormats: ['json'],
251
- listOfBooksApiLink: '/hello/api/bsb/books.json',
252
- numberOfBooks: 2,
253
- totalNumberOfChapters: 2,
254
- totalNumberOfVerses: 4,
255
- languageName: 'English',
256
- languageEnglishName: 'English',
257
- };
258
- expect(tree).toEqual({
259
- '/hello/api/available_translations.json': {
260
- translations: [expectedTranslation],
261
- },
262
- '/hello/api/bsb/books.json': {
263
- translation: expectedTranslation,
264
- books: [
265
- {
266
- id: 'GEN',
267
- name: 'Genesis',
268
- commonName: 'Genesis',
269
- title: 'Genesis',
270
- order: 1,
271
- numberOfChapters: 1,
272
- totalNumberOfVerses: 2,
273
- firstChapterApiLink: '/hello/api/bsb/GEN/1.json',
274
- lastChapterApiLink: '/hello/api/bsb/GEN/1.json',
275
- },
276
- {
277
- id: 'EXO',
278
- name: 'Exodus',
279
- commonName: 'Exodus',
280
- title: 'Exodus',
281
- order: 2,
282
- numberOfChapters: 1,
283
- totalNumberOfVerses: 2,
284
- firstChapterApiLink: '/hello/api/bsb/EXO/1.json',
285
- lastChapterApiLink: '/hello/api/bsb/EXO/1.json',
286
- },
287
- ],
288
- },
289
- '/hello/api/bsb/GEN/1.json': {
290
- translation: expectedTranslation,
291
- book: {
292
- id: 'GEN',
293
- name: 'Genesis',
294
- commonName: 'Genesis',
295
- title: 'Genesis',
296
- order: 1,
297
- numberOfChapters: 1,
298
- totalNumberOfVerses: 2,
299
- firstChapterApiLink: '/hello/api/bsb/GEN/1.json',
300
- lastChapterApiLink: '/hello/api/bsb/GEN/1.json',
301
- },
302
- thisChapterLink: '/hello/api/bsb/GEN/1.json',
303
- thisChapterAudioLinks: {},
304
- nextChapterApiLink: '/hello/api/bsb/EXO/1.json',
305
- nextChapterAudioLinks: {},
306
- previousChapterApiLink: null,
307
- previousChapterAudioLinks: null,
308
- numberOfVerses: 2,
309
- chapter: {
310
- number: 1,
311
- content: [
312
- {
313
- type: 'heading',
314
- content: ['The Creation'],
315
- },
316
- {
317
- type: 'line_break',
318
- },
319
- {
320
- type: 'verse',
321
- number: 1,
322
- content: [
323
- 'In the beginning God created the heavens and the earth.',
324
- ],
325
- },
326
- {
327
- type: 'line_break',
328
- },
329
- {
330
- type: 'verse',
331
- number: 2,
332
- content: [
333
- 'Now the earth was formless and void, and darkness was over the surface of the deep. And the Spirit of God was hovering over the surface of the waters.',
334
- ],
335
- },
336
- ],
337
- footnotes: [],
338
- },
339
- },
340
- '/hello/api/bsb/EXO/1.json': {
341
- translation: expectedTranslation,
342
- book: {
343
- id: 'EXO',
344
- name: 'Exodus',
345
- commonName: 'Exodus',
346
- title: 'Exodus',
347
- order: 2,
348
- numberOfChapters: 1,
349
- totalNumberOfVerses: 2,
350
- firstChapterApiLink: '/hello/api/bsb/EXO/1.json',
351
- lastChapterApiLink: '/hello/api/bsb/EXO/1.json',
352
- },
353
- thisChapterLink: '/hello/api/bsb/EXO/1.json',
354
- thisChapterAudioLinks: {},
355
- nextChapterApiLink: null,
356
- nextChapterAudioLinks: null,
357
- previousChapterApiLink: '/hello/api/bsb/GEN/1.json',
358
- previousChapterAudioLinks: {},
359
- numberOfVerses: 2,
360
- chapter: {
361
- number: 1,
362
- content: [
363
- {
364
- type: 'heading',
365
- content: ['The Israelites Multiply in Egypt'],
366
- },
367
- {
368
- type: 'line_break',
369
- },
370
- {
371
- type: 'verse',
372
- number: 1,
373
- content: [
374
- 'These are the names of the sons of Israel who went to Egypt with Jacob, each with his family:',
375
- ],
376
- },
377
- {
378
- type: 'line_break',
379
- },
380
- {
381
- type: 'verse',
382
- number: 2,
383
- content: ['Reuben, Simeon, Levi, and Judah;'],
384
- },
385
- ],
386
- footnotes: [],
387
- },
388
- },
389
- });
390
- });
391
- it('should use underscores for spaces in the book name', () => {
392
- let translation1 = {
393
- id: 'bsb',
394
- name: 'Berean Standard Bible',
395
- englishName: 'Berean Standard Bible',
396
- shortName: 'BSB',
397
- language: 'eng',
398
- direction: 'ltr',
399
- licenseUrl: 'https://berean.bible/terms.htm',
400
- website: 'https://berean.bible',
401
- };
402
- let inputFiles = [
403
- {
404
- fileType: 'usfm',
405
- metadata: {
406
- translation: translation1,
407
- },
408
- content: firstXLines(_131CHBSB_usfm_1.default, 11),
409
- },
410
- ];
411
- const dataset = (0, dataset_1.generateDataset)(inputFiles, new linkedom_1.DOMParser());
412
- const generated = (0, api_1.generateApiForDataset)(dataset, {
413
- useCommonName: true,
414
- });
415
- const files = (0, api_1.generateFilesForApi)(generated);
416
- const tree = fileTree(files);
417
- const expectedTranslation = {
418
- id: 'bsb',
419
- name: 'Berean Standard Bible',
420
- englishName: 'Berean Standard Bible',
421
- shortName: 'BSB',
422
- language: 'eng',
423
- textDirection: 'ltr',
424
- licenseUrl: 'https://berean.bible/terms.htm',
425
- website: 'https://berean.bible',
426
- availableFormats: ['json'],
427
- listOfBooksApiLink: '/api/bsb/books.json',
428
- numberOfBooks: 1,
429
- totalNumberOfChapters: 1,
430
- totalNumberOfVerses: 1,
431
- languageName: 'English',
432
- languageEnglishName: 'English',
433
- };
434
- expect(tree).toEqual({
435
- '/api/available_translations.json': {
436
- translations: [expectedTranslation],
437
- },
438
- '/api/bsb/books.json': {
439
- translation: expectedTranslation,
440
- books: [
441
- {
442
- id: '1CH',
443
- name: '1 Chronicles',
444
- commonName: '1 Chronicles',
445
- title: '1 Chronicles',
446
- numberOfChapters: 1,
447
- totalNumberOfVerses: 1,
448
- order: 13,
449
- firstChapterApiLink: '/api/bsb/1_Chronicles/1.json',
450
- lastChapterApiLink: '/api/bsb/1_Chronicles/1.json',
451
- },
452
- ],
453
- },
454
- '/api/bsb/1_Chronicles/1.json': {
455
- translation: expectedTranslation,
456
- book: {
457
- id: '1CH',
458
- name: '1 Chronicles',
459
- commonName: '1 Chronicles',
460
- title: '1 Chronicles',
461
- numberOfChapters: 1,
462
- totalNumberOfVerses: 1,
463
- order: 13,
464
- firstChapterApiLink: '/api/bsb/1_Chronicles/1.json',
465
- lastChapterApiLink: '/api/bsb/1_Chronicles/1.json',
466
- },
467
- thisChapterLink: '/api/bsb/1_Chronicles/1.json',
468
- thisChapterAudioLinks: {},
469
- nextChapterApiLink: null,
470
- nextChapterAudioLinks: null,
471
- previousChapterApiLink: null,
472
- previousChapterAudioLinks: null,
473
- numberOfVerses: 1,
474
- chapter: {
475
- number: 1,
476
- content: [
477
- {
478
- type: 'heading',
479
- content: ['From Adam to Abraham'],
480
- },
481
- {
482
- type: 'line_break',
483
- },
484
- {
485
- type: 'verse',
486
- number: 1,
487
- content: ['Adam, Seth, Enosh,'],
488
- },
489
- ],
490
- footnotes: [],
491
- },
492
- },
493
- });
494
- // expect(availableTranslations).toEqual({
495
- // translations: [
496
- // expectedTranslation
497
- // ]
498
- // });
499
- });
500
- it('produce the correct names for languages', () => {
501
- let translation1 = {
502
- id: 'bsb',
503
- name: 'Berean Standard Bible',
504
- englishName: 'Berean Standard Bible',
505
- shortName: 'BSB',
506
- language: 'spa',
507
- direction: 'ltr',
508
- licenseUrl: 'https://berean.bible/terms.htm',
509
- website: 'https://berean.bible',
510
- };
511
- let inputFiles = [
512
- {
513
- fileType: 'usfm',
514
- metadata: {
515
- translation: translation1,
516
- },
517
- content: firstXLines(_131CHBSB_usfm_1.default, 11),
518
- },
519
- ];
520
- const dataset = (0, dataset_1.generateDataset)(inputFiles, new linkedom_1.DOMParser());
521
- const generated = (0, api_1.generateApiForDataset)(dataset, {
522
- useCommonName: true,
523
- });
524
- const files = (0, api_1.generateFilesForApi)(generated);
525
- const tree = fileTree(files);
526
- const expectedTranslation = {
527
- id: 'bsb',
528
- name: 'Berean Standard Bible',
529
- englishName: 'Berean Standard Bible',
530
- shortName: 'BSB',
531
- language: 'spa',
532
- textDirection: 'ltr',
533
- licenseUrl: 'https://berean.bible/terms.htm',
534
- website: 'https://berean.bible',
535
- availableFormats: ['json'],
536
- listOfBooksApiLink: '/api/bsb/books.json',
537
- numberOfBooks: 1,
538
- totalNumberOfChapters: 1,
539
- totalNumberOfVerses: 1,
540
- languageName: 'español',
541
- languageEnglishName: 'Spanish',
542
- };
543
- expect(tree).toEqual({
544
- '/api/available_translations.json': {
545
- translations: [expectedTranslation],
546
- },
547
- '/api/bsb/books.json': {
548
- translation: expectedTranslation,
549
- books: [
550
- {
551
- id: '1CH',
552
- name: '1 Chronicles',
553
- commonName: '1 Chronicles',
554
- title: '1 Chronicles',
555
- numberOfChapters: 1,
556
- totalNumberOfVerses: 1,
557
- order: 13,
558
- firstChapterApiLink: '/api/bsb/1_Chronicles/1.json',
559
- lastChapterApiLink: '/api/bsb/1_Chronicles/1.json',
560
- },
561
- ],
562
- },
563
- '/api/bsb/1_Chronicles/1.json': {
564
- translation: expectedTranslation,
565
- book: {
566
- id: '1CH',
567
- name: '1 Chronicles',
568
- commonName: '1 Chronicles',
569
- title: '1 Chronicles',
570
- numberOfChapters: 1,
571
- totalNumberOfVerses: 1,
572
- order: 13,
573
- firstChapterApiLink: '/api/bsb/1_Chronicles/1.json',
574
- lastChapterApiLink: '/api/bsb/1_Chronicles/1.json',
575
- },
576
- thisChapterLink: '/api/bsb/1_Chronicles/1.json',
577
- thisChapterAudioLinks: {},
578
- nextChapterApiLink: null,
579
- nextChapterAudioLinks: null,
580
- previousChapterApiLink: null,
581
- previousChapterAudioLinks: null,
582
- numberOfVerses: 1,
583
- chapter: {
584
- number: 1,
585
- content: [
586
- {
587
- type: 'heading',
588
- content: ['From Adam to Abraham'],
589
- },
590
- {
591
- type: 'line_break',
592
- },
593
- {
594
- type: 'verse',
595
- number: 1,
596
- content: ['Adam, Seth, Enosh,'],
597
- },
598
- ],
599
- footnotes: [],
600
- },
601
- },
602
- });
603
- // expect(availableTranslations).toEqual({
604
- // translations: [
605
- // expectedTranslation
606
- // ]
607
- // });
608
- });
609
- });
610
- function firstXLines(content, x) {
611
- const lines = content.split('\n');
612
- return lines.slice(0, x).join('\n');
613
- }
614
- function fileTree(outputFiles) {
615
- let result = {};
616
- for (let file of outputFiles) {
617
- result[file.path] = file.content;
618
- }
619
- return result;
620
- }
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KNOWN_AUDIO_TRANSLATIONS = void 0;
4
- exports.getAudioUrlsForChapter = getAudioUrlsForChapter;
5
- exports.capitalize = capitalize;
6
- const lodash_1 = require("lodash");
7
- const book_order_1 = require("./book-order");
8
- const openBibleUrlGenerator = (translation, reader, postfix) => {
9
- return (bookId, chapter) => {
10
- const bookOrder = (0, lodash_1.padStart)(book_order_1.bookOrderMap.get(bookId).toString(), 2, '0');
11
- const chapterStr = (0, lodash_1.padStart)(chapter.toString(), 3, '0');
12
- let link = `https://openbible.com/audio/${reader}/${translation}_${bookOrder}_${capitalize(bookId)}_${chapterStr}`;
13
- if (postfix) {
14
- link += `_${postfix}`;
15
- }
16
- link += '.mp3';
17
- return link;
18
- };
19
- };
20
- /**
21
- * A map of translation IDs to a map of reader IDs to the URL generator for the audio file.
22
- */
23
- exports.KNOWN_AUDIO_TRANSLATIONS = new Map([
24
- ['BSB', new Map([
25
- ['gilbert', openBibleUrlGenerator('BSB', 'gilbert', 'G')],
26
- ['hays', openBibleUrlGenerator('BSB', 'hays', "H")],
27
- ['souer', openBibleUrlGenerator('BSB', 'souer', null)],
28
- ])],
29
- ]);
30
- /**
31
- * Gets the audio URLs for the given translation, book, and chapter.
32
- * @param translationId The ID of the translation.
33
- * @param bookId The ID of the book.
34
- * @param chapter The number of the chapter.
35
- */
36
- function getAudioUrlsForChapter(translationId, bookId, chapter) {
37
- const translation = exports.KNOWN_AUDIO_TRANSLATIONS.get(translationId);
38
- if (!translation) {
39
- return {};
40
- }
41
- const links = {};
42
- for (let [reader, generator] of translation) {
43
- const url = generator(bookId, chapter);
44
- if (url) {
45
- links[reader] = url;
46
- }
47
- }
48
- return links;
49
- }
50
- /**
51
- * Capitalizes the first letter of the given string.
52
- * @param str The string to capitalize.
53
- */
54
- function capitalize(str) {
55
- const char = str.charAt(0);
56
- if (/[0-9]/.test(char)) {
57
- return str.charAt(0) + str.charAt(1).toUpperCase() + str.slice(2).toLowerCase();
58
- }
59
- return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
60
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=audio.spec.d.ts.map