@fy-stack/fullstack-construct 0.0.128 → 0.0.130

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 CHANGED
@@ -1,7 +1,64 @@
1
- # fullstack-construct
1
+ # Fullstack Construct Documentation
2
2
 
3
- This library was generated with [Nx](https://nx.dev).
3
+ ## `FullstackConstruct`
4
4
 
5
- ## Building
5
+ ### Example
6
+ ```typescript
7
+ import {
8
+ AppGrant,
9
+ AppType,
10
+ FullStackConstruct,
11
+ } from '@fy-stack/fullstack-construct';
6
12
 
7
- Run `nx build fullstack-construct` to build the library.
13
+ new FullStackConstruct(this, 'FullstackApp', {
14
+ appId: `unique-app-id`,
15
+ apps: {
16
+ api: {
17
+ type: AppType.NODE_API,
18
+ output: process.cwd() + '/dist/apps/api',
19
+ buildParams: { command: 'node main.js' },
20
+ attachment: { secrets: true },
21
+ grant: [AppGrant.EVENT, AppGrant.SECRETS],
22
+ },
23
+ eventHandler: {
24
+ type: AppType.NODE_APP,
25
+ output: process.cwd() + '/dist/apps/event-handler',
26
+ buildParams: { handler: 'main.handler' },
27
+ attachment: { secrets: true, queue: { batchSize: 10 } },
28
+ grant: [AppGrant.SECRETS],
29
+ },
30
+ web: {
31
+ type: AppType.NEXT_PAGE_EXPORT,
32
+ output: process.cwd() + '/dist/apps/web',
33
+ },
34
+ },
35
+ secrets: {
36
+ SOME_OTHER_ENV: "envValue"
37
+ },
38
+ events: {
39
+ messages: [
40
+ { messages: [EventType.DAILY_SPOOL], $resource: 'eventHandler' },
41
+ ],
42
+ cron: [
43
+ {
44
+ messages: [EventType.DAILY_SPOOL],
45
+ cron: { hour: '0', minute: '0' },
46
+ },
47
+ ],
48
+ },
49
+ cdn: {
50
+ routes: {
51
+ '/*': { $resource: 'web' },
52
+ },
53
+ domains: [
54
+ { domain: 'example.com', records: ['*', 'www'] },
55
+ { domain: 'example.com.ng', records: ['*', 'www'] },
56
+ ],
57
+ },
58
+ api: {
59
+ routes: {
60
+ '/*': { $resource: 'api' },
61
+ }
62
+ }
63
+ })
64
+ ```
@@ -6,14 +6,22 @@ import { DatabaseConstruct } from '@fy-stack/database-construct';
6
6
  import { EventConstruct } from '@fy-stack/event-construct';
7
7
  import { SecretsConstruct } from '@fy-stack/secret-construct';
8
8
  import { StorageConstruct } from '@fy-stack/storage-construct';
9
+ import { TaskConstruct } from '@fy-stack/task-construct';
10
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
9
11
  import { Construct } from 'constructs';
10
12
  import { FullStackConstructProps } from './types';
13
+ /**
14
+ *
15
+ */
11
16
  export declare class FullStackConstruct extends Construct {
17
+ vpc: ec2.IVpc;
12
18
  auth?: AuthConstruct;
13
19
  storage?: StorageConstruct;
20
+ storagePolicy?: string;
14
21
  database?: DatabaseConstruct;
15
22
  event?: EventConstruct;
16
23
  apps?: Record<string, AppConstruct>;
24
+ tasks?: Record<string, TaskConstruct>;
17
25
  cdn?: CDNConstruct;
18
26
  api?: ApiGatewayConstruct;
19
27
  secret: SecretsConstruct;
@@ -1 +1 @@
1
- {"version":3,"file":"fullstack-construct.d.ts","sourceRoot":"","sources":["../../src/lib/fullstack-construct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAW,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAU3D,qBAAa,kBAAmB,SAAQ,SAAS;IACxC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;CA8GzE"}
1
+ {"version":3,"file":"fullstack-construct.d.ts","sourceRoot":"","sources":["../../src/lib/fullstack-construct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAW,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAW3D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IACxC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;gBAEpB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB;CAsLzE"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FullStackConstruct = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const apigateway_construct_1 = require("@fy-stack/apigateway-construct");
5
6
  const app_construct_1 = require("@fy-stack/app-construct");
6
7
  const auth_construct_1 = require("@fy-stack/auth-construct");
@@ -9,6 +10,10 @@ const database_construct_1 = require("@fy-stack/database-construct");
9
10
  const event_construct_1 = require("@fy-stack/event-construct");
10
11
  const secret_construct_1 = require("@fy-stack/secret-construct");
11
12
  const storage_construct_1 = require("@fy-stack/storage-construct");
13
+ const task_construct_1 = require("@fy-stack/task-construct");
14
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
+ const ec2 = tslib_1.__importStar(require("aws-cdk-lib/aws-ec2"));
16
+ const ecs = tslib_1.__importStar(require("aws-cdk-lib/aws-ecs"));
12
17
  const constructs_1 = require("constructs");
13
18
  const types_1 = require("./types");
14
19
  const AppBuilds = {
@@ -17,18 +22,26 @@ const AppBuilds = {
17
22
  [types_1.AppType.NODE_APP]: app_construct_1.NodeAppConstruct,
18
23
  [types_1.AppType.NODE_API]: app_construct_1.NodeApiConstruct,
19
24
  [types_1.AppType.IMAGE_APP]: app_construct_1.ImageAppConstruct,
25
+ [types_1.AppType.STATIC_WEBSITE]: app_construct_1.StaticWebsiteConstruct,
20
26
  };
27
+ /**
28
+ *
29
+ */
21
30
  class FullStackConstruct extends constructs_1.Construct {
31
+ vpc;
22
32
  auth;
23
33
  storage;
34
+ storagePolicy;
24
35
  database;
25
36
  event;
26
37
  apps;
38
+ tasks;
27
39
  cdn;
28
40
  api;
29
41
  secret;
30
42
  constructor(scope, id, props) {
31
43
  super(scope, id);
44
+ this.vpc = ec2.Vpc.fromLookup(this, 'VPC', props.vpcId ? { vpcId: props.vpcId } : { isDefault: true });
32
45
  if (props.auth) {
33
46
  this.auth = new auth_construct_1.AuthConstruct(this, props.appId + 'AuthConstruct', {
34
47
  groups: props.auth.groups,
@@ -39,7 +52,10 @@ class FullStackConstruct extends constructs_1.Construct {
39
52
  }
40
53
  /* create secrets for test or production environments */
41
54
  if (props.database) {
42
- this.database = new database_construct_1.DatabaseConstruct(this, 'DatabaseConstruct', props.database);
55
+ this.database = new database_construct_1.DatabaseConstruct(this, 'DatabaseConstruct', {
56
+ ...props.database,
57
+ vpcId: this.vpc.vpcId,
58
+ });
43
59
  }
44
60
  if (props.apps) {
45
61
  const apps = {};
@@ -48,17 +64,33 @@ class FullStackConstruct extends constructs_1.Construct {
48
64
  return [
49
65
  key,
50
66
  new AppTypeConstruct(this, `${key}App`, {
51
- queue: app.attachment?.queue,
52
- output: app.output,
53
- buildParams: app.buildParams,
67
+ // @ts-expect-error invalid params
68
+ buildParams: AppTypeConstruct.parse(app.buildParams ?? {}),
69
+ vpc: this.vpc,
70
+ ...app
54
71
  }),
55
72
  ];
56
73
  })));
57
74
  this.apps = apps;
58
75
  }
76
+ if (props.task) {
77
+ const tasks = {};
78
+ const cluster = new ecs.Cluster(this, 'AppCluster', { vpc: this.vpc });
79
+ Object.assign(tasks, Object.fromEntries(Object.entries(props.task).map(([key, task]) => {
80
+ return [
81
+ key,
82
+ new task_construct_1.TaskConstruct(this, `${key}Task`, {
83
+ clusterArn: cluster.clusterArn,
84
+ vpc: this.vpc,
85
+ ...task
86
+ }),
87
+ ];
88
+ })));
89
+ this.tasks = tasks;
90
+ }
59
91
  if (props.events) {
60
92
  this.event = new event_construct_1.EventConstruct(this, 'EventConstruct', {
61
- resources: this.apps,
93
+ resources: { ...this.apps, ...this.tasks },
62
94
  events: props.events,
63
95
  });
64
96
  }
@@ -77,12 +109,22 @@ class FullStackConstruct extends constructs_1.Construct {
77
109
  domains: props.cdn.domains,
78
110
  resources: { ...this.apps, uploads: this.storage },
79
111
  });
112
+ new aws_cdk_lib_1.CfnOutput(this, 'CDN Url', {
113
+ key: 'cdnURl',
114
+ value: 'https://' + this.cdn.distribution.domainName,
115
+ });
80
116
  }
81
117
  if (props.api) {
82
118
  this.api = new apigateway_construct_1.ApiGatewayConstruct(this, 'ApiConstruct', {
83
119
  routes: props.api.routes,
84
120
  resources: this.apps,
85
121
  });
122
+ if (this.api.api.url) {
123
+ new aws_cdk_lib_1.CfnOutput(this, 'Api Url', {
124
+ key: 'apiUrl',
125
+ value: this.api.api.url,
126
+ });
127
+ }
86
128
  }
87
129
  const resources = {
88
130
  storage: this.storage,
@@ -91,6 +133,13 @@ class FullStackConstruct extends constructs_1.Construct {
91
133
  secrets: this.secret,
92
134
  event: this.event,
93
135
  };
136
+ if (this.storage && this.cdn) {
137
+ this.storagePolicy = JSON.stringify(this.storage.cloudfrontPolicy(this.cdn.distribution.distributionId));
138
+ new aws_cdk_lib_1.CfnOutput(this, 'StorageBucketCDNPolicy', {
139
+ key: 'storageBucketCDNPolicy',
140
+ value: this.storagePolicy
141
+ });
142
+ }
94
143
  for (const i in props.apps) {
95
144
  const attachments = Object.entries(props.apps[i]?.attachment ?? {})
96
145
  .map(([key]) => [key, resources[key]])
@@ -98,13 +147,27 @@ class FullStackConstruct extends constructs_1.Construct {
98
147
  if (attachments.length) {
99
148
  this.apps?.[i]?.attach(Object.fromEntries(attachments));
100
149
  }
101
- const grants = (props.apps[i]?.grant
150
+ const grants = props.apps[i]?.grant
102
151
  ?.map((val) => resources[val])
103
- .filter((v) => !!v) ?? []);
152
+ .filter((v) => !!v) ?? [];
104
153
  if (grants.length) {
105
154
  this.apps?.[i]?.grant(...grants);
106
155
  }
107
156
  }
157
+ for (const i in props.task) {
158
+ const attachments = Object.entries(props.task[i]?.attachment ?? {})
159
+ .map(([key]) => [key, resources[key]])
160
+ .filter((v) => !!v);
161
+ if (attachments.length) {
162
+ this.tasks?.[i]?.attach(Object.fromEntries(attachments));
163
+ }
164
+ const grants = props.task[i]?.grant
165
+ ?.map((val) => resources[val])
166
+ .filter((v) => !!v) ?? [];
167
+ if (grants.length) {
168
+ this.tasks?.[i]?.grant(...grants);
169
+ }
170
+ }
108
171
  }
109
172
  }
110
173
  exports.FullStackConstruct = FullStackConstruct;
@@ -1,13 +1,15 @@
1
+ import { CDNConstructProps } from '@fy-stack/cdn-construct';
1
2
  import { DatabaseConstructProps } from '@fy-stack/database-construct';
3
+ import { TaskConstructsProps } from '@fy-stack/task-construct';
2
4
  import { ResourceRef } from '@fy-stack/types';
3
5
  import * as events from 'aws-cdk-lib/aws-events';
4
- import { CDNConstructProps } from '@fy-stack/cdn-construct';
5
6
  export declare enum AppType {
6
7
  NODE_APP = "nodeApp",
7
8
  NODE_API = "nestApi",
8
9
  IMAGE_APP = "imageApp",
9
10
  NEXT_APP_ROUTER = "nextAppRouter",
10
- NEXT_PAGE_EXPORT = "nextPageExport"
11
+ NEXT_PAGE_EXPORT = "nextPageExport",
12
+ STATIC_WEBSITE = "staticWebsite"
11
13
  }
12
14
  export type AppAttachment = {
13
15
  auth?: boolean;
@@ -30,7 +32,12 @@ export type App = {
30
32
  output: string;
31
33
  attachment?: AppAttachment;
32
34
  grant?: AppGrant[];
33
- buildParams?: Record<string, string>;
35
+ env?: Record<string, string>;
36
+ buildParams?: Record<string, unknown>;
37
+ };
38
+ export type Task = Omit<TaskConstructsProps, "clusterArn" | "vpc"> & {
39
+ attachment?: AppAttachment;
40
+ grant?: AppGrant[];
34
41
  };
35
42
  export type AppMessage = ResourceRef & {
36
43
  messages: string[];
@@ -40,6 +47,7 @@ export type AppCron = {
40
47
  cron: events.CronOptions;
41
48
  };
42
49
  export type FullStackConstructProps = {
50
+ vpcId?: string;
43
51
  appId: string;
44
52
  auth?: {
45
53
  groups?: string[];
@@ -58,5 +66,6 @@ export type FullStackConstructProps = {
58
66
  routes: Record<string, ResourceRef>;
59
67
  };
60
68
  secrets?: Record<string, string | undefined>;
69
+ task?: Record<string, Task>;
61
70
  };
62
71
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,oBAAY,OAAO;IACjB,QAAQ,YAAY;IACpB,QAAQ,YAAY;IACpB,SAAS,aAAa;IACtB,eAAe,kBAAkB;IACjC,gBAAgB,mBAAmB;CACpC;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAAC;AAEF,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;KAClB,CAAC;IACF,GAAG,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;KAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC9C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,oBAAY,OAAO;IACjB,QAAQ,YAAY;IACpB,QAAQ,YAAY;IACpB,SAAS,aAAa;IACtB,eAAe,kBAAkB;IACjC,gBAAgB,mBAAmB;IACnC,cAAc,kBAAkB;CACjC;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC,CAAC;AAEF,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG;IACnE,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;KAClB,CAAC;IACF,GAAG,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;KAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC7B,CAAC"}
package/dist/lib/types.js CHANGED
@@ -8,6 +8,7 @@ var AppType;
8
8
  AppType["IMAGE_APP"] = "imageApp";
9
9
  AppType["NEXT_APP_ROUTER"] = "nextAppRouter";
10
10
  AppType["NEXT_PAGE_EXPORT"] = "nextPageExport";
11
+ AppType["STATIC_WEBSITE"] = "staticWebsite";
11
12
  })(AppType || (exports.AppType = AppType = {}));
12
13
  var AppGrant;
13
14
  (function (AppGrant) {
package/package.json CHANGED
@@ -1,21 +1,23 @@
1
1
  {
2
2
  "name": "@fy-stack/fullstack-construct",
3
- "version": "0.0.128",
3
+ "version": "0.0.130",
4
+ "repository": "https://github.com/festusyuma/fy-stack",
4
5
  "dependencies": {
5
- "tslib": "^2.3.0",
6
- "@fy-stack/auth-construct": "0.0.128",
7
- "@fy-stack/storage-construct": "0.0.128",
8
- "@fy-stack/database-construct": "0.0.128",
9
- "@fy-stack/event-construct": "0.0.128",
10
- "@fy-stack/secret-construct": "0.0.128",
11
- "@fy-stack/cdn-construct": "0.0.128",
12
- "@fy-stack/apigateway-construct": "0.0.128",
13
- "@fy-stack/types": "0.0.128",
14
- "@fy-stack/app-construct": "0.0.128"
6
+ "@fy-stack/apigateway-construct": "0.0.130",
7
+ "@fy-stack/app-construct": "0.0.130",
8
+ "@fy-stack/auth-construct": "0.0.130",
9
+ "@fy-stack/cdn-construct": "0.0.130",
10
+ "@fy-stack/database-construct": "0.0.130",
11
+ "@fy-stack/event-construct": "0.0.130",
12
+ "@fy-stack/secret-construct": "0.0.130",
13
+ "@fy-stack/storage-construct": "0.0.130",
14
+ "@fy-stack/task-construct": "0.0.130",
15
+ "@fy-stack/types": "0.0.130",
16
+ "tslib": "^2.3.0"
15
17
  },
16
18
  "peerDependencies": {
17
- "aws-cdk-lib": "2.166.0",
18
- "constructs": "10.4.2"
19
+ "aws-cdk-lib": "^2.174.1",
20
+ "constructs": "^10.4.2"
19
21
  },
20
22
  "type": "commonjs",
21
23
  "main": "./dist/index.js",