feat: add weakRef
This commit is contained in:
parent
587afcfd42
commit
58abf2a811
8 changed files with 89 additions and 12 deletions
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
55
.idea/workspace.xml
generated
Normal file
55
.idea/workspace.xml
generated
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="df737647-19a6-4a5f-88a0-8ce9d29a36c8" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/source/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/source/index.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/test.ts" beforeDir="false" afterPath="$PROJECT_DIR$/test/test.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/tsconfig.json" beforeDir="false" afterPath="$PROJECT_DIR$/tsconfig.json" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MacroExpansionManager">
|
||||
<option name="directoryName" value="hl7nkx35" />
|
||||
</component>
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
<component name="ProjectId" id="25cK4TvoIxGKxbzN8247wytmhpC" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="nodejs_package_manager_path" value="npm" />
|
||||
<property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.JavaScript" />
|
||||
<property name="ts.external.directory.path" value="$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external" />
|
||||
<property name="vue.rearranger.settings.migration" value="true" />
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="df737647-19a6-4a5f-88a0-8ce9d29a36c8" name="Changes" comment="" />
|
||||
<created>1645820743983</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1645820743983</updated>
|
||||
<workItem from="1645820745885" duration="3571000" />
|
||||
<workItem from="1645962952689" duration="7278000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -56,11 +56,11 @@
|
|||
"ava": "^3.3.0",
|
||||
"del-cli": "^2.0.0",
|
||||
"eslint-config-xo-typescript": "^0.26.0",
|
||||
"jsdom": "^16.0.1",
|
||||
"jsdom": "^19.0.0",
|
||||
"rxjs": "^6.4.0",
|
||||
"tempy": "^0.4.0",
|
||||
"ts-node": "^8.3.0",
|
||||
"typescript": "~3.8.2",
|
||||
"typescript": "^4.6.2",
|
||||
"xo": "^0.26.1",
|
||||
"zen-observable": "^0.8.8"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@ is.boundFunction(function () {});
|
|||
##### .set(value)
|
||||
##### .weakMap(value)
|
||||
##### .weakSet(value)
|
||||
##### .weakRef(value)
|
||||
|
||||
#### Typed arrays
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ const objectTypeNames = [
|
|||
'Set',
|
||||
'WeakMap',
|
||||
'WeakSet',
|
||||
'WeakRef',
|
||||
'ArrayBuffer',
|
||||
'SharedArrayBuffer',
|
||||
'DataView',
|
||||
|
|
@ -216,6 +217,7 @@ is.map = <Key = unknown, Value = unknown>(value: unknown): value is Map<Key, Val
|
|||
is.set = <T = unknown>(value: unknown): value is Set<T> => isObjectOfType<Set<T>>('Set')(value);
|
||||
is.weakMap = <Key extends object = object, Value = unknown>(value: unknown): value is WeakMap<Key, Value> => isObjectOfType<WeakMap<Key, Value>>('WeakMap')(value);
|
||||
is.weakSet = (value: unknown): value is WeakSet<object> => isObjectOfType<WeakSet<object>>('WeakSet')(value);
|
||||
is.weakRef = (value: unknown): value is WeakRef<object> => isObjectOfType<WeakRef<object>>('WeakRef')(value);
|
||||
|
||||
is.int8Array = isObjectOfType<Int8Array>('Int8Array');
|
||||
is.uint8Array = isObjectOfType<Uint8Array>('Uint8Array');
|
||||
|
|
@ -306,10 +308,10 @@ const DOM_PROPERTIES_TO_CHECK: Array<(keyof HTMLElement)> = [
|
|||
|
||||
is.domElement = (value: unknown): value is HTMLElement => {
|
||||
return is.object(value) &&
|
||||
(value as HTMLElement).nodeType === NODE_TYPE_ELEMENT &&
|
||||
is.string((value as HTMLElement).nodeName) &&
|
||||
!is.plainObject(value) &&
|
||||
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
|
||||
(value as HTMLElement).nodeType === NODE_TYPE_ELEMENT &&
|
||||
is.string((value as HTMLElement).nodeName) &&
|
||||
!is.plainObject(value) &&
|
||||
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
|
||||
};
|
||||
|
||||
is.observable = (value: unknown): value is ObservableLike => {
|
||||
|
|
@ -494,6 +496,7 @@ interface Assert {
|
|||
set: <T = unknown>(value: unknown) => asserts value is Set<T>;
|
||||
weakMap: <Key extends object = object, Value = unknown>(value: unknown) => asserts value is WeakMap<Key, Value>;
|
||||
weakSet: <T extends object = object>(value: unknown) => asserts value is WeakSet<T>;
|
||||
weakRef: <T extends object = object>(value: unknown) => asserts value is WeakRef<T>;
|
||||
int8Array: (value: unknown) => asserts value is Int8Array;
|
||||
uint8Array: (value: unknown) => asserts value is Uint8Array;
|
||||
uint8ClampedArray: (value: unknown) => asserts value is Uint8ClampedArray;
|
||||
|
|
@ -597,6 +600,7 @@ export const assert: Assert = {
|
|||
set: <T = unknown>(value: unknown): asserts value is Set<T> => assertType(is.set(value), 'Set', value),
|
||||
weakMap: <Key extends object = object, Value = unknown>(value: unknown): asserts value is WeakMap<Key, Value> => assertType(is.weakMap(value), 'WeakMap', value),
|
||||
weakSet: <T extends object = object>(value: unknown): asserts value is WeakSet<T> => assertType(is.weakSet(value), 'WeakSet', value),
|
||||
weakRef: <T extends object = object>(value: unknown): asserts value is WeakRef<T> => assertType(is.weakRef(value), 'WeakRef', value),
|
||||
int8Array: (value: unknown): asserts value is Int8Array => assertType(is.int8Array(value), 'Int8Array', value),
|
||||
uint8Array: (value: unknown): asserts value is Uint8Array => assertType(is.uint8Array(value), 'Uint8Array', value),
|
||||
uint8ClampedArray: (value: unknown): asserts value is Uint8ClampedArray => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
|
||||
|
|
|
|||
10
test/test.ts
10
test/test.ts
|
|
@ -343,6 +343,14 @@ const types = new Map<string, Test>([
|
|||
],
|
||||
typename: 'WeakMap'
|
||||
}],
|
||||
['weakSet', {
|
||||
is: is.weakRef,
|
||||
assert: assert.weakRef,
|
||||
fixtures: [
|
||||
new window.WeakRef({})
|
||||
],
|
||||
typename: 'WeakRef'
|
||||
}],
|
||||
['int8Array', {
|
||||
is: is.int8Array,
|
||||
assert: assert.int8Array,
|
||||
|
|
@ -1203,7 +1211,7 @@ test('is.arrayLike', t => {
|
|||
t.false(is.arrayLike(new Map()));
|
||||
|
||||
(function () {
|
||||
t.notThrows(() => {
|
||||
t.notThrows(function () {
|
||||
assert.arrayLike(arguments); // eslint-disable-line prefer-rest-params
|
||||
});
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
"outDir": "dist",
|
||||
"target": "es2018",
|
||||
"lib": [
|
||||
"es2018",
|
||||
"ESNext",
|
||||
"dom"
|
||||
]
|
||||
],
|
||||
},
|
||||
"include": [
|
||||
"include": [
|
||||
"source"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"downlevelIteration": true
|
||||
},
|
||||
"include": [
|
||||
"test"
|
||||
]
|
||||
"test"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue