@rr0/cms 0.1.16 → 0.1.17
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/README.md +20 -2
- package/dist/DefaultContentVisitor.d.ts +1 -3
- package/dist/OpenGraphCommand.js +1 -1
- package/dist/OpenGraphCommand.test.js +14 -0
- package/dist/RR0Build.d.ts +56 -0
- package/dist/RR0Build.js +254 -0
- package/dist/RR0Build.test.js +103 -0
- package/dist/RR0Context.d.ts +6 -4
- package/dist/RR0Context.js +4 -0
- package/dist/TableReplaceCommand.js +2 -1
- package/dist/anchor/AnchorReplaceCommandTest.js +23 -0
- package/dist/anchor/AnchorReplacerTest.js +60 -0
- package/dist/anchor/CaseAnchorHandler.js +1 -1
- package/dist/anchor/DataAnchorHandler.d.ts +1 -2
- package/dist/book/Book.d.ts +1 -1
- package/dist/book/BookDirectoryStep.d.ts +3 -3
- package/dist/book/BookDirectoryStep.js +2 -1
- package/dist/book/BookService.d.ts +3 -3
- package/dist/book/BookService.js +2 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/lang/LanguageReplaceCommant.test.js +17 -0
- package/dist/lang/RR0Messages.d.ts +1 -0
- package/dist/lang/RR0Messages_en.d.ts +1 -0
- package/dist/lang/RR0Messages_en.js +2 -1
- package/dist/lang/RR0Messages_fr.d.ts +1 -0
- package/dist/lang/RR0Messages_fr.js +2 -1
- package/dist/org/Cities.js +12 -20
- package/dist/org/CountryMessageList_en.js +2 -1
- package/dist/org/CountryMessageList_fr.js +2 -1
- package/dist/org/Organization.d.ts +1 -2
- package/dist/org/OrganizationFactory.d.ts +1 -2
- package/dist/org/OrganizationFactory.js +1 -1
- package/dist/org/OrganizationService.d.ts +5 -1
- package/dist/org/OrganizationService.js +5 -1
- package/dist/org/au/Australia_en.d.ts +1 -1
- package/dist/org/au/Australia_fr.d.ts +1 -1
- package/dist/org/au/region/vic/Victoria.d.ts +1 -1
- package/dist/org/au/region/vic/Victoria.js +1 -1
- package/dist/org/au/region/vic/VictoriaMessages_en.d.ts +2 -2
- package/dist/org/au/region/vic/VictoriaMessages_en.js +2 -2
- package/dist/org/au/region/vic/VictoriaMessages_fr.d.ts +2 -2
- package/dist/org/au/region/vic/VictoriaMessages_fr.js +2 -2
- package/dist/org/cn/China.d.ts +6 -0
- package/dist/org/cn/China.js +6 -0
- package/dist/org/cn/ChinaMessages.d.ts +1 -0
- package/dist/org/cn/ChinaMessages_cn.d.ts +3 -0
- package/dist/org/cn/ChinaMessages_cn.js +5 -0
- package/dist/org/cn/ChinaMessages_en.d.ts +3 -0
- package/dist/org/cn/ChinaMessages_en.js +5 -0
- package/dist/org/cn/ChinaMessages_fr.d.ts +3 -0
- package/dist/org/cn/ChinaMessages_fr.js +5 -0
- package/dist/org/cn/region/ChinaCities.d.ts +2 -0
- package/dist/org/cn/region/ChinaCities.js +4 -0
- package/dist/org/cn/region/ChinaRegion.d.ts +4 -0
- package/dist/org/cn/region/ChinaRegion.js +5 -0
- package/dist/org/cn/region/ChinaRegionCode.d.ts +3 -0
- package/dist/org/cn/region/ChinaRegionCode.js +4 -0
- package/dist/org/cn/region/ChinaRegions.d.ts +2 -0
- package/dist/org/cn/region/ChinaRegions.js +4 -0
- package/dist/org/cn/region/n/NorthChina.d.ts +2 -0
- package/dist/org/cn/region/n/NorthChina.js +4 -0
- package/dist/org/cn/region/n/NorthChinaDepartmentCode.d.ts +3 -0
- package/dist/org/cn/region/n/NorthChinaDepartmentCode.js +4 -0
- package/dist/org/cn/region/n/NorthChinaMessages_cn.d.ts +6 -0
- package/dist/org/cn/region/n/NorthChinaMessages_cn.js +6 -0
- package/dist/org/cn/region/n/NorthChinaMessages_en.d.ts +6 -0
- package/dist/org/cn/region/n/NorthChinaMessages_en.js +6 -0
- package/dist/org/cn/region/n/NorthChinaMessages_fr.d.ts +6 -0
- package/dist/org/cn/region/n/NorthChinaMessages_fr.js +6 -0
- package/dist/org/cn/region/n/ji/Hebei.d.ts +2 -0
- package/dist/org/cn/region/n/ji/Hebei.js +5 -0
- package/dist/org/cn/region/n/ji/HebeiCities.d.ts +2 -0
- package/dist/org/cn/region/n/ji/HebeiCities.js +4 -0
- package/dist/org/cn/region/n/ji/HebeiCityCode.d.ts +3 -0
- package/dist/org/cn/region/n/ji/HebeiCityCode.js +4 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_cn.d.ts +4 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_cn.js +6 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_en.d.ts +4 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_en.js +6 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_fr.d.ts +4 -0
- package/dist/org/cn/region/n/ji/HebeiMessages_fr.js +6 -0
- package/dist/org/cn/region/n/ji/Tianjin/Tianjin.d.ts +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/Tianjin.js +5 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_cn.d.ts +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_cn.js +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_en.d.ts +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_en.js +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_fr.d.ts +2 -0
- package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_fr.js +3 -0
- package/dist/org/country/CountryMessages.test.d.ts +1 -0
- package/dist/org/country/CountryMessages.test.js +20 -0
- package/dist/org/country/CountryService.test.d.ts +1 -0
- package/dist/org/country/CountryService.test.js +11 -0
- package/dist/org/country/region/RegionMessages.test.d.ts +1 -0
- package/dist/org/country/region/RegionMessages.test.js +17 -0
- package/dist/org/country/region/RegionService.test.d.ts +1 -0
- package/dist/org/country/region/RegionService.test.js +13 -0
- package/dist/org/country/region/department/DeparmentMessages.test.d.ts +1 -0
- package/dist/org/country/region/department/DeparmentMessages.test.js +22 -0
- package/dist/org/country/region/department/DepartmentService.test.d.ts +1 -0
- package/dist/org/country/region/department/DepartmentService.test.js +13 -0
- package/dist/org/country/region/department/city/CityMessages.test.d.ts +1 -0
- package/dist/org/country/region/department/city/CityMessages.test.js +34 -0
- package/dist/org/country/region/department/city/CityService.test.d.ts +1 -0
- package/dist/org/country/region/department/city/CityService.test.js +19 -0
- package/dist/org/do/DominicanRepublicMessages.d.ts +1 -1
- package/dist/org/do/DominicanRepublic_en.d.ts +2 -2
- package/dist/org/do/DominicanRepublic_fr.d.ts +2 -2
- package/dist/org/eu/fr/FranceMessages.test.d.ts +1 -0
- package/dist/org/eu/fr/FranceMessages.test.js +11 -0
- package/dist/org/eu/fr/cnes/geipan/geipan/GeipanDatasource.test.d.ts +1 -0
- package/dist/org/eu/fr/cnes/geipan/geipan/GeipanDatasource.test.js +30 -0
- package/dist/org/us/region/UsaCountyCode.d.ts +7 -1
- package/dist/org/us/region/UsaCountyCode.js +7 -1
- package/dist/org/us/region/mn/MinnesotaCities.js +2 -2
- package/dist/org/us/region/mn/MinnesotaCounties.js +2 -2
- package/dist/org/us/region/mn/Minnesota_en.d.ts +2 -2
- package/dist/org/us/region/mn/Minnesota_en.js +2 -2
- package/dist/org/us/region/mn/Minnesota_fr.d.ts +2 -2
- package/dist/org/us/region/mn/Minnesota_fr.js +2 -2
- package/dist/org/us/region/mn/{kalamazoo/Kalamazoo.d.ts → hennepin/Hennepin.d.ts} +1 -1
- package/dist/org/us/region/mn/{kalamazoo/Kalamazoo.js → hennepin/Hennepin.js} +1 -1
- package/dist/org/us/region/mn/{kalamazoo/KalamazooCities.d.ts → hennepin/HennepinCities.d.ts} +1 -1
- package/dist/org/us/region/mn/hennepin/HennepinCities.js +4 -0
- package/dist/org/us/region/mn/hennepin/HennepinCityCode.d.ts +3 -0
- package/dist/org/us/region/mn/hennepin/HennepinCityCode.js +4 -0
- package/dist/org/us/region/mn/hennepin/HennepinMessages_en.d.ts +4 -0
- package/dist/org/us/region/mn/hennepin/HennepinMessages_en.js +6 -0
- package/dist/org/us/region/mn/hennepin/HennepinMessages_fr.d.ts +4 -0
- package/dist/org/us/region/mn/hennepin/HennepinMessages_fr.js +6 -0
- package/dist/org/us/region/mn/hennepin/Minneapolis/Minneapolis.d.ts +1 -0
- package/dist/org/us/region/mn/hennepin/Minneapolis/Minneapolis.js +5 -0
- package/dist/org/us/region/mn/hennepin/Minneapolis/MinneapolisMessages.d.ts +2 -0
- package/dist/org/us/region/mn/hennepin/Minneapolis/MinneapolisMessages.js +2 -0
- package/dist/org/us/region/mo/MissouriCities.js +2 -2
- package/dist/org/us/region/mo/MissouriCounties.js +2 -2
- package/dist/org/us/region/mo/Missouri_en.d.ts +2 -2
- package/dist/org/us/region/mo/Missouri_en.js +2 -2
- package/dist/org/us/region/mo/Missouri_fr.d.ts +2 -2
- package/dist/org/us/region/mo/Missouri_fr.js +2 -2
- package/dist/org/us/region/{mn/kalamazoo/galesburg/Galesburg.d.ts → mo/pike/Louisiana/Louisiana.d.ts} +1 -1
- package/dist/org/us/region/mo/pike/Louisiana/Louisiana.js +5 -0
- package/dist/org/us/region/{mn/kalamazoo/galesburg/GalesburgMessages.d.ts → mo/pike/Louisiana/LouisianaMessages.d.ts} +1 -1
- package/dist/org/us/region/{ms/kalamazoo/galesburg/GalesburgMessages.js → mo/pike/Louisiana/LouisianaMessages.js} +1 -1
- package/dist/org/us/region/mo/{kalamazoo/Kalamazoo.d.ts → pike/Pike.d.ts} +1 -1
- package/dist/org/us/region/mo/{kalamazoo/Kalamazoo.js → pike/Pike.js} +1 -1
- package/dist/org/us/region/mo/{kalamazoo/KalamazooCities.d.ts → pike/PikeCities.d.ts} +1 -1
- package/dist/org/us/region/mo/pike/PikeCities.js +4 -0
- package/dist/org/us/region/mo/pike/PikeCityCode.d.ts +3 -0
- package/dist/org/us/region/mo/pike/PikeCityCode.js +4 -0
- package/dist/org/us/region/mo/pike/PikeMessages_en.d.ts +4 -0
- package/dist/org/us/region/mo/pike/PikeMessages_en.js +6 -0
- package/dist/org/us/region/mo/pike/PikeMessages_fr.d.ts +4 -0
- package/dist/org/us/region/mo/pike/PikeMessages_fr.js +6 -0
- package/dist/org/us/region/ms/MississippiCities.js +2 -2
- package/dist/org/us/region/ms/MississippiCounties.js +2 -2
- package/dist/org/us/region/ms/Mississippi_en.d.ts +2 -2
- package/dist/org/us/region/ms/Mississippi_en.js +2 -2
- package/dist/org/us/region/ms/Mississippi_fr.d.ts +2 -2
- package/dist/org/us/region/ms/Mississippi_fr.js +2 -2
- package/dist/org/us/region/ms/{kalamazoo/Kalamazoo.d.ts → hinds/Hinds.d.ts} +1 -1
- package/dist/org/us/region/ms/{kalamazoo/Kalamazoo.js → hinds/Hinds.js} +1 -1
- package/dist/org/us/region/ms/{kalamazoo/KalamazooCities.d.ts → hinds/HindsCities.d.ts} +1 -1
- package/dist/org/us/region/ms/hinds/HindsCities.js +4 -0
- package/dist/org/us/region/ms/hinds/HindsCityCode.d.ts +3 -0
- package/dist/org/us/region/ms/hinds/HindsCityCode.js +4 -0
- package/dist/org/us/region/ms/hinds/HindsMessages_en.d.ts +4 -0
- package/dist/org/us/region/ms/hinds/HindsMessages_en.js +6 -0
- package/dist/org/us/region/ms/hinds/HindsMessages_fr.d.ts +4 -0
- package/dist/org/us/region/ms/hinds/HindsMessages_fr.js +6 -0
- package/dist/org/us/region/ms/hinds/Jackson/Jackson.d.ts +1 -0
- package/dist/org/us/region/ms/hinds/Jackson/Jackson.js +5 -0
- package/dist/org/us/region/ms/{kalamazoo/galesburg/GalesburgMessages.d.ts → hinds/Jackson/JacksonMessages.d.ts} +1 -1
- package/dist/org/us/region/ms/hinds/Jackson/JacksonMessages.js +2 -0
- package/dist/org/us/region/mt/MontanaCities.js +2 -2
- package/dist/org/us/region/mt/MontanaCounties.js +2 -2
- package/dist/org/us/region/mt/Montana_en.d.ts +2 -2
- package/dist/org/us/region/mt/Montana_en.js +2 -2
- package/dist/org/us/region/mt/Montana_fr.d.ts +2 -2
- package/dist/org/us/region/mt/Montana_fr.js +2 -2
- package/dist/org/us/region/mt/{kalamazoo/Kalamazoo.d.ts → cascade/Cascade.d.ts} +1 -1
- package/dist/org/us/region/mt/{kalamazoo/Kalamazoo.js → cascade/Cascade.js} +1 -1
- package/dist/org/us/region/mt/{kalamazoo/KalamazooCities.d.ts → cascade/CascadeCities.d.ts} +1 -1
- package/dist/org/us/region/mt/cascade/CascadeCities.js +4 -0
- package/dist/org/us/region/mt/cascade/CascadeCityCode.d.ts +3 -0
- package/dist/org/us/region/mt/cascade/CascadeCityCode.js +4 -0
- package/dist/org/us/region/mt/cascade/CascadeMessages_en.d.ts +4 -0
- package/dist/org/us/region/mt/cascade/CascadeMessages_en.js +6 -0
- package/dist/org/us/region/mt/cascade/CascadeMessages_fr.d.ts +4 -0
- package/dist/org/us/region/mt/cascade/CascadeMessages_fr.js +6 -0
- package/dist/org/us/region/mt/cascade/GreatFalls/GreatFalls.d.ts +1 -0
- package/dist/org/us/region/mt/cascade/GreatFalls/GreatFalls.js +5 -0
- package/dist/org/us/region/mt/{kalamazoo/galesburg/GalesburgMessages.d.ts → cascade/GreatFalls/GreatFallsMessages.d.ts} +1 -1
- package/dist/org/us/region/mt/cascade/GreatFalls/GreatFallsMessages.js +2 -0
- package/dist/org/us/region/nh/NewHampshireCities.js +2 -2
- package/dist/org/us/region/nh/NewHampshireCounties.js +2 -2
- package/dist/org/us/region/nh/NewHampshire_en.d.ts +2 -2
- package/dist/org/us/region/nh/NewHampshire_en.js +2 -2
- package/dist/org/us/region/nh/NewHampshire_fr.d.ts +2 -2
- package/dist/org/us/region/nh/NewHampshire_fr.js +2 -2
- package/dist/org/us/region/nh/rockingham/Portsmouth/Portsmouth.d.ts +1 -0
- package/dist/org/us/region/nh/rockingham/Portsmouth/Portsmouth.js +5 -0
- package/dist/org/us/region/nh/rockingham/Portsmouth/PortsmouthMessages.d.ts +2 -0
- package/dist/org/us/region/nh/rockingham/Portsmouth/PortsmouthMessages.js +2 -0
- package/dist/org/us/region/nh/rockingham/Rockingham.d.ts +2 -0
- package/dist/org/us/region/nh/{kalamazoo/Kalamazoo.js → rockingham/Rockingham.js} +1 -1
- package/dist/org/us/region/nh/rockingham/RockinghamCities.d.ts +2 -0
- package/dist/org/us/region/nh/rockingham/RockinghamCities.js +4 -0
- package/dist/org/us/region/nh/rockingham/RockinghamCityCode.d.ts +3 -0
- package/dist/org/us/region/nh/rockingham/RockinghamCityCode.js +4 -0
- package/dist/org/us/region/nh/rockingham/RockinghamMessages_en.d.ts +4 -0
- package/dist/org/us/region/nh/rockingham/RockinghamMessages_en.js +6 -0
- package/dist/org/us/region/nh/rockingham/RockinghamMessages_fr.d.ts +4 -0
- package/dist/org/us/region/nh/rockingham/RockinghamMessages_fr.js +6 -0
- package/dist/org/us/region/nv/NevadaCities.js +2 -2
- package/dist/org/us/region/nv/NevadaCounties.js +2 -2
- package/dist/org/us/region/nv/Nevada_en.d.ts +2 -2
- package/dist/org/us/region/nv/Nevada_en.js +2 -2
- package/dist/org/us/region/nv/Nevada_fr.d.ts +2 -2
- package/dist/org/us/region/nv/Nevada_fr.js +2 -2
- package/dist/org/us/region/nv/clark/Clark.d.ts +2 -0
- package/dist/org/us/region/nv/{kalamazoo/Kalamazoo.js → clark/Clark.js} +1 -1
- package/dist/org/us/region/nv/clark/ClarkCities.d.ts +2 -0
- package/dist/org/us/region/nv/clark/ClarkCities.js +4 -0
- package/dist/org/us/region/nv/clark/ClarkCityCode.d.ts +3 -0
- package/dist/org/us/region/nv/clark/ClarkCityCode.js +4 -0
- package/dist/org/us/region/nv/clark/ClarkMessages_en.d.ts +4 -0
- package/dist/org/us/region/nv/clark/ClarkMessages_en.js +6 -0
- package/dist/org/us/region/nv/clark/ClarkMessages_fr.d.ts +4 -0
- package/dist/org/us/region/nv/clark/ClarkMessages_fr.js +6 -0
- package/dist/org/us/region/nv/clark/LasVegas/LasVegas.d.ts +1 -0
- package/dist/org/us/region/nv/clark/LasVegas/LasVegas.js +5 -0
- package/dist/org/us/region/{mo/kalamazoo/galesburg/GalesburgMessages.d.ts → nv/clark/LasVegas/LasVegasMessages.d.ts} +1 -1
- package/dist/org/us/region/nv/clark/LasVegas/LasVegasMessages.js +2 -0
- package/dist/people/People.d.ts +1 -2
- package/dist/people/People.test.d.ts +1 -0
- package/dist/people/People.test.js +34 -0
- package/dist/people/PeopleDirectoryStep.d.ts +2 -2
- package/dist/people/PeopleDirectoryStepFactory.d.ts +27 -14
- package/dist/people/PeopleDirectoryStepFactory.js +66 -44
- package/dist/people/PeopleFactory.d.ts +1 -2
- package/dist/people/PeopleFactory.js +1 -1
- package/dist/people/PeopleFactory.test.d.ts +1 -0
- package/dist/people/PeopleFactory.test.js +81 -0
- package/dist/people/PeopleRegexReplaceCommand.test.d.ts +1 -0
- package/dist/people/PeopleRegexReplaceCommand.test.js +17 -0
- package/dist/people/PeopleReplacer.test.d.ts +1 -0
- package/dist/people/PeopleReplacer.test.js +58 -0
- package/dist/people/PeopleService.d.ts +1 -1
- package/dist/people/PeopleService.js +1 -1
- package/dist/people/author/AuthorReplaceCommandTest.d.ts +1 -0
- package/dist/people/author/AuthorReplaceCommandTest.js +49 -0
- package/dist/place/Place.d.ts +1 -2
- package/dist/place/PlaceReplacer.test.d.ts +1 -0
- package/dist/place/PlaceReplacer.test.js +91 -0
- package/dist/place/PlaceService.js +2 -2
- package/dist/place/PlaceService.test.d.ts +1 -0
- package/dist/place/PlaceService.test.js +28 -0
- package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.d.ts +2 -3
- package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.js +0 -4
- package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.test.d.ts +1 -0
- package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.test.js +34 -0
- package/dist/science/crypto/ufo/enquete/dossier/CaseFactory.d.ts +1 -2
- package/dist/science/crypto/ufo/enquete/dossier/CaseFactory.js +1 -1
- package/dist/science/crypto/ufo/enquete/dossier/CaseService.d.ts +1 -1
- package/dist/science/crypto/ufo/enquete/dossier/CaseService.js +1 -1
- package/dist/search/SearchIndexStep.js +2 -2
- package/dist/search/SearchVisitor.js +1 -1
- package/dist/source/PersistentSourceRegistry.d.ts +2 -2
- package/dist/source/PersistentSourceRegistry.js +8 -3
- package/dist/source/SourceFactory.d.ts +2 -2
- package/dist/source/SourceFactory.js +1 -1
- package/dist/source/SourceIndexStep.js +2 -2
- package/dist/source/SourceRegistry.d.ts +2 -2
- package/dist/source/SourceRenderer.d.ts +1 -1
- package/dist/source/SourceRenderer.js +1 -1
- package/dist/source/index.d.ts +0 -3
- package/dist/source/index.js +0 -3
- package/dist/tech/info/soft/API.d.ts +1 -1
- package/dist/tech/info/soft/APIFactory.d.ts +1 -2
- package/dist/tech/info/soft/APIFactory.js +1 -1
- package/dist/tech/info/soft/proj/impl/lang/CodeReplacerTest.d.ts +1 -0
- package/dist/tech/info/soft/proj/impl/lang/CodeReplacerTest.js +50 -0
- package/dist/test/RR0TestUtil.d.ts +21 -0
- package/dist/test/RR0TestUtil.js +72 -0
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.js +1 -0
- package/dist/time/EventRenderer.d.ts +3 -3
- package/dist/time/EventRenderer.js +1 -1
- package/dist/time/EventReplacerFactory.d.ts +1 -2
- package/dist/time/Time.js +1 -1
- package/dist/time/Time.test.d.ts +1 -0
- package/dist/time/Time.test.js +48 -0
- package/dist/time/TimeEventRenderer.test.d.ts +1 -0
- package/dist/time/TimeEventRenderer.test.js +56 -0
- package/dist/time/TimeService.d.ts +1 -2
- package/dist/time/TimeService.js +1 -1
- package/dist/time/TimeTagReplaceCommand.test.d.ts +1 -0
- package/dist/time/TimeTagReplaceCommand.test.js +17 -0
- package/dist/time/TimeTestUtil.d.ts +1 -1
- package/dist/time/TimeTestUtil.js +2 -2
- package/dist/time/TimeUrlBuilder.test.d.ts +1 -0
- package/dist/time/TimeUrlBuilder.test.js +46 -0
- package/dist/time/TitleReplaceCommand.test.d.ts +1 -0
- package/dist/time/TitleReplaceCommand.test.js +44 -0
- package/dist/time/datasource/ChronologyReplacer.test.d.ts +1 -0
- package/dist/time/datasource/ChronologyReplacer.test.js +29 -0
- package/dist/time/datasource/CsvMapper.test.d.ts +1 -0
- package/dist/time/datasource/CsvMapper.test.js +50 -0
- package/dist/time/datasource/DatasourceTestCase.d.ts +1 -1
- package/dist/time/datasource/DatasourceTestCase.js +3 -3
- package/dist/time/datasource/FileSource.d.ts +2 -1
- package/dist/time/datasource/FileSource.js +1 -1
- package/dist/time/datasource/JsonMapper.test.d.ts +1 -0
- package/dist/time/datasource/JsonMapper.test.js +23 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCaseSummaryRR0Mapper.test.d.ts +1 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCaseSummaryRR0Mapper.test.js +72 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCsv.test.d.ts +1 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceCsv.test.js +44 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceDatasource.test.d.ts +1 -0
- package/dist/time/datasource/baseovnifrance/BaseOvniFranceDatasource.test.js +30 -0
- package/dist/time/datasource/fufora/FuforaDatasource.test.d.ts +1 -0
- package/dist/time/datasource/fufora/FuforaDatasource.test.js +30 -0
- package/dist/time/datasource/nuforc/NuforcDatasource.test.d.ts +1 -0
- package/dist/time/datasource/nuforc/NuforcDatasource.test.js +30 -0
- package/dist/time/datasource/nuforc/NuforcRR0Mapper.test.d.ts +1 -0
- package/dist/time/datasource/nuforc/NuforcRR0Mapper.test.js +110 -0
- package/dist/time/datasource/rr0/RR0CaseSummary.d.ts +1 -2
- package/dist/time/datasource/rr0/RR0Datasource.test.d.ts +19 -0
- package/dist/time/datasource/rr0/RR0Datasource.test.js +82 -0
- package/dist/time/datasource/rr0/RR0HttpDatasource.d.ts +1 -1
- package/dist/time/datasource/sceau/SceauDatasource.test.d.ts +17 -0
- package/dist/time/datasource/sceau/SceauDatasource.test.js +84 -0
- package/dist/time/datasource/ufo-search/UfoSearchCaseRR0Mapper.js +1 -1
- package/dist/time/datasource/ufo-search/UfoSearchDatasource.test.d.ts +1 -0
- package/dist/time/datasource/ufo-search/UfoSearchDatasource.test.js +30 -0
- package/dist/time/datasource/ufo-search/UfoSearchFileDatasource.js +2 -2
- package/dist/time/datasource/urecat/UrecatDatasource.test.d.ts +1 -0
- package/dist/time/datasource/urecat/UrecatDatasource.test.js +56 -0
- package/dist/time/datasource/urecat/UrecatHttpDatasource.js +1 -1
- package/dist/time/html/TimeRenderer.js +1 -1
- package/dist/time/html/TimeReplacer.test.d.ts +1 -0
- package/dist/time/html/TimeReplacer.test.js +225 -0
- package/dist/time/text/RelativeTimeTextBuilder.js +53 -102
- package/dist/time/text/RelativeTimeTextBuilder.test.d.ts +1 -0
- package/dist/time/text/RelativeTimeTextBuilder.test.js +125 -0
- package/dist/time/text/TimeTextBuilder.d.ts +4 -5
- package/dist/time/text/TimeTextBuilder.js +8 -21
- package/dist/time/text/TimeTextBuilder.test.d.ts +1 -0
- package/dist/time/text/TimeTextBuilder.test.js +63 -0
- package/dist/util/cli/CLI.test.d.ts +1 -0
- package/dist/util/cli/CLI.test.js +13 -0
- package/dist/util/html/HtmlTable.test.d.ts +1 -0
- package/dist/util/html/HtmlTable.test.js +11 -0
- package/dist/util/string/StringUtil.test.d.ts +1 -0
- package/dist/util/string/StringUtil.test.js +22 -0
- package/dist/util/url/UrlUtil.test.d.ts +1 -0
- package/dist/util/url/UrlUtil.test.js +14 -0
- package/package.json +11 -6
- package/dist/build.js +0 -299
- package/dist/data/AbstractDataFactory.d.ts +0 -16
- package/dist/data/AbstractDataFactory.js +0 -60
- package/dist/data/AbstractDataService.d.ts +0 -12
- package/dist/data/AbstractDataService.js +0 -13
- package/dist/data/AllDataService.d.ts +0 -16
- package/dist/data/AllDataService.js +0 -54
- package/dist/data/RR0Data.d.ts +0 -81
- package/dist/data/RR0DataFactory.d.ts +0 -7
- package/dist/data/TypedDataFactory.d.ts +0 -14
- package/dist/data/TypedDataFactory.js +0 -29
- package/dist/data/index.d.ts +0 -6
- package/dist/data/index.js +0 -6
- package/dist/event/RR0Event.d.ts +0 -7
- package/dist/event/RR0EventFactory.d.ts +0 -7
- package/dist/event/RR0EventFactory.js +0 -21
- package/dist/event/index.d.ts +0 -2
- package/dist/event/index.js +0 -2
- package/dist/org/us/region/mn/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/mn/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/mn/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/mn/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/mn/kalamazoo/galesburg/GalesburgMessages.js +0 -2
- package/dist/org/us/region/mo/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/mo/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/mo/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/mo/kalamazoo/galesburg/Galesburg.d.ts +0 -1
- package/dist/org/us/region/mo/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/mo/kalamazoo/galesburg/GalesburgMessages.js +0 -2
- package/dist/org/us/region/ms/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/ms/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/ms/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/ms/kalamazoo/galesburg/Galesburg.d.ts +0 -1
- package/dist/org/us/region/ms/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/mt/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/mt/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/mt/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/mt/kalamazoo/galesburg/Galesburg.d.ts +0 -1
- package/dist/org/us/region/mt/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/mt/kalamazoo/galesburg/GalesburgMessages.js +0 -2
- package/dist/org/us/region/nh/kalamazoo/Kalamazoo.d.ts +0 -2
- package/dist/org/us/region/nh/kalamazoo/KalamazooCities.d.ts +0 -2
- package/dist/org/us/region/nh/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/nh/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/nh/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/nh/kalamazoo/galesburg/Galesburg.d.ts +0 -1
- package/dist/org/us/region/nh/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/nh/kalamazoo/galesburg/GalesburgMessages.d.ts +0 -2
- package/dist/org/us/region/nh/kalamazoo/galesburg/GalesburgMessages.js +0 -2
- package/dist/org/us/region/nv/kalamazoo/Kalamazoo.d.ts +0 -2
- package/dist/org/us/region/nv/kalamazoo/KalamazooCities.d.ts +0 -2
- package/dist/org/us/region/nv/kalamazoo/KalamazooCities.js +0 -4
- package/dist/org/us/region/nv/kalamazoo/KalamazooCityCode.d.ts +0 -3
- package/dist/org/us/region/nv/kalamazoo/KalamazooCityCode.js +0 -4
- package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_en.d.ts +0 -4
- package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_en.js +0 -6
- package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
- package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_fr.js +0 -6
- package/dist/org/us/region/nv/kalamazoo/galesburg/Galesburg.d.ts +0 -1
- package/dist/org/us/region/nv/kalamazoo/galesburg/Galesburg.js +0 -5
- package/dist/org/us/region/nv/kalamazoo/galesburg/GalesburgMessages.d.ts +0 -2
- package/dist/org/us/region/nv/kalamazoo/galesburg/GalesburgMessages.js +0 -2
- package/dist/source/Article.d.ts +0 -4
- package/dist/source/ArticleFactory.d.ts +0 -7
- package/dist/source/ArticleFactory.js +0 -11
- package/dist/source/Source.d.ts +0 -45
- package/tsconfig.json +0 -23
- package/tsconfig.prod.json +0 -10
- /package/dist/{build.d.ts → OpenGraphCommand.test.d.ts} +0 -0
- /package/dist/{data/RR0Data.js → RR0Build.test.d.ts} +0 -0
- /package/dist/{data/RR0DataFactory.js → anchor/AnchorReplaceCommandTest.d.ts} +0 -0
- /package/dist/{event/RR0Event.js → anchor/AnchorReplacerTest.d.ts} +0 -0
- /package/dist/{source/Article.js → lang/LanguageReplaceCommant.test.d.ts} +0 -0
- /package/dist/{source/Source.js → org/cn/ChinaMessages.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Time } from "./Time.js";
|
|
2
|
+
import { TimeContext } from "@rr0/time";
|
|
3
|
+
import { RR0ContextImpl } from "../RR0Context.js";
|
|
4
|
+
import { describe, expect, test } from "@javarome/testscript";
|
|
5
|
+
import { rr0TestUtil } from "../test/index.js";
|
|
6
|
+
import { FileContents } from "@javarome/fileutil";
|
|
7
|
+
describe("Time", () => {
|
|
8
|
+
test("parse", () => {
|
|
9
|
+
const exec = Time.parseFileName("time/-0/0/1/1/index.html");
|
|
10
|
+
let pos = 0;
|
|
11
|
+
expect(exec[++pos]).toBe("-");
|
|
12
|
+
expect(exec[++pos]).toBe("0");
|
|
13
|
+
expect(exec[++pos]).toBe("0");
|
|
14
|
+
expect(exec[++pos]).toBe("1");
|
|
15
|
+
expect(exec[++pos]).toBe("1");
|
|
16
|
+
expect(exec[++pos]).toBeUndefined();
|
|
17
|
+
expect(exec[++pos]).toBeUndefined();
|
|
18
|
+
expect(exec[++pos]).toBe("index.html");
|
|
19
|
+
});
|
|
20
|
+
describe("contextFromFile", () => {
|
|
21
|
+
const config = rr0TestUtil.config;
|
|
22
|
+
const timeContext = new TimeContext();
|
|
23
|
+
const context = new RR0ContextImpl("fr", timeContext, config);
|
|
24
|
+
test("recognize year before 0 AD", () => {
|
|
25
|
+
context.file = new FileContents("time/-0/0/1/1/index.html", "utf-8", "", new Date("2012-08-12"), { lang: "fr", variants: [] });
|
|
26
|
+
const newTimeContext = Time.contextFromFileName(context);
|
|
27
|
+
expect(newTimeContext.getYear()).toBe(-11);
|
|
28
|
+
});
|
|
29
|
+
test("recognize year after 0 AD", () => {
|
|
30
|
+
context.file = new FileContents("time/1/9/7/2/index.html", "utf-8", "", new Date("2012-08-12"), { lang: "fr", variants: [] });
|
|
31
|
+
const newTimeContext = Time.contextFromFileName(context);
|
|
32
|
+
expect(newTimeContext.getYear()).toBe(1972);
|
|
33
|
+
});
|
|
34
|
+
test("recognize month", () => {
|
|
35
|
+
context.file = new FileContents("time/1/9/7/2/08/index.html", "utf-8", "", new Date("2012-08-12"), { lang: "fr", variants: [] });
|
|
36
|
+
const newTimeContext = Time.contextFromFileName(context);
|
|
37
|
+
expect(newTimeContext.getYear()).toBe(1972);
|
|
38
|
+
expect(newTimeContext.getMonth()).toBe(8);
|
|
39
|
+
});
|
|
40
|
+
test("recognize day", () => {
|
|
41
|
+
context.file = new FileContents("time/1/9/7/2/08/12/index.html", "utf-8", "", new Date("2012-08-12"), { lang: "fr", variants: [] });
|
|
42
|
+
const newTimeContext = Time.contextFromFileName(context);
|
|
43
|
+
expect(newTimeContext.getYear()).toBe(1972);
|
|
44
|
+
expect(newTimeContext.getMonth()).toBe(8);
|
|
45
|
+
expect(newTimeContext.getDayOfMonth()).toBe(12);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, expect, test } from "@javarome/testscript";
|
|
2
|
+
import { CaseSummaryRenderer } from "./CaseSummaryRenderer.js";
|
|
3
|
+
import { rr0TestUtil } from "../test/index.js";
|
|
4
|
+
import { Place } from "../place/index.js";
|
|
5
|
+
import { franceCity } from "../org/eu/fr/region/FranceCity.js";
|
|
6
|
+
import { HttpSource } from "./datasource/index.js";
|
|
7
|
+
import { TimeContext } from "@rr0/time";
|
|
8
|
+
import { SourceFactory, SourceRenderer } from "../source/index.js";
|
|
9
|
+
import { NoteFileCounter, NoteRenderer } from "../note/index.js";
|
|
10
|
+
import { HautsDeSeineCityCode } from "../org/eu/fr/region/idf/92/HautsDeSeineCityCode.js";
|
|
11
|
+
import { AllDataService } from "@rr0/data";
|
|
12
|
+
describe("TimeEventRenderer", () => {
|
|
13
|
+
const dataService = new AllDataService([]);
|
|
14
|
+
const baseUrl = "https://rr0.org";
|
|
15
|
+
const http = new HttpSource();
|
|
16
|
+
const sourceFactory = new SourceFactory(dataService, http, baseUrl, rr0TestUtil.intlOptions);
|
|
17
|
+
const renderer = new CaseSummaryRenderer(new NoteRenderer(new NoteFileCounter()), sourceFactory, new SourceRenderer(rr0TestUtil.time.timeTextBuilder), rr0TestUtil.time.timeElementFactory);
|
|
18
|
+
test("render event", async () => {
|
|
19
|
+
const context = rr0TestUtil.time.newHtmlContext("1/9/7/0/03/index.html");
|
|
20
|
+
const city = franceCity(HautsDeSeineCityCode.Nanterre, Place.fromLocation(48.891944, 2.207222));
|
|
21
|
+
const dep = city.parent;
|
|
22
|
+
const region = dep.parent;
|
|
23
|
+
const countryMessages = context.messages.country;
|
|
24
|
+
const franceMessages = countryMessages.fr;
|
|
25
|
+
const idfMessages = franceMessages.region[region.id];
|
|
26
|
+
const hautsDeSeineMessages = idfMessages.department[dep.id];
|
|
27
|
+
const cityMessages = hautsDeSeineMessages.city[city.id];
|
|
28
|
+
const namedPlace = {
|
|
29
|
+
place: city.places[0],
|
|
30
|
+
name: cityMessages.toTitle(context, city)
|
|
31
|
+
};
|
|
32
|
+
const sourceMonth = 12;
|
|
33
|
+
const unreacheableSource = {
|
|
34
|
+
events: [], previousSourceRefs: [],
|
|
35
|
+
url: "https://somesite.com/case1",
|
|
36
|
+
title: "Case 1",
|
|
37
|
+
authors: ["Some Author"],
|
|
38
|
+
publication: {
|
|
39
|
+
publisher: "Some site",
|
|
40
|
+
time: TimeContext.fromDate(new Date(2001, sourceMonth - 1, 13))
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const sources = [unreacheableSource];
|
|
44
|
+
const c = {
|
|
45
|
+
events: [], type: "sighting",
|
|
46
|
+
time: context.time,
|
|
47
|
+
place: namedPlace,
|
|
48
|
+
description: "some sighting",
|
|
49
|
+
sources
|
|
50
|
+
};
|
|
51
|
+
const outDoc = context.file.document;
|
|
52
|
+
const elem = outDoc.createElement("li");
|
|
53
|
+
await renderer.render(context, c, elem);
|
|
54
|
+
expect(elem.innerHTML).toBe(`<span class="time-resolved">en <time datetime="1970-03">mars 1970</time></span> À <span class="place">Nanterre (Hauts-de-Seine (Île-de-France (France)))</span>, some sighting <span class="source"><span class="people">Some Author</span> : <a href="https://somesite.com/case1">Case 1</a>, <i>Some site</i>, jeudi 13 décembre 2001</span>.`);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { TimeRenderer } from "./html/TimeRenderer.js";
|
|
2
2
|
import { TimeTextBuilder } from "./text/TimeTextBuilder.js";
|
|
3
|
-
import { AbstractDataService, AllDataService } from "../data/index.js";
|
|
4
|
-
import { RR0Event } from "../event/index.js";
|
|
5
3
|
import { TimeUrlBuilder } from "./TimeUrlBuilder";
|
|
4
|
+
import { AbstractDataService, AllDataService, RR0Event } from "@rr0/data";
|
|
6
5
|
export type TimeServiceOptions = {
|
|
7
6
|
readonly root: string;
|
|
8
7
|
readonly files: string[];
|
package/dist/time/TimeService.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeRenderer } from "./html/TimeRenderer.js";
|
|
2
|
-
import { AbstractDataService } from "
|
|
2
|
+
import { AbstractDataService } from "@rr0/data";
|
|
3
3
|
export class TimeService extends AbstractDataService {
|
|
4
4
|
constructor(dataService, textBuilder, urlBuilder, options) {
|
|
5
5
|
super(dataService, null, options.files);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TimeReplacerFactory } from "./html/TimeReplacerFactory.js";
|
|
2
|
+
import { rr0TestUtil } from "../test/index.js";
|
|
3
|
+
import { describe, expect, test } from "@javarome/testscript";
|
|
4
|
+
import { DomReplaceCommand } from "ssg-api";
|
|
5
|
+
import { TimeReplacer } from "./html/TimeReplacer.js";
|
|
6
|
+
import path from "path";
|
|
7
|
+
describe("HtmlTagReplaceCommand", async () => {
|
|
8
|
+
const timeRoot = rr0TestUtil.time.timeOptions.root;
|
|
9
|
+
await rr0TestUtil.time.getService({ root: path.join(rr0TestUtil.rootDir, timeRoot), files: ["time/2/0/0/4/index.html"] });
|
|
10
|
+
test("replace time tag", async () => {
|
|
11
|
+
const replacer = new TimeReplacer(rr0TestUtil.time.timeElementFactory);
|
|
12
|
+
const command = new DomReplaceCommand("time", new TimeReplacerFactory(replacer));
|
|
13
|
+
const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", `<time>2004</time> <a href="/science/crypto/ufo/enquete/dossier/Roswell">Roswell</a>`);
|
|
14
|
+
await command.execute(context);
|
|
15
|
+
expect(context.file.contents).toBe(`<html><head><meta name="generator" content="ssg-api"></head><body><span class="time-resolved">en <a href="${path.join("/", timeRoot, "2/0/0/4/")}"><time datetime="2004">2004</time></a></span> <a href="/science/crypto/ufo/enquete/dossier/Roswell">Roswell</a></body></html>`);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
@@ -9,7 +9,7 @@ export declare class TimeTestUtil {
|
|
|
9
9
|
protected timeService: TimeService;
|
|
10
10
|
fullRoot: string;
|
|
11
11
|
constructor(rr0TestUtil: RR0TestUtil);
|
|
12
|
-
newHtmlContext(inputFileName: string, contents?: string): HtmlRR0Context;
|
|
12
|
+
newHtmlContext(inputFileName: string, contents?: string, locale?: string): HtmlRR0Context;
|
|
13
13
|
filePath(inputFileName: string): string;
|
|
14
14
|
url(inputFileName: string): string;
|
|
15
15
|
getService(options?: TimeServiceOptions): TimeService;
|
|
@@ -8,8 +8,8 @@ export class TimeTestUtil {
|
|
|
8
8
|
this.timeTextBuilder = new TimeTextBuilder(rr0TestUtil.intlOptions);
|
|
9
9
|
this.fullRoot = path.join(rr0TestUtil.rootDir, this.timeOptions.root);
|
|
10
10
|
}
|
|
11
|
-
newHtmlContext(inputFileName, contents) {
|
|
12
|
-
return rr0TestUtil.newHtmlContext(this.filePath(inputFileName), contents);
|
|
11
|
+
newHtmlContext(inputFileName, contents, locale = "fr") {
|
|
12
|
+
return rr0TestUtil.newHtmlContext(this.filePath(inputFileName), contents, locale);
|
|
13
13
|
}
|
|
14
14
|
filePath(inputFileName) {
|
|
15
15
|
return path.join(this.timeOptions.root, inputFileName);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { TimeUrlBuilder } from "./TimeUrlBuilder.js";
|
|
2
|
+
import { TimeContext } from "@rr0/time";
|
|
3
|
+
import { RR0ContextImpl } from "../RR0Context.js";
|
|
4
|
+
import { describe, expect, test } from "@javarome/testscript";
|
|
5
|
+
import { rr0TestUtil } from "../test/index.js";
|
|
6
|
+
import path from "path";
|
|
7
|
+
describe("TimeUrlBuilder", () => {
|
|
8
|
+
const config = rr0TestUtil.config;
|
|
9
|
+
const rootDir = rr0TestUtil.time.fullRoot;
|
|
10
|
+
const timeUrlBuilder = new TimeUrlBuilder({ rootDir });
|
|
11
|
+
test("builds year", () => {
|
|
12
|
+
{
|
|
13
|
+
const context = new RR0ContextImpl("fr", new TimeContext(), config);
|
|
14
|
+
context.time.setYear(2008);
|
|
15
|
+
const url = timeUrlBuilder.fromContext(context.time);
|
|
16
|
+
expect(url).toEqual(path.join(rootDir, "2/0/0/8"));
|
|
17
|
+
}
|
|
18
|
+
{
|
|
19
|
+
const context = new RR0ContextImpl("fr", new TimeContext(), config);
|
|
20
|
+
context.time.setYear(2012);
|
|
21
|
+
context.time.setMonth(8);
|
|
22
|
+
context.time.setDayOfMonth(12);
|
|
23
|
+
context.time.setYear(2020); // Resets month and day
|
|
24
|
+
const url = timeUrlBuilder.fromContext(context.time);
|
|
25
|
+
expect(url).toEqual(path.join(rootDir, "2/0/2/0"));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
test("builds month", () => {
|
|
29
|
+
{
|
|
30
|
+
const context = new RR0ContextImpl("fr", new TimeContext(), config);
|
|
31
|
+
context.time.setYear(2001);
|
|
32
|
+
context.time.setMonth(9);
|
|
33
|
+
const url = timeUrlBuilder.fromContext(context.time);
|
|
34
|
+
expect(url).toBe(path.join(rootDir, "2/0/0/1/09"));
|
|
35
|
+
}
|
|
36
|
+
{
|
|
37
|
+
const context = new RR0ContextImpl("fr", new TimeContext(), config);
|
|
38
|
+
context.time.setYear(2012);
|
|
39
|
+
context.time.setMonth(8);
|
|
40
|
+
context.time.setDayOfMonth(12);
|
|
41
|
+
context.time.setMonth(2);
|
|
42
|
+
const url = timeUrlBuilder.fromContext(context.time);
|
|
43
|
+
expect(url).toEqual(path.join(rootDir, "2/0/1/2/02"));
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { SsiTitleReplaceCommand } from "./SsiTitleReplaceCommand.js";
|
|
2
|
+
import { rr0TestUtil } from "../test/index.js";
|
|
3
|
+
import { describe, expect, test } from "@javarome/testscript";
|
|
4
|
+
import { Time } from "./Time.js";
|
|
5
|
+
describe("TitleReplaceCommand", () => {
|
|
6
|
+
let timeTextBuilder = rr0TestUtil.time.timeTextBuilder;
|
|
7
|
+
const timeDefaultHandler = (context) => {
|
|
8
|
+
let title;
|
|
9
|
+
title = Time.titleFromFile(context, context.file.name, timeTextBuilder);
|
|
10
|
+
return title;
|
|
11
|
+
};
|
|
12
|
+
describe("Time page", () => {
|
|
13
|
+
const fileName = rr0TestUtil.time.filePath("1/9/5/4/index.html");
|
|
14
|
+
test("default title with no handler", async () => {
|
|
15
|
+
const command = new SsiTitleReplaceCommand();
|
|
16
|
+
const context = rr0TestUtil.newHtmlContext(fileName, `This is about <!--#echo var="title" -->!`);
|
|
17
|
+
await command.execute(context);
|
|
18
|
+
const fullPath = rr0TestUtil.filePath(fileName);
|
|
19
|
+
expect(context.file.title).toBe(fullPath);
|
|
20
|
+
expect(context.file.contents).toBe(`<html><head><title>${rr0TestUtil.filePath(fileName)}</title></head><body>This is about ${fullPath}!</body></html>`);
|
|
21
|
+
});
|
|
22
|
+
test("default title with handler", async () => {
|
|
23
|
+
const command = new SsiTitleReplaceCommand([timeDefaultHandler]);
|
|
24
|
+
const context = rr0TestUtil.newHtmlContext(fileName, `This is about <!--#echo var="title" -->!`);
|
|
25
|
+
await command.execute(context);
|
|
26
|
+
expect(context.file.title).toBe("1954");
|
|
27
|
+
expect(context.file.contents).toBe(`<html><head><title>1954</title></head><body>This is about 1954!</body></html>`);
|
|
28
|
+
});
|
|
29
|
+
test("default month title with handler", async () => {
|
|
30
|
+
const command = new SsiTitleReplaceCommand([timeDefaultHandler]);
|
|
31
|
+
const context = rr0TestUtil.time.newHtmlContext("1/9/5/4/10/index.html", `This is about <!--#echo var="title" -->!`);
|
|
32
|
+
await command.execute(context);
|
|
33
|
+
expect(context.file.title).toBe("Octobre 1954");
|
|
34
|
+
expect(context.file.contents).toBe(`<html><head><title>Octobre 1954</title></head><body>This is about Octobre 1954!</body></html>`);
|
|
35
|
+
});
|
|
36
|
+
test("default day of month title with handler", async () => {
|
|
37
|
+
const command = new SsiTitleReplaceCommand([timeDefaultHandler]);
|
|
38
|
+
const context = rr0TestUtil.time.newHtmlContext("1/9/5/4/10/01/index.html", `This is about <!--#echo var="title" -->!`);
|
|
39
|
+
await command.execute(context);
|
|
40
|
+
expect(context.file.title).toBe("Vendredi 1 octobre 1954");
|
|
41
|
+
expect(context.file.contents).toBe(`<html><head><title>Vendredi 1 octobre 1954</title></head><body>This is about Vendredi 1 octobre 1954!</body></html>`);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { beforeEach, describe, test } from "@javarome/testscript";
|
|
2
|
+
import { ChronologyReplacer } from "./ChronologyReplacer.js";
|
|
3
|
+
import { CaseSummaryRenderer } from "../CaseSummaryRenderer.js";
|
|
4
|
+
import { urecatRR0Mapping } from "./urecat/index.js";
|
|
5
|
+
import { rr0TestUtil } from "../../test/index.js";
|
|
6
|
+
import { SourceFactory, SourceRenderer } from "../../source/index.js";
|
|
7
|
+
import { NoteFileCounter, NoteRenderer } from "../../note/index.js";
|
|
8
|
+
import { TimeTextBuilder } from "../text/TimeTextBuilder.js";
|
|
9
|
+
import { HttpSource } from "./HttpSource.js";
|
|
10
|
+
import { AllDataService } from "@rr0/data";
|
|
11
|
+
describe("ChronologyReplacer", () => {
|
|
12
|
+
let context;
|
|
13
|
+
let chronologyReplacer;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
const dataService = new AllDataService([]);
|
|
16
|
+
const baseUrl = "https://rr0.org";
|
|
17
|
+
const http = new HttpSource();
|
|
18
|
+
const sourceFactory = new SourceFactory(dataService, http, baseUrl, rr0TestUtil.intlOptions);
|
|
19
|
+
const timeTextBuilder = new TimeTextBuilder(rr0TestUtil.intlOptions);
|
|
20
|
+
const caseRenderer = new CaseSummaryRenderer(new NoteRenderer(new NoteFileCounter()), sourceFactory, new SourceRenderer(timeTextBuilder), rr0TestUtil.time.timeElementFactory);
|
|
21
|
+
chronologyReplacer = new ChronologyReplacer([urecatRR0Mapping], caseRenderer);
|
|
22
|
+
context = rr0TestUtil.time.newHtmlContext("index.html");
|
|
23
|
+
context.time.setYear(undefined);
|
|
24
|
+
// context.time.setMonth(3)
|
|
25
|
+
});
|
|
26
|
+
test("save", () => {
|
|
27
|
+
const replacement = chronologyReplacer.replacement(context, context.file.document.querySelector("ul"));
|
|
28
|
+
});
|
|
29
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { CsvMapper } from "./CsvMapper.js";
|
|
4
|
+
import { rr0TestUtil } from "../../test/index.js";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import * as process from "node:process";
|
|
7
|
+
import { geipanTestCaseSummaries } from "../../org/eu/fr/cnes/geipan/geipan/GeipanTestCases.js";
|
|
8
|
+
import { geipanFileDatasource, geipanHttpDatasource } from "../../org/eu/fr/cnes/geipan/geipan/GeipanRR0Mapping.js";
|
|
9
|
+
import { GeipanCaseToSummaryMapper } from "../../org/eu/fr/cnes/geipan/geipan/GeipanCaseToSummaryMapper.js";
|
|
10
|
+
describe("CsvMapper", () => {
|
|
11
|
+
const dataDate = new Date("2024-08-12 00:00:00 GMT+1");
|
|
12
|
+
let context;
|
|
13
|
+
let mapper;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
context = rr0TestUtil.newContext(path.join(rr0TestUtil.rootDir, "time/1/9/7/0/03/index.html"));
|
|
16
|
+
mapper = new CsvMapper();
|
|
17
|
+
});
|
|
18
|
+
test("columns for a case", () => {
|
|
19
|
+
mapper.map(context, geipanTestCaseSummaries[0], dataDate);
|
|
20
|
+
expect(Array.from(mapper.fields).sort()).toEqual(["city", "classification", "id", "postTime", "time", "url", "zoneCode", "zoneType"]);
|
|
21
|
+
});
|
|
22
|
+
test("values of a case", () => {
|
|
23
|
+
const obj = geipanTestCaseSummaries[0];
|
|
24
|
+
const csvRow = mapper.map(context, obj, dataDate);
|
|
25
|
+
expect(csvRow).toBe(`${obj.id},${obj.url},${obj.city},${obj.zoneType},${obj.zoneCode},${obj.time},${obj.postTime},${obj.classification}`);
|
|
26
|
+
});
|
|
27
|
+
test("write", () => {
|
|
28
|
+
const csvContents = mapper.mapAll(context, geipanTestCaseSummaries, dataDate);
|
|
29
|
+
const expectedCsv = "id,url,city,zoneType,zoneCode,dateTime,postTime,classification\n"
|
|
30
|
+
+ geipanTestCaseSummaries
|
|
31
|
+
.map(c => `${c.id},${c.url},${c.city},${c.zoneType},${c.zoneCode},${c.time},${c.postTime},${c.classification}`)
|
|
32
|
+
.join("\n");
|
|
33
|
+
expect(csvContents).toBe(expectedCsv);
|
|
34
|
+
});
|
|
35
|
+
test("read", () => {
|
|
36
|
+
const fileMapper = new CsvMapper(";");
|
|
37
|
+
const fileName = path.join(process.cwd(), geipanFileDatasource.defaultFileName);
|
|
38
|
+
const data = fs.readFileSync(fileName, { encoding: "latin1" });
|
|
39
|
+
const csvMapper = new GeipanCaseToSummaryMapper(geipanHttpDatasource.baseUrl, geipanHttpDatasource.searchPath, geipanHttpDatasource.authors);
|
|
40
|
+
const parsed = fileMapper.parse(data);
|
|
41
|
+
const cases = parsed.map(csvCase => csvMapper.map(context, csvCase, dataDate));
|
|
42
|
+
expect(cases.length).toEqual(2768);
|
|
43
|
+
const expected1 = geipanTestCaseSummaries[0];
|
|
44
|
+
const case1 = cases.find(c => c.id === expected1.id);
|
|
45
|
+
expect(case1).toEqual(expected1);
|
|
46
|
+
const expected2 = geipanTestCaseSummaries[1];
|
|
47
|
+
const case2 = cases.find(c => c.id === expected2.id);
|
|
48
|
+
expect(case2).toEqual(expected2);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HtmlRR0Context } from "../../RR0Context.js";
|
|
2
2
|
import { TimeContext } from "@rr0/time";
|
|
3
3
|
import { TimeTextBuilder } from "../text/TimeTextBuilder.js";
|
|
4
|
-
import { Source } from "../../source/index.js";
|
|
5
4
|
import { RR0CaseMapping } from "./rr0/index.js";
|
|
5
|
+
import { Source } from "@rr0/data/dist/source";
|
|
6
6
|
export declare abstract class DatasourceTestCase<S> {
|
|
7
7
|
readonly mapping: RR0CaseMapping<S>;
|
|
8
8
|
readonly sourceCases: S[];
|
|
@@ -3,11 +3,11 @@ import { CaseSummaryRenderer } from "../CaseSummaryRenderer.js";
|
|
|
3
3
|
import { TimeTextBuilder } from "../text/TimeTextBuilder.js";
|
|
4
4
|
import { SourceFactory, SourceRenderer } from "../../source/index.js";
|
|
5
5
|
import { NoteFileCounter, NoteRenderer } from "../../note/index.js";
|
|
6
|
-
import { AllDataService } from "../../data/index.js";
|
|
7
6
|
import { HttpSource } from "./HttpSource.js";
|
|
8
7
|
import { TimeElementFactory } from "../html/TimeElementFactory.js";
|
|
9
8
|
import { TimeRenderer } from "../html/TimeRenderer.js";
|
|
10
9
|
import { rr0TestUtil } from "../../test";
|
|
10
|
+
import { AllDataService } from "@rr0/data";
|
|
11
11
|
export class DatasourceTestCase {
|
|
12
12
|
constructor(mapping, sourceCases, intlOptions = {
|
|
13
13
|
year: "numeric",
|
|
@@ -28,7 +28,7 @@ export class DatasourceTestCase {
|
|
|
28
28
|
const time = this.getTime(nativeCase);
|
|
29
29
|
const caseContext = context.clone();
|
|
30
30
|
Object.assign(caseContext, { time });
|
|
31
|
-
const timeStr = this.timeTextBuilder.build(caseContext
|
|
31
|
+
const timeStr = this.timeTextBuilder.build(caseContext);
|
|
32
32
|
const placeStr = expected.place ? ` À <span class="place">${expected.place.name}</span>` : "";
|
|
33
33
|
const expectedSources = expected.sources;
|
|
34
34
|
const sourceStr = (expectedSources === null || expectedSources === void 0 ? void 0 : expectedSources.length) > 0 ? this.expectedSourceStr(context, expectedSources, nativeCase) : "";
|
|
@@ -69,7 +69,7 @@ export class DatasourceTestCase {
|
|
|
69
69
|
const source = expectedSources[0];
|
|
70
70
|
const sourceContext = context.clone();
|
|
71
71
|
sourceContext.time = source.publication.time;
|
|
72
|
-
const publicationStr = source.publication ? `, ${this.timeTextBuilder.build(sourceContext
|
|
72
|
+
const publicationStr = source.publication ? `, ${this.timeTextBuilder.build(sourceContext)}` : "";
|
|
73
73
|
const indexStr = source.index ? `, ${source.index}` : "";
|
|
74
74
|
const authorStr = datasource.authors.map(authorStr => `<span class="people">${authorStr}</span>`).join(" & ");
|
|
75
75
|
const title = `cas n° ${nativeCase["id"]}`;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Datasource } from "./Datasource.js";
|
|
2
|
-
import {
|
|
2
|
+
import { HtmlSsgContext } from "ssg-api";
|
|
3
|
+
import { FileContents } from "@javarome/fileutil";
|
|
3
4
|
export declare class FileSource {
|
|
4
5
|
protected encoding: BufferEncoding;
|
|
5
6
|
protected static readonly specialChars: RegExp;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StringUtil } from "../../util/string/StringUtil.js";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
|
-
import { FileContents } from "
|
|
4
|
+
import { FileContents } from "@javarome/fileutil";
|
|
5
5
|
export class FileSource {
|
|
6
6
|
constructor(encoding) {
|
|
7
7
|
this.encoding = encoding;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { ufoSearchFileDatasource } from "./ufo-search/index.js";
|
|
4
|
+
import { rr0TestUtil } from "../../test/index.js";
|
|
5
|
+
import { ufoSearchTestCases } from "./ufo-search/UfoSearchTestCases.js";
|
|
6
|
+
import path from "path";
|
|
7
|
+
describe("JsonMapper", () => {
|
|
8
|
+
let context;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
context = rr0TestUtil.time.newHtmlContext("1/9/7/0/03/index.html", undefined, "en");
|
|
11
|
+
});
|
|
12
|
+
test("read", () => {
|
|
13
|
+
const data = fs.readFileSync(path.join("src", ufoSearchFileDatasource.fileName), { encoding: "utf-8" });
|
|
14
|
+
const cases = ufoSearchFileDatasource.fileMapper.parse(context, data);
|
|
15
|
+
expect(cases.length).toEqual(54751);
|
|
16
|
+
const expected1 = ufoSearchTestCases[0];
|
|
17
|
+
const case1 = cases.find(c => c.key_vals.url === expected1.key_vals.url);
|
|
18
|
+
expect(case1).toEqual(expected1);
|
|
19
|
+
const expected2 = ufoSearchTestCases[1];
|
|
20
|
+
const case2 = cases.find(c => c.key_vals.url === expected2.key_vals.url);
|
|
21
|
+
expect(case2).toEqual(expected2);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
+
import { rr0TestUtil } from "../../../test/index.js";
|
|
3
|
+
import { TimeContext } from "@rr0/time";
|
|
4
|
+
import { baseOvniFranceTestCases } from "./BaseOvniFranceTestCases.js";
|
|
5
|
+
import { baseOvniFranceDatasource, baseOvniFranceRR0Mapper } from "./BaseOvniFranceRR0Mapping.js";
|
|
6
|
+
import { leMans72 } from "../../../org/eu/fr/region/pdl/72/LeMans/LeMans.js";
|
|
7
|
+
import { lyon69 } from "../../../org/eu/fr/region/ara/69/Lyon/Lyon.js";
|
|
8
|
+
import { briancon05 } from "../../../org/eu/fr/region/pac/05/briancon/Briancon.js";
|
|
9
|
+
import { chambonSurVoueize23 } from "../../../org/eu/fr/region/naq/23/Chambon/Chambon.js";
|
|
10
|
+
function expectedSource(datasource, dataDate, caseNumber) {
|
|
11
|
+
const url = new URL(datasource.searchPath + "?typlist=20&page=0&numobs=" + caseNumber, datasource.baseUrl).href;
|
|
12
|
+
return {
|
|
13
|
+
previousSourceRefs: [], events: [],
|
|
14
|
+
url, title: "cas n° " + caseNumber, authors: datasource.authors,
|
|
15
|
+
publication: { publisher: datasource.copyright, time: TimeContext.fromDate(dataDate) }
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
describe("BaseOvniFranceCaseSource", () => {
|
|
19
|
+
let context;
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
context = rr0TestUtil.time.newHtmlContext("1/9/7/0/03/index.html");
|
|
22
|
+
context.time.setYear(1970);
|
|
23
|
+
context.time.setMonth(3);
|
|
24
|
+
});
|
|
25
|
+
test("map as RR0 cases", async () => {
|
|
26
|
+
const dataDate = new Date("2024-08-12 00:00:00 GMT+1");
|
|
27
|
+
const mapped = baseOvniFranceTestCases.map(sourceCase => baseOvniFranceRR0Mapper.map(context, sourceCase, dataDate));
|
|
28
|
+
const nativeCase1 = baseOvniFranceTestCases[0];
|
|
29
|
+
const nativeCase1Time = nativeCase1.time;
|
|
30
|
+
const nativeCase2 = baseOvniFranceTestCases[1];
|
|
31
|
+
const nativeCase2Time = nativeCase2.time;
|
|
32
|
+
const nativeCase3 = baseOvniFranceTestCases[2];
|
|
33
|
+
const nativeCase3Time = nativeCase3.time;
|
|
34
|
+
const nativeCase4 = baseOvniFranceTestCases[3];
|
|
35
|
+
const nativeCase4Time = nativeCase4.time;
|
|
36
|
+
const expected = [
|
|
37
|
+
{
|
|
38
|
+
type: "sighting",
|
|
39
|
+
events: [],
|
|
40
|
+
time: new TimeContext(nativeCase1Time.getYear(), nativeCase1Time.getMonth(), nativeCase1Time.getDayOfMonth(), nativeCase1Time.getHour(), nativeCase1Time.getMinutes(), nativeCase1Time.getTimeZone()),
|
|
41
|
+
place: { name: "Le Mans", place: leMans72.places[0] },
|
|
42
|
+
description: "observation",
|
|
43
|
+
sources: [expectedSource(baseOvniFranceDatasource, dataDate, nativeCase1.id)]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: "sighting",
|
|
47
|
+
events: [],
|
|
48
|
+
time: new TimeContext(nativeCase2Time.getYear(), nativeCase2Time.getMonth(), nativeCase2Time.getDayOfMonth(), nativeCase2Time.getHour(), nativeCase2Time.getMinutes(), nativeCase2Time.getTimeZone()),
|
|
49
|
+
place: { name: "Lyon", place: lyon69.places[0] },
|
|
50
|
+
description: "observation",
|
|
51
|
+
sources: [expectedSource(baseOvniFranceDatasource, dataDate, nativeCase2.id)]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: "sighting",
|
|
55
|
+
events: [],
|
|
56
|
+
time: new TimeContext(nativeCase3Time.getYear(), nativeCase3Time.getMonth(), nativeCase3Time.getDayOfMonth(), nativeCase3Time.getHour(), nativeCase3Time.getMinutes(), nativeCase3Time.getTimeZone()),
|
|
57
|
+
place: { name: "Briançon", place: briancon05.places[0] },
|
|
58
|
+
description: "observation",
|
|
59
|
+
sources: [expectedSource(baseOvniFranceDatasource, dataDate, nativeCase3.id)]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: "sighting",
|
|
63
|
+
events: [],
|
|
64
|
+
time: new TimeContext(nativeCase4Time.getYear(), nativeCase4Time.getMonth(), nativeCase4Time.getDayOfMonth(), nativeCase4Time.getHour(), nativeCase4Time.getMinutes(), nativeCase4Time.getTimeZone()),
|
|
65
|
+
place: { name: "Chambon-sur-Voueize", place: chambonSurVoueize23.places[0] },
|
|
66
|
+
description: "observation",
|
|
67
|
+
sources: [expectedSource(baseOvniFranceDatasource, dataDate, nativeCase4.id)]
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
expect(mapped).toEqual(expected);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, test } from "@javarome/testscript";
|
|
2
|
+
import { CsvMapper } from "../CsvMapper.js";
|
|
3
|
+
import { rr0TestUtil } from "../../../test/index.js";
|
|
4
|
+
import { baseOvniFranceTestCases } from "./BaseOvniFranceTestCases.js";
|
|
5
|
+
import fs from "fs";
|
|
6
|
+
import { baseOvniFranceDatasource, baseOvniFranceSortComparator } from "./BaseOvniFranceRR0Mapping.js";
|
|
7
|
+
import { BaseOvniFranceCaseSummaryMapper } from "./BaseOvniFranceCaseSummaryMapper.js";
|
|
8
|
+
describe("Base OVNI France CSV mapping", () => {
|
|
9
|
+
const dataDate = new Date("2024-08-12 00:00:00 GMT+1");
|
|
10
|
+
let context;
|
|
11
|
+
let mapper;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
context = rr0TestUtil.newContext("time/1/9/7/0/03/index.html");
|
|
14
|
+
mapper = new CsvMapper();
|
|
15
|
+
});
|
|
16
|
+
test("columns for a case", () => {
|
|
17
|
+
mapper.map(context, baseOvniFranceTestCases[0], dataDate);
|
|
18
|
+
expect(Array.from(mapper.fields)).toEqual(["caseNumber", "url", "city", "depCode", "dateTime", "physicalEffect", "witnessEffect", "entities", "landing"]);
|
|
19
|
+
});
|
|
20
|
+
test("values of a case", () => {
|
|
21
|
+
const obj = baseOvniFranceTestCases[0];
|
|
22
|
+
const csvRow = mapper.map(context, obj, dataDate);
|
|
23
|
+
expect(csvRow).toBe(`${obj.id},${obj.url},${obj.city},${obj.depCode},${obj.time.toString()},${obj.landing},${obj.entities},${obj.witnessEffect},${obj.physicalEffect}`);
|
|
24
|
+
});
|
|
25
|
+
test("write", () => {
|
|
26
|
+
const csvContents = mapper.mapAll(context, baseOvniFranceTestCases, dataDate);
|
|
27
|
+
const case1 = baseOvniFranceTestCases[0];
|
|
28
|
+
expect(csvContents).toBe(`caseNumber,url,city,depCode,dateTime,physicalEffect,witnessEffect,entities,landing
|
|
29
|
+
${case1.id},http://baseovnifrance.free.fr/listgen.php?typlist=20&page=0&numobs=2760,Le Mans,72,1970-03 16:00,false,false,false,false
|
|
30
|
+
1650,http://baseovnifrance.free.fr/listgen.php?typlist=20&page=0&numobs=1650,Lyon,69,1970-03-12 07:40,false,false,false,false
|
|
31
|
+
3088,http://baseovnifrance.free.fr/listgen.php?typlist=20&page=0&numobs=3088,Briançon,05,1970-03-16 20:00,false,false,false,false
|
|
32
|
+
1655,http://baseovnifrance.free.fr/listgen.php?typlist=20&page=0&numobs=1655,Chambon sur Voueize,23,1970-03-17 19:15,false,false,false,false`);
|
|
33
|
+
});
|
|
34
|
+
test("read", () => {
|
|
35
|
+
const fileMapper = new CsvMapper("&");
|
|
36
|
+
const data = fs.readFileSync("time/1/9/7/7/03/05_03_24_1709676761.txt", { encoding: "latin1" });
|
|
37
|
+
const csvMapper = new BaseOvniFranceCaseSummaryMapper(baseOvniFranceDatasource.baseUrl, baseOvniFranceDatasource.searchPath, baseOvniFranceDatasource.authors);
|
|
38
|
+
const cases = fileMapper.parse(data)
|
|
39
|
+
.map(csvCase => csvMapper.map(context, csvCase, dataDate))
|
|
40
|
+
.sort(baseOvniFranceSortComparator);
|
|
41
|
+
const expected = baseOvniFranceTestCases.sort(baseOvniFranceSortComparator);
|
|
42
|
+
expect(cases).toEqual(expected);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { beforeEach, describe, test } from "@javarome/testscript";
|
|
2
|
+
import { rr0TestUtil } from "../../../test/index.js";
|
|
3
|
+
import { baseOvniFranceTestCases } from "./BaseOvniFranceTestCases.js";
|
|
4
|
+
import { DatasourceTestCase } from "../DatasourceTestCase.js";
|
|
5
|
+
import { baseOvniFranceRR0Mapping, baseOvniFranceSortComparator } from "./BaseOvniFranceRR0Mapping.js";
|
|
6
|
+
describe("BaseOvniFranceCaseSource", () => {
|
|
7
|
+
const testCase = new class extends DatasourceTestCase {
|
|
8
|
+
constructor(mapping, sourceCases) {
|
|
9
|
+
super(mapping, sourceCases);
|
|
10
|
+
}
|
|
11
|
+
getTime(c) {
|
|
12
|
+
return c.time;
|
|
13
|
+
}
|
|
14
|
+
sortComparator(c1, c2) {
|
|
15
|
+
return baseOvniFranceSortComparator(c1, c2);
|
|
16
|
+
}
|
|
17
|
+
}(baseOvniFranceRR0Mapping, baseOvniFranceTestCases);
|
|
18
|
+
let context;
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
context = rr0TestUtil.time.newHtmlContext("1/9/7/0/03/index.html");
|
|
21
|
+
context.time.setYear(1970);
|
|
22
|
+
context.time.setMonth(3);
|
|
23
|
+
});
|
|
24
|
+
test("fetch", async () => {
|
|
25
|
+
await testCase.testFetch(context);
|
|
26
|
+
});
|
|
27
|
+
test("render", async () => {
|
|
28
|
+
await testCase.testRender(context);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|