Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/protons/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
},
"dependencies": {
"meow": "^14.1.0",
"protobufjs-cli": "^2.6.1",
"protobufjs-cli": "^2.7.0",
"protons-runtime": "^8.0.0"
},
"devDependencies": {
Expand Down
11 changes: 8 additions & 3 deletions packages/protons/src/fields/array-field.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,20 @@ export class ArrayField extends Field {
if (parent.def.edition === 'proto2') {
this.packed = false

// check user overrides for field encoding
// check only old-school user overrides for field encoding
if (usePackedEncoding(def.options, parent.def.options)) {
this.packed = true
}
} else {
// the default from protobuf3 onwards
// the default from editions onwards
this.packed = supportsPacked

// check user overrides for field encoding
// support older `packed` option in proto3 only
if (parent.def.edition === 'proto3' && def.options?.packed === false) {
this.packed = false
}

// check only new-school user overrides for field encoding
if (useExpandedEncoding(def.options, parent.def.options)) {
this.packed = false
}
Expand Down
2 changes: 1 addition & 1 deletion packages/protons/src/fields/field.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export class Field implements MessageField {
console.info(`[WARN] ${message}`)
}
}
} else {
} else if (parent.def.edition != null && parent.def.edition !== 'proto3') {
if (def.options?.packed != null) {
const message = `field "${name}" has the packed=${def.options.packed} option, this is unsupported in edition="${parent.def.edition}". Please use features.repeated_field_encoding=${def.options?.packed === true ? 'PACKED' : 'EXPANDED'} instead - see https://protobuf.dev/editions/features/#repeated_field_encoding`

Expand Down
1 change: 1 addition & 0 deletions packages/protons/src/types/enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type { Parent, Type, TypeCodec } from './index.ts'
import type { Field } from '../fields/field.ts'

export interface EnumDef {
edition: string
values: Record<string, number>
}

Expand Down
2 changes: 1 addition & 1 deletion packages/protons/src/types/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export class Message implements Type {
const mapEntryType = `${this.pbType}$${fieldName}Entry`

def.nested[mapEntryType] = {
edition: def.edition,
edition: def.edition || 'proto3',
fields: {
key: {
type: fieldDef.keyType,
Expand Down
1 change: 1 addition & 0 deletions packages/protons/src/types/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export class Module {

for (const [name, def] of Object.entries(defs)) {
let type: Message | Enum
def.edition ??= 'proto3'

if (isEnumDef(def)) {
type = new Enum(name, {
Expand Down
Loading