@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.
Files changed (66) hide show
  1. package/bundle/arcubase-admin.mjs +1042 -5056
  2. package/bundle/arcubase.mjs +1042 -5056
  3. package/dist/generated/command_registry.generated.d.ts +693 -2812
  4. package/dist/generated/command_registry.generated.d.ts.map +1 -1
  5. package/dist/generated/command_registry.generated.js +812 -4100
  6. package/dist/generated/type_index.generated.d.ts +8 -397
  7. package/dist/generated/type_index.generated.d.ts.map +1 -1
  8. package/dist/generated/type_index.generated.js +8 -403
  9. package/dist/generated/zod_registry.generated.d.ts +33 -261
  10. package/dist/generated/zod_registry.generated.d.ts.map +1 -1
  11. package/dist/generated/zod_registry.generated.js +36 -365
  12. package/dist/runtime/body_loader.d.ts.map +1 -1
  13. package/dist/runtime/body_loader.js +12 -0
  14. package/dist/runtime/command_registry.d.ts +3 -21
  15. package/dist/runtime/command_registry.d.ts.map +1 -1
  16. package/dist/runtime/command_registry.js +17 -23
  17. package/dist/runtime/execute.d.ts +3 -3
  18. package/dist/runtime/execute.d.ts.map +1 -1
  19. package/dist/runtime/execute.js +53 -157
  20. package/dist/runtime/http.js +1 -1
  21. package/dist/runtime/upload.js +3 -3
  22. package/dist/runtime/zod_registry.d.ts.map +1 -1
  23. package/dist/runtime/zod_registry.js +7 -24
  24. package/dist/tests/command_registry.test.js +81 -28
  25. package/dist/tests/execute_validation.test.js +175 -510
  26. package/dist/tests/help.test.js +39 -62
  27. package/dist/tests/upload.test.js +4 -4
  28. package/dist/tests/zod_registry.test.js +0 -10
  29. package/package.json +1 -1
  30. package/sdk-dist/docs/runtime-reference/README.md +20 -30
  31. package/sdk-dist/docs/runtime-reference/entity-schema/README.md +4 -5
  32. package/sdk-dist/docs/runtime-reference/entity-schema/linkto.md +3 -3
  33. package/sdk-dist/docs/runtime-reference/entity-schema/query.md +3 -3
  34. package/sdk-dist/docs/runtime-reference/entity-schema/relation.md +3 -3
  35. package/sdk-dist/docs/runtime-reference/entity-schema/relationfield.md +3 -3
  36. package/sdk-dist/docs/runtime-reference/entity-schema/subform.md +2 -2
  37. package/sdk-dist/docs/runtime-reference/entity-schema.md +4 -4
  38. package/sdk-dist/docs/runtime-reference/examples/README.md +2 -2
  39. package/sdk-dist/docs/runtime-reference/examples/oms-01/README.md +12 -12
  40. package/sdk-dist/docs/runtime-reference/examples/oms-01/app-overview.md +1 -1
  41. package/sdk-dist/docs/runtime-reference/row-crud.md +11 -32
  42. package/sdk-dist/docs/runtime-reference/search-and-bulk-actions.md +16 -47
  43. package/sdk-dist/docs/runtime-reference/table-lifecycle.md +11 -27
  44. package/sdk-dist/docs/runtime-reference/uploads.md +1 -1
  45. package/sdk-dist/docs/runtime-reference/workflow/README.md +19 -0
  46. package/sdk-dist/generated/command_registry.generated.ts +814 -4102
  47. package/sdk-dist/generated/type_index.generated.ts +8 -403
  48. package/sdk-dist/generated/zod_registry.generated.ts +44 -500
  49. package/sdk-dist/types/app.ts +3 -10
  50. package/sdk-dist/types/common.ts +7 -0
  51. package/sdk-dist/types/global-action.ts +2 -1
  52. package/src/generated/command_registry.generated.ts +814 -4102
  53. package/src/generated/type_index.generated.ts +8 -403
  54. package/src/generated/zod_registry.generated.ts +44 -500
  55. package/src/runtime/body_loader.ts +11 -0
  56. package/src/runtime/command_registry.ts +22 -44
  57. package/src/runtime/execute.ts +157 -165
  58. package/src/runtime/http.ts +1 -1
  59. package/src/runtime/upload.ts +3 -3
  60. package/src/runtime/zod_registry.ts +7 -25
  61. package/src/tests/command_registry.test.ts +81 -31
  62. package/src/tests/execute_validation.test.ts +236 -603
  63. package/src/tests/help.test.ts +47 -66
  64. package/src/tests/upload.test.ts +4 -4
  65. package/src/tests/zod_registry.test.ts +0 -13
  66. 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.rows.insertEntity': [
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.rows.queryEntity': [
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.rows.getEntityRow': [
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.rows.updateEntityRow': [
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.rows.queryEntitySelection': [
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.rows.deleteEntityRow': [
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.rows.restoreEntityRow': [
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
- test('admin app create-entity command exists', () => {
8
- assert.ok(adminCommands.some((c) => c.commandPath.join(' ') === 'app create-entity'))
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('inline request type keeps full object text instead of truncated brace', () => {
25
- const command = adminCommands.find((c) => c.commandPath.join(' ') === 'dashboard clone-dashboard')
26
- assert.ok(command)
27
- const typed = command!
28
- assert.match(String(typed.requestType), /^\{\s*name:\s*string\s*\}$/)
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('tag commands no longer emit truncated inline request type', () => {
32
- const command = adminCommands.find((c) => c.commandPath.join(' ') === 'entity-tags batch-add-entity-tags')
33
- assert.ok(command)
34
- const typed = command!
35
- assert.match(String(typed.requestType), /^\{\s*policy_id:\s*string.*selection:\s*any.*tag_names:\s*string\[\]\s*\}$/)
36
- assert.equal(typed.scalarParams.length, 0)
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('suggestions can point wrong admin delete guess to user rows delete command', () => {
40
- const suggestions = findCommandSuggestions('entity', 'admin-delete-entity-row')
41
- assert.ok(suggestions.some((item) => item.binary === 'arcubase' && item.moduleName === 'rows' && item.commandName === 'delete-entity-row'))
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
  })