Skip to content

refactor: remove const enum #9243

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
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
14 changes: 6 additions & 8 deletions packages/reactivity/__tests__/computed.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import {
isReadonly,
DebuggerEvent,
toRaw,
TrackOpTypes,
ITERATE_KEY,
TriggerOpTypes
ITERATE_KEY
} from '../src'

describe('reactivity/computed', () => {
Expand Down Expand Up @@ -236,19 +234,19 @@ describe('reactivity/computed', () => {
{
effect: c.effect,
target: toRaw(obj),
type: TrackOpTypes.GET,
type: 'get',
key: 'foo'
},
{
effect: c.effect,
target: toRaw(obj),
type: TrackOpTypes.HAS,
type: 'has',
key: 'bar'
},
{
effect: c.effect,
target: toRaw(obj),
type: TrackOpTypes.ITERATE,
type: 'iterate',
key: ITERATE_KEY
}
])
Expand All @@ -271,7 +269,7 @@ describe('reactivity/computed', () => {
expect(events[0]).toEqual({
effect: c.effect,
target: toRaw(obj),
type: TriggerOpTypes.SET,
type: 'set',
key: 'foo',
oldValue: 1,
newValue: 2
Expand All @@ -283,7 +281,7 @@ describe('reactivity/computed', () => {
expect(events[1]).toEqual({
effect: c.effect,
target: toRaw(obj),
type: TriggerOpTypes.DELETE,
type: 'delete',
key: 'foo',
oldValue: 2
})
Expand Down
12 changes: 5 additions & 7 deletions packages/reactivity/__tests__/effect.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import {
effect,
stop,
toRaw,
TrackOpTypes,
TriggerOpTypes,
DebuggerEvent,
markRaw,
shallowReactive,
Expand Down Expand Up @@ -732,19 +730,19 @@ describe('reactivity/effect', () => {
{
effect: runner.effect,
target: toRaw(obj),
type: TrackOpTypes.GET,
type: 'get',
key: 'foo'
},
{
effect: runner.effect,
target: toRaw(obj),
type: TrackOpTypes.HAS,
type: 'has',
key: 'bar'
},
{
effect: runner.effect,
target: toRaw(obj),
type: TrackOpTypes.ITERATE,
type: 'iterate',
key: ITERATE_KEY
}
])
Expand All @@ -770,7 +768,7 @@ describe('reactivity/effect', () => {
expect(events[0]).toEqual({
effect: runner.effect,
target: toRaw(obj),
type: TriggerOpTypes.SET,
type: 'set',
key: 'foo',
oldValue: 1,
newValue: 2
Expand All @@ -782,7 +780,7 @@ describe('reactivity/effect', () => {
expect(events[1]).toEqual({
effect: runner.effect,
target: toRaw(obj),
type: TriggerOpTypes.DELETE,
type: 'delete',
key: 'foo',
oldValue: 2
})
Expand Down
30 changes: 12 additions & 18 deletions packages/reactivity/src/baseHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import {
reactive,
readonly,
toRaw,
ReactiveFlags,
Target,
readonlyMap,
reactiveMap,
Expand All @@ -11,7 +10,6 @@ import {
isReadonly,
isShallow
} from './reactive'
import { TrackOpTypes, TriggerOpTypes } from './operations'
import {
track,
trigger,
Expand Down Expand Up @@ -54,7 +52,7 @@ function createArrayInstrumentations() {
instrumentations[key] = function (this: unknown[], ...args: unknown[]) {
const arr = toRaw(this) as any
for (let i = 0, l = this.length; i < l; i++) {
track(arr, TrackOpTypes.GET, i + '')
track(arr, 'get', i + '')
}
// we run the method using the original args first (which may be reactive)
const res = arr[key](...args)
Expand All @@ -81,7 +79,7 @@ function createArrayInstrumentations() {

function hasOwnProperty(this: object, key: string) {
const obj = toRaw(this)
track(obj, TrackOpTypes.HAS, key)
track(obj, 'has', key)
return obj.hasOwnProperty(key)
}

Expand All @@ -94,14 +92,14 @@ class BaseReactiveHandler implements ProxyHandler<Target> {
get(target: Target, key: string | symbol, receiver: object) {
const isReadonly = this._isReadonly,
shallow = this._shallow
if (key === ReactiveFlags.IS_REACTIVE) {
if (key === '__v_isReactive') {
return !isReadonly
} else if (key === ReactiveFlags.IS_READONLY) {
} else if (key === '__v_isReadonly') {
return isReadonly
} else if (key === ReactiveFlags.IS_SHALLOW) {
} else if (key === '__v_isShallow') {
return shallow
} else if (
key === ReactiveFlags.RAW &&
key === '__v_raw' &&
receiver ===
(isReadonly
? shallow
Expand Down Expand Up @@ -133,7 +131,7 @@ class BaseReactiveHandler implements ProxyHandler<Target> {
}

if (!isReadonly) {
track(target, TrackOpTypes.GET, key)
track(target, 'get', key)
}

if (shallow) {
Expand Down Expand Up @@ -192,9 +190,9 @@ class MutableReactiveHandler extends BaseReactiveHandler {
// don't trigger if target is something up in the prototype chain of original
if (target === toRaw(receiver)) {
if (!hadKey) {
trigger(target, TriggerOpTypes.ADD, key, value)
trigger(target, 'add', key, value)
} else if (hasChanged(value, oldValue)) {
trigger(target, TriggerOpTypes.SET, key, value, oldValue)
trigger(target, 'set', key, value, oldValue)
}
}
return result
Expand All @@ -205,24 +203,20 @@ class MutableReactiveHandler extends BaseReactiveHandler {
const oldValue = (target as any)[key]
const result = Reflect.deleteProperty(target, key)
if (result && hadKey) {
trigger(target, TriggerOpTypes.DELETE, key, undefined, oldValue)
trigger(target, 'delete', key, undefined, oldValue)
}
return result
}

has(target: object, key: string | symbol): boolean {
const result = Reflect.has(target, key)
if (!isSymbol(key) || !builtInSymbols.has(key)) {
track(target, TrackOpTypes.HAS, key)
track(target, 'has', key)
}
return result
}
ownKeys(target: object): (string | symbol)[] {
track(
target,
TrackOpTypes.ITERATE,
isArray(target) ? 'length' : ITERATE_KEY
)
track(target, 'iterate', isArray(target) ? 'length' : ITERATE_KEY)
return Reflect.ownKeys(target)
}
}
Expand Down
68 changes: 32 additions & 36 deletions packages/reactivity/src/collectionHandlers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { toRaw, ReactiveFlags, toReactive, toReadonly } from './reactive'
import { toRaw, toReactive, toReadonly } from './reactive'
import { track, trigger, ITERATE_KEY, MAP_KEY_ITERATE_KEY } from './effect'
import { TrackOpTypes, TriggerOpTypes } from './operations'
import { TriggerOpTypesUnion } from './operations'
import { capitalize, hasOwn, hasChanged, toRawType, isMap } from '@vue/shared'

export type CollectionTypes = IterableCollections | WeakCollections
Expand All @@ -23,14 +23,14 @@ function get(
) {
// #1772: readonly(reactive(Map)) should return readonly + reactive version
// of the value
target = (target as any)[ReactiveFlags.RAW]
target = (target as any).__v_raw
const rawTarget = toRaw(target)
const rawKey = toRaw(key)
if (!isReadonly) {
if (hasChanged(key, rawKey)) {
track(rawTarget, TrackOpTypes.GET, key)
track(rawTarget, 'get', key)
}
track(rawTarget, TrackOpTypes.GET, rawKey)
track(rawTarget, 'get', rawKey)
}
const { has } = getProto(rawTarget)
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive
Expand All @@ -46,23 +46,23 @@ function get(
}

function has(this: CollectionTypes, key: unknown, isReadonly = false): boolean {
const target = (this as any)[ReactiveFlags.RAW]
const target = (this as any).__v_raw
const rawTarget = toRaw(target)
const rawKey = toRaw(key)
if (!isReadonly) {
if (hasChanged(key, rawKey)) {
track(rawTarget, TrackOpTypes.HAS, key)
track(rawTarget, 'has', key)
}
track(rawTarget, TrackOpTypes.HAS, rawKey)
track(rawTarget, 'has', rawKey)
}
return key === rawKey
? target.has(key)
: target.has(key) || target.has(rawKey)
}

function size(target: IterableCollections, isReadonly = false) {
target = (target as any)[ReactiveFlags.RAW]
!isReadonly && track(toRaw(target), TrackOpTypes.ITERATE, ITERATE_KEY)
target = (target as any).__v_raw
!isReadonly && track(toRaw(target), 'iterate', ITERATE_KEY)
return Reflect.get(target, 'size', target)
}

Expand All @@ -73,7 +73,7 @@ function add(this: SetTypes, value: unknown) {
const hadKey = proto.has.call(target, value)
if (!hadKey) {
target.add(value)
trigger(target, TriggerOpTypes.ADD, value, value)
trigger(target, 'add', value, value)
}
return this
}
Expand All @@ -94,9 +94,9 @@ function set(this: MapTypes, key: unknown, value: unknown) {
const oldValue = get.call(target, key)
target.set(key, value)
if (!hadKey) {
trigger(target, TriggerOpTypes.ADD, key, value)
trigger(target, 'add', key, value)
} else if (hasChanged(value, oldValue)) {
trigger(target, TriggerOpTypes.SET, key, value, oldValue)
trigger(target, 'set', key, value, oldValue)
}
return this
}
Expand All @@ -116,7 +116,7 @@ function deleteEntry(this: CollectionTypes, key: unknown) {
// forward the operation before queueing reactions
const result = target.delete(key)
if (hadKey) {
trigger(target, TriggerOpTypes.DELETE, key, undefined, oldValue)
trigger(target, 'delete', key, undefined, oldValue)
}
return result
}
Expand All @@ -132,7 +132,7 @@ function clear(this: IterableCollections) {
// forward the operation before queueing reactions
const result = target.clear()
if (hadItems) {
trigger(target, TriggerOpTypes.CLEAR, undefined, undefined, oldTarget)
trigger(target, 'clear', undefined, undefined, oldTarget)
}
return result
}
Expand All @@ -144,10 +144,10 @@ function createForEach(isReadonly: boolean, isShallow: boolean) {
thisArg?: unknown
) {
const observed = this as any
const target = observed[ReactiveFlags.RAW]
const target = observed.__v_raw
const rawTarget = toRaw(target)
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive
!isReadonly && track(rawTarget, TrackOpTypes.ITERATE, ITERATE_KEY)
!isReadonly && track(rawTarget, 'iterate', ITERATE_KEY)
return target.forEach((value: unknown, key: unknown) => {
// important: make sure the callback is
// 1. invoked with the reactive map as `this` and 3rd arg
Expand Down Expand Up @@ -179,7 +179,7 @@ function createIterableMethod(
this: IterableCollections,
...args: unknown[]
): Iterable & Iterator {
const target = (this as any)[ReactiveFlags.RAW]
const target = (this as any).__v_raw
const rawTarget = toRaw(target)
const targetIsMap = isMap(rawTarget)
const isPair =
Expand All @@ -188,11 +188,7 @@ function createIterableMethod(
const innerIterator = target[method](...args)
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive
!isReadonly &&
track(
rawTarget,
TrackOpTypes.ITERATE,
isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
)
track(rawTarget, 'iterate', isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY)
// return a wrapped iterator which returns observed versions of the
// values emitted from the real iterator
return {
Expand All @@ -214,7 +210,7 @@ function createIterableMethod(
}
}

function createReadonlyMethod(type: TriggerOpTypes): Function {
function createReadonlyMethod(type: TriggerOpTypesUnion): Function {
return function (this: CollectionTypes, ...args: unknown[]) {
if (__DEV__) {
const key = args[0] ? `on key "${args[0]}" ` : ``
Expand All @@ -223,7 +219,7 @@ function createReadonlyMethod(type: TriggerOpTypes): Function {
toRaw(this)
)
}
return type === TriggerOpTypes.DELETE ? false : this
return type === 'delete' ? false : this
}
}

Expand Down Expand Up @@ -268,10 +264,10 @@ function createInstrumentations() {
has(this: MapTypes, key: unknown) {
return has.call(this, key, true)
},
add: createReadonlyMethod(TriggerOpTypes.ADD),
set: createReadonlyMethod(TriggerOpTypes.SET),
delete: createReadonlyMethod(TriggerOpTypes.DELETE),
clear: createReadonlyMethod(TriggerOpTypes.CLEAR),
add: createReadonlyMethod('add'),
set: createReadonlyMethod('set'),
delete: createReadonlyMethod('delete'),
clear: createReadonlyMethod('clear'),
forEach: createForEach(true, false)
}

Expand All @@ -285,10 +281,10 @@ function createInstrumentations() {
has(this: MapTypes, key: unknown) {
return has.call(this, key, true)
},
add: createReadonlyMethod(TriggerOpTypes.ADD),
set: createReadonlyMethod(TriggerOpTypes.SET),
delete: createReadonlyMethod(TriggerOpTypes.DELETE),
clear: createReadonlyMethod(TriggerOpTypes.CLEAR),
add: createReadonlyMethod('add'),
set: createReadonlyMethod('set'),
delete: createReadonlyMethod('delete'),
clear: createReadonlyMethod('clear'),
forEach: createForEach(true, true)
}

Expand Down Expand Up @@ -345,11 +341,11 @@ function createInstrumentationGetter(isReadonly: boolean, shallow: boolean) {
key: string | symbol,
receiver: CollectionTypes
) => {
if (key === ReactiveFlags.IS_REACTIVE) {
if (key === '__v_isReactive') {
return !isReadonly
} else if (key === ReactiveFlags.IS_READONLY) {
} else if (key === '__v_isReadonly') {
return isReadonly
} else if (key === ReactiveFlags.RAW) {
} else if (key === '__v_raw') {
return target
}

Expand Down
Loading