@metaobjectsdev/migrate-ts 0.5.0-rc.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.
- package/LICENSE +189 -0
- package/README.md +73 -0
- package/dist/diff/index.d.ts +30 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +226 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/rename-heuristic.d.ts +23 -0
- package/dist/diff/rename-heuristic.d.ts.map +1 -0
- package/dist/diff/rename-heuristic.js +236 -0
- package/dist/diff/rename-heuristic.js.map +1 -0
- package/dist/diff/status.d.ts +8 -0
- package/dist/diff/status.d.ts.map +1 -0
- package/dist/diff/status.js +53 -0
- package/dist/diff/status.js.map +1 -0
- package/dist/emit/index.d.ts +17 -0
- package/dist/emit/index.d.ts.map +1 -0
- package/dist/emit/index.js +18 -0
- package/dist/emit/index.js.map +1 -0
- package/dist/emit/postgres.d.ts +3 -0
- package/dist/emit/postgres.d.ts.map +1 -0
- package/dist/emit/postgres.js +181 -0
- package/dist/emit/postgres.js.map +1 -0
- package/dist/emit/sqlite.d.ts +3 -0
- package/dist/emit/sqlite.d.ts.map +1 -0
- package/dist/emit/sqlite.js +302 -0
- package/dist/emit/sqlite.js.map +1 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +54 -0
- package/dist/errors.js.map +1 -0
- package/dist/expected-schema.d.ts +15 -0
- package/dist/expected-schema.d.ts.map +1 -0
- package/dist/expected-schema.js +243 -0
- package/dist/expected-schema.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/introspect/index.d.ts +6 -0
- package/dist/introspect/index.d.ts.map +1 -0
- package/dist/introspect/index.js +11 -0
- package/dist/introspect/index.js.map +1 -0
- package/dist/introspect/postgres.d.ts +57 -0
- package/dist/introspect/postgres.d.ts.map +1 -0
- package/dist/introspect/postgres.js +339 -0
- package/dist/introspect/postgres.js.map +1 -0
- package/dist/introspect/sqlite.d.ts +4 -0
- package/dist/introspect/sqlite.d.ts.map +1 -0
- package/dist/introspect/sqlite.js +192 -0
- package/dist/introspect/sqlite.js.map +1 -0
- package/dist/source-aware-diff.d.ts +20 -0
- package/dist/source-aware-diff.d.ts.map +1 -0
- package/dist/source-aware-diff.js +24 -0
- package/dist/source-aware-diff.js.map +1 -0
- package/dist/sql-type.d.ts +45 -0
- package/dist/sql-type.d.ts.map +1 -0
- package/dist/sql-type.js +76 -0
- package/dist/sql-type.js.map +1 -0
- package/dist/types.d.ts +223 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/view-ddl-postgres.d.ts +4 -0
- package/dist/view-ddl-postgres.d.ts.map +1 -0
- package/dist/view-ddl-postgres.js +13 -0
- package/dist/view-ddl-postgres.js.map +1 -0
- package/dist/view-ddl-sqlite.d.ts +3 -0
- package/dist/view-ddl-sqlite.d.ts.map +1 -0
- package/dist/view-ddl-sqlite.js +7 -0
- package/dist/view-ddl-sqlite.js.map +1 -0
- package/dist/view-diff.d.ts +13 -0
- package/dist/view-diff.d.ts.map +1 -0
- package/dist/view-diff.js +42 -0
- package/dist/view-diff.js.map +1 -0
- package/dist/write-migration.d.ts +19 -0
- package/dist/write-migration.d.ts.map +1 -0
- package/dist/write-migration.js +34 -0
- package/dist/write-migration.js.map +1 -0
- package/package.json +50 -0
- package/src/diff/index.ts +294 -0
- package/src/diff/rename-heuristic.ts +265 -0
- package/src/diff/status.ts +55 -0
- package/src/emit/index.ts +38 -0
- package/src/emit/postgres.ts +189 -0
- package/src/emit/sqlite.ts +322 -0
- package/src/errors.ts +58 -0
- package/src/expected-schema.ts +326 -0
- package/src/index.ts +49 -0
- package/src/introspect/index.ts +14 -0
- package/src/introspect/postgres.ts +428 -0
- package/src/introspect/sqlite.ts +216 -0
- package/src/source-aware-diff.ts +49 -0
- package/src/sql-type.ts +91 -0
- package/src/types.ts +174 -0
- package/src/view-ddl-postgres.ts +15 -0
- package/src/view-ddl-sqlite.ts +7 -0
- package/src/view-diff.ts +55 -0
- package/src/write-migration.ts +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expected-schema.js","sourceRoot":"","sources":["../src/expected-schema.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,GACxD,MAAM,0BAA0B,CAAC;AAkBlC,MAAM,UAAU,mBAAmB,CACjC,IAAc,EACd,IAAiC;IAEjC,yDAAyD;IACzD,QAAQ;IACR,0CAA0C;IAC1C,uCAAuC;IACvC,sFAAsF;IACtF,MAAM,QAAQ,GAAgD,EAAE,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACzC,IAAI,KAAK,CAAC,UAAU;YAAE,SAAS;QAC/B,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;YAAE,SAAS;QACxC,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,sBAAsB,CACtE,CAAC;QACF,IAAI,aAAa;YAAE,SAAS;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAmB,EAAE,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAEjF,qDAAqD;IACrD,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,MAAM,GAAsB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;QACvE,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAgB,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,kDAAkD;IAClD,IAAI,IAAI,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChC,GAAG,CAAC,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,IAAI,IAAI,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,qDAAqD,KAAK,CAAC,IAAI,uBAAuB,KAAK,CAAC,MAAM,GAAG,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACvC,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,KAAK,SAAS;YACZ,0EAA0E;YAC1E,0EAA0E;YAC1E,qDAAqD;YACrD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACvC;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,MAAkB,EAClB,SAAiB,EACjB,kBAA8D,EAC9D,IAAc;IAEd,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAE5C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAE,UAAU,CAAC,OAAO,CAAC,wBAAwB,CAAwB;QACtE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO;QACP,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC;QACjD,WAAW,EAAE,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,CAAC;QAC1E,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAkB,EAAE,SAAiB;IAClE,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,8EAA8E;IAC9E,2EAA2E;IAC3E,4EAA4E;IAC5E,oDAAoD;IACpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,IAAI;YAAE,SAAS;QACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,SAAS,IAAI,OAAO,SAAS;YACtC,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IACtF,6EAA6E;IAC7E,4CAA4C;IAC5C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,UAAU,KAAK,KAAK;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAkB,EAClB,SAAiB,EACjB,kBAA8D,EAC9D,IAAc;IAEd,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACpD,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,SAAS;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC3C,IAAI,YAAY,KAAK,SAAS;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,OAAO,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,0EAA0E;QAC1E,qCAAqC;QACrC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnD,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAE5D,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK;YACpC,OAAO,EAAE,MAAM;YACf,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,qBAAqB,GAAG;IAC5B,sBAAsB;IACtB,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,MAAM,EAA8B,yBAAyB;CAC9D,CAAC;AAEF,SAAS,WAAW,CAClB,KAAe,EACf,IAAa,EACb,YAAgC;IAEhC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,OAAO,KAAK,0BAA0B,CAC7E,CAAC;IACF,MAAM,UAAU,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,IAAI,oBAAoB,CAAC;IAC5F,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErD,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;QAC9B,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;KAC/B,CAAC;IAEF,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACzE,CAAC;SAAM,IAAI,OAAO,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC7E,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,WAAW,IAAI,YAAY,KAAK,MAAM,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;IAC9B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,oBAAoB,CAAC,CAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC;QACzB,KAAK,kBAAkB,CAAC,CAAM,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnE,KAAK,kBAAkB,CAAC;QACxB,KAAK,sBAAsB,CAAC,CAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnE,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC,CAAK,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,KAAK,qBAAqB,CAAC,CAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzD,KAAK,qBAAqB,CAAC,CAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzD,KAAK,kBAAkB,CAAC,CAAM,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,KAAK,kBAAkB,CAAC,CAAM,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,gCAAgC;QACvF,KAAK,uBAAuB,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAChF,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC,CAAK,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,OAAO,CAAC,CAAsB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,0BAA0B;IACnF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAkB;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,6EAA6E;QAC7E,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,MAAkB,EAAE,IAAY;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC;SACL,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,WAAW,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { buildExpectedSchema } from "./expected-schema.js";
|
|
2
|
+
export { introspect, introspectPostgres, introspectSqlite } from "./introspect/index.js";
|
|
3
|
+
export { diff } from "./diff/index.js";
|
|
4
|
+
export { emit } from "./emit/index.js";
|
|
5
|
+
export { writeMigration } from "./write-migration.js";
|
|
6
|
+
export { BlockedChangesError } from "./errors.js";
|
|
7
|
+
export { isWidening, sqlTypeEquals } from "./sql-type.js";
|
|
8
|
+
export type { SqlType } from "./sql-type.js";
|
|
9
|
+
export type { SchemaSnapshot, SnapshotMeta, TableDescriptor, ColumnDescriptor, IndexDescriptor, FkDescriptor, ColumnDefault, ViewDescriptor, FkAction, Change, ChangeKind, ChangeStatus, AllowOptions, AmbiguousChange, AmbiguousResolution, AmbiguousCallback, DiffResult, EmitResult, Dialect, } from "./types.js";
|
|
10
|
+
export type { DiffArgs } from "./diff/index.js";
|
|
11
|
+
export type { EmitOptions } from "./emit/index.js";
|
|
12
|
+
export type { WriteMigrationOptions, WriteMigrationResult } from "./write-migration.js";
|
|
13
|
+
export { classifyViewDiff } from "./view-diff.js";
|
|
14
|
+
export type { ViewShape, ViewDiffClass, ViewMigrationOpts } from "./view-diff.js";
|
|
15
|
+
export { emitPostgresViewMigration } from "./view-ddl-postgres.js";
|
|
16
|
+
export { emitSqliteViewMigration } from "./view-ddl-sqlite.js";
|
|
17
|
+
export { computeViewMigrations, type ViewMigrationInput, type ViewMigrationsOpts, type ViewMigrationsResult, } from "./source-aware-diff.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG1D,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EACV,cAAc,EAAE,YAAY,EAC5B,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAC/E,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,UAAU,EAAE,YAAY,EAChC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EACrE,UAAU,EAAE,UAAU,EAAE,OAAO,GAChC,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Public API surface for @metaobjectsdev/migrate-ts v0.1.0
|
|
2
|
+
//
|
|
3
|
+
// Architecture: pure pipeline — buildExpectedSchema(metadata) +
|
|
4
|
+
// introspect(db, dialect) → SchemaSnapshot; diff(expected, actual, opts)
|
|
5
|
+
// → Change[]; emit(changes, opts) → { up, down }; writeMigration(...)
|
|
6
|
+
// writes the pair to disk.
|
|
7
|
+
//
|
|
8
|
+
// See docs/specs/2026-05-11-v0.2-sp4-migrate-ts-design.md.
|
|
9
|
+
// Pipeline functions
|
|
10
|
+
export { buildExpectedSchema } from "./expected-schema.js";
|
|
11
|
+
export { introspect, introspectPostgres, introspectSqlite } from "./introspect/index.js";
|
|
12
|
+
export { diff } from "./diff/index.js";
|
|
13
|
+
export { emit } from "./emit/index.js";
|
|
14
|
+
export { writeMigration } from "./write-migration.js";
|
|
15
|
+
// Errors
|
|
16
|
+
export { BlockedChangesError } from "./errors.js";
|
|
17
|
+
// SqlType helpers (rarely needed but useful for advanced consumers)
|
|
18
|
+
export { isWidening, sqlTypeEquals } from "./sql-type.js";
|
|
19
|
+
// View diff + dialect emitters
|
|
20
|
+
export { classifyViewDiff } from "./view-diff.js";
|
|
21
|
+
export { emitPostgresViewMigration } from "./view-ddl-postgres.js";
|
|
22
|
+
export { emitSqliteViewMigration } from "./view-ddl-sqlite.js";
|
|
23
|
+
// View migrations orchestrator
|
|
24
|
+
export { computeViewMigrations, } from "./source-aware-diff.js";
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,gEAAgE;AAChE,yEAAyE;AACzE,sEAAsE;AACtE,2BAA2B;AAC3B,EAAE;AACF,2DAA2D;AAE3D,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oEAAoE;AACpE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgB1D,+BAA+B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,+BAA+B;AAC/B,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import type { Dialect, SchemaSnapshot } from "../types.js";
|
|
3
|
+
export { introspectPostgres } from "./postgres.js";
|
|
4
|
+
export { introspectSqlite } from "./sqlite.js";
|
|
5
|
+
export declare function introspect(db: Kysely<Record<string, unknown>>, dialect: Dialect): Promise<SchemaSnapshot>;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAK/G"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { introspectPostgres } from "./postgres.js";
|
|
2
|
+
import { introspectSqlite } from "./sqlite.js";
|
|
3
|
+
export { introspectPostgres } from "./postgres.js";
|
|
4
|
+
export { introspectSqlite } from "./sqlite.js";
|
|
5
|
+
export async function introspect(db, dialect) {
|
|
6
|
+
switch (dialect) {
|
|
7
|
+
case "postgres": return introspectPostgres(db);
|
|
8
|
+
case "sqlite": return introspectSqlite(db);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/introspect/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAmC,EAAE,OAAgB;IACpF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,QAAQ,CAAC,CAAG,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Postgres introspection — stage 2 of the migration pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Produces a SchemaSnapshot from a live Kysely<Record<string, unknown>> pointing at a Postgres
|
|
5
|
+
* (or pg-mem) database.
|
|
6
|
+
*
|
|
7
|
+
* Design notes:
|
|
8
|
+
* - We deliberately avoid Kysely's built-in db.introspection.getTables() because
|
|
9
|
+
* it uses the `!~` regex operator in its internal query, which pg-mem (v3) does
|
|
10
|
+
* not support. We read information_schema directly via raw SQL instead.
|
|
11
|
+
* - Primary keys come from information_schema.table_constraints +
|
|
12
|
+
* key_column_usage. Real Postgres returns rows; pg-mem (v3) returns empty rows
|
|
13
|
+
* for both views — so PK tests are gated on MIGRATE_TS_PG_URL in the test file.
|
|
14
|
+
* - Default values come from information_schema.columns.column_default. pg-mem
|
|
15
|
+
* always returns null for this column, so default tests are gated too.
|
|
16
|
+
* - Type normalization (pgTypeToSqlType) is exported so it can be unit-tested
|
|
17
|
+
* without a live DB.
|
|
18
|
+
*
|
|
19
|
+
* pg-mem gaps (documented here, gated in the test file):
|
|
20
|
+
* - information_schema.columns.character_maximum_length → always null
|
|
21
|
+
* - information_schema.columns.column_default → always null
|
|
22
|
+
* - information_schema.table_constraints / key_column_usage → empty rows
|
|
23
|
+
* - bigserial appears as "integer" (no sequence differentiation)
|
|
24
|
+
* - array_position() not implemented → pg_index catalog query throws;
|
|
25
|
+
* readPgIndexes() catches and returns [] on pg-mem
|
|
26
|
+
* - information_schema.referential_constraints not supported →
|
|
27
|
+
* readPgForeignKeys() catches and returns [] on pg-mem
|
|
28
|
+
*/
|
|
29
|
+
import type { Kysely } from "kysely";
|
|
30
|
+
import type { SchemaSnapshot, ColumnDefault } from "../types.js";
|
|
31
|
+
import type { SqlType } from "../sql-type.js";
|
|
32
|
+
export declare function introspectPostgres(db: Kysely<Record<string, unknown>>): Promise<SchemaSnapshot>;
|
|
33
|
+
/**
|
|
34
|
+
* Normalise a PG column data type string into a canonical SqlType.
|
|
35
|
+
* The `dataType` string comes from information_schema.columns.data_type (or
|
|
36
|
+
* occasionally from information_schema.columns.udt_name). Both are lower-cased
|
|
37
|
+
* before matching.
|
|
38
|
+
*
|
|
39
|
+
* If character_maximum_length is available, callers should pass `maxLength`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function pgTypeToSqlType(dataType: string, maxLength?: number | null): SqlType;
|
|
42
|
+
/**
|
|
43
|
+
* Parse a raw PG column_default string into a ColumnDefault.
|
|
44
|
+
* Returns undefined if the default is absent or empty.
|
|
45
|
+
*
|
|
46
|
+
* Classification rules:
|
|
47
|
+
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME,
|
|
48
|
+
* nextval(...), and any value that starts with a non-quote character and
|
|
49
|
+
* contains a `::` cast (i.e. bare identifier with cast, like `NULL::text`).
|
|
50
|
+
* - Literals: `'value'` (optionally followed by `::type` cast, which PG
|
|
51
|
+
* commonly appends for clarity). The cast is stripped; the value is unquoted.
|
|
52
|
+
*
|
|
53
|
+
* PG stores literal booleans as `'true'::boolean`, integers as `'42'::integer`,
|
|
54
|
+
* strings as `'hello'::text` — all are literals after stripping the cast.
|
|
55
|
+
*/
|
|
56
|
+
export declare function parsePgDefault(raw: string | null | undefined): ColumnDefault | undefined;
|
|
57
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAqC,aAAa,EAA2D,MAAM,aAAa,CAAC;AAC7J,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBrG;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAkEpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAgCxF"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Public API
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
export async function introspectPostgres(db) {
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
const k = db;
|
|
8
|
+
const tableRefs = await readTableNames(k);
|
|
9
|
+
const tables = [];
|
|
10
|
+
for (const { schema, name } of tableRefs) {
|
|
11
|
+
const columns = await readColumns(k, schema, name);
|
|
12
|
+
const primaryKey = await readPrimaryKey(k, schema, name);
|
|
13
|
+
tables.push({
|
|
14
|
+
name,
|
|
15
|
+
schema,
|
|
16
|
+
columns,
|
|
17
|
+
indexes: await readPgIndexes(k, schema, name),
|
|
18
|
+
foreignKeys: await readPgForeignKeys(k, schema, name),
|
|
19
|
+
primaryKey,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const views = await readPgViews(k);
|
|
23
|
+
return {
|
|
24
|
+
tables,
|
|
25
|
+
views,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Helpers — all exported so they can be tested in isolation
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Normalise a PG column data type string into a canonical SqlType.
|
|
33
|
+
* The `dataType` string comes from information_schema.columns.data_type (or
|
|
34
|
+
* occasionally from information_schema.columns.udt_name). Both are lower-cased
|
|
35
|
+
* before matching.
|
|
36
|
+
*
|
|
37
|
+
* If character_maximum_length is available, callers should pass `maxLength`.
|
|
38
|
+
*/
|
|
39
|
+
export function pgTypeToSqlType(dataType, maxLength) {
|
|
40
|
+
const dt = dataType.toLowerCase().trim();
|
|
41
|
+
// Length-bearing text types — may arrive as "character varying(255)" (full
|
|
42
|
+
// inline) or as bare "character varying" with maxLength from a separate column.
|
|
43
|
+
const varcharMatch = /^(?:character varying|varchar)\((\d+)\)$/.exec(dt);
|
|
44
|
+
if (varcharMatch) {
|
|
45
|
+
return { kind: "text", maxLength: parseInt(varcharMatch[1] ?? "0", 10) };
|
|
46
|
+
}
|
|
47
|
+
if (dt === "character varying" || dt === "varchar") {
|
|
48
|
+
return maxLength != null ? { kind: "text", maxLength } : { kind: "text" };
|
|
49
|
+
}
|
|
50
|
+
if (dt === "text") {
|
|
51
|
+
return { kind: "text" };
|
|
52
|
+
}
|
|
53
|
+
// Integer types — serial variants are also covered here; callers supply
|
|
54
|
+
// identity=increment separately via a sequence check.
|
|
55
|
+
if (dt === "int8" || dt === "bigint" || dt === "bigserial") {
|
|
56
|
+
return { kind: "integer", bits: 64 };
|
|
57
|
+
}
|
|
58
|
+
if (dt === "int4" || dt === "integer" || dt === "serial" ||
|
|
59
|
+
dt === "int2" || dt === "smallint" || dt === "smallserial" ||
|
|
60
|
+
dt === "int") {
|
|
61
|
+
return { kind: "integer", bits: 32 };
|
|
62
|
+
}
|
|
63
|
+
// Floating-point
|
|
64
|
+
if (dt === "float4" || dt === "real")
|
|
65
|
+
return { kind: "real" };
|
|
66
|
+
if (dt === "float8" || dt === "double precision")
|
|
67
|
+
return { kind: "real" };
|
|
68
|
+
// Arbitrary-precision numeric — "numeric(p,s)" or bare "numeric"/"decimal"
|
|
69
|
+
const numMatch = /^(?:numeric|decimal)(?:\((\d+)(?:,\s*(\d+))?\))?$/.exec(dt);
|
|
70
|
+
if (numMatch) {
|
|
71
|
+
const out = { kind: "numeric" };
|
|
72
|
+
if (numMatch[1])
|
|
73
|
+
out.precision = parseInt(numMatch[1], 10);
|
|
74
|
+
if (numMatch[2])
|
|
75
|
+
out.scale = parseInt(numMatch[2], 10);
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
// Boolean
|
|
79
|
+
if (dt === "bool" || dt === "boolean")
|
|
80
|
+
return { kind: "boolean" };
|
|
81
|
+
// Date + time
|
|
82
|
+
if (dt === "date")
|
|
83
|
+
return { kind: "date" };
|
|
84
|
+
if (dt === "timestamp" || dt === "timestamp without time zone") {
|
|
85
|
+
return { kind: "timestamp", withTimezone: false };
|
|
86
|
+
}
|
|
87
|
+
if (dt === "timestamptz" || dt === "timestamp with time zone") {
|
|
88
|
+
return { kind: "timestamp", withTimezone: true };
|
|
89
|
+
}
|
|
90
|
+
// JSON
|
|
91
|
+
if (dt === "json" || dt === "jsonb")
|
|
92
|
+
return { kind: "json" };
|
|
93
|
+
// Binary
|
|
94
|
+
if (dt === "bytea")
|
|
95
|
+
return { kind: "blob" };
|
|
96
|
+
// UUID
|
|
97
|
+
if (dt === "uuid")
|
|
98
|
+
return { kind: "uuid" };
|
|
99
|
+
// Unknown types (user-defined enums, citext, ltree, etc.) fall back to text
|
|
100
|
+
// so we don't blow up on unrecognised types.
|
|
101
|
+
return { kind: "text" };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parse a raw PG column_default string into a ColumnDefault.
|
|
105
|
+
* Returns undefined if the default is absent or empty.
|
|
106
|
+
*
|
|
107
|
+
* Classification rules:
|
|
108
|
+
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME,
|
|
109
|
+
* nextval(...), and any value that starts with a non-quote character and
|
|
110
|
+
* contains a `::` cast (i.e. bare identifier with cast, like `NULL::text`).
|
|
111
|
+
* - Literals: `'value'` (optionally followed by `::type` cast, which PG
|
|
112
|
+
* commonly appends for clarity). The cast is stripped; the value is unquoted.
|
|
113
|
+
*
|
|
114
|
+
* PG stores literal booleans as `'true'::boolean`, integers as `'42'::integer`,
|
|
115
|
+
* strings as `'hello'::text` — all are literals after stripping the cast.
|
|
116
|
+
*/
|
|
117
|
+
export function parsePgDefault(raw) {
|
|
118
|
+
if (raw === undefined || raw === null || raw === "")
|
|
119
|
+
return undefined;
|
|
120
|
+
// Function-call or keyword expressions
|
|
121
|
+
if (/^now\(\)$/i.test(raw) ||
|
|
122
|
+
/^current_timestamp\b/i.test(raw) ||
|
|
123
|
+
/^current_date\b/i.test(raw) ||
|
|
124
|
+
/^current_time\b/i.test(raw) ||
|
|
125
|
+
/^nextval\(/i.test(raw)) {
|
|
126
|
+
return { kind: "expr", value: raw };
|
|
127
|
+
}
|
|
128
|
+
// If it starts with a single-quote, it's a quoted literal (possibly with
|
|
129
|
+
// a trailing ::type cast that PG appends for type clarity).
|
|
130
|
+
if (raw.startsWith("'")) {
|
|
131
|
+
// Strip the cast suffix (e.g. `::boolean`, `::text`, `::integer`)
|
|
132
|
+
const withoutCast = raw.replace(/::[^']+$/, "");
|
|
133
|
+
// Strip the surrounding single-quotes
|
|
134
|
+
const cleaned = withoutCast.replace(/^'(.*)'$/, "$1");
|
|
135
|
+
return { kind: "literal", value: cleaned };
|
|
136
|
+
}
|
|
137
|
+
// Anything else that contains a :: cast is a complex expression
|
|
138
|
+
// (e.g. NULL::text, ARRAY[]::text[])
|
|
139
|
+
if (/::/g.test(raw)) {
|
|
140
|
+
return { kind: "expr", value: raw };
|
|
141
|
+
}
|
|
142
|
+
// Bare literal (no quotes, no cast)
|
|
143
|
+
return { kind: "literal", value: raw };
|
|
144
|
+
}
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
146
|
+
async function readTableNames(k) {
|
|
147
|
+
const rows = await sql `
|
|
148
|
+
SELECT table_name, table_schema
|
|
149
|
+
FROM information_schema.tables
|
|
150
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
151
|
+
AND table_schema NOT LIKE 'pg_%'
|
|
152
|
+
AND table_type = 'BASE TABLE'
|
|
153
|
+
ORDER BY table_schema, table_name
|
|
154
|
+
`.execute(k);
|
|
155
|
+
return rows.rows.map((r) => ({ schema: r.table_schema, name: r.table_name }));
|
|
156
|
+
}
|
|
157
|
+
async function readPgViews(k) {
|
|
158
|
+
// pg-mem gap: information_schema.views is not supported — the query throws
|
|
159
|
+
// "relation views does not exist". We catch and return [] so other tests
|
|
160
|
+
// still pass on pg-mem. Real PG (Postgres 16) handles this correctly.
|
|
161
|
+
try {
|
|
162
|
+
const rows = await sql `
|
|
163
|
+
SELECT table_name, table_schema FROM information_schema.views
|
|
164
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
165
|
+
AND table_schema NOT LIKE 'pg_%'
|
|
166
|
+
ORDER BY table_schema, table_name
|
|
167
|
+
`.execute(k);
|
|
168
|
+
return rows.rows.map((r) => ({ name: r.table_name, schema: r.table_schema }));
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// pg-mem: information_schema.views not supported — return empty view list.
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
176
|
+
async function readColumns(k, schema, tableName) {
|
|
177
|
+
const rows = await sql `
|
|
178
|
+
SELECT
|
|
179
|
+
column_name,
|
|
180
|
+
data_type,
|
|
181
|
+
udt_name,
|
|
182
|
+
character_maximum_length,
|
|
183
|
+
is_nullable,
|
|
184
|
+
column_default
|
|
185
|
+
FROM information_schema.columns
|
|
186
|
+
WHERE table_schema = ${schema}
|
|
187
|
+
AND table_name = ${tableName}
|
|
188
|
+
ORDER BY ordinal_position
|
|
189
|
+
`.execute(k);
|
|
190
|
+
return rows.rows.map((r) => {
|
|
191
|
+
const sqlType = pgTypeToSqlType(r.data_type, r.character_maximum_length);
|
|
192
|
+
const col = {
|
|
193
|
+
name: r.column_name,
|
|
194
|
+
sqlType,
|
|
195
|
+
nullable: r.is_nullable === "YES",
|
|
196
|
+
};
|
|
197
|
+
const def = parsePgDefault(r.column_default);
|
|
198
|
+
if (def !== undefined)
|
|
199
|
+
col.default = def;
|
|
200
|
+
// Detect auto-increment (sequence) columns — real PG surfaces bigserial /
|
|
201
|
+
// serial as nextval(...) in column_default. We also check udt_name for
|
|
202
|
+
// explicit serial type names as a belt-and-suspenders guard.
|
|
203
|
+
const isSerial = (r.column_default !== null && /^nextval\(/i.test(r.column_default)) ||
|
|
204
|
+
/^(?:bigserial|serial8|serial4|serial|smallserial|serial2)$/i.test(r.udt_name);
|
|
205
|
+
if (isSerial)
|
|
206
|
+
col.identity = "increment";
|
|
207
|
+
return col;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
211
|
+
async function readPrimaryKey(k, schema, tableName) {
|
|
212
|
+
// Uses information_schema only — avoids pg_attribute / pg_constraint joins
|
|
213
|
+
// that are either missing or return empty in pg-mem.
|
|
214
|
+
const rows = await sql `
|
|
215
|
+
SELECT kcu.column_name, kcu.ordinal_position
|
|
216
|
+
FROM information_schema.table_constraints tc
|
|
217
|
+
JOIN information_schema.key_column_usage kcu
|
|
218
|
+
ON kcu.constraint_name = tc.constraint_name
|
|
219
|
+
AND kcu.table_schema = tc.table_schema
|
|
220
|
+
AND kcu.table_name = tc.table_name
|
|
221
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
222
|
+
AND tc.table_schema = ${schema}
|
|
223
|
+
AND tc.table_name = ${tableName}
|
|
224
|
+
ORDER BY kcu.ordinal_position
|
|
225
|
+
`.execute(k);
|
|
226
|
+
return rows.rows.map((r) => r.column_name);
|
|
227
|
+
}
|
|
228
|
+
async function readPgIndexes(k, schema, table) {
|
|
229
|
+
// pg-mem gap: array_position() is not implemented, so this query throws on
|
|
230
|
+
// pg-mem. We catch and return [] so non-index tests still pass against pg-mem.
|
|
231
|
+
// Real PG (Postgres 16) handles this correctly.
|
|
232
|
+
let rows;
|
|
233
|
+
try {
|
|
234
|
+
rows = await sql `
|
|
235
|
+
SELECT i.relname AS index_name,
|
|
236
|
+
ix.indisunique AS is_unique,
|
|
237
|
+
ix.indisprimary AS is_primary,
|
|
238
|
+
a.attname AS column_name,
|
|
239
|
+
array_position(ix.indkey, a.attnum) AS ordinal
|
|
240
|
+
FROM pg_index ix
|
|
241
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
242
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
243
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
244
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(ix.indkey)
|
|
245
|
+
WHERE n.nspname = ${schema}
|
|
246
|
+
AND t.relname = ${table}
|
|
247
|
+
ORDER BY i.relname, ordinal
|
|
248
|
+
`.execute(k);
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// pg-mem: array_position() not implemented — return empty index list.
|
|
252
|
+
return [];
|
|
253
|
+
}
|
|
254
|
+
const byName = new Map();
|
|
255
|
+
for (const r of rows.rows) {
|
|
256
|
+
let entry = byName.get(r.index_name);
|
|
257
|
+
if (!entry) {
|
|
258
|
+
entry = { isUnique: r.is_unique, isPrimary: r.is_primary, cols: [] };
|
|
259
|
+
byName.set(r.index_name, entry);
|
|
260
|
+
}
|
|
261
|
+
entry.cols.push(r.column_name);
|
|
262
|
+
}
|
|
263
|
+
return Array.from(byName.entries())
|
|
264
|
+
.filter(([, v]) => !v.isPrimary) // PK index excluded — PK lives in TableDescriptor.primaryKey
|
|
265
|
+
.map(([name, v]) => ({ name, columns: v.cols, unique: v.isUnique }));
|
|
266
|
+
}
|
|
267
|
+
async function readPgForeignKeys(k, schema, table) {
|
|
268
|
+
// pg-mem gap: information_schema.referential_constraints is not supported —
|
|
269
|
+
// the query returns empty rows or throws. We catch and return [] so other
|
|
270
|
+
// tests still pass on pg-mem. Real PG (Postgres 16) handles this correctly.
|
|
271
|
+
let rows;
|
|
272
|
+
try {
|
|
273
|
+
rows = await sql `
|
|
274
|
+
SELECT tc.constraint_name AS fk_name,
|
|
275
|
+
kcu.column_name,
|
|
276
|
+
ccu.table_name AS ref_table,
|
|
277
|
+
ccu.column_name AS ref_column,
|
|
278
|
+
rc.update_rule,
|
|
279
|
+
rc.delete_rule,
|
|
280
|
+
kcu.ordinal_position AS ordinal
|
|
281
|
+
FROM information_schema.table_constraints tc
|
|
282
|
+
JOIN information_schema.key_column_usage kcu
|
|
283
|
+
ON kcu.constraint_name = tc.constraint_name
|
|
284
|
+
AND kcu.table_schema = tc.table_schema
|
|
285
|
+
JOIN information_schema.referential_constraints rc
|
|
286
|
+
ON rc.constraint_name = tc.constraint_name
|
|
287
|
+
AND rc.constraint_schema = tc.table_schema
|
|
288
|
+
JOIN information_schema.constraint_column_usage ccu
|
|
289
|
+
ON ccu.constraint_name = tc.constraint_name
|
|
290
|
+
AND ccu.table_schema = tc.table_schema
|
|
291
|
+
WHERE tc.constraint_type = 'FOREIGN KEY'
|
|
292
|
+
AND tc.table_schema = ${schema}
|
|
293
|
+
AND tc.table_name = ${table}
|
|
294
|
+
ORDER BY tc.constraint_name, kcu.ordinal_position
|
|
295
|
+
`.execute(k);
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
// pg-mem: referential_constraints not supported — return empty FK list.
|
|
299
|
+
return [];
|
|
300
|
+
}
|
|
301
|
+
const byName = new Map();
|
|
302
|
+
for (const r of rows.rows) {
|
|
303
|
+
let entry = byName.get(r.fk_name);
|
|
304
|
+
if (!entry) {
|
|
305
|
+
entry = {
|
|
306
|
+
cols: [], refTable: r.ref_table, refCols: [],
|
|
307
|
+
onDelete: pgRuleToAction(r.delete_rule),
|
|
308
|
+
onUpdate: pgRuleToAction(r.update_rule),
|
|
309
|
+
};
|
|
310
|
+
byName.set(r.fk_name, entry);
|
|
311
|
+
}
|
|
312
|
+
entry.cols.push(r.column_name);
|
|
313
|
+
entry.refCols.push(r.ref_column);
|
|
314
|
+
}
|
|
315
|
+
return Array.from(byName.entries()).map(([name, v]) => {
|
|
316
|
+
const fk = {
|
|
317
|
+
name,
|
|
318
|
+
columns: v.cols,
|
|
319
|
+
refTable: v.refTable,
|
|
320
|
+
refColumns: v.refCols,
|
|
321
|
+
};
|
|
322
|
+
if (v.onDelete !== "no-action")
|
|
323
|
+
fk.onDelete = v.onDelete;
|
|
324
|
+
if (v.onUpdate !== "no-action")
|
|
325
|
+
fk.onUpdate = v.onUpdate;
|
|
326
|
+
return fk;
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
function pgRuleToAction(rule) {
|
|
330
|
+
const r = rule.toUpperCase();
|
|
331
|
+
if (r === "CASCADE")
|
|
332
|
+
return "cascade";
|
|
333
|
+
if (r === "SET NULL")
|
|
334
|
+
return "set-null";
|
|
335
|
+
if (r === "RESTRICT")
|
|
336
|
+
return "restrict";
|
|
337
|
+
return "no-action";
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/introspect/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,aAAa,CAAC;AAMrB,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAiCnG"}
|