11import DS from 'ember-data' ;
2+ import {
3+ filterBy ,
4+ or ,
5+ union
6+ } from '@ember/object/computed' ;
7+ import { memberUnion , hasMemberType } from '../utils/computed' ;
28
39const { attr, belongsTo } = DS ;
410
@@ -17,5 +23,61 @@ export default DS.Model.extend({
1723 accessors : attr ( ) ,
1824 methods : attr ( ) ,
1925 fields : attr ( ) ,
20- tags : attr ( )
26+ tags : attr ( ) ,
27+
28+ publicAccessors : filterBy ( 'accessors' , 'access' , 'public' ) ,
29+ publicMethods : filterBy ( 'methods' , 'access' , 'public' ) ,
30+ publicFields : filterBy ( 'fields' , 'access' , 'public' ) ,
31+
32+ privateAccessors : filterBy ( 'accessors' , 'access' , 'private' ) ,
33+ privateMethods : filterBy ( 'methods' , 'access' , 'private' ) ,
34+ privateFields : filterBy ( 'fields' , 'access' , 'private' ) ,
35+
36+ protectedAccessors : filterBy ( 'accessors' , 'access' , 'protected' ) ,
37+ protectedMethods : filterBy ( 'methods' , 'access' , 'protected' ) ,
38+ protectedFields : filterBy ( 'fields' , 'access' , 'protected' ) ,
39+
40+ allPublicAccessors : memberUnion ( 'parentClass.allPublicAccessors' , 'publicAccessors' ) ,
41+ allPublicMethods : memberUnion ( 'parentClass.allPublicMethods' , 'publicMethods' ) ,
42+ allPublicFields : memberUnion ( 'parentClass.allPublicFields' , 'publicFields' ) ,
43+
44+ allPrivateAccessors : memberUnion ( 'parentClass.allPrivateAccessors' , 'privateAccessors' ) ,
45+ allPrivateMethods : memberUnion ( 'parentClass.allPrivateMethods' , 'privateMethods' ) ,
46+ allPrivateFields : memberUnion ( 'parentClass.allPrivateFields' , 'privateFields' ) ,
47+
48+ allProtectedAccessors : memberUnion ( 'parentClass.allProtectedAccessors' , 'protectedAccessors' ) ,
49+ allProtectedMethods : memberUnion ( 'parentClass.allProtectedMethods' , 'protectedMethods' ) ,
50+ allProtectedFields : memberUnion ( 'parentClass.allProtectedFields' , 'protectedFields' ) ,
51+
52+ allAccessors : union ( 'allPublicAccessors' , 'allPrivateAccessors' , 'allProtectedAccessors' ) ,
53+ allMethods : union ( 'allPublicMethods' , 'allPrivateMethods' , 'allProtectedMethods' ) ,
54+ allFields : union ( 'allPublicFields' , 'allPrivateFields' , 'allProtectedFields' ) ,
55+
56+ hasInherited : or (
57+ 'parentClass.allAccessors.length' ,
58+ 'parentClass.allMethods.length' ,
59+ 'parentClass.allFields.length'
60+ ) ,
61+
62+ hasPrivate : or (
63+ 'allPrivateAccessors.length' ,
64+ 'allPrivateMethods.length' ,
65+ 'allPrivateFields.length'
66+ ) ,
67+
68+ hasProtected : or (
69+ 'allProtectedAccessors.length' ,
70+ 'allProtectedMethods.length' ,
71+ 'allProtectedFields.length'
72+ ) ,
73+
74+ hasDeprecated : hasMemberType (
75+ 'allFields' ,
76+ 'allAccessors' ,
77+ 'allMethods' ,
78+
79+ function ( member ) {
80+ return member . tags && member . tags . find ( t => t . name === 'deprecated' ) ;
81+ }
82+ )
2183} ) ;
0 commit comments