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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sT0FBa0QsTUFBTSxTQUFTLENBQUE7QUFDeEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0saUNBQWlDLENBQUE7QUFFekQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFdkMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxVQUFnQyxFQUFFO0lBQzFELE1BQU0sY0FBYyxHQUF5QjtRQUMzQyxHQUFHLE9BQU87S0FDWCxDQUFBO0lBRUQsTUFBTSxtQkFBbUIsR0FDdkIsUUFBUSxJQUFJLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLENBQUE7SUFLbEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBQ3hCLGNBQWMsQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFBO0tBQ3ZDO0lBRUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUU7UUFDdEIsR0FBRyxjQUFjO0tBQ2xCLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUM5QixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUN4QixhQUFhLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFDLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtZQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUMvQzthQUFNLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ25CLEtBQUs7aUJBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUMzQixJQUFJLENBQ0gsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUNkLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDdkMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUM1QyxDQUFBO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQy9DO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMifQ==
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
- TURBO_TOKEN: Type.String({ separator: ',' }),
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
- const _env = envSchema({
43
- ajv: new Ajv.default({
44
- removeAdditional: true,
45
- useDefaults: true,
46
- coerceTypes: true,
47
- keywords: ['kind', 'RegExp', 'modifier', envSchema.keywords.separator],
48
- }),
49
- dotenv: process.env.NODE_ENV === NODE_ENVS.DEVELOPMENT ? true : false,
50
- schema,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdEMsTUFBTSxTQUFTLEdBQUc7SUFDaEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFBO0FBR1YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsS0FBSyxFQUFFLE9BQU87SUFDZCxFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1Isb0JBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxLQUFLLEVBQUUsT0FBTztDQUNOLENBQUE7QUFJVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUN4QjtJQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDeEQ7SUFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1B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
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdEMsTUFBTSxTQUFTLEdBQUc7SUFDaEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFBO0FBR1YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsS0FBSyxFQUFFLE9BQU87SUFDZCxFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1Isb0JBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxLQUFLLEVBQUUsT0FBTztDQUNOLENBQUE7QUFJVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUN4QjtJQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDeEQ7SUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUQsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLFFB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
@@ -1,6 +1,6 @@
1
1
  import fp from 'fastify-plugin';
2
- import { env } from '../env.js';
3
- export default fp(async function (fastify) {
4
- fastify.decorate('config', env.get());
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFL0IsZUFBZSxFQUFFLENBQ2YsS0FBSyxXQUFXLE9BQU87SUFDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7QUFDdkMsQ0FBQyxFQUNELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUNuQixDQUFBIn0=
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 { allowedTokens, apiVersion = 'v8', provider = STORAGE_PROVIDERS.LOCAL, } = options;
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
- await instance.register(async function (i) {
27
- const tokens = new Set(allowedTokens);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9yZW1vdGUtY2FjaGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2hELE9BQU8sRUFDTCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRW5ELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsUUFBeUIsRUFDekIsT0FJQztJQUVELE1BQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFBO0lBQ3BELE1BQU0sRUFDSixhQUFhLEVBQ2IsVUFBVSxHQUFHLElBQUksRUFDakIsUUFBUSxHQUFHLGlCQUFpQixDQUFDLEtBQUssR0FDbkMsR0FBRyxPQUFPLENBQUE7SUFDWCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzRCxNQUFNLElBQUksS0FBSyxDQUNiLCtDQUErQyxPQUFPLGFBQWEsbUJBQW1CLENBQ3ZGLENBQUE7S0FDRjtJQUVELFFBQVEsQ0FBQyxvQkFBb0IsQ0FDM0IsMEJBQTBCLEVBQzFCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDaEMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTztRQUNwQyxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDLENBQ0YsQ0FBQTtJQUVELFFBQVEsQ0FBQyxRQUFRLENBQ2YsVUFBVSxFQUNWLGNBQWMsQ0FBQyxRQUFRLEVBQUU7UUFDdkIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYTtRQUN4QyxTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhO1FBQ3hDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVk7UUFDbEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUztRQUNqQyxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXO1FBQ3JDLFdBQVcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtRQUM3QyxVQUFVLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDbEUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYztRQUN6QyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsMkJBQTJCO1FBQ3JELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMscUJBQXFCO0tBQ3hELENBQUMsQ0FDSCxDQUFBO0lBRUQsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUNyQixLQUFLLFdBQVcsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFTLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxPQUFPO1lBQzVDLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFBO1lBQzlDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtZQUV2RSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE1BQU0sVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUE7YUFDakQ7WUFDRCxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixNQUFNLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO2FBQ2xEO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDckIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQzFCLENBQUMsRUFDRCxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQzdCLENBQUE7SUFFRCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQ3JCLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNWLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDcEIsQ0FBQyxFQUNELEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FDN0IsQ0FBQTtBQUNILENBQUM7QUFFRCxlQUFlLGdCQUFnQixDQUFBIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3RzLWV2ZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvYXJ0aWZhY3RzLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBSXhCO0lBQ0YsTUFBTSxFQUFFLE1BQU07SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDMUIsQ0FBQztDQUNGLENBQUEifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFydGlmYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL3JvdXRlcy9nZXQtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFNakQsT0FBTyxFQUdMLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQTtBQUVwQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBUXBCO0lBQ0YsTUFBTSxFQUFFLEtBQUs7SUFDYixlQUFlLEVBQUUsS0FBSztJQUN0QixHQUFHLEVBQUUsZ0JBQWdCO0lBQ3JCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUN0QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtRQUNoQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUNqRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxVQUFVLENBQUMsa0RBQWtELENBQUMsQ0FBQTtTQUNyRTtRQUVELElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hFLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDLENBQUE7WUFDeEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQzVCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixNQUFNLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUMxQztJQUNILENBQUM7Q0FDRixDQUFBIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvZ2V0LXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRWpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFPbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHdEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzVCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ2xFLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBUWxCO0lBQ0YsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsbUJBQW1CO0lBQ3hCLE1BQU0sRUFBRSxpQkFBaUI7SUFDekIsUUFBUSxFQUFFLE9BQU87SUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsTUFBTSxFQUFFLFNBQVM7WUFDakIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRixDQUFBIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbHVnaW5zL3JlbW90ZS1jYWNoZS9yb3V0ZXMvaGVhZC1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU1qRCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFBO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FRckI7SUFDRixNQUFNLEVBQUUsTUFBTTtJQUNkLEdBQUcsRUFBRSxnQkFBZ0I7SUFDckIsTUFBTSxFQUFFLG9CQUFvQjtJQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLFVBQVUsQ0FBQyxrREFBa0QsQ0FBQyxDQUFBO1NBQ3JFO1FBRUQsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FDdkQsVUFBVSxFQUNWLElBQUksQ0FDTCxDQUFBO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUNyQjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FDMUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQSJ9
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHV0LWFydGlmYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL3JvdXRlcy9wdXQtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBTTNELE9BQU8sRUFHTCxvQkFBb0IsR0FDckIsTUFBTSxhQUFhLENBQUE7QUFFcEIsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQVNwQjtJQUNGLEdBQUcsRUFBRSxnQkFBZ0I7SUFDckIsTUFBTSxFQUFFLEtBQUs7SUFDYixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUs7UUFDdEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDaEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDakUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sVUFBVSxDQUFDLGtEQUFrRCxDQUFDLENBQUE7U0FDckU7UUFFRCxJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUN0QyxVQUFVLEVBQ1YsSUFBSSxFQUNKLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN4QixDQUFBO1lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2hEO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFFWixNQUFNLGtCQUFrQixDQUFDLG9DQUFvQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ3BFO0lBQ0gsQ0FBQztDQUNGLENBQUEifQ==
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.2.12",
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.7.0",
93
+ "tsx": "^4.19.2",
90
94
  "typescript": "^5.2.2"
91
95
  },
92
96
  "bugs": {