@dmptool/types 1.2.3 → 1.2.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 (42) hide show
  1. package/README.md +8 -0
  2. package/dist/answers/__tests__/answers.spec.js +122 -6
  3. package/dist/answers/answer.d.ts +3 -3
  4. package/dist/answers/graphQLAnswers.d.ts +120 -25
  5. package/dist/answers/graphQLAnswers.js +22 -5
  6. package/dist/answers/index.d.ts +399 -31
  7. package/dist/answers/index.js +8 -2
  8. package/dist/answers/numberAnswers.d.ts +40 -0
  9. package/dist/answers/numberAnswers.js +8 -1
  10. package/dist/answers/tableAnswers.d.ts +1688 -75
  11. package/dist/answers/tableAnswers.js +63 -2
  12. package/dist/questions/__tests__/graphQLQuestions.spec.js +177 -39
  13. package/dist/questions/__tests__/numberQuestions.spec.js +36 -0
  14. package/dist/questions/__tests__/tableQuestion.spec.js +145 -0
  15. package/dist/questions/__tests__/usage.spec.js +162 -1
  16. package/dist/questions/graphQLQuestions.d.ts +420 -60
  17. package/dist/questions/graphQLQuestions.js +257 -11
  18. package/dist/questions/index.d.ts +4849 -189
  19. package/dist/questions/index.js +9 -2
  20. package/dist/questions/numberQuestions.d.ts +105 -0
  21. package/dist/questions/numberQuestions.js +12 -1
  22. package/dist/questions/question.d.ts +4 -4
  23. package/dist/questions/question.js +25 -4
  24. package/dist/questions/tableQuestions.d.ts +5930 -679
  25. package/dist/questions/tableQuestions.js +188 -3
  26. package/dist/schemas/anyAnswer.schema.json +137 -17
  27. package/dist/schemas/anyQuestion.schema.json +847 -101
  28. package/dist/schemas/anyTableColumnAnswer.schema.json +116 -5
  29. package/dist/schemas/anyTableColumnQuestion.schema.json +326 -24
  30. package/dist/schemas/licenseSearchAnswer.schema.json +49 -0
  31. package/dist/schemas/licenseSearchQuestion.schema.json +164 -0
  32. package/dist/schemas/metadataStandardSearchAnswer.schema.json +49 -0
  33. package/dist/schemas/metadataStandardSearchQuestion.schema.json +174 -0
  34. package/dist/schemas/numberWithContextAnswer.schema.json +45 -0
  35. package/dist/schemas/numberWithContextQuestion.schema.json +84 -0
  36. package/dist/schemas/repositorySearchAnswer.schema.json +49 -0
  37. package/dist/schemas/repositorySearchQuestion.schema.json +180 -0
  38. package/dist/schemas/researchOutputTableAnswer.schema.json +519 -0
  39. package/dist/schemas/researchOutputTableQuestion.schema.json +1183 -0
  40. package/dist/schemas/tableAnswer.schema.json +116 -5
  41. package/dist/schemas/tableQuestion.schema.json +348 -24
  42. package/package.json +9 -5
@@ -1,9 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AffiliationSearchQuestionSchema = exports.affiliationQuery = exports.FilteredSearchQuestionSchema = void 0;
3
+ exports.LicenseSearchQuestionSchema = exports.licenseQuery = exports.MetadataStandardSearchQuestionSchema = exports.metadataStandardQuery = exports.RepositorySearchQuestionSchema = exports.repositoryQuery = exports.AffiliationSearchQuestionSchema = exports.affiliationQuery = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const question_1 = require("./question");
6
6
  const BaseAttributes = question_1.QuestionSchema.shape.attributes;
7
+ const paginationOptions = zod_1.z.object({
8
+ type: zod_1.z.enum(['OFFSET', 'CURSOR']).default('OFFSET'), // Type of pagination to use
9
+ limit: zod_1.z.number().default(10), // Number of items per page
10
+ offset: zod_1.z.number().optional().default(0), // Offset for pagination (if using offset-based pagination)
11
+ cursor: zod_1.z.string().optional(), // Cursor for pagination (if using cursor-based pagination)
12
+ sortField: zod_1.z.string().default('name'), // Field to sort by
13
+ sortOrder: zod_1.z.enum(['ASC', 'DESC']).default('ASC'), // Sort order
14
+ });
7
15
  // An input variable for a GraphQL query
8
16
  const GraphQLVariable = zod_1.z.object({
9
17
  minLength: zod_1.z.number().optional(), // A min length for the variable before executing the query
@@ -13,6 +21,19 @@ const GraphQLVariable = zod_1.z.object({
13
21
  type: zod_1.z.string().default('string'), // The type of the variable (default is string)
14
22
  defaultValue: zod_1.z.string().optional() // The default value for the variable (no default)
15
23
  });
24
+ const GraphQLPaginationVariables = GraphQLVariable.extend({
25
+ name: zod_1.z.enum(['paginationOptions']).default('paginationOptions'),
26
+ type: zod_1.z.string().default('paginationOptions'),
27
+ label: zod_1.z.string().default('Pagination Options'),
28
+ options: paginationOptions.default({
29
+ type: 'OFFSET',
30
+ limit: 10,
31
+ offset: 0,
32
+ cursor: undefined,
33
+ sortField: 'name',
34
+ sortOrder: 'ASC',
35
+ })
36
+ });
16
37
  // A property from a GraphQL query response that will be displayed to the user
17
38
  const GraphQLDisplayField = zod_1.z.object({
18
39
  propertyName: zod_1.z.string().default('id'), // MUST match a property name in the query response
@@ -27,16 +48,6 @@ const GraphQLQuery = zod_1.z.object({
27
48
  responseField: zod_1.z.string().default('query.items'), // How to get at the location of displayFields in the response
28
49
  variables: zod_1.z.array(GraphQLVariable).default([{}]) // The variables for the query
29
50
  });
30
- // Filtered search question and answer
31
- // TODO: This one is for future use to help build out the components of the
32
- // Research Outputs Question Type (e.g. License selector, Repository selector, etc.)
33
- exports.FilteredSearchQuestionSchema = question_1.QuestionSchema.merge(zod_1.z.object({
34
- type: zod_1.z.literal('filteredSearch'),
35
- graphQL: GraphQLQuery.default({}), // The GraphQL query options for the search
36
- attributes: BaseAttributes.merge(zod_1.z.object({
37
- multiple: zod_1.z.boolean().default(true) // Whether to allow multiple selections
38
- })).default({})
39
- }));
40
51
  // Typeahead search question and answer
41
52
  const TypeaheadSearchQuestionSchema = question_1.QuestionSchema.merge(zod_1.z.object({
42
53
  type: zod_1.z.literal('typeaheadSearch'), // The type of question
@@ -76,3 +87,238 @@ exports.AffiliationSearchQuestionSchema = TypeaheadSearchQuestionSchema.merge(zo
76
87
  responseField: zod_1.z.literal("affiliations.items").default('affiliations.items'),
77
88
  })).default({}),
78
89
  }));
90
+ exports.repositoryQuery = '' +
91
+ 'query Repositories($term: String, $keywords: [String!], $repositoryType: String, $paginationOptions: PaginationOptions){ ' +
92
+ 'repositories(term: $term, keywords: $keywords, repositoryType: $repositoryType, paginationOptions: $paginationOptions) { ' +
93
+ 'totalCount ' +
94
+ 'currentOffset ' +
95
+ 'limit ' +
96
+ 'hasNextPage ' +
97
+ 'hasPreviousPage ' +
98
+ 'availableSortFields ' +
99
+ 'items { ' +
100
+ 'id ' +
101
+ 'name ' +
102
+ 'uri ' +
103
+ 'description ' +
104
+ 'website ' +
105
+ 'keywords ' +
106
+ 'repositoryTypes ' +
107
+ '} ' +
108
+ '} ' +
109
+ '}';
110
+ const RepositorySearchTermVariable = GraphQLVariable.extend({
111
+ name: zod_1.z.literal("term").default('term'),
112
+ type: zod_1.z.string().default("string"),
113
+ label: zod_1.z.string().default("Search for a repository"),
114
+ minLength: zod_1.z.literal(3).default(3),
115
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.term").optional(),
116
+ });
117
+ const RepositorySearchRepositoryTypeVariable = GraphQLVariable.extend({
118
+ name: zod_1.z.literal("repositoryType").default('repositoryType'),
119
+ type: zod_1.z.string().default("string"),
120
+ label: zod_1.z.string().default("Repository type"),
121
+ minLength: zod_1.z.literal(3).default(3),
122
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.repositoryType").optional(),
123
+ });
124
+ const RepositorySearchKeywordsVariable = GraphQLVariable.extend({
125
+ name: zod_1.z.literal("keywords").default('keywords'),
126
+ type: zod_1.z.string().default("string"),
127
+ label: zod_1.z.string().default("Subject Areas"),
128
+ minLength: zod_1.z.literal(3).default(3),
129
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.keywords").optional(),
130
+ });
131
+ const RepositorySearchResultName = GraphQLDisplayField.extend({
132
+ propertyName: zod_1.z.literal("name").default('name'),
133
+ label: zod_1.z.string().default("Name"),
134
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.name").optional(),
135
+ });
136
+ const RepositorySearchResultDescription = GraphQLDisplayField.extend({
137
+ propertyName: zod_1.z.literal("description").default('description'),
138
+ label: zod_1.z.string().default("Description"),
139
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.description").optional(),
140
+ });
141
+ const RepositorySearchResultWebsite = GraphQLDisplayField.extend({
142
+ propertyName: zod_1.z.literal("website").default('website'),
143
+ label: zod_1.z.string().default("Website"),
144
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.website").optional(),
145
+ });
146
+ const RepositorySearchResultKeywords = GraphQLDisplayField.extend({
147
+ propertyName: zod_1.z.literal("keywords").default('keywords'),
148
+ label: zod_1.z.string().default("Subject Areas"),
149
+ labelTranslationKey: zod_1.z.string().default("RepositorySearch.keywords").optional(),
150
+ });
151
+ const defaultRepositorySearchTerm = RepositorySearchTermVariable.parse({});
152
+ const defaultRepositorySearchType = RepositorySearchRepositoryTypeVariable.parse({});
153
+ const defaultRepositorySearchSubjectAreas = RepositorySearchKeywordsVariable.parse({});
154
+ const defaultRepositorySearchName = RepositorySearchResultName.parse({});
155
+ const defaultRepositorySearchDescription = RepositorySearchResultDescription.parse({});
156
+ const defaultRepositorySearchWebsite = RepositorySearchResultWebsite.parse({});
157
+ const defaultRepositorySearchKeywords = RepositorySearchResultKeywords.parse({});
158
+ const defaultRepositoryPaginationOptions = GraphQLPaginationVariables.parse({});
159
+ // Repository search question and answer
160
+ exports.RepositorySearchQuestionSchema = TypeaheadSearchQuestionSchema.merge(zod_1.z.object({
161
+ type: zod_1.z.literal('repositorySearch'),
162
+ attributes: BaseAttributes.default({}),
163
+ graphQL: GraphQLQuery.merge(zod_1.z.object({
164
+ query: zod_1.z.literal(exports.repositoryQuery).default(exports.repositoryQuery),
165
+ queryId: zod_1.z.string().default('useRepositoriesQuery').optional(),
166
+ variables: zod_1.z.array(GraphQLVariable).default([
167
+ defaultRepositorySearchTerm,
168
+ defaultRepositorySearchSubjectAreas,
169
+ defaultRepositorySearchType,
170
+ defaultRepositoryPaginationOptions,
171
+ ]),
172
+ answerField: zod_1.z.literal('uri').default('uri'),
173
+ displayFields: zod_1.z.array(GraphQLDisplayField).default([
174
+ defaultRepositorySearchName,
175
+ defaultRepositorySearchDescription,
176
+ defaultRepositorySearchWebsite,
177
+ defaultRepositorySearchKeywords,
178
+ ]),
179
+ responseField: zod_1.z.literal("repositories.items").default('repositories.items'),
180
+ })).default({}),
181
+ }));
182
+ exports.metadataStandardQuery = '' +
183
+ 'query MetadataStandards($term: String, $keywords: [String!], $paginationOptions: PaginationOptions){ ' +
184
+ 'metadataStandards(term: $term, keywords: $keywords, paginationOptions: $paginationOptions) { ' +
185
+ 'totalCount ' +
186
+ 'currentOffset ' +
187
+ 'limit ' +
188
+ 'hasNextPage ' +
189
+ 'hasPreviousPage ' +
190
+ 'availableSortFields ' +
191
+ 'items { ' +
192
+ 'id ' +
193
+ 'name ' +
194
+ 'uri ' +
195
+ 'description ' +
196
+ 'keywords ' +
197
+ '} ' +
198
+ '} ' +
199
+ '}';
200
+ const MetadataStandardSearchTermVariable = GraphQLVariable.extend({
201
+ name: zod_1.z.literal("term").default('term'),
202
+ type: zod_1.z.string().default("string"),
203
+ label: zod_1.z.string().default("Search for a metadata standard"),
204
+ minLength: zod_1.z.literal(3).default(3),
205
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.term").optional(),
206
+ });
207
+ const MetadataStandardSearchKeywordsVariable = GraphQLVariable.extend({
208
+ name: zod_1.z.literal("keywords").default('keywords'),
209
+ type: zod_1.z.string().default("string"),
210
+ label: zod_1.z.string().default("Subject Areas"),
211
+ minLength: zod_1.z.literal(3).default(3),
212
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.keywords").optional(),
213
+ });
214
+ const MetadataStandardSearchResultName = GraphQLDisplayField.extend({
215
+ propertyName: zod_1.z.literal("name").default('name'),
216
+ label: zod_1.z.string().default("Name"),
217
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.name").optional(),
218
+ });
219
+ const MetadataStandardSearchResultDescription = GraphQLDisplayField.extend({
220
+ propertyName: zod_1.z.literal("description").default('description'),
221
+ label: zod_1.z.string().default("Description"),
222
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.description").optional(),
223
+ });
224
+ const MetadataStandardSearchResultWebsite = GraphQLDisplayField.extend({
225
+ propertyName: zod_1.z.literal("website").default('website'),
226
+ label: zod_1.z.string().default("Website"),
227
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.website").optional(),
228
+ });
229
+ const MetadataStandardSearchResultKeywords = GraphQLDisplayField.extend({
230
+ propertyName: zod_1.z.literal("keywords").default('keywords'),
231
+ label: zod_1.z.string().default("Subject Areas"),
232
+ labelTranslationKey: zod_1.z.string().default("MetadataStandardSearch.keywords").optional(),
233
+ });
234
+ const defaultMetadataStandardSearchTerm = MetadataStandardSearchTermVariable.parse({});
235
+ const defaultMetadataStandardSearchSubjectAreas = MetadataStandardSearchKeywordsVariable.parse({});
236
+ const defaultMetadataStandardPaginationOptions = GraphQLPaginationVariables.parse({});
237
+ const defaultMetadataStandardName = MetadataStandardSearchResultName.parse({});
238
+ const defaultMetadataStandardDescription = MetadataStandardSearchResultDescription.parse({});
239
+ const defaultMetadataStandardWebsite = MetadataStandardSearchResultWebsite.parse({});
240
+ const defaultMetadataStandardKeywords = MetadataStandardSearchResultKeywords.parse({});
241
+ exports.MetadataStandardSearchQuestionSchema = TypeaheadSearchQuestionSchema.merge(zod_1.z.object({
242
+ type: zod_1.z.literal('metadataStandardSearch'),
243
+ attributes: BaseAttributes.default({}),
244
+ graphQL: GraphQLQuery.merge(zod_1.z.object({
245
+ query: zod_1.z.literal(exports.metadataStandardQuery).default(exports.metadataStandardQuery),
246
+ queryId: zod_1.z.string().default('useMetadataStandardsQuery').optional(),
247
+ variables: zod_1.z.array(GraphQLVariable).default([
248
+ defaultMetadataStandardSearchTerm,
249
+ defaultMetadataStandardSearchSubjectAreas,
250
+ defaultMetadataStandardPaginationOptions,
251
+ ]),
252
+ answerField: zod_1.z.literal('uri').default('uri'),
253
+ displayFields: zod_1.z.array(GraphQLDisplayField).default([
254
+ defaultMetadataStandardName,
255
+ defaultMetadataStandardDescription,
256
+ defaultMetadataStandardWebsite,
257
+ defaultMetadataStandardKeywords,
258
+ ]),
259
+ responseField: zod_1.z.literal("metadataStandards.items").default('metadataStandards.items'),
260
+ })).default({}),
261
+ }));
262
+ exports.licenseQuery = '' +
263
+ 'query Licenses($term: String, $paginationOptions: PaginationOptions){ ' +
264
+ 'license(term: $term, paginationOptions: $paginationOptions) { ' +
265
+ 'totalCount ' +
266
+ 'currentOffset ' +
267
+ 'limit ' +
268
+ 'hasNextPage ' +
269
+ 'hasPreviousPage ' +
270
+ 'availableSortFields ' +
271
+ 'items { ' +
272
+ 'id ' +
273
+ 'name ' +
274
+ 'uri ' +
275
+ 'description ' +
276
+ '} ' +
277
+ '} ' +
278
+ '}';
279
+ const LicenseSearchTermVariable = GraphQLVariable.extend({
280
+ name: zod_1.z.literal("term").default('term'),
281
+ type: zod_1.z.string().default("string"),
282
+ label: zod_1.z.string().default("Search for a license"),
283
+ minLength: zod_1.z.literal(3).default(3),
284
+ labelTranslationKey: zod_1.z.string().default("LicenseSearch.term").optional(),
285
+ });
286
+ const LicenseSearchResultName = GraphQLDisplayField.extend({
287
+ propertyName: zod_1.z.literal("name").default('name'),
288
+ label: zod_1.z.string().default("Name"),
289
+ labelTranslationKey: zod_1.z.string().default("License.name").optional(),
290
+ });
291
+ const LicenseSearchResultDescription = GraphQLDisplayField.extend({
292
+ propertyName: zod_1.z.literal("description").default('description'),
293
+ label: zod_1.z.string().default("Description"),
294
+ labelTranslationKey: zod_1.z.string().default("License.description").optional(),
295
+ });
296
+ const LicenseSearchResultRecommended = GraphQLDisplayField.extend({
297
+ propertyName: zod_1.z.literal("recommended").default('recommended'),
298
+ label: zod_1.z.string().default("Recommended"),
299
+ labelTranslationKey: zod_1.z.string().default("License.recommended").optional(),
300
+ });
301
+ const defaultLicenseSearchTerm = LicenseSearchTermVariable.parse({});
302
+ const defaultLicensePaginationOptions = GraphQLPaginationVariables.parse({});
303
+ const defaultLicenseName = LicenseSearchResultName.parse({});
304
+ const defaultLicenseDescription = LicenseSearchResultDescription.parse({});
305
+ const defaultLicenseRecommended = LicenseSearchResultRecommended.parse({});
306
+ exports.LicenseSearchQuestionSchema = TypeaheadSearchQuestionSchema.merge(zod_1.z.object({
307
+ type: zod_1.z.literal('licenseSearch'),
308
+ attributes: BaseAttributes.default({}),
309
+ graphQL: GraphQLQuery.merge(zod_1.z.object({
310
+ query: zod_1.z.literal(exports.licenseQuery).default(exports.licenseQuery),
311
+ queryId: zod_1.z.string().default('useLicensesQuery').optional(),
312
+ variables: zod_1.z.array(GraphQLVariable).default([
313
+ defaultLicenseSearchTerm,
314
+ defaultLicensePaginationOptions,
315
+ ]),
316
+ answerField: zod_1.z.literal('uri').default('uri'),
317
+ displayFields: zod_1.z.array(GraphQLDisplayField).default([
318
+ defaultLicenseName,
319
+ defaultLicenseDescription,
320
+ defaultLicenseRecommended,
321
+ ]),
322
+ responseField: zod_1.z.literal("licenses.items").default('licenses.items'),
323
+ })).default({}),
324
+ }));