zodvex 0.7.1 → 0.7.2-beta.1

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/dist/cli/index.js +186 -24
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/codegen/index.js +137 -14
  4. package/dist/codegen/index.js.map +1 -1
  5. package/dist/core/index.js +56 -10
  6. package/dist/core/index.js.map +1 -1
  7. package/dist/index.js +56 -10
  8. package/dist/index.js.map +1 -1
  9. package/dist/internal/db.d.ts +14 -11
  10. package/dist/internal/db.d.ts.map +1 -1
  11. package/dist/internal/meta.d.ts +11 -0
  12. package/dist/internal/meta.d.ts.map +1 -1
  13. package/dist/internal/model.d.ts +21 -0
  14. package/dist/internal/model.d.ts.map +1 -1
  15. package/dist/internal/zx.d.ts +14 -0
  16. package/dist/internal/zx.d.ts.map +1 -1
  17. package/dist/labs/index.js +29 -4
  18. package/dist/labs/index.js.map +1 -1
  19. package/dist/legacy/index.js +13 -2
  20. package/dist/legacy/index.js.map +1 -1
  21. package/dist/mini/index.js +58 -12
  22. package/dist/mini/index.js.map +1 -1
  23. package/dist/mini/server/index.js +37 -27
  24. package/dist/mini/server/index.js.map +1 -1
  25. package/dist/public/cli/commands.d.ts +12 -0
  26. package/dist/public/cli/commands.d.ts.map +1 -1
  27. package/dist/public/codegen/discover.d.ts +8 -0
  28. package/dist/public/codegen/discover.d.ts.map +1 -1
  29. package/dist/public/codegen/generate.d.ts.map +1 -1
  30. package/dist/public/mini/model.d.ts +6 -0
  31. package/dist/public/mini/model.d.ts.map +1 -1
  32. package/dist/public/mini/zx.d.ts +2 -0
  33. package/dist/public/mini/zx.d.ts.map +1 -1
  34. package/dist/public/model.d.ts +6 -0
  35. package/dist/public/model.d.ts.map +1 -1
  36. package/dist/server/index.js +37 -27
  37. package/dist/server/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/internal/db.ts +33 -52
  40. package/src/internal/meta.ts +26 -0
  41. package/src/internal/model.ts +76 -9
  42. package/src/internal/zx.ts +18 -2
  43. package/src/public/cli/commands.ts +35 -6
  44. package/src/public/codegen/discover.ts +9 -1
  45. package/src/public/codegen/generate.ts +203 -15
  46. package/src/public/mini/model.ts +6 -0
  47. package/src/public/mini/zx.ts +3 -2
  48. package/src/public/model.ts +6 -0
@@ -818,6 +818,15 @@ function readMeta(target) {
818
818
  }
819
819
  return target[META_KEY];
820
820
  }
821
+ var CODEC_BRAND_KEY = "__zodvexCodecBrand";
822
+ function attachCodecBrand(target, brand) {
823
+ Object.defineProperty(target, CODEC_BRAND_KEY, {
824
+ value: brand,
825
+ enumerable: false,
826
+ writable: false,
827
+ configurable: false
828
+ });
829
+ }
821
830
 
822
831
  // src/public/codegen/extractCodec.ts
823
832
  function findCodec(schema) {
@@ -885,8 +894,10 @@ function id(tableName) {
885
894
  branded._tableName = tableName;
886
895
  return branded;
887
896
  }
888
- function codec(wire, runtime, transforms) {
889
- return zodvexCodec(wire, runtime, transforms);
897
+ function codec(wire, runtime, transforms, opts) {
898
+ const built = zodvexCodec(wire, runtime, transforms);
899
+ if (opts?.brand) attachCodecBrand(built, opts.brand);
900
+ return built;
890
901
  }
891
902
  function sharedWeakMap(name) {
892
903
  const key = /* @__PURE__ */ Symbol.for(`zodvex.zx.cache.${name}`);
@@ -1143,7 +1154,18 @@ function createSchemaBundle(name, inputSchema) {
1143
1154
  }
1144
1155
 
1145
1156
  // src/internal/model.ts
1146
- function createModel(name, fields, schema, definitionSource, indexes = {}, searchIndexes = {}, vectorIndexes = {}) {
1157
+ function lazyValidator(fields, userSchema) {
1158
+ let cached;
1159
+ return {
1160
+ get: () => {
1161
+ if (cached) return cached;
1162
+ cached = userSchema ?? z.object(fields);
1163
+ return cached;
1164
+ }
1165
+ };
1166
+ }
1167
+ function createModel(name, fields, schema, definitionSource, indexes = {}, searchIndexes = {}, vectorIndexes = {}, userSchema = null) {
1168
+ const validatorCache = lazyValidator(fields, userSchema);
1147
1169
  const model = {
1148
1170
  name,
1149
1171
  fields,
@@ -1151,6 +1173,9 @@ function createModel(name, fields, schema, definitionSource, indexes = {}, searc
1151
1173
  indexes,
1152
1174
  searchIndexes,
1153
1175
  vectorIndexes,
1176
+ get validator() {
1177
+ return validatorCache.get();
1178
+ },
1154
1179
  index(indexName, indexFields) {
1155
1180
  return createModel(
1156
1181
  name,
@@ -1159,7 +1184,8 @@ function createModel(name, fields, schema, definitionSource, indexes = {}, searc
1159
1184
  definitionSource,
1160
1185
  { ...indexes, [indexName]: [...indexFields, "_creationTime"] },
1161
1186
  searchIndexes,
1162
- vectorIndexes
1187
+ vectorIndexes,
1188
+ userSchema
1163
1189
  );
1164
1190
  },
1165
1191
  searchIndex(indexName, config) {
@@ -1170,26 +1196,37 @@ function createModel(name, fields, schema, definitionSource, indexes = {}, searc
1170
1196
  definitionSource,
1171
1197
  indexes,
1172
1198
  { ...searchIndexes, [indexName]: config },
1173
- vectorIndexes
1199
+ vectorIndexes,
1200
+ userSchema
1174
1201
  );
1175
1202
  },
1176
1203
  vectorIndex(indexName, config) {
1177
- return createModel(name, fields, schema, definitionSource, indexes, searchIndexes, {
1178
- ...vectorIndexes,
1179
- [indexName]: config
1180
- });
1204
+ return createModel(
1205
+ name,
1206
+ fields,
1207
+ schema,
1208
+ definitionSource,
1209
+ indexes,
1210
+ searchIndexes,
1211
+ { ...vectorIndexes, [indexName]: config },
1212
+ userSchema
1213
+ );
1181
1214
  }
1182
1215
  };
1183
1216
  attachMeta(model, { type: "model", tableName: name, definitionSource, schemas: schema });
1184
1217
  return model;
1185
1218
  }
1186
1219
  function createSlimModel(name, fields, userSchema, definitionSource, indexes = {}, searchIndexes = {}, vectorIndexes = {}) {
1220
+ const validatorCache = lazyValidator(fields, userSchema);
1187
1221
  const model = {
1188
1222
  name,
1189
1223
  fields,
1190
1224
  indexes,
1191
1225
  searchIndexes,
1192
1226
  vectorIndexes,
1227
+ get validator() {
1228
+ return validatorCache.get();
1229
+ },
1193
1230
  index(indexName, indexFields) {
1194
1231
  return createSlimModel(
1195
1232
  name,
@@ -1229,7 +1266,16 @@ function defineZodModel(name, fieldsOrSchema, options) {
1229
1266
  if (slim) {
1230
1267
  return createSlimModel(name, {}, fieldsOrSchema, "schema");
1231
1268
  }
1232
- return createModel(name, {}, createSchemaBundle(name, fieldsOrSchema), "schema");
1269
+ return createModel(
1270
+ name,
1271
+ {},
1272
+ createSchemaBundle(name, fieldsOrSchema),
1273
+ "schema",
1274
+ void 0,
1275
+ void 0,
1276
+ void 0,
1277
+ fieldsOrSchema
1278
+ );
1233
1279
  }
1234
1280
  const fields = fieldsOrSchema;
1235
1281
  if (slim) {