@gadgetinc/ggt 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/lib/__generated__/graphql.d.ts +245 -0
- package/lib/__generated__/graphql.js +14 -0
- package/lib/__generated__/graphql.js.map +1 -0
- package/lib/commands/sync.d.ts +0 -4
- package/lib/commands/sync.js +8 -17
- package/lib/commands/sync.js.map +1 -1
- package/lib/lib/errors.js +1 -1
- package/lib/lib/errors.js.map +1 -1
- package/npm-shrinkwrap.json +17135 -8721
- package/oclif.manifest.json +1 -1
- package/package.json +10 -4
package/lib/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import cleanStack from \"clean-stack\";\nimport { HTTPError } from \"got\";\nimport type { GraphQLError } from \"graphql\";\nimport { isArray, isBoolean, isError, isNil, isNumber, isString, noop, uniqBy } from \"lodash\";\nimport newGithubIssueUrl from \"new-github-issue-url\";\nimport { serializeError as baseSerializeError } from \"serialize-error\";\nimport dedent from \"ts-dedent\";\nimport type { SetOptional, Writable } from \"type-fest\";\nimport { inspect } from \"util\";\nimport type { CloseEvent, ErrorEvent } from \"ws\";\nimport type Sync from \"../commands/sync\";\nimport type { Payload } from \"./client\";\nimport { context } from \"./context\";\nimport * as Sentry from \"@sentry/node\";\nimport os from \"os\";\n\nif (context.env.productionLike) {\n Sentry.init({ dsn: \"https://0c26e0d8afd94e77a88ee1c3aa9e7065@o250689.ingest.sentry.io/6703266\" });\n}\n\n/**\n * Base class for all errors.\n *\n * Inspired by gadget's GadgetError and oclif's PrettyPrintableError.\n */\nexport abstract class BaseError extends Error {\n /**\n * A GGT_CLI_SOMETHING human/machine readable unique identifier for this error.\n */\n code: string;\n\n /**\n * The underlying *thing* that caused this error.\n */\n override cause?: any;\n\n /**\n * Assume the stack trace exists.\n */\n override stack!: string;\n\n /**\n * Indicates whether this error is considered a bug or not.\n */\n abstract isBug: IsBug;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n Error.captureStackTrace(this, this.constructor);\n }\n\n async capture(): Promise<void> {\n if (!context.env.productionLike || this.isBug == IsBug.NO) return;\n\n const user = await context.getUser().catch(noop);\n\n Sentry.captureException(this, {\n user: user ? { id: String(user.id), email: user.email, username: user.name } : undefined,\n tags: {\n applicationId: context.app?.id,\n arch: context.config.arch,\n isBug: this.isBug,\n code: this.code,\n environment: context.env.value,\n platform: context.config.platform,\n shell: context.config.shell,\n version: context.config.version,\n },\n contexts: {\n cause: this.cause ? serializeError(this.cause) : undefined,\n app: {\n command: `${context.config.bin} ${process.argv.slice(2).join(\" \")}`,\n argv: process.argv,\n },\n device: {\n name: os.hostname(),\n family: os.type(),\n arch: os.arch(),\n },\n runtime: {\n name: process.release.name,\n version: process.version,\n },\n },\n });\n\n await Sentry.flush();\n }\n\n /**\n * Turns this error into a user-friendly message that explains what went wrong and how to fix it. A good write up of what an error should\n * look like can be found here: {@link https://clig.dev/#errors}\n */\n render(): string {\n const header = this.header();\n const body = this.body();\n const footer = this.footer();\n\n let output = \"\";\n if (header) output += header + \"\\n\\n\";\n if (body) output += body + \"\\n\\n\";\n if (footer) output += footer + \"\\n\\n\";\n\n return output;\n }\n\n protected header(): string {\n return `${this.code}: ${this.message}`;\n }\n\n protected footer(): string {\n switch (this.isBug) {\n case IsBug.NO:\n return \"\";\n case IsBug.MAYBE:\n return dedent`\n If you think this is a bug, please submit an issue using the link below.\n\n ${newGithubIssueUrl(this.issueOptions())}\n `;\n case IsBug.YES:\n return dedent`\n This is a bug :(\n\n Visit the link below to see if someone has already reported this issue.\n https://github.com/gadget-inc/ggt/issues?q=is%3Aissue+is%3Aopen+label%3Abug+${this.code}\n\n If nobody has, you can submit one using the link below.\n ---\n ${newGithubIssueUrl(this.issueOptions())}\n `;\n }\n }\n\n protected issueOptions(): newGithubIssueUrl.Options {\n const options = {\n repoUrl: \"https://github.com/gadget-inc/ggt\",\n title: `[BUG ${this.code}]: `,\n labels: [\"bug\"],\n body: dedent`\n ### Description\n [Please describe what you were doing when this error occurred]\n\n ### Command\n \\`\\`\\`sh-session\n ${context.config.bin} ${process.argv.slice(2).join(\" \")}\n \\`\\`\\`\n\n ### Environment\n \\`\\`\\`\n version: ${context.config.version}\n platform: ${context.config.platform}\n arch: ${context.config.arch}\n shell: ${context.config.shell}\n timestamp: ${new Date().toISOString()}\n \\`\\`\\`\n\n ### Stack Trace\n \\`\\`\\`\n ${cleanStack(this.stack)}\n \\`\\`\\`\n `,\n };\n\n if (this.cause) {\n options.body += dedent`\n\n ### Cause\n \\`\\`\\`json\n ${JSON.stringify(isError(this.cause) ? serializeError(this.cause) : this.cause, null, 2)}\n \\`\\`\\`\n `;\n }\n\n return options;\n }\n\n protected abstract body(): string;\n}\n\n/**\n * Universal Error object to json blob serializer.\n * Wraps `serialize-error` with some handy stuff, like special support for Got HTTP errors\n */\nexport function serializeError(error: Error | string | unknown): Record<string, any> {\n let serialized = baseSerializeError(error);\n if (typeof serialized == \"string\") {\n serialized = { message: serialized };\n }\n\n if (error instanceof HTTPError && error.name === \"RequestError\") {\n delete serialized[\"timings\"];\n serialized[\"options\"] = { method: error.options.method, url: error.options.url.toJSON() };\n serialized[\"responseBody\"] = inspect(error.response?.body);\n }\n\n return serialized;\n}\n\nexport enum IsBug {\n YES = \"yes\",\n NO = \"no\",\n MAYBE = \"maybe\",\n}\n\n/**\n * Our \"catch all\" error. If this error is thrown, we almost certainly have a bug.\n *\n * Whenever possible, we should use a more specific error so that we can provide more useful information.\n */\nexport class UnexpectedError extends BaseError {\n isBug = IsBug.YES;\n\n constructor(override cause: Error) {\n super(\"GGT_CLI_UNEXPECTED_ERROR\", \"An unexpected error occurred\");\n }\n\n protected body(): string {\n return cleanStack(this.cause.stack ?? this.stack);\n }\n}\n\nexport class ClientError extends BaseError {\n isBug = IsBug.MAYBE;\n\n constructor(readonly payload: Payload<any, any>, override cause: string | Error | readonly GraphQLError[] | CloseEvent | ErrorEvent) {\n super(\"GGT_CLI_CLIENT_ERROR\", \"An error occurred while communicating with Gadget\");\n\n // ErrorEvent and CloseEvent aren't serializable, so we reconstruct them into an object. We discard the `target` property because it's large and not that useful\n if (isErrorEvent(cause)) {\n this.cause = {\n type: cause.type,\n message: cause.message,\n error: serializeError(cause.error),\n } as any;\n } else if (isCloseEvent(cause)) {\n this.cause = {\n type: cause.type,\n code: cause.code,\n reason: cause.reason,\n wasClean: cause.wasClean,\n } as any;\n }\n }\n\n override body(): string {\n if (isGraphQLErrors(this.cause)) {\n if (this.cause.length > 1) {\n let output = \"Gadget responded with multiple errors:\";\n for (const error of uniqBy(this.cause, \"message\")) {\n output += `\\n * ${error.message}`;\n }\n return output;\n } else {\n return dedent`\n Gadget responded with an unexpected error.\n\n ${this.cause[0]?.message}\n `;\n }\n }\n\n if (isCloseEvent(this.cause)) {\n return \"The connection to Gadget closed unexpectedly.\";\n }\n\n if (isErrorEvent(this.cause)) {\n return dedent`\n The connection to Gadget received an unexpected error.\n\n ${this.cause.message}\n `;\n }\n\n if (isError(this.cause)) {\n return dedent`\n An unexpected error occurred.\n\n ${this.cause.message}\n `;\n }\n\n return this.cause;\n }\n\n protected override issueOptions(): newGithubIssueUrl.Options {\n const options = super.issueOptions() as Writable<newGithubIssueUrl.Options>;\n options.body += dedent`\n\n ### GraphQL\n\n #### Query\n \\`\\`\\`graphql\n ${this.payload.query}\n \\`\\`\\`\n `;\n\n // mutations can have large/sensitive payloads, so we don't include them by default\n if (!this.payload.query.trimStart().startsWith(\"mutation\")) {\n options.body += dedent`\n\n #### Variables\n \\`\\`\\`json\n ${JSON.stringify(this.payload.variables, null, 2)}\n \\`\\`\\`\n `;\n }\n\n return options;\n }\n}\n\nexport class YarnNotFoundError extends BaseError {\n isBug = IsBug.NO;\n\n constructor() {\n super(\"GGT_CLI_YARN_NOT_FOUND\", \"Yarn not found\");\n }\n\n protected body(): string {\n return dedent`\n Yarn is required to sync your application.\n\n Please install Yarn by running:\n\n $ npm install --global yarn\n\n For more information, see: https://classic.yarnpkg.com/en/docs/install\n `;\n }\n}\n\nexport class FlagError<T extends { name: string; char?: string }> extends BaseError {\n isBug = IsBug.NO;\n\n constructor(readonly flag: T, readonly description: string) {\n const name = flag.char ? `-${flag.char}, --${flag.name}` : `--${flag.name}`;\n super(\"GGT_CLI_FLAG_ERROR\", `Invalid value provided for the ${name} flag`);\n }\n\n protected body(): string {\n return this.description;\n }\n}\n\nexport class InvalidSyncFileError extends BaseError {\n isBug = IsBug.MAYBE;\n\n constructor(override readonly cause: unknown, readonly sync: Sync, readonly app: string | undefined) {\n super(\"GGT_CLI_INVALID_SYNC_FILE\", \"The .gadget/sync.json file was invalid or not found\");\n }\n\n protected body(): string {\n return dedent`\n We failed to read the Gadget metadata file in this directory:\n\n ${this.sync.dir}\n\n If you're running \\`ggt sync\\` for the first time, we recommend using an empty directory such as:\n\n ~/gadget/${this.app || \"<name of app>\"}\n\n Otherwise, if you're sure you want to sync the contents of \"${\n this.sync.dir\n }\" to Gadget, run \\`ggt sync\\` again with the \\`--force\\` flag:\n\n $ ggt sync ${this.sync.argv.join(\" \")} --force\n\n You will be prompted to either merge your local files with your remote ones or reset your local files to your remote ones.\n `;\n }\n}\n\nfunction isCloseEvent(e: any): e is SetOptional<CloseEvent, \"target\"> {\n return !isNil(e) && isString(e.type) && isNumber(e.code) && isString(e.reason) && isBoolean(e.wasClean);\n}\n\nfunction isErrorEvent(e: any): e is SetOptional<ErrorEvent, \"target\"> {\n return !isNil(e) && isString(e.type) && isString(e.message) && isError(e.error);\n}\n\nfunction isGraphQLErrors(e: any): e is readonly GraphQLError[] {\n return isArray(e) && e.every((e) => !isNil(e) && isString(e.message) && isArray(e.locations) && isArray(e.path));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import cleanStack from \"clean-stack\";\nimport { HTTPError } from \"got\";\nimport type { GraphQLError } from \"graphql\";\nimport { isArray, isBoolean, isError, isNil, isNumber, isString, noop, uniqBy } from \"lodash\";\nimport newGithubIssueUrl from \"new-github-issue-url\";\nimport { serializeError as baseSerializeError } from \"serialize-error\";\nimport dedent from \"ts-dedent\";\nimport type { SetOptional, Writable } from \"type-fest\";\nimport { inspect } from \"util\";\nimport type { CloseEvent, ErrorEvent } from \"ws\";\nimport type Sync from \"../commands/sync\";\nimport type { Payload } from \"./client\";\nimport { context } from \"./context\";\nimport * as Sentry from \"@sentry/node\";\nimport os from \"os\";\n\nif (context.env.productionLike) {\n Sentry.init({ dsn: \"https://0c26e0d8afd94e77a88ee1c3aa9e7065@o250689.ingest.sentry.io/6703266\" });\n}\n\n/**\n * Base class for all errors.\n *\n * Inspired by gadget's GadgetError and oclif's PrettyPrintableError.\n */\nexport abstract class BaseError extends Error {\n /**\n * A GGT_CLI_SOMETHING human/machine readable unique identifier for this error.\n */\n code: string;\n\n /**\n * The underlying *thing* that caused this error.\n */\n override cause?: any;\n\n /**\n * Assume the stack trace exists.\n */\n override stack!: string;\n\n /**\n * Indicates whether this error is considered a bug or not.\n */\n abstract isBug: IsBug;\n\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n Error.captureStackTrace(this, this.constructor);\n }\n\n async capture(): Promise<void> {\n if (!context.env.productionLike || this.isBug == IsBug.NO) return;\n\n const user = await context.getUser().catch(noop);\n\n Sentry.captureException(this, {\n user: user ? { id: String(user.id), email: user.email, username: user.name } : undefined,\n tags: {\n applicationId: context.app?.id,\n arch: context.config.arch,\n isBug: this.isBug,\n code: this.code,\n environment: context.env.value,\n platform: context.config.platform,\n shell: context.config.shell,\n version: context.config.version,\n },\n contexts: {\n cause: this.cause ? serializeError(this.cause) : undefined,\n app: {\n command: `${context.config.bin} ${process.argv.slice(2).join(\" \")}`,\n argv: process.argv,\n },\n device: {\n name: os.hostname(),\n family: os.type(),\n arch: os.arch(),\n },\n runtime: {\n name: process.release.name,\n version: process.version,\n },\n },\n });\n\n await Sentry.flush();\n }\n\n /**\n * Turns this error into a user-friendly message that explains what went wrong and how to fix it. A good write up of what an error should\n * look like can be found here: {@link https://clig.dev/#errors}\n */\n render(): string {\n const header = this.header();\n const body = this.body();\n const footer = this.footer();\n\n let output = \"\";\n if (header) output += header + \"\\n\\n\";\n if (body) output += body + \"\\n\\n\";\n if (footer) output += footer + \"\\n\\n\";\n\n return output;\n }\n\n protected header(): string {\n return `${this.code}: ${this.message}`;\n }\n\n protected footer(): string {\n switch (this.isBug) {\n case IsBug.NO:\n return \"\";\n case IsBug.MAYBE:\n return dedent`\n If you think this is a bug, please submit an issue using the link below.\n\n ${newGithubIssueUrl(this.issueOptions())}\n `;\n case IsBug.YES:\n return dedent`\n This is a bug :(\n\n Visit the link below to see if someone has already reported this issue.\n https://github.com/gadget-inc/ggt/issues?q=is%3Aissue+is%3Aopen+label%3Abug+${this.code}\n\n If nobody has, you can submit one using the link below.\n ---\n ${newGithubIssueUrl(this.issueOptions())}\n `;\n }\n }\n\n protected issueOptions(): newGithubIssueUrl.Options {\n const options = {\n repoUrl: \"https://github.com/gadget-inc/ggt\",\n title: `[BUG ${this.code}]: `,\n labels: [\"bug\"],\n body: dedent`\n ### Description\n [Please describe what you were doing when this error occurred]\n\n ### Command\n \\`\\`\\`sh-session\n ${context.config.bin} ${process.argv.slice(2).join(\" \")}\n \\`\\`\\`\n\n ### Environment\n \\`\\`\\`\n version: ${context.config.version}\n platform: ${context.config.platform}\n arch: ${context.config.arch}\n shell: ${context.config.shell}\n timestamp: ${new Date().toISOString()}\n \\`\\`\\`\n\n ### Stack Trace\n \\`\\`\\`\n ${cleanStack(this.stack)}\n \\`\\`\\`\n `,\n };\n\n if (this.cause) {\n options.body += dedent`\n\n ### Cause\n \\`\\`\\`json\n ${JSON.stringify(isError(this.cause) ? serializeError(this.cause) : this.cause, null, 2)}\n \\`\\`\\`\n `;\n }\n\n return options;\n }\n\n protected abstract body(): string;\n}\n\n/**\n * Universal Error object to json blob serializer.\n * Wraps `serialize-error` with some handy stuff, like special support for Got HTTP errors\n */\nexport function serializeError(error: Error | string | unknown): Record<string, any> {\n let serialized = baseSerializeError(error);\n if (typeof serialized == \"string\") {\n serialized = { message: serialized };\n }\n\n if (error instanceof HTTPError && error.name === \"RequestError\") {\n delete serialized[\"timings\"];\n serialized[\"options\"] = { method: error.options.method, url: error.options.url.toJSON() };\n serialized[\"responseBody\"] = inspect(error.response?.body);\n }\n\n return serialized;\n}\n\nexport enum IsBug {\n YES = \"yes\",\n NO = \"no\",\n MAYBE = \"maybe\",\n}\n\n/**\n * Our \"catch all\" error. If this error is thrown, we almost certainly have a bug.\n *\n * Whenever possible, we should use a more specific error so that we can provide more useful information.\n */\nexport class UnexpectedError extends BaseError {\n isBug = IsBug.YES;\n\n constructor(override cause: Error) {\n super(\"GGT_CLI_UNEXPECTED_ERROR\", \"An unexpected error occurred\");\n }\n\n protected body(): string {\n return cleanStack(this.cause.stack ?? this.stack);\n }\n}\n\nexport class ClientError extends BaseError {\n isBug = IsBug.MAYBE;\n\n constructor(readonly payload: Payload<any, any>, override cause: string | Error | readonly GraphQLError[] | CloseEvent | ErrorEvent) {\n super(\"GGT_CLI_CLIENT_ERROR\", \"An error occurred while communicating with Gadget\");\n\n // ErrorEvent and CloseEvent aren't serializable, so we reconstruct them into an object. We discard the `target` property because it's large and not that useful\n if (isErrorEvent(cause)) {\n this.cause = {\n type: cause.type,\n message: cause.message,\n error: serializeError(cause.error),\n } as any;\n } else if (isCloseEvent(cause)) {\n this.cause = {\n type: cause.type,\n code: cause.code,\n reason: cause.reason,\n wasClean: cause.wasClean,\n } as any;\n }\n }\n\n override body(): string {\n if (isGraphQLErrors(this.cause)) {\n if (this.cause.length > 1) {\n let output = \"Gadget responded with multiple errors:\";\n for (const error of uniqBy(this.cause, \"message\")) {\n output += `\\n * ${error.message}`;\n }\n return output;\n } else {\n return dedent`\n Gadget responded with an unexpected error.\n\n ${this.cause[0]?.message}\n `;\n }\n }\n\n if (isCloseEvent(this.cause)) {\n return \"The connection to Gadget closed unexpectedly.\";\n }\n\n if (isErrorEvent(this.cause)) {\n return dedent`\n The connection to Gadget received an unexpected error.\n\n ${this.cause.message}\n `;\n }\n\n if (isError(this.cause)) {\n return dedent`\n An unexpected error occurred.\n\n ${this.cause.message}\n `;\n }\n\n return this.cause;\n }\n\n protected override issueOptions(): newGithubIssueUrl.Options {\n const options = super.issueOptions() as Writable<newGithubIssueUrl.Options>;\n options.body += dedent`\n\n ### GraphQL\n\n #### Query\n \\`\\`\\`graphql\n ${this.payload.query}\n \\`\\`\\`\n `;\n\n // mutations can have large/sensitive payloads, so we don't include them by default\n if (!this.payload.query.trimStart().startsWith(\"mutation\")) {\n options.body += dedent`\n\n #### Variables\n \\`\\`\\`json\n ${JSON.stringify(this.payload.variables, null, 2)}\n \\`\\`\\`\n `;\n }\n\n return options;\n }\n}\n\nexport class YarnNotFoundError extends BaseError {\n isBug = IsBug.NO;\n\n constructor() {\n super(\"GGT_CLI_YARN_NOT_FOUND\", \"Yarn not found\");\n }\n\n protected body(): string {\n return dedent`\n Yarn is required to sync your application.\n\n Please install Yarn by running:\n\n $ npm install --global yarn\n\n For more information, see: https://classic.yarnpkg.com/en/docs/install\n `;\n }\n}\n\nexport class FlagError<T extends { name: string; char?: string }> extends BaseError {\n isBug = IsBug.NO;\n\n constructor(readonly flag: T, readonly description: string) {\n const name = flag.char ? `-${flag.char}, --${flag.name}` : `--${flag.name}`;\n super(\"GGT_CLI_FLAG_ERROR\", `Invalid value provided for the ${name} flag`);\n }\n\n protected body(): string {\n return this.description;\n }\n}\n\nexport class InvalidSyncFileError extends BaseError {\n isBug = IsBug.MAYBE;\n\n constructor(override readonly cause: unknown, readonly sync: Sync, readonly app: string | undefined) {\n super(\"GGT_CLI_INVALID_SYNC_FILE\", \"The .gadget/sync.json file was invalid or not found\");\n }\n\n protected body(): string {\n return dedent`\n We failed to read the Gadget metadata file in this directory:\n\n ${this.sync.dir}\n\n If you're running \\`ggt sync\\` for the first time, we recommend using an empty directory such as:\n\n ~/gadget/${this.app || \"<name of app>\"}\n\n Otherwise, if you're sure you want to sync the contents of \"${\n this.sync.dir\n }\" to Gadget, run \\`ggt sync\\` again with the \\`--force\\` flag:\n\n $ ggt sync ${this.sync.argv.join(\" \")} --force\n\n You will be prompted to either merge your local files with your remote ones or reset your local files to your remote ones.\n `;\n }\n}\n\nfunction isCloseEvent(e: any): e is SetOptional<CloseEvent, \"target\"> {\n return !isNil(e) && isString(e.type) && isNumber(e.code) && isString(e.reason) && isBoolean(e.wasClean);\n}\n\nfunction isErrorEvent(e: any): e is SetOptional<ErrorEvent, \"target\"> {\n return !isNil(e) && isString(e.type) && isString(e.message) && isError(e.error);\n}\n\nfunction isGraphQLErrors(e: any): e is readonly GraphQLError[] {\n return isArray(e) && e.every((e) => !isNil(e) && isString(e.message) && isArray(e.locations ?? []) && isArray(e.path ?? []));\n}\n"]}
|