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.cjs
CHANGED
|
@@ -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
|
|
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 (
|
|
1251
|
-
|
|
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
|
}
|
|
@@ -1315,11 +1338,8 @@ function buildFieldDefinition(fieldName, zodType) {
|
|
|
1315
1338
|
// Default to false, can be configured later
|
|
1316
1339
|
};
|
|
1317
1340
|
if (fieldDef.options) {
|
|
1318
|
-
const { min, max, pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1319
|
-
|
|
1320
|
-
console.log("max", max);
|
|
1321
|
-
console.log("pattern", pattern);
|
|
1322
|
-
fieldDef.options = Object.keys(relationSafeOptions).length > 0 ? relationSafeOptions : void 0;
|
|
1341
|
+
const { min: _min, max: _max, pattern: _pattern, ...relationSafeOptions } = fieldDef.options;
|
|
1342
|
+
fieldDef.options = Object.keys(relationSafeOptions).length ? relationSafeOptions : void 0;
|
|
1323
1343
|
}
|
|
1324
1344
|
}
|
|
1325
1345
|
return fieldDef;
|
|
@@ -1340,8 +1360,13 @@ function extractIndexes(schema) {
|
|
|
1340
1360
|
}
|
|
1341
1361
|
function convertZodSchemaToCollectionSchema(collectionName, zodSchema) {
|
|
1342
1362
|
const rawFields = extractFieldDefinitions(zodSchema);
|
|
1343
|
-
const
|
|
1344
|
-
const
|
|
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
|
+
}
|
|
1345
1370
|
const indexes = extractIndexes(zodSchema) || [];
|
|
1346
1371
|
const permissionAnalyzer = new PermissionAnalyzer();
|
|
1347
1372
|
let permissions = void 0;
|
|
@@ -1488,9 +1513,14 @@ function matchCollectionsByName(currentSchema, previousSnapshot) {
|
|
|
1488
1513
|
if (!previousSnapshot) {
|
|
1489
1514
|
return matches;
|
|
1490
1515
|
}
|
|
1516
|
+
const previousCollectionsLower = /* @__PURE__ */ new Map();
|
|
1517
|
+
for (const [name, collection] of previousSnapshot.collections) {
|
|
1518
|
+
previousCollectionsLower.set(name.toLowerCase(), [name, collection]);
|
|
1519
|
+
}
|
|
1491
1520
|
for (const [collectionName, currentCollection] of currentSchema.collections) {
|
|
1492
|
-
const
|
|
1493
|
-
if (
|
|
1521
|
+
const previousEntry = previousCollectionsLower.get(collectionName.toLowerCase());
|
|
1522
|
+
if (previousEntry) {
|
|
1523
|
+
const [, previousCollection] = previousEntry;
|
|
1494
1524
|
matches.push([currentCollection, previousCollection]);
|
|
1495
1525
|
}
|
|
1496
1526
|
}
|