@tricoteuses/senat 0.3.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +55 -0
  2. package/lib/aggregates.d.ts +54 -0
  3. package/lib/aggregates.js +1122 -0
  4. package/lib/aggregates.mjs +802 -0
  5. package/lib/aggregates.ts +947 -0
  6. package/lib/config.d.ts +2 -0
  7. package/lib/config.js +49 -0
  8. package/lib/config.mjs +16 -0
  9. package/lib/config.ts +26 -0
  10. package/lib/databases.d.ts +11 -0
  11. package/lib/databases.js +125 -0
  12. package/lib/databases.mjs +26 -0
  13. package/lib/databases.ts +32 -0
  14. package/lib/datasets.d.ts +28 -0
  15. package/lib/datasets.js +93 -0
  16. package/lib/datasets.mjs +78 -0
  17. package/lib/datasets.ts +118 -0
  18. package/lib/fields.d.ts +10 -0
  19. package/lib/fields.js +68 -0
  20. package/lib/fields.mjs +22 -0
  21. package/lib/fields.ts +29 -0
  22. package/lib/index.d.ts +6 -5
  23. package/lib/index.js +236 -7
  24. package/lib/index.mjs +6 -1
  25. package/lib/index.ts +59 -0
  26. package/lib/inserters.d.ts +6 -2
  27. package/lib/inserters.js +86 -191
  28. package/lib/inserters.mjs +19 -3
  29. package/lib/inserters.ts +545 -0
  30. package/lib/model/ameli.d.ts +4 -0
  31. package/lib/model/ameli.js +167 -0
  32. package/lib/model/ameli.mjs +57 -0
  33. package/lib/model/ameli.ts +86 -0
  34. package/lib/model/debats.d.ts +4 -0
  35. package/lib/model/debats.js +123 -0
  36. package/lib/model/debats.mjs +43 -0
  37. package/lib/model/debats.ts +68 -0
  38. package/lib/model/dosleg.d.ts +29 -0
  39. package/lib/model/dosleg.js +840 -0
  40. package/lib/model/dosleg.mjs +337 -0
  41. package/lib/model/dosleg.ts +558 -0
  42. package/lib/model/index.d.ts +5 -0
  43. package/lib/model/index.js +48 -0
  44. package/lib/model/index.mjs +5 -0
  45. package/lib/model/index.ts +11 -0
  46. package/lib/model/questions.d.ts +2 -0
  47. package/lib/model/questions.js +52 -0
  48. package/lib/model/questions.mjs +8 -0
  49. package/lib/model/questions.ts +14 -0
  50. package/lib/model/sens.d.ts +2 -0
  51. package/lib/model/sens.js +57 -0
  52. package/lib/model/sens.mjs +9 -0
  53. package/lib/model/sens.ts +18 -0
  54. package/lib/model/util.d.ts +1 -0
  55. package/lib/model/util.js +60 -0
  56. package/lib/model/util.mjs +10 -0
  57. package/lib/model/util.ts +16 -0
  58. package/lib/raw_types/ameli.d.ts +416 -410
  59. package/lib/raw_types/ameli.js +26 -144
  60. package/lib/raw_types/ameli.ts +601 -0
  61. package/lib/raw_types/debats.d.ts +82 -80
  62. package/lib/raw_types/debats.js +8 -42
  63. package/lib/raw_types/debats.ts +145 -0
  64. package/lib/raw_types/dosleg.d.ts +936 -920
  65. package/lib/raw_types/dosleg.js +5 -345
  66. package/lib/raw_types/dosleg.ts +2193 -0
  67. package/lib/raw_types/questions.d.ts +226 -2
  68. package/lib/raw_types/questions.js +18 -5
  69. package/lib/raw_types/questions.mjs +1 -8
  70. package/lib/raw_types/questions.ts +249 -0
  71. package/lib/raw_types/sens.d.ts +1180 -1176
  72. package/lib/raw_types/sens.js +3 -397
  73. package/lib/raw_types/sens.ts +2907 -0
  74. package/lib/scripts/convert_data.d.ts +1 -0
  75. package/lib/scripts/convert_data.js +284 -0
  76. package/lib/scripts/convert_data.mjs +146 -0
  77. package/lib/scripts/convert_data.ts +182 -0
  78. package/lib/scripts/fix_db.d.ts +1 -0
  79. package/lib/scripts/fix_db.js +144 -0
  80. package/lib/scripts/fix_db.mjs +64 -0
  81. package/lib/scripts/fix_db.ts +75 -0
  82. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  83. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  84. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  85. package/lib/scripts/retrieve_open_data.js +371 -0
  86. package/lib/scripts/retrieve_open_data.mjs +218 -0
  87. package/lib/scripts/retrieve_open_data.ts +258 -0
  88. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  89. package/lib/scripts/retrieve_senateurs_photos.js +268 -0
  90. package/lib/scripts/retrieve_senateurs_photos.mjs +164 -0
  91. package/lib/scripts/retrieve_senateurs_photos.ts +200 -0
  92. package/lib/scripts/retrieve_textes.d.ts +1 -0
  93. package/lib/scripts/retrieve_textes.js +179 -0
  94. package/lib/scripts/retrieve_textes.mjs +77 -0
  95. package/lib/scripts/retrieve_textes.ts +95 -0
  96. package/lib/strings.d.ts +1 -0
  97. package/lib/strings.js +49 -0
  98. package/lib/strings.mjs +18 -0
  99. package/lib/strings.ts +26 -0
  100. package/lib/types/ameli.d.ts +5 -0
  101. package/lib/types/ameli.js +7 -4
  102. package/lib/types/ameli.mjs +13 -1
  103. package/lib/types/ameli.ts +21 -0
  104. package/lib/types/debats.d.ts +2 -0
  105. package/lib/types/debats.js +4 -3
  106. package/lib/types/debats.mjs +2 -1
  107. package/lib/types/debats.ts +6 -0
  108. package/lib/types/dosleg.d.ts +28 -0
  109. package/lib/types/dosleg.js +30 -3
  110. package/lib/types/dosleg.mjs +151 -1
  111. package/lib/types/dosleg.ts +284 -0
  112. package/lib/types/questions.d.ts +2 -0
  113. package/lib/types/questions.js +13 -1
  114. package/lib/types/questions.mjs +1 -1
  115. package/lib/types/questions.ts +3 -0
  116. package/lib/types/sens.d.ts +2 -0
  117. package/lib/types/sens.js +4 -3
  118. package/lib/types/sens.mjs +23 -1
  119. package/lib/types/sens.ts +36 -0
  120. package/lib/typings/windows-1252.d.js +2 -0
  121. package/lib/typings/windows-1252.d.mjs +2 -0
  122. package/lib/typings/windows-1252.d.ts +11 -0
  123. package/lib/validators/config.d.ts +1 -0
  124. package/lib/validators/config.js +121 -0
  125. package/lib/validators/config.mjs +54 -0
  126. package/lib/validators/config.ts +79 -0
  127. package/lib/validators/senat.d.ts +0 -0
  128. package/lib/validators/senat.js +28 -0
  129. package/lib/validators/senat.mjs +24 -0
  130. package/lib/validators/senat.ts +26 -0
  131. package/package.json +35 -4
@@ -0,0 +1,79 @@
1
+ import {
2
+ validateChain,
3
+ validateInteger,
4
+ validateNonEmptyTrimmedString,
5
+ validateNumber,
6
+ validateOption,
7
+ validateString,
8
+ validateStringToNumber,
9
+ validateTest,
10
+ } from "@biryani/core"
11
+
12
+ function validateDb(data: any): [any, any] {
13
+ if (data === null || data === undefined) {
14
+ return [data, "Missing value"]
15
+ }
16
+ if (typeof data !== "object") {
17
+ return [data, `Expected an object got "${typeof data}"`]
18
+ }
19
+
20
+ data = { ...data }
21
+ const errors: { [key: string]: any } = {}
22
+ const remainingKeys = new Set(Object.keys(data))
23
+
24
+ for (const key of ["host", "password", "user"]) {
25
+ remainingKeys.delete(key)
26
+ const [value, error] = validateNonEmptyTrimmedString(data[key])
27
+ data[key] = value
28
+ if (error !== null) {
29
+ errors[key] = error
30
+ }
31
+ }
32
+
33
+ {
34
+ const key = "port"
35
+ remainingKeys.delete(key)
36
+ const [value, error] = validateChain(
37
+ validateOption([validateString, validateStringToNumber], validateNumber),
38
+ validateInteger,
39
+ validateTest(
40
+ (value: any) => 0 <= value && value <= 65535,
41
+ "Must be an integer between 0 and 65535",
42
+ ),
43
+ )(data[key])
44
+ data[key] = value
45
+ if (error !== null) {
46
+ errors[key] = error
47
+ }
48
+ }
49
+
50
+ for (const key of remainingKeys) {
51
+ errors[key] = "Unexpected item"
52
+ }
53
+ return [data, Object.keys(errors).length === 0 ? null : errors]
54
+ }
55
+
56
+ export function validateConfig(data: any): [any, any] {
57
+ if (data === null || data === undefined) {
58
+ return [data, "Missing value"]
59
+ }
60
+ if (typeof data !== "object") {
61
+ return [data, `Expected an object got "${typeof data}"`]
62
+ }
63
+
64
+ data = { ...data }
65
+ const errors: { [key: string]: any } = {}
66
+ const remainingKeys = new Set(Object.keys(data))
67
+
68
+ {
69
+ const key = "db"
70
+ remainingKeys.delete(key)
71
+ const [value, error] = validateDb(data[key])
72
+ data[key] = value
73
+ if (error !== null) {
74
+ errors[key] = error
75
+ }
76
+ }
77
+
78
+ return [data, Object.keys(errors).length === 0 ? null : errors]
79
+ }
File without changes
@@ -0,0 +1,28 @@
1
+ // import { validateNonEmptyTrimmedString } from "@biryani/core"
2
+
3
+ // const acteurUidRegExp = /^PA\d+$/
4
+ // const organeUidRegExp = /^PO\d+$/
5
+
6
+ // export function validateSenateurUid(input: any): [any, any] {
7
+ // const [value, error] = validateNonEmptyTrimmedString(input)
8
+ // if (error !== null) {
9
+ // return [value, error]
10
+ // }
11
+ // if (!acteurUidRegExp.test(value)) {
12
+ // return [value, 'Invalid "acteur" unique ID']
13
+ // }
14
+ // return [value, null]
15
+ // }
16
+
17
+ // export function validateOrganeUid(input: any): [any, any] {
18
+ // const [value, error] = validateNonEmptyTrimmedString(input)
19
+ // if (error !== null) {
20
+ // return [value, error]
21
+ // }
22
+ // if (!organeUidRegExp.test(value)) {
23
+ // return [value, 'Invalid "organe" unique ID']
24
+ // }
25
+ // return [value, null]
26
+ // }
27
+ "use strict";
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvcnMvc2VuYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgdmFsaWRhdGVOb25FbXB0eVRyaW1tZWRTdHJpbmcgfSBmcm9tIFwiQGJpcnlhbmkvY29yZVwiXG5cbi8vIGNvbnN0IGFjdGV1clVpZFJlZ0V4cCA9IC9eUEFcXGQrJC9cbi8vIGNvbnN0IG9yZ2FuZVVpZFJlZ0V4cCA9IC9eUE9cXGQrJC9cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VuYXRldXJVaWQoaW5wdXQ6IGFueSk6IFthbnksIGFueV0ge1xuLy8gICBjb25zdCBbdmFsdWUsIGVycm9yXSA9IHZhbGlkYXRlTm9uRW1wdHlUcmltbWVkU3RyaW5nKGlucHV0KVxuLy8gICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbi8vICAgICByZXR1cm4gW3ZhbHVlLCBlcnJvcl1cbi8vICAgfVxuLy8gICBpZiAoIWFjdGV1clVpZFJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuLy8gICAgIHJldHVybiBbdmFsdWUsICdJbnZhbGlkIFwiYWN0ZXVyXCIgdW5pcXVlIElEJ11cbi8vICAgfVxuLy8gICByZXR1cm4gW3ZhbHVlLCBudWxsXVxuLy8gfVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVPcmdhbmVVaWQoaW5wdXQ6IGFueSk6IFthbnksIGFueV0ge1xuLy8gICBjb25zdCBbdmFsdWUsIGVycm9yXSA9IHZhbGlkYXRlTm9uRW1wdHlUcmltbWVkU3RyaW5nKGlucHV0KVxuLy8gICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbi8vICAgICByZXR1cm4gW3ZhbHVlLCBlcnJvcl1cbi8vICAgfVxuLy8gICBpZiAoIW9yZ2FuZVVpZFJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuLy8gICAgIHJldHVybiBbdmFsdWUsICdJbnZhbGlkIFwib3JnYW5lXCIgdW5pcXVlIElEJ11cbi8vICAgfVxuLy8gICByZXR1cm4gW3ZhbHVlLCBudWxsXVxuLy8gfVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ // import { validateNonEmptyTrimmedString } from "@biryani/core"
3
+ // const acteurUidRegExp = /^PA\d+$/
4
+ // const organeUidRegExp = /^PO\d+$/
5
+ // export function validateSenateurUid(input: any): [any, any] {
6
+ // const [value, error] = validateNonEmptyTrimmedString(input)
7
+ // if (error !== null) {
8
+ // return [value, error]
9
+ // }
10
+ // if (!acteurUidRegExp.test(value)) {
11
+ // return [value, 'Invalid "acteur" unique ID']
12
+ // }
13
+ // return [value, null]
14
+ // }
15
+ // export function validateOrganeUid(input: any): [any, any] {
16
+ // const [value, error] = validateNonEmptyTrimmedString(input)
17
+ // if (error !== null) {
18
+ // return [value, error]
19
+ // }
20
+ // if (!organeUidRegExp.test(value)) {
21
+ // return [value, 'Invalid "organe" unique ID']
22
+ // }
23
+ // return [value, null]
24
+ // }
@@ -0,0 +1,26 @@
1
+ // import { validateNonEmptyTrimmedString } from "@biryani/core"
2
+
3
+ // const acteurUidRegExp = /^PA\d+$/
4
+ // const organeUidRegExp = /^PO\d+$/
5
+
6
+ // export function validateSenateurUid(input: any): [any, any] {
7
+ // const [value, error] = validateNonEmptyTrimmedString(input)
8
+ // if (error !== null) {
9
+ // return [value, error]
10
+ // }
11
+ // if (!acteurUidRegExp.test(value)) {
12
+ // return [value, 'Invalid "acteur" unique ID']
13
+ // }
14
+ // return [value, null]
15
+ // }
16
+
17
+ // export function validateOrganeUid(input: any): [any, any] {
18
+ // const [value, error] = validateNonEmptyTrimmedString(input)
19
+ // if (error !== null) {
20
+ // return [value, error]
21
+ // }
22
+ // if (!organeUidRegExp.test(value)) {
23
+ // return [value, 'Invalid "organe" unique ID']
24
+ // }
25
+ // return [value, null]
26
+ // }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tricoteuses/senat",
3
- "version": "0.3.2",
3
+ "version": "1.1.1",
4
4
  "description": "Handle French Sénat's open data",
5
5
  "keywords": [
6
6
  "France",
@@ -26,23 +26,44 @@
26
26
  "exports": {
27
27
  ".": {
28
28
  "import": "./lib/index.mjs",
29
- "require": "./lib/index.js"
29
+ "require": "./lib/index.js",
30
+ "types": "./lib/index.d.ts"
30
31
  },
31
32
  "./package.json": "./package.json"
32
33
  },
34
+ "typesVersions": {
35
+ "*": {
36
+ ".": [
37
+ "./lib/index.d.ts"
38
+ ]
39
+ }
40
+ },
33
41
  "publishConfig": {
34
42
  "access": "public"
35
43
  },
36
44
  "scripts": {
37
- "build": "npm run build:types && npm run build:mjs && npm run build:cjs",
45
+ "build": "npm run build:types && npm run build:js && npm run build:mjs && npm run build:cjs && npm run build:static",
46
+ "build:js": "npx babel src --out-dir lib --extensions \".ts\" --source-maps inline",
38
47
  "build:cjs": "babel src --out-dir lib --extensions \".ts\" --source-maps inline",
39
48
  "build:mjs": "tsc && for file in lib/*.js lib/**/*.js; do new_file=`echo $file | sed 's/.js/.mjs/'`; mv $file $new_file; done",
40
49
  "build:types": "tsc --emitDeclarationOnly",
50
+ "build:static": "npx babel src --out-dir lib --copy-files",
41
51
  "prepublishOnly": "npm run build",
42
52
  "prettier": "prettier --write 'src/**/*.ts' 'tests/**/*.test.ts'",
43
53
  "type-check": "tsc --noEmit",
44
54
  "type-check:watch": "npm run type-check -- --watch"
45
55
  },
56
+ "dependencies": {
57
+ "@biryani/core": "^0.2.1",
58
+ "command-line-args": "^5.1.1",
59
+ "cross-fetch": "^3.0.4",
60
+ "dotenv": "^8.2.0",
61
+ "fs-extra": "^9.1.0",
62
+ "node-stream-zip": "^1.8.2",
63
+ "pg-promise": "^10.9.2",
64
+ "slug": "^4.0.2",
65
+ "windows-1252": "^1.0.0"
66
+ },
46
67
  "devDependencies": {
47
68
  "@babel/cli": "^7.11.6",
48
69
  "@babel/core": "^7.11.6",
@@ -51,10 +72,20 @@
51
72
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
52
73
  "@babel/preset-env": "^7.11.5",
53
74
  "@babel/preset-typescript": "^7.10.4",
75
+ "@typed-code/schemats": "^5.0.1",
76
+ "@types/command-line-args": "^5.0.0",
77
+ "@types/fs-extra": "^9.0.7",
78
+ "@types/node": "^14.14.28",
79
+ "@types/slug": "^0.9.1",
80
+ "babel-eslint": "^10.1.0",
81
+ "core-js": "^3.3.2",
54
82
  "eslint": "^8.22.0",
83
+ "prettier": "^2.2.1",
84
+ "regenerator-runtime": "^0.13.3",
85
+ "tslib": "^2.1.0",
55
86
  "typescript": "^4.1.5"
56
87
  },
57
88
  "engines": {
58
- "node": ">=8"
89
+ "node": ">=16"
59
90
  }
60
91
  }