@hartl-services/medusa-base 2.6.1 → 2.8.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 (151) hide show
  1. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +3 -2
  2. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.js +4 -4
  3. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginActionsSection.js +4 -4
  4. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.d.ts +16 -0
  5. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.js +25 -0
  6. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginDetailPage.js +1 -1
  7. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +5 -4
  8. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.js +8 -5
  9. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +4 -4
  10. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.js +24 -27
  11. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +2 -2
  12. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +9 -9
  13. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.d.ts +5 -1
  14. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.js +11 -15
  15. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.d.ts +10 -4
  16. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.js +10 -5
  17. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +0 -1
  18. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.js +77 -26
  19. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +5 -1
  20. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.js +8 -6
  21. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.d.ts +11 -0
  22. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.js +15 -0
  23. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +40 -5
  24. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +160 -20
  25. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +40 -5
  26. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.d.ts +15 -0
  27. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.js +66 -0
  28. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +160 -20
  29. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.d.ts +49 -0
  30. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.js +72 -0
  31. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.d.ts +1 -12
  32. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.js +4 -20
  33. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.d.ts +47 -0
  34. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.js +70 -0
  35. package/.medusa/server/src/admin/admin-components/i18n/texts.d.ts +22 -2
  36. package/.medusa/server/src/admin/admin-components/i18n/texts.js +29 -7
  37. package/.medusa/server/src/admin/admin-components/index.d.ts +12 -0
  38. package/.medusa/server/src/admin/admin-components/index.js +11 -0
  39. package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.d.ts +22 -0
  40. package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.js +8 -0
  41. package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.d.ts +26 -0
  42. package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.js +12 -0
  43. package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.d.ts +23 -0
  44. package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.js +20 -0
  45. package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.d.ts +21 -0
  46. package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.js +33 -0
  47. package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.d.ts +27 -0
  48. package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.js +13 -0
  49. package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.d.ts +13 -0
  50. package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.js +8 -0
  51. package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.d.ts +22 -0
  52. package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.js +14 -0
  53. package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.d.ts +10 -0
  54. package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.js +10 -0
  55. package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.d.ts +27 -0
  56. package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.js +15 -0
  57. package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.d.ts +15 -0
  58. package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.js +8 -0
  59. package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.d.ts +13 -0
  60. package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.js +16 -0
  61. package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.d.ts +13 -0
  62. package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.js +11 -0
  63. package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.d.ts +12 -0
  64. package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.js +29 -0
  65. package/.medusa/server/src/admin/index.js +3155 -2039
  66. package/.medusa/server/src/admin/index.mjs +3158 -2042
  67. package/.medusa/server/src/api/admin-first-login-password-policy.js +56 -0
  68. package/.medusa/server/src/api/answer-actor-type-casing-not-found.js +26 -0
  69. package/.medusa/server/src/api/answer-code-provider-route-not-found.js +34 -0
  70. package/.medusa/server/src/api/code-account-password-routes.js +92 -0
  71. package/.medusa/server/src/api/middlewares.js +82 -17
  72. package/.medusa/server/src/api/password-policy.js +55 -10
  73. package/.medusa/server/src/api/require-login-code-customer-email.js +40 -0
  74. package/.medusa/server/src/api/store/customer-auth/login-code/route.js +17 -0
  75. package/.medusa/server/src/api/store/customer-auth/password-policy/route.js +19 -0
  76. package/.medusa/server/src/customer-auth/application/prepare-code-account-password-reset.js +111 -0
  77. package/.medusa/server/src/customer-auth/application/request-login-code.js +145 -0
  78. package/.medusa/server/src/customer-auth/customer-auth-methods-snapshot.js +55 -0
  79. package/.medusa/server/src/customer-auth/customer-password-policy.js +40 -0
  80. package/.medusa/server/src/customer-auth/domain/account-linking.js +53 -0
  81. package/.medusa/server/src/customer-auth/domain/auth-methods.js +32 -0
  82. package/.medusa/server/src/customer-auth/domain/login-code.js +39 -0
  83. package/.medusa/server/src/customer-auth/login-code-accounts.js +146 -0
  84. package/.medusa/server/src/customer-auth/login-code-state.js +139 -0
  85. package/.medusa/server/src/customer-auth/plugin-features.js +80 -0
  86. package/.medusa/server/src/customer-auth/remove-provider-identity.js +18 -0
  87. package/.medusa/server/src/customer-auth/start-customer-auth-methods.js +20 -0
  88. package/.medusa/server/src/documents/plugin-features.js +8 -2
  89. package/.medusa/server/src/email/application/deliver-ephemeral-auth-mail.js +186 -0
  90. package/.medusa/server/src/email/application/deliver-login-code.js +89 -0
  91. package/.medusa/server/src/email/application/handle-customer-verification-event.js +29 -168
  92. package/.medusa/server/src/email/application/handle-password-reset-event.js +27 -166
  93. package/.medusa/server/src/email/customer-verification-snapshot.js +20 -108
  94. package/.medusa/server/src/email/domain/business-keys.js +15 -2
  95. package/.medusa/server/src/email/plugin-features.js +8 -3
  96. package/.medusa/server/src/email/rendering/default-templates.js +2 -1
  97. package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +19 -1
  98. package/.medusa/server/src/email/templates/defaults/documents.js +7 -1
  99. package/.medusa/server/src/email/templates/defaults/subjects.js +3 -1
  100. package/.medusa/server/src/email/templates/defaults/texts.js +5 -2
  101. package/.medusa/server/src/email/templates/render.js +2 -1
  102. package/.medusa/server/src/email/templates/sample-data.js +2 -1
  103. package/.medusa/server/src/email/templates/validate.js +8 -3
  104. package/.medusa/server/src/email/types/email-kinds.js +4 -2
  105. package/.medusa/server/src/email/types/template-data.js +9 -1
  106. package/.medusa/server/src/modules/customer-auth/index.js +14 -0
  107. package/.medusa/server/src/modules/customer-auth/service.js +35 -0
  108. package/.medusa/server/src/modules/email/migrations/Migration20261010090000.js +20 -0
  109. package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +30 -6
  110. package/.medusa/server/src/modules/plugin-features/service.js +29 -3
  111. package/.medusa/server/src/providers/email-otp/index.js +8 -0
  112. package/.medusa/server/src/providers/email-otp/service.js +96 -0
  113. package/.medusa/server/src/public/descriptor.js +138 -5
  114. package/.medusa/server/src/public/effective-features.js +22 -1
  115. package/.medusa/server/src/public/index.js +4 -2
  116. package/.medusa/server/src/public/plugin-icons.js +28 -0
  117. package/.medusa/server/src/public/shop-master-data.js +33 -14
  118. package/.medusa/server/src/shared/lib/dates.js +8 -2
  119. package/.medusa/server/src/shared/lib/index.js +2 -1
  120. package/.medusa/server/src/shared/lib/refreshing-snapshot.js +122 -0
  121. package/.medusa/server/src/shop-config/build-food-shop-config.js +38 -1
  122. package/README.md +436 -87
  123. package/dist/customer-auth/customer-auth-methods-snapshot.d.ts +25 -0
  124. package/dist/customer-auth/customer-auth-methods-snapshot.js +54 -0
  125. package/dist/customer-auth/domain/auth-methods.d.ts +16 -0
  126. package/dist/customer-auth/domain/auth-methods.js +31 -0
  127. package/dist/customer-auth/plugin-features.d.ts +2 -0
  128. package/dist/customer-auth/plugin-features.js +79 -0
  129. package/dist/email/customer-verification-snapshot.d.ts +3 -15
  130. package/dist/email/customer-verification-snapshot.js +19 -107
  131. package/dist/email/types/email-kinds.d.ts +4 -3
  132. package/dist/email/types/email-kinds.js +3 -1
  133. package/dist/email/types/template-data.d.ts +8 -0
  134. package/dist/email/types/template-data.js +8 -0
  135. package/dist/public/descriptor.js +137 -4
  136. package/dist/public/effective-features.d.ts +10 -0
  137. package/dist/public/effective-features.js +21 -0
  138. package/dist/public/index.d.ts +2 -1
  139. package/dist/public/index.js +3 -1
  140. package/dist/public/plugin-icons.d.ts +7 -0
  141. package/dist/public/plugin-icons.js +27 -0
  142. package/dist/public/shop-master-data.js +32 -13
  143. package/dist/public/types.d.ts +74 -2
  144. package/dist/shared/lib/dates.d.ts +2 -0
  145. package/dist/shared/lib/dates.js +7 -1
  146. package/dist/shared/lib/index.d.ts +1 -0
  147. package/dist/shared/lib/index.js +1 -0
  148. package/dist/shared/lib/refreshing-snapshot.d.ts +52 -0
  149. package/dist/shared/lib/refreshing-snapshot.js +121 -0
  150. package/dist/shop-config/build-food-shop-config.js +37 -0
  151. package/package.json +8 -3
@@ -4,6 +4,7 @@ exports.validatePluginFeatureDescriptor = validatePluginFeatureDescriptor;
4
4
  exports.definePluginFeatures = definePluginFeatures;
5
5
  const utils_1 = require("@medusajs/framework/utils");
6
6
  const lib_1 = require("../shared/lib");
7
+ const plugin_icons_1 = require("./plugin-icons");
7
8
  const KEY_PATTERN = /^[a-z][a-z0-9_]{0,62}$/;
8
9
  const SETTING_TYPES = new Set([
9
10
  "string",
@@ -14,12 +15,17 @@ const SETTING_TYPES = new Set([
14
15
  "select",
15
16
  "image",
16
17
  "color",
18
+ "date",
17
19
  ]);
18
20
  const HEX_COLOR_PATTERN = /^#[0-9a-f]{6}$/;
19
21
  const ACTION_MODES = new Set(["sync", "background"]);
20
22
  const ADMIN_PAGE_PREFIX = "/settings/hartl-services/";
21
23
  const BASE_PAGE_PREFIX = "/settings/hartl-services/plugin/";
22
24
  const ADMIN_PAGE_PATTERN = /^\/settings\/hartl-services(\/[a-z0-9][a-z0-9_-]*)+$/;
25
+ const ICON_NAMES = new Set(plugin_icons_1.PLUGIN_ICON_NAMES);
26
+ const SETTING_WIDTHS = new Set(["full", "half"]);
27
+ /** Types an input placeholder makes no sense for. */
28
+ const NO_PLACEHOLDER_TYPES = new Set(["boolean", "select", "image", "color", "date"]);
23
29
  const invalid = (pluginKey, message) => new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Ungültige Funktionsschalter für Plugin "${pluginKey}": ${message}`);
24
30
  const defaultMatchesType = (setting) => {
25
31
  const value = setting.default;
@@ -31,8 +37,12 @@ const defaultMatchesType = (setting) => {
31
37
  return typeof value === "string" && (0, lib_1.isHttpUrl)(value);
32
38
  case "color":
33
39
  return typeof value === "string" && HEX_COLOR_PATTERN.test(value);
40
+ case "date":
41
+ return typeof value === "string" && (0, lib_1.isCalendarDate)(value);
34
42
  case "number":
35
- return typeof value === "number" && Number.isFinite(value);
43
+ return (typeof value === "number" &&
44
+ Number.isFinite(value) &&
45
+ (setting.integer !== true || Number.isInteger(value)));
36
46
  case "boolean":
37
47
  return typeof value === "boolean";
38
48
  case "select":
@@ -46,7 +56,10 @@ const withinBounds = (setting) => typeof setting.default !== "number" ||
46
56
  ((setting.min === undefined || setting.default >= setting.min) &&
47
57
  (setting.max === undefined || setting.default <= setting.max));
48
58
  const isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
49
- /** `options` only (and required) for select, `min`/`max` only for number. */
59
+ /**
60
+ * `options` only (and required) for select, `min`/`max`/`integer` only for
61
+ * number.
62
+ */
50
63
  const validateTypeExtras = (pluginKey, setting) => {
51
64
  if (setting.type === "select") {
52
65
  const options = setting.options;
@@ -68,11 +81,16 @@ const validateTypeExtras = (pluginKey, setting) => {
68
81
  throw invalid(pluginKey, `Einstellung "${setting.key}": options gibt es nur bei "select".`);
69
82
  }
70
83
  if (setting.type !== "number") {
71
- if (setting.min !== undefined || setting.max !== undefined) {
72
- throw invalid(pluginKey, `Einstellung "${setting.key}": min/max gibt es nur bei "number".`);
84
+ if (setting.min !== undefined ||
85
+ setting.max !== undefined ||
86
+ setting.integer !== undefined) {
87
+ throw invalid(pluginKey, `Einstellung "${setting.key}": min/max/integer gibt es nur bei "number".`);
73
88
  }
74
89
  return;
75
90
  }
91
+ if (setting.integer !== undefined && typeof setting.integer !== "boolean") {
92
+ throw invalid(pluginKey, `Einstellung "${setting.key}": integer muss boolean sein.`);
93
+ }
76
94
  for (const [name, bound] of [
77
95
  ["min", setting.min],
78
96
  ["max", setting.max],
@@ -111,6 +129,28 @@ const validateInvalidates = (pluginKey, setting, settings) => {
111
129
  seen.add(key);
112
130
  }
113
131
  };
132
+ /** `hint`, `placeholder`, `section` and `width` of one setting. */
133
+ const validateDisplayFields = (pluginKey, setting) => {
134
+ for (const name of ["hint", "placeholder", "section"]) {
135
+ const value = setting[name];
136
+ if (value !== undefined && !(0, lib_1.isNonEmptyString)(value)) {
137
+ throw invalid(pluginKey, `Einstellung "${setting.key}": ${name} muss ein nicht-leerer Text sein.`);
138
+ }
139
+ }
140
+ if (setting.placeholder !== undefined && NO_PLACEHOLDER_TYPES.has(setting.type)) {
141
+ throw invalid(pluginKey, `Einstellung "${setting.key}": placeholder gibt es nicht bei "${setting.type}".`);
142
+ }
143
+ const width = setting.width;
144
+ if (width === undefined) {
145
+ return;
146
+ }
147
+ if (typeof width !== "string" || !SETTING_WIDTHS.has(width)) {
148
+ throw invalid(pluginKey, `Einstellung "${setting.key}": width muss "full" oder "half" sein.`);
149
+ }
150
+ if (setting.type === "boolean") {
151
+ throw invalid(pluginKey, `Einstellung "${setting.key}": width gibt es nicht bei "boolean".`);
152
+ }
153
+ };
114
154
  const validateSettings = (pluginKey, settings) => {
115
155
  const seen = new Set();
116
156
  for (const setting of settings) {
@@ -134,6 +174,7 @@ const validateSettings = (pluginKey, settings) => {
134
174
  throw invalid(pluginKey, `Einstellung "${setting.key}": required muss boolean sein.`);
135
175
  }
136
176
  validateTypeExtras(pluginKey, setting);
177
+ validateDisplayFields(pluginKey, setting);
137
178
  validateInvalidates(pluginKey, setting, settings);
138
179
  if (setting.default === undefined) {
139
180
  continue;
@@ -184,6 +225,96 @@ const validateAdminPage = (pluginKey, path) => {
184
225
  throw invalid(pluginKey, `admin_page "${String(path)}" muss unter "${ADMIN_PAGE_PREFIX}<plugin>" liegen und darf nicht mit "${BASE_PAGE_PREFIX}" beginnen.`);
185
226
  }
186
227
  };
228
+ /**
229
+ * `visible_when` points at a select or boolean setting outside the group and
230
+ * `equals` is one of its possible values.
231
+ */
232
+ const validateVisibleWhen = (pluginKey, groupName, condition, settings) => {
233
+ if (condition === undefined) {
234
+ return;
235
+ }
236
+ const { setting: key, equals } = (condition ?? {});
237
+ const target = settings.find((setting) => setting.key === key);
238
+ const fits = target?.type === "select"
239
+ ? (target.options ?? []).some((option) => option.value === equals)
240
+ : target?.type === "boolean" && typeof equals === "boolean";
241
+ if (!target || target.group === groupName || !fits) {
242
+ throw invalid(pluginKey, `Einstellungsgruppe "${groupName}": visible_when muss auf eine Auswahl oder einen Schalter außerhalb der Gruppe mit einem ihrer Werte zeigen.`);
243
+ }
244
+ };
245
+ /**
246
+ * Metadata per settings group: unique names, each used by a setting's
247
+ * `group`, `requires_feature` a declared feature key, `visible_when` valid.
248
+ */
249
+ const validateSettingGroups = (pluginKey, groups, settings, featureKeys) => {
250
+ if (groups === undefined) {
251
+ return;
252
+ }
253
+ if (!Array.isArray(groups)) {
254
+ throw invalid(pluginKey, "setting_groups muss eine Liste sein.");
255
+ }
256
+ const usedGroups = new Set(settings.map((setting) => setting.group));
257
+ const seen = new Set();
258
+ for (const group of groups) {
259
+ if (!(0, lib_1.isNonEmptyString)(group?.name)) {
260
+ throw invalid(pluginKey, "Eine Einstellungsgruppe hat keinen name.");
261
+ }
262
+ if (seen.has(group.name)) {
263
+ throw invalid(pluginKey, `Einstellungsgruppe "${group.name}" ist doppelt.`);
264
+ }
265
+ seen.add(group.name);
266
+ if (!usedGroups.has(group.name)) {
267
+ throw invalid(pluginKey, `Einstellungsgruppe "${group.name}" wird von keiner Einstellung verwendet.`);
268
+ }
269
+ for (const name of ["description", "note"]) {
270
+ if (group[name] !== undefined && !(0, lib_1.isNonEmptyString)(group[name])) {
271
+ throw invalid(pluginKey, `Einstellungsgruppe "${group.name}": ${name} muss ein nicht-leerer Text sein.`);
272
+ }
273
+ }
274
+ if (group.requires_feature !== undefined &&
275
+ !featureKeys.has(group.requires_feature)) {
276
+ throw invalid(pluginKey, `Einstellungsgruppe "${group.name}": requires_feature "${String(group.requires_feature)}" ist kein Feature dieses Plugins.`);
277
+ }
278
+ validateVisibleWhen(pluginKey, group.name, group.visible_when, settings);
279
+ }
280
+ };
281
+ /** Optional texts and icon of the plugin's Admin page. */
282
+ const validatePresentation = (pluginKey, descriptor) => {
283
+ const icon = descriptor.icon;
284
+ if (icon !== undefined && (typeof icon !== "string" || !ICON_NAMES.has(icon))) {
285
+ throw invalid(pluginKey, `icon "${String(icon)}" ist kein bekannter Icon-Name.`);
286
+ }
287
+ for (const name of [
288
+ "summary",
289
+ "disable_hint",
290
+ "disable_confirm",
291
+ "features_heading",
292
+ "features_note",
293
+ "all_off_warning",
294
+ ]) {
295
+ const value = descriptor[name];
296
+ if (value !== undefined && !(0, lib_1.isNonEmptyString)(value)) {
297
+ throw invalid(pluginKey, `${name} muss ein nicht-leerer Text sein.`);
298
+ }
299
+ }
300
+ if (descriptor.switchable === false &&
301
+ (descriptor.disable_hint !== undefined ||
302
+ descriptor.disable_confirm !== undefined)) {
303
+ throw invalid(pluginKey, "disable_hint und disable_confirm gibt es nur bei abschaltbaren Plugins.");
304
+ }
305
+ if (descriptor.all_off_warning !== undefined && descriptor.features.length === 0) {
306
+ throw invalid(pluginKey, "all_off_warning braucht mindestens ein Feature.");
307
+ }
308
+ const requireEnabled = descriptor.require_enabled_feature;
309
+ if (requireEnabled !== undefined) {
310
+ if (requireEnabled !== true) {
311
+ throw invalid(pluginKey, "require_enabled_feature muss true sein.");
312
+ }
313
+ if (!descriptor.features.some((feature) => feature.parent_key === undefined && feature.default_enabled)) {
314
+ throw invalid(pluginKey, "require_enabled_feature braucht mindestens ein Feature ohne parent_key mit default_enabled: true.");
315
+ }
316
+ }
317
+ };
187
318
  /**
188
319
  * Checks key format, unique feature keys, existing parents and the single
189
320
  * allowed nesting level, plus the optional settings, actions and Admin page.
@@ -236,7 +367,9 @@ function validatePluginFeatureDescriptor(descriptor) {
236
367
  throw invalid(pluginKey, `Feature "${feature.key}" ist zu tief verschachtelt; erlaubt ist eine Ebene.`);
237
368
  }
238
369
  }
370
+ validatePresentation(pluginKey, descriptor);
239
371
  validateSettings(pluginKey, descriptor.settings ?? []);
372
+ validateSettingGroups(pluginKey, descriptor.setting_groups, descriptor.settings ?? [], new Set(byKey.keys()));
240
373
  validateActions(pluginKey, descriptor.actions ?? []);
241
374
  validateAdminPage(pluginKey, descriptor.admin_page);
242
375
  }
@@ -248,4 +381,4 @@ function definePluginFeatures(descriptor) {
248
381
  validatePluginFeatureDescriptor(descriptor);
249
382
  return descriptor;
250
383
  }
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlRQSwwRUF5RUM7QUFNRCxvREFTQztBQXpWRCxxREFBdUQ7QUFFdkQsdUNBQTJEO0FBUTNELE1BQU0sV0FBVyxHQUFHLHdCQUF3QixDQUFBO0FBQzVDLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzVCLFFBQVE7SUFDUixLQUFLO0lBQ0wsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsUUFBUTtJQUNSLE9BQU87SUFDUCxPQUFPO0NBQ1IsQ0FBQyxDQUFBO0FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQTtBQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFBO0FBQ3BELE1BQU0saUJBQWlCLEdBQUcsMkJBQTJCLENBQUE7QUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxrQ0FBa0MsQ0FBQTtBQUMzRCxNQUFNLGtCQUFrQixHQUFHLHNEQUFzRCxDQUFBO0FBRWpGLE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQWUsRUFBRSxDQUNsRSxJQUFJLG1CQUFXLENBQ2IsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyQ0FBMkMsU0FBUyxNQUFNLE9BQU8sRUFBRSxDQUNwRSxDQUFBO0FBRUgsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQWdDLEVBQVcsRUFBRTtJQUN2RSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO0lBQzdCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLEtBQUssUUFBUTtZQUNYLE9BQU8sSUFBQSxzQkFBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxLQUFLLEtBQUssQ0FBQztRQUNY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
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWljQSwwRUFnRkM7QUFNRCxvREFTQztBQWhpQkQscURBQXVEO0FBRXZELHVDQUEyRTtBQUUzRSxpREFBa0Q7QUFRbEQsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUE7QUFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDNUIsUUFBUTtJQUNSLEtBQUs7SUFDTCxRQUFRO0lBQ1IsU0FBUztJQUNULFFBQVE7SUFDUixRQUFRO0lBQ1IsT0FBTztJQUNQLE9BQU87SUFDUCxNQUFNO0NBQ1AsQ0FBQyxDQUFBO0FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQTtBQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFBO0FBQ3BELE1BQU0saUJBQWlCLEdBQUcsMkJBQTJCLENBQUE7QUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxrQ0FBa0MsQ0FBQTtBQUMzRCxNQUFNLGtCQUFrQixHQUFHLHNEQUFzRCxDQUFBO0FBQ2pGLE1BQU0sVUFBVSxHQUF3QixJQUFJLEdBQUcsQ0FBQyxnQ0FBaUIsQ0FBQyxDQUFBO0FBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7QUFDaEQscURBQXFEO0FBQ3JELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUVyRixNQUFNLE9BQU8sR0FBRyxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFlLEVBQUUsQ0FDbEUsSUFBSSxtQkFBVyxDQUNiLG1CQUFXLENB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
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolvePluginFeatureStates = resolvePluginFeatureStates;
4
4
  exports.resolveEffectivePluginFeatures = resolveEffectivePluginFeatures;
5
5
  exports.validateFeatureUpdate = validateFeatureUpdate;
6
+ exports.assertRequiredFeatureEnabled = assertRequiredFeatureEnabled;
6
7
  const utils_1 = require("@medusajs/framework/utils");
7
8
  /**
8
9
  * Configured and effective values of every declared feature. A descriptor
@@ -75,4 +76,24 @@ function validateFeatureUpdate(descriptor, features) {
75
76
  }
76
77
  return result;
77
78
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9lZmZlY3RpdmUtZmVhdHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsZ0VBd0NDO0FBR0Qsd0VBZUM7QUFPRCxzREFzQkM7QUFySEQscURBQXVEO0FBdUJ2RDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FDeEMsVUFBbUMsRUFDbkMsTUFBbUM7SUFFbkMseUVBQXlFO0lBQ3pFLE1BQU0sYUFBYSxHQUNqQixVQUFVLENBQUMsVUFBVSxLQUFLLEtBQUs7UUFDN0IsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsTUFBTTtZQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNoQixDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUE7SUFFMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUE7SUFDN0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDM0MsVUFBVSxDQUFDLEdBQUcsQ0FDWixPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUM3RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBZ0MsRUFBVyxFQUFFO1FBQzlELElBQUksQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENB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
79
+ /**
80
+ * For a descriptor with `require_enabled_feature`: rejects (`INVALID_DATA`)
81
+ * an update that switches off the last enabled top-level feature. `features`
82
+ * are the values to persist (`validateFeatureUpdate`; a key without a value
83
+ * counts by its default), `current` the configured values before the update
84
+ * (`resolvePluginFeatureStates`). An update that does not reduce the enabled
85
+ * set is always allowed, so an already stored all-off state can be left and
86
+ * the plugin switch can be flipped with unchanged features.
87
+ */
88
+ function assertRequiredFeatureEnabled(descriptor, features, current) {
89
+ if (descriptor.require_enabled_feature !== true) {
90
+ return;
91
+ }
92
+ const topLevel = descriptor.features.filter((feature) => feature.parent_key === undefined);
93
+ const anyOnAfter = topLevel.some((feature) => (features[feature.key] ?? feature.default_enabled) === true);
94
+ const anyOnBefore = topLevel.some((feature) => current[feature.key] === true);
95
+ if (!anyOnAfter && anyOnBefore) {
96
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Mindestens eine Funktion muss eingeschaltet bleiben.");
97
+ }
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9lZmZlY3RpdmUtZmVhdHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsZ0VBd0NDO0FBR0Qsd0VBZUM7QUFPRCxzREFzQkM7QUFXRCxvRUFxQkM7QUFySkQscURBQXVEO0FBdUJ2RDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FDeEMsVUFBbUMsRUFDbkMsTUFBbUM7SUFFbkMseUVBQXlFO0lBQ3pFLE1BQU0sYUFBYSxHQUNqQixVQUFVLENBQUMsVUFBVSxLQUFLLEtBQUs7UUFDN0IsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsTUFBTTtZQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTztZQUNoQixDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUE7SUFFMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUE7SUFDN0MsS0FBSyxNQUFNLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDM0MsVUFBVSxDQUFDLEdBQUcsQ0FDWixPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUM3RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBZ0MsRUFBVyxFQUFFO1FBQzlELElBQUksQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQ0Qs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
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reportPluginActionProgress = exports.shopMasterDataDescriptor = exports.getShopMasterData = exports.getShopAppearance = exports.getPluginSettings = exports.resolveBaseModule = exports.isBasePluginRegistered = exports.requirePluginFeature = exports.pluginFeatureGate = exports.isPluginFeatureEnabledByKey = exports.isPluginFeatureEnabled = exports.isOwnPluginEvent = exports.resolveEffectivePluginFeatures = exports.definePluginFeatures = exports.PLUGIN_FEATURES_MODULE = void 0;
3
+ exports.reportPluginActionProgress = exports.shopMasterDataDescriptor = exports.getShopMasterData = exports.getShopAppearance = exports.getPluginSettings = exports.PLUGIN_ICON_NAMES = exports.resolveBaseModule = exports.isBasePluginRegistered = exports.requirePluginFeature = exports.pluginFeatureGate = exports.isPluginFeatureEnabledByKey = exports.isPluginFeatureEnabled = exports.isOwnPluginEvent = exports.resolveEffectivePluginFeatures = exports.definePluginFeatures = exports.PLUGIN_FEATURES_MODULE = void 0;
4
4
  var constants_1 = require("./constants");
5
5
  Object.defineProperty(exports, "PLUGIN_FEATURES_MODULE", { enumerable: true, get: function () { return constants_1.PLUGIN_FEATURES_MODULE; } });
6
6
  var descriptor_1 = require("./descriptor");
@@ -16,6 +16,8 @@ Object.defineProperty(exports, "requirePluginFeature", { enumerable: true, get:
16
16
  var module_access_1 = require("./module-access");
17
17
  Object.defineProperty(exports, "isBasePluginRegistered", { enumerable: true, get: function () { return module_access_1.isBasePluginRegistered; } });
18
18
  Object.defineProperty(exports, "resolveBaseModule", { enumerable: true, get: function () { return module_access_1.resolveBaseModule; } });
19
+ var plugin_icons_1 = require("./plugin-icons");
20
+ Object.defineProperty(exports, "PLUGIN_ICON_NAMES", { enumerable: true, get: function () { return plugin_icons_1.PLUGIN_ICON_NAMES; } });
19
21
  var settings_1 = require("./settings");
20
22
  Object.defineProperty(exports, "getPluginSettings", { enumerable: true, get: function () { return settings_1.getPluginSettings; } });
21
23
  var shop_master_data_1 = require("./shop-master-data");
@@ -24,4 +26,4 @@ Object.defineProperty(exports, "getShopMasterData", { enumerable: true, get: fun
24
26
  Object.defineProperty(exports, "shopMasterDataDescriptor", { enumerable: true, get: function () { return shop_master_data_1.shopMasterDataDescriptor; } });
25
27
  var action_progress_1 = require("./action-progress");
26
28
  Object.defineProperty(exports, "reportPluginActionProgress", { enumerable: true, get: function () { return action_progress_1.reportPluginActionProgress; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFvRDtBQUEzQyxtSEFBQSxzQkFBc0IsT0FBQTtBQUMvQiwyQ0FBbUQ7QUFBMUMsa0hBQUEsb0JBQW9CLE9BQUE7QUFDN0IsMkRBQXFFO0FBQTVELG9JQUFBLDhCQUE4QixPQUFBO0FBQ3ZDLDZDQU1zQjtBQUxwQiwrR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixxSEFBQSxzQkFBc0IsT0FBQTtBQUN0QiwwSEFBQSwyQkFBMkIsT0FBQTtBQUMzQixnSEFBQSxpQkFBaUIsT0FBQTtBQUNqQixtSEFBQSxvQkFBb0IsT0FBQTtBQUV0QixpREFBMkU7QUFBbEUsdUhBQUEsc0JBQXNCLE9BQUE7QUFBRSxrSEFBQSxpQkFBaUIsT0FBQTtBQUNsRCx1Q0FBOEM7QUFBckMsNkdBQUEsaUJBQWlCLE9BQUE7QUFDMUIsdURBUzJCO0FBUnpCLHFIQUFBLGlCQUFpQixPQUFBO0FBQ2pCLHFIQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDRIQUFBLHdCQUF3QixPQUFBO0FBTzFCLHFEQUcwQjtBQUZ4Qiw2SEFBQSwwQkFBMEIsT0FBQSJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFvRDtBQUEzQyxtSEFBQSxzQkFBc0IsT0FBQTtBQUMvQiwyQ0FBbUQ7QUFBMUMsa0hBQUEsb0JBQW9CLE9BQUE7QUFDN0IsMkRBQXFFO0FBQTVELG9JQUFBLDhCQUE4QixPQUFBO0FBQ3ZDLDZDQU1zQjtBQUxwQiwrR0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixxSEFBQSxzQkFBc0IsT0FBQTtBQUN0QiwwSEFBQSwyQkFBMkIsT0FBQTtBQUMzQixnSEFBQSxpQkFBaUIsT0FBQTtBQUNqQixtSEFBQSxvQkFBb0IsT0FBQTtBQUV0QixpREFBMkU7QUFBbEUsdUhBQUEsc0JBQXNCLE9BQUE7QUFBRSxrSEFBQSxpQkFBaUIsT0FBQTtBQUNsRCwrQ0FBa0Q7QUFBekMsaUhBQUEsaUJBQWlCLE9BQUE7QUFDMUIsdUNBQThDO0FBQXJDLDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLHVEQVMyQjtBQVJ6QixxSEFBQSxpQkFBaUIsT0FBQTtBQUNqQixxSEFBQSxpQkFBaUIsT0FBQTtBQUNqQiw0SEFBQSx3QkFBd0IsT0FBQTtBQU8xQixxREFHMEI7QUFGeEIsNkhBQUEsMEJBQTBCLE9BQUEifQ==
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLUGIN_ICON_NAMES = void 0;
4
+ /**
5
+ * Names of `@medusajs/icons` components a plugin descriptor may use as `icon`.
6
+ * A plain list so the server needs no icon package; the Admin maps the name to
7
+ * the component and falls back to a default icon for an unknown one. Every
8
+ * name is an export of `@medusajs/icons`.
9
+ */
10
+ exports.PLUGIN_ICON_NAMES = [
11
+ "ArchiveBox",
12
+ "ArrowPath",
13
+ "BuildingStorefront",
14
+ "Buildings",
15
+ "ClockSolid",
16
+ "CogSixTooth",
17
+ "CreditCard",
18
+ "DocumentText",
19
+ "Envelope",
20
+ "ReceiptPercent",
21
+ "ShieldCheck",
22
+ "ShoppingCart",
23
+ "SquaresPlus",
24
+ "Tag",
25
+ "TruckFast",
26
+ "Users",
27
+ ];
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9wbHVnaW4taWNvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7O0dBS0c7QUFDVSxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLFlBQVk7SUFDWixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLFdBQVc7SUFDWCxZQUFZO0lBQ1osYUFBYTtJQUNiLFlBQVk7SUFDWixjQUFjO0lBQ2QsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsY0FBYztJQUNkLGFBQWE7SUFDYixLQUFLO0lBQ0wsV0FBVztJQUNYLE9BQU87Q0FDQyxDQUFBIn0=
@@ -7,6 +7,10 @@ const descriptor_1 = require("./descriptor");
7
7
  const settings_1 = require("./settings");
8
8
  const COMPANY = "Firmendaten";
9
9
  const APPEARANCE = "Erscheinungsbild";
10
+ const ADDRESS = "Adresse";
11
+ const TAX_CONTACT = "Steuer und Kontakt";
12
+ const BANK_REGISTER = "Bank und Firmenbuch";
13
+ const COLORS = "Farben";
10
14
  const DEFAULT_COLOR_HINT = "Leer lassen für die Standardfarbe von E-Mails und Dokumenten.";
11
15
  /**
12
16
  * The base's own descriptor: the shop's master data (Firmenangaben) and its
@@ -18,18 +22,22 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
18
22
  plugin_key: "shop",
19
23
  label: "Shop-Stammdaten",
20
24
  description: "Firmenangaben des Shops für E-Mails, Rechnungen, Dokumente und Steuerprüfungen sowie Logo und Farben von E-Mails und Dokumenten.",
25
+ summary: "Firmenangaben, Logo und Farben für E-Mails, Rechnungen, Dokumente und Steuerprüfungen.",
26
+ icon: "Buildings",
21
27
  switchable: false,
22
28
  features: [],
23
29
  settings: [
24
- { key: "legal_name", group: COMPANY, label: "Firmenname", type: "string", required: true },
25
- { key: "address_line1", group: COMPANY, label: "Adresse", type: "string", required: true },
26
- { key: "address_line2", group: COMPANY, label: "Adresszusatz", type: "string" },
27
- { key: "postal_code", group: COMPANY, label: "Postleitzahl", type: "string", required: true },
28
- { key: "city", group: COMPANY, label: "Ort", type: "string", required: true },
30
+ { key: "legal_name", group: COMPANY, section: ADDRESS, label: "Firmenname", type: "string", required: true },
31
+ { key: "address_line1", group: COMPANY, section: ADDRESS, width: "half", label: "Adresse", type: "string", required: true },
32
+ { key: "address_line2", group: COMPANY, section: ADDRESS, width: "half", label: "Adresszusatz", type: "string" },
33
+ { key: "postal_code", group: COMPANY, section: ADDRESS, width: "half", label: "Postleitzahl", type: "string", required: true },
34
+ { key: "city", group: COMPANY, section: ADDRESS, width: "half", label: "Ort", type: "string", required: true },
29
35
  {
30
36
  key: "country_code",
31
37
  group: COMPANY,
32
38
  label: "Land",
39
+ section: ADDRESS,
40
+ width: "half",
33
41
  type: "select",
34
42
  required: true,
35
43
  // EU-27 plus CH, GB, NO, IS, LI (ISO 3166-1 alpha-2, lowercase),
@@ -69,24 +77,27 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
69
77
  { value: "cy", label: "Zypern" },
70
78
  ],
71
79
  },
72
- { key: "vat_number", group: COMPANY, label: "UID-Nummer", type: "string", required: true },
73
- { key: "email", group: COMPANY, label: "E-Mail", type: "string" },
74
- { key: "phone", group: COMPANY, label: "Telefon", type: "string" },
75
- { key: "website", group: COMPANY, label: "Website", type: "url" },
76
- { key: "iban", group: COMPANY, label: "IBAN", type: "string" },
77
- { key: "bic", group: COMPANY, label: "BIC", type: "string" },
78
- { key: "company_register_number", group: COMPANY, label: "Firmenbuchnummer", type: "string" },
79
- { key: "company_register_court", group: COMPANY, label: "Firmenbuchgericht", type: "string" },
80
+ { key: "vat_number", group: COMPANY, section: TAX_CONTACT, width: "half", label: "UID-Nummer", type: "string", required: true },
81
+ { key: "email", group: COMPANY, section: TAX_CONTACT, width: "half", label: "E-Mail", type: "string" },
82
+ { key: "phone", group: COMPANY, section: TAX_CONTACT, width: "half", label: "Telefon", type: "string" },
83
+ { key: "website", group: COMPANY, section: TAX_CONTACT, width: "half", label: "Website", type: "url" },
84
+ { key: "iban", group: COMPANY, section: BANK_REGISTER, width: "half", label: "IBAN", type: "string" },
85
+ { key: "bic", group: COMPANY, section: BANK_REGISTER, width: "half", label: "BIC", type: "string" },
86
+ { key: "company_register_number", group: COMPANY, section: BANK_REGISTER, width: "half", label: "Firmenbuchnummer", type: "string" },
87
+ { key: "company_register_court", group: COMPANY, section: BANK_REGISTER, width: "half", label: "Firmenbuchgericht", type: "string" },
80
88
  {
81
89
  key: "logo",
82
90
  group: APPEARANCE,
83
91
  label: "Logo",
84
92
  description: "PNG oder JPG, erscheint oben in den E-Mails und auf Rechnungen und Lieferscheinen. Ohne Logo steht dort der Firmenname bzw. Shopname.",
93
+ hint: "PNG oder JPG, ohne Logo erscheint der Firmenname.",
85
94
  type: "image",
86
95
  },
87
96
  {
88
97
  key: "color_accent",
89
98
  group: APPEARANCE,
99
+ section: COLORS,
100
+ width: "half",
90
101
  label: "Akzentfarbe",
91
102
  description: `Buttons, Überschriften und Links. ${DEFAULT_COLOR_HINT}`,
92
103
  type: "color",
@@ -94,6 +105,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
94
105
  {
95
106
  key: "color_text",
96
107
  group: APPEARANCE,
108
+ section: COLORS,
109
+ width: "half",
97
110
  label: "Textfarbe",
98
111
  description: `Fließtext und Beträge. ${DEFAULT_COLOR_HINT}`,
99
112
  type: "color",
@@ -101,6 +114,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
101
114
  {
102
115
  key: "color_muted",
103
116
  group: APPEARANCE,
117
+ section: COLORS,
118
+ width: "half",
104
119
  label: "Nebentextfarbe",
105
120
  description: `Beschriftungen, Hinweise und Fußzeilen. ${DEFAULT_COLOR_HINT}`,
106
121
  type: "color",
@@ -108,6 +123,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
108
123
  {
109
124
  key: "color_line",
110
125
  group: APPEARANCE,
126
+ section: COLORS,
127
+ width: "half",
111
128
  label: "Linienfarbe",
112
129
  description: `Rahmen und Trennlinien. ${DEFAULT_COLOR_HINT}`,
113
130
  type: "color",
@@ -115,6 +132,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
115
132
  {
116
133
  key: "color_surface",
117
134
  group: APPEARANCE,
135
+ section: COLORS,
136
+ width: "half",
118
137
  label: "Flächenfarbe",
119
138
  description: `Hinterlegte Flächen wie Infoboxen und Tabellenköpfe. ${DEFAULT_COLOR_HINT}`,
120
139
  type: "color",
@@ -183,4 +202,4 @@ async function getShopAppearance(container) {
183
202
  colors,
184
203
  };
185
204
  }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcC1tYXN0ZXItZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvc2hvcC1tYXN0ZXItZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtS0EsOENBbUJDO0FBMkJELDhDQWVDO0FBOU5ELDZDQUFtRDtBQUNuRCx5Q0FBOEM7QUFHOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFBO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFBO0FBQ3JDLE1BQU0sa0JBQWtCLEdBQ3RCLCtEQUErRCxDQUFBO0FBRWpFOzs7OztHQUtHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLGlDQUFvQixFQUFDO0lBQzNELFVBQVUsRUFBRSxNQUFNO0lBQ2xCLEtBQUssRUFBRSxpQkFBaUI7SUFDeEIsV0FBVyxFQUNULGtJQUFrSTtJQUNwSSxVQUFVLEVBQUUsS0FBSztJQUNqQixRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRTtRQUNSLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQzFGLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQzFGLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtRQUMvRSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUM3RixF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
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcC1tYXN0ZXItZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvc2hvcC1tYXN0ZXItZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1TEEsOENBbUJDO0FBMkJELDhDQWVDO0FBbFBELDZDQUFtRDtBQUNuRCx5Q0FBOEM7QUFHOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFBO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFBO0FBQ3JDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQTtBQUN6QixNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQTtBQUN4QyxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQTtBQUMzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUE7QUFDdkIsTUFBTSxrQkFBa0IsR0FDdEIsK0RBQStELENBQUE7QUFFakU7Ozs7O0dBS0c7QUFDVSxRQUFBLHdCQUF3QixHQUFHLElBQUEsaUNBQW9CLEVBQUM7SUFDM0QsVUFBVSxFQUFFLE1BQU07SUFDbEIsS0FBSyxFQUFFLGlCQUFpQjtJQUN4QixXQUFXLEVBQ1Qsa0lBQWtJO0lBQ3BJLE9BQU8sRUFDTCx3RkFBd0Y7SUFDMUYsSUFBSSxFQUFFLFdBQVc7SUFDakIsVUFBVSxFQUFFLEtBQUs7SUFDakIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUU7UUFDUixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQzVHLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUMzSCxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ2hILEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUM5SCxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDOUc7WUFDRSxHQUFHLEVBQUUsY0FBYztZQUNuQixLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRSxJQUFJO1lBQ2QsaUVBQWlFO1lBQ2pFLDBCQUEwQjtZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ2pDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUNuQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBQ3JDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNqQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBQ3BDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO2dCQUN0QyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDaEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBQ2hDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNqQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO2dCQUN2QyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDakMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBQ25DLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dCQUMvQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQkFDckMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNwQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFDL0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ2xDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNsQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDbEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ2pDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNsQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFDbkMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ2pDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNwQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDaEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtnQkFDaEQsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7YUFDakM7U0FDRjtRQUNELEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUMvSCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3RHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDdkcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUN0RyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1FBQ3JHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDbkcsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDcEksRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7UUFDcEk7WUFDRSxHQUFHLEVBQUUsTUFBTTtZQUNYLEtBQUssRUFBRSxVQUFVO1lBQ2pCLEtBQUssRUFBRSxNQUFNO1lBQ2IsV0FBVyxFQUNULHVJQUF1STtZQUN6SSxJQUFJLEVBQUUsbURBQW1EO1lBQ3pELElBQUksRUFBRSxPQUFPO1NBQ2Q7UUFDRDtZQUNFLEdBQUcsRUFBRSxjQUFjO1lBQ25CLEtBQUssRUFBRSxVQUFVO1lBQ2pCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUscUNBQXFDLGtCQUFrQixFQUFFO1lBQ3RFLElBQUksRUFBRSxPQUFPO1NBQ2Q7UUFDRDtZQUNFLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsV0FBVztZQUNsQixXQUFXLEVBQUUsMEJBQTBCLGtCQUFrQixFQUFFO1lBQzNELElBQUksRUFBRSxPQUFPO1NBQ2Q7UUFDRDtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLFdBQVcsRUFBRSwyQ0FBMkMsa0JBQWtCLEVBQUU7WUFDNUUsSUFBSSxFQUFFLE9BQU87U0FDZDtRQUNEO1lBQ0UsR0FBRyxFQUFFLFlBQVk7WUFDakIsS0FBSyxFQUFFLFVBQVU7WUFDakIsT0FBTyxFQUFFLE1BQU07WUFDZixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSwyQkFBMkIsa0JBQWtCLEVBQUU7WUFDNUQsSUFBSSxFQUFFLE9BQU87U0FDZDtRQUNEO1lBQ0UsR0FBRyxFQUFFLGVBQWU7WUFDcEIsS0FBSyxFQUFFLFVBQVU7WUFDakIsT0FBTyxFQUFFLE1BQU07WUFDZixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFdBQVcsRUFBRSx3REFBd0Qsa0JBQWtCLEVBQUU7WUFDekYsSUFBSSxFQUFFLE9BQU87U0FDZDtLQUNGO0NBQ0YsQ0FBQyxDQUFBO0FBRUYsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixZQUFZO0lBQ1osZUFBZTtJQUNmLGVBQWU7SUFDZixhQUFhO0lBQ2IsTUFBTTtJQUNOLGNBQWM7SUFDZCxZQUFZO0lBQ1osT0FBTztJQUNQLE9BQU87SUFDUCxTQUFTO0lBQ1QsTUFBTTtJQUNOLEtBQUs7SUFDTCx5QkFBeUI7SUFDekIsd0JBQXdCO0NBQ2hCLENBQUE7QUFnQlY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsU0FBMEI7SUFFMUIsTUFBTSxRQUFRLEdBQW1DLE1BQU0sSUFBQSw0QkFBaUIsRUFDdEUsU0FBUyxFQUNULGdDQUF3QixDQUN6QixDQUFBO0lBQ0QsTUFBTSxNQUFNLEdBQW1CLEVBQUUsQ0FBQTtJQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPO1FBQ0wsTUFBTTtRQUNOLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtRQUMvQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQThCO0tBQ2pELENBQUE7QUFDSCxDQUFDO0FBY0QsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixNQUFNLEVBQUUsY0FBYztJQUN0QixJQUFJLEVBQUUsWUFBWTtJQUNsQixLQUFLLEVBQUUsYUFBYTtJQUNwQixJQUFJLEVBQUUsWUFBWTtJQUNsQixPQUFPLEVBQUUsZUFBZTtDQUNoQixDQUFBO0FBRVY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsU0FBMEI7SUFFMUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSw0QkFBaUIsRUFBQyxTQUFTLEVBQUUsZ0NBQXdCLENBQUMsQ0FBQTtJQUMvRSxNQUFNLE1BQU0sR0FBeUIsRUFBRSxDQUFBO0lBQ3ZDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsS0FBbUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU87UUFDTCxHQUFHLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsTUFBTTtLQUNQLENBQUE7QUFDSCxDQUFDIn0=
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidTimeZone = exports.toOptionalWireDate = exports.toWireDate = exports.toIsoDate = exports.startOfUtcDate = exports.toValidDate = void 0;
3
+ exports.isCalendarDate = exports.isValidTimeZone = exports.toOptionalWireDate = exports.toWireDate = exports.toIsoDate = exports.startOfUtcDate = exports.toValidDate = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  /** A valid `Date`; throws `INVALID_DATA` for an unparsable value. */
6
6
  const toValidDate = (value, message = "Invalid date.") => {
@@ -40,4 +40,10 @@ const isValidTimeZone = (value) => {
40
40
  }
41
41
  };
42
42
  exports.isValidTimeZone = isValidTimeZone;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFFdkQscUVBQXFFO0FBQzlELE1BQU0sV0FBVyxHQUFHLENBQ3pCLEtBQTZCLEVBQzdCLE9BQU8sR0FBRyxlQUFlLEVBQ25CLEVBQUU7SUFDUixNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFUWSxRQUFBLFdBQVcsZUFTdkI7QUFFRCxvREFBb0Q7QUFDN0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUE2QixFQUFRLEVBQUU7SUFDcEUsTUFBTSxJQUFJLEdBQUcsSUFBQSxtQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLE9BQU8sSUFBSSxJQUFJLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUN2RSxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBTFksUUFBQSxjQUFjLGtCQUsxQjtBQUVELGdGQUFnRjtBQUN6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQTZCLEVBQVUsRUFBRSxDQUNqRSxJQUFBLG1CQUFXLEVBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQURsQyxRQUFBLFNBQVMsYUFDeUI7QUFFL0MseUVBQXlFO0FBQ2xFLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBVSxFQUFFLENBQ3pELElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQURyQixRQUFBLFVBQVUsY0FDVztBQUVsQywwREFBMEQ7QUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUF1QyxFQUN4QixFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsa0JBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBRmpELFFBQUEsa0JBQWtCLHNCQUUrQjtBQUU5RCxtRkFBbUY7QUFDNUUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFjLEVBQW1CLEVBQUU7SUFDakUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbEQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBVlksUUFBQSxlQUFlLG1CQVUzQiJ9
43
+ /** Whether the value is an existing calendar day written `yyyy-mm-dd`. */
44
+ const isCalendarDate = (value) => typeof value === "string" &&
45
+ /^\d{4}-\d{2}-\d{2}$/.test(value) &&
46
+ !Number.isNaN(Date.parse(`${value}T00:00:00Z`)) &&
47
+ new Date(`${value}T00:00:00Z`).toISOString().slice(0, 10) === value;
48
+ exports.isCalendarDate = isCalendarDate;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBdUQ7QUFFdkQscUVBQXFFO0FBQzlELE1BQU0sV0FBVyxHQUFHLENBQ3pCLEtBQTZCLEVBQzdCLE9BQU8sR0FBRyxlQUFlLEVBQ25CLEVBQUU7SUFDUixNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUE7QUFUWSxRQUFBLFdBQVcsZUFTdkI7QUFFRCxvREFBb0Q7QUFDN0MsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUE2QixFQUFRLEVBQUU7SUFDcEUsTUFBTSxJQUFJLEdBQUcsSUFBQSxtQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9CLE9BQU8sSUFBSSxJQUFJLENBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUN2RSxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBTFksUUFBQSxjQUFjLGtCQUsxQjtBQUVELGdGQUFnRjtBQUN6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQTZCLEVBQVUsRUFBRSxDQUNqRSxJQUFBLG1CQUFXLEVBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQURsQyxRQUFBLFNBQVMsYUFDeUI7QUFFL0MseUVBQXlFO0FBQ2xFLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBVSxFQUFFLENBQ3pELElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQURyQixRQUFBLFVBQVUsY0FDVztBQUVsQywwREFBMEQ7QUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUF1QyxFQUN4QixFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsa0JBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBRmpELFFBQUEsa0JBQWtCLHNCQUUrQjtBQUU5RCxtRkFBbUY7QUFDNUUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFjLEVBQW1CLEVBQUU7SUFDakUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbEQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBVlksUUFBQSxlQUFlLG1CQVUzQjtBQUVELDBFQUEwRTtBQUNuRSxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWMsRUFBbUIsRUFBRSxDQUNoRSxPQUFPLEtBQUssS0FBSyxRQUFRO0lBQ3pCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQTtBQUp4RCxRQUFBLGNBQWMsa0JBSTBDIn0=
@@ -23,7 +23,8 @@ __exportStar(require("./errors"), exports);
23
23
  __exportStar(require("./hash"), exports);
24
24
  __exportStar(require("./logging"), exports);
25
25
  __exportStar(require("./money"), exports);
26
+ __exportStar(require("./refreshing-snapshot"), exports);
26
27
  __exportStar(require("./text"), exports);
27
28
  __exportStar(require("./transaction"), exports);
28
29
  __exportStar(require("./wire-response"), exports);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywyQ0FBd0I7QUFDeEIsZ0RBQTZCO0FBQzdCLDBDQUF1QjtBQUN2QiwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDRDQUF5QjtBQUN6QiwwQ0FBdUI7QUFDdkIseUNBQXNCO0FBQ3RCLGdEQUE2QjtBQUM3QixrREFBK0IifQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywyQ0FBd0I7QUFDeEIsZ0RBQTZCO0FBQzdCLDBDQUF1QjtBQUN2QiwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDRDQUF5QjtBQUN6QiwwQ0FBdUI7QUFDdkIsd0RBQXFDO0FBQ3JDLHlDQUFzQjtBQUN0QixnREFBNkI7QUFDN0Isa0RBQStCIn0=