@altura_ma/onemcp 0.3.0 → 0.5.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 (144) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +100 -77
  3. package/dist/api/keys.d.ts +30 -0
  4. package/dist/api/keys.d.ts.map +1 -0
  5. package/dist/api/keys.js +98 -0
  6. package/dist/api/keys.js.map +1 -0
  7. package/dist/api/openapi.d.ts +4 -0
  8. package/dist/api/openapi.d.ts.map +1 -0
  9. package/dist/api/openapi.js +108 -0
  10. package/dist/api/openapi.js.map +1 -0
  11. package/dist/api/rest.d.ts +4 -0
  12. package/dist/api/rest.d.ts.map +1 -0
  13. package/dist/api/rest.js +143 -0
  14. package/dist/api/rest.js.map +1 -0
  15. package/dist/api/status.d.ts +46 -0
  16. package/dist/api/status.d.ts.map +1 -0
  17. package/dist/api/status.js +44 -0
  18. package/dist/api/status.js.map +1 -0
  19. package/dist/cache/index.d.ts.map +1 -1
  20. package/dist/cache/index.js +2 -1
  21. package/dist/cache/index.js.map +1 -1
  22. package/dist/connectors/base.d.ts +2 -0
  23. package/dist/connectors/base.d.ts.map +1 -1
  24. package/dist/connectors/base.js +19 -2
  25. package/dist/connectors/base.js.map +1 -1
  26. package/dist/connectors/bodacc.d.ts +3 -2
  27. package/dist/connectors/bodacc.d.ts.map +1 -1
  28. package/dist/connectors/bodacc.js +17 -4
  29. package/dist/connectors/bodacc.js.map +1 -1
  30. package/dist/connectors/dvf.d.ts +0 -4
  31. package/dist/connectors/dvf.d.ts.map +1 -1
  32. package/dist/connectors/dvf.js +13 -10
  33. package/dist/connectors/dvf.js.map +1 -1
  34. package/dist/connectors/georisques.d.ts.map +1 -1
  35. package/dist/connectors/georisques.js +16 -27
  36. package/dist/connectors/georisques.js.map +1 -1
  37. package/dist/connectors/index.d.ts +3 -1
  38. package/dist/connectors/index.d.ts.map +1 -1
  39. package/dist/connectors/index.js +3 -1
  40. package/dist/connectors/index.js.map +1 -1
  41. package/dist/connectors/inpi-rne.d.ts.map +1 -1
  42. package/dist/connectors/inpi-rne.js +15 -8
  43. package/dist/connectors/inpi-rne.js.map +1 -1
  44. package/dist/connectors/insee-sirene.d.ts.map +1 -1
  45. package/dist/connectors/insee-sirene.js +7 -2
  46. package/dist/connectors/insee-sirene.js.map +1 -1
  47. package/dist/connectors/legifrance.d.ts +69 -0
  48. package/dist/connectors/legifrance.d.ts.map +1 -0
  49. package/dist/connectors/legifrance.js +137 -0
  50. package/dist/connectors/legifrance.js.map +1 -0
  51. package/dist/connectors/recherche-entreprises.d.ts +1 -0
  52. package/dist/connectors/recherche-entreprises.d.ts.map +1 -1
  53. package/dist/connectors/recherche-entreprises.js +4 -1
  54. package/dist/connectors/recherche-entreprises.js.map +1 -1
  55. package/dist/http.js +65 -5
  56. package/dist/http.js.map +1 -1
  57. package/dist/index.js +8 -2
  58. package/dist/index.js.map +1 -1
  59. package/dist/schemas/canonical.d.ts +28 -0
  60. package/dist/schemas/canonical.d.ts.map +1 -1
  61. package/dist/schemas/canonical.js +1 -0
  62. package/dist/schemas/canonical.js.map +1 -1
  63. package/dist/server.d.ts +2 -2
  64. package/dist/server.d.ts.map +1 -1
  65. package/dist/server.js +21 -68
  66. package/dist/server.js.map +1 -1
  67. package/dist/tools/admin-geo.d.ts.map +1 -1
  68. package/dist/tools/admin-geo.js +40 -0
  69. package/dist/tools/admin-geo.js.map +1 -1
  70. package/dist/tools/area-intel.d.ts +3 -0
  71. package/dist/tools/area-intel.d.ts.map +1 -0
  72. package/dist/tools/area-intel.js +109 -0
  73. package/dist/tools/area-intel.js.map +1 -0
  74. package/dist/tools/company-layer2.d.ts.map +1 -1
  75. package/dist/tools/company-layer2.js +7 -0
  76. package/dist/tools/company-layer2.js.map +1 -1
  77. package/dist/tools/company.d.ts.map +1 -1
  78. package/dist/tools/company.js +79 -3
  79. package/dist/tools/company.js.map +1 -1
  80. package/dist/tools/compound.d.ts +3 -0
  81. package/dist/tools/compound.d.ts.map +1 -0
  82. package/dist/tools/compound.js +108 -0
  83. package/dist/tools/compound.js.map +1 -0
  84. package/dist/tools/geo.d.ts.map +1 -1
  85. package/dist/tools/geo.js +70 -3
  86. package/dist/tools/geo.js.map +1 -1
  87. package/dist/tools/guide.d.ts +3 -0
  88. package/dist/tools/guide.d.ts.map +1 -0
  89. package/dist/tools/guide.js +228 -0
  90. package/dist/tools/guide.js.map +1 -0
  91. package/dist/tools/identity.d.ts.map +1 -1
  92. package/dist/tools/identity.js +29 -1
  93. package/dist/tools/identity.js.map +1 -1
  94. package/dist/tools/index.d.ts +5 -1
  95. package/dist/tools/index.d.ts.map +1 -1
  96. package/dist/tools/index.js +9 -1
  97. package/dist/tools/index.js.map +1 -1
  98. package/dist/tools/legal-texts.d.ts +3 -0
  99. package/dist/tools/legal-texts.d.ts.map +1 -0
  100. package/dist/tools/legal-texts.js +95 -0
  101. package/dist/tools/legal-texts.js.map +1 -0
  102. package/dist/tools/legal.d.ts.map +1 -1
  103. package/dist/tools/legal.js +10 -2
  104. package/dist/tools/legal.js.map +1 -1
  105. package/dist/tools/public-contracts.d.ts.map +1 -1
  106. package/dist/tools/public-contracts.js +9 -2
  107. package/dist/tools/public-contracts.js.map +1 -1
  108. package/dist/tools/realestate.d.ts.map +1 -1
  109. package/dist/tools/realestate.js +64 -6
  110. package/dist/tools/realestate.js.map +1 -1
  111. package/dist/tools/sources.d.ts.map +1 -1
  112. package/dist/tools/sources.js +60 -2
  113. package/dist/tools/sources.js.map +1 -1
  114. package/dist/utils/byok.d.ts +49 -0
  115. package/dist/utils/byok.d.ts.map +1 -0
  116. package/dist/utils/byok.js +28 -0
  117. package/dist/utils/byok.js.map +1 -0
  118. package/dist/utils/circuit-breaker.d.ts +19 -0
  119. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  120. package/dist/utils/circuit-breaker.js +43 -0
  121. package/dist/utils/circuit-breaker.js.map +1 -0
  122. package/dist/utils/env.d.ts +2 -1
  123. package/dist/utils/env.d.ts.map +1 -1
  124. package/dist/utils/env.js +14 -7
  125. package/dist/utils/env.js.map +1 -1
  126. package/dist/utils/http.d.ts.map +1 -1
  127. package/dist/utils/http.js +7 -2
  128. package/dist/utils/http.js.map +1 -1
  129. package/dist/utils/oauth.d.ts.map +1 -1
  130. package/dist/utils/oauth.js +8 -3
  131. package/dist/utils/oauth.js.map +1 -1
  132. package/dist/utils/siren.d.ts +4 -0
  133. package/dist/utils/siren.d.ts.map +1 -0
  134. package/dist/utils/siren.js +36 -0
  135. package/dist/utils/siren.js.map +1 -0
  136. package/dist/utils/zod-to-json.d.ts +3 -0
  137. package/dist/utils/zod-to-json.d.ts.map +1 -0
  138. package/dist/utils/zod-to-json.js +46 -0
  139. package/dist/utils/zod-to-json.js.map +1 -0
  140. package/package.json +7 -4
  141. package/dist/worker.d.ts +0 -16
  142. package/dist/worker.d.ts.map +0 -1
  143. package/dist/worker.js +0 -185
  144. package/dist/worker.js.map +0 -1
@@ -0,0 +1,143 @@
1
+ import { ZodError } from "zod";
2
+ import { keyStore } from "./keys.js";
3
+ function setCorsHeaders(res) {
4
+ res.setHeader("Access-Control-Allow-Origin", "*");
5
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
6
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
7
+ }
8
+ function json(res, status, body) {
9
+ setCorsHeaders(res);
10
+ res.statusCode = status;
11
+ res.setHeader("Content-Type", "application/json");
12
+ res.end(JSON.stringify(body));
13
+ }
14
+ function extractBearer(req) {
15
+ const header = req.headers["authorization"] ?? "";
16
+ if (!header.startsWith("Bearer "))
17
+ return null;
18
+ return header.slice(7);
19
+ }
20
+ async function readBody(req) {
21
+ const chunks = [];
22
+ let totalSize = 0;
23
+ for await (const chunk of req) {
24
+ totalSize += chunk.length;
25
+ if (totalSize > 1_048_576)
26
+ throw new Error("Request body too large");
27
+ chunks.push(chunk);
28
+ }
29
+ const raw = Buffer.concat(chunks).toString("utf8");
30
+ return raw ? JSON.parse(raw) : {};
31
+ }
32
+ async function handleKeysRoute(req, res, path) {
33
+ const token = extractBearer(req);
34
+ if (!token || !keyStore.isAdmin(token)) {
35
+ json(res, 401, { error: "Clé admin requise", error_code: "UNAUTHORIZED" });
36
+ return;
37
+ }
38
+ // GET /api/keys — list all keys (masked — full key never exposed in list)
39
+ if (req.method === "GET" && path === "") {
40
+ json(res, 200, { keys: keyStore.listMasked() });
41
+ return;
42
+ }
43
+ // POST /api/keys — create a new key
44
+ if (req.method === "POST" && path === "") {
45
+ let body;
46
+ try {
47
+ body = await readBody(req);
48
+ }
49
+ catch {
50
+ json(res, 400, { error: "JSON invalide", error_code: "INVALID_BODY" });
51
+ return;
52
+ }
53
+ const label = body?.label;
54
+ if (!label || typeof label !== "string" || !label.trim()) {
55
+ json(res, 400, { error: "label requis", error_code: "VALIDATION_ERROR" });
56
+ return;
57
+ }
58
+ const key = keyStore.create(label.trim());
59
+ json(res, 201, key);
60
+ return;
61
+ }
62
+ // DELETE /api/keys/:key — revoke a key
63
+ if (req.method === "DELETE" && path.length > 0) {
64
+ const keyToRevoke = decodeURIComponent(path);
65
+ const ok = keyStore.revoke(keyToRevoke);
66
+ if (!ok) {
67
+ json(res, 404, { error: "Clé introuvable ou non révocable", error_code: "NOT_FOUND" });
68
+ return;
69
+ }
70
+ json(res, 200, { revoked: true });
71
+ return;
72
+ }
73
+ json(res, 405, { error: "Méthode non supportée", error_code: "METHOD_NOT_ALLOWED" });
74
+ }
75
+ export async function handleRestRequest(req, res, tools) {
76
+ const url = req.url ?? "";
77
+ if (!url.startsWith("/api/"))
78
+ return false;
79
+ setCorsHeaders(res);
80
+ if (req.method === "OPTIONS") {
81
+ res.statusCode = 204;
82
+ res.end();
83
+ return true;
84
+ }
85
+ // Key management routes (admin only)
86
+ if (url === "/api/keys" || url.startsWith("/api/keys/")) {
87
+ const path = url.slice("/api/keys".length).replace(/^\//, "");
88
+ await handleKeysRoute(req, res, path);
89
+ return true;
90
+ }
91
+ // All other /api/* routes require a valid key
92
+ const token = extractBearer(req);
93
+ const adminKey = process.env.ONEMCP_API_KEY;
94
+ const authEnabled = !!adminKey;
95
+ if (authEnabled && (!token || !keyStore.isValid(token))) {
96
+ json(res, 401, { error: "Clé API invalide ou manquante", error_code: "UNAUTHORIZED" });
97
+ return true;
98
+ }
99
+ if (token && keyStore.isValid(token))
100
+ keyStore.touch(token);
101
+ if (req.method !== "POST") {
102
+ json(res, 405, { error: "Méthode non supportée", error_code: "METHOD_NOT_ALLOWED" });
103
+ return true;
104
+ }
105
+ const toolName = url.slice("/api/".length);
106
+ const tool = tools.find((t) => t.name === toolName);
107
+ if (!tool) {
108
+ json(res, 404, {
109
+ error: `Outil inconnu: ${toolName}`,
110
+ error_code: "TOOL_NOT_FOUND",
111
+ available_tools: tools.map((t) => t.name),
112
+ });
113
+ return true;
114
+ }
115
+ let body;
116
+ try {
117
+ body = await readBody(req);
118
+ }
119
+ catch {
120
+ json(res, 400, { error: "Corps de requête invalide (JSON malformé ou trop grand)", error_code: "INVALID_BODY" });
121
+ return true;
122
+ }
123
+ try {
124
+ const parsed = tool.inputSchema.parse(body);
125
+ const result = await tool.handler(parsed);
126
+ json(res, 200, result);
127
+ }
128
+ catch (err) {
129
+ if (err instanceof ZodError) {
130
+ json(res, 400, {
131
+ error: "Paramètres invalides",
132
+ error_code: "VALIDATION_ERROR",
133
+ details: err.errors.map((e) => ({ path: e.path.join("."), message: e.message })),
134
+ });
135
+ }
136
+ else {
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ json(res, 500, { error: msg, error_code: "TOOL_EXECUTION_ERROR", tool: tool.name });
139
+ }
140
+ }
141
+ return true;
142
+ }
143
+ //# sourceMappingURL=rest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../src/api/rest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { AnyTool } from "../tools/types.js";
2
+ export type StatusCheck = {
3
+ ok: true;
4
+ [key: string]: unknown;
5
+ } | {
6
+ ok: false;
7
+ error: string;
8
+ [key: string]: unknown;
9
+ };
10
+ export interface StatusReport {
11
+ status: "ok" | "degraded";
12
+ version: string;
13
+ checked_at: string;
14
+ checks: {
15
+ health: {
16
+ ok: true;
17
+ version: string;
18
+ tools: number;
19
+ };
20
+ openapi: {
21
+ ok: boolean;
22
+ paths: number;
23
+ expected_paths: number;
24
+ };
25
+ rest_sources_list: {
26
+ ok: boolean;
27
+ sources?: number;
28
+ configured?: number;
29
+ byok?: number;
30
+ error?: string;
31
+ };
32
+ mcp_tools_list: {
33
+ ok: boolean;
34
+ count: number;
35
+ };
36
+ stripe: {
37
+ ok: boolean;
38
+ configured: boolean;
39
+ };
40
+ };
41
+ warnings: string[];
42
+ }
43
+ export declare function buildStatusReport(tools: AnyTool[], serverUrl: string, version: string, env: {
44
+ STRIPE_SECRET_KEY?: string;
45
+ }, now?: () => Date): Promise<StatusReport>;
46
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/api/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,MAAM,EAAE;YAAE,EAAE,EAAE,IAAI,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,OAAO,EAAE;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;QAChE,iBAAiB,EAAE;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzG,cAAc,EAAE;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,MAAM,EAAE;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;KAC9C,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,GAAG,GAAE,MAAM,IAAuB,GACjC,OAAO,CAAC,YAAY,CAAC,CA0CvB"}
@@ -0,0 +1,44 @@
1
+ import { generateOpenApiSpec } from "./openapi.js";
2
+ export async function buildStatusReport(tools, serverUrl, version, env, now = () => new Date()) {
3
+ const openapi = generateOpenApiSpec(tools, serverUrl);
4
+ const openapiPaths = Object.keys((openapi.paths ?? {}));
5
+ const sourceTool = tools.find((tool) => tool.name === "sources_list");
6
+ let sourcesList;
7
+ try {
8
+ if (!sourceTool)
9
+ throw new Error("sources_list introuvable");
10
+ const output = (await sourceTool.handler({}));
11
+ const sources = output.sources ?? [];
12
+ sourcesList = {
13
+ ok: true,
14
+ sources: typeof output.count === "number" ? output.count : sources.length,
15
+ configured: sources.filter((source) => source.configured !== false).length,
16
+ byok: sources.filter((source) => source.byok).length,
17
+ };
18
+ }
19
+ catch (error) {
20
+ sourcesList = {
21
+ ok: false,
22
+ error: error instanceof Error ? error.message : "Impossible de vérifier sources_list",
23
+ };
24
+ }
25
+ const health = { ok: true, version, tools: tools.length };
26
+ const mcpToolsList = { ok: true, count: tools.length };
27
+ const stripeConfigured = Boolean(env.STRIPE_SECRET_KEY);
28
+ const warnings = stripeConfigured ? [] : ["Stripe non configuré"];
29
+ const essentialOk = health.ok && openapiPaths.length > 0 && sourcesList.ok && mcpToolsList.ok;
30
+ return {
31
+ status: essentialOk ? "ok" : "degraded",
32
+ version,
33
+ checked_at: now().toISOString(),
34
+ checks: {
35
+ health,
36
+ openapi: { ok: openapiPaths.length === tools.length, paths: openapiPaths.length, expected_paths: tools.length },
37
+ rest_sources_list: sourcesList,
38
+ mcp_tools_list: mcpToolsList,
39
+ stripe: { ok: stripeConfigured, configured: stripeConfigured },
40
+ },
41
+ warnings,
42
+ };
43
+ }
44
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/api/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAqBnD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,GAAmC,EACnC,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IAElC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IACtE,IAAI,WAAwD,CAAC;IAC7D,IAAI,CAAC;QACH,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAkF,CAAC;QAC/H,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,WAAW,GAAG;YACZ,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;YACzE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM;YAC1E,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;SACrD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,GAAG;YACZ,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC;SACtF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACnE,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC;IAE9F,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;QACvC,OAAO;QACP,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;QAC/B,MAAM,EAAE;YACN,MAAM;YACN,OAAO,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE;YAC/G,iBAAiB,EAAE,WAAW;YAC9B,cAAc,EAAE,YAAY;YAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE;SAC/D;QACD,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,SAAO;IAI7B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAUlC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAWjD,IAAI,CAAC,CAAC,EACV,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC;IAQb,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAGf;AAED,eAAO,MAAM,KAAK,aAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,SAAO;IAI7B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAUlC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAWjD,IAAI,CAAC,CAAC,EACV,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC;IAQb,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAGf;AAGD,eAAO,MAAM,KAAK,aAA8B,CAAC"}
@@ -40,5 +40,6 @@ export class MemoryCache {
40
40
  return this.store.size;
41
41
  }
42
42
  }
43
- export const cache = new MemoryCache();
43
+ const maxEntries = Number(process.env.MAX_CACHE_ENTRIES ?? 5000);
44
+ export const cache = new MemoryCache(maxEntries);
44
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACL,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/C,UAAU,CAAS;IAEpC,YAAY,UAAU,GAAG,IAAI;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,UAAkB;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACR,GAAW,EACX,UAAkB,EAClB,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACL,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/C,UAAU,CAAS;IAEpC,YAAY,UAAU,GAAG,IAAI;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,UAAkB;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACR,GAAW,EACX,UAAkB,EAClB,EAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC"}
@@ -9,6 +9,8 @@ export interface ConnectorMetadata {
9
9
  }
10
10
  export declare abstract class Connector {
11
11
  abstract readonly metadata: ConnectorMetadata;
12
+ private _circuit?;
13
+ private get circuit();
12
14
  protected getJson<T>(url: string, options?: {
13
15
  headers?: Record<string, string>;
14
16
  ttlSeconds?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/connectors/base.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,8BAAsB,SAAS;IAC7B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;cAE9B,OAAO,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC,CAAC,CAAC;CAOd"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/connectors/base.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,8BAAsB,SAAS;IAC7B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAElC,OAAO,KAAK,OAAO,GAKlB;cAEe,OAAO,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,OAAO,CAAC,CAAC,CAAC;CAgBd"}
@@ -1,10 +1,27 @@
1
1
  import { cache } from "../cache/index.js";
2
+ import { CircuitBreaker } from "../utils/circuit-breaker.js";
2
3
  import { fetchJson } from "../utils/http.js";
3
4
  export class Connector {
5
+ _circuit;
6
+ get circuit() {
7
+ if (!this._circuit) {
8
+ this._circuit = new CircuitBreaker(this.metadata.id);
9
+ }
10
+ return this._circuit;
11
+ }
4
12
  async getJson(url, options = {}) {
5
- const ttl = options.ttlSeconds ?? this.metadata.defaultTtlSeconds;
13
+ const envKey = `TTL_${this.metadata.id.toUpperCase().replace(/-/g, "_")}`;
14
+ const ttl = Number(process.env[envKey] ?? options.ttlSeconds ?? this.metadata.defaultTtlSeconds);
6
15
  const key = options.cacheKey ?? `${this.metadata.id}:${url}`;
7
- return cache.wrap(key, ttl, () => fetchJson(url, { headers: options.headers }));
16
+ const cached = cache.get(key);
17
+ if (cached !== undefined) {
18
+ console.error(`[onemcp:cache:HIT] ${key.slice(0, 60)}`);
19
+ return cached;
20
+ }
21
+ console.error(`[onemcp:cache:MISS] ${key.slice(0, 60)}`);
22
+ const value = await this.circuit.execute(() => fetchJson(url, { headers: options.headers }));
23
+ cache.set(key, value, ttl);
24
+ return value;
8
25
  }
9
26
  }
10
27
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/connectors/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAY7C,MAAM,OAAgB,SAAS;IAGnB,KAAK,CAAC,OAAO,CACrB,GAAW,EACX,UAII,EAAE;QAEN,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAClE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAC/B,SAAS,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAChD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/connectors/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAY7C,MAAM,OAAgB,SAAS;IAErB,QAAQ,CAAkB;IAElC,IAAY,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,OAAO,CACrB,GAAW,EACX,UAII,EAAE;QAEN,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACjG,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAC5C,SAAS,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAChD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -2,8 +2,9 @@ import type { LegalAnnouncement } from "../schemas/canonical.js";
2
2
  import { Connector, type ConnectorMetadata } from "./base.js";
3
3
  export declare class BodaccConnector extends Connector {
4
4
  readonly metadata: ConnectorMetadata;
5
- searchBySiren(siren: string, limit?: number): Promise<LegalAnnouncement[]>;
6
- searchByCompanyName(name: string, limit?: number): Promise<LegalAnnouncement[]>;
5
+ searchBySiren(siren: string, limit?: number, dateFrom?: string, dateTo?: string, type?: string): Promise<LegalAnnouncement[]>;
6
+ searchByCompanyName(name: string, limit?: number, dateFrom?: string, dateTo?: string): Promise<LegalAnnouncement[]>;
7
+ private applyDateFilters;
7
8
  searchProcedures(siren: string, limit?: number): Promise<LegalAnnouncement[]>;
8
9
  private searchRaw;
9
10
  private normalize;
@@ -1 +1 @@
1
- {"version":3,"file":"bodacc.d.ts","sourceRoot":"","sources":["../../src/connectors/bodacc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAwB9D,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CASlC;IAEI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKtE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAK3E,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAKjE,SAAS;IAMvB,OAAO,CAAC,SAAS;CAgBlB"}
1
+ {"version":3,"file":"bodacc.d.ts","sourceRoot":"","sources":["../../src/connectors/bodacc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAwB9D,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CASlC;IAEI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAOzH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAQrH,OAAO,CAAC,gBAAgB;IAMlB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAKjE,SAAS;IAMvB,OAAO,CAAC,SAAS;CAgBlB"}
@@ -10,14 +10,27 @@ export class BodaccConnector extends Connector {
10
10
  authRequired: false,
11
11
  defaultTtlSeconds: 86400,
12
12
  };
13
- async searchBySiren(siren, limit = 20) {
14
- const where = `registre LIKE "%${siren}%"`;
13
+ async searchBySiren(siren, limit = 20, dateFrom, dateTo, type) {
14
+ let where = `registre LIKE "%${siren}%"`;
15
+ if (type)
16
+ where += ` AND familleavis_lib LIKE "%${type.replace(/[^a-zA-Z0-9 àâäéèêëîïôöùûüçÀÂÄÉÈÊËÎÏÔÖÙÛÜÇ]/g, "")}%"`;
17
+ where = this.applyDateFilters(where, dateFrom, dateTo);
15
18
  return this.searchRaw(where, limit);
16
19
  }
17
- async searchByCompanyName(name, limit = 20) {
18
- const where = `commercant LIKE "%${name.replace(/"/g, "")}%"`;
20
+ async searchByCompanyName(name, limit = 20, dateFrom, dateTo) {
21
+ // Whitelist: keep only alphanumeric, spaces, hyphens, apostrophes, French accented chars
22
+ const safe = name.replace(/[^a-zA-Z0-9 \-'àâäéèêëîïôöùûüçÀÂÄÉÈÊËÎÏÔÖÙÛÜÇ]/g, "");
23
+ let where = `commercant LIKE "%${safe}%"`;
24
+ where = this.applyDateFilters(where, dateFrom, dateTo);
19
25
  return this.searchRaw(where, limit);
20
26
  }
27
+ applyDateFilters(where, dateFrom, dateTo) {
28
+ if (dateFrom)
29
+ where += ` AND dateparution >= "${dateFrom}"`;
30
+ if (dateTo)
31
+ where += ` AND dateparution <= "${dateTo}"`;
32
+ return where;
33
+ }
21
34
  async searchProcedures(siren, limit = 20) {
22
35
  const where = `registre LIKE "%${siren}%" AND familleavis_lib LIKE "%procédure%"`;
23
36
  return this.searchRaw(where, limit);
@@ -1 +1 @@
1
- {"version":3,"file":"bodacc.js","sourceRoot":"","sources":["../../src/connectors/bodacc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,0GAA0G,CAAC;AAsB5H,MAAM,OAAO,eAAgB,SAAQ,SAAS;IACnC,QAAQ,GAAsB;QACrC,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iEAAiE;QACvE,WAAW,EACT,+FAA+F;QACjG,MAAM,EAAE,0CAA0C;QAClD,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK;KACzB,CAAC;IAEF,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,mBAAmB,KAAK,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY,EAAE,KAAK,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,qBAAqB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;QAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;QAC9C,MAAM,KAAK,GAAG,mBAAmB,KAAK,2CAA2C,CAAC;QAClF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,KAAa;QAClD,MAAM,GAAG,GAAG,GAAG,QAAQ,UAAU,kBAAkB,CAAC,KAAK,CAAC,UAAU,KAAK,6BAA6B,CAAC;QACvG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAc,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,SAAS,CAAC,CAAY;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1C,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAC9B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;YAClE,IAAI,EAAE,CAAC,CAAC,eAAe,IAAI,SAAS;YACpC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;YAClC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,YAAY,EAAE,CAAC,CAAC,UAAU;YAC1B,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc;YACvC,UAAU,EAAE,CAAC,CAAC,YAAY;SAC3B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"bodacc.js","sourceRoot":"","sources":["../../src/connectors/bodacc.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,6 @@ import type { RealEstateTransaction } from "../schemas/canonical.js";
2
2
  import { Connector, type ConnectorMetadata } from "./base.js";
3
3
  export declare class DvfConnector extends Connector {
4
4
  readonly metadata: ConnectorMetadata;
5
- /**
6
- * Recherche les mutations sur une commune (code INSEE).
7
- * Endpoint stable alternatif via api.cquest.org/dvf si CEREMA indisponible.
8
- */
9
5
  searchByCommune(codeInsee: string, limit?: number): Promise<RealEstateTransaction[]>;
10
6
  searchByPostalCode(postalCode: string, limit?: number): Promise<RealEstateTransaction[]>;
11
7
  private normalize;
@@ -1 +1 @@
1
- {"version":3,"file":"dvf.d.ts","sourceRoot":"","sources":["../../src/connectors/dvf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA2B9D,qBAAa,YAAa,SAAQ,SAAS;IACzC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAQlC;IAEF;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAMhF,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAM1F,OAAO,CAAC,SAAS;CAuBlB"}
1
+ {"version":3,"file":"dvf.d.ts","sourceRoot":"","sources":["../../src/connectors/dvf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAsB9D,qBAAa,YAAa,SAAQ,SAAS;IACzC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAQlC;IAEI,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAMhF,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAM1F,OAAO,CAAC,SAAS;CA8BlB"}
@@ -1,5 +1,5 @@
1
1
  import { Connector } from "./base.js";
2
- const BASE_URL = "https://apidf-preprod.cerema.fr/dvf_opendata/mutations";
2
+ const DVF_BASE = "https://api.cquest.org/dvf";
3
3
  export class DvfConnector extends Connector {
4
4
  metadata = {
5
5
  id: "dvf",
@@ -10,21 +10,17 @@ export class DvfConnector extends Connector {
10
10
  authRequired: false,
11
11
  defaultTtlSeconds: 86400 * 30,
12
12
  };
13
- /**
14
- * Recherche les mutations sur une commune (code INSEE).
15
- * Endpoint stable alternatif via api.cquest.org/dvf si CEREMA indisponible.
16
- */
17
13
  async searchByCommune(codeInsee, limit = 50) {
18
- const url = `https://api.cquest.org/dvf?code_commune=${encodeURIComponent(codeInsee)}`;
14
+ const url = `${DVF_BASE}?code_commune=${encodeURIComponent(codeInsee)}`;
19
15
  const data = await this.getJson(url);
20
- return (data.resultats ?? []).slice(0, limit).map((r) => this.normalize(r));
16
+ return (data.resultats ?? []).slice(0, limit).map((r) => this.normalize(r, url));
21
17
  }
22
18
  async searchByPostalCode(postalCode, limit = 50) {
23
- const url = `https://api.cquest.org/dvf?code_postal=${encodeURIComponent(postalCode)}`;
19
+ const url = `${DVF_BASE}?code_postal=${encodeURIComponent(postalCode)}`;
24
20
  const data = await this.getJson(url);
25
- return (data.resultats ?? []).slice(0, limit).map((r) => this.normalize(r));
21
+ return (data.resultats ?? []).slice(0, limit).map((r) => this.normalize(r, url));
26
22
  }
27
- normalize(r) {
23
+ normalize(r, sourceUrl) {
28
24
  const address = {
29
25
  street: [r.adresse_numero, r.adresse_suffixe, r.adresse_nom_voie]
30
26
  .filter(Boolean)
@@ -36,6 +32,12 @@ export class DvfConnector extends Connector {
36
32
  longitude: r.longitude,
37
33
  country: "FR",
38
34
  };
35
+ const provenance = [{
36
+ source: this.metadata.id,
37
+ source_url: sourceUrl,
38
+ fetched_at: new Date().toISOString(),
39
+ license: this.metadata.license,
40
+ }];
39
41
  return {
40
42
  date: r.date_mutation,
41
43
  type: r.nature_mutation,
@@ -45,6 +47,7 @@ export class DvfConnector extends Connector {
45
47
  rooms: r.nombre_pieces_principales,
46
48
  property_type: r.type_local,
47
49
  address,
50
+ provenance,
48
51
  };
49
52
  }
50
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dvf.js","sourceRoot":"","sources":["../../src/connectors/dvf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,wDAAwD,CAAC;AAyB1E,MAAM,OAAO,YAAa,SAAQ,SAAS;IAChC,QAAQ,GAAsB;QACrC,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,iEAAiE;QAC9E,MAAM,EAAE,gCAAgC;QACxC,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK,GAAG,EAAE;KAC9B,CAAC;IAEF;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,2CAA2C,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,KAAK,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,0CAA0C,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,SAAS,CAAC,CAAc;QAC9B,MAAM,OAAO,GAAY;YACvB,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,gBAAgB,CAAC;iBAC9D,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;YACzB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,UAAU,EAAE,CAAC,CAAC,YAAY;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,IAAI;SACd,CAAC;QACF,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,aAAa;YACrB,IAAI,EAAE,CAAC,CAAC,eAAe;YACvB,SAAS,EAAE,CAAC,CAAC,eAAe;YAC5B,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;YACvC,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,KAAK,EAAE,CAAC,CAAC,yBAAyB;YAClC,aAAa,EAAE,CAAC,CAAC,UAAU;YAC3B,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"dvf.js","sourceRoot":"","sources":["../../src/connectors/dvf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAoB9C,MAAM,OAAO,YAAa,SAAQ,SAAS;IAChC,QAAQ,GAAsB;QACrC,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,iEAAiE;QAC9E,MAAM,EAAE,gCAAgC;QACxC,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK,GAAG,EAAE;KAC9B,CAAC;IAEF,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,KAAK,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,GAAG,QAAQ,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,KAAK,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,GAAG,QAAQ,gBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;IAEO,SAAS,CAAC,CAAc,EAAE,SAAiB;QACjD,MAAM,OAAO,GAAY;YACvB,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,gBAAgB,CAAC;iBAC9D,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;YACzB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,UAAU,EAAE,CAAC,CAAC,YAAY;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,IAAI;SACd,CAAC;QACF,MAAM,UAAU,GAAiB,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACxB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;aAC/B,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,aAAa;YACrB,IAAI,EAAE,CAAC,CAAC,eAAe;YACvB,SAAS,EAAE,CAAC,CAAC,eAAe;YAC5B,gBAAgB,EAAE,CAAC,CAAC,mBAAmB;YACvC,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,KAAK,EAAE,CAAC,CAAC,yBAAyB;YAClC,aAAa,EAAE,CAAC,CAAC,UAAU;YAC3B,OAAO;YACP,UAAU;SACX,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"georisques.d.ts","sourceRoot":"","sources":["../../src/connectors/georisques.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAY9D,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CASlC;IAEI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CA2D9E"}
1
+ {"version":3,"file":"georisques.d.ts","sourceRoot":"","sources":["../../src/connectors/georisques.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAY9D,qBAAa,mBAAoB,SAAQ,SAAS;IAChD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CASlC;IAEI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CA8C9E"}
@@ -26,37 +26,26 @@ export class GeorisquesConnector extends Connector {
26
26
  longitude,
27
27
  country: "FR",
28
28
  };
29
+ const seenLabels = new Set();
29
30
  const risks = [];
30
- const natural = data.data?.risquesNaturels ?? [];
31
- const tech = data.data?.risquesTechnologiques ?? [];
32
- for (const r of natural) {
33
- if (r.present) {
34
- risks.push({
35
- type: "natural",
36
- label: r.libelle ?? "Risque naturel",
37
- severity: "medium",
38
- });
31
+ const addRisk = (type, label, severity) => {
32
+ if (!seenLabels.has(label)) {
33
+ seenLabels.add(label);
34
+ risks.push({ type, label, severity });
39
35
  }
36
+ };
37
+ for (const r of data.data?.risquesNaturels ?? []) {
38
+ if (r.present)
39
+ addRisk("natural", r.libelle ?? "Risque naturel", "medium");
40
40
  }
41
- for (const r of tech) {
42
- if (r.present) {
43
- risks.push({
44
- type: "technological",
45
- label: r.libelle ?? "Risque technologique",
46
- severity: "high",
47
- });
48
- }
41
+ for (const r of data.data?.risquesTechnologiques ?? []) {
42
+ if (r.present)
43
+ addRisk("technological", r.libelle ?? "Risque technologique", "high");
49
44
  }
50
- if (data.risques) {
51
- for (const r of data.risques) {
52
- if (r.present) {
53
- risks.push({
54
- type: r.type ?? "other",
55
- label: r.libelle ?? "Risque",
56
- severity: "medium",
57
- });
58
- }
59
- }
45
+ // Flat fallback format (alternate API version)
46
+ for (const r of data.risques ?? []) {
47
+ if (r.present !== false)
48
+ addRisk(r.type ?? "other", r.libelle ?? "Risque", "medium");
60
49
  }
61
50
  return {
62
51
  address,
@@ -1 +1 @@
1
- {"version":3,"file":"georisques.js","sourceRoot":"","sources":["../../src/connectors/georisques.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAUrD,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IACvC,QAAQ,GAAsB;QACrC,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,uFAAuF;QACzF,MAAM,EAAE,gCAAgC;QACxC,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK,GAAG,EAAE;KAC9B,CAAC;IAEF,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,SAAiB;QACrD,MAAM,GAAG,GAAG,GAAG,QAAQ,oCAAoC,SAAS,IAAI,QAAQ,aAAa,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmB,GAAG,EAAE;YACrD,QAAQ,EAAE,cAAc,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACtE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAe;YAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACxB,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SAC/B,CAAC;QAEF,MAAM,OAAO,GAAY;YACvB,QAAQ;YACR,SAAS;YACT,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,qBAAqB,IAAI,EAAE,CAAC;QAEpD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB;oBACpC,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,sBAAsB;oBAC1C,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO;wBACvB,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,QAAQ;wBAC5B,QAAQ,EAAE,QAAQ;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,KAAK;YACL,UAAU,EAAE,CAAC,UAAU,CAAC;SACzB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"georisques.js","sourceRoot":"","sources":["../../src/connectors/georisques.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,WAAW,CAAC;AAE9D,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAUrD,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IACvC,QAAQ,GAAsB;QACrC,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,uFAAuF;QACzF,MAAM,EAAE,gCAAgC;QACxC,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK,GAAG,EAAE;KAC9B,CAAC;IAEF,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,SAAiB;QACrD,MAAM,GAAG,GAAG,GAAG,QAAQ,oCAAoC,SAAS,IAAI,QAAQ,aAAa,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmB,GAAG,EAAE;YACrD,QAAQ,EAAE,cAAc,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACtE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAe;YAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACxB,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;SAC/B,CAAC;QAEF,MAAM,OAAO,GAAY;YACvB,QAAQ;YACR,SAAS;YACT,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,QAA+C,EAAE,EAAE;YAC/F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,qBAAqB,IAAI,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,IAAI,sBAAsB,EAAE,MAAM,CAAC,CAAC;QACvF,CAAC;QACD,+CAA+C;QAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK;gBAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvF,CAAC;QAED,OAAO;YACL,OAAO;YACP,KAAK;YACL,UAAU,EAAE,CAAC,UAAU,CAAC;SACzB,CAAC;IACJ,CAAC;CACF"}
@@ -9,6 +9,7 @@ import { GeorisquesConnector } from "./georisques.js";
9
9
  import { GleifConnector } from "./gleif.js";
10
10
  import { InpiRneConnector } from "./inpi-rne.js";
11
11
  import { InseeSireneConnector } from "./insee-sirene.js";
12
+ import { LegifranceConnector } from "./legifrance.js";
12
13
  import { OpendatasoftConnector } from "./opendatasoft.js";
13
14
  import { RechercheEntreprisesConnector } from "./recherche-entreprises.js";
14
15
  import { ViesConnector } from "./vies.js";
@@ -26,9 +27,10 @@ export declare const connectors: {
26
27
  readonly epoOps: EpoOpsConnector;
27
28
  readonly franceTravail: FranceTravailConnector;
28
29
  readonly geoFrance: GeoFranceConnector;
30
+ readonly legifrance: LegifranceConnector;
29
31
  readonly decp: OpendatasoftConnector;
30
32
  readonly infogreffe: OpendatasoftConnector;
31
33
  };
32
34
  export type Connectors = typeof connectors;
33
- export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
35
+ export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, LegifranceConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
34
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAsC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAgBb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAE3C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAsC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;CAiBb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAE3C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
@@ -9,6 +9,7 @@ import { GeorisquesConnector } from "./georisques.js";
9
9
  import { GleifConnector } from "./gleif.js";
10
10
  import { InpiRneConnector } from "./inpi-rne.js";
11
11
  import { InseeSireneConnector } from "./insee-sirene.js";
12
+ import { LegifranceConnector } from "./legifrance.js";
12
13
  import { OpendatasoftConnector, decpConnector, infogreffeConnector } from "./opendatasoft.js";
13
14
  import { RechercheEntreprisesConnector } from "./recherche-entreprises.js";
14
15
  import { ViesConnector } from "./vies.js";
@@ -26,8 +27,9 @@ export const connectors = {
26
27
  epoOps: new EpoOpsConnector(),
27
28
  franceTravail: new FranceTravailConnector(),
28
29
  geoFrance: new GeoFranceConnector(),
30
+ legifrance: new LegifranceConnector(),
29
31
  decp: decpConnector,
30
32
  infogreffe: infogreffeConnector,
31
33
  };
32
- export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
34
+ export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, LegifranceConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
33
35
  //# sourceMappingURL=index.js.map