소스 검색

convert parser into TS

Aykut Saraç 3 년 전
부모
커밋
8b2822221f
2개의 변경된 파일10개의 추가작업 그리고 13개의 파일을 삭제
  1. 9 12
      src/utils/json-editor-parser.ts
  2. 1 1
      tsconfig.json

+ 9 - 12
src/utils/json-editor-parser.js → src/utils/json-editor-parser.ts

@@ -1,16 +1,12 @@
 import { FlowElement } from "react-flow-renderer";
 import { FlowElement } from "react-flow-renderer";
 
 
-/**
- * @param {never[] | Object} input
- * @returns {FlowElement[]}
- */
-export const parser = (input) => {
+export const parser = (input: string | string[]): FlowElement[] => {
   try {
   try {
-    input = JSON.parse(input);
+    if (typeof input !== "object") input = JSON.parse(input);
     if (!Array.isArray(input)) input = [input];
     if (!Array.isArray(input)) input = [input];
 
 
     const extract = (
     const extract = (
-      os,
+      os: string[] | object[] | null,
       nextId = (
       nextId = (
         (id) => () =>
         (id) => () =>
           String(++id)
           String(++id)
@@ -43,8 +39,8 @@ export const parser = (input) => {
       }));
       }));
     };
     };
 
 
-    const relationships = (xs) =>
-      xs.flatMap(({ id: target, children = [] }) => [
+    const relationships = (xs: { id: string; children: never[] }[]) => {
+      return xs.flatMap(({ id: target, children = [] }) => [
         ...children.map(({ id: source }) => ({
         ...children.map(({ id: source }) => ({
           id: `e${source}-${target}`,
           id: `e${source}-${target}`,
           source,
           source,
@@ -52,15 +48,16 @@ export const parser = (input) => {
         })),
         })),
         ...relationships(children),
         ...relationships(children),
       ]);
       ]);
+    };
 
 
-    const flatten = (xs) =>
+    const flatten = (xs: { id: string; children: never[] }[]) =>
       xs.flatMap(({ children, ...rest }) => [rest, ...flatten(children)]);
       xs.flatMap(({ children, ...rest }) => [rest, ...flatten(children)]);
 
 
     const res = extract(input);
     const res = extract(input);
 
 
     return [...flatten(res), ...relationships(res)];
     return [...flatten(res), ...relationships(res)];
   } catch (error) {
   } catch (error) {
-    console.error("An error occured while parsin JSON data!", error.stack);
-    return Array;
+    console.error("An error occured while parsin JSON data!");
+    return [];
   }
   }
 };
 };

+ 1 - 1
tsconfig.json

@@ -17,6 +17,6 @@
     "incremental": true,
     "incremental": true,
     "noImplicitAny": false
     "noImplicitAny": false
   },
   },
-  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "src/utils/json-editor-parser.js"],
+  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
   "exclude": ["node_modules"]
   "exclude": ["node_modules"]
 }
 }