Skip to content

Commit

Permalink
feat(json-crdt-extensions): 🎸 add ability to specify extension defini…
Browse files Browse the repository at this point in the history
…tion name
  • Loading branch information
streamich committed Mar 4, 2024
1 parent dacef7d commit a39817f
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/json-crdt-extensions/constants.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const enum ExtensionId {
MvValue = 0,
mval = 0,
Peritext = 1,
QuillDelta = 2,
}
4 changes: 4 additions & 0 deletions src/json-crdt-extensions/mval/__tests__/extension.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import {ValueMvExt} from '..';
import {konst} from '../../../json-crdt-patch/builder/Konst';
import {Model} from '../../../json-crdt/model';

test('can specify extension name', () => {
expect(ValueMvExt.name).toBe('mval');
});

test('can create a new multi-value register', () => {
const model = Model.withLogicalClock();
model.ext.register(ValueMvExt);
Expand Down
5 changes: 3 additions & 2 deletions src/json-crdt-extensions/mval/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import type {ArrNode} from '../../json-crdt/nodes/arr/ArrNode';
import type {ExtensionDefinition} from '../../json-crdt';

export const ValueMvExt: ExtensionDefinition<ArrNode, ValueMv, ValueMvApi> = {
id: ExtensionId.MvValue,
id: ExtensionId.mval,
name: 'mval',
new: (value: unknown | ITimestampStruct) =>
ext(
ExtensionId.MvValue,
ExtensionId.mval,
delayed((builder) => builder.jsonArr([value])),
),
Node: ValueMv,
Expand Down
2 changes: 1 addition & 1 deletion src/json-crdt/extensions/Extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class Extensions implements Printable {
this.constructor.name +
printTree(
tab,
keys.map((k) => (tab) => `${k}: ${this.ext[k].Node.name}`),
keys.map((k) => (tab) => `${k}: ${this.ext[k].name}`),
)
);
}
Expand Down
1 change: 1 addition & 0 deletions src/json-crdt/extensions/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export interface ExtensionDefinition<
EApi extends ExtensionApi<ENode> = ExtensionApi<ENode>,
> {
id: number;
name: string;
new: (...args: any[]) => NodeBuilder;
Node: new (data: Node) => ENode;
Api: new (node: ENode, api: ModelApi) => EApi;
Expand Down

0 comments on commit a39817f

Please sign in to comment.