@carthooks/arcubase-cli 0.1.7 → 0.1.9
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.
- package/bundle/arcubase-admin.mjs +1042 -5056
- package/bundle/arcubase.mjs +1042 -5056
- package/dist/generated/command_registry.generated.d.ts +693 -2812
- package/dist/generated/command_registry.generated.d.ts.map +1 -1
- package/dist/generated/command_registry.generated.js +812 -4100
- package/dist/generated/type_index.generated.d.ts +8 -397
- package/dist/generated/type_index.generated.d.ts.map +1 -1
- package/dist/generated/type_index.generated.js +8 -403
- package/dist/generated/zod_registry.generated.d.ts +33 -261
- package/dist/generated/zod_registry.generated.d.ts.map +1 -1
- package/dist/generated/zod_registry.generated.js +36 -365
- package/dist/runtime/body_loader.d.ts.map +1 -1
- package/dist/runtime/body_loader.js +12 -0
- package/dist/runtime/command_registry.d.ts +3 -21
- package/dist/runtime/command_registry.d.ts.map +1 -1
- package/dist/runtime/command_registry.js +17 -23
- package/dist/runtime/execute.d.ts +3 -3
- package/dist/runtime/execute.d.ts.map +1 -1
- package/dist/runtime/execute.js +53 -157
- package/dist/runtime/http.js +1 -1
- package/dist/runtime/upload.js +3 -3
- package/dist/runtime/zod_registry.d.ts.map +1 -1
- package/dist/runtime/zod_registry.js +7 -24
- package/dist/tests/command_registry.test.js +81 -28
- package/dist/tests/execute_validation.test.js +175 -510
- package/dist/tests/help.test.js +39 -62
- package/dist/tests/upload.test.js +4 -4
- package/dist/tests/zod_registry.test.js +0 -10
- package/package.json +1 -1
- package/sdk-dist/docs/runtime-reference/README.md +20 -30
- package/sdk-dist/docs/runtime-reference/entity-schema/README.md +4 -5
- package/sdk-dist/docs/runtime-reference/entity-schema/linkto.md +3 -3
- package/sdk-dist/docs/runtime-reference/entity-schema/query.md +3 -3
- package/sdk-dist/docs/runtime-reference/entity-schema/relation.md +3 -3
- package/sdk-dist/docs/runtime-reference/entity-schema/relationfield.md +3 -3
- package/sdk-dist/docs/runtime-reference/entity-schema/subform.md +2 -2
- package/sdk-dist/docs/runtime-reference/entity-schema.md +4 -4
- package/sdk-dist/docs/runtime-reference/examples/README.md +2 -2
- package/sdk-dist/docs/runtime-reference/examples/oms-01/README.md +12 -12
- package/sdk-dist/docs/runtime-reference/examples/oms-01/app-overview.md +1 -1
- package/sdk-dist/docs/runtime-reference/row-crud.md +11 -32
- package/sdk-dist/docs/runtime-reference/search-and-bulk-actions.md +16 -47
- package/sdk-dist/docs/runtime-reference/table-lifecycle.md +11 -27
- package/sdk-dist/docs/runtime-reference/uploads.md +1 -1
- package/sdk-dist/docs/runtime-reference/workflow/README.md +19 -0
- package/sdk-dist/generated/command_registry.generated.ts +814 -4102
- package/sdk-dist/generated/type_index.generated.ts +8 -403
- package/sdk-dist/generated/zod_registry.generated.ts +44 -500
- package/sdk-dist/types/app.ts +3 -10
- package/sdk-dist/types/common.ts +7 -0
- package/sdk-dist/types/global-action.ts +2 -1
- package/src/generated/command_registry.generated.ts +814 -4102
- package/src/generated/type_index.generated.ts +8 -403
- package/src/generated/zod_registry.generated.ts +44 -500
- package/src/runtime/body_loader.ts +11 -0
- package/src/runtime/command_registry.ts +22 -44
- package/src/runtime/execute.ts +157 -165
- package/src/runtime/http.ts +1 -1
- package/src/runtime/upload.ts +3 -3
- package/src/runtime/zod_registry.ts +7 -25
- package/src/tests/command_registry.test.ts +81 -31
- package/src/tests/execute_validation.test.ts +236 -603
- package/src/tests/help.test.ts +47 -66
- package/src/tests/upload.test.ts +4 -4
- package/src/tests/zod_registry.test.ts +0 -13
- package/sdk-dist/docs/runtime-reference/app-discovery.md +0 -68
|
@@ -67,19 +67,12 @@ const examplesIndexDocHint: RuntimeDocHint = {
|
|
|
67
67
|
file: '/opt/arcubase-sdk/docs/runtime-reference/examples/README.md',
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
const appDiscoveryDocHint: RuntimeDocHint = {
|
|
71
|
-
title: 'App discovery',
|
|
72
|
-
file: '/opt/arcubase-sdk/docs/runtime-reference/app-discovery.md',
|
|
73
|
-
}
|
|
74
|
-
|
|
75
70
|
const docHintIndex: Record<string, RuntimeDocHint[]> = {
|
|
76
71
|
AppCreateByTenantsReqVO: [
|
|
77
|
-
appDiscoveryDocHint,
|
|
78
72
|
{ title: 'Table lifecycle', file: '/opt/arcubase-sdk/docs/runtime-reference/table-lifecycle.md' },
|
|
79
73
|
examplesIndexDocHint,
|
|
80
74
|
],
|
|
81
75
|
AppCreateEntityReqVO: [
|
|
82
|
-
appDiscoveryDocHint,
|
|
83
76
|
{ title: 'Table lifecycle', file: '/opt/arcubase-sdk/docs/runtime-reference/table-lifecycle.md' },
|
|
84
77
|
examplesIndexDocHint,
|
|
85
78
|
],
|
|
@@ -155,25 +148,14 @@ export function getDocHints(typeName: string): RuntimeDocHint[] {
|
|
|
155
148
|
|
|
156
149
|
const commandDocHintIndex: Record<string, RuntimeDocHint[]> = {
|
|
157
150
|
'admin.app.createAppByTenants': [
|
|
158
|
-
appDiscoveryDocHint,
|
|
159
151
|
{ title: 'Table lifecycle', file: '/opt/arcubase-sdk/docs/runtime-reference/table-lifecycle.md' },
|
|
160
152
|
examplesIndexDocHint,
|
|
161
153
|
],
|
|
162
|
-
'admin.app.listApps': [
|
|
163
|
-
appDiscoveryDocHint,
|
|
164
|
-
examplesIndexDocHint,
|
|
165
|
-
],
|
|
166
|
-
'admin.app.inventory': [
|
|
167
|
-
appDiscoveryDocHint,
|
|
168
|
-
examplesIndexDocHint,
|
|
169
|
-
],
|
|
170
154
|
'admin.app.createEntity': [
|
|
171
|
-
appDiscoveryDocHint,
|
|
172
155
|
{ title: 'Table lifecycle', file: '/opt/arcubase-sdk/docs/runtime-reference/table-lifecycle.md' },
|
|
173
156
|
examplesIndexDocHint,
|
|
174
157
|
],
|
|
175
158
|
'admin.entity.adminGetEntityInfo': [
|
|
176
|
-
appDiscoveryDocHint,
|
|
177
159
|
{ title: 'Table lifecycle', file: '/opt/arcubase-sdk/docs/runtime-reference/table-lifecycle.md' },
|
|
178
160
|
examplesIndexDocHint,
|
|
179
161
|
],
|
|
@@ -183,34 +165,34 @@ const commandDocHintIndex: Record<string, RuntimeDocHint[]> = {
|
|
|
183
165
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
184
166
|
examplesIndexDocHint,
|
|
185
167
|
],
|
|
186
|
-
'user.
|
|
168
|
+
'user.workflow.insertEntity': [
|
|
187
169
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
188
170
|
{ title: 'Uploads', file: '/opt/arcubase-sdk/docs/runtime-reference/uploads.md' },
|
|
189
171
|
examplesIndexDocHint,
|
|
190
172
|
],
|
|
191
|
-
'user.
|
|
173
|
+
'user.workflow.queryEntity': [
|
|
192
174
|
{ title: 'Search and bulk actions', file: '/opt/arcubase-sdk/docs/runtime-reference/search-and-bulk-actions.md' },
|
|
193
175
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
194
176
|
examplesIndexDocHint,
|
|
195
177
|
],
|
|
196
|
-
'user.
|
|
178
|
+
'user.workflow.getEntityRow': [
|
|
197
179
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
198
180
|
examplesIndexDocHint,
|
|
199
181
|
],
|
|
200
|
-
'user.
|
|
182
|
+
'user.workflow.updateEntityRow': [
|
|
201
183
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
202
184
|
{ title: 'Uploads', file: '/opt/arcubase-sdk/docs/runtime-reference/uploads.md' },
|
|
203
185
|
examplesIndexDocHint,
|
|
204
186
|
],
|
|
205
|
-
'user.
|
|
187
|
+
'user.workflow.queryEntitySelection': [
|
|
206
188
|
{ title: 'Search and bulk actions', file: '/opt/arcubase-sdk/docs/runtime-reference/search-and-bulk-actions.md' },
|
|
207
189
|
examplesIndexDocHint,
|
|
208
190
|
],
|
|
209
|
-
'user.
|
|
191
|
+
'user.workflow.deleteEntityRow': [
|
|
210
192
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
211
193
|
examplesIndexDocHint,
|
|
212
194
|
],
|
|
213
|
-
'user.
|
|
195
|
+
'user.workflow.restoreEntityRow': [
|
|
214
196
|
{ title: 'Row CRUD', file: '/opt/arcubase-sdk/docs/runtime-reference/row-crud.md' },
|
|
215
197
|
examplesIndexDocHint,
|
|
216
198
|
],
|
|
@@ -2,41 +2,91 @@ import test from 'node:test'
|
|
|
2
2
|
import assert from 'node:assert/strict'
|
|
3
3
|
|
|
4
4
|
import { adminCommands, userCommands } from '../generated/command_registry.generated.js'
|
|
5
|
-
import { findCommandSuggestions } from '../runtime/command_registry.js'
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
test('admin app list-apps command exists', () => {
|
|
12
|
-
assert.ok(adminCommands.some((c) => c.commandPath.join(' ') === 'app list-apps'))
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
test('admin app inventory command exists', () => {
|
|
16
|
-
const suggestions = findCommandSuggestions('app', 'inventory', 20)
|
|
17
|
-
assert.ok(suggestions.some((item) => item.binary === 'arcubase-admin' && item.moduleName === 'app' && item.commandName === 'inventory'))
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
test('user rows query-entity command exists', () => {
|
|
21
|
-
assert.ok(userCommands.some((c) => c.commandPath.join(' ') === 'rows query-entity'))
|
|
22
|
-
})
|
|
6
|
+
function commandPaths(commands: ReadonlyArray<{ commandPath: readonly string[] }>): string[] {
|
|
7
|
+
return commands.map((item) => item.commandPath.join(' ')).sort()
|
|
8
|
+
}
|
|
23
9
|
|
|
24
|
-
test('
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
10
|
+
test('admin surface is restricted to reset white list', () => {
|
|
11
|
+
const actual = commandPaths(adminCommands)
|
|
12
|
+
const expected = [
|
|
13
|
+
'app create',
|
|
14
|
+
'app delete',
|
|
15
|
+
'app get',
|
|
16
|
+
'app list',
|
|
17
|
+
'app update',
|
|
18
|
+
'table create',
|
|
19
|
+
'table delete',
|
|
20
|
+
'table get',
|
|
21
|
+
'table list',
|
|
22
|
+
'table rename',
|
|
23
|
+
'table update-schema',
|
|
24
|
+
'access-rule assign-users',
|
|
25
|
+
'access-rule create',
|
|
26
|
+
'access-rule delete',
|
|
27
|
+
'access-rule get',
|
|
28
|
+
'access-rule list',
|
|
29
|
+
'access-rule update',
|
|
30
|
+
'workflow create-version',
|
|
31
|
+
'workflow deploy',
|
|
32
|
+
'workflow get',
|
|
33
|
+
'workflow update',
|
|
34
|
+
].sort()
|
|
35
|
+
assert.deepEqual(actual, expected)
|
|
29
36
|
})
|
|
30
37
|
|
|
31
|
-
test('
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
test('user surface is restricted to reset white list', () => {
|
|
39
|
+
const actual = commandPaths(userCommands)
|
|
40
|
+
const expected = [
|
|
41
|
+
'entry',
|
|
42
|
+
'profile get',
|
|
43
|
+
'profile update',
|
|
44
|
+
'row bulk-update',
|
|
45
|
+
'row create',
|
|
46
|
+
'row delete',
|
|
47
|
+
'row get',
|
|
48
|
+
'row query',
|
|
49
|
+
'row selection-action',
|
|
50
|
+
'row update',
|
|
51
|
+
'table dataset',
|
|
52
|
+
'table get',
|
|
53
|
+
'table relation-options',
|
|
54
|
+
'upload check-mobile',
|
|
55
|
+
'upload mobile',
|
|
56
|
+
'upload preview',
|
|
57
|
+
'upload token',
|
|
58
|
+
'workflow approve',
|
|
59
|
+
'workflow countersign',
|
|
60
|
+
'workflow forward',
|
|
61
|
+
'workflow process-map',
|
|
62
|
+
'workflow query-approve-users',
|
|
63
|
+
'workflow query-nodes',
|
|
64
|
+
'workflow resolve',
|
|
65
|
+
'workflow retract',
|
|
66
|
+
'workflow rollback',
|
|
67
|
+
].sort()
|
|
68
|
+
assert.deepEqual(actual, expected)
|
|
37
69
|
})
|
|
38
70
|
|
|
39
|
-
test('
|
|
40
|
-
const
|
|
41
|
-
|
|
71
|
+
test('black list commands are removed from registry', () => {
|
|
72
|
+
const all = new Set([...commandPaths(adminCommands), ...commandPaths(userCommands)])
|
|
73
|
+
const forbidden = [
|
|
74
|
+
'app inventory',
|
|
75
|
+
'app list-apps',
|
|
76
|
+
'app create-entity',
|
|
77
|
+
'entity admin-get-entity-info',
|
|
78
|
+
'entity admin-save-entity',
|
|
79
|
+
'ingress create-entity-ingress',
|
|
80
|
+
'workflow query-entity',
|
|
81
|
+
'workflow insert-entity',
|
|
82
|
+
'workflow update-entity-row',
|
|
83
|
+
'workflow delete-entity-row',
|
|
84
|
+
'workflow restore-entity-row',
|
|
85
|
+
'workflow query-entity-selection',
|
|
86
|
+
'profile change-password',
|
|
87
|
+
'profile auth-channels',
|
|
88
|
+
]
|
|
89
|
+
for (const item of forbidden) {
|
|
90
|
+
assert.equal(all.has(item), false, `${item} should not exist`)
|
|
91
|
+
}
|
|
42
92
|
})
|