@elixir-cloud/cloud-registry 2.0.0-alpha.28
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/LICENSE +202 -0
- package/README.md +12 -0
- package/dist/chunks/chunk.3WU6NPWM.js +1 -0
- package/dist/chunks/chunk.HIA3DP4L.js +158 -0
- package/dist/chunks/chunk.HM342EMQ.js +574 -0
- package/dist/chunks/chunk.S3NI7NKU.js +30 -0
- package/dist/chunks/chunk.SG7Q2SX3.js +25 -0
- package/dist/chunks/chunk.U3XZVV4K.js +1 -0
- package/dist/chunks/chunk.V3D32NZ5.js +717 -0
- package/dist/chunks/chunk.XMLA2YKQ.js +10 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +6 -0
- package/dist/components/service-create/index.d.ts +8 -0
- package/dist/components/service-create/index.js +5 -0
- package/dist/components/service-create/service-create.d.ts +41 -0
- package/dist/components/service-create/service-create.js +4 -0
- package/dist/components/service-create/tw-styles.d.ts +1 -0
- package/dist/components/service-create/tw-styles.js +2 -0
- package/dist/custom-elements.json +303 -0
- package/dist/events/ecc-service-create-failed.d.ts +8 -0
- package/dist/events/ecc-service-create-validation-failed.d.ts +8 -0
- package/dist/events/ecc-service-created.d.ts +11 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/global.d.ts +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -0
- package/dist/providers/cr-provider.d.ts +50 -0
- package/dist/providers/cr-provider.js +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/rest-cr-provider.d.ts +62 -0
- package/dist/providers/rest-cr-provider.js +2 -0
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.js +5 -0
- package/dist/react/service-create/index.d.ts +25 -0
- package/dist/react/service-create/index.js +5 -0
- package/dist/vscode.html-custom-data.json +17 -0
- package/dist/web-types.json +66 -0
- package/package.json +77 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { service_create_default } from './chunk.V3D32NZ5.js';
|
|
2
|
+
|
|
3
|
+
// src/components/service-create/index.ts
|
|
4
|
+
var service_create_default2 = service_create_default;
|
|
5
|
+
window.customElements.define(
|
|
6
|
+
"ecc-client-elixir-cloud-registry-service-create",
|
|
7
|
+
service_create_default
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export { service_create_default2 as service_create_default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./service-create/index.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import ECCClientElixirCloudRegistryServiceCreate from "./service-create.js";
|
|
2
|
+
export * from "./service-create.js";
|
|
3
|
+
export default ECCClientElixirCloudRegistryServiceCreate;
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
"ecc-client-elixir-cloud-registry-service-create": ECCClientElixirCloudRegistryServiceCreate;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { service_create_default as default } from '../../chunks/chunk.XMLA2YKQ.js';
|
|
2
|
+
export { ECCClientElixirCloudRegistryServiceCreate } from '../../chunks/chunk.V3D32NZ5.js';
|
|
3
|
+
import '../../chunks/chunk.HM342EMQ.js';
|
|
4
|
+
import '../../chunks/chunk.HIA3DP4L.js';
|
|
5
|
+
import '../../chunks/chunk.S3NI7NKU.js';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import { CloudRegistryProvider } from "../../providers/index.js";
|
|
3
|
+
import "@elixir-cloud/design/components/button/index.js";
|
|
4
|
+
import "@elixir-cloud/design/components/input/index.js";
|
|
5
|
+
import "@elixir-cloud/design/components/select/index.js";
|
|
6
|
+
import "@elixir-cloud/design/components/label/index.js";
|
|
7
|
+
import "@elixir-cloud/design/components/textarea/index.js";
|
|
8
|
+
import "@elixir-cloud/design/components/collapsible/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* @summary Component for creating new services in Cloud Registry
|
|
11
|
+
* @since 2.0.0
|
|
12
|
+
*
|
|
13
|
+
* @property {string} baseUrl - Base URL of the Cloud Registry instance/gateway
|
|
14
|
+
* @property {CloudRegistryProvider} provider - Custom data provider (optional, overrides baseUrl)
|
|
15
|
+
*
|
|
16
|
+
* @fires ecc-service-created - Fired when a service is successfully created (includes serviceId, serviceData, and success message)
|
|
17
|
+
* @fires ecc-service-create-failed - Fired when service creation fails
|
|
18
|
+
* @fires ecc-service-create-validation-failed - Fired when there are validation errors during service creation
|
|
19
|
+
*/
|
|
20
|
+
export declare class ECCClientElixirCloudRegistryServiceCreate extends LitElement {
|
|
21
|
+
static styles: import("lit").CSSResult[];
|
|
22
|
+
baseUrl: string;
|
|
23
|
+
provider?: CloudRegistryProvider;
|
|
24
|
+
private serviceTypes;
|
|
25
|
+
private loading;
|
|
26
|
+
private error;
|
|
27
|
+
private success;
|
|
28
|
+
private formData;
|
|
29
|
+
private _provider;
|
|
30
|
+
protected firstUpdated(): Promise<void>;
|
|
31
|
+
protected updated(changedProperties: Map<PropertyKey, unknown>): void;
|
|
32
|
+
private loadServiceTypes;
|
|
33
|
+
private handleInputChange;
|
|
34
|
+
private handleNestedInputChange;
|
|
35
|
+
private handleSubmit;
|
|
36
|
+
private resetForm;
|
|
37
|
+
private renderBasicFields;
|
|
38
|
+
private renderAdvancedFields;
|
|
39
|
+
render(): import("lit").TemplateResult<1>;
|
|
40
|
+
}
|
|
41
|
+
export default ECCClientElixirCloudRegistryServiceCreate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ComponentStyles: import("lit").CSSResult;
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"readme": "",
|
|
4
|
+
"modules": [
|
|
5
|
+
{
|
|
6
|
+
"kind": "javascript-module",
|
|
7
|
+
"path": "components/index.js",
|
|
8
|
+
"declarations": [],
|
|
9
|
+
"exports": []
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"kind": "javascript-module",
|
|
13
|
+
"path": "components/service-create/index.js",
|
|
14
|
+
"declarations": [],
|
|
15
|
+
"exports": [
|
|
16
|
+
{
|
|
17
|
+
"kind": "js",
|
|
18
|
+
"name": "*",
|
|
19
|
+
"declaration": {
|
|
20
|
+
"name": "*",
|
|
21
|
+
"package": "\"./service-create.js\""
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"kind": "js",
|
|
26
|
+
"name": "default",
|
|
27
|
+
"declaration": {
|
|
28
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
29
|
+
"module": "components/service-create/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"kind": "custom-element-definition",
|
|
34
|
+
"name": "ecc-client-elixir-cloud-registry-service-create",
|
|
35
|
+
"declaration": {
|
|
36
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
37
|
+
"module": "/src/components/service-create/service-create.js"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"kind": "javascript-module",
|
|
44
|
+
"path": "components/service-create/service-create.js",
|
|
45
|
+
"declarations": [
|
|
46
|
+
{
|
|
47
|
+
"kind": "class",
|
|
48
|
+
"description": "",
|
|
49
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
50
|
+
"members": [
|
|
51
|
+
{
|
|
52
|
+
"kind": "field",
|
|
53
|
+
"name": "baseUrl",
|
|
54
|
+
"type": {
|
|
55
|
+
"text": "string"
|
|
56
|
+
},
|
|
57
|
+
"default": "\"\"",
|
|
58
|
+
"description": "Base URL of the Cloud Registry instance/gateway"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "field",
|
|
62
|
+
"name": "provider",
|
|
63
|
+
"type": {
|
|
64
|
+
"text": "CloudRegistryProvider"
|
|
65
|
+
},
|
|
66
|
+
"description": "Custom data provider (optional, overrides baseUrl)"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"kind": "field",
|
|
70
|
+
"name": "serviceTypes",
|
|
71
|
+
"type": {
|
|
72
|
+
"text": "ServiceType[]"
|
|
73
|
+
},
|
|
74
|
+
"privacy": "private",
|
|
75
|
+
"default": "[]"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"kind": "field",
|
|
79
|
+
"name": "loading",
|
|
80
|
+
"type": {
|
|
81
|
+
"text": "boolean"
|
|
82
|
+
},
|
|
83
|
+
"privacy": "private",
|
|
84
|
+
"default": "false"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"kind": "field",
|
|
88
|
+
"name": "error",
|
|
89
|
+
"type": {
|
|
90
|
+
"text": "string | null"
|
|
91
|
+
},
|
|
92
|
+
"privacy": "private",
|
|
93
|
+
"default": "null"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"kind": "field",
|
|
97
|
+
"name": "success",
|
|
98
|
+
"type": {
|
|
99
|
+
"text": "string | null"
|
|
100
|
+
},
|
|
101
|
+
"privacy": "private",
|
|
102
|
+
"default": "null"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"kind": "field",
|
|
106
|
+
"name": "formData",
|
|
107
|
+
"type": {
|
|
108
|
+
"text": "{\n name: string;\n url: string;\n organization: {\n name: string;\n url: string;\n };\n type: {\n group: string;\n artifact: string;\n version: string;\n };\n version: string;\n description: string;\n contactUrl: string;\n documentationUrl: string;\n environment: string;\n createdAt: string;\n updatedAt: string;\n customServiceId: string;\n useCustomId: boolean;\n }"
|
|
109
|
+
},
|
|
110
|
+
"privacy": "private",
|
|
111
|
+
"default": "{\n name: \"\",\n url: \"\",\n organization: {\n name: \"\",\n url: \"\",\n },\n type: {\n group: \"org.ga4gh\",\n artifact: \"\",\n version: \"\",\n },\n version: \"\",\n description: \"\",\n contactUrl: \"\",\n documentationUrl: \"\",\n environment: \"\",\n createdAt: \"\",\n updatedAt: \"\",\n customServiceId: \"\",\n useCustomId: false,\n }"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"kind": "field",
|
|
115
|
+
"name": "_provider",
|
|
116
|
+
"type": {
|
|
117
|
+
"text": "CloudRegistryProvider | null"
|
|
118
|
+
},
|
|
119
|
+
"privacy": "private",
|
|
120
|
+
"default": "null"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"kind": "method",
|
|
124
|
+
"name": "loadServiceTypes",
|
|
125
|
+
"privacy": "private",
|
|
126
|
+
"return": {
|
|
127
|
+
"type": {
|
|
128
|
+
"text": "Promise<void>"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"kind": "method",
|
|
134
|
+
"name": "handleInputChange",
|
|
135
|
+
"privacy": "private",
|
|
136
|
+
"return": {
|
|
137
|
+
"type": {
|
|
138
|
+
"text": "void"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"parameters": [
|
|
142
|
+
{
|
|
143
|
+
"name": "field",
|
|
144
|
+
"type": {
|
|
145
|
+
"text": "keyof typeof this.formData"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "value",
|
|
150
|
+
"type": {
|
|
151
|
+
"text": "string | boolean"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"kind": "method",
|
|
158
|
+
"name": "handleNestedInputChange",
|
|
159
|
+
"privacy": "private",
|
|
160
|
+
"return": {
|
|
161
|
+
"type": {
|
|
162
|
+
"text": "void"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"parameters": [
|
|
166
|
+
{
|
|
167
|
+
"name": "parent",
|
|
168
|
+
"type": {
|
|
169
|
+
"text": "keyof typeof this.formData"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "field",
|
|
174
|
+
"type": {
|
|
175
|
+
"text": "string"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "value",
|
|
180
|
+
"type": {
|
|
181
|
+
"text": "string"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"kind": "method",
|
|
188
|
+
"name": "handleSubmit",
|
|
189
|
+
"privacy": "private",
|
|
190
|
+
"return": {
|
|
191
|
+
"type": {
|
|
192
|
+
"text": "Promise<void>"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"kind": "method",
|
|
198
|
+
"name": "resetForm",
|
|
199
|
+
"privacy": "private",
|
|
200
|
+
"return": {
|
|
201
|
+
"type": {
|
|
202
|
+
"text": "void"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"kind": "method",
|
|
208
|
+
"name": "renderBasicFields",
|
|
209
|
+
"privacy": "private"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"kind": "method",
|
|
213
|
+
"name": "renderAdvancedFields",
|
|
214
|
+
"privacy": "private"
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"events": [
|
|
218
|
+
{
|
|
219
|
+
"name": "ecc-service-create-validation-failed",
|
|
220
|
+
"type": {
|
|
221
|
+
"text": "CustomEvent"
|
|
222
|
+
},
|
|
223
|
+
"description": "Fired when there are validation errors during service creation",
|
|
224
|
+
"reactName": "onEccServiceCreateValidationFailed",
|
|
225
|
+
"eventName": "EccServiceCreateValidationFailedEvent"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "ecc-service-create-failed",
|
|
229
|
+
"type": {
|
|
230
|
+
"text": "CustomEvent"
|
|
231
|
+
},
|
|
232
|
+
"description": "Fired when service creation fails",
|
|
233
|
+
"reactName": "onEccServiceCreateFailed",
|
|
234
|
+
"eventName": "EccServiceCreateFailedEvent"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"name": "ecc-service-created",
|
|
238
|
+
"type": {
|
|
239
|
+
"text": "CustomEvent"
|
|
240
|
+
},
|
|
241
|
+
"description": "Fired when a service is successfully created (includes serviceId, serviceData, and success message)",
|
|
242
|
+
"reactName": "onEccServiceCreated",
|
|
243
|
+
"eventName": "EccServiceCreatedEvent"
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"superclass": {
|
|
247
|
+
"name": "LitElement",
|
|
248
|
+
"package": "lit"
|
|
249
|
+
},
|
|
250
|
+
"summary": "Component for creating new services in Cloud Registry",
|
|
251
|
+
"jsDoc": "/**\n * @summary Component for creating new services in Cloud Registry\n * @since 2.0.0\n *\n * @property {string} baseUrl - Base URL of the Cloud Registry instance/gateway\n * @property {CloudRegistryProvider} provider - Custom data provider (optional, overrides baseUrl)\n *\n * @fires ecc-service-created - Fired when a service is successfully created (includes serviceId, serviceData, and success message)\n * @fires ecc-service-create-failed - Fired when service creation fails\n * @fires ecc-service-create-validation-failed - Fired when there are validation errors during service creation\n */",
|
|
252
|
+
"tagName": "ecc-client-elixir-cloud-registry-service-create",
|
|
253
|
+
"customElement": true
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"exports": [
|
|
257
|
+
{
|
|
258
|
+
"kind": "js",
|
|
259
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
260
|
+
"declaration": {
|
|
261
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
262
|
+
"module": "components/service-create/service-create.js"
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"kind": "js",
|
|
267
|
+
"name": "default",
|
|
268
|
+
"declaration": {
|
|
269
|
+
"name": "ECCClientElixirCloudRegistryServiceCreate",
|
|
270
|
+
"module": "components/service-create/service-create.js"
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
]
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"kind": "javascript-module",
|
|
277
|
+
"path": "components/service-create/tw-styles.js",
|
|
278
|
+
"declarations": [
|
|
279
|
+
{
|
|
280
|
+
"kind": "variable",
|
|
281
|
+
"name": "ComponentStyles",
|
|
282
|
+
"default": "css` /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --spacing: 0.25rem;\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --font-weight-medium: 500;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .static {\n position: static;\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-full {\n width: 100%;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize-none {\n resize: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-0\\\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .rounded-t {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-border\\\\/50 {\n border-color: var(--border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--border) 50%, transparent);\n }\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .text-left {\n text-align: left;\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-muted-foreground\\\\/60 {\n color: var(--muted-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .hover\\\\:bg-muted\\\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--muted) 50%, transparent);\n }\n }\n }\n }\n .focus\\\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .md\\\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n}\n@property --tw-animation-delay {\n syntax: \"*\";\n inherits: false;\n initial-value: 0s;\n}\n@property --tw-animation-direction {\n syntax: \"*\";\n inherits: false;\n initial-value: normal;\n}\n@property --tw-animation-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-animation-fill-mode {\n syntax: \"*\";\n inherits: false;\n initial-value: none;\n}\n@property --tw-animation-iteration-count {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-enter-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-enter-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-opacity {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-rotate {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-scale {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-exit-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-exit-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n body {\n background-color: var(--background);\n color: var(--foreground);\n }\n}\n:host {\n font-family: inherit;\n line-height: inherit;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-animation-delay: 0s;\n --tw-animation-direction: normal;\n --tw-animation-duration: initial;\n --tw-animation-fill-mode: none;\n --tw-animation-iteration-count: 1;\n --tw-enter-opacity: 1;\n --tw-enter-rotate: 0;\n --tw-enter-scale: 1;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n --tw-exit-opacity: 1;\n --tw-exit-rotate: 0;\n --tw-exit-scale: 1;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n }\n}\n `"
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"exports": [
|
|
286
|
+
{
|
|
287
|
+
"kind": "js",
|
|
288
|
+
"name": "ComponentStyles",
|
|
289
|
+
"declaration": {
|
|
290
|
+
"name": "ComponentStyles",
|
|
291
|
+
"module": "components/service-create/tw-styles.js"
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"package": {
|
|
298
|
+
"name": "@elixir-cloud/cloud-registry",
|
|
299
|
+
"description": "Web Component for interacting with Elixir Cloud Registry",
|
|
300
|
+
"version": "2.0.0-alpha.28",
|
|
301
|
+
"license": "Apache-2.0"
|
|
302
|
+
}
|
|
303
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ExternalServiceRegister } from "../providers/index.js";
|
|
2
|
+
export type EccServiceCreatedEvent = CustomEvent<{
|
|
3
|
+
serviceId: string;
|
|
4
|
+
serviceData: ExternalServiceRegister;
|
|
5
|
+
message: string;
|
|
6
|
+
}>;
|
|
7
|
+
declare global {
|
|
8
|
+
interface GlobalEventHandlersEventMap {
|
|
9
|
+
"ecc-service-created": EccServiceCreatedEvent;
|
|
10
|
+
}
|
|
11
|
+
}
|
package/dist/global.d.ts
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./components/index.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the ELIXIR Cloud Registry API based on OpenAPI specification v1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { ServiceRegistryProvider, ServiceType, Organization, Service, ExternalService, Error } from "@elixir-cloud/service-registry/dist/providers";
|
|
5
|
+
export type { ServiceType, Organization, Service, ExternalService, Error };
|
|
6
|
+
/**
|
|
7
|
+
* Cloud Registry specific types that extend the base GA4GH Service Registry types
|
|
8
|
+
*/
|
|
9
|
+
export interface ServiceTypeRegister {
|
|
10
|
+
group: string;
|
|
11
|
+
artifact: string;
|
|
12
|
+
version: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ServiceRegister {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
type: ServiceTypeRegister;
|
|
18
|
+
description?: string;
|
|
19
|
+
organization: Organization;
|
|
20
|
+
contactUrl?: string;
|
|
21
|
+
documentationUrl?: string;
|
|
22
|
+
createdAt?: string;
|
|
23
|
+
updatedAt?: string;
|
|
24
|
+
environment?: string;
|
|
25
|
+
version: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ExternalServiceRegister {
|
|
28
|
+
name: string;
|
|
29
|
+
type: ServiceTypeRegister;
|
|
30
|
+
description?: string;
|
|
31
|
+
organization: Organization;
|
|
32
|
+
contactUrl?: string;
|
|
33
|
+
documentationUrl?: string;
|
|
34
|
+
createdAt?: string;
|
|
35
|
+
updatedAt?: string;
|
|
36
|
+
environment?: string;
|
|
37
|
+
version: string;
|
|
38
|
+
url: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Interface defining the operations required for Cloud Registry data providers
|
|
42
|
+
* Extends the base ServiceRegistryProvider with Cloud Registry specific creation and deletion operations
|
|
43
|
+
*/
|
|
44
|
+
export interface CloudRegistryProvider extends ServiceRegistryProvider {
|
|
45
|
+
createService(service: ExternalServiceRegister): Promise<string>;
|
|
46
|
+
createServiceWithId(id: string, service: ExternalServiceRegister): Promise<string>;
|
|
47
|
+
updateService(id: string, service: ExternalServiceRegister): Promise<string>;
|
|
48
|
+
deleteService?(id: string): Promise<string>;
|
|
49
|
+
createOrUpdateServiceInfo?(service: ServiceRegister): Promise<void>;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../chunks/chunk.U3XZVV4K.js';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CloudRegistryProvider } from "./cr-provider.js";
|
|
2
|
+
export { RestCloudRegistryProvider } from "./rest-cr-provider.js";
|
|
3
|
+
export type { Service, ServiceType, Organization, ExternalService, Error, ServiceTypeRegister, ServiceRegister, ExternalServiceRegister, } from "./cr-provider.js";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CloudRegistryProvider, ExternalService, Service, ServiceType, ExternalServiceRegister, ServiceRegister } from "./cr-provider.js";
|
|
2
|
+
/**
|
|
3
|
+
* Implementation of the CloudRegistryProvider interface using direct REST API calls
|
|
4
|
+
* This class combines the functionality of ServiceRegistryAPI and RestCloudRegistryProvider
|
|
5
|
+
*/
|
|
6
|
+
export declare class RestCloudRegistryProvider implements CloudRegistryProvider {
|
|
7
|
+
readonly baseUrl: string;
|
|
8
|
+
constructor(baseUrl: string);
|
|
9
|
+
/**
|
|
10
|
+
* Fetch list of services from the registry
|
|
11
|
+
* @returns Promise resolving to array of services
|
|
12
|
+
*/
|
|
13
|
+
getServices(): Promise<ExternalService[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch a specific service by ID
|
|
16
|
+
* @param serviceId ID of the service to fetch
|
|
17
|
+
* @returns Promise resolving to service details
|
|
18
|
+
*/
|
|
19
|
+
getServiceById(serviceId: string): Promise<ExternalService>;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch types of services exposed by the registry
|
|
22
|
+
* @returns Promise resolving to array of service types
|
|
23
|
+
*/
|
|
24
|
+
getServiceTypes(): Promise<ServiceType[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Fetch information about the registry
|
|
27
|
+
* @returns Promise resolving to service information
|
|
28
|
+
*/
|
|
29
|
+
getServiceInfo(): Promise<Service>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a service in the registry
|
|
32
|
+
* @param service Service metadata to register
|
|
33
|
+
* @returns Promise resolving to service identifier
|
|
34
|
+
*/
|
|
35
|
+
createService(service: ExternalServiceRegister): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* Create or update a service with a specific ID
|
|
38
|
+
* @param id Service identifier
|
|
39
|
+
* @param service Service metadata to register
|
|
40
|
+
* @returns Promise resolving to service identifier
|
|
41
|
+
*/
|
|
42
|
+
createServiceWithId(id: string, service: ExternalServiceRegister): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Update a service in the registry
|
|
45
|
+
* @param id Service identifier
|
|
46
|
+
* @param service Service metadata to update
|
|
47
|
+
* @returns Promise resolving to service identifier
|
|
48
|
+
*/
|
|
49
|
+
updateService(id: string, service: ExternalServiceRegister): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Delete a service from the registry
|
|
52
|
+
* @param id Service identifier
|
|
53
|
+
* @returns Promise resolving to service identifier
|
|
54
|
+
*/
|
|
55
|
+
deleteService(id: string): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Create or update the service info
|
|
58
|
+
* @param service Service info to register
|
|
59
|
+
* @returns Promise resolving when service info is updated
|
|
60
|
+
*/
|
|
61
|
+
createOrUpdateServiceInfo(service: ServiceRegister): Promise<void>;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ECCClientElixirCloudRegistryServiceCreate } from './service-create/index.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { service_create_default as ECCClientElixirCloudRegistryServiceCreate } from '../chunks/chunk.SG7Q2SX3.js';
|
|
2
|
+
import '../chunks/chunk.V3D32NZ5.js';
|
|
3
|
+
import '../chunks/chunk.HM342EMQ.js';
|
|
4
|
+
import '../chunks/chunk.HIA3DP4L.js';
|
|
5
|
+
import '../chunks/chunk.S3NI7NKU.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ECCClientElixirCloudRegistryServiceCreate as Component } from "../../components/service-create/service-create.js";
|
|
2
|
+
import type { EventName } from "@lit/react";
|
|
3
|
+
import type { EccServiceCreateValidationFailedEvent } from "../../events/index.js";
|
|
4
|
+
import type { EccServiceCreateFailedEvent } from "../../events/index.js";
|
|
5
|
+
import type { EccServiceCreatedEvent } from "../../events/index.js";
|
|
6
|
+
export type { EccServiceCreateValidationFailedEvent } from "../../events/index.js";
|
|
7
|
+
export type { EccServiceCreateFailedEvent } from "../../events/index.js";
|
|
8
|
+
export type { EccServiceCreatedEvent } from "../../events/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* @summary Component for creating new services in Cloud Registry
|
|
11
|
+
* @since 2.0.0
|
|
12
|
+
*
|
|
13
|
+
* @property {string} baseUrl - Base URL of the Cloud Registry instance/gateway
|
|
14
|
+
* @property {CloudRegistryProvider} provider - Custom data provider (optional, overrides baseUrl)
|
|
15
|
+
*
|
|
16
|
+
* @fires ecc-service-created - Fired when a service is successfully created (includes serviceId, serviceData, and success message)
|
|
17
|
+
* @fires ecc-service-create-failed - Fired when service creation fails
|
|
18
|
+
* @fires ecc-service-create-validation-failed - Fired when there are validation errors during service creation
|
|
19
|
+
*/
|
|
20
|
+
declare const reactWrapper: import("@lit/react").ReactWebComponent<Component, {
|
|
21
|
+
onEccServiceCreateValidationFailed: EventName<EccServiceCreateValidationFailedEvent>;
|
|
22
|
+
onEccServiceCreateFailed: EventName<EccServiceCreateFailedEvent>;
|
|
23
|
+
onEccServiceCreated: EventName<EccServiceCreatedEvent>;
|
|
24
|
+
}>;
|
|
25
|
+
export default reactWrapper;
|