feat: move api-client as core's monorepo

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2022-12-20 21:26:21 +08:00
parent 06ab476c8a
commit a281f45ab4
101 changed files with 7990 additions and 297 deletions

View File

@@ -0,0 +1,48 @@
// @ts-nocheck
// @copy: https://github.com/sindresorhus/auto-bind/blob/main/index.js
// Gets all non-builtin properties up the prototype chain.
const getAllProperties = (object) => {
const properties = new Set()
do {
for (const key of Reflect.ownKeys(object)) {
properties.add([object, key])
}
} while (
(object = Reflect.getPrototypeOf(object)) &&
object !== Object.prototype
)
return properties
}
export function autoBind(self, { include, exclude } = {}) {
const filter = (key) => {
const match = (pattern) =>
typeof pattern === 'string' ? key === pattern : pattern.test(key)
if (include) {
return include.some(match)
}
if (exclude) {
return !exclude.some(match)
}
return true
}
for (const [object, key] of getAllProperties(self.constructor.prototype)) {
if (key === 'constructor' || !filter(key)) {
continue
}
const descriptor = Reflect.getOwnPropertyDescriptor(object, key)
if (descriptor && typeof descriptor.value === 'function') {
self[key] = self[key].bind(self)
}
}
return self
}