@tricoteuses/assemblee 1.10.5 → 2.0.2
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 +8 -1
- package/lib/amendements-CN7bRFdP.js +259 -0
- package/lib/amendements-CN7bRFdP.js.map +1 -0
- package/lib/amendements-Cg1lyCBp.js +735 -0
- package/lib/amendements-Cg1lyCBp.js.map +1 -0
- package/lib/api.d.ts +1 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/cleaners/actes_legislatifs.d.ts +1 -0
- package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
- package/lib/cleaners/acteurs.d.ts +1 -0
- package/lib/cleaners/acteurs.d.ts.map +1 -0
- package/lib/cleaners/amendements.d.ts +1 -0
- package/lib/cleaners/amendements.d.ts.map +1 -0
- package/lib/cleaners/debats.d.ts +1 -0
- package/lib/cleaners/debats.d.ts.map +1 -0
- package/lib/cleaners/documents.d.ts +1 -0
- package/lib/cleaners/documents.d.ts.map +1 -0
- package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
- package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/cleaners/index.d.ts +10 -9
- package/lib/cleaners/index.d.ts.map +1 -0
- package/lib/cleaners/organes.d.ts +1 -0
- package/lib/cleaners/organes.d.ts.map +1 -0
- package/lib/cleaners/questions.d.ts +1 -0
- package/lib/cleaners/questions.d.ts.map +1 -0
- package/lib/cleaners/reunions.d.ts +1 -0
- package/lib/cleaners/reunions.d.ts.map +1 -0
- package/lib/cleaners/scrutins.d.ts +1 -0
- package/lib/cleaners/scrutins.d.ts.map +1 -0
- package/lib/cleaners/xml.d.ts +1 -0
- package/lib/cleaners/xml.d.ts.map +1 -0
- package/lib/cleaners.js +1138 -0
- package/lib/cleaners.js.map +1 -0
- package/lib/datasets.d.ts +4 -3
- package/lib/datasets.d.ts.map +1 -0
- package/lib/dates.d.ts +1 -0
- package/lib/dates.d.ts.map +1 -0
- package/lib/debats-BwZYgzXe.js +3978 -0
- package/lib/debats-BwZYgzXe.js.map +1 -0
- package/lib/dossiers_legislatifs.d.ts +3 -2
- package/lib/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/file_systems.d.ts +1 -0
- package/lib/file_systems.d.ts.map +1 -0
- package/lib/git.d.ts +1 -0
- package/lib/git.d.ts.map +1 -0
- package/lib/index.d.ts +18 -22
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1916 -285
- package/lib/index.js.map +1 -0
- package/lib/inserters.d.ts +6 -5
- package/lib/inserters.d.ts.map +1 -0
- package/lib/loaders.d.ts +13 -12
- package/lib/loaders.d.ts.map +1 -0
- package/lib/loaders.js +812 -1516
- package/lib/loaders.js.map +1 -0
- package/lib/logger.d.ts +1 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/organes.d.ts +2 -1
- package/lib/organes.d.ts.map +1 -0
- package/lib/parse-CzW8NHW5.js +2850 -0
- package/lib/parse-CzW8NHW5.js.map +1 -0
- package/lib/parsers/index.d.ts +3 -3
- package/lib/parsers/index.d.ts.map +1 -0
- package/lib/parsers/plf.d.ts +2 -0
- package/lib/parsers/plf.d.ts.map +1 -0
- package/lib/parsers/recherche_amendements.d.ts +3 -2
- package/lib/parsers/recherche_amendements.d.ts.map +1 -0
- package/lib/parsers/textes_lois.d.ts +2 -23
- package/lib/parsers/textes_lois.d.ts.map +1 -0
- package/lib/parsers.js +393 -0
- package/lib/parsers.js.map +1 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
- package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.d.ts.map +1 -0
- package/lib/raw_types/amendements.d.ts +1 -0
- package/lib/raw_types/amendements.d.ts.map +1 -0
- package/lib/raw_types/debats.d.ts +3 -2
- package/lib/raw_types/debats.d.ts.map +1 -0
- package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/raw_types/questions.d.ts +1 -0
- package/lib/raw_types/questions.d.ts.map +1 -0
- package/lib/raw_types/scrutins.d.ts +1 -0
- package/lib/raw_types/scrutins.d.ts.map +1 -0
- package/lib/schemas/acteurs_et_organes.d.json +982 -0
- package/lib/schemas/acteurs_et_organes.json +1166 -0
- package/lib/schemas/agendas.d.json +1561 -0
- package/lib/schemas/agendas.json +1745 -0
- package/lib/schemas/amendements.d.json +1901 -0
- package/lib/schemas/amendements.json +2085 -0
- package/lib/schemas/debats.d.json +623 -0
- package/lib/schemas/debats.json +842 -0
- package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
- package/lib/schemas/dossiers_legislatifs.json +3874 -0
- package/lib/schemas/legislatures.d.json +17 -0
- package/lib/schemas/legislatures.json +17 -0
- package/lib/schemas/questions.d.json +520 -0
- package/lib/schemas/questions.json +704 -0
- package/lib/schemas/scrutins.d.json +517 -0
- package/lib/schemas/scrutins.json +701 -0
- package/lib/scripts/add_links_to_documents.d.ts +2 -0
- package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
- package/lib/scripts/clean_reorganized_data.d.ts +1 -0
- package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
- package/lib/scripts/copy-schemas.d.ts +2 -0
- package/lib/scripts/copy-schemas.d.ts.map +1 -0
- package/lib/scripts/diff_amendements.d.ts +1 -0
- package/lib/scripts/diff_amendements.d.ts.map +1 -0
- package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
- package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
- package/lib/scripts/generate-json-schemas.d.ts +2 -0
- package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
- package/lib/scripts/get_today_reunions.d.ts +1 -0
- package/lib/scripts/get_today_reunions.d.ts.map +1 -0
- package/lib/scripts/merge_scrutins.d.ts +1 -0
- package/lib/scripts/merge_scrutins.d.ts.map +1 -0
- package/lib/scripts/process_open_dataset.d.ts +1 -0
- package/lib/scripts/process_open_dataset.d.ts.map +1 -0
- package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
- package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
- package/lib/scripts/reorganize_data.d.ts +1 -0
- package/lib/scripts/reorganize_data.d.ts.map +1 -0
- package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
- package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
- package/lib/scripts/retrieve_documents.d.ts +1 -0
- package/lib/scripts/retrieve_documents.d.ts.map +1 -0
- package/lib/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
- package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
- package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
- package/lib/scripts/shared/cli_helpers.d.ts +1 -0
- package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.d.ts.map +1 -0
- package/lib/scripts/test_load.d.ts +1 -0
- package/lib/scripts/test_load.d.ts.map +1 -0
- package/lib/scripts/test_load_big_files.d.ts +1 -0
- package/lib/scripts/test_load_big_files.d.ts.map +1 -0
- package/lib/scripts/validate_json.d.ts +1 -0
- package/lib/scripts/validate_json.d.ts.map +1 -0
- package/lib/shared_types/codes_actes.d.ts +1 -0
- package/lib/shared_types/codes_actes.d.ts.map +1 -0
- package/lib/strings.d.ts +1 -0
- package/lib/strings.d.ts.map +1 -0
- package/lib/types/acteurs_et_organes.d.ts +341 -0
- package/lib/types/acteurs_et_organes.d.ts.map +1 -0
- package/lib/types/agendas.d.ts +237 -10
- package/lib/types/agendas.d.ts.map +1 -0
- package/lib/types/amendements.d.ts +277 -1
- package/lib/types/amendements.d.ts.map +1 -0
- package/lib/types/debats.d.ts +53 -2
- package/lib/types/debats.d.ts.map +1 -0
- package/lib/types/dossiers_legislatifs.d.ts +404 -9
- package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
- package/lib/types/legislatures.d.ts +1 -0
- package/lib/types/legislatures.d.ts.map +1 -0
- package/lib/types/questions.d.ts +100 -2
- package/lib/types/questions.d.ts.map +1 -0
- package/lib/types/scrutins.d.ts +102 -0
- package/lib/types/scrutins.d.ts.map +1 -0
- package/lib/urls.d.ts +3 -2
- package/lib/urls.d.ts.map +1 -0
- package/package.json +31 -95
- package/lib/api.js +0 -52
- package/lib/api.mjs +0 -45
- package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
- package/lib/bugs/acteur-00010/plugin.test.js +0 -90
- package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
- package/lib/bugs/acteur-00010.d.ts +0 -7
- package/lib/bugs/acteur-00010.js +0 -116
- package/lib/bugs/acteur-00010.mjs +0 -26
- package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00002/plugin.test.js +0 -124
- package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
- package/lib/bugs/agenda-00002.d.ts +0 -15
- package/lib/bugs/agenda-00002.js +0 -406
- package/lib/bugs/agenda-00002.mjs +0 -172
- package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00008/plugin.test.js +0 -92
- package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
- package/lib/bugs/agenda-00008.d.ts +0 -7
- package/lib/bugs/agenda-00008.js +0 -123
- package/lib/bugs/agenda-00008.mjs +0 -26
- package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00011/plugin.test.js +0 -263
- package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
- package/lib/bugs/agenda-00011.d.ts +0 -16
- package/lib/bugs/agenda-00011.js +0 -333
- package/lib/bugs/agenda-00011.mjs +0 -125
- package/lib/bugs.d.ts +0 -21
- package/lib/bugs.js +0 -452
- package/lib/bugs.mjs +0 -70
- package/lib/cleaners/actes_legislatifs.js +0 -315
- package/lib/cleaners/actes_legislatifs.mjs +0 -253
- package/lib/cleaners/acteurs.js +0 -265
- package/lib/cleaners/acteurs.mjs +0 -180
- package/lib/cleaners/amendements.js +0 -294
- package/lib/cleaners/amendements.mjs +0 -227
- package/lib/cleaners/debats.js +0 -12
- package/lib/cleaners/debats.mjs +0 -5
- package/lib/cleaners/documents.js +0 -205
- package/lib/cleaners/documents.mjs +0 -133
- package/lib/cleaners/dossiers_legislatifs.js +0 -131
- package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
- package/lib/cleaners/index.js +0 -70
- package/lib/cleaners/index.mjs +0 -10
- package/lib/cleaners/organes.js +0 -65
- package/lib/cleaners/organes.mjs +0 -48
- package/lib/cleaners/questions.js +0 -12
- package/lib/cleaners/questions.mjs +0 -5
- package/lib/cleaners/reunions.js +0 -312
- package/lib/cleaners/reunions.mjs +0 -255
- package/lib/cleaners/scrutins.js +0 -340
- package/lib/cleaners/scrutins.mjs +0 -221
- package/lib/cleaners/xml.js +0 -74
- package/lib/cleaners/xml.mjs +0 -59
- package/lib/datasets.js +0 -837
- package/lib/datasets.mjs +0 -755
- package/lib/dates.js +0 -124
- package/lib/dates.mjs +0 -100
- package/lib/dossiers_legislatifs.js +0 -346
- package/lib/dossiers_legislatifs.mjs +0 -208
- package/lib/file_systems.js +0 -162
- package/lib/file_systems.mjs +0 -62
- package/lib/git.js +0 -223
- package/lib/git.mjs +0 -151
- package/lib/index.mjs +0 -17
- package/lib/inserters.js +0 -521
- package/lib/inserters.mjs +0 -337
- package/lib/loaders.mjs +0 -886
- package/lib/logger.js +0 -35
- package/lib/logger.mjs +0 -26
- package/lib/organes.js +0 -22
- package/lib/organes.mjs +0 -15
- package/lib/parsers/documents.d.ts +0 -62
- package/lib/parsers/documents.js +0 -453
- package/lib/parsers/documents.mjs +0 -370
- package/lib/parsers/index.js +0 -40
- package/lib/parsers/index.mjs +0 -4
- package/lib/parsers/recherche_amendements.js +0 -403
- package/lib/parsers/recherche_amendements.mjs +0 -167
- package/lib/parsers/textes_lois.js +0 -307
- package/lib/parsers/textes_lois.mjs +0 -264
- package/lib/raw_types/acteurs_et_organes.js +0 -1215
- package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
- package/lib/raw_types/agendas.js +0 -777
- package/lib/raw_types/agendas.mjs +0 -724
- package/lib/raw_types/amendements.js +0 -1052
- package/lib/raw_types/amendements.mjs +0 -993
- package/lib/raw_types/debats.js +0 -630
- package/lib/raw_types/debats.mjs +0 -573
- package/lib/raw_types/dossiers_legislatifs.js +0 -1529
- package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
- package/lib/raw_types/questions.js +0 -469
- package/lib/raw_types/questions.mjs +0 -416
- package/lib/raw_types/scrutins.js +0 -651
- package/lib/raw_types/scrutins.mjs +0 -598
- package/lib/schemas/acteur/Acteur.json +0 -56
- package/lib/schemas/acteur/AdresseElectronique.json +0 -52
- package/lib/schemas/acteur/AdressePostale.json +0 -75
- package/lib/schemas/acteur/Civ.json +0 -14
- package/lib/schemas/acteur/Collaborateur.json +0 -29
- package/lib/schemas/acteur/EtatCivil.json +0 -51
- package/lib/schemas/acteur/Ident.json +0 -40
- package/lib/schemas/acteur/Lieu.json +0 -66
- package/lib/schemas/acteur/Mandat.json +0 -192
- package/lib/schemas/acteur/Profession.json +0 -46
- package/lib/schemas/agenda/Agenda.json +0 -318
- package/lib/schemas/agenda/CycleDeVie.json +0 -45
- package/lib/schemas/agenda/PointOdj.json +0 -82
- package/lib/schemas/amendement/Amendement.json +0 -246
- package/lib/schemas/amendement/Diff.json +0 -25
- package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
- package/lib/schemas/amendement/Identifiant.json +0 -62
- package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
- package/lib/schemas/amendement/Representation.json +0 -67
- package/lib/schemas/amendement/Total.json +0 -26
- package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
- package/lib/schemas/converted_from_type/agendas.json +0 -1100
- package/lib/schemas/converted_from_type/amendements.json +0 -3191
- package/lib/schemas/converted_from_type/debats.json +0 -682
- package/lib/schemas/converted_from_type/deputes.json +0 -26
- package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
- package/lib/schemas/converted_from_type/legislatures.json +0 -16
- package/lib/schemas/converted_from_type/questions.json +0 -328
- package/lib/schemas/converted_from_type/scrutins.json +0 -393
- package/lib/schemas/debat/Contenu.json +0 -75
- package/lib/schemas/debat/Debat.json +0 -40
- package/lib/schemas/debat/Metadonnees.json +0 -75
- package/lib/schemas/debat/Orateur.json +0 -60
- package/lib/schemas/debat/Point.json +0 -169
- package/lib/schemas/debat/Sommaire.json +0 -71
- package/lib/schemas/debat/SommaireElement.json +0 -108
- package/lib/schemas/debat/Texte.json +0 -34
- package/lib/schemas/document/CodeLibelle.json +0 -25
- package/lib/schemas/document/Document.json +0 -385
- package/lib/schemas/document/Indexation.json +0 -38
- package/lib/schemas/dossier/ActeLegislatif.json +0 -211
- package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
- package/lib/schemas/dossier/Agenda.json +0 -23
- package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
- package/lib/schemas/dossier/Decision.json +0 -25
- package/lib/schemas/dossier/Dossier.json +0 -124
- package/lib/schemas/dossier/EtudeImpact.json +0 -29
- package/lib/schemas/dossier/EtudePlf.json +0 -105
- package/lib/schemas/dossier/Europe.json +0 -42
- package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
- package/lib/schemas/dossier/InfoJO.json +0 -23
- package/lib/schemas/dossier/Initiateur.json +0 -36
- package/lib/schemas/dossier/Motion.json +0 -27
- package/lib/schemas/dossier/Promulgation.json +0 -62
- package/lib/schemas/dossier/Rapporteur.json +0 -36
- package/lib/schemas/dossier/Texte.json +0 -47
- package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
- package/lib/schemas/organe/Organe.json +0 -136
- package/lib/schemas/organe/ViMoDe.json +0 -28
- package/lib/schemas/question/Auteur.json +0 -58
- package/lib/schemas/question/Cloture.json +0 -28
- package/lib/schemas/question/InfoJO.json +0 -40
- package/lib/schemas/question/MinAttribElement.json +0 -30
- package/lib/schemas/question/Question.json +0 -172
- package/lib/schemas/question/Renouvellement.json +0 -17
- package/lib/schemas/question/Signalement.json +0 -21
- package/lib/schemas/question/Texte.json +0 -24
- package/lib/schemas/scrutin/DecompteVoix.json +0 -35
- package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
- package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
- package/lib/schemas/scrutin/OrganeVotant.json +0 -88
- package/lib/schemas/scrutin/Scrutin.json +0 -187
- package/lib/schemas/scrutin/Votant.json +0 -37
- package/lib/scripts/bugs_helper.d.ts +0 -13
- package/lib/scripts/bugs_helper.js +0 -595
- package/lib/scripts/bugs_helper.mjs +0 -251
- package/lib/scripts/clean_reorganized_data.js +0 -613
- package/lib/scripts/clean_reorganized_data.mjs +0 -276
- package/lib/scripts/diff_amendements.js +0 -249
- package/lib/scripts/diff_amendements.mjs +0 -202
- package/lib/scripts/document_dossiers_legislatifs.js +0 -655
- package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
- package/lib/scripts/get_today_reunions.js +0 -37
- package/lib/scripts/get_today_reunions.mjs +0 -31
- package/lib/scripts/merge_scrutins.js +0 -97
- package/lib/scripts/merge_scrutins.mjs +0 -47
- package/lib/scripts/parse_textes_lois.d.ts +0 -1
- package/lib/scripts/parse_textes_lois.js +0 -171
- package/lib/scripts/parse_textes_lois.mjs +0 -140
- package/lib/scripts/process_open_dataset.js +0 -301
- package/lib/scripts/process_open_dataset.mjs +0 -134
- package/lib/scripts/raw_types_from_amendements.js +0 -135
- package/lib/scripts/raw_types_from_amendements.mjs +0 -134
- package/lib/scripts/reorganize_data.js +0 -805
- package/lib/scripts/reorganize_data.mjs +0 -517
- package/lib/scripts/retrieve_deputes_photos.js +0 -310
- package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
- package/lib/scripts/retrieve_documents.js +0 -547
- package/lib/scripts/retrieve_documents.mjs +0 -242
- package/lib/scripts/retrieve_open_data.js +0 -107
- package/lib/scripts/retrieve_open_data.mjs +0 -26
- package/lib/scripts/retrieve_pending_amendments.js +0 -206
- package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
- package/lib/scripts/retrieve_senateurs_photos.js +0 -234
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
- package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois.js +0 -240
- package/lib/scripts/retrieve_textes_lois.mjs +0 -85
- package/lib/scripts/shared/cli_helpers.js +0 -89
- package/lib/scripts/shared/cli_helpers.mjs +0 -81
- package/lib/scripts/test_iter_load.js +0 -155
- package/lib/scripts/test_iter_load.mjs +0 -72
- package/lib/scripts/test_load.js +0 -26
- package/lib/scripts/test_load.mjs +0 -16
- package/lib/scripts/test_load_big_files.js +0 -26
- package/lib/scripts/test_load_big_files.mjs +0 -16
- package/lib/scripts/validate_json.js +0 -353
- package/lib/scripts/validate_json.mjs +0 -184
- package/lib/shared_types/codes_actes.js +0 -231
- package/lib/shared_types/codes_actes.mjs +0 -224
- package/lib/strings.js +0 -16
- package/lib/strings.mjs +0 -7
- package/lib/types/acteurs_et_organes.js +0 -965
- package/lib/types/acteurs_et_organes.mjs +0 -906
- package/lib/types/agendas.js +0 -628
- package/lib/types/agendas.mjs +0 -575
- package/lib/types/amendements.js +0 -899
- package/lib/types/amendements.mjs +0 -842
- package/lib/types/debats.js +0 -619
- package/lib/types/debats.mjs +0 -562
- package/lib/types/dossiers_legislatifs.js +0 -1188
- package/lib/types/dossiers_legislatifs.mjs +0 -1130
- package/lib/types/legislatures.js +0 -17
- package/lib/types/legislatures.mjs +0 -10
- package/lib/types/questions.js +0 -454
- package/lib/types/questions.mjs +0 -401
- package/lib/types/scrutins.js +0 -556
- package/lib/types/scrutins.mjs +0 -503
- package/lib/urls.js +0 -325
- package/lib/urls.mjs +0 -258
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.symbol.description.js");
|
|
5
|
-
require("core-js/modules/es.symbol.async-iterator.js");
|
|
6
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
7
|
-
require("core-js/modules/es.symbol.to-primitive.js");
|
|
8
|
-
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
9
|
-
require("core-js/modules/es.array.for-each.js");
|
|
10
|
-
require("core-js/modules/es.array.from.js");
|
|
11
|
-
require("core-js/modules/es.array.is-array.js");
|
|
12
|
-
require("core-js/modules/es.array.iterator.js");
|
|
13
|
-
require("core-js/modules/es.array.reverse.js");
|
|
14
|
-
require("core-js/modules/es.date.to-primitive.js");
|
|
15
|
-
require("core-js/modules/es.date.to-string.js");
|
|
16
|
-
require("core-js/modules/es.function.name.js");
|
|
17
|
-
require("core-js/modules/es.json.to-string-tag.js");
|
|
18
|
-
require("core-js/modules/es.math.to-string-tag.js");
|
|
19
|
-
require("core-js/modules/es.number.constructor.js");
|
|
20
|
-
require("core-js/modules/es.object.create.js");
|
|
21
|
-
require("core-js/modules/es.object.define-property.js");
|
|
22
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
23
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
24
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
25
|
-
require("core-js/modules/es.object.to-string.js");
|
|
26
|
-
require("core-js/modules/es.promise.js");
|
|
27
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
28
|
-
require("core-js/modules/es.string.iterator.js");
|
|
29
|
-
require("core-js/modules/es.weak-map.js");
|
|
30
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
31
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
32
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
33
|
-
require("core-js/modules/es.array.concat.js");
|
|
34
|
-
require("core-js/modules/es.array.includes.js");
|
|
35
|
-
require("core-js/modules/es.array.join.js");
|
|
36
|
-
require("core-js/modules/es.array.slice.js");
|
|
37
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
38
|
-
require("core-js/modules/es.string.ends-with.js");
|
|
39
|
-
require("core-js/modules/es.string.includes.js");
|
|
40
|
-
require("core-js/modules/es.string.replace.js");
|
|
41
|
-
var _ajv = _interopRequireDefault(require("ajv"));
|
|
42
|
-
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
43
|
-
var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
|
|
44
|
-
var _file_systems = require("../file_systems");
|
|
45
|
-
var git = _interopRequireWildcard(require("../git"));
|
|
46
|
-
var _temp = _interopRequireDefault(require("temp"));
|
|
47
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
48
|
-
var _path = _interopRequireDefault(require("path"));
|
|
49
|
-
var _datasets = require("../../src/datasets");
|
|
50
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
51
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
52
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
53
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
54
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
55
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
56
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
57
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
58
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
59
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
60
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
61
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
62
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
63
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
64
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
65
|
-
// Automatically track and cleanup files at exit
|
|
66
|
-
_temp["default"].track();
|
|
67
|
-
function parseArgs(argv) {
|
|
68
|
-
var optionsDefinitions = [{
|
|
69
|
-
description: "pathname to the directory containing the dataset",
|
|
70
|
-
defaultOption: true,
|
|
71
|
-
name: "data",
|
|
72
|
-
type: String
|
|
73
|
-
}, {
|
|
74
|
-
description: "URL or path to the tricoteuses-assemblee git repository",
|
|
75
|
-
defaultValue: "https://git.en-root.org/tricoteuses/tricoteuses-assemblee.git",
|
|
76
|
-
name: "repository",
|
|
77
|
-
type: String
|
|
78
|
-
}, {
|
|
79
|
-
description: "dataset (possible values must include exactly one of ".concat((0, _datasets.getDatasets)(), ")"),
|
|
80
|
-
name: "dataset",
|
|
81
|
-
type: String
|
|
82
|
-
}, {
|
|
83
|
-
description: "schema (possible values are ".concat((0, _datasets.getSchemas)(), ")"),
|
|
84
|
-
name: "schema",
|
|
85
|
-
type: String
|
|
86
|
-
}, {
|
|
87
|
-
description: "ignore schemaVersion from JSON files and use the current directory instead of the --repository",
|
|
88
|
-
name: "dev",
|
|
89
|
-
type: Boolean
|
|
90
|
-
}, {
|
|
91
|
-
description: "increase verbosity",
|
|
92
|
-
name: "verbose",
|
|
93
|
-
type: Boolean
|
|
94
|
-
}, {
|
|
95
|
-
name: "help",
|
|
96
|
-
description: "Print this usage guide."
|
|
97
|
-
}];
|
|
98
|
-
var sections = [{
|
|
99
|
-
header: "Validate JSON files",
|
|
100
|
-
content: "Validate JSON files"
|
|
101
|
-
}, {
|
|
102
|
-
header: "Options",
|
|
103
|
-
optionList: optionsDefinitions
|
|
104
|
-
}];
|
|
105
|
-
var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
|
|
106
|
-
argv: argv
|
|
107
|
-
});
|
|
108
|
-
if (options.dataset) {
|
|
109
|
-
if (!(0, _datasets.validDataset)(options.dataset)) {
|
|
110
|
-
console.error("--dataset ".concat(options.dataset));
|
|
111
|
-
options.help = true;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (options.schema) {
|
|
115
|
-
if (!(0, _datasets.getSchemas)().includes(options.schema)) {
|
|
116
|
-
console.error("--schema ".concat(options.schema));
|
|
117
|
-
options.help = true;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
if ("help" in options) {
|
|
121
|
-
var usage = (0, _commandLineUsage["default"])(sections);
|
|
122
|
-
console.warn(usage);
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
return options;
|
|
126
|
-
}
|
|
127
|
-
var Validate = /*#__PURE__*/function () {
|
|
128
|
-
function Validate(options) {
|
|
129
|
-
_classCallCheck(this, Validate);
|
|
130
|
-
_defineProperty(this, "options", void 0);
|
|
131
|
-
_defineProperty(this, "version2schema", void 0);
|
|
132
|
-
_defineProperty(this, "tmpDir", void 0);
|
|
133
|
-
this.options = options;
|
|
134
|
-
this.version2schema = {};
|
|
135
|
-
this.tmpDir = _temp["default"].mkdirSync("validation");
|
|
136
|
-
}
|
|
137
|
-
return _createClass(Validate, [{
|
|
138
|
-
key: "getSchemaDir",
|
|
139
|
-
value: function getSchemaDir(tag) {
|
|
140
|
-
if (this.options.dev == true) {
|
|
141
|
-
if (this.options.verbose) console.log("--dev: use src/schemas");
|
|
142
|
-
return "src/schemas";
|
|
143
|
-
}
|
|
144
|
-
var repositoryDir = _path["default"].join(this.tmpDir, "tricoteuses-assemblee");
|
|
145
|
-
var tagDir = _path["default"].join(this.tmpDir, tag);
|
|
146
|
-
if (!_fsExtra["default"].existsSync(tagDir)) {
|
|
147
|
-
if (!_fsExtra["default"].existsSync(repositoryDir)) {
|
|
148
|
-
git.run(this.tmpDir, "clone --quiet ".concat(this.options.repository, " ").concat(repositoryDir));
|
|
149
|
-
}
|
|
150
|
-
git.run(repositoryDir, "checkout tags/".concat(tag, " -- src/schemas > /dev/null 2>&1"));
|
|
151
|
-
_fsExtra["default"].renameSync(_path["default"].join(repositoryDir, "src/schemas"), tagDir);
|
|
152
|
-
}
|
|
153
|
-
return tagDir;
|
|
154
|
-
}
|
|
155
|
-
}, {
|
|
156
|
-
key: "getValidator",
|
|
157
|
-
value: function getValidator(version) {
|
|
158
|
-
if (!(version in this.version2schema)) {
|
|
159
|
-
var ajv = new _ajv["default"]();
|
|
160
|
-
var dir = this.getSchemaDir("schema-".concat(version));
|
|
161
|
-
var references = [];
|
|
162
|
-
var _iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)(["".concat(dir, "/").concat(this.options.schema, "/*.json")])),
|
|
163
|
-
_step;
|
|
164
|
-
try {
|
|
165
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
166
|
-
var reference = _step.value;
|
|
167
|
-
references.push(reference);
|
|
168
|
-
}
|
|
169
|
-
} catch (err) {
|
|
170
|
-
_iterator.e(err);
|
|
171
|
-
} finally {
|
|
172
|
-
_iterator.f();
|
|
173
|
-
}
|
|
174
|
-
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.getFiles)(references)),
|
|
175
|
-
_step2;
|
|
176
|
-
try {
|
|
177
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
178
|
-
var file = _step2.value;
|
|
179
|
-
if (this.options.verbose) console.log("reference: ".concat(file));
|
|
180
|
-
ajv.addSchema((0, _file_systems.load)(file));
|
|
181
|
-
}
|
|
182
|
-
} catch (err) {
|
|
183
|
-
_iterator2.e(err);
|
|
184
|
-
} finally {
|
|
185
|
-
_iterator2.f();
|
|
186
|
-
}
|
|
187
|
-
var schema = this.options.schema;
|
|
188
|
-
var Schema = schema.charAt(0).toUpperCase() + schema.slice(1);
|
|
189
|
-
var s = "".concat(dir, "/").concat(schema, "/").concat(Schema, ".json");
|
|
190
|
-
if (this.options.verbose) console.log("schema ".concat(s));
|
|
191
|
-
this.version2schema[version] = ajv.compile((0, _file_systems.load)(s));
|
|
192
|
-
}
|
|
193
|
-
return this.version2schema[version];
|
|
194
|
-
}
|
|
195
|
-
}, {
|
|
196
|
-
key: "getVersion",
|
|
197
|
-
value: function getVersion(content) {
|
|
198
|
-
if (content.schemaVersion != undefined) return content.schemaVersion;
|
|
199
|
-
return "".concat(this.options.schema, "-1.0");
|
|
200
|
-
}
|
|
201
|
-
}, {
|
|
202
|
-
key: "getSchemaURL",
|
|
203
|
-
value: function getSchemaURL(version) {
|
|
204
|
-
if (this.options.dev == true) return "src/schemas";else {
|
|
205
|
-
if (_fsExtra["default"].existsSync(this.options.repository)) {
|
|
206
|
-
return "".concat(this.options.repository, "/src/schemas at tag schema-").concat(version);
|
|
207
|
-
} else {
|
|
208
|
-
var repository = this.options.repository.replace(/\.git$/, "");
|
|
209
|
-
return "".concat(repository, "/tree/schema-").concat(version, "/src/schemas");
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}, {
|
|
214
|
-
key: "validate",
|
|
215
|
-
value: function validate(content, filename) {
|
|
216
|
-
var tag = this.getVersion(content);
|
|
217
|
-
var validator = this.getValidator(tag);
|
|
218
|
-
var valid = validator(content);
|
|
219
|
-
var schemaURL = this.getSchemaURL(tag);
|
|
220
|
-
if (!valid) {
|
|
221
|
-
console.error("".concat(schemaURL, " finds ").concat(filename, " is invalid"));
|
|
222
|
-
console.error(validator.errors);
|
|
223
|
-
return 1;
|
|
224
|
-
} else {
|
|
225
|
-
if (this.options.verbose) console.log("".concat(schemaURL, " finds ").concat(filename, " is valid"));
|
|
226
|
-
return 0;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}, {
|
|
230
|
-
key: "process",
|
|
231
|
-
value: function () {
|
|
232
|
-
var _process = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
233
|
-
var status, _iterator3, _step3, file, content;
|
|
234
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
235
|
-
while (1) switch (_context.prev = _context.next) {
|
|
236
|
-
case 0:
|
|
237
|
-
status = 0;
|
|
238
|
-
_iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
|
|
239
|
-
try {
|
|
240
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
241
|
-
file = _step3.value;
|
|
242
|
-
content = (0, _file_systems.load)(file);
|
|
243
|
-
status |= this.validate(content, file);
|
|
244
|
-
}
|
|
245
|
-
} catch (err) {
|
|
246
|
-
_iterator3.e(err);
|
|
247
|
-
} finally {
|
|
248
|
-
_iterator3.f();
|
|
249
|
-
}
|
|
250
|
-
return _context.abrupt("return", status);
|
|
251
|
-
case 4:
|
|
252
|
-
case "end":
|
|
253
|
-
return _context.stop();
|
|
254
|
-
}
|
|
255
|
-
}, _callee, this);
|
|
256
|
-
}));
|
|
257
|
-
function process() {
|
|
258
|
-
return _process.apply(this, arguments);
|
|
259
|
-
}
|
|
260
|
-
return process;
|
|
261
|
-
}()
|
|
262
|
-
}]);
|
|
263
|
-
}();
|
|
264
|
-
function main(_x) {
|
|
265
|
-
return _main.apply(this, arguments);
|
|
266
|
-
}
|
|
267
|
-
/* istanbul ignore if */
|
|
268
|
-
function _main() {
|
|
269
|
-
_main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(argv) {
|
|
270
|
-
var options, directorySchema, _iterator4, _step4, d, validate, status;
|
|
271
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
272
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
273
|
-
case 0:
|
|
274
|
-
options = parseArgs(argv);
|
|
275
|
-
if (!(options === null)) {
|
|
276
|
-
_context2.next = 3;
|
|
277
|
-
break;
|
|
278
|
-
}
|
|
279
|
-
return _context2.abrupt("return", 1);
|
|
280
|
-
case 3:
|
|
281
|
-
directorySchema = [];
|
|
282
|
-
if (!options.schema) {
|
|
283
|
-
_context2.next = 8;
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
directorySchema = [[options.data, options.schema]];
|
|
287
|
-
_context2.next = 14;
|
|
288
|
-
break;
|
|
289
|
-
case 8:
|
|
290
|
-
if (!options.dataset) {
|
|
291
|
-
_context2.next = 12;
|
|
292
|
-
break;
|
|
293
|
-
}
|
|
294
|
-
directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
|
|
295
|
-
_context2.next = 14;
|
|
296
|
-
break;
|
|
297
|
-
case 12:
|
|
298
|
-
console.error("either --schema or --dataset is required");
|
|
299
|
-
return _context2.abrupt("return", 1);
|
|
300
|
-
case 14:
|
|
301
|
-
_iterator4 = _createForOfIteratorHelper(directorySchema);
|
|
302
|
-
_context2.prev = 15;
|
|
303
|
-
_iterator4.s();
|
|
304
|
-
case 17:
|
|
305
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
306
|
-
_context2.next = 30;
|
|
307
|
-
break;
|
|
308
|
-
}
|
|
309
|
-
d = _step4.value;
|
|
310
|
-
options.schema = d[1];
|
|
311
|
-
options.data = d[0];
|
|
312
|
-
if (options.verbose) console.log("working on files ".concat(options.data, " with schema ").concat(options.schema));
|
|
313
|
-
validate = new Validate(options);
|
|
314
|
-
_context2.next = 25;
|
|
315
|
-
return validate.process();
|
|
316
|
-
case 25:
|
|
317
|
-
status = _context2.sent;
|
|
318
|
-
if (!(status != 0)) {
|
|
319
|
-
_context2.next = 28;
|
|
320
|
-
break;
|
|
321
|
-
}
|
|
322
|
-
return _context2.abrupt("return", status);
|
|
323
|
-
case 28:
|
|
324
|
-
_context2.next = 17;
|
|
325
|
-
break;
|
|
326
|
-
case 30:
|
|
327
|
-
_context2.next = 35;
|
|
328
|
-
break;
|
|
329
|
-
case 32:
|
|
330
|
-
_context2.prev = 32;
|
|
331
|
-
_context2.t0 = _context2["catch"](15);
|
|
332
|
-
_iterator4.e(_context2.t0);
|
|
333
|
-
case 35:
|
|
334
|
-
_context2.prev = 35;
|
|
335
|
-
_iterator4.f();
|
|
336
|
-
return _context2.finish(35);
|
|
337
|
-
case 38:
|
|
338
|
-
return _context2.abrupt("return", 0);
|
|
339
|
-
case 39:
|
|
340
|
-
case "end":
|
|
341
|
-
return _context2.stop();
|
|
342
|
-
}
|
|
343
|
-
}, _callee2, null, [[15, 32, 35, 38]]);
|
|
344
|
-
}));
|
|
345
|
-
return _main.apply(this, arguments);
|
|
346
|
-
}
|
|
347
|
-
if (process.argv[1].endsWith("validate_json.ts")) main(process.argv).then(function (exitCode) {
|
|
348
|
-
process.exit(exitCode);
|
|
349
|
-
})["catch"](function (error) {
|
|
350
|
-
console.error(error);
|
|
351
|
-
process.exit(1);
|
|
352
|
-
});
|
|
353
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWp2IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2NvbW1hbmRMaW5lVXNhZ2UiLCJfZmlsZV9zeXN0ZW1zIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdGVtcCIsIl9mc0V4dHJhIiwiX3BhdGgiLCJfZGF0YXNldHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwicHJvdG90eXBlIiwibyIsInZhbHVlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsInRlbXAiLCJ0cmFjayIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJkZWZhdWx0VmFsdWUiLCJjb25jYXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJnZXRTY2hlbWFEaXIiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJnZXRWYWxpZGF0b3IiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwicmVmZXJlbmNlcyIsIl9pdGVyYXRvciIsImdldEZpbGVzIiwiX3N0ZXAiLCJyZWZlcmVuY2UiLCJlcnIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiZmlsZSIsImFkZFNjaGVtYSIsImxvYWQiLCJTY2hlbWEiLCJ0b1VwcGVyQ2FzZSIsImNvbXBpbGUiLCJnZXRWZXJzaW9uIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsImdldFNjaGVtYVVSTCIsInJlcGxhY2UiLCJ2YWxpZGF0ZSIsImZpbGVuYW1lIiwidmFsaWRhdG9yIiwidmFsaWQiLCJzY2hlbWFVUkwiLCJlcnJvcnMiLCJfcHJvY2VzcyIsIl9jYWxsZWUiLCJzdGF0dXMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImRhdGEiLCJwcm9jZXNzIiwibWFpbiIsIl94IiwiX21haW4iLCJfY2FsbGVlMiIsImRpcmVjdG9yeVNjaGVtYSIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwidDAiLCJlbmRzV2l0aCIsImV4aXRDb2RlIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3ZhbGlkYXRlX2pzb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFqdiBmcm9tIFwiYWp2XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB0ZW1wIGZyb20gXCJ0ZW1wXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgdmFsaWREYXRhc2V0LFxuICBnZXREYXRhc2V0cyxcbiAgZ2V0U2NoZW1hcyxcbiAgZGF0YXNldERpcmVjdG9yeVNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL3NyYy9kYXRhc2V0c1wiXG5cbi8vIEF1dG9tYXRpY2FsbHkgdHJhY2sgYW5kIGNsZWFudXAgZmlsZXMgYXQgZXhpdFxudGVtcC50cmFjaygpXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGRhdGFzZXRcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlVSTCBvciBwYXRoIHRvIHRoZSB0cmljb3RldXNlcy1hc3NlbWJsZWUgZ2l0IHJlcG9zaXRvcnlcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTpcbiAgICAgICAgXCJodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy90cmljb3RldXNlcy1hc3NlbWJsZWUuZ2l0XCIsXG4gICAgICBuYW1lOiBcInJlcG9zaXRvcnlcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgZGF0YXNldCAocG9zc2libGUgdmFsdWVzIG11c3QgaW5jbHVkZSBleGFjdGx5IG9uZSBvZiAke2dldERhdGFzZXRzKCl9KWAsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgc2NoZW1hIChwb3NzaWJsZSB2YWx1ZXMgYXJlICR7Z2V0U2NoZW1hcygpfSlgLFxuICAgICAgbmFtZTogXCJzY2hlbWFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcImlnbm9yZSBzY2hlbWFWZXJzaW9uIGZyb20gSlNPTiBmaWxlcyBhbmQgdXNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSAtLXJlcG9zaXRvcnlcIixcbiAgICAgIG5hbWU6IFwiZGV2XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImhlbHBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuXCIsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiVmFsaWRhdGUgSlNPTiBmaWxlc1wiLFxuICAgICAgY29udGVudDogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuXG4gIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBpZiAoIXZhbGlkRGF0YXNldChvcHRpb25zLmRhdGFzZXQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAtLWRhdGFzZXQgJHtvcHRpb25zLmRhdGFzZXR9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcbiAgICBpZiAoIWdldFNjaGVtYXMoKS5pbmNsdWRlcyhvcHRpb25zLnNjaGVtYSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5jbGFzcyBWYWxpZGF0ZSB7XG4gIG9wdGlvbnM6IGFueVxuICB2ZXJzaW9uMnNjaGVtYTogYW55XG4gIHRtcERpcjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMudmVyc2lvbjJzY2hlbWEgPSB7fVxuICAgIHRoaXMudG1wRGlyID0gdGVtcC5ta2RpclN5bmMoXCJ2YWxpZGF0aW9uXCIpXG4gIH1cblxuICBnZXRTY2hlbWFEaXIodGFnOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmRldiA9PSB0cnVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKFwiLS1kZXY6IHVzZSBzcmMvc2NoZW1hc1wiKVxuICAgICAgcmV0dXJuIFwic3JjL3NjaGVtYXNcIlxuICAgIH1cbiAgICBjb25zdCByZXBvc2l0b3J5RGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCBcInRyaWNvdGV1c2VzLWFzc2VtYmxlZVwiKVxuICAgIGNvbnN0IHRhZ0RpciA9IHBhdGguam9pbih0aGlzLnRtcERpciwgdGFnKVxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YWdEaXIpKSB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocmVwb3NpdG9yeURpcikpIHtcbiAgICAgICAgZ2l0LnJ1bihcbiAgICAgICAgICB0aGlzLnRtcERpcixcbiAgICAgICAgICBgY2xvbmUgLS1xdWlldCAke3RoaXMub3B0aW9ucy5yZXBvc2l0b3J5fSAke3JlcG9zaXRvcnlEaXJ9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgZ2l0LnJ1bihcbiAgICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgICAgYGNoZWNrb3V0IHRhZ3MvJHt0YWd9IC0tIHNyYy9zY2hlbWFzID4gL2Rldi9udWxsIDI+JjFgLFxuICAgICAgKVxuICAgICAgZnMucmVuYW1lU3luYyhwYXRoLmpvaW4ocmVwb3NpdG9yeURpciwgXCJzcmMvc2NoZW1hc1wiKSwgdGFnRGlyKVxuICAgIH1cbiAgICByZXR1cm4gdGFnRGlyXG4gIH1cblxuICBnZXRWYWxpZGF0b3IodmVyc2lvbjogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoISh2ZXJzaW9uIGluIHRoaXMudmVyc2lvbjJzY2hlbWEpKSB7XG4gICAgICBjb25zdCBhanYgPSBuZXcgQWp2KClcbiAgICAgIGNvbnN0IGRpciA9IHRoaXMuZ2V0U2NoZW1hRGlyKGBzY2hlbWEtJHt2ZXJzaW9ufWApXG4gICAgICBsZXQgcmVmZXJlbmNlcyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiBnZXRGaWxlcyhbXG4gICAgICAgIGAke2Rpcn0vJHt0aGlzLm9wdGlvbnMuc2NoZW1hfS8qLmpzb25gLFxuICAgICAgXSkpXG4gICAgICAgIHJlZmVyZW5jZXMucHVzaChyZWZlcmVuY2UpXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMocmVmZXJlbmNlcykpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgcmVmZXJlbmNlOiAke2ZpbGV9YClcbiAgICAgICAgYWp2LmFkZFNjaGVtYShsb2FkKGZpbGUpKVxuICAgICAgfVxuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5vcHRpb25zLnNjaGVtYVxuICAgICAgY29uc3QgU2NoZW1hID0gc2NoZW1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2NoZW1hLnNsaWNlKDEpXG4gICAgICBjb25zdCBzID0gYCR7ZGlyfS8ke3NjaGVtYX0vJHtTY2hlbWF9Lmpzb25gXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBzY2hlbWEgJHtzfWApXG4gICAgICB0aGlzLnZlcnNpb24yc2NoZW1hW3ZlcnNpb25dID0gYWp2LmNvbXBpbGUobG9hZChzKSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl1cbiAgfVxuXG4gIGdldFZlcnNpb24oY29udGVudDogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoY29udGVudC5zY2hlbWFWZXJzaW9uICE9IHVuZGVmaW5lZCkgcmV0dXJuIGNvbnRlbnQuc2NoZW1hVmVyc2lvblxuICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnMuc2NoZW1hfS0xLjBgXG4gIH1cblxuICBnZXRTY2hlbWFVUkwodmVyc2lvbjogc3RyaW5nKTogYW55IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmRldiA9PSB0cnVlKSByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgZWxzZSB7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyh0aGlzLm9wdGlvbnMucmVwb3NpdG9yeSkpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5yZXBvc2l0b3J5fS9zcmMvc2NoZW1hcyBhdCB0YWcgc2NoZW1hLSR7dmVyc2lvbn1gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXBvc2l0b3J5ID0gdGhpcy5vcHRpb25zLnJlcG9zaXRvcnkucmVwbGFjZSgvXFwuZ2l0JC8sIFwiXCIpXG4gICAgICAgIHJldHVybiBgJHtyZXBvc2l0b3J5fS90cmVlL3NjaGVtYS0ke3ZlcnNpb259L3NyYy9zY2hlbWFzYFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRlbnQ6IGFueSwgZmlsZW5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgdGFnID0gdGhpcy5nZXRWZXJzaW9uKGNvbnRlbnQpXG4gICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5nZXRWYWxpZGF0b3IodGFnKVxuICAgIGNvbnN0IHZhbGlkID0gdmFsaWRhdG9yKGNvbnRlbnQpXG4gICAgY29uc3Qgc2NoZW1hVVJMID0gdGhpcy5nZXRTY2hlbWFVUkwodGFnKVxuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7c2NoZW1hVVJMfSBmaW5kcyAke2ZpbGVuYW1lfSBpcyBpbnZhbGlkYClcbiAgICAgIGNvbnNvbGUuZXJyb3IodmFsaWRhdG9yLmVycm9ycylcbiAgICAgIHJldHVybiAxXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSlcbiAgICAgICAgY29uc29sZS5sb2coYCR7c2NoZW1hVVJMfSBmaW5kcyAke2ZpbGVuYW1lfSBpcyB2YWxpZGApXG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHByb2Nlc3MoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBsZXQgc3RhdHVzID0gMFxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhbdGhpcy5vcHRpb25zLmRhdGFdKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZSlcbiAgICAgIHN0YXR1cyB8PSB0aGlzLnZhbGlkYXRlKGNvbnRlbnQsIGZpbGUpXG4gICAgfVxuICAgIHJldHVybiBzdGF0dXNcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGxldCBkaXJlY3RvcnlTY2hlbWEgPSBbXVxuICBpZiAob3B0aW9ucy5zY2hlbWEpIHtcbiAgICBkaXJlY3RvcnlTY2hlbWEgPSBbW29wdGlvbnMuZGF0YSwgb3B0aW9ucy5zY2hlbWFdXVxuICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IGRhdGFzZXREaXJlY3RvcnlTY2hlbWEob3B0aW9ucy5kYXRhc2V0KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJlaXRoZXIgLS1zY2hlbWEgb3IgLS1kYXRhc2V0IGlzIHJlcXVpcmVkXCIpXG4gICAgcmV0dXJuIDFcbiAgfVxuICBmb3IgKGNvbnN0IGQgb2YgZGlyZWN0b3J5U2NoZW1hKSB7XG4gICAgb3B0aW9ucy5zY2hlbWEgPSBkWzFdXG4gICAgb3B0aW9ucy5kYXRhID0gZFswXVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHdvcmtpbmcgb24gZmlsZXMgJHtvcHRpb25zLmRhdGF9IHdpdGggc2NoZW1hICR7b3B0aW9ucy5zY2hlbWF9YCxcbiAgICAgIClcbiAgICBjb25zdCB2YWxpZGF0ZSA9IG5ldyBWYWxpZGF0ZShvcHRpb25zKVxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHZhbGlkYXRlLnByb2Nlc3MoKVxuICAgIGlmIChzdGF0dXMgIT0gMCkgcmV0dXJuIHN0YXR1c1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInZhbGlkYXRlX2pzb24udHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChleGl0Q29kZSkgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFFBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQUsyQixTQUFBVSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENB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
|