@awsless/awsless 0.0.246 → 0.0.248
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/dist/app.json +1 -0
- package/dist/auth-b89f6013.d.ts +11 -0
- package/dist/bin.js +5393 -0
- package/dist/build-json-schema.js +1076 -0
- package/dist/chunk-RRXFYZJQ.js +61 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.js +51 -0
- package/dist/server.d.ts +2 -12
- package/dist/server.js +421 -0
- package/dist/stack.json +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// src/lib/resource/util.ts
|
|
2
|
+
import { paramCase } from "change-case";
|
|
3
|
+
var APP = process.env.APP ?? "app";
|
|
4
|
+
var STACK = process.env.STACK ?? "stack";
|
|
5
|
+
var bindLocalResourceName = (type) => {
|
|
6
|
+
return (name, stack = STACK) => {
|
|
7
|
+
return [APP, paramCase(stack), paramCase(type), paramCase(name)].join(
|
|
8
|
+
"--"
|
|
9
|
+
);
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
var bindGlobalResourceName = (type) => {
|
|
13
|
+
return (name) => {
|
|
14
|
+
return [APP, paramCase(type), paramCase(name)].join("--");
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
var createProxy = /* @__NO_SIDE_EFFECTS__ */ (cb) => {
|
|
18
|
+
const cache = /* @__PURE__ */ new Map();
|
|
19
|
+
return new Proxy(
|
|
20
|
+
{},
|
|
21
|
+
{
|
|
22
|
+
get(_, name) {
|
|
23
|
+
if (!cache.has(name)) {
|
|
24
|
+
cache.set(name, cb(name));
|
|
25
|
+
}
|
|
26
|
+
return cache.get(name);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// src/lib/resource/auth.ts
|
|
33
|
+
import { constantCase } from "change-case";
|
|
34
|
+
var getAuthName = bindGlobalResourceName("auth");
|
|
35
|
+
var Auth = /* @__PURE__ */ createProxy((name) => {
|
|
36
|
+
return getAuthProps(name);
|
|
37
|
+
});
|
|
38
|
+
var getAuthProps = (name) => {
|
|
39
|
+
const env = process.env;
|
|
40
|
+
const id = constantCase(name);
|
|
41
|
+
return {
|
|
42
|
+
name: getAuthName(name),
|
|
43
|
+
// userPoolId: env[`AWSLESS_CLIENT_AUTH_${id}_USER_POOL_ID`]!,
|
|
44
|
+
// clientId: env[`AWSLESS_CLIENT_AUTH_${id}_CLIENT_ID`]!,
|
|
45
|
+
// clientSecret: env[`AWSLESS_CLIENT_AUTH_${id}_CLIENT_SECRET`]!,
|
|
46
|
+
userPoolId: env[`AUTH_${id}_USER_POOL_ID`],
|
|
47
|
+
clientId: env[`AUTH_${id}_CLIENT_ID`]
|
|
48
|
+
// clientSecret: env[`AUTH_${id}_CLIENT_SECRET`]!,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
APP,
|
|
54
|
+
STACK,
|
|
55
|
+
bindLocalResourceName,
|
|
56
|
+
bindGlobalResourceName,
|
|
57
|
+
createProxy,
|
|
58
|
+
getAuthName,
|
|
59
|
+
Auth,
|
|
60
|
+
getAuthProps
|
|
61
|
+
};
|
package/dist/client.d.ts
CHANGED
package/dist/client.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Auth
|
|
3
|
+
} from "./chunk-RRXFYZJQ.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/resource/http.ts
|
|
6
|
+
var createHttpFetcher = (host) => {
|
|
7
|
+
return async ({ method, path, headers, body, query }) => {
|
|
8
|
+
const url = new URL(host, path);
|
|
9
|
+
if (query) {
|
|
10
|
+
for (const [key, value] of Object.entries(query)) {
|
|
11
|
+
url.searchParams.set(key, value);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
headers.set("content-type", "application/json");
|
|
15
|
+
const response = await fetch(url, {
|
|
16
|
+
method,
|
|
17
|
+
headers,
|
|
18
|
+
body: body ? JSON.stringify(body) : void 0
|
|
19
|
+
});
|
|
20
|
+
const result = await response.json();
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
var createHttpClient = (fetcher) => {
|
|
25
|
+
const fetch2 = (method, routeKey, props) => {
|
|
26
|
+
const path = routeKey.replaceAll(/{([a-z0-1-]+)}/, (key) => {
|
|
27
|
+
return props?.params?.[key.substring(1, key.length - 1)]?.toString() ?? "";
|
|
28
|
+
});
|
|
29
|
+
return fetcher({
|
|
30
|
+
headers: new Headers(props?.headers),
|
|
31
|
+
query: props?.query,
|
|
32
|
+
body: props?.body,
|
|
33
|
+
method,
|
|
34
|
+
path
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
fetch: fetch2,
|
|
39
|
+
get(routeKey, props) {
|
|
40
|
+
return fetch2("GET", routeKey, props);
|
|
41
|
+
},
|
|
42
|
+
post(routeKey, props) {
|
|
43
|
+
return fetch2("POST", routeKey, props);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
Auth,
|
|
49
|
+
createHttpClient,
|
|
50
|
+
createHttpFetcher
|
|
51
|
+
};
|
package/dist/server.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { A as Auth, b as AuthResources, g as getAuthName, a as getAuthProps } from './auth-b89f6013.js';
|
|
1
2
|
import * as _awsless_lambda from '@awsless/lambda';
|
|
2
3
|
import { Handler, Loggers } from '@awsless/lambda';
|
|
3
4
|
import { BaseSchema, SnsTopicSchema, SqsQueueSchema } from '@awsless/validate';
|
|
@@ -17,17 +18,6 @@ interface TaskResources {
|
|
|
17
18
|
}
|
|
18
19
|
declare const Task: TaskResources;
|
|
19
20
|
|
|
20
|
-
declare const getAuthName: <N extends string>(name: N) => `app--auth--${N}`;
|
|
21
|
-
interface AuthResources {
|
|
22
|
-
}
|
|
23
|
-
declare const Auth: AuthResources;
|
|
24
|
-
declare const getAuthProps: (name: string) => {
|
|
25
|
-
readonly name: `app--auth--${string}`;
|
|
26
|
-
readonly userPoolId: string;
|
|
27
|
-
readonly clientId: string;
|
|
28
|
-
readonly clientSecret: string;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
21
|
declare const getTableName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--table--${N}`;
|
|
32
22
|
interface TableResources {
|
|
33
23
|
}
|
|
@@ -129,4 +119,4 @@ interface TaskMockResponse {
|
|
|
129
119
|
}
|
|
130
120
|
declare const mockTask: (cb: (mock: TaskMock) => void) => TaskMockResponse;
|
|
131
121
|
|
|
132
|
-
export { APP,
|
|
122
|
+
export { APP, Cache, CacheResources, Config, ConfigResources, CronProps, Fn, Function, FunctionMock, FunctionMockResponse, FunctionProps, FunctionResources, Queue, QueueMock, QueueMockResponse, QueueProps, QueueResources, STACK, Search, SearchResources, Store, StoreResources, Table, TableResources, Task, TaskMock, TaskMockResponse, TaskResources, Topic, TopicMock, TopicMockResponse, TopicProps, TopicResources, cron, func, getCacheProps, getConfigName, getFunctionName, getQueueName, getSearchName, getStoreName, getTableName, getTaskName, getTopicName, mockFunction, mockQueue, mockTask, mockTopic, queue, topic };
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APP,
|
|
3
|
+
Auth,
|
|
4
|
+
STACK,
|
|
5
|
+
bindGlobalResourceName,
|
|
6
|
+
bindLocalResourceName,
|
|
7
|
+
createProxy,
|
|
8
|
+
getAuthName,
|
|
9
|
+
getAuthProps
|
|
10
|
+
} from "./chunk-RRXFYZJQ.js";
|
|
11
|
+
|
|
12
|
+
// src/lib/resource/function.ts
|
|
13
|
+
import { invoke } from "@awsless/lambda";
|
|
14
|
+
import { WeakCache } from "@awsless/weak-cache";
|
|
15
|
+
var cache = new WeakCache();
|
|
16
|
+
var getFunctionName = bindLocalResourceName("function");
|
|
17
|
+
var Function = /* @__PURE__ */ createProxy((stackName) => {
|
|
18
|
+
return createProxy((funcName) => {
|
|
19
|
+
const name = getFunctionName(funcName, stackName);
|
|
20
|
+
const ctx = {
|
|
21
|
+
[name]: (payload, options = {}) => {
|
|
22
|
+
return invoke({
|
|
23
|
+
...options,
|
|
24
|
+
name,
|
|
25
|
+
payload
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const call = ctx[name];
|
|
30
|
+
call.cached = async (payload, options = {}) => {
|
|
31
|
+
const cacheKey = JSON.stringify({ name, payload, options });
|
|
32
|
+
if (!cache.has(cacheKey)) {
|
|
33
|
+
const result = await invoke({
|
|
34
|
+
...options,
|
|
35
|
+
name,
|
|
36
|
+
payload
|
|
37
|
+
});
|
|
38
|
+
cache.set(cacheKey, result);
|
|
39
|
+
}
|
|
40
|
+
return cache.get(cacheKey);
|
|
41
|
+
};
|
|
42
|
+
return call;
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
var Fn = Function;
|
|
46
|
+
|
|
47
|
+
// src/lib/resource/task.ts
|
|
48
|
+
import { invoke as invoke2 } from "@awsless/lambda";
|
|
49
|
+
var getTaskName = bindLocalResourceName("task");
|
|
50
|
+
var Task = /* @__PURE__ */ createProxy((stackName) => {
|
|
51
|
+
return createProxy((taskName) => {
|
|
52
|
+
const name = getTaskName(taskName, stackName);
|
|
53
|
+
const ctx = {
|
|
54
|
+
[name]: (payload, options = {}) => {
|
|
55
|
+
return invoke2({
|
|
56
|
+
...options,
|
|
57
|
+
type: "Event",
|
|
58
|
+
name,
|
|
59
|
+
payload
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return ctx[name];
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// src/lib/resource/table.ts
|
|
68
|
+
var getTableName = bindLocalResourceName("table");
|
|
69
|
+
var Table = /* @__PURE__ */ createProxy((stack) => {
|
|
70
|
+
return createProxy((name) => {
|
|
71
|
+
return getTableName(name, stack);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// src/lib/resource/topic.ts
|
|
76
|
+
import { publish } from "@awsless/sns";
|
|
77
|
+
var getTopicName = bindGlobalResourceName("topic");
|
|
78
|
+
var Topic = /* @__PURE__ */ createProxy((name) => {
|
|
79
|
+
const topic2 = getTopicName(name);
|
|
80
|
+
const ctx = {
|
|
81
|
+
[topic2]: async (payload, options = {}) => {
|
|
82
|
+
await publish({
|
|
83
|
+
...options,
|
|
84
|
+
topic: topic2,
|
|
85
|
+
payload
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const call = ctx[topic2];
|
|
90
|
+
return call;
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// src/lib/resource/queue.ts
|
|
94
|
+
import {
|
|
95
|
+
sendMessage,
|
|
96
|
+
sendMessageBatch
|
|
97
|
+
} from "@awsless/sqs";
|
|
98
|
+
import { constantCase } from "change-case";
|
|
99
|
+
var getQueueName = bindLocalResourceName("queue");
|
|
100
|
+
var getQueueUrl = (name, stack = STACK) => {
|
|
101
|
+
return process.env[`QUEUE_${constantCase(stack)}_${constantCase(name)}_URL`];
|
|
102
|
+
};
|
|
103
|
+
var Queue = /* @__PURE__ */ createProxy((stack) => {
|
|
104
|
+
return createProxy((queue2) => {
|
|
105
|
+
const url = getQueueUrl(queue2, stack);
|
|
106
|
+
const name = getQueueName(queue2, stack);
|
|
107
|
+
const ctx = {
|
|
108
|
+
[name]: (payload, options = {}) => {
|
|
109
|
+
return sendMessage({
|
|
110
|
+
...options,
|
|
111
|
+
queue: url ?? name,
|
|
112
|
+
payload
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const send = ctx[name];
|
|
117
|
+
send.url = url;
|
|
118
|
+
send.batch = (items, options = {}) => {
|
|
119
|
+
return sendMessageBatch({
|
|
120
|
+
...options,
|
|
121
|
+
queue: url ?? name,
|
|
122
|
+
items
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
return send;
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// src/lib/resource/cache.ts
|
|
130
|
+
import { constantCase as constantCase2 } from "change-case";
|
|
131
|
+
import { command } from "@awsless/redis";
|
|
132
|
+
var getCacheProps = (name, stack = STACK) => {
|
|
133
|
+
const prefix = `CACHE_${constantCase2(stack)}_${constantCase2(name)}`;
|
|
134
|
+
return {
|
|
135
|
+
host: process.env[`${prefix}_HOST`],
|
|
136
|
+
port: parseInt(process.env[`${prefix}_PORT`], 10)
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
var Cache = /* @__PURE__ */ createProxy((stack) => {
|
|
140
|
+
return createProxy((name) => {
|
|
141
|
+
const { host, port } = getCacheProps(name, stack);
|
|
142
|
+
const call = (opts, fn) => {
|
|
143
|
+
const overload = typeof opts === "function";
|
|
144
|
+
const options = overload ? {} : opts;
|
|
145
|
+
const callback = overload ? opts : fn;
|
|
146
|
+
return command(
|
|
147
|
+
{
|
|
148
|
+
host,
|
|
149
|
+
port,
|
|
150
|
+
db: 0,
|
|
151
|
+
cluster: true,
|
|
152
|
+
...options
|
|
153
|
+
},
|
|
154
|
+
callback
|
|
155
|
+
);
|
|
156
|
+
};
|
|
157
|
+
call.host = host;
|
|
158
|
+
call.port = port;
|
|
159
|
+
return call;
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// src/lib/resource/store.ts
|
|
164
|
+
import { putObject, getObject, deleteObject, createPresignedPost } from "@awsless/s3";
|
|
165
|
+
var getStoreName = bindLocalResourceName("store");
|
|
166
|
+
var Store = /* @__PURE__ */ createProxy((stack) => {
|
|
167
|
+
return createProxy((name) => {
|
|
168
|
+
const bucket = getStoreName(name, stack);
|
|
169
|
+
return {
|
|
170
|
+
name: bucket,
|
|
171
|
+
async put(key, body, options = {}) {
|
|
172
|
+
await putObject({
|
|
173
|
+
bucket,
|
|
174
|
+
key,
|
|
175
|
+
body,
|
|
176
|
+
...options
|
|
177
|
+
});
|
|
178
|
+
},
|
|
179
|
+
async get(key) {
|
|
180
|
+
const object = await getObject({ bucket, key });
|
|
181
|
+
if (object) {
|
|
182
|
+
return object.body;
|
|
183
|
+
}
|
|
184
|
+
return void 0;
|
|
185
|
+
},
|
|
186
|
+
delete(key) {
|
|
187
|
+
return deleteObject({ bucket, key });
|
|
188
|
+
},
|
|
189
|
+
createPresignedPost(key, contentLengthRange, expires, fields) {
|
|
190
|
+
return createPresignedPost({
|
|
191
|
+
bucket,
|
|
192
|
+
key,
|
|
193
|
+
contentLengthRange,
|
|
194
|
+
expires,
|
|
195
|
+
fields
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
// src/lib/resource/config.ts
|
|
203
|
+
import { ssm } from "@awsless/ssm";
|
|
204
|
+
import { paramCase } from "change-case";
|
|
205
|
+
var getConfigName = (name) => {
|
|
206
|
+
return `/.awsless/${APP}/${name}`;
|
|
207
|
+
};
|
|
208
|
+
var IS_TEST = process.env.NODE_ENV === "test";
|
|
209
|
+
var CONFIGS = process.env.CONFIG;
|
|
210
|
+
var loadConfigData = /* @__NO_SIDE_EFFECTS__ */ async () => {
|
|
211
|
+
if (!IS_TEST && CONFIGS) {
|
|
212
|
+
const keys = CONFIGS.split(",");
|
|
213
|
+
if (keys.length > 0) {
|
|
214
|
+
const paths = {};
|
|
215
|
+
for (const key of keys) {
|
|
216
|
+
paths[key] = getConfigName(key);
|
|
217
|
+
}
|
|
218
|
+
return ssm(paths);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return {};
|
|
222
|
+
};
|
|
223
|
+
var data = await /* @__PURE__ */ loadConfigData();
|
|
224
|
+
var Config = /* @__PURE__ */ new Proxy(
|
|
225
|
+
{},
|
|
226
|
+
{
|
|
227
|
+
get(_, name) {
|
|
228
|
+
const key = paramCase(name);
|
|
229
|
+
const value = data[key];
|
|
230
|
+
if (typeof value === "undefined") {
|
|
231
|
+
throw new Error(
|
|
232
|
+
`The "${name}" config value hasn't been set yet. ${IS_TEST ? `Use "Config.${name} = 'VAlUE'" to define your mock value.` : `Define access to the desired config value inside your awsless stack file.`}`
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
return value;
|
|
236
|
+
},
|
|
237
|
+
set(_, name, value) {
|
|
238
|
+
const key = paramCase(name);
|
|
239
|
+
data[key] = value;
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
// src/lib/resource/search.ts
|
|
246
|
+
import { constantCase as constantCase3 } from "change-case";
|
|
247
|
+
import { searchClient, define } from "@awsless/open-search";
|
|
248
|
+
var getSearchName = bindLocalResourceName("search");
|
|
249
|
+
var getSearchProps = (name, stack = STACK) => {
|
|
250
|
+
return {
|
|
251
|
+
domain: process.env[`CACHE_${constantCase3(stack)}_${constantCase3(name)}_DOMAIN`]
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
var Search = /* @__PURE__ */ createProxy((stack) => {
|
|
255
|
+
return createProxy((name) => {
|
|
256
|
+
const { domain } = getSearchProps(name, stack);
|
|
257
|
+
let client;
|
|
258
|
+
return {
|
|
259
|
+
domain,
|
|
260
|
+
defineTable(tableName, schema) {
|
|
261
|
+
return define(tableName, schema, () => {
|
|
262
|
+
if (!client)
|
|
263
|
+
client = searchClient({ node: domain }, "es");
|
|
264
|
+
return client;
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// src/lib/handle/function.ts
|
|
272
|
+
import { lambda } from "@awsless/lambda";
|
|
273
|
+
var func = (props) => {
|
|
274
|
+
return lambda(props);
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
// src/lib/handle/topic.ts
|
|
278
|
+
import { snsTopic } from "@awsless/validate";
|
|
279
|
+
import { lambda as lambda2 } from "@awsless/lambda";
|
|
280
|
+
var topic = (props) => {
|
|
281
|
+
return lambda2({
|
|
282
|
+
logger: props.logger,
|
|
283
|
+
schema: snsTopic(props.schema),
|
|
284
|
+
handle: props.handle,
|
|
285
|
+
logViewableErrors: true
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
// src/lib/handle/queue.ts
|
|
290
|
+
import { lambda as lambda3 } from "@awsless/lambda";
|
|
291
|
+
import { sqsQueue } from "@awsless/validate";
|
|
292
|
+
var queue = (props) => {
|
|
293
|
+
return lambda3({
|
|
294
|
+
logger: props.logger,
|
|
295
|
+
schema: sqsQueue(props.schema),
|
|
296
|
+
handle: props.handle,
|
|
297
|
+
logViewableErrors: true
|
|
298
|
+
});
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
// src/lib/handle/cron.ts
|
|
302
|
+
import { lambda as lambda4 } from "@awsless/lambda";
|
|
303
|
+
var cron = (props) => {
|
|
304
|
+
return lambda4({
|
|
305
|
+
...props,
|
|
306
|
+
logViewableErrors: true
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
// src/lib/mock/function.ts
|
|
311
|
+
import { mockLambda } from "@awsless/lambda";
|
|
312
|
+
var mockFunction = (cb) => {
|
|
313
|
+
const list = {};
|
|
314
|
+
const mock = createProxy((stack) => {
|
|
315
|
+
return createProxy((name) => {
|
|
316
|
+
return (handleOrResponse) => {
|
|
317
|
+
const handle = typeof handleOrResponse === "function" ? handleOrResponse : () => handleOrResponse;
|
|
318
|
+
list[getFunctionName(name, stack)] = handle;
|
|
319
|
+
};
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
cb(mock);
|
|
323
|
+
const result = mockLambda(list);
|
|
324
|
+
return createProxy((stack) => {
|
|
325
|
+
return createProxy((name) => {
|
|
326
|
+
return result[getFunctionName(name, stack)];
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
// src/lib/mock/topic.ts
|
|
332
|
+
import { mockSNS } from "@awsless/sns";
|
|
333
|
+
var mockTopic = (cb) => {
|
|
334
|
+
const list = {};
|
|
335
|
+
const mock = createProxy((name) => {
|
|
336
|
+
return (handle) => {
|
|
337
|
+
list[getTopicName(name)] = handle ?? (() => {
|
|
338
|
+
});
|
|
339
|
+
};
|
|
340
|
+
});
|
|
341
|
+
cb(mock);
|
|
342
|
+
const result = mockSNS(list);
|
|
343
|
+
return createProxy((name) => {
|
|
344
|
+
return result[getTopicName(name)];
|
|
345
|
+
});
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
// src/lib/mock/queue.ts
|
|
349
|
+
import { mockSQS } from "@awsless/sqs";
|
|
350
|
+
var mockQueue = (cb) => {
|
|
351
|
+
const list = {};
|
|
352
|
+
const mock = createProxy((stack) => {
|
|
353
|
+
return createProxy((name) => {
|
|
354
|
+
return (handle) => {
|
|
355
|
+
list[getQueueName(name, stack)] = handle ?? (() => {
|
|
356
|
+
});
|
|
357
|
+
};
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
cb(mock);
|
|
361
|
+
const result = mockSQS(list);
|
|
362
|
+
return createProxy((stack) => {
|
|
363
|
+
return createProxy((name) => {
|
|
364
|
+
return result[getQueueName(name, stack)];
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
// src/lib/mock/task.ts
|
|
370
|
+
import { mockLambda as mockLambda2 } from "@awsless/lambda";
|
|
371
|
+
var mockTask = (cb) => {
|
|
372
|
+
const list = {};
|
|
373
|
+
const mock = createProxy((stack) => {
|
|
374
|
+
return createProxy((name) => {
|
|
375
|
+
return (handle) => {
|
|
376
|
+
list[getTaskName(name, stack)] = handle;
|
|
377
|
+
};
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
cb(mock);
|
|
381
|
+
const result = mockLambda2(list);
|
|
382
|
+
return createProxy((stack) => {
|
|
383
|
+
return createProxy((name) => {
|
|
384
|
+
return result[getTaskName(name, stack)];
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
};
|
|
388
|
+
export {
|
|
389
|
+
APP,
|
|
390
|
+
Auth,
|
|
391
|
+
Cache,
|
|
392
|
+
Config,
|
|
393
|
+
Fn,
|
|
394
|
+
Function,
|
|
395
|
+
Queue,
|
|
396
|
+
STACK,
|
|
397
|
+
Search,
|
|
398
|
+
Store,
|
|
399
|
+
Table,
|
|
400
|
+
Task,
|
|
401
|
+
Topic,
|
|
402
|
+
cron,
|
|
403
|
+
func,
|
|
404
|
+
getAuthName,
|
|
405
|
+
getAuthProps,
|
|
406
|
+
getCacheProps,
|
|
407
|
+
getConfigName,
|
|
408
|
+
getFunctionName,
|
|
409
|
+
getQueueName,
|
|
410
|
+
getSearchName,
|
|
411
|
+
getStoreName,
|
|
412
|
+
getTableName,
|
|
413
|
+
getTaskName,
|
|
414
|
+
getTopicName,
|
|
415
|
+
mockFunction,
|
|
416
|
+
mockQueue,
|
|
417
|
+
mockTask,
|
|
418
|
+
mockTopic,
|
|
419
|
+
queue,
|
|
420
|
+
topic
|
|
421
|
+
};
|