@mondomob/gae-node-nestjs 11.0.2 → 12.0.0-alpha-2
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/.claude/settings.local.json +7 -0
- package/CHANGELOG.md +0 -13
- package/mondomob-gae-node-nestjs-12.0.0-alpha-1.tgz +0 -0
- package/mondomob-gae-node-nestjs-12.0.0-alpha-2.tgz +0 -0
- package/package.json +12 -12
- package/server-start.js +72 -1
- package/dist/_test/mocks.d.ts +0 -9
- package/dist/_test/mocks.js +0 -27
- package/dist/_test/mocks.js.map +0 -1
- package/dist/_test/request-scope-test-utils.d.ts +0 -3
- package/dist/_test/request-scope-test-utils.js +0 -18
- package/dist/_test/request-scope-test-utils.js.map +0 -1
- package/dist/auth/auth-user.model.d.ts +0 -9
- package/dist/auth/auth-user.model.js +0 -33
- package/dist/auth/auth-user.model.js.map +0 -1
- package/dist/auth/auth.callbacks.d.ts +0 -8
- package/dist/auth/auth.callbacks.js +0 -5
- package/dist/auth/auth.callbacks.js.map +0 -1
- package/dist/auth/auth.configurer.d.ts +0 -35
- package/dist/auth/auth.configurer.js +0 -212
- package/dist/auth/auth.configurer.js.map +0 -1
- package/dist/auth/auth.controller.d.ts +0 -27
- package/dist/auth/auth.controller.js +0 -312
- package/dist/auth/auth.controller.js.map +0 -1
- package/dist/auth/auth.guard.d.ts +0 -16
- package/dist/auth/auth.guard.js +0 -127
- package/dist/auth/auth.guard.js.map +0 -1
- package/dist/auth/auth.listener.d.ts +0 -5
- package/dist/auth/auth.listener.js +0 -5
- package/dist/auth/auth.listener.js.map +0 -1
- package/dist/auth/auth.repository.d.ts +0 -52
- package/dist/auth/auth.repository.js +0 -79
- package/dist/auth/auth.repository.js.map +0 -1
- package/dist/auth/auth.resolver.d.ts +0 -13
- package/dist/auth/auth.resolver.js +0 -86
- package/dist/auth/auth.resolver.js.map +0 -1
- package/dist/auth/auth.service.d.ts +0 -35
- package/dist/auth/auth.service.js +0 -299
- package/dist/auth/auth.service.js.map +0 -1
- package/dist/auth/auth.task.controller.d.ts +0 -13
- package/dist/auth/auth.task.controller.js +0 -76
- package/dist/auth/auth.task.controller.js.map +0 -1
- package/dist/auth/auth.task.service.d.ts +0 -8
- package/dist/auth/auth.task.service.js +0 -26
- package/dist/auth/auth.task.service.js.map +0 -1
- package/dist/auth/csrf.interceptor.d.ts +0 -11
- package/dist/auth/csrf.interceptor.js +0 -38
- package/dist/auth/csrf.interceptor.js.map +0 -1
- package/dist/auth/invite-user.service.d.ts +0 -45
- package/dist/auth/invite-user.service.js +0 -215
- package/dist/auth/invite-user.service.js.map +0 -1
- package/dist/auth/invite.callbacks.d.ts +0 -6
- package/dist/auth/invite.callbacks.js +0 -5
- package/dist/auth/invite.callbacks.js.map +0 -1
- package/dist/auth/login-identifier.repository.d.ts +0 -13
- package/dist/auth/login-identifier.repository.js +0 -28
- package/dist/auth/login-identifier.repository.js.map +0 -1
- package/dist/auth/password-reset.service.d.ts +0 -15
- package/dist/auth/password-reset.service.js +0 -81
- package/dist/auth/password-reset.service.js.map +0 -1
- package/dist/auth/user.service.d.ts +0 -27
- package/dist/auth/user.service.js +0 -94
- package/dist/auth/user.service.js.map +0 -1
- package/dist/configuration.d.ts +0 -84
- package/dist/configuration.js +0 -5
- package/dist/configuration.js.map +0 -1
- package/dist/configure.d.ts +0 -40
- package/dist/configure.js +0 -85
- package/dist/configure.js.map +0 -1
- package/dist/context/context-middleware.d.ts +0 -15
- package/dist/context/context-middleware.js +0 -37
- package/dist/context/context-middleware.js.map +0 -1
- package/dist/context/context-request-scope.d.ts +0 -8
- package/dist/context/context-request-scope.js +0 -29
- package/dist/context/context-request-scope.js.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.js +0 -9
- package/dist/context/index.js.map +0 -1
- package/dist/datastore/context.d.ts +0 -36
- package/dist/datastore/context.js +0 -27
- package/dist/datastore/context.js.map +0 -1
- package/dist/datastore/datastore.provider.d.ts +0 -8
- package/dist/datastore/datastore.provider.js +0 -30
- package/dist/datastore/datastore.provider.js.map +0 -1
- package/dist/datastore/filters.d.ts +0 -19
- package/dist/datastore/filters.js +0 -27
- package/dist/datastore/filters.js.map +0 -1
- package/dist/datastore/loader.d.ts +0 -50
- package/dist/datastore/loader.js +0 -147
- package/dist/datastore/loader.js.map +0 -1
- package/dist/datastore/node-datastore-session.d.ts +0 -17
- package/dist/datastore/node-datastore-session.js +0 -87
- package/dist/datastore/node-datastore-session.js.map +0 -1
- package/dist/datastore/repository.d.ts +0 -45
- package/dist/datastore/repository.js +0 -150
- package/dist/datastore/repository.js.map +0 -1
- package/dist/datastore/transactional.d.ts +0 -4
- package/dist/datastore/transactional.js +0 -13
- package/dist/datastore/transactional.js.map +0 -1
- package/dist/error/NonFatalError.d.ts +0 -3
- package/dist/error/NonFatalError.js +0 -11
- package/dist/error/NonFatalError.js.map +0 -1
- package/dist/filter.d.ts +0 -5
- package/dist/filter.js +0 -40
- package/dist/filter.js.map +0 -1
- package/dist/gcloud/logging.d.ts +0 -1
- package/dist/gcloud/logging.js +0 -5
- package/dist/gcloud/logging.js.map +0 -1
- package/dist/gcloud/storage.provider.d.ts +0 -12
- package/dist/gcloud/storage.provider.js +0 -41
- package/dist/gcloud/storage.provider.js.map +0 -1
- package/dist/gcloud/tasks.d.ts +0 -10
- package/dist/gcloud/tasks.js +0 -68
- package/dist/gcloud/tasks.js.map +0 -1
- package/dist/graphql/GraphQLMiddleware.d.ts +0 -0
- package/dist/graphql/GraphQLMiddleware.js +0 -2
- package/dist/graphql/GraphQLMiddleware.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.js +0 -65
- package/dist/index.js.map +0 -1
- package/dist/logging/index.d.ts +0 -1
- package/dist/logging/index.js +0 -8
- package/dist/logging/index.js.map +0 -1
- package/dist/logging/logging-internal.d.ts +0 -2
- package/dist/logging/logging-internal.js +0 -20
- package/dist/logging/logging-internal.js.map +0 -1
- package/dist/logging/logging-request-scope.d.ts +0 -15
- package/dist/logging/logging-request-scope.js +0 -39
- package/dist/logging/logging-request-scope.js.map +0 -1
- package/dist/logging/logging.d.ts +0 -34
- package/dist/logging/logging.js +0 -55
- package/dist/logging/logging.js.map +0 -1
- package/dist/mail/gmail/gmail.configurer.d.ts +0 -15
- package/dist/mail/gmail/gmail.configurer.js +0 -59
- package/dist/mail/gmail/gmail.configurer.js.map +0 -1
- package/dist/mail/gmail/gmail.controller.d.ts +0 -9
- package/dist/mail/gmail/gmail.controller.js +0 -62
- package/dist/mail/gmail/gmail.controller.js.map +0 -1
- package/dist/mail/gmail/gmail.sender.d.ts +0 -12
- package/dist/mail/gmail/gmail.sender.js +0 -62
- package/dist/mail/gmail/gmail.sender.js.map +0 -1
- package/dist/mail/gmail/stored.credentials.repository.d.ts +0 -12
- package/dist/mail/gmail/stored.credentials.repository.js +0 -23
- package/dist/mail/gmail/stored.credentials.repository.js.map +0 -1
- package/dist/mail/mail-logging.sender.d.ts +0 -9
- package/dist/mail/mail-logging.sender.js +0 -42
- package/dist/mail/mail-logging.sender.js.map +0 -1
- package/dist/mail/mail-subject.sender.d.ts +0 -12
- package/dist/mail/mail-subject.sender.js +0 -33
- package/dist/mail/mail-subject.sender.js.map +0 -1
- package/dist/mail/mail-whitelist.sender.d.ts +0 -14
- package/dist/mail/mail-whitelist.sender.js +0 -59
- package/dist/mail/mail-whitelist.sender.js.map +0 -1
- package/dist/mail/mail.diverter.d.ts +0 -13
- package/dist/mail/mail.diverter.js +0 -65
- package/dist/mail/mail.diverter.js.map +0 -1
- package/dist/mail/mail.sender.d.ts +0 -6
- package/dist/mail/mail.sender.js +0 -5
- package/dist/mail/mail.sender.js.map +0 -1
- package/dist/mail/smtp/smtp.sender.d.ts +0 -10
- package/dist/mail/smtp/smtp.sender.js +0 -65
- package/dist/mail/smtp/smtp.sender.js.map +0 -1
- package/dist/mail-templates/base.d.ts +0 -2
- package/dist/mail-templates/base.js +0 -328
- package/dist/mail-templates/base.js.map +0 -1
- package/dist/mail-templates/invite.d.ts +0 -1
- package/dist/mail-templates/invite.js +0 -19
- package/dist/mail-templates/invite.js.map +0 -1
- package/dist/module.d.ts +0 -16
- package/dist/module.js +0 -136
- package/dist/module.js.map +0 -1
- package/dist/request-scope/index.d.ts +0 -2
- package/dist/request-scope/index.js +0 -9
- package/dist/request-scope/index.js.map +0 -1
- package/dist/request-scope/request-scope-interceptor.d.ts +0 -5
- package/dist/request-scope/request-scope-interceptor.js +0 -3
- package/dist/request-scope/request-scope-interceptor.js.map +0 -1
- package/dist/request-scope/request-scope.d.ts +0 -12
- package/dist/request-scope/request-scope.js +0 -79
- package/dist/request-scope/request-scope.js.map +0 -1
- package/dist/request-scope/request-scope.middleware.d.ts +0 -15
- package/dist/request-scope/request-scope.middleware.js +0 -53
- package/dist/request-scope/request-scope.middleware.js.map +0 -1
- package/dist/search/search.service.d.ts +0 -52
- package/dist/search/search.service.js +0 -90
- package/dist/search/search.service.js.map +0 -1
- package/dist/search/searchable.repository.d.ts +0 -36
- package/dist/search/searchable.repository.js +0 -95
- package/dist/search/searchable.repository.js.map +0 -1
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -9
- package/dist/types.js.map +0 -1
- package/dist/util/arrays.d.ts +0 -1
- package/dist/util/arrays.js +0 -10
- package/dist/util/arrays.js.map +0 -1
- package/dist/util/guards.d.ts +0 -1
- package/dist/util/guards.js +0 -7
- package/dist/util/guards.js.map +0 -1
- package/dist/util/index.d.ts +0 -1
- package/dist/util/index.js +0 -5
- package/dist/util/index.js.map +0 -1
- package/dist/util/nestjs.d.ts +0 -9
- package/dist/util/nestjs.js +0 -9
- package/dist/util/nestjs.js.map +0 -1
- package/dist/util/types.d.ts +0 -4
- package/dist/util/types.js +0 -8
- package/dist/util/types.js.map +0 -1
- package/dist/validator.d.ts +0 -1
- package/dist/validator.js +0 -5
- package/dist/validator.js.map +0 -1
- package/mondomob-gae-node-nestjs-11.0.2-alpha.tgz +0 -0
- package/mondomob-gae-node-nestjs-11.0.2-alpha1.tgz +0 -0
package/dist/datastore/loader.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatastoreLoader = void 0;
|
|
4
|
-
const datastore_1 = require("@google-cloud/datastore");
|
|
5
|
-
const entity_1 = require("@google-cloud/datastore/build/src/entity");
|
|
6
|
-
const trace = require("@google-cloud/trace-agent");
|
|
7
|
-
const DataLoader = require("dataloader");
|
|
8
|
-
const _ = require("lodash");
|
|
9
|
-
const logging_1 = require("../logging");
|
|
10
|
-
const types_1 = require("../util/types");
|
|
11
|
-
const filters_1 = require("./filters");
|
|
12
|
-
const NonFatalError_1 = require("../error/NonFatalError");
|
|
13
|
-
const keysEqual = (key1, key2) => {
|
|
14
|
-
return _.isEqual(key1.path, key2.path);
|
|
15
|
-
};
|
|
16
|
-
const countEntities = (keys) => {
|
|
17
|
-
const result = keys.reduce((prev, current) => {
|
|
18
|
-
if (!prev[current.kind]) {
|
|
19
|
-
prev[current.kind] = 1;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
prev[current.kind] += 1;
|
|
23
|
-
}
|
|
24
|
-
return prev;
|
|
25
|
-
}, {});
|
|
26
|
-
return Object.entries(result)
|
|
27
|
-
.map(([entry, value]) => `${entry}: ${value} entities`)
|
|
28
|
-
.join(', ');
|
|
29
|
-
};
|
|
30
|
-
function isTransaction(datastore) {
|
|
31
|
-
return datastore.commit !== undefined;
|
|
32
|
-
}
|
|
33
|
-
class DatastoreLoader {
|
|
34
|
-
constructor(datastore, context) {
|
|
35
|
-
this.load = async (keys) => {
|
|
36
|
-
const span = trace.get().createChildSpan({
|
|
37
|
-
name: 'load-keys',
|
|
38
|
-
});
|
|
39
|
-
const prettyPrint = countEntities(keys);
|
|
40
|
-
span.addLabel('entities', prettyPrint);
|
|
41
|
-
const [results] = await this.datastore.get([...keys]);
|
|
42
|
-
span.endSpan();
|
|
43
|
-
this.logger.debug('Fetched entities by key ', { entities: prettyPrint });
|
|
44
|
-
return keys.map(key => results.find((result) => keysEqual(result[datastore_1.Datastore.KEY], key)));
|
|
45
|
-
};
|
|
46
|
-
this.datastore = datastore;
|
|
47
|
-
this.loader = new DataLoader(this.load, {
|
|
48
|
-
cacheKeyFn: (key) => key.path.join(':'),
|
|
49
|
-
});
|
|
50
|
-
this.parentContext = context;
|
|
51
|
-
this.logger = (0, logging_1.createLogger)('loader');
|
|
52
|
-
}
|
|
53
|
-
async get(ids) {
|
|
54
|
-
const results = await this.loader.loadMany(ids);
|
|
55
|
-
const firstError = results.find(result => result instanceof Error);
|
|
56
|
-
if (firstError) {
|
|
57
|
-
throw firstError;
|
|
58
|
-
}
|
|
59
|
-
return results;
|
|
60
|
-
}
|
|
61
|
-
async save(entities) {
|
|
62
|
-
await this.applyBatched(entities, (datastore, chunk) => datastore.save(chunk), (loader, { key, data }) => this.resetDataloaderCache(loader, key, data));
|
|
63
|
-
}
|
|
64
|
-
async delete(entities) {
|
|
65
|
-
await this.applyBatched(entities, (datastore, chunk) => datastore.delete(chunk), (loader, key) => loader.clear(key));
|
|
66
|
-
}
|
|
67
|
-
async update(entities) {
|
|
68
|
-
await this.applyBatched(entities, (datastore, chunk) => datastore.save(chunk), (loader, { key, data }) => this.resetDataloaderCache(loader, key, data));
|
|
69
|
-
}
|
|
70
|
-
async upsert(entities) {
|
|
71
|
-
await this.applyBatched(entities, (datastore, chunk) => datastore.upsert(chunk), (loader, { key, data }) => this.resetDataloaderCache(loader, key, data));
|
|
72
|
-
}
|
|
73
|
-
async insert(entities) {
|
|
74
|
-
await this.applyBatched(entities, (datastore, chunk) => datastore.insert(chunk), (loader, { key, data }) => this.resetDataloaderCache(loader, key, data));
|
|
75
|
-
}
|
|
76
|
-
async executeQuery(kind, options) {
|
|
77
|
-
let query = this.datastore.createQuery(kind);
|
|
78
|
-
if (options.select) {
|
|
79
|
-
query = query.select((0, types_1.asArray)(options.select));
|
|
80
|
-
}
|
|
81
|
-
if (options.filters) {
|
|
82
|
-
query = (0, filters_1.buildFilters)(query, options.filters);
|
|
83
|
-
}
|
|
84
|
-
if (options.sort) {
|
|
85
|
-
(0, types_1.asArray)(options.sort).forEach(sort => query.order(sort.property, sort.options));
|
|
86
|
-
}
|
|
87
|
-
if (options.groupBy) {
|
|
88
|
-
query.groupBy((0, types_1.asArray)(options.groupBy));
|
|
89
|
-
}
|
|
90
|
-
if (options.start) {
|
|
91
|
-
query.start(options.start);
|
|
92
|
-
}
|
|
93
|
-
if (options.end) {
|
|
94
|
-
query.end(options.end);
|
|
95
|
-
}
|
|
96
|
-
if (options.hasAnscestor) {
|
|
97
|
-
query.hasAncestor(options.hasAnscestor);
|
|
98
|
-
}
|
|
99
|
-
if (options.limit) {
|
|
100
|
-
query.limit(options.limit);
|
|
101
|
-
}
|
|
102
|
-
if (options.offset) {
|
|
103
|
-
query.offset(options.offset);
|
|
104
|
-
}
|
|
105
|
-
const [results, queryInfo] = await query.run();
|
|
106
|
-
results.forEach((result) => {
|
|
107
|
-
this.loader.prime(result[datastore_1.Datastore.KEY], _.omit(result, datastore_1.Datastore.KEY));
|
|
108
|
-
});
|
|
109
|
-
return [results, queryInfo];
|
|
110
|
-
}
|
|
111
|
-
async inTransaction(callback) {
|
|
112
|
-
if (isTransaction(this.datastore)) {
|
|
113
|
-
return await callback(Object.assign(Object.assign({}, this.parentContext), { datastore: this }));
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const transaction = this.datastore.transaction();
|
|
117
|
-
await transaction.run();
|
|
118
|
-
try {
|
|
119
|
-
const result = await callback(Object.assign(Object.assign({}, this.parentContext), { datastore: new DatastoreLoader(transaction, this.parentContext) }));
|
|
120
|
-
await transaction.commit();
|
|
121
|
-
this.parentContext.datastore.loader.clearAll();
|
|
122
|
-
return result;
|
|
123
|
-
}
|
|
124
|
-
catch (ex) {
|
|
125
|
-
if (ex instanceof NonFatalError_1.NonFatalError) {
|
|
126
|
-
this.logger.warn('Rolling back transaction - non-fatal error encountered', ex);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
this.logger.error('Rolling back transaction - error encountered', ex);
|
|
130
|
-
}
|
|
131
|
-
await transaction.rollback();
|
|
132
|
-
throw ex;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
resetDataloaderCache(loader, key, data) {
|
|
137
|
-
return loader.clear(key).prime(key, data);
|
|
138
|
-
}
|
|
139
|
-
async applyBatched(values, operation, updateLoader, batchSize = 100) {
|
|
140
|
-
const entityChunks = _.chunk(values, batchSize);
|
|
141
|
-
const pendingModifications = entityChunks.map((chunk) => operation(this.datastore, chunk));
|
|
142
|
-
await Promise.all(pendingModifications);
|
|
143
|
-
values.forEach(value => updateLoader(this.loader, value));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
exports.DatastoreLoader = DatastoreLoader;
|
|
147
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/datastore/loader.ts"],"names":[],"mappings":";;;AAAA,uDAAiE;AACjE,qEAA4E;AAE5E,mDAAmD;AACnD,yCAAyC;AACzC,4BAA4B;AAC5B,wCAAkD;AAClD,yCAAmD;AAEnD,uCAAkD;AAClD,0DAAuD;AAEvD,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAE,IAAgB,EAAE,EAAE;IACvD,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAA+B,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACnE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,KAAK,WAAW,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AA8BF,SAAS,aAAa,CAAC,SAAkC;IACvD,OAAQ,SAAiB,CAAC,MAAM,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,MAAa,eAAe;IAM1B,YAAY,SAAkC,EAAE,OAAgB;QAwKxD,SAAI,GAAG,KAAK,EAAE,IAA+B,EAA+B,EAAE;YACpF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;gBACvC,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEvC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;YAEzE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC;QAnLA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;YACtC,UAAU,EAAE,CAAC,GAAe,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAY,EAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAiB;QAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC;QACnE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IASM,KAAK,CAAC,IAAI,CAAC,QAA8C;QAC9D,MAAM,IAAI,CAAC,YAAY,CACrB,QAAQ,EACR,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAiB,EAC3D,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAAmC;QACrD,MAAM,IAAI,CAAC,YAAY,CACrB,QAAQ,EACR,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAiB,EAC7D,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CACnC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAA8C;QAChE,MAAM,IAAI,CAAC,YAAY,CACrB,QAAQ,EACR,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAiB,EAC3D,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAA8C;QAChE,MAAM,IAAI,CAAC,YAAY,CACrB,QAAQ,EACR,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAiB,EAC7D,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,QAA8C;QAChE,MAAM,IAAI,CAAC,YAAY,CACrB,QAAQ,EACR,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAiB,EAC7D,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CACxE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,IAAY,EACZ,OAAiC;QAEjC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAA,eAAO,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAA,eAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,OAAO,CAAC,IAAA,eAAO,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAE/C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAA+B,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAI,QAAqC;QACjE,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,QAAQ,iCAChB,IAAI,CAAC,aAAa,KACrB,SAAS,EAAE,IAAI,IACf,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,iCACxB,IAAI,CAAC,aAAa,KACrB,SAAS,EAAE,IAAI,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAC/D,CAAC;gBAEH,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;gBAI3B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAE/C,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,IAAI,EAAE,YAAY,6BAAa,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE,EAAE,CAAC,CAAC;gBACjF,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,MAAkC,EAAE,GAAe,EAAE,IAAS;QACzF,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,MAAwB,EACxB,SAAwF,EACxF,YAAoE,EACpE,YAAoB,GAAG;QAEvB,MAAM,YAAY,GAAU,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAChG,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAExC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;CAeF;AA3LD,0CA2LC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as expressSession from 'express-session';
|
|
2
|
-
import { Datastore } from '@google-cloud/datastore';
|
|
3
|
-
export interface DataStoreOptions {
|
|
4
|
-
dataset?: Datastore;
|
|
5
|
-
datastore?: Datastore;
|
|
6
|
-
kind?: string;
|
|
7
|
-
expirationMs?: number;
|
|
8
|
-
}
|
|
9
|
-
export declare class DatastoreStore extends expressSession.Store {
|
|
10
|
-
ds: Datastore;
|
|
11
|
-
kind: string;
|
|
12
|
-
expirationMs: number;
|
|
13
|
-
constructor(options?: DataStoreOptions);
|
|
14
|
-
get: (sid: string, callback: (err: Error | null, session?: expressSession.SessionData | null) => void) => void;
|
|
15
|
-
set: (sid: string, sess: expressSession.SessionData, callback?: (err: Error | null) => void) => void;
|
|
16
|
-
destroy: (sid: string, callback?: (err: Error | null) => void) => void;
|
|
17
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatastoreStore = void 0;
|
|
4
|
-
const expressSession = require("express-session");
|
|
5
|
-
class DatastoreStore extends expressSession.Store {
|
|
6
|
-
constructor(options = {}) {
|
|
7
|
-
super();
|
|
8
|
-
this.get = (sid, callback) => {
|
|
9
|
-
this.ds.get(this.ds.key([this.kind, sid]), (err, entity) => {
|
|
10
|
-
if (err) {
|
|
11
|
-
return callback(err);
|
|
12
|
-
}
|
|
13
|
-
if (!entity) {
|
|
14
|
-
return callback(null);
|
|
15
|
-
}
|
|
16
|
-
let result;
|
|
17
|
-
try {
|
|
18
|
-
result = JSON.parse(entity.data);
|
|
19
|
-
}
|
|
20
|
-
catch (er) {
|
|
21
|
-
return callback(er);
|
|
22
|
-
}
|
|
23
|
-
if (!entity.createdAt || !this.expirationMs) {
|
|
24
|
-
return callback(null, result);
|
|
25
|
-
}
|
|
26
|
-
const createdAtMs = entity.createdAt.valueOf();
|
|
27
|
-
const expiresAtMs = createdAtMs + this.expirationMs;
|
|
28
|
-
const nowMs = new Date().valueOf();
|
|
29
|
-
if (expiresAtMs <= nowMs) {
|
|
30
|
-
this.destroy(sid, err => {
|
|
31
|
-
if (err) {
|
|
32
|
-
return callback(err);
|
|
33
|
-
}
|
|
34
|
-
return callback(null);
|
|
35
|
-
});
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
return callback(null, result);
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
this.set = (sid, sess, callback) => {
|
|
42
|
-
callback = callback || (() => { });
|
|
43
|
-
let sessJson;
|
|
44
|
-
try {
|
|
45
|
-
sessJson = JSON.stringify(sess);
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
return callback(err);
|
|
49
|
-
}
|
|
50
|
-
const createdAt = new Date();
|
|
51
|
-
const data = [
|
|
52
|
-
{
|
|
53
|
-
name: 'data',
|
|
54
|
-
value: sessJson,
|
|
55
|
-
excludeFromIndexes: true,
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: 'createdAt',
|
|
59
|
-
value: createdAt,
|
|
60
|
-
},
|
|
61
|
-
];
|
|
62
|
-
this.ds.save({
|
|
63
|
-
key: this.ds.key([this.kind, sid]),
|
|
64
|
-
data,
|
|
65
|
-
}, callback);
|
|
66
|
-
};
|
|
67
|
-
this.destroy = (sid, callback) => {
|
|
68
|
-
this.ds.delete(this.ds.key([this.kind, sid]), callback);
|
|
69
|
-
};
|
|
70
|
-
this.ds = (options.dataset || options.datastore);
|
|
71
|
-
if (!this.ds) {
|
|
72
|
-
throw new Error('No dataset provided to Datastore Session.');
|
|
73
|
-
}
|
|
74
|
-
this.kind = options.kind || 'Session';
|
|
75
|
-
if (options.expirationMs) {
|
|
76
|
-
if (typeof options.expirationMs !== typeof 0 || options.expirationMs < 0) {
|
|
77
|
-
throw new Error('invalid value for option expirationMs: must be an integer greater than 0');
|
|
78
|
-
}
|
|
79
|
-
this.expirationMs = Number(options.expirationMs);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.expirationMs = 0;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.DatastoreStore = DatastoreStore;
|
|
87
|
-
//# sourceMappingURL=node-datastore-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-datastore-session.js","sourceRoot":"","sources":["../../src/datastore/node-datastore-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Datastore } from '@google-cloud/datastore';
|
|
2
|
-
import { entity as Entity } from '@google-cloud/datastore/build/src/entity';
|
|
3
|
-
import { RunQueryInfo } from '@google-cloud/datastore/build/src/query';
|
|
4
|
-
import * as t from 'io-ts';
|
|
5
|
-
import { Omit, OneOrMany } from '../util/types';
|
|
6
|
-
import { Context } from './context';
|
|
7
|
-
import { Index, QueryOptions } from './loader';
|
|
8
|
-
export interface RepositoryOptions<T extends {
|
|
9
|
-
id: any;
|
|
10
|
-
}> {
|
|
11
|
-
defaultValues?: Partial<Omit<T, 'id'>>;
|
|
12
|
-
index?: Index<Omit<T, 'id'>>;
|
|
13
|
-
}
|
|
14
|
-
export declare function buildExclusions<T>(input: T, schema?: Index<T>, path?: string): string[];
|
|
15
|
-
export declare const datastoreKey: t.Type<Entity.Key, Entity.Key, unknown>;
|
|
16
|
-
export declare const dateType: t.Type<Date, Date, unknown>;
|
|
17
|
-
export interface BaseEntity {
|
|
18
|
-
id: string;
|
|
19
|
-
}
|
|
20
|
-
export declare class Repository<T extends BaseEntity> {
|
|
21
|
-
private readonly datastore;
|
|
22
|
-
protected readonly kind: string;
|
|
23
|
-
protected readonly options: RepositoryOptions<T>;
|
|
24
|
-
private readonly validator;
|
|
25
|
-
constructor(datastore: Datastore, kind: string, validator: t.Type<T>, options?: RepositoryOptions<T>);
|
|
26
|
-
getRequired(context: Context, id: string): Promise<T>;
|
|
27
|
-
get(context: Context, id: string): Promise<T | undefined>;
|
|
28
|
-
get(context: Context, id: ReadonlyArray<string>): Promise<ReadonlyArray<T> | undefined>;
|
|
29
|
-
query(context: Context, options?: Partial<QueryOptions<T>>): Promise<[ReadonlyArray<T>, RunQueryInfo]>;
|
|
30
|
-
save(context: Context, entities: T): Promise<T>;
|
|
31
|
-
save(context: Context, entities: ReadonlyArray<T>): Promise<ReadonlyArray<T>>;
|
|
32
|
-
update(context: Context, entities: T): Promise<T>;
|
|
33
|
-
update(context: Context, entities: ReadonlyArray<T>): Promise<ReadonlyArray<T>>;
|
|
34
|
-
insert(context: Context, entities: T): Promise<T>;
|
|
35
|
-
insert(context: Context, entities: ReadonlyArray<T>): Promise<ReadonlyArray<T>>;
|
|
36
|
-
upsert(context: Context, entities: T): Promise<T>;
|
|
37
|
-
upsert(context: Context, entities: ReadonlyArray<T>): Promise<ReadonlyArray<T>>;
|
|
38
|
-
protected beforePersist(context: Context, entities: OneOrMany<T>): OneOrMany<T>;
|
|
39
|
-
reindex(context: Context, operation?: (input: T) => T | Promise<T>): Promise<readonly T[]>;
|
|
40
|
-
delete(context: Context, ...ids: string[]): Promise<void>;
|
|
41
|
-
deleteAll(context: Context): Promise<void>;
|
|
42
|
-
key: (name: string) => Entity.Key;
|
|
43
|
-
private validate;
|
|
44
|
-
private applyMutation;
|
|
45
|
-
}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Repository = exports.dateType = exports.datastoreKey = void 0;
|
|
4
|
-
exports.buildExclusions = buildExclusions;
|
|
5
|
-
const datastore_1 = require("@google-cloud/datastore");
|
|
6
|
-
const entity_1 = require("@google-cloud/datastore/build/src/entity");
|
|
7
|
-
const t = require("io-ts");
|
|
8
|
-
const io_ts_reporters_1 = require("io-ts-reporters");
|
|
9
|
-
const _ = require("lodash");
|
|
10
|
-
const types_1 = require("../util/types");
|
|
11
|
-
const Either_1 = require("fp-ts/lib/Either");
|
|
12
|
-
function buildExclusions(input, schema = {}, path = '') {
|
|
13
|
-
if (schema === true) {
|
|
14
|
-
return [];
|
|
15
|
-
}
|
|
16
|
-
else if (Array.isArray(input)) {
|
|
17
|
-
return _.chain(input)
|
|
18
|
-
.flatMap(value => {
|
|
19
|
-
return buildExclusions(value, schema, `${path}[]`);
|
|
20
|
-
})
|
|
21
|
-
.push(`${path}[]`)
|
|
22
|
-
.uniq()
|
|
23
|
-
.value();
|
|
24
|
-
}
|
|
25
|
-
else if (typeof input === 'object') {
|
|
26
|
-
const paths = _.flatMap(input, (value, key) => {
|
|
27
|
-
return buildExclusions(value, schema[key], `${path}${path.length > 0 ? '.' : ''}${key}`);
|
|
28
|
-
});
|
|
29
|
-
if (path) {
|
|
30
|
-
paths.push(path);
|
|
31
|
-
}
|
|
32
|
-
return paths;
|
|
33
|
-
}
|
|
34
|
-
return [path];
|
|
35
|
-
}
|
|
36
|
-
exports.datastoreKey = new t.Type('Entity.Key', (input) => typeof input === 'object', input => t.success(input), (value) => value);
|
|
37
|
-
exports.dateType = new t.Type('DateType', (m) => m instanceof Date, (m, c) => (m instanceof Date ? t.success(m) : t.failure('Value is not date', c)), a => a);
|
|
38
|
-
class LoadError extends Error {
|
|
39
|
-
constructor(kind, id, errors) {
|
|
40
|
-
super(`"${kind}" with id "${id}" failed to load due to ${errors.length} errors:\n${errors.join('\n')}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
class SaveError extends Error {
|
|
44
|
-
constructor(kind, id, errors) {
|
|
45
|
-
super(`"${kind}" with id "${id}" failed to save due to ${errors.length} errors:\n${errors.join('\n')}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
class Repository {
|
|
49
|
-
constructor(datastore, kind, validator, options = {}) {
|
|
50
|
-
this.datastore = datastore;
|
|
51
|
-
this.kind = kind;
|
|
52
|
-
this.options = options;
|
|
53
|
-
this.key = (name) => {
|
|
54
|
-
return this.datastore.key([this.kind, name]);
|
|
55
|
-
};
|
|
56
|
-
this.validate = (id, value) => {
|
|
57
|
-
const entity = Object.assign(Object.assign(Object.assign({}, this.options.defaultValues), value), { id });
|
|
58
|
-
const validation = this.validator.decode(entity);
|
|
59
|
-
if ((0, Either_1.isLeft)(validation)) {
|
|
60
|
-
const errors = io_ts_reporters_1.default.report(validation);
|
|
61
|
-
throw new LoadError(this.kind, id, errors);
|
|
62
|
-
}
|
|
63
|
-
return validation.right;
|
|
64
|
-
};
|
|
65
|
-
this.validator = validator;
|
|
66
|
-
}
|
|
67
|
-
async getRequired(context, id) {
|
|
68
|
-
const result = await this.get(context, id);
|
|
69
|
-
if (!result) {
|
|
70
|
-
throw new LoadError(this.kind, id, ['invalid id']);
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
async get(context, ids) {
|
|
75
|
-
const idArray = (0, types_1.asArray)(ids);
|
|
76
|
-
const allKeys = idArray.map(this.key);
|
|
77
|
-
const results = await context.datastore.get(allKeys);
|
|
78
|
-
const validatedResults = results.map((result, idx) => {
|
|
79
|
-
if (result) {
|
|
80
|
-
return this.validate(idArray[idx], result);
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
});
|
|
84
|
-
if (Array.isArray(ids)) {
|
|
85
|
-
return validatedResults;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return validatedResults[0];
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
async query(context, options = {}) {
|
|
92
|
-
const [results, queryInfo] = await context.datastore.executeQuery(this.kind, options);
|
|
93
|
-
return [
|
|
94
|
-
results.map(value => this.validate(value[entity_1.entity.KEY_SYMBOL].name, _.omit(value, datastore_1.Datastore.KEY))),
|
|
95
|
-
queryInfo,
|
|
96
|
-
];
|
|
97
|
-
}
|
|
98
|
-
async save(context, entities) {
|
|
99
|
-
return this.applyMutation(context, this.beforePersist(context, entities), (loader, e) => loader.save(e));
|
|
100
|
-
}
|
|
101
|
-
async update(context, entities) {
|
|
102
|
-
return this.applyMutation(context, this.beforePersist(context, entities), (loader, e) => loader.update(e));
|
|
103
|
-
}
|
|
104
|
-
async insert(context, entities) {
|
|
105
|
-
return this.applyMutation(context, this.beforePersist(context, entities), (loader, e) => loader.insert(e));
|
|
106
|
-
}
|
|
107
|
-
async upsert(context, entities) {
|
|
108
|
-
return this.applyMutation(context, this.beforePersist(context, entities), (loader, e) => loader.upsert(e));
|
|
109
|
-
}
|
|
110
|
-
beforePersist(context, entities) {
|
|
111
|
-
return entities;
|
|
112
|
-
}
|
|
113
|
-
async reindex(context, operation = input => input) {
|
|
114
|
-
const [allEntities] = await this.query(context);
|
|
115
|
-
const updatedEntities = await Promise.all(allEntities.map(operation));
|
|
116
|
-
return this.update(context, updatedEntities);
|
|
117
|
-
}
|
|
118
|
-
async delete(context, ...ids) {
|
|
119
|
-
const allIds = ids.map(id => this.key(id));
|
|
120
|
-
await context.datastore.delete(allIds);
|
|
121
|
-
}
|
|
122
|
-
async deleteAll(context) {
|
|
123
|
-
const [allEntities] = await this.query(context);
|
|
124
|
-
const allIds = allEntities.map(value => this.key(value.id));
|
|
125
|
-
await context.datastore.delete(allIds);
|
|
126
|
-
}
|
|
127
|
-
async applyMutation(context, entities, mutation) {
|
|
128
|
-
const entitiesToSave = (0, types_1.asArray)(entities)
|
|
129
|
-
.map(entity => {
|
|
130
|
-
const validation = this.validator.decode(entity);
|
|
131
|
-
if ((0, Either_1.isLeft)(validation)) {
|
|
132
|
-
const errors = io_ts_reporters_1.default.report(validation);
|
|
133
|
-
throw new SaveError(this.kind, entity.id, errors);
|
|
134
|
-
}
|
|
135
|
-
return validation.right;
|
|
136
|
-
})
|
|
137
|
-
.map(data => {
|
|
138
|
-
const withoutId = _.omit(data, 'id');
|
|
139
|
-
return {
|
|
140
|
-
key: this.key(data.id),
|
|
141
|
-
data: withoutId,
|
|
142
|
-
excludeFromIndexes: buildExclusions(withoutId, this.options.index),
|
|
143
|
-
};
|
|
144
|
-
});
|
|
145
|
-
await mutation(context.datastore, entitiesToSave);
|
|
146
|
-
return entities;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
exports.Repository = Repository;
|
|
150
|
-
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/datastore/repository.ts"],"names":[],"mappings":";;;AAgBA,0CAwBC;AAxCD,uDAAoD;AACpD,qEAA4E;AAE5E,2BAA2B;AAC3B,qDAA2C;AAC3C,4BAA4B;AAC5B,yCAAyD;AAGzD,6CAA0C;AAO1C,SAAgB,eAAe,CAAI,KAAQ,EAAE,SAAmB,EAAE,EAAE,OAAe,EAAE;IACnF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;aAClB,OAAO,CAAC,KAAK,CAAC,EAAE;YACf,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;aACjB,IAAI,EAAE;aACN,KAAK,EAAE,CAAC;IACb,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAiB,KAAY,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACnE,OAAO,eAAe,CAAC,KAAK,EAAG,MAAc,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAEY,QAAA,YAAY,GAAG,IAAI,CAAC,CAAC,IAAI,CACpC,YAAY,EACZ,CAAC,KAAK,EAAuB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,EACzD,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAmB,CAAC,EACvC,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAC7B,CAAC;AAEW,QAAA,QAAQ,GAAG,IAAI,CAAC,CAAC,IAAI,CAChC,UAAU,EACV,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,YAAY,IAAI,EACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAChF,CAAC,CAAC,EAAE,CAAC,CAAC,CACP,CAAC;AAEF,MAAM,SAAU,SAAQ,KAAK;IAC3B,YAAY,IAAY,EAAE,EAAU,EAAE,MAAgB;QACpD,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE,2BAA2B,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;CACF;AAED,MAAM,SAAU,SAAQ,KAAK;IAC3B,YAAY,IAAY,EAAE,EAAU,EAAE,MAAgB;QACpD,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE,2BAA2B,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;CACF;AAMD,MAAa,UAAU;IAGrB,YACmB,SAAoB,EAClB,IAAY,EAC/B,SAAoB,EACD,UAAgC,EAAE;QAHpC,cAAS,GAAT,SAAS,CAAW;QAClB,SAAI,GAAJ,IAAI,CAAQ;QAEZ,YAAO,GAAP,OAAO,CAA2B;QA6GhD,QAAG,GAAG,CAAC,IAAY,EAAc,EAAE;YACxC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,EAAU,EAAE,KAAa,EAAK,EAAE;YAClD,MAAM,MAAM,iDAAS,IAAI,CAAC,OAAO,CAAC,aAAqB,GAAK,KAAK,KAAE,EAAE,GAAE,CAAC;YAExE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,yBAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC/C,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC;QA1HA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAgB,EAAE,EAAU;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAID,KAAK,CAAC,GAAG,CAAC,OAAgB,EAAE,GAAmC;QAC7D,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAgB,EAAE,UAAoC,EAAE;QAClE,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,CAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzF,OAAO;YACL,OAAO,CAAC,GAAG,CAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAM,CAAC,UAAU,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACtG,SAAS;SACV,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,IAAI,CAAC,OAAgB,EAAE,QAAsB;QACjD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,QAAsB;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,QAAsB;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,QAAsB;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IAUS,aAAa,CAAC,OAAgB,EAAE,QAAsB;QAC9D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAWD,KAAK,CAAC,OAAO,CAAC,OAAgB,EAAE,YAA0C,KAAK,CAAC,EAAE,CAAC,KAAK;QACtF,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,GAAG,GAAa;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAgB;QAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAmBO,KAAK,CAAC,aAAa,CACzB,OAAgB,EAChB,QAAsB,EACtB,QAAiG;QAEjG,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,QAAQ,CAAC;aACrC,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,yBAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC/C,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC;aACD,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrC,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,IAAI,EAAE,SAAS;gBACf,kBAAkB,EAAE,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aAC5C,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAElD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAlKD,gCAkKC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Context } from './context';
|
|
2
|
-
type WithContext = (context: Context, ...args: any[]) => Promise<any>;
|
|
3
|
-
export declare function Transactional(): (target: any, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<WithContext>) => TypedPropertyDescriptor<WithContext>;
|
|
4
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Transactional = Transactional;
|
|
4
|
-
function Transactional() {
|
|
5
|
-
return function (target, propertyKey, descriptor) {
|
|
6
|
-
const value = descriptor.value;
|
|
7
|
-
descriptor.value = async function (context, ...args) {
|
|
8
|
-
return await context.datastore.inTransaction(async (tx) => await value.apply(this, [tx, ...args]));
|
|
9
|
-
};
|
|
10
|
-
return descriptor;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=transactional.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactional.js","sourceRoot":"","sources":["../../src/datastore/transactional.ts"],"names":[],"mappings":";;AASA,sCAcC;AAdD,SAAgB,aAAa;IAC3B,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,UAAgD;QAEhD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAM,CAAC;QAEhC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,OAAO,EAAE,GAAG,IAAI;YACjD,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NonFatalError = void 0;
|
|
4
|
-
class NonFatalError extends Error {
|
|
5
|
-
constructor(message) {
|
|
6
|
-
super(message);
|
|
7
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.NonFatalError = NonFatalError;
|
|
11
|
-
//# sourceMappingURL=NonFatalError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NonFatalError.js","sourceRoot":"","sources":["../../src/error/NonFatalError.ts"],"names":[],"mappings":";;;AAIA,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AALD,sCAKC"}
|
package/dist/filter.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
|
|
2
|
-
export declare class NotFoundFilter implements ExceptionFilter {
|
|
3
|
-
private readonly logger;
|
|
4
|
-
catch(exception: HttpException, host: ArgumentsHost): void | (import("express-session").Session & Partial<import("express-session").SessionData>);
|
|
5
|
-
}
|
package/dist/filter.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NotFoundFilter = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const logging_1 = require("./logging");
|
|
8
|
-
const saveSessionAndSendIndexPage = (request, response, logger) => {
|
|
9
|
-
if (request.session && request.session.save) {
|
|
10
|
-
return request.session.save(() => {
|
|
11
|
-
logger.debug(`Session saved ${request.session.id}`);
|
|
12
|
-
sendIndexPage(response);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
return sendIndexPage(response);
|
|
16
|
-
};
|
|
17
|
-
const sendIndexPage = (response) => response.status(200).sendFile(path.join(process.cwd(), 'public', 'index.html'));
|
|
18
|
-
let NotFoundFilter = class NotFoundFilter {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.logger = (0, logging_1.createLogger)('not-found-filter');
|
|
21
|
-
}
|
|
22
|
-
catch(exception, host) {
|
|
23
|
-
const ctx = host.switchToHttp();
|
|
24
|
-
const response = ctx.getResponse();
|
|
25
|
-
const request = ctx.getRequest();
|
|
26
|
-
if (request.headers.accept && request.headers.accept.includes('text/html')) {
|
|
27
|
-
return saveSessionAndSendIndexPage(request, response, this.logger);
|
|
28
|
-
}
|
|
29
|
-
response.status(404).json({
|
|
30
|
-
statusCode: exception.getStatus(),
|
|
31
|
-
timestamp: new Date().toISOString(),
|
|
32
|
-
path: request.url,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
exports.NotFoundFilter = NotFoundFilter;
|
|
37
|
-
exports.NotFoundFilter = NotFoundFilter = tslib_1.__decorate([
|
|
38
|
-
(0, common_1.Catch)(common_1.NotFoundException)
|
|
39
|
-
], NotFoundFilter);
|
|
40
|
-
//# sourceMappingURL=filter.js.map
|
package/dist/filter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":";;;;AAAA,2CAAyG;AAEzG,6BAA6B;AAC7B,uCAAiD;AAKjD,MAAM,2BAA2B,GAAG,CAAC,OAAgB,EAAE,QAAkB,EAAE,MAAc,EAAE,EAAE;IAC3F,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,OAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,QAAkB,EAAE,EAAE,CAC3C,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAG3E,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QACY,WAAM,GAAG,IAAA,sBAAY,EAAC,kBAAkB,CAAC,CAAC;IAiB7D,CAAC;IAfC,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAW,CAAC;QAE1C,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3E,OAAO,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACxB,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE;YACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,GAAG;SAClB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAlBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,cAAK,EAAC,0BAAiB,CAAC;GACZ,cAAc,CAkB1B"}
|
package/dist/gcloud/logging.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '../logging/logging';
|
package/dist/gcloud/logging.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/gcloud/logging.ts"],"names":[],"mappings":";;;AAIA,6DAAmC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Configuration } from '../configuration';
|
|
2
|
-
import { Bucket, Storage } from '@google-cloud/storage';
|
|
3
|
-
export declare class StorageProvider {
|
|
4
|
-
private readonly configurationProvider;
|
|
5
|
-
private readonly _storage;
|
|
6
|
-
private readonly _defaultBucket;
|
|
7
|
-
private readonly logger;
|
|
8
|
-
constructor(configurationProvider: Configuration);
|
|
9
|
-
get storage(): Storage;
|
|
10
|
-
get defaultBucket(): Bucket;
|
|
11
|
-
getDefaultBucketResumableUploadUrl(fileId: string): Promise<string>;
|
|
12
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StorageProvider = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const storage_1 = require("@google-cloud/storage");
|
|
7
|
-
const logging_1 = require("./logging");
|
|
8
|
-
let StorageProvider = class StorageProvider {
|
|
9
|
-
constructor(configurationProvider) {
|
|
10
|
-
this.configurationProvider = configurationProvider;
|
|
11
|
-
this.logger = (0, logging_1.createLogger)('storage');
|
|
12
|
-
const config = {};
|
|
13
|
-
if (configurationProvider.isDevelopment()) {
|
|
14
|
-
this.logger.info('Application is running locally, using keyfile.json credentials to connect to Google Cloud Storage');
|
|
15
|
-
config.keyFilename = './keyfile.json';
|
|
16
|
-
}
|
|
17
|
-
this._storage = new storage_1.Storage(config);
|
|
18
|
-
this.logger.info(`Default Google Cloud Storage bucket: ${configurationProvider.bucket}`);
|
|
19
|
-
this._defaultBucket = this.storage.bucket(configurationProvider.bucket);
|
|
20
|
-
}
|
|
21
|
-
get storage() {
|
|
22
|
-
return this._storage;
|
|
23
|
-
}
|
|
24
|
-
get defaultBucket() {
|
|
25
|
-
return this._defaultBucket;
|
|
26
|
-
}
|
|
27
|
-
async getDefaultBucketResumableUploadUrl(fileId) {
|
|
28
|
-
const gcsFile = this._defaultBucket.file(fileId);
|
|
29
|
-
const urls = await gcsFile.createResumableUpload({
|
|
30
|
-
origin: this.configurationProvider.host,
|
|
31
|
-
});
|
|
32
|
-
return urls[0];
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
exports.StorageProvider = StorageProvider;
|
|
36
|
-
exports.StorageProvider = StorageProvider = tslib_1.__decorate([
|
|
37
|
-
(0, common_1.Injectable)(),
|
|
38
|
-
tslib_1.__param(0, (0, common_1.Inject)('Configuration')),
|
|
39
|
-
tslib_1.__metadata("design:paramtypes", [Object])
|
|
40
|
-
], StorageProvider);
|
|
41
|
-
//# sourceMappingURL=storage.provider.js.map
|