@jjlmoya/utils-forensic-science 1.13.0 → 1.15.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.
Files changed (145) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/en.ts +3 -3
  3. package/src/category/i18n/es.ts +2 -2
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/nl.ts +1 -1
  6. package/src/category/i18n/pt.ts +1 -1
  7. package/src/category/index.ts +61 -59
  8. package/src/category/seo.astro +1 -1
  9. package/src/components/PreviewNavSidebar.astro +1 -1
  10. package/src/components/PreviewToolbar.astro +1 -1
  11. package/src/data.ts +1 -1
  12. package/src/entries.ts +70 -68
  13. package/src/env.d.ts +1 -1
  14. package/src/icons/.gitkeep +1 -0
  15. package/src/index.ts +32 -31
  16. package/src/pages/[locale]/[slug].astro +161 -159
  17. package/src/pages/[locale].astro +8 -5
  18. package/src/pages/index.astro +1 -1
  19. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  20. package/src/tests/category_seo_quality.test.ts +76 -0
  21. package/src/tests/diacritics_density.test.ts +1 -1
  22. package/src/tests/faq_count.test.ts +19 -19
  23. package/src/tests/i18n_coverage.test.ts +36 -36
  24. package/src/tests/inverted_punctuation.test.ts +1 -1
  25. package/src/tests/locale_completeness.test.ts +2 -2
  26. package/src/tests/mocks/astro_mock.js +1 -1
  27. package/src/tests/no_h1_in_components.test.ts +1 -1
  28. package/src/tests/script_density.test.ts +94 -94
  29. package/src/tests/seo_length.test.ts +46 -46
  30. package/src/tests/seo_parity.test.ts +2 -7
  31. package/src/tests/seo_translation_completeness.test.ts +68 -0
  32. package/src/tests/seo_wellformed_export.test.ts +65 -0
  33. package/src/tests/tool_validation.test.ts +2 -2
  34. package/src/tests/translation_copy.test.ts +23 -24
  35. package/src/tool/bloodstain-pattern-origin-analyzer/component.astro +9 -9
  36. package/src/tool/bloodstain-pattern-origin-analyzer/i18n/zh.ts +1 -1
  37. package/src/tool/dna-profile-match-probability-lab/bibliography.astro +14 -0
  38. package/src/tool/dna-profile-match-probability-lab/bibliography.ts +16 -0
  39. package/src/tool/dna-profile-match-probability-lab/component.astro +121 -0
  40. package/src/tool/dna-profile-match-probability-lab/controller.ts +159 -0
  41. package/src/tool/dna-profile-match-probability-lab/dna-profile-match-probability-lab.css +485 -0
  42. package/src/tool/dna-profile-match-probability-lab/dom-views.ts +93 -0
  43. package/src/tool/dna-profile-match-probability-lab/entry.ts +29 -0
  44. package/src/tool/dna-profile-match-probability-lab/evaluator.ts +19 -0
  45. package/src/tool/dna-profile-match-probability-lab/i18n/de.ts +43 -0
  46. package/src/tool/dna-profile-match-probability-lab/i18n/en.ts +196 -0
  47. package/src/tool/dna-profile-match-probability-lab/i18n/es.ts +40 -0
  48. package/src/tool/dna-profile-match-probability-lab/i18n/fr.ts +10 -0
  49. package/src/tool/dna-profile-match-probability-lab/i18n/id.ts +41 -0
  50. package/src/tool/dna-profile-match-probability-lab/i18n/it.ts +10 -0
  51. package/src/tool/dna-profile-match-probability-lab/i18n/ja.ts +40 -0
  52. package/src/tool/dna-profile-match-probability-lab/i18n/ko.ts +40 -0
  53. package/src/tool/dna-profile-match-probability-lab/i18n/nl.ts +29 -0
  54. package/src/tool/dna-profile-match-probability-lab/i18n/pl.ts +10 -0
  55. package/src/tool/dna-profile-match-probability-lab/i18n/pt.ts +41 -0
  56. package/src/tool/dna-profile-match-probability-lab/i18n/ru.ts +29 -0
  57. package/src/tool/dna-profile-match-probability-lab/i18n/sv.ts +41 -0
  58. package/src/tool/dna-profile-match-probability-lab/i18n/tr.ts +10 -0
  59. package/src/tool/dna-profile-match-probability-lab/i18n/zh.ts +29 -0
  60. package/src/tool/dna-profile-match-probability-lab/index.ts +11 -0
  61. package/src/tool/dna-profile-match-probability-lab/localize.ts +107 -0
  62. package/src/tool/dna-profile-match-probability-lab/logic.test.ts +56 -0
  63. package/src/tool/dna-profile-match-probability-lab/logic.ts +139 -0
  64. package/src/tool/dna-profile-match-probability-lab/seo.astro +15 -0
  65. package/src/tool/dna-profile-match-probability-lab/storage.ts +26 -0
  66. package/src/tool/dna-profile-match-probability-lab/ui.ts +3 -0
  67. package/src/tool/fire-pattern-origin-analyzer/component.astro +1 -1
  68. package/src/tool/fire-pattern-origin-analyzer/i18n/zh.ts +5 -1
  69. package/src/tool/fire-pattern-origin-analyzer/logic.ts +9 -2
  70. package/src/tool/fire-pattern-origin-analyzer/view-bindings.ts +8 -4
  71. package/src/tool/fire-pattern-origin-analyzer/view-model.ts +6 -2
  72. package/src/tool/forensic-age-estimator/bibliography.astro +1 -1
  73. package/src/tool/forensic-age-estimator/component.astro +1 -1
  74. package/src/tool/forensic-age-estimator/entry.ts +17 -17
  75. package/src/tool/forensic-age-estimator/i18n/de.ts +244 -244
  76. package/src/tool/forensic-age-estimator/i18n/en.ts +244 -244
  77. package/src/tool/forensic-age-estimator/i18n/es.ts +244 -244
  78. package/src/tool/forensic-age-estimator/i18n/fr.ts +244 -244
  79. package/src/tool/forensic-age-estimator/i18n/id.ts +244 -244
  80. package/src/tool/forensic-age-estimator/i18n/it.ts +244 -244
  81. package/src/tool/forensic-age-estimator/i18n/nl.ts +244 -244
  82. package/src/tool/forensic-age-estimator/i18n/pl.ts +244 -244
  83. package/src/tool/forensic-age-estimator/i18n/pt.ts +244 -244
  84. package/src/tool/forensic-age-estimator/i18n/ru.ts +244 -244
  85. package/src/tool/forensic-age-estimator/i18n/sv.ts +244 -244
  86. package/src/tool/forensic-age-estimator/i18n/tr.ts +244 -244
  87. package/src/tool/forensic-age-estimator/i18n/zh.ts +245 -245
  88. package/src/tool/forensic-age-estimator/index.ts +1 -1
  89. package/src/tool/forensic-age-estimator/seo.astro +1 -1
  90. package/src/tool/forensic-blood-test-simulator/component.astro +1 -1
  91. package/src/tool/forensic-fiber-comparison-microscope/component.astro +1 -1
  92. package/src/tool/forensic-fiber-comparison-microscope/render.ts +1 -1
  93. package/src/tool/forensic-fiber-comparison-microscope/view.ts +1 -1
  94. package/src/tool/forensic-fingerprint-minutiae-identifier/component.astro +2 -2
  95. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/ja.ts +2 -1
  96. package/src/tool/forensic-fingerprint-minutiae-identifier/i18n/zh.ts +2 -0
  97. package/src/tool/forensic-fingerprint-minutiae-identifier/renderer.ts +9 -8
  98. package/src/tool/forensic-glass-becke-line-simulator/component.astro +1 -1
  99. package/src/tool/forensic-glass-becke-line-simulator/view.ts +8 -6
  100. package/src/tool/forensic-image-authenticity-analyzer/component.astro +1 -1
  101. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -105
  102. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -105
  103. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -105
  104. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -105
  105. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +95 -90
  106. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -105
  107. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +7 -2
  108. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +4 -1
  109. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +95 -92
  110. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +95 -92
  111. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -105
  112. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +97 -92
  113. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +97 -93
  114. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +98 -93
  115. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +11 -0
  116. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +1 -1
  117. package/src/tool/forensic-sex-determinator/component.astro +3 -2
  118. package/src/tool/forensic-stature-estimator/component.astro +1 -1
  119. package/src/tool/forensic-stature-estimator/i18n/id.ts +4 -0
  120. package/src/tool/forensic-stature-estimator/i18n/nl.ts +4 -0
  121. package/src/tool/forensic-stature-estimator/i18n/ru.ts +4 -0
  122. package/src/tool/forensic-tlc-ink-simulator/component.astro +1 -1
  123. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +1 -0
  124. package/src/tool/forensic-toolmark-striation-matcher/component.astro +1 -1
  125. package/src/tool/forensic-toolmark-striation-matcher/logic.ts +1 -1
  126. package/src/tool/forensic-toolmark-striation-matcher/renderer.ts +7 -6
  127. package/src/tool/forensic-toolmark-striation-matcher/view.ts +19 -20
  128. package/src/tool/gsr-dispersion-calculator/component.astro +1 -1
  129. package/src/tool/gsr-dispersion-calculator/logic.ts +1 -1
  130. package/src/tool/time-of-death-algor-mortis-calculator/entry.ts +2 -0
  131. package/src/tool/widmark-alcohol-simulator/component.astro +1 -1
  132. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +5 -0
  133. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +2 -1
  134. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +1 -0
  135. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +4 -1
  136. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +4 -1
  137. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +5 -1
  138. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +5 -1
  139. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +5 -1
  140. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +4 -1
  141. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +5 -1
  142. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +4 -1
  143. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +4 -1
  144. package/src/tools.ts +37 -35
  145. package/src/types.ts +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-forensic-science",
3
- "version": "1.13.0",
3
+ "version": "1.15.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -54,6 +54,7 @@
54
54
  "devDependencies": {
55
55
  "@astrojs/check": "^0.9.8",
56
56
  "@types/leaflet": "^1.9.21",
57
+ "@types/three": "^0.185.4",
57
58
  "eslint": "^9.39.4",
58
59
  "eslint-plugin-astro": "^1.6.0",
59
60
  "eslint-plugin-no-comments": "^1.1.10",
@@ -39,14 +39,14 @@ export const content: CategoryLocaleContent = {
39
39
  },
40
40
  {
41
41
  type: 'paragraph',
42
- html: "Every forensic calculation involves error rates and confidence limits. A calculator should never replace a qualified expert witness or a validated laboratory protocol. Instead, these web utilities are best used to explore scenarios, explain concepts to non-specialists, and check the sensitivity of measurements before writing final reports. This helps prevent misunderstandings in the courtroom regarding scientific precision.",
42
+ html: "Every forensic calculation involves error rates and confidence limits. A calculator should never replace a qualified expert witness or a laboratory protocol documented by the relevant authority. Instead, these web utilities are best used to explore scenarios, explain concepts to non-specialists, and check the sensitivity of measurements before writing final reports.",
43
43
  },
44
44
  {
45
45
  type: 'table',
46
46
  headers: ['Appropriate Use', 'Inappropriate Use', 'Importance'],
47
47
  rows: [
48
- ["Screening case files before formal specialist examination.", "Using a calculator output as a final expert opinion.", "Forensic evidence must meet strict standards of scientific validation."],
49
- ["Explaining measurement uncertainty and ranges to investigators.", "Reporting a single exact number without explaining limitations.", "False precision can lead to incorrect decisions in judicial systems."],
48
+ ["Screening case files before formal specialist examination.", "Using a calculator output as a final expert opinion.", "Forensic evidence must meet strict scientific quality standards."],
49
+ ["Explaining measurement uncertainty and ranges to investigators.", "Reporting a single number without explaining limitations.", "False precision can lead to incorrect decisions in judicial systems."],
50
50
  ["Checking how input assumptions affect the estimated outcome.", "Hiding initial parameters or calculations from the case record.", "Transparency allows results to be audited and reproduced by others."],
51
51
  ["Determining if data quality is sufficient for calculation.", "Running formulas with poor or incomplete scale measurements.", "Weak input parameters make any mathematical reconstruction unreliable."],
52
52
  ],
@@ -39,14 +39,14 @@ export const content: CategoryLocaleContent = {
39
39
  },
40
40
  {
41
41
  type: 'paragraph',
42
- html: "Cada cálculo forense implica tasas de error y límites de confianza. Una calculadora nunca debe reemplazar a un perito cualificado o un protocolo de laboratorio validado. En su lugar, estas utilidades web se utilizan mejor para explorar escenarios, explicar conceptos a no especialistas y comprobar la sensibilidad de las mediciones antes de redactar los informes finales. Esto ayuda a evitar malentendidos en los tribunales con respecto a la precisión científica.",
42
+ html: "Cada cálculo forense implica tasas de error y límites de confianza. Una calculadora nunca debe reemplazar a un perito cualificado ni a un protocolo de laboratorio documentado. Estas utilidades sirven para explorar escenarios, explicar conceptos a no especialistas y comprobar la sensibilidad de las mediciones antes de redactar un informe.",
43
43
  },
44
44
  {
45
45
  type: 'table',
46
46
  headers: ['Uso adecuado', 'Uso inadecuado', 'Importancia'],
47
47
  rows: [
48
48
  ["Examinar expedientes de casos antes del examen formal de un especialista.", "Utilizar el resultado de una calculadora como una opinión pericial final.", "La evidencia forense debe cumplir con estrictos estándares de validación científica."],
49
- ["Explicar la incertidumbre de la medición y los rangos a los investigadores.", "Informar un único número exacto sin explicar las limitaciones.", "La falsa precisión puede conducir a decisiones incorrectas en los sistemas judiciales."],
49
+ ["Explicar la incertidumbre de la medición y los rangos a los investigadores.", "Informar un único número sin explicar las limitaciones.", "La falsa precisión puede conducir a decisiones incorrectas en los sistemas judiciales."],
50
50
  ["Comprobar cómo influyen los supuestos de entrada en el resultado estimado.", "Ocultar parámetros iniciales o cálculos del registro del caso.", "La transparencia permite que los resultados sean auditados y reproducidos por otros."],
51
51
  ["Determinar si la calidad de los datos es suficiente para el cálculo.", "Ejecutar fórmulas con mediciones de escala deficientes o incompletas.", "Los parámetros de entrada débiles hacen que cualquier reconstrucción matemática no sea confiable."],
52
52
  ],
@@ -45,7 +45,7 @@ export const content: CategoryLocaleContent = {
45
45
  type: 'table',
46
46
  headers: ['Usage approprie', 'Usage inapproprie', 'Importance'],
47
47
  rows: [
48
- ["Examiner les dossiers de cas avant un examen formel par un spécialiste.", "Utiliser le résultat d'un calculateur comme opinion d'expert finale.", "Les preuves forensiques doivent répondre à des normes strictes de validation scientifique."],
48
+ ["Examiner les dossiers de cas avant un examen formel par un spécialiste.", "Utiliser le résultat d'un calculateur comme opinion d'expert finale.", "Les preuves forensiques doivent répondre à des normes strictes de qualité scientifique."],
49
49
  ["Expliquer l'incertitude de mesure et les plages de valeurs aux enquêteurs.", "Rapporter un seul chiffre exact sans expliquer les limites.", "La fausse précision peut conduire à des décisions incorrectes dans les systèmes judiciaires."],
50
50
  ["Vérifier comment les hypothèses d'entrée affectent le résultat estimé.", "Masquer les paramètres initiaux ou les calculs du dossier de cas.", "La transparence permet d'auditer et de reproduire les résultats par d'autres."],
51
51
  ["Déterminer si la qualité des données est suffisante pour le calcul.", "Exécuter des formules avec des mesures d'échelle médiocres ou incomplètes.", "Des paramètres d'entrée faibles rendent toute reconstruction mathématique peu fiable."],
@@ -45,7 +45,7 @@ export const content: CategoryLocaleContent = {
45
45
  type: 'table',
46
46
  headers: ['Juist Gebruik', 'Onjuist Gebruik', 'Belang'],
47
47
  rows: [
48
- ["Casusdossiers screenen voorafgaand aan formeel specialistisch onderzoek.", "De uitkomst van een calculator gebruiken als definitief deskundigenoordeel.", "Forensisch bewijs moet voldoen aan strenge normen van wetenschappelijke validatie."],
48
+ ["Casusdossiers screenen voorafgaand aan formeel specialistisch onderzoek.", "De uitkomst van een calculator gebruiken als definitief deskundigenoordeel.", "Forensisch bewijs moet voldoen aan strenge normen voor wetenschappelijke kwaliteit."],
49
49
  ["Meetonzekerheid en bereiken uitleggen aan rechercheurs.", "Een enkel exact cijfer rapporteren zonder de beperkingen uit te leggen.", "Schijnprecisie kan leiden tot onjuiste beslissingen in rechtssystemen."],
50
50
  ["Controleren hoe invoeraannames de geschatte uitkomst beïnvloeden.", "Eerste parameters of berekeningen verbergen in het casusdossier.", "Transparantie maakt het mogelijk om resultaten te controleren en door anderen te reproduceren."],
51
51
  ["Bepalen of de datakwaliteit voldoende is voor de berekening.", "Formules uitvoeren met slechte of onvolledige schaalmetingen.", "Zwakke invoerparameters maken elke wiskundige reconstructie onbetrouwbaar."],
@@ -39,7 +39,7 @@ export const content: CategoryLocaleContent = {
39
39
  },
40
40
  {
41
41
  type: 'paragraph',
42
- html: "Cada cálculo forense envolve taxas de erro e limites de confiança. Uma calculadora nunca deve substituir uma testemunha pericial qualificada ou um protocolo laboratorial validado. Em vez disso, esses utilitários web são mais bem usados para explorar cenários, explicar conceitos para não especialistas e verificar a sensibilidade das medições antes de redigir os relatórios finais. Isso ajuda a evitar mal-entendidos no tribunal em relação à precisão científica.",
42
+ html: "Cada cálculo forense envolve taxas de erro e limites de confiança. Uma calculadora nunca deve substituir uma testemunha pericial qualificada ou um protocolo laboratorial documentado pela autoridade competente. Em vez disso, esses utilitários web são mais bem usados para explorar cenários, explicar conceitos para não especialistas e verificar a sensibilidade das medições antes de redigir os relatórios finais.",
43
43
  },
44
44
  {
45
45
  type: 'table',
@@ -1,63 +1,65 @@
1
- import type { ScienceCategoryEntry } from '../types';
2
- import { forensicAgeEstimator } from '../tool/forensic-age-estimator/entry';
3
- import { widmarkAlcoholSimulator } from '../tool/widmark-alcohol-simulator/entry';
4
- import { forensicSexDeterminator } from '../tool/forensic-sex-determinator/entry';
5
- import { forensicStatureEstimator } from '../tool/forensic-stature-estimator/entry';
6
- import { forensicBloodTestSimulator } from '../tool/forensic-blood-test-simulator/entry';
7
- import { forensicImageAuthenticityAnalyzer } from '../tool/forensic-image-authenticity-analyzer/entry';
8
- import { gsrDispersionCalculator } from '../tool/gsr-dispersion-calculator/entry';
9
- import { forensicTlcInkSimulator } from '../tool/forensic-tlc-ink-simulator/entry';
10
- import { forensicMicrocrystalDrugSimulator } from '../tool/forensic-microcrystal-drug-simulator/entry';
11
- import { forensicGlassBeckeLineSimulator } from '../tool/forensic-glass-becke-line-simulator/entry';
12
- import { forensicFiberComparisonMicroscope } from '../tool/forensic-fiber-comparison-microscope/entry';
13
- import { bloodstainPatternOriginAnalyzer } from '../tool/bloodstain-pattern-origin-analyzer/entry';
14
- import { forensicFingerprintMinutiaeIdentifier } from '../tool/forensic-fingerprint-minutiae-identifier/entry';
15
- import { firePatternOriginAnalyzer } from '../tool/fire-pattern-origin-analyzer/entry';
16
- import { forensicToolmarkStriationMatcher } from '../tool/forensic-toolmark-striation-matcher/entry';
1
+ import type { ScienceCategoryEntry } from '../types';
2
+ import { forensicAgeEstimator } from '../tool/forensic-age-estimator/entry';
3
+ import { widmarkAlcoholSimulator } from '../tool/widmark-alcohol-simulator/entry';
4
+ import { forensicSexDeterminator } from '../tool/forensic-sex-determinator/entry';
5
+ import { forensicStatureEstimator } from '../tool/forensic-stature-estimator/entry';
6
+ import { forensicBloodTestSimulator } from '../tool/forensic-blood-test-simulator/entry';
7
+ import { forensicImageAuthenticityAnalyzer } from '../tool/forensic-image-authenticity-analyzer/entry';
8
+ import { gsrDispersionCalculator } from '../tool/gsr-dispersion-calculator/entry';
9
+ import { forensicTlcInkSimulator } from '../tool/forensic-tlc-ink-simulator/entry';
10
+ import { forensicMicrocrystalDrugSimulator } from '../tool/forensic-microcrystal-drug-simulator/entry';
11
+ import { forensicGlassBeckeLineSimulator } from '../tool/forensic-glass-becke-line-simulator/entry';
12
+ import { forensicFiberComparisonMicroscope } from '../tool/forensic-fiber-comparison-microscope/entry';
13
+ import { bloodstainPatternOriginAnalyzer } from '../tool/bloodstain-pattern-origin-analyzer/entry';
14
+ import { forensicFingerprintMinutiaeIdentifier } from '../tool/forensic-fingerprint-minutiae-identifier/entry';
15
+ import { firePatternOriginAnalyzer } from '../tool/fire-pattern-origin-analyzer/entry';
16
+ import { forensicToolmarkStriationMatcher } from '../tool/forensic-toolmark-striation-matcher/entry';
17
17
  import { timeOfDeathAlgorMortisCalculator } from '../tool/time-of-death-algor-mortis-calculator/entry';
18
18
  import { voiceSpectrogramAnalyzer } from '../tool/voice-spectrogram-analyzer/entry';
19
-
20
- export const forensicCategory: ScienceCategoryEntry = {
21
- icon: 'mdi:fingerprint',
22
- tools: [
23
- forensicAgeEstimator,
24
- widmarkAlcoholSimulator,
25
- forensicSexDeterminator,
26
- forensicStatureEstimator,
27
- forensicBloodTestSimulator,
28
- forensicImageAuthenticityAnalyzer,
29
- gsrDispersionCalculator,
30
- forensicTlcInkSimulator,
31
- forensicMicrocrystalDrugSimulator,
32
- forensicGlassBeckeLineSimulator,
33
- forensicFiberComparisonMicroscope,
34
- bloodstainPatternOriginAnalyzer,
35
- forensicFingerprintMinutiaeIdentifier,
36
- firePatternOriginAnalyzer,
37
- forensicToolmarkStriationMatcher,
19
+ import { dnaProfileMatchProbabilityLab } from '../tool/dna-profile-match-probability-lab/entry';
20
+
21
+ export const forensicCategory: ScienceCategoryEntry = {
22
+ icon: 'mdi:fingerprint',
23
+ tools: [
24
+ forensicAgeEstimator,
25
+ widmarkAlcoholSimulator,
26
+ forensicSexDeterminator,
27
+ forensicStatureEstimator,
28
+ forensicBloodTestSimulator,
29
+ forensicImageAuthenticityAnalyzer,
30
+ gsrDispersionCalculator,
31
+ forensicTlcInkSimulator,
32
+ forensicMicrocrystalDrugSimulator,
33
+ forensicGlassBeckeLineSimulator,
34
+ forensicFiberComparisonMicroscope,
35
+ bloodstainPatternOriginAnalyzer,
36
+ forensicFingerprintMinutiaeIdentifier,
37
+ firePatternOriginAnalyzer,
38
+ forensicToolmarkStriationMatcher,
38
39
  timeOfDeathAlgorMortisCalculator,
39
- voiceSpectrogramAnalyzer
40
+ voiceSpectrogramAnalyzer,
41
+ dnaProfileMatchProbabilityLab
40
42
  ],
41
-
42
-
43
-
44
- i18n: {
45
- de: () => import('./i18n/de').then((m) => m.content),
46
- en: () => import('./i18n/en').then((m) => m.content),
47
- es: () => import('./i18n/es').then((m) => m.content),
48
- fr: () => import('./i18n/fr').then((m) => m.content),
49
- id: () => import('./i18n/id').then((m) => m.content),
50
- it: () => import('./i18n/it').then((m) => m.content),
51
- ja: () => import('./i18n/ja').then((m) => m.content),
52
- ko: () => import('./i18n/ko').then((m) => m.content),
53
- nl: () => import('./i18n/nl').then((m) => m.content),
54
- pl: () => import('./i18n/pl').then((m) => m.content),
55
- pt: () => import('./i18n/pt').then((m) => m.content),
56
- ru: () => import('./i18n/ru').then((m) => m.content),
57
- sv: () => import('./i18n/sv').then((m) => m.content),
58
- tr: () => import('./i18n/tr').then((m) => m.content),
59
- zh: () => import('./i18n/zh').then((m) => m.content)
60
- }
61
- };
62
-
63
- export const scienceCategory = forensicCategory;
43
+
44
+
45
+
46
+ i18n: {
47
+ de: () => import('./i18n/de').then((m) => m.content),
48
+ en: () => import('./i18n/en').then((m) => m.content),
49
+ es: () => import('./i18n/es').then((m) => m.content),
50
+ fr: () => import('./i18n/fr').then((m) => m.content),
51
+ id: () => import('./i18n/id').then((m) => m.content),
52
+ it: () => import('./i18n/it').then((m) => m.content),
53
+ ja: () => import('./i18n/ja').then((m) => m.content),
54
+ ko: () => import('./i18n/ko').then((m) => m.content),
55
+ nl: () => import('./i18n/nl').then((m) => m.content),
56
+ pl: () => import('./i18n/pl').then((m) => m.content),
57
+ pt: () => import('./i18n/pt').then((m) => m.content),
58
+ ru: () => import('./i18n/ru').then((m) => m.content),
59
+ sv: () => import('./i18n/sv').then((m) => m.content),
60
+ tr: () => import('./i18n/tr').then((m) => m.content),
61
+ zh: () => import('./i18n/zh').then((m) => m.content)
62
+ }
63
+ };
64
+
65
+ export const scienceCategory = forensicCategory;
@@ -12,4 +12,4 @@ const content = await forensicCategory.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -113,4 +113,4 @@ const { categoryTitle, tools = [] } = Astro.props;
113
113
  white-space: nowrap;
114
114
  }
115
115
  </style>
116
-
116
+
@@ -140,4 +140,4 @@ const otherLocales = Object.entries(localeUrls).filter(([l]) => l !== currentLoc
140
140
  box-shadow: inset -4px -2px 0 #1e293b;
141
141
  }
142
142
  </style>
143
-
143
+
package/src/data.ts CHANGED
@@ -7,4 +7,4 @@ export type {
7
7
  LocaleMap,
8
8
  ScienceToolEntry,
9
9
  ScienceCategoryEntry,
10
- } from './types';
10
+ } from './types';
package/src/entries.ts CHANGED
@@ -1,75 +1,77 @@
1
- export { forensicAgeEstimator } from './tool/forensic-age-estimator/entry';
2
- export type { ForensicAgeEstimatorUI, ForensicAgeEstimatorLocaleContent } from './tool/forensic-age-estimator/entry';
3
- export { widmarkAlcoholSimulator } from './tool/widmark-alcohol-simulator/entry';
4
- export type { WidmarkAlcoholSimulatorUI, WidmarkAlcoholSimulatorLocaleContent } from './tool/widmark-alcohol-simulator/entry';
5
- export { forensicSexDeterminator } from './tool/forensic-sex-determinator/entry';
6
- export type { SexDeterminatorUI, SexDeterminatorLocaleContent } from './tool/forensic-sex-determinator/entry';
7
- export { forensicStatureEstimator } from './tool/forensic-stature-estimator/entry';
8
- export type { StatureEstimatorUI, StatureEstimatorLocaleContent } from './tool/forensic-stature-estimator/entry';
9
- export { forensicBloodTestSimulator } from './tool/forensic-blood-test-simulator/entry';
10
- export type { BloodTestUI, BloodTestLocaleContent } from './tool/forensic-blood-test-simulator/entry';
11
- export { forensicImageAuthenticityAnalyzer } from './tool/forensic-image-authenticity-analyzer/entry';
12
- export type { ImageAuthenticityUI, ImageAuthenticityLocaleContent } from './tool/forensic-image-authenticity-analyzer/entry';
13
- export { gsrDispersionCalculator } from './tool/gsr-dispersion-calculator/entry';
14
- export type { GsrDispersionUI, GsrDispersionLocaleContent } from './tool/gsr-dispersion-calculator/entry';
15
- export { forensicTlcInkSimulator } from './tool/forensic-tlc-ink-simulator/entry';
16
- export type { TlcInkSimulatorUI, TlcInkSimulatorLocaleContent } from './tool/forensic-tlc-ink-simulator/entry';
17
- export { forensicMicrocrystalDrugSimulator } from './tool/forensic-microcrystal-drug-simulator/entry';
18
- export type { MicrocrystalDrugSimulatorUI, MicrocrystalDrugSimulatorLocaleContent } from './tool/forensic-microcrystal-drug-simulator/entry';
19
- export { forensicGlassBeckeLineSimulator } from './tool/forensic-glass-becke-line-simulator/entry';
20
- export type { GlassBeckeLineSimulatorUI, GlassBeckeLineSimulatorLocaleContent } from './tool/forensic-glass-becke-line-simulator/entry';
21
- export { forensicFiberComparisonMicroscope } from './tool/forensic-fiber-comparison-microscope/entry';
22
- export type { FiberComparisonMicroscopeUI, FiberComparisonMicroscopeLocaleContent } from './tool/forensic-fiber-comparison-microscope/entry';
23
- export { bloodstainPatternOriginAnalyzer } from './tool/bloodstain-pattern-origin-analyzer/entry';
24
- export type { BloodstainPatternUI, BloodstainPatternLocaleContent } from './tool/bloodstain-pattern-origin-analyzer/entry';
25
- export { forensicFingerprintMinutiaeIdentifier } from './tool/forensic-fingerprint-minutiae-identifier/entry';
26
- export type { FingerprintMinutiaeUI, FingerprintMinutiaeLocaleContent } from './tool/forensic-fingerprint-minutiae-identifier/entry';
27
- export { firePatternOriginAnalyzer } from './tool/fire-pattern-origin-analyzer/entry';
28
- export type { FirePatternOriginAnalyzerUI, FirePatternOriginAnalyzerLocaleContent } from './tool/fire-pattern-origin-analyzer/entry';
29
- export { forensicToolmarkStriationMatcher } from './tool/forensic-toolmark-striation-matcher/entry';
30
- export type { ToolmarkStriationMatcherUI, ToolmarkStriationMatcherLocaleContent } from './tool/forensic-toolmark-striation-matcher/entry';
31
- export { timeOfDeathAlgorMortisCalculator } from './tool/time-of-death-algor-mortis-calculator/entry';
1
+ export { forensicAgeEstimator } from './tool/forensic-age-estimator/entry';
2
+ export type { ForensicAgeEstimatorUI, ForensicAgeEstimatorLocaleContent } from './tool/forensic-age-estimator/entry';
3
+ export { widmarkAlcoholSimulator } from './tool/widmark-alcohol-simulator/entry';
4
+ export type { WidmarkAlcoholSimulatorUI, WidmarkAlcoholSimulatorLocaleContent } from './tool/widmark-alcohol-simulator/entry';
5
+ export { forensicSexDeterminator } from './tool/forensic-sex-determinator/entry';
6
+ export type { SexDeterminatorUI, SexDeterminatorLocaleContent } from './tool/forensic-sex-determinator/entry';
7
+ export { forensicStatureEstimator } from './tool/forensic-stature-estimator/entry';
8
+ export type { StatureEstimatorUI, StatureEstimatorLocaleContent } from './tool/forensic-stature-estimator/entry';
9
+ export { forensicBloodTestSimulator } from './tool/forensic-blood-test-simulator/entry';
10
+ export type { BloodTestUI, BloodTestLocaleContent } from './tool/forensic-blood-test-simulator/entry';
11
+ export { forensicImageAuthenticityAnalyzer } from './tool/forensic-image-authenticity-analyzer/entry';
12
+ export type { ImageAuthenticityUI, ImageAuthenticityLocaleContent } from './tool/forensic-image-authenticity-analyzer/entry';
13
+ export { gsrDispersionCalculator } from './tool/gsr-dispersion-calculator/entry';
14
+ export type { GsrDispersionUI, GsrDispersionLocaleContent } from './tool/gsr-dispersion-calculator/entry';
15
+ export { forensicTlcInkSimulator } from './tool/forensic-tlc-ink-simulator/entry';
16
+ export type { TlcInkSimulatorUI, TlcInkSimulatorLocaleContent } from './tool/forensic-tlc-ink-simulator/entry';
17
+ export { forensicMicrocrystalDrugSimulator } from './tool/forensic-microcrystal-drug-simulator/entry';
18
+ export type { MicrocrystalDrugSimulatorUI, MicrocrystalDrugSimulatorLocaleContent } from './tool/forensic-microcrystal-drug-simulator/entry';
19
+ export { forensicGlassBeckeLineSimulator } from './tool/forensic-glass-becke-line-simulator/entry';
20
+ export type { GlassBeckeLineSimulatorUI, GlassBeckeLineSimulatorLocaleContent } from './tool/forensic-glass-becke-line-simulator/entry';
21
+ export { forensicFiberComparisonMicroscope } from './tool/forensic-fiber-comparison-microscope/entry';
22
+ export type { FiberComparisonMicroscopeUI, FiberComparisonMicroscopeLocaleContent } from './tool/forensic-fiber-comparison-microscope/entry';
23
+ export { bloodstainPatternOriginAnalyzer } from './tool/bloodstain-pattern-origin-analyzer/entry';
24
+ export type { BloodstainPatternUI, BloodstainPatternLocaleContent } from './tool/bloodstain-pattern-origin-analyzer/entry';
25
+ export { forensicFingerprintMinutiaeIdentifier } from './tool/forensic-fingerprint-minutiae-identifier/entry';
26
+ export type { FingerprintMinutiaeUI, FingerprintMinutiaeLocaleContent } from './tool/forensic-fingerprint-minutiae-identifier/entry';
27
+ export { firePatternOriginAnalyzer } from './tool/fire-pattern-origin-analyzer/entry';
28
+ export type { FirePatternOriginAnalyzerUI, FirePatternOriginAnalyzerLocaleContent } from './tool/fire-pattern-origin-analyzer/entry';
29
+ export { forensicToolmarkStriationMatcher } from './tool/forensic-toolmark-striation-matcher/entry';
30
+ export type { ToolmarkStriationMatcherUI, ToolmarkStriationMatcherLocaleContent } from './tool/forensic-toolmark-striation-matcher/entry';
31
+ export { timeOfDeathAlgorMortisCalculator } from './tool/time-of-death-algor-mortis-calculator/entry';
32
32
  export type { TimeOfDeathAlgorMortisUI, TimeOfDeathAlgorMortisLocaleContent } from './tool/time-of-death-algor-mortis-calculator/entry';
33
33
  export { voiceSpectrogramAnalyzer } from './tool/voice-spectrogram-analyzer/entry';
34
34
  export type { VoiceSpectrogramUI, VoiceSpectrogramLocaleContent } from './tool/voice-spectrogram-analyzer/entry';
35
-
36
- import { forensicAgeEstimator } from './tool/forensic-age-estimator/entry';
37
- import { widmarkAlcoholSimulator } from './tool/widmark-alcohol-simulator/entry';
38
- import { forensicSexDeterminator } from './tool/forensic-sex-determinator/entry';
39
- import { forensicStatureEstimator } from './tool/forensic-stature-estimator/entry';
40
- import { forensicBloodTestSimulator } from './tool/forensic-blood-test-simulator/entry';
41
- import { forensicImageAuthenticityAnalyzer } from './tool/forensic-image-authenticity-analyzer/entry';
42
- import { gsrDispersionCalculator } from './tool/gsr-dispersion-calculator/entry';
43
- import { forensicTlcInkSimulator } from './tool/forensic-tlc-ink-simulator/entry';
44
- import { forensicMicrocrystalDrugSimulator } from './tool/forensic-microcrystal-drug-simulator/entry';
45
- import { forensicGlassBeckeLineSimulator } from './tool/forensic-glass-becke-line-simulator/entry';
46
- import { forensicFiberComparisonMicroscope } from './tool/forensic-fiber-comparison-microscope/entry';
47
- import { bloodstainPatternOriginAnalyzer } from './tool/bloodstain-pattern-origin-analyzer/entry';
48
- import { forensicFingerprintMinutiaeIdentifier } from './tool/forensic-fingerprint-minutiae-identifier/entry';
49
- import { firePatternOriginAnalyzer } from './tool/fire-pattern-origin-analyzer/entry';
50
- import { forensicToolmarkStriationMatcher } from './tool/forensic-toolmark-striation-matcher/entry';
35
+
36
+ import { forensicAgeEstimator } from './tool/forensic-age-estimator/entry';
37
+ import { widmarkAlcoholSimulator } from './tool/widmark-alcohol-simulator/entry';
38
+ import { forensicSexDeterminator } from './tool/forensic-sex-determinator/entry';
39
+ import { forensicStatureEstimator } from './tool/forensic-stature-estimator/entry';
40
+ import { forensicBloodTestSimulator } from './tool/forensic-blood-test-simulator/entry';
41
+ import { forensicImageAuthenticityAnalyzer } from './tool/forensic-image-authenticity-analyzer/entry';
42
+ import { gsrDispersionCalculator } from './tool/gsr-dispersion-calculator/entry';
43
+ import { forensicTlcInkSimulator } from './tool/forensic-tlc-ink-simulator/entry';
44
+ import { forensicMicrocrystalDrugSimulator } from './tool/forensic-microcrystal-drug-simulator/entry';
45
+ import { forensicGlassBeckeLineSimulator } from './tool/forensic-glass-becke-line-simulator/entry';
46
+ import { forensicFiberComparisonMicroscope } from './tool/forensic-fiber-comparison-microscope/entry';
47
+ import { bloodstainPatternOriginAnalyzer } from './tool/bloodstain-pattern-origin-analyzer/entry';
48
+ import { forensicFingerprintMinutiaeIdentifier } from './tool/forensic-fingerprint-minutiae-identifier/entry';
49
+ import { firePatternOriginAnalyzer } from './tool/fire-pattern-origin-analyzer/entry';
50
+ import { forensicToolmarkStriationMatcher } from './tool/forensic-toolmark-striation-matcher/entry';
51
51
  import { timeOfDeathAlgorMortisCalculator } from './tool/time-of-death-algor-mortis-calculator/entry';
52
52
  import { voiceSpectrogramAnalyzer } from './tool/voice-spectrogram-analyzer/entry';
53
-
54
- export const ALL_ENTRIES = [
55
- forensicAgeEstimator,
56
- widmarkAlcoholSimulator,
57
- forensicSexDeterminator,
58
- forensicStatureEstimator,
59
- forensicBloodTestSimulator,
60
- forensicImageAuthenticityAnalyzer,
61
- gsrDispersionCalculator,
62
- forensicTlcInkSimulator,
63
- forensicMicrocrystalDrugSimulator,
64
- forensicGlassBeckeLineSimulator,
65
- forensicFiberComparisonMicroscope,
66
- bloodstainPatternOriginAnalyzer,
67
- forensicFingerprintMinutiaeIdentifier,
68
- firePatternOriginAnalyzer,
69
- forensicToolmarkStriationMatcher,
53
+ import { dnaProfileMatchProbabilityLab } from './tool/dna-profile-match-probability-lab/entry';
54
+
55
+ export const ALL_ENTRIES = [
56
+ forensicAgeEstimator,
57
+ widmarkAlcoholSimulator,
58
+ forensicSexDeterminator,
59
+ forensicStatureEstimator,
60
+ forensicBloodTestSimulator,
61
+ forensicImageAuthenticityAnalyzer,
62
+ gsrDispersionCalculator,
63
+ forensicTlcInkSimulator,
64
+ forensicMicrocrystalDrugSimulator,
65
+ forensicGlassBeckeLineSimulator,
66
+ forensicFiberComparisonMicroscope,
67
+ bloodstainPatternOriginAnalyzer,
68
+ forensicFingerprintMinutiaeIdentifier,
69
+ firePatternOriginAnalyzer,
70
+ forensicToolmarkStriationMatcher,
70
71
  timeOfDeathAlgorMortisCalculator,
71
- voiceSpectrogramAnalyzer
72
+ voiceSpectrogramAnalyzer,
73
+ dnaProfileMatchProbabilityLab
72
74
  ];
73
-
74
-
75
-
75
+
76
+
77
+
package/src/env.d.ts CHANGED
@@ -2,4 +2,4 @@ declare module '*.astro' {
2
2
  const Component: (_props: Record<string, unknown>) => unknown;
3
3
  export default Component;
4
4
  }
5
-
5
+
@@ -0,0 +1 @@
1
+ This directory is reserved for local SVG icons used by astro-icon.
package/src/index.ts CHANGED
@@ -1,34 +1,35 @@
1
- export { forensicCategory, forensicCategory as templateCategory } from './category';
2
- export const ForensicCategorySEO = () => import('./category/seo.astro').then((m) => m.default);
3
- export { FORENSIC_AGE_ESTIMATOR_TOOL } from './tool/forensic-age-estimator/index';
4
- export { WIDMARK_ALCOHOL_SIMULATOR_TOOL } from './tool/widmark-alcohol-simulator/index';
5
- export { FORENSIC_SEX_DETERMINATOR_TOOL } from './tool/forensic-sex-determinator/index';
6
- export { FORENSIC_STATURE_ESTIMATOR_TOOL } from './tool/forensic-stature-estimator/index';
7
- export { FORENSIC_BLOOD_TEST_SIMULATOR_TOOL } from './tool/forensic-blood-test-simulator/index';
8
- export { FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL } from './tool/forensic-image-authenticity-analyzer/index';
9
- export { GSR_DISPERSION_CALCULATOR_TOOL } from './tool/gsr-dispersion-calculator/index';
10
- export { FORENSIC_TLC_INK_SIMULATOR_TOOL } from './tool/forensic-tlc-ink-simulator/index';
11
- export { FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL } from './tool/forensic-microcrystal-drug-simulator/index';
12
- export { FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL } from './tool/forensic-glass-becke-line-simulator/index';
13
- export { FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL } from './tool/forensic-fiber-comparison-microscope/index';
14
- export { BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/bloodstain-pattern-origin-analyzer/index';
15
- export { FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL } from './tool/forensic-fingerprint-minutiae-identifier/index';
1
+ export { forensicCategory, forensicCategory as templateCategory } from './category';
2
+ export const ForensicCategorySEO = () => import('./category/seo.astro').then((m) => m.default);
3
+ export { FORENSIC_AGE_ESTIMATOR_TOOL } from './tool/forensic-age-estimator/index';
4
+ export { WIDMARK_ALCOHOL_SIMULATOR_TOOL } from './tool/widmark-alcohol-simulator/index';
5
+ export { FORENSIC_SEX_DETERMINATOR_TOOL } from './tool/forensic-sex-determinator/index';
6
+ export { FORENSIC_STATURE_ESTIMATOR_TOOL } from './tool/forensic-stature-estimator/index';
7
+ export { FORENSIC_BLOOD_TEST_SIMULATOR_TOOL } from './tool/forensic-blood-test-simulator/index';
8
+ export { FORENSIC_IMAGE_AUTHENTICITY_ANALYZER_TOOL } from './tool/forensic-image-authenticity-analyzer/index';
9
+ export { GSR_DISPERSION_CALCULATOR_TOOL } from './tool/gsr-dispersion-calculator/index';
10
+ export { FORENSIC_TLC_INK_SIMULATOR_TOOL } from './tool/forensic-tlc-ink-simulator/index';
11
+ export { FORENSIC_MICROCRYSTAL_DRUG_SIMULATOR_TOOL } from './tool/forensic-microcrystal-drug-simulator/index';
12
+ export { FORENSIC_GLASS_BECKE_LINE_SIMULATOR_TOOL } from './tool/forensic-glass-becke-line-simulator/index';
13
+ export { FORENSIC_FIBER_COMPARISON_MICROSCOPE_TOOL } from './tool/forensic-fiber-comparison-microscope/index';
14
+ export { BLOODSTAIN_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/bloodstain-pattern-origin-analyzer/index';
15
+ export { FORENSIC_FINGERPRINT_MINUTIAE_IDENTIFIER_TOOL } from './tool/forensic-fingerprint-minutiae-identifier/index';
16
16
  export { FIRE_PATTERN_ORIGIN_ANALYZER_TOOL } from './tool/fire-pattern-origin-analyzer/index';
17
17
  export { FORENSIC_TOOLMARK_STRIATION_MATCHER_TOOL } from './tool/forensic-toolmark-striation-matcher/index';
18
18
  export { VOICE_SPECTROGRAM_ANALYZER_TOOL } from './tool/voice-spectrogram-analyzer/index';
19
-
20
- export type {
21
- KnownLocale,
22
- FAQItem,
23
- BibliographyEntry,
24
- HowToStep,
25
- ToolLocaleContent,
26
- CategoryLocaleContent,
27
- LocaleLoader,
28
- LocaleMap,
29
- ScienceToolEntry,
30
- ScienceCategoryEntry,
31
- ToolDefinition,
32
- } from './types';
33
-
34
- export { ALL_ENTRIES, ALL_TOOLS } from './tools';
19
+ export { DNA_PROFILE_MATCH_PROBABILITY_LAB_TOOL } from './tool/dna-profile-match-probability-lab/index';
20
+
21
+ export type {
22
+ KnownLocale,
23
+ FAQItem,
24
+ BibliographyEntry,
25
+ HowToStep,
26
+ ToolLocaleContent,
27
+ CategoryLocaleContent,
28
+ LocaleLoader,
29
+ LocaleMap,
30
+ ScienceToolEntry,
31
+ ScienceCategoryEntry,
32
+ ToolDefinition,
33
+ } from './types';
34
+
35
+ export { ALL_ENTRIES, ALL_TOOLS } from './tools';