graphile-build-pg 4.13.0 → 4.14.1
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.
- package/README.md +4 -13
- package/node8plus/GraphQLJSON.js +0 -11
- package/node8plus/GraphQLJSON.js.map +1 -1
- package/node8plus/PgLiveProvider.js +4 -11
- package/node8plus/PgLiveProvider.js.map +1 -1
- package/node8plus/QueryBuilder.js +42 -176
- package/node8plus/QueryBuilder.js.map +1 -1
- package/node8plus/index.js +8 -47
- package/node8plus/index.js.map +1 -1
- package/node8plus/inflections.js +9 -61
- package/node8plus/inflections.js.map +1 -1
- package/node8plus/omit.js +7 -22
- package/node8plus/omit.js.map +1 -1
- package/node8plus/parseIdentifier.js +0 -1
- package/node8plus/parseIdentifier.js.map +1 -1
- package/node8plus/pgPrepareAndRun.js +2 -14
- package/node8plus/pgPrepareAndRun.js.map +1 -1
- package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
- package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
- package/node8plus/plugins/PgAllRows.js +0 -29
- package/node8plus/plugins/PgAllRows.js.map +1 -1
- package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
- package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgBasicsPlugin.js +20 -147
- package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
- package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnsPlugin.js +4 -17
- package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
- package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
- package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
- package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
- package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
- package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
- package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
- package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
- package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
- package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgJWTPlugin.js +2 -18
- package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
- package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
- package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
- package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
- package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
- package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
- package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
- package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
- package/node8plus/plugins/PgRowNode.js +0 -32
- package/node8plus/plugins/PgRowNode.js.map +1 -1
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgTablesPlugin.js +7 -59
- package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
- package/node8plus/plugins/PgTypesPlugin.js +140 -240
- package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
- package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
- package/node8plus/plugins/addStartEndCursor.js +2 -5
- package/node8plus/plugins/addStartEndCursor.js.map +1 -1
- package/node8plus/plugins/debugSql.js +1 -16
- package/node8plus/plugins/debugSql.js.map +1 -1
- package/node8plus/plugins/introspectionQuery.js +3 -4
- package/node8plus/plugins/introspectionQuery.js.flow +11 -3
- package/node8plus/plugins/introspectionQuery.js.map +1 -1
- package/node8plus/plugins/makeProcField.js +40 -90
- package/node8plus/plugins/makeProcField.js.map +1 -1
- package/node8plus/plugins/pgField.js +2 -7
- package/node8plus/plugins/pgField.js.map +1 -1
- package/node8plus/plugins/viaTemporaryTable.js +6 -12
- package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
- package/node8plus/postgresInterval.js +4 -4
- package/node8plus/postgresInterval.js.map +1 -1
- package/node8plus/queryFromResolveDataFactory.js +33 -77
- package/node8plus/queryFromResolveDataFactory.js.map +1 -1
- package/node8plus/utils.js +8 -9
- package/node8plus/utils.js.map +1 -1
- package/node8plus/withPgClient.js +4 -26
- package/node8plus/withPgClient.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -14,26 +14,17 @@ resources found in your PostgreSQL database schema.
|
|
|
14
14
|
|
|
15
15
|
## Crowd-funded open-source software
|
|
16
16
|
|
|
17
|
-
To help us develop this software sustainably
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
To help us develop this software sustainably, we ask all individuals and
|
|
18
|
+
businesses that use it to help support its ongoing maintenance and development
|
|
19
|
+
via sponsorship.
|
|
20
20
|
|
|
21
21
|
### [Click here to find out more about sponsors and sponsorship.](https://www.graphile.org/sponsor/)
|
|
22
22
|
|
|
23
23
|
And please give some love to our featured sponsors 🤩:
|
|
24
24
|
|
|
25
25
|
<table><tr>
|
|
26
|
-
<td align="center"><a href="https://surge.io/"><img src="https://graphile.org/images/sponsors/surge.png" width="90" height="90" alt="Surge" /><br />Surge</a> *</td>
|
|
27
|
-
<td align="center"><a href="https://www.netflix.com/"><img src="https://graphile.org/images/sponsors/Netflix.png" width="90" height="90" alt="Netflix" /><br />Netflix</a> *</td>
|
|
28
|
-
<td align="center"><a href="https://qwick.com/"><img src="https://graphile.org/images/sponsors/qwick.png" width="90" height="90" alt="Qwick" /><br />Qwick</a> *</td>
|
|
29
26
|
<td align="center"><a href="https://www.the-guild.dev/"><img src="https://graphile.org/images/sponsors/theguild.png" width="90" height="90" alt="The Guild" /><br />The Guild</a> *</td>
|
|
30
|
-
</
|
|
31
|
-
<td align="center"><a href="http://chads.website"><img src="https://graphile.org/images/sponsors/chadf.png" width="90" height="90" alt="Chad Furman" /><br />Chad Furman</a> *</td>
|
|
32
|
-
<td align="center"><a href="https://www.fanatics.com/"><img src="https://graphile.org/images/sponsors/fanatics.png" width="90" height="90" alt="Fanatics" /><br />Fanatics</a> *</td>
|
|
33
|
-
<td align="center"><a href="https://dovetailapp.com/"><img src="https://graphile.org/images/sponsors/dovetail.png" width="90" height="90" alt="Dovetail" /><br />Dovetail</a> *</td>
|
|
34
|
-
<td align="center"><a href="https://www.enzuzo.com/"><img src="https://graphile.org/images/sponsors/enzuzo.png" width="90" height="90" alt="Enzuzo" /><br />Enzuzo</a> *</td>
|
|
35
|
-
</tr><tr>
|
|
36
|
-
<td align="center"><a href="https://stellate.co/"><img src="https://graphile.org/images/sponsors/Stellate.png" width="90" height="90" alt="Stellate" /><br />Stellate</a> *</td>
|
|
27
|
+
<td align="center"><a href="https://gosteelhead.com/"><img src="https://graphile.org/images/sponsors/steelhead.svg" width="90" height="90" alt="Steelhead" /><br />Steelhead</a> *</td>
|
|
37
28
|
</tr></table>
|
|
38
29
|
|
|
39
30
|
<em>\* Sponsors the entire Graphile suite</em>
|
package/node8plus/GraphQLJSON.js
CHANGED
|
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = makeGraphQLJSONType;
|
|
7
|
-
|
|
8
7
|
// This file is based on
|
|
9
8
|
// https://github.com/taion/graphql-type-json/blob/6e45ae4ee0a60f8f3565c8c980a82c7d9b98d3f5/src/index.js
|
|
10
9
|
//
|
|
11
10
|
// It only exists here (rather than using `graphql-type-json` directly) because
|
|
12
11
|
// we need to export Json along with JSON.
|
|
13
12
|
//
|
|
14
|
-
|
|
15
13
|
/*
|
|
16
14
|
The MIT License (MIT)
|
|
17
15
|
|
|
@@ -40,21 +38,17 @@ function makeGraphQLJSONType(graphql, name) {
|
|
|
40
38
|
GraphQLScalarType,
|
|
41
39
|
Kind
|
|
42
40
|
} = graphql;
|
|
43
|
-
|
|
44
41
|
function identity(value) {
|
|
45
42
|
return value;
|
|
46
43
|
}
|
|
47
|
-
|
|
48
44
|
function parseLiteral(ast, variables) {
|
|
49
45
|
switch (ast.kind) {
|
|
50
46
|
case Kind.STRING:
|
|
51
47
|
case Kind.BOOLEAN:
|
|
52
48
|
return ast.value;
|
|
53
|
-
|
|
54
49
|
case Kind.INT:
|
|
55
50
|
case Kind.FLOAT:
|
|
56
51
|
return parseFloat(ast.value);
|
|
57
|
-
|
|
58
52
|
case Kind.OBJECT:
|
|
59
53
|
{
|
|
60
54
|
const value = Object.create(null);
|
|
@@ -63,24 +57,19 @@ function makeGraphQLJSONType(graphql, name) {
|
|
|
63
57
|
});
|
|
64
58
|
return value;
|
|
65
59
|
}
|
|
66
|
-
|
|
67
60
|
case Kind.LIST:
|
|
68
61
|
return ast.values.map(n => parseLiteral(n, variables));
|
|
69
|
-
|
|
70
62
|
case Kind.NULL:
|
|
71
63
|
return null;
|
|
72
|
-
|
|
73
64
|
case Kind.VARIABLE:
|
|
74
65
|
{
|
|
75
66
|
const name = ast.name.value;
|
|
76
67
|
return variables ? variables[name] : undefined;
|
|
77
68
|
}
|
|
78
|
-
|
|
79
69
|
default:
|
|
80
70
|
return undefined;
|
|
81
71
|
}
|
|
82
72
|
}
|
|
83
|
-
|
|
84
73
|
return new GraphQLScalarType({
|
|
85
74
|
name,
|
|
86
75
|
description: `The \`${name}\` scalar type represents JSON values as specified by ` + "[ECMA-404](http://www.ecma-international.org/" + "publications/files/ECMA-ST/ECMA-404.pdf).",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"GraphQLJSON.js","names":["makeGraphQLJSONType","graphql","name","GraphQLScalarType","Kind","identity","value","parseLiteral","ast","variables","kind","STRING","BOOLEAN","INT","FLOAT","parseFloat","OBJECT","Object","create","fields","forEach","field","LIST","values","map","n","NULL","VARIABLE","undefined","description","serialize","parseValue"],"sources":["../src/GraphQLJSON.js"],"sourcesContent":["// This file is based on\n// https://github.com/taion/graphql-type-json/blob/6e45ae4ee0a60f8f3565c8c980a82c7d9b98d3f5/src/index.js\n//\n// It only exists here (rather than using `graphql-type-json` directly) because\n// we need to export Json along with JSON.\n//\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2016 Jimmy Jia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\nexport default function makeGraphQLJSONType(graphql, name) {\n const { GraphQLScalarType, Kind } = graphql;\n\n function identity(value) {\n return value;\n }\n\n function parseLiteral(ast, variables) {\n switch (ast.kind) {\n case Kind.STRING:\n case Kind.BOOLEAN:\n return ast.value;\n case Kind.INT:\n case Kind.FLOAT:\n return parseFloat(ast.value);\n case Kind.OBJECT: {\n const value = Object.create(null);\n ast.fields.forEach(field => {\n value[field.name.value] = parseLiteral(field.value, variables);\n });\n\n return value;\n }\n case Kind.LIST:\n return ast.values.map(n => parseLiteral(n, variables));\n case Kind.NULL:\n return null;\n case Kind.VARIABLE: {\n const name = ast.name.value;\n return variables ? variables[name] : undefined;\n }\n default:\n return undefined;\n }\n }\n\n return new GraphQLScalarType({\n name,\n description:\n `The \\`${name}\\` scalar type represents JSON values as specified by ` +\n \"[ECMA-404](http://www.ecma-international.org/\" +\n \"publications/files/ECMA-ST/ECMA-404.pdf).\",\n serialize: identity,\n parseValue: identity,\n parseLiteral,\n });\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,mBAAmBA,CAACC,OAAO,EAAEC,IAAI,EAAE;EACzD,MAAM;IAAEC,iBAAiB;IAAEC;EAAK,CAAC,GAAGH,OAAO;EAE3C,SAASI,QAAQA,CAACC,KAAK,EAAE;IACvB,OAAOA,KAAK;EACd;EAEA,SAASC,YAAYA,CAACC,GAAG,EAAEC,SAAS,EAAE;IACpC,QAAQD,GAAG,CAACE,IAAI;MACd,KAAKN,IAAI,CAACO,MAAM;MAChB,KAAKP,IAAI,CAACQ,OAAO;QACf,OAAOJ,GAAG,CAACF,KAAK;MAClB,KAAKF,IAAI,CAACS,GAAG;MACb,KAAKT,IAAI,CAACU,KAAK;QACb,OAAOC,UAAU,CAACP,GAAG,CAACF,KAAK,CAAC;MAC9B,KAAKF,IAAI,CAACY,MAAM;QAAE;UAChB,MAAMV,KAAK,GAAGW,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;UACjCV,GAAG,CAACW,MAAM,CAACC,OAAO,CAACC,KAAK,IAAI;YAC1Bf,KAAK,CAACe,KAAK,CAACnB,IAAI,CAACI,KAAK,CAAC,GAAGC,YAAY,CAACc,KAAK,CAACf,KAAK,EAAEG,SAAS,CAAC;UAChE,CAAC,CAAC;UAEF,OAAOH,KAAK;QACd;MACA,KAAKF,IAAI,CAACkB,IAAI;QACZ,OAAOd,GAAG,CAACe,MAAM,CAACC,GAAG,CAACC,CAAC,IAAIlB,YAAY,CAACkB,CAAC,EAAEhB,SAAS,CAAC,CAAC;MACxD,KAAKL,IAAI,CAACsB,IAAI;QACZ,OAAO,IAAI;MACb,KAAKtB,IAAI,CAACuB,QAAQ;QAAE;UAClB,MAAMzB,IAAI,GAAGM,GAAG,CAACN,IAAI,CAACI,KAAK;UAC3B,OAAOG,SAAS,GAAGA,SAAS,CAACP,IAAI,CAAC,GAAG0B,SAAS;QAChD;MACA;QACE,OAAOA,SAAS;IACpB;EACF;EAEA,OAAO,IAAIzB,iBAAiB,CAAC;IAC3BD,IAAI;IACJ2B,WAAW,EACR,SAAQ3B,IAAK,wDAAuD,GACrE,+CAA+C,GAC/C,2CAA2C;IAC7C4B,SAAS,EAAEzB,QAAQ;IACnB0B,UAAU,EAAE1B,QAAQ;IACpBE;EACF,CAAC,CAAC;AACJ"}
|
|
@@ -4,34 +4,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _graphileBuild = require("graphile-build");
|
|
9
|
-
|
|
10
8
|
class PgLiveProvider extends _graphileBuild.LiveProvider {
|
|
11
9
|
// eslint-disable-next-line flowtype/no-weak-types
|
|
12
10
|
constructor(...args) {
|
|
13
11
|
super(...args);
|
|
14
12
|
this.namespace = "pg";
|
|
15
13
|
}
|
|
16
|
-
|
|
17
14
|
collectionIdentifierIsValid(collectionIdentifier) {
|
|
18
15
|
return collectionIdentifier && collectionIdentifier.kind === "class";
|
|
19
16
|
}
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
recordIdentifierIsValid(collectionIdentifier,
|
|
18
|
+
// eslint-disable-next-line flowtype/no-weak-types
|
|
22
19
|
recordIdentifier) {
|
|
23
20
|
if (!Array.isArray(recordIdentifier)) return false;
|
|
24
21
|
if (!collectionIdentifier.primaryKeyConstraint) return false;
|
|
25
|
-
|
|
26
22
|
if (recordIdentifier.length !== collectionIdentifier.primaryKeyConstraint.keyAttributes.length) {
|
|
27
23
|
return false;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
}
|
|
25
|
+
// TODO: more validation would not go amiss
|
|
31
26
|
return true;
|
|
32
27
|
}
|
|
33
|
-
|
|
34
28
|
}
|
|
35
|
-
|
|
36
29
|
exports.default = PgLiveProvider;
|
|
37
30
|
//# sourceMappingURL=PgLiveProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PgLiveProvider.js","names":["_graphileBuild","require","PgLiveProvider","LiveProvider","constructor","args","namespace","collectionIdentifierIsValid","collectionIdentifier","kind","recordIdentifierIsValid","recordIdentifier","Array","isArray","primaryKeyConstraint","length","keyAttributes","exports","default"],"sources":["../src/PgLiveProvider.js"],"sourcesContent":["// @flow\nimport { LiveProvider } from \"graphile-build\";\nimport type { PgClass } from \"./plugins/PgIntrospectionPlugin\";\n\nexport default class PgLiveProvider extends LiveProvider {\n // eslint-disable-next-line flowtype/no-weak-types\n constructor(...args: any[]) {\n super(...args);\n this.namespace = \"pg\";\n }\n\n collectionIdentifierIsValid(collectionIdentifier: PgClass) {\n return collectionIdentifier && collectionIdentifier.kind === \"class\";\n }\n\n recordIdentifierIsValid(\n collectionIdentifier: PgClass,\n // eslint-disable-next-line flowtype/no-weak-types\n recordIdentifier: Array<any>\n ) {\n if (!Array.isArray(recordIdentifier)) return false;\n if (!collectionIdentifier.primaryKeyConstraint) return false;\n if (\n recordIdentifier.length !==\n collectionIdentifier.primaryKeyConstraint.keyAttributes.length\n ) {\n return false;\n }\n // TODO: more validation would not go amiss\n return true;\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AAGe,MAAMC,cAAc,SAASC,2BAAY,CAAC;EACvD;EACAC,WAAWA,CAAC,GAAGC,IAAW,EAAE;IAC1B,KAAK,CAAC,GAAGA,IAAI,CAAC;IACd,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;EAEAC,2BAA2BA,CAACC,oBAA6B,EAAE;IACzD,OAAOA,oBAAoB,IAAIA,oBAAoB,CAACC,IAAI,KAAK,OAAO;EACtE;EAEAC,uBAAuBA,CACrBF,oBAA6B;EAC7B;EACAG,gBAA4B,EAC5B;IACA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,gBAAgB,CAAC,EAAE,OAAO,KAAK;IAClD,IAAI,CAACH,oBAAoB,CAACM,oBAAoB,EAAE,OAAO,KAAK;IAC5D,IACEH,gBAAgB,CAACI,MAAM,KACvBP,oBAAoB,CAACM,oBAAoB,CAACE,aAAa,CAACD,MAAM,EAC9D;MACA,OAAO,KAAK;IACd;IACA;IACA,OAAO,IAAI;EACb;AACF;AAACE,OAAA,CAAAC,OAAA,GAAAhB,cAAA"}
|