@piveau/dpi 0.2.0-alpha.12 → 0.2.0-alpha.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.
Files changed (52) hide show
  1. package/dist/assets/dpi.css +1 -1
  2. package/dist/packages/dpi/src/data-provider-interface/DataProviderInterface.vue2.js +48 -47
  3. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/HomeTable.vue.js +74 -71
  4. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ProjectTable.vue.js +4 -94
  5. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ProjectTable.vue2.js +104 -0
  6. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/services/dpiV3_apis.js +1 -1
  7. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Autocomplete/AutocompleteVocab.vue.js +2 -2
  8. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Autocomplete/AutocompleteVocab.vue2.js +64 -52
  9. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/BasicInfosStep/ProjectNameStep.vue.js +8 -8
  10. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/DpiModalBase.vue.js +2 -2
  11. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/DpiModalBase.vue2.js +1 -1
  12. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Findability/CategoriesStep.vue.js +2 -2
  13. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/Findability/CategoriesStep.vue2.js +4 -4
  14. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/OptionalDataStep/OptionalDataStep.vue.js +2 -2
  15. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/OptionalDataStep/OptionalDataStep.vue2.js +21 -21
  16. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/DatasetStep.vue.js +2 -2
  17. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/DatasetStep.vue2.js +73 -71
  18. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/GetResource.vue.js +4 -4
  19. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareForm.vue.js +2 -2
  20. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareStep.vue.js +2 -2
  21. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/HardwareStep.vue2.js +133 -131
  22. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/SoftwareStep.vue.js +2 -2
  23. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ProcessSteps/SoftwareStep.vue2.js +85 -83
  24. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ReviewStep/ReviewStep.vue.js +2 -2
  25. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/ReviewStep/ReviewStep.vue2.js +4 -4
  26. package/dist/packages/dpi/src/data-provider-interface/HappyFlowComponents/ui/TableRowV3.vue.js +179 -133
  27. package/dist/packages/dpi/src/data-provider-interface/components/DistLicense.vue.js +224 -133
  28. package/dist/packages/dpi/src/data-provider-interface/components/StepActionsSection.vue.js +2 -2
  29. package/dist/packages/dpi/src/data-provider-interface/components/StepActionsSection.vue2.js +111 -91
  30. package/dist/packages/dpi/src/data-provider-interface/components/TheCancelConfirmationDialog.vue.js +3 -3
  31. package/dist/packages/dpi/src/data-provider-interface/components/TheCancelConfirmationDialog.vue2.js +24 -19
  32. package/dist/packages/dpi/src/data-provider-interface/components/VisibilityPage.vue.js +106 -0
  33. package/dist/packages/dpi/src/data-provider-interface/components/dev-tools/ProjectDpiDevTools.vue.js +2 -2
  34. package/dist/packages/dpi/src/data-provider-interface/components/dev-tools/ProjectDpiDevTools.vue2.js +137 -94
  35. package/dist/packages/dpi/src/data-provider-interface/composables/project-transformer/decodeProject.js +152 -135
  36. package/dist/packages/dpi/src/data-provider-interface/composables/project-transformer/encodeProject.js +201 -164
  37. package/dist/packages/dpi/src/data-provider-interface/composables/useDpiContext.js +9 -10
  38. package/dist/packages/dpi/src/data-provider-interface/composables/useDpiEditMode.js +88 -66
  39. package/dist/packages/dpi/src/data-provider-interface/composables/useDpiSimpleLoader.js +274 -273
  40. package/dist/packages/dpi/src/data-provider-interface/composables/useDpiStepper.js +33 -32
  41. package/dist/packages/dpi/src/data-provider-interface/composables/useDpiUtils.js +18 -9
  42. package/dist/packages/dpi/src/data-provider-interface/composables/useProjectActions.js +65 -0
  43. package/dist/packages/dpi/src/data-provider-interface/composables/useTwinbyHome.js +50 -0
  44. package/dist/packages/dpi/src/data-provider-interface/config/dcatapdeHappyFlow/input-definition.js +4 -0
  45. package/dist/packages/dpi/src/data-provider-interface/config/dcatapdeHappyFlow/page-content-config.js +1 -1
  46. package/dist/packages/dpi/src/data-provider-interface/schema/projectLdSchema.js +48 -45
  47. package/dist/packages/dpi/src/data-provider-interface/views/InputPage.vue.js +276 -251
  48. package/dist/packages/dpi/src/data-provider-interface/views/InputPageProject.vue.js +386 -397
  49. package/dist/packages/dpi/src/form/inputDefinitions.js +15 -10
  50. package/dist/packages/dpi/src/utils/schema/schemaProject.js +210 -0
  51. package/dist/packages/dpi/src/utils/schema/shared.js +23 -0
  52. package/package.json +3 -3
@@ -3,7 +3,7 @@ import { ref as H, computed as i, provide as J } from "vue";
3
3
  import { dpiStepperKey as M } from "../utils/injectionKeys.js";
4
4
  import O from "../utils/useSteps.js";
5
5
  function Y(Q) {
6
- const { steps: p, activeStep: o, stepPlugin: y, visitedSteps: B, subSteps: h, triggerValidation: n, triggerValidationCurrentStep: u } = O(), s = H([]), e = G(s, o.value), r = () => {
6
+ const { steps: p, activeStep: o, stepPlugin: B, visitedSteps: h, subSteps: A, triggerValidation: n, triggerValidationCurrentStep: u } = O(), s = H([]), e = G(s, o.value), r = () => {
7
7
  e.current.value && e.current.value !== o.value && (o.value = e.current.value);
8
8
  }, c = (t) => {
9
9
  s.value.includes(t) || (s.value.push(t), s.value.length === 1 && !o.value && (o.value = t, e.goTo(t)));
@@ -11,11 +11,11 @@ function Y(Q) {
11
11
  e.goToNext(), r();
12
12
  }, a = () => {
13
13
  e.goToPrevious(), r();
14
- }, A = (t) => {
14
+ }, g = (t) => {
15
15
  e.goTo(t), r();
16
16
  }, C = (t) => {
17
- const P = e.at(t);
18
- P && (e.goTo(P), r());
17
+ const y = e.at(t);
18
+ y && (e.goTo(y), r());
19
19
  }, I = i(() => e.index.value), L = i(() => e.previous.value || ""), N = i(() => e.next.value || ""), {
20
20
  steps: V,
21
21
  stepNames: b,
@@ -24,50 +24,51 @@ function Y(Q) {
24
24
  next: F,
25
25
  previous: K,
26
26
  isFirst: j,
27
- isLast: g,
27
+ isLast: l,
28
28
  at: q,
29
29
  get: w,
30
- goTo: l,
30
+ goTo: S,
31
31
  goToNext: z,
32
32
  goToPrevious: E,
33
- goBackTo: S,
34
- isNext: T,
35
- isPrevious: f,
36
- isCurrent: x,
37
- isBefore: d,
38
- isAfter: m
33
+ goBackTo: T,
34
+ isNext: f,
35
+ isPrevious: x,
36
+ isCurrent: d,
37
+ isBefore: m,
38
+ isAfter: P
39
39
  } = e;
40
40
  return J(M, {
41
41
  steps: p,
42
42
  activeStep: o,
43
43
  registerStep: c,
44
- goTo: l,
44
+ goTo: S,
45
45
  goToNextStep: v,
46
46
  goToPreviousStep: a,
47
- goBackTo: S,
48
- isNext: T,
49
- isPrevious: f,
50
- isCurrent: x,
51
- isBefore: d,
52
- isAfter: m,
47
+ goBackTo: T,
48
+ isNext: f,
49
+ isPrevious: x,
50
+ isCurrent: d,
51
+ isBefore: m,
52
+ isAfter: P,
53
53
  triggerValidation: n,
54
54
  triggerValidationCurrentStep: u,
55
- isLast: g
55
+ isLast: l,
56
+ goToStep: g
56
57
  }), {
57
58
  // Original API for backward compatibility (form validation steps)
58
59
  steps: p,
59
- subSteps: h,
60
+ subSteps: A,
60
61
  activeStep: o,
61
62
  activeStepIndex: I,
62
63
  previousStep: L,
63
64
  nextStep: N,
64
- visitedSteps: B,
65
- stepPlugin: y,
65
+ visitedSteps: h,
66
+ stepPlugin: B,
66
67
  stepList: s,
67
68
  registerStep: c,
68
69
  goToNextStep: v,
69
70
  goToPreviousStep: a,
70
- goToStep: A,
71
+ goToStep: g,
71
72
  goToStepByIndex: C,
72
73
  triggerValidation: n,
73
74
  triggerValidationCurrentStep: u,
@@ -79,18 +80,18 @@ function Y(Q) {
79
80
  next: F,
80
81
  previous: K,
81
82
  isFirst: j,
82
- isLast: g,
83
+ isLast: l,
83
84
  at: q,
84
85
  get: w,
85
- goTo: l,
86
+ goTo: S,
86
87
  goToNext: z,
87
88
  goToPrevious: E,
88
- goBackTo: S,
89
- isNext: T,
90
- isPrevious: f,
91
- isCurrent: x,
92
- isBefore: d,
93
- isAfter: m
89
+ goBackTo: T,
90
+ isNext: f,
91
+ isPrevious: x,
92
+ isCurrent: d,
93
+ isBefore: m,
94
+ isAfter: P
94
95
  };
95
96
  }
96
97
  export {
@@ -1,9 +1,9 @@
1
- import { useStore as D } from "vuex";
2
- import { useRouter as S, useRoute as _ } from "vue-router";
3
1
  import { computed as s, toValue as n } from "vue";
4
- import { useI18n as h } from "vue-i18n";
5
- function P() {
6
- const r = S(), p = _(), l = D(), { locale: m, fallbackLocale: d } = h(), u = s(() => p.query.locale || m.value || d.value || "en"), i = s(
2
+ import { useI18n as _ } from "vue-i18n";
3
+ import { useRouter as h, useRoute as y } from "vue-router";
4
+ import { useStore as R } from "vuex";
5
+ function L() {
6
+ const r = h(), m = y(), l = R(), { locale: p, fallbackLocale: d } = _(), u = s(() => m.query.locale || p.value || d.value || "en"), i = s(
7
7
  () => {
8
8
  var e;
9
9
  return ((e = l.getters["auth/getUserData"]) == null ? void 0 : e.rtpToken) || "";
@@ -13,13 +13,22 @@ function P() {
13
13
  localStorage == null || localStorage.removeItem("dpi_duplicate"), localStorage == null || localStorage.removeItem("dpi_catalogues"), localStorage == null || localStorage.removeItem("dpi_editmode"), localStorage == null || localStorage.removeItem("dpi_datasets"), localStorage == null || localStorage.removeItem("dpi_draftmode");
14
14
  }
15
15
  function f(e) {
16
- const { id: o, catalogId: a, isDraft: c = !1, locale: v, router: g = r } = e;
17
- i.value || console.warn("No rpt token found. DPI cannot be opened in edit mode."), t(), c && l.dispatch("auth/setIsDraft", !0), localStorage == null || localStorage.removeItem("dpi_duplicate"), g.push({ name: "DataProviderInterface-Input", params: { property: "datasets" }, query: {
16
+ const {
17
+ id: o,
18
+ catalogId: a,
19
+ isDraft: c = !1,
20
+ locale: v,
21
+ router: g = r,
22
+ routeName: D = "DataProviderInterface-Input",
23
+ additionalParams: S
24
+ } = e;
25
+ i.value || console.warn("No rpt token found. DPI cannot be opened in edit mode."), t(), c && l.dispatch("auth/setIsDraft", !0), localStorage == null || localStorage.removeItem("dpi_duplicate"), g.push({ name: D, params: { property: "datasets" }, query: {
18
26
  locale: n(v) || u.value,
19
27
  edit: "true",
20
28
  id: o,
21
29
  catalog: a,
22
- ...c && { fromDraft: "true" }
30
+ ...c && { fromDraft: "true" },
31
+ ...S
23
32
  } });
24
33
  }
25
34
  function I(e) {
@@ -35,5 +44,5 @@ function P() {
35
44
  };
36
45
  }
37
46
  export {
38
- P as useDpiUtils
47
+ L as useDpiUtils
39
48
  };
@@ -0,0 +1,65 @@
1
+ import { putResource as f } from "@piveau/sdk-core/hubRepo";
2
+ import { useAsyncState as b } from "@vueuse/core";
3
+ import { computed as g } from "vue";
4
+ import { useStore as h } from "vuex";
5
+ import { useRuntimeEnv as v } from "../../composables/useRuntimeEnv.js";
6
+ import { slugify as y, encodeProject as k } from "./project-transformer/encodeProject.js";
7
+ import { useEditModeInfo as I } from "./useDpiEditMode.js";
8
+ import { useFormValues as E } from "./useDpiFormValues.js";
9
+ async function S(m) {
10
+ var l, e, a, p;
11
+ const {
12
+ baseUrl: o,
13
+ formValues: t,
14
+ isEditMode: s,
15
+ editIdQuery: i,
16
+ authToken: u,
17
+ catalogId: n
18
+ } = m, c = s ? i : y((e = (l = t.value) == null ? void 0 : l["Grundlegende Informationen/Name"]) == null ? void 0 : e.projectName), d = k(t.value, { language: "de" });
19
+ let r = (p = (a = t.value) == null ? void 0 : a["Auffindbarkeit/Sichtbarkeit"]) == null ? void 0 : p.visibility;
20
+ r || (r = "public"), await f({
21
+ id: c,
22
+ // todo
23
+ // publicationStatus: editFromDraft.value ? 'draft' : 'published',
24
+ publicationStatus: "draft",
25
+ baseUrl: o || "https://twin.bydata.de/api/hub/repo",
26
+ type: "project",
27
+ data: d,
28
+ accessLevel: r,
29
+ catalogId: n || "catalog-1",
30
+ authToken: u
31
+ });
32
+ }
33
+ function Q(m) {
34
+ const o = h(), {
35
+ onSuccess: t = () => {
36
+ o.dispatch("snackbar/showSnackbar", {
37
+ message: "Projekt erfolgreich gespeichert",
38
+ variant: "success"
39
+ });
40
+ },
41
+ onError: s
42
+ } = {}, { formValues: i } = E(), u = g(() => {
43
+ var e, a;
44
+ return (a = (e = o.getters) == null ? void 0 : e["auth/getUserData"]) == null ? void 0 : a.authToken;
45
+ }), { editIdQuery: n, isEditMode: c, catalogId: d } = I(), r = v();
46
+ return {
47
+ submitDraft: b(async () => {
48
+ await S({
49
+ formValues: i,
50
+ isEditMode: c.value,
51
+ editIdQuery: n.value,
52
+ authToken: u.value,
53
+ baseUrl: r.api.hubUrl,
54
+ catalogId: d.value
55
+ });
56
+ }, null, {
57
+ immediate: !1,
58
+ onSuccess: t,
59
+ onError: s
60
+ })
61
+ };
62
+ }
63
+ export {
64
+ Q as useProjectActions
65
+ };
@@ -0,0 +1,50 @@
1
+ import { defineHubSearch as P, getTranslationFor as f } from "@piveau/sdk-vue";
2
+ import * as i from "zod";
3
+ import { schemaProject as C } from "../../utils/schema/schemaProject.js";
4
+ function S(g) {
5
+ const h = "project", b = P(
6
+ {
7
+ baseUrl: g,
8
+ index: "resource",
9
+ indexDetails: "resources/project",
10
+ schema: C.extend({
11
+ accessControlPermissions: i.array(i.enum(["view", "edit", "publish", "delete"])).optional(),
12
+ catalog_record: i.object({
13
+ modified: i.string().optional(),
14
+ status: i.string().optional(),
15
+ access_level: i.enum(["public", "restricted", "internal", "private"]).optional(),
16
+ publication_status: i.enum(["draft", "published"]).optional()
17
+ })
18
+ }),
19
+ facets: ["theme"]
20
+ },
21
+ (s, _) => {
22
+ var n, l, e, d, u, m, t, o;
23
+ const { currentLocale: a } = _;
24
+ return {
25
+ ...{
26
+ id: s.id,
27
+ title: typeof (s == null ? void 0 : s.name) == "string" ? s.name : f(s.name, a),
28
+ description: typeof (s == null ? void 0 : s.description) == "string" ? s.description : f(s.description, a),
29
+ accessControlPermissions: s == null ? void 0 : s.accessControlPermissions,
30
+ allowEdit: (n = s == null ? void 0 : s.accessControlPermissions) == null ? void 0 : n.includes("edit"),
31
+ allowPublish: (l = s == null ? void 0 : s.accessControlPermissions) == null ? void 0 : l.includes("publish"),
32
+ allowDelete: (e = s == null ? void 0 : s.accessControlPermissions) == null ? void 0 : e.includes("delete"),
33
+ modified: s == null ? void 0 : s.modified,
34
+ status: (d = s == null ? void 0 : s.catalog_record) == null ? void 0 : d.status,
35
+ accessLevel: (u = s == null ? void 0 : s.catalog_record) == null ? void 0 : u.access_level,
36
+ publicationStatus: (m = s == null ? void 0 : s.catalog_record) == null ? void 0 : m.publication_status,
37
+ catalogId: (t = s == null ? void 0 : s.catalog) == null ? void 0 : t.id,
38
+ superCatalogId: (o = s == null ? void 0 : s.catalog) == null ? void 0 : o.is_part_of
39
+ }
40
+ };
41
+ }
42
+ );
43
+ return {
44
+ resource: h,
45
+ ...b
46
+ };
47
+ }
48
+ export {
49
+ S as useProjectSearch
50
+ };
@@ -62,6 +62,10 @@ const a = {
62
62
  $formkit: "hvdPage",
63
63
  name: "hvdPage"
64
64
  },
65
+ visibility: {
66
+ $formkit: "visibilityPage",
67
+ name: "visibilityPage"
68
+ },
65
69
  overview: {
66
70
  $cmp: "OverviewPage",
67
71
  props: {
@@ -1,7 +1,7 @@
1
1
  const e = {
2
2
  datasets: {
3
3
  Landing: ["landingpage"],
4
- Discoverability: ["discoverabilitypage", "hvd"],
4
+ Discoverability: ["discoverabilitypage", "hvd", "visibility"],
5
5
  BasicInfos: [
6
6
  "titelpage",
7
7
  "descriptionV3",
@@ -1,114 +1,117 @@
1
- import { schemaDateField as s, takeFirst as e, schemaFoafAgent as i, schemaContactPoint as p, schemaIriString as o, schemaLanguageContainer as a, schemaTypedLiteral as c } from "@piveau/jsonld";
1
+ import { schemaDateField as n, takeFirst as e, schemaFoafAgent as c, schemaContactPoint as p, schemaIriString as r, schemaLanguageContainer as a, schemaTypedLiteral as s } from "@piveau/jsonld";
2
2
  import * as t from "zod/v4";
3
- const r = t.object({
3
+ const o = t.object({
4
4
  "@id": t.string().optional(),
5
- "@type": t.string().optional(),
5
+ "@type": t.string(),
6
6
  "dct:type": t.preprocess(e, t.string().optional()),
7
- "schema:url": t.preprocess(e, t.string().optional()),
8
- "dct:title": t.preprocess(e, t.string().optional()),
7
+ "schema:url": t.preprocess(e, t.string()),
8
+ "dct:title": t.preprocess(e, t.string()),
9
9
  "dct:description": t.preprocess(e, t.string().optional())
10
10
  }), l = t.object({
11
- "dct:title": t.preprocess(e, t.string().optional()),
12
- "dct:description": t.preprocess(e, t.string().optional())
13
- }), n = t.object({
11
+ "dct:title": t.preprocess(e, t.string())
12
+ }), i = t.object({
14
13
  "@type": t.preprocess(e, t.string().optional())
15
- }), d = n.extend({
16
- "@type": t.literal("pv:SoftwareLink"),
14
+ }), d = i.extend({
15
+ "@type": t.literal("schema:SoftwareApplication"),
17
16
  "dct:identifier": t.preprocess(e, t.string().optional()),
18
17
  "schema:featureList": t.array(t.string()).optional()
19
- }), y = n.extend({
18
+ }), y = i.extend({
20
19
  "@type": t.literal("dcat:Dataset"),
21
20
  "dct:identifier": t.preprocess(e, t.string().optional())
22
21
  }), m = t.object({
23
22
  "@type": t.string().optional(),
24
23
  "geo:lat": t.preprocess(e, t.string().optional()),
25
24
  "geo:long": t.preprocess(e, t.string().optional())
26
- }), g = n.extend({
27
- "@type": t.literal("ssn:Deployment"),
25
+ }), h = i.extend({
26
+ "@type": t.literal("ssn:System"),
28
27
  "dct:description": t.array(a).optional(),
29
- "ssn:deployedSystem": t.preprocess(e, o.optional()),
28
+ "ssn:deployedSystem": t.preprocess(e, r.optional()),
30
29
  /**
31
30
  * The purpose of the hardware instance ("Zwecke")
32
31
  */
33
32
  "ssn:forProperty": t.array(t.string()).optional(),
34
33
  "sosa:hasLocation": t.array(m).optional(),
35
- "foaf:depiction": t.array(o).optional(),
36
- "dct:references": t.array(r).optional(),
34
+ "foaf:depiction": t.array(r).optional(),
35
+ "dct:references": t.array(o).optional(),
37
36
  /**
38
37
  * Corresponds to functionalities of hardware;
39
38
  * not to be confused with schema:featureList of software
40
39
  */
41
40
  "ssn-system:hasSystemCapability": t.array(t.string()).optional()
42
- }), h = t.discriminatedUnion("@type", [
41
+ }), g = t.discriminatedUnion("@type", [
43
42
  d,
44
43
  y,
45
- g
44
+ h
46
45
  ]), f = t.object({
47
46
  "@type": t.string(),
48
- "schema:text": t.preprocess(e, t.string().optional()),
49
- "schema:acceptedAnswer": t.preprocess(e, t.string().optional())
47
+ "schema:text": t.preprocess(e, t.string()),
48
+ "schema:acceptedAnswer": t.preprocess(e, t.string()),
49
+ "schema:position": t.preprocess(e, s)
50
50
  }), j = t.object({
51
51
  "@type": t.string(),
52
- "dct:identifier": t.preprocess(e, t.string().optional()),
52
+ "dct:identifier": t.preprocess(e, t.string()),
53
53
  "dct:type": t.preprocess(e, t.string().optional()),
54
+ "schema:position": t.preprocess(e, s.optional()),
54
55
  "schema:question": t.array(f).optional(),
55
- "p-plan:isPrecededBy": t.preprocess(e, o.optional()),
56
- "dct:references": t.array(r).optional()
56
+ "p-plan:isPrecededBy": t.any(),
57
+ "dct:references": t.array(o).optional()
57
58
  }), u = t.object({
58
59
  "@type": t.string(),
59
- "dct:identifier": t.preprocess(e, t.string().optional()),
60
- "p-plan:Activity": t.preprocess(e, t.string().optional()),
61
- "dct:description": t.array(a).optional(),
60
+ "dct:identifier": t.preprocess(e, t.string()),
61
+ "p-plan:Activity": t.preprocess(e, t.string()),
62
+ "dct:description": t.array(a),
62
63
  "schema:about": t.array(t.string()).optional(),
63
- "p-plan:isPrecededBy": t.preprocess(e, o.optional()),
64
+ "schema:position": t.preprocess(e, s.optional()),
64
65
  "prov:used": t.array(l).optional(),
65
- "p-plan:hasInputVar": t.array(h).optional(),
66
- "dct:references": t.array(r).optional()
66
+ "p-plan:isPrecededBy": t.any(),
67
+ "p-plan:hasInputVar": t.array(g).optional(),
68
+ "dct:references": t.array(o).optional()
67
69
  }), P = t.object({
68
70
  "@type": t.string(),
71
+ "schema:description": t.preprocess(e, t.string().optional()),
69
72
  "schema:currency": t.preprocess(e, t.string().optional()),
70
- "schema:value": t.preprocess(e, c.optional())
73
+ "schema:value": t.preprocess(e, s.optional())
71
74
  }), L = t.object({
72
75
  "@id": t.string().optional(),
73
- "@type": t.string(),
76
+ "@type": t.array(t.string()).min(2),
74
77
  // Core identifiers and labels
75
78
  "dct:identifier": t.array(t.string()).optional(),
76
- "dct:title": t.array(a).optional(),
77
- "dct:description": t.array(a).optional(),
79
+ "dct:title": t.array(a),
80
+ "dct:description": t.array(a),
78
81
  // Themes/categories as simple IRI nodes
79
- "dcat:theme": t.array(o).optional(),
82
+ "dcat:theme": t.array(r),
80
83
  // Applications and status as literals
81
- "schema:application": t.array(o).optional(),
82
- "schema:status": t.preprocess(e, t.string().optional()),
84
+ "schema:application": t.array(r),
85
+ "schema:status": t.preprocess(e, t.string()),
83
86
  // Optional dates (date/dateTime)
84
- "schema:startDate": s,
85
- "schema:endDate": s,
87
+ "schema:startDate": n,
88
+ "schema:endDate": n,
86
89
  // Optional skills (literals)
87
90
  "schema:skills": t.array(t.string()).optional(),
88
91
  // Contact and partners
89
92
  "dcat:contactPoint": t.array(p).optional(),
90
- "dct:contributor": t.array(i).optional(),
93
+ "dct:contributor": t.array(c).optional(),
91
94
  // Optional budget
92
95
  "schema:amount": t.preprocess(e, P.optional()),
93
96
  // Organizational and technical steps
94
97
  "schema:hasPart": t.array(j).optional(),
95
98
  "p-plan:hasStep": t.array(u).optional(),
96
99
  // References and last modified
97
- "dct:references": t.array(r).optional(),
98
- "prov:generatedAtTime": s
100
+ "dct:references": t.array(o).optional(),
101
+ "prov:generatedAtTime": n
99
102
  });
100
103
  export {
101
104
  y as schemaDatasetLink,
102
- g as schemaHardwareInstance,
105
+ h as schemaHardwareInstance,
103
106
  m as schemaHardwareLocation,
104
107
  L as schemaProject,
105
- h as schemaProjectInputLink,
106
- n as schemaProjectInputLinkBase,
108
+ g as schemaProjectInputLink,
109
+ i as schemaProjectInputLinkBase,
107
110
  l as schemaProjectMethodsUsed,
108
111
  P as schemaProjectMonetaryAmount,
109
112
  j as schemaProjectQAPage,
110
113
  f as schemaProjectQuestionAnswer,
111
- r as schemaProjectResource,
114
+ o as schemaProjectResource,
112
115
  u as schemaProjectTechnicalStep,
113
116
  d as schemaSoftwareLink
114
117
  };