turborepo-remote-cache 2.2.12 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +2 -3
- package/dist/env.js +24 -12
- package/dist/plugins/config.js +4 -4
- package/dist/plugins/remote-cache/auth/index.js +18 -0
- package/dist/plugins/remote-cache/auth/jwt.js +53 -0
- package/dist/plugins/remote-cache/auth/static.js +21 -0
- package/dist/plugins/remote-cache/index.js +5 -19
- package/dist/plugins/remote-cache/routes/artifacts-events.js +2 -1
- package/dist/plugins/remote-cache/routes/get-artifact.js +2 -1
- package/dist/plugins/remote-cache/routes/get-status.js +2 -1
- package/dist/plugins/remote-cache/routes/head-artifact.js +2 -1
- package/dist/plugins/remote-cache/routes/put-artifact.js +2 -1
- package/package.json +6 -2
package/dist/app.js
CHANGED
|
@@ -17,9 +17,8 @@ export function createApp(options = {}) {
|
|
|
17
17
|
genReqId: () => uuid(),
|
|
18
18
|
...fastifyOptions,
|
|
19
19
|
});
|
|
20
|
-
app.register(config).after(() => {
|
|
20
|
+
app.register(config, { overrides: options.configOverrides }).after(() => {
|
|
21
21
|
app.register(remoteCache, {
|
|
22
|
-
allowedTokens: [...app.config.TURBO_TOKEN],
|
|
23
22
|
provider: app.config.STORAGE_PROVIDER,
|
|
24
23
|
});
|
|
25
24
|
});
|
|
@@ -43,4 +42,4 @@ export function createApp(options = {}) {
|
|
|
43
42
|
});
|
|
44
43
|
return app;
|
|
45
44
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sT0FBa0QsTUFBTSxTQUFTLENBQUE7QUFDeEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0saUNBQWlDLENBQUE7QUFFekQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFdkMsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsVUFBd0UsRUFBRTtJQUUxRSxNQUFNLGNBQWMsR0FBeUI7UUFDM0MsR0FBRyxPQUFPO0tBQ1gsQ0FBQTtJQUVELE1BQU0sbUJBQW1CLEdBQ3ZCLFFBQVEsSUFBSSxjQUFjLElBQUksZ0JBQWdCLElBQUksY0FBYyxDQUFBO0lBS2xFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUN4QixjQUFjLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQTtLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNsQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQ3RCLEdBQUcsY0FBYztLQUNsQixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ3RFLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFDLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUMvQzthQUFNLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ25CLEtBQUs7aUJBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUMzQixJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUNkLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDdkMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUM1QyxDQUFBO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQy9DO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMifQ==
|
package/dist/env.js
CHANGED
|
@@ -16,7 +16,13 @@ export const STORAGE_PROVIDERS = {
|
|
|
16
16
|
};
|
|
17
17
|
const schema = Type.Object({
|
|
18
18
|
NODE_ENV: Type.Optional(Type.Enum(NODE_ENVS, { default: NODE_ENVS.PRODUCTION })),
|
|
19
|
-
|
|
19
|
+
AUTH_MODE: Type.Optional(Type.Enum({ static: 'static', jwt: 'jwt' })),
|
|
20
|
+
JWT_AUDIENCE: Type.Optional(Type.String({ separator: ',' })),
|
|
21
|
+
JWT_ISSUER: Type.Optional(Type.String()),
|
|
22
|
+
JWKS_URL: Type.Optional(Type.String()),
|
|
23
|
+
JWT_READ_SCOPES: Type.Optional(Type.String({ separator: ',' })),
|
|
24
|
+
JWT_WRITE_SCOPES: Type.Optional(Type.String({ separator: ',' })),
|
|
25
|
+
TURBO_TOKEN: Type.Optional(Type.String({ separator: ',' })),
|
|
20
26
|
PORT: Type.Number({ default: 3000 }),
|
|
21
27
|
LOG_LEVEL: Type.Optional(Type.String({ default: 'info' })),
|
|
22
28
|
LOG_MODE: Type.Optional(Type.String({ default: 'stdout' })),
|
|
@@ -39,19 +45,25 @@ const schema = Type.Object({
|
|
|
39
45
|
}, {
|
|
40
46
|
additionalProperties: false,
|
|
41
47
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
let _env;
|
|
49
|
+
export function load(overrides) {
|
|
50
|
+
_env = envSchema({
|
|
51
|
+
ajv: new Ajv.default({
|
|
52
|
+
removeAdditional: true,
|
|
53
|
+
useDefaults: true,
|
|
54
|
+
coerceTypes: true,
|
|
55
|
+
keywords: ['kind', 'RegExp', 'modifier', envSchema.keywords.separator],
|
|
56
|
+
}),
|
|
57
|
+
data: overrides,
|
|
58
|
+
dotenv: process.env.NODE_ENV === NODE_ENVS.DEVELOPMENT ? true : false,
|
|
59
|
+
schema,
|
|
60
|
+
});
|
|
61
|
+
return _env;
|
|
62
|
+
}
|
|
63
|
+
_env = load();
|
|
52
64
|
export const env = {
|
|
53
65
|
get() {
|
|
54
66
|
return _env;
|
|
55
67
|
},
|
|
56
68
|
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdEMsTUFBTSxTQUFTLEdBQUc7SUFDaEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFBO0FBR1YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsS0FBSyxFQUFFLE9BQU87SUFDZCxFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1Isb0JBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxLQUFLLEVBQUUsT0FBTztDQUNOLENBQUE7QUFJVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUN4QjtJQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDeEQ7SUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUQsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLFFB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
|
package/dist/plugins/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fp from 'fastify-plugin';
|
|
2
|
-
import {
|
|
3
|
-
export default fp(async function (fastify) {
|
|
4
|
-
fastify.decorate('config',
|
|
2
|
+
import { load } from '../env.js';
|
|
3
|
+
export default fp(async function (fastify, { overrides }) {
|
|
4
|
+
fastify.decorate('config', load(overrides));
|
|
5
5
|
}, { name: 'config' });
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9CLE9BQU8sRUFBVSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsZUFBZSxFQUFFLENBQ2YsS0FBSyxXQUFXLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRTtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUM3QyxDQUFDLEVBQ0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQ25CLENBQUEifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import fp from 'fastify-plugin';
|
|
2
|
+
import jwtAuth from './jwt.js';
|
|
3
|
+
import staticAuth from './static.js';
|
|
4
|
+
export default fp(async (fastify) => {
|
|
5
|
+
if (fastify.config.AUTH_MODE === 'jwt') {
|
|
6
|
+
fastify.register(jwtAuth);
|
|
7
|
+
fastify.log.info('Registered JWT auth');
|
|
8
|
+
}
|
|
9
|
+
else if (fastify.config.AUTH_MODE === 'static' ||
|
|
10
|
+
fastify.config.AUTH_MODE === undefined) {
|
|
11
|
+
fastify.register(staticAuth);
|
|
12
|
+
fastify.log.info('Registered static auth');
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
throw new Error('Invalid AUTH_MODE, select either "jwt" or "static"');
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGx1Z2lucy9yZW1vdGUtY2FjaGUvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMvQixPQUFPLE9BQU8sTUFBTSxVQUFVLENBQUE7QUFDOUIsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBUXBDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUF3QixFQUFFLEVBQUU7SUFDbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUU7UUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQ3hDO1NBQU0sSUFDTCxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRO1FBQ3JDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFDdEM7UUFDQSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7S0FDM0M7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtLQUN0RTtBQUNILENBQUMsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Boom, forbidden, isBoom, unauthorized } from '@hapi/boom';
|
|
2
|
+
import { fastifyJwtJwks } from 'fastify-jwt-jwks';
|
|
3
|
+
import fp from 'fastify-plugin';
|
|
4
|
+
export default fp(async (fastify) => {
|
|
5
|
+
if (!fastify.config.JWKS_URL) {
|
|
6
|
+
throw new Error('Must provide JWKS url when using JWT authentication');
|
|
7
|
+
}
|
|
8
|
+
await fastify.register(fastifyJwtJwks, {
|
|
9
|
+
audience: fastify.config.JWT_AUDIENCE,
|
|
10
|
+
issuer: fastify.config.JWT_ISSUER,
|
|
11
|
+
jwksUrl: fastify.config.JWKS_URL,
|
|
12
|
+
formatUser(payload) {
|
|
13
|
+
return { scope: new Set(payload.scope?.split(' ')) };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const readScopes = [fastify.config.JWT_READ_SCOPES || []].flat();
|
|
17
|
+
const writeScopes = [fastify.config.JWT_WRITE_SCOPES || []].flat();
|
|
18
|
+
fastify.addHook('onRequest', fastify.authenticate);
|
|
19
|
+
fastify.addHook('onRoute', async (route) => {
|
|
20
|
+
if (route.authorization &&
|
|
21
|
+
route.authorization === 'read' &&
|
|
22
|
+
readScopes.length > 0) {
|
|
23
|
+
async function authorizeRead(request) {
|
|
24
|
+
if (!readScopes.some((scope) => request.user.scope.has(scope)))
|
|
25
|
+
throw forbidden();
|
|
26
|
+
}
|
|
27
|
+
route.onRequest = [...[route.onRequest ?? []].flat(), authorizeRead];
|
|
28
|
+
}
|
|
29
|
+
if (route.authorization &&
|
|
30
|
+
route.authorization === 'write' &&
|
|
31
|
+
writeScopes.length > 0) {
|
|
32
|
+
async function authorizeWrite(request) {
|
|
33
|
+
if (!writeScopes.some((scope) => request.user.scope.has(scope)))
|
|
34
|
+
throw forbidden();
|
|
35
|
+
}
|
|
36
|
+
route.onRequest = [...[route.onRequest ?? []].flat(), authorizeWrite];
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
fastify.setErrorHandler(async (error, req, res) => {
|
|
40
|
+
if (isBoom(error)) {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
else if (error.code?.startsWith('FST_JWT_')) {
|
|
44
|
+
throw new Boom(error.message, {
|
|
45
|
+
statusCode: error.statusCode || 500,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw unauthorized();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL2F1dGgvand0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBUy9CLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBO0tBQ3ZFO0lBRUQsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRTtRQUNyQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZO1FBQ3JDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDakMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUNoQyxVQUFVLENBQUMsT0FBTztZQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUN0RCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNoRSxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2xELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN6QyxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLEtBQUssQ0FBQyxhQUFhLEtBQUssTUFBTTtZQUM5QixVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDckI7WUFDQSxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQXVCO2dCQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM1RCxNQUFNLFNBQVMsRUFBRSxDQUFBO1lBQ3JCLENBQUM7WUFDRCxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUE7U0FDckU7UUFFRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLEtBQUssQ0FBQyxhQUFhLEtBQUssT0FBTztZQUMvQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDdEI7WUFDQSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQXVCO2dCQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3RCxNQUFNLFNBQVMsRUFBRSxDQUFBO1lBQ3JCLENBQUM7WUFDRCxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUE7U0FDdEU7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDaEQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsTUFBTSxLQUFLLENBQUE7U0FDWjthQUFNLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0MsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxHQUFHO2FBQ3BDLENBQUMsQ0FBQTtTQUNIO2FBQU07WUFDTCxNQUFNLFlBQVksRUFBRSxDQUFBO1NBQ3JCO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { badRequest, unauthorized } from '@hapi/boom';
|
|
2
|
+
import fp from 'fastify-plugin';
|
|
3
|
+
export default fp(async (fastify) => {
|
|
4
|
+
const allowedTokens = fastify.config.TURBO_TOKEN;
|
|
5
|
+
if (!(Array.isArray(allowedTokens) && allowedTokens.length)) {
|
|
6
|
+
throw new Error(`'allowedTokens' options must be a string[], ${typeof allowedTokens} provided instead`);
|
|
7
|
+
}
|
|
8
|
+
const tokens = new Set(allowedTokens);
|
|
9
|
+
fastify.addHook('onRequest', async function (request) {
|
|
10
|
+
let authHeader = request.headers.authorization;
|
|
11
|
+
authHeader = Array.isArray(authHeader) ? authHeader.join() : authHeader;
|
|
12
|
+
if (!authHeader) {
|
|
13
|
+
throw badRequest('Missing Authorization header');
|
|
14
|
+
}
|
|
15
|
+
const [, token] = authHeader.split('Bearer ');
|
|
16
|
+
if (!tokens.has(token)) {
|
|
17
|
+
throw unauthorized('Invalid authorization token');
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL2F1dGgvc3RhdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJELE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9CLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUF3QixFQUFFLEVBQUU7SUFDbkQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDaEQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQ0FBK0MsT0FBTyxhQUFhLG1CQUFtQixDQUN2RixDQUFBO0tBQ0Y7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVyQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVcsT0FBTztRQUNsRCxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQTtRQUM5QyxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUE7UUFFdkUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE1BQU0sVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUE7U0FDakQ7UUFDRCxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUE7U0FDbEQ7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIn0=
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { badRequest, unauthorized } from '@hapi/boom';
|
|
2
1
|
import { STORAGE_PROVIDERS } from '../../env.js';
|
|
2
|
+
import auth from './auth/index.js';
|
|
3
3
|
import { artifactsEvents, getArtifact, getStatus, headArtifact, putArtifact, } from './routes/index.js';
|
|
4
4
|
import { createLocation } from './storage/index.js';
|
|
5
5
|
async function turboRemoteCache(instance, options) {
|
|
6
6
|
const bodyLimit = instance.config.BODY_LIMIT;
|
|
7
|
-
const {
|
|
8
|
-
if (!(Array.isArray(allowedTokens) && allowedTokens.length)) {
|
|
9
|
-
throw new Error(`'allowedTokens' options must be a string[], ${typeof allowedTokens} provided instead`);
|
|
10
|
-
}
|
|
7
|
+
const { apiVersion = 'v8', provider = STORAGE_PROVIDERS.LOCAL } = options;
|
|
11
8
|
instance.addContentTypeParser('application/octet-stream', { parseAs: 'buffer', bodyLimit }, async function parser(request, payload) {
|
|
12
9
|
return payload;
|
|
13
10
|
});
|
|
@@ -23,19 +20,8 @@ async function turboRemoteCache(instance, options) {
|
|
|
23
20
|
useTmp: !!instance.config.STORAGE_PATH_USE_TMP_FOLDER,
|
|
24
21
|
connectionString: instance.config.ABS_CONNECTION_STRING,
|
|
25
22
|
}));
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
i.addHook('onRequest', async function (request) {
|
|
29
|
-
let authHeader = request.headers.authorization;
|
|
30
|
-
authHeader = Array.isArray(authHeader) ? authHeader.join() : authHeader;
|
|
31
|
-
if (!authHeader) {
|
|
32
|
-
throw badRequest('Missing Authorization header');
|
|
33
|
-
}
|
|
34
|
-
const [, token] = authHeader.split('Bearer ');
|
|
35
|
-
if (!tokens.has(token)) {
|
|
36
|
-
throw unauthorized('Invalid authorization token');
|
|
37
|
-
}
|
|
38
|
-
});
|
|
23
|
+
instance.register(async function (i) {
|
|
24
|
+
await i.register(auth);
|
|
39
25
|
i.route(getArtifact);
|
|
40
26
|
i.route(headArtifact);
|
|
41
27
|
i.route(putArtifact);
|
|
@@ -46,4 +32,4 @@ async function turboRemoteCache(instance, options) {
|
|
|
46
32
|
}, { prefix: `/${apiVersion}` });
|
|
47
33
|
}
|
|
48
34
|
export default turboRemoteCache;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9yZW1vdGUtY2FjaGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGlCQUFpQixDQUFBO0FBQ2xDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRW5ELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsUUFBeUIsRUFDekIsT0FHQztJQUVELE1BQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO0lBQ3BELE1BQU0sRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFFekUsUUFBUSxDQUFDLG9CQUFvQixDQUMzQiwwQkFBMEIsRUFDMUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUNoQyxLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPO1FBQ3BDLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FDRixDQUFBO0lBRUQsUUFBUSxDQUFDLFFBQVEsQ0FDZixVQUFVLEVBQ1YsY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUN2QixTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhO1FBQ3hDLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWE7UUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWTtRQUNsQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1FBQ2pDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVc7UUFDckMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1FBQzdDLFVBQVUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNsRSxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjO1FBQ3pDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQywyQkFBMkI7UUFDckQsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUI7S0FDeEQsQ0FBQyxDQUNILENBQUE7SUFFRCxRQUFRLENBQUMsUUFBUSxDQUNmLEtBQUssV0FBVyxDQUFDO1FBQ2YsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDMUIsQ0FBQyxFQUNELEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FDN0IsQ0FBQTtJQUVELE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FDckIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQixDQUFDLEVBQ0QsRUFBRSxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUM3QixDQUFBO0FBQ0gsQ0FBQztBQUVELGVBQWUsZ0JBQWdCLENBQUEifQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export const artifactsEvents = {
|
|
2
2
|
method: 'POST',
|
|
3
3
|
url: '/artifacts/events',
|
|
4
|
+
authorization: 'read',
|
|
4
5
|
async handler(_req, reply) {
|
|
5
6
|
reply.code(200).send({});
|
|
6
7
|
},
|
|
7
8
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3RzLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvYXJ0aWZhY3RzLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBSXhCO0lBQ0YsTUFBTSxFQUFFLE1BQU07SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDMUIsQ0FBQztDQUNGLENBQUEifQ==
|
|
@@ -5,6 +5,7 @@ export const getArtifact = {
|
|
|
5
5
|
exposeHeadRoute: false,
|
|
6
6
|
url: '/artifacts/:id',
|
|
7
7
|
schema: artifactsRouteSchema,
|
|
8
|
+
authorization: 'read',
|
|
8
9
|
async handler(req, reply) {
|
|
9
10
|
const artifactId = req.params.id;
|
|
10
11
|
const team = req.query.teamId ?? req.query.team ?? req.query.slug;
|
|
@@ -21,4 +22,4 @@ export const getArtifact = {
|
|
|
21
22
|
}
|
|
22
23
|
},
|
|
23
24
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFydGlmYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL3JvdXRlcy9nZXQtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFNakQsT0FBTyxFQUdMLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQTtBQUVwQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBUXBCO0lBQ0YsTUFBTSxFQUFFLEtBQUs7SUFDYixlQUFlLEVBQUUsS0FBSztJQUN0QixHQUFHLEVBQUUsZ0JBQWdCO0lBQ3JCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsYUFBYSxFQUFFLE1BQU07SUFDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUN0QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUNoQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUNqRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxVQUFVLENBQUMsa0RBQWtELENBQUMsQ0FBQTtTQUNyRTtRQUVELElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hFLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDLENBQUE7WUFDeEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixNQUFNLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUMxQztJQUNILENBQUM7Q0FDRixDQUFBIn0=
|
|
@@ -10,6 +10,7 @@ export const getStatus = {
|
|
|
10
10
|
url: '/artifacts/status',
|
|
11
11
|
schema: statusRouteSchema,
|
|
12
12
|
logLevel: 'error',
|
|
13
|
+
authorization: 'read',
|
|
13
14
|
async handler(req, reply) {
|
|
14
15
|
reply.send({
|
|
15
16
|
status: 'enabled',
|
|
@@ -17,4 +18,4 @@ export const getStatus = {
|
|
|
17
18
|
});
|
|
18
19
|
},
|
|
19
20
|
};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvZ2V0LXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFPbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHdEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ2xFLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBUWxCO0lBQ0YsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsUUFBUSxFQUFFLE9BQU87SUFDakIsYUFBYSxFQUFFLE1BQU07SUFDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsTUFBTSxFQUFFLFNBQVM7WUFDakIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRixDQUFBIn0=
|
|
@@ -4,6 +4,7 @@ export const headArtifact = {
|
|
|
4
4
|
method: 'HEAD',
|
|
5
5
|
url: '/artifacts/:id',
|
|
6
6
|
schema: artifactsRouteSchema,
|
|
7
|
+
authorization: 'read',
|
|
7
8
|
async handler(req, reply) {
|
|
8
9
|
const artifactId = req.params.id;
|
|
9
10
|
const team = req.query.teamId ?? req.query.team ?? req.query.slug;
|
|
@@ -19,4 +20,4 @@ export const headArtifact = {
|
|
|
19
20
|
}
|
|
20
21
|
},
|
|
21
22
|
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvaGVhZC1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU1qRCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFBO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FRckI7SUFDRixNQUFNLEVBQUUsTUFBTTtJQUNkLEdBQUcsRUFBRSxnQkFBZ0I7SUFDckIsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixhQUFhLEVBQUUsTUFBTTtJQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLFVBQVUsQ0FBQyxrREFBa0QsQ0FBQyxDQUFBO1NBQ3JFO1FBRUQsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FDdkQsVUFBVSxFQUNWLElBQUksQ0FDTCxDQUFBO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUNyQjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FDMUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQSJ9
|
|
@@ -5,6 +5,7 @@ export const putArtifact = {
|
|
|
5
5
|
url: '/artifacts/:id',
|
|
6
6
|
method: 'PUT',
|
|
7
7
|
schema: artifactsRouteSchema,
|
|
8
|
+
authorization: 'write',
|
|
8
9
|
async handler(req, reply) {
|
|
9
10
|
const artifactId = req.params.id;
|
|
10
11
|
const team = req.query.teamId ?? req.query.team ?? req.query.slug;
|
|
@@ -20,4 +21,4 @@ export const putArtifact = {
|
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHV0LWFydGlmYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL3JvdXRlcy9wdXQtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBTTNELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxhQUFhLENBQUE7QUFFcEIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQVNwQjtJQUNGLEdBQUcsRUFBRSxnQkFBZ0I7SUFDckIsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLGFBQWEsRUFBRSxPQUFPO0lBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUs7UUFDdEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDaEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDakUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sVUFBVSxDQUFDLGtEQUFrRCxDQUFDLENBQUE7U0FDckU7UUFFRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUN0QyxVQUFVLEVBQ1YsSUFBSSxFQUNKLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN4QixDQUFBO1lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2hEO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFFWixNQUFNLGtCQUFrQixDQUFDLG9DQUFvQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ3BFO0lBQ0gsQ0FBQztDQUNGLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "turborepo-remote-cache",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Turborepo remote cache server",
|
|
5
5
|
"main": "./dist/app.js",
|
|
6
6
|
"type": "module",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@azure/storage-blob": "^12.23.0",
|
|
49
49
|
"@fastify/aws-lambda": "^5.0.0",
|
|
50
|
+
"@fastify/jwt": "9.0.1",
|
|
50
51
|
"@google-cloud/storage": "6.9.2",
|
|
51
52
|
"@hapi/boom": "10.0.0",
|
|
52
53
|
"@sinclair/typebox": "0.25.21",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"close-with-grace": "1.1.0",
|
|
56
57
|
"env-schema": "5.2.0",
|
|
57
58
|
"fastify": "5.1.0",
|
|
59
|
+
"fastify-jwt-jwks": "^2.0.0",
|
|
58
60
|
"fastify-plugin": "5.0.1",
|
|
59
61
|
"fs-blob-store": "6.0.0",
|
|
60
62
|
"hyperid": "3.1.1",
|
|
@@ -75,6 +77,7 @@
|
|
|
75
77
|
"@semantic-release/npm": "^12.0.1",
|
|
76
78
|
"@semantic-release/release-notes-generator": "^14.0.3",
|
|
77
79
|
"@types/node": "^20.6.3",
|
|
80
|
+
"@types/s3rver": "^3.7.4",
|
|
78
81
|
"c8": "^9.0.0",
|
|
79
82
|
"commitizen": "^4.3.1",
|
|
80
83
|
"commitlint-config-cz": "^0.13.3",
|
|
@@ -82,11 +85,12 @@
|
|
|
82
85
|
"cz-conventional-changelog": "^3.3.0",
|
|
83
86
|
"fastify-tsconfig": "^2.0.0",
|
|
84
87
|
"husky": "^9.1.7",
|
|
88
|
+
"mock-jwks": "^3.3.4",
|
|
85
89
|
"npm-run-all": "^4.1.5",
|
|
86
90
|
"rimraf": "^6.0.1",
|
|
87
91
|
"s3rver": "^3.7.1",
|
|
88
92
|
"semantic-release": "^24.2.1",
|
|
89
|
-
"tsx": "^4.
|
|
93
|
+
"tsx": "^4.19.2",
|
|
90
94
|
"typescript": "^5.2.2"
|
|
91
95
|
},
|
|
92
96
|
"bugs": {
|