@steedos/objectql 2.2.50 → 2.2.51-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/lib/services/helpers/graphql/consts.d.ts +17 -0
  2. package/lib/services/helpers/graphql/consts.js +28 -0
  3. package/lib/services/helpers/graphql/consts.js.map +1 -0
  4. package/lib/services/helpers/graphql/getQueryFields.js +17 -2
  5. package/lib/services/helpers/graphql/getQueryFields.js.map +1 -1
  6. package/lib/services/helpers/graphql/index.d.ts +1 -1
  7. package/lib/services/helpers/graphql/index.js +31 -46
  8. package/lib/services/helpers/graphql/index.js.map +1 -1
  9. package/lib/util/index.js +7 -0
  10. package/lib/util/index.js.map +1 -1
  11. package/package.json +11 -12
  12. package/src/actions/field_updates.ts +0 -118
  13. package/src/actions/index.ts +0 -3
  14. package/src/actions/types/field_update_target.ts +0 -7
  15. package/src/actions/types/workflow_notification.ts +0 -9
  16. package/src/actions/types/workflow_rule.ts +0 -11
  17. package/src/actions/workflow_notifications.ts +0 -81
  18. package/src/actions/workflow_rule.ts +0 -136
  19. package/src/driver/driver.ts +0 -102
  20. package/src/driver/field-encrytion/index.ts +0 -8
  21. package/src/driver/field-encrytion/sharedconst.ts +0 -34
  22. package/src/driver/fieldDBType.ts +0 -14
  23. package/src/driver/format.ts +0 -36
  24. package/src/driver/index.ts +0 -20
  25. package/src/driver/metadata.ts +0 -226
  26. package/src/driver/meteorMongo.ts +0 -639
  27. package/src/driver/mongo.ts +0 -416
  28. package/src/driver/mysql.ts +0 -47
  29. package/src/driver/oracle.ts +0 -60
  30. package/src/driver/postgres.ts +0 -46
  31. package/src/driver/sqlite3.ts +0 -40
  32. package/src/driver/sqlserver.ts +0 -52
  33. package/src/dynamic-load/actions.ts +0 -146
  34. package/src/dynamic-load/approval_process.ts +0 -73
  35. package/src/dynamic-load/button.ts +0 -75
  36. package/src/dynamic-load/chart.ts +0 -22
  37. package/src/dynamic-load/client_script.ts +0 -65
  38. package/src/dynamic-load/field.ts +0 -77
  39. package/src/dynamic-load/flow_role.ts +0 -46
  40. package/src/dynamic-load/index.ts +0 -21
  41. package/src/dynamic-load/layout.ts +0 -53
  42. package/src/dynamic-load/listview.ts +0 -57
  43. package/src/dynamic-load/method.ts +0 -63
  44. package/src/dynamic-load/object_translations.ts +0 -61
  45. package/src/dynamic-load/originalObject.ts +0 -8
  46. package/src/dynamic-load/package.ts +0 -312
  47. package/src/dynamic-load/page.ts +0 -23
  48. package/src/dynamic-load/permission.ts +0 -71
  49. package/src/dynamic-load/permissionset.ts +0 -78
  50. package/src/dynamic-load/preload_data.ts +0 -104
  51. package/src/dynamic-load/profile.ts +0 -90
  52. package/src/dynamic-load/query.ts +0 -22
  53. package/src/dynamic-load/restrictionRules.ts +0 -23
  54. package/src/dynamic-load/role.ts +0 -46
  55. package/src/dynamic-load/shareRules.ts +0 -23
  56. package/src/dynamic-load/tab.ts +0 -17
  57. package/src/dynamic-load/tabs.ts +0 -13
  58. package/src/dynamic-load/translations.ts +0 -54
  59. package/src/dynamic-load/trigger.ts +0 -236
  60. package/src/dynamic-load/validation_rule.ts +0 -77
  61. package/src/dynamic-load/workflow.ts +0 -114
  62. package/src/errors/index.ts +0 -111
  63. package/src/formula/core.ts +0 -490
  64. package/src/formula/field_formula.ts +0 -107
  65. package/src/formula/index.ts +0 -81
  66. package/src/formula/params.ts +0 -197
  67. package/src/formula/recompute.ts +0 -65
  68. package/src/formula/simple_params.ts +0 -92
  69. package/src/formula/type.ts +0 -107
  70. package/src/formula/util.ts +0 -207
  71. package/src/index.ts +0 -24
  72. package/src/metadata-register/_base.ts +0 -85
  73. package/src/metadata-register/app.ts +0 -30
  74. package/src/metadata-register/chart.ts +0 -9
  75. package/src/metadata-register/index.ts +0 -123
  76. package/src/metadata-register/layout.ts +0 -38
  77. package/src/metadata-register/object.ts +0 -68
  78. package/src/metadata-register/page.ts +0 -9
  79. package/src/metadata-register/permissionFields.ts +0 -13
  80. package/src/metadata-register/permissionset.ts +0 -25
  81. package/src/metadata-register/process.ts +0 -16
  82. package/src/metadata-register/processTrigger.ts +0 -24
  83. package/src/metadata-register/profile.ts +0 -25
  84. package/src/metadata-register/query.ts +0 -9
  85. package/src/metadata-register/restrictionRules.ts +0 -12
  86. package/src/metadata-register/shareRules.ts +0 -13
  87. package/src/metadata-register/tab.ts +0 -9
  88. package/src/metadata-register/tabs.ts +0 -43
  89. package/src/services/datasourceServiceFactory.ts +0 -55
  90. package/src/services/helpers/graphql/getPrimaryFieldType.ts +0 -48
  91. package/src/services/helpers/graphql/getQueryFields.ts +0 -36
  92. package/src/services/helpers/graphql/index.ts +0 -681
  93. package/src/services/helpers/rest.ts +0 -57
  94. package/src/services/index.ts +0 -13
  95. package/src/services/objectService.ts +0 -846
  96. package/src/services/objectServiceDispatcher.ts +0 -209
  97. package/src/services/objectServiceFactory.ts +0 -29
  98. package/src/summary/core.ts +0 -263
  99. package/src/summary/field_summary.ts +0 -71
  100. package/src/summary/index.ts +0 -96
  101. package/src/summary/recompute.ts +0 -31
  102. package/src/summary/type.ts +0 -60
  103. package/src/ts-types/index.ts +0 -3
  104. package/src/ts-types/permissionset.ts +0 -8
  105. package/src/ts-types/profile.ts +0 -11
  106. package/src/ts-types/triggerActionParams.ts +0 -22
  107. package/src/typeorm/driver.ts +0 -379
  108. package/src/typeorm/index.ts +0 -3
  109. package/src/typeorm/util.ts +0 -147
  110. package/src/types/action.ts +0 -52
  111. package/src/types/app.ts +0 -280
  112. package/src/types/config.ts +0 -152
  113. package/src/types/connection.ts +0 -87
  114. package/src/types/dashboard.ts +0 -91
  115. package/src/types/datasource.ts +0 -570
  116. package/src/types/field.ts +0 -370
  117. package/src/types/field_permission.ts +0 -42
  118. package/src/types/field_types.ts +0 -1
  119. package/src/types/index.ts +0 -21
  120. package/src/types/list_view.ts +0 -56
  121. package/src/types/listeners.ts +0 -18
  122. package/src/types/object.ts +0 -2076
  123. package/src/types/object_dynamic_load.ts +0 -426
  124. package/src/types/object_events.ts +0 -43
  125. package/src/types/object_layouts.ts +0 -20
  126. package/src/types/object_permission.ts +0 -134
  127. package/src/types/query.ts +0 -28
  128. package/src/types/report.ts +0 -128
  129. package/src/types/restrictionRule.ts +0 -57
  130. package/src/types/schema.ts +0 -273
  131. package/src/types/shareRule.ts +0 -57
  132. package/src/types/trigger.ts +0 -88
  133. package/src/types/userSession.ts +0 -45
  134. package/src/types/validation_rules.ts +0 -29
  135. package/src/util/convert.ts +0 -131
  136. package/src/util/field.ts +0 -93
  137. package/src/util/function_expression.ts +0 -63
  138. package/src/util/index.ts +0 -1058
  139. package/src/util/locale.ts +0 -24
  140. package/src/util/permission_shares.ts +0 -25
  141. package/src/util/suffix.ts +0 -78
  142. package/src/util/transform.ts +0 -239
  143. package/src/validators/index.ts +0 -36
@@ -1,426 +0,0 @@
1
- import _ = require('lodash')
2
- import path = require('path')
3
- import { SteedosObjectTypeConfig, SteedosObjectPermissionTypeConfig, SteedosActionTypeConfig, getDataSource } from '.'
4
- // import { isMeteor } from '../util'
5
- import { Dictionary } from '@salesforce/ts-types';
6
- import { addObjectListenerConfig, loadObjectLayouts, loadSourceProfiles, loadSourcePermissionset, loadObjectValidationRules, loadSourceRoles, loadSourceFlowRoles, loadSourceApprovalProcesses, loadSourceWorkflows, loadStandardProfiles, loadStandardPermissionsets, preloadDBObjectFields, preloadDBObjectButtons, preloadDBApps, preloadDBObjectLayouts, preloadDBTabs, preloadDBShareRules, preloadDBRestrictionRules, preloadDBPermissionFields, loadPackageMetadatas } from '../dynamic-load'
7
- import { transformListenersToTriggers } from '..';
8
- import { getSteedosSchema } from './schema';
9
-
10
- var util = require('../util')
11
- var clone = require('clone')
12
- var globby = require('globby');
13
-
14
- export const SYSTEM_DATASOURCE = '__SYSTEM_DATASOURCE';
15
- export const MONGO_BASE_OBJECT = '__MONGO_BASE_OBJECT';
16
- export const SQL_BASE_OBJECT = '__SQL_BASE_OBJECT';
17
- const _original_objectConfigs: Array<SteedosObjectTypeConfig> = []; //不包括继承部分
18
- const _objectConfigs: Array<SteedosObjectTypeConfig> = [];
19
- const _routerConfigs: Array<any> = [];
20
- const _clientScripts: Array<string> = [];
21
- const _serverScripts: Array<string> = [];
22
- const _objectsI18n: Array<any> = [];
23
- const _routers: Array<any> = [];
24
- const _objectsData: Dictionary<any> = {};
25
- const delayLoadExtendObjectConfigQueue: Dictionary<any> = {};
26
- let standardObjectsLoaded: boolean = false;
27
- let dbMetadataLoaing: boolean = false;
28
-
29
- const addDelayLoadExtendObjectConfig = function (extend: string, config: SteedosObjectTypeConfig){
30
- if(!delayLoadExtendObjectConfigQueue[extend]){
31
- delayLoadExtendObjectConfigQueue[extend] = [];
32
- }
33
- delayLoadExtendObjectConfigQueue[extend].push(config);
34
- }
35
-
36
- const addOriginalObjectConfigs = function(objectName: string, datasource: string, config: SteedosObjectTypeConfig){
37
- if(objectName === MONGO_BASE_OBJECT || objectName === SQL_BASE_OBJECT){
38
- return ;
39
- }
40
- config.datasource = datasource;
41
- _.remove(_original_objectConfigs, {name: objectName, datasource: datasource});
42
- _original_objectConfigs.push(config)
43
- }
44
-
45
- const extendOriginalObjectConfig = function(objectName: string, datasource: string, objectConfig: SteedosObjectTypeConfig){
46
- if(objectName === MONGO_BASE_OBJECT || objectName === SQL_BASE_OBJECT){
47
- return ;
48
- }
49
- let parentOriginalObjectConfig = getOriginalObjectConfig(objectName);
50
- let originalObjectConfig = util.extend({
51
- name: objectName,
52
- fields: {}
53
- }, clone(parentOriginalObjectConfig), objectConfig);
54
- addOriginalObjectConfigs(objectName, datasource, clone(originalObjectConfig));
55
- }
56
-
57
- const perfectObjectConfig = (objectConfig: SteedosObjectTypeConfig)=>{
58
- _.each(objectConfig.fields, (field: SteedosObjectTypeConfig, key: string)=>{
59
- if(!field.name){
60
- field.name = key;
61
- }
62
- })
63
- }
64
-
65
- export const getOriginalObjectConfig = (object_name: string):SteedosObjectTypeConfig => {
66
- return _.find(_original_objectConfigs, {name: object_name})
67
- }
68
-
69
- export const getOriginalObjectConfigs = (datasource: string) => {
70
- if (datasource) {
71
- return _.filter(_original_objectConfigs, {datasource: datasource})
72
- } else {
73
- return _original_objectConfigs
74
- }
75
- }
76
-
77
- export const getObjectConfigs = (datasource?: string) => {
78
- if (datasource) {
79
- return _.filter(_objectConfigs, {datasource: datasource})
80
- } else {
81
- return _objectConfigs
82
- }
83
- }
84
-
85
- export const getObjectConfig = (object_name: string):SteedosObjectTypeConfig => {
86
- return _.find(_objectConfigs, {name: object_name})
87
- }
88
-
89
- export const addObjectConfigFiles = async (filePath: string, datasource: string, serviceName?: string) => {
90
- if(!path.isAbsolute(filePath)){
91
- throw new Error(`${filePath} must be an absolute path`);
92
- }
93
-
94
- if (!datasource)
95
- datasource = 'meteor'
96
-
97
- await loadPackageMetadatas(filePath, datasource, serviceName)
98
-
99
- await loadObjectLayouts(filePath, serviceName);
100
- // await loadObjectPermissions(filePath, serviceName);
101
- await loadSourceProfiles(filePath, serviceName);
102
- await loadSourcePermissionset(filePath, serviceName);
103
-
104
- loadObjectValidationRules(filePath, serviceName);
105
-
106
- loadSourceRoles(filePath);
107
-
108
- loadSourceFlowRoles(filePath);
109
-
110
- loadSourceApprovalProcesses(filePath);
111
-
112
- loadSourceWorkflows(filePath);
113
- }
114
-
115
- export const addServerScriptFiles = (filePath: string) => {
116
- const filePatten = [
117
- path.join(filePath, "*.object.js"),
118
- "!" + path.join(filePath, "node_modules"),
119
- ];
120
- const matchedPaths: [string] = globby.sync(filePatten);
121
- _.each(matchedPaths, (matchedPath: string) => {
122
- _serverScripts.push(matchedPath);
123
- });
124
- };
125
-
126
- export const getServerScripts = () => {
127
- return _serverScripts;
128
- };
129
-
130
- export const addObjectI18nFiles = (filePath: string) => {
131
- if (!path.isAbsolute(filePath)) {
132
- throw new Error(`${filePath} must be an absolute path`);
133
- }
134
-
135
- let i18nData = util.loadI18n(filePath);
136
- i18nData.forEach((element) => {
137
- _objectsI18n.push(element);
138
- });
139
- };
140
-
141
- export const getObjectsI18n = () => {
142
- return _objectsI18n;
143
- };
144
-
145
- export const addRouterFiles = (filePath: string) => {
146
- if (!path.isAbsolute(filePath)) {
147
- throw new Error(`${filePath} must be an absolute path`);
148
- }
149
- let routersData = util.loadRouters(filePath);
150
- routersData.forEach((element) => {
151
- _routers.push(element);
152
- });
153
- };
154
-
155
- export const getRouters = () => {
156
- return _routers;
157
- };
158
-
159
- export const addClientScriptFiles = (filePath: string) => {
160
- const filePatten = [
161
- path.join(filePath, "*.client.js"),
162
- "!" + path.join(filePath, "node_modules"),
163
- ];
164
- let matchedPaths: Array<string> = globby.sync(filePatten);
165
- matchedPaths = _.sortBy(matchedPaths);
166
- _.each(matchedPaths, (matchedPath) => {
167
- _clientScripts.push(matchedPath);
168
- });
169
- };
170
-
171
- export const getClientScriptsFiles = () => {
172
- return _.uniq(_clientScripts);
173
- }
174
-
175
-
176
- export const addObjectConfig = async (objectConfig: SteedosObjectTypeConfig, datasource: string, serviceName?: string) => {
177
- let object_name = objectConfig.name;
178
- if(serviceName && getSteedosSchema().metadataRegister){
179
- if(datasource){
180
- objectConfig.datasource = datasource
181
- }
182
- if(!objectConfig.extend){
183
- objectConfig.isMain = true;
184
- }
185
- await getSteedosSchema().metadataRegister.addObjectConfig(serviceName, objectConfig);
186
- }
187
- // if(true){return;}
188
- let config:SteedosObjectTypeConfig = {
189
- name: object_name,
190
- fields: {}
191
- }
192
- if (object_name === MONGO_BASE_OBJECT || object_name === SQL_BASE_OBJECT) {
193
- config = clone(objectConfig);
194
- }
195
- else if (objectConfig.extend){
196
- object_name = objectConfig.extend
197
- let parentObjectConfig = getObjectConfig(object_name);
198
- if(_.isEmpty(parentObjectConfig)){
199
- return addDelayLoadExtendObjectConfig(objectConfig.extend, objectConfig);
200
- throw new Error(`Object extend failed, object not exist: ${objectConfig.extend}`);
201
- }
202
- config = util.extend(config, clone(parentObjectConfig), clone(objectConfig));
203
- config.name = object_name;
204
- delete config.extend
205
- datasource = parentObjectConfig.datasource
206
- extendOriginalObjectConfig(object_name, datasource, clone(objectConfig));
207
- } else {
208
- addOriginalObjectConfigs(object_name, datasource, clone(objectConfig));
209
- if (datasource === 'default' || datasource === 'meteor') { // isMeteor() && (datasource === 'default')
210
- let baseObjectConfig = getObjectConfig(MONGO_BASE_OBJECT);
211
- // 确保字段顺序正确,避免base中的字段跑到前面
212
- config.fields = _.clone(objectConfig.fields);
213
- let _baseObjectConfig = clone(baseObjectConfig);
214
- delete _baseObjectConfig.hidden;
215
- if(datasource === 'meteor'){
216
- _.each(_baseObjectConfig.listeners, function(license){
217
- const triggers = transformListenersToTriggers(config, license)
218
- util.extend(config, {triggers, _baseTriggers: triggers})
219
- })
220
- }
221
- config = util.extend(config, _baseObjectConfig, clone(objectConfig));
222
- } else {
223
- let coreObjectConfig = getObjectConfig(SQL_BASE_OBJECT);
224
- // 确保字段顺序正确,避免base中的字段跑到前面
225
- config.fields = _.clone(objectConfig.fields);
226
- let _coreObjectConfig = clone(coreObjectConfig)
227
- delete _coreObjectConfig.hidden;
228
- config = util.extend(config, _coreObjectConfig, clone(objectConfig));
229
- }
230
- }
231
- config.datasource = datasource;
232
- _.remove(_objectConfigs, {name: object_name, datasource: datasource});
233
- delete config.__filename
234
- perfectObjectConfig(config)
235
- if(object_name === 'objects' && datasource==='default'){throw new Error(`debug error`)}
236
- _objectConfigs.push(config);
237
- const delayLoadQueue = clone(delayLoadExtendObjectConfigQueue[object_name]);
238
- if(delayLoadQueue && delayLoadQueue.length > 0){
239
- delayLoadExtendObjectConfigQueue[object_name] = [];
240
- for (const index in delayLoadQueue) {
241
- const delayLoadConfig = delayLoadQueue[index]
242
- await addObjectConfig(delayLoadConfig, delayLoadConfig.datasource, null)
243
- }
244
- }
245
-
246
- }
247
-
248
- export const removeObjectConfig = (object_name: string, datasource: string)=>{
249
- _.remove(_objectConfigs, {name: object_name, datasource: datasource});
250
- _.remove(_original_objectConfigs, {name: object_name, datasource: datasource});
251
- }
252
-
253
- export const removeObjectListenerConfig = (_id, listenTo, when)=>{
254
- if(!_id){
255
- throw new Error('[config._id] Can not be empty. can not remove object listener.');
256
- }
257
- if (!listenTo) {
258
- throw new Error('missing attribute listenTo')
259
- }
260
-
261
- if (!_.isString(listenTo) ) {
262
- throw new Error('listenTo must be a string')
263
- }
264
-
265
- let object_name = '';
266
-
267
- if (_.isString(listenTo)) {
268
- object_name = listenTo
269
- }
270
-
271
- let object:any = getObjectConfig(object_name);
272
- if (object) {
273
- if(object.listeners){
274
- delete object.listeners[_id]
275
- }
276
-
277
- if(object.triggers){
278
- delete object.triggers[`${_id}_${when}`]
279
- }
280
-
281
- } else {
282
- throw new Error(`Error remove listener, object not found: ${object_name}`);
283
- }
284
- }
285
-
286
- export const loadStandardMetadata = async (serviceName: string, datasourceApiName: string) => {
287
- await loadStandardBaseObjects(serviceName);
288
- if (dbMetadataLoaing != true) {
289
- await loadStandardProfiles(serviceName);
290
- await loadStandardPermissionsets(serviceName);
291
- await loadDbMetadatas(datasourceApiName);
292
- dbMetadataLoaing = true;
293
- }
294
- }
295
-
296
- export const loadDbMetadatas = async (datasourceApiName: string) => {
297
- if(datasourceApiName === 'default' || datasourceApiName === 'meteor'){
298
- const datasource = getDataSource(datasourceApiName)
299
- if(datasource && datasourceApiName === 'default'){
300
- await datasource.initTypeORM();
301
- }
302
- if(datasource){
303
- await preloadDBApps(datasource);
304
- await preloadDBTabs(datasource);
305
- await preloadDBObjectLayouts(datasource);
306
- await preloadDBObjectFields(datasource);
307
- await preloadDBObjectButtons(datasource);
308
- await preloadDBShareRules(datasource);
309
- await preloadDBRestrictionRules(datasource);
310
- await preloadDBPermissionFields(datasource);
311
- }
312
- }
313
- }
314
-
315
- export const loadStandardBaseObjects = async (serviceName: string) => {
316
-
317
- if (standardObjectsLoaded)
318
- return;
319
-
320
- standardObjectsLoaded = true;
321
-
322
- let standardObjectsDir = path.dirname(require.resolve("@steedos/standard-objects"))
323
- let baseObject = util.loadFile(path.join(standardObjectsDir, "base.object.yml"))
324
- baseObject.name = MONGO_BASE_OBJECT;
325
- await addObjectConfig(baseObject, SYSTEM_DATASOURCE, serviceName);
326
- let baseObjectJs = util.loadFile(path.join(standardObjectsDir, "base.object.js"))
327
- baseObjectJs.extend = MONGO_BASE_OBJECT;
328
- await addObjectConfig(baseObjectJs, SYSTEM_DATASOURCE, serviceName);
329
- const baseTriggers = ['base.trigger.js', 'base.autonumber.trigger.js','base.masterDetail.trigger.js','base.objectwebhooks.trigger.js','base.recordFieldAudit.trigger.js','base.recordRecentView.trigger.js','base.tree.trigger.js','base.calendar.trigger.js','base.defaultValue.trigger.js'];
330
- _.forEach(baseTriggers, function(triggerFileName){
331
- let baseObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
332
- baseObjectTrigger.listenTo = MONGO_BASE_OBJECT
333
- addObjectListenerConfig(baseObjectTrigger)
334
- })
335
-
336
- let coreObject = util.loadFile(path.join(standardObjectsDir, "core.object.yml"))
337
- coreObject.name = SQL_BASE_OBJECT;
338
- await addObjectConfig(coreObject, SYSTEM_DATASOURCE, serviceName);
339
-
340
- const coreTriggers = ['core.objectwebhooks.trigger.js','core.defaultValue.trigger.js'];
341
- _.forEach(coreTriggers, function(triggerFileName){
342
- let coreObjectTrigger = util.loadFile(path.join(standardObjectsDir, triggerFileName))
343
- coreObjectTrigger.listenTo = SQL_BASE_OBJECT
344
- addObjectListenerConfig(coreObjectTrigger)
345
- })
346
-
347
- // addAllConfigFiles(path.join(standardObjectsDir, "**"), 'default');
348
- }
349
-
350
- export const addRouterConfig = (prefix: string, router: any) => {
351
- if (!prefix)
352
- throw new Error(`Error add router, prefix required`);
353
- _.remove(_routerConfigs, {prefix: prefix});
354
- _routerConfigs.push({prefix: prefix, router: router})
355
- }
356
-
357
- export const getRouterConfigs = () => {
358
- return _routerConfigs
359
- }
360
-
361
- export function addObjectMethod(objectName: string, methodName: string, method: Function){
362
-
363
- let object = getObjectConfig(objectName);
364
- if (!object)
365
- throw new Error(`Error add method ${methodName}, object not found: ${objectName}`);
366
-
367
- if(!object.methods){
368
- object.methods = {}
369
- }
370
- object.methods[methodName] = method
371
- }
372
-
373
- //TODO 写入到addOriginalObjectConfigs
374
- export function addObjectAction(objectName: string, actionConfig: SteedosActionTypeConfig){
375
- if (!actionConfig.name)
376
- throw new Error(`Error add action, name required`);
377
-
378
- let object = getObjectConfig(objectName);
379
- if (!object)
380
- throw new Error(`Error add action ${actionConfig.name}, object not found: ${objectName}`);
381
-
382
- if(!object.actions){
383
- object.actions = {}
384
- }
385
- object.actions[actionConfig.name] = actionConfig;
386
- }
387
-
388
- export function addObjectPermission(objectName: string, permissionConfig: SteedosObjectPermissionTypeConfig){
389
-
390
- if (!permissionConfig.name)
391
- throw new Error(`Error add permission, name required`);
392
-
393
- let object = getObjectConfig(objectName);
394
- if (!object)
395
- throw new Error(`Error add permission ${permissionConfig.name}, object not found: ${objectName}`);
396
-
397
- if(!object.permissions){
398
- object.permissions = {}
399
- }
400
- object.permissions[permissionConfig.name] = permissionConfig;
401
- }
402
-
403
- export function getAllObjectData(){
404
- return _objectsData
405
- }
406
-
407
- export function getObjectData(objectName){
408
- return _objectsData[objectName]
409
- }
410
-
411
- export function setObjectData(objectName, records){
412
- if(_objectsData[objectName]){
413
- _objectsData[objectName].concat(records)
414
- }else{
415
- _objectsData[objectName] = records
416
- }
417
- }
418
-
419
- export function addObjectDataFiles(filePath: string){
420
- let result = util.loadObjectDataFiles(filePath);
421
- _.each(result, function(item){
422
- if(item.objectName){
423
- setObjectData(item.objectName, item.records);
424
- }
425
- })
426
- }
@@ -1,43 +0,0 @@
1
- import { SteedosTriggerContextConfig } from "./trigger";
2
- import { getSteedosSchema } from "./schema";
3
- import { getObjectServiceName } from '../services/index';
4
- import { generateActionParams } from "../util";
5
-
6
- export async function brokeEmitEvents(objectName: string, method: string, context: SteedosTriggerContextConfig) {
7
- if (method == 'insert' || method == 'update' || method == 'delete') {
8
- let schema = getSteedosSchema();
9
- let when = "";
10
- // let id;
11
- // let isInsert = false;
12
- // let isUpdate = false;
13
- // let isDelete = false;
14
- if (method == 'insert') {
15
- when = 'inserted';
16
- // id = context.doc._id;
17
- // isInsert = true;
18
- } else if (method == 'update') {
19
- when = 'updated';
20
- // id = context.id;
21
- // isUpdate = true;
22
- } else if (method == 'delete') {
23
- when = 'deleted';
24
- // id = context.id;
25
- // isDelete = true;
26
- }
27
- // let payload = {
28
- // objectApiName: objectName,
29
- // recordId: id,
30
- // userId: context.userId,
31
- // spaceId: context.spaceId,
32
- // isInsert,
33
- // isUpdate,
34
- // isDelete
35
- // };
36
- let params = generateActionParams(`after.${method}`, context)
37
- let payload = Object.assign({}, {objectApiName: objectName}, params)
38
- if (schema.broker) {
39
- await schema.broker.emit(`${getObjectServiceName(objectName)}.${when}`, payload);
40
- }
41
- }
42
-
43
- }
@@ -1,20 +0,0 @@
1
- import { getSteedosSchema } from ".";
2
- import * as _ from 'underscore';
3
- export async function getObjectLayouts(profileApiName, spaceId, objectApiName?){
4
- const schema = getSteedosSchema();
5
- const configs = await schema.metadataRegister?.filterLayouts(profileApiName, spaceId, objectApiName);
6
- const layouts = _.pluck(configs, 'metadata');
7
-
8
- _.each(layouts, function(layout){
9
- if(!layout._id){
10
- layout._id = `${layout.object_name}.${layout.name}`
11
- }
12
- })
13
- return layouts;
14
- }
15
-
16
- export async function getObjectLayout(objectLayoutFullName){
17
- const schema = getSteedosSchema();
18
- const config = await schema.metadataRegister?.getLayout(objectLayoutFullName);
19
- return config?.metadata;
20
- }
@@ -1,134 +0,0 @@
1
- import _ = require('underscore')
2
-
3
- abstract class SteedosObjectPermissionTypeProperties {
4
- abstract name?: string
5
- object_name?: string
6
- allowRead?: boolean
7
- allowCreate?: boolean
8
- allowEdit?: boolean
9
- allowDelete?: boolean
10
- viewAllRecords?: boolean
11
- modifyAllRecords?: boolean
12
- viewCompanyRecords?: boolean
13
- modifyCompanyRecords?: boolean
14
- allowReadFiles?: boolean
15
- allowEditFiles?: boolean
16
- allowCreateFiles?: boolean
17
- allowDeleteFiles?: boolean
18
- viewAllFiles?: boolean
19
- modifyAllFiles?: boolean
20
- disabled_list_views?: []
21
- disabled_actions?: []
22
- unreadable_fields?: string[]
23
- uneditable_fields?: string[]
24
- unrelated_objects?: string[]
25
- field_permissions?: any
26
- viewAssignCompanysRecords?: string[]
27
- modifyAssignCompanysRecords?: string[]
28
- }
29
-
30
- export interface SteedosObjectPermissionTypeConfig extends SteedosObjectPermissionTypeProperties { }
31
-
32
- export class SteedosObjectPermissionType extends SteedosObjectPermissionTypeProperties {
33
- private _name: string;
34
-
35
- private properties: string[] = ['name']
36
-
37
- constructor(object_name: string, config: SteedosObjectPermissionTypeConfig) {
38
- super()
39
- if (!config.name) {
40
- throw new Error('name is required');
41
- }
42
-
43
- _.each(config, (value: any, key: string) => {
44
- this[key] = value
45
- this.properties.push(key)
46
- })
47
-
48
- if (this.allowCreate) {
49
- this.allowRead = true;
50
- }
51
- if (this.allowEdit) {
52
- this.allowRead = true;
53
- }
54
- if (this.allowDelete) {
55
- this.allowEdit = true;
56
- this.allowRead = true;
57
- }
58
- if (this.viewAllRecords) {
59
- this.allowRead = true;
60
- }
61
- if (this.modifyAllRecords) {
62
- this.allowRead = true;
63
- this.allowEdit = true;
64
- this.allowDelete = true;
65
- this.viewAllRecords = true;
66
- }
67
- if (this.modifyCompanyRecords) {
68
- this.allowRead = true;
69
- this.allowEdit = true;
70
- this.allowDelete = true;
71
- this.viewCompanyRecords = true;
72
- }
73
- if (this.viewCompanyRecords) {
74
- this.allowRead = true;
75
- }
76
-
77
- if (!_.isEmpty(this.viewAssignCompanysRecords)) {
78
- this.allowRead = true;
79
- }
80
-
81
- if (!_.isEmpty(this.modifyAssignCompanysRecords)) {
82
- this.allowRead = true;
83
- this.allowEdit = true;
84
- }
85
-
86
- if (this.allowRead) {
87
- typeof this.allowReadFiles !== "boolean" && (this.allowReadFiles = true);
88
- typeof this.viewAllFiles !== "boolean" && (this.viewAllFiles = true);
89
- }
90
- if (this.allowEdit) {
91
- typeof this.allowCreateFiles !== "boolean" && (this.allowCreateFiles = true);
92
- typeof this.allowEditFiles !== "boolean" && (this.allowEditFiles = true);
93
- typeof this.allowDeleteFiles !== "boolean" && (this.allowDeleteFiles = true);
94
- }
95
- if (this.modifyAllRecords) {
96
- typeof this.modifyAllFiles !== "boolean" && (this.modifyAllFiles = true);
97
- }
98
- if (this.allowCreateFiles) {
99
- this.allowReadFiles = true;
100
- }
101
- if (this.allowEditFiles) {
102
- this.allowReadFiles = true;
103
- }
104
- if (this.allowDeleteFiles) {
105
- this.allowEditFiles = true;
106
- this.allowReadFiles = true;
107
- }
108
- if (this.viewAllFiles) {
109
- this.allowReadFiles = true;
110
- }
111
- if (this.modifyAllFiles) {
112
- this.allowReadFiles = true;
113
- this.allowEditFiles = true;
114
- this.allowDeleteFiles = true;
115
- this.viewAllFiles = true;
116
- }
117
- this.object_name = object_name
118
- }
119
-
120
- toConfig() {
121
- let config = {}
122
- this.properties.forEach((property) => {
123
- config[property] = this[property]
124
- })
125
- return config
126
- }
127
-
128
- public get name(): string {
129
- return this._name;
130
- }
131
- public set name(value: string) {
132
- this._name = value;
133
- }
134
- }
@@ -1,28 +0,0 @@
1
- export type SteedosQueryFilters = any
2
-
3
- /**
4
- * FindOptions is set of connection options shared by all database types.
5
- */
6
- export type SteedosQueryOptions = {
7
-
8
- fields?: Array<string> | string; //['字段名1', '字段名2'] || '字段名1, 字段名2'
9
-
10
- readonly filters?: SteedosQueryFilters;
11
-
12
- /**
13
- * Query options for top, fetch only the top number of data
14
- */
15
- readonly top?: number;
16
-
17
- /**
18
- * Query options for skip, fetch only the data after skip count
19
- */
20
- readonly skip?: number;
21
-
22
- /**
23
- * Query options for sort, the sort of data for fetch
24
- */
25
- readonly sort?: string;
26
-
27
-
28
- }