@ronin/compiler 0.17.22 → 0.18.0

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/dist/index.d.ts CHANGED
@@ -5,9 +5,9 @@ declare const DML_QUERY_TYPES_WRITE: readonly ["set", "add", "remove"];
5
5
  /** Query types used for interacting with data. */
6
6
  declare const DML_QUERY_TYPES: readonly ["get", "count", "set", "add", "remove"];
7
7
  /** Query types used for interacting with the database schema. */
8
- declare const DDL_QUERY_TYPES: readonly ["create", "alter", "drop"];
8
+ declare const DDL_QUERY_TYPES: readonly ["list", "create", "alter", "drop"];
9
9
  /** All query types. */
10
- declare const QUERY_TYPES: readonly ["get", "count", "set", "add", "remove", "create", "alter", "drop"];
10
+ declare const QUERY_TYPES: readonly ["get", "count", "set", "add", "remove", "list", "create", "alter", "drop"];
11
11
  /**
12
12
  * A list of placeholders that can be located inside queries after those queries were
13
13
  * serialized into JSON objects.
@@ -115,6 +115,11 @@ type AddInstructions = Omit<CombinedInstructions, 'with' | 'using'> & {
115
115
  };
116
116
  type RemoveInstructions = Omit<CombinedInstructions, 'to'>;
117
117
  type CountInstructions = Omit<CombinedInstructions, 'to'>;
118
+ type ListQuery = {
119
+ models?: null;
120
+ } | {
121
+ model: string;
122
+ };
118
123
  type CreateQuery = {
119
124
  model: string | PublicModel;
120
125
  to?: PublicModel;
@@ -152,6 +157,7 @@ type Query = {
152
157
  add?: AddQuery;
153
158
  remove?: RemoveQuery;
154
159
  count?: CountQuery | CountAllQuery;
160
+ list?: ListQuery;
155
161
  create?: CreateQuery;
156
162
  alter?: AlterQuery;
157
163
  drop?: DropQuery;
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ var DML_QUERY_TYPES = [
5
5
  ...DML_QUERY_TYPES_READ,
6
6
  ...DML_QUERY_TYPES_WRITE
7
7
  ];
8
- var DDL_QUERY_TYPES = ["create", "alter", "drop"];
8
+ var DDL_QUERY_TYPES = ["list", "create", "alter", "drop"];
9
9
  var QUERY_TYPES = [...DML_QUERY_TYPES, ...DDL_QUERY_TYPES];
10
10
  var QUERY_SYMBOLS = {
11
11
  // Represents a sub query.
@@ -1091,7 +1091,8 @@ var compileQueryInput = (defaultQuery, models, statementParams, options) => {
1091
1091
  dependencies: [],
1092
1092
  main: dependencyStatements[0],
1093
1093
  selectedFields: [],
1094
- model: ROOT_MODEL_WITH_ATTRIBUTES
1094
+ model: ROOT_MODEL_WITH_ATTRIBUTES,
1095
+ updatedQuery: defaultQuery
1095
1096
  };
1096
1097
  const parsedQuery = splitQuery(query);
1097
1098
  const { queryType, queryModel, queryInstructions } = parsedQuery;
@@ -1253,7 +1254,8 @@ var compileQueryInput = (defaultQuery, models, statementParams, options) => {
1253
1254
  dependencies: dependencyStatements,
1254
1255
  main: mainStatement,
1255
1256
  selectedFields,
1256
- model
1257
+ model,
1258
+ updatedQuery: query
1257
1259
  };
1258
1260
  };
1259
1261
 
@@ -1593,11 +1595,13 @@ var getSystemFields = (idPrefix) => ({
1593
1595
  }
1594
1596
  });
1595
1597
  var ROOT_MODEL = {
1596
- slug: "model",
1598
+ slug: "roninModel",
1597
1599
  identifiers: {
1598
1600
  name: "name",
1599
1601
  slug: "slug"
1600
1602
  },
1603
+ // The default ID prefix would be `ron_` based on the slug, but we want `mod_`.
1604
+ idPrefix: "mod",
1601
1605
  // This name mimics the `sqlite_schema` table in SQLite.
1602
1606
  table: "ronin_schema",
1603
1607
  // Indicates that the model was automatically generated by RONIN.
@@ -1789,6 +1793,12 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query,
1789
1793
  let slug = entity === "model" && action === "create" ? null : query[queryType] && "model" in query[queryType] ? query[queryType].model : null;
1790
1794
  let modelSlug = slug;
1791
1795
  let jsonValue;
1796
+ if ("list" in query && query.list) {
1797
+ if (slug) {
1798
+ return { get: { roninModel: { with: { slug } } } };
1799
+ }
1800
+ return { get: { roninModels: {} } };
1801
+ }
1792
1802
  if ("create" in query && query.create) {
1793
1803
  const init = query.create.model;
1794
1804
  jsonValue = "to" in query.create ? { slug: init, ...query.create.to } : init;
@@ -1920,11 +1930,11 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query,
1920
1930
  });
1921
1931
  }
1922
1932
  const modelSlug2 = "to" in queryTypeDetails ? queryTypeDetails?.to?.slug : "with" in queryTypeDetails ? queryTypeDetails?.with?.slug : void 0;
1923
- if (modelSlug2 === "model") return null;
1933
+ if (modelSlug2 === "roninModel") return null;
1924
1934
  const queryTypeAction = action === "create" ? "add" : action === "alter" ? "set" : "remove";
1925
1935
  return {
1926
1936
  [queryTypeAction]: {
1927
- model: queryTypeDetails
1937
+ roninModel: queryTypeDetails
1928
1938
  }
1929
1939
  };
1930
1940
  }
@@ -2118,7 +2128,7 @@ var transformMetaQuery = (models, dependencyStatements, statementParams, query,
2118
2128
  );
2119
2129
  return {
2120
2130
  set: {
2121
- model: {
2131
+ roninModel: {
2122
2132
  with: { slug: modelSlug },
2123
2133
  to: {
2124
2134
  [pluralType]: { [QUERY_SYMBOLS.EXPRESSION]: json }
@@ -2194,13 +2204,13 @@ var Transaction = class {
2194
2204
  const query2 = {
2195
2205
  [queryType]: { [model.pluralSlug]: instructions }
2196
2206
  };
2197
- return { query: query2, index };
2207
+ return { query: query2, index, expansion: true };
2198
2208
  });
2199
2209
  }
2200
2210
  return { query, index };
2201
2211
  });
2202
- for (const { query, index } of expandedQueries) {
2203
- const { dependencies, main, selectedFields, model } = compileQueryInput(
2212
+ for (const { query, index, expansion } of expandedQueries) {
2213
+ const { dependencies, main, selectedFields, model, updatedQuery } = compileQueryInput(
2204
2214
  query,
2205
2215
  modelsWithPresets,
2206
2216
  options?.inlineParams ? null : [],
@@ -2213,6 +2223,7 @@ var Transaction = class {
2213
2223
  this.statements.push(...subStatements);
2214
2224
  this.#internalQueries[index].selectedFields.push(selectedFields);
2215
2225
  this.#internalQueries[index].models.push(model);
2226
+ if (!expansion) this.#internalQueries[index].query = updatedQuery;
2216
2227
  }
2217
2228
  this.models = modelsWithPresets;
2218
2229
  return statements;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ronin/compiler",
3
- "version": "0.17.22",
3
+ "version": "0.18.0",
4
4
  "type": "module",
5
5
  "description": "Compiles RONIN queries to SQL statements.",
6
6
  "publishConfig": {