Skip to content

Commit

Permalink
Update CLI events helper
Browse files Browse the repository at this point in the history
  • Loading branch information
sgrove committed Aug 8, 2022
1 parent d70a8e4 commit c7cbb27
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 23 deletions.
110 changes: 107 additions & 3 deletions src/cliEventHelpers.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { CodegenModuleMeta } from "./codegen/codegenHelpers";

export const OneGraphNetlifyCliSessionTestEventSdl = `type OneGraphNetlifyCliSessionTestEvent {
id: String!
sessionId: String!
Expand All @@ -20,7 +22,7 @@ export const OneGraphNetlifyCliSessionGenerateHandlerEventSdl = `type OneGraphNe
payload: {
cliSessionId: String!
operationId: String
codeGeneratorId: String!
codegenId: String!
options: JSON
}
}`;
Expand All @@ -33,7 +35,7 @@ export type OneGraphNetlifyCliSessionGenerateHandlerEvent = {
payload: {
cliSessionId: string;
operationId: string;
codeGeneratorId: string;
codegenId: string;
options?: Record<string, unknown> | null;
};
};
Expand Down Expand Up @@ -63,16 +65,18 @@ export const OneGraphNetlifyCliSessionPersistedLibraryUpdatedEventSdl = `type On
createdAt: String!
payload: {
docId: String!
schemaId: String!
}
}`;

export type OneGraphNetlifyCliSessionPersistedLibraryUpdatedEvent = {
__typename: "OneGraphNetlifyCliSessionOpenFileEvent";
__typename: "OneGraphNetlifyCliSessionPersistedLibraryUpdatedEvent";
id: string;
sessionId: string;
createdAt: string;
payload: {
docId: string;
schemaId: string;
};
};

Expand All @@ -98,3 +102,103 @@ export type OneGraphNetlifyCliSessionFileWrittenEvent = {
};
audience: "UI" | "CLI";
};

export const OneGraphNetlifyCliSessionCodegenHandlerFunctionOptionsSdl = `type OneGraphNetlifyCliSessionCodegenHandlerFunctionOptions {
schemaSdl: String!
inputTypename: String!
defaultValue: JSON
}`;

export const OneGraphNetlifyCliSessionCodegenSupportedDefinitionTypesEnumSdl = `enum OneGraphNetlifyCliSessionCodegenSupportedDefinitionTypesEnum {
QUERY
MUTATION
SUBSCRIPTION
FRAGMENT
}`;

export const OneGraphNetlifyCliSessionCodegenMetadataSdl = `type OneGraphNetlifyCliSessionCodegenMetadata {
id: String!
name: String!
operations: OneGraphNetlifyCliSessionCodegenHandlerFunctionOptions
supportedDefinitionTypes: [OneGraphNetlifyCliSessionCodegenSupportedDefinitionTypesEnum!]!
}`;

export const OneGraphNetlifyCliSessionCodegenModuleMetadataSdl = `type OneGraphNetlifyCliSessionCodegenModuleMetadata {
id: String!
version: String!
generators: [OneGraphNetlifyCliSessionCodegenMetadata!]!
}`;

export const OneGraphNetlifyCliSessionMetadataPublishEventSdl = `type OneGraphNetlifyCliSessionMetadataPublishEvent {
id: String!
sessionId: String!
createdAt: String!
payload: {
editor: String
siteRoot: String
siteRootFriendly: String
schemaId: String!
persistedDocId: String!
codegenModule: OneGraphNetlifyCliSessionCodegenModuleMetadata
}
audience: String!
}`;

export type OneGraphNetlifyCliSessionMetadataPublishEvent = {
__typename: "OneGraphNetlifyCliSessionMetadataPublishEvent";
id: string;
sessionId: string;
createdAt: string;
payload: {
cliVersion: string;
editor: string | null;
siteRoot: string | null;
siteRootFriendly: string | null;
schemaId: string;
persistedDocId: string;
codegenModule: CodegenModuleMeta | null;
};
audience: "UI";
};

export const OneGraphNetlifyCliSessionMetadataRequestEventSdl = `type OneGraphNetlifyCliSessionMetadataRequestEvent {
id: String!
sessionId: String!
createdAt: String!
payload: {
minimumCliVersionExpected: String!
expectedAudience: String!
}
audience: String!
}`;

export type OneGraphNetlifyCliSessionMetadataRequestEvent = {
__typename: "OneGraphNetlifyCliSessionMetadataRequestEvent";
id: string;
sessionId: string;
createdAt: string;
payload: {
minimumCliVersionExpected: string;
expectedAudience: "UI";
};
audience: "CLI";
};

export type CliEvent =
| OneGraphNetlifyCliSessionTestEvent
| OneGraphNetlifyCliSessionGenerateHandlerEvent
| OneGraphNetlifyCliSessionOpenFileEvent
| OneGraphNetlifyCliSessionPersistedLibraryUpdatedEvent
| OneGraphNetlifyCliSessionFileWrittenEvent
| OneGraphNetlifyCliSessionMetadataPublishEvent
| OneGraphNetlifyCliSessionMetadataRequestEvent;

export type DetectedLocalCLISessionMetadata = {
gitBranch: string | null;
hostname: string | null;
username: string | null;
siteRoot: string | null;
cliVersion: string;
editor: string | null;
codegen: CodegenModuleMeta | null;
};
14 changes: 7 additions & 7 deletions src/codegen/codegenHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ export type GenerateRuntimeFunction = (opts: {
fragments: ParsedFragment[];
}) => NamedExportedFile[];

type CodeGeneratorSupportableDefinitionType =
type CodegenSupportableDefinitionType =
| "query"
| "mutation"
| "subscription"
Expand All @@ -179,32 +179,32 @@ export type GenerateHandlerFunctionOptionsDeserialized = {
defaultValue?: Record<string, unknown>;
};

export type CodeGenerator = {
export type Codegen = {
generatePreview?: GenerateHandlerPreviewFunction;
generateHandler: GenerateHandlerFunction;
generateHandlerOptions?: GenerateHandlerFunctionOptions;
supportedDefinitionTypes: CodeGeneratorSupportableDefinitionType[];
supportedDefinitionTypes: CodegenSupportableDefinitionType[];
name: string;
id: string;
version: string;
};

export type CodeGeneratorMeta = {
export type CodegenMeta = {
id: string;
name: string;
options: GenerateHandlerFunctionOptions | null;
supportedDefinitionTypes: CodeGeneratorSupportableDefinitionType[];
supportedDefinitionTypes: CodegenSupportableDefinitionType[];
};

export type CodegenModuleMeta = {
id: string;
version: string;
generators: CodeGeneratorMeta[];
generators: CodegenMeta[];
};

export type CodegenModule = {
id: string;
version: string;
generateRuntime: GenerateRuntimeFunction;
generators: CodeGenerator[];
generators: Codegen[];
};
5 changes: 3 additions & 2 deletions src/codegen/genericExporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import {
ExportedFile,
ExporterResult,
munge,
CodeGenerator,
GenerateHandlerFunction,
Codegen,
UnnamedExportedFile,
} from "./codegenHelpers";
import { internalConsole } from "../internalConsole";
Expand Down Expand Up @@ -531,7 +532,7 @@ const exp = (netlifyGraphConfig, name) => {
};

// Snippet generation!
export const netlifyFunctionSnippet: CodeGenerator = {
export const netlifyFunctionSnippet: Codegen = {
name: "Netlify Function",
generateHandlerOptions: snippetOptions,
supportedDefinitionTypes: [],
Expand Down
4 changes: 2 additions & 2 deletions src/codegen/nextjsExporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
NamedExportedFile,
OperationData,
OperationDataList,
CodeGenerator,
Codegen,
UnnamedExportedFile,
} from "./codegenHelpers";
import { internalConsole } from "../internalConsole";
Expand Down Expand Up @@ -748,7 +748,7 @@ const expDefault = (netlifyGraphConfig: NetlifyGraphConfig, name: string) => {
};

// Snippet generation!
export const nextjsFunctionSnippet: CodeGenerator = {
export const nextjsFunctionSnippet: Codegen = {
name: "Next.js Function",
generateHandlerOptions: snippetOptions,
supportedDefinitionTypes: [],
Expand Down
4 changes: 2 additions & 2 deletions src/codegen/remixExporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
NamedExportedFile,
OperationData,
OperationDataList,
CodeGenerator,
Codegen,
} from "./codegenHelpers";
import { internalConsole } from "../internalConsole";
import { remixFormInput } from "../graphqlHelpers";
Expand Down Expand Up @@ -744,7 +744,7 @@ const expDefault = (netlifyGraphConfig: NetlifyGraphConfig, name: string) => {
};

// Snippet generation!
export const remixFunctionSnippet: CodeGenerator = {
export const remixFunctionSnippet: Codegen = {
name: "Remix Function",
generateHandlerOptions: snippetOptions,
supportedDefinitionTypes: [],
Expand Down
6 changes: 3 additions & 3 deletions src/netlifyGraph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import {
import { nextjsFunctionSnippet } from "./codegen/nextjsExporter";
import { remixFunctionSnippet } from "./codegen/remixExporter";
import {
CodeGenerator,
Codegen,
ExportedFile,
GenerateHandlerFunction,
} from "./codegen/codegenHelpers";
Expand Down Expand Up @@ -2399,7 +2399,7 @@ export const generateCustomHandlerSource = ({
operationId: string;
operationsDoc: string;
schema: GraphQLSchema;
generate: CodeGenerator["generateHandler"];
generate: Codegen["generateHandler"];
}):
| {
exportedFiles: ExportedFile[];
Expand Down Expand Up @@ -2452,7 +2452,7 @@ export const generatePreview = ({
operationId: string;
operationsDoc: string;
schema: GraphQLSchema;
generate: CodeGenerator["generatePreview"];
generate: Codegen["generatePreview"];
}):
| {
exportedFile: ExportedFile;
Expand Down
12 changes: 8 additions & 4 deletions src/oneGraphClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -451,23 +451,27 @@ export const friendlyEventName = (event: OneGraphCliEvent): string => {
}
};

export type OneGraphCliEventAudience = "ui" | "cli";
export type OneGraphCliEventAudience = "UI" | "CLI";
/**
*
* @param {OneGraphCliEvent} event
* @returns {'ui' | 'cli'} Which audience the event is intended for
* @returns {OneGraphCliEventAudience} Which audience the event is intended for
*/
export const eventAudience = (
event: OneGraphCliEvent
): OneGraphCliEventAudience => {
const { __typename, payload } = event;
if (event.audience || payload.audience) {
return event.audience || payload.audience;
}

switch (__typename) {
case "OneGraphNetlifyCliSessionTestEvent":
return eventAudience(payload);
case "OneGraphNetlifyCliSessionFileWrittenEvent":
return "ui";
return "UI";
default: {
return "cli";
return "CLI";
}
}
};
Expand Down

0 comments on commit c7cbb27

Please sign in to comment.