pocketbase-zod-schema 0.2.0 → 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.
- package/CHANGELOG.md +14 -0
- package/dist/cli/index.cjs +44 -14
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +44 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/migrate.cjs +44 -14
- package/dist/cli/migrate.cjs.map +1 -1
- package/dist/cli/migrate.js +44 -14
- package/dist/cli/migrate.js.map +1 -1
- package/dist/index.cjs +50 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +50 -16
- package/dist/index.js.map +1 -1
- package/dist/migration/analyzer.cjs +38 -12
- package/dist/migration/analyzer.cjs.map +1 -1
- package/dist/migration/analyzer.d.cts +26 -3
- package/dist/migration/analyzer.d.ts +26 -3
- package/dist/migration/analyzer.js +38 -13
- package/dist/migration/analyzer.js.map +1 -1
- package/dist/migration/diff.cjs +7 -2
- package/dist/migration/diff.cjs.map +1 -1
- package/dist/migration/diff.js +7 -2
- package/dist/migration/diff.js.map +1 -1
- package/dist/migration/index.cjs +44 -14
- package/dist/migration/index.cjs.map +1 -1
- package/dist/migration/index.js +44 -14
- package/dist/migration/index.js.map +1 -1
- package/dist/mutator.cjs +9 -3
- package/dist/mutator.cjs.map +1 -1
- package/dist/mutator.d.cts +3 -1
- package/dist/mutator.d.ts +3 -1
- package/dist/mutator.js +9 -3
- package/dist/mutator.js.map +1 -1
- package/dist/schema.cjs +9 -3
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +32 -3
- package/dist/schema.d.ts +32 -3
- package/dist/schema.js +9 -3
- package/dist/schema.js.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/{user-DTJQIj4K.d.cts → user-BnFWg5tw.d.cts} +13 -1
- package/dist/{user-DTJQIj4K.d.ts → user-BnFWg5tw.d.ts} +13 -1
- package/package.json +1 -1
package/dist/cli/migrate.js
CHANGED
|
@@ -13,7 +13,9 @@ import ora from 'ora';
|
|
|
13
13
|
id: z.string().describe("unique id"),
|
|
14
14
|
collectionId: z.string().describe("collection id"),
|
|
15
15
|
collectionName: z.string().describe("collection name"),
|
|
16
|
-
expand: z.record(z.any()).describe("expandable fields")
|
|
16
|
+
expand: z.record(z.any()).describe("expandable fields"),
|
|
17
|
+
created: z.string().describe("creation timestamp"),
|
|
18
|
+
updated: z.string().describe("last update timestamp")
|
|
17
19
|
});
|
|
18
20
|
({
|
|
19
21
|
created: z.string().describe("creation timestamp"),
|
|
@@ -1076,7 +1078,7 @@ var DEFAULT_CONFIG = {
|
|
|
1076
1078
|
"permission-templates.js"
|
|
1077
1079
|
],
|
|
1078
1080
|
includeExtensions: [".ts", ".js"],
|
|
1079
|
-
schemaPatterns: ["Schema", "InputSchema"],
|
|
1081
|
+
schemaPatterns: ["Schema", "InputSchema", "Collection"],
|
|
1080
1082
|
useCompiledFiles: true
|
|
1081
1083
|
};
|
|
1082
1084
|
function mergeConfig(config) {
|
|
@@ -1213,14 +1215,35 @@ function extractCollectionNameFromSchema(zodSchema) {
|
|
|
1213
1215
|
}
|
|
1214
1216
|
return null;
|
|
1215
1217
|
}
|
|
1216
|
-
function
|
|
1218
|
+
function extractCollectionTypeFromSchema(zodSchema) {
|
|
1219
|
+
if (!zodSchema.description) {
|
|
1220
|
+
return null;
|
|
1221
|
+
}
|
|
1222
|
+
try {
|
|
1223
|
+
const metadata = JSON.parse(zodSchema.description);
|
|
1224
|
+
if (metadata.type === "base" || metadata.type === "auth") {
|
|
1225
|
+
return metadata.type;
|
|
1226
|
+
}
|
|
1227
|
+
} catch {
|
|
1228
|
+
}
|
|
1229
|
+
return null;
|
|
1230
|
+
}
|
|
1231
|
+
function extractSchemaDefinitions(module, patterns = ["Schema", "InputSchema", "Collection"]) {
|
|
1217
1232
|
const result = {};
|
|
1233
|
+
if (module.default instanceof z.ZodObject) {
|
|
1234
|
+
result.schema = module.default;
|
|
1235
|
+
}
|
|
1218
1236
|
for (const [key, value] of Object.entries(module)) {
|
|
1237
|
+
if (key === "default") continue;
|
|
1219
1238
|
if (value instanceof z.ZodObject) {
|
|
1220
1239
|
if (patterns.includes("InputSchema") && key.endsWith("InputSchema")) {
|
|
1221
1240
|
result.inputSchema = value;
|
|
1222
|
-
} else if (
|
|
1223
|
-
|
|
1241
|
+
} else if (!result.schema) {
|
|
1242
|
+
if (patterns.includes("Collection") && key.endsWith("Collection")) {
|
|
1243
|
+
result.schema = value;
|
|
1244
|
+
} else if (patterns.includes("Schema") && key.endsWith("Schema") && !key.endsWith("InputSchema")) {
|
|
1245
|
+
result.schema = value;
|
|
1246
|
+
}
|
|
1224
1247
|
}
|
|
1225
1248
|
}
|
|
1226
1249
|
}
|
|
@@ -1287,11 +1310,8 @@ function buildFieldDefinition(fieldName, zodType) {
|
|
|
1287
1310
|
// Default to false, can be configured later
|
|
1288
1311
|
};
|
|
1289
1312
|
if (fieldDef.options) {
|
|
1290
|
-
const { min, max, pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1291
|
-
|
|
1292
|
-
console.log("max", max);
|
|
1293
|
-
console.log("pattern", pattern);
|
|
1294
|
-
fieldDef.options = Object.keys(relationSafeOptions).length > 0 ? relationSafeOptions : void 0;
|
|
1313
|
+
const { min: _min, max: _max, pattern: _pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1314
|
+
fieldDef.options = Object.keys(relationSafeOptions).length ? relationSafeOptions : void 0;
|
|
1295
1315
|
}
|
|
1296
1316
|
}
|
|
1297
1317
|
return fieldDef;
|
|
@@ -1312,8 +1332,13 @@ function extractIndexes(schema) {
|
|
|
1312
1332
|
}
|
|
1313
1333
|
function convertZodSchemaToCollectionSchema(collectionName, zodSchema) {
|
|
1314
1334
|
const rawFields = extractFieldDefinitions(zodSchema);
|
|
1315
|
-
const
|
|
1316
|
-
const
|
|
1335
|
+
const explicitType = extractCollectionTypeFromSchema(zodSchema);
|
|
1336
|
+
const collectionType = explicitType ?? (isAuthCollection(rawFields) ? "auth" : "base");
|
|
1337
|
+
let fields = rawFields.map(({ name, zodType }) => buildFieldDefinition(name, zodType));
|
|
1338
|
+
if (collectionType === "auth") {
|
|
1339
|
+
const authSystemFieldNames = ["email", "emailVisibility", "verified", "password", "tokenKey"];
|
|
1340
|
+
fields = fields.filter((field) => !authSystemFieldNames.includes(field.name));
|
|
1341
|
+
}
|
|
1317
1342
|
const indexes = extractIndexes(zodSchema) || [];
|
|
1318
1343
|
const permissionAnalyzer = new PermissionAnalyzer();
|
|
1319
1344
|
let permissions = void 0;
|
|
@@ -1460,9 +1485,14 @@ function matchCollectionsByName(currentSchema, previousSnapshot) {
|
|
|
1460
1485
|
if (!previousSnapshot) {
|
|
1461
1486
|
return matches;
|
|
1462
1487
|
}
|
|
1488
|
+
const previousCollectionsLower = /* @__PURE__ */ new Map();
|
|
1489
|
+
for (const [name, collection] of previousSnapshot.collections) {
|
|
1490
|
+
previousCollectionsLower.set(name.toLowerCase(), [name, collection]);
|
|
1491
|
+
}
|
|
1463
1492
|
for (const [collectionName, currentCollection] of currentSchema.collections) {
|
|
1464
|
-
const
|
|
1465
|
-
if (
|
|
1493
|
+
const previousEntry = previousCollectionsLower.get(collectionName.toLowerCase());
|
|
1494
|
+
if (previousEntry) {
|
|
1495
|
+
const [, previousCollection] = previousEntry;
|
|
1466
1496
|
matches.push([currentCollection, previousCollection]);
|
|
1467
1497
|
}
|
|
1468
1498
|
}
|