@elek-io/core 0.15.2 → 0.15.3

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.
@@ -40,7 +40,7 @@ var __export = (all) => {
40
40
  //#region package.json
41
41
  var package_default = {
42
42
  name: "@elek-io/core",
43
- version: "0.15.2",
43
+ version: "0.15.3",
44
44
  description: "Handles core functionality of elek.io Projects like file IO and version control.",
45
45
  homepage: "https://elek.io",
46
46
  repository: "https://github.com/elek-io/core",
@@ -962,11 +962,10 @@ const projectSchema = projectFileSchema.extend({
962
962
  history: z.array(gitCommitSchema).openapi({ description: "Commit history of this Project" }),
963
963
  fullHistory: z.array(gitCommitSchema).openapi({ description: "Full commit history of this Project including all Assets, Collections, Entries and other files" })
964
964
  }).openapi("Project");
965
- const outdatedProjectSchema = projectFileSchema.pick({
965
+ const migrateProjectSchema = projectFileSchema.pick({
966
966
  id: true,
967
- name: true,
968
967
  coreVersion: true
969
- });
968
+ }).loose();
970
969
  const projectExportSchema = projectSchema.extend({
971
970
  assets: z.array(assetExportSchema),
972
971
  collections: z.array(collectionExportSchema)
@@ -975,9 +974,6 @@ const createProjectSchema = projectSchema.pick({
975
974
  name: true,
976
975
  description: true,
977
976
  settings: true
978
- }).partial({
979
- description: true,
980
- settings: true
981
977
  });
982
978
  const readProjectSchema = z.object({
983
979
  id: uuidSchema.readonly(),
@@ -988,10 +984,6 @@ const updateProjectSchema = projectSchema.pick({
988
984
  name: true,
989
985
  description: true,
990
986
  settings: true
991
- }).partial({
992
- name: true,
993
- description: true,
994
- settings: true
995
987
  });
996
988
  const upgradeProjectSchema = z.object({
997
989
  id: uuidSchema.readonly(),
@@ -3397,16 +3389,14 @@ var SynchronizeLocalChangesError = class extends Error {
3397
3389
  var ProjectService = class extends AbstractCrudService {
3398
3390
  coreVersion;
3399
3391
  jsonFileService;
3400
- userService;
3401
3392
  gitService;
3402
3393
  assetService;
3403
3394
  collectionService;
3404
3395
  entryService;
3405
- constructor(coreVersion, options, logService, jsonFileService, userService, gitService, assetService, collectionService, entryService) {
3396
+ constructor(coreVersion, options, logService, jsonFileService, gitService, assetService, collectionService, entryService) {
3406
3397
  super(serviceTypeSchema.enum.Project, options, logService);
3407
3398
  this.coreVersion = coreVersion;
3408
3399
  this.jsonFileService = jsonFileService;
3409
- this.userService = userService;
3410
3400
  this.gitService = gitService;
3411
3401
  this.assetService = assetService;
3412
3402
  this.collectionService = collectionService;
@@ -3417,19 +3407,11 @@ var ProjectService = class extends AbstractCrudService {
3417
3407
  */
3418
3408
  async create(props) {
3419
3409
  createProjectSchema.parse(props);
3420
- const user = await this.userService.get();
3421
- if (!user) throw new NoCurrentUserError();
3422
3410
  const id = uuid();
3423
- const defaultSettings = { language: {
3424
- default: user.language,
3425
- supported: [user.language]
3426
- } };
3427
3411
  const projectFile = {
3428
3412
  ...props,
3429
3413
  objectType: "project",
3430
3414
  id,
3431
- description: props.description || "",
3432
- settings: Object.assign({}, defaultSettings, props.settings),
3433
3415
  created: datetime(),
3434
3416
  updated: null,
3435
3417
  coreVersion: this.coreVersion,
@@ -3487,7 +3469,7 @@ var ProjectService = class extends AbstractCrudService {
3487
3469
  const projectFile = await this.jsonFileService.read(pathTo.projectFile(props.id), projectFileSchema);
3488
3470
  return await this.toProject(projectFile);
3489
3471
  } else {
3490
- const projectFile = this.migrate(JSON.parse(await this.gitService.getFileContentAtCommit(pathTo.project(props.id), pathTo.projectFile(props.id), props.commitHash)));
3472
+ const projectFile = this.migrate(migrateProjectSchema.parse(JSON.parse(await this.gitService.getFileContentAtCommit(pathTo.project(props.id), pathTo.projectFile(props.id), props.commitHash))));
3491
3473
  return await this.toProject(projectFile);
3492
3474
  }
3493
3475
  }
@@ -3498,16 +3480,9 @@ var ProjectService = class extends AbstractCrudService {
3498
3480
  updateProjectSchema.parse(props);
3499
3481
  const projectPath = pathTo.project(props.id);
3500
3482
  const filePath = pathTo.projectFile(props.id);
3501
- const prevProjectFile = await this.read(props);
3502
3483
  const projectFile = {
3503
- ...prevProjectFile,
3504
- name: props.name || prevProjectFile.name,
3505
- description: props.description || prevProjectFile.description,
3506
- coreVersion: this.coreVersion,
3507
- settings: { language: {
3508
- supported: props.settings?.language.supported || prevProjectFile.settings.language.supported,
3509
- default: props.settings?.language.default || prevProjectFile.settings.language.default
3510
- } },
3484
+ ...await this.read(props),
3485
+ ...props,
3511
3486
  updated: datetime()
3512
3487
  };
3513
3488
  await this.jsonFileService.update(projectFile, filePath, projectFileSchema);
@@ -3531,7 +3506,7 @@ var ProjectService = class extends AbstractCrudService {
3531
3506
  const projectPath = pathTo.project(props.id);
3532
3507
  const projectFilePath = pathTo.projectFile(props.id);
3533
3508
  if (await this.gitService.branches.current(projectPath) !== projectBranchSchema.enum.work) await this.gitService.branches.switch(projectPath, projectBranchSchema.enum.work);
3534
- const currentProjectFile = outdatedProjectSchema.passthrough().parse(await this.jsonFileService.unsafeRead(projectFilePath));
3509
+ const currentProjectFile = migrateProjectSchema.parse(await this.jsonFileService.unsafeRead(projectFilePath));
3535
3510
  if (Semver.gt(currentProjectFile.coreVersion, this.coreVersion)) throw new ProjectUpgradeError(`The Projects Core version "${currentProjectFile.coreVersion}" is higher than the current Core version "${this.coreVersion}".`);
3536
3511
  if (Semver.eq(currentProjectFile.coreVersion, this.coreVersion) && props.force !== true) throw new ProjectUpgradeError(`The Projects Core version "${currentProjectFile.coreVersion}" is already up to date.`);
3537
3512
  const assetReferences = await this.listReferences("asset", props.id);
@@ -3673,7 +3648,7 @@ var ProjectService = class extends AbstractCrudService {
3673
3648
  const projectReferences = await this.listReferences(objectTypeSchema.enum.project);
3674
3649
  return (await Promise.all(projectReferences.map(async (reference) => {
3675
3650
  const json = await this.jsonFileService.unsafeRead(pathTo.projectFile(reference.id));
3676
- const projectFile = outdatedProjectSchema.parse(json);
3651
+ const projectFile = migrateProjectSchema.parse(json);
3677
3652
  if (projectFile.coreVersion !== this.coreVersion) return projectFile;
3678
3653
  return null;
3679
3654
  }))).filter(isNotEmpty);
@@ -3706,8 +3681,9 @@ var ProjectService = class extends AbstractCrudService {
3706
3681
  /**
3707
3682
  * Migrates an potentially outdated Project file to the current schema
3708
3683
  */
3709
- migrate(potentiallyOutdatedProjectFile) {
3710
- return projectFileSchema.parse(potentiallyOutdatedProjectFile);
3684
+ migrate(props) {
3685
+ props.coreVersion = this.coreVersion;
3686
+ return projectFileSchema.parse(props);
3711
3687
  }
3712
3688
  /**
3713
3689
  * Creates a Project from given ProjectFile
@@ -3896,7 +3872,7 @@ var ElekIoCore = class {
3896
3872
  this.assetService = new AssetService(this.options, this.logService, this.jsonFileService, this.gitService);
3897
3873
  this.collectionService = new CollectionService(this.options, this.logService, this.jsonFileService, this.gitService);
3898
3874
  this.entryService = new EntryService(this.options, this.logService, this.jsonFileService, this.gitService, this.collectionService);
3899
- this.projectService = new ProjectService(this.coreVersion, this.options, this.logService, this.jsonFileService, this.userService, this.gitService, this.assetService, this.collectionService, this.entryService);
3875
+ this.projectService = new ProjectService(this.coreVersion, this.options, this.logService, this.jsonFileService, this.gitService, this.assetService, this.collectionService, this.entryService);
3900
3876
  this.localApi = new LocalApi(this.logService, this.projectService, this.collectionService, this.entryService, this.assetService);
3901
3877
  this.logService.info({
3902
3878
  source: "core",
@@ -9879,12 +9879,11 @@ declare const projectSchema: z.ZodObject<{
9879
9879
  }, z.core.$strip>>;
9880
9880
  }, z.core.$strip>;
9881
9881
  type Project = z.infer<typeof projectSchema>;
9882
- declare const outdatedProjectSchema: z.ZodObject<{
9882
+ declare const migrateProjectSchema: z.ZodObject<{
9883
9883
  id: z.ZodReadonly<z.ZodUUID>;
9884
- name: z.ZodString;
9885
9884
  coreVersion: z.ZodString;
9886
- }, z.core.$strip>;
9887
- type OutdatedProject = z.infer<typeof outdatedProjectSchema>;
9885
+ }, z.core.$loose>;
9886
+ type MigrateProjectProps = z.infer<typeof migrateProjectSchema>;
9888
9887
  declare const projectExportSchema: z.ZodObject<{
9889
9888
  id: z.ZodReadonly<z.ZodUUID>;
9890
9889
  created: z.ZodReadonly<z.ZodString>;
@@ -11324,8 +11323,8 @@ declare const projectExportSchema: z.ZodObject<{
11324
11323
  type ProjectExport = z.infer<typeof projectExportSchema>;
11325
11324
  declare const createProjectSchema: z.ZodObject<{
11326
11325
  name: z.ZodString;
11327
- description: z.ZodOptional<z.ZodString>;
11328
- settings: z.ZodOptional<z.ZodObject<{
11326
+ description: z.ZodString;
11327
+ settings: z.ZodObject<{
11329
11328
  language: z.ZodObject<{
11330
11329
  default: z.ZodEnum<{
11331
11330
  bg: "bg";
@@ -11380,7 +11379,7 @@ declare const createProjectSchema: z.ZodObject<{
11380
11379
  zh: "zh";
11381
11380
  }>>;
11382
11381
  }, z.core.$strip>;
11383
- }, z.core.$strip>>;
11382
+ }, z.core.$strip>;
11384
11383
  }, z.core.$strip>;
11385
11384
  type CreateProjectProps = z.infer<typeof createProjectSchema>;
11386
11385
  declare const readProjectSchema: z.ZodObject<{
@@ -11390,9 +11389,9 @@ declare const readProjectSchema: z.ZodObject<{
11390
11389
  type ReadProjectProps = z.infer<typeof readProjectSchema>;
11391
11390
  declare const updateProjectSchema: z.ZodObject<{
11392
11391
  id: z.ZodReadonly<z.ZodUUID>;
11393
- name: z.ZodOptional<z.ZodString>;
11394
- description: z.ZodOptional<z.ZodString>;
11395
- settings: z.ZodOptional<z.ZodObject<{
11392
+ name: z.ZodString;
11393
+ description: z.ZodString;
11394
+ settings: z.ZodObject<{
11396
11395
  language: z.ZodObject<{
11397
11396
  default: z.ZodEnum<{
11398
11397
  bg: "bg";
@@ -11447,7 +11446,7 @@ declare const updateProjectSchema: z.ZodObject<{
11447
11446
  zh: "zh";
11448
11447
  }>>;
11449
11448
  }, z.core.$strip>;
11450
- }, z.core.$strip>>;
11449
+ }, z.core.$strip>;
11451
11450
  }, z.core.$strip>;
11452
11451
  type UpdateProjectProps = z.infer<typeof updateProjectSchema>;
11453
11452
  declare const upgradeProjectSchema: z.ZodObject<{
@@ -12568,8 +12567,8 @@ declare function getUpdateEntrySchemaFromFieldDefinitions(fieldDefinitions: Fiel
12568
12567
  //#region src/schema/serviceSchema.d.ts
12569
12568
  declare const serviceTypeSchema: z.ZodEnum<{
12570
12569
  Asset: "Asset";
12571
- Collection: "Collection";
12572
12570
  Entry: "Entry";
12571
+ Collection: "Collection";
12573
12572
  Project: "Project";
12574
12573
  Git: "Git";
12575
12574
  GitTag: "GitTag";
@@ -14377,12 +14376,11 @@ declare class EntryService extends AbstractCrudService implements CrudServiceWit
14377
14376
  declare class ProjectService extends AbstractCrudService implements CrudServiceWithListCount<Project> {
14378
14377
  private coreVersion;
14379
14378
  private jsonFileService;
14380
- private userService;
14381
14379
  private gitService;
14382
14380
  private assetService;
14383
14381
  private collectionService;
14384
14382
  private entryService;
14385
- constructor(coreVersion: Version, options: ElekIoCoreOptions, logService: LogService, jsonFileService: JsonFileService, userService: UserService, gitService: GitService, assetService: AssetService, collectionService: CollectionService, entryService: EntryService);
14383
+ constructor(coreVersion: Version, options: ElekIoCoreOptions, logService: LogService, jsonFileService: JsonFileService, gitService: GitService, assetService: AssetService, collectionService: CollectionService, entryService: EntryService);
14386
14384
  /**
14387
14385
  * Creates a new Project
14388
14386
  */
@@ -14498,7 +14496,7 @@ declare class ProjectService extends AbstractCrudService implements CrudServiceW
14498
14496
  /**
14499
14497
  * Lists outdated Projects that need to be upgraded
14500
14498
  */
14501
- listOutdated(): Promise<OutdatedProject[]>;
14499
+ listOutdated(): Promise<MigrateProjectProps[]>;
14502
14500
  list(props?: ListProjectsProps): Promise<PaginatedList<Project>>;
14503
14501
  count(): Promise<number>;
14504
14502
  /**
@@ -14508,7 +14506,7 @@ declare class ProjectService extends AbstractCrudService implements CrudServiceW
14508
14506
  /**
14509
14507
  * Migrates an potentially outdated Project file to the current schema
14510
14508
  */
14511
- migrate(potentiallyOutdatedProjectFile: unknown): {
14509
+ migrate(props: MigrateProjectProps): {
14512
14510
  id: string;
14513
14511
  created: string;
14514
14512
  updated: string | null;
@@ -14725,5 +14723,5 @@ declare class ElekIoCore {
14725
14723
  get api(): LocalApi;
14726
14724
  }
14727
14725
  //#endregion
14728
- export { ApiStartProps, Asset, AssetExport, AssetFieldDefinition, AssetFile, BaseFile, BaseUser, BooleanFieldDefinitionBaseSchema, CloneProjectProps, CloudUser, Collection, CollectionExport, CollectionFile, ConstructorElekIoCoreProps, CountAssetsProps, CountCollectionsProps, CountEntriesProps, CountGitTagsProps, CreateAssetProps, CreateCollectionProps, CreateEntryProps, CreateGitTagProps, CreateProjectProps, CrudService, CrudServiceWithListCount, CurrentBranchProjectProps, DateFieldDefinition, DatetimeFieldDefinition, DeleteAssetProps, DeleteCollectionProps, DeleteEntryProps, DeleteGitTagProps, DeleteProjectProps, DirectBooleanValue, DirectNumberValue, DirectStringValue, DirectValue, ElekIoCoreOptions, EmailFieldDefinition, Entry, EntryExport, EntryFieldDefinition, EntryFile, ExportProps, FieldDefinition, FieldDefinitionBase, FieldDefinitionBaseSchema, FieldType, FieldTypeSchema, FieldWidthSchema, FileReference, GenerateApiClientProps, GetChangesProjectProps, GetRemoteOriginUrlProjectProps, GitCloneOptions, GitCommit, GitInitOptions, GitLogOptions, GitMergeOptions, GitMessage, GitSignature, GitSwitchOptions, GitTag, Ipv4FieldDefinition, ListAssetsProps, ListBranchesProjectProps, ListCollectionsProps, ListEntriesProps, ListGitTagsProps, ListProjectsProps, LocalUser, LogConsoleTransportProps, LogProps, LogSource, NumberFieldDefinition, NumberFieldDefinitionBaseSchema, ObjectType, OutdatedProject, PaginatedList, PaginationOptions, Project, ProjectBranch, ProjectExport, ProjectFile, ProjectFolder, ProjectSettings, ProjectStatus, ProjectUpgrade, RangeFieldDefinition, ReadAssetProps, ReadCollectionProps, ReadEntryProps, ReadGitTagProps, ReadProjectProps, ReferenceFieldDefinitionBaseSchema, ReferencedValue, SaveAssetProps, SearchProjectProps, ServiceType, SetRemoteOriginUrlProjectProps, SetUserProps, StringFieldDefinition, StringFieldDefinitionBaseSchema, SupportedIcon, SupportedLanguage, SwitchBranchProjectProps, SynchronizeProjectProps, TelephoneFieldDefinition, TextFieldDefinition, TextareaFieldDefinition, TimeFieldDefinition, ToggleFieldDefinition, TranslatableBoolean, TranslatableNumber, TranslatableString, UpdateAssetProps, UpdateCollectionProps, UpdateEntryProps, UpdateProjectProps, UpgradeProjectProps, UrlFieldDefinition, User, UserFile, UserTypeSchema, Uuid, Value, ValueContentReference, ValueContentReferenceToAsset, ValueContentReferenceToCollection, ValueContentReferenceToEntry, ValueType, ValueTypeSchema, Version, apiStartSchema, assetExportSchema, assetFieldDefinitionSchema, assetFileSchema, assetSchema, baseFileSchema, baseUserSchema, cloneProjectSchema, cloudUserSchema, collectionExportSchema, collectionFileSchema, collectionSchema, constructorElekIoCoreSchema, countAssetsSchema, countCollectionsSchema, countEntriesSchema, countGitTagsSchema, createAssetSchema, createCollectionSchema, createEntrySchema, createGitTagSchema, createProjectSchema, currentBranchProjectSchema, dateFieldDefinitionSchema, datetime, datetimeFieldDefinitionSchema, ElekIoCore as default, deleteAssetSchema, deleteCollectionSchema, deleteEntrySchema, deleteGitTagSchema, deleteProjectSchema, directBooleanValueSchema, directNumberValueSchema, directStringValueSchema, directValueBaseSchema, directValueSchema, elekIoCoreOptionsSchema, emailFieldDefinitionSchema, entryExportSchema, entryFieldDefinitionSchema, entryFileSchema, entrySchema, exportSchema, fieldDefinitionSchema, fileReferenceSchema, generateApiClientSchema, getChangesProjectSchema, getCreateEntrySchemaFromFieldDefinitions, getEntrySchemaFromFieldDefinitions, getRemoteOriginUrlProjectSchema, getUpdateEntrySchemaFromFieldDefinitions, getValueSchemaFromFieldDefinition, gitCloneOptionsSchema, gitCommitSchema, gitInitOptionsSchema, gitLogOptionsSchema, gitMergeOptionsSchema, gitMessageSchema, gitSignatureSchema, gitSwitchOptionsSchema, gitTagSchema, ipv4FieldDefinitionSchema, listAssetsSchema, listBranchesProjectSchema, listCollectionsSchema, listEntriesSchema, listGitTagsSchema, listProjectsSchema, localUserSchema, logConsoleTransportSchema, logLevelSchema, logSchema, logSourceSchema, numberFieldDefinitionSchema, objectTypeSchema, outdatedProjectSchema, paginatedListOf, projectBranchSchema, projectExportSchema, projectFileSchema, projectFolderSchema, projectSchema, projectSettingsSchema, projectStatusSchema, projectUpgradeSchema, rangeFieldDefinitionSchema, readAssetSchema, readCollectionSchema, readEntrySchema, readGitTagSchema, readProjectSchema, referencedValueSchema, saveAssetSchema, searchProjectSchema, serviceTypeSchema, setRemoteOriginUrlProjectSchema, setUserSchema, slug, stringFieldDefinitionSchema, supportedIconSchema, supportedLanguageSchema, switchBranchProjectSchema, synchronizeProjectSchema, telephoneFieldDefinitionSchema, textFieldDefinitionSchema, textareaFieldDefinitionSchema, timeFieldDefinitionSchema, toggleFieldDefinitionSchema, translatableArrayOf, translatableBooleanSchema, translatableNumberSchema, translatableStringSchema, updateAssetSchema, updateCollectionSchema, updateEntrySchema, updateProjectSchema, upgradeProjectSchema, urlFieldDefinitionSchema, userFileSchema, userSchema, uuid, uuidSchema, valueContentReferenceBase, valueContentReferenceSchema, valueContentReferenceToAssetSchema, valueContentReferenceToCollectionSchema, valueContentReferenceToEntrySchema, valueSchema, versionSchema };
14726
+ export { ApiStartProps, Asset, AssetExport, AssetFieldDefinition, AssetFile, BaseFile, BaseUser, BooleanFieldDefinitionBaseSchema, CloneProjectProps, CloudUser, Collection, CollectionExport, CollectionFile, ConstructorElekIoCoreProps, CountAssetsProps, CountCollectionsProps, CountEntriesProps, CountGitTagsProps, CreateAssetProps, CreateCollectionProps, CreateEntryProps, CreateGitTagProps, CreateProjectProps, CrudService, CrudServiceWithListCount, CurrentBranchProjectProps, DateFieldDefinition, DatetimeFieldDefinition, DeleteAssetProps, DeleteCollectionProps, DeleteEntryProps, DeleteGitTagProps, DeleteProjectProps, DirectBooleanValue, DirectNumberValue, DirectStringValue, DirectValue, ElekIoCoreOptions, EmailFieldDefinition, Entry, EntryExport, EntryFieldDefinition, EntryFile, ExportProps, FieldDefinition, FieldDefinitionBase, FieldDefinitionBaseSchema, FieldType, FieldTypeSchema, FieldWidthSchema, FileReference, GenerateApiClientProps, GetChangesProjectProps, GetRemoteOriginUrlProjectProps, GitCloneOptions, GitCommit, GitInitOptions, GitLogOptions, GitMergeOptions, GitMessage, GitSignature, GitSwitchOptions, GitTag, Ipv4FieldDefinition, ListAssetsProps, ListBranchesProjectProps, ListCollectionsProps, ListEntriesProps, ListGitTagsProps, ListProjectsProps, LocalUser, LogConsoleTransportProps, LogProps, LogSource, MigrateProjectProps, NumberFieldDefinition, NumberFieldDefinitionBaseSchema, ObjectType, PaginatedList, PaginationOptions, Project, ProjectBranch, ProjectExport, ProjectFile, ProjectFolder, ProjectSettings, ProjectStatus, ProjectUpgrade, RangeFieldDefinition, ReadAssetProps, ReadCollectionProps, ReadEntryProps, ReadGitTagProps, ReadProjectProps, ReferenceFieldDefinitionBaseSchema, ReferencedValue, SaveAssetProps, SearchProjectProps, ServiceType, SetRemoteOriginUrlProjectProps, SetUserProps, StringFieldDefinition, StringFieldDefinitionBaseSchema, SupportedIcon, SupportedLanguage, SwitchBranchProjectProps, SynchronizeProjectProps, TelephoneFieldDefinition, TextFieldDefinition, TextareaFieldDefinition, TimeFieldDefinition, ToggleFieldDefinition, TranslatableBoolean, TranslatableNumber, TranslatableString, UpdateAssetProps, UpdateCollectionProps, UpdateEntryProps, UpdateProjectProps, UpgradeProjectProps, UrlFieldDefinition, User, UserFile, UserTypeSchema, Uuid, Value, ValueContentReference, ValueContentReferenceToAsset, ValueContentReferenceToCollection, ValueContentReferenceToEntry, ValueType, ValueTypeSchema, Version, apiStartSchema, assetExportSchema, assetFieldDefinitionSchema, assetFileSchema, assetSchema, baseFileSchema, baseUserSchema, cloneProjectSchema, cloudUserSchema, collectionExportSchema, collectionFileSchema, collectionSchema, constructorElekIoCoreSchema, countAssetsSchema, countCollectionsSchema, countEntriesSchema, countGitTagsSchema, createAssetSchema, createCollectionSchema, createEntrySchema, createGitTagSchema, createProjectSchema, currentBranchProjectSchema, dateFieldDefinitionSchema, datetime, datetimeFieldDefinitionSchema, ElekIoCore as default, deleteAssetSchema, deleteCollectionSchema, deleteEntrySchema, deleteGitTagSchema, deleteProjectSchema, directBooleanValueSchema, directNumberValueSchema, directStringValueSchema, directValueBaseSchema, directValueSchema, elekIoCoreOptionsSchema, emailFieldDefinitionSchema, entryExportSchema, entryFieldDefinitionSchema, entryFileSchema, entrySchema, exportSchema, fieldDefinitionSchema, fileReferenceSchema, generateApiClientSchema, getChangesProjectSchema, getCreateEntrySchemaFromFieldDefinitions, getEntrySchemaFromFieldDefinitions, getRemoteOriginUrlProjectSchema, getUpdateEntrySchemaFromFieldDefinitions, getValueSchemaFromFieldDefinition, gitCloneOptionsSchema, gitCommitSchema, gitInitOptionsSchema, gitLogOptionsSchema, gitMergeOptionsSchema, gitMessageSchema, gitSignatureSchema, gitSwitchOptionsSchema, gitTagSchema, ipv4FieldDefinitionSchema, listAssetsSchema, listBranchesProjectSchema, listCollectionsSchema, listEntriesSchema, listGitTagsSchema, listProjectsSchema, localUserSchema, logConsoleTransportSchema, logLevelSchema, logSchema, logSourceSchema, migrateProjectSchema, numberFieldDefinitionSchema, objectTypeSchema, paginatedListOf, projectBranchSchema, projectExportSchema, projectFileSchema, projectFolderSchema, projectSchema, projectSettingsSchema, projectStatusSchema, projectUpgradeSchema, rangeFieldDefinitionSchema, readAssetSchema, readCollectionSchema, readEntrySchema, readGitTagSchema, readProjectSchema, referencedValueSchema, saveAssetSchema, searchProjectSchema, serviceTypeSchema, setRemoteOriginUrlProjectSchema, setUserSchema, slug, stringFieldDefinitionSchema, supportedIconSchema, supportedLanguageSchema, switchBranchProjectSchema, synchronizeProjectSchema, telephoneFieldDefinitionSchema, textFieldDefinitionSchema, textareaFieldDefinitionSchema, timeFieldDefinitionSchema, toggleFieldDefinitionSchema, translatableArrayOf, translatableBooleanSchema, translatableNumberSchema, translatableStringSchema, updateAssetSchema, updateCollectionSchema, updateEntrySchema, updateProjectSchema, upgradeProjectSchema, urlFieldDefinitionSchema, userFileSchema, userSchema, uuid, uuidSchema, valueContentReferenceBase, valueContentReferenceSchema, valueContentReferenceToAssetSchema, valueContentReferenceToCollectionSchema, valueContentReferenceToEntrySchema, valueSchema, versionSchema };
14729
14727
  //# sourceMappingURL=index.node.d.ts.map
@@ -23,7 +23,7 @@ import Semver from "semver";
23
23
  //#region package.json
24
24
  var package_default = {
25
25
  name: "@elek-io/core",
26
- version: "0.15.2",
26
+ version: "0.15.3",
27
27
  description: "Handles core functionality of elek.io Projects like file IO and version control.",
28
28
  homepage: "https://elek.io",
29
29
  repository: "https://github.com/elek-io/core",
@@ -681,11 +681,10 @@ const projectSchema = projectFileSchema.extend({
681
681
  history: z.array(gitCommitSchema).openapi({ description: "Commit history of this Project" }),
682
682
  fullHistory: z.array(gitCommitSchema).openapi({ description: "Full commit history of this Project including all Assets, Collections, Entries and other files" })
683
683
  }).openapi("Project");
684
- const outdatedProjectSchema = projectFileSchema.pick({
684
+ const migrateProjectSchema = projectFileSchema.pick({
685
685
  id: true,
686
- name: true,
687
686
  coreVersion: true
688
- });
687
+ }).loose();
689
688
  const projectExportSchema = projectSchema.extend({
690
689
  assets: z.array(assetExportSchema),
691
690
  collections: z.array(collectionExportSchema)
@@ -694,9 +693,6 @@ const createProjectSchema = projectSchema.pick({
694
693
  name: true,
695
694
  description: true,
696
695
  settings: true
697
- }).partial({
698
- description: true,
699
- settings: true
700
696
  });
701
697
  const readProjectSchema = z.object({
702
698
  id: uuidSchema.readonly(),
@@ -707,10 +703,6 @@ const updateProjectSchema = projectSchema.pick({
707
703
  name: true,
708
704
  description: true,
709
705
  settings: true
710
- }).partial({
711
- name: true,
712
- description: true,
713
- settings: true
714
706
  });
715
707
  const upgradeProjectSchema = z.object({
716
708
  id: uuidSchema.readonly(),
@@ -3128,16 +3120,14 @@ var SynchronizeLocalChangesError = class extends Error {
3128
3120
  var ProjectService = class extends AbstractCrudService {
3129
3121
  coreVersion;
3130
3122
  jsonFileService;
3131
- userService;
3132
3123
  gitService;
3133
3124
  assetService;
3134
3125
  collectionService;
3135
3126
  entryService;
3136
- constructor(coreVersion, options, logService, jsonFileService, userService, gitService, assetService, collectionService, entryService) {
3127
+ constructor(coreVersion, options, logService, jsonFileService, gitService, assetService, collectionService, entryService) {
3137
3128
  super(serviceTypeSchema.enum.Project, options, logService);
3138
3129
  this.coreVersion = coreVersion;
3139
3130
  this.jsonFileService = jsonFileService;
3140
- this.userService = userService;
3141
3131
  this.gitService = gitService;
3142
3132
  this.assetService = assetService;
3143
3133
  this.collectionService = collectionService;
@@ -3148,19 +3138,11 @@ var ProjectService = class extends AbstractCrudService {
3148
3138
  */
3149
3139
  async create(props) {
3150
3140
  createProjectSchema.parse(props);
3151
- const user = await this.userService.get();
3152
- if (!user) throw new NoCurrentUserError();
3153
3141
  const id = uuid();
3154
- const defaultSettings = { language: {
3155
- default: user.language,
3156
- supported: [user.language]
3157
- } };
3158
3142
  const projectFile = {
3159
3143
  ...props,
3160
3144
  objectType: "project",
3161
3145
  id,
3162
- description: props.description || "",
3163
- settings: Object.assign({}, defaultSettings, props.settings),
3164
3146
  created: datetime(),
3165
3147
  updated: null,
3166
3148
  coreVersion: this.coreVersion,
@@ -3218,7 +3200,7 @@ var ProjectService = class extends AbstractCrudService {
3218
3200
  const projectFile = await this.jsonFileService.read(pathTo.projectFile(props.id), projectFileSchema);
3219
3201
  return await this.toProject(projectFile);
3220
3202
  } else {
3221
- const projectFile = this.migrate(JSON.parse(await this.gitService.getFileContentAtCommit(pathTo.project(props.id), pathTo.projectFile(props.id), props.commitHash)));
3203
+ const projectFile = this.migrate(migrateProjectSchema.parse(JSON.parse(await this.gitService.getFileContentAtCommit(pathTo.project(props.id), pathTo.projectFile(props.id), props.commitHash))));
3222
3204
  return await this.toProject(projectFile);
3223
3205
  }
3224
3206
  }
@@ -3229,16 +3211,9 @@ var ProjectService = class extends AbstractCrudService {
3229
3211
  updateProjectSchema.parse(props);
3230
3212
  const projectPath = pathTo.project(props.id);
3231
3213
  const filePath = pathTo.projectFile(props.id);
3232
- const prevProjectFile = await this.read(props);
3233
3214
  const projectFile = {
3234
- ...prevProjectFile,
3235
- name: props.name || prevProjectFile.name,
3236
- description: props.description || prevProjectFile.description,
3237
- coreVersion: this.coreVersion,
3238
- settings: { language: {
3239
- supported: props.settings?.language.supported || prevProjectFile.settings.language.supported,
3240
- default: props.settings?.language.default || prevProjectFile.settings.language.default
3241
- } },
3215
+ ...await this.read(props),
3216
+ ...props,
3242
3217
  updated: datetime()
3243
3218
  };
3244
3219
  await this.jsonFileService.update(projectFile, filePath, projectFileSchema);
@@ -3262,7 +3237,7 @@ var ProjectService = class extends AbstractCrudService {
3262
3237
  const projectPath = pathTo.project(props.id);
3263
3238
  const projectFilePath = pathTo.projectFile(props.id);
3264
3239
  if (await this.gitService.branches.current(projectPath) !== projectBranchSchema.enum.work) await this.gitService.branches.switch(projectPath, projectBranchSchema.enum.work);
3265
- const currentProjectFile = outdatedProjectSchema.passthrough().parse(await this.jsonFileService.unsafeRead(projectFilePath));
3240
+ const currentProjectFile = migrateProjectSchema.parse(await this.jsonFileService.unsafeRead(projectFilePath));
3266
3241
  if (Semver.gt(currentProjectFile.coreVersion, this.coreVersion)) throw new ProjectUpgradeError(`The Projects Core version "${currentProjectFile.coreVersion}" is higher than the current Core version "${this.coreVersion}".`);
3267
3242
  if (Semver.eq(currentProjectFile.coreVersion, this.coreVersion) && props.force !== true) throw new ProjectUpgradeError(`The Projects Core version "${currentProjectFile.coreVersion}" is already up to date.`);
3268
3243
  const assetReferences = await this.listReferences("asset", props.id);
@@ -3404,7 +3379,7 @@ var ProjectService = class extends AbstractCrudService {
3404
3379
  const projectReferences = await this.listReferences(objectTypeSchema.enum.project);
3405
3380
  return (await Promise.all(projectReferences.map(async (reference) => {
3406
3381
  const json = await this.jsonFileService.unsafeRead(pathTo.projectFile(reference.id));
3407
- const projectFile = outdatedProjectSchema.parse(json);
3382
+ const projectFile = migrateProjectSchema.parse(json);
3408
3383
  if (projectFile.coreVersion !== this.coreVersion) return projectFile;
3409
3384
  return null;
3410
3385
  }))).filter(isNotEmpty);
@@ -3437,8 +3412,9 @@ var ProjectService = class extends AbstractCrudService {
3437
3412
  /**
3438
3413
  * Migrates an potentially outdated Project file to the current schema
3439
3414
  */
3440
- migrate(potentiallyOutdatedProjectFile) {
3441
- return projectFileSchema.parse(potentiallyOutdatedProjectFile);
3415
+ migrate(props) {
3416
+ props.coreVersion = this.coreVersion;
3417
+ return projectFileSchema.parse(props);
3442
3418
  }
3443
3419
  /**
3444
3420
  * Creates a Project from given ProjectFile
@@ -3627,7 +3603,7 @@ var ElekIoCore = class {
3627
3603
  this.assetService = new AssetService(this.options, this.logService, this.jsonFileService, this.gitService);
3628
3604
  this.collectionService = new CollectionService(this.options, this.logService, this.jsonFileService, this.gitService);
3629
3605
  this.entryService = new EntryService(this.options, this.logService, this.jsonFileService, this.gitService, this.collectionService);
3630
- this.projectService = new ProjectService(this.coreVersion, this.options, this.logService, this.jsonFileService, this.userService, this.gitService, this.assetService, this.collectionService, this.entryService);
3606
+ this.projectService = new ProjectService(this.coreVersion, this.options, this.logService, this.jsonFileService, this.gitService, this.assetService, this.collectionService, this.entryService);
3631
3607
  this.localApi = new LocalApi(this.logService, this.projectService, this.collectionService, this.entryService, this.assetService);
3632
3608
  this.logService.info({
3633
3609
  source: "core",
@@ -3696,5 +3672,5 @@ var ElekIoCore = class {
3696
3672
  };
3697
3673
 
3698
3674
  //#endregion
3699
- export { BooleanFieldDefinitionBaseSchema, FieldDefinitionBaseSchema, FieldTypeSchema, FieldWidthSchema, NumberFieldDefinitionBaseSchema, ReferenceFieldDefinitionBaseSchema, StringFieldDefinitionBaseSchema, UserTypeSchema, ValueTypeSchema, apiStartSchema, assetExportSchema, assetFieldDefinitionSchema, assetFileSchema, assetSchema, baseFileSchema, baseUserSchema, cloneProjectSchema, cloudUserSchema, collectionExportSchema, collectionFileSchema, collectionSchema, constructorElekIoCoreSchema, countAssetsSchema, countCollectionsSchema, countEntriesSchema, countGitTagsSchema, createAssetSchema, createCollectionSchema, createEntrySchema, createGitTagSchema, createProjectSchema, currentBranchProjectSchema, dateFieldDefinitionSchema, datetime, datetimeFieldDefinitionSchema, ElekIoCore as default, deleteAssetSchema, deleteCollectionSchema, deleteEntrySchema, deleteGitTagSchema, deleteProjectSchema, directBooleanValueSchema, directNumberValueSchema, directStringValueSchema, directValueBaseSchema, directValueSchema, elekIoCoreOptionsSchema, emailFieldDefinitionSchema, entryExportSchema, entryFieldDefinitionSchema, entryFileSchema, entrySchema, exportSchema, fieldDefinitionSchema, fileReferenceSchema, generateApiClientSchema, getChangesProjectSchema, getCreateEntrySchemaFromFieldDefinitions, getEntrySchemaFromFieldDefinitions, getRemoteOriginUrlProjectSchema, getUpdateEntrySchemaFromFieldDefinitions, getValueSchemaFromFieldDefinition, gitCloneOptionsSchema, gitCommitSchema, gitInitOptionsSchema, gitLogOptionsSchema, gitMergeOptionsSchema, gitMessageSchema, gitSignatureSchema, gitSwitchOptionsSchema, gitTagSchema, ipv4FieldDefinitionSchema, listAssetsSchema, listBranchesProjectSchema, listCollectionsSchema, listEntriesSchema, listGitTagsSchema, listProjectsSchema, localUserSchema, logConsoleTransportSchema, logLevelSchema, logSchema, logSourceSchema, numberFieldDefinitionSchema, objectTypeSchema, outdatedProjectSchema, paginatedListOf, projectBranchSchema, projectExportSchema, projectFileSchema, projectFolderSchema, projectSchema, projectSettingsSchema, projectStatusSchema, projectUpgradeSchema, rangeFieldDefinitionSchema, readAssetSchema, readCollectionSchema, readEntrySchema, readGitTagSchema, readProjectSchema, referencedValueSchema, saveAssetSchema, searchProjectSchema, serviceTypeSchema, setRemoteOriginUrlProjectSchema, setUserSchema, slug, stringFieldDefinitionSchema, supportedIconSchema, supportedLanguageSchema, switchBranchProjectSchema, synchronizeProjectSchema, telephoneFieldDefinitionSchema, textFieldDefinitionSchema, textareaFieldDefinitionSchema, timeFieldDefinitionSchema, toggleFieldDefinitionSchema, translatableArrayOf, translatableBooleanSchema, translatableNumberSchema, translatableStringSchema, updateAssetSchema, updateCollectionSchema, updateEntrySchema, updateProjectSchema, upgradeProjectSchema, urlFieldDefinitionSchema, userFileSchema, userSchema, uuid, uuidSchema, valueContentReferenceBase, valueContentReferenceSchema, valueContentReferenceToAssetSchema, valueContentReferenceToCollectionSchema, valueContentReferenceToEntrySchema, valueSchema, versionSchema };
3675
+ export { BooleanFieldDefinitionBaseSchema, FieldDefinitionBaseSchema, FieldTypeSchema, FieldWidthSchema, NumberFieldDefinitionBaseSchema, ReferenceFieldDefinitionBaseSchema, StringFieldDefinitionBaseSchema, UserTypeSchema, ValueTypeSchema, apiStartSchema, assetExportSchema, assetFieldDefinitionSchema, assetFileSchema, assetSchema, baseFileSchema, baseUserSchema, cloneProjectSchema, cloudUserSchema, collectionExportSchema, collectionFileSchema, collectionSchema, constructorElekIoCoreSchema, countAssetsSchema, countCollectionsSchema, countEntriesSchema, countGitTagsSchema, createAssetSchema, createCollectionSchema, createEntrySchema, createGitTagSchema, createProjectSchema, currentBranchProjectSchema, dateFieldDefinitionSchema, datetime, datetimeFieldDefinitionSchema, ElekIoCore as default, deleteAssetSchema, deleteCollectionSchema, deleteEntrySchema, deleteGitTagSchema, deleteProjectSchema, directBooleanValueSchema, directNumberValueSchema, directStringValueSchema, directValueBaseSchema, directValueSchema, elekIoCoreOptionsSchema, emailFieldDefinitionSchema, entryExportSchema, entryFieldDefinitionSchema, entryFileSchema, entrySchema, exportSchema, fieldDefinitionSchema, fileReferenceSchema, generateApiClientSchema, getChangesProjectSchema, getCreateEntrySchemaFromFieldDefinitions, getEntrySchemaFromFieldDefinitions, getRemoteOriginUrlProjectSchema, getUpdateEntrySchemaFromFieldDefinitions, getValueSchemaFromFieldDefinition, gitCloneOptionsSchema, gitCommitSchema, gitInitOptionsSchema, gitLogOptionsSchema, gitMergeOptionsSchema, gitMessageSchema, gitSignatureSchema, gitSwitchOptionsSchema, gitTagSchema, ipv4FieldDefinitionSchema, listAssetsSchema, listBranchesProjectSchema, listCollectionsSchema, listEntriesSchema, listGitTagsSchema, listProjectsSchema, localUserSchema, logConsoleTransportSchema, logLevelSchema, logSchema, logSourceSchema, migrateProjectSchema, numberFieldDefinitionSchema, objectTypeSchema, paginatedListOf, projectBranchSchema, projectExportSchema, projectFileSchema, projectFolderSchema, projectSchema, projectSettingsSchema, projectStatusSchema, projectUpgradeSchema, rangeFieldDefinitionSchema, readAssetSchema, readCollectionSchema, readEntrySchema, readGitTagSchema, readProjectSchema, referencedValueSchema, saveAssetSchema, searchProjectSchema, serviceTypeSchema, setRemoteOriginUrlProjectSchema, setUserSchema, slug, stringFieldDefinitionSchema, supportedIconSchema, supportedLanguageSchema, switchBranchProjectSchema, synchronizeProjectSchema, telephoneFieldDefinitionSchema, textFieldDefinitionSchema, textareaFieldDefinitionSchema, timeFieldDefinitionSchema, toggleFieldDefinitionSchema, translatableArrayOf, translatableBooleanSchema, translatableNumberSchema, translatableStringSchema, updateAssetSchema, updateCollectionSchema, updateEntrySchema, updateProjectSchema, upgradeProjectSchema, urlFieldDefinitionSchema, userFileSchema, userSchema, uuid, uuidSchema, valueContentReferenceBase, valueContentReferenceSchema, valueContentReferenceToAssetSchema, valueContentReferenceToCollectionSchema, valueContentReferenceToEntrySchema, valueSchema, versionSchema };
3700
3676
  //# sourceMappingURL=index.node.js.map