@xylex-group/athena 3.0.2 → 3.1.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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/dist/billing.cjs +1 -1
  3. package/dist/billing.cjs.map +1 -1
  4. package/dist/billing.js +1 -1
  5. package/dist/billing.js.map +1 -1
  6. package/dist/browser.cjs +322 -1
  7. package/dist/browser.cjs.map +1 -1
  8. package/dist/browser.d.cts +5 -5
  9. package/dist/browser.d.ts +5 -5
  10. package/dist/browser.js +301 -2
  11. package/dist/browser.js.map +1 -1
  12. package/dist/cli/index.cjs +5381 -3772
  13. package/dist/cli/index.cjs.map +1 -1
  14. package/dist/cli/index.d.cts +17 -10
  15. package/dist/cli/index.d.ts +17 -10
  16. package/dist/cli/index.js +5385 -3776
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/index.cjs +1723 -26
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +28 -6
  21. package/dist/index.d.ts +28 -6
  22. package/dist/index.js +1695 -28
  23. package/dist/index.js.map +1 -1
  24. package/dist/model-form-BbdzJ9Uh.d.ts +259 -0
  25. package/dist/model-form-BhWWsA-7.d.cts +259 -0
  26. package/dist/{module-CkUM6v58.d.ts → module-DKkJKOuJ.d.ts} +2 -2
  27. package/dist/{module-CB25egcO.d.cts → module-xFd7_Igv.d.cts} +2 -2
  28. package/dist/next/client.cjs +1 -1
  29. package/dist/next/client.cjs.map +1 -1
  30. package/dist/next/client.js +1 -1
  31. package/dist/next/client.js.map +1 -1
  32. package/dist/next/server.cjs +1 -1
  33. package/dist/next/server.cjs.map +1 -1
  34. package/dist/next/server.js +1 -1
  35. package/dist/next/server.js.map +1 -1
  36. package/dist/pipeline-DuKzYGia.d.cts +93 -0
  37. package/dist/pipeline-wer2G9xW.d.ts +93 -0
  38. package/dist/react.cjs +400 -3
  39. package/dist/react.cjs.map +1 -1
  40. package/dist/react.d.cts +67 -2
  41. package/dist/react.d.ts +67 -2
  42. package/dist/react.js +400 -4
  43. package/dist/react.js.map +1 -1
  44. package/dist/{types-BBm-kEBL.d.cts → types-1ztXDgPa.d.cts} +62 -2
  45. package/dist/{types-BaAMXCqK.d.ts → types-CccOiXPo.d.ts} +62 -2
  46. package/package.json +1 -1
  47. package/dist/model-form-Dh0sisdL.d.ts +0 -97
  48. package/dist/model-form-oOAJUVd4.d.cts +0 -97
  49. package/dist/pipeline-B8aN2EHe.d.ts +0 -8
  50. package/dist/pipeline-D4W-Cc-A.d.cts +0 -8
package/dist/browser.cjs CHANGED
@@ -2005,7 +2005,7 @@ function buildAthenaGatewayUrl(baseUrl, path) {
2005
2005
 
2006
2006
  // package.json
2007
2007
  var package_default = {
2008
- version: "3.0.2"
2008
+ version: "3.1.0"
2009
2009
  };
2010
2010
 
2011
2011
  // src/sdk-version.ts
@@ -11883,6 +11883,305 @@ function athenaAuth(config) {
11883
11883
  return auth;
11884
11884
  }
11885
11885
 
11886
+ // src/query/read-query.ts
11887
+ function normalizeAthenaReadQueryOrderBy(orderBy) {
11888
+ if (!orderBy) {
11889
+ return [];
11890
+ }
11891
+ const list = Array.isArray(orderBy) ? orderBy : [orderBy];
11892
+ return list.filter(
11893
+ (entry) => entry && typeof entry.column === "string" && entry.column.trim().length > 0
11894
+ );
11895
+ }
11896
+ function isRecord14(value) {
11897
+ return typeof value === "object" && value !== null && !Array.isArray(value);
11898
+ }
11899
+ function flattenAthenaRowValue(row, column) {
11900
+ if (!column.relation) {
11901
+ return row[column.column];
11902
+ }
11903
+ const relationValue = row[column.relation.name];
11904
+ if (Array.isArray(relationValue)) {
11905
+ return relationValue.map((entry) => isRecord14(entry) ? entry[column.column] : void 0).filter((entry) => entry !== void 0);
11906
+ }
11907
+ if (isRecord14(relationValue)) {
11908
+ return relationValue[column.column];
11909
+ }
11910
+ return void 0;
11911
+ }
11912
+ function resolveFlatRowKey(row, index, preferredKey) {
11913
+ const preferredValue = preferredKey && preferredKey in row ? row[preferredKey] : void 0;
11914
+ if (preferredValue !== void 0 && preferredValue !== null && `${preferredValue}`.trim().length > 0) {
11915
+ return String(preferredValue);
11916
+ }
11917
+ for (const [key, value] of Object.entries(row)) {
11918
+ if (key === "__rowKey") {
11919
+ continue;
11920
+ }
11921
+ if (value === void 0 || value === null) {
11922
+ continue;
11923
+ }
11924
+ if (Array.isArray(value)) {
11925
+ if (value.length > 0) {
11926
+ return `${key}-${value.join("-")}`;
11927
+ }
11928
+ continue;
11929
+ }
11930
+ const nextValue = String(value).trim();
11931
+ if (nextValue.length > 0) {
11932
+ return nextValue;
11933
+ }
11934
+ }
11935
+ return `row-${index + 1}`;
11936
+ }
11937
+ function flattenAthenaReadQueryRows(rows, columns, preferredKey) {
11938
+ return rows.map((entry, index) => {
11939
+ const sourceRow = isRecord14(entry) ? entry : {};
11940
+ const flatRow = columns.reduce(
11941
+ (currentRow, column) => {
11942
+ currentRow[column.key] = flattenAthenaRowValue(sourceRow, column);
11943
+ return currentRow;
11944
+ },
11945
+ { __rowKey: "" }
11946
+ );
11947
+ flatRow.__rowKey = resolveFlatRowKey(flatRow, index, preferredKey);
11948
+ return flatRow;
11949
+ });
11950
+ }
11951
+ var flattenAthenaRows = flattenAthenaReadQueryRows;
11952
+ function buildAthenaReadQuerySelectString(columns) {
11953
+ const baseColumns = columns.filter((column) => !column.relation).map((column) => column.column);
11954
+ const relationGroups = /* @__PURE__ */ new Map();
11955
+ for (const column of columns) {
11956
+ if (!column.relation) {
11957
+ continue;
11958
+ }
11959
+ const groupKey = [
11960
+ column.relation.name,
11961
+ column.relation.schema ?? "",
11962
+ column.relation.table
11963
+ ].join(":");
11964
+ const existingGroup = relationGroups.get(groupKey);
11965
+ if (existingGroup) {
11966
+ if (!existingGroup.columns.includes(column.column)) {
11967
+ existingGroup.columns.push(column.column);
11968
+ }
11969
+ continue;
11970
+ }
11971
+ relationGroups.set(groupKey, {
11972
+ columns: [column.column],
11973
+ relation: column.relation
11974
+ });
11975
+ }
11976
+ const relationColumns = [...relationGroups.values()].map(
11977
+ ({ columns: relationColumns2, relation }) => {
11978
+ const relationTarget = relation.schema ? `${relation.schema}.${relation.table}` : relation.table;
11979
+ return `${relation.name}:${relationTarget}(${relationColumns2.join(",")})`;
11980
+ }
11981
+ );
11982
+ return [...baseColumns, ...relationColumns].join(",");
11983
+ }
11984
+ var buildAthenaTableSelectString = buildAthenaReadQuerySelectString;
11985
+ function buildAthenaReadQueryFindManySelect(columns) {
11986
+ const select = {};
11987
+ for (const column of columns) {
11988
+ if (!column.relation) {
11989
+ select[column.column] = true;
11990
+ continue;
11991
+ }
11992
+ const existingRelation = select[column.relation.name];
11993
+ if (existingRelation && existingRelation !== true && isRecord14(existingRelation.select)) {
11994
+ existingRelation.select[column.column] = true;
11995
+ continue;
11996
+ }
11997
+ select[column.relation.name] = {
11998
+ ...column.relation.schema ? { schema: column.relation.schema } : {},
11999
+ select: {
12000
+ [column.column]: true
12001
+ }
12002
+ };
12003
+ }
12004
+ return select;
12005
+ }
12006
+ var buildAthenaTableFindManySelect = buildAthenaReadQueryFindManySelect;
12007
+ function buildAthenaReadQueryFindManyWhere(filters) {
12008
+ if (!filters?.length) {
12009
+ return;
12010
+ }
12011
+ return filters.reduce(
12012
+ (where, filter) => {
12013
+ const operator = filter.operator ?? "eq";
12014
+ where[filter.column] = operator === "eq" ? filter.value : { [operator]: filter.value };
12015
+ return where;
12016
+ },
12017
+ {}
12018
+ );
12019
+ }
12020
+ var buildAthenaTableFindManyWhere = buildAthenaReadQueryFindManyWhere;
12021
+ function buildAthenaReadQueryFindManyOrderBy(orderBy) {
12022
+ const normalized = normalizeAthenaReadQueryOrderBy(orderBy);
12023
+ if (normalized.length === 0) {
12024
+ return;
12025
+ }
12026
+ if (normalized.length === 1) {
12027
+ const primary = normalized[0];
12028
+ if (!primary) {
12029
+ return;
12030
+ }
12031
+ return {
12032
+ ascending: primary.direction !== "desc",
12033
+ column: primary.column
12034
+ };
12035
+ }
12036
+ return Object.fromEntries(
12037
+ normalized.map((entry) => [
12038
+ entry.column,
12039
+ entry.direction === "desc" ? "desc" : "asc"
12040
+ ])
12041
+ );
12042
+ }
12043
+ var buildAthenaTableFindManyOrderBy = buildAthenaReadQueryFindManyOrderBy;
12044
+ var normalizeAthenaTableOrderBy = normalizeAthenaReadQueryOrderBy;
12045
+ function applyAthenaReadQueryFilters(queryBuilder, filters) {
12046
+ if (!filters?.length) {
12047
+ return queryBuilder;
12048
+ }
12049
+ return filters.reduce((currentBuilder, filter) => {
12050
+ const operator = filter.operator ?? "eq";
12051
+ const builderMethod = currentBuilder[operator];
12052
+ if (typeof builderMethod !== "function") {
12053
+ return currentBuilder;
12054
+ }
12055
+ return builderMethod.call(currentBuilder, filter.column, filter.value);
12056
+ }, queryBuilder);
12057
+ }
12058
+ var applyAthenaTableFilters = applyAthenaReadQueryFilters;
12059
+ function applyAthenaReadQuerySelectOrder(queryBuilder, orderBy) {
12060
+ const normalized = normalizeAthenaReadQueryOrderBy(orderBy);
12061
+ if (normalized.length === 0) {
12062
+ return queryBuilder;
12063
+ }
12064
+ return normalized.reduce(
12065
+ (builder, entry) => builder.order(entry.column, {
12066
+ ascending: entry.direction !== "desc"
12067
+ }),
12068
+ queryBuilder
12069
+ );
12070
+ }
12071
+ var applyAthenaTableSelectOrder = applyAthenaReadQuerySelectOrder;
12072
+ function applyAthenaReadQuerySelectLimit(queryBuilder, limit) {
12073
+ if (!limit || limit < 1) {
12074
+ return queryBuilder;
12075
+ }
12076
+ return queryBuilder.limit(limit);
12077
+ }
12078
+ var applyAthenaTableSelectLimit = applyAthenaReadQuerySelectLimit;
12079
+ function clampAthenaReadQueryTotalItems(totalItems, limit) {
12080
+ if (!limit || limit < 1) {
12081
+ return totalItems;
12082
+ }
12083
+ return Math.min(totalItems, limit);
12084
+ }
12085
+ var clampAthenaTableTotalItems = clampAthenaReadQueryTotalItems;
12086
+ function resolveCountValue(...candidates) {
12087
+ for (const candidate of candidates) {
12088
+ if (typeof candidate === "number" && Number.isFinite(candidate)) {
12089
+ return Math.max(0, Math.trunc(candidate));
12090
+ }
12091
+ }
12092
+ return 0;
12093
+ }
12094
+ function resolveTotalItemsFromPage({
12095
+ countCandidates,
12096
+ limit,
12097
+ page,
12098
+ pageSize,
12099
+ rowCount
12100
+ }) {
12101
+ const exactCount = resolveCountValue(...countCandidates);
12102
+ if (exactCount > 0) {
12103
+ return clampAthenaReadQueryTotalItems(exactCount, limit);
12104
+ }
12105
+ if (rowCount > 0) {
12106
+ const base = (page - 1) * pageSize + rowCount;
12107
+ const synthetic = rowCount >= pageSize ? base + 1 : base;
12108
+ return clampAthenaReadQueryTotalItems(synthetic, limit);
12109
+ }
12110
+ return clampAthenaReadQueryTotalItems(exactCount, limit);
12111
+ }
12112
+ async function executeAthenaReadQuery({
12113
+ client,
12114
+ page,
12115
+ pageSize,
12116
+ query
12117
+ }) {
12118
+ const db = client.db;
12119
+ const baseBuilder = db.from(query.table, {
12120
+ schema: query.schema
12121
+ });
12122
+ const countBuilder = applyAthenaReadQueryFilters(
12123
+ db.from(query.table, { schema: query.schema }),
12124
+ query.filters
12125
+ );
12126
+ const countResult = await countBuilder.select(query.countColumn, {
12127
+ count: "exact",
12128
+ head: true
12129
+ });
12130
+ if ((query.mode ?? "findMany") === "select") {
12131
+ const selectBuilder = applyAthenaReadQuerySelectLimit(
12132
+ applyAthenaReadQuerySelectOrder(
12133
+ applyAthenaReadQueryFilters(baseBuilder, query.filters),
12134
+ query.orderBy
12135
+ ),
12136
+ query.limit
12137
+ );
12138
+ const result2 = await selectBuilder.currentPage(page).pageSize(pageSize).select(buildAthenaReadQuerySelectString(query.columns), {
12139
+ count: "exact"
12140
+ });
12141
+ const rows2 = flattenAthenaReadQueryRows(
12142
+ Array.isArray(result2.data) ? result2.data : [],
12143
+ query.columns,
12144
+ query.rowKey
12145
+ );
12146
+ return {
12147
+ debugAst: getAthenaDebugAst(result2) ?? void 0,
12148
+ rows: rows2,
12149
+ totalItems: resolveTotalItemsFromPage({
12150
+ countCandidates: [countResult.count, result2.count],
12151
+ limit: query.limit,
12152
+ page,
12153
+ pageSize,
12154
+ rowCount: rows2.length
12155
+ })
12156
+ };
12157
+ }
12158
+ const findManyOrderBy = buildAthenaReadQueryFindManyOrderBy(query.orderBy);
12159
+ const findManyOptions = {
12160
+ ...query.limit ? { limit: query.limit } : {},
12161
+ ...findManyOrderBy ? { orderBy: findManyOrderBy } : {},
12162
+ select: buildAthenaReadQueryFindManySelect(query.columns),
12163
+ ...query.filters?.length ? { where: buildAthenaReadQueryFindManyWhere(query.filters) } : {}
12164
+ };
12165
+ const result = await baseBuilder.currentPage(page).pageSize(pageSize).findMany(findManyOptions);
12166
+ const rows = flattenAthenaReadQueryRows(
12167
+ Array.isArray(result.data) ? result.data : [],
12168
+ query.columns,
12169
+ query.rowKey
12170
+ );
12171
+ return {
12172
+ debugAst: getAthenaDebugAst(result) ?? void 0,
12173
+ rows,
12174
+ totalItems: resolveTotalItemsFromPage({
12175
+ countCandidates: [countResult.count, result.count],
12176
+ limit: query.limit,
12177
+ page,
12178
+ pageSize,
12179
+ rowCount: rows.length
12180
+ })
12181
+ };
12182
+ }
12183
+ var executeAthenaTableQuery = executeAthenaReadQuery;
12184
+
11886
12185
  // src/browser.ts
11887
12186
  function throwBrowserUnsupported(apiName) {
11888
12187
  throw new Error(
@@ -11932,11 +12231,27 @@ exports.AthenaStorageError = AthenaStorageError;
11932
12231
  exports.AthenaStorageErrorCode = AthenaStorageErrorCode;
11933
12232
  exports.Backend = Backend;
11934
12233
  exports.DEFAULT_POSTGRES_SCHEMAS = DEFAULT_POSTGRES_SCHEMAS;
12234
+ exports.applyAthenaReadQueryFilters = applyAthenaReadQueryFilters;
12235
+ exports.applyAthenaReadQuerySelectLimit = applyAthenaReadQuerySelectLimit;
12236
+ exports.applyAthenaReadQuerySelectOrder = applyAthenaReadQuerySelectOrder;
12237
+ exports.applyAthenaTableFilters = applyAthenaTableFilters;
12238
+ exports.applyAthenaTableSelectLimit = applyAthenaTableSelectLimit;
12239
+ exports.applyAthenaTableSelectOrder = applyAthenaTableSelectOrder;
11935
12240
  exports.assertInt = assertInt;
11936
12241
  exports.athenaAuth = athenaAuth;
11937
12242
  exports.billingSdkManifest = billingSdkManifest;
11938
12243
  exports.boolean = boolean;
12244
+ exports.buildAthenaReadQueryFindManyOrderBy = buildAthenaReadQueryFindManyOrderBy;
12245
+ exports.buildAthenaReadQueryFindManySelect = buildAthenaReadQueryFindManySelect;
12246
+ exports.buildAthenaReadQueryFindManyWhere = buildAthenaReadQueryFindManyWhere;
12247
+ exports.buildAthenaReadQuerySelectString = buildAthenaReadQuerySelectString;
12248
+ exports.buildAthenaTableFindManyOrderBy = buildAthenaTableFindManyOrderBy;
12249
+ exports.buildAthenaTableFindManySelect = buildAthenaTableFindManySelect;
12250
+ exports.buildAthenaTableFindManyWhere = buildAthenaTableFindManyWhere;
12251
+ exports.buildAthenaTableSelectString = buildAthenaTableSelectString;
11939
12252
  exports.chatSdkManifest = chatSdkManifest;
12253
+ exports.clampAthenaReadQueryTotalItems = clampAthenaReadQueryTotalItems;
12254
+ exports.clampAthenaTableTotalItems = clampAthenaTableTotalItems;
11940
12255
  exports.coerceInt = coerceInt;
11941
12256
  exports.createAthenaStorageError = createAthenaStorageError;
11942
12257
  exports.createAuthReactEmailInput = createAuthReactEmailInput;
@@ -11952,8 +12267,12 @@ exports.defineModel = defineModel;
11952
12267
  exports.defineRegistry = defineRegistry;
11953
12268
  exports.defineSchema = defineSchema;
11954
12269
  exports.enumeration = enumeration;
12270
+ exports.executeAthenaReadQuery = executeAthenaReadQuery;
12271
+ exports.executeAthenaTableQuery = executeAthenaTableQuery;
11955
12272
  exports.filterIntrospectionSnapshot = filterIntrospectionSnapshot;
11956
12273
  exports.findGeneratorConfigPath = findGeneratorConfigPath;
12274
+ exports.flattenAthenaReadQueryRows = flattenAthenaReadQueryRows;
12275
+ exports.flattenAthenaRows = flattenAthenaRows;
11957
12276
  exports.generateArtifactsFromSnapshot = generateArtifactsFromSnapshot;
11958
12277
  exports.generatorEnv = generatorEnv;
11959
12278
  exports.getAthenaDebugAst = getAthenaDebugAst;
@@ -11964,6 +12283,8 @@ exports.json = json;
11964
12283
  exports.loadGeneratorConfig = loadGeneratorConfig;
11965
12284
  exports.normalizeAthenaError = normalizeAthenaError;
11966
12285
  exports.normalizeAthenaGatewayBaseUrl = normalizeAthenaGatewayBaseUrl;
12286
+ exports.normalizeAthenaReadQueryOrderBy = normalizeAthenaReadQueryOrderBy;
12287
+ exports.normalizeAthenaTableOrderBy = normalizeAthenaTableOrderBy;
11967
12288
  exports.normalizeGeneratorConfig = normalizeGeneratorConfig;
11968
12289
  exports.normalizeSchemaSelection = normalizeSchemaSelection;
11969
12290
  exports.normalizeTableSelection = normalizeTableSelection;