@payloadcms/graphql 3.0.0-alpha.5 → 3.0.0-alpha.51

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 (176) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +39 -95
  4. package/dist/index.js.map +1 -0
  5. package/dist/resolvers/auth/access.d.ts +1 -1
  6. package/dist/resolvers/auth/access.d.ts.map +1 -1
  7. package/dist/resolvers/auth/access.js +8 -23
  8. package/dist/resolvers/auth/access.js.map +1 -0
  9. package/dist/resolvers/auth/forgotPassword.d.ts.map +1 -1
  10. package/dist/resolvers/auth/forgotPassword.js +6 -16
  11. package/dist/resolvers/auth/forgotPassword.js.map +1 -0
  12. package/dist/resolvers/auth/init.d.ts +1 -1
  13. package/dist/resolvers/auth/init.d.ts.map +1 -1
  14. package/dist/resolvers/auth/init.js +6 -16
  15. package/dist/resolvers/auth/init.js.map +1 -0
  16. package/dist/resolvers/auth/login.d.ts +1 -4
  17. package/dist/resolvers/auth/login.d.ts.map +1 -1
  18. package/dist/resolvers/auth/login.js +10 -20
  19. package/dist/resolvers/auth/login.js.map +1 -0
  20. package/dist/resolvers/auth/logout.d.ts.map +1 -1
  21. package/dist/resolvers/auth/logout.js +8 -18
  22. package/dist/resolvers/auth/logout.js.map +1 -0
  23. package/dist/resolvers/auth/me.d.ts.map +1 -1
  24. package/dist/resolvers/auth/me.js +6 -16
  25. package/dist/resolvers/auth/me.js.map +1 -0
  26. package/dist/resolvers/auth/refresh.d.ts +1 -2
  27. package/dist/resolvers/auth/refresh.d.ts.map +1 -1
  28. package/dist/resolvers/auth/refresh.js +11 -21
  29. package/dist/resolvers/auth/refresh.js.map +1 -0
  30. package/dist/resolvers/auth/resetPassword.d.ts +1 -2
  31. package/dist/resolvers/auth/resetPassword.d.ts.map +1 -1
  32. package/dist/resolvers/auth/resetPassword.js +10 -20
  33. package/dist/resolvers/auth/resetPassword.js.map +1 -0
  34. package/dist/resolvers/auth/unlock.d.ts +1 -1
  35. package/dist/resolvers/auth/unlock.d.ts.map +1 -1
  36. package/dist/resolvers/auth/unlock.js +6 -16
  37. package/dist/resolvers/auth/unlock.js.map +1 -0
  38. package/dist/resolvers/auth/verifyEmail.d.ts +1 -1
  39. package/dist/resolvers/auth/verifyEmail.d.ts.map +1 -1
  40. package/dist/resolvers/auth/verifyEmail.js +6 -16
  41. package/dist/resolvers/auth/verifyEmail.js.map +1 -0
  42. package/dist/resolvers/collections/create.d.ts +1 -1
  43. package/dist/resolvers/collections/create.d.ts.map +1 -1
  44. package/dist/resolvers/collections/create.js +6 -16
  45. package/dist/resolvers/collections/create.js.map +1 -0
  46. package/dist/resolvers/collections/delete.d.ts.map +1 -1
  47. package/dist/resolvers/collections/delete.js +8 -18
  48. package/dist/resolvers/collections/delete.js.map +1 -0
  49. package/dist/resolvers/collections/docAccess.d.ts +1 -1
  50. package/dist/resolvers/collections/docAccess.d.ts.map +1 -1
  51. package/dist/resolvers/collections/docAccess.js +7 -17
  52. package/dist/resolvers/collections/docAccess.js.map +1 -0
  53. package/dist/resolvers/collections/duplicate.d.ts +13 -0
  54. package/dist/resolvers/collections/duplicate.d.ts.map +1 -0
  55. package/dist/resolvers/collections/duplicate.js +22 -0
  56. package/dist/resolvers/collections/duplicate.js.map +1 -0
  57. package/dist/resolvers/collections/find.d.ts.map +1 -1
  58. package/dist/resolvers/collections/find.js +8 -18
  59. package/dist/resolvers/collections/find.js.map +1 -0
  60. package/dist/resolvers/collections/findByID.d.ts.map +1 -1
  61. package/dist/resolvers/collections/findByID.js +8 -18
  62. package/dist/resolvers/collections/findByID.js.map +1 -0
  63. package/dist/resolvers/collections/findVersionByID.d.ts +1 -1
  64. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -1
  65. package/dist/resolvers/collections/findVersionByID.js +8 -18
  66. package/dist/resolvers/collections/findVersionByID.js.map +1 -0
  67. package/dist/resolvers/collections/findVersions.d.ts +1 -1
  68. package/dist/resolvers/collections/findVersions.d.ts.map +1 -1
  69. package/dist/resolvers/collections/findVersions.js +8 -18
  70. package/dist/resolvers/collections/findVersions.js.map +1 -0
  71. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
  72. package/dist/resolvers/collections/restoreVersion.js +6 -16
  73. package/dist/resolvers/collections/restoreVersion.js.map +1 -0
  74. package/dist/resolvers/collections/update.d.ts.map +1 -1
  75. package/dist/resolvers/collections/update.js +8 -18
  76. package/dist/resolvers/collections/update.js.map +1 -0
  77. package/dist/resolvers/globals/docAccess.d.ts +1 -1
  78. package/dist/resolvers/globals/docAccess.d.ts.map +1 -1
  79. package/dist/resolvers/globals/docAccess.js +6 -16
  80. package/dist/resolvers/globals/docAccess.js.map +1 -0
  81. package/dist/resolvers/globals/findOne.d.ts.map +1 -1
  82. package/dist/resolvers/globals/findOne.js +6 -16
  83. package/dist/resolvers/globals/findOne.js.map +1 -0
  84. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -1
  85. package/dist/resolvers/globals/findVersionByID.js +6 -16
  86. package/dist/resolvers/globals/findVersionByID.js.map +1 -0
  87. package/dist/resolvers/globals/findVersions.d.ts.map +1 -1
  88. package/dist/resolvers/globals/findVersions.js +6 -16
  89. package/dist/resolvers/globals/findVersions.js.map +1 -0
  90. package/dist/resolvers/globals/index.d.ts +5 -5
  91. package/dist/resolvers/globals/index.d.ts.map +1 -1
  92. package/dist/resolvers/globals/index.js +7 -38
  93. package/dist/resolvers/globals/index.js.map +1 -0
  94. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
  95. package/dist/resolvers/globals/restoreVersion.js +6 -16
  96. package/dist/resolvers/globals/restoreVersion.js.map +1 -0
  97. package/dist/resolvers/globals/update.d.ts +1 -1
  98. package/dist/resolvers/globals/update.d.ts.map +1 -1
  99. package/dist/resolvers/globals/update.js +6 -16
  100. package/dist/resolvers/globals/update.js.map +1 -0
  101. package/dist/resolvers/types.d.ts +2 -2
  102. package/dist/resolvers/types.d.ts.map +1 -1
  103. package/dist/resolvers/types.js +2 -5
  104. package/dist/resolvers/types.js.map +1 -0
  105. package/dist/schema/buildFallbackLocaleInputType.d.ts +1 -1
  106. package/dist/schema/buildFallbackLocaleInputType.d.ts.map +1 -1
  107. package/dist/schema/buildFallbackLocaleInputType.js +6 -21
  108. package/dist/schema/buildFallbackLocaleInputType.js.map +1 -0
  109. package/dist/schema/buildLocaleInputType.d.ts +1 -1
  110. package/dist/schema/buildLocaleInputType.d.ts.map +1 -1
  111. package/dist/schema/buildLocaleInputType.js +6 -21
  112. package/dist/schema/buildLocaleInputType.js.map +1 -0
  113. package/dist/schema/buildMutationInputType.d.ts +6 -6
  114. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  115. package/dist/schema/buildMutationInputType.js +59 -81
  116. package/dist/schema/buildMutationInputType.js.map +1 -0
  117. package/dist/schema/buildObjectType.d.ts +5 -5
  118. package/dist/schema/buildObjectType.d.ts.map +1 -1
  119. package/dist/schema/buildObjectType.js +68 -83
  120. package/dist/schema/buildObjectType.js.map +1 -0
  121. package/dist/schema/buildPaginatedListType.js +15 -25
  122. package/dist/schema/buildPaginatedListType.js.map +1 -0
  123. package/dist/schema/buildPoliciesType.d.ts +1 -1
  124. package/dist/schema/buildPoliciesType.d.ts.map +1 -1
  125. package/dist/schema/buildPoliciesType.js +31 -57
  126. package/dist/schema/buildPoliciesType.js.map +1 -0
  127. package/dist/schema/buildWhereInputType.d.ts +1 -1
  128. package/dist/schema/buildWhereInputType.d.ts.map +1 -1
  129. package/dist/schema/buildWhereInputType.js +19 -34
  130. package/dist/schema/buildWhereInputType.js.map +1 -0
  131. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
  132. package/dist/schema/fieldToWhereInputSchemaMap.js +34 -48
  133. package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -0
  134. package/dist/schema/initCollections.d.ts.map +1 -1
  135. package/dist/schema/initCollections.js +180 -185
  136. package/dist/schema/initCollections.js.map +1 -0
  137. package/dist/schema/initGlobals.d.ts.map +1 -1
  138. package/dist/schema/initGlobals.js +59 -73
  139. package/dist/schema/initGlobals.js.map +1 -0
  140. package/dist/schema/isFieldNullable.js +4 -14
  141. package/dist/schema/isFieldNullable.js.map +1 -0
  142. package/dist/schema/operators.js +2 -12
  143. package/dist/schema/operators.js.map +1 -0
  144. package/dist/schema/recursivelyBuildNestedPaths.d.ts.map +1 -1
  145. package/dist/schema/recursivelyBuildNestedPaths.js +11 -26
  146. package/dist/schema/recursivelyBuildNestedPaths.js.map +1 -0
  147. package/dist/schema/withNullableType.d.ts.map +1 -1
  148. package/dist/schema/withNullableType.js +4 -14
  149. package/dist/schema/withNullableType.js.map +1 -0
  150. package/dist/schema/withOperators.d.ts +1 -1
  151. package/dist/schema/withOperators.d.ts.map +1 -1
  152. package/dist/schema/withOperators.js +82 -86
  153. package/dist/schema/withOperators.js.map +1 -0
  154. package/dist/utilities/combineParentName.js +4 -19
  155. package/dist/utilities/combineParentName.js.map +1 -0
  156. package/dist/utilities/formatName.js +2 -12
  157. package/dist/utilities/formatName.js.map +1 -0
  158. package/dist/utilities/formatName.spec.js +3 -12
  159. package/dist/utilities/formatName.spec.js.map +1 -0
  160. package/dist/utilities/formatOptions.js +5 -20
  161. package/dist/utilities/formatOptions.js.map +1 -0
  162. package/dist/utilities/getCheckIfLocaleObject.js +2 -12
  163. package/dist/utilities/getCheckIfLocaleObject.js.map +1 -0
  164. package/dist/utilities/groupOrTabHasRequiredSubfield.js +4 -14
  165. package/dist/utilities/groupOrTabHasRequiredSubfield.js.map +1 -0
  166. package/dist/utilities/uppercase.js +2 -12
  167. package/dist/utilities/uppercase.js.map +1 -0
  168. package/dist/utilities/wrapCustomResolver.d.ts +2 -2
  169. package/dist/utilities/wrapCustomResolver.d.ts.map +1 -1
  170. package/dist/utilities/wrapCustomResolver.js +4 -14
  171. package/dist/utilities/wrapCustomResolver.js.map +1 -0
  172. package/package.json +12 -7
  173. package/src/index.ts +24 -24
  174. package/dist/utilities/isolateTransactionID.d.ts +0 -2
  175. package/dist/utilities/isolateTransactionID.d.ts.map +0 -1
  176. package/dist/utilities/isolateTransactionID.js +0 -3
@@ -1,46 +1,32 @@
1
- /* eslint-disable no-param-reassign */ "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _graphql = require("graphql");
12
- const _utilities = require("payload/utilities");
13
- const _types = require("payload/types");
14
- const _versions = require("payload/versions");
15
- const _forgotPassword = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/forgotPassword"));
16
- const _init = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/init"));
17
- const _login = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/login"));
18
- const _logout = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/logout"));
19
- const _me = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/me"));
20
- const _refresh = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/refresh"));
21
- const _resetPassword = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/resetPassword"));
22
- const _unlock = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/unlock"));
23
- const _verifyEmail = /*#__PURE__*/ _interop_require_default(require("../resolvers/auth/verifyEmail"));
24
- const _buildMutationInputType = require("./buildMutationInputType");
25
- const _buildObjectType = /*#__PURE__*/ _interop_require_default(require("./buildObjectType"));
26
- const _buildPaginatedListType = /*#__PURE__*/ _interop_require_default(require("./buildPaginatedListType"));
27
- const _buildPoliciesType = require("./buildPoliciesType");
28
- const _buildWhereInputType = /*#__PURE__*/ _interop_require_default(require("./buildWhereInputType"));
29
- const _formatName = /*#__PURE__*/ _interop_require_default(require("../utilities/formatName"));
30
- const _create = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/create"));
31
- const _delete = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/delete"));
32
- const _docAccess = require("../resolvers/collections/docAccess");
33
- const _find = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/find"));
34
- const _findByID = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/findByID"));
35
- const _findVersionByID = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/findVersionByID"));
36
- const _findVersions = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/findVersions"));
37
- const _restoreVersion = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/restoreVersion"));
38
- const _update = /*#__PURE__*/ _interop_require_default(require("../resolvers/collections/update"));
39
- function _interop_require_default(obj) {
40
- return obj && obj.__esModule ? obj : {
41
- default: obj
42
- };
43
- }
1
+ /* eslint-disable no-param-reassign */ import { GraphQLBoolean, GraphQLInt, GraphQLNonNull, GraphQLObjectType, GraphQLString } from 'graphql';
2
+ import { fieldAffectsData } from 'payload/types';
3
+ import { flattenTopLevelFields, formatNames, toWords } from 'payload/utilities';
4
+ import { buildVersionCollectionFields } from 'payload/versions';
5
+ import forgotPassword from '../resolvers/auth/forgotPassword.js';
6
+ import init from '../resolvers/auth/init.js';
7
+ import login from '../resolvers/auth/login.js';
8
+ import logout from '../resolvers/auth/logout.js';
9
+ import me from '../resolvers/auth/me.js';
10
+ import refresh from '../resolvers/auth/refresh.js';
11
+ import resetPassword from '../resolvers/auth/resetPassword.js';
12
+ import unlock from '../resolvers/auth/unlock.js';
13
+ import verifyEmail from '../resolvers/auth/verifyEmail.js';
14
+ import createResolver from '../resolvers/collections/create.js';
15
+ import getDeleteResolver from '../resolvers/collections/delete.js';
16
+ import { docAccessResolver } from '../resolvers/collections/docAccess.js';
17
+ import duplicateResolver from '../resolvers/collections/duplicate.js';
18
+ import findResolver from '../resolvers/collections/find.js';
19
+ import findByIDResolver from '../resolvers/collections/findByID.js';
20
+ import findVersionByIDResolver from '../resolvers/collections/findVersionByID.js';
21
+ import findVersionsResolver from '../resolvers/collections/findVersions.js';
22
+ import restoreVersionResolver from '../resolvers/collections/restoreVersion.js';
23
+ import updateResolver from '../resolvers/collections/update.js';
24
+ import formatName from '../utilities/formatName.js';
25
+ import { buildMutationInputType, getCollectionIDType } from './buildMutationInputType.js';
26
+ import buildObjectType from './buildObjectType.js';
27
+ import buildPaginatedListType from './buildPaginatedListType.js';
28
+ import { buildPolicyType } from './buildPoliciesType.js';
29
+ import buildWhereInputType from './buildWhereInputType.js';
44
30
  function initCollectionsGraphQL({ config, graphqlResult }) {
45
31
  Object.keys(graphqlResult.collections).forEach((slug)=>{
46
32
  const collection = graphqlResult.collections[slug];
@@ -48,14 +34,14 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
48
34
  if (!graphQL) return;
49
35
  let singularName;
50
36
  let pluralName;
51
- const fromSlug = (0, _utilities.formatNames)(collection.config.slug);
37
+ const fromSlug = formatNames(collection.config.slug);
52
38
  if (graphQL.singularName) {
53
- singularName = (0, _utilities.toWords)(graphQL.singularName, true);
39
+ singularName = toWords(graphQL.singularName, true);
54
40
  } else {
55
41
  singularName = fromSlug.singular;
56
42
  }
57
43
  if (graphQL.pluralName) {
58
- pluralName = (0, _utilities.toWords)(graphQL.pluralName, true);
44
+ pluralName = toWords(graphQL.pluralName, true);
59
45
  } else {
60
46
  pluralName = fromSlug.plural;
61
47
  }
@@ -67,8 +53,8 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
67
53
  pluralName = `all${singularName}`;
68
54
  }
69
55
  collection.graphQL = {};
70
- const hasIDField = (0, _utilities.flattenTopLevelFields)(fields).findIndex((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id') > -1;
71
- const idType = (0, _buildMutationInputType.getCollectionIDType)(config.db.defaultIDType, collectionConfig);
56
+ const hasIDField = flattenTopLevelFields(fields).findIndex((field)=>fieldAffectsData(field) && field.name === 'id') > -1;
57
+ const idType = getCollectionIDType(config.db.defaultIDType, collectionConfig);
72
58
  const baseFields = {};
73
59
  const whereInputFields = [
74
60
  ...fields
@@ -83,17 +69,17 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
83
69
  });
84
70
  }
85
71
  const forceNullableObjectType = Boolean(versions?.drafts);
86
- collection.graphQL.type = (0, _buildObjectType.default)({
72
+ collection.graphQL.type = buildObjectType({
87
73
  name: singularName,
88
74
  baseFields,
75
+ config,
89
76
  fields,
90
77
  forceNullable: forceNullableObjectType,
91
- parentName: singularName,
92
78
  graphqlResult,
93
- config
79
+ parentName: singularName
94
80
  });
95
- collection.graphQL.paginatedType = (0, _buildPaginatedListType.default)(pluralName, collection.graphQL.type);
96
- collection.graphQL.whereInputType = (0, _buildWhereInputType.default)({
81
+ collection.graphQL.paginatedType = buildPaginatedListType(pluralName, collection.graphQL.type);
82
+ collection.graphQL.whereInputType = buildWhereInputType({
97
83
  name: singularName,
98
84
  fields: whereInputFields,
99
85
  parentName: singularName
@@ -101,39 +87,40 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
101
87
  if (collectionConfig.auth && !collectionConfig.auth.disableLocalStrategy) {
102
88
  fields.push({
103
89
  name: 'password',
90
+ type: 'text',
104
91
  label: 'Password',
105
- required: true,
106
- type: 'text'
92
+ required: true
107
93
  });
108
94
  }
109
- const createMutationInputType = (0, _buildMutationInputType.buildMutationInputType)({
95
+ const createMutationInputType = buildMutationInputType({
110
96
  name: singularName,
97
+ config,
111
98
  fields,
112
- parentName: singularName,
113
99
  graphqlResult,
114
- config
100
+ parentName: singularName
115
101
  });
116
102
  if (createMutationInputType) {
117
- collection.graphQL.mutationInputType = new _graphql.GraphQLNonNull(createMutationInputType);
103
+ collection.graphQL.mutationInputType = new GraphQLNonNull(createMutationInputType);
118
104
  }
119
- const updateMutationInputType = (0, _buildMutationInputType.buildMutationInputType)({
105
+ const updateMutationInputType = buildMutationInputType({
120
106
  name: `${singularName}Update`,
121
- fields: fields.filter((field)=>!((0, _types.fieldAffectsData)(field) && field.name === 'id')),
122
- parentName: `${singularName}Update`,
107
+ config,
108
+ fields: fields.filter((field)=>!(fieldAffectsData(field) && field.name === 'id')),
123
109
  forceNullable: true,
124
110
  graphqlResult,
125
- config
111
+ parentName: `${singularName}Update`
126
112
  });
127
113
  if (updateMutationInputType) {
128
- collection.graphQL.updateMutationInputType = new _graphql.GraphQLNonNull(updateMutationInputType);
114
+ collection.graphQL.updateMutationInputType = new GraphQLNonNull(updateMutationInputType);
129
115
  }
130
116
  graphqlResult.Query.fields[singularName] = {
117
+ type: collection.graphQL.type,
131
118
  args: {
132
119
  id: {
133
- type: new _graphql.GraphQLNonNull(idType)
120
+ type: new GraphQLNonNull(idType)
134
121
  },
135
122
  draft: {
136
- type: _graphql.GraphQLBoolean
123
+ type: GraphQLBoolean
137
124
  },
138
125
  ...config.localization ? {
139
126
  fallbackLocale: {
@@ -144,13 +131,13 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
144
131
  }
145
132
  } : {}
146
133
  },
147
- resolve: (0, _findByID.default)(collection),
148
- type: collection.graphQL.type
134
+ resolve: findByIDResolver(collection)
149
135
  };
150
136
  graphqlResult.Query.fields[pluralName] = {
137
+ type: buildPaginatedListType(pluralName, collection.graphQL.type),
151
138
  args: {
152
139
  draft: {
153
- type: _graphql.GraphQLBoolean
140
+ type: GraphQLBoolean
154
141
  },
155
142
  where: {
156
143
  type: collection.graphQL.whereInputType
@@ -164,33 +151,33 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
164
151
  }
165
152
  } : {},
166
153
  limit: {
167
- type: _graphql.GraphQLInt
154
+ type: GraphQLInt
168
155
  },
169
156
  page: {
170
- type: _graphql.GraphQLInt
157
+ type: GraphQLInt
171
158
  },
172
159
  sort: {
173
- type: _graphql.GraphQLString
160
+ type: GraphQLString
174
161
  }
175
162
  },
176
- resolve: (0, _find.default)(collection),
177
- type: (0, _buildPaginatedListType.default)(pluralName, collection.graphQL.type)
163
+ resolve: findResolver(collection)
178
164
  };
179
165
  graphqlResult.Query.fields[`docAccess${singularName}`] = {
166
+ type: buildPolicyType({
167
+ type: 'collection',
168
+ entity: collectionConfig,
169
+ scope: 'docAccess',
170
+ typeSuffix: 'DocAccess'
171
+ }),
180
172
  args: {
181
173
  id: {
182
- type: new _graphql.GraphQLNonNull(idType)
174
+ type: new GraphQLNonNull(idType)
183
175
  }
184
176
  },
185
- resolve: (0, _docAccess.docAccessResolver)(collection),
186
- type: (0, _buildPoliciesType.buildPolicyType)({
187
- entity: collectionConfig,
188
- scope: 'docAccess',
189
- type: 'collection',
190
- typeSuffix: 'DocAccess'
191
- })
177
+ resolve: docAccessResolver(collection)
192
178
  };
193
179
  graphqlResult.Mutation.fields[`create${singularName}`] = {
180
+ type: collection.graphQL.type,
194
181
  args: {
195
182
  ...createMutationInputType ? {
196
183
  data: {
@@ -198,7 +185,7 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
198
185
  }
199
186
  } : {},
200
187
  draft: {
201
- type: _graphql.GraphQLBoolean
188
+ type: GraphQLBoolean
202
189
  },
203
190
  ...config.localization ? {
204
191
  locale: {
@@ -206,16 +193,16 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
206
193
  }
207
194
  } : {}
208
195
  },
209
- resolve: (0, _create.default)(collection),
210
- type: collection.graphQL.type
196
+ resolve: createResolver(collection)
211
197
  };
212
198
  graphqlResult.Mutation.fields[`update${singularName}`] = {
199
+ type: collection.graphQL.type,
213
200
  args: {
214
201
  id: {
215
- type: new _graphql.GraphQLNonNull(idType)
202
+ type: new GraphQLNonNull(idType)
216
203
  },
217
204
  autosave: {
218
- type: _graphql.GraphQLBoolean
205
+ type: GraphQLBoolean
219
206
  },
220
207
  ...updateMutationInputType ? {
221
208
  data: {
@@ -223,7 +210,7 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
223
210
  }
224
211
  } : {},
225
212
  draft: {
226
- type: _graphql.GraphQLBoolean
213
+ type: GraphQLBoolean
227
214
  },
228
215
  ...config.localization ? {
229
216
  locale: {
@@ -231,46 +218,55 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
231
218
  }
232
219
  } : {}
233
220
  },
234
- resolve: (0, _update.default)(collection),
235
- type: collection.graphQL.type
221
+ resolve: updateResolver(collection)
236
222
  };
237
223
  graphqlResult.Mutation.fields[`delete${singularName}`] = {
224
+ type: collection.graphQL.type,
225
+ args: {
226
+ id: {
227
+ type: new GraphQLNonNull(idType)
228
+ }
229
+ },
230
+ resolve: getDeleteResolver(collection)
231
+ };
232
+ graphqlResult.Mutation.fields[`duplicate${singularName}`] = {
233
+ type: collection.graphQL.type,
238
234
  args: {
239
235
  id: {
240
- type: new _graphql.GraphQLNonNull(idType)
236
+ type: new GraphQLNonNull(idType)
241
237
  }
242
238
  },
243
- resolve: (0, _delete.default)(collection),
244
- type: collection.graphQL.type
239
+ resolve: duplicateResolver(collection)
245
240
  };
246
241
  if (collectionConfig.versions) {
247
- const versionIDType = config.db.defaultIDType === 'text' ? _graphql.GraphQLString : _graphql.GraphQLInt;
242
+ const versionIDType = config.db.defaultIDType === 'text' ? GraphQLString : GraphQLInt;
248
243
  const versionCollectionFields = [
249
- ...(0, _versions.buildVersionCollectionFields)(collectionConfig),
244
+ ...buildVersionCollectionFields(collectionConfig),
250
245
  {
251
246
  name: 'id',
252
247
  type: config.db.defaultIDType
253
248
  },
254
249
  {
255
250
  name: 'createdAt',
256
- label: 'Created At',
257
- type: 'date'
251
+ type: 'date',
252
+ label: 'Created At'
258
253
  },
259
254
  {
260
255
  name: 'updatedAt',
261
- label: 'Updated At',
262
- type: 'date'
256
+ type: 'date',
257
+ label: 'Updated At'
263
258
  }
264
259
  ];
265
- collection.graphQL.versionType = (0, _buildObjectType.default)({
260
+ collection.graphQL.versionType = buildObjectType({
266
261
  name: `${singularName}Version`,
262
+ config,
267
263
  fields: versionCollectionFields,
268
264
  forceNullable: forceNullableObjectType,
269
- parentName: `${singularName}Version`,
270
265
  graphqlResult,
271
- config
266
+ parentName: `${singularName}Version`
272
267
  });
273
- graphqlResult.Query.fields[`version${(0, _formatName.default)(singularName)}`] = {
268
+ graphqlResult.Query.fields[`version${formatName(singularName)}`] = {
269
+ type: collection.graphQL.versionType,
274
270
  args: {
275
271
  id: {
276
272
  type: versionIDType
@@ -284,13 +280,13 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
284
280
  }
285
281
  } : {}
286
282
  },
287
- resolve: (0, _findVersionByID.default)(collection),
288
- type: collection.graphQL.versionType
283
+ resolve: findVersionByIDResolver(collection)
289
284
  };
290
285
  graphqlResult.Query.fields[`versions${pluralName}`] = {
286
+ type: buildPaginatedListType(`versions${formatName(pluralName)}`, collection.graphQL.versionType),
291
287
  args: {
292
288
  where: {
293
- type: (0, _buildWhereInputType.default)({
289
+ type: buildWhereInputType({
294
290
  name: `versions${singularName}`,
295
291
  fields: versionCollectionFields,
296
292
  parentName: `versions${singularName}`
@@ -305,188 +301,187 @@ function initCollectionsGraphQL({ config, graphqlResult }) {
305
301
  }
306
302
  } : {},
307
303
  limit: {
308
- type: _graphql.GraphQLInt
304
+ type: GraphQLInt
309
305
  },
310
306
  page: {
311
- type: _graphql.GraphQLInt
307
+ type: GraphQLInt
312
308
  },
313
309
  sort: {
314
- type: _graphql.GraphQLString
310
+ type: GraphQLString
315
311
  }
316
312
  },
317
- resolve: (0, _findVersions.default)(collection),
318
- type: (0, _buildPaginatedListType.default)(`versions${(0, _formatName.default)(pluralName)}`, collection.graphQL.versionType)
313
+ resolve: findVersionsResolver(collection)
319
314
  };
320
- graphqlResult.Mutation.fields[`restoreVersion${(0, _formatName.default)(singularName)}`] = {
315
+ graphqlResult.Mutation.fields[`restoreVersion${formatName(singularName)}`] = {
316
+ type: collection.graphQL.type,
321
317
  args: {
322
318
  id: {
323
319
  type: versionIDType
324
320
  }
325
321
  },
326
- resolve: (0, _restoreVersion.default)(collection),
327
- type: collection.graphQL.type
322
+ resolve: restoreVersionResolver(collection)
328
323
  };
329
324
  }
330
325
  if (collectionConfig.auth) {
331
326
  const authFields = collectionConfig.auth.disableLocalStrategy ? [] : [
332
327
  {
333
328
  name: 'email',
334
- required: true,
335
- type: 'email'
329
+ type: 'email',
330
+ required: true
336
331
  }
337
332
  ];
338
- collection.graphQL.JWT = (0, _buildObjectType.default)({
339
- name: (0, _formatName.default)(`${slug}JWT`),
333
+ collection.graphQL.JWT = buildObjectType({
334
+ name: formatName(`${slug}JWT`),
335
+ config,
340
336
  fields: [
341
- ...collectionConfig.fields.filter((field)=>(0, _types.fieldAffectsData)(field) && field.saveToJWT),
337
+ ...collectionConfig.fields.filter((field)=>fieldAffectsData(field) && field.saveToJWT),
342
338
  ...authFields,
343
339
  {
344
340
  name: 'collection',
345
- required: true,
346
- type: 'text'
341
+ type: 'text',
342
+ required: true
347
343
  }
348
344
  ],
349
- parentName: (0, _formatName.default)(`${slug}JWT`),
350
345
  graphqlResult,
351
- config
346
+ parentName: formatName(`${slug}JWT`)
352
347
  });
353
348
  graphqlResult.Query.fields[`me${singularName}`] = {
354
- resolve: (0, _me.default)(collection),
355
- type: new _graphql.GraphQLObjectType({
356
- name: (0, _formatName.default)(`${slug}Me`),
349
+ type: new GraphQLObjectType({
350
+ name: formatName(`${slug}Me`),
357
351
  fields: {
358
352
  collection: {
359
- type: _graphql.GraphQLString
353
+ type: GraphQLString
360
354
  },
361
355
  exp: {
362
- type: _graphql.GraphQLInt
356
+ type: GraphQLInt
363
357
  },
364
358
  token: {
365
- type: _graphql.GraphQLString
359
+ type: GraphQLString
366
360
  },
367
361
  user: {
368
362
  type: collection.graphQL.type
369
363
  }
370
364
  }
371
- })
365
+ }),
366
+ resolve: me(collection)
372
367
  };
373
368
  graphqlResult.Query.fields[`initialized${singularName}`] = {
374
- resolve: (0, _init.default)(collection.config.slug),
375
- type: _graphql.GraphQLBoolean
369
+ type: GraphQLBoolean,
370
+ resolve: init(collection.config.slug)
376
371
  };
377
372
  graphqlResult.Mutation.fields[`refreshToken${singularName}`] = {
378
- args: {
379
- token: {
380
- type: _graphql.GraphQLString
381
- }
382
- },
383
- resolve: (0, _refresh.default)(collection),
384
- type: new _graphql.GraphQLObjectType({
385
- name: (0, _formatName.default)(`${slug}Refreshed${singularName}`),
373
+ type: new GraphQLObjectType({
374
+ name: formatName(`${slug}Refreshed${singularName}`),
386
375
  fields: {
387
376
  exp: {
388
- type: _graphql.GraphQLInt
377
+ type: GraphQLInt
389
378
  },
390
379
  refreshedToken: {
391
- type: _graphql.GraphQLString
380
+ type: GraphQLString
392
381
  },
393
382
  user: {
394
383
  type: collection.graphQL.JWT
395
384
  }
396
385
  }
397
- })
386
+ }),
387
+ args: {
388
+ token: {
389
+ type: GraphQLString
390
+ }
391
+ },
392
+ resolve: refresh(collection)
398
393
  };
399
394
  graphqlResult.Mutation.fields[`logout${singularName}`] = {
400
- resolve: (0, _logout.default)(collection),
401
- type: _graphql.GraphQLString
395
+ type: GraphQLString,
396
+ resolve: logout(collection)
402
397
  };
403
398
  if (!collectionConfig.auth.disableLocalStrategy) {
404
399
  if (collectionConfig.auth.maxLoginAttempts > 0) {
405
400
  graphqlResult.Mutation.fields[`unlock${singularName}`] = {
401
+ type: new GraphQLNonNull(GraphQLBoolean),
406
402
  args: {
407
403
  email: {
408
- type: new _graphql.GraphQLNonNull(_graphql.GraphQLString)
404
+ type: new GraphQLNonNull(GraphQLString)
409
405
  }
410
406
  },
411
- resolve: (0, _unlock.default)(collection),
412
- type: new _graphql.GraphQLNonNull(_graphql.GraphQLBoolean)
407
+ resolve: unlock(collection)
413
408
  };
414
409
  }
415
410
  graphqlResult.Mutation.fields[`login${singularName}`] = {
416
- args: {
417
- email: {
418
- type: _graphql.GraphQLString
419
- },
420
- password: {
421
- type: _graphql.GraphQLString
422
- }
423
- },
424
- resolve: (0, _login.default)(collection),
425
- type: new _graphql.GraphQLObjectType({
426
- name: (0, _formatName.default)(`${slug}LoginResult`),
411
+ type: new GraphQLObjectType({
412
+ name: formatName(`${slug}LoginResult`),
427
413
  fields: {
428
414
  exp: {
429
- type: _graphql.GraphQLInt
415
+ type: GraphQLInt
430
416
  },
431
417
  token: {
432
- type: _graphql.GraphQLString
418
+ type: GraphQLString
433
419
  },
434
420
  user: {
435
421
  type: collection.graphQL.type
436
422
  }
437
423
  }
438
- })
424
+ }),
425
+ args: {
426
+ email: {
427
+ type: GraphQLString
428
+ },
429
+ password: {
430
+ type: GraphQLString
431
+ }
432
+ },
433
+ resolve: login(collection)
439
434
  };
440
435
  graphqlResult.Mutation.fields[`forgotPassword${singularName}`] = {
436
+ type: new GraphQLNonNull(GraphQLBoolean),
441
437
  args: {
442
438
  disableEmail: {
443
- type: _graphql.GraphQLBoolean
439
+ type: GraphQLBoolean
444
440
  },
445
441
  email: {
446
- type: new _graphql.GraphQLNonNull(_graphql.GraphQLString)
442
+ type: new GraphQLNonNull(GraphQLString)
447
443
  },
448
444
  expiration: {
449
- type: _graphql.GraphQLInt
445
+ type: GraphQLInt
450
446
  }
451
447
  },
452
- resolve: (0, _forgotPassword.default)(collection),
453
- type: new _graphql.GraphQLNonNull(_graphql.GraphQLBoolean)
448
+ resolve: forgotPassword(collection)
454
449
  };
455
450
  graphqlResult.Mutation.fields[`resetPassword${singularName}`] = {
456
- args: {
457
- password: {
458
- type: _graphql.GraphQLString
459
- },
460
- token: {
461
- type: _graphql.GraphQLString
462
- }
463
- },
464
- resolve: (0, _resetPassword.default)(collection),
465
- type: new _graphql.GraphQLObjectType({
466
- name: (0, _formatName.default)(`${slug}ResetPassword`),
451
+ type: new GraphQLObjectType({
452
+ name: formatName(`${slug}ResetPassword`),
467
453
  fields: {
468
454
  token: {
469
- type: _graphql.GraphQLString
455
+ type: GraphQLString
470
456
  },
471
457
  user: {
472
458
  type: collection.graphQL.type
473
459
  }
474
460
  }
475
- })
461
+ }),
462
+ args: {
463
+ password: {
464
+ type: GraphQLString
465
+ },
466
+ token: {
467
+ type: GraphQLString
468
+ }
469
+ },
470
+ resolve: resetPassword(collection)
476
471
  };
477
472
  graphqlResult.Mutation.fields[`verifyEmail${singularName}`] = {
473
+ type: GraphQLBoolean,
478
474
  args: {
479
475
  token: {
480
- type: _graphql.GraphQLString
476
+ type: GraphQLString
481
477
  }
482
478
  },
483
- resolve: (0, _verifyEmail.default)(collection),
484
- type: _graphql.GraphQLBoolean
479
+ resolve: verifyEmail(collection)
485
480
  };
486
481
  }
487
482
  }
488
483
  });
489
484
  }
490
- const _default = initCollectionsGraphQL;
485
+ export default initCollectionsGraphQL;
491
486
 
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvaW5pdENvbGxlY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQge1xuICBHcmFwaFFMQm9vbGVhbixcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxufSBmcm9tICdncmFwaHFsJ1xuXG5pbXBvcnQgeyBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMsIGZvcm1hdE5hbWVzLCB0b1dvcmRzIH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMgfSBmcm9tICdwYXlsb2FkL3ZlcnNpb25zJ1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMSW5mbyB9IGZyb20gJ3BheWxvYWQvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgQ29sbGVjdGlvbiwgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZywgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBPYmplY3RUeXBlQ29uZmlnIH0gZnJvbSAnLi9idWlsZE9iamVjdFR5cGUnXG5pbXBvcnQgZm9yZ290UGFzc3dvcmQgZnJvbSAnLi4vcmVzb2x2ZXJzL2F1dGgvZm9yZ290UGFzc3dvcmQnXG5pbXBvcnQgaW5pdCBmcm9tICcuLi9yZXNvbHZlcnMvYXV0aC9pbml0J1xuaW1wb3J0IGxvZ2luIGZyb20gJy4uL3Jlc29sdmVycy9hdXRoL2xvZ2luJ1xuaW1wb3J0IGxvZ291dCBmcm9tICcuLi9yZXNvbHZlcnMvYXV0aC9sb2dvdXQnXG5pbXBvcnQgbWUgZnJvbSAnLi4vcmVzb2x2ZXJzL2F1dGgvbWUnXG5pbXBvcnQgcmVmcmVzaCBmcm9tICcuLi9yZXNvbHZlcnMvYXV0aC9yZWZyZXNoJ1xuaW1wb3J0IHJlc2V0UGFzc3dvcmQgZnJvbSAnLi4vcmVzb2x2ZXJzL2F1dGgvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB1bmxvY2sgZnJvbSAnLi4vcmVzb2x2ZXJzL2F1dGgvdW5sb2NrJ1xuaW1wb3J0IHZlcmlmeUVtYWlsIGZyb20gJy4uL3Jlc29sdmVycy9hdXRoL3ZlcmlmeUVtYWlsJ1xuaW1wb3J0IHsgYnVpbGRNdXRhdGlvbklucHV0VHlwZSwgZ2V0Q29sbGVjdGlvbklEVHlwZSB9IGZyb20gJy4vYnVpbGRNdXRhdGlvbklucHV0VHlwZSdcbmltcG9ydCBidWlsZE9iamVjdFR5cGUgZnJvbSAnLi9idWlsZE9iamVjdFR5cGUnXG5pbXBvcnQgYnVpbGRQYWdpbmF0ZWRMaXN0VHlwZSBmcm9tICcuL2J1aWxkUGFnaW5hdGVkTGlzdFR5cGUnXG5pbXBvcnQgeyBidWlsZFBvbGljeVR5cGUgfSBmcm9tICcuL2J1aWxkUG9saWNpZXNUeXBlJ1xuaW1wb3J0IGJ1aWxkV2hlcmVJbnB1dFR5cGUgZnJvbSAnLi9idWlsZFdoZXJlSW5wdXRUeXBlJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgY3JlYXRlUmVzb2x2ZXIgZnJvbSAnLi4vcmVzb2x2ZXJzL2NvbGxlY3Rpb25zL2NyZWF0ZSdcbmltcG9ydCBnZXREZWxldGVSZXNvbHZlciBmcm9tICcuLi9yZXNvbHZlcnMvY29sbGVjdGlvbnMvZGVsZXRlJ1xuaW1wb3J0IHsgZG9jQWNjZXNzUmVzb2x2ZXIgfSBmcm9tICcuLi9yZXNvbHZlcnMvY29sbGVjdGlvbnMvZG9jQWNjZXNzJ1xuaW1wb3J0IGZpbmRSZXNvbHZlciBmcm9tICcuLi9yZXNvbHZlcnMvY29sbGVjdGlvbnMvZmluZCdcbmltcG9ydCBmaW5kQnlJRFJlc29sdmVyIGZyb20gJy4uL3Jlc29sdmVycy9jb2xsZWN0aW9ucy9maW5kQnlJRCdcbmltcG9ydCBmaW5kVmVyc2lvbkJ5SURSZXNvbHZlciBmcm9tICcuLi9yZXNvbHZlcnMvY29sbGVjdGlvbnMvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IGZpbmRWZXJzaW9uc1Jlc29sdmVyIGZyb20gJy4uL3Jlc29sdmVycy9jb2xsZWN0aW9ucy9maW5kVmVyc2lvbnMnXG5pbXBvcnQgcmVzdG9yZVZlcnNpb25SZXNvbHZlciBmcm9tICcuLi9yZXNvbHZlcnMvY29sbGVjdGlvbnMvcmVzdG9yZVZlcnNpb24nXG5pbXBvcnQgdXBkYXRlUmVzb2x2ZXIgZnJvbSAnLi4vcmVzb2x2ZXJzL2NvbGxlY3Rpb25zL3VwZGF0ZSdcblxudHlwZSBJbml0Q29sbGVjdGlvbnNHcmFwaFFMQXJncyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZ3JhcGhxbFJlc3VsdDogR3JhcGhRTEluZm9cbn1cbmZ1bmN0aW9uIGluaXRDb2xsZWN0aW9uc0dyYXBoUUwoeyBjb25maWcsIGdyYXBocWxSZXN1bHQgfTogSW5pdENvbGxlY3Rpb25zR3JhcGhRTEFyZ3MpOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMoZ3JhcGhxbFJlc3VsdC5jb2xsZWN0aW9ucykuZm9yRWFjaCgoc2x1ZykgPT4ge1xuICAgIGNvbnN0IGNvbGxlY3Rpb246IENvbGxlY3Rpb24gPSBncmFwaHFsUmVzdWx0LmNvbGxlY3Rpb25zW3NsdWddXG4gICAgY29uc3Qge1xuICAgICAgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgY29uZmlnOiB7IGZpZWxkcywgZ3JhcGhRTCA9IHt9IGFzIFNhbml0aXplZENvbGxlY3Rpb25Db25maWdbJ2dyYXBoUUwnXSwgdmVyc2lvbnMgfSxcbiAgICB9ID0gY29sbGVjdGlvblxuXG4gICAgaWYgKCFncmFwaFFMKSByZXR1cm5cblxuICAgIGxldCBzaW5ndWxhck5hbWVcbiAgICBsZXQgcGx1cmFsTmFtZVxuICAgIGNvbnN0IGZyb21TbHVnID0gZm9ybWF0TmFtZXMoY29sbGVjdGlvbi5jb25maWcuc2x1ZylcbiAgICBpZiAoZ3JhcGhRTC5zaW5ndWxhck5hbWUpIHtcbiAgICAgIHNpbmd1bGFyTmFtZSA9IHRvV29yZHMoZ3JhcGhRTC5zaW5ndWxhck5hbWUsIHRydWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNpbmd1bGFyTmFtZSA9IGZyb21TbHVnLnNpbmd1bGFyXG4gICAgfVxuICAgIGlmIChncmFwaFFMLnBsdXJhbE5hbWUpIHtcbiAgICAgIHBsdXJhbE5hbWUgPSB0b1dvcmRzKGdyYXBoUUwucGx1cmFsTmFtZSwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcGx1cmFsTmFtZSA9IGZyb21TbHVnLnBsdXJhbFxuICAgIH1cblxuICAgIC8vIEZvciBjb2xsZWN0aW9ucyBuYW1lZCAnTWVkaWEnIG9yIHNpbWlsYXIsXG4gICAgLy8gdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBzaW5ndWxhciBuYW1lXG4gICAgLy8gd2lsbCBlcXVhbCB0aGUgcGx1cmFsIG5hbWUuIEFwcGVuZCBgYWxsYCB0byB0aGUgYmVnaW5uaW5nXG4gICAgLy8gb2YgcG90ZW50aWFsIGNvbmZsaWN0c1xuICAgIGlmIChzaW5ndWxhck5hbWUgPT09IHBsdXJhbE5hbWUpIHtcbiAgICAgIHBsdXJhbE5hbWUgPSBgYWxsJHtzaW5ndWxhck5hbWV9YFxuICAgIH1cblxuICAgIGNvbGxlY3Rpb24uZ3JhcGhRTCA9IHt9IGFzIENvbGxlY3Rpb25bJ2dyYXBoUUwnXVxuXG4gICAgY29uc3QgaGFzSURGaWVsZCA9XG4gICAgICBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzKS5maW5kSW5kZXgoXG4gICAgICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICkgPiAtMVxuXG4gICAgY29uc3QgaWRUeXBlID0gZ2V0Q29sbGVjdGlvbklEVHlwZShjb25maWcuZGIuZGVmYXVsdElEVHlwZSwgY29sbGVjdGlvbkNvbmZpZylcblxuICAgIGNvbnN0IGJhc2VGaWVsZHM6IE9iamVjdFR5cGVDb25maWcgPSB7fVxuXG4gICAgY29uc3Qgd2hlcmVJbnB1dEZpZWxkcyA9IFsuLi5maWVsZHNdXG5cbiAgICBpZiAoIWhhc0lERmllbGQpIHtcbiAgICAgIGJhc2VGaWVsZHMuaWQgPSB7IHR5cGU6IGlkVHlwZSB9XG4gICAgICB3aGVyZUlucHV0RmllbGRzLnB1c2goe1xuICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICB0eXBlOiBjb25maWcuZGIuZGVmYXVsdElEVHlwZSBhcyAndGV4dCcsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGZvcmNlTnVsbGFibGVPYmplY3RUeXBlID0gQm9vbGVhbih2ZXJzaW9ucz8uZHJhZnRzKVxuXG4gICAgY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUgPSBidWlsZE9iamVjdFR5cGUoe1xuICAgICAgbmFtZTogc2luZ3VsYXJOYW1lLFxuICAgICAgYmFzZUZpZWxkcyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGZvcmNlTnVsbGFibGU6IGZvcmNlTnVsbGFibGVPYmplY3RUeXBlLFxuICAgICAgcGFyZW50TmFtZTogc2luZ3VsYXJOYW1lLFxuICAgICAgZ3JhcGhxbFJlc3VsdCxcbiAgICAgIGNvbmZpZyxcbiAgICB9KVxuXG4gICAgY29sbGVjdGlvbi5ncmFwaFFMLnBhZ2luYXRlZFR5cGUgPSBidWlsZFBhZ2luYXRlZExpc3RUeXBlKHBsdXJhbE5hbWUsIGNvbGxlY3Rpb24uZ3JhcGhRTC50eXBlKVxuXG4gICAgY29sbGVjdGlvbi5ncmFwaFFMLndoZXJlSW5wdXRUeXBlID0gYnVpbGRXaGVyZUlucHV0VHlwZSh7XG4gICAgICBuYW1lOiBzaW5ndWxhck5hbWUsXG4gICAgICBmaWVsZHM6IHdoZXJlSW5wdXRGaWVsZHMsXG4gICAgICBwYXJlbnROYW1lOiBzaW5ndWxhck5hbWUsXG4gICAgfSlcblxuICAgIGlmIChjb2xsZWN0aW9uQ29uZmlnLmF1dGggJiYgIWNvbGxlY3Rpb25Db25maWcuYXV0aC5kaXNhYmxlTG9jYWxTdHJhdGVneSkge1xuICAgICAgZmllbGRzLnB1c2goe1xuICAgICAgICBuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICBsYWJlbDogJ1Bhc3N3b3JkJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlTXV0YXRpb25JbnB1dFR5cGUgPSBidWlsZE11dGF0aW9uSW5wdXRUeXBlKHtcbiAgICAgIG5hbWU6IHNpbmd1bGFyTmFtZSxcbiAgICAgIGZpZWxkcyxcbiAgICAgIHBhcmVudE5hbWU6IHNpbmd1bGFyTmFtZSxcbiAgICAgIGdyYXBocWxSZXN1bHQsXG4gICAgICBjb25maWcsXG4gICAgfSlcbiAgICBpZiAoY3JlYXRlTXV0YXRpb25JbnB1dFR5cGUpIHtcbiAgICAgIGNvbGxlY3Rpb24uZ3JhcGhRTC5tdXRhdGlvbklucHV0VHlwZSA9IG5ldyBHcmFwaFFMTm9uTnVsbChjcmVhdGVNdXRhdGlvbklucHV0VHlwZSlcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVNdXRhdGlvbklucHV0VHlwZSA9IGJ1aWxkTXV0YXRpb25JbnB1dFR5cGUoe1xuICAgICAgbmFtZTogYCR7c2luZ3VsYXJOYW1lfVVwZGF0ZWAsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiAhKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpKSxcbiAgICAgIHBhcmVudE5hbWU6IGAke3Npbmd1bGFyTmFtZX1VcGRhdGVgLFxuICAgICAgZm9yY2VOdWxsYWJsZTogdHJ1ZSxcbiAgICAgIGdyYXBocWxSZXN1bHQsXG4gICAgICBjb25maWcsXG4gICAgfSlcbiAgICBpZiAodXBkYXRlTXV0YXRpb25JbnB1dFR5cGUpIHtcbiAgICAgIGNvbGxlY3Rpb24uZ3JhcGhRTC51cGRhdGVNdXRhdGlvbklucHV0VHlwZSA9IG5ldyBHcmFwaFFMTm9uTnVsbCh1cGRhdGVNdXRhdGlvbklucHV0VHlwZSlcbiAgICB9XG5cbiAgICBncmFwaHFsUmVzdWx0LlF1ZXJ5LmZpZWxkc1tzaW5ndWxhck5hbWVdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICBpZDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoaWRUeXBlKSB9LFxuICAgICAgICBkcmFmdDogeyB0eXBlOiBHcmFwaFFMQm9vbGVhbiB9LFxuICAgICAgICAuLi4oY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZTogeyB0eXBlOiBncmFwaHFsUmVzdWx0LnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBncmFwaHFsUmVzdWx0LnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGZpbmRCeUlEUmVzb2x2ZXIoY29sbGVjdGlvbiksXG4gICAgICB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwudHlwZSxcbiAgICB9XG5cbiAgICBncmFwaHFsUmVzdWx0LlF1ZXJ5LmZpZWxkc1twbHVyYWxOYW1lXSA9IHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgZHJhZnQ6IHsgdHlwZTogR3JhcGhRTEJvb2xlYW4gfSxcbiAgICAgICAgd2hlcmU6IHsgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLndoZXJlSW5wdXRUeXBlIH0sXG4gICAgICAgIC4uLihjb25maWcubG9jYWxpemF0aW9uXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlOiB7IHR5cGU6IGdyYXBocWxSZXN1bHQudHlwZXMuZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgICAgbG9jYWxlOiB7IHR5cGU6IGdyYXBocWxSZXN1bHQudHlwZXMubG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIGxpbWl0OiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAgICAgICAgcGFnZTogeyB0eXBlOiBHcmFwaFFMSW50IH0sXG4gICAgICAgIHNvcnQ6IHsgdHlwZTogR3JhcGhRTFN0cmluZyB9LFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGZpbmRSZXNvbHZlcihjb2xsZWN0aW9uKSxcbiAgICAgIHR5cGU6IGJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUocGx1cmFsTmFtZSwgY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUpLFxuICAgIH1cblxuICAgIGdyYXBocWxSZXN1bHQuUXVlcnkuZmllbGRzW2Bkb2NBY2Nlc3Mke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaWQ6IHsgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKGlkVHlwZSkgfSxcbiAgICAgIH0sXG4gICAgICByZXNvbHZlOiBkb2NBY2Nlc3NSZXNvbHZlcihjb2xsZWN0aW9uKSxcbiAgICAgIHR5cGU6IGJ1aWxkUG9saWN5VHlwZSh7XG4gICAgICAgIGVudGl0eTogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgc2NvcGU6ICdkb2NBY2Nlc3MnLFxuICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsXG4gICAgICAgIHR5cGVTdWZmaXg6ICdEb2NBY2Nlc3MnLFxuICAgICAgfSksXG4gICAgfVxuXG4gICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYGNyZWF0ZSR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICAuLi4oY3JlYXRlTXV0YXRpb25JbnB1dFR5cGVcbiAgICAgICAgICA/IHsgZGF0YTogeyB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwubXV0YXRpb25JbnB1dFR5cGUgfSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIGRyYWZ0OiB7IHR5cGU6IEdyYXBoUUxCb29sZWFuIH0sXG4gICAgICAgIC4uLihjb25maWcubG9jYWxpemF0aW9uXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBncmFwaHFsUmVzdWx0LnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGNyZWF0ZVJlc29sdmVyKGNvbGxlY3Rpb24pLFxuICAgICAgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUsXG4gICAgfVxuXG4gICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYHVwZGF0ZSR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICBpZDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoaWRUeXBlKSB9LFxuICAgICAgICBhdXRvc2F2ZTogeyB0eXBlOiBHcmFwaFFMQm9vbGVhbiB9LFxuICAgICAgICAuLi4odXBkYXRlTXV0YXRpb25JbnB1dFR5cGVcbiAgICAgICAgICA/IHsgZGF0YTogeyB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwudXBkYXRlTXV0YXRpb25JbnB1dFR5cGUgfSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIGRyYWZ0OiB7IHR5cGU6IEdyYXBoUUxCb29sZWFuIH0sXG4gICAgICAgIC4uLihjb25maWcubG9jYWxpemF0aW9uXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBncmFwaHFsUmVzdWx0LnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IHVwZGF0ZVJlc29sdmVyKGNvbGxlY3Rpb24pLFxuICAgICAgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUsXG4gICAgfVxuXG4gICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYGRlbGV0ZSR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICBpZDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoaWRUeXBlKSB9LFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGdldERlbGV0ZVJlc29sdmVyKGNvbGxlY3Rpb24pLFxuICAgICAgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUsXG4gICAgfVxuXG4gICAgaWYgKGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnMpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25JRFR5cGUgPSBjb25maWcuZGIuZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gR3JhcGhRTFN0cmluZyA6IEdyYXBoUUxJbnRcbiAgICAgIGNvbnN0IHZlcnNpb25Db2xsZWN0aW9uRmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICAuLi5idWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb25Db25maWcpLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICB0eXBlOiBjb25maWcuZGIuZGVmYXVsdElEVHlwZSBhcyAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICBsYWJlbDogJ0NyZWF0ZWQgQXQnLFxuICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICd1cGRhdGVkQXQnLFxuICAgICAgICAgIGxhYmVsOiAnVXBkYXRlZCBBdCcsXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB9LFxuICAgICAgXVxuXG4gICAgICBjb2xsZWN0aW9uLmdyYXBoUUwudmVyc2lvblR5cGUgPSBidWlsZE9iamVjdFR5cGUoe1xuICAgICAgICBuYW1lOiBgJHtzaW5ndWxhck5hbWV9VmVyc2lvbmAsXG4gICAgICAgIGZpZWxkczogdmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMsXG4gICAgICAgIGZvcmNlTnVsbGFibGU6IGZvcmNlTnVsbGFibGVPYmplY3RUeXBlLFxuICAgICAgICBwYXJlbnROYW1lOiBgJHtzaW5ndWxhck5hbWV9VmVyc2lvbmAsXG4gICAgICAgIGdyYXBocWxSZXN1bHQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgIH0pXG5cbiAgICAgIGdyYXBocWxSZXN1bHQuUXVlcnkuZmllbGRzW2B2ZXJzaW9uJHtmb3JtYXROYW1lKHNpbmd1bGFyTmFtZSl9YF0gPSB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiB2ZXJzaW9uSURUeXBlIH0sXG4gICAgICAgICAgLi4uKGNvbmZpZy5sb2NhbGl6YXRpb25cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlOiB7IHR5cGU6IGdyYXBocWxSZXN1bHQudHlwZXMuZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IHsgdHlwZTogZ3JhcGhxbFJlc3VsdC50eXBlcy5sb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZpbmRWZXJzaW9uQnlJRFJlc29sdmVyKGNvbGxlY3Rpb24pLFxuICAgICAgICB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwudmVyc2lvblR5cGUsXG4gICAgICB9XG4gICAgICBncmFwaHFsUmVzdWx0LlF1ZXJ5LmZpZWxkc1tgdmVyc2lvbnMke3BsdXJhbE5hbWV9YF0gPSB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgdHlwZTogYnVpbGRXaGVyZUlucHV0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGB2ZXJzaW9ucyR7c2luZ3VsYXJOYW1lfWAsXG4gICAgICAgICAgICAgIGZpZWxkczogdmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMsXG4gICAgICAgICAgICAgIHBhcmVudE5hbWU6IGB2ZXJzaW9ucyR7c2luZ3VsYXJOYW1lfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLihjb25maWcubG9jYWxpemF0aW9uXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZTogeyB0eXBlOiBncmFwaHFsUmVzdWx0LnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgICAgbG9jYWxlOiB7IHR5cGU6IGdyYXBocWxSZXN1bHQudHlwZXMubG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIGxpbWl0OiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAgICAgICAgICBwYWdlOiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAgICAgICAgICBzb3J0OiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZTogZmluZFZlcnNpb25zUmVzb2x2ZXIoY29sbGVjdGlvbiksXG4gICAgICAgIHR5cGU6IGJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUoXG4gICAgICAgICAgYHZlcnNpb25zJHtmb3JtYXROYW1lKHBsdXJhbE5hbWUpfWAsXG4gICAgICAgICAgY29sbGVjdGlvbi5ncmFwaFFMLnZlcnNpb25UeXBlLFxuICAgICAgICApLFxuICAgICAgfVxuICAgICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYHJlc3RvcmVWZXJzaW9uJHtmb3JtYXROYW1lKHNpbmd1bGFyTmFtZSl9YF0gPSB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiB2ZXJzaW9uSURUeXBlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IHJlc3RvcmVWZXJzaW9uUmVzb2x2ZXIoY29sbGVjdGlvbiksXG4gICAgICAgIHR5cGU6IGNvbGxlY3Rpb24uZ3JhcGhRTC50eXBlLFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2xsZWN0aW9uQ29uZmlnLmF1dGgpIHtcbiAgICAgIGNvbnN0IGF1dGhGaWVsZHM6IEZpZWxkW10gPSBjb2xsZWN0aW9uQ29uZmlnLmF1dGguZGlzYWJsZUxvY2FsU3RyYXRlZ3lcbiAgICAgICAgPyBbXVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgIGNvbGxlY3Rpb24uZ3JhcGhRTC5KV1QgPSBidWlsZE9iamVjdFR5cGUoe1xuICAgICAgICBuYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9SldUYCksXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIC4uLmNvbGxlY3Rpb25Db25maWcuZmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLnNhdmVUb0pXVCksXG4gICAgICAgICAgLi4uYXV0aEZpZWxkcyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnY29sbGVjdGlvbicsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwYXJlbnROYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9SldUYCksXG4gICAgICAgIGdyYXBocWxSZXN1bHQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgIH0pXG5cbiAgICAgIGdyYXBocWxSZXN1bHQuUXVlcnkuZmllbGRzW2BtZSR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgICByZXNvbHZlOiBtZShjb2xsZWN0aW9uKSxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9TWVgKSxcbiAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IHtcbiAgICAgICAgICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHA6IHtcbiAgICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0b2tlbjoge1xuICAgICAgICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLnR5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfVxuXG4gICAgICBncmFwaHFsUmVzdWx0LlF1ZXJ5LmZpZWxkc1tgaW5pdGlhbGl6ZWQke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgICAgcmVzb2x2ZTogaW5pdChjb2xsZWN0aW9uLmNvbmZpZy5zbHVnKSxcbiAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICB9XG5cbiAgICAgIGdyYXBocWxSZXN1bHQuTXV0YXRpb24uZmllbGRzW2ByZWZyZXNoVG9rZW4ke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIHRva2VuOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZTogcmVmcmVzaChjb2xsZWN0aW9uKSxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9UmVmcmVzaGVkJHtzaW5ndWxhck5hbWV9YCksXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICBleHA6IHtcbiAgICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoZWRUb2tlbjoge1xuICAgICAgICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbi5ncmFwaFFMLkpXVCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9XG5cbiAgICAgIGdyYXBocWxSZXN1bHQuTXV0YXRpb24uZmllbGRzW2Bsb2dvdXQke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgICAgcmVzb2x2ZTogbG9nb3V0KGNvbGxlY3Rpb24pLFxuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbGxlY3Rpb25Db25maWcuYXV0aC5kaXNhYmxlTG9jYWxTdHJhdGVneSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbkNvbmZpZy5hdXRoLm1heExvZ2luQXR0ZW1wdHMgPiAwKSB7XG4gICAgICAgICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYHVubG9jayR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgICBlbWFpbDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZykgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNvbHZlOiB1bmxvY2soY29sbGVjdGlvbiksXG4gICAgICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdyYXBocWxSZXN1bHQuTXV0YXRpb24uZmllbGRzW2Bsb2dpbiR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc29sdmU6IGxvZ2luKGNvbGxlY3Rpb24pLFxuICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9TG9naW5SZXN1bHRgKSxcbiAgICAgICAgICAgIGZpZWxkczoge1xuICAgICAgICAgICAgICBleHA6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBHcmFwaFFMSW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0b2tlbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwudHlwZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICBncmFwaHFsUmVzdWx0Lk11dGF0aW9uLmZpZWxkc1tgZm9yZ290UGFzc3dvcmQke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICBkaXNhYmxlRW1haWw6IHsgdHlwZTogR3JhcGhRTEJvb2xlYW4gfSxcbiAgICAgICAgICAgIGVtYWlsOiB7IHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSB9LFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogeyB0eXBlOiBHcmFwaFFMSW50IH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvbHZlOiBmb3Jnb3RQYXNzd29yZChjb2xsZWN0aW9uKSxcbiAgICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICB9XG5cbiAgICAgICAgZ3JhcGhxbFJlc3VsdC5NdXRhdGlvbi5maWVsZHNbYHJlc2V0UGFzc3dvcmQke3Npbmd1bGFyTmFtZX1gXSA9IHtcbiAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICBwYXNzd29yZDogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gICAgICAgICAgICB0b2tlbjogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvbHZlOiByZXNldFBhc3N3b3JkKGNvbGxlY3Rpb24pLFxuICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBmb3JtYXROYW1lKGAke3NsdWd9UmVzZXRQYXNzd29yZGApLFxuICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgIHRva2VuOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgICAgICAgdXNlcjogeyB0eXBlOiBjb2xsZWN0aW9uLmdyYXBoUUwudHlwZSB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfVxuXG4gICAgICAgIGdyYXBocWxSZXN1bHQuTXV0YXRpb24uZmllbGRzW2B2ZXJpZnlFbWFpbCR7c2luZ3VsYXJOYW1lfWBdID0ge1xuICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgIHRva2VuOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc29sdmU6IHZlcmlmeUVtYWlsKGNvbGxlY3Rpb24pLFxuICAgICAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBpbml0Q29sbGVjdGlvbnNHcmFwaFFMXG4iXSwibmFtZXMiOlsiaW5pdENvbGxlY3Rpb25zR3JhcGhRTCIsImNvbmZpZyIsImdyYXBocWxSZXN1bHQiLCJPYmplY3QiLCJrZXlzIiwiY29sbGVjdGlvbnMiLCJmb3JFYWNoIiwic2x1ZyIsImNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uQ29uZmlnIiwiZmllbGRzIiwiZ3JhcGhRTCIsInZlcnNpb25zIiwic2luZ3VsYXJOYW1lIiwicGx1cmFsTmFtZSIsImZyb21TbHVnIiwiZm9ybWF0TmFtZXMiLCJ0b1dvcmRzIiwic2luZ3VsYXIiLCJwbHVyYWwiLCJoYXNJREZpZWxkIiwiZmxhdHRlblRvcExldmVsRmllbGRzIiwiZmluZEluZGV4IiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsImlkVHlwZSIsImdldENvbGxlY3Rpb25JRFR5cGUiLCJkYiIsImRlZmF1bHRJRFR5cGUiLCJiYXNlRmllbGRzIiwid2hlcmVJbnB1dEZpZWxkcyIsImlkIiwidHlwZSIsInB1c2giLCJmb3JjZU51bGxhYmxlT2JqZWN0VHlwZSIsIkJvb2xlYW4iLCJkcmFmdHMiLCJidWlsZE9iamVjdFR5cGUiLCJmb3JjZU51bGxhYmxlIiwicGFyZW50TmFtZSIsInBhZ2luYXRlZFR5cGUiLCJidWlsZFBhZ2luYXRlZExpc3RUeXBlIiwid2hlcmVJbnB1dFR5cGUiLCJidWlsZFdoZXJlSW5wdXRUeXBlIiwiYXV0aCIsImRpc2FibGVMb2NhbFN0cmF0ZWd5IiwibGFiZWwiLCJyZXF1aXJlZCIsImNyZWF0ZU11dGF0aW9uSW5wdXRUeXBlIiwiYnVpbGRNdXRhdGlvbklucHV0VHlwZSIsIm11dGF0aW9uSW5wdXRUeXBlIiwiR3JhcGhRTE5vbk51bGwiLCJ1cGRhdGVNdXRhdGlvbklucHV0VHlwZSIsImZpbHRlciIsIlF1ZXJ5IiwiYXJncyIsImRyYWZ0IiwiR3JhcGhRTEJvb2xlYW4iLCJsb2NhbGl6YXRpb24iLCJmYWxsYmFja0xvY2FsZSIsInR5cGVzIiwiZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUiLCJsb2NhbGUiLCJsb2NhbGVJbnB1dFR5cGUiLCJyZXNvbHZlIiwiZmluZEJ5SURSZXNvbHZlciIsIndoZXJlIiwibGltaXQiLCJHcmFwaFFMSW50IiwicGFnZSIsInNvcnQiLCJHcmFwaFFMU3RyaW5nIiwiZmluZFJlc29sdmVyIiwiZG9jQWNjZXNzUmVzb2x2ZXIiLCJidWlsZFBvbGljeVR5cGUiLCJlbnRpdHkiLCJzY29wZSIsInR5cGVTdWZmaXgiLCJNdXRhdGlvbiIsImRhdGEiLCJjcmVhdGVSZXNvbHZlciIsImF1dG9zYXZlIiwidXBkYXRlUmVzb2x2ZXIiLCJnZXREZWxldGVSZXNvbHZlciIsInZlcnNpb25JRFR5cGUiLCJ2ZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyIsImJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMiLCJ2ZXJzaW9uVHlwZSIsImZvcm1hdE5hbWUiLCJmaW5kVmVyc2lvbkJ5SURSZXNvbHZlciIsImZpbmRWZXJzaW9uc1Jlc29sdmVyIiwicmVzdG9yZVZlcnNpb25SZXNvbHZlciIsImF1dGhGaWVsZHMiLCJKV1QiLCJzYXZlVG9KV1QiLCJtZSIsIkdyYXBoUUxPYmplY3RUeXBlIiwiZXhwIiwidG9rZW4iLCJ1c2VyIiwiaW5pdCIsInJlZnJlc2giLCJyZWZyZXNoZWRUb2tlbiIsImxvZ291dCIsIm1heExvZ2luQXR0ZW1wdHMiLCJlbWFpbCIsInVubG9jayIsInBhc3N3b3JkIiwibG9naW4iLCJkaXNhYmxlRW1haWwiLCJleHBpcmF0aW9uIiwiZm9yZ290UGFzc3dvcmQiLCJyZXNldFBhc3N3b3JkIiwidmVyaWZ5RW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkE4Y3BDOzs7ZUFBQTs7O3lCQXZjTzsyQkFFcUQ7dUJBQzNCOzBCQUNZO3VFQUtsQjs2REFDVjs4REFDQzsrREFDQzsyREFDSjtnRUFDSztzRUFDTTsrREFDUDtvRUFDSzt3Q0FDb0M7d0VBQ2hDOytFQUNPO21DQUNIOzRFQUNBO21FQUNUOytEQUNJOytEQUNHOzJCQUNJOzZEQUNUO2lFQUNJO3dFQUNPO3FFQUNIO3VFQUNFOytEQUNSOzs7Ozs7QUFNM0IsU0FBU0EsdUJBQXVCLEVBQUVDLE1BQU0sRUFBRUMsYUFBYSxFQUE4QjtJQUNuRkMsT0FBT0Ms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
487
+ //# sourceMappingURL=initCollections.js.map