methods method
Implementation
@override
Map<String, Function> methods() {
return {
'init': () => {},
'keys': (dynamic value) => (value is Map)
? InvokableController.ownEnumerableKeys(value)
: (value == null ? [] : null),
'values': (dynamic value) => (value is Map)
? InvokableController.ownEnumerableKeys(value)
.map((key) => InvokableController.getProperty(value, key))
.toList()
: (value == null ? [] : null),
'entries': (dynamic value) => (value is Map)
? InvokableController.ownEnumerableKeys(value)
.map((key) => [key, InvokableController.getProperty(value, key)])
.toList()
: (value == null ? [] : null),
'create': (dynamic proto) {
final Map<String, dynamic> obj = {};
if (proto != null) {
InvokableController.setPrototype(obj, proto);
}
return obj;
},
'getPrototypeOf': (dynamic value) =>
InvokableController.getPrototype(value),
'hasOwnProperty': (dynamic value, String key) =>
InvokableController.hasOwnProperty(value, key),
'getPropertyNames': (dynamic value) => (value is Map)
? InvokableController.ownPropertyKeys(value)
: (value == null ? [] : null),
'toString': (dynamic value) => value.toString(),
'toJSON': (dynamic value) => JSON().methods()['stringify']!(value),
'defineProperty': (dynamic value, String key, dynamic property) {
if (value is Map) {
InvokableController.defineProperty(
value, key, _descriptorFromMap(property));
}
return value;
},
'getOwnPropertyDescriptor': (dynamic value, String key) =>
InvokableController.getOwnPropertyDescriptor(value, key)?.toMap(),
'deleteProperty': (dynamic value, String key) =>
InvokableController.deleteProperty(value, key),
'has': (dynamic value, String key) =>
InvokableController.hasProperty(value, key),
'isPrototypeOf': (dynamic proto, dynamic value) =>
InvokableController.isPrototypeInChain(value, proto),
'propertyIsEnumerable': (dynamic value, String key) =>
InvokableController.propertyIsEnumerable(value, key),
'assign': (dynamic target, [dynamic source, dynamic source2]) {
if (target is! Map) return target;
for (final sourceValue in [source, source2]) {
if (sourceValue is Map) {
for (final key
in InvokableController.ownEnumerableKeys(sourceValue)) {
InvokableController.setProperty(target, key,
InvokableController.getProperty(sourceValue, key));
}
}
}
return target;
},
};
}