@commitspark/graphql-api 1.0.0-beta.1 → 1.0.0-beta.3

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 (103) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +3 -3
  3. package/dist/cjs/client.js +1 -1
  4. package/dist/cjs/client.js.map +1 -1
  5. package/dist/cjs/graphql/errors.js +32 -0
  6. package/dist/cjs/graphql/errors.js.map +1 -0
  7. package/dist/cjs/graphql/queries-mutations-generator.js +10 -8
  8. package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -1
  9. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +4 -1
  10. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  11. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +15 -3
  12. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  13. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +10 -13
  14. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  15. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +5 -6
  16. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  17. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +5 -4
  18. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  19. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.js → query-every-resolver.js} +4 -4
  20. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  21. package/dist/cjs/graphql/schema-generator.js +7 -2
  22. package/dist/cjs/graphql/schema-generator.js.map +1 -1
  23. package/dist/cjs/graphql/schema-root-type-generator.js +1 -1
  24. package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -1
  25. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +26 -18
  26. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
  27. package/dist/cjs/graphql/schema-utils/union-type-util.js +9 -4
  28. package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
  29. package/dist/cjs/index.js +3 -0
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/persistence/persistence.js +11 -14
  32. package/dist/cjs/persistence/persistence.js.map +1 -1
  33. package/dist/esm/client.js +1 -1
  34. package/dist/esm/client.js.map +1 -1
  35. package/dist/esm/graphql/errors.js +28 -0
  36. package/dist/esm/graphql/errors.js.map +1 -0
  37. package/dist/esm/graphql/queries-mutations-generator.js +10 -8
  38. package/dist/esm/graphql/queries-mutations-generator.js.map +1 -1
  39. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +4 -1
  40. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  41. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +15 -3
  42. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  43. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +11 -14
  44. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  45. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +6 -7
  46. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  47. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +5 -4
  48. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  49. package/dist/esm/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.js → query-every-resolver.js} +2 -2
  50. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  51. package/dist/esm/graphql/schema-generator.js +7 -2
  52. package/dist/esm/graphql/schema-generator.js.map +1 -1
  53. package/dist/esm/graphql/schema-root-type-generator.js +1 -1
  54. package/dist/esm/graphql/schema-root-type-generator.js.map +1 -1
  55. package/dist/esm/graphql/schema-utils/entry-reference-util.js +27 -19
  56. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
  57. package/dist/esm/graphql/schema-utils/union-type-util.js +9 -4
  58. package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
  59. package/dist/esm/index.js +2 -0
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/persistence/persistence.js +11 -14
  62. package/dist/esm/persistence/persistence.js.map +1 -1
  63. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  64. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  65. package/dist/tsconfig.build.types.tsbuildinfo +1 -1
  66. package/dist/types/graphql/errors.d.ts +20 -0
  67. package/dist/types/graphql/errors.d.ts.map +1 -0
  68. package/dist/types/graphql/queries-mutations-generator.d.ts +1 -1
  69. package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -1
  70. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -1
  71. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -1
  72. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -1
  73. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -1
  74. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -1
  75. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +5 -0
  76. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -0
  77. package/dist/types/graphql/schema-generator.d.ts.map +1 -1
  78. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
  79. package/dist/types/graphql/schema-utils/union-type-util.d.ts +2 -2
  80. package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -1
  81. package/dist/types/index.d.ts +2 -1
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/types/persistence/persistence.d.ts.map +1 -1
  84. package/package.json +12 -4
  85. package/src/client.ts +1 -1
  86. package/src/graphql/errors.ts +43 -0
  87. package/src/graphql/queries-mutations-generator.ts +12 -10
  88. package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +8 -1
  89. package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +23 -5
  90. package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +22 -14
  91. package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +12 -8
  92. package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +9 -4
  93. package/src/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.ts → query-every-resolver.ts} +1 -1
  94. package/src/graphql/schema-generator.ts +7 -2
  95. package/src/graphql/schema-root-type-generator.ts +1 -1
  96. package/src/graphql/schema-utils/entry-reference-util.ts +44 -22
  97. package/src/graphql/schema-utils/union-type-util.ts +20 -7
  98. package/src/index.ts +2 -1
  99. package/src/persistence/persistence.ts +13 -15
  100. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js.map +0 -1
  101. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js.map +0 -1
  102. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts +0 -5
  103. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
- import { GraphQLError, isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
1
+ import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
2
2
  import { getTypeById } from '../../persistence/persistence';
3
3
  import { getUnionTypeNameFromFieldValue, getUnionValue, } from './union-type-util';
4
4
  import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util';
5
+ import { createError, ErrorCode } from '../errors';
5
6
  function isPermittedReferenceType(referencedTypeName, fieldType) {
6
7
  if (isNonNullType(fieldType)) {
7
8
  return isPermittedReferenceType(referencedTypeName, fieldType.ofType);
@@ -27,7 +28,10 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
27
28
  }
28
29
  else if (isListType(fieldType)) {
29
30
  if (!Array.isArray(fieldValue)) {
30
- throw new Error(`Expected array value in field "${fieldName}"`);
31
+ throw createError(`Expected array while validation references for field "${fieldName}".`, ErrorCode.SCHEMA_DATA_MISMATCH, {
32
+ fieldName: fieldName,
33
+ fieldValue: fieldValue,
34
+ });
31
35
  }
32
36
  for (const fieldListElement of fieldValue) {
33
37
  await validateReference(context, fieldName, fieldType.ofType, fieldListElement);
@@ -36,7 +40,10 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
36
40
  }
37
41
  else if (isUnionType(fieldType) || isObjectType(fieldType)) {
38
42
  if (!('id' in fieldValue)) {
39
- throw new Error('Expected key "id"');
43
+ throw createError(`Expected key "id" in data while validating reference for field "${fieldName}".`, ErrorCode.SCHEMA_DATA_MISMATCH, {
44
+ fieldName: fieldName,
45
+ fieldValue: fieldValue,
46
+ });
40
47
  }
41
48
  const referencedId = fieldValue.id;
42
49
  let referencedTypeName;
@@ -44,19 +51,15 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
44
51
  referencedTypeName = await getTypeById(context.gitAdapter, context.getCurrentRef(), referencedId);
45
52
  }
46
53
  catch (error) {
47
- throw new GraphQLError(`Reference with id "${referencedId}" points to non-existing entry`, {
48
- extensions: {
49
- code: 'BAD_USER_INPUT',
50
- fieldName: fieldName,
51
- },
54
+ throw createError(`Failed to resolve entry reference "${referencedId}".`, ErrorCode.BAD_USER_INPUT, {
55
+ fieldName: fieldName,
56
+ fieldValue: referencedId,
52
57
  });
53
58
  }
54
59
  if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
55
- throw new GraphQLError(`Reference with id "${referencedId}" points to entry of incompatible type`, {
56
- extensions: {
57
- code: 'BAD_USER_INPUT',
58
- fieldName: fieldName,
59
- },
60
+ throw createError(`Reference with ID "${referencedId}" points to entry of incompatible type "${referencedTypeName}".`, ErrorCode.BAD_USER_INPUT, {
61
+ fieldName: fieldName,
62
+ fieldValue: referencedId,
60
63
  });
61
64
  }
62
65
  }
@@ -82,15 +85,20 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
82
85
  await validateReference(context, '', type, data);
83
86
  return [data.id];
84
87
  }
85
- const unionTypeName = getUnionTypeNameFromFieldValue(data);
86
- const unionType = type
88
+ const requestedUnionTypeName = getUnionTypeNameFromFieldValue(data);
89
+ const concreteFieldUnionType = type
87
90
  .getTypes()
88
- .find((type) => type.name === unionTypeName);
89
- if (!unionType) {
90
- throw new Error(`Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`);
91
+ .find((concreteFieldType) => concreteFieldType.name === requestedUnionTypeName);
92
+ if (!concreteFieldUnionType) {
93
+ throw createError(`Type "${requestedUnionTypeName}" found in field data is not a valid type for ` +
94
+ `union type "${type.name}".`, ErrorCode.BAD_REPOSITORY_DATA, {
95
+ typeName: type.name,
96
+ fieldName: fieldName ? fieldName : undefined,
97
+ fieldValue: data,
98
+ });
91
99
  }
92
100
  const unionValue = getUnionValue(data);
93
- return getReferencedEntryIds(rootType, context, fieldName, unionType, unionValue);
101
+ return getReferencedEntryIds(rootType, context, fieldName, concreteFieldUnionType, unionValue);
94
102
  }
95
103
  else if (isObjectType(type)) {
96
104
  if (type.name !== rootType.name && hasEntryDirective(type)) {
@@ -1 +1 @@
1
- {"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
+ import { createError, ErrorCode } from '../errors';
1
2
  export function getUnionTypeNameFromFieldValue(fieldValue) {
2
- if (typeof fieldValue !== 'object') {
3
- throw new Error('Expected object as union value');
3
+ if (typeof fieldValue !== 'object' || fieldValue === null) {
4
+ throw createError(`Expected object value in order to determine union type name.`, ErrorCode.BAD_REPOSITORY_DATA, {
5
+ fieldValue: fieldValue,
6
+ });
4
7
  }
5
8
  // Based on our @oneOf directive, we expect only one field whose name
6
9
  // corresponds to the concrete type's name.
7
10
  return Object.keys(fieldValue)[0];
8
11
  }
9
12
  export function getUnionValue(fieldValue) {
10
- if (typeof fieldValue !== 'object') {
11
- throw new Error('Expected object as union value');
13
+ if (typeof fieldValue !== 'object' || fieldValue === null) {
14
+ throw createError(`Expected object value in order to determine union value.`, ErrorCode.BAD_REPOSITORY_DATA, {
15
+ fieldValue: fieldValue,
16
+ });
12
17
  }
13
18
  const firstKey = Object.keys(fieldValue)[0];
14
19
  return fieldValue[firstKey];
@@ -1 +1 @@
1
- {"version":3,"file":"union-type-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,8BAA8B,CAAC,UAAe;IAC5D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IAED,qEAAqE;IACrE,2CAA2C;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAe;IAC3C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"union-type-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,UAAU,8BAA8B,CAAC,UAAmB;IAChE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,WAAW,CACf,8DAA8D,EAC9D,SAAS,CAAC,mBAAmB,EAC7B;YACE,UAAU,EAAE,UAAU;SACvB,CACF,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE,2CAA2C;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,WAAW,CACf,0DAA0D,EAC1D,SAAS,CAAC,mBAAmB,EAC7B;YACE,UAAU,EAAE,UAAU;SACvB,CACF,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAQ,UAAwC,CAAC,QAAQ,CAAC,CAAA;AAC5D,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { getSchema, postGraphQL, } from './client';
2
+ import { ErrorCode } from './graphql/errors';
3
+ export { ErrorCode };
2
4
  export async function createClient(gitAdapter) {
3
5
  return {
4
6
  postGraphQL: (ref, request) => postGraphQL(gitAdapter, ref, request),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,WAAW,GAGZ,MAAM,UAAU,CAAA;AAgBjB,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAsB;IACvD,OAAO;QACL,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;QACpE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;KAC/C,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,WAAW,GAGZ,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,SAAS,EAAiB,MAAM,kBAAkB,CAAA;AAa3D,OAAO,EAA2C,SAAS,EAAiB,CAAA;AAE5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAsB;IACvD,OAAO;QACL,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;QACpE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;KAC/C,CAAA;AACH,CAAC"}
@@ -1,12 +1,11 @@
1
- import { GraphQLError } from 'graphql';
1
+ import { createError, ErrorCode } from '../graphql/errors';
2
2
  export async function getTypeById(gitAdapter, commitHash, id) {
3
3
  const allEntries = await gitAdapter.getEntries(commitHash);
4
4
  const requestedEntry = allEntries.find((entry) => entry.id === id);
5
5
  if (requestedEntry === undefined) {
6
- throw new GraphQLError(`Not found: ${id}`, {
7
- extensions: {
8
- code: 'NOT_FOUND',
9
- },
6
+ throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
7
+ argumentName: 'id',
8
+ argumentValue: id,
10
9
  });
11
10
  }
12
11
  return requestedEntry.metadata.type;
@@ -15,10 +14,9 @@ export async function findById(gitAdapter, commitHash, id) {
15
14
  const allEntries = await gitAdapter.getEntries(commitHash);
16
15
  const requestedEntry = allEntries.find((entry) => entry.id === id);
17
16
  if (requestedEntry === undefined) {
18
- throw new GraphQLError(`Not found: ${id}`, {
19
- extensions: {
20
- code: 'NOT_FOUND',
21
- },
17
+ throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
18
+ argumentName: 'id',
19
+ argumentValue: id,
22
20
  });
23
21
  }
24
22
  return requestedEntry;
@@ -31,11 +29,10 @@ export async function findByTypeId(gitAdapter, commitHash, type, id) {
31
29
  const allEntries = await gitAdapter.getEntries(commitHash);
32
30
  const requestedEntry = allEntries.find((entry) => entry.id === id && entry.metadata.type === type);
33
31
  if (requestedEntry === undefined) {
34
- throw new GraphQLError(`No entry of type "${type}" with id "${id}" exists`, {
35
- extensions: {
36
- code: 'BAD_USER_INPUT',
37
- argumentName: 'id',
38
- },
32
+ throw createError(`No entry of type "${type}" with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
33
+ typeName: type,
34
+ argumentName: 'id',
35
+ argumentValue: id,
39
36
  });
40
37
  }
41
38
  return requestedEntry;
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/persistence/persistence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,UAAkB,EAClB,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,EAAE;YACzC,UAAU,EAAE;gBACV,IAAI,EAAE,WAAW;aAClB;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAsB,EACtB,UAAkB,EAClB,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,EAAE;YACzC,UAAU,EAAE;gBACV,IAAI,EAAE,WAAW;aAClB;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAsB,EACtB,UAAkB,EAClB,IAAY;IAEZ,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,UAAkB,EAClB,IAAY,EACZ,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CACpC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAClE,CAAA;IACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACpB,qBAAqB,IAAI,cAAc,EAAE,UAAU,EACnD;YACE,UAAU,EAAE;gBACV,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,IAAI;aACnB;SACF,CACF,CAAA;IACH,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/persistence/persistence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,UAAkB,EAClB,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,WAAW,CAAC,qBAAqB,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE;YACzE,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAsB,EACtB,UAAkB,EAClB,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,WAAW,CAAC,qBAAqB,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE;YACzE,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAsB,EACtB,UAAkB,EAClB,IAAY;IAEZ,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,UAAkB,EAClB,IAAY,EACZ,EAAU;IAEV,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CACpC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAClE,CAAA;IACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,WAAW,CACf,qBAAqB,IAAI,cAAc,EAAE,WAAW,EACpD,SAAS,CAAC,SAAS,EACnB;YACE,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE;SAClB,CACF,CAAA;IACH,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC"}