@fullstackhouse/open-mercato-data-sync-durable 0.1.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 (175) hide show
  1. package/README.md +86 -0
  2. package/dist/engine/durable-run.js +130 -0
  3. package/dist/engine/durable-run.js.map +7 -0
  4. package/dist/index.js +5 -0
  5. package/dist/index.js.map +7 -0
  6. package/dist/kinds/data-sync-run.js +57 -0
  7. package/dist/kinds/data-sync-run.js.map +7 -0
  8. package/dist/mirror-version.js +5 -0
  9. package/dist/mirror-version.js.map +7 -0
  10. package/dist/mirror.manifest.json +65 -0
  11. package/dist/modules/data_sync/acl.js +8 -0
  12. package/dist/modules/data_sync/acl.js.map +7 -0
  13. package/dist/modules/data_sync/api/mappings/[id]/route.js +17 -0
  14. package/dist/modules/data_sync/api/mappings/[id]/route.js.map +7 -0
  15. package/dist/modules/data_sync/api/mappings/route.js +15 -0
  16. package/dist/modules/data_sync/api/mappings/route.js.map +7 -0
  17. package/dist/modules/data_sync/api/options.js +13 -0
  18. package/dist/modules/data_sync/api/options.js.map +7 -0
  19. package/dist/modules/data_sync/api/run.js +59 -0
  20. package/dist/modules/data_sync/api/run.js.map +7 -0
  21. package/dist/modules/data_sync/api/runs/[id]/cancel.js +13 -0
  22. package/dist/modules/data_sync/api/runs/[id]/cancel.js.map +7 -0
  23. package/dist/modules/data_sync/api/runs/[id]/retry.js +13 -0
  24. package/dist/modules/data_sync/api/runs/[id]/retry.js.map +7 -0
  25. package/dist/modules/data_sync/api/runs/[id]/route.js +13 -0
  26. package/dist/modules/data_sync/api/runs/[id]/route.js.map +7 -0
  27. package/dist/modules/data_sync/api/runs.js +13 -0
  28. package/dist/modules/data_sync/api/runs.js.map +7 -0
  29. package/dist/modules/data_sync/api/schedules/[id]/route.js +17 -0
  30. package/dist/modules/data_sync/api/schedules/[id]/route.js.map +7 -0
  31. package/dist/modules/data_sync/api/schedules/route.js +15 -0
  32. package/dist/modules/data_sync/api/schedules/route.js.map +7 -0
  33. package/dist/modules/data_sync/api/schedules/serialize.js +6 -0
  34. package/dist/modules/data_sync/api/schedules/serialize.js.map +7 -0
  35. package/dist/modules/data_sync/api/validate.js +13 -0
  36. package/dist/modules/data_sync/api/validate.js.map +7 -0
  37. package/dist/modules/data_sync/backend/data-sync/page.js +7 -0
  38. package/dist/modules/data_sync/backend/data-sync/page.js.map +7 -0
  39. package/dist/modules/data_sync/backend/data-sync/page.meta.js +6 -0
  40. package/dist/modules/data_sync/backend/data-sync/page.meta.js.map +7 -0
  41. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.js +7 -0
  42. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.js.map +7 -0
  43. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.meta.js +6 -0
  44. package/dist/modules/data_sync/backend/data-sync/runs/[id]/page.meta.js.map +7 -0
  45. package/dist/modules/data_sync/components/IntegrationScheduleTab.js +9 -0
  46. package/dist/modules/data_sync/components/IntegrationScheduleTab.js.map +7 -0
  47. package/dist/modules/data_sync/components/RunParameterFields.js +13 -0
  48. package/dist/modules/data_sync/components/RunParameterFields.js.map +7 -0
  49. package/dist/modules/data_sync/data/entities.js +9 -0
  50. package/dist/modules/data_sync/data/entities.js.map +7 -0
  51. package/dist/modules/data_sync/data/validators.js +12 -0
  52. package/dist/modules/data_sync/data/validators.js.map +7 -0
  53. package/dist/modules/data_sync/di.js +33 -0
  54. package/dist/modules/data_sync/di.js.map +7 -0
  55. package/dist/modules/data_sync/events.js +9 -0
  56. package/dist/modules/data_sync/events.js.map +7 -0
  57. package/dist/modules/data_sync/extension-points.js +8 -0
  58. package/dist/modules/data_sync/extension-points.js.map +7 -0
  59. package/dist/modules/data_sync/i18n/de.json +135 -0
  60. package/dist/modules/data_sync/i18n/en.json +135 -0
  61. package/dist/modules/data_sync/i18n/es.json +135 -0
  62. package/dist/modules/data_sync/i18n/ko.json +135 -0
  63. package/dist/modules/data_sync/i18n/pl.json +135 -0
  64. package/dist/modules/data_sync/index.js +6 -0
  65. package/dist/modules/data_sync/index.js.map +7 -0
  66. package/dist/modules/data_sync/lib/abandoned-run.js +6 -0
  67. package/dist/modules/data_sync/lib/abandoned-run.js.map +7 -0
  68. package/dist/modules/data_sync/lib/adapter-registry.js +10 -0
  69. package/dist/modules/data_sync/lib/adapter-registry.js.map +7 -0
  70. package/dist/modules/data_sync/lib/adapter.js +2 -0
  71. package/dist/modules/data_sync/lib/adapter.js.map +7 -0
  72. package/dist/modules/data_sync/lib/adopt-on-delivery.js +35 -0
  73. package/dist/modules/data_sync/lib/adopt-on-delivery.js.map +7 -0
  74. package/dist/modules/data_sync/lib/batch-stream.js +6 -0
  75. package/dist/modules/data_sync/lib/batch-stream.js.map +7 -0
  76. package/dist/modules/data_sync/lib/id-mapping.js +6 -0
  77. package/dist/modules/data_sync/lib/id-mapping.js.map +7 -0
  78. package/dist/modules/data_sync/lib/queue-policy.js +11 -0
  79. package/dist/modules/data_sync/lib/queue-policy.js.map +7 -0
  80. package/dist/modules/data_sync/lib/queue.js +6 -0
  81. package/dist/modules/data_sync/lib/queue.js.map +7 -0
  82. package/dist/modules/data_sync/lib/run-parameters.js +8 -0
  83. package/dist/modules/data_sync/lib/run-parameters.js.map +7 -0
  84. package/dist/modules/data_sync/lib/start-cursor.js +8 -0
  85. package/dist/modules/data_sync/lib/start-cursor.js.map +7 -0
  86. package/dist/modules/data_sync/lib/start-run.js +51 -0
  87. package/dist/modules/data_sync/lib/start-run.js.map +7 -0
  88. package/dist/modules/data_sync/lib/sync-engine.js +6 -0
  89. package/dist/modules/data_sync/lib/sync-engine.js.map +7 -0
  90. package/dist/modules/data_sync/lib/sync-run-service.js +7 -0
  91. package/dist/modules/data_sync/lib/sync-run-service.js.map +7 -0
  92. package/dist/modules/data_sync/lib/sync-schedule-service.js +6 -0
  93. package/dist/modules/data_sync/lib/sync-schedule-service.js.map +7 -0
  94. package/dist/modules/data_sync/lib/syncRunStatus.js +9 -0
  95. package/dist/modules/data_sync/lib/syncRunStatus.js.map +7 -0
  96. package/dist/modules/data_sync/lib/version-guard.js +14 -0
  97. package/dist/modules/data_sync/lib/version-guard.js.map +7 -0
  98. package/dist/modules/data_sync/migrations/Migration20260304113737.js +6 -0
  99. package/dist/modules/data_sync/migrations/Migration20260304113737.js.map +7 -0
  100. package/dist/modules/data_sync/migrations/Migration20260810120000.js +6 -0
  101. package/dist/modules/data_sync/migrations/Migration20260810120000.js.map +7 -0
  102. package/dist/modules/data_sync/setup.js +8 -0
  103. package/dist/modules/data_sync/setup.js.map +7 -0
  104. package/dist/modules/data_sync/workers/sync-export.js +19 -0
  105. package/dist/modules/data_sync/workers/sync-export.js.map +7 -0
  106. package/dist/modules/data_sync/workers/sync-import.js +19 -0
  107. package/dist/modules/data_sync/workers/sync-import.js.map +7 -0
  108. package/dist/modules/data_sync/workers/sync-scheduled.js +8 -0
  109. package/dist/modules/data_sync/workers/sync-scheduled.js.map +7 -0
  110. package/generated/entities/sync_cursor/index.ts +8 -0
  111. package/generated/entities/sync_mapping/index.ts +8 -0
  112. package/generated/entities/sync_run/index.ts +22 -0
  113. package/generated/entities/sync_schedule/index.ts +16 -0
  114. package/generated/entities.ids.generated.ts +13 -0
  115. package/package.json +135 -0
  116. package/src/compat/mirror-shape.test.ts +106 -0
  117. package/src/compat/seams.test.ts +97 -0
  118. package/src/engine/durable-run.ts +231 -0
  119. package/src/index.ts +4 -0
  120. package/src/kinds/data-sync-run.ts +104 -0
  121. package/src/mirror-version.ts +3 -0
  122. package/src/mirror.manifest.json +65 -0
  123. package/src/modules/data_sync/__integration__/TC-DSD-001.spec.ts +80 -0
  124. package/src/modules/data_sync/acl.ts +5 -0
  125. package/src/modules/data_sync/api/mappings/[id]/route.ts +12 -0
  126. package/src/modules/data_sync/api/mappings/route.ts +11 -0
  127. package/src/modules/data_sync/api/options.ts +10 -0
  128. package/src/modules/data_sync/api/run.ts +103 -0
  129. package/src/modules/data_sync/api/runs/[id]/cancel.ts +10 -0
  130. package/src/modules/data_sync/api/runs/[id]/retry.ts +10 -0
  131. package/src/modules/data_sync/api/runs/[id]/route.ts +10 -0
  132. package/src/modules/data_sync/api/runs.ts +10 -0
  133. package/src/modules/data_sync/api/schedules/[id]/route.ts +12 -0
  134. package/src/modules/data_sync/api/schedules/route.ts +11 -0
  135. package/src/modules/data_sync/api/schedules/serialize.ts +4 -0
  136. package/src/modules/data_sync/api/validate.ts +10 -0
  137. package/src/modules/data_sync/backend/data-sync/page.meta.ts +4 -0
  138. package/src/modules/data_sync/backend/data-sync/page.tsx +5 -0
  139. package/src/modules/data_sync/backend/data-sync/runs/[id]/page.meta.ts +4 -0
  140. package/src/modules/data_sync/backend/data-sync/runs/[id]/page.tsx +5 -0
  141. package/src/modules/data_sync/components/IntegrationScheduleTab.tsx +6 -0
  142. package/src/modules/data_sync/components/RunParameterFields.tsx +5 -0
  143. package/src/modules/data_sync/data/entities.ts +4 -0
  144. package/src/modules/data_sync/data/validators.ts +4 -0
  145. package/src/modules/data_sync/di.ts +57 -0
  146. package/src/modules/data_sync/events.ts +5 -0
  147. package/src/modules/data_sync/extension-points.ts +5 -0
  148. package/src/modules/data_sync/i18n/de.json +135 -0
  149. package/src/modules/data_sync/i18n/en.json +135 -0
  150. package/src/modules/data_sync/i18n/es.json +135 -0
  151. package/src/modules/data_sync/i18n/ko.json +135 -0
  152. package/src/modules/data_sync/i18n/pl.json +135 -0
  153. package/src/modules/data_sync/index.ts +4 -0
  154. package/src/modules/data_sync/lib/adapter-registry.ts +4 -0
  155. package/src/modules/data_sync/lib/adapter.ts +3 -0
  156. package/src/modules/data_sync/lib/adopt-on-delivery.ts +69 -0
  157. package/src/modules/data_sync/lib/batch-stream.ts +4 -0
  158. package/src/modules/data_sync/lib/id-mapping.ts +4 -0
  159. package/src/modules/data_sync/lib/queue-policy.ts +4 -0
  160. package/src/modules/data_sync/lib/queue.ts +4 -0
  161. package/src/modules/data_sync/lib/run-parameters.ts +4 -0
  162. package/src/modules/data_sync/lib/start-cursor.ts +4 -0
  163. package/src/modules/data_sync/lib/start-run.ts +106 -0
  164. package/src/modules/data_sync/lib/sync-engine.ts +4 -0
  165. package/src/modules/data_sync/lib/sync-run-service.ts +4 -0
  166. package/src/modules/data_sync/lib/sync-schedule-service.ts +4 -0
  167. package/src/modules/data_sync/lib/syncRunStatus.ts +4 -0
  168. package/src/modules/data_sync/lib/version-guard.ts +27 -0
  169. package/src/modules/data_sync/migrations/.snapshot-open-mercato.json +1013 -0
  170. package/src/modules/data_sync/migrations/Migration20260304113737.ts +4 -0
  171. package/src/modules/data_sync/migrations/Migration20260810120000.ts +4 -0
  172. package/src/modules/data_sync/setup.ts +5 -0
  173. package/src/modules/data_sync/workers/sync-export.ts +20 -0
  174. package/src/modules/data_sync/workers/sync-import.ts +20 -0
  175. package/src/modules/data_sync/workers/sync-scheduled.ts +5 -0
@@ -0,0 +1,13 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/runs/[id]/retry";
2
+ import { POST } from "@open-mercato/core/modules/data_sync/api/runs/[id]/retry";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/runs/[id]/retry";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ POST: { requireAuth: true, requireFeatures: ["data_sync.run"] }
7
+ };
8
+ export {
9
+ POST,
10
+ metadata,
11
+ openApi
12
+ };
13
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/data_sync/api/runs/%5Bid%5D/retry.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/runs/[id]/retry.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/runs/[id]/retry'\nexport { POST } from '@open-mercato/core/modules/data_sync/api/runs/[id]/retry'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/runs/[id]/retry'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n POST: { requireAuth: true, requireFeatures: ['data_sync.run'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,YAAY;AACrB,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,MAAM,EAAE,aAAa,MAAM,iBAAiB,CAAC,eAAe,EAAE;AAChE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/runs/[id]/route";
2
+ import { GET } from "@open-mercato/core/modules/data_sync/api/runs/[id]/route";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/runs/[id]/route";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ GET: { requireAuth: true, requireFeatures: ["data_sync.view"] }
7
+ };
8
+ export {
9
+ GET,
10
+ metadata,
11
+ openApi
12
+ };
13
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/data_sync/api/runs/%5Bid%5D/route.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/runs/[id]/route.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/runs/[id]/route'\nexport { GET } from '@open-mercato/core/modules/data_sync/api/runs/[id]/route'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/runs/[id]/route'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n GET: { requireAuth: true, requireFeatures: ['data_sync.view'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,WAAW;AACpB,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,KAAK,EAAE,aAAa,MAAM,iBAAiB,CAAC,gBAAgB,EAAE;AAChE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/runs";
2
+ import { GET } from "@open-mercato/core/modules/data_sync/api/runs";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/runs";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ GET: { requireAuth: true, requireFeatures: ["data_sync.view"] }
7
+ };
8
+ export {
9
+ GET,
10
+ metadata,
11
+ openApi
12
+ };
13
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/api/runs.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/runs.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/runs'\nexport { GET } from '@open-mercato/core/modules/data_sync/api/runs'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/runs'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n GET: { requireAuth: true, requireFeatures: ['data_sync.view'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,WAAW;AACpB,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,KAAK,EAAE,aAAa,MAAM,iBAAiB,CAAC,gBAAgB,EAAE;AAChE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/schedules/[id]/route";
2
+ import { GET, PUT, DELETE } from "@open-mercato/core/modules/data_sync/api/schedules/[id]/route";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/schedules/[id]/route";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ GET: { requireAuth: true, requireFeatures: ["data_sync.configure"] },
7
+ PUT: { requireAuth: true, requireFeatures: ["data_sync.configure"] },
8
+ DELETE: { requireAuth: true, requireFeatures: ["data_sync.configure"] }
9
+ };
10
+ export {
11
+ DELETE,
12
+ GET,
13
+ PUT,
14
+ metadata,
15
+ openApi
16
+ };
17
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/modules/data_sync/api/schedules/%5Bid%5D/route.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/schedules/[id]/route.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/schedules/[id]/route'\nexport { GET, PUT, DELETE } from '@open-mercato/core/modules/data_sync/api/schedules/[id]/route'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/schedules/[id]/route'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n GET: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n PUT: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n DELETE: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,KAAK,KAAK,cAAc;AACjC,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,KAAK,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AAAA,EACnE,KAAK,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AAAA,EACnE,QAAQ,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AACxE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/schedules/route";
2
+ import { GET, POST } from "@open-mercato/core/modules/data_sync/api/schedules/route";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/schedules/route";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ GET: { requireAuth: true, requireFeatures: ["data_sync.configure"] },
7
+ POST: { requireAuth: true, requireFeatures: ["data_sync.configure"] }
8
+ };
9
+ export {
10
+ GET,
11
+ POST,
12
+ metadata,
13
+ openApi
14
+ };
15
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/data_sync/api/schedules/route.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/schedules/route.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/schedules/route'\nexport { GET, POST } from '@open-mercato/core/modules/data_sync/api/schedules/route'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/schedules/route'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n GET: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n POST: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,KAAK,YAAY;AAC1B,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,KAAK,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AAAA,EACnE,MAAM,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AACtE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,6 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/schedules/serialize";
2
+ import { serializeSchedule } from "@open-mercato/core/modules/data_sync/api/schedules/serialize";
3
+ export {
4
+ serializeSchedule
5
+ };
6
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/data_sync/api/schedules/serialize.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/schedules/serialize.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/schedules/serialize'\nexport { serializeSchedule } from '@open-mercato/core/modules/data_sync/api/schedules/serialize'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,yBAAyB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ export * from "@open-mercato/core/modules/data_sync/api/validate";
2
+ import { POST } from "@open-mercato/core/modules/data_sync/api/validate";
3
+ import { openApi as coreOpenApi } from "@open-mercato/core/modules/data_sync/api/validate";
4
+ const openApi = coreOpenApi;
5
+ const metadata = {
6
+ POST: { requireAuth: true, requireFeatures: ["data_sync.configure"] }
7
+ };
8
+ export {
9
+ POST,
10
+ metadata,
11
+ openApi
12
+ };
13
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/api/validate.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (api/validate.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/api/validate'\nexport { POST } from '@open-mercato/core/modules/data_sync/api/validate'\nimport { openApi as coreOpenApi } from '@open-mercato/core/modules/data_sync/api/validate'\nexport const openApi = coreOpenApi\n// Copied from core: the generator reads this by AST and cannot follow a re-export.\nexport const metadata = {\n POST: { requireAuth: true, requireFeatures: ['data_sync.configure'] },\n}\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,YAAY;AACrB,SAAS,WAAW,mBAAmB;AAChC,MAAM,UAAU;AAEhB,MAAM,WAAW;AAAA,EACtB,MAAM,EAAE,aAAa,MAAM,iBAAiB,CAAC,qBAAqB,EAAE;AACtE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ export * from "@open-mercato/core/modules/data_sync/backend/data-sync/page";
3
+ import { default as default2 } from "@open-mercato/core/modules/data_sync/backend/data-sync/page";
4
+ export {
5
+ default2 as default
6
+ };
7
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/data_sync/backend/data-sync/page.tsx"],
4
+ "sourcesContent": ["'use client'\n// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (backend/data-sync/page.tsx). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/backend/data-sync/page'\nexport { default } from '@open-mercato/core/modules/data_sync/backend/data-sync/page'\n"],
5
+ "mappings": ";AAGA,cAAc;AACd,SAAS,WAAAA,gBAAe;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,6 @@
1
+ export * from "@open-mercato/core/modules/data_sync/backend/data-sync/page.meta";
2
+ import { metadata } from "@open-mercato/core/modules/data_sync/backend/data-sync/page.meta";
3
+ export {
4
+ metadata
5
+ };
6
+ //# sourceMappingURL=page.meta.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/modules/data_sync/backend/data-sync/page.meta.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (backend/data-sync/page.meta.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/backend/data-sync/page.meta'\nexport { metadata } from '@open-mercato/core/modules/data_sync/backend/data-sync/page.meta'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,gBAAgB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ export * from "@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page";
3
+ import { default as default2 } from "@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page";
4
+ export {
5
+ default2 as default
6
+ };
7
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/data_sync/backend/data-sync/runs/%5Bid%5D/page.tsx"],
4
+ "sourcesContent": ["'use client'\n// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (backend/data-sync/runs/[id]/page.tsx). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page'\nexport { default } from '@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page'\n"],
5
+ "mappings": ";AAGA,cAAc;AACd,SAAS,WAAAA,gBAAe;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,6 @@
1
+ export * from "@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page.meta";
2
+ import { metadata } from "@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page.meta";
3
+ export {
4
+ metadata
5
+ };
6
+ //# sourceMappingURL=page.meta.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/data_sync/backend/data-sync/runs/%5Bid%5D/page.meta.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (backend/data-sync/runs/[id]/page.meta.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page.meta'\nexport { metadata } from '@open-mercato/core/modules/data_sync/backend/data-sync/runs/[id]/page.meta'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,gBAAgB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ export * from "@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab";
3
+ import { default as default2 } from "@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab";
4
+ import { IntegrationScheduleTab } from "@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab";
5
+ export {
6
+ IntegrationScheduleTab,
7
+ default2 as default
8
+ };
9
+ //# sourceMappingURL=IntegrationScheduleTab.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/components/IntegrationScheduleTab.tsx"],
4
+ "sourcesContent": ["'use client'\n// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (components/IntegrationScheduleTab.tsx). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab'\nexport { default } from '@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab'\nexport { IntegrationScheduleTab } from '@open-mercato/core/modules/data_sync/components/IntegrationScheduleTab'\n"],
5
+ "mappings": ";AAGA,cAAc;AACd,SAAS,WAAAA,gBAAe;AACxB,SAAS,8BAA8B;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ export * from "@open-mercato/core/modules/data_sync/components/RunParameterFields";
3
+ import { RunParameterFields, buildDefaultRunParameterValues, buildRetryFailureMessage, buildRunFailureMessage, buildRunParametersPayload, hasRequiredRunParameterWithoutDefault, resolveRunParameterText } from "@open-mercato/core/modules/data_sync/components/RunParameterFields";
4
+ export {
5
+ RunParameterFields,
6
+ buildDefaultRunParameterValues,
7
+ buildRetryFailureMessage,
8
+ buildRunFailureMessage,
9
+ buildRunParametersPayload,
10
+ hasRequiredRunParameterWithoutDefault,
11
+ resolveRunParameterText
12
+ };
13
+ //# sourceMappingURL=RunParameterFields.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/components/RunParameterFields.tsx"],
4
+ "sourcesContent": ["'use client'\n// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (components/RunParameterFields.tsx). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/components/RunParameterFields'\nexport { RunParameterFields, buildDefaultRunParameterValues, buildRetryFailureMessage, buildRunFailureMessage, buildRunParametersPayload, hasRequiredRunParameterWithoutDefault, resolveRunParameterText } from '@open-mercato/core/modules/data_sync/components/RunParameterFields'\n"],
5
+ "mappings": ";AAGA,cAAc;AACd,SAAS,oBAAoB,gCAAgC,0BAA0B,wBAAwB,2BAA2B,uCAAuC,+BAA+B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ export * from "@open-mercato/core/modules/data_sync/data/entities";
2
+ import { SyncCursor, SyncMapping, SyncRun, SyncSchedule } from "@open-mercato/core/modules/data_sync/data/entities";
3
+ export {
4
+ SyncCursor,
5
+ SyncMapping,
6
+ SyncRun,
7
+ SyncSchedule
8
+ };
9
+ //# sourceMappingURL=entities.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/data/entities.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (data/entities.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/data/entities'\nexport { SyncCursor, SyncMapping, SyncRun, SyncSchedule } from '@open-mercato/core/modules/data_sync/data/entities'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,YAAY,aAAa,SAAS,oBAAoB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ export * from "@open-mercato/core/modules/data_sync/data/validators";
2
+ import { createSyncScheduleSchema, listSyncRunsQuerySchema, listSyncSchedulesQuerySchema, retrySyncSchema, runSyncSchema, updateSyncScheduleSchema, validateConnectionSchema } from "@open-mercato/core/modules/data_sync/data/validators";
3
+ export {
4
+ createSyncScheduleSchema,
5
+ listSyncRunsQuerySchema,
6
+ listSyncSchedulesQuerySchema,
7
+ retrySyncSchema,
8
+ runSyncSchema,
9
+ updateSyncScheduleSchema,
10
+ validateConnectionSchema
11
+ };
12
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/modules/data_sync/data/validators.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (data/validators.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/data/validators'\nexport { createSyncScheduleSchema, listSyncRunsQuerySchema, listSyncSchedulesQuerySchema, retrySyncSchema, runSyncSchema, updateSyncScheduleSchema, validateConnectionSchema } from '@open-mercato/core/modules/data_sync/data/validators'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,0BAA0B,yBAAyB,8BAA8B,iBAAiB,eAAe,0BAA0B,gCAAgC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,33 @@
1
+ import { register as registerCore } from "@open-mercato/core/modules/data_sync/di";
2
+ import { createSyncEngine } from "@open-mercato/core/modules/data_sync/lib/sync-engine";
3
+ import { registry } from "@fullstackhouse/open-mercato-durable-work";
4
+ import { dataSyncKinds } from "../../kinds/data-sync-run.js";
5
+ const KINDS = dataSyncKinds({
6
+ resolve: async () => {
7
+ const { createRequestContainer } = await import("@open-mercato/shared/lib/di/container");
8
+ const container = await createRequestContainer();
9
+ const em = container.resolve("em");
10
+ return {
11
+ runService: container.resolve("dataSyncRunService"),
12
+ progressService: container.resolve("progressService"),
13
+ engine: ({ runService, progressService }) => createSyncEngine({
14
+ em,
15
+ syncRunService: runService,
16
+ integrationCredentialsService: container.resolve("integrationCredentialsService"),
17
+ integrationLogService: container.resolve("integrationLogService"),
18
+ integrationStateService: container.resolve("integrationStateService"),
19
+ progressService
20
+ })
21
+ };
22
+ }
23
+ });
24
+ function register(container) {
25
+ registerCore(container);
26
+ for (const kind of KINDS) registry.register(kind);
27
+ }
28
+ var di_default = register;
29
+ export {
30
+ di_default as default,
31
+ register
32
+ };
33
+ //# sourceMappingURL=di.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/data_sync/di.ts"],
4
+ "sourcesContent": ["// Core's DI, plus the two job kinds a run becomes.\n//\n// Core's registrations are reused as they are \u2014 the engine, the run service, the mapping and\n// schedule services are all core's, unchanged. The decoration that makes a run durable happens\n// per slice, inside the kind, not here (see docs/adr/0004): a container-level decoration would\n// apply to every caller of the engine, including ones not running under a lease.\n\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport { register as registerCore } from '@open-mercato/core/modules/data_sync/di'\nimport { createSyncEngine } from '@open-mercato/core/modules/data_sync/lib/sync-engine'\nimport { registry } from '@fullstackhouse/open-mercato-durable-work'\n\nimport { dataSyncKinds } from '../../kinds/data-sync-run'\n\n/**\n * Built once, at module scope, not once per container.\n *\n * `register` runs on every container build \u2014 which in a web process means every request \u2014 and\n * the registry refuses two different handlers under one kind id, because silently accepting\n * the second would make \"which code is running this job?\" depend on request ordering. Kinds\n * created per call would be a different handler every time, so the second request would throw.\n *\n * Each slice resolves its own container instead, which it needs anyway: slices run in the\n * worker process, outside any request, and each needs its own EntityManager rather than one\n * captured from whichever request happened to build the registry first.\n */\nconst KINDS = dataSyncKinds({\n resolve: async () => {\n const { createRequestContainer } = await import('@open-mercato/shared/lib/di/container')\n const container = await createRequestContainer()\n const em = container.resolve<EntityManager>('em')\n return {\n runService: container.resolve('dataSyncRunService'),\n progressService: container.resolve('progressService'),\n engine: ({ runService, progressService }) =>\n createSyncEngine({\n em,\n syncRunService: runService as never,\n integrationCredentialsService: container.resolve('integrationCredentialsService'),\n integrationLogService: container.resolve('integrationLogService'),\n integrationStateService: container.resolve('integrationStateService'),\n progressService: progressService as never,\n }),\n }\n },\n})\n\nexport function register(container: AppContainer) {\n registerCore(container)\n // Idempotent: the same handler objects every time, so re-registering is a no-op. The web\n // process needs them to re-drive and cancel, the worker to run slices, and the reconciler to\n // know whether a job has a handler at all.\n for (const kind of KINDS) registry.register(kind)\n}\n\nexport default register\n"],
5
+ "mappings": "AASA,SAAS,YAAY,oBAAoB;AACzC,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,qBAAqB;AAc9B,MAAM,QAAQ,cAAc;AAAA,EAC1B,SAAS,YAAY;AACnB,UAAM,EAAE,uBAAuB,IAAI,MAAM,OAAO,uCAAuC;AACvF,UAAM,YAAY,MAAM,uBAAuB;AAC/C,UAAM,KAAK,UAAU,QAAuB,IAAI;AAChD,WAAO;AAAA,MACL,YAAY,UAAU,QAAQ,oBAAoB;AAAA,MAClD,iBAAiB,UAAU,QAAQ,iBAAiB;AAAA,MACpD,QAAQ,CAAC,EAAE,YAAY,gBAAgB,MACrC,iBAAiB;AAAA,QACf;AAAA,QACA,gBAAgB;AAAA,QAChB,+BAA+B,UAAU,QAAQ,+BAA+B;AAAA,QAChF,uBAAuB,UAAU,QAAQ,uBAAuB;AAAA,QAChE,yBAAyB,UAAU,QAAQ,yBAAyB;AAAA,QACpE;AAAA,MACF,CAAC;AAAA,IACL;AAAA,EACF;AACF,CAAC;AAEM,SAAS,SAAS,WAAyB;AAChD,eAAa,SAAS;AAItB,aAAW,QAAQ,MAAO,UAAS,SAAS,IAAI;AAClD;AAEA,IAAO,aAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ export * from "@open-mercato/core/modules/data_sync/events";
2
+ import { default as default2 } from "@open-mercato/core/modules/data_sync/events";
3
+ import { emitDataSyncEvent, eventsConfig } from "@open-mercato/core/modules/data_sync/events";
4
+ export {
5
+ default2 as default,
6
+ emitDataSyncEvent,
7
+ eventsConfig
8
+ };
9
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/data_sync/events.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (events.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/events'\nexport { default } from '@open-mercato/core/modules/data_sync/events'\nexport { emitDataSyncEvent, eventsConfig } from '@open-mercato/core/modules/data_sync/events'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,WAAAA,gBAAe;AACxB,SAAS,mBAAmB,oBAAoB;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,8 @@
1
+ export * from "@open-mercato/core/modules/data_sync/extension-points";
2
+ import { default as default2 } from "@open-mercato/core/modules/data_sync/extension-points";
3
+ import { extensionPoints } from "@open-mercato/core/modules/data_sync/extension-points";
4
+ export {
5
+ default2 as default,
6
+ extensionPoints
7
+ };
8
+ //# sourceMappingURL=extension-points.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/modules/data_sync/extension-points.ts"],
4
+ "sourcesContent": ["// GENERATED by scripts/gen-mirror.mjs from @open-mercato/core@0.7.0 (extension-points.ts). Do not edit.\n// This package mirrors core's data_sync module file-for-file; see docs/adr/0006-drop-in-data-sync.md.\nexport * from '@open-mercato/core/modules/data_sync/extension-points'\nexport { default } from '@open-mercato/core/modules/data_sync/extension-points'\nexport { extensionPoints } from '@open-mercato/core/modules/data_sync/extension-points'\n"],
5
+ "mappings": "AAEA,cAAc;AACd,SAAS,WAAAA,gBAAe;AACxB,SAAS,uBAAuB;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "data_sync.dashboard.actions.view": "Anzeigen",
3
+ "data_sync.dashboard.columns.created": "Erstellt",
4
+ "data_sync.dashboard.columns.createdAt": "Gestartet",
5
+ "data_sync.dashboard.columns.direction": "Richtung",
6
+ "data_sync.dashboard.columns.entityType": "Entitätstyp",
7
+ "data_sync.dashboard.columns.failed": "Fehlgeschlagen",
8
+ "data_sync.dashboard.columns.integration": "Integration",
9
+ "data_sync.dashboard.columns.status": "Status",
10
+ "data_sync.dashboard.columns.updated": "Aktualisiert",
11
+ "data_sync.dashboard.direction.export": "Export",
12
+ "data_sync.dashboard.direction.import": "Import",
13
+ "data_sync.dashboard.filters.allDirections": "Alle Richtungen",
14
+ "data_sync.dashboard.filters.allStatuses": "Alle Status",
15
+ "data_sync.dashboard.filters.status": "Status",
16
+ "data_sync.dashboard.loadError": "Synchronisierungsläufe konnten nicht geladen werden",
17
+ "data_sync.dashboard.noRuns": "Noch keine Synchronisierungsläufe",
18
+ "data_sync.dashboard.schedule.cron": "Cron",
19
+ "data_sync.dashboard.schedule.cronHelp": "Example: `0 * * * *` runs at the start of every hour.",
20
+ "data_sync.dashboard.schedule.cronValue": "Cron expression",
21
+ "data_sync.dashboard.schedule.delete": "Remove schedule",
22
+ "data_sync.dashboard.schedule.deleteError": "Failed to remove recurring schedule",
23
+ "data_sync.dashboard.schedule.deleteSuccess": "Recurring schedule removed",
24
+ "data_sync.dashboard.schedule.deleting": "Removing...",
25
+ "data_sync.dashboard.schedule.description": "Save a repeating schedule for the selected integration, entity, and direction without leaving this dashboard.",
26
+ "data_sync.dashboard.schedule.enabled": "Schedule enabled",
27
+ "data_sync.dashboard.schedule.enabledHelp": "Pause the recurring job without deleting the schedule definition.",
28
+ "data_sync.dashboard.schedule.error": "Failed to save recurring schedule",
29
+ "data_sync.dashboard.schedule.fullSync": "Run scheduled jobs as full sync",
30
+ "data_sync.dashboard.schedule.fullSyncHelp": "When enabled, every recurring run starts from the beginning instead of the saved cursor.",
31
+ "data_sync.dashboard.schedule.interval": "Interval",
32
+ "data_sync.dashboard.schedule.intervalHelp": "Example: `1h`, `6h`, or `24h` for repeating intervals.",
33
+ "data_sync.dashboard.schedule.intervalValue": "Interval",
34
+ "data_sync.dashboard.schedule.invalidValue": "Provide a schedule value before saving.",
35
+ "data_sync.dashboard.schedule.lastRun": "Last scheduled run: {value}",
36
+ "data_sync.dashboard.schedule.neverRun": "Saved, but no scheduled execution has completed yet.",
37
+ "data_sync.dashboard.schedule.none": "No recurring schedule saved for this target yet.",
38
+ "data_sync.dashboard.schedule.save": "Save recurring schedule",
39
+ "data_sync.dashboard.schedule.saving": "Saving...",
40
+ "data_sync.dashboard.schedule.status.disabled": "Recurring schedule paused",
41
+ "data_sync.dashboard.schedule.status.enabled": "Recurring schedule active",
42
+ "data_sync.dashboard.schedule.status.none": "No recurring schedule",
43
+ "data_sync.dashboard.schedule.status.shortDisabled": "Paused",
44
+ "data_sync.dashboard.schedule.status.shortEnabled": "Scheduled",
45
+ "data_sync.dashboard.schedule.status.shortNone": "One-time only",
46
+ "data_sync.dashboard.schedule.success": "Recurring schedule saved",
47
+ "data_sync.dashboard.schedule.timezone": "Timezone",
48
+ "data_sync.dashboard.schedule.title": "Recurring schedule",
49
+ "data_sync.dashboard.schedule.type": "Schedule type",
50
+ "data_sync.dashboard.searchPlaceholder": "Nach Integration, Entitätstyp, Status oder Lauf-ID suchen",
51
+ "data_sync.dashboard.start.batchSize": "Batch Size",
52
+ "data_sync.dashboard.start.description": "Pick a sync target, launch an ad-hoc run, or save a recurring schedule for the same entity and direction from this page.",
53
+ "data_sync.dashboard.start.error": "Failed to start sync run",
54
+ "data_sync.dashboard.start.eyebrow": "Run once or keep it recurring",
55
+ "data_sync.dashboard.start.fullSync": "Run as full sync",
56
+ "data_sync.dashboard.start.fullSyncHelp": "Ignore the saved cursor and process the entire source again for this run.",
57
+ "data_sync.dashboard.start.invalidBatchSize": "Batch size must be between 1 and 1000.",
58
+ "data_sync.dashboard.start.parameters": "Lauf-Parameter",
59
+ "data_sync.dashboard.start.parametersHelp": "Optionale Werte, die diese Integration für den manuellen Lauf akzeptiert.",
60
+ "data_sync.dashboard.start.providerManaged": "Diese Integration startet Synchronisierungsläufe über ihren eigenen Einrichtungsablauf. Öffne die Integrationseinstellungen, um fortzufahren.",
61
+ "data_sync.dashboard.start.runNowDescription": "Use this for the next immediate sync. Batch size and full-sync mode apply only to this manual run.",
62
+ "data_sync.dashboard.start.runNowFootnote": "Manual runs show progress immediately and land on the run detail page after launch.",
63
+ "data_sync.dashboard.start.runNowTitle": "Run once now",
64
+ "data_sync.dashboard.start.status.credentialsMissing": "Credentials missing",
65
+ "data_sync.dashboard.start.status.credentialsReady": "Credentials ready",
66
+ "data_sync.dashboard.start.status.disabled": "Integration disabled",
67
+ "data_sync.dashboard.start.status.enabled": "Integration enabled",
68
+ "data_sync.dashboard.start.submit": "Start sync",
69
+ "data_sync.dashboard.start.success": "Sync run started",
70
+ "data_sync.dashboard.start.title": "Start or schedule a sync",
71
+ "data_sync.dashboard.status.cancelled": "Abgebrochen",
72
+ "data_sync.dashboard.status.completed": "Abgeschlossen",
73
+ "data_sync.dashboard.status.failed": "Fehlgeschlagen",
74
+ "data_sync.dashboard.status.paused": "Pausiert",
75
+ "data_sync.dashboard.status.pending": "Ausstehend",
76
+ "data_sync.dashboard.status.running": "Läuft",
77
+ "data_sync.dashboard.title": "Synchronisierungsläufe",
78
+ "data_sync.integrationTab.columns.actions": "Actions",
79
+ "data_sync.integrationTab.columns.lastRun": "Last run",
80
+ "data_sync.integrationTab.columns.value": "Value",
81
+ "data_sync.integrationTab.credentialsMissing": "Configure credentials before starting a sync.",
82
+ "data_sync.integrationTab.credentialsMissingNotice": "Credentials are still missing. Save schedules first if you want, but manual and scheduled runs will fail until credentials are configured.",
83
+ "data_sync.integrationTab.description": "Run one-off syncs or save recurring schedules for every supported entity directly from the integration detail page.",
84
+ "data_sync.integrationTab.empty": "This provider does not expose any schedulable sync entities yet.",
85
+ "data_sync.integrationTab.fullSyncShort": "Full",
86
+ "data_sync.integrationTab.integrationDisabled": "Enable the integration before starting a sync.",
87
+ "data_sync.integrationTab.integrationDisabledNotice": "The integration is disabled. You can save schedules now, but runs will stay blocked until the integration is enabled.",
88
+ "data_sync.integrationTab.loadError": "Failed to load sync schedules.",
89
+ "data_sync.integrationTab.notAvailable": "This integration is not registered as a data sync provider.",
90
+ "data_sync.integrationTab.parametersRequired": "Dieser Lauf benötigt Parameter. Starte ihn über das Data-Sync-Dashboard.",
91
+ "data_sync.integrationTab.providerManaged": "Starte diese Integration über ihren anbieterspezifischen Einrichtungsablauf.",
92
+ "data_sync.integrationTab.providerManagedNotice": "Dieser Anbieter benötigt einen eigenen Einrichtungsablauf, bevor ein Lauf gestartet werden kann. Verwende den Anbieter-Tab auf dieser Seite statt der generischen Zeitpläne.",
93
+ "data_sync.integrationTab.refresh": "Refresh",
94
+ "data_sync.integrationTab.runError": "Failed to start sync.",
95
+ "data_sync.integrationTab.runNowHelp": "Run now uses the full-sync checkbox from the same row and starts progress tracking immediately in Data Sync.",
96
+ "data_sync.integrationTab.runNowTitle": "Manual runs",
97
+ "data_sync.integrationTab.runStarted": "Sync run started.",
98
+ "data_sync.integrationTab.start": "Run now",
99
+ "data_sync.integrationTab.starting": "Starting...",
100
+ "data_sync.integrationTab.title": "Sync schedules",
101
+ "data_sync.nav.title": "Datensynchronisation",
102
+ "data_sync.runParameters.errors.max": "{label} darf höchstens {max} betragen.",
103
+ "data_sync.runParameters.errors.min": "{label} muss mindestens {min} betragen.",
104
+ "data_sync.runParameters.errors.required": "{label} ist erforderlich.",
105
+ "data_sync.runParameters.errors.select": "{label} muss einer dieser Werte sein: {options}.",
106
+ "data_sync.runParameters.errors.type": "{label} muss vom Typ {type} sein.",
107
+ "data_sync.runs.detail.back": "Zurück zu Läufen",
108
+ "data_sync.runs.detail.cancel": "Abbrechen",
109
+ "data_sync.runs.detail.cancelError": "Lauf konnte nicht abgebrochen werden",
110
+ "data_sync.runs.detail.cancelSuccess": "Lauf abgebrochen",
111
+ "data_sync.runs.detail.counters.created": "Erstellt",
112
+ "data_sync.runs.detail.counters.failed": "Fehlgeschlagen",
113
+ "data_sync.runs.detail.counters.skipped": "Übersprungen",
114
+ "data_sync.runs.detail.counters.updated": "Aktualisiert",
115
+ "data_sync.runs.detail.error": "Fehler",
116
+ "data_sync.runs.detail.loadError": "Lauf konnte nicht geladen werden",
117
+ "data_sync.runs.detail.logs": "Betriebsprotokolle",
118
+ "data_sync.runs.detail.logs.level": "Stufe",
119
+ "data_sync.runs.detail.logs.message": "Nachricht",
120
+ "data_sync.runs.detail.logs.time": "Zeit",
121
+ "data_sync.runs.detail.noLogs": "Keine Protokolleinträge",
122
+ "data_sync.runs.detail.notFound": "Synchronisierungslauf nicht gefunden.",
123
+ "data_sync.runs.detail.parameters": "Lauf-Parameter",
124
+ "data_sync.runs.detail.progress": "Fortschritt",
125
+ "data_sync.runs.detail.progress.batches": "{count} Stapel",
126
+ "data_sync.runs.detail.progress.eta": "{eta} verbleibend",
127
+ "data_sync.runs.detail.progress.itemsProcessed": "{count} Elemente verarbeitet",
128
+ "data_sync.runs.detail.progress.itemsProcessedTotal": "{processed} / {total} Elemente verarbeitet",
129
+ "data_sync.runs.detail.progress.percent": "{percent}% abgeschlossen",
130
+ "data_sync.runs.detail.retry": "Wiederholen",
131
+ "data_sync.runs.detail.retryError": "Lauf konnte nicht wiederholt werden",
132
+ "data_sync.runs.detail.retryParametersStale": "Die gespeicherten Laufparameter sind für diese Integration nicht mehr gültig. Starten Sie einen neuen Lauf über das Data-Sync-Dashboard.",
133
+ "data_sync.runs.detail.retrySuccess": "Lauf wiederholt",
134
+ "data_sync.runs.detail.title": "Synchronisierungslauf"
135
+ }