{"version":3,"file":"ident.mjs","names":[],"sources":["../../../../../src/modules/preprocessor/preprocess/transform/ident.ts"],"sourcesContent":["import type {\n    Argument,\n    IdentifierReference,\n    ObjectExpression,\n} from \"oxc-parser\";\n\nimport type { CompilerContext } from \"#/contexts/compiler\";\n\nimport { cloneDeep } from \"es-toolkit\";\n\nimport { ARGS, FN, ID, SIGNATURE, VA } from \"#/consts\";\nimport { createId } from \"#/modules/preprocessor/preprocess/transform/helper/id\";\nimport { createObjectKeyValue } from \"#/modules/preprocessor/preprocess/transform/helper/kv\";\n\ntype TransformIdentOptions = {\n    context: CompilerContext;\n    va: string;\n    ident: IdentifierReference;\n    arguments: Argument[];\n};\n\ntype TransformIdentResult = {\n    object: ObjectExpression;\n};\n\nconst transformIdent = (\n    options: TransformIdentOptions,\n): TransformIdentResult => {\n    const ctx: CompilerContext = options.context;\n\n    const ident: IdentifierReference = cloneDeep(options.ident);\n\n    const object: ObjectExpression = {\n        type: \"ObjectExpression\",\n        start: ident.start,\n        end: ident.end,\n        properties: [],\n    };\n\n    const { property: signature } = createObjectKeyValue({\n        key: SIGNATURE,\n        value: true,\n    });\n\n    object.properties.push(signature);\n\n    const { property: id } = createObjectKeyValue({\n        key: ID,\n        value: createId({\n            context: ctx,\n            va: options.va,\n            arguments: options.arguments,\n        }),\n    });\n\n    object.properties.push(id);\n\n    const { property: va } = createObjectKeyValue({\n        key: VA,\n        value: options.va,\n    });\n\n    object.properties.push(va);\n\n    const { property: fn } = createObjectKeyValue({\n        key: FN,\n        value: options.ident.name,\n    });\n\n    object.properties.push(fn);\n\n    const { property: args } = createObjectKeyValue({\n        key: ARGS,\n        value: options.arguments,\n    });\n\n    object.properties.push(args);\n\n    return {\n        object,\n    };\n};\n\nexport type { TransformIdentOptions, TransformIdentResult };\nexport { transformIdent };\n"],"mappings":";;;;;AAyBA,MAAM,kBACF,YACuB;CACvB,MAAM,MAAuB,QAAQ;CAErC,MAAM,QAA6B,UAAU,QAAQ,KAAK;CAE1D,MAAM,SAA2B;EAC7B,MAAM;EACN,OAAO,MAAM;EACb,KAAK,MAAM;EACX,YAAY,CAAC;CACjB;CAEA,MAAM,EAAE,UAAU,cAAc,qBAAqB;EACjD,KAAK;EACL,OAAO;CACX,CAAC;CAED,OAAO,WAAW,KAAK,SAAS;CAEhC,MAAM,EAAE,UAAU,OAAO,qBAAqB;EAC1C;EACA,OAAO,SAAS;GACZ,SAAS;GACT,IAAI,QAAQ;GACZ,WAAW,QAAQ;EACvB,CAAC;CACL,CAAC;CAED,OAAO,WAAW,KAAK,EAAE;CAEzB,MAAM,EAAE,UAAU,OAAO,qBAAqB;EAC1C,KAAK;EACL,OAAO,QAAQ;CACnB,CAAC;CAED,OAAO,WAAW,KAAK,EAAE;CAEzB,MAAM,EAAE,UAAU,OAAO,qBAAqB;EAC1C,KAAK;EACL,OAAO,QAAQ,MAAM;CACzB,CAAC;CAED,OAAO,WAAW,KAAK,EAAE;CAEzB,MAAM,EAAE,UAAU,SAAS,qBAAqB;EAC5C,KAAK;EACL,OAAO,QAAQ;CACnB,CAAC;CAED,OAAO,WAAW,KAAK,IAAI;CAE3B,OAAO,EACH,OACJ;AACJ"}