@digi-frontend/dgate-api-documentation 4.1.0 → 4.1.3

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.
package/dist/index.cjs CHANGED
@@ -2724,7 +2724,7 @@ const PARAM_TYPE_OPTIONS = [
2724
2724
  value: "object"
2725
2725
  }
2726
2726
  ];
2727
- const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initialValues, source }) => {
2727
+ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initialValues, source, endpointName }) => {
2728
2728
  const [form] = antd.Form.useForm();
2729
2729
  const [messageApi, contextHolder] = antd.message.useMessage();
2730
2730
  const [confirmModalOpen, setConfirmModalOpen] = (0, react$1.useState)(false);
@@ -2744,7 +2744,8 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
2744
2744
  in: initialValues.in,
2745
2745
  type: initialValues.type,
2746
2746
  required: initialValues.required,
2747
- description: initialValues.description
2747
+ description: initialValues.description,
2748
+ itemsType: initialValues.items?.type
2748
2749
  });
2749
2750
  setEnumValues(initialValues.enum ?? []);
2750
2751
  } else {
@@ -2879,7 +2880,7 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
2879
2880
  alignItems: "center",
2880
2881
  position: "relative",
2881
2882
  paddingTop: 20,
2882
- paddingBottom: 8,
2883
+ paddingBottom: 5,
2883
2884
  paddingLeft: 24,
2884
2885
  paddingRight: 24,
2885
2886
  width: "100%"
@@ -2986,7 +2987,8 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
2986
2987
  type: values.type,
2987
2988
  required: values.required ?? true,
2988
2989
  description: values.description || void 0,
2989
- enum: enumValues.length > 0 ? enumValues : void 0
2990
+ enum: enumValues.length > 0 ? enumValues : void 0,
2991
+ ...values.type === "array" && values.itemsType && { items: { type: values.itemsType } }
2990
2992
  };
2991
2993
  if (mode === "edit") {
2992
2994
  onEdit?.(payload);
@@ -3118,6 +3120,25 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
3118
3120
  options: PARAM_TYPE_OPTIONS
3119
3121
  })
3120
3122
  }),
3123
+ typeValue === "array" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(antd.Form.Item, {
3124
+ name: "itemsType",
3125
+ label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3126
+ className: cx("label"),
3127
+ children: ["Items Type", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3128
+ className: cx("asterisk"),
3129
+ children: "*"
3130
+ })]
3131
+ }),
3132
+ rules: [{
3133
+ required: true,
3134
+ message: "Items Type is required"
3135
+ }],
3136
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(antd.Select, {
3137
+ size: "large",
3138
+ placeholder: "Select",
3139
+ options: PARAM_TYPE_OPTIONS
3140
+ })
3141
+ }),
3121
3142
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(antd.Form.Item, {
3122
3143
  name: "required",
3123
3144
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -3231,9 +3252,9 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
3231
3252
  className: cx("modalTitle"),
3232
3253
  children: [
3233
3254
  mode === "edit" ? "Edit" : "Add",
3234
- " ",
3235
- paramName,
3236
- " parameter"
3255
+ " Parameter to ",
3256
+ endpointName,
3257
+ " endpoint"
3237
3258
  ]
3238
3259
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3239
3260
  className: cx("modalCloseBtn"),
@@ -3251,7 +3272,10 @@ const AddParameterDrawer = ({ open, onClose, onAdd, onEdit, mode = "add", initia
3251
3272
  mode === "edit" ? "edit" : "add",
3252
3273
  " ",
3253
3274
  paramName,
3254
- " parameter?"
3275
+ " parameter to",
3276
+ " ",
3277
+ endpointName,
3278
+ " endpoint?"
3255
3279
  ]
3256
3280
  })
3257
3281
  }),
@@ -3342,6 +3366,15 @@ const EndpointsSection = ({ endpointsByTag, collapsed = false, onToggleCollapse,
3342
3366
  const [openResponsePanels, setOpenResponsePanels] = (0, react$1.useState)(/* @__PURE__ */ new Set());
3343
3367
  const [selectedStatusCodes, setSelectedStatusCodes] = (0, react$1.useState)({});
3344
3368
  const [drawerSource, setDrawerSource] = (0, react$1.useState)("request");
3369
+ const drawerEndpointName = (0, react$1.useMemo)(() => {
3370
+ if (!paramDrawerEndpointId) return "";
3371
+ const ep = Object.values(endpointsByTag).flat().find((e) => e.id === paramDrawerEndpointId);
3372
+ return endpointNames[paramDrawerEndpointId] ?? ep?.summary ?? "";
3373
+ }, [
3374
+ paramDrawerEndpointId,
3375
+ endpointsByTag,
3376
+ endpointNames
3377
+ ]);
3345
3378
  const [requestPages, setRequestPages] = (0, react$1.useState)(/* @__PURE__ */ new Map());
3346
3379
  const [responsePages, setResponsePages] = (0, react$1.useState)(/* @__PURE__ */ new Map());
3347
3380
  const [requestSearches, setRequestSearches] = (0, react$1.useState)({});
@@ -5209,6 +5242,7 @@ const EndpointsSection = ({ endpointsByTag, collapsed = false, onToggleCollapse,
5209
5242
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AddParameterDrawer, {
5210
5243
  open: paramDrawerOpen,
5211
5244
  mode: paramDrawerMode,
5245
+ endpointName: drawerEndpointName,
5212
5246
  initialValues: paramDrawerMode === "edit" && paramDrawerEndpointId && editParamIdx !== null ? drawerSource === "response" ? endpointResponseParams[paramDrawerEndpointId]?.[editParamIdx] : endpointParams[paramDrawerEndpointId]?.[editParamIdx] : void 0,
5213
5247
  onClose: () => {
5214
5248
  setParamDrawerOpen(false);
@@ -6474,6 +6508,7 @@ const EndpointsSection = ({ endpointsByTag, collapsed = false, onToggleCollapse,
6474
6508
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AddParameterDrawer, {
6475
6509
  open: paramDrawerOpen,
6476
6510
  mode: paramDrawerMode,
6511
+ endpointName: drawerEndpointName,
6477
6512
  initialValues: paramDrawerMode === "edit" && paramDrawerEndpointId && editParamIdx !== null ? drawerSource === "response" ? endpointResponseParams[paramDrawerEndpointId]?.[editParamIdx] : endpointParams[paramDrawerEndpointId]?.[editParamIdx] : void 0,
6478
6513
  onClose: () => {
6479
6514
  setParamDrawerOpen(false);
@@ -6783,7 +6818,7 @@ const TagsSection = ({ tags, collapsed, onToggleCollapse, onAddTag, onEditTag, o
6783
6818
  height: 32
6784
6819
  }),
6785
6820
  disabled: tag.isDefault,
6786
- onClick: () => !tag.isDefault && onDeleteTag?.(tag.name),
6821
+ onClick: () => !tag.isDefault && onDeleteTag?.(tag.name, tags.findIndex((t) => t.name === tag.name)),
6787
6822
  style: {
6788
6823
  width: 40,
6789
6824
  height: 40,
@@ -6959,7 +6994,7 @@ const TagsSection = ({ tags, collapsed, onToggleCollapse, onAddTag, onEditTag, o
6959
6994
  height: 32
6960
6995
  }),
6961
6996
  disabled: tag.isDefault,
6962
- onClick: () => !tag.isDefault && onDeleteTag?.(tag.name),
6997
+ onClick: () => !tag.isDefault && onDeleteTag?.(tag.name, tags.findIndex((t) => t.name === tag.name)),
6963
6998
  style: {
6964
6999
  width: 40,
6965
7000
  height: 40,
@@ -7002,7 +7037,7 @@ const TagsSection = ({ tags, collapsed, onToggleCollapse, onAddTag, onEditTag, o
7002
7037
  const TAG_NAME_REGEX = /^[A-Za-z0-9_\s-]+$/;
7003
7038
  const TAG_DESC_REGEX = /^[A-Za-z0-9_\s-]+$/;
7004
7039
  const EXTERNAL_DOCS_DESC_REGEX = /^[A-Za-z0-9_\s-]+$/;
7005
- const AddTagDrawer = ({ open, onClose, mode, initialValues, onAddTag, onEditTag }) => {
7040
+ const AddTagDrawer = ({ open, onClose, mode, initialValues, onAddTag, onEditTag, existingTags }) => {
7006
7041
  const [form] = antd.Form.useForm();
7007
7042
  const [messageApi, contextHolder] = antd.message.useMessage();
7008
7043
  const [confirmModalOpen, setConfirmModalOpen] = (0, react$1.useState)(false);
@@ -7133,7 +7168,7 @@ const AddTagDrawer = ({ open, onClose, mode, initialValues, onAddTag, onEditTag
7133
7168
  }
7134
7169
  }));
7135
7170
  const isLinkEnabled = Boolean(extDocsDesc?.trim());
7136
- const isAddEnabled = !!(tagNameValue && TAG_NAME_REGEX.test(tagNameValue));
7171
+ const isAddEnabled = !!(tagNameValue && TAG_NAME_REGEX.test(tagNameValue)) && !form.getFieldsError().some((field) => field.errors.length > 0);
7137
7172
  (0, react$1.useEffect)(() => {
7138
7173
  if (open && mode === "edit" && initialValues) form.setFieldsValue(initialValues);
7139
7174
  if (!open) form.resetFields();
@@ -7243,7 +7278,13 @@ const AddTagDrawer = ({ open, onClose, mode, initialValues, onAddTag, onEditTag
7243
7278
  {
7244
7279
  pattern: TAG_NAME_REGEX,
7245
7280
  message: "Only letters, numbers, spaces, underscores, and hyphens"
7246
- }
7281
+ },
7282
+ { validator: (_, value) => {
7283
+ if (!value || !existingTags?.length) return Promise.resolve();
7284
+ const originalName = initialValues?.name;
7285
+ if (existingTags.some((t) => t.name.toLowerCase() === value.toLowerCase() && t.name.toLowerCase() !== originalName?.toLowerCase())) return Promise.reject(/* @__PURE__ */ new Error("Tag name already exists"));
7286
+ return Promise.resolve();
7287
+ } }
7247
7288
  ],
7248
7289
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(antd.Input, {
7249
7290
  showCount: true,
@@ -8996,7 +9037,7 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
8996
9037
  });
8997
9038
  const [deleteTagModal, setDeleteTagModal] = (0, react$1.useState)({
8998
9039
  open: false,
8999
- tagName: ""
9040
+ tagIndex: -1
9000
9041
  });
9001
9042
  const [localTags, setLocalTags] = (0, react$1.useState)([]);
9002
9043
  const [messageApi, contextHolder] = antd.message.useMessage();
@@ -9173,7 +9214,9 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9173
9214
  externalDocsDescription: t.externalDocs?.description,
9174
9215
  isDefault: t.name.toLowerCase() === "default"
9175
9216
  })) ?? [];
9176
- if (!mapped.some((t) => t.isDefault) && selectedApi.tags["default"]) mapped.push({
9217
+ const hasDefault = mapped.some((t) => t.isDefault);
9218
+ const hasDefaultInMapped = mapped.some((t) => t.name.toLowerCase() === "default");
9219
+ if (!hasDefault && !hasDefaultInMapped && selectedApi.tags["default"]) mapped.push({
9177
9220
  name: "default",
9178
9221
  isDefault: true
9179
9222
  });
@@ -9202,7 +9245,8 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9202
9245
  type: schema?.type ?? "string",
9203
9246
  required: Boolean(p.required ?? false),
9204
9247
  description: p.description != null ? String(p.description) : void 0,
9205
- enum: Array.isArray(schema?.enum) ? schema.enum : void 0
9248
+ enum: Array.isArray(schema?.enum) ? schema.enum : void 0,
9249
+ ...schema?.items && { items: { type: schema.items.type ?? "string" } }
9206
9250
  };
9207
9251
  });
9208
9252
  });
@@ -9232,7 +9276,8 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9232
9276
  type: schema?.type ?? "string",
9233
9277
  required: Boolean(p.required ?? false),
9234
9278
  description: p.description != null ? String(p.description) : void 0,
9235
- enum: Array.isArray(schema?.enum) ? schema.enum : void 0
9279
+ enum: Array.isArray(schema?.enum) ? schema.enum : void 0,
9280
+ ...schema?.items && { items: { type: schema.items.type ?? "string" } }
9236
9281
  };
9237
9282
  });
9238
9283
  });
@@ -9398,11 +9443,13 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9398
9443
  setBannerVisible(true);
9399
9444
  };
9400
9445
  const handleDeleteTagConfirm = () => {
9401
- setLocalTags((prev) => prev.filter((t) => t.name !== deleteTagModal.tagName));
9402
- messageApi.success(`${deleteTagModal.tagName} tag has been deleted successfully.`);
9446
+ if (deleteTagModal.tagIndex < 0) return;
9447
+ const tagName = localTags[deleteTagModal.tagIndex]?.name ?? "Tag";
9448
+ setLocalTags((prev) => prev.filter((_, index) => index !== deleteTagModal.tagIndex));
9449
+ messageApi.success(`${tagName} tag has been deleted successfully.`);
9403
9450
  setDeleteTagModal({
9404
9451
  open: false,
9405
- tagName: ""
9452
+ tagIndex: -1
9406
9453
  });
9407
9454
  setBannerVisible(true);
9408
9455
  };
@@ -9434,6 +9481,7 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9434
9481
  setEndpointTags({});
9435
9482
  setEndpointParams(initialEndpointParams);
9436
9483
  setEndpointResponseParams(initialEndpointResponseParams);
9484
+ setLocalTags(tagMetadata);
9437
9485
  setResetKey((prev) => prev + 1);
9438
9486
  messageApi.success("Changes have been reset successfully.");
9439
9487
  };
@@ -9486,7 +9534,8 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9486
9534
  ...param.description && { description: param.description },
9487
9535
  schema: {
9488
9536
  type: param.type,
9489
- ...param.enum && param.enum.length > 0 && { enum: param.enum }
9537
+ ...param.enum && param.enum.length > 0 && { enum: param.enum },
9538
+ ...param.type === "array" && param.items && { items: param.items }
9490
9539
  }
9491
9540
  }));
9492
9541
  else delete methodObj.parameters;
@@ -9503,7 +9552,8 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9503
9552
  ...param.description && { description: param.description },
9504
9553
  schema: {
9505
9554
  type: param.type,
9506
- ...param.enum && param.enum.length > 0 && { enum: param.enum }
9555
+ ...param.enum && param.enum.length > 0 && { enum: param.enum },
9556
+ ...param.type === "array" && param.items && { items: param.items }
9507
9557
  }
9508
9558
  }));
9509
9559
  else delete methodObj["x-response-params"];
@@ -9550,10 +9600,9 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9550
9600
  setSelectedApi(newTransformed);
9551
9601
  } catch (err) {
9552
9602
  let messages = [];
9553
- if (err && typeof err === "object" && "errors" in err) {
9554
- const e = err;
9555
- messages = Array.isArray(e.errors) ? e.errors : [e.errors];
9556
- } else if (err instanceof Error) messages = err.message.split("\n").filter(Boolean);
9603
+ if (err && typeof err === "object" && "data" in err) messages = [err.data?.message ?? "Unknown error"];
9604
+ else if (err && typeof err === "object" && "message" in err) messages = [String(err.message)];
9605
+ else if (err instanceof Error) messages = err.message.split("\n").filter(Boolean);
9557
9606
  else messages = [String(err)];
9558
9607
  setSaveErrors(messages);
9559
9608
  setSelectedEditItem({ type: "errors" });
@@ -9801,9 +9850,9 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9801
9850
  externalDocsLink: tag.externalDocsUrl
9802
9851
  }
9803
9852
  }),
9804
- onDeleteTag: (tagName) => setDeleteTagModal({
9853
+ onDeleteTag: (_tagName, tagIndex) => setDeleteTagModal({
9805
9854
  open: true,
9806
- tagName
9855
+ tagIndex
9807
9856
  })
9808
9857
  })
9809
9858
  }),
@@ -9963,9 +10012,9 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
9963
10012
  externalDocsLink: tag.externalDocsUrl
9964
10013
  }
9965
10014
  }),
9966
- onDeleteTag: (tagName) => setDeleteTagModal({
10015
+ onDeleteTag: (_tagName, tagIndex) => setDeleteTagModal({
9967
10016
  open: true,
9968
- tagName
10017
+ tagIndex
9969
10018
  })
9970
10019
  })
9971
10020
  }),
@@ -10093,7 +10142,8 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
10093
10142
  mode: "add"
10094
10143
  }),
10095
10144
  onAddTag: handleAddTag,
10096
- onEditTag: handleUpdateTag
10145
+ onEditTag: handleUpdateTag,
10146
+ existingTags: localTags
10097
10147
  }),
10098
10148
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(antd.Modal, {
10099
10149
  open: saveConfirmModal,
@@ -10237,7 +10287,7 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
10237
10287
  open: deleteTagModal.open,
10238
10288
  onCancel: () => setDeleteTagModal({
10239
10289
  open: false,
10240
- tagName: ""
10290
+ tagIndex: -1
10241
10291
  }),
10242
10292
  centered: true,
10243
10293
  title: null,
@@ -10263,14 +10313,14 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
10263
10313
  className: cx("deleteModalTitle"),
10264
10314
  children: [
10265
10315
  "Delete ",
10266
- deleteTagModal.tagName,
10316
+ localTags[deleteTagModal.tagIndex]?.name ?? "Tag",
10267
10317
  " tag"
10268
10318
  ]
10269
10319
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
10270
10320
  className: cx("deleteModalCloseBtn"),
10271
10321
  onClick: () => setDeleteTagModal({
10272
10322
  open: false,
10273
- tagName: ""
10323
+ tagIndex: -1
10274
10324
  }),
10275
10325
  "aria-label": "Close",
10276
10326
  children: "×"
@@ -10282,7 +10332,7 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
10282
10332
  className: cx("deleteModalContentText"),
10283
10333
  children: [
10284
10334
  "Are you sure you want to delete ",
10285
- deleteTagModal.tagName,
10335
+ localTags[deleteTagModal.tagIndex]?.name ?? "Tag",
10286
10336
  " tag?"
10287
10337
  ]
10288
10338
  })
@@ -10293,7 +10343,7 @@ const ConsoleDocumentationLayout = ({ data, preSelectedApi, handleVisitLandingPa
10293
10343
  size: "middle",
10294
10344
  onClick: () => setDeleteTagModal({
10295
10345
  open: false,
10296
- tagName: ""
10346
+ tagIndex: -1
10297
10347
  }),
10298
10348
  style: {
10299
10349
  borderRadius: 8,