@voxgig/build 0.3.1 → 0.6.0

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/build.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  import Fs from 'fs'
4
4
  import Path from 'path'
5
5
 
6
+ import { dive } from '@voxgig/model'
7
+
6
8
  const EnvLambda = {
7
9
 
8
10
  srv_yml: (model: any, spec: {
@@ -20,6 +22,12 @@ const EnvLambda = {
20
22
  const lambda = srv.env.lambda
21
23
  const handler = lambda.handler
22
24
 
25
+ // NOTE: gen.custom covention: allows for complete overwrite
26
+ // as a get-out-of-jail
27
+ if (srv.gen?.custom?.lambda?.srv_yml) {
28
+ return srv.gen.custom.lambda.srv_yml
29
+ }
30
+
23
31
  let srvyml = `${name}:
24
32
  handler: ${handler.path.prefix}${name}${handler.path.suffix}
25
33
  events:
@@ -30,11 +38,27 @@ const EnvLambda = {
30
38
  let prefix = web.path.prefix
31
39
  let area = web.path.area
32
40
  let method = web.method
33
- let cors = web.cors.active ? 'true' : 'false'
41
+ let corsflag = 'false'
42
+ let corsprops = ''
43
+
44
+ if (web.cors.active) {
45
+ corsflag = 'true'
46
+ if (web.cors.props && !empty(web.cors.props)) {
47
+ corsflag = ''
48
+ corsprops = Object
49
+ .entries(web.cors.props)
50
+ .reduce(((a: any, nv: any) => (
51
+ a += ` ${nv[0]}: ${nv[1]}\n`
52
+ , a)), '')
53
+ }
54
+ }
55
+
56
+
34
57
  srvyml += ` - http:
35
58
  path: "${prefix}${area}${name}"
36
59
  method: ${method}
37
- cors: ${cors}
60
+ cors: ${corsflag}
61
+ ${corsprops}
38
62
  `
39
63
  }
40
64
 
@@ -74,8 +98,57 @@ exports.handler = async (event, context) => {
74
98
  })
75
99
  },
76
100
 
101
+
102
+ resources_yml: (model: any, spec: {
103
+ folder: string
104
+ custom: string
105
+ }) => {
106
+ let resources_yml_path = Path.join(spec.folder, 'resources.yml')
107
+
108
+ let content = dive(model.main.ent).map(entry => {
109
+ // console.log('DYNAMO', entry)
110
+ let path = entry[0]
111
+ let ent = entry[1]
112
+
113
+ if (ent && ent.dynamo?.active) {
114
+ let name = path.join('')
115
+ let fullname = ent.dynamo.prefix +
116
+ name +
117
+ ent.dynamo.suffix
118
+
119
+ return `${name}:
120
+ Type: AWS::DynamoDB::Table
121
+ Properties:
122
+ TableName: ${fullname}
123
+ BillingMode: "PAY_PER_REQUEST"
124
+ PointInTimeRecoverySpecification:
125
+ PointInTimeRecoveryEnabled: "true"
126
+ AttributeDefinitions:
127
+ - AttributeName: "${ent.id.field}"
128
+ AttributeType: "S"
129
+ KeySchema:
130
+ - AttributeName: "${ent.id.field}"
131
+ KeyType: HASH
132
+ `
133
+ }
134
+ return ''
135
+ }).join('\n\n\n')
136
+
137
+ if (spec.custom) {
138
+ content = Fs.readFileSync(spec.custom).toString() + '\n\n\n' + content
139
+ }
140
+
141
+ Fs.writeFileSync(resources_yml_path, content)
142
+ }
143
+
77
144
  }
78
145
 
146
+
147
+ function empty(o: any) {
148
+ return null == o ? true : 0 === Object.keys(o).length
149
+ }
150
+
151
+
79
152
  export {
80
153
  EnvLambda
81
154
  }
package/dist/build.d.ts CHANGED
@@ -5,5 +5,9 @@ declare const EnvLambda: {
5
5
  srv_handler: (model: any, spec: {
6
6
  folder: string;
7
7
  }) => void;
8
+ resources_yml: (model: any, spec: {
9
+ folder: string;
10
+ custom: string;
11
+ }) => void;
8
12
  };
9
13
  export { EnvLambda };
package/dist/build.js CHANGED
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.EnvLambda = void 0;
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const path_1 = __importDefault(require("path"));
10
+ const model_1 = require("@voxgig/model");
10
11
  const EnvLambda = {
11
12
  srv_yml: (model, spec) => {
12
13
  let srv_yml_path = path_1.default.join(spec.folder, 'srv.yml');
@@ -14,10 +15,16 @@ const EnvLambda = {
14
15
  .entries(model.main.srv)
15
16
  .filter((entry) => { var _a, _b; return (_b = (_a = entry[1].env) === null || _a === void 0 ? void 0 : _a.lambda) === null || _b === void 0 ? void 0 : _b.active; })
16
17
  .map((entry) => {
18
+ var _a, _b, _c;
17
19
  const name = entry[0];
18
20
  const srv = entry[1];
19
21
  const lambda = srv.env.lambda;
20
22
  const handler = lambda.handler;
23
+ // NOTE: gen.custom covention: allows for complete overwrite
24
+ // as a get-out-of-jail
25
+ if ((_c = (_b = (_a = srv.gen) === null || _a === void 0 ? void 0 : _a.custom) === null || _b === void 0 ? void 0 : _b.lambda) === null || _c === void 0 ? void 0 : _c.srv_yml) {
26
+ return srv.gen.custom.lambda.srv_yml;
27
+ }
21
28
  let srvyml = `${name}:
22
29
  handler: ${handler.path.prefix}${name}${handler.path.suffix}
23
30
  events:
@@ -27,11 +34,23 @@ const EnvLambda = {
27
34
  let prefix = web.path.prefix;
28
35
  let area = web.path.area;
29
36
  let method = web.method;
30
- let cors = web.cors.active ? 'true' : 'false';
37
+ let corsflag = 'false';
38
+ let corsprops = '';
39
+ if (web.cors.active) {
40
+ corsflag = 'true';
41
+ if (web.cors.props && !empty(web.cors.props)) {
42
+ corsflag = '';
43
+ corsprops = Object
44
+ .entries(web.cors.props)
45
+ .reduce(((a, nv) => (a += ` ${nv[0]}: ${nv[1]}\n`
46
+ , a)), '');
47
+ }
48
+ }
31
49
  srvyml += ` - http:
32
50
  path: "${prefix}${area}${name}"
33
51
  method: ${method}
34
- cors: ${cors}
52
+ cors: ${corsflag}
53
+ ${corsprops}
35
54
  `;
36
55
  }
37
56
  return srvyml;
@@ -62,6 +81,43 @@ exports.handler = async (event, context) => {
62
81
  }
63
82
  });
64
83
  },
84
+ resources_yml: (model, spec) => {
85
+ let resources_yml_path = path_1.default.join(spec.folder, 'resources.yml');
86
+ let content = (0, model_1.dive)(model.main.ent).map(entry => {
87
+ var _a;
88
+ // console.log('DYNAMO', entry)
89
+ let path = entry[0];
90
+ let ent = entry[1];
91
+ if (ent && ((_a = ent.dynamo) === null || _a === void 0 ? void 0 : _a.active)) {
92
+ let name = path.join('');
93
+ let fullname = ent.dynamo.prefix +
94
+ name +
95
+ ent.dynamo.suffix;
96
+ return `${name}:
97
+ Type: AWS::DynamoDB::Table
98
+ Properties:
99
+ TableName: ${fullname}
100
+ BillingMode: "PAY_PER_REQUEST"
101
+ PointInTimeRecoverySpecification:
102
+ PointInTimeRecoveryEnabled: "true"
103
+ AttributeDefinitions:
104
+ - AttributeName: "${ent.id.field}"
105
+ AttributeType: "S"
106
+ KeySchema:
107
+ - AttributeName: "${ent.id.field}"
108
+ KeyType: HASH
109
+ `;
110
+ }
111
+ return '';
112
+ }).join('\n\n\n');
113
+ if (spec.custom) {
114
+ content = fs_1.default.readFileSync(spec.custom).toString() + '\n\n\n' + content;
115
+ }
116
+ fs_1.default.writeFileSync(resources_yml_path, content);
117
+ }
65
118
  };
66
119
  exports.EnvLambda = EnvLambda;
120
+ function empty(o) {
121
+ return null == o ? true : 0 === Object.keys(o).length;
122
+ }
67
123
  //# sourceMappingURL=build.js.map
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../build.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;AAE/C,4CAAmB;AACnB,gDAAuB;AAEvB,MAAM,SAAS,GAAG;IAEhB,OAAO,EAAE,CAAC,KAAU,EAAE,IAErB,EAAE,EAAE;QACH,IAAI,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEpD,IAAI,OAAO,GAAG,MAAM;aACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACvB,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,eAAC,OAAA,MAAA,MAAA,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,0CAAE,MAAM,0CAAE,MAAM,CAAA,EAAA,CAAC;aACpD,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAEpB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAA;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAE9B,IAAI,MAAM,GAAG,GAAG,IAAI;aACf,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM;;CAE5D,CAAA;YACO,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAA;YAEvB,IAAI,GAAG,CAAC,MAAM,EAAE;gBACd,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;gBAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;gBACxB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;gBACvB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC7C,MAAM,IAAI;iBACH,MAAM,GAAG,IAAI,GAAG,IAAI;kBACnB,MAAM;gBACR,IAAI;CACnB,CAAA;aACQ;YAED,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEnB,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAGD,gCAAgC;IAChC,WAAW,EAAE,CAAC,KAAU,EAAE,IAEzB,EAAE,EAAE;QACH,MAAM;aACH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACvB,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,0CAAE,MAAM,CAAA,EAAA,CAAC;aAC5C,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,uBAAuB;YACvB,IAAI,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;YAE3D,IAAI,OAAO,GAAG;;;;;;;;;CASrB,CAAA;YAEO,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;gBACpC,YAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;aAC5C;QACH,CAAC,CAAC,CAAA;IACN,CAAC;CAEF,CAAA;AAGC,8BAAS"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../build.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/build",
3
- "version": "0.3.1",
3
+ "version": "0.6.0",
4
4
  "main": "dist/build.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/build.d.ts",
@@ -41,9 +41,9 @@
41
41
  "dependencies": {},
42
42
  "devDependencies": {
43
43
  "@types/jest": "^28.1.6",
44
- "@voxgig/model": "^0.6.1",
44
+ "@voxgig/model": "^0.8.0",
45
45
  "@voxgig/system": "^0.4.1",
46
- "esbuild": "^0.14.53",
46
+ "esbuild": "^0.15.2",
47
47
  "esbuild-jest": "^0.5.0",
48
48
  "jest": "^28.1.3",
49
49
  "tinyify": "^3.1.0",