Skip to content

Commit

Permalink
fix: fix a bug when configurating the same extension multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
philippkuehn committed May 11, 2021
1 parent 1646f6e commit 655c564
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 3 deletions.
4 changes: 3 additions & 1 deletion packages/core/src/Extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,9 @@ export class Extension<Options = any> {
configure(options: Partial<Options> = {}) {
this.options = mergeDeep(this.options, options) as Options

return this
// return a new instance so we can use the same extension
// with different calls of `configure`
return this.extend()
}

extend<ExtendedOptions = Options>(extendedConfig: Partial<ExtensionConfig<ExtendedOptions>> = {}) {
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/Mark.ts
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,9 @@ export class Mark<Options = any> {
configure(options: Partial<Options> = {}) {
this.options = mergeDeep(this.options, options) as Options

return this
// return a new instance so we can use the same extension
// with different calls of `configure`
return this.extend()
}

extend<ExtendedOptions = Options>(extendedConfig: Partial<MarkConfig<ExtendedOptions>> = {}) {
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/Node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,9 @@ export class Node<Options = any> {
configure(options: Partial<Options> = {}) {
this.options = mergeDeep(this.options, options) as Options

return this
// return a new instance so we can use the same extension
// with different calls of `configure`
return this.extend()
}

extend<ExtendedOptions = Options>(extendedConfig: Partial<NodeConfig<ExtendedOptions>> = {}) {
Expand Down
25 changes: 25 additions & 0 deletions tests/cypress/integration/core/extensionOptions.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,29 @@ describe('extension options', () => {
},
})
})

it('should create its own instance on configure', () => {
const extension = Extension
.create({
defaultOptions: {
foo: 1,
},
})

const extension1 = extension.configure({
foo: 2,
})

const extension2 = extension.configure({
foo: 3,
})

expect(extension1.options).to.deep.eq({
foo: 2,
})

expect(extension2.options).to.deep.eq({
foo: 3,
})
})
})

0 comments on commit 655c564

Please sign in to comment.