Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F12656677
field-type.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
field-type.js
View Options
var
Promise
=
require
(
"bluebird"
);
var
ChipManager
=
require
.
main
.
require
(
"lib/chip-types/chip-manager.js"
);
var
Errors
=
require
.
main
.
require
(
"lib/response/error.js"
);
var
default_methods
=
require
(
"./field-type-default-methods.js"
);
var
methods_with_accept_reject_interface
=
new
Set
([
"is_proper_value"
]);
function
wrap_method_in_accept_reject
(
declaration
,
method_name
)
{
return
function
(){
var
that
=
this
;
var
arguments_array
=
Object
.
keys
(
arguments
).
map
((
key
)=>
arguments
[
key
]);
return
new
Promise
(
function
(
resolve
,
reject
){
var
accept
=
resolve
;
var
new_reject
=
function
(
error
){
if
(
typeof
error
===
"string"
){
reject
(
new
Errors
.
ValidationError
(
error
));
}
else
{
reject
(
error
);
}
};
arguments_array
.
unshift
(
accept
,
new_reject
);
declaration
[
method_name
].
apply
(
this
,
arguments_array
);
});
};
}
function
wrap_method_in_promise
(
declaration
,
method_name
)
{
return
function
(){
return
Promise
.
resolve
(
declaration
[
method_name
].
apply
(
this
,
arguments
));
};
}
var
FieldType
=
function
(
declaration
){
var
self
;
if
(
declaration
instanceof
FieldType
){
return
declaration
;
}
else
if
(
typeof
declaration
===
"string"
){
return
ChipManager
.
get_chip
(
"field_type"
,
declaration
);
}
else
if
(
declaration
.
extends
){
var
parent_field_type
=
ChipManager
.
get_chip
(
"field_type"
,
declaration
.
extends
);
self
=
Object
.
create
(
parent_field_type
);
}
else
{
self
=
this
;
for
(
var
method_name
in
default_methods
){
self
[
method_name
]
=
default_methods
[
method_name
];
}
}
if
(
declaration
.
name
){
ChipManager
.
add_chip
(
"field_type"
,
declaration
.
name
,
self
);
}
for
(
var
prop_name
in
declaration
){
if
(
default_methods
[
prop_name
]
!==
undefined
){
if
(
methods_with_accept_reject_interface
.
has
(
prop_name
)){
self
[
prop_name
]
=
wrap_method_in_accept_reject
(
declaration
,
prop_name
);
}
else
{
self
[
prop_name
]
=
wrap_method_in_promise
(
declaration
,
prop_name
);
}
}
else
{
self
[
prop_name
]
=
declaration
[
prop_name
];
}
}
return
self
;
};
module
.
exports
=
FieldType
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 28, 15:13 (23 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1083823
Default Alt Text
field-type.js (1 KB)
Attached To
Mode
rS Sealious
Attached
Detach File
Event Timeline
Log In to Comment