@object-ui/types 0.3.0 → 0.5.0
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/README.md +19 -11
- package/dist/api-types.d.ts +7 -0
- package/dist/api-types.d.ts.map +1 -1
- package/dist/api-types.js +4 -6
- package/dist/app.d.ts +17 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -3
- package/dist/base.d.ts +7 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +4 -6
- package/dist/blocks.d.ts +332 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +8 -0
- package/dist/complex.d.ts +68 -1
- package/dist/complex.d.ts.map +1 -1
- package/dist/complex.js +4 -5
- package/dist/crud.d.ts +181 -3
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +4 -6
- package/dist/data-display.d.ts +54 -2
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +4 -5
- package/dist/data-protocol.d.ts +1268 -0
- package/dist/data-protocol.d.ts.map +1 -0
- package/dist/data-protocol.js +8 -0
- package/dist/data.d.ts +22 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +4 -6
- package/dist/disclosure.d.ts +70 -1
- package/dist/disclosure.d.ts.map +1 -1
- package/dist/disclosure.js +4 -5
- package/dist/feedback.d.ts +68 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +4 -5
- package/dist/field-types.d.ts +728 -0
- package/dist/field-types.d.ts.map +1 -0
- package/dist/field-types.js +8 -0
- package/dist/form.d.ts +123 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +4 -5
- package/dist/index.d.ts +48 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -37
- package/dist/layout.d.ts +66 -16
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +4 -6
- package/dist/navigation.d.ts +102 -2
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +4 -5
- package/dist/objectql.d.ts +491 -54
- package/dist/objectql.d.ts.map +1 -1
- package/dist/objectql.js +4 -6
- package/dist/overlay.d.ts +31 -1
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +4 -5
- package/dist/plugin-scope.d.ts +194 -0
- package/dist/plugin-scope.d.ts.map +1 -0
- package/dist/plugin-scope.js +8 -0
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/reports.d.ts +336 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +8 -0
- package/dist/theme.d.ts +289 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +8 -0
- package/dist/ui-action.d.ts +175 -0
- package/dist/ui-action.d.ts.map +1 -0
- package/dist/ui-action.js +8 -0
- package/dist/views.d.ts +417 -0
- package/dist/views.d.ts.map +1 -0
- package/dist/views.js +8 -0
- package/dist/zod/app.zod.d.ts +120 -0
- package/dist/zod/app.zod.d.ts.map +1 -0
- package/dist/zod/app.zod.js +60 -0
- package/dist/zod/base.zod.d.ts +202 -0
- package/dist/zod/base.zod.d.ts.map +1 -0
- package/dist/zod/base.zod.js +198 -0
- package/dist/zod/blocks.zod.d.ts +834 -0
- package/dist/zod/blocks.zod.d.ts.map +1 -0
- package/dist/zod/blocks.zod.js +145 -0
- package/dist/zod/complex.zod.d.ts +742 -0
- package/dist/zod/complex.zod.d.ts.map +1 -0
- package/dist/zod/complex.zod.js +233 -0
- package/dist/zod/crud.zod.d.ts +598 -0
- package/dist/zod/crud.zod.d.ts.map +1 -0
- package/dist/zod/crud.zod.js +230 -0
- package/dist/zod/data-display.zod.d.ts +996 -0
- package/dist/zod/data-display.zod.d.ts.map +1 -0
- package/dist/zod/data-display.zod.js +266 -0
- package/dist/zod/disclosure.zod.d.ts +267 -0
- package/dist/zod/disclosure.zod.d.ts.map +1 -0
- package/dist/zod/disclosure.zod.js +84 -0
- package/dist/zod/feedback.zod.d.ts +538 -0
- package/dist/zod/feedback.zod.d.ts.map +1 -0
- package/dist/zod/feedback.zod.js +127 -0
- package/dist/zod/form.zod.d.ts +1308 -0
- package/dist/zod/form.zod.d.ts.map +1 -0
- package/dist/zod/form.zod.js +406 -0
- package/dist/zod/index.zod.d.ts +4985 -0
- package/dist/zod/index.zod.d.ts.map +1 -0
- package/dist/zod/index.zod.js +183 -0
- package/dist/zod/layout.zod.d.ts +1048 -0
- package/dist/zod/layout.zod.d.ts.map +1 -0
- package/dist/zod/layout.zod.js +241 -0
- package/dist/zod/navigation.zod.d.ts +486 -0
- package/dist/zod/navigation.zod.d.ts.map +1 -0
- package/dist/zod/navigation.zod.js +142 -0
- package/dist/zod/objectql.zod.d.ts +1261 -0
- package/dist/zod/objectql.zod.d.ts.map +1 -0
- package/dist/zod/objectql.zod.js +248 -0
- package/dist/zod/overlay.zod.d.ts +691 -0
- package/dist/zod/overlay.zod.d.ts.map +1 -0
- package/dist/zod/overlay.zod.js +179 -0
- package/dist/zod/reports.zod.d.ts +1628 -0
- package/dist/zod/reports.zod.d.ts.map +1 -0
- package/dist/zod/reports.zod.js +152 -0
- package/dist/zod/theme.zod.d.ts +611 -0
- package/dist/zod/theme.zod.d.ts.map +1 -0
- package/dist/zod/theme.zod.js +130 -0
- package/dist/zod/views.zod.d.ts +675 -0
- package/dist/zod/views.zod.d.ts.map +1 -0
- package/dist/zod/views.zod.js +159 -0
- package/package.json +9 -1
- package/src/__tests__/namespace-exports.test.ts +80 -0
- package/src/__tests__/phase2-schemas.test.ts +639 -0
- package/src/api-types.ts +8 -0
- package/src/app.ts +20 -0
- package/src/base.ts +8 -0
- package/src/blocks.ts +405 -0
- package/src/complex.ts +69 -1
- package/src/crud.ts +185 -3
- package/src/data-display.ts +60 -2
- package/src/data-protocol.ts +1679 -0
- package/src/data.ts +21 -1
- package/src/disclosure.ts +74 -1
- package/src/feedback.ts +76 -2
- package/src/field-types.ts +846 -0
- package/src/form.ts +131 -1
- package/src/index.ts +305 -8
- package/src/layout.ts +70 -15
- package/src/navigation.ts +109 -2
- package/src/objectql.ts +563 -59
- package/src/overlay.ts +35 -1
- package/src/plugin-scope.ts +210 -0
- package/src/registry.ts +8 -0
- package/src/reports.ts +408 -0
- package/src/theme.ts +351 -0
- package/src/ui-action.ts +276 -0
- package/src/views.ts +429 -0
- package/src/zod/README.md +329 -0
- package/src/zod/app.zod.ts +72 -0
- package/src/zod/base.zod.ts +229 -0
- package/src/zod/blocks.zod.ts +170 -0
- package/src/zod/complex.zod.ts +258 -0
- package/src/zod/crud.zod.ts +259 -0
- package/src/zod/data-display.zod.ts +290 -0
- package/src/zod/disclosure.zod.ts +92 -0
- package/src/zod/feedback.zod.ts +138 -0
- package/src/zod/form.zod.ts +434 -0
- package/src/zod/index.zod.ts +425 -0
- package/src/zod/layout.zod.ts +262 -0
- package/src/zod/navigation.zod.ts +159 -0
- package/src/zod/objectql.zod.ts +268 -0
- package/src/zod/overlay.zod.ts +196 -0
- package/src/zod/reports.zod.ts +183 -0
- package/src/zod/theme.zod.ts +155 -0
- package/src/zod/views.zod.ts +182 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @object-ui/types/zod - View Component Zod Validators
|
|
10
|
+
*
|
|
11
|
+
* Zod validation schemas for view components.
|
|
12
|
+
* Following @objectstack/spec UI specification format.
|
|
13
|
+
*
|
|
14
|
+
* @module zod/views
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
import { BaseSchema, SchemaNodeSchema } from './base.zod.js';
|
|
19
|
+
/**
|
|
20
|
+
* View Type Schema
|
|
21
|
+
*/
|
|
22
|
+
export const ViewTypeSchema = z.enum(['list', 'detail', 'grid', 'kanban', 'calendar', 'timeline', 'map']).describe('View type');
|
|
23
|
+
/**
|
|
24
|
+
* Detail View Field Schema
|
|
25
|
+
*/
|
|
26
|
+
export const DetailViewFieldSchema = z.object({
|
|
27
|
+
name: z.string().describe('Field name/path'),
|
|
28
|
+
label: z.string().optional().describe('Display label'),
|
|
29
|
+
type: z.enum(['text', 'image', 'link', 'badge', 'date', 'datetime', 'json', 'html', 'markdown', 'custom']).optional().describe('Field type for rendering'),
|
|
30
|
+
format: z.string().optional().describe('Format string (e.g., date format)'),
|
|
31
|
+
render: SchemaNodeSchema.optional().describe('Custom renderer'),
|
|
32
|
+
value: z.any().optional().describe('Field value'),
|
|
33
|
+
readonly: z.boolean().optional().describe('Whether field is read-only'),
|
|
34
|
+
visible: z.union([z.boolean(), z.string()]).optional().describe('Field visibility condition'),
|
|
35
|
+
span: z.number().optional().describe('Span across columns (for grid layout)'),
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Detail View Section Schema
|
|
39
|
+
*/
|
|
40
|
+
export const DetailViewSectionSchema = z.object({
|
|
41
|
+
title: z.string().optional().describe('Section title'),
|
|
42
|
+
description: z.string().optional().describe('Section description'),
|
|
43
|
+
icon: z.string().optional().describe('Section icon'),
|
|
44
|
+
fields: z.array(DetailViewFieldSchema).describe('Fields in this section'),
|
|
45
|
+
collapsible: z.boolean().optional().describe('Collapsible section'),
|
|
46
|
+
defaultCollapsed: z.boolean().optional().describe('Default collapsed state'),
|
|
47
|
+
columns: z.number().optional().describe('Grid columns for field layout'),
|
|
48
|
+
visible: z.union([z.boolean(), z.string()]).optional().describe('Section visibility condition'),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Detail View Tab Schema
|
|
52
|
+
*/
|
|
53
|
+
export const DetailViewTabSchema = z.object({
|
|
54
|
+
key: z.string().describe('Tab key/identifier'),
|
|
55
|
+
label: z.string().describe('Tab label'),
|
|
56
|
+
icon: z.string().optional().describe('Tab icon'),
|
|
57
|
+
content: z.union([SchemaNodeSchema, z.array(SchemaNodeSchema)]).describe('Tab content'),
|
|
58
|
+
visible: z.union([z.boolean(), z.string()]).optional().describe('Tab visibility condition'),
|
|
59
|
+
badge: z.union([z.string(), z.number()]).optional().describe('Badge count'),
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Detail View Schema
|
|
63
|
+
*/
|
|
64
|
+
export const DetailViewSchema = BaseSchema.extend({
|
|
65
|
+
type: z.literal('detail-view'),
|
|
66
|
+
title: z.string().optional().describe('Detail title'),
|
|
67
|
+
api: z.string().optional().describe('API endpoint to fetch detail data'),
|
|
68
|
+
resourceId: z.union([z.string(), z.number()]).optional().describe('Resource ID to display'),
|
|
69
|
+
objectName: z.string().optional().describe('Object name (for ObjectQL integration)'),
|
|
70
|
+
data: z.any().optional().describe('Data to display (if not fetching from API)'),
|
|
71
|
+
layout: z.enum(['vertical', 'horizontal', 'grid']).optional().describe('Layout mode'),
|
|
72
|
+
columns: z.number().optional().describe('Grid columns (for grid layout)'),
|
|
73
|
+
sections: z.array(DetailViewSectionSchema).optional().describe('Field sections for organized display'),
|
|
74
|
+
fields: z.array(DetailViewFieldSchema).optional().describe('Direct fields (without sections)'),
|
|
75
|
+
actions: z.array(z.any()).optional().describe('Actions available in detail view'),
|
|
76
|
+
tabs: z.array(DetailViewTabSchema).optional().describe('Tabs for additional content'),
|
|
77
|
+
showBack: z.boolean().optional().default(true).describe('Show back button'),
|
|
78
|
+
backUrl: z.string().optional().describe('Back button URL'),
|
|
79
|
+
onBack: z.string().optional().describe('Custom back action'),
|
|
80
|
+
showEdit: z.boolean().optional().describe('Show edit button'),
|
|
81
|
+
editUrl: z.string().optional().describe('Edit button URL'),
|
|
82
|
+
showDelete: z.boolean().optional().describe('Show delete button'),
|
|
83
|
+
deleteConfirmation: z.string().optional().describe('Delete confirmation message'),
|
|
84
|
+
loading: z.boolean().optional().default(true).describe('Whether to show loading state'),
|
|
85
|
+
header: SchemaNodeSchema.optional().describe('Custom header content'),
|
|
86
|
+
footer: SchemaNodeSchema.optional().describe('Custom footer content'),
|
|
87
|
+
related: z.array(z.object({
|
|
88
|
+
title: z.string().describe('Relation title'),
|
|
89
|
+
type: z.enum(['list', 'grid', 'table']).describe('Relation type'),
|
|
90
|
+
api: z.string().optional().describe('API endpoint for related data'),
|
|
91
|
+
data: z.array(z.any()).optional().describe('Static data'),
|
|
92
|
+
columns: z.array(z.any()).optional().describe('Columns for table view'),
|
|
93
|
+
fields: z.array(z.string()).optional().describe('Fields for list view'),
|
|
94
|
+
})).optional().describe('Related records section'),
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* View Switcher Schema
|
|
98
|
+
*/
|
|
99
|
+
export const ViewSwitcherSchema = BaseSchema.extend({
|
|
100
|
+
type: z.literal('view-switcher'),
|
|
101
|
+
views: z.array(z.object({
|
|
102
|
+
type: ViewTypeSchema.describe('View type'),
|
|
103
|
+
label: z.string().optional().describe('View label'),
|
|
104
|
+
icon: z.string().optional().describe('View icon'),
|
|
105
|
+
schema: SchemaNodeSchema.optional().describe('View schema'),
|
|
106
|
+
})).describe('Available view types'),
|
|
107
|
+
defaultView: ViewTypeSchema.optional().describe('Default/active view'),
|
|
108
|
+
activeView: ViewTypeSchema.optional().describe('Current active view'),
|
|
109
|
+
variant: z.enum(['tabs', 'buttons', 'dropdown']).optional().describe('Switcher variant'),
|
|
110
|
+
position: z.enum(['top', 'bottom', 'left', 'right']).optional().describe('Switcher position'),
|
|
111
|
+
onViewChange: z.string().optional().describe('View change callback'),
|
|
112
|
+
persistPreference: z.boolean().optional().describe('Persist view preference'),
|
|
113
|
+
storageKey: z.string().optional().describe('Storage key for persisting view'),
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Filter UI Schema
|
|
117
|
+
*/
|
|
118
|
+
export const FilterUISchema = BaseSchema.extend({
|
|
119
|
+
type: z.literal('filter-ui'),
|
|
120
|
+
filters: z.array(z.object({
|
|
121
|
+
field: z.string().describe('Filter field'),
|
|
122
|
+
label: z.string().optional().describe('Filter label'),
|
|
123
|
+
type: z.enum(['text', 'number', 'select', 'date', 'date-range', 'boolean']).describe('Filter type'),
|
|
124
|
+
operator: z.enum(['equals', 'contains', 'startsWith', 'gt', 'lt', 'between', 'in']).optional().describe('Filter operator'),
|
|
125
|
+
options: z.array(z.object({ label: z.string(), value: z.any() })).optional().describe('Options for select filter'),
|
|
126
|
+
placeholder: z.string().optional().describe('Placeholder'),
|
|
127
|
+
})).describe('Available filters'),
|
|
128
|
+
values: z.record(z.string(), z.any()).optional().describe('Current filter values'),
|
|
129
|
+
onChange: z.string().optional().describe('Filter change callback'),
|
|
130
|
+
showClear: z.boolean().optional().describe('Show clear button'),
|
|
131
|
+
showApply: z.boolean().optional().describe('Show apply button'),
|
|
132
|
+
layout: z.enum(['inline', 'popover', 'drawer']).optional().describe('Filter layout'),
|
|
133
|
+
});
|
|
134
|
+
/**
|
|
135
|
+
* Sort UI Schema
|
|
136
|
+
*/
|
|
137
|
+
export const SortUISchema = BaseSchema.extend({
|
|
138
|
+
type: z.literal('sort-ui'),
|
|
139
|
+
fields: z.array(z.object({
|
|
140
|
+
field: z.string().describe('Field name'),
|
|
141
|
+
label: z.string().optional().describe('Field label'),
|
|
142
|
+
})).describe('Sortable fields'),
|
|
143
|
+
sort: z.array(z.object({
|
|
144
|
+
field: z.string().describe('Field to sort by'),
|
|
145
|
+
direction: z.enum(['asc', 'desc']).describe('Sort direction'),
|
|
146
|
+
})).optional().describe('Current sort configuration'),
|
|
147
|
+
onChange: z.string().optional().describe('Sort change callback'),
|
|
148
|
+
multiple: z.boolean().optional().describe('Allow multiple sort fields'),
|
|
149
|
+
variant: z.enum(['dropdown', 'buttons']).optional().describe('UI variant'),
|
|
150
|
+
});
|
|
151
|
+
/**
|
|
152
|
+
* Union of all view schemas
|
|
153
|
+
*/
|
|
154
|
+
export const ViewComponentSchema = z.union([
|
|
155
|
+
DetailViewSchema,
|
|
156
|
+
ViewSwitcherSchema,
|
|
157
|
+
FilterUISchema,
|
|
158
|
+
SortUISchema,
|
|
159
|
+
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Pure TypeScript type definitions for Object UI - The Protocol Layer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -47,6 +47,10 @@
|
|
|
47
47
|
"./data": {
|
|
48
48
|
"types": "./dist/data.d.ts",
|
|
49
49
|
"import": "./dist/data.js"
|
|
50
|
+
},
|
|
51
|
+
"./zod": {
|
|
52
|
+
"types": "./dist/zod/index.zod.d.ts",
|
|
53
|
+
"import": "./dist/zod/index.zod.js"
|
|
50
54
|
}
|
|
51
55
|
},
|
|
52
56
|
"files": [
|
|
@@ -70,6 +74,10 @@
|
|
|
70
74
|
"url": "https://github.com/objectstack-ai/objectui.git",
|
|
71
75
|
"directory": "packages/types"
|
|
72
76
|
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"@objectstack/spec": "^0.9.1",
|
|
79
|
+
"zod": "^4.3.6"
|
|
80
|
+
},
|
|
73
81
|
"devDependencies": {
|
|
74
82
|
"typescript": "^5.9.3"
|
|
75
83
|
},
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test to verify ObjectStack Spec v0.6.1 namespace exports
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
import type { Data, UI, System, AI, API, Auth, Hub, Automation, Permission, Shared } from '../index';
|
|
6
|
+
|
|
7
|
+
describe('ObjectStack Spec v0.6.1 Namespace Exports', () => {
|
|
8
|
+
it('should export Data namespace', () => {
|
|
9
|
+
// Type check only - this verifies the namespace is exported
|
|
10
|
+
const field: Data.Field = {
|
|
11
|
+
name: 'test',
|
|
12
|
+
type: 'text',
|
|
13
|
+
label: 'Test Field',
|
|
14
|
+
};
|
|
15
|
+
expect(field.name).toBe('test');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('should export UI namespace', () => {
|
|
19
|
+
// Type check only - verify UI namespace exists
|
|
20
|
+
type UITest = UI.Component | undefined;
|
|
21
|
+
const uiComponent: UITest = undefined;
|
|
22
|
+
expect(uiComponent).toBeUndefined();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should export System namespace', () => {
|
|
26
|
+
// Type check only - verify System namespace exists
|
|
27
|
+
type SystemTest = System.Environment | undefined;
|
|
28
|
+
const systemEnv: SystemTest = undefined;
|
|
29
|
+
expect(systemEnv).toBeUndefined();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should export AI namespace', () => {
|
|
33
|
+
// Type check only - verify AI namespace exists
|
|
34
|
+
type AITest = AI.Model | undefined;
|
|
35
|
+
const aiModel: AITest = undefined;
|
|
36
|
+
expect(aiModel).toBeUndefined();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('should export API namespace', () => {
|
|
40
|
+
// Type check only - verify API namespace exists
|
|
41
|
+
type APITest = API.Endpoint | undefined;
|
|
42
|
+
const apiEndpoint: APITest = undefined;
|
|
43
|
+
expect(apiEndpoint).toBeUndefined();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should export Auth namespace', () => {
|
|
47
|
+
// Type check only - verify Auth namespace exists
|
|
48
|
+
type AuthTest = Auth.User | undefined;
|
|
49
|
+
const authUser: AuthTest = undefined;
|
|
50
|
+
expect(authUser).toBeUndefined();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('should export Hub namespace', () => {
|
|
54
|
+
// Type check only - verify Hub namespace exists
|
|
55
|
+
type HubTest = Hub.Tenant | undefined;
|
|
56
|
+
const hubTenant: HubTest = undefined;
|
|
57
|
+
expect(hubTenant).toBeUndefined();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('should export Automation namespace', () => {
|
|
61
|
+
// Type check only - verify Automation namespace exists
|
|
62
|
+
type AutomationTest = Automation.Workflow | undefined;
|
|
63
|
+
const workflow: AutomationTest = undefined;
|
|
64
|
+
expect(workflow).toBeUndefined();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('should export Permission namespace', () => {
|
|
68
|
+
// Type check only - verify Permission namespace exists
|
|
69
|
+
type PermissionTest = Permission.PermissionSet | undefined;
|
|
70
|
+
const permissionSet: PermissionTest = undefined;
|
|
71
|
+
expect(permissionSet).toBeUndefined();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('should export Shared namespace', () => {
|
|
75
|
+
// Type check only - verify Shared namespace exists
|
|
76
|
+
type SharedTest = Shared.ObjectId | undefined;
|
|
77
|
+
const objectId: SharedTest = undefined;
|
|
78
|
+
expect(objectId).toBeUndefined();
|
|
79
|
+
});
|
|
80
|
+
});
|