on-zero 0.1.22 → 0.1.23

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 (42) hide show
  1. package/dist/cjs/cli.cjs +17 -424
  2. package/dist/cjs/cli.js +7 -402
  3. package/dist/cjs/cli.js.map +2 -2
  4. package/dist/cjs/cli.native.js +15 -519
  5. package/dist/cjs/cli.native.js.map +1 -1
  6. package/dist/cjs/generate.cjs +370 -0
  7. package/dist/cjs/generate.js +339 -0
  8. package/dist/cjs/generate.js.map +6 -0
  9. package/dist/cjs/generate.native.js +464 -0
  10. package/dist/cjs/generate.native.js.map +1 -0
  11. package/dist/cjs/vite-plugin.cjs +37 -121
  12. package/dist/cjs/vite-plugin.js +41 -100
  13. package/dist/cjs/vite-plugin.js.map +1 -1
  14. package/dist/cjs/vite-plugin.native.js +47 -157
  15. package/dist/cjs/vite-plugin.native.js.map +1 -1
  16. package/dist/esm/cli.js +8 -388
  17. package/dist/esm/cli.js.map +2 -2
  18. package/dist/esm/cli.mjs +17 -402
  19. package/dist/esm/cli.mjs.map +1 -1
  20. package/dist/esm/cli.native.js +15 -497
  21. package/dist/esm/cli.native.js.map +1 -1
  22. package/dist/esm/generate.js +317 -0
  23. package/dist/esm/generate.js.map +6 -0
  24. package/dist/esm/generate.mjs +335 -0
  25. package/dist/esm/generate.mjs.map +1 -0
  26. package/dist/esm/generate.native.js +426 -0
  27. package/dist/esm/generate.native.js.map +1 -0
  28. package/dist/esm/vite-plugin.js +42 -102
  29. package/dist/esm/vite-plugin.js.map +1 -1
  30. package/dist/esm/vite-plugin.mjs +37 -121
  31. package/dist/esm/vite-plugin.mjs.map +1 -1
  32. package/dist/esm/vite-plugin.native.js +47 -157
  33. package/dist/esm/vite-plugin.native.js.map +1 -1
  34. package/package.json +2 -2
  35. package/readme.md +0 -29
  36. package/src/cli.ts +9 -646
  37. package/src/generate.ts +490 -0
  38. package/src/vite-plugin.ts +61 -189
  39. package/types/generate.d.ts +21 -0
  40. package/types/generate.d.ts.map +1 -0
  41. package/types/vite-plugin.d.ts +6 -29
  42. package/types/vite-plugin.d.ts.map +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/vite-plugin.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA,SAAS,YAAY,UAAU,eAAe;AAE9C,SAAS,gBAAsC;AAa/C,SAAS,sBAAsB,aAAuB,CAAC,GAAW;AAChE,QAAM,WAAW,CAAC,YAAY,eAAe,aAAa,GAAG,UAAU;AAEvE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IAET,UAAU,MAAM,IAAI;AAClB,UAAI,GAAC,SAAS,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,MAC1D,KAAK,SAAS,4BAA4B;AAE/C,eAAO;AAAA,UACL,MAAM,KAAK;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,KAAK;AAAA,QACP;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,MAAc,KAAsB;AAC7D,QAAM,MAAM,SAAS,KAAK,IAAI;AAC9B,SAAO,QAAQ,MAAM,CAAC,IAAI,WAAW,IAAI,KAAK,CAAC,WAAW,GAAG;AAC/D;AAEO,SAAS,aAAa,UAA+B,CAAC,GAAa;AACxE,QAAM,MAAM,QAAQ,OAAO;AAE3B,MAAI,SACA,WACA;AAEJ,QAAM,cAAc,CAAC,WACnB,SAAS;AAAA,IACP,KAAK;AAAA,IACL,OAAO,QAAQ;AAAA,IACf;AAAA,EACF,CAAC;AAEH,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MAEP,eAAe,QAAQ;AACrB,kBAAU,QAAQ,OAAO,MAAM,GAAG,GAClC,YAAY,QAAQ,SAAS,QAAQ,GACrC,aAAa,QAAQ,SAAS,SAAS;AAAA,MACzC;AAAA,MAEA,MAAM,aAAa;AACjB,QAAK,QAAQ,mBAAiB,MAAM,YAAY,EAAK;AAAA,MACvD;AAAA,MAEA,gBAAgB,QAAQ;AACtB,YAAI,QAAQ,gBAAiB;AAE7B,cAAM,UAAU,OAAO,SAAiB;AACtC,UAAK,UAAU,KAAK,IAAI,MACpB,kBAAkB,MAAM,SAAS,KAAK,kBAAkB,MAAM,UAAU,MAC1E,MAAM,YAAY,EAAK;AAAA,QAE3B;AAEA,eAAO,QAAQ,GAAG,UAAU,OAAO,GACnC,OAAO,QAAQ,GAAG,OAAO,OAAO,GAChC,OAAO,QAAQ,GAAG,UAAU,OAAO;AAAA,MACrC;AAAA,IACF;AAAA,IAEA;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MAEP,eAAe,QAAQ;AACrB,kBAAU,QAAQ,OAAO,MAAM,GAAG;AAAA,MACpC;AAAA,MAEA,MAAM,aAAa;AACjB,QAAK,QAAQ,mBAAiB,MAAM,YAAY,EAAI;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,sBAAsB,QAAQ,UAAU;AAAA,EAC1C;AACF;AAEO,MAAM,kBAAkB,CAAC,YACvB,sBAAsB,SAAS,OAAO;AAG/C,IAAO,sBAAQ;",
5
5
  "names": []
6
6
  }
@@ -1,143 +1,59 @@
1
- import { createHash } from "node:crypto";
2
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { basename, resolve } from "node:path";
4
- const hash = s => createHash("sha256").update(s).digest("hex");
5
- let generateCache = {};
6
- function writeFileIfChanged(filePath, content) {
7
- const contentHash = hash(content);
8
- return generateCache[filePath] === contentHash && existsSync(filePath) ? !1 : (writeFileSync(filePath, content, "utf-8"), generateCache[filePath] = contentHash, !0);
9
- }
10
- function generateModelsFile(modelFiles) {
11
- const modelNames = modelFiles.map(f => basename(f, ".ts")).sort(),
12
- getImportName = name => name === "user" ? "userPublic" : name,
13
- imports = modelNames.map(name => `import * as ${getImportName(name)} from '../models/${name}'`).join(`
14
- `),
15
- modelsObj = `export const models = {
16
- ${[...modelNames].sort((a, b) => getImportName(a).localeCompare(getImportName(b))).map(name => ` ${getImportName(name)},`).join(`
17
- `)}
18
- }`;
19
- return `// auto-generated by on-zero vite plugin
20
- ${imports}
21
-
22
- ${modelsObj}
23
-
24
- if (import.meta.hot) {
25
- import.meta.hot.accept()
26
- }
27
- `;
28
- }
29
- function generateTypesFile(modelFiles) {
30
- const modelNames = modelFiles.map(f => basename(f, ".ts")).sort(),
31
- getSchemaName = name => name === "user" ? "userPublic" : name;
32
- return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
33
- import type * as schema from './tables'
34
-
35
- ${modelNames.map(name => {
36
- const pascalName = name.charAt(0).toUpperCase() + name.slice(1),
37
- schemaName = getSchemaName(name);
38
- return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
39
- export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
40
- }).join(`
41
-
42
- `)}
43
- `;
1
+ import { isAbsolute, relative, resolve } from "node:path";
2
+ import { generate } from "./generate.mjs";
3
+ function createOnZeroHmrPlugin(hmrInclude = []) {
4
+ const hmrPaths = ["/models/", "/generated/", "/queries/", ...hmrInclude];
5
+ return {
6
+ name: "on-zero:hmr",
7
+ apply: "serve",
8
+ enforce: "post",
9
+ transform(code, id) {
10
+ if (!(!hmrPaths.some(p => id.includes(p)) || !/\.tsx?$/.test(id)) && code.includes("import.meta.hot.invalidate")) return {
11
+ code: code.replace(/if\s*\(invalidateMessage\)\s*import\.meta\.hot\.invalidate\(invalidateMessage\);?/g, "/* on-zero: HMR invalidate disabled */"),
12
+ map: null
13
+ };
14
+ }
15
+ };
44
16
  }
45
- function generateTablesFile(modelFiles) {
46
- const modelNames = modelFiles.map(f => basename(f, ".ts")).sort(),
47
- getExportName = name => name === "user" ? "userPublic" : name;
48
- return `// auto-generated by on-zero vite plugin
49
-
50
- ${modelNames.map(name => `export { schema as ${getExportName(name)} } from '../models/${name}'`).join(`
51
- `)}
52
- `;
17
+ function isWithinDirectory(file, dir) {
18
+ const rel = relative(dir, file);
19
+ return rel !== "" && !rel.startsWith("..") && !isAbsolute(rel);
53
20
  }
54
- async function runGenerate(options) {
55
- const {
56
- modelsDir,
57
- generatedDir,
21
+ function onZeroPlugin(options = {}) {
22
+ const dir = options.dir ?? "src/data";
23
+ let dataDir, modelsDir, queriesDir;
24
+ const runGenerate = silent => generate({
25
+ dir: dataDir,
26
+ after: options.after,
58
27
  silent
59
- } = options;
60
- existsSync(generatedDir) || mkdirSync(generatedDir, {
61
- recursive: !0
62
28
  });
63
- const allModelFiles = readdirSync(modelsDir).filter(f => f.endsWith(".ts")).sort(),
64
- filesWithSchema = allModelFiles.filter(f => readFileSync(resolve(modelsDir, f), "utf-8").includes("export const schema = table(")),
65
- filesChanged = [writeFileIfChanged(resolve(generatedDir, "models.ts"), generateModelsFile(allModelFiles)), writeFileIfChanged(resolve(generatedDir, "types.ts"), generateTypesFile(filesWithSchema)), writeFileIfChanged(resolve(generatedDir, "tables.ts"), generateTablesFile(filesWithSchema))].filter(Boolean).length;
66
- return filesChanged > 0 && !silent && console.info(`[on-zero] generated ${filesChanged} file(s)`), filesChanged;
67
- }
68
- function onZeroPlugin(options = {}) {
69
- const dataDir = options.dataDir || "src/data",
70
- hmrPaths = ["/models/", "/generated/", ...(options.hmrInclude || [])];
71
- let modelsDir, generatedDir;
72
- return [
73
- // generation plugin
74
- {
75
- name: "on-zero:generate",
29
+ return [{
30
+ name: "on-zero:serve",
76
31
  apply: "serve",
77
32
  configResolved(config) {
78
- modelsDir = resolve(config.root, dataDir, "models"), generatedDir = resolve(config.root, dataDir, "generated");
33
+ dataDir = resolve(config.root, dir), modelsDir = resolve(dataDir, "models"), queriesDir = resolve(dataDir, "queries");
79
34
  },
80
35
  async buildStart() {
81
- options.disableGenerate || (await runGenerate({
82
- modelsDir,
83
- generatedDir,
84
- silent: !1
85
- }));
36
+ options.disableGenerate || (await runGenerate(!1));
86
37
  },
87
38
  configureServer(server) {
88
- options.disableGenerate || (server.watcher.on("change", async file => {
89
- file.includes(modelsDir) && (await runGenerate({
90
- modelsDir,
91
- generatedDir,
92
- silent: !1
93
- }));
94
- }), server.watcher.on("add", async file => {
95
- file.includes(modelsDir) && (await runGenerate({
96
- modelsDir,
97
- generatedDir,
98
- silent: !1
99
- }));
100
- }), server.watcher.on("unlink", async file => {
101
- file.includes(modelsDir) && (await runGenerate({
102
- modelsDir,
103
- generatedDir,
104
- silent: !1
105
- }));
106
- }));
107
- }
108
- },
109
- // HMR plugin - removes invalidate calls to prevent cascade
110
- {
111
- name: "on-zero:hmr",
112
- apply: "serve",
113
- enforce: "post",
114
- transform(code, id) {
115
- if (hmrPaths.some(p => id.includes(p)) && /\.tsx?$/.test(id) && code.includes("import.meta.hot.invalidate")) return {
116
- code: code.replace(/if\s*\(invalidateMessage\)\s*import\.meta\.hot\.invalidate\(invalidateMessage\);?/g, "/* on-zero: HMR invalidate disabled */"),
117
- map: null
39
+ if (options.disableGenerate) return;
40
+ const handler = async file => {
41
+ /\.tsx?$/.test(file) && (isWithinDirectory(file, modelsDir) || isWithinDirectory(file, queriesDir)) && (await runGenerate(!1));
118
42
  };
43
+ server.watcher.on("change", handler), server.watcher.on("add", handler), server.watcher.on("unlink", handler);
119
44
  }
120
- },
121
- // build plugin - generate once before build
122
- {
45
+ }, {
123
46
  name: "on-zero:build",
124
47
  apply: "build",
125
48
  configResolved(config) {
126
- modelsDir = resolve(config.root, dataDir, "models"), generatedDir = resolve(config.root, dataDir, "generated");
49
+ dataDir = resolve(config.root, dir);
127
50
  },
128
51
  async buildStart() {
129
- options.disableGenerate || (await runGenerate({
130
- modelsDir,
131
- generatedDir,
132
- silent: !0
133
- }));
52
+ options.disableGenerate || (await runGenerate(!0));
134
53
  }
135
- }];
54
+ }, createOnZeroHmrPlugin(options.hmrInclude)];
136
55
  }
137
- const onZeroHmrPlugin = options => onZeroPlugin({
138
- hmrInclude: options?.include,
139
- disableGenerate: !0
140
- })[1];
56
+ const onZeroHmrPlugin = options => createOnZeroHmrPlugin(options?.include);
141
57
  var vite_plugin_default = onZeroPlugin;
142
58
  export { vite_plugin_default as default, onZeroHmrPlugin, onZeroPlugin };
143
59
  //# sourceMappingURL=vite-plugin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["createHash","existsSync","mkdirSync","readdirSync","readFileSync","writeFileSync","basename","resolve","hash","s","update","digest","generateCache","writeFileIfChanged","filePath","content","contentHash","generateModelsFile","modelFiles","modelNames","map","f","sort","getImportName","name","imports","join","modelsObj","a","b","localeCompare","generateTypesFile","getSchemaName","pascalName","charAt","toUpperCase","slice","schemaName","generateTablesFile","getExportName","runGenerate","options","modelsDir","generatedDir","silent","recursive","allModelFiles","filter","endsWith","filesWithSchema","includes","filesChanged","Boolean","length","console","info","onZeroPlugin","dataDir","hmrPaths","hmrInclude","apply","configResolved","config","root","buildStart","disableGenerate","configureServer","server","watcher","on","file","enforce","transform","code","id","some","p","test","replace","onZeroHmrPlugin","include","vite_plugin_default"],"sources":["../../src/vite-plugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isAbsolute","relative","resolve","generate","createOnZeroHmrPlugin","hmrInclude","hmrPaths","name","apply","enforce","transform","code","id","some","p","includes","test","replace","map","isWithinDirectory","file","dir","rel","startsWith","onZeroPlugin","options","dataDir","modelsDir","queriesDir","runGenerate","silent","after","configResolved","config","root","buildStart","disableGenerate","configureServer","server","handler","watcher","on","onZeroHmrPlugin","include","vite_plugin_default"],"sources":["../../src/vite-plugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,EAAYC,QAAA,EAAUC,OAAA,QAAe;AAE9C,SAASC,QAAA,QAAsC;AAa/C,SAASC,sBAAsBC,UAAA,GAAuB,EAAC,EAAW;EAChE,MAAMC,QAAA,GAAW,CAAC,YAAY,eAAe,aAAa,GAAGD,UAAU;EAEvE,OAAO;IACLE,IAAA,EAAM;IACNC,KAAA,EAAO;IACPC,OAAA,EAAS;IAETC,UAAUC,IAAA,EAAMC,EAAA,EAAI;MAClB,IAAI,GAACN,QAAA,CAASO,IAAA,CAAMC,CAAA,IAAMF,EAAA,CAAGG,QAAA,CAASD,CAAC,CAAC,KAAK,CAAC,UAAUE,IAAA,CAAKJ,EAAE,MAC1DD,IAAA,CAAKI,QAAA,CAAS,4BAA4B,GAE/C,OAAO;QACLJ,IAAA,EAAMA,IAAA,CAAKM,OAAA,CACT,sFACA,wCACF;QACAC,GAAA,EAAK;MACP;IACF;EACF;AACF;AAEA,SAASC,kBAAkBC,IAAA,EAAcC,GAAA,EAAsB;EAC7D,MAAMC,GAAA,GAAMrB,QAAA,CAASoB,GAAA,EAAKD,IAAI;EAC9B,OAAOE,GAAA,KAAQ,MAAM,CAACA,GAAA,CAAIC,UAAA,CAAW,IAAI,KAAK,CAACvB,UAAA,CAAWsB,GAAG;AAC/D;AAEO,SAASE,aAAaC,OAAA,GAA+B,CAAC,GAAa;EACxE,MAAMJ,GAAA,GAAMI,OAAA,CAAQJ,GAAA,IAAO;EAE3B,IAAIK,OAAA,EACAC,SAAA,EACAC,UAAA;EAEJ,MAAMC,WAAA,GAAeC,MAAA,IACnB3B,QAAA,CAAS;IACPkB,GAAA,EAAKK,OAAA;IACLK,KAAA,EAAON,OAAA,CAAQM,KAAA;IACfD;EACF,CAAC;EAEH,OAAO,CACL;IACEvB,IAAA,EAAM;IACNC,KAAA,EAAO;IAEPwB,eAAeC,MAAA,EAAQ;MACrBP,OAAA,GAAUxB,OAAA,CAAQ+B,MAAA,CAAOC,IAAA,EAAMb,GAAG,GAClCM,SAAA,GAAYzB,OAAA,CAAQwB,OAAA,EAAS,QAAQ,GACrCE,UAAA,GAAa1B,OAAA,CAAQwB,OAAA,EAAS,SAAS;IACzC;IAEA,MAAMS,WAAA,EAAa;MACZV,OAAA,CAAQW,eAAA,KAAiB,MAAMP,WAAA,CAAY,EAAK;IACvD;IAEAQ,gBAAgBC,MAAA,EAAQ;MACtB,IAAIb,OAAA,CAAQW,eAAA,EAAiB;MAE7B,MAAMG,OAAA,GAAU,MAAOnB,IAAA,IAAiB;QACjC,UAAUJ,IAAA,CAAKI,IAAI,MACpBD,iBAAA,CAAkBC,IAAA,EAAMO,SAAS,KAAKR,iBAAA,CAAkBC,IAAA,EAAMQ,UAAU,OAC1E,MAAMC,WAAA,CAAY,EAAK;MAE3B;MAEAS,MAAA,CAAOE,OAAA,CAAQC,EAAA,CAAG,UAAUF,OAAO,GACnCD,MAAA,CAAOE,OAAA,CAAQC,EAAA,CAAG,OAAOF,OAAO,GAChCD,MAAA,CAAOE,OAAA,CAAQC,EAAA,CAAG,UAAUF,OAAO;IACrC;EACF,GAEA;IACEhC,IAAA,EAAM;IACNC,KAAA,EAAO;IAEPwB,eAAeC,MAAA,EAAQ;MACrBP,OAAA,GAAUxB,OAAA,CAAQ+B,MAAA,CAAOC,IAAA,EAAMb,GAAG;IACpC;IAEA,MAAMc,WAAA,EAAa;MACZV,OAAA,CAAQW,eAAA,KAAiB,MAAMP,WAAA,CAAY,EAAI;IACtD;EACF,GAEAzB,qBAAA,CAAsBqB,OAAA,CAAQpB,UAAU,EAC1C;AACF;AAEO,MAAMqC,eAAA,GAAmBjB,OAAA,IACvBrB,qBAAA,CAAsBqB,OAAA,EAASkB,OAAO;AAG/C,IAAOC,mBAAA,GAAQpB,YAAA","ignoreList":[]}
@@ -1,180 +1,70 @@
1
- import { createHash } from "crypto";
2
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "fs";
3
- import { basename, resolve } from "path";
4
- var hash = function (s) {
5
- return createHash("sha256").update(s).digest("hex");
6
- },
7
- generateCache = {};
8
- function writeFileIfChanged(filePath, content) {
9
- var contentHash = hash(content);
10
- return generateCache[filePath] === contentHash && existsSync(filePath) ? !1 : (writeFileSync(filePath, content, "utf-8"), generateCache[filePath] = contentHash, !0);
11
- }
12
- function generateModelsFile(modelFiles) {
13
- var modelNames = modelFiles.map(function (f) {
14
- return basename(f, ".ts");
15
- }).sort(),
16
- getImportName = function (name) {
17
- return name === "user" ? "userPublic" : name;
18
- },
19
- imports = modelNames.map(function (name) {
20
- return `import * as ${getImportName(name)} from '../models/${name}'`;
21
- }).join(`
22
- `),
23
- sortedByImportName = [...modelNames].sort(function (a, b) {
24
- return getImportName(a).localeCompare(getImportName(b));
25
- }),
26
- modelsObj = `export const models = {
27
- ${sortedByImportName.map(function (name) {
28
- return ` ${getImportName(name)},`;
29
- }).join(`
30
- `)}
31
- }`,
32
- hmrBoundary = `
33
- if (import.meta.hot) {
34
- import.meta.hot.accept()
35
- }
36
- `;
37
- return `// auto-generated by on-zero vite plugin
38
- ${imports}
39
-
40
- ${modelsObj}
41
- ${hmrBoundary}`;
42
- }
43
- function generateTypesFile(modelFiles) {
44
- var modelNames = modelFiles.map(function (f) {
45
- return basename(f, ".ts");
46
- }).sort(),
47
- getSchemaName = function (name) {
48
- return name === "user" ? "userPublic" : name;
49
- },
50
- typeExports = modelNames.map(function (name) {
51
- var pascalName = name.charAt(0).toUpperCase() + name.slice(1),
52
- schemaName = getSchemaName(name);
53
- return `export type ${pascalName} = TableInsertRow<typeof schema.${schemaName}>
54
- export type ${pascalName}Update = TableUpdateRow<typeof schema.${schemaName}>`;
55
- }).join(`
56
-
57
- `);
58
- return `import type { TableInsertRow, TableUpdateRow } from 'on-zero'
59
- import type * as schema from './tables'
60
-
61
- ${typeExports}
62
- `;
63
- }
64
- function generateTablesFile(modelFiles) {
65
- var modelNames = modelFiles.map(function (f) {
66
- return basename(f, ".ts");
67
- }).sort(),
68
- getExportName = function (name) {
69
- return name === "user" ? "userPublic" : name;
70
- },
71
- exports = modelNames.map(function (name) {
72
- return `export { schema as ${getExportName(name)} } from '../models/${name}'`;
73
- }).join(`
74
- `);
75
- return `// auto-generated by on-zero vite plugin
76
-
77
- ${exports}
78
- `;
1
+ import { isAbsolute, relative, resolve } from "path";
2
+ import { generate } from "./generate.native.js";
3
+ function createOnZeroHmrPlugin() {
4
+ var hmrInclude = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [],
5
+ hmrPaths = ["/models/", "/generated/", "/queries/", ...hmrInclude];
6
+ return {
7
+ name: "on-zero:hmr",
8
+ apply: "serve",
9
+ enforce: "post",
10
+ transform(code, id) {
11
+ if (!(!hmrPaths.some(function (p) {
12
+ return id.includes(p);
13
+ }) || !/\.tsx?$/.test(id)) && code.includes("import.meta.hot.invalidate")) return {
14
+ code: code.replace(/if\s*\(invalidateMessage\)\s*import\.meta\.hot\.invalidate\(invalidateMessage\);?/g, "/* on-zero: HMR invalidate disabled */"),
15
+ map: null
16
+ };
17
+ }
18
+ };
79
19
  }
80
- async function runGenerate(options) {
81
- var {
82
- modelsDir,
83
- generatedDir,
84
- silent
85
- } = options;
86
- existsSync(generatedDir) || mkdirSync(generatedDir, {
87
- recursive: !0
88
- });
89
- var allModelFiles = readdirSync(modelsDir).filter(function (f) {
90
- return f.endsWith(".ts");
91
- }).sort(),
92
- filesWithSchema = allModelFiles.filter(function (f) {
93
- return readFileSync(resolve(modelsDir, f), "utf-8").includes("export const schema = table(");
94
- }),
95
- writeResults = [writeFileIfChanged(resolve(generatedDir, "models.ts"), generateModelsFile(allModelFiles)), writeFileIfChanged(resolve(generatedDir, "types.ts"), generateTypesFile(filesWithSchema)), writeFileIfChanged(resolve(generatedDir, "tables.ts"), generateTablesFile(filesWithSchema))],
96
- filesChanged = writeResults.filter(Boolean).length;
97
- return filesChanged > 0 && !silent && console.info(`[on-zero] generated ${filesChanged} file(s)`), filesChanged;
20
+ function isWithinDirectory(file, dir) {
21
+ var rel = relative(dir, file);
22
+ return rel !== "" && !rel.startsWith("..") && !isAbsolute(rel);
98
23
  }
99
24
  function onZeroPlugin() {
100
25
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
101
- dataDir = options.dataDir || "src/data",
102
- hmrPaths = ["/models/", "/generated/", ...(options.hmrInclude || [])],
26
+ _options_dir,
27
+ dir = (_options_dir = options.dir) !== null && _options_dir !== void 0 ? _options_dir : "src/data",
28
+ dataDir,
103
29
  modelsDir,
104
- generatedDir;
105
- return [
106
- // generation plugin
107
- {
108
- name: "on-zero:generate",
30
+ queriesDir,
31
+ runGenerate = function (silent) {
32
+ return generate({
33
+ dir: dataDir,
34
+ after: options.after,
35
+ silent
36
+ });
37
+ };
38
+ return [{
39
+ name: "on-zero:serve",
109
40
  apply: "serve",
110
41
  configResolved(config) {
111
- modelsDir = resolve(config.root, dataDir, "models"), generatedDir = resolve(config.root, dataDir, "generated");
42
+ dataDir = resolve(config.root, dir), modelsDir = resolve(dataDir, "models"), queriesDir = resolve(dataDir, "queries");
112
43
  },
113
44
  async buildStart() {
114
- options.disableGenerate || (await runGenerate({
115
- modelsDir,
116
- generatedDir,
117
- silent: !1
118
- }));
45
+ options.disableGenerate || (await runGenerate(!1));
119
46
  },
120
47
  configureServer(server) {
121
- options.disableGenerate || (server.watcher.on("change", async function (file) {
122
- file.includes(modelsDir) && (await runGenerate({
123
- modelsDir,
124
- generatedDir,
125
- silent: !1
126
- }));
127
- }), server.watcher.on("add", async function (file) {
128
- file.includes(modelsDir) && (await runGenerate({
129
- modelsDir,
130
- generatedDir,
131
- silent: !1
132
- }));
133
- }), server.watcher.on("unlink", async function (file) {
134
- file.includes(modelsDir) && (await runGenerate({
135
- modelsDir,
136
- generatedDir,
137
- silent: !1
138
- }));
139
- }));
140
- }
141
- },
142
- // HMR plugin - removes invalidate calls to prevent cascade
143
- {
144
- name: "on-zero:hmr",
145
- apply: "serve",
146
- enforce: "post",
147
- transform(code, id) {
148
- var shouldTransform = hmrPaths.some(function (p) {
149
- return id.includes(p);
150
- }) && /\.tsx?$/.test(id);
151
- if (shouldTransform && code.includes("import.meta.hot.invalidate")) return {
152
- code: code.replace(/if\s*\(invalidateMessage\)\s*import\.meta\.hot\.invalidate\(invalidateMessage\);?/g, "/* on-zero: HMR invalidate disabled */"),
153
- map: null
154
- };
48
+ if (!options.disableGenerate) {
49
+ var handler = async function (file) {
50
+ /\.tsx?$/.test(file) && (isWithinDirectory(file, modelsDir) || isWithinDirectory(file, queriesDir)) && (await runGenerate(!1));
51
+ };
52
+ server.watcher.on("change", handler), server.watcher.on("add", handler), server.watcher.on("unlink", handler);
53
+ }
155
54
  }
156
- },
157
- // build plugin - generate once before build
158
- {
55
+ }, {
159
56
  name: "on-zero:build",
160
57
  apply: "build",
161
58
  configResolved(config) {
162
- modelsDir = resolve(config.root, dataDir, "models"), generatedDir = resolve(config.root, dataDir, "generated");
59
+ dataDir = resolve(config.root, dir);
163
60
  },
164
61
  async buildStart() {
165
- options.disableGenerate || (await runGenerate({
166
- modelsDir,
167
- generatedDir,
168
- silent: !0
169
- }));
62
+ options.disableGenerate || (await runGenerate(!0));
170
63
  }
171
- }];
64
+ }, createOnZeroHmrPlugin(options.hmrInclude)];
172
65
  }
173
66
  var onZeroHmrPlugin = function (options) {
174
- return onZeroPlugin({
175
- hmrInclude: options?.include,
176
- disableGenerate: !0
177
- })[1];
67
+ return createOnZeroHmrPlugin(options?.include);
178
68
  },
179
69
  vite_plugin_default = onZeroPlugin;
180
70
  export { vite_plugin_default as default, onZeroHmrPlugin, onZeroPlugin };
@@ -1 +1 @@
1
- {"version":3,"names":["createHash","existsSync","mkdirSync","readdirSync","readFileSync","writeFileSync","basename","resolve","hash","s","update","digest","generateCache","writeFileIfChanged","filePath","content","contentHash","generateModelsFile","modelFiles","modelNames","map","f","sort","getImportName","name","imports","join","sortedByImportName","a","b","localeCompare","modelsObj","hmrBoundary","generateTypesFile","getSchemaName","typeExports","pascalName","charAt","toUpperCase","slice","schemaName","generateTablesFile","getExportName","exports","runGenerate","options","modelsDir","generatedDir","silent","recursive","allModelFiles","filter","endsWith","filesWithSchema","includes","writeResults","filesChanged","Boolean","length","console","info","onZeroPlugin","arguments","dataDir","hmrPaths","hmrInclude","apply","configResolved","config","root","buildStart","disableGenerate","configureServer","server","watcher","on","file"],"sources":["../../src/vite-plugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isAbsolute","relative","resolve","generate","createOnZeroHmrPlugin","hmrInclude","arguments","length","hmrPaths","name","apply","enforce","transform","code","id","some","p","includes","test","replace","map","isWithinDirectory","file","dir","rel","startsWith","onZeroPlugin","options","_options_dir","dataDir","modelsDir","queriesDir","runGenerate","silent","after","configResolved","config","root","buildStart","disableGenerate","configureServer","server","handler","watcher","on"],"sources":["../../src/vite-plugin.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,EAAYC,QAAA,EAAUC,OAAA,QAAe;AAE9C,SAASC,QAAA,QAAsC;AAa/C,SAASC,sBAAA,EAAsB;EAC7B,IAAAC,UAAM,GAAWC,SAAC,CAAAC,MAAY,QAAAD,SAAe,QAAa,KAAG,IAAAA,SAAU;IAAAE,QAAA,IAEvE,UAAO,EACL,aAAM,EACN,WAAO,EACP,GAAAH,UAAS;EAGP;IAGAI,IAAA,eAAO;IAAAC,KAAA,EACL,OAAM;IAAKC,OAAA,EACT;IAAAC,SACAA,CAAAC,IAAA,EAAAC,EAAA;MAAA,IACF,GAAAN,QAAA,CAAAO,IAAA,WAAAC,CAAA;QAAA,OACKF,EAAA,CAAAG,QAAA,CAAAD,CAAA;MAAA,EACP,eAAAE,IAAA,CAAAJ,EAAA,MAAAD,IAAA,CAAAI,QAAA,gCACF;QACFJ,IAAA,EAAAA,IAAA,CAAAM,OAAA;QACFC,GAAA;MAEA,CAAS;IACP;EACA;AACF;AAEO,SAASC,iBAAaA,CAAAC,IAAA,EAAgCC,GAAa;EACxE,IAAAC,GAAM,GAAAvB,QAAM,CAAAsB,GAAQ,EAAAD,IAAO;EAE3B,OAAIE,GAAA,KACA,OAAAA,GACA,CAAAC,UAAA,WAAAzB,UAAA,CAAAwB,GAAA;AAEJ;AACW,SACFE,aAAA;EAAA,IACLC,OAAO,GAAArB,SAAQ,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAsB,YAAA;IAAAL,GAAA,IAAAK,YAAA,GAAAD,OAAA,CAAAJ,GAAA,cAAAK,YAAA,cAAAA,YAAA;IAAAC,OAAA;IAAAC,SAAA;IAAAC,UAAA;IAAAC,WAAA,YAAAA,CAAAC,MAAA;MACf,OAAA9B,QAAA;QACDoB,GAAA,EAAAM,OAAA;QAEHK,KAAO,EAAAP,OAAA,CAAAO,KAAA;QACLD;MAAA,EACE;IAAM;EACC,OAEP,CACE;IAGFxB,IAAA;IAEAC,KAAA,EAAM;IACJyB,cAAaA,CAAAC,MAAA;MACfP,OAAA,GAAA3B,OAAA,CAAAkC,MAAA,CAAAC,IAAA,EAAAd,GAAA,GAAAO,SAAA,GAAA5B,OAAA,CAAA2B,OAAA,aAAAE,UAAA,GAAA7B,OAAA,CAAA2B,OAAA;IAEA;IACE,MAAIS,UAAQA,CAAA;MAEZX,OAAM,CAAAY,eAAiB,WAAiBP,WAAA;IACtC;IAEyBQ,eAE3BA,CAAAC,MAAA;MAEA,KAAAd,OAAO,CAAAY,eAAqB;QAG9B,IAAAG,OAAA,kBAAAA,CAAApB,IAAA;UACF,UAAAJ,IAAA,CAAAI,IAAA,MAAAD,iBAAA,CAAAC,IAAA,EAAAQ,SAAA,KAAAT,iBAAA,CAAAC,IAAA,EAAAS,UAAA,aAAAC,WAAA;QAEA;QACES,MAAM,CAAAE,OAAA,CAAAC,EAAA,WAAAF,OAAA,GAAAD,MAAA,CAAAE,OAAA,CAAAC,EAAA,QAAAF,OAAA,GAAAD,MAAA,CAAAE,OAAA,CAAAC,EAAA,WAAAF,OAAA;MACN;IAEA;EACE,GAAkC;IAGpCjC,IAAA,EAAM,eAAa;IACjBC,KAAK,SAAQ;IACfyB,eAAAC,MAAA;MACFP,OAAA,GAAA3B,OAAA,CAAAkC,MAAA,CAAAC,IAAA,EAAAd,GAAA;IAEA;IACF,MAAAe,WAAA;MACFX,OAAA,CAAAY,eAAA,WAAAP,WAAA;IAEa;EAIN,G","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.1.22",
3
+ "version": "0.1.23",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "source": "src/index.ts",
@@ -69,7 +69,7 @@
69
69
  }
70
70
  },
71
71
  "dependencies": {
72
- "@take-out/helpers": "0.1.22",
72
+ "@take-out/helpers": "0.1.23",
73
73
  "@sinclair/typebox-codegen": "^0.11.1",
74
74
  "chokidar": "^4.0.3",
75
75
  "citty": "^0.1.6",
package/readme.md CHANGED
@@ -364,35 +364,6 @@ bun on-zero generate ./app/data
364
364
  bun on-zero generate --after "bun lint:fix"
365
365
  ```
366
366
 
367
- **`on-zero generate-queries <dir>`**
368
-
369
- generates query validators from TypeScript query functions. this is included in
370
- `generate` but can be run standalone.
371
-
372
- - parses exported arrow functions from `.ts` files in the queries directory
373
- - extracts parameter types using TypeScript compiler API
374
- - generates valibot schemas using typebox-codegen
375
-
376
- **example:**
377
-
378
- ```bash
379
- bun on-zero generate-queries src/data/queries
380
- ```
381
-
382
- ### what gets generated
383
-
384
- **models.ts:**
385
-
386
- ```ts
387
- import * as channel from '~/data/models/channel'
388
- import * as message from '~/data/models/message'
389
-
390
- export const models = {
391
- channel,
392
- message,
393
- }
394
- ```
395
-
396
367
  **types.ts:**
397
368
 
398
369
  ```ts