@pipelab/shared 1.0.0-beta.13 → 1.0.0-beta.14
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/CHANGELOG.md +9 -0
- package/dist/index.d.mts +463 -128
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +730 -400
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
- package/src/apis.ts +5 -12
- package/src/build-history.ts +1 -23
- package/src/config/migrators.ts +17 -24
- package/src/config/projects-definition.ts +8 -1
- package/src/config/projects-types.ts +1 -25
- package/src/config/settings-definition.ts +0 -2
- package/src/config.schema.ts +2 -48
- package/src/i18n/de_DE.json +131 -54
- package/src/i18n/en_US.json +50 -56
- package/src/i18n/es_ES.json +130 -53
- package/src/i18n/fr_FR.json +120 -46
- package/src/i18n/pt_BR.json +129 -52
- package/src/i18n/zh_CN.json +133 -56
- package/src/index.ts +2 -2
- package/src/model.test.ts +11 -18
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pipelab/shared",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.14",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared logic and types for the Pipelab ecosystem",
|
|
6
6
|
"license": "FSL-1.1-MIT",
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
"tslog": "4.9.3",
|
|
38
38
|
"type-fest": "4.26.1",
|
|
39
39
|
"valibot": "0.42.1",
|
|
40
|
-
"@pipelab/constants": "1.0.0-beta.
|
|
41
|
-
"@pipelab/migration": "1.0.0-beta.
|
|
40
|
+
"@pipelab/constants": "1.0.0-beta.16",
|
|
41
|
+
"@pipelab/migration": "1.0.0-beta.14"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"esbuild-plugin-wasm": "1.1.0",
|
|
45
45
|
"tsdown": "0.21.2",
|
|
46
46
|
"typescript": "5.9.3",
|
|
47
47
|
"vitest": "3.1.4",
|
|
48
|
-
"@pipelab/tsconfig": "1.0.0-beta.
|
|
48
|
+
"@pipelab/tsconfig": "1.0.0-beta.14"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"build": "tsdown",
|
package/src/apis.ts
CHANGED
|
@@ -4,13 +4,7 @@ import type { Tagged } from "type-fest";
|
|
|
4
4
|
import { PresetResult, Steps } from "./model";
|
|
5
5
|
import { AppConfig } from "./config.schema";
|
|
6
6
|
import { Agent } from "./websocket.types";
|
|
7
|
-
import {
|
|
8
|
-
BuildHistoryEntry,
|
|
9
|
-
BuildHistoryQuery,
|
|
10
|
-
BuildHistoryResponse,
|
|
11
|
-
BuildHistoryConfig,
|
|
12
|
-
RetentionPolicy,
|
|
13
|
-
} from "./build-history";
|
|
7
|
+
import { BuildHistoryEntry, BuildHistoryQuery, BuildHistoryResponse } from "./build-history";
|
|
14
8
|
|
|
15
9
|
type Event<TYPE extends string, DATA> =
|
|
16
10
|
| { type: TYPE; data: DATA }
|
|
@@ -130,10 +124,6 @@ export type IpcDefinition = {
|
|
|
130
124
|
newestEntry?: number;
|
|
131
125
|
}>,
|
|
132
126
|
];
|
|
133
|
-
"build-history:configure": [
|
|
134
|
-
{ config: Partial<BuildHistoryConfig> },
|
|
135
|
-
EndEvent<{ result: "ok" | "ko" }>,
|
|
136
|
-
];
|
|
137
127
|
"agents:get": [void, EndEvent<{ agents: Agent[] }>];
|
|
138
128
|
"graph:execute": [
|
|
139
129
|
{
|
|
@@ -161,7 +151,10 @@ export type IpcDefinition = {
|
|
|
161
151
|
EndEvent<{ data: any | null; error: any | null }>,
|
|
162
152
|
];
|
|
163
153
|
"agent:version:get": [void, EndEvent<{ version: string }>];
|
|
164
|
-
"startup:progress": [
|
|
154
|
+
"startup:progress": [
|
|
155
|
+
void,
|
|
156
|
+
{ type: "progress"; data: { message: string } } | { type: "ready" } | { type: "done" },
|
|
157
|
+
];
|
|
165
158
|
"plugin:loaded": [void, { plugin: RendererPluginDefinition }];
|
|
166
159
|
"plugin:search": [
|
|
167
160
|
{ query: string },
|
package/src/build-history.ts
CHANGED
|
@@ -34,6 +34,7 @@ export interface BuildHistoryEntry {
|
|
|
34
34
|
pipelineId: string;
|
|
35
35
|
projectName: string;
|
|
36
36
|
projectPath: string;
|
|
37
|
+
cachePath?: string;
|
|
37
38
|
status: "running" | "completed" | "failed" | "cancelled";
|
|
38
39
|
startTime: number;
|
|
39
40
|
endTime?: number;
|
|
@@ -78,11 +79,6 @@ export interface IBuildHistoryStorage {
|
|
|
78
79
|
newestEntry?: number;
|
|
79
80
|
numberOfPipelines: number;
|
|
80
81
|
userDataPath: string;
|
|
81
|
-
retentionPolicy: {
|
|
82
|
-
enabled: boolean;
|
|
83
|
-
maxEntries: number;
|
|
84
|
-
maxAge: number;
|
|
85
|
-
};
|
|
86
82
|
disk: {
|
|
87
83
|
total: number;
|
|
88
84
|
free: number;
|
|
@@ -92,24 +88,6 @@ export interface IBuildHistoryStorage {
|
|
|
92
88
|
}>;
|
|
93
89
|
}
|
|
94
90
|
|
|
95
|
-
// Retention policy configuration
|
|
96
|
-
export interface RetentionPolicy {
|
|
97
|
-
enabled: boolean;
|
|
98
|
-
maxEntries: number;
|
|
99
|
-
maxAge: number; // in milliseconds
|
|
100
|
-
maxSize: number; // in bytes
|
|
101
|
-
keepFailedBuilds: boolean;
|
|
102
|
-
keepSuccessfulBuilds: boolean;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Storage configuration
|
|
106
|
-
export interface BuildHistoryConfig {
|
|
107
|
-
storagePath: string;
|
|
108
|
-
indexFileName: string;
|
|
109
|
-
entryFilePrefix: string;
|
|
110
|
-
retentionPolicy: RetentionPolicy;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
91
|
// Authorization and subscription types
|
|
114
92
|
export interface SubscriptionBenefit {
|
|
115
93
|
id: string;
|
package/src/config/migrators.ts
CHANGED
|
@@ -16,12 +16,11 @@ import {
|
|
|
16
16
|
AppConfigV5,
|
|
17
17
|
AppConfigV6,
|
|
18
18
|
AppConfigV7,
|
|
19
|
-
AppConfigV8,
|
|
20
19
|
ConnectionsConfig,
|
|
21
20
|
ConnectionsConfigV1,
|
|
22
21
|
} from "../config.schema";
|
|
23
22
|
|
|
24
|
-
const DEFAULT_PLUGINS:
|
|
23
|
+
const DEFAULT_PLUGINS: AppConfig["plugins"] = [
|
|
25
24
|
{
|
|
26
25
|
name: "@pipelab/plugin-construct",
|
|
27
26
|
enabled: true,
|
|
@@ -39,7 +38,7 @@ const DEFAULT_PLUGINS: AppConfigV8["plugins"] = [
|
|
|
39
38
|
{ name: "@pipelab/plugin-minify", enabled: true, description: "Asset minification" },
|
|
40
39
|
{ name: "@pipelab/plugin-netlify", enabled: true, description: "Netlify deployment" },
|
|
41
40
|
];
|
|
42
|
-
import { FileRepoV1, FileRepoV2, FileRepo } from "./projects-types";
|
|
41
|
+
import { FileRepoV1, FileRepoV2, FileRepoV3, FileRepo } from "./projects-types";
|
|
43
42
|
import {
|
|
44
43
|
SavedFileV1,
|
|
45
44
|
SavedFileV2,
|
|
@@ -73,7 +72,7 @@ const settingsMigratorInternal = createMigrator<AppConfigV1, AppConfig>();
|
|
|
73
72
|
export const defaultAppSettings = settingsMigratorInternal.createDefault({
|
|
74
73
|
locale: "en-US",
|
|
75
74
|
theme: "light",
|
|
76
|
-
version: "
|
|
75
|
+
version: "7.0.0",
|
|
77
76
|
autosave: true,
|
|
78
77
|
agents: [],
|
|
79
78
|
tours: {
|
|
@@ -86,13 +85,6 @@ export const defaultAppSettings = settingsMigratorInternal.createDefault({
|
|
|
86
85
|
completed: false,
|
|
87
86
|
},
|
|
88
87
|
},
|
|
89
|
-
buildHistory: {
|
|
90
|
-
retentionPolicy: {
|
|
91
|
-
enabled: false,
|
|
92
|
-
maxEntries: 50,
|
|
93
|
-
maxAge: 30,
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
88
|
plugins: DEFAULT_PLUGINS,
|
|
97
89
|
isInternalMigrationBannerClosed: false,
|
|
98
90
|
});
|
|
@@ -143,27 +135,20 @@ export const appSettingsMigrator = settingsMigratorInternal.createMigrations({
|
|
|
143
135
|
autosave: true,
|
|
144
136
|
}),
|
|
145
137
|
}),
|
|
146
|
-
createMigration<AppConfigV6,
|
|
138
|
+
createMigration<AppConfigV6, AppConfigV7>({
|
|
147
139
|
version: "6.0.0" as SemVer,
|
|
148
140
|
up: (state) => {
|
|
149
141
|
const { cacheFolder: _, clearTemporaryFoldersOnPipelineEnd: __, ...rest } = state;
|
|
150
142
|
return {
|
|
151
143
|
...rest,
|
|
152
144
|
agents: [],
|
|
153
|
-
buildHistory: {
|
|
154
|
-
retentionPolicy: {
|
|
155
|
-
enabled: false,
|
|
156
|
-
maxEntries: 50,
|
|
157
|
-
maxAge: 30,
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
145
|
plugins: DEFAULT_PLUGINS,
|
|
161
146
|
isInternalMigrationBannerClosed: false,
|
|
162
147
|
};
|
|
163
148
|
},
|
|
164
149
|
}),
|
|
165
|
-
createMigration<
|
|
166
|
-
version: "
|
|
150
|
+
createMigration<AppConfigV7, never>({
|
|
151
|
+
version: "7.0.0" as SemVer,
|
|
167
152
|
up: finalVersion,
|
|
168
153
|
}),
|
|
169
154
|
],
|
|
@@ -193,7 +178,7 @@ export const connectionsMigrator = connectionsMigratorInternal.createMigrations(
|
|
|
193
178
|
const fileRepoMigratorInternal = createMigrator<FileRepoV1, FileRepo>();
|
|
194
179
|
|
|
195
180
|
export const defaultFileRepo = fileRepoMigratorInternal.createDefault({
|
|
196
|
-
version: "
|
|
181
|
+
version: "3.0.0",
|
|
197
182
|
projects: [
|
|
198
183
|
{
|
|
199
184
|
id: "main",
|
|
@@ -232,8 +217,16 @@ export const fileRepoMigrations = fileRepoMigratorInternal.createMigrations({
|
|
|
232
217
|
};
|
|
233
218
|
},
|
|
234
219
|
}),
|
|
235
|
-
createMigration<FileRepoV2,
|
|
220
|
+
createMigration<FileRepoV2, FileRepoV3>({
|
|
236
221
|
version: "2.0.0",
|
|
222
|
+
up: (state) => {
|
|
223
|
+
return {
|
|
224
|
+
...state,
|
|
225
|
+
};
|
|
226
|
+
},
|
|
227
|
+
}),
|
|
228
|
+
createMigration<FileRepoV3, never>({
|
|
229
|
+
version: "3.0.0",
|
|
237
230
|
up: finalVersion,
|
|
238
231
|
}),
|
|
239
232
|
],
|
|
@@ -424,7 +417,7 @@ export const normalizePipelineConfig = (state: any): boolean => {
|
|
|
424
417
|
|
|
425
418
|
// Normalise plugin IDs in block and trigger origins (pluginId field only;
|
|
426
419
|
// version strings don't need normalisation)
|
|
427
|
-
if (state.
|
|
420
|
+
if (state.canvas) {
|
|
428
421
|
if (Array.isArray(state.canvas.blocks)) {
|
|
429
422
|
for (const block of state.canvas.blocks) {
|
|
430
423
|
if (normalizeBlockPluginId(block)) changed = true;
|
|
@@ -18,8 +18,15 @@ export const FileRepoValidatorV2 = object({
|
|
|
18
18
|
pipelines: optional(array(SaveLocationValidator), []),
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
+
export const FileRepoValidatorV3 = object({
|
|
22
|
+
version: literal("3.0.0"),
|
|
23
|
+
projects: array(FileRepoProjectValidatorV2),
|
|
24
|
+
pipelines: optional(array(SaveLocationValidator), []),
|
|
25
|
+
});
|
|
26
|
+
|
|
21
27
|
export type FileRepoV1 = InferInput<typeof FileRepoValidatorV1>;
|
|
22
28
|
export type FileRepoV2 = InferInput<typeof FileRepoValidatorV2>;
|
|
29
|
+
export type FileRepoV3 = InferInput<typeof FileRepoValidatorV3>;
|
|
23
30
|
|
|
24
|
-
export const FileRepoValidator =
|
|
31
|
+
export const FileRepoValidator = FileRepoValidatorV3;
|
|
25
32
|
export type FileRepo = InferInput<typeof FileRepoValidator>;
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { object, string, optional, record, InferInput, literal, array } from "valibot";
|
|
3
|
-
|
|
4
|
-
export const FileRepoValidatorV1 = object({
|
|
5
|
-
version: literal("1.0.0"),
|
|
6
|
-
data: optional(record(string(), SaveLocationValidator), {}),
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export const FileRepoProjectValidatorV2 = object({
|
|
10
|
-
id: string(),
|
|
11
|
-
name: string(),
|
|
12
|
-
description: string(),
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
export const FileRepoValidatorV2 = object({
|
|
16
|
-
version: literal("2.0.0"),
|
|
17
|
-
projects: array(FileRepoProjectValidatorV2),
|
|
18
|
-
pipelines: optional(array(SaveLocationValidator), []),
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export type FileRepoV1 = InferInput<typeof FileRepoValidatorV1>;
|
|
22
|
-
export type FileRepoV2 = InferInput<typeof FileRepoValidatorV2>;
|
|
23
|
-
|
|
24
|
-
export const FileRepoValidator = FileRepoValidatorV2;
|
|
25
|
-
export type FileRepo = InferInput<typeof FileRepoValidator>;
|
|
1
|
+
export * from "./projects-definition";
|
package/src/config.schema.ts
CHANGED
|
@@ -128,51 +128,6 @@ export const AppSettingsValidatorV7 = object({
|
|
|
128
128
|
url: string(),
|
|
129
129
|
}),
|
|
130
130
|
),
|
|
131
|
-
buildHistory: object({
|
|
132
|
-
retentionPolicy: object({
|
|
133
|
-
enabled: boolean(),
|
|
134
|
-
maxEntries: number(), // Maximum number of entries per pipeline
|
|
135
|
-
maxAge: number(), // Maximum age of entries in days
|
|
136
|
-
}),
|
|
137
|
-
}),
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
export const AppSettingsValidatorV8 = object({
|
|
141
|
-
theme: union([literal("light"), literal("dark")]),
|
|
142
|
-
version: literal("8.0.0"),
|
|
143
|
-
locale: union([
|
|
144
|
-
literal("en-US"),
|
|
145
|
-
literal("fr-FR"),
|
|
146
|
-
literal("pt-BR"),
|
|
147
|
-
literal("zh-CN"),
|
|
148
|
-
literal("es-ES"),
|
|
149
|
-
literal("de-DE"),
|
|
150
|
-
]),
|
|
151
|
-
tours: object({
|
|
152
|
-
dashboard: object({
|
|
153
|
-
step: number(),
|
|
154
|
-
completed: boolean(),
|
|
155
|
-
}),
|
|
156
|
-
editor: object({
|
|
157
|
-
step: number(),
|
|
158
|
-
completed: boolean(),
|
|
159
|
-
}),
|
|
160
|
-
}),
|
|
161
|
-
autosave: boolean(),
|
|
162
|
-
agents: array(
|
|
163
|
-
object({
|
|
164
|
-
id: string(),
|
|
165
|
-
name: string(),
|
|
166
|
-
url: string(),
|
|
167
|
-
}),
|
|
168
|
-
),
|
|
169
|
-
buildHistory: object({
|
|
170
|
-
retentionPolicy: object({
|
|
171
|
-
enabled: boolean(),
|
|
172
|
-
maxEntries: number(), // Maximum number of entries per pipeline
|
|
173
|
-
maxAge: number(), // Maximum age of entries in days
|
|
174
|
-
}),
|
|
175
|
-
}),
|
|
176
131
|
// Metadata list of plugins the user has enabled (official + community).
|
|
177
132
|
// No binaries are stored here — versions are resolved JIT at node-add time.
|
|
178
133
|
plugins: array(
|
|
@@ -210,7 +165,6 @@ export type AppConfigV4 = InferInput<typeof AppSettingsValidatorV4>;
|
|
|
210
165
|
export type AppConfigV5 = InferInput<typeof AppSettingsValidatorV5>;
|
|
211
166
|
export type AppConfigV6 = InferInput<typeof AppSettingsValidatorV6>;
|
|
212
167
|
export type AppConfigV7 = InferInput<typeof AppSettingsValidatorV7>;
|
|
213
|
-
export type AppConfigV8 = InferInput<typeof AppSettingsValidatorV8>;
|
|
214
168
|
|
|
215
|
-
export type AppConfig =
|
|
216
|
-
export const AppSettingsValidator =
|
|
169
|
+
export type AppConfig = AppConfigV7;
|
|
170
|
+
export const AppSettingsValidator = AppSettingsValidatorV7;
|
package/src/i18n/de_DE.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"settings": {
|
|
3
|
-
"darkTheme": "
|
|
4
|
-
"
|
|
3
|
+
"darkTheme": "Dunkles Design",
|
|
4
|
+
"autosave": "Automatisch speichern",
|
|
5
|
+
"autosaveDescription": "Änderungen an Ihren Pipelines automatisch in Echtzeit speichern.",
|
|
6
|
+
"language": "Sprache",
|
|
5
7
|
"languageOptions": {
|
|
6
8
|
"en-US": "English",
|
|
7
9
|
"fr-FR": "French",
|
|
@@ -11,37 +13,44 @@
|
|
|
11
13
|
"de-DE": "German"
|
|
12
14
|
},
|
|
13
15
|
"tabs": {
|
|
14
|
-
"general": "
|
|
15
|
-
"storage": "
|
|
16
|
-
"integrations": "
|
|
17
|
-
"advanced": "
|
|
18
|
-
"billing": "
|
|
19
|
-
"plugins": "
|
|
20
|
-
"core-plugins": "
|
|
21
|
-
"community-plugins": "Community-
|
|
16
|
+
"general": "Allgemein",
|
|
17
|
+
"storage": "Speicher",
|
|
18
|
+
"integrations": "Integrationen",
|
|
19
|
+
"advanced": "Erweitert",
|
|
20
|
+
"billing": "Abrechnung",
|
|
21
|
+
"plugins": "Erweiterungen",
|
|
22
|
+
"core-plugins": "Kern-Erweiterungen",
|
|
23
|
+
"community-plugins": "Community-Erweiterungen",
|
|
22
24
|
"versions": "Versionen"
|
|
23
25
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"cache-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
26
|
+
"pipeline-cache-folder": "Pipeline-Cache-Ordner:",
|
|
27
|
+
"enter-or-browse-for-a-folder": "Ordner eingeben oder auswählen",
|
|
28
|
+
"browse": "Durchsuchen",
|
|
29
|
+
"manage-where-the-app-stores-temporary-and-cache-files": "Konfigurieren Sie lokale Ordner für temporäre Dateien und Anwendungs-Cache.",
|
|
30
|
+
"clear-cache": "Cache leeren",
|
|
31
|
+
"reset-to-default": "Auf Standard zurücksetzen",
|
|
32
|
+
"manage-subscription": "Abonnement verwalten",
|
|
33
|
+
"renewal-date": "Verlängerungsdatum",
|
|
34
|
+
"start-date": "Startdatum:",
|
|
35
|
+
"cache-cleared-successfully": "Cache erfolgreich geleert",
|
|
36
|
+
"failed-to-clear-cache-error-message": "Cache konnte nicht geleert werden: {0}",
|
|
37
|
+
"failed-to-reset-cache-folder-error-message": "Cache-Ordner konnte nicht zurückgesetzt werden: {0}",
|
|
38
|
+
"select-cache-folder": "Cache-Ordner auswählen",
|
|
39
|
+
"restart-dashboard-tour": "Dashboard-Anleitung zurücksetzen",
|
|
40
|
+
"restart-editor-tour": "Editor-Anleitung zurücksetzen",
|
|
41
|
+
"tour-reset-success": "Anleitungen wurden zurückgesetzt. Sie werden bei Ihrem nächsten Besuch wieder angezeigt.",
|
|
42
|
+
"storage-pipelab": "Pipelab",
|
|
43
|
+
"storage-other": "Andere Apps",
|
|
44
|
+
"storage-free": "Freier Speicher",
|
|
45
|
+
"disk-usage": "Festplattennutzung",
|
|
46
|
+
"free": "Frei",
|
|
47
|
+
"other": "Sonstige"
|
|
39
48
|
},
|
|
40
49
|
"headers": {
|
|
41
50
|
"dashboard": "Dashboard",
|
|
42
|
-
"
|
|
51
|
+
"pipelines": "Pipelines",
|
|
43
52
|
"editor": "Editor",
|
|
44
|
-
"billing": "
|
|
53
|
+
"billing": "@:settings.tabs.billing",
|
|
45
54
|
"team": "Team"
|
|
46
55
|
},
|
|
47
56
|
"base": {
|
|
@@ -53,38 +62,106 @@
|
|
|
53
62
|
"delete": "Löschen",
|
|
54
63
|
"logs": "Protokolle",
|
|
55
64
|
"ok": "OK",
|
|
56
|
-
"add": "Hinzufügen"
|
|
65
|
+
"add": "Hinzufügen",
|
|
66
|
+
"search": "Suchen...",
|
|
67
|
+
"success": "Erfolg",
|
|
68
|
+
"error": "Fehler"
|
|
57
69
|
},
|
|
58
70
|
"editor": {
|
|
59
|
-
"invalid-file-content": "
|
|
60
|
-
"welcome-back": "
|
|
61
|
-
"please-log-in-to-run-a-
|
|
62
|
-
"execution-done": "
|
|
63
|
-
"your-project-has-been-executed-successfully": "
|
|
64
|
-
"execution-failed": "
|
|
65
|
-
"project-has-encountered-an-error": "
|
|
66
|
-
"project-saved": "
|
|
67
|
-
"your-project-has-be-saved-successfully": "
|
|
71
|
+
"invalid-file-content": "Ungültiger Dateiinhalt",
|
|
72
|
+
"welcome-back": "Willkommen zurück!",
|
|
73
|
+
"please-log-in-to-run-a-pipeline": "Bitte melden Sie sich an, um diese Pipeline auszuführen.",
|
|
74
|
+
"execution-done": "Ausführung erfolgreich abgeschlossen",
|
|
75
|
+
"your-project-has-been-executed-successfully": "Ihre Pipeline wurde erfolgreich ausgeführt.",
|
|
76
|
+
"execution-failed": "Ausführung fehlgeschlagen",
|
|
77
|
+
"project-has-encountered-an-error": "Die Pipeline hat einen Fehler festgestellt:",
|
|
78
|
+
"project-saved": "Pipeline gespeichert",
|
|
79
|
+
"your-project-has-be-saved-successfully": "Ihre Pipeline wurde erfolgreich gespeichert.",
|
|
80
|
+
"view-history": "Verlauf",
|
|
81
|
+
"add-plugin": "Erweiterung hinzufügen",
|
|
82
|
+
"display-advanced-nodes": "Erweiterte Blöcke anzeigen",
|
|
83
|
+
"project-settings": "Pipeline-Einstellungen",
|
|
84
|
+
"jit-loading-title": "Erweiterungen werden vorbereitet",
|
|
85
|
+
"jit-loading-subtitle": "Bitte warten Sie, während Pipelab die für diese Pipeline erforderlichen Erweiterungen herunterlädt und konfigures.",
|
|
86
|
+
"jit-loading-status": "Herunterladen und Einrichten von Erweiterungspaketen...",
|
|
87
|
+
"validation-failed": "Validierung fehlgeschlagen",
|
|
88
|
+
"validation-plugin-disabled-or-missing": "Der Block \"{nodeName}\" erfordert die Erweiterung \"{pluginId}\", die derzeit nicht installiert oder aktiviert ist.",
|
|
89
|
+
"validation-missing-param": "Bitte konfigurieren Sie das erforderliche Feld \"{paramName}\" im Block \"{nodeName}\"."
|
|
68
90
|
},
|
|
69
91
|
"home": {
|
|
70
|
-
"invalid-preset": "
|
|
71
|
-
"store-project-on-the-cloud": "
|
|
92
|
+
"invalid-preset": "Ungültige Vorlage",
|
|
93
|
+
"store-project-on-the-cloud": "Projekt in der Cloud speichern",
|
|
72
94
|
"cloud": "Cloud",
|
|
73
|
-
"store-project-locally": "
|
|
74
|
-
"local": "
|
|
75
|
-
"invalid-number-of-paths-selected": "
|
|
76
|
-
"pipelab-project": "Pipelab
|
|
77
|
-
"choose-a-new-path": "
|
|
78
|
-
"invalid-file-type": "
|
|
79
|
-
"create-project": "
|
|
80
|
-
"
|
|
81
|
-
"project
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
95
|
+
"store-project-locally": "Projekt lokal speichern",
|
|
96
|
+
"local": "Lokal",
|
|
97
|
+
"invalid-number-of-paths-selected": "Ungültige Anzahl ausgewählter Pfade",
|
|
98
|
+
"pipelab-project": "Pipelab-Projekt",
|
|
99
|
+
"choose-a-new-path": "Wählen Sie einen neuen Pfad",
|
|
100
|
+
"invalid-file-type": "Ungültiger Dateityp",
|
|
101
|
+
"create-project": "Projekt erstellen",
|
|
102
|
+
"create-pipeline": "Pipeline erstellen",
|
|
103
|
+
"duplicate-project": "Projekt duplizieren",
|
|
104
|
+
"duplicate-pipeline": "Pipeline duplizieren",
|
|
105
|
+
"project-name": "Projektname",
|
|
106
|
+
"new-project": "Neues Projekt",
|
|
107
|
+
"new-pipeline": "Neue Pipeline",
|
|
108
|
+
"open": "Öffnen",
|
|
109
|
+
"import": "Importieren",
|
|
110
|
+
"pipeline-name": "Pipelinename",
|
|
111
|
+
"your-projects": "Ihre Projekte",
|
|
112
|
+
"no-projects-yet": "Noch keine Projekte",
|
|
113
|
+
"no-pipelines-yet": "Noch keine Pipelines",
|
|
114
|
+
"delete-project": "Projekt löschen",
|
|
115
|
+
"confirm-delete-project": "Sind Sie sicher, dass Sie dieses Projekt löschen möchten? Dies kann nicht rückgängig gemacht werden.",
|
|
116
|
+
"cannot-delete-project": "Projekt kann nicht gelöscht werden",
|
|
117
|
+
"project-not-empty": "Dieses Projekt enthält Pipelines. Bitte löschen Sie diese zuerst.",
|
|
118
|
+
"transfer": "Übertragen",
|
|
119
|
+
"transfer-successful": "Übertragung erfolgreich",
|
|
120
|
+
"pipeline-transferred": "Pipeline erfolgreich übertragen",
|
|
121
|
+
"select-project": "Projekt auswählen",
|
|
122
|
+
"build-history": "Ausführungsverlauf",
|
|
123
|
+
"duplicate": "Duplizieren",
|
|
124
|
+
"rename-project": "Projekt umbenennen",
|
|
125
|
+
"new-project-name": "Neuer Projektname",
|
|
126
|
+
"premium-feature": "Dies ist eine Premium-Funktion",
|
|
127
|
+
"migrate-warning": "Dieses Dateiformat wird bald nicht mehr unterstützt. Bitte migrieren Sie es in den neuen lokalen Arbeitsbereich.",
|
|
128
|
+
"simple-pipeline": "Einfache Pipeline",
|
|
129
|
+
"advanced-pipeline": "Erweiterte Pipeline",
|
|
130
|
+
"new-simple-project": "Neues einfaches Projekt",
|
|
131
|
+
"new-advanced-project": "Neues erweitertes Projekt",
|
|
132
|
+
"store-project-internally": "Projekt lokal speichern",
|
|
133
|
+
"internal": "Intern",
|
|
134
|
+
"confirm-migration-message": "Sind Sie sicher, dass Sie diese Pipeline in den lokalen Arbeitsbereich verschieben möchten? Pipelab wird diese Pipeline intern verwalten.",
|
|
135
|
+
"migrate-pipeline": "Pipeline migrieren",
|
|
136
|
+
"migration-success": "Pipeline erfolgreich migriert",
|
|
137
|
+
"migrate-to-internal": "In Arbeitsbereich verschieben",
|
|
138
|
+
"only-internal-supported-notice": "Pipelab verwaltet jetzt alle Pipelines im Arbeitsbereich der Anwendung. Externe Dateien sind veraltet, können aber weiterhin importiert werden.",
|
|
139
|
+
"import-pipeline": "Pipeline importieren",
|
|
140
|
+
"import-success": "Pipeline erfolgreich importiert",
|
|
141
|
+
"failed-to-read-file": "Ausgewählte Datei konnte nicht gelesen werden"
|
|
86
142
|
},
|
|
87
|
-
"
|
|
88
|
-
"
|
|
143
|
+
"pipelines": {
|
|
144
|
+
"title": "@:headers.pipelines"
|
|
145
|
+
},
|
|
146
|
+
"tour": {
|
|
147
|
+
"start-tour": "Anleitung starten",
|
|
148
|
+
"projects-list-title": "Projekt-Navigator",
|
|
149
|
+
"projects-list-description": "Diese Seitenleiste zeigt Ihre Projekte. Durch Auswahl eines Projekts werden dessen Pipelines im Hauptbereich angezeigt.",
|
|
150
|
+
"add-project-title": "Neues Projekt erstellen",
|
|
151
|
+
"add-project-description": "Projekte organisieren Ihre Pipelines nach Thema oder Kunde. Klicken Sie hier, um ein neues Projekt zu starten.",
|
|
152
|
+
"new-pipeline-title": "Pipeline erstellen",
|
|
153
|
+
"new-pipeline-description": "Bereit zur Automatisierung? Erstellen Sie eine neue Pipeline, um Aktionen und Logik hinzuzufügen.",
|
|
154
|
+
"project-actions-title": "Projektverwaltung",
|
|
155
|
+
"project-actions-description": "Verwenden Sie diese Schaltflächen, um das derzeit ausgewählte Projekt umzubenennen oder zu löschen.",
|
|
156
|
+
"editor-canvas-title": "Der visuelle Editor",
|
|
157
|
+
"editor-canvas-description": "Dies ist Ihr Arbeitsbereich. Ziehen Sie Aktionsblöcke hierher, um Ihren Automatisierungsfluss zu erstellen.",
|
|
158
|
+
"editor-save-title": "Fortschritt speichern",
|
|
159
|
+
"editor-save-description": "Schützen Sie Ihre Änderungen. Wir empfehlen, Ihre Pipeline häufig zu speichern.",
|
|
160
|
+
"editor-run-title": "Pipeline testen",
|
|
161
|
+
"editor-run-description": "Klicken Sie auf Ausführen, um Ihre Pipeline zu testen. Pipelab führt jeden Block in Echtzeit aus.",
|
|
162
|
+
"editor-logs-title": "Ausführungsprotokolle",
|
|
163
|
+
"editor-logs-description": "Das Protokollfenster zeigt die Ausführungsschritte in Echtzeit, um Sie bei der Überwachung und Fehlersuche zu unterstützen.",
|
|
164
|
+
"editor-close-title": "Editor schließen",
|
|
165
|
+
"editor-close-description": "Fertig für heute? Kehren Sie zum Dashboard zurück, um andere Projekte und Pipelines zu verwalten."
|
|
89
166
|
}
|
|
90
167
|
}
|