@awsless/awsless 0.0.253 → 0.0.255

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/bin.js CHANGED
@@ -2260,14 +2260,11 @@ var createAsyncLambdaFunction = (group, ctx, ns, id, local2) => {
2260
2260
  var authFeature = defineFeature({
2261
2261
  name: "auth",
2262
2262
  async onTypeGen(ctx) {
2263
- const gen = new TypeFile("@awsless/awsless");
2263
+ const gen = new TypeFile("@awsless/awsless/client");
2264
2264
  const resources = new TypeObject(1);
2265
2265
  for (const name of Object.keys(ctx.appConfig.defaults.auth)) {
2266
2266
  const authName = formatGlobalResourceName(ctx.appConfig.name, "auth", name);
2267
- resources.addType(
2268
- name,
2269
- `{ readonly name: '${authName}', readonly userPoolId: string, readonly clientId: string }`
2270
- );
2267
+ resources.addType(name, `{ readonly userPoolId: string, readonly clientId: string }`);
2271
2268
  }
2272
2269
  gen.addInterface("AuthResources", resources);
2273
2270
  await ctx.write("auth.d.ts", gen, true);
@@ -2984,13 +2981,12 @@ scalar AWSIPAddress
2984
2981
  var graphqlFeature = defineFeature({
2985
2982
  name: "graphql",
2986
2983
  async onTypeGen(ctx) {
2987
- const types2 = new TypeFile("@awsless/awsless");
2984
+ const types2 = new TypeFile("@awsless/awsless/client");
2985
+ const schemas = new TypeObject(1);
2988
2986
  const resources = new TypeObject(1);
2989
2987
  const apis = /* @__PURE__ */ new Map();
2990
- for (const stack of ctx.stackConfigs) {
2991
- for (const id of Object.keys(stack.graphql || {})) {
2992
- apis.set(id, []);
2993
- }
2988
+ for (const id of Object.keys(ctx.appConfig.defaults.graphql ?? {})) {
2989
+ apis.set(id, []);
2994
2990
  }
2995
2991
  for (const stack of ctx.stackConfigs) {
2996
2992
  for (const [id, props] of Object.entries(stack.graphql || {})) {
@@ -3023,10 +3019,12 @@ var graphqlFeature = defineFeature({
3023
3019
  });
3024
3020
  await ctx.write(`graphql/${id}.ts`, output);
3025
3021
  types2.addImport({ Schema: id }, `./graphql/${id}.ts`);
3026
- resources.addType(id, id);
3022
+ schemas.addType(id, id);
3027
3023
  }
3024
+ resources.addType(id, "{ readonly endpoint: string }");
3028
3025
  }
3029
- types2.addInterface("GraphQL", resources);
3026
+ types2.addInterface("GraphQLSchema", schemas);
3027
+ types2.addInterface("GraphQLResources", resources);
3030
3028
  await ctx.write("graphql.d.ts", types2, true);
3031
3029
  },
3032
3030
  onApp(ctx) {
@@ -3216,7 +3214,7 @@ var generatePriority = (stackName, route) => {
3216
3214
  var httpFeature = defineFeature({
3217
3215
  name: "http",
3218
3216
  async onTypeGen(ctx) {
3219
- const types2 = new TypeFile("@awsless/awsless");
3217
+ const types2 = new TypeFile("@awsless/awsless/client");
3220
3218
  const resources = new TypeObject(1);
3221
3219
  const api = {};
3222
3220
  for (const stack of ctx.stackConfigs) {
@@ -4987,7 +4985,7 @@ var deploy = (program2) => {
4987
4985
  };
4988
4986
 
4989
4987
  // src/cli/command/diff.ts
4990
- import { WorkSpace as WorkSpace2, aws as aws21 } from "@awsless/formation";
4988
+ import { aws as aws21, WorkSpace as WorkSpace2 } from "@awsless/formation";
4991
4989
  import chalk7 from "chalk";
4992
4990
  var diff = (program2) => {
4993
4991
  program2.command("diff").description("Diff your app with AWS").action(async (filters) => {
@@ -5217,7 +5215,7 @@ var pull = (program2) => {
5217
5215
  const credentials = getCredentials(appConfig.profile);
5218
5216
  const accountId = await getAccountId(credentials, region);
5219
5217
  const { app } = createApp({ appConfig, stackConfigs, accountId });
5220
- const { stateProvider } = createWorkSpace({ credentials, region });
5218
+ const { stateProvider } = createWorkSpace({ credentials, region, accountId });
5221
5219
  await pullRemoteState(app, stateProvider);
5222
5220
  return "State pull was successful.";
5223
5221
  });
@@ -5233,7 +5231,7 @@ var push = (program2) => {
5233
5231
  const credentials = getCredentials(appConfig.profile);
5234
5232
  const accountId = await getAccountId(credentials, region);
5235
5233
  const { app } = createApp({ appConfig, stackConfigs, accountId });
5236
- const { stateProvider } = createWorkSpace({ credentials, region });
5234
+ const { stateProvider } = createWorkSpace({ credentials, region, accountId });
5237
5235
  const ok = await confirm5({
5238
5236
  message: "Pushing up the local state might corrupt your remote state. Are you sure?",
5239
5237
  initialValue: false
@@ -5255,12 +5253,12 @@ var state = (program2) => {
5255
5253
  };
5256
5254
 
5257
5255
  // src/cli/command/auth/user/create.ts
5258
- import { unwrap } from "@awsless/formation";
5259
5256
  import {
5260
5257
  AdminCreateUserCommand,
5261
5258
  AdminSetUserPasswordCommand,
5262
5259
  CognitoIdentityProviderClient
5263
5260
  } from "@aws-sdk/client-cognito-identity-provider";
5261
+ import { unwrap } from "@awsless/formation";
5264
5262
  import { password, select, text as text2 } from "@clack/prompts";
5265
5263
  var create = (program2) => {
5266
5264
  program2.command("create").argument("[name]", "The name of the auth instance").description("Create an user for your userpool").action(async (name) => {
@@ -5283,6 +5281,7 @@ var create = (program2) => {
5283
5281
  const { shared, app } = createApp({ appConfig, stackConfigs, accountId });
5284
5282
  const { workspace } = createWorkSpace({
5285
5283
  credentials,
5284
+ accountId,
5286
5285
  region
5287
5286
  });
5288
5287
  await workspace.hydrate(app);
@@ -0,0 +1,19 @@
1
+ // src/lib/proxy.ts
2
+ var createProxy = /* @__NO_SIDE_EFFECTS__ */ (cb) => {
3
+ const cache = /* @__PURE__ */ new Map();
4
+ return new Proxy(
5
+ {},
6
+ {
7
+ get(_, name) {
8
+ if (!cache.has(name)) {
9
+ cache.set(name, cb(name));
10
+ }
11
+ return cache.get(name);
12
+ }
13
+ }
14
+ );
15
+ };
16
+
17
+ export {
18
+ createProxy
19
+ };
package/dist/client.d.ts CHANGED
@@ -1,4 +1,19 @@
1
- export { A as Auth } from './auth-b89f6013.js';
1
+ interface AuthResources {
2
+ }
3
+ declare const Auth: AuthResources;
4
+ declare const getAuthProps: (name: string) => {
5
+ readonly userPoolId: string;
6
+ readonly clientId: string;
7
+ };
8
+
9
+ interface GraphQLSchema {
10
+ }
11
+ interface GraphQLResources {
12
+ }
13
+ declare const GraphQL: GraphQLResources;
14
+ declare const getGraphQLProps: (name: string) => {
15
+ readonly endpoint: string;
16
+ };
2
17
 
3
18
  interface HTTP {
4
19
  }
@@ -36,7 +51,4 @@ declare const createHttpClient: <S extends Partial<Record<Method, Routes>>>(fetc
36
51
  post<P_2 extends keyof S["POST"]>(routeKey: Extract<P_2, string>, props?: Props<GetRoute<S, "POST", P_2>> | undefined): Promise<GetRoute<S, "POST", P_2>["response"]>;
37
52
  };
38
53
 
39
- interface GraphQL {
40
- }
41
-
42
- export { GraphQL, HTTP, HttpFetcher, createHttpClient, createHttpFetcher };
54
+ export { Auth, AuthResources, GraphQL, GraphQLResources, GraphQLSchema, HTTP, HttpFetcher, createHttpClient, createHttpFetcher, getAuthProps, getGraphQLProps };
package/dist/client.js CHANGED
@@ -1,8 +1,38 @@
1
1
  import {
2
- Auth
3
- } from "./chunk-RRXFYZJQ.js";
2
+ createProxy
3
+ } from "./chunk-2LRBH7VV.js";
4
4
 
5
- // src/lib/resource/http.ts
5
+ // src/lib/client/auth.ts
6
+ import { constantCase } from "change-case";
7
+
8
+ // src/lib/client/util.ts
9
+ var env = import.meta.env;
10
+
11
+ // src/lib/client/auth.ts
12
+ var Auth = /* @__PURE__ */ createProxy((name) => {
13
+ return getAuthProps(name);
14
+ });
15
+ var getAuthProps = (name) => {
16
+ const id = constantCase(name);
17
+ return {
18
+ userPoolId: env[`AUTH_${id}_USER_POOL_ID`],
19
+ clientId: env[`AUTH_${id}_CLIENT_ID`]
20
+ };
21
+ };
22
+
23
+ // src/lib/client/graphql.ts
24
+ import { constantCase as constantCase2 } from "change-case";
25
+ var GraphQL = /* @__PURE__ */ createProxy((name) => {
26
+ return getGraphQLProps(name);
27
+ });
28
+ var getGraphQLProps = (name) => {
29
+ const id = constantCase2(name);
30
+ return {
31
+ endpoint: env[`AUTH_${id}_USER_POOL_ID`]
32
+ };
33
+ };
34
+
35
+ // src/lib/client/http.ts
6
36
  var createHttpFetcher = (host) => {
7
37
  return async ({ method, path, headers, body, query }) => {
8
38
  const url = new URL(host, path);
@@ -46,6 +76,9 @@ var createHttpClient = (fetcher) => {
46
76
  };
47
77
  export {
48
78
  Auth,
79
+ GraphQL,
49
80
  createHttpClient,
50
- createHttpFetcher
81
+ createHttpFetcher,
82
+ getAuthProps,
83
+ getGraphQLProps
51
84
  };
package/dist/server.d.ts CHANGED
@@ -1,81 +1,22 @@
1
- export { A as Auth, b as AuthResources, g as getAuthName, a as getAuthProps } from './auth-b89f6013.js';
2
1
  import * as _awsless_lambda from '@awsless/lambda';
3
2
  import { Handler, Loggers } from '@awsless/lambda';
4
- import { BaseSchema, SnsTopicSchema, SqsQueueSchema } from '@awsless/validate';
3
+ import { BaseSchema, SqsQueueSchema, SnsTopicSchema } from '@awsless/validate';
5
4
  import * as valibot from 'valibot';
6
5
 
7
- declare const APP: "app";
8
- declare const STACK: "stack";
9
-
10
- declare const getFunctionName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--function--${N}`;
11
- interface FunctionResources {
12
- }
13
- declare const Function: FunctionResources;
14
- declare const Fn: FunctionResources;
15
-
16
- declare const getTaskName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--task--${N}`;
17
- interface TaskResources {
18
- }
19
- declare const Task: TaskResources;
20
-
21
- declare const getTableName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--table--${N}`;
22
- interface TableResources {
23
- }
24
- declare const Table: TableResources;
25
-
26
- declare const getTopicName: <N extends string>(name: N) => `app--topic--${N}`;
27
- interface TopicResources {
28
- }
29
- declare const Topic: TopicResources;
30
-
31
- declare const getQueueName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--queue--${N}`;
32
- interface QueueResources {
33
- }
34
- declare const Queue: QueueResources;
35
-
36
- declare const getCacheProps: (name: string, stack?: string) => {
37
- readonly host: string;
38
- readonly port: number;
39
- };
40
- interface CacheResources {
41
- }
42
- declare const Cache: CacheResources;
43
-
44
- declare const getStoreName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--store--${N}`;
45
- interface StoreResources {
46
- }
47
- declare const Store: StoreResources;
48
-
49
- declare const getConfigName: (name: string) => string;
50
- interface ConfigResources {
51
- }
52
- declare const Config: ConfigResources;
53
-
54
- declare const getSearchName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--search--${N}`;
55
- interface SearchResources {
56
- }
57
- declare const Search: SearchResources;
58
-
59
- type FunctionProps<H extends Handler<S>, S extends BaseSchema> = {
6
+ type CronProps<H extends Handler<S>, S extends BaseSchema> = {
60
7
  handle: H;
61
8
  schema?: S;
62
9
  logger?: Loggers;
63
- logViewableErrors?: boolean;
64
10
  };
65
- declare const func: <H extends Handler<S, unknown>, S extends BaseSchema<any, any>>(props: FunctionProps<H, S>) => (event: _awsless_lambda.Input<S>, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
11
+ declare const cron: <H extends Handler<S, unknown>, S extends BaseSchema<any, any>>(props: CronProps<H, S>) => (event: _awsless_lambda.Input<S>, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
66
12
 
67
- type TopicProps<H extends Handler<S>, S extends BaseSchema> = {
13
+ type FunctionProps<H extends Handler<S>, S extends BaseSchema> = {
68
14
  handle: H;
69
15
  schema?: S;
70
16
  logger?: Loggers;
17
+ logViewableErrors?: boolean;
71
18
  };
72
- declare const topic: <H extends Handler<SnsTopicSchema<S>, unknown>, S extends BaseSchema<any, any>>(props: TopicProps<H, S>) => (event: valibot.Input<S> | valibot.Input<S>[] | {
73
- Records: {
74
- Sns: {
75
- Message: string | valibot.Input<S>;
76
- };
77
- }[];
78
- }, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
19
+ declare const func: <H extends Handler<S, unknown>, S extends BaseSchema<any, any>>(props: FunctionProps<H, S>) => (event: _awsless_lambda.Input<S>, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
79
20
 
80
21
  type QueueProps<H extends Handler<S>, S extends BaseSchema> = {
81
22
  handle: H;
@@ -88,12 +29,18 @@ declare const queue: <H extends Handler<SqsQueueSchema<S>, unknown>, S extends B
88
29
  }[];
89
30
  }, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
90
31
 
91
- type CronProps<H extends Handler<S>, S extends BaseSchema> = {
32
+ type TopicProps<H extends Handler<S>, S extends BaseSchema> = {
92
33
  handle: H;
93
34
  schema?: S;
94
35
  logger?: Loggers;
95
36
  };
96
- declare const cron: <H extends Handler<S, unknown>, S extends BaseSchema<any, any>>(props: CronProps<H, S>) => (event: _awsless_lambda.Input<S>, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
37
+ declare const topic: <H extends Handler<SnsTopicSchema<S>, unknown>, S extends BaseSchema<any, any>>(props: TopicProps<H, S>) => (event: valibot.Input<S> | valibot.Input<S>[] | {
38
+ Records: {
39
+ Sns: {
40
+ Message: string | valibot.Input<S>;
41
+ };
42
+ }[];
43
+ }, context?: _awsless_lambda.LambdaContext | undefined) => Promise<ReturnType<H>>;
97
44
 
98
45
  interface FunctionMock {
99
46
  }
@@ -101,12 +48,6 @@ interface FunctionMockResponse {
101
48
  }
102
49
  declare const mockFunction: (cb: (mock: FunctionMock) => void) => FunctionMockResponse;
103
50
 
104
- interface TopicMock {
105
- }
106
- interface TopicMockResponse {
107
- }
108
- declare const mockTopic: (cb: (mock: TopicMock) => void) => TopicMockResponse;
109
-
110
51
  interface QueueMock {
111
52
  }
112
53
  interface QueueMockResponse {
@@ -119,4 +60,62 @@ interface TaskMockResponse {
119
60
  }
120
61
  declare const mockTask: (cb: (mock: TaskMock) => void) => TaskMockResponse;
121
62
 
63
+ interface TopicMock {
64
+ }
65
+ interface TopicMockResponse {
66
+ }
67
+ declare const mockTopic: (cb: (mock: TopicMock) => void) => TopicMockResponse;
68
+
69
+ declare const getCacheProps: (name: string, stack?: string) => {
70
+ readonly host: string;
71
+ readonly port: number;
72
+ };
73
+ interface CacheResources {
74
+ }
75
+ declare const Cache: CacheResources;
76
+
77
+ declare const getConfigName: (name: string) => string;
78
+ interface ConfigResources {
79
+ }
80
+ declare const Config: ConfigResources;
81
+
82
+ declare const getFunctionName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--function--${N}`;
83
+ interface FunctionResources {
84
+ }
85
+ declare const Function: FunctionResources;
86
+ declare const Fn: FunctionResources;
87
+
88
+ declare const getQueueName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--queue--${N}`;
89
+ interface QueueResources {
90
+ }
91
+ declare const Queue: QueueResources;
92
+
93
+ declare const getSearchName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--search--${N}`;
94
+ interface SearchResources {
95
+ }
96
+ declare const Search: SearchResources;
97
+
98
+ declare const getStoreName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--store--${N}`;
99
+ interface StoreResources {
100
+ }
101
+ declare const Store: StoreResources;
102
+
103
+ declare const getTableName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--table--${N}`;
104
+ interface TableResources {
105
+ }
106
+ declare const Table: TableResources;
107
+
108
+ declare const getTaskName: <N extends string, S extends string = "stack">(name: N, stack?: S) => `app--${S}--task--${N}`;
109
+ interface TaskResources {
110
+ }
111
+ declare const Task: TaskResources;
112
+
113
+ declare const getTopicName: <N extends string>(name: N) => `app--topic--${N}`;
114
+ interface TopicResources {
115
+ }
116
+ declare const Topic: TopicResources;
117
+
118
+ declare const APP: "app";
119
+ declare const STACK: "stack";
120
+
122
121
  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 CHANGED
@@ -1,17 +1,69 @@
1
1
  import {
2
- APP,
3
- Auth,
4
- STACK,
5
- bindGlobalResourceName,
6
- bindLocalResourceName,
7
- createProxy,
8
- getAuthName,
9
- getAuthProps
10
- } from "./chunk-RRXFYZJQ.js";
2
+ createProxy
3
+ } from "./chunk-2LRBH7VV.js";
4
+
5
+ // src/lib/handle/cron.ts
6
+ import { lambda } from "@awsless/lambda";
7
+ var cron = (props) => {
8
+ return lambda({
9
+ ...props,
10
+ logViewableErrors: true
11
+ });
12
+ };
13
+
14
+ // src/lib/handle/function.ts
15
+ import { lambda as lambda2 } from "@awsless/lambda";
16
+ var func = (props) => {
17
+ return lambda2(props);
18
+ };
19
+
20
+ // src/lib/handle/queue.ts
21
+ import { lambda as lambda3 } from "@awsless/lambda";
22
+ import { sqsQueue } from "@awsless/validate";
23
+ var queue = (props) => {
24
+ return lambda3({
25
+ logger: props.logger,
26
+ schema: sqsQueue(props.schema),
27
+ handle: props.handle,
28
+ logViewableErrors: true
29
+ });
30
+ };
31
+
32
+ // src/lib/handle/topic.ts
33
+ import { snsTopic } from "@awsless/validate";
34
+ import { lambda as lambda4 } from "@awsless/lambda";
35
+ var topic = (props) => {
36
+ return lambda4({
37
+ logger: props.logger,
38
+ schema: snsTopic(props.schema),
39
+ handle: props.handle,
40
+ logViewableErrors: true
41
+ });
42
+ };
43
+
44
+ // src/lib/mock/function.ts
45
+ import { mockLambda } from "@awsless/lambda";
11
46
 
12
- // src/lib/resource/function.ts
47
+ // src/lib/server/function.ts
13
48
  import { invoke } from "@awsless/lambda";
14
49
  import { WeakCache } from "@awsless/weak-cache";
50
+
51
+ // src/lib/server/util.ts
52
+ import { paramCase } from "change-case";
53
+ var APP = process.env.APP ?? "app";
54
+ var STACK = process.env.STACK ?? "stack";
55
+ var bindLocalResourceName = (type) => {
56
+ return (name, stack = STACK) => {
57
+ return [APP, paramCase(stack), paramCase(type), paramCase(name)].join("--");
58
+ };
59
+ };
60
+ var bindGlobalResourceName = (type) => {
61
+ return (name) => {
62
+ return [APP, paramCase(type), paramCase(name)].join("--");
63
+ };
64
+ };
65
+
66
+ // src/lib/server/function.ts
15
67
  var cache = new WeakCache();
16
68
  var getFunctionName = bindLocalResourceName("function");
17
69
  var Function = /* @__PURE__ */ createProxy((stackName) => {
@@ -44,7 +96,86 @@ var Function = /* @__PURE__ */ createProxy((stackName) => {
44
96
  });
45
97
  var Fn = Function;
46
98
 
47
- // src/lib/resource/task.ts
99
+ // src/lib/mock/function.ts
100
+ var mockFunction = (cb) => {
101
+ const list = {};
102
+ const mock = createProxy((stack) => {
103
+ return createProxy((name) => {
104
+ return (handleOrResponse) => {
105
+ const handle = typeof handleOrResponse === "function" ? handleOrResponse : () => handleOrResponse;
106
+ list[getFunctionName(name, stack)] = handle;
107
+ };
108
+ });
109
+ });
110
+ cb(mock);
111
+ const result = mockLambda(list);
112
+ return createProxy((stack) => {
113
+ return createProxy((name) => {
114
+ return result[getFunctionName(name, stack)];
115
+ });
116
+ });
117
+ };
118
+
119
+ // src/lib/mock/queue.ts
120
+ import { mockSQS } from "@awsless/sqs";
121
+
122
+ // src/lib/server/queue.ts
123
+ import { sendMessage, sendMessageBatch } from "@awsless/sqs";
124
+ import { constantCase } from "change-case";
125
+ var getQueueName = bindLocalResourceName("queue");
126
+ var getQueueUrl = (name, stack = STACK) => {
127
+ return process.env[`QUEUE_${constantCase(stack)}_${constantCase(name)}_URL`];
128
+ };
129
+ var Queue = /* @__PURE__ */ createProxy((stack) => {
130
+ return createProxy((queue2) => {
131
+ const url = getQueueUrl(queue2, stack);
132
+ const name = getQueueName(queue2, stack);
133
+ const ctx = {
134
+ [name]: (payload, options = {}) => {
135
+ return sendMessage({
136
+ ...options,
137
+ queue: url ?? name,
138
+ payload
139
+ });
140
+ }
141
+ };
142
+ const send = ctx[name];
143
+ send.url = url;
144
+ send.batch = (items, options = {}) => {
145
+ return sendMessageBatch({
146
+ ...options,
147
+ queue: url ?? name,
148
+ items
149
+ });
150
+ };
151
+ return send;
152
+ });
153
+ });
154
+
155
+ // src/lib/mock/queue.ts
156
+ var mockQueue = (cb) => {
157
+ const list = {};
158
+ const mock = createProxy((stack) => {
159
+ return createProxy((name) => {
160
+ return (handle) => {
161
+ list[getQueueName(name, stack)] = handle ?? (() => {
162
+ });
163
+ };
164
+ });
165
+ });
166
+ cb(mock);
167
+ const result = mockSQS(list);
168
+ return createProxy((stack) => {
169
+ return createProxy((name) => {
170
+ return result[getQueueName(name, stack)];
171
+ });
172
+ });
173
+ };
174
+
175
+ // src/lib/mock/task.ts
176
+ import { mockLambda as mockLambda2 } from "@awsless/lambda";
177
+
178
+ // src/lib/server/task.ts
48
179
  import { invoke as invoke2 } from "@awsless/lambda";
49
180
  var getTaskName = bindLocalResourceName("task");
50
181
  var Task = /* @__PURE__ */ createProxy((stackName) => {
@@ -64,15 +195,29 @@ var Task = /* @__PURE__ */ createProxy((stackName) => {
64
195
  });
65
196
  });
66
197
 
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);
198
+ // src/lib/mock/task.ts
199
+ var mockTask = (cb) => {
200
+ const list = {};
201
+ const mock = createProxy((stack) => {
202
+ return createProxy((name) => {
203
+ return (handle) => {
204
+ list[getTaskName(name, stack)] = handle;
205
+ };
206
+ });
72
207
  });
73
- });
208
+ cb(mock);
209
+ const result = mockLambda2(list);
210
+ return createProxy((stack) => {
211
+ return createProxy((name) => {
212
+ return result[getTaskName(name, stack)];
213
+ });
214
+ });
215
+ };
216
+
217
+ // src/lib/mock/topic.ts
218
+ import { mockSNS } from "@awsless/sns";
74
219
 
75
- // src/lib/resource/topic.ts
220
+ // src/lib/server/topic.ts
76
221
  import { publish } from "@awsless/sns";
77
222
  var getTopicName = bindGlobalResourceName("topic");
78
223
  var Topic = /* @__PURE__ */ createProxy((name) => {
@@ -90,45 +235,25 @@ var Topic = /* @__PURE__ */ createProxy((name) => {
90
235
  return call;
91
236
  });
92
237
 
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
238
+ // src/lib/mock/topic.ts
239
+ var mockTopic = (cb) => {
240
+ const list = {};
241
+ const mock = createProxy((name) => {
242
+ return (handle) => {
243
+ list[getTopicName(name)] = handle ?? (() => {
123
244
  });
124
245
  };
125
- return send;
126
246
  });
127
- });
247
+ cb(mock);
248
+ const result = mockSNS(list);
249
+ return createProxy((name) => {
250
+ return result[getTopicName(name)];
251
+ });
252
+ };
128
253
 
129
- // src/lib/resource/cache.ts
130
- import { constantCase as constantCase2 } from "change-case";
254
+ // src/lib/server/cache.ts
131
255
  import { command } from "@awsless/redis";
256
+ import { constantCase as constantCase2 } from "change-case";
132
257
  var getCacheProps = (name, stack = STACK) => {
133
258
  const prefix = `CACHE_${constantCase2(stack)}_${constantCase2(name)}`;
134
259
  return {
@@ -160,48 +285,9 @@ var Cache = /* @__PURE__ */ createProxy((stack) => {
160
285
  });
161
286
  });
162
287
 
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
288
+ // src/lib/server/config.ts
203
289
  import { ssm } from "@awsless/ssm";
204
- import { paramCase } from "change-case";
290
+ import { paramCase as paramCase2 } from "change-case";
205
291
  var getConfigName = (name) => {
206
292
  return `/.awsless/${APP}/${name}`;
207
293
  };
@@ -225,7 +311,7 @@ var Config = /* @__PURE__ */ new Proxy(
225
311
  {},
226
312
  {
227
313
  get(_, name) {
228
- const key = paramCase(name);
314
+ const key = paramCase2(name);
229
315
  const value = data[key];
230
316
  if (typeof value === "undefined") {
231
317
  throw new Error(
@@ -235,16 +321,16 @@ var Config = /* @__PURE__ */ new Proxy(
235
321
  return value;
236
322
  },
237
323
  set(_, name, value) {
238
- const key = paramCase(name);
324
+ const key = paramCase2(name);
239
325
  data[key] = value;
240
326
  return true;
241
327
  }
242
328
  }
243
329
  );
244
330
 
245
- // src/lib/resource/search.ts
331
+ // src/lib/server/search.ts
332
+ import { define, searchClient } from "@awsless/open-search";
246
333
  import { constantCase as constantCase3 } from "change-case";
247
- import { searchClient, define } from "@awsless/open-search";
248
334
  var getSearchName = bindLocalResourceName("search");
249
335
  var getSearchProps = (name, stack = STACK) => {
250
336
  return {
@@ -268,126 +354,54 @@ var Search = /* @__PURE__ */ createProxy((stack) => {
268
354
  });
269
355
  });
270
356
 
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);
357
+ // src/lib/server/store.ts
358
+ import { createPresignedPost, deleteObject, getObject, putObject } from "@awsless/s3";
359
+ var getStoreName = bindLocalResourceName("store");
360
+ var Store = /* @__PURE__ */ createProxy((stack) => {
343
361
  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 ?? (() => {
362
+ const bucket = getStoreName(name, stack);
363
+ return {
364
+ name: bucket,
365
+ async put(key, body, options = {}) {
366
+ await putObject({
367
+ bucket,
368
+ key,
369
+ body,
370
+ ...options
356
371
  });
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
- });
372
+ },
373
+ async get(key) {
374
+ const object = await getObject({ bucket, key });
375
+ if (object) {
376
+ return object.body;
377
+ }
378
+ return void 0;
379
+ },
380
+ delete(key) {
381
+ return deleteObject({ bucket, key });
382
+ },
383
+ createPresignedPost(key, contentLengthRange, expires, fields) {
384
+ return createPresignedPost({
385
+ bucket,
386
+ key,
387
+ contentLengthRange,
388
+ expires,
389
+ fields
390
+ });
391
+ }
392
+ };
366
393
  });
367
- };
394
+ });
368
395
 
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
- });
396
+ // src/lib/server/table.ts
397
+ var getTableName = bindLocalResourceName("table");
398
+ var Table = /* @__PURE__ */ createProxy((stack) => {
399
+ return createProxy((name) => {
400
+ return getTableName(name, stack);
386
401
  });
387
- };
402
+ });
388
403
  export {
389
404
  APP,
390
- Auth,
391
405
  Cache,
392
406
  Config,
393
407
  Fn,
@@ -401,8 +415,6 @@ export {
401
415
  Topic,
402
416
  cron,
403
417
  func,
404
- getAuthName,
405
- getAuthProps,
406
418
  getCacheProps,
407
419
  getConfigName,
408
420
  getFunctionName,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awsless/awsless",
3
- "version": "0.0.253",
3
+ "version": "0.0.255",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -28,15 +28,15 @@
28
28
  }
29
29
  },
30
30
  "peerDependencies": {
31
- "@awsless/redis": "^0.0.12",
32
- "@awsless/open-search": "^0.0.12",
33
31
  "@awsless/lambda": "^0.0.19",
32
+ "@awsless/open-search": "^0.0.12",
33
+ "@awsless/redis": "^0.0.12",
34
34
  "@awsless/s3": "^0.0.10",
35
35
  "@awsless/sns": "^0.0.7",
36
36
  "@awsless/sqs": "^0.0.7",
37
37
  "@awsless/ssm": "^0.0.7",
38
- "@awsless/validate": "^0.0.14",
39
- "@awsless/weak-cache": "^0.0.1"
38
+ "@awsless/weak-cache": "^0.0.1",
39
+ "@awsless/validate": "^0.0.14"
40
40
  },
41
41
  "dependencies": {
42
42
  "@aws-appsync/utils": "^1.5.0",
@@ -98,12 +98,12 @@
98
98
  "wrap-ansi": "^8.1.0",
99
99
  "zod": "^3.21.4",
100
100
  "zod-to-json-schema": "^3.22.3",
101
- "@awsless/duration": "^0.0.1",
102
101
  "@awsless/formation": "^0.0.28",
103
102
  "@awsless/size": "^0.0.1",
104
103
  "@awsless/graphql": "^0.0.9",
105
- "@awsless/code": "^0.0.10",
106
- "@awsless/validate": "^0.0.14"
104
+ "@awsless/duration": "^0.0.1",
105
+ "@awsless/validate": "^0.0.14",
106
+ "@awsless/code": "^0.0.10"
107
107
  },
108
108
  "scripts": {
109
109
  "test": "pnpm code test",
@@ -1,11 +0,0 @@
1
- declare const getAuthName: <N extends string>(name: N) => `app--auth--${N}`;
2
- interface AuthResources {
3
- }
4
- declare const Auth: AuthResources;
5
- declare const getAuthProps: (name: string) => {
6
- readonly name: `app--auth--${string}`;
7
- readonly userPoolId: string;
8
- readonly clientId: string;
9
- };
10
-
11
- export { Auth as A, getAuthProps as a, AuthResources as b, getAuthName as g };
@@ -1,61 +0,0 @@
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
- };