@bufbuild/protoplugin 2.0.0-alpha.4 → 2.0.0-beta.1

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.
@@ -1,13 +1,74 @@
1
1
  import type { Target } from "./target.js";
2
2
  import type { RewriteImports } from "./import-path.js";
3
- export interface ParsedParameter {
3
+ /**
4
+ * Standard plugin options that every ECMAScript plugin supports.
5
+ */
6
+ export interface EcmaScriptPluginOptions {
7
+ /**
8
+ * Controls whether the plugin generates JavaScript, TypeScript,
9
+ * or TypeScript declaration files.
10
+ *
11
+ * The default is ["js", "dts].
12
+ */
4
13
  targets: Target[];
14
+ /**
15
+ * Add an extension to every import, for example ".js" or ".ts".
16
+ *
17
+ * The default is "".
18
+ */
19
+ importExtension: string;
20
+ /**
21
+ * Generate `import` statements or `require()` calls.
22
+ *
23
+ * The default is "module".
24
+ */
25
+ jsImportStyle: "module" | "legacy_commonjs";
26
+ /**
27
+ * Generate an annotation at the top of each file to skip type checks:
28
+ * `// @ts-nocheck`.
29
+ *
30
+ * The default is false.
31
+ */
5
32
  tsNocheck: boolean;
6
- bootstrapWkt: boolean;
33
+ /**
34
+ * Prune empty files from the output.
35
+ *
36
+ * The default is false.
37
+ */
7
38
  keepEmptyFiles: boolean;
39
+ /**
40
+ * @private
41
+ */
42
+ bootstrapWkt: boolean;
43
+ /**
44
+ * @private
45
+ */
8
46
  rewriteImports: RewriteImports;
9
- importExtension: string;
10
- jsImportStyle: "module" | "legacy_commonjs";
11
- sanitizedParameter: string;
12
47
  }
13
- export declare function parseParameter(parameter: string, parseExtraOption: ((key: string, value: string) => void) | undefined): ParsedParameter;
48
+ export interface ParsedParameter<T> {
49
+ parsed: T & EcmaScriptPluginOptions;
50
+ sanitized: string;
51
+ }
52
+ /**
53
+ * Raw options to parse.
54
+ *
55
+ * For example, if a plugin is run with the options foo=123,bar,baz=a,baz=b
56
+ * the raw options are:
57
+ *
58
+ * ```ts
59
+ * [
60
+ * { key: "foo", value: "123" },
61
+ * { key: "bar", value: "" },
62
+ * { key: "baz", value: "a" },
63
+ * { key: "baz", value: "b" },
64
+ * ]
65
+ * ```
66
+ *
67
+ * If your plugin does not recognize an option, it must throw an Error in
68
+ * parseOptions.
69
+ */
70
+ export type RawPluginOptions = {
71
+ key: string;
72
+ value: string;
73
+ }[];
74
+ export declare function parseParameter<T extends object>(parameter: string, parseExtraOptions: ((rawOptions: RawPluginOptions) => T) | undefined): ParsedParameter<T>;
@@ -12,7 +12,7 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  import { PluginOptionError } from "./error.js";
15
- export function parseParameter(parameter, parseExtraOption) {
15
+ export function parseParameter(parameter, parseExtraOptions) {
16
16
  let targets = ["js", "dts"];
17
17
  let tsNocheck = false;
18
18
  let bootstrapWkt = false;
@@ -20,6 +20,8 @@ export function parseParameter(parameter, parseExtraOption) {
20
20
  const rewriteImports = [];
21
21
  let importExtension = "";
22
22
  let jsImportStyle = "module";
23
+ const extraParameters = [];
24
+ const extraParametersRaw = [];
23
25
  const rawParameters = [];
24
26
  for (const { key, value, raw } of splitParameter(parameter)) {
25
27
  // Whether this key/value plugin parameter pair should be
@@ -115,23 +117,19 @@ export function parseParameter(parameter, parseExtraOption) {
115
117
  break;
116
118
  }
117
119
  default:
118
- if (parseExtraOption === undefined) {
120
+ if (parseExtraOptions === undefined) {
119
121
  throw new PluginOptionError(raw);
120
122
  }
121
- try {
122
- parseExtraOption(key, value);
123
- }
124
- catch (e) {
125
- throw new PluginOptionError(raw, e);
126
- }
123
+ extraParameters.push({ key, value });
124
+ extraParametersRaw.push(raw);
127
125
  break;
128
126
  }
129
127
  if (!sanitize) {
130
128
  rawParameters.push(raw);
131
129
  }
132
130
  }
133
- const sanitizedParameter = rawParameters.join(",");
134
- return {
131
+ const sanitizedParameters = rawParameters.join(",");
132
+ const ecmaScriptPluginOptions = {
135
133
  targets,
136
134
  tsNocheck,
137
135
  bootstrapWkt,
@@ -139,8 +137,22 @@ export function parseParameter(parameter, parseExtraOption) {
139
137
  importExtension,
140
138
  jsImportStyle,
141
139
  keepEmptyFiles,
142
- sanitizedParameter,
143
140
  };
141
+ if (parseExtraOptions === undefined || extraParameters.length === 0) {
142
+ return {
143
+ parsed: ecmaScriptPluginOptions,
144
+ sanitized: sanitizedParameters,
145
+ };
146
+ }
147
+ try {
148
+ return {
149
+ parsed: Object.assign(ecmaScriptPluginOptions, parseExtraOptions(extraParameters)),
150
+ sanitized: sanitizedParameters,
151
+ };
152
+ }
153
+ catch (err) {
154
+ throw new PluginOptionError(extraParametersRaw.join(","), err);
155
+ }
144
156
  }
145
157
  function splitParameter(parameter) {
146
158
  if (parameter.length == 0) {
@@ -3,7 +3,7 @@ import type { ImportSymbol } from "./import-symbol.js";
3
3
  /**
4
4
  * All types that can be passed to GeneratedFile.print()
5
5
  */
6
- export type Printable = string | number | boolean | bigint | Uint8Array | ImportSymbol | ExportStatement | JSDocBlock | LiteralString | LiteralProtoInt64 | DescImport | ShapeImport | Printable[];
6
+ export type Printable = string | number | boolean | bigint | Uint8Array | ImportSymbol | ExportStatement | JSDocBlock | LiteralString | LiteralProtoInt64 | DescImport | ShapeImport | JsonTypeImport | Printable[];
7
7
  export type ExportStatement = {
8
8
  kind: "es_export_stmt";
9
9
  name: string;
@@ -28,6 +28,10 @@ export type ShapeImport = {
28
28
  readonly kind: "es_shape_ref";
29
29
  desc: DescMessage | DescEnum;
30
30
  };
31
+ export type JsonTypeImport = {
32
+ readonly kind: "es_json_type_ref";
33
+ desc: DescMessage | DescEnum;
34
+ };
31
35
  export type JSDocBlock = {
32
36
  readonly kind: "es_jsdoc";
33
37
  text: string;
@@ -13,7 +13,7 @@
13
13
  // limitations under the License.
14
14
  import { isPluginOptionError, reasonToString } from "./error.js";
15
15
  import { fromBinary, toBinary } from "@bufbuild/protobuf";
16
- import { CodeGeneratorRequestDesc, CodeGeneratorResponseDesc, } from "@bufbuild/protobuf/wkt";
16
+ import { CodeGeneratorRequestSchema, CodeGeneratorResponseSchema, } from "@bufbuild/protobuf/wkt";
17
17
  /**
18
18
  * Run a plugin with Node.js.
19
19
  *
@@ -38,9 +38,9 @@ export function runNodeJs(plugin) {
38
38
  }
39
39
  readBytes(process.stdin)
40
40
  .then((data) => {
41
- const req = fromBinary(CodeGeneratorRequestDesc, data);
41
+ const req = fromBinary(CodeGeneratorRequestSchema, data);
42
42
  const res = plugin.run(req);
43
- return writeBytes(process.stdout, toBinary(CodeGeneratorResponseDesc, res));
43
+ return writeBytes(process.stdout, toBinary(CodeGeneratorResponseSchema, res));
44
44
  })
45
45
  .then(() => process.exit(0))
46
46
  .catch((reason) => {
@@ -3,12 +3,12 @@ import type { CodeGeneratorRequest } from "@bufbuild/protobuf/wkt";
3
3
  import { Edition } from "@bufbuild/protobuf/wkt";
4
4
  import type { FileInfo, GeneratedFile } from "./generated-file.js";
5
5
  import type { Target } from "./target.js";
6
- import type { ParsedParameter } from "./parameter.js";
6
+ import type { EcmaScriptPluginOptions, ParsedParameter } from "./parameter.js";
7
7
  /**
8
8
  * Schema describes the files and types that the plugin is requested to
9
9
  * generate.
10
10
  */
11
- export interface Schema {
11
+ export interface Schema<Options extends object = object> {
12
12
  /**
13
13
  * The files we are asked to generate.
14
14
  */
@@ -21,6 +21,11 @@ export interface Schema {
21
21
  * The plugin option `target`. A code generator should support all targets.
22
22
  */
23
23
  readonly targets: readonly Target[];
24
+ /**
25
+ * Parsed plugin options. They include the standard options for all
26
+ * plugins, and options parsed by your plugin.
27
+ */
28
+ readonly options: Options & EcmaScriptPluginOptions;
24
29
  /**
25
30
  * Generate a new file with the given name.
26
31
  */
@@ -35,9 +40,9 @@ export interface Schema {
35
40
  */
36
41
  readonly proto: CodeGeneratorRequest;
37
42
  }
38
- interface SchemaController extends Schema {
43
+ interface SchemaController<Options extends object> extends Schema<Options> {
39
44
  getFileInfo: () => FileInfo[];
40
45
  prepareGenerate(target: Target): void;
41
46
  }
42
- export declare function createSchema(request: CodeGeneratorRequest, parameter: ParsedParameter, pluginName: string, pluginVersion: string, minimumEdition: Edition, maximumEdition: Edition): SchemaController;
47
+ export declare function createSchema<T extends object>(request: CodeGeneratorRequest, parameter: ParsedParameter<T>, pluginName: string, pluginVersion: string, minimumEdition: Edition, maximumEdition: Edition): SchemaController<T>;
43
48
  export {};
@@ -12,42 +12,44 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  import { create, createFileRegistry } from "@bufbuild/protobuf";
15
- import { Edition, FileDescriptorSetDesc } from "@bufbuild/protobuf/wkt";
15
+ import { Edition, FileDescriptorSetSchema } from "@bufbuild/protobuf/wkt";
16
16
  import { nestedTypes } from "@bufbuild/protobuf/reflect";
17
17
  import { createGeneratedFile } from "./generated-file.js";
18
18
  import { createImportSymbol } from "./import-symbol.js";
19
19
  import { deriveImportPath, rewriteImportPath } from "./import-path.js";
20
20
  import { makeFilePreamble } from "./file-preamble.js";
21
- import { localDescName, localShapeName, generateFilePath } from "./names.js";
21
+ import { generatedDescName, generatedShapeName, generateFilePath, generatedJsonTypeName, } from "./names.js";
22
22
  import { createRuntimeImports } from "./runtime-imports.js";
23
23
  export function createSchema(request, parameter, pluginName, pluginVersion, minimumEdition, maximumEdition) {
24
24
  const { allFiles, filesToGenerate } = getFilesToGenerate(request, minimumEdition, maximumEdition);
25
25
  let target;
26
26
  const generatedFiles = [];
27
- const runtime = createRuntimeImports(parameter.bootstrapWkt);
28
- const resolveDescImport = (desc, typeOnly) => createImportSymbol(localDescName(desc), generateFilePath(desc.kind == "file" ? desc : desc.file, parameter.bootstrapWkt, filesToGenerate), typeOnly);
29
- const resolveShapeImport = (desc) => createImportSymbol(localShapeName(desc), generateFilePath(desc.file, parameter.bootstrapWkt, filesToGenerate), true);
30
- const createPreamble = (descFile) => makeFilePreamble(descFile, pluginName, pluginVersion, parameter.sanitizedParameter, parameter.tsNocheck);
31
- const rewriteImport = (importPath) => rewriteImportPath(importPath, parameter.rewriteImports, parameter.importExtension);
27
+ const runtime = createRuntimeImports(parameter.parsed.bootstrapWkt);
28
+ const resolveDescImport = (desc, typeOnly) => createImportSymbol(generatedDescName(desc), generateFilePath(desc.kind == "file" ? desc : desc.file, parameter.parsed.bootstrapWkt, filesToGenerate), typeOnly);
29
+ const resolveShapeImport = (desc) => createImportSymbol(generatedShapeName(desc), generateFilePath(desc.file, parameter.parsed.bootstrapWkt, filesToGenerate), true);
30
+ const resolveJsonImport = (desc) => createImportSymbol(generatedJsonTypeName(desc), generateFilePath(desc.file, parameter.parsed.bootstrapWkt, filesToGenerate), true);
31
+ const createPreamble = (descFile) => makeFilePreamble(descFile, pluginName, pluginVersion, parameter.sanitized, parameter.parsed.tsNocheck);
32
+ const rewriteImport = (importPath) => rewriteImportPath(importPath, parameter.parsed.rewriteImports, parameter.parsed.importExtension);
32
33
  return {
33
- targets: parameter.targets,
34
+ targets: parameter.parsed.targets,
34
35
  proto: request,
35
36
  files: filesToGenerate,
36
37
  allFiles: allFiles,
38
+ options: parameter.parsed,
37
39
  typesInFile: nestedTypes,
38
40
  generateFile(name) {
39
41
  if (target === undefined) {
40
42
  throw new Error("prepareGenerate() must be called before generateFile()");
41
43
  }
42
- const genFile = createGeneratedFile(name, deriveImportPath(name), target === "js" ? parameter.jsImportStyle : "module", // ts and dts always use import/export, only js may use commonjs
43
- rewriteImport, resolveDescImport, resolveShapeImport, createPreamble, runtime);
44
+ const genFile = createGeneratedFile(name, deriveImportPath(name), target === "js" ? parameter.parsed.jsImportStyle : "module", // ts and dts always use import/export, only js may use commonjs
45
+ rewriteImport, resolveDescImport, resolveShapeImport, resolveJsonImport, createPreamble, runtime);
44
46
  generatedFiles.push(genFile);
45
47
  return genFile;
46
48
  },
47
49
  getFileInfo() {
48
50
  return generatedFiles
49
51
  .map((f) => f.getFileInfo())
50
- .filter((fi) => parameter.keepEmptyFiles || fi.content.length > 0);
52
+ .filter((fi) => parameter.parsed.keepEmptyFiles || fi.content.length > 0);
51
53
  },
52
54
  prepareGenerate(newTarget) {
53
55
  target = newTarget;
@@ -96,7 +98,7 @@ function getFilesToGenerate(request, minimumEdition, maximumEdition) {
96
98
  const sourceFile = request.sourceFileDescriptors.find((s) => s.name == protoFile.name);
97
99
  return sourceFile !== null && sourceFile !== void 0 ? sourceFile : protoFile;
98
100
  });
99
- const registry = createFileRegistry(create(FileDescriptorSetDesc, {
101
+ const registry = createFileRegistry(create(FileDescriptorSetSchema, {
100
102
  file: allProtoWithSourceOptions,
101
103
  }));
102
104
  const allFiles = [];
@@ -13,13 +13,13 @@
13
13
  // limitations under the License.
14
14
  import { isFieldSet, ScalarType, } from "@bufbuild/protobuf";
15
15
  import { protoCamelCase, reflect } from "@bufbuild/protobuf/reflect";
16
- import { Edition, FieldDescriptorProto_Label, FieldDescriptorProto_Type, FieldDescriptorProtoDesc, FieldOptions_JSType, FieldOptionsDesc, FeatureSetDesc, SourceCodeInfo_LocationDesc, FileDescriptorProtoDesc, DescriptorProtoDesc, EnumDescriptorProtoDesc, ServiceDescriptorProtoDesc, } from "@bufbuild/protobuf/wkt";
16
+ import { Edition, FieldDescriptorProto_Label, FieldDescriptorProto_Type, FieldDescriptorProtoSchema, FieldOptions_JSType, FieldOptionsSchema, FeatureSetSchema, SourceCodeInfo_LocationSchema, FileDescriptorProtoSchema, DescriptorProtoSchema, EnumDescriptorProtoSchema, ServiceDescriptorProtoSchema, } from "@bufbuild/protobuf/wkt";
17
17
  /**
18
18
  * Get comments on the package element in the protobuf source.
19
19
  */
20
20
  export function getPackageComments(desc) {
21
21
  return findComments(desc.proto.sourceCodeInfo, [
22
- FileDescriptorProtoDesc.field.package.number,
22
+ FileDescriptorProtoSchema.field.package.number,
23
23
  ]);
24
24
  }
25
25
  /**
@@ -27,7 +27,7 @@ export function getPackageComments(desc) {
27
27
  */
28
28
  export function getSyntaxComments(desc) {
29
29
  return findComments(desc.proto.sourceCodeInfo, [
30
- FileDescriptorProtoDesc.field.syntax.number,
30
+ FileDescriptorProtoSchema.field.syntax.number,
31
31
  ]);
32
32
  }
33
33
  /**
@@ -41,11 +41,11 @@ export function getComments(desc) {
41
41
  path = desc.parent
42
42
  ? [
43
43
  ...getComments(desc.parent).sourcePath,
44
- DescriptorProtoDesc.field.enumType.number,
44
+ DescriptorProtoSchema.field.enumType.number,
45
45
  desc.parent.proto.enumType.indexOf(desc.proto),
46
46
  ]
47
47
  : [
48
- FileDescriptorProtoDesc.field.enumType.number,
48
+ FileDescriptorProtoSchema.field.enumType.number,
49
49
  desc.file.proto.enumType.indexOf(desc.proto),
50
50
  ];
51
51
  file = desc.file;
@@ -53,7 +53,7 @@ export function getComments(desc) {
53
53
  case "oneof":
54
54
  path = [
55
55
  ...getComments(desc.parent).sourcePath,
56
- DescriptorProtoDesc.field.oneofDecl.number,
56
+ DescriptorProtoSchema.field.oneofDecl.number,
57
57
  desc.parent.proto.oneofDecl.indexOf(desc.proto),
58
58
  ];
59
59
  file = desc.parent.file;
@@ -62,11 +62,11 @@ export function getComments(desc) {
62
62
  path = desc.parent
63
63
  ? [
64
64
  ...getComments(desc.parent).sourcePath,
65
- DescriptorProtoDesc.field.nestedType.number,
65
+ DescriptorProtoSchema.field.nestedType.number,
66
66
  desc.parent.proto.nestedType.indexOf(desc.proto),
67
67
  ]
68
68
  : [
69
- FileDescriptorProtoDesc.field.messageType.number,
69
+ FileDescriptorProtoSchema.field.messageType.number,
70
70
  desc.file.proto.messageType.indexOf(desc.proto),
71
71
  ];
72
72
  file = desc.file;
@@ -74,7 +74,7 @@ export function getComments(desc) {
74
74
  case "enum_value":
75
75
  path = [
76
76
  ...getComments(desc.parent).sourcePath,
77
- EnumDescriptorProtoDesc.field.value.number,
77
+ EnumDescriptorProtoSchema.field.value.number,
78
78
  desc.parent.proto.value.indexOf(desc.proto),
79
79
  ];
80
80
  file = desc.parent.file;
@@ -82,7 +82,7 @@ export function getComments(desc) {
82
82
  case "field":
83
83
  path = [
84
84
  ...getComments(desc.parent).sourcePath,
85
- DescriptorProtoDesc.field.field.number,
85
+ DescriptorProtoSchema.field.field.number,
86
86
  desc.parent.proto.field.indexOf(desc.proto),
87
87
  ];
88
88
  file = desc.parent.file;
@@ -91,18 +91,18 @@ export function getComments(desc) {
91
91
  path = desc.parent
92
92
  ? [
93
93
  ...getComments(desc.parent).sourcePath,
94
- DescriptorProtoDesc.field.extension.number,
94
+ DescriptorProtoSchema.field.extension.number,
95
95
  desc.parent.proto.extension.indexOf(desc.proto),
96
96
  ]
97
97
  : [
98
- FileDescriptorProtoDesc.field.extension.number,
98
+ FileDescriptorProtoSchema.field.extension.number,
99
99
  desc.file.proto.extension.indexOf(desc.proto),
100
100
  ];
101
101
  file = desc.file;
102
102
  break;
103
103
  case "service":
104
104
  path = [
105
- FileDescriptorProtoDesc.field.service.number,
105
+ FileDescriptorProtoSchema.field.service.number,
106
106
  desc.file.proto.service.indexOf(desc.proto),
107
107
  ];
108
108
  file = desc.file;
@@ -110,7 +110,7 @@ export function getComments(desc) {
110
110
  case "rpc":
111
111
  path = [
112
112
  ...getComments(desc.parent).sourcePath,
113
- ServiceDescriptorProtoDesc.field.method.number,
113
+ ServiceDescriptorProtoSchema.field.method.number,
114
114
  desc.parent.proto.method.indexOf(desc.proto),
115
115
  ];
116
116
  file = desc.parent.file;
@@ -127,7 +127,7 @@ export function getFeatureOptionStrings(desc) {
127
127
  const strings = [];
128
128
  const features = (_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.features;
129
129
  if (features !== undefined) {
130
- const r = reflect(FeatureSetDesc, features);
130
+ const r = reflect(FeatureSetSchema, features);
131
131
  for (const f of r.fields) {
132
132
  if (f.fieldKind != "enum" || !r.isSet(f)) {
133
133
  continue;
@@ -190,10 +190,10 @@ export function getDeclarationString(desc) {
190
190
  const options = [];
191
191
  const protoOptions = desc.proto.options;
192
192
  if (protoOptions !== undefined &&
193
- isFieldSet(protoOptions, FieldOptionsDesc.field.packed)) {
193
+ isFieldSet(protoOptions, FieldOptionsSchema.field.packed)) {
194
194
  options.push(`packed = ${protoOptions.packed.toString()}`);
195
195
  }
196
- if (isFieldSet(desc.proto, FieldDescriptorProtoDesc.field.defaultValue)) {
196
+ if (isFieldSet(desc.proto, FieldDescriptorProtoSchema.field.defaultValue)) {
197
197
  let defaultValue = desc.proto.defaultValue;
198
198
  if (desc.proto.type == FieldDescriptorProto_Type.BYTES ||
199
199
  desc.proto.type == FieldDescriptorProto_Type.STRING) {
@@ -205,11 +205,11 @@ export function getDeclarationString(desc) {
205
205
  options.push(`json_name = "${desc.jsonName}"`);
206
206
  }
207
207
  if (protoOptions !== undefined &&
208
- isFieldSet(protoOptions, FieldOptionsDesc.field.jstype)) {
208
+ isFieldSet(protoOptions, FieldOptionsSchema.field.jstype)) {
209
209
  options.push(`jstype = ${FieldOptions_JSType[protoOptions.jstype]}`);
210
210
  }
211
211
  if (protoOptions !== undefined &&
212
- isFieldSet(protoOptions, FieldOptionsDesc.field.deprecated)) {
212
+ isFieldSet(protoOptions, FieldOptionsSchema.field.deprecated)) {
213
213
  options.push(`deprecated = true`);
214
214
  }
215
215
  options.push(...getFeatureOptionStrings(desc));
@@ -262,10 +262,10 @@ function findComments(sourceCodeInfo, sourcePath) {
262
262
  }
263
263
  return {
264
264
  leadingDetached: location.leadingDetachedComments,
265
- leading: isFieldSet(location, SourceCodeInfo_LocationDesc.field.leadingComments)
265
+ leading: isFieldSet(location, SourceCodeInfo_LocationSchema.field.leadingComments)
266
266
  ? location.leadingComments
267
267
  : undefined,
268
- trailing: isFieldSet(location, SourceCodeInfo_LocationDesc.field.trailingComments)
268
+ trailing: isFieldSet(location, SourceCodeInfo_LocationSchema.field.trailingComments)
269
269
  ? location.trailingComments
270
270
  : undefined,
271
271
  sourcePath,
@@ -20,7 +20,7 @@ const defaultOptions = {
20
20
  strict: false,
21
21
  // modules
22
22
  module: ts.ModuleKind.ES2020,
23
- moduleResolution: ts.ModuleResolutionKind.NodeJs,
23
+ moduleResolution: ts.ModuleResolutionKind.Node10,
24
24
  noResolve: true,
25
25
  resolveJsonModule: false,
26
26
  // emit
@@ -33,7 +33,7 @@ const defaultOptions = {
33
33
  checkJs: false,
34
34
  // Language and Environment
35
35
  lib: [],
36
- moduleDetection: "force",
36
+ moduleDetection: ts.ModuleDetectionKind.Force,
37
37
  target: ts.ScriptTarget.ES2017,
38
38
  // Completeness
39
39
  skipLibCheck: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bufbuild/protoplugin",
3
- "version": "2.0.0-alpha.4",
3
+ "version": "2.0.0-beta.1",
4
4
  "license": "(Apache-2.0 AND BSD-3-Clause)",
5
5
  "description": "Helps to create your own Protocol Buffers code generators.",
6
6
  "repository": {
@@ -25,9 +25,9 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@bufbuild/protobuf": "2.0.0-alpha.4",
29
- "@typescript/vfs": "^1.4.0",
30
- "typescript": "4.5.2"
28
+ "@bufbuild/protobuf": "2.0.0-beta.1",
29
+ "@typescript/vfs": "^1.5.2",
30
+ "typescript": "5.4.5"
31
31
  },
32
32
  "files": [
33
33
  "dist/**"