@cedarjs/structure 2.8.1-next.116 → 2.8.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.
Files changed (110) hide show
  1. package/README.md +1 -1
  2. package/dist/errors.js +15 -9
  3. package/dist/index.d.ts +7 -7
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +67 -40
  6. package/dist/model/RWCell.d.ts +4 -4
  7. package/dist/model/RWCell.d.ts.map +1 -1
  8. package/dist/model/RWCell.js +103 -111
  9. package/dist/model/RWComponent.d.ts +2 -2
  10. package/dist/model/RWComponent.d.ts.map +1 -1
  11. package/dist/model/RWComponent.js +41 -46
  12. package/dist/model/RWEnvHelper.d.ts +4 -4
  13. package/dist/model/RWEnvHelper.d.ts.map +1 -1
  14. package/dist/model/RWEnvHelper.js +205 -212
  15. package/dist/model/RWFunction.d.ts +2 -2
  16. package/dist/model/RWFunction.d.ts.map +1 -1
  17. package/dist/model/RWFunction.js +15 -10
  18. package/dist/model/RWLayout.d.ts +2 -2
  19. package/dist/model/RWLayout.d.ts.map +1 -1
  20. package/dist/model/RWLayout.js +15 -10
  21. package/dist/model/RWPage.d.ts +3 -3
  22. package/dist/model/RWPage.d.ts.map +1 -1
  23. package/dist/model/RWPage.js +57 -61
  24. package/dist/model/RWProject.d.ts +17 -11
  25. package/dist/model/RWProject.d.ts.map +1 -1
  26. package/dist/model/RWProject.js +164 -218
  27. package/dist/model/RWRoute.d.ts +5 -5
  28. package/dist/model/RWRoute.d.ts.map +1 -1
  29. package/dist/model/RWRoute.js +262 -312
  30. package/dist/model/RWRouter.d.ts +4 -4
  31. package/dist/model/RWRouter.d.ts.map +1 -1
  32. package/dist/model/RWRouter.js +126 -130
  33. package/dist/model/RWSDL.d.ts +5 -5
  34. package/dist/model/RWSDL.d.ts.map +1 -1
  35. package/dist/model/RWSDL.js +84 -96
  36. package/dist/model/RWSDLField.d.ts +6 -6
  37. package/dist/model/RWSDLField.d.ts.map +1 -1
  38. package/dist/model/RWSDLField.js +81 -79
  39. package/dist/model/RWService.d.ts +4 -4
  40. package/dist/model/RWService.d.ts.map +1 -1
  41. package/dist/model/RWService.js +76 -76
  42. package/dist/model/RWServiceFunction.d.ts +4 -4
  43. package/dist/model/RWServiceFunction.d.ts.map +1 -1
  44. package/dist/model/RWServiceFunction.js +97 -95
  45. package/dist/model/RWTOML.d.ts +3 -3
  46. package/dist/model/RWTOML.d.ts.map +1 -1
  47. package/dist/model/RWTOML.js +55 -53
  48. package/dist/model/index.d.ts +2 -2
  49. package/dist/model/index.d.ts.map +1 -1
  50. package/dist/model/index.js +20 -3
  51. package/dist/model/util/process_env.js +62 -44
  52. package/dist/nodes.d.ts +2 -2
  53. package/dist/nodes.d.ts.map +1 -1
  54. package/dist/nodes.js +164 -171
  55. package/dist/util.js +33 -23
  56. package/dist/x/Array.js +25 -15
  57. package/dist/x/Location.d.ts +1 -1
  58. package/dist/x/Location.d.ts.map +1 -1
  59. package/dist/x/Location.js +17 -11
  60. package/dist/x/Position.js +29 -18
  61. package/dist/x/Range.d.ts +1 -1
  62. package/dist/x/Range.d.ts.map +1 -1
  63. package/dist/x/Range.js +22 -17
  64. package/dist/x/URL.js +75 -59
  65. package/dist/x/child_process.d.ts +1 -1
  66. package/dist/x/child_process.d.ts.map +1 -1
  67. package/dist/x/child_process.js +49 -35
  68. package/dist/x/decorators.d.ts +2 -2
  69. package/dist/x/decorators.d.ts.map +1 -1
  70. package/dist/x/decorators.js +26 -46
  71. package/dist/x/diagnostics.d.ts +3 -3
  72. package/dist/x/diagnostics.d.ts.map +1 -1
  73. package/dist/x/diagnostics.js +259 -163
  74. package/dist/x/path.js +55 -36
  75. package/dist/x/prisma.d.ts +2 -2
  76. package/dist/x/prisma.d.ts.map +1 -1
  77. package/dist/x/prisma.js +55 -32
  78. package/dist/x/ts-morph.js +45 -34
  79. package/package.json +17 -38
  80. package/dist/errors.js.map +0 -1
  81. package/dist/index.js.map +0 -1
  82. package/dist/model/RWCell.js.map +0 -1
  83. package/dist/model/RWComponent.js.map +0 -1
  84. package/dist/model/RWEnvHelper.js.map +0 -1
  85. package/dist/model/RWFunction.js.map +0 -1
  86. package/dist/model/RWLayout.js.map +0 -1
  87. package/dist/model/RWPage.js.map +0 -1
  88. package/dist/model/RWProject.js.map +0 -1
  89. package/dist/model/RWRoute.js.map +0 -1
  90. package/dist/model/RWRouter.js.map +0 -1
  91. package/dist/model/RWSDL.js.map +0 -1
  92. package/dist/model/RWSDLField.js.map +0 -1
  93. package/dist/model/RWService.js.map +0 -1
  94. package/dist/model/RWServiceFunction.js.map +0 -1
  95. package/dist/model/RWTOML.js.map +0 -1
  96. package/dist/model/index.js.map +0 -1
  97. package/dist/model/util/process_env.js.map +0 -1
  98. package/dist/nodes.js.map +0 -1
  99. package/dist/util.js.map +0 -1
  100. package/dist/x/Array.js.map +0 -1
  101. package/dist/x/Location.js.map +0 -1
  102. package/dist/x/Position.js.map +0 -1
  103. package/dist/x/Range.js.map +0 -1
  104. package/dist/x/URL.js.map +0 -1
  105. package/dist/x/child_process.js.map +0 -1
  106. package/dist/x/decorators.js.map +0 -1
  107. package/dist/x/diagnostics.js.map +0 -1
  108. package/dist/x/path.js.map +0 -1
  109. package/dist/x/prisma.js.map +0 -1
  110. package/dist/x/ts-morph.js.map +0 -1
@@ -1,64 +1,60 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { dirname } from 'node:path';
8
- import * as tsm from 'ts-morph';
9
- import { FileNode } from '../nodes.js';
10
- import { lazy } from '../x/decorators.js';
11
- export class RWPage extends FileNode {
12
- constName;
13
- path;
14
- parent;
15
- constructor(constName, path, parent) {
16
- super();
17
- this.constName = constName;
18
- this.path = path;
19
- this.parent = parent;
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
5
+ var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.RWPage = void 0;
10
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/find"));
11
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/map"));
12
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/includes"));
13
+ var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/map"));
14
+ var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/object/get-own-property-descriptor"));
15
+ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/applyDecoratedDescriptor"));
16
+ var _path = require("path");
17
+ var tsm = _interopRequireWildcard(require("ts-morph"));
18
+ var _nodes = require("../nodes");
19
+ var _decorators = require("../x/decorators");
20
+ var _dec, _dec2, _dec3, _dec4, _class;
21
+ let RWPage = exports.RWPage = (_dec = (0, _decorators.lazy)(), _dec2 = (0, _decorators.lazy)(), _dec3 = (0, _decorators.lazy)(), _dec4 = (0, _decorators.lazy)(), _class = class RWPage extends _nodes.FileNode {
22
+ constructor(constName, path, parent) {
23
+ super();
24
+ this.constName = constName;
25
+ this.path = path;
26
+ this.parent = parent;
27
+ }
28
+ get filePath() {
29
+ return this.path;
30
+ }
31
+ get route() {
32
+ var _context;
33
+ return (0, _find.default)(_context = this.parent.router.routes).call(_context, r => r.page_identifier_str === this.constName);
34
+ }
35
+ get layoutName() {
36
+ var _context2;
37
+ const candidates = (0, _map.default)(_context2 = this.parent.layouts).call(_context2, l => l.basenameNoExt);
38
+ if (candidates.length === 0) {
39
+ return undefined;
20
40
  }
21
- get filePath() {
22
- return this.path;
41
+ for (const tag of this.sf.getDescendantsOfKind(tsm.SyntaxKind.JsxOpeningElement)) {
42
+ const t = tag.getTagNameNode().getText(); //?
43
+ if ((0, _includes.default)(candidates).call(candidates, t)) {
44
+ return t;
45
+ }
23
46
  }
24
- get route() {
25
- return this.parent.router.routes.find((r) => r.page_identifier_str === this.constName);
47
+ return undefined;
48
+ }
49
+ get actionRemove() {
50
+ const edits = new _map2.default();
51
+ // delete directory (MyPage/...)
52
+ edits.set((0, _path.dirname)(this.filePath), undefined);
53
+ // removing a page also removes its route
54
+ if (this.route) {
55
+ edits.set(this.route.jsxNode, undefined);
26
56
  }
27
- get layoutName() {
28
- const candidates = this.parent.layouts.map((l) => l.basenameNoExt);
29
- if (candidates.length === 0) {
30
- return undefined;
31
- }
32
- for (const tag of this.sf.getDescendantsOfKind(tsm.SyntaxKind.JsxOpeningElement)) {
33
- const t = tag.getTagNameNode().getText(); //?
34
- if (candidates.includes(t)) {
35
- return t;
36
- }
37
- }
38
- return undefined;
39
- }
40
- get actionRemove() {
41
- const edits = new Map();
42
- // delete directory (MyPage/...)
43
- edits.set(dirname(this.filePath), undefined);
44
- // removing a page also removes its route
45
- if (this.route) {
46
- edits.set(this.route.jsxNode, undefined);
47
- }
48
- // TODO: we need to transform this edits map to a standard edits map (with locations)
49
- return edits;
50
- }
51
- }
52
- __decorate([
53
- lazy()
54
- ], RWPage.prototype, "filePath", null);
55
- __decorate([
56
- lazy()
57
- ], RWPage.prototype, "route", null);
58
- __decorate([
59
- lazy()
60
- ], RWPage.prototype, "layoutName", null);
61
- __decorate([
62
- lazy()
63
- ], RWPage.prototype, "actionRemove", null);
64
- //# sourceMappingURL=RWPage.js.map
57
+ // TODO: we need to transform this edits map to a standard edits map (with locations)
58
+ return edits;
59
+ }
60
+ }, (0, _applyDecoratedDescriptor2.default)(_class.prototype, "filePath", [_dec], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "filePath"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "route", [_dec2], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "route"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "layoutName", [_dec3], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "layoutName"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "actionRemove", [_dec4], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "actionRemove"), _class.prototype), _class);
@@ -1,21 +1,27 @@
1
1
  import type { DMMF } from '@prisma/generator-helper';
2
- import { BaseNode } from '../nodes.js';
3
- import { RWCell } from './RWCell.js';
4
- import { RWComponent } from './RWComponent.js';
5
- import { RWEnvHelper } from './RWEnvHelper.js';
6
- import { RWFunction } from './RWFunction.js';
7
- import { RWLayout } from './RWLayout.js';
8
- import { RWPage } from './RWPage.js';
9
- import { RWRouter } from './RWRouter.js';
10
- import { RWSDL } from './RWSDL.js';
11
- import { RWService } from './RWService.js';
12
- import { RWTOML } from './RWTOML.js';
2
+ import { BaseNode } from '../nodes';
3
+ import { RWCell } from './RWCell';
4
+ import { RWComponent } from './RWComponent';
5
+ import { RWEnvHelper } from './RWEnvHelper';
6
+ import { RWFunction } from './RWFunction';
7
+ import { RWLayout } from './RWLayout';
8
+ import { RWPage } from './RWPage';
9
+ import { RWRouter } from './RWRouter';
10
+ import { RWSDL } from './RWSDL';
11
+ import { RWService } from './RWService';
12
+ import { RWTOML } from './RWTOML';
13
+ export interface RWProjectOptions {
14
+ projectRoot: string;
15
+ }
13
16
  /**
14
17
  * Represents a Redwood project.
15
18
  * This is the root node.
16
19
  */
17
20
  export declare class RWProject extends BaseNode {
21
+ opts: RWProjectOptions;
22
+ constructor(opts: RWProjectOptions);
18
23
  parent: undefined;
24
+ get projectRoot(): string;
19
25
  get id(): string;
20
26
  children(): (RWComponent | RWTOML | RWPage | RWRouter | RWService | RWSDL | RWLayout | RWEnvHelper)[];
21
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RWProject.d.ts","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAUpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAUtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAUpC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IACrC,MAAM,YAAY;IAElB,IAAY,EAAE,WAEb;IAED,QAAQ;IAaR;;OAEG;IACH,IAAY,UAAU,4CAErB;IAED;;OAEG;IACH,IAAY,mBAAmB,IAAI,OAAO,CAKzC;IAGa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAWhD,oBAAoB;IAQlC,IAAY,WAAW,IAAI,MAAM,CAEhC;IAEO,OAAO,KAAK,eAAe,GAMlC;IAED,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,MAAM,aAEjB;IACD,SAAS,iBAER;IAGD,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAO7B,IAAY,2BAA2B,WAOtC;IAED,IAAY,QAAQ,gBAMnB;IAED,IAAY,IAAI,YAIf;IAED,IAAY,OAAO,IAAI,QAAQ,EAAE,CAMhC;IAED,IAAY,SAAS,IAAI,UAAU,EAAE,CAKpC;IAED,IAAY,UAAU,IAAI,WAAW,EAAE,CAYtC;IAED,IAAY,KAAK,aAEhB;IAGD,IAAY,KAAK,aAEhB;IAED;;;QAGI;IACJ,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,SAAS,IAAI,WAAW,CAEnC;CACF"}
1
+ {"version":3,"file":"RWProject.d.ts","sourceRoot":"","sources":["../../src/model/RWProject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAUpD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAUnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;CACpB;AAID;;;GAGG;AACH,qBAAa,SAAU,SAAQ,QAAQ;IAClB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAGzC,MAAM,YAAY;IAElB,IAAI,WAAW,WAEd;IAED,IAAY,EAAE,WAEb;IAED,QAAQ;IAaR;;OAEG;IACH,IAAY,UAAU,4CAErB;IACD;;OAEG;IACH,IAAY,mBAAmB,IAAI,OAAO,CAKzC;IAEa,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAWhD,oBAAoB;IAOlC,IAAY,WAAW,IAAI,MAAM,CAEhC;IACO,OAAO,KAAK,eAAe,GAMlC;IACD,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IACD,IAAY,MAAM,aAEjB;IACD,SAAS,iBAER;IAGD,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAO7B,IAAY,2BAA2B,WAGtC;IAED,IAAY,QAAQ,gBAMnB;IAED,IAAY,IAAI,YAIf;IAED,IAAY,OAAO,IAAI,QAAQ,EAAE,CAMhC;IAED,IAAY,SAAS,IAAI,UAAU,EAAE,CAKpC;IAED,IAAY,UAAU,IAAI,WAAW,EAAE,CAYtC;IAED,IAAY,KAAK,aAEhB;IAGD,IAAY,KAAK,aAEhB;IAED;;;QAGI;IACJ,IAAY,KAAK,IAAI,MAAM,EAAE,CAI5B;IAED,IAAY,SAAS,IAAI,WAAW,CAEnC;CACF"}
@@ -1,224 +1,170 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import fs from 'node:fs';
8
- import { createRequire } from 'node:module';
9
- import path from 'node:path';
10
- import { getPaths, processPagesDir, getConfigPath, getPrismaSchemas, } from '@cedarjs/project-config';
11
- import { BaseNode } from '../nodes.js';
12
- import { lazy, memo } from '../x/decorators.js';
13
- import { followsDirNameConvention, isCellFileName, isLayoutFileName, globSync, } from '../x/path.js';
14
- import { URL_file } from '../x/URL.js';
15
- import { RWCell } from './RWCell.js';
16
- import { RWComponent } from './RWComponent.js';
17
- import { RWEnvHelper } from './RWEnvHelper.js';
18
- import { RWFunction } from './RWFunction.js';
19
- import { RWLayout } from './RWLayout.js';
20
- import { RWPage } from './RWPage.js';
21
- import { RWRouter } from './RWRouter.js';
22
- import { RWSDL } from './RWSDL.js';
23
- import { RWService } from './RWService.js';
24
- import { RWTOML } from './RWTOML.js';
25
- // @prisma/internals is a CJS-only bundle that uses Object.defineProperty with
26
- // getter functions for its exports. Node's ESM named-export static analysis
27
- // cannot detect these, so we use createRequire to access them reliably.
28
- const _require = createRequire(import.meta.url);
29
- const { getDMMF } = _require('@prisma/internals');
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.RWProject = void 0;
9
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/map"));
10
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/instance/filter"));
11
+ var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/object/get-own-property-descriptor"));
12
+ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/applyDecoratedDescriptor"));
13
+ var _nodeFs = require("node:fs");
14
+ var _nodePath = require("node:path");
15
+ var _internals = require("@prisma/internals");
16
+ var _projectConfig = require("@cedarjs/project-config");
17
+ var _nodes = require("../nodes");
18
+ var _decorators = require("../x/decorators");
19
+ var _path = require("../x/path");
20
+ var _URL = require("../x/URL");
21
+ var _RWCell = require("./RWCell");
22
+ var _RWComponent = require("./RWComponent");
23
+ var _RWEnvHelper = require("./RWEnvHelper");
24
+ var _RWFunction = require("./RWFunction");
25
+ var _RWLayout = require("./RWLayout");
26
+ var _RWPage = require("./RWPage");
27
+ var _RWRouter = require("./RWRouter");
28
+ var _RWSDL = require("./RWSDL");
29
+ var _RWService = require("./RWService");
30
+ var _RWTOML = require("./RWTOML");
31
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec0, _dec1, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class;
30
32
  const allFilesGlob = '/**/*.{js,jsx,ts,tsx}';
33
+
31
34
  /**
32
35
  * Represents a Redwood project.
33
36
  * This is the root node.
34
37
  */
35
- export class RWProject extends BaseNode {
36
- parent = undefined;
37
- get id() {
38
- return URL_file(this.pathHelper.base);
39
- }
40
- children() {
41
- return [
42
- this.redwoodTOML,
43
- ...this.pages,
44
- this.router,
45
- ...this.services,
46
- ...this.sdls,
47
- ...this.layouts,
48
- ...this.components,
49
- this.envHelper,
50
- ];
51
- }
52
- /**
53
- * Path constants that are relevant to a Redwood project.
54
- */
55
- get pathHelper() {
56
- return getPaths();
57
- }
58
- /**
59
- * Checks for the presence of a tsconfig.json at the root.
60
- */
61
- get isTypeScriptProject() {
62
- return (fs.existsSync(path.join(this.pathHelper.web.base, 'tsconfig.json')) ||
63
- fs.existsSync(path.join(this.pathHelper.api.base, 'tsconfig.json')));
64
- }
65
- // TODO: do we move this to a separate node? (ex: RWDatabase)
66
- async prismaDMMF() {
67
- try {
68
- const result = await getPrismaSchemas();
69
- const datamodel = result.schemas;
70
- // consider case where dmmf doesn't exist (or fails to parse)
71
- return await getDMMF({ datamodel });
72
- }
73
- catch {
74
- return undefined;
75
- }
76
- }
77
- async prismaDMMFModelNames() {
78
- const dmmf = await this.prismaDMMF();
79
- if (!dmmf) {
80
- return [];
81
- }
82
- return dmmf.datamodel.models.map((m) => m.name);
83
- }
84
- get redwoodTOML() {
85
- return new RWTOML(getConfigPath(), this);
86
- }
87
- get processPagesDir() {
88
- try {
89
- return processPagesDir(this.pathHelper.web.pages);
90
- }
91
- catch {
92
- return [];
93
- }
94
- }
95
- get pages() {
96
- return this.processPagesDir.map((p) => new RWPage(p.constName, p.path, this));
97
- }
98
- get router() {
99
- return this.getRouter();
100
- }
101
- getRouter = () => {
102
- return new RWRouter(this.pathHelper.web.routes, this);
38
+ let RWProject = exports.RWProject = (_dec = (0, _decorators.lazy)(), _dec2 = (0, _decorators.lazy)(), _dec3 = (0, _decorators.lazy)(), _dec4 = (0, _decorators.memo)(), _dec5 = (0, _decorators.memo)(), _dec6 = (0, _decorators.lazy)(), _dec7 = (0, _decorators.lazy)(), _dec8 = (0, _decorators.lazy)(), _dec9 = (0, _decorators.lazy)(), _dec0 = (0, _decorators.lazy)(), _dec1 = (0, _decorators.lazy)(), _dec10 = (0, _decorators.lazy)(), _dec11 = (0, _decorators.lazy)(), _dec12 = (0, _decorators.lazy)(), _dec13 = (0, _decorators.lazy)(), _dec14 = (0, _decorators.lazy)(), _dec15 = (0, _decorators.lazy)(), _dec16 = (0, _decorators.lazy)(), _dec17 = (0, _decorators.lazy)(), _class = class RWProject extends _nodes.BaseNode {
39
+ constructor(opts) {
40
+ super();
41
+ this.parent = undefined;
42
+ this.getRouter = () => {
43
+ return new _RWRouter.RWRouter(this.pathHelper.web.routes, this);
103
44
  };
104
- // TODO: move to path helper
105
- servicesFilePath(name) {
106
- // name = blog,posts
107
- const ext = this.isTypeScriptProject ? '.ts' : '.js';
108
- return path.join(this.pathHelper.api.services, name, name + ext);
109
- }
110
- // TODO: move to path helper
111
- get defaultNotFoundPageFilePath() {
112
- const ext = this.isTypeScriptProject ? '.tsx' : '.jsx';
113
- return path.join(this.pathHelper.web.pages, 'NotFoundPage', 'NotFoundPage' + ext);
114
- }
115
- get services() {
116
- // TODO: what is the official logic?
117
- // TODO: Support both `/services/todos/todos.js` AND `/services/todos.js`
118
- return globSync(this.pathHelper.api.services + allFilesGlob)
119
- .filter(followsDirNameConvention)
120
- .map((x) => new RWService(x, this));
121
- }
122
- get sdls() {
123
- return globSync(this.pathHelper.api.graphql + '/**/*.sdl.{js,ts}').map((x) => new RWSDL(x, this));
124
- }
125
- get layouts() {
126
- // TODO: what is the official logic?
127
- return globSync(this.pathHelper.web.layouts + allFilesGlob)
128
- .filter(followsDirNameConvention)
129
- .filter(isLayoutFileName)
130
- .map((x) => new RWLayout(x, this));
131
- }
132
- get functions() {
133
- // TODO: what is the official logic?
134
- return globSync(this.pathHelper.api.functions + allFilesGlob).map((x) => new RWFunction(x, this));
135
- }
136
- get components() {
137
- return globSync(this.pathHelper.web.components + allFilesGlob).map((file) => {
138
- if (isCellFileName(file)) {
139
- const possibleCell = new RWCell(file, this);
140
- return possibleCell.isCell
141
- ? possibleCell
142
- : new RWComponent(file, this);
143
- }
144
- return new RWComponent(file, this);
145
- });
146
- }
147
- get sides() {
148
- return ['web', 'api'];
149
- }
150
- // TODO: Wrap these in a real model.
151
- get mocks() {
152
- return globSync(this.pathHelper.web.base + '/**/*.mock.{js,ts}');
153
- }
154
- /**
155
- * A "Cell" is a component that ends in `Cell.{js, jsx, tsx}`, but does not
156
- * have a default export AND does not export `QUERY`
157
- **/
158
- get cells() {
159
- return globSync(this.pathHelper.web.base + '/**/*Cell.{js,jsx,tsx}')
160
- .map((file) => new RWCell(file, this))
161
- .filter((file) => file.isCell);
162
- }
163
- get envHelper() {
164
- return new RWEnvHelper(this);
165
- }
166
- }
167
- __decorate([
168
- lazy()
169
- ], RWProject.prototype, "id", null);
170
- __decorate([
171
- lazy()
172
- ], RWProject.prototype, "pathHelper", null);
173
- __decorate([
174
- lazy()
175
- ], RWProject.prototype, "isTypeScriptProject", null);
176
- __decorate([
177
- memo()
178
- ], RWProject.prototype, "prismaDMMF", null);
179
- __decorate([
180
- memo()
181
- ], RWProject.prototype, "prismaDMMFModelNames", null);
182
- __decorate([
183
- lazy()
184
- ], RWProject.prototype, "redwoodTOML", null);
185
- __decorate([
186
- lazy()
187
- ], RWProject.prototype, "processPagesDir", null);
188
- __decorate([
189
- lazy()
190
- ], RWProject.prototype, "pages", null);
191
- __decorate([
192
- lazy()
193
- ], RWProject.prototype, "router", null);
194
- __decorate([
195
- lazy()
196
- ], RWProject.prototype, "defaultNotFoundPageFilePath", null);
197
- __decorate([
198
- lazy()
199
- ], RWProject.prototype, "services", null);
200
- __decorate([
201
- lazy()
202
- ], RWProject.prototype, "sdls", null);
203
- __decorate([
204
- lazy()
205
- ], RWProject.prototype, "layouts", null);
206
- __decorate([
207
- lazy()
208
- ], RWProject.prototype, "functions", null);
209
- __decorate([
210
- lazy()
211
- ], RWProject.prototype, "components", null);
212
- __decorate([
213
- lazy()
214
- ], RWProject.prototype, "sides", null);
215
- __decorate([
216
- lazy()
217
- ], RWProject.prototype, "mocks", null);
218
- __decorate([
219
- lazy()
220
- ], RWProject.prototype, "cells", null);
221
- __decorate([
222
- lazy()
223
- ], RWProject.prototype, "envHelper", null);
224
- //# sourceMappingURL=RWProject.js.map
45
+ this.opts = opts;
46
+ }
47
+ get projectRoot() {
48
+ return this.opts.projectRoot;
49
+ }
50
+ get id() {
51
+ return (0, _URL.URL_file)(this.projectRoot);
52
+ }
53
+ children() {
54
+ return [this.redwoodTOML, ...this.pages, this.router, ...this.services, ...this.sdls, ...this.layouts, ...this.components, this.envHelper];
55
+ }
56
+
57
+ /**
58
+ * Path constants that are relevant to a Redwood project.
59
+ */
60
+ get pathHelper() {
61
+ return (0, _projectConfig.getPaths)(this.projectRoot);
62
+ }
63
+ /**
64
+ * Checks for the presence of a tsconfig.json at the root.
65
+ */
66
+ get isTypeScriptProject() {
67
+ return (0, _nodeFs.existsSync)((0, _nodePath.join)(this.pathHelper.web.base, 'tsconfig.json')) || (0, _nodeFs.existsSync)((0, _nodePath.join)(this.pathHelper.api.base, 'tsconfig.json'));
68
+ }
69
+ // TODO: do we move this to a separate node? (ex: RWDatabase)
70
+ async prismaDMMF() {
71
+ try {
72
+ const schemaPath = await (0, _projectConfig.getSchemaPath)(this.pathHelper.api.prismaConfig);
73
+ const result = await (0, _internals.getSchemaWithPath)(schemaPath);
74
+ const datamodel = result.schemas;
75
+ // consider case where dmmf doesn't exist (or fails to parse)
76
+ return await (0, _internals.getDMMF)({
77
+ datamodel
78
+ });
79
+ } catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ async prismaDMMFModelNames() {
84
+ var _context;
85
+ const dmmf = await this.prismaDMMF();
86
+ if (!dmmf) {
87
+ return [];
88
+ }
89
+ return (0, _map.default)(_context = dmmf.datamodel.models).call(_context, m => m.name);
90
+ }
91
+ get redwoodTOML() {
92
+ return new _RWTOML.RWTOML((0, _projectConfig.getConfigPath)(this.projectRoot), this);
93
+ }
94
+ get processPagesDir() {
95
+ try {
96
+ return (0, _projectConfig.processPagesDir)(this.pathHelper.web.pages);
97
+ } catch {
98
+ return [];
99
+ }
100
+ }
101
+ get pages() {
102
+ var _context2;
103
+ return (0, _map.default)(_context2 = this.processPagesDir).call(_context2, p => new _RWPage.RWPage(p.constName, p.path, this));
104
+ }
105
+ get router() {
106
+ return this.getRouter();
107
+ }
108
+ // TODO: move to path helper
109
+ servicesFilePath(name) {
110
+ // name = blog,posts
111
+ const ext = this.isTypeScriptProject ? '.ts' : '.js';
112
+ return (0, _nodePath.join)(this.pathHelper.api.services, name, name + ext);
113
+ }
114
+
115
+ // TODO: move to path helper
116
+ get defaultNotFoundPageFilePath() {
117
+ const ext = this.isTypeScriptProject ? '.tsx' : '.jsx';
118
+ return (0, _nodePath.join)(this.pathHelper.web.pages, 'NotFoundPage', 'NotFoundPage' + ext);
119
+ }
120
+ get services() {
121
+ var _context3, _context4;
122
+ // TODO: what is the official logic?
123
+ // TODO: Support both `/services/todos/todos.js` AND `/services/todos.js`
124
+ return (0, _map.default)(_context3 = (0, _filter.default)(_context4 = (0, _path.globSync)(this.pathHelper.api.services + allFilesGlob)).call(_context4, _path.followsDirNameConvention)).call(_context3, x => new _RWService.RWService(x, this));
125
+ }
126
+ get sdls() {
127
+ var _context5;
128
+ return (0, _map.default)(_context5 = (0, _path.globSync)(this.pathHelper.api.graphql + '/**/*.sdl.{js,ts}')).call(_context5, x => new _RWSDL.RWSDL(x, this));
129
+ }
130
+ get layouts() {
131
+ var _context6, _context7, _context8;
132
+ // TODO: what is the official logic?
133
+ return (0, _map.default)(_context6 = (0, _filter.default)(_context7 = (0, _filter.default)(_context8 = (0, _path.globSync)(this.pathHelper.web.layouts + allFilesGlob)).call(_context8, _path.followsDirNameConvention)).call(_context7, _path.isLayoutFileName)).call(_context6, x => new _RWLayout.RWLayout(x, this));
134
+ }
135
+ get functions() {
136
+ var _context9;
137
+ // TODO: what is the official logic?
138
+ return (0, _map.default)(_context9 = (0, _path.globSync)(this.pathHelper.api.functions + allFilesGlob)).call(_context9, x => new _RWFunction.RWFunction(x, this));
139
+ }
140
+ get components() {
141
+ var _context0;
142
+ return (0, _map.default)(_context0 = (0, _path.globSync)(this.pathHelper.web.components + allFilesGlob)).call(_context0, file => {
143
+ if ((0, _path.isCellFileName)(file)) {
144
+ const possibleCell = new _RWCell.RWCell(file, this);
145
+ return possibleCell.isCell ? possibleCell : new _RWComponent.RWComponent(file, this);
146
+ }
147
+ return new _RWComponent.RWComponent(file, this);
148
+ });
149
+ }
150
+ get sides() {
151
+ return ['web', 'api'];
152
+ }
153
+
154
+ // TODO: Wrap these in a real model.
155
+ get mocks() {
156
+ return (0, _path.globSync)(this.pathHelper.web.base + '/**/*.mock.{js,ts}');
157
+ }
158
+
159
+ /**
160
+ * A "Cell" is a component that ends in `Cell.{js, jsx, tsx}`, but does not
161
+ * have a default export AND does not export `QUERY`
162
+ **/
163
+ get cells() {
164
+ var _context1, _context10;
165
+ return (0, _filter.default)(_context1 = (0, _map.default)(_context10 = (0, _path.globSync)(this.pathHelper.web.base + '/**/*Cell.{js,jsx,tsx}')).call(_context10, file => new _RWCell.RWCell(file, this))).call(_context1, file => file.isCell);
166
+ }
167
+ get envHelper() {
168
+ return new _RWEnvHelper.RWEnvHelper(this);
169
+ }
170
+ }, (0, _applyDecoratedDescriptor2.default)(_class.prototype, "id", [_dec], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "id"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "pathHelper", [_dec2], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "pathHelper"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "isTypeScriptProject", [_dec3], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "isTypeScriptProject"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "prismaDMMF", [_dec4], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "prismaDMMF"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "prismaDMMFModelNames", [_dec5], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "prismaDMMFModelNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "redwoodTOML", [_dec6], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "redwoodTOML"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "processPagesDir", [_dec7], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "processPagesDir"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "pages", [_dec8], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "pages"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "router", [_dec9], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "router"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "defaultNotFoundPageFilePath", [_dec0], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "defaultNotFoundPageFilePath"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "services", [_dec1], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "services"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "sdls", [_dec10], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "sdls"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "layouts", [_dec11], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "layouts"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "functions", [_dec12], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "functions"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "components", [_dec13], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "components"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "sides", [_dec14], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "sides"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "mocks", [_dec15], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "mocks"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "cells", [_dec16], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "cells"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "envHelper", [_dec17], (0, _getOwnPropertyDescriptor.default)(_class.prototype, "envHelper"), _class.prototype), _class);
@@ -1,7 +1,7 @@
1
1
  import * as tsm from 'ts-morph';
2
- import { BaseNode } from '../nodes.js';
3
- import type { Location } from '../x/Location.js';
4
- import type { RWRouter } from './RWRouter.js';
2
+ import { BaseNode } from '../nodes';
3
+ import type { Location } from '../x/Location';
4
+ import type { RWRouter } from './RWRouter';
5
5
  export declare class RWRoute extends BaseNode {
6
6
  /**
7
7
  * the <Route> tag
@@ -23,7 +23,7 @@ export declare class RWRoute extends BaseNode {
23
23
  /**
24
24
  * The associated Redwood Page node, if any
25
25
  */
26
- get page(): import("./RWPage.js").RWPage | undefined;
26
+ get page(): import("./RWPage").RWPage | undefined;
27
27
  /**
28
28
  * <Route path="" page={THIS_IDENTIFIER}/>
29
29
  */
@@ -37,7 +37,7 @@ export declare class RWRoute extends BaseNode {
37
37
  get path_literal_node(): tsm.StringLiteral | undefined;
38
38
  get isNotFound(): boolean;
39
39
  get redirect(): string | undefined;
40
- diagnostics(): Generator<import("../x/diagnostics.js").ExtendedDiagnostic, void, unknown>;
40
+ diagnostics(): Generator<import("../x/diagnostics").ExtendedDiagnostic, void, unknown>;
41
41
  private get hasPathCollision();
42
42
  private getBoolAttr;
43
43
  private getStringAttr;
@@ -1 +1 @@
1
- {"version":3,"file":"RWRoute.d.ts","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,OAAQ,SAAQ,QAAQ;IAEjC;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB;IAClC,MAAM,EAAE,QAAQ;;IAJvB;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAClC,MAAM,EAAE,QAAQ;IAKzB,IAAY,EAAE,WAIb;IAED,IAAY,QAAQ,IAAI,QAAQ,CAE/B;IAED,IAAY,SAAS,YAOpB;IAED,IAAY,eAAe,uBAoB1B;IAED,IACI,KAAK,+BA0DR;IAED,IAAY,aAAa,IAAI,OAAO,CAMnC;IAED,IAAY,YAAY,YAEvB;IAED;;OAEG;IAEH,IAAY,IAAI,6CAOf;IACD;;OAEG;IACK,OAAO,KAAK,eAAe,GAelC;IACD,IAAY,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAEpD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAY,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAWlD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAY,SAAS,IAAI,OAAO,CAE/B;IAGD,IAAY,UAAU,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAY,iBAAiB,kCAY5B;IAED,IAAY,UAAU,IAAI,OAAO,CAEhC;IAED,IAAY,QAAQ,uBAEnB;IAEA,WAAW;IA8BJ,OAAO,KAAK,gBAAgB,GAsBnC;IAED,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,aAAa;CAatB"}
1
+ {"version":3,"file":"RWRoute.d.ts","sourceRoot":"","sources":["../../src/model/RWRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAInC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,qBAAa,OAAQ,SAAQ,QAAQ;IAEjC;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB;IAClC,MAAM,EAAE,QAAQ;;IAJvB;;OAEG;IACI,OAAO,EAAE,GAAG,CAAC,qBAAqB,EAClC,MAAM,EAAE,QAAQ;IAKzB,IAAY,EAAE,WAIb;IAED,IAAY,QAAQ,IAAI,QAAQ,CAE/B;IAED,IAAY,SAAS,YAOpB;IAED,IAAY,eAAe,uBAoB1B;IAED,IACI,KAAK,+BA0DR;IAED,IAAY,aAAa,IAAI,OAAO,CAMnC;IAED,IAAY,YAAY,YAEvB;IAED;;OAEG;IAEH,IAAY,IAAI,0CAOf;IACD;;OAEG;IACK,OAAO,KAAK,eAAe,GAelC;IACD,IAAY,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAEpD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IACD,IAAY,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAWlD;IACD,IAAY,IAAI,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAY,SAAS,IAAI,OAAO,CAE/B;IAGD,IAAY,UAAU,IAAI,MAAM,GAAG,SAAS,CAE3C;IAED,IAAY,iBAAiB,kCAY5B;IAED,IAAY,UAAU,IAAI,OAAO,CAEhC;IAED,IAAY,QAAQ,uBAEnB;IAEA,WAAW;IA8BJ,OAAO,KAAK,gBAAgB,GAsBnC;IAED,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,aAAa;CAatB"}