pocketbase-zod-schema 0.2.1 → 0.2.2

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 (48) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cli/index.cjs +42 -9
  3. package/dist/cli/index.cjs.map +1 -1
  4. package/dist/cli/index.js +42 -9
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/migrate.cjs +42 -9
  7. package/dist/cli/migrate.cjs.map +1 -1
  8. package/dist/cli/migrate.js +42 -9
  9. package/dist/cli/migrate.js.map +1 -1
  10. package/dist/index.cjs +48 -11
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +48 -11
  15. package/dist/index.js.map +1 -1
  16. package/dist/migration/analyzer.cjs +36 -7
  17. package/dist/migration/analyzer.cjs.map +1 -1
  18. package/dist/migration/analyzer.d.cts +26 -3
  19. package/dist/migration/analyzer.d.ts +26 -3
  20. package/dist/migration/analyzer.js +36 -8
  21. package/dist/migration/analyzer.js.map +1 -1
  22. package/dist/migration/diff.cjs +7 -2
  23. package/dist/migration/diff.cjs.map +1 -1
  24. package/dist/migration/diff.js +7 -2
  25. package/dist/migration/diff.js.map +1 -1
  26. package/dist/migration/index.cjs +42 -9
  27. package/dist/migration/index.cjs.map +1 -1
  28. package/dist/migration/index.js +42 -9
  29. package/dist/migration/index.js.map +1 -1
  30. package/dist/migration/snapshot.cjs.map +1 -1
  31. package/dist/migration/snapshot.js.map +1 -1
  32. package/dist/mutator.cjs +9 -3
  33. package/dist/mutator.cjs.map +1 -1
  34. package/dist/mutator.d.cts +3 -1
  35. package/dist/mutator.d.ts +3 -1
  36. package/dist/mutator.js +9 -3
  37. package/dist/mutator.js.map +1 -1
  38. package/dist/schema.cjs +9 -3
  39. package/dist/schema.cjs.map +1 -1
  40. package/dist/schema.d.cts +32 -3
  41. package/dist/schema.d.ts +32 -3
  42. package/dist/schema.js +9 -3
  43. package/dist/schema.js.map +1 -1
  44. package/dist/types.d.cts +1 -1
  45. package/dist/types.d.ts +1 -1
  46. package/dist/{user-DTJQIj4K.d.cts → user-BnFWg5tw.d.cts} +13 -1
  47. package/dist/{user-DTJQIj4K.d.ts → user-BnFWg5tw.d.ts} +13 -1
  48. package/package.json +1 -1
@@ -41,7 +41,9 @@ var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
41
41
  id: zod.z.string().describe("unique id"),
42
42
  collectionId: zod.z.string().describe("collection id"),
43
43
  collectionName: zod.z.string().describe("collection name"),
44
- expand: zod.z.record(zod.z.any()).describe("expandable fields")
44
+ expand: zod.z.record(zod.z.any()).describe("expandable fields"),
45
+ created: zod.z.string().describe("creation timestamp"),
46
+ updated: zod.z.string().describe("last update timestamp")
45
47
  });
46
48
  ({
47
49
  created: zod.z.string().describe("creation timestamp"),
@@ -1104,7 +1106,7 @@ var DEFAULT_CONFIG = {
1104
1106
  "permission-templates.js"
1105
1107
  ],
1106
1108
  includeExtensions: [".ts", ".js"],
1107
- schemaPatterns: ["Schema", "InputSchema"],
1109
+ schemaPatterns: ["Schema", "InputSchema", "Collection"],
1108
1110
  useCompiledFiles: true
1109
1111
  };
1110
1112
  function mergeConfig(config) {
@@ -1241,14 +1243,35 @@ function extractCollectionNameFromSchema(zodSchema) {
1241
1243
  }
1242
1244
  return null;
1243
1245
  }
1244
- function extractSchemaDefinitions(module, patterns = ["Schema", "InputSchema"]) {
1246
+ function extractCollectionTypeFromSchema(zodSchema) {
1247
+ if (!zodSchema.description) {
1248
+ return null;
1249
+ }
1250
+ try {
1251
+ const metadata = JSON.parse(zodSchema.description);
1252
+ if (metadata.type === "base" || metadata.type === "auth") {
1253
+ return metadata.type;
1254
+ }
1255
+ } catch {
1256
+ }
1257
+ return null;
1258
+ }
1259
+ function extractSchemaDefinitions(module, patterns = ["Schema", "InputSchema", "Collection"]) {
1245
1260
  const result = {};
1261
+ if (module.default instanceof zod.z.ZodObject) {
1262
+ result.schema = module.default;
1263
+ }
1246
1264
  for (const [key, value] of Object.entries(module)) {
1265
+ if (key === "default") continue;
1247
1266
  if (value instanceof zod.z.ZodObject) {
1248
1267
  if (patterns.includes("InputSchema") && key.endsWith("InputSchema")) {
1249
1268
  result.inputSchema = value;
1250
- } else if (patterns.includes("Schema") && key.endsWith("Schema") && !key.endsWith("InputSchema")) {
1251
- result.schema = value;
1269
+ } else if (!result.schema) {
1270
+ if (patterns.includes("Collection") && key.endsWith("Collection")) {
1271
+ result.schema = value;
1272
+ } else if (patterns.includes("Schema") && key.endsWith("Schema") && !key.endsWith("InputSchema")) {
1273
+ result.schema = value;
1274
+ }
1252
1275
  }
1253
1276
  }
1254
1277
  }
@@ -1337,8 +1360,13 @@ function extractIndexes(schema) {
1337
1360
  }
1338
1361
  function convertZodSchemaToCollectionSchema(collectionName, zodSchema) {
1339
1362
  const rawFields = extractFieldDefinitions(zodSchema);
1340
- const collectionType = isAuthCollection(rawFields) ? "auth" : "base";
1341
- const fields = rawFields.map(({ name, zodType }) => buildFieldDefinition(name, zodType));
1363
+ const explicitType = extractCollectionTypeFromSchema(zodSchema);
1364
+ const collectionType = explicitType ?? (isAuthCollection(rawFields) ? "auth" : "base");
1365
+ let fields = rawFields.map(({ name, zodType }) => buildFieldDefinition(name, zodType));
1366
+ if (collectionType === "auth") {
1367
+ const authSystemFieldNames = ["email", "emailVisibility", "verified", "password", "tokenKey"];
1368
+ fields = fields.filter((field) => !authSystemFieldNames.includes(field.name));
1369
+ }
1342
1370
  const indexes = extractIndexes(zodSchema) || [];
1343
1371
  const permissionAnalyzer = new PermissionAnalyzer();
1344
1372
  let permissions = void 0;
@@ -1485,9 +1513,14 @@ function matchCollectionsByName(currentSchema, previousSnapshot) {
1485
1513
  if (!previousSnapshot) {
1486
1514
  return matches;
1487
1515
  }
1516
+ const previousCollectionsLower = /* @__PURE__ */ new Map();
1517
+ for (const [name, collection] of previousSnapshot.collections) {
1518
+ previousCollectionsLower.set(name.toLowerCase(), [name, collection]);
1519
+ }
1488
1520
  for (const [collectionName, currentCollection] of currentSchema.collections) {
1489
- const previousCollection = previousSnapshot.collections.get(collectionName);
1490
- if (previousCollection) {
1521
+ const previousEntry = previousCollectionsLower.get(collectionName.toLowerCase());
1522
+ if (previousEntry) {
1523
+ const [, previousCollection] = previousEntry;
1491
1524
  matches.push([currentCollection, previousCollection]);
1492
1525
  }
1493
1526
  }