@memberjunction/server 5.35.0 → 5.36.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.
@@ -8,6 +8,8 @@ import { RunQueryResultType } from './QueryResolver.js';
8
8
  declare class AdhocQueryInput {
9
9
  SQL: string;
10
10
  TimeoutSeconds?: number;
11
+ MaxRows?: number;
12
+ StartRow?: number;
11
13
  }
12
14
  /**
13
15
  * Resolver for executing ad-hoc (unsaved) SQL queries.
@@ -1 +1 @@
1
- {"version":3,"file":"AdhocQueryResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,cACM,eAAe;IAEjB,GAAG,EAAE,MAAM,CAAC;IAGZ,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,qBACa,kBAAmB,SAAQ,YAAY;IAE1C,iBAAiB,CACkB,KAAK,EAAE,eAAe,EACpD,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAgF9B,OAAO,CAAC,gBAAgB;CAc3B"}
1
+ {"version":3,"file":"AdhocQueryResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,cACM,eAAe;IAEjB,GAAG,EAAE,MAAM,CAAC;IAGZ,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,qBACa,kBAAmB,SAAQ,YAAY;IAE1C,iBAAiB,CACkB,KAAK,EAAE,eAAe,EACpD,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IA2G9B,OAAO,CAAC,gBAAgB;CAc3B"}
@@ -31,6 +31,14 @@ __decorate([
31
31
  Field(() => Int, { nullable: true, description: 'Query timeout in seconds. Defaults to 30.' }),
32
32
  __metadata("design:type", Number)
33
33
  ], AdhocQueryInput.prototype, "TimeoutSeconds", void 0);
34
+ __decorate([
35
+ Field(() => Int, { nullable: true, description: 'Maximum number of rows to return. Applied in-memory after SQL execution; SQL still runs unbounded server-side.' }),
36
+ __metadata("design:type", Number)
37
+ ], AdhocQueryInput.prototype, "MaxRows", void 0);
38
+ __decorate([
39
+ Field(() => Int, { nullable: true, description: 'Zero-based offset for pagination. Used in conjunction with MaxRows.' }),
40
+ __metadata("design:type", Number)
41
+ ], AdhocQueryInput.prototype, "StartRow", void 0);
34
42
  AdhocQueryInput = __decorate([
35
43
  InputType()
36
44
  ], AdhocQueryInput);
@@ -63,24 +71,50 @@ let AdhocQueryResolver = class AdhocQueryResolver extends ResolverBase {
63
71
  catch {
64
72
  return this.buildErrorResult('No read-only data source available for ad-hoc query execution');
65
73
  }
66
- // 3. Execute with timeout
74
+ // 3. Build executable SQL. When MaxRows is provided, wrap in a derived table
75
+ // with outer TOP so the engine can short-circuit at the source instead of
76
+ // scanning the full result. Skipped for SQL that begins with WITH/CTE — those
77
+ // can't be nested in a derived table on SQL Server and fall through to the
78
+ // in-memory slice below.
79
+ const startRow = input.StartRow ?? 0;
80
+ const maxRows = input.MaxRows;
81
+ const canWrap = maxRows != null &&
82
+ Number.isInteger(maxRows) &&
83
+ maxRows > 0 &&
84
+ Number.isInteger(startRow) &&
85
+ startRow >= 0 &&
86
+ !/^\s*WITH\b/i.test(input.SQL);
87
+ const executableSql = canWrap
88
+ ? `SELECT TOP ${startRow + maxRows} * FROM (\n${input.SQL}\n) AS _adhoc_capped`
89
+ : input.SQL;
90
+ // 4. Execute with timeout
67
91
  const timeoutMs = (input.TimeoutSeconds ?? 30) * 1000;
68
92
  const request = new sql.Request(readOnlyDS);
69
93
  const result = await Promise.race([
70
- request.query(input.SQL),
94
+ request.query(executableSql),
71
95
  new Promise((_, reject) => setTimeout(() => reject(new Error('Query timeout exceeded')), timeoutMs))
72
96
  ]);
73
97
  const executionTimeMs = Date.now() - startTime;
74
- // 4. Return as RunQueryResultType
98
+ // 5. Apply in-memory pagination. With the wrap applied this is a no-op for
99
+ // first-page reads; for StartRow > 0 (or CTE-headed SQL where the wrap was
100
+ // skipped) it carves out the requested page.
101
+ const fullRecordset = result.recordset ?? [];
102
+ const totalRowCount = fullRecordset.length;
103
+ let paginated = fullRecordset;
104
+ if (startRow > 0)
105
+ paginated = paginated.slice(startRow);
106
+ if (maxRows != null && maxRows > 0)
107
+ paginated = paginated.slice(0, maxRows);
108
+ // 6. Return as RunQueryResultType
75
109
  return {
76
110
  QueryID: '',
77
111
  QueryName: 'Ad-Hoc Query',
78
112
  Success: true,
79
- Results: JSON.stringify(result.recordset ?? []),
80
- RowCount: result.recordset?.length ?? 0,
81
- TotalRowCount: result.recordset?.length ?? 0,
82
- PageNumber: undefined,
83
- PageSize: undefined,
113
+ Results: JSON.stringify(paginated),
114
+ RowCount: paginated.length,
115
+ TotalRowCount: totalRowCount,
116
+ PageNumber: maxRows != null && maxRows > 0 ? Math.floor(startRow / maxRows) + 1 : undefined,
117
+ PageSize: maxRows ?? undefined,
84
118
  ExecutionTime: executionTimeMs,
85
119
  ErrorMessage: ''
86
120
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AdhocQueryResolver.js","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdhocQueryResolver.js","sourceRoot":"","sources":["../../src/resolvers/AdhocQueryResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ import type { ApplyResult as CoreApplyResult, ListDelta as CoreListDelta, ListDeltaWarning as CoreListDeltaWarning, ListShareSummary, ListSource as CoreListSource, SetOpKind, SharePermissionLevel } from '@memberjunction/lists-base';
2
+ import { ResolverBase } from '../generic/ResolverBase.js';
3
+ import { AppContext } from '../types.js';
4
+ /**
5
+ * Discriminated source descriptor as a flat input. GraphQL does not support
6
+ * tagged unions in inputs, so we encode the discriminator in `Kind` and
7
+ * the variant-specific payload in optional fields. Runtime validation
8
+ * enforces the right field-presence per kind.
9
+ */
10
+ export declare class ListSourceInput {
11
+ Kind: 'list' | 'view' | 'adhoc';
12
+ ListID?: string;
13
+ ViewID?: string;
14
+ EntityName?: string;
15
+ ExtraFilter?: string;
16
+ }
17
+ export declare class MaterializeOptionsInput {
18
+ ListName: string;
19
+ CategoryId?: string;
20
+ Description?: string;
21
+ RememberLineage: boolean;
22
+ UseSnapshot: boolean;
23
+ RefreshMode: 'Additive' | 'Sync';
24
+ }
25
+ export declare class ListDeltaCountsType {
26
+ Add: number;
27
+ Remove: number;
28
+ Unchanged: number;
29
+ SourceTotal: number;
30
+ TargetTotal: number;
31
+ }
32
+ export declare class ListDeltaWarningType {
33
+ Code: string;
34
+ Message: string;
35
+ /** Structured payload, JSON-stringified for GraphQL-over-the-wire portability. */
36
+ DetailsJSON?: string;
37
+ }
38
+ export declare class ListDeltaType {
39
+ TargetListId?: string | null;
40
+ EntityName: string;
41
+ ToAdd: string[];
42
+ ToRemove: string[];
43
+ Unchanged: string[];
44
+ Counts: ListDeltaCountsType;
45
+ Warnings: ListDeltaWarningType[];
46
+ DeltaToken: string;
47
+ }
48
+ export declare class ApplyListResultType {
49
+ Success: boolean;
50
+ ResultCode: string;
51
+ Message: string;
52
+ CreatedListId?: string;
53
+ TargetListId?: string;
54
+ AddedCount?: number;
55
+ RemovedCount?: number;
56
+ FailedCount?: number;
57
+ Errors?: string[];
58
+ }
59
+ export declare class ComputeDeltaInput {
60
+ Target: string;
61
+ Source: ListSourceInput;
62
+ Mode: 'Additive' | 'Sync';
63
+ }
64
+ export declare class ApplyDeltaInput {
65
+ TargetListId: string;
66
+ EntityName: string;
67
+ ToAdd: string[];
68
+ ToRemove: string[];
69
+ Unchanged: string[];
70
+ AddCount: number;
71
+ RemoveCount: number;
72
+ UnchangedCount: number;
73
+ SourceTotal: number;
74
+ TargetTotal: number;
75
+ DeltaToken: string;
76
+ ConfirmDrops: boolean;
77
+ }
78
+ export declare class ShareTargetInput {
79
+ Kind: 'user' | 'role';
80
+ UserID?: string;
81
+ RoleID?: string;
82
+ }
83
+ export declare class ShareListInput {
84
+ ListID: string;
85
+ Target: ShareTargetInput;
86
+ PermissionLevel: SharePermissionLevel;
87
+ }
88
+ export declare class InviteToListInput {
89
+ ListID: string;
90
+ Email: string;
91
+ Role: 'Editor' | 'Viewer';
92
+ TtlHours?: number;
93
+ }
94
+ export declare class ShareTargetType {
95
+ Kind: 'user' | 'role';
96
+ UserID?: string;
97
+ RoleID?: string;
98
+ }
99
+ export declare class ListShareSummaryType {
100
+ PermissionID: string;
101
+ ListID: string;
102
+ Target: ShareTargetType;
103
+ PermissionLevel: SharePermissionLevel;
104
+ Status: string;
105
+ SharedByUserID?: string;
106
+ CreatedAt: Date;
107
+ }
108
+ export declare class SharedListSummaryType {
109
+ ListID: string;
110
+ ListName: string;
111
+ PermissionLevel: SharePermissionLevel;
112
+ SharedByUserID?: string;
113
+ SharedAt: Date;
114
+ }
115
+ export declare class ShareResultType {
116
+ Success: boolean;
117
+ ResultCode: string;
118
+ Message: string;
119
+ PermissionID?: string;
120
+ }
121
+ export declare class InviteResultType {
122
+ Success: boolean;
123
+ ResultCode: string;
124
+ Message: string;
125
+ InvitationID?: string;
126
+ Token?: string;
127
+ ExpiresAt?: Date;
128
+ }
129
+ export declare class AcceptInvitationResultType {
130
+ Success: boolean;
131
+ ResultCode: string;
132
+ Message: string;
133
+ PermissionID?: string;
134
+ ListID?: string;
135
+ }
136
+ export declare class ComposeListsInput {
137
+ Op: SetOpKind;
138
+ Inputs: ListSourceInput[];
139
+ Target?: ListSourceInput;
140
+ }
141
+ export declare function toCoreSource(input: ListSourceInput): CoreListSource;
142
+ export declare function fromCoreDelta(delta: CoreListDelta): ListDeltaType;
143
+ export declare function fromCoreWarning(w: CoreListDeltaWarning): ListDeltaWarningType;
144
+ export declare function fromCoreApplyResult(r: CoreApplyResult): ApplyListResultType;
145
+ /** Convert a `ListShareSummary` from the core into the GraphQL DTO. */
146
+ export declare function fromCoreShareSummary(s: ListShareSummary): ListShareSummaryType;
147
+ /** Guard for required-when-Kind-X fields on discriminated inputs. */
148
+ export declare function requireField<T>(value: T | undefined, name: string): T;
149
+ /** Three failure helpers — one per output type — keep the try/catch
150
+ * sites in the resolver methods tiny. */
151
+ export declare function shareUnexpected(e: unknown, op: string): ShareResultType;
152
+ export declare function inviteUnexpected(e: unknown, op: string): InviteResultType;
153
+ export declare function acceptInvitationUnexpected(e: unknown, op: string): AcceptInvitationResultType;
154
+ export declare function rebuildDeltaFromInput(input: ApplyDeltaInput): CoreListDelta;
155
+ export declare class ListOperationsResolver extends ResolverBase {
156
+ PreviewListDelta(input: ComputeDeltaInput, ctx: AppContext): Promise<ListDeltaType>;
157
+ ApplyListDelta(input: ApplyDeltaInput, ctx: AppContext): Promise<ApplyListResultType>;
158
+ MaterializeListFromView(viewId: string, options: MaterializeOptionsInput, ctx: AppContext): Promise<ApplyListResultType>;
159
+ AddViewResultsToList(viewId: string, listId: string, ctx: AppContext): Promise<ApplyListResultType>;
160
+ RefreshListFromSource(listId: string, mode: 'Additive' | 'Sync', confirmDrops: boolean, ctx: AppContext): Promise<ApplyListResultType>;
161
+ ComposeLists(input: ComposeListsInput, ctx: AppContext): Promise<ListDeltaType>;
162
+ ShareList(input: ShareListInput, ctx: AppContext): Promise<ShareResultType>;
163
+ UnshareList(permissionId: string, ctx: AppContext): Promise<ShareResultType>;
164
+ InviteToList(input: InviteToListInput, ctx: AppContext): Promise<InviteResultType>;
165
+ AcceptListInvitation(token: string, ctx: AppContext): Promise<AcceptInvitationResultType>;
166
+ RevokeListInvitation(invitationId: string, ctx: AppContext): Promise<ShareResultType>;
167
+ ListSharesForList(listId: string, ctx: AppContext): Promise<ListShareSummaryType[]>;
168
+ ListsSharedWithMe(ctx: AppContext): Promise<SharedListSummaryType[]>;
169
+ private buildSharing;
170
+ private buildOps;
171
+ private requireUser;
172
+ private unexpectedFailure;
173
+ }
174
+ export default ListOperationsResolver;
175
+ //# sourceMappingURL=ListOperationsResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListOperationsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ListOperationsResolver.ts"],"names":[],"mappings":"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"}