@proconnect-gouv/proconnect.identite 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/README.md +117 -0
  4. package/dist/data/certification/commune-code-conversion.d.ts +13 -0
  5. package/dist/data/certification/commune-code-conversion.d.ts.map +1 -0
  6. package/dist/data/certification/commune-code-conversion.js +5188 -0
  7. package/dist/data/certification/country-iso-to-cog.d.ts +12 -0
  8. package/dist/data/certification/country-iso-to-cog.d.ts.map +1 -0
  9. package/dist/data/certification/country-iso-to-cog.js +438 -0
  10. package/dist/data/certification/index.d.ts +3 -0
  11. package/dist/data/certification/index.d.ts.map +1 -0
  12. package/dist/data/certification/index.js +3 -0
  13. package/dist/managers/certification/adapters/api_entreprise.d.ts +4 -0
  14. package/dist/managers/certification/adapters/api_entreprise.d.ts.map +1 -0
  15. package/dist/managers/certification/adapters/api_entreprise.js +14 -0
  16. package/dist/managers/certification/adapters/franceconnect.d.ts +3 -0
  17. package/dist/managers/certification/adapters/franceconnect.d.ts.map +1 -0
  18. package/dist/managers/certification/adapters/franceconnect.js +15 -0
  19. package/dist/managers/certification/adapters/insee.d.ts +4 -0
  20. package/dist/managers/certification/adapters/insee.d.ts.map +1 -0
  21. package/dist/managers/certification/adapters/insee.js +29 -0
  22. package/dist/managers/certification/adapters/rne.d.ts +4 -0
  23. package/dist/managers/certification/adapters/rne.d.ts.map +1 -0
  24. package/dist/managers/certification/adapters/rne.js +45 -0
  25. package/dist/managers/certification/birthplace-conversion.d.ts +27 -0
  26. package/dist/managers/certification/birthplace-conversion.d.ts.map +1 -0
  27. package/dist/managers/certification/birthplace-conversion.js +45 -0
  28. package/dist/managers/certification/certification-score.d.ts +22 -0
  29. package/dist/managers/certification/certification-score.d.ts.map +1 -0
  30. package/dist/managers/certification/certification-score.js +72 -0
  31. package/dist/managers/certification/index.d.ts +1 -1
  32. package/dist/managers/certification/index.d.ts.map +1 -1
  33. package/dist/managers/certification/index.js +1 -1
  34. package/dist/managers/certification/is-organization-dirigeant.d.ts +38 -8
  35. package/dist/managers/certification/is-organization-dirigeant.d.ts.map +1 -1
  36. package/dist/managers/certification/is-organization-dirigeant.js +89 -52
  37. package/dist/managers/certification/normalize.d.ts +21 -0
  38. package/dist/managers/certification/normalize.d.ts.map +1 -0
  39. package/dist/managers/certification/normalize.js +64 -0
  40. package/dist/managers/franceconnect/openid-client.d.ts +1 -0
  41. package/dist/managers/franceconnect/openid-client.d.ts.map +1 -1
  42. package/dist/managers/organization/adapters/api_entreprise.d.ts +25 -0
  43. package/dist/managers/organization/adapters/api_entreprise.d.ts.map +1 -0
  44. package/dist/{mappers/organization/from-siret.js → managers/organization/adapters/api_entreprise.js} +26 -3
  45. package/dist/managers/organization/get-organization-info.d.ts +2 -2
  46. package/dist/managers/organization/get-organization-info.d.ts.map +1 -1
  47. package/dist/managers/organization/get-organization-info.js +6 -6
  48. package/dist/repositories/organization/upsert.d.ts +1 -1
  49. package/dist/repositories/organization/upsert.d.ts.map +1 -1
  50. package/dist/repositories/organization/upsert.js +26 -1
  51. package/dist/repositories/user/get-franceconnect-user-info.d.ts +1 -0
  52. package/dist/repositories/user/get-franceconnect-user-info.d.ts.map +1 -1
  53. package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts +1 -0
  54. package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts.map +1 -1
  55. package/dist/services/organization/index.d.ts +2 -0
  56. package/dist/services/organization/index.d.ts.map +1 -1
  57. package/dist/services/organization/index.js +2 -0
  58. package/dist/services/organization/is-public-service.d.ts +3 -0
  59. package/dist/services/organization/is-public-service.d.ts.map +1 -0
  60. package/dist/services/organization/is-public-service.js +19 -0
  61. package/dist/services/organization/is-syndicat-communal.d.ts +3 -0
  62. package/dist/services/organization/is-syndicat-communal.d.ts.map +1 -0
  63. package/dist/services/organization/is-syndicat-communal.js +13 -0
  64. package/dist/types/dirigeant.d.ts +5 -0
  65. package/dist/types/dirigeant.d.ts.map +1 -1
  66. package/dist/types/dirigeant.js +2 -0
  67. package/dist/types/franceconnect.d.ts +2 -0
  68. package/dist/types/franceconnect.d.ts.map +1 -1
  69. package/dist/types/franceconnect.js +1 -0
  70. package/dist/types/organization.d.ts +3 -3
  71. package/dist/types/organization.d.ts.map +1 -1
  72. package/package.json +9 -8
  73. package/src/data/certification/commune-code-conversion.ts +5189 -0
  74. package/src/data/certification/country-iso-to-cog.ts +439 -0
  75. package/src/data/certification/index.ts +4 -0
  76. package/src/managers/certification/adapters/api_entreprise.test.ts +68 -0
  77. package/src/managers/certification/adapters/api_entreprise.test.ts.snapshot +109 -0
  78. package/src/{mappers/certification/index.ts → managers/certification/adapters/api_entreprise.ts} +8 -5
  79. package/src/managers/certification/adapters/franceconnect.ts +21 -0
  80. package/src/managers/certification/adapters/insee.test.ts +18 -0
  81. package/src/managers/certification/adapters/insee.test.ts.snapshot +21 -0
  82. package/src/managers/certification/adapters/insee.ts +39 -0
  83. package/src/managers/certification/adapters/rne.test.ts +276 -0
  84. package/src/managers/certification/adapters/rne.ts +64 -0
  85. package/src/managers/certification/birthplace-conversion.test.ts +76 -0
  86. package/src/managers/certification/birthplace-conversion.ts +58 -0
  87. package/src/managers/certification/certification-score.test.ts +309 -0
  88. package/src/managers/certification/certification-score.ts +97 -0
  89. package/src/managers/certification/index.ts +1 -1
  90. package/src/managers/certification/is-organization-dirigeant.test.ts +144 -53
  91. package/src/managers/certification/is-organization-dirigeant.ts +132 -106
  92. package/src/managers/certification/normalize.test.ts +71 -0
  93. package/src/managers/certification/normalize.ts +72 -0
  94. package/src/managers/organization/adapters/api_entreprise.test.ts +31 -0
  95. package/src/{mappers/organization/from-siret.test.ts.snapshot → managers/organization/adapters/api_entreprise.test.ts.snapshot} +26 -3
  96. package/src/{mappers/organization/from-siret.ts → managers/organization/adapters/api_entreprise.ts} +55 -5
  97. package/src/managers/organization/get-organization-info.test.ts +2 -2
  98. package/src/managers/organization/get-organization-info.ts +10 -10
  99. package/src/repositories/organization/get-users-by-organization.test.ts.snapshot +1 -1
  100. package/src/repositories/organization/upsert.ts +69 -19
  101. package/src/repositories/user/find-by-email.test.ts +1 -1
  102. package/src/repositories/user/find-by-id.test.ts +1 -1
  103. package/src/repositories/user/get-by-id.test.ts +1 -1
  104. package/src/repositories/user/get-franceconnect-user-info.test.ts +1 -0
  105. package/src/repositories/user/upsert-franceconnect-userinfo.test.ts +2 -0
  106. package/src/services/organization/index.ts +2 -0
  107. package/src/services/organization/is-public-service.test.ts +99 -0
  108. package/src/services/organization/is-public-service.ts +35 -0
  109. package/src/services/organization/is-syndicat-communal.test.ts +31 -0
  110. package/src/services/organization/is-syndicat-communal.ts +18 -0
  111. package/src/types/dirigeant.ts +3 -0
  112. package/src/types/franceconnect.ts +1 -0
  113. package/src/types/organization-info.ts +1 -1
  114. package/src/types/organization.ts +3 -3
  115. package/testing/seed/franceconnect/index.ts +12 -9
  116. package/testing/seed/organizations/index.ts +108 -0
  117. package/tsconfig.json +6 -2
  118. package/tsconfig.lib.tsbuildinfo +1 -1
  119. package/dist/managers/certification/distance.d.ts +0 -4
  120. package/dist/managers/certification/distance.d.ts.map +0 -1
  121. package/dist/managers/certification/distance.js +0 -16
  122. package/dist/mappers/certification/index.d.ts +0 -4
  123. package/dist/mappers/certification/index.d.ts.map +0 -1
  124. package/dist/mappers/certification/index.js +0 -11
  125. package/dist/mappers/index.d.ts +0 -2
  126. package/dist/mappers/index.d.ts.map +0 -1
  127. package/dist/mappers/index.js +0 -2
  128. package/dist/mappers/organization/from-siret.d.ts +0 -5
  129. package/dist/mappers/organization/from-siret.d.ts.map +0 -1
  130. package/dist/mappers/organization/index.d.ts +0 -2
  131. package/dist/mappers/organization/index.d.ts.map +0 -1
  132. package/dist/mappers/organization/index.js +0 -2
  133. package/src/managers/certification/distance.test.ts +0 -109
  134. package/src/managers/certification/distance.ts +0 -41
  135. package/src/mappers/index.ts +0 -3
  136. package/src/mappers/organization/from-siret.test.ts +0 -26
  137. package/src/mappers/organization/index.ts +0 -3
  138. package/testing/seed/insee/index.ts +0 -22
  139. package/testing/seed/mandataires/index.ts +0 -32
@@ -1,4 +0,0 @@
1
- import type { IdentityVector } from "#src/types";
2
- export declare const millisecondsInDay = 86400000;
3
- export declare function distance(franceconnectUserInfo: IdentityVector, sourceDirigeant: IdentityVector): number;
4
- //# sourceMappingURL=distance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"distance.d.ts","sourceRoot":"","sources":["../../../src/managers/certification/distance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,QAAQ,CACtB,qBAAqB,EAAE,cAAc,EACrC,eAAe,EAAE,cAAc,GAC9B,MAAM,CA2BR"}
@@ -1,16 +0,0 @@
1
- //
2
- import leven from "leven";
3
- //
4
- // \from https://github.com/date-fns/date-fns/blob/v4.1.0/src/constants/index.ts#L84
5
- export const millisecondsInDay = 86400000;
6
- export function distance(franceconnectUserInfo, sourceDirigeant) {
7
- const sameGivenName = () => leven(franceconnectUserInfo.given_name?.toUpperCase() ||
8
- Math.random().toString(36), sourceDirigeant.given_name?.toUpperCase() || Math.random().toString(36));
9
- const sameFamilyName = () => leven(franceconnectUserInfo.family_name?.toUpperCase() ||
10
- Math.random().toString(36), sourceDirigeant.family_name?.toUpperCase() || Math.random().toString(36));
11
- const sameBirthDay = () => (Number(sourceDirigeant.birthdate) -
12
- Number(franceconnectUserInfo.birthdate)) /
13
- millisecondsInDay;
14
- const sameBirthPlace = () => leven(franceconnectUserInfo.birthplace || Math.random().toString(36), sourceDirigeant.birthplace || Math.random().toString(36));
15
- return [sameGivenName, sameFamilyName, sameBirthDay, sameBirthPlace].reduce((value, metric) => value + metric(), 0);
16
- }
@@ -1,4 +0,0 @@
1
- import type { IdentityVector } from "#src/types";
2
- import type { InfogreffeSirenMandatairesSociaux } from "@proconnect-gouv/proconnect.entreprise/types";
3
- export declare function fromInfogreffe(mandataire: InfogreffeSirenMandatairesSociaux): IdentityVector;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/certification/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AAItG,wBAAgB,cAAc,CAC5B,UAAU,EAAE,iCAAiC,GAC5C,cAAc,CAQhB"}
@@ -1,11 +0,0 @@
1
- //
2
- //
3
- export function fromInfogreffe(mandataire) {
4
- const birthdate = new Date(mandataire.date_naissance_timestamp || NaN);
5
- return {
6
- birthplace: mandataire.lieu_naissance ?? null,
7
- birthdate: isNaN(birthdate.getTime()) ? null : birthdate,
8
- family_name: mandataire.nom ?? null,
9
- given_name: mandataire.prenom ?? null,
10
- };
11
- }
@@ -1,2 +0,0 @@
1
- export * as OrganizationInfoMapper from "./organization/index.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,sBAAsB,MAAM,yBAAyB,CAAC"}
@@ -1,2 +0,0 @@
1
- //
2
- export * as OrganizationInfoMapper from "./organization/index.js";
@@ -1,5 +0,0 @@
1
- import "#src/types";
2
- import { type OrganizationInfo } from "#src/types";
3
- import type { InseeSireneEstablishmentSiretResponseData } from "@proconnect-gouv/proconnect.entreprise/types";
4
- export declare function fromSiret(siretData: InseeSireneEstablishmentSiretResponseData): OrganizationInfo;
5
- //# sourceMappingURL=from-siret.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"from-siret.d.ts","sourceRoot":"","sources":["../../../src/mappers/organization/from-siret.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,CAAC;AACpB,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO3E,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,8CAA8C,CAAC;AAK9G,wBAAgB,SAAS,CACvB,SAAS,EAAE,yCAAyC,GACnD,gBAAgB,CAyDlB"}
@@ -1,2 +0,0 @@
1
- export * from "./from-siret.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC"}
@@ -1,2 +0,0 @@
1
- //
2
- export * from "./from-siret.js";
@@ -1,109 +0,0 @@
1
- //
2
-
3
- import assert from "node:assert/strict";
4
- import { describe, it } from "node:test";
5
- import { distance } from "./distance.js";
6
-
7
- //
8
-
9
- describe("matching", () => {
10
- it("same Bernard", () => {
11
- assert.equal(
12
- distance(
13
- {
14
- birthdate: new Date("1946-08-17"),
15
- birthplace: "MARS",
16
- family_name: "Bernard",
17
- given_name: "Stéphane",
18
- },
19
- {
20
- birthdate: new Date("1946-08-17"),
21
- birthplace: "MARS",
22
- family_name: "Bernard",
23
- given_name: "Stéphane",
24
- },
25
- ),
26
- 0,
27
- );
28
- });
29
-
30
- it("Stéphane but DuMoulin", () => {
31
- assert.equal(
32
- distance(
33
- {
34
- birthdate: new Date("1946-08-17"),
35
- birthplace: "MARS",
36
- family_name: "DuMoulin",
37
- given_name: "Stéphane",
38
- },
39
- {
40
- birthdate: new Date("1946-08-17"),
41
- birthplace: "MARS",
42
- family_name: "Bernard",
43
- given_name: "Stéphane",
44
- },
45
- ),
46
- 8,
47
- );
48
- });
49
-
50
- it("same Bernard but junior", () => {
51
- assert.equal(
52
- distance(
53
- {
54
- birthdate: new Date("1946-08-17"),
55
- birthplace: "MARS",
56
- family_name: "Bernard",
57
- given_name: "Stéphane",
58
- },
59
- {
60
- birthdate: new Date("1986-08-17"),
61
- birthplace: "MARS",
62
- family_name: "Bernard",
63
- given_name: "Stéphane",
64
- },
65
- ),
66
- 14610,
67
- );
68
- });
69
-
70
- it("same Bernard but from VENUS", () => {
71
- assert.equal(
72
- distance(
73
- {
74
- birthdate: new Date("1946-08-17"),
75
- birthplace: "MARS",
76
- family_name: "Bernard",
77
- given_name: "Stéphane",
78
- },
79
- {
80
- birthdate: new Date("1946-08-17"),
81
- birthplace: "VENUS",
82
- family_name: "Bernard",
83
- given_name: "Stéphane",
84
- },
85
- ),
86
- 4,
87
- );
88
- });
89
-
90
- it("inverse Bernard", () => {
91
- assert.equal(
92
- distance(
93
- {
94
- birthdate: new Date("1946-08-17"),
95
- birthplace: "MARS",
96
- family_name: "Stéphane",
97
- given_name: "Bernard",
98
- },
99
- {
100
- birthdate: new Date("1946-08-17"),
101
- birthplace: "MARS",
102
- family_name: "Bernard",
103
- given_name: "Stéphane",
104
- },
105
- ),
106
- 14,
107
- );
108
- });
109
- });
@@ -1,41 +0,0 @@
1
- //
2
-
3
- import type { IdentityVector } from "#src/types";
4
- import leven from "leven";
5
-
6
- //
7
-
8
- // \from https://github.com/date-fns/date-fns/blob/v4.1.0/src/constants/index.ts#L84
9
- export const millisecondsInDay = 86400000;
10
-
11
- export function distance(
12
- franceconnectUserInfo: IdentityVector,
13
- sourceDirigeant: IdentityVector,
14
- ): number {
15
- const sameGivenName = () =>
16
- leven(
17
- franceconnectUserInfo.given_name?.toUpperCase() ||
18
- Math.random().toString(36),
19
- sourceDirigeant.given_name?.toUpperCase() || Math.random().toString(36),
20
- );
21
- const sameFamilyName = () =>
22
- leven(
23
- franceconnectUserInfo.family_name?.toUpperCase() ||
24
- Math.random().toString(36),
25
- sourceDirigeant.family_name?.toUpperCase() || Math.random().toString(36),
26
- );
27
- const sameBirthDay = () =>
28
- (Number(sourceDirigeant.birthdate) -
29
- Number(franceconnectUserInfo.birthdate)) /
30
- millisecondsInDay;
31
- const sameBirthPlace = () =>
32
- leven(
33
- franceconnectUserInfo.birthplace || Math.random().toString(36),
34
- sourceDirigeant.birthplace || Math.random().toString(36),
35
- );
36
-
37
- return [sameGivenName, sameFamilyName, sameBirthDay, sameBirthPlace].reduce(
38
- (value, metric) => value + metric(),
39
- 0,
40
- );
41
- }
@@ -1,3 +0,0 @@
1
- //
2
-
3
- export * as OrganizationInfoMapper from "./organization/index.js";
@@ -1,26 +0,0 @@
1
- //
2
-
3
- import {
4
- AppleEuropeInc,
5
- MaireClamart,
6
- RogalDornEntrepreneur,
7
- } from "@proconnect-gouv/proconnect.entreprise/testing/seed/insee/siret";
8
- import { suite, test } from "node:test";
9
- import { fromSiret } from "./from-siret.js";
10
-
11
- suite("fromSiret", () => {
12
- test("AppleEuropeInc", (t) => {
13
- const organization = fromSiret(AppleEuropeInc);
14
- t.assert.snapshot(organization);
15
- });
16
-
17
- test("Commune de clamart - Mairie", (t) => {
18
- const organization = fromSiret(MaireClamart);
19
- t.assert.snapshot(organization);
20
- });
21
-
22
- test("RogalDornEntrepreneur", (t) => {
23
- const organization = fromSiret(RogalDornEntrepreneur);
24
- t.assert.snapshot(organization);
25
- });
26
- });
@@ -1,3 +0,0 @@
1
- //
2
-
3
- export * from "./from-siret.js";
@@ -1,22 +0,0 @@
1
- //
2
-
3
- import type { InseeSiretEstablishment } from "@proconnect-gouv/proconnect.insee/types";
4
-
5
- //
6
- export const LiElJonsonEstablishment: InseeSiretEstablishment = {
7
- uniteLegale: {
8
- codeCommuneNaissanceUniteLegale: "INW",
9
- dateNaissanceUniteLegale: "285000205",
10
- nomUniteLegale: "EL'JONSON",
11
- prenom1UniteLegale: "LION",
12
- },
13
- };
14
-
15
- export const RogalDornEstablishment: InseeSiretEstablishment = {
16
- uniteLegale: {
17
- codeCommuneNaissanceUniteLegale: "INWIT",
18
- dateNaissanceUniteLegale: "290000107",
19
- nomUniteLegale: "DORN",
20
- prenom1UniteLegale: "ROGAL",
21
- },
22
- };
@@ -1,32 +0,0 @@
1
- //
2
-
3
- import type { InfogreffeSirenMandatairesSociaux } from "@proconnect-gouv/proconnect.entreprise/types";
4
-
5
- //
6
-
7
- export const UlysseToriMandataire: InfogreffeSirenMandatairesSociaux = {
8
- code_nationalite: "FR",
9
- code_pays_naissance: "FR",
10
- date_naissance_timestamp: 715824000000,
11
- date_naissance: "1992-09-07",
12
- fonction: "DIRIGEANT",
13
- lieu_naissance: "Internet",
14
- nationalite: "Française",
15
- nom: "TOSI",
16
- pays_naissance: "FRANCE",
17
- prenom: "Ulysse",
18
- type: "personne_physique",
19
- };
20
- export const RogalDornMandataire: InfogreffeSirenMandatairesSociaux = {
21
- code_nationalite: "IM",
22
- code_pays_naissance: "IM",
23
- date_naissance_timestamp: 852984946800000,
24
- date_naissance: "29000-01-07",
25
- fonction: "Primarch",
26
- lieu_naissance: "INWIT",
27
- nationalite: "IMPERIAL",
28
- nom: "DORN",
29
- pays_naissance: "IMPERIUM",
30
- prenom: "ROGAL",
31
- type: "personne_physique",
32
- };