@specs-feup/alpakka
Version:
Alpakka is a [LARA Framework](https://github.com/specs-feup/lara-framework) source-to-source compiler for Android's [smali](https://github.com/google/smali) syntax. It enables the analysis and transformation of Android apps through APK files.
43 lines (34 loc) • 1.1 kB
text/typescript
import cytoscape from "@specs-feup/lara/api/libs/cytoscape-3.26.0.js";
import BaseGraph from "./BaseGraph.js";
export type GraphConstructor<
D extends BaseGraph.Data,
S extends BaseGraph.ScratchData,
G extends BaseGraph.Class<D, S>,
> = new (node: cytoscape.Core, _d: D, _sd: S) => G;
export interface GraphBuilder<
D extends BaseGraph.Data,
S extends BaseGraph.ScratchData,
> {
buildData(data: BaseGraph.Data): D;
buildScratchData(scratchData: BaseGraph.ScratchData): S;
}
export interface GraphTypeGuard<
D extends BaseGraph.Data,
S extends BaseGraph.ScratchData,
> {
isDataCompatible(data: BaseGraph.Data): data is D;
isScratchDataCompatible(sData: BaseGraph.ScratchData): sData is S;
}
export interface GraphTransformation {
apply(graph: BaseGraph.Class): void;
}
namespace Graph {
export const scratchNamespace = "_smali_flow";
export function create(): BaseGraph.Class {
return new BaseGraph.Class(cytoscape({}));
}
export function fromCy(graph: cytoscape.Core): BaseGraph.Class {
return new BaseGraph.Class(graph);
}
}
export default Graph;