pocketbase-zod-schema 0.3.2 → 0.3.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cli/index.cjs +28 -6
  3. package/dist/cli/index.cjs.map +1 -1
  4. package/dist/cli/index.d.cts +1 -1
  5. package/dist/cli/index.d.ts +1 -1
  6. package/dist/cli/index.js +28 -6
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/migrate.cjs +28 -6
  9. package/dist/cli/migrate.cjs.map +1 -1
  10. package/dist/cli/migrate.js +28 -6
  11. package/dist/cli/migrate.js.map +1 -1
  12. package/dist/cli/utils/index.d.cts +1 -1
  13. package/dist/cli/utils/index.d.ts +1 -1
  14. package/dist/index.cjs +42 -9
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.js +42 -9
  19. package/dist/index.js.map +1 -1
  20. package/dist/migration/analyzer.d.cts +1 -1
  21. package/dist/migration/analyzer.d.ts +1 -1
  22. package/dist/migration/diff.cjs +10 -1
  23. package/dist/migration/diff.cjs.map +1 -1
  24. package/dist/migration/diff.d.cts +1 -1
  25. package/dist/migration/diff.d.ts +1 -1
  26. package/dist/migration/diff.js +10 -1
  27. package/dist/migration/diff.js.map +1 -1
  28. package/dist/migration/generator.cjs +32 -8
  29. package/dist/migration/generator.cjs.map +1 -1
  30. package/dist/migration/generator.d.cts +2 -2
  31. package/dist/migration/generator.d.ts +2 -2
  32. package/dist/migration/generator.js +32 -8
  33. package/dist/migration/generator.js.map +1 -1
  34. package/dist/migration/index.cjs +42 -9
  35. package/dist/migration/index.cjs.map +1 -1
  36. package/dist/migration/index.d.cts +1 -1
  37. package/dist/migration/index.d.ts +1 -1
  38. package/dist/migration/index.js +42 -9
  39. package/dist/migration/index.js.map +1 -1
  40. package/dist/migration/snapshot.d.cts +1 -1
  41. package/dist/migration/snapshot.d.ts +1 -1
  42. package/dist/{types-Dfp-NP2D.d.ts → types-BWhwQxG-.d.ts} +5 -0
  43. package/dist/{types-CVxPCgWX.d.cts → types-d0yBwHoN.d.cts} +5 -0
  44. package/package.json +1 -1
@@ -2,7 +2,7 @@ export { SchemaAnalyzer, SchemaAnalyzerConfig, buildFieldDefinition, buildSchema
2
2
  export { SnapshotConfig, SnapshotManager, convertPocketBaseMigration, findLatestSnapshot, getSnapshotPath, getSnapshotVersion, loadBaseMigration, loadSnapshot, loadSnapshotIfExists, loadSnapshotWithMigrations, mergeSnapshots, saveSnapshot, snapshotExists, validateSnapshot } from './snapshot.cjs';
3
3
  export { ChangeSummary, DestructiveChange, DiffEngine, DiffEngineConfig, aggregateChanges, categorizeChangesBySeverity, compare, compareFieldConstraints, compareFieldOptions, compareFieldTypes, comparePermissions, compareRelationConfigurations, detectDestructiveChanges, detectFieldChanges, filterSystemCollections, findNewCollections, findNewFields, findRemovedCollections, findRemovedFields, generateChangeSummary, getUsersSystemFields, isSystemCollection, matchCollectionsByName, matchFieldsByName, requiresForceFlag } from './diff.cjs';
4
4
  export { MigrationGenerator, MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile } from './generator.cjs';
5
- export { d as CollectionModification, f as CollectionOperation, C as CollectionSchema, b as FieldChange, F as FieldDefinition, c as FieldModification, P as PermissionChange, R as RuleUpdate, S as SchemaDefinition, e as SchemaDiff, a as SchemaSnapshot } from '../types-CVxPCgWX.cjs';
5
+ export { d as CollectionModification, f as CollectionOperation, C as CollectionSchema, b as FieldChange, F as FieldDefinition, c as FieldModification, P as PermissionChange, R as RuleUpdate, S as SchemaDefinition, e as SchemaDiff, a as SchemaSnapshot } from '../types-d0yBwHoN.cjs';
6
6
  export { E as ExtractedFieldOptions, d as FIELD_TYPE_INFO, F as FieldTypeInfo, C as FieldTypeResult, P as POCKETBASE_FIELD_TYPES, z as extractComprehensiveFieldOptions, o as extractFieldOptions, x as getArrayElementType, v as getDefaultValue, D as getFieldTypeInfo, g as getMaxSelect, c as getMinSelect, w as isArrayType, A as isEditorField, q as isFieldRequired, B as isFileFieldByName, y as isGeoPointType, a as isMultipleRelationField, b as isRelationField, i as isSingleRelationField, j as mapZodArrayType, f as mapZodBooleanType, k as mapZodDateType, h as mapZodEnumType, e as mapZodNumberType, l as mapZodRecordType, m as mapZodStringType, n as mapZodTypeToPocketBase, p as pluralize, r as resolveTargetCollection, s as singularize, t as toCollectionName, u as unwrapZodType } from '../type-mapper-DsGgZwUo.cjs';
7
7
  export { F as FIELD_METADATA_KEY, a as FieldMetadata, P as PocketBaseFieldType, e as extractFieldMetadata } from '../fields-DBBm06VU.cjs';
8
8
  export { A as APIRuleType } from '../permissions-ZHafVSIx.cjs';
@@ -2,7 +2,7 @@ export { SchemaAnalyzer, SchemaAnalyzerConfig, buildFieldDefinition, buildSchema
2
2
  export { SnapshotConfig, SnapshotManager, convertPocketBaseMigration, findLatestSnapshot, getSnapshotPath, getSnapshotVersion, loadBaseMigration, loadSnapshot, loadSnapshotIfExists, loadSnapshotWithMigrations, mergeSnapshots, saveSnapshot, snapshotExists, validateSnapshot } from './snapshot.js';
3
3
  export { ChangeSummary, DestructiveChange, DiffEngine, DiffEngineConfig, aggregateChanges, categorizeChangesBySeverity, compare, compareFieldConstraints, compareFieldOptions, compareFieldTypes, comparePermissions, compareRelationConfigurations, detectDestructiveChanges, detectFieldChanges, filterSystemCollections, findNewCollections, findNewFields, findRemovedCollections, findRemovedFields, generateChangeSummary, getUsersSystemFields, isSystemCollection, matchCollectionsByName, matchFieldsByName, requiresForceFlag } from './diff.js';
4
4
  export { MigrationGenerator, MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile } from './generator.js';
5
- export { d as CollectionModification, f as CollectionOperation, C as CollectionSchema, b as FieldChange, F as FieldDefinition, c as FieldModification, P as PermissionChange, R as RuleUpdate, S as SchemaDefinition, e as SchemaDiff, a as SchemaSnapshot } from '../types-Dfp-NP2D.js';
5
+ export { d as CollectionModification, f as CollectionOperation, C as CollectionSchema, b as FieldChange, F as FieldDefinition, c as FieldModification, P as PermissionChange, R as RuleUpdate, S as SchemaDefinition, e as SchemaDiff, a as SchemaSnapshot } from '../types-BWhwQxG-.js';
6
6
  export { E as ExtractedFieldOptions, d as FIELD_TYPE_INFO, F as FieldTypeInfo, C as FieldTypeResult, P as POCKETBASE_FIELD_TYPES, z as extractComprehensiveFieldOptions, o as extractFieldOptions, x as getArrayElementType, v as getDefaultValue, D as getFieldTypeInfo, g as getMaxSelect, c as getMinSelect, w as isArrayType, A as isEditorField, q as isFieldRequired, B as isFileFieldByName, y as isGeoPointType, a as isMultipleRelationField, b as isRelationField, i as isSingleRelationField, j as mapZodArrayType, f as mapZodBooleanType, k as mapZodDateType, h as mapZodEnumType, e as mapZodNumberType, l as mapZodRecordType, m as mapZodStringType, n as mapZodTypeToPocketBase, p as pluralize, r as resolveTargetCollection, s as singularize, t as toCollectionName, u as unwrapZodType } from '../type-mapper-Dvh4QTM-.js';
7
7
  export { F as FIELD_METADATA_KEY, a as FieldMetadata, P as PocketBaseFieldType, e as extractFieldMetadata } from '../fields-DBBm06VU.js';
8
8
  export { A as APIRuleType } from '../permissions-ZHafVSIx.js';
@@ -3075,10 +3075,19 @@ function aggregateChanges(currentSchema, previousSnapshot, config) {
3075
3075
  collectionsToModify.push(modification);
3076
3076
  }
3077
3077
  }
3078
+ const existingCollectionIds = /* @__PURE__ */ new Map();
3079
+ if (previousSnapshot) {
3080
+ for (const [name, collection] of previousSnapshot.collections) {
3081
+ if (collection.id) {
3082
+ existingCollectionIds.set(name, collection.id);
3083
+ }
3084
+ }
3085
+ }
3078
3086
  return {
3079
3087
  collectionsToCreate: collectionsWithIds,
3080
3088
  collectionsToDelete: filteredCollectionsToDelete,
3081
- collectionsToModify
3089
+ collectionsToModify,
3090
+ existingCollectionIds
3082
3091
  };
3083
3092
  }
3084
3093
  function detectDestructiveChanges(diff, config) {
@@ -3734,7 +3743,7 @@ function generateFieldAddition(collectionName, field, varName, isLast = false, c
3734
3743
  lines.push(isLast ? ` return app.save(${collectionVar});` : ` app.save(${collectionVar});`);
3735
3744
  return lines.join("\n");
3736
3745
  }
3737
- function generateFieldModification(collectionName, modification, varName, isLast = false) {
3746
+ function generateFieldModification(collectionName, modification, varName, isLast = false, collectionIdMap) {
3738
3747
  const lines = [];
3739
3748
  const collectionVar = varName || `collection_${collectionName}_${modification.fieldName}`;
3740
3749
  const fieldVar = `${collectionVar}_field`;
@@ -3749,7 +3758,14 @@ function generateFieldModification(collectionName, modification, varName, isLast
3749
3758
  const relationKey = change.property.replace("relation.", "");
3750
3759
  if (relationKey === "collection") {
3751
3760
  const isUsersCollection = String(change.newValue).toLowerCase() === "users";
3752
- const collectionIdValue = isUsersCollection ? '"_pb_users_auth_"' : `app.findCollectionByNameOrId("${change.newValue}").id`;
3761
+ let collectionIdValue;
3762
+ if (isUsersCollection) {
3763
+ collectionIdValue = '"_pb_users_auth_"';
3764
+ } else if (collectionIdMap && collectionIdMap.has(String(change.newValue))) {
3765
+ collectionIdValue = `"${collectionIdMap.get(String(change.newValue))}"`;
3766
+ } else {
3767
+ collectionIdValue = `app.findCollectionByNameOrId("${change.newValue}").id`;
3768
+ }
3753
3769
  lines.push(` ${fieldVar}.collectionId = ${collectionIdValue};`);
3754
3770
  } else {
3755
3771
  lines.push(` ${fieldVar}.${relationKey} = ${formatValue(change.newValue)};`);
@@ -3825,9 +3841,10 @@ function generateOperationUpMigration(operation, collectionIdMap) {
3825
3841
  const collectionName = typeof operation.collection === "string" ? operation.collection : operation.collection?.name ?? modification.collection;
3826
3842
  let operationCount = 0;
3827
3843
  const totalOperations = modification.fieldsToAdd.length + modification.fieldsToModify.length + modification.fieldsToRemove.length + modification.indexesToAdd.length + modification.indexesToRemove.length + modification.rulesToUpdate.length + modification.permissionsToUpdate.length;
3828
- for (const field of modification.fieldsToAdd) {
3844
+ for (let i = 0; i < modification.fieldsToAdd.length; i++) {
3845
+ const field = modification.fieldsToAdd[i];
3829
3846
  operationCount++;
3830
- const varName = `collection_${collectionName}_add_${field.name}`;
3847
+ const varName = `collection_${collectionName}_add_${field.name}_${i}`;
3831
3848
  const isLast = operationCount === totalOperations;
3832
3849
  lines.push(generateFieldAddition(collectionName, field, varName, isLast, collectionIdMap));
3833
3850
  if (!isLast) lines.push("");
@@ -3836,7 +3853,7 @@ function generateOperationUpMigration(operation, collectionIdMap) {
3836
3853
  operationCount++;
3837
3854
  const varName = `collection_${collectionName}_modify_${fieldMod.fieldName}`;
3838
3855
  const isLast = operationCount === totalOperations;
3839
- lines.push(generateFieldModification(collectionName, fieldMod, varName, isLast));
3856
+ lines.push(generateFieldModification(collectionName, fieldMod, varName, isLast, collectionIdMap));
3840
3857
  if (!isLast) lines.push("");
3841
3858
  }
3842
3859
  for (const field of modification.fieldsToRemove) {
@@ -4021,6 +4038,11 @@ function generateUpMigration(diff) {
4021
4038
  collectionIdMap.set(collection.name, collection.id);
4022
4039
  }
4023
4040
  }
4041
+ if (diff.existingCollectionIds) {
4042
+ for (const [name, id] of diff.existingCollectionIds) {
4043
+ collectionIdMap.set(name, id);
4044
+ }
4045
+ }
4024
4046
  if (diff.collectionsToCreate.length > 0) {
4025
4047
  lines.push(` // Create new collections`);
4026
4048
  for (let i = 0; i < diff.collectionsToCreate.length; i++) {
@@ -4036,8 +4058,9 @@ function generateUpMigration(diff) {
4036
4058
  const collectionName = modification.collection;
4037
4059
  if (modification.fieldsToAdd.length > 0) {
4038
4060
  lines.push(` // Add fields to ${collectionName}`);
4039
- for (const field of modification.fieldsToAdd) {
4040
- const varName = `collection_${collectionName}_add_${field.name}`;
4061
+ for (let i = 0; i < modification.fieldsToAdd.length; i++) {
4062
+ const field = modification.fieldsToAdd[i];
4063
+ const varName = `collection_${collectionName}_add_${field.name}_${i}`;
4041
4064
  lines.push(generateFieldAddition(collectionName, field, varName, false, collectionIdMap));
4042
4065
  lines.push(``);
4043
4066
  }
@@ -4046,7 +4069,7 @@ function generateUpMigration(diff) {
4046
4069
  lines.push(` // Modify fields in ${collectionName}`);
4047
4070
  for (const fieldMod of modification.fieldsToModify) {
4048
4071
  const varName = `collection_${collectionName}_modify_${fieldMod.fieldName}`;
4049
- lines.push(generateFieldModification(collectionName, fieldMod, varName));
4072
+ lines.push(generateFieldModification(collectionName, fieldMod, varName, false, collectionIdMap));
4050
4073
  lines.push(``);
4051
4074
  }
4052
4075
  }
@@ -4143,6 +4166,11 @@ function generateDownMigration(diff) {
4143
4166
  collectionIdMap.set(collection.name, collection.id);
4144
4167
  }
4145
4168
  }
4169
+ if (diff.existingCollectionIds) {
4170
+ for (const [name, id] of diff.existingCollectionIds) {
4171
+ collectionIdMap.set(name, id);
4172
+ }
4173
+ }
4146
4174
  if (diff.collectionsToDelete.length > 0) {
4147
4175
  lines.push(` // Recreate deleted collections`);
4148
4176
  for (let i = 0; i < diff.collectionsToDelete.length; i++) {
@@ -4280,6 +4308,11 @@ function generate(diff, config) {
4280
4308
  collectionIdMap.set(collection.name, collection.id);
4281
4309
  }
4282
4310
  }
4311
+ if (diff.existingCollectionIds) {
4312
+ for (const [name, id] of diff.existingCollectionIds) {
4313
+ collectionIdMap.set(name, id);
4314
+ }
4315
+ }
4283
4316
  const baseTimestamp = generateTimestamp(normalizedConfig);
4284
4317
  const operations = splitDiffByCollection(diff, baseTimestamp);
4285
4318
  const filePaths = [];