Skip to content

Commit

Permalink
Restructure macros, add getAllComponents
Browse files Browse the repository at this point in the history
  • Loading branch information
Fireboltofdeath committed Aug 4, 2021
1 parent d50a5dc commit 5576552
Show file tree
Hide file tree
Showing 13 changed files with 102 additions and 58 deletions.
39 changes: 21 additions & 18 deletions src/transformations/macros/call/callMacros.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
import { CallMacro } from "../macro";
import { ComponentMethodMacro } from "./componentMethodMacro";
import { DependencyMacro } from "./dependencyMacro";
import { FlameworkAddPathsMacro } from "./flameworkAddPathsMacro";
import { FlameworkCreateEventMacro } from "./flameworkCreateEventMacro";
import { FlameworkCreateGuardMacro } from "./flameworkCreateGuardMacro";
import { FlameworkHashMacro } from "./flameworkHashMacro";
import { FlameworkIdMacro } from "./flameworkIdMacro";
import { FlameworkImplementsMacro } from "./flameworkImplementsMacro";
import { NetworkingConnectMacro } from "./networkingConnectMacro";
import { NetworkingPredictMacro } from "./networkingPredictMacro";
import { TestingPatchDependencyMacro } from "./testingPatchDependencyMacro";
import { ComponentGetAllComponentsMacro } from "./components/getAllComponentsMacro";
import { ComponentMethodMacro } from "./components/methodMacro";
import { DependencyMacro } from "./core/dependencyMacro";
import { FlameworkAddPathsMacro } from "./core/flamework/addPathsMacro";
import { NetworkingCreateEventMacro } from "./networking/createEventMacro";
import { FlameworkCreateGuardMacro } from "./core/flamework/createGuardMacro";
import { FlameworkHashMacro } from "./core/flamework/hashMacro";
import { FlameworkIdMacro } from "./core/flamework/flameworkIdMacro";
import { FlameworkImplementsMacro } from "./core/flamework/implementsMacro";
import { NetworkingConnectMacro } from "./networking/connectMacro";
import { NetworkingPredictMacro } from "./networking/predictMacro";
import { TestingPatchDependencyMacro } from "./core/flamework/testingPatchDependencyMacro";

export const CALL_MACROS = new Array<CallMacro>(
DependencyMacro,

// @flamework/components
ComponentMethodMacro,
ComponentGetAllComponentsMacro,

// @flamework/networking
NetworkingConnectMacro,
NetworkingPredictMacro,
NetworkingCreateEventMacro,

TestingPatchDependencyMacro,

// @flamework/core
DependencyMacro,
FlameworkIdMacro,
FlameworkHashMacro,
FlameworkAddPathsMacro,
FlameworkCreateGuardMacro,
FlameworkCreateEventMacro,
FlameworkImplementsMacro,
FlameworkHashMacro,
FlameworkCreateGuardMacro,
TestingPatchDependencyMacro,
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import ts from "typescript";
import { Diagnostics } from "../../../../classes/diagnostics";
import { f } from "../../../../util/factory";
import { CallMacro } from "../../macro";

export const ComponentGetAllComponentsMacro: CallMacro = {
getSymbol(state) {
const symbols = state.symbolProvider;
if (!symbols.components) return [];

return symbols.components.get("getAllComponents");
},

transform(state, node) {
const firstType = node.typeArguments?.[0];
if (firstType) {
if (!f.is.referenceType(firstType)) Diagnostics.error(firstType, `Expected type reference`);

const declaration = state.getSymbol(firstType.typeName)?.declarations?.[0];
if (!declaration) Diagnostics.error(firstType, `Could not find declaration`);

return f.update.call(node, state.transform(node.expression), [
f.as(f.string(state.getUid(declaration)), f.keywordType(ts.SyntaxKind.NeverKeyword)),
]);
} else {
const specifier = node.arguments[1];
if (!specifier) Diagnostics.error(node, `No specifier found`);

const symbol = state.getSymbol(specifier);
if (!symbol) Diagnostics.error(specifier, `Symbol could not be found`);
if (!state.classes.has(symbol)) return state.transform(node);

const declaration = symbol?.declarations?.[0];
if (!declaration) Diagnostics.error(specifier, `Declaration could not be found`);

return f.update.call(node, state.transform(node.expression), [
f.as(f.string(state.getUid(declaration)), f.keywordType(ts.SyntaxKind.NeverKeyword)),
]);
}
},
};
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ts from "typescript";
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../classes/diagnostics";
import { f } from "../../../../util/factory";
import { CallMacro } from "../../macro";

export const ComponentMethodMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../classes/diagnostics";
import { f } from "../../../../util/factory";
import { CallMacro } from "../../macro";

export const DependencyMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import ts from "typescript";
import path from "path";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../classes/diagnostics";
import { TransformState } from "../../../classes/transformState";
import { f } from "../../../../../util/factory";
import { CallMacro } from "../../../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { TransformState } from "../../../../../classes/transformState";

function getPathFromSpecifier(state: TransformState, source: ts.SourceFile, hostDir: string, specifier: string) {
const sourceDir = path.dirname(source.fileName);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { relocateDiagnostic } from "../../../util/diagnosticsUtils";
import { buildGuardFromType } from "../../../util/functions/buildGuardFromType";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { relocateDiagnostic } from "../../../../../util/diagnosticsUtils";
import { buildGuardFromType } from "../../../../../util/functions/buildGuardFromType";
import { CallMacro } from "../../../macro";

export const FlameworkCreateGuardMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { f } from "../../../../../util/factory";
import { CallMacro } from "../../../macro";

export const FlameworkIdMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { f } from "../../../../../util/factory";
import { CallMacro } from "../../../macro";

export const FlameworkHashMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { f } from "../../../../../util/factory";
import { CallMacro } from "../../../macro";

export const FlameworkImplementsMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../../classes/diagnostics";
import { f } from "../../../../../util/factory";
import { CallMacro } from "../../../macro";

export const TestingPatchDependencyMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import ts from "typescript";
import { Diagnostics } from "../../../classes/diagnostics";
import { relocateDiagnostic } from "../../../util/diagnosticsUtils";
import { f } from "../../../util/factory";
import { buildGuardFromType } from "../../../util/functions/buildGuardFromType";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../classes/diagnostics";
import { relocateDiagnostic } from "../../../../util/diagnosticsUtils";
import { f } from "../../../../util/factory";
import { buildGuardFromType } from "../../../../util/functions/buildGuardFromType";
import { CallMacro } from "../../macro";

export const NetworkingConnectMacro: CallMacro = {
getSymbol(state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import ts from "typescript";
import { Diagnostics } from "../../../classes/diagnostics";
import { TransformState } from "../../../classes/transformState";
import { f } from "../../../util/factory";
import { buildGuardFromType } from "../../../util/functions/buildGuardFromType";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../classes/diagnostics";
import { TransformState } from "../../../../classes/transformState";
import { f } from "../../../../util/factory";
import { buildGuardFromType } from "../../../../util/functions/buildGuardFromType";
import { CallMacro } from "../../macro";

export const FlameworkCreateEventMacro: CallMacro = {
export const NetworkingCreateEventMacro: CallMacro = {
getSymbol(state) {
if (!state.symbolProvider.networking) return [];
return state.symbolProvider.networking.get("createEvent");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Diagnostics } from "../../../classes/diagnostics";
import { f } from "../../../util/factory";
import { CallMacro } from "../macro";
import { Diagnostics } from "../../../../classes/diagnostics";
import { f } from "../../../../util/factory";
import { CallMacro } from "../../macro";

export const NetworkingPredictMacro: CallMacro = {
getSymbol(state) {
Expand Down

0 comments on commit 5576552

Please sign in to comment.