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
package/dist/index.d.cts CHANGED
@@ -7,7 +7,7 @@ export { SchemaAnalyzer, SchemaAnalyzerConfig, buildFieldDefinition, buildSchema
7
7
  export { SnapshotConfig, SnapshotManager, convertPocketBaseMigration, findLatestSnapshot, getSnapshotPath, getSnapshotVersion, loadBaseMigration, loadSnapshot, loadSnapshotIfExists, loadSnapshotWithMigrations, mergeSnapshots, saveSnapshot, snapshotExists, validateSnapshot } from './migration/snapshot.cjs';
8
8
  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 './migration/diff.cjs';
9
9
  export { MigrationGenerator, MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile } from './migration/generator.cjs';
10
- 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';
10
+ 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';
11
11
  export { CLIUsageError, ConfigurationError, FileSystemError, MigrationError, MigrationGenerationError, SchemaParsingError, SnapshotError } from './migration/index.cjs';
12
12
  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';
13
13
  export { generateMigration, getMigrationStatus } from './cli/index.cjs';
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { SchemaAnalyzer, SchemaAnalyzerConfig, buildFieldDefinition, buildSchema
7
7
  export { SnapshotConfig, SnapshotManager, convertPocketBaseMigration, findLatestSnapshot, getSnapshotPath, getSnapshotVersion, loadBaseMigration, loadSnapshot, loadSnapshotIfExists, loadSnapshotWithMigrations, mergeSnapshots, saveSnapshot, snapshotExists, validateSnapshot } from './migration/snapshot.js';
8
8
  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 './migration/diff.js';
9
9
  export { MigrationGenerator, MigrationGeneratorConfig, createMigrationFileStructure, generate, generateCollectionCreation, generateCollectionPermissions, generateCollectionRules, generateDownMigration, generateFieldAddition, generateFieldDefinitionObject, generateFieldDeletion, generateFieldModification, generateFieldsArray, generateIndexesArray, generateMigrationDescription, generateMigrationFilename, generatePermissionUpdate, generateTimestamp, generateUpMigration, writeMigrationFile } from './migration/generator.js';
10
- 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';
10
+ 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';
11
11
  export { CLIUsageError, ConfigurationError, FileSystemError, MigrationError, MigrationGenerationError, SchemaParsingError, SnapshotError } from './migration/index.js';
12
12
  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';
13
13
  export { generateMigration, getMigrationStatus } from './cli/index.js';
package/dist/index.js CHANGED
@@ -3821,10 +3821,19 @@ function aggregateChanges(currentSchema, previousSnapshot, config) {
3821
3821
  collectionsToModify.push(modification);
3822
3822
  }
3823
3823
  }
3824
+ const existingCollectionIds = /* @__PURE__ */ new Map();
3825
+ if (previousSnapshot) {
3826
+ for (const [name, collection] of previousSnapshot.collections) {
3827
+ if (collection.id) {
3828
+ existingCollectionIds.set(name, collection.id);
3829
+ }
3830
+ }
3831
+ }
3824
3832
  return {
3825
3833
  collectionsToCreate: collectionsWithIds,
3826
3834
  collectionsToDelete: filteredCollectionsToDelete,
3827
- collectionsToModify
3835
+ collectionsToModify,
3836
+ existingCollectionIds
3828
3837
  };
3829
3838
  }
3830
3839
  function detectDestructiveChanges(diff, config) {
@@ -4480,7 +4489,7 @@ function generateFieldAddition(collectionName, field, varName, isLast = false, c
4480
4489
  lines.push(isLast ? ` return app.save(${collectionVar});` : ` app.save(${collectionVar});`);
4481
4490
  return lines.join("\n");
4482
4491
  }
4483
- function generateFieldModification(collectionName, modification, varName, isLast = false) {
4492
+ function generateFieldModification(collectionName, modification, varName, isLast = false, collectionIdMap) {
4484
4493
  const lines = [];
4485
4494
  const collectionVar = varName || `collection_${collectionName}_${modification.fieldName}`;
4486
4495
  const fieldVar = `${collectionVar}_field`;
@@ -4495,7 +4504,14 @@ function generateFieldModification(collectionName, modification, varName, isLast
4495
4504
  const relationKey = change.property.replace("relation.", "");
4496
4505
  if (relationKey === "collection") {
4497
4506
  const isUsersCollection = String(change.newValue).toLowerCase() === "users";
4498
- const collectionIdValue = isUsersCollection ? '"_pb_users_auth_"' : `app.findCollectionByNameOrId("${change.newValue}").id`;
4507
+ let collectionIdValue;
4508
+ if (isUsersCollection) {
4509
+ collectionIdValue = '"_pb_users_auth_"';
4510
+ } else if (collectionIdMap && collectionIdMap.has(String(change.newValue))) {
4511
+ collectionIdValue = `"${collectionIdMap.get(String(change.newValue))}"`;
4512
+ } else {
4513
+ collectionIdValue = `app.findCollectionByNameOrId("${change.newValue}").id`;
4514
+ }
4499
4515
  lines.push(` ${fieldVar}.collectionId = ${collectionIdValue};`);
4500
4516
  } else {
4501
4517
  lines.push(` ${fieldVar}.${relationKey} = ${formatValue(change.newValue)};`);
@@ -4571,9 +4587,10 @@ function generateOperationUpMigration(operation, collectionIdMap) {
4571
4587
  const collectionName = typeof operation.collection === "string" ? operation.collection : operation.collection?.name ?? modification.collection;
4572
4588
  let operationCount = 0;
4573
4589
  const totalOperations = modification.fieldsToAdd.length + modification.fieldsToModify.length + modification.fieldsToRemove.length + modification.indexesToAdd.length + modification.indexesToRemove.length + modification.rulesToUpdate.length + modification.permissionsToUpdate.length;
4574
- for (const field of modification.fieldsToAdd) {
4590
+ for (let i = 0; i < modification.fieldsToAdd.length; i++) {
4591
+ const field = modification.fieldsToAdd[i];
4575
4592
  operationCount++;
4576
- const varName = `collection_${collectionName}_add_${field.name}`;
4593
+ const varName = `collection_${collectionName}_add_${field.name}_${i}`;
4577
4594
  const isLast = operationCount === totalOperations;
4578
4595
  lines.push(generateFieldAddition(collectionName, field, varName, isLast, collectionIdMap));
4579
4596
  if (!isLast) lines.push("");
@@ -4582,7 +4599,7 @@ function generateOperationUpMigration(operation, collectionIdMap) {
4582
4599
  operationCount++;
4583
4600
  const varName = `collection_${collectionName}_modify_${fieldMod.fieldName}`;
4584
4601
  const isLast = operationCount === totalOperations;
4585
- lines.push(generateFieldModification(collectionName, fieldMod, varName, isLast));
4602
+ lines.push(generateFieldModification(collectionName, fieldMod, varName, isLast, collectionIdMap));
4586
4603
  if (!isLast) lines.push("");
4587
4604
  }
4588
4605
  for (const field of modification.fieldsToRemove) {
@@ -4767,6 +4784,11 @@ function generateUpMigration(diff) {
4767
4784
  collectionIdMap.set(collection.name, collection.id);
4768
4785
  }
4769
4786
  }
4787
+ if (diff.existingCollectionIds) {
4788
+ for (const [name, id] of diff.existingCollectionIds) {
4789
+ collectionIdMap.set(name, id);
4790
+ }
4791
+ }
4770
4792
  if (diff.collectionsToCreate.length > 0) {
4771
4793
  lines.push(` // Create new collections`);
4772
4794
  for (let i = 0; i < diff.collectionsToCreate.length; i++) {
@@ -4782,8 +4804,9 @@ function generateUpMigration(diff) {
4782
4804
  const collectionName = modification.collection;
4783
4805
  if (modification.fieldsToAdd.length > 0) {
4784
4806
  lines.push(` // Add fields to ${collectionName}`);
4785
- for (const field of modification.fieldsToAdd) {
4786
- const varName = `collection_${collectionName}_add_${field.name}`;
4807
+ for (let i = 0; i < modification.fieldsToAdd.length; i++) {
4808
+ const field = modification.fieldsToAdd[i];
4809
+ const varName = `collection_${collectionName}_add_${field.name}_${i}`;
4787
4810
  lines.push(generateFieldAddition(collectionName, field, varName, false, collectionIdMap));
4788
4811
  lines.push(``);
4789
4812
  }
@@ -4792,7 +4815,7 @@ function generateUpMigration(diff) {
4792
4815
  lines.push(` // Modify fields in ${collectionName}`);
4793
4816
  for (const fieldMod of modification.fieldsToModify) {
4794
4817
  const varName = `collection_${collectionName}_modify_${fieldMod.fieldName}`;
4795
- lines.push(generateFieldModification(collectionName, fieldMod, varName));
4818
+ lines.push(generateFieldModification(collectionName, fieldMod, varName, false, collectionIdMap));
4796
4819
  lines.push(``);
4797
4820
  }
4798
4821
  }
@@ -4889,6 +4912,11 @@ function generateDownMigration(diff) {
4889
4912
  collectionIdMap.set(collection.name, collection.id);
4890
4913
  }
4891
4914
  }
4915
+ if (diff.existingCollectionIds) {
4916
+ for (const [name, id] of diff.existingCollectionIds) {
4917
+ collectionIdMap.set(name, id);
4918
+ }
4919
+ }
4892
4920
  if (diff.collectionsToDelete.length > 0) {
4893
4921
  lines.push(` // Recreate deleted collections`);
4894
4922
  for (let i = 0; i < diff.collectionsToDelete.length; i++) {
@@ -5026,6 +5054,11 @@ function generate(diff, config) {
5026
5054
  collectionIdMap.set(collection.name, collection.id);
5027
5055
  }
5028
5056
  }
5057
+ if (diff.existingCollectionIds) {
5058
+ for (const [name, id] of diff.existingCollectionIds) {
5059
+ collectionIdMap.set(name, id);
5060
+ }
5061
+ }
5029
5062
  const baseTimestamp = generateTimestamp(normalizedConfig);
5030
5063
  const operations = splitDiffByCollection(diff, baseTimestamp);
5031
5064
  const filePaths = [];