@voxgig/build 0.4.0 → 0.7.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,8 +22,15 @@ 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}
33
+ timeout: ${lambda.timeout}
25
34
  events:
26
35
  `
27
36
  const web = srv.api.web
@@ -30,11 +39,27 @@ const EnvLambda = {
30
39
  let prefix = web.path.prefix
31
40
  let area = web.path.area
32
41
  let method = web.method
33
- let cors = web.cors.active ? 'true' : 'false'
42
+ let corsflag = 'false'
43
+ let corsprops = ''
44
+
45
+ if (web.cors.active) {
46
+ corsflag = 'true'
47
+ if (web.cors.props && !empty(web.cors.props)) {
48
+ corsflag = ''
49
+ corsprops = Object
50
+ .entries(web.cors.props)
51
+ .reduce(((a: any, nv: any) => (
52
+ a += ` ${nv[0]}: ${nv[1]}\n`
53
+ , a)), '')
54
+ }
55
+ }
56
+
57
+
34
58
  srvyml += ` - http:
35
59
  path: "${prefix}${area}${name}"
36
60
  method: ${method}
37
- cors: ${cors}
61
+ cors: ${corsflag}
62
+ ${corsprops}
38
63
  `
39
64
  }
40
65
 
@@ -74,8 +99,57 @@ exports.handler = async (event, context) => {
74
99
  })
75
100
  },
76
101
 
102
+
103
+ resources_yml: (model: any, spec: {
104
+ folder: string
105
+ custom: string
106
+ }) => {
107
+ let resources_yml_path = Path.join(spec.folder, 'resources.yml')
108
+
109
+ let content = dive(model.main.ent).map(entry => {
110
+ // console.log('DYNAMO', entry)
111
+ let path = entry[0]
112
+ let ent = entry[1]
113
+
114
+ if (ent && ent.dynamo?.active) {
115
+ let name = path.join('')
116
+ let fullname = ent.dynamo.prefix +
117
+ name +
118
+ ent.dynamo.suffix
119
+
120
+ return `${name}:
121
+ Type: AWS::DynamoDB::Table
122
+ Properties:
123
+ TableName: ${fullname}
124
+ BillingMode: "PAY_PER_REQUEST"
125
+ PointInTimeRecoverySpecification:
126
+ PointInTimeRecoveryEnabled: "true"
127
+ AttributeDefinitions:
128
+ - AttributeName: "${ent.id.field}"
129
+ AttributeType: "S"
130
+ KeySchema:
131
+ - AttributeName: "${ent.id.field}"
132
+ KeyType: HASH
133
+ `
134
+ }
135
+ return ''
136
+ }).join('\n\n\n')
137
+
138
+ if (spec.custom) {
139
+ content = Fs.readFileSync(spec.custom).toString() + '\n\n\n' + content
140
+ }
141
+
142
+ Fs.writeFileSync(resources_yml_path, content)
143
+ }
144
+
77
145
  }
78
146
 
147
+
148
+ function empty(o: any) {
149
+ return null == o ? true : 0 === Object.keys(o).length
150
+ }
151
+
152
+
79
153
  export {
80
154
  EnvLambda
81
155
  }
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,12 +15,19 @@ 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}
30
+ timeout: ${lambda.timeout}
23
31
  events:
24
32
  `;
25
33
  const web = srv.api.web;
@@ -27,11 +35,23 @@ const EnvLambda = {
27
35
  let prefix = web.path.prefix;
28
36
  let area = web.path.area;
29
37
  let method = web.method;
30
- let cors = web.cors.active ? 'true' : 'false';
38
+ let corsflag = 'false';
39
+ let corsprops = '';
40
+ if (web.cors.active) {
41
+ corsflag = 'true';
42
+ if (web.cors.props && !empty(web.cors.props)) {
43
+ corsflag = '';
44
+ corsprops = Object
45
+ .entries(web.cors.props)
46
+ .reduce(((a, nv) => (a += ` ${nv[0]}: ${nv[1]}\n`
47
+ , a)), '');
48
+ }
49
+ }
31
50
  srvyml += ` - http:
32
51
  path: "${prefix}${area}${name}"
33
52
  method: ${method}
34
- cors: ${cors}
53
+ cors: ${corsflag}
54
+ ${corsprops}
35
55
  `;
36
56
  }
37
57
  return srvyml;
@@ -62,6 +82,43 @@ exports.handler = async (event, context) => {
62
82
  }
63
83
  });
64
84
  },
85
+ resources_yml: (model, spec) => {
86
+ let resources_yml_path = path_1.default.join(spec.folder, 'resources.yml');
87
+ let content = (0, model_1.dive)(model.main.ent).map(entry => {
88
+ var _a;
89
+ // console.log('DYNAMO', entry)
90
+ let path = entry[0];
91
+ let ent = entry[1];
92
+ if (ent && ((_a = ent.dynamo) === null || _a === void 0 ? void 0 : _a.active)) {
93
+ let name = path.join('');
94
+ let fullname = ent.dynamo.prefix +
95
+ name +
96
+ ent.dynamo.suffix;
97
+ return `${name}:
98
+ Type: AWS::DynamoDB::Table
99
+ Properties:
100
+ TableName: ${fullname}
101
+ BillingMode: "PAY_PER_REQUEST"
102
+ PointInTimeRecoverySpecification:
103
+ PointInTimeRecoveryEnabled: "true"
104
+ AttributeDefinitions:
105
+ - AttributeName: "${ent.id.field}"
106
+ AttributeType: "S"
107
+ KeySchema:
108
+ - AttributeName: "${ent.id.field}"
109
+ KeyType: HASH
110
+ `;
111
+ }
112
+ return '';
113
+ }).join('\n\n\n');
114
+ if (spec.custom) {
115
+ content = fs_1.default.readFileSync(spec.custom).toString() + '\n\n\n' + content;
116
+ }
117
+ fs_1.default.writeFileSync(resources_yml_path, content);
118
+ }
65
119
  };
66
120
  exports.EnvLambda = EnvLambda;
121
+ function empty(o) {
122
+ return null == o ? true : 0 === Object.keys(o).length;
123
+ }
67
124
  //# 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.4.0",
3
+ "version": "0.7.0",
4
4
  "main": "dist/build.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/build.d.ts",
@@ -40,14 +40,14 @@
40
40
  ],
41
41
  "dependencies": {},
42
42
  "devDependencies": {
43
- "@types/jest": "^28.1.6",
44
- "@voxgig/model": "^0.7.0",
45
- "@voxgig/system": "^0.4.1",
46
- "esbuild": "^0.14.54",
43
+ "@types/jest": "^28.1.7",
44
+ "@voxgig/model": "^0.10.0",
45
+ "@voxgig/system": "^0.4.2",
46
+ "esbuild": "^0.15.3",
47
47
  "esbuild-jest": "^0.5.0",
48
48
  "jest": "^28.1.3",
49
49
  "tinyify": "^3.1.0",
50
- "ts-jest": "^28.0.7",
50
+ "ts-jest": "^28.0.8",
51
51
  "typescript": "^4.7.4"
52
52
  }
53
53
  }