{"version":3,"file":"get-info.mjs","names":[],"sources":["../../../../src/modules/processor/functions/get-info.ts"],"sourcesContent":["import type {\n    Expression,\n    ObjectPropertyKind,\n    PropertyKey,\n    SpreadElement,\n    VariableDeclarator,\n} from \"oxc-parser\";\n\nimport { ARGS, FN, ID, VA } from \"#/consts\";\n\ntype KeyValue = {\n    key: string;\n    value: Expression;\n};\n\nconst getKeyValue = (\n    props: ObjectPropertyKind[],\n    key: string,\n): KeyValue | undefined => {\n    for (let i: number = 0; i < props.length; i++) {\n        const prop: ObjectPropertyKind | undefined = props[i];\n\n        if (!prop) continue;\n\n        if (prop.type !== \"Property\") continue;\n\n        const k: PropertyKey = prop.key;\n\n        if (k.type !== \"Identifier\") continue;\n\n        if (k.name !== key) continue;\n\n        return {\n            key: k.name,\n            value: prop.value,\n        };\n    }\n\n    return void 0;\n};\n\nconst getString = (\n    props: ObjectPropertyKind[],\n    key: string,\n): string | undefined => {\n    const kv: KeyValue | undefined = getKeyValue(props, key);\n\n    if (!kv) return void 0;\n\n    if (kv.value.type !== \"Literal\") return void 0;\n\n    const value: string | number | bigint | boolean | RegExp | null =\n        kv.value.value;\n\n    if (value === \"\" || value === null) return void 0;\n\n    return value.toString();\n};\n\nconst getID = (props: ObjectPropertyKind[]): string | undefined =>\n    getString(props, ID);\n\nconst getVA = (props: ObjectPropertyKind[]): string | undefined =>\n    getString(props, VA);\n\nconst getFN = (props: ObjectPropertyKind[]): string | undefined =>\n    getString(props, FN);\n\nconst getArguments = (\n    props: ObjectPropertyKind[],\n): (Expression | SpreadElement)[] | undefined => {\n    const kv: KeyValue | undefined = getKeyValue(props, ARGS);\n\n    if (!kv) return void 0;\n\n    if (kv.value.type !== \"ArrayExpression\") return void 0;\n\n    const elements: (Expression | SpreadElement)[] = [];\n\n    for (const el of kv.value.elements) {\n        if (el !== null) elements.push(el);\n    }\n\n    return elements;\n};\n\ntype GetInfoOptions = {\n    decl: VariableDeclarator;\n};\n\n/**\n * Variable Declaration Info.\n */\ntype VarDeclInfo = {\n    /**\n     * Variable Declaration Info ID.\n     */\n    id: string;\n    /**\n     * Variable name.\n     */\n    va: string;\n    /**\n     * Function name.\n     */\n    fn: string;\n    /**\n     * Function arguments.\n     */\n    args: (Expression | SpreadElement)[];\n};\n\nconst getInfo = (options: GetInfoOptions): VarDeclInfo | undefined => {\n    const decl: VariableDeclarator = options.decl;\n\n    if (!decl.init) return void 0;\n\n    if (decl.init.type !== \"ObjectExpression\") return void 0;\n\n    const props: ObjectPropertyKind[] = decl.init.properties;\n\n    const id: string | undefined = getID(props);\n\n    if (!id) return void 0;\n\n    const va: string | undefined = getVA(props);\n\n    if (!va) return void 0;\n\n    const fn: string | undefined = getFN(props);\n\n    if (!fn) return void 0;\n\n    const args: (Expression | SpreadElement)[] | undefined =\n        getArguments(props);\n\n    if (!args) return void 0;\n\n    return {\n        id,\n        va,\n        fn,\n        args,\n    };\n};\n\nexport type { GetInfoOptions, VarDeclInfo };\nexport { getInfo };\n"],"mappings":";;AAeA,MAAM,eACF,OACA,QACuB;CACvB,KAAK,IAAI,IAAY,GAAG,IAAI,MAAM,QAAQ,KAAK;EAC3C,MAAM,OAAuC,MAAM;EAEnD,IAAI,CAAC,MAAM;EAEX,IAAI,KAAK,SAAS,YAAY;EAE9B,MAAM,IAAiB,KAAK;EAE5B,IAAI,EAAE,SAAS,cAAc;EAE7B,IAAI,EAAE,SAAS,KAAK;EAEpB,OAAO;GACH,KAAK,EAAE;GACP,OAAO,KAAK;EAChB;CACJ;AAGJ;AAEA,MAAM,aACF,OACA,QACqB;CACrB,MAAM,KAA2B,YAAY,OAAO,GAAG;CAEvD,IAAI,CAAC,IAAI,OAAO,KAAK;CAErB,IAAI,GAAG,MAAM,SAAS,WAAW,OAAO,KAAK;CAE7C,MAAM,QACF,GAAG,MAAM;CAEb,IAAI,UAAU,MAAM,UAAU,MAAM,OAAO,KAAK;CAEhD,OAAO,MAAM,SAAS;AAC1B;AAEA,MAAM,SAAS,UACX,UAAU,WAAS;AAEvB,MAAM,SAAS,UACX,UAAU,OAAO,EAAE;AAEvB,MAAM,SAAS,UACX,UAAU,OAAO,EAAE;AAEvB,MAAM,gBACF,UAC6C;CAC7C,MAAM,KAA2B,YAAY,OAAO,IAAI;CAExD,IAAI,CAAC,IAAI,OAAO,KAAK;CAErB,IAAI,GAAG,MAAM,SAAS,mBAAmB,OAAO,KAAK;CAErD,MAAM,WAA2C,CAAC;CAElD,KAAK,MAAM,MAAM,GAAG,MAAM,UACtB,IAAI,OAAO,MAAM,SAAS,KAAK,EAAE;CAGrC,OAAO;AACX;AA4BA,MAAM,WAAW,YAAqD;CAClE,MAAM,OAA2B,QAAQ;CAEzC,IAAI,CAAC,KAAK,MAAM,OAAO,KAAK;CAE5B,IAAI,KAAK,KAAK,SAAS,oBAAoB,OAAO,KAAK;CAEvD,MAAM,QAA8B,KAAK,KAAK;CAE9C,MAAM,KAAyB,MAAM,KAAK;CAE1C,IAAI,CAAC,IAAI,OAAO,KAAK;CAErB,MAAM,KAAyB,MAAM,KAAK;CAE1C,IAAI,CAAC,IAAI,OAAO,KAAK;CAErB,MAAM,KAAyB,MAAM,KAAK;CAE1C,IAAI,CAAC,IAAI,OAAO,KAAK;CAErB,MAAM,OACF,aAAa,KAAK;CAEtB,IAAI,CAAC,MAAM,OAAO,KAAK;CAEvB,OAAO;EACH;EACA;EACA;EACA;CACJ;AACJ"}