neoorm 0.1.4 → 0.1.5

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 (110) hide show
  1. package/README.md +223 -12
  2. package/dist/bin/neoorm.js +50 -29
  3. package/dist/bin/neoorm.js.map +1 -1
  4. package/dist/codegen/diff-manifest.d.ts +4 -1
  5. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  6. package/dist/codegen/diff-manifest.js +85 -4
  7. package/dist/codegen/diff-manifest.js.map +1 -1
  8. package/dist/codegen/generate-summary.d.ts +21 -0
  9. package/dist/codegen/generate-summary.d.ts.map +1 -0
  10. package/dist/codegen/generate-summary.js +101 -0
  11. package/dist/codegen/generate-summary.js.map +1 -0
  12. package/dist/codegen/generate.d.ts +6 -1
  13. package/dist/codegen/generate.d.ts.map +1 -1
  14. package/dist/codegen/generate.js +21 -8
  15. package/dist/codegen/generate.js.map +1 -1
  16. package/dist/codegen/manifest-relations.d.ts.map +1 -1
  17. package/dist/codegen/manifest-relations.js +9 -2
  18. package/dist/codegen/manifest-relations.js.map +1 -1
  19. package/dist/codegen/schema-to-manifest.d.ts +4 -1
  20. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  21. package/dist/codegen/schema-to-manifest.js +58 -12
  22. package/dist/codegen/schema-to-manifest.js.map +1 -1
  23. package/dist/config.d.ts +1 -0
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js.map +1 -1
  26. package/dist/dialect/postgres.d.ts +3 -0
  27. package/dist/dialect/postgres.d.ts.map +1 -1
  28. package/dist/dialect/postgres.js +51 -1
  29. package/dist/dialect/postgres.js.map +1 -1
  30. package/dist/dialect/types.d.ts +12 -1
  31. package/dist/dialect/types.d.ts.map +1 -1
  32. package/dist/index.d.ts +5 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/introspect/queries.d.ts +5 -0
  37. package/dist/introspect/queries.d.ts.map +1 -1
  38. package/dist/introspect/queries.js +17 -0
  39. package/dist/introspect/queries.js.map +1 -1
  40. package/dist/introspect/to-manifest.d.ts.map +1 -1
  41. package/dist/introspect/to-manifest.js +58 -14
  42. package/dist/introspect/to-manifest.js.map +1 -1
  43. package/dist/migrate/runner.d.ts +21 -0
  44. package/dist/migrate/runner.d.ts.map +1 -1
  45. package/dist/migrate/runner.js +99 -6
  46. package/dist/migrate/runner.js.map +1 -1
  47. package/dist/plugins/builtin.d.ts +35 -2
  48. package/dist/plugins/builtin.d.ts.map +1 -1
  49. package/dist/plugins/builtin.js +312 -1
  50. package/dist/plugins/builtin.js.map +1 -1
  51. package/dist/plugins/registry.d.ts.map +1 -1
  52. package/dist/plugins/registry.js +3 -1
  53. package/dist/plugins/registry.js.map +1 -1
  54. package/dist/runtime/client.d.ts +3 -0
  55. package/dist/runtime/client.d.ts.map +1 -1
  56. package/dist/runtime/client.js +11 -12
  57. package/dist/runtime/client.js.map +1 -1
  58. package/dist/runtime/executor.d.ts +1 -0
  59. package/dist/runtime/executor.d.ts.map +1 -1
  60. package/dist/runtime/executor.js +27 -4
  61. package/dist/runtime/executor.js.map +1 -1
  62. package/dist/runtime/query/compile.d.ts +6 -1
  63. package/dist/runtime/query/compile.d.ts.map +1 -1
  64. package/dist/runtime/query/compile.js +38 -6
  65. package/dist/runtime/query/compile.js.map +1 -1
  66. package/dist/runtime/query/create.d.ts +7 -0
  67. package/dist/runtime/query/create.d.ts.map +1 -1
  68. package/dist/runtime/query/create.js +50 -104
  69. package/dist/runtime/query/create.js.map +1 -1
  70. package/dist/runtime/query/delete.d.ts.map +1 -1
  71. package/dist/runtime/query/delete.js +9 -3
  72. package/dist/runtime/query/delete.js.map +1 -1
  73. package/dist/runtime/query/find.d.ts.map +1 -1
  74. package/dist/runtime/query/find.js +15 -11
  75. package/dist/runtime/query/find.js.map +1 -1
  76. package/dist/runtime/query/primary-key.d.ts +11 -1
  77. package/dist/runtime/query/primary-key.d.ts.map +1 -1
  78. package/dist/runtime/query/primary-key.js +55 -0
  79. package/dist/runtime/query/primary-key.js.map +1 -1
  80. package/dist/runtime/query/relation-writes.d.ts +24 -0
  81. package/dist/runtime/query/relation-writes.d.ts.map +1 -0
  82. package/dist/runtime/query/relation-writes.js +325 -0
  83. package/dist/runtime/query/relation-writes.js.map +1 -0
  84. package/dist/runtime/query/unique.d.ts.map +1 -1
  85. package/dist/runtime/query/unique.js +1 -5
  86. package/dist/runtime/query/unique.js.map +1 -1
  87. package/dist/runtime/query/update.d.ts.map +1 -1
  88. package/dist/runtime/query/update.js +45 -28
  89. package/dist/runtime/query/update.js.map +1 -1
  90. package/dist/runtime/types.d.ts +3 -2
  91. package/dist/runtime/types.d.ts.map +1 -1
  92. package/dist/schema/column-where.d.ts +18 -15
  93. package/dist/schema/column-where.d.ts.map +1 -1
  94. package/dist/schema/column.d.ts +2 -2
  95. package/dist/schema/column.d.ts.map +1 -1
  96. package/dist/schema/column.js +1 -1
  97. package/dist/schema/column.js.map +1 -1
  98. package/dist/schema/index.d.ts +4 -4
  99. package/dist/schema/index.d.ts.map +1 -1
  100. package/dist/schema/index.js +1 -1
  101. package/dist/schema/index.js.map +1 -1
  102. package/dist/schema/nested-relation-types.d.ts +60 -0
  103. package/dist/schema/nested-relation-types.d.ts.map +1 -0
  104. package/dist/schema/nested-relation-types.js +2 -0
  105. package/dist/schema/nested-relation-types.js.map +1 -0
  106. package/dist/schema/relation-types.d.ts +122 -22
  107. package/dist/schema/relation-types.d.ts.map +1 -1
  108. package/dist/schema/types.d.ts +27 -38
  109. package/dist/schema/types.d.ts.map +1 -1
  110. package/package.json +1 -1
@@ -1,11 +1,24 @@
1
1
  import { toCamelCase } from "../utils/case.js";
2
2
  import { findIntrospectColumnType } from "../plugins/registry.js";
3
3
  import { pgStorageSqlType } from "../dialect/postgres.js";
4
- import { queryColumns, queryForeignKeys, queryIndexes, queryInstalledExtensions, queryPrimaryKeyColumns, queryTables, queryUniqueConstraints, } from "./queries.js";
4
+ import { queryColumns, queryForeignKeys, queryIndexes, queryInstalledExtensions, queryPrimaryKeyColumns, queryTables, queryUniqueConstraints, queryEnumTypes, } from "./queries.js";
5
5
  function tableAccessor(tableName) {
6
6
  return toCamelCase(tableName.endsWith("s") ? tableName : `${tableName}s`);
7
7
  }
8
- function pgTypeToKind(dataType, udtName) {
8
+ function isSerialColumn(dataType, columnDefault) {
9
+ if (dataType !== "integer") {
10
+ return false;
11
+ }
12
+ if (!columnDefault) {
13
+ return false;
14
+ }
15
+ return (columnDefault.includes("nextval(") ||
16
+ columnDefault.toLowerCase().includes("generated"));
17
+ }
18
+ function pgTypeToKind(dataType, udtName, enumTypes) {
19
+ if (enumTypes[udtName]) {
20
+ return "enum";
21
+ }
9
22
  const pluginType = findIntrospectColumnType(dataType, udtName);
10
23
  if (pluginType) {
11
24
  return pluginType.kind;
@@ -37,10 +50,24 @@ function parseDefaultValue(kind, columnDefault) {
37
50
  if (columnDefault === "false")
38
51
  return { defaultNow: false, defaultValue: false };
39
52
  }
40
- if (kind === "int") {
41
- const match = columnDefault.match(/^(-?\d+)/);
53
+ if (kind === "int" || kind === "decimal") {
54
+ const match = columnDefault.match(/^(-?\d+(?:\.\d+)?)/);
42
55
  if (match) {
43
- return { defaultNow: false, defaultValue: Number(match[1]) };
56
+ return { defaultNow: false, defaultValue: kind === "int" ? Number(match[1]) : match[1] };
57
+ }
58
+ }
59
+ if (kind === "json" || kind === "jsonb") {
60
+ const jsonMatch = columnDefault.match(/^'((?:''|[^'])*)'::/);
61
+ if (jsonMatch) {
62
+ try {
63
+ return {
64
+ defaultNow: false,
65
+ defaultValue: JSON.parse(jsonMatch[1].replace(/''/g, "'")),
66
+ };
67
+ }
68
+ catch {
69
+ return { defaultNow: false };
70
+ }
44
71
  }
45
72
  }
46
73
  const stringMatch = columnDefault.match(/^'((?:''|[^'])*)'::/);
@@ -95,7 +122,7 @@ function filterConstraintBackedIndexes(indexes, columns) {
95
122
  return !uniqueColumns.has(index.columns[0]);
96
123
  });
97
124
  }
98
- async function introspectTable(pool, tableName) {
125
+ async function introspectTable(pool, tableName, enumTypes) {
99
126
  const [columns, fks, indexRows, uniqueRows, primaryKey] = await Promise.all([
100
127
  queryColumns(pool, tableName),
101
128
  queryForeignKeys(pool, tableName),
@@ -111,7 +138,9 @@ async function introspectTable(pool, tableName) {
111
138
  const fk = fkMap.get(col.column_name);
112
139
  const nullable = col.is_nullable === "YES";
113
140
  const uniqueConstraintName = uniqueMap.get(col.column_name);
114
- const defaults = parseDefaultValue(fk ? "fk" : pgTypeToKind(col.data_type, col.udt_name), col.column_default);
141
+ const defaults = parseDefaultValue(fk ? "fk" : isSerialColumn(col.data_type, col.column_default)
142
+ ? "serial"
143
+ : pgTypeToKind(col.data_type, col.udt_name, enumTypes), col.column_default);
115
144
  if (fk) {
116
145
  const onDelete = mapDeleteRule(fk.delete_rule);
117
146
  return {
@@ -132,11 +161,13 @@ async function introspectTable(pool, tableName) {
132
161
  ...(onDelete ? { onDelete } : {}),
133
162
  };
134
163
  }
135
- const kind = col.column_name === "id" && col.udt_name === "uuid"
136
- ? "uuid"
137
- : col.column_name === "id"
138
- ? "id"
139
- : pgTypeToKind(col.data_type, col.udt_name);
164
+ const kind = isSerialColumn(col.data_type, col.column_default)
165
+ ? "serial"
166
+ : col.column_name === "id" && col.udt_name === "uuid"
167
+ ? "uuid"
168
+ : col.column_name === "id"
169
+ ? "id"
170
+ : pgTypeToKind(col.data_type, col.udt_name, enumTypes);
140
171
  const column = {
141
172
  tsName,
142
173
  sqlName: col.column_name,
@@ -150,12 +181,19 @@ async function introspectTable(pool, tableName) {
150
181
  ? { defaultValue: defaults.defaultValue }
151
182
  : {}),
152
183
  ...(uniqueConstraintName ? { uniqueConstraintName } : {}),
184
+ ...(kind === "serial" ? { generated: true } : {}),
153
185
  };
154
186
  if (kind === "uuid" && col.column_default?.includes("gen_random_uuid")) {
155
187
  column.typeOptions = {
156
188
  version: col.column_default.includes("uuid_generate_v4()") ? 4 : 7,
157
189
  };
158
190
  }
191
+ if (kind === "enum" && enumTypes[col.udt_name]) {
192
+ column.typeOptions = {
193
+ values: enumTypes[col.udt_name],
194
+ nativeTypeName: col.udt_name,
195
+ };
196
+ }
159
197
  return column;
160
198
  });
161
199
  return {
@@ -170,16 +208,22 @@ async function introspectTable(pool, tableName) {
170
208
  export async function introspectToManifest(pool) {
171
209
  const tables = await queryTables(pool);
172
210
  const extensions = await queryInstalledExtensions(pool);
211
+ const enumTypes = await queryEnumTypes(pool);
173
212
  const manifestTables = {};
174
213
  for (const { table_name } of tables) {
175
- const table = await introspectTable(pool, table_name);
214
+ const table = await introspectTable(pool, table_name, enumTypes);
176
215
  manifestTables[table.accessor] = table;
177
216
  }
178
- const relevantExtensions = extensions.filter((ext) => ["postgis"].includes(ext));
217
+ const relevantExtensions = extensions.filter((ext) => ["postgis", "citext"].includes(ext));
218
+ const manifestEnumTypes = Object.fromEntries(Object.entries(enumTypes).map(([name, values]) => [name, { values }]));
179
219
  return {
180
220
  version: 1,
181
221
  tables: manifestTables,
182
222
  manyToMany: [],
223
+ enumMode: "native",
224
+ ...(Object.keys(manifestEnumTypes).length > 0
225
+ ? { enumTypes: manifestEnumTypes }
226
+ : {}),
183
227
  ...(relevantExtensions.length > 0
184
228
  ? { extensions: relevantExtensions }
185
229
  : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../src/introspect/to-manifest.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,SAAS,aAAa,CAAC,SAAiB;IACtC,OAAO,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,OAAe;IACrD,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACb,OAAO,KAAK,CAAC;QACf,KAAK,0BAA0B,CAAC;QAChC,KAAK,6BAA6B;YAChC,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA4B,EAC5B,aAA4B;IAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,aAAa,KAAK,MAAM;YAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC/E,IAAI,aAAa,KAAK,OAAO;YAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SAClD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,SAAmD;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC1B,GAAG,QAAQ;gBACX,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;aAChD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,OAAO,EAAE,GAAG,CAAC,UAAU;YACvB,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,SAAS;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,OAAwB,EACxB,OAAyB;IAEzB,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAC9D,CAAC;IAEF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAU,EACV,SAAiB;IAEjB,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1E,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7B,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC;QACjC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7B,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,eAAe,GAAqB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC;QAC3C,MAAM,oBAAoB,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,iBAAiB,CAChC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,EACrD,GAAG,CAAC,cAAc,CACnB,CAAC;QAEF,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YAC/C,OAAO;gBACL,MAAM;gBACN,OAAO,EAAE,GAAG,CAAC,WAAW;gBACxB,IAAI,EAAE,IAAI;gBACV,QAAQ;gBACR,MAAM,EAAE,oBAAoB,KAAK,SAAS;gBAC1C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;gBACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC;gBAC7D,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;oBACzC,CAAC,CAAC,EAAE,CAAC;gBACP,QAAQ,EAAE,GAAG,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,mBAAmB,EAAE;gBAC9D,gBAAgB,EAAE,EAAE,CAAC,eAAe;gBACpC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GACR,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM;YACjD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,MAAM,GAAmB;YAC7B,MAAM;YACN,OAAO,EAAE,GAAG,CAAC,WAAW;YACxB,IAAI;YACJ,QAAQ;YACR,MAAM,EAAE,oBAAoB,KAAK,SAAS;YAC1C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;YACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC;YAC7D,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;QAEF,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,WAAW,GAAG;gBACnB,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC;QAClC,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,6BAA6B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QAChF,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAU;IACnD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,cAAc,GAAkC,EAAE,CAAC;IAEzD,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtD,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC1B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,UAAU,EAAE,EAAE;QACd,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../src/introspect/to-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,28 @@
1
1
  import type { Pool } from "pg";
2
2
  import type { Manifest } from "../dialect/types.js";
3
+ export type MigrationRecord = {
4
+ name: string;
5
+ appliedAt: Date;
6
+ };
7
+ export type MigrationStatus = {
8
+ applied: MigrationRecord[];
9
+ pending: string[];
10
+ orphanApplied: string[];
11
+ };
3
12
  export declare function ensureMigrationsTable(pool: Pool): Promise<void>;
13
+ export declare function listAppliedMigrations(pool: Pool): Promise<MigrationRecord[]>;
4
14
  export declare function getAppliedMigrations(pool: Pool): Promise<Set<string>>;
15
+ export declare function listMigrationsOnDisk(migrationsDir: string): Promise<string[]>;
16
+ export declare function computeMigrationStatus(diskMigrations: string[], applied: MigrationRecord[]): MigrationStatus;
17
+ export declare function migrateStatus(pool: Pool, migrationsDir: string): Promise<MigrationStatus>;
18
+ export declare function formatMigrateStatus(status: MigrationStatus, migrationsDir: string): string[];
19
+ export declare function resetDatabaseSchema(pool: Pool): Promise<void>;
20
+ export declare function migrateReset(pool: Pool, migrationsDir: string, options: {
21
+ force: boolean;
22
+ skipApply?: boolean;
23
+ }): Promise<{
24
+ reapplied: string[];
25
+ }>;
5
26
  export declare function listPendingMigrations(migrationsDir: string, applied: Set<string>): Promise<string[]>;
6
27
  export declare function applySql(pool: Pool, sql: string[]): Promise<void>;
7
28
  export declare function applyMigration(pool: Pool, migrationsDir: string, name: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAWpD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAM3E;AAED,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,iBAAiB,GAAG,OAAO,qBAAqB,EAAE,iBAAiB,CAAC;AAEzE,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAerE"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAWpD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CASlF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAG3E;AAED,wBAAsB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBnF;AAED,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE,eAAe,EAAE,GACzB,eAAe,CASjB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAqCV;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnE;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAelC;AAED,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,iBAAiB,GAAG,OAAO,qBAAqB,EAAE,iBAAiB,CAAC;AAEzE,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAerE"}
@@ -1,4 +1,4 @@
1
- import { readdir, readFile } from "node:fs/promises";
1
+ import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
3
  import { postgresDialect } from "../dialect/postgres.js";
4
4
  import { diffManifest, formatDestructiveWarnings, resolveMigrationSql, } from "../codegen/diff-manifest.js";
@@ -13,12 +13,19 @@ export async function ensureMigrationsTable(pool) {
13
13
  )
14
14
  `);
15
15
  }
16
- export async function getAppliedMigrations(pool) {
16
+ export async function listAppliedMigrations(pool) {
17
17
  await ensureMigrationsTable(pool);
18
- const result = await pool.query(`SELECT name FROM ${postgresDialect.quoteIdentifier(MIGRATIONS_TABLE)} ORDER BY id`);
19
- return new Set(result.rows.map((r) => r.name));
18
+ const result = await pool.query(`SELECT name, applied_at FROM ${postgresDialect.quoteIdentifier(MIGRATIONS_TABLE)} ORDER BY id`);
19
+ return result.rows.map((row) => ({
20
+ name: row.name,
21
+ appliedAt: row.applied_at,
22
+ }));
20
23
  }
21
- export async function listPendingMigrations(migrationsDir, applied) {
24
+ export async function getAppliedMigrations(pool) {
25
+ const applied = await listAppliedMigrations(pool);
26
+ return new Set(applied.map((record) => record.name));
27
+ }
28
+ export async function listMigrationsOnDisk(migrationsDir) {
22
29
  let entries;
23
30
  try {
24
31
  entries = await readdir(migrationsDir);
@@ -26,7 +33,93 @@ export async function listPendingMigrations(migrationsDir, applied) {
26
33
  catch {
27
34
  return [];
28
35
  }
29
- return entries.filter((e) => !applied.has(e)).sort();
36
+ const migrations = [];
37
+ for (const entry of entries) {
38
+ const entryPath = join(migrationsDir, entry);
39
+ try {
40
+ const entryStat = await stat(entryPath);
41
+ if (!entryStat.isDirectory()) {
42
+ continue;
43
+ }
44
+ await readFile(join(entryPath, "migration.sql"), "utf-8");
45
+ migrations.push(entry);
46
+ }
47
+ catch {
48
+ // skip entries without migration.sql
49
+ }
50
+ }
51
+ return migrations.sort();
52
+ }
53
+ export function computeMigrationStatus(diskMigrations, applied) {
54
+ const appliedNames = new Set(applied.map((record) => record.name));
55
+ const diskSet = new Set(diskMigrations);
56
+ const pending = diskMigrations.filter((name) => !appliedNames.has(name));
57
+ const orphanApplied = applied
58
+ .map((record) => record.name)
59
+ .filter((name) => !diskSet.has(name));
60
+ return { applied, pending, orphanApplied };
61
+ }
62
+ export async function migrateStatus(pool, migrationsDir) {
63
+ const [applied, diskMigrations] = await Promise.all([
64
+ listAppliedMigrations(pool),
65
+ listMigrationsOnDisk(migrationsDir),
66
+ ]);
67
+ return computeMigrationStatus(diskMigrations, applied);
68
+ }
69
+ export function formatMigrateStatus(status, migrationsDir) {
70
+ const lines = [`Migration status (${migrationsDir})`, ""];
71
+ lines.push("Applied:");
72
+ if (status.applied.length === 0) {
73
+ lines.push(" (none)");
74
+ }
75
+ else {
76
+ for (const record of status.applied) {
77
+ const appliedAt = record.appliedAt.toISOString().replace("T", " ").replace(/\.\d{3}Z$/, " UTC");
78
+ lines.push(` ✓ ${record.name.padEnd(28)} ${appliedAt}`);
79
+ }
80
+ }
81
+ lines.push("");
82
+ lines.push("Pending:");
83
+ if (status.pending.length === 0) {
84
+ lines.push(" (none)");
85
+ }
86
+ else {
87
+ for (const name of status.pending) {
88
+ lines.push(` ○ ${name}`);
89
+ }
90
+ }
91
+ if (status.orphanApplied.length > 0) {
92
+ lines.push("");
93
+ lines.push("Warnings:");
94
+ for (const name of status.orphanApplied) {
95
+ lines.push(` ! Applied migration missing on disk: ${name}`);
96
+ }
97
+ }
98
+ lines.push("");
99
+ lines.push(`Summary: ${status.applied.length} applied, ${status.pending.length} pending`);
100
+ return lines;
101
+ }
102
+ export async function resetDatabaseSchema(pool) {
103
+ await pool.query(`
104
+ DROP SCHEMA public CASCADE;
105
+ CREATE SCHEMA public;
106
+ GRANT ALL ON SCHEMA public TO PUBLIC;
107
+ `);
108
+ }
109
+ export async function migrateReset(pool, migrationsDir, options) {
110
+ if (!options.force) {
111
+ throw new Error("migrate reset requires --force. This drops the public schema and all data.");
112
+ }
113
+ await resetDatabaseSchema(pool);
114
+ if (options.skipApply) {
115
+ return { reapplied: [] };
116
+ }
117
+ const reapplied = await migrateDeploy(pool, migrationsDir);
118
+ return { reapplied };
119
+ }
120
+ export async function listPendingMigrations(migrationsDir, applied) {
121
+ const diskMigrations = await listMigrationsOnDisk(migrationsDir);
122
+ return diskMigrations.filter((name) => !applied.has(name));
30
123
  }
31
124
  export async function applySql(pool, sql) {
32
125
  if (sql.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,48 @@
1
- import type { ColumnBuilder } from "../schema/column.js";
1
+ import type { ColumnBuilder, ColumnMeta } from "../schema/column.js";
2
2
  import type { NeoOrmPlugin } from "./types.js";
3
3
  export type UuidOptions = {
4
4
  version?: 4 | 7;
5
5
  };
6
+ export type DecimalOptions = {
7
+ precision?: number;
8
+ scale?: number;
9
+ };
10
+ export type EnumTypeOptions = {
11
+ name?: string;
12
+ };
6
13
  export declare const builtinPlugin: NeoOrmPlugin;
14
+ export declare const citextPlugin: NeoOrmPlugin;
15
+ type IdColumnMeta = {
16
+ kind: "id";
17
+ nullable: false;
18
+ unique: false;
19
+ primary: true;
20
+ defaultNow: false;
21
+ };
7
22
  export declare const id: {
8
- primary(): ColumnBuilder<string>;
23
+ primary(): ColumnBuilder<string, IdColumnMeta>;
9
24
  };
10
25
  export declare function text(): ColumnBuilder<string | null>;
11
26
  export declare function bool(): ColumnBuilder<boolean | null>;
12
27
  export declare function int(): ColumnBuilder<number | null>;
13
28
  export declare function timestamp(): ColumnBuilder<Date | null>;
14
29
  export declare function uuid(options?: UuidOptions): ColumnBuilder<string | null>;
30
+ export declare function json<T = unknown>(): ColumnBuilder<T | null>;
31
+ export declare function jsonb<T = unknown>(): ColumnBuilder<T | null>;
32
+ export declare function decimal(options?: DecimalOptions): ColumnBuilder<string | null, ColumnMeta & {
33
+ kind: "decimal";
34
+ }>;
35
+ export declare function numeric(options?: DecimalOptions): ColumnBuilder<string | null, ColumnMeta & {
36
+ kind: "decimal";
37
+ }>;
38
+ export declare function serial(): ColumnBuilder<number, ColumnMeta & {
39
+ kind: "serial";
40
+ nullable: false;
41
+ }>;
42
+ export declare function enumType<const T extends readonly [string, ...string[]]>(values: T, options?: EnumTypeOptions): ColumnBuilder<T[number] | null>;
43
+ export declare function bytea(): ColumnBuilder<Buffer | null>;
44
+ export declare function textArray(): ColumnBuilder<string[] | null>;
45
+ export declare function intArray(): ColumnBuilder<number[] | null>;
46
+ export declare function citext(): ColumnBuilder<string | null>;
47
+ export {};
15
48
  //# sourceMappingURL=builtin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/plugins/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,qBAAqB,CAAC;AAGrE,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,CAAC;AAkJF,eAAO,MAAM,aAAa,EAAE,YAG3B,CAAC;AAEF,eAAO,MAAM,EAAE;eACF,aAAa,CAAC,MAAM,CAAC;CAGjC,CAAC;AAEF,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAEpD;AAED,wBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAElD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAEtD;AAED,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxE"}
1
+ {"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/plugins/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAsaF,eAAO,MAAM,aAAa,EAAE,YAkB3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAI1B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,EAAE;eACF,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC;CAG/C,CAAC;AAEF,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAEpD;AAED,wBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAElD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAEtD;AAED,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxE;AAED,wBAAgB,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAE3D;AAED,wBAAgB,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAE5D;AAED,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAIhE;AAED,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAEhE;AAED,wBAAgB,MAAM,IAAI,aAAa,CACrC,MAAM,EACN,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CACjD,CAKA;AAED,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EACrE,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,eAAe,GACxB,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAKjC;AAED,wBAAgB,KAAK,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAEpD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAE1D;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAEzD;AAED,wBAAgB,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAErD"}