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/index.js
CHANGED
|
@@ -9,7 +9,9 @@ import ora from 'ora';
|
|
|
9
9
|
id: z.string().describe("unique id"),
|
|
10
10
|
collectionId: z.string().describe("collection id"),
|
|
11
11
|
collectionName: z.string().describe("collection name"),
|
|
12
|
-
expand: z.record(z.any()).describe("expandable fields")
|
|
12
|
+
expand: z.record(z.any()).describe("expandable fields"),
|
|
13
|
+
created: z.string().describe("creation timestamp"),
|
|
14
|
+
updated: z.string().describe("last update timestamp")
|
|
13
15
|
});
|
|
14
16
|
({
|
|
15
17
|
created: z.string().describe("creation timestamp"),
|
|
@@ -1072,7 +1074,7 @@ var DEFAULT_CONFIG = {
|
|
|
1072
1074
|
"permission-templates.js"
|
|
1073
1075
|
],
|
|
1074
1076
|
includeExtensions: [".ts", ".js"],
|
|
1075
|
-
schemaPatterns: ["Schema", "InputSchema"],
|
|
1077
|
+
schemaPatterns: ["Schema", "InputSchema", "Collection"],
|
|
1076
1078
|
useCompiledFiles: true
|
|
1077
1079
|
};
|
|
1078
1080
|
function mergeConfig(config) {
|
|
@@ -1209,14 +1211,35 @@ function extractCollectionNameFromSchema(zodSchema) {
|
|
|
1209
1211
|
}
|
|
1210
1212
|
return null;
|
|
1211
1213
|
}
|
|
1212
|
-
function
|
|
1214
|
+
function extractCollectionTypeFromSchema(zodSchema) {
|
|
1215
|
+
if (!zodSchema.description) {
|
|
1216
|
+
return null;
|
|
1217
|
+
}
|
|
1218
|
+
try {
|
|
1219
|
+
const metadata = JSON.parse(zodSchema.description);
|
|
1220
|
+
if (metadata.type === "base" || metadata.type === "auth") {
|
|
1221
|
+
return metadata.type;
|
|
1222
|
+
}
|
|
1223
|
+
} catch {
|
|
1224
|
+
}
|
|
1225
|
+
return null;
|
|
1226
|
+
}
|
|
1227
|
+
function extractSchemaDefinitions(module, patterns = ["Schema", "InputSchema", "Collection"]) {
|
|
1213
1228
|
const result = {};
|
|
1229
|
+
if (module.default instanceof z.ZodObject) {
|
|
1230
|
+
result.schema = module.default;
|
|
1231
|
+
}
|
|
1214
1232
|
for (const [key, value] of Object.entries(module)) {
|
|
1233
|
+
if (key === "default") continue;
|
|
1215
1234
|
if (value instanceof z.ZodObject) {
|
|
1216
1235
|
if (patterns.includes("InputSchema") && key.endsWith("InputSchema")) {
|
|
1217
1236
|
result.inputSchema = value;
|
|
1218
|
-
} else if (
|
|
1219
|
-
|
|
1237
|
+
} else if (!result.schema) {
|
|
1238
|
+
if (patterns.includes("Collection") && key.endsWith("Collection")) {
|
|
1239
|
+
result.schema = value;
|
|
1240
|
+
} else if (patterns.includes("Schema") && key.endsWith("Schema") && !key.endsWith("InputSchema")) {
|
|
1241
|
+
result.schema = value;
|
|
1242
|
+
}
|
|
1220
1243
|
}
|
|
1221
1244
|
}
|
|
1222
1245
|
}
|
|
@@ -1283,11 +1306,8 @@ function buildFieldDefinition(fieldName, zodType) {
|
|
|
1283
1306
|
// Default to false, can be configured later
|
|
1284
1307
|
};
|
|
1285
1308
|
if (fieldDef.options) {
|
|
1286
|
-
const { min, max, pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1287
|
-
|
|
1288
|
-
console.log("max", max);
|
|
1289
|
-
console.log("pattern", pattern);
|
|
1290
|
-
fieldDef.options = Object.keys(relationSafeOptions).length > 0 ? relationSafeOptions : void 0;
|
|
1309
|
+
const { min: _min, max: _max, pattern: _pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1310
|
+
fieldDef.options = Object.keys(relationSafeOptions).length ? relationSafeOptions : void 0;
|
|
1291
1311
|
}
|
|
1292
1312
|
}
|
|
1293
1313
|
return fieldDef;
|
|
@@ -1308,8 +1328,13 @@ function extractIndexes(schema) {
|
|
|
1308
1328
|
}
|
|
1309
1329
|
function convertZodSchemaToCollectionSchema(collectionName, zodSchema) {
|
|
1310
1330
|
const rawFields = extractFieldDefinitions(zodSchema);
|
|
1311
|
-
const
|
|
1312
|
-
const
|
|
1331
|
+
const explicitType = extractCollectionTypeFromSchema(zodSchema);
|
|
1332
|
+
const collectionType = explicitType ?? (isAuthCollection(rawFields) ? "auth" : "base");
|
|
1333
|
+
let fields = rawFields.map(({ name, zodType }) => buildFieldDefinition(name, zodType));
|
|
1334
|
+
if (collectionType === "auth") {
|
|
1335
|
+
const authSystemFieldNames = ["email", "emailVisibility", "verified", "password", "tokenKey"];
|
|
1336
|
+
fields = fields.filter((field) => !authSystemFieldNames.includes(field.name));
|
|
1337
|
+
}
|
|
1313
1338
|
const indexes = extractIndexes(zodSchema) || [];
|
|
1314
1339
|
const permissionAnalyzer = new PermissionAnalyzer();
|
|
1315
1340
|
let permissions = void 0;
|
|
@@ -1456,9 +1481,14 @@ function matchCollectionsByName(currentSchema, previousSnapshot) {
|
|
|
1456
1481
|
if (!previousSnapshot) {
|
|
1457
1482
|
return matches;
|
|
1458
1483
|
}
|
|
1484
|
+
const previousCollectionsLower = /* @__PURE__ */ new Map();
|
|
1485
|
+
for (const [name, collection] of previousSnapshot.collections) {
|
|
1486
|
+
previousCollectionsLower.set(name.toLowerCase(), [name, collection]);
|
|
1487
|
+
}
|
|
1459
1488
|
for (const [collectionName, currentCollection] of currentSchema.collections) {
|
|
1460
|
-
const
|
|
1461
|
-
if (
|
|
1489
|
+
const previousEntry = previousCollectionsLower.get(collectionName.toLowerCase());
|
|
1490
|
+
if (previousEntry) {
|
|
1491
|
+
const [, previousCollection] = previousEntry;
|
|
1462
1492
|
matches.push([currentCollection, previousCollection]);
|
|
1463
1493
|
}
|
|
1464
1494
|
}
|