@plusscommunities/pluss-newsletter-aws 1.3.4 → 1.3.8-beta.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/common/helper/audience/filterByAudienceType.js +3 -0
- package/config.json +1 -1
- package/getFeaturedNewsletterEntries.js +51 -52
- package/getNewsletterEntries.js +66 -67
- package/getRecentNewsletterEntries.js +53 -52
- package/package-lock.json +4 -4
- package/package.json +6 -5
- package/serverless.yml +5 -5
package/config.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"keys_url":"https://cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-
|
|
1
|
+
{"keys_url":"https://cognito-idp.ap-southeast-2.amazonaws.com/ap-southeast-2_qC95qHeQz/.well-known/jwks.json","maintenanceInstantComplete":false,"communityConfig":{"name":"Pluss Communities Development","company":"Pluss Communities Development","subdomain":"dev","onelinkUrl":"http://onelink.to/pluss60","iosAppUrl":"https://itunes.apple.com/au/app/aveo/id1358888537?mt=8","androidAppUrl":"https://play.google.com/store/apps/details?id=pluss.android.aveo","emailBrandingAbovePoweredBy":{"image":"https://pluss60-dev-media.s3-ap-southeast-2.amazonaws.com/pluss/website/plusscommunites.png","height":29,"width":100},"adminSiteUrl":"https://dev.plusscommunities.com"},"anySignUpSite":"newstead","strings":{"FACILITY":"facility"},"hasIntroTerms":false,"serverlessConfig":{"profile":"dev-serverless-admin","key":"AKIA4LLDS4NHWYEE4MAI","secret":"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"}}
|
|
@@ -5,9 +5,9 @@ const generateJsonResponse = require("./common/helper/generateJsonResponse");
|
|
|
5
5
|
const { thisOrDefault } = require("./common/helper");
|
|
6
6
|
const indexQuery = require("./common/db/common/indexQuery");
|
|
7
7
|
const validateUserLoggedIn = require("./common/helper/auth/validateUserLoggedIn");
|
|
8
|
+
const validateMasterAuth = require("./common/helper/auth/validateMasterAuth");
|
|
8
9
|
const checkUpdateSource = require("./helper/checkUpdateSource");
|
|
9
|
-
const
|
|
10
|
-
const filterOnAudienceType = require("./common/helper/audience/filterOnAudienceType");
|
|
10
|
+
const filterByAudienceType = require("./common/helper/audience/filterByAudienceType");
|
|
11
11
|
const { values } = require("./feature.config");
|
|
12
12
|
|
|
13
13
|
module.exports.getFeaturedNewsletterEntries = (event, context, callback) => {
|
|
@@ -23,69 +23,68 @@ module.exports.getFeaturedNewsletterEntries = (event, context, callback) => {
|
|
|
23
23
|
);
|
|
24
24
|
|
|
25
25
|
validateUserLoggedIn(event)
|
|
26
|
-
.then((authorised) => {
|
|
26
|
+
.then(async (authorised) => {
|
|
27
27
|
if (!authorised) {
|
|
28
28
|
return callback(
|
|
29
29
|
null,
|
|
30
30
|
generateJsonResponse(422, { fail: true, error: "not authorised" })
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
|
-
getMatchingAudienceTypes(event.headers.authkey)
|
|
34
|
-
.then((types) => {
|
|
35
|
-
const query = {
|
|
36
|
-
IndexName: "NewsletterEntriesSiteFeaturedExpiryIndex",
|
|
37
|
-
KeyConditionExpression: "Site = :site and FeaturedExpiry > :time",
|
|
38
|
-
FilterExpression: "IsFeatured = :featured",
|
|
39
|
-
ExpressionAttributeValues: {
|
|
40
|
-
":site": site,
|
|
41
|
-
":time": time,
|
|
42
|
-
":featured": true,
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
const hqQuery = _.cloneDeep(query);
|
|
46
|
-
hqQuery.ExpressionAttributeValues[":site"] = "hq";
|
|
47
|
-
console.log(`running query - ${JSON.stringify(query)}`);
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
34
|
+
const canManage = await validateMasterAuth(
|
|
35
|
+
event,
|
|
36
|
+
values.permissionNewsletter,
|
|
37
|
+
site
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const query = {
|
|
41
|
+
IndexName: "NewsletterEntriesSiteFeaturedExpiryIndex",
|
|
42
|
+
KeyConditionExpression: "Site = :site and FeaturedExpiry > :time",
|
|
43
|
+
FilterExpression: "IsFeatured = :featured",
|
|
44
|
+
ExpressionAttributeValues: {
|
|
45
|
+
":site": site,
|
|
46
|
+
":time": time,
|
|
47
|
+
":featured": true,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
const hqQuery = _.cloneDeep(query);
|
|
51
|
+
hqQuery.ExpressionAttributeValues[":site"] = "hq";
|
|
52
|
+
console.log(`running query - ${JSON.stringify(query)}`);
|
|
53
|
+
|
|
54
|
+
const promises = [];
|
|
55
|
+
promises.push(indexQuery(values.tableNameNewsletterEntries, query));
|
|
56
|
+
if (!params.noHQ) {
|
|
57
|
+
promises.push(indexQuery(values.tableNameNewsletterEntries, hqQuery));
|
|
58
|
+
}
|
|
59
|
+
Promise.all(promises)
|
|
60
|
+
.then(async (responses) => {
|
|
61
|
+
console.log("successful query");
|
|
62
|
+
const result = [];
|
|
63
|
+
responses.forEach((data) => {
|
|
64
|
+
result.push.apply(result, data.Items);
|
|
65
|
+
});
|
|
66
|
+
let filteredResult = _.filter(result, (entry) => {
|
|
67
|
+
return (
|
|
68
|
+
!entry.Private && entry.UnixTimestamp < time && !entry.Deleted
|
|
69
|
+
);
|
|
70
|
+
});
|
|
71
|
+
if (!canManage) {
|
|
72
|
+
filteredResult = await filterByAudienceType(
|
|
73
|
+
filteredResult,
|
|
74
|
+
event.headers.authkey,
|
|
75
|
+
site
|
|
54
76
|
);
|
|
55
77
|
}
|
|
56
|
-
|
|
57
|
-
.then(async (responses) => {
|
|
58
|
-
console.log("successful query");
|
|
59
|
-
const result = [];
|
|
60
|
-
responses.forEach((data) => {
|
|
61
|
-
result.push.apply(result, data.Items);
|
|
62
|
-
});
|
|
63
|
-
const filteredResult = await filterOnAudienceType(
|
|
64
|
-
_.filter(result, (entry) => {
|
|
65
|
-
return (
|
|
66
|
-
!entry.Private &&
|
|
67
|
-
entry.UnixTimestamp < time &&
|
|
68
|
-
!entry.Deleted
|
|
69
|
-
);
|
|
70
|
-
}),
|
|
71
|
-
types,
|
|
72
|
-
event.headers.authkey,
|
|
73
|
-
site
|
|
74
|
-
);
|
|
75
|
-
const randomResults = _.shuffle(filteredResult).slice(0, count);
|
|
78
|
+
const randomResults = _.shuffle(filteredResult).slice(0, count);
|
|
76
79
|
|
|
77
|
-
|
|
80
|
+
checkUpdateSource(randomResults);
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
})
|
|
81
|
-
.catch((error) => {
|
|
82
|
-
console.log("query failed");
|
|
83
|
-
console.log(error);
|
|
84
|
-
callback(null, generateJsonResponse(422, { error }));
|
|
85
|
-
});
|
|
82
|
+
callback(null, generateJsonResponse(200, randomResults));
|
|
86
83
|
})
|
|
87
84
|
.catch((error) => {
|
|
88
|
-
|
|
85
|
+
console.log("query failed");
|
|
86
|
+
console.log(error);
|
|
87
|
+
callback(null, generateJsonResponse(422, { error }));
|
|
89
88
|
});
|
|
90
89
|
})
|
|
91
90
|
.catch((error) => {
|
package/getNewsletterEntries.js
CHANGED
|
@@ -4,9 +4,9 @@ const initConfig = require("./initConfig");
|
|
|
4
4
|
const generateJsonResponse = require("./common/helper/generateJsonResponse");
|
|
5
5
|
const { thisOrDefault } = require("./common/helper");
|
|
6
6
|
const validateSiteAccess = require("./common/helper/auth/validateSiteAccess");
|
|
7
|
+
const validateMasterAuth = require("./common/helper/auth/validateMasterAuth");
|
|
7
8
|
const checkUpdateSource = require("./helper/checkUpdateSource");
|
|
8
|
-
const
|
|
9
|
-
const filterOnAudienceType = require("./common/helper/audience/filterOnAudienceType");
|
|
9
|
+
const filterByAudienceType = require("./common/helper/audience/filterByAudienceType");
|
|
10
10
|
const indexQueryRecursive = require("./common/db/common/indexQueryRecursive");
|
|
11
11
|
const { values } = require("./feature.config");
|
|
12
12
|
|
|
@@ -38,84 +38,83 @@ module.exports.getNewsletterEntries = (event, context, callback) => {
|
|
|
38
38
|
console.log(`maxTime: ${maxTime}`);
|
|
39
39
|
|
|
40
40
|
validateSiteAccess(event, site)
|
|
41
|
-
.then((authorised) => {
|
|
41
|
+
.then(async (authorised) => {
|
|
42
42
|
if (!authorised) {
|
|
43
43
|
return callback(
|
|
44
44
|
null,
|
|
45
45
|
generateJsonResponse(422, { fail: true, error: "not authorised" })
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
48
|
+
|
|
49
|
+
const canManage = await validateMasterAuth(
|
|
50
|
+
event,
|
|
51
|
+
values.permissionNewsletter,
|
|
52
|
+
site
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
const query = {
|
|
56
|
+
IndexName: "NewsletterEntriesSiteTimestampIndex",
|
|
57
|
+
KeyConditionExpression:
|
|
58
|
+
"Site = :site and UnixTimestampReverse BETWEEN :minTime and :maxTime",
|
|
59
|
+
ExpressionAttributeValues: {
|
|
60
|
+
":site": site,
|
|
61
|
+
":minTime": minTime,
|
|
62
|
+
":maxTime": maxTime,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const hqQuery = _.cloneDeep(query);
|
|
66
|
+
hqQuery.ExpressionAttributeValues[":site"] = "hq";
|
|
67
|
+
console.log("running query");
|
|
68
|
+
console.log(query);
|
|
69
|
+
const promises = [];
|
|
70
|
+
promises.push(
|
|
71
|
+
indexQueryRecursive(values.tableNameNewsletterEntries, query)
|
|
72
|
+
);
|
|
73
|
+
if (!params.noHQ) {
|
|
74
|
+
promises.push(
|
|
75
|
+
indexQueryRecursive(values.tableNameNewsletterEntries, hqQuery)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
Promise.all(promises)
|
|
79
|
+
.then(async (responses) => {
|
|
80
|
+
console.log("successful query");
|
|
81
|
+
const result = [];
|
|
82
|
+
responses.forEach((data) => {
|
|
83
|
+
result.push.apply(result, data);
|
|
84
|
+
});
|
|
85
|
+
let filteredResult = params.noFilter
|
|
86
|
+
? result
|
|
87
|
+
: _.filter(result, (entry) => !entry.Private);
|
|
88
|
+
if (!params.noFilter && !canManage) {
|
|
89
|
+
filteredResult = await filterByAudienceType(
|
|
90
|
+
filteredResult,
|
|
91
|
+
event.headers.authkey,
|
|
92
|
+
site
|
|
71
93
|
);
|
|
72
94
|
}
|
|
73
|
-
Promise.all(promises)
|
|
74
|
-
.then(async (responses) => {
|
|
75
|
-
console.log("successful query");
|
|
76
|
-
const result = [];
|
|
77
|
-
responses.forEach((data) => {
|
|
78
|
-
result.push.apply(result, data);
|
|
79
|
-
});
|
|
80
|
-
const filteredResult = params.noFilter
|
|
81
|
-
? result
|
|
82
|
-
: await filterOnAudienceType(
|
|
83
|
-
_.filter(result, (entry) => {
|
|
84
|
-
return !entry.Private;
|
|
85
|
-
}),
|
|
86
|
-
types,
|
|
87
|
-
event.headers.authkey,
|
|
88
|
-
site
|
|
89
|
-
);
|
|
90
|
-
const sortedResult = _.sortBy(
|
|
91
|
-
filteredResult,
|
|
92
|
-
"UnixTimestampReverse"
|
|
93
|
-
);
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
const sortedResult = _.sortBy(filteredResult, "UnixTimestampReverse");
|
|
96
97
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
98
|
+
checkUpdateSource(sortedResult);
|
|
99
|
+
|
|
100
|
+
if (count) {
|
|
101
|
+
return callback(
|
|
102
|
+
null,
|
|
103
|
+
generateJsonResponse(200, {
|
|
104
|
+
items: sortedResult.slice(skip, skip + count),
|
|
105
|
+
skip,
|
|
106
|
+
count,
|
|
107
|
+
totalCount: sortedResult.length,
|
|
108
|
+
})
|
|
109
|
+
);
|
|
110
|
+
}
|
|
108
111
|
|
|
109
|
-
|
|
110
|
-
})
|
|
111
|
-
.catch((error) => {
|
|
112
|
-
console.log("query failed");
|
|
113
|
-
console.log(error);
|
|
114
|
-
callback(null, generateJsonResponse(422, { error }));
|
|
115
|
-
});
|
|
112
|
+
callback(null, generateJsonResponse(200, sortedResult));
|
|
116
113
|
})
|
|
117
114
|
.catch((error) => {
|
|
118
|
-
|
|
115
|
+
console.log("query failed");
|
|
116
|
+
console.log(error);
|
|
117
|
+
callback(null, generateJsonResponse(422, { error }));
|
|
119
118
|
});
|
|
120
119
|
})
|
|
121
120
|
.catch((error) => {
|
|
@@ -5,9 +5,9 @@ const generateJsonResponse = require("./common/helper/generateJsonResponse");
|
|
|
5
5
|
const { thisOrDefault } = require("./common/helper");
|
|
6
6
|
const indexQuery = require("./common/db/common/indexQuery");
|
|
7
7
|
const validateSiteAccess = require("./common/helper/auth/validateSiteAccess");
|
|
8
|
+
const validateMasterAuth = require("./common/helper/auth/validateMasterAuth");
|
|
8
9
|
const checkUpdateSource = require("./helper/checkUpdateSource");
|
|
9
|
-
const
|
|
10
|
-
const filterOnAudienceType = require("./common/helper/audience/filterOnAudienceType");
|
|
10
|
+
const filterByAudienceType = require("./common/helper/audience/filterByAudienceType");
|
|
11
11
|
const { values } = require("./feature.config");
|
|
12
12
|
|
|
13
13
|
module.exports.getRecentNewsletterEntries = (event, context, callback) => {
|
|
@@ -36,68 +36,69 @@ module.exports.getRecentNewsletterEntries = (event, context, callback) => {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
validateSiteAccess(event, site)
|
|
39
|
-
.then((authorised) => {
|
|
39
|
+
.then(async (authorised) => {
|
|
40
40
|
if (!authorised) {
|
|
41
41
|
return callback(
|
|
42
42
|
null,
|
|
43
43
|
generateJsonResponse(422, { fail: true, error: "not authorised" })
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
46
|
+
|
|
47
|
+
const canManage = await validateMasterAuth(
|
|
48
|
+
event,
|
|
49
|
+
values.permissionNewsletter,
|
|
50
|
+
site
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const query = {
|
|
54
|
+
IndexName: "NewsletterEntriesSiteTimestampIndex",
|
|
55
|
+
KeyConditionExpression:
|
|
56
|
+
"Site = :site and UnixTimestampReverse > :maxTime",
|
|
57
|
+
ExpressionAttributeValues: {
|
|
58
|
+
":site": site,
|
|
59
|
+
":maxTime": maxTime,
|
|
60
|
+
},
|
|
61
|
+
Limit: limit,
|
|
62
|
+
};
|
|
63
|
+
const hqQuery = _.cloneDeep(query);
|
|
64
|
+
hqQuery.ExpressionAttributeValues[":site"] = "hq";
|
|
65
|
+
console.log("running query");
|
|
66
|
+
console.log(query);
|
|
67
|
+
const promises = [];
|
|
68
|
+
promises.push(indexQuery(values.tableNameNewsletterEntries, query));
|
|
69
|
+
if (!params.noHQ) {
|
|
70
|
+
promises.push(indexQuery(values.tableNameNewsletterEntries, hqQuery));
|
|
71
|
+
}
|
|
72
|
+
Promise.all(promises)
|
|
73
|
+
.then(async (responses) => {
|
|
74
|
+
console.log("successful query");
|
|
75
|
+
const result = [];
|
|
76
|
+
responses.forEach((data) => {
|
|
77
|
+
result.push.apply(result, data.Items);
|
|
78
|
+
});
|
|
79
|
+
let filteredResult = _.filter(result, (entry) => {
|
|
80
|
+
return !entry.Private && (!tvMode || entry.TVMode);
|
|
81
|
+
});
|
|
82
|
+
if (!canManage) {
|
|
83
|
+
filteredResult = await filterByAudienceType(
|
|
84
|
+
filteredResult,
|
|
85
|
+
event.headers.authkey,
|
|
86
|
+
site
|
|
67
87
|
);
|
|
68
88
|
}
|
|
69
|
-
|
|
70
|
-
.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
responses.forEach((data) => {
|
|
74
|
-
result.push.apply(result, data.Items);
|
|
75
|
-
});
|
|
76
|
-
const filteredResult = await filterOnAudienceType(
|
|
77
|
-
_.filter(result, (entry) => {
|
|
78
|
-
return !entry.Private && (!tvMode || entry.TVMode);
|
|
79
|
-
}),
|
|
80
|
-
types,
|
|
81
|
-
event.headers.authkey,
|
|
82
|
-
site
|
|
83
|
-
);
|
|
84
|
-
const sortedResult = _.take(
|
|
85
|
-
_.sortBy(filteredResult, "UnixTimestampReverse"),
|
|
86
|
-
limit
|
|
87
|
-
);
|
|
89
|
+
const sortedResult = _.take(
|
|
90
|
+
_.sortBy(filteredResult, "UnixTimestampReverse"),
|
|
91
|
+
limit
|
|
92
|
+
);
|
|
88
93
|
|
|
89
|
-
|
|
94
|
+
checkUpdateSource(sortedResult);
|
|
90
95
|
|
|
91
|
-
|
|
92
|
-
})
|
|
93
|
-
.catch((error) => {
|
|
94
|
-
console.log("query failed");
|
|
95
|
-
console.log(error);
|
|
96
|
-
callback(null, generateJsonResponse(200, { error }));
|
|
97
|
-
});
|
|
96
|
+
callback(null, generateJsonResponse(200, sortedResult));
|
|
98
97
|
})
|
|
99
98
|
.catch((error) => {
|
|
100
|
-
|
|
99
|
+
console.log("query failed");
|
|
100
|
+
console.log(error);
|
|
101
|
+
callback(null, generateJsonResponse(200, { error }));
|
|
101
102
|
});
|
|
102
103
|
})
|
|
103
104
|
.catch((error) => {
|
package/package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-newsletter-aws",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.8-beta.0",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"@plusscommunities/pluss-core-aws": {
|
|
16
|
-
"version": "1.
|
|
17
|
-
"resolved": "https://registry.npmjs.org/@plusscommunities/pluss-core-aws/-/pluss-core-aws-1.
|
|
18
|
-
"integrity": "sha512-
|
|
16
|
+
"version": "1.3.7-beta.0",
|
|
17
|
+
"resolved": "https://registry.npmjs.org/@plusscommunities/pluss-core-aws/-/pluss-core-aws-1.3.7-beta.0.tgz",
|
|
18
|
+
"integrity": "sha512-DHkVexGbMBO8892MycRkqzVhJ33oLqk2PQMAEYdOxsQRH2TAk0OnvgI9jn6NlkTvrSr2fbQX4Z9W2a4f/AgnAw==",
|
|
19
19
|
"requires": {
|
|
20
20
|
"@aws/dynamodb-auto-marshaller": "^0.7.1",
|
|
21
21
|
"amazon-cognito-identity-js": "^2.0.19",
|
package/package.json
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-newsletter-aws",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.8-beta.0",
|
|
4
4
|
"description": "Extension package to enable newsletter on Pluss Communities Platform",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"gc": "node ../../tools/gc ./",
|
|
7
7
|
"gs": "node ../../tools/gs ./ ../../activity/serverless.yml",
|
|
8
|
-
"
|
|
8
|
+
"betapatch": "npm version prepatch --preid=beta",
|
|
9
9
|
"patch": "npm version patch",
|
|
10
10
|
"deploy": "npm run gc && npm run gs && serverless deploy",
|
|
11
|
-
"
|
|
11
|
+
"betaupload": "rm -rf .serverless && npm publish --access public --tag beta",
|
|
12
|
+
"betaupload:p": "npm run betapatch && npm run betaupload",
|
|
12
13
|
"upload": "rm -rf .serverless && npm publish --access public",
|
|
13
14
|
"upload:p": "npm run patch && npm run upload",
|
|
14
|
-
"upload:cp": "npm run core && npm run patch && npm run upload",
|
|
15
15
|
"copy:add": "run(){ ext=${1:-default}; test -f feature.config.$ext.js || cp feature.config.default.js feature.config.$ext.js; }; run",
|
|
16
16
|
"copy:get": "echo $npm_package_name",
|
|
17
17
|
"copy:set": "run(){ target='\\@plusscommunities\\/pluss-newsletter-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f feature.config.$ext.js && cp -f feature.config.$ext.js feature.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
|
|
18
18
|
"copy:deploy": "for file in `ls ./feature.config.*.js`; do dup=`echo $file | sed 's/.*feature\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run deploy; done; npm run copy:set; npm run gs;",
|
|
19
|
+
"copy:betaupload": "npm run betapatch; for file in `ls ./feature.config.*.js`; do dup=`echo $file | sed 's/.*feature\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;",
|
|
19
20
|
"copy:upload": "npm run patch; for file in `ls ./feature.config.*.js`; do dup=`echo $file | sed 's/.*feature\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;"
|
|
20
21
|
},
|
|
21
22
|
"author": "Phillip Suh",
|
|
22
23
|
"license": "ISC",
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"@aws/dynamodb-auto-marshaller": "^0.7.1",
|
|
25
|
-
"@plusscommunities/pluss-core-aws": "
|
|
26
|
+
"@plusscommunities/pluss-core-aws": "1.3.7-beta.0",
|
|
26
27
|
"amazon-cognito-identity-js": "^2.0.19",
|
|
27
28
|
"axios": "^0.18.0",
|
|
28
29
|
"expo-server-sdk": "^3.0.1",
|
package/serverless.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
service:
|
|
1
|
+
service: dev-newsletter
|
|
2
2
|
|
|
3
3
|
frameworkVersion: ">=1.1.0 <2.0.0"
|
|
4
4
|
|
|
@@ -6,9 +6,9 @@ provider:
|
|
|
6
6
|
name: aws
|
|
7
7
|
runtime: nodejs14.x
|
|
8
8
|
region: ap-southeast-2
|
|
9
|
-
profile:
|
|
9
|
+
profile: dev-serverless-admin
|
|
10
10
|
stage: dev
|
|
11
|
-
deploymentBucket: serverless.deploys.pluss60.${self:provider.region}
|
|
11
|
+
deploymentBucket: serverless.deploys.pluss60.${self:custom.client}.${self:provider.region}
|
|
12
12
|
environment:
|
|
13
13
|
tablePrefix: ${self:custom.tablePrefix}
|
|
14
14
|
iamRoleStatements:
|
|
@@ -27,11 +27,11 @@ plugins:
|
|
|
27
27
|
- serverless-prune-plugin
|
|
28
28
|
|
|
29
29
|
custom:
|
|
30
|
-
client:
|
|
30
|
+
client: dev
|
|
31
31
|
functionPrefix: ""
|
|
32
32
|
tablePrefix: ${self:custom.client}-${self:provider.stage}-
|
|
33
33
|
customDomain:
|
|
34
|
-
domainName:
|
|
34
|
+
domainName: dev.pluss60-api.com
|
|
35
35
|
basePath: newsletter-${self:provider.stage}
|
|
36
36
|
stage: ${self:provider.stage}
|
|
37
37
|
createRoute53Record: true
|