@awsless/awsless 0.0.223 → 0.0.224
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 +64 -17
- package/dist/build-json-schema.js +33 -4
- package/dist/server.js +10 -1
- package/dist/stack.json +1 -1
- package/package.json +9 -9
package/dist/bin.js
CHANGED
|
@@ -671,7 +671,36 @@ var TablesSchema = z17.record(
|
|
|
671
671
|
|
|
672
672
|
// src/feature/store/schema.ts
|
|
673
673
|
import { z as z18 } from "zod";
|
|
674
|
-
|
|
674
|
+
import { seconds as seconds3 } from "@awsless/duration";
|
|
675
|
+
var CorsSchema = z18.array(
|
|
676
|
+
z18.object({
|
|
677
|
+
maxAge: DurationSchema.refine(durationMin(seconds3(0))).optional().describe(
|
|
678
|
+
"The time in seconds that your browser is to cache the preflight response for the specified resource."
|
|
679
|
+
),
|
|
680
|
+
origins: z18.array(z18.string()).describe("One or more origins you want customers to be able to access the bucket from."),
|
|
681
|
+
methods: z18.array(z18.enum(["GET", "PUT", "HEAD", "POST", "DELETE"])).describe("An HTTP method that you allow the origin to run."),
|
|
682
|
+
headers: z18.array(z18.string()).optional().describe(
|
|
683
|
+
"Headers that are specified in the Access-Control-Request-Headers header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns any requested headers that are allowed."
|
|
684
|
+
),
|
|
685
|
+
exposeHeaders: z18.array(z18.string()).optional().describe(
|
|
686
|
+
"One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object)."
|
|
687
|
+
)
|
|
688
|
+
})
|
|
689
|
+
).max(100).optional().describe("Describes the AWS Lambda functions to invoke and the events for which to invoke them.");
|
|
690
|
+
var LambdaConfigsSchema = z18.array(
|
|
691
|
+
z18.object({
|
|
692
|
+
event: z18.enum(["created", "removed"]).describe("The Amazon S3 bucket event for which to invoke the AWS Lambda function."),
|
|
693
|
+
consumer: FunctionSchema.describe("The consuming lambda function properties.")
|
|
694
|
+
})
|
|
695
|
+
).optional().describe("Describes the AWS Lambda functions to invoke and the events for which to invoke them.");
|
|
696
|
+
var StoresSchema = z18.record(
|
|
697
|
+
ResourceIdSchema,
|
|
698
|
+
z18.object({
|
|
699
|
+
lambdaConfigs: LambdaConfigsSchema,
|
|
700
|
+
cors: CorsSchema,
|
|
701
|
+
versioning: z18.boolean().default(false)
|
|
702
|
+
})
|
|
703
|
+
).optional().describe("Define the stores in your stack.");
|
|
675
704
|
|
|
676
705
|
// src/feature/pubsub/schema.ts
|
|
677
706
|
import { z as z19 } from "zod";
|
|
@@ -3148,9 +3177,9 @@ var storeFeature = defineFeature({
|
|
|
3148
3177
|
const resources = new TypeObject(1);
|
|
3149
3178
|
for (const stack of ctx.stackConfigs) {
|
|
3150
3179
|
const list4 = new TypeObject(2);
|
|
3151
|
-
for (const
|
|
3152
|
-
const storeName = formatLocalResourceName(ctx.appConfig.name, stack.name, "store",
|
|
3153
|
-
list4.addType(
|
|
3180
|
+
for (const id of Object.keys(stack.stores ?? {})) {
|
|
3181
|
+
const storeName = formatLocalResourceName(ctx.appConfig.name, stack.name, "store", id);
|
|
3182
|
+
list4.addType(id, `Store<'${storeName}'>`);
|
|
3154
3183
|
}
|
|
3155
3184
|
resources.addType(stack.name, list4);
|
|
3156
3185
|
}
|
|
@@ -3159,20 +3188,38 @@ var storeFeature = defineFeature({
|
|
|
3159
3188
|
await ctx.write("store.d.ts", gen, true);
|
|
3160
3189
|
},
|
|
3161
3190
|
onStack(ctx) {
|
|
3162
|
-
for (const id of ctx.stackConfig.stores
|
|
3191
|
+
for (const [id, props] of Object.entries(ctx.stackConfig.stores ?? {})) {
|
|
3163
3192
|
const group = new Node10(ctx.stack, "store", id);
|
|
3193
|
+
const lambdaConfigs = [];
|
|
3194
|
+
for (const [_, lambdaConfig] of Object.entries(props.lambdaConfigs ?? {})) {
|
|
3195
|
+
const { lambda } = createLambdaFunction(group, ctx, `store`, id, lambdaConfig.consumer);
|
|
3196
|
+
lambda.addEnvironment("LOG_VIEWABLE_ERROR", "1");
|
|
3197
|
+
let event;
|
|
3198
|
+
if (lambdaConfig.event === "created") {
|
|
3199
|
+
event = "s3:ObjectCreated:*";
|
|
3200
|
+
} else if (lambdaConfig.event === "removed") {
|
|
3201
|
+
event = "s3:ObjectRemoved:*";
|
|
3202
|
+
}
|
|
3203
|
+
lambdaConfigs.push({
|
|
3204
|
+
event,
|
|
3205
|
+
function: lambda.arn
|
|
3206
|
+
});
|
|
3207
|
+
}
|
|
3164
3208
|
const bucket = new aws10.s3.Bucket(group, "store", {
|
|
3165
3209
|
name: formatLocalResourceName(ctx.appConfig.name, ctx.stack.name, "store", id),
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
]
|
|
3210
|
+
versioning: props.versioning,
|
|
3211
|
+
cors: props.cors,
|
|
3212
|
+
lambdaConfigs
|
|
3213
|
+
// cors: [
|
|
3214
|
+
// // ---------------------------------------------
|
|
3215
|
+
// // Support for presigned post requests
|
|
3216
|
+
// // ---------------------------------------------
|
|
3217
|
+
// {
|
|
3218
|
+
// origins: ['*'],
|
|
3219
|
+
// methods: ['POST'],
|
|
3220
|
+
// },
|
|
3221
|
+
// // ---------------------------------------------
|
|
3222
|
+
// ],
|
|
3176
3223
|
});
|
|
3177
3224
|
ctx.onFunction(({ policy }) => {
|
|
3178
3225
|
policy.addStatement(bucket.permissions);
|
|
@@ -3736,7 +3783,7 @@ var searchFeature = defineFeature({
|
|
|
3736
3783
|
|
|
3737
3784
|
// src/feature/site/index.ts
|
|
3738
3785
|
import { Asset as Asset3, Node as Node17, aws as aws17 } from "@awsless/formation";
|
|
3739
|
-
import { days as days3, seconds as
|
|
3786
|
+
import { days as days3, seconds as seconds4 } from "@awsless/duration";
|
|
3740
3787
|
import { glob as glob2 } from "glob";
|
|
3741
3788
|
import { join as join8 } from "path";
|
|
3742
3789
|
|
|
@@ -3849,7 +3896,7 @@ var siteFeature = defineFeature({
|
|
|
3849
3896
|
}
|
|
3850
3897
|
const cache = new aws17.cloudFront.CachePolicy(group, "cache", {
|
|
3851
3898
|
name,
|
|
3852
|
-
minTtl:
|
|
3899
|
+
minTtl: seconds4(1),
|
|
3853
3900
|
maxTtl: days3(365),
|
|
3854
3901
|
defaultTtl: days3(1),
|
|
3855
3902
|
...props.cache
|
|
@@ -309,11 +309,40 @@ var TablesSchema = z8.record(
|
|
|
309
309
|
|
|
310
310
|
// src/feature/store/schema.ts
|
|
311
311
|
import { z as z9 } from "zod";
|
|
312
|
-
|
|
312
|
+
import { seconds as seconds2 } from "@awsless/duration";
|
|
313
|
+
var CorsSchema = z9.array(
|
|
314
|
+
z9.object({
|
|
315
|
+
maxAge: DurationSchema.refine(durationMin(seconds2(0))).optional().describe(
|
|
316
|
+
"The time in seconds that your browser is to cache the preflight response for the specified resource."
|
|
317
|
+
),
|
|
318
|
+
origins: z9.array(z9.string()).describe("One or more origins you want customers to be able to access the bucket from."),
|
|
319
|
+
methods: z9.array(z9.enum(["GET", "PUT", "HEAD", "POST", "DELETE"])).describe("An HTTP method that you allow the origin to run."),
|
|
320
|
+
headers: z9.array(z9.string()).optional().describe(
|
|
321
|
+
"Headers that are specified in the Access-Control-Request-Headers header. These headers are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns any requested headers that are allowed."
|
|
322
|
+
),
|
|
323
|
+
exposeHeaders: z9.array(z9.string()).optional().describe(
|
|
324
|
+
"One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object)."
|
|
325
|
+
)
|
|
326
|
+
})
|
|
327
|
+
).max(100).optional().describe("Describes the AWS Lambda functions to invoke and the events for which to invoke them.");
|
|
328
|
+
var LambdaConfigsSchema = z9.array(
|
|
329
|
+
z9.object({
|
|
330
|
+
event: z9.enum(["created", "removed"]).describe("The Amazon S3 bucket event for which to invoke the AWS Lambda function."),
|
|
331
|
+
consumer: FunctionSchema.describe("The consuming lambda function properties.")
|
|
332
|
+
})
|
|
333
|
+
).optional().describe("Describes the AWS Lambda functions to invoke and the events for which to invoke them.");
|
|
334
|
+
var StoresSchema = z9.record(
|
|
335
|
+
ResourceIdSchema,
|
|
336
|
+
z9.object({
|
|
337
|
+
lambdaConfigs: LambdaConfigsSchema,
|
|
338
|
+
cors: CorsSchema,
|
|
339
|
+
versioning: z9.boolean().default(false)
|
|
340
|
+
})
|
|
341
|
+
).optional().describe("Define the stores in your stack.");
|
|
313
342
|
|
|
314
343
|
// src/feature/queue/schema.ts
|
|
315
344
|
import { z as z10 } from "zod";
|
|
316
|
-
import { days as days2, hours, minutes as minutes2, seconds as
|
|
345
|
+
import { days as days2, hours, minutes as minutes2, seconds as seconds3 } from "@awsless/duration";
|
|
317
346
|
import { kibibytes } from "@awsless/size";
|
|
318
347
|
var RetentionPeriodSchema = DurationSchema.refine(
|
|
319
348
|
durationMin(minutes2(1)),
|
|
@@ -334,9 +363,9 @@ var DeliveryDelaySchema = DurationSchema.refine(
|
|
|
334
363
|
"The time in seconds for which the delivery of all messages in the queue is delayed. You can specify a duration from 0 to 15 minutes."
|
|
335
364
|
);
|
|
336
365
|
var ReceiveMessageWaitTimeSchema = DurationSchema.refine(
|
|
337
|
-
durationMin(
|
|
366
|
+
durationMin(seconds3(1)),
|
|
338
367
|
"Minimum receive message wait time is 1 second"
|
|
339
|
-
).refine(durationMax(
|
|
368
|
+
).refine(durationMax(seconds3(20)), "Maximum receive message wait time is 20 seconds").describe(
|
|
340
369
|
"Specifies the duration, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response, rather than returning an empty response if a message isn't yet available. You can specify a duration from 1 to 20 seconds. Short polling is used as the default."
|
|
341
370
|
);
|
|
342
371
|
var MaxMessageSizeSchema = SizeSchema.refine(sizeMin(kibibytes(1)), "Minimum max message size is 1 KB").refine(sizeMax(kibibytes(256)), "Maximum max message size is 256 KB").describe(
|
package/dist/server.js
CHANGED
|
@@ -201,7 +201,7 @@ var Cache = /* @__PURE__ */ createProxy((stack) => {
|
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
// src/lib/resource/store.ts
|
|
204
|
-
import { putObject, getObject, deleteObject } from "@awsless/s3";
|
|
204
|
+
import { putObject, getObject, deleteObject, createPresignedPost } from "@awsless/s3";
|
|
205
205
|
var getStoreName = bindLocalResourceName("store");
|
|
206
206
|
var Store = /* @__PURE__ */ createProxy((stack) => {
|
|
207
207
|
return createProxy((name) => {
|
|
@@ -225,6 +225,15 @@ var Store = /* @__PURE__ */ createProxy((stack) => {
|
|
|
225
225
|
},
|
|
226
226
|
delete(key) {
|
|
227
227
|
return deleteObject({ bucket, key });
|
|
228
|
+
},
|
|
229
|
+
presignedUrl(key, contentLengthRange, expires, fields) {
|
|
230
|
+
return createPresignedPost({
|
|
231
|
+
bucket,
|
|
232
|
+
key,
|
|
233
|
+
contentLengthRange,
|
|
234
|
+
expires,
|
|
235
|
+
fields
|
|
236
|
+
});
|
|
228
237
|
}
|
|
229
238
|
};
|
|
230
239
|
});
|