@contember/engine-vimeo-plugin 2.1.0-alpha.36 → 2.1.0-alpha.39
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/development/index.cjs +25 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +26 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/src/Config.cjs +25 -0
- package/dist/development/src/Config.cjs.map +1 -0
- package/dist/development/src/Config.js +8 -0
- package/dist/development/src/Config.js.map +1 -0
- package/dist/development/src/VimeoConfigProcessor.cjs +44 -0
- package/dist/development/src/VimeoConfigProcessor.cjs.map +1 -0
- package/dist/development/src/VimeoConfigProcessor.js +27 -0
- package/dist/development/src/VimeoConfigProcessor.js.map +1 -0
- package/dist/development/src/VimeoSchemaContributor.cjs +90 -0
- package/dist/development/src/VimeoSchemaContributor.cjs.map +1 -0
- package/dist/development/src/VimeoSchemaContributor.js +90 -0
- package/dist/development/src/VimeoSchemaContributor.js.map +1 -0
- package/dist/development/src/VimeoService.cjs +50 -0
- package/dist/development/src/VimeoService.cjs.map +1 -0
- package/dist/development/src/VimeoService.js +50 -0
- package/dist/development/src/VimeoService.js.map +1 -0
- package/dist/production/index.cjs +25 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +26 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/src/Config.cjs +25 -0
- package/dist/production/src/Config.cjs.map +1 -0
- package/dist/production/src/Config.js +8 -0
- package/dist/production/src/Config.js.map +1 -0
- package/dist/production/src/VimeoConfigProcessor.cjs +44 -0
- package/dist/production/src/VimeoConfigProcessor.cjs.map +1 -0
- package/dist/production/src/VimeoConfigProcessor.js +27 -0
- package/dist/production/src/VimeoConfigProcessor.js.map +1 -0
- package/dist/production/src/VimeoSchemaContributor.cjs +90 -0
- package/dist/production/src/VimeoSchemaContributor.cjs.map +1 -0
- package/dist/production/src/VimeoSchemaContributor.js +90 -0
- package/dist/production/src/VimeoSchemaContributor.js.map +1 -0
- package/dist/production/src/VimeoService.cjs +50 -0
- package/dist/production/src/VimeoService.cjs.map +1 -0
- package/dist/production/src/VimeoService.js +50 -0
- package/dist/production/src/VimeoService.js.map +1 -0
- package/dist/types/Config.d.ts +9 -0
- package/dist/types/Config.d.ts.map +1 -0
- package/dist/types/VimeoConfigProcessor.d.ts +8 -0
- package/dist/types/VimeoConfigProcessor.d.ts.map +1 -0
- package/dist/types/VimeoSchemaContributor.d.ts +11 -0
- package/dist/types/VimeoSchemaContributor.d.ts.map +1 -0
- package/dist/types/VimeoService.d.ts +21 -0
- package/dist/types/VimeoService.d.ts.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const Typesafe = require("@contember/typesafe");
|
|
4
|
+
const Config = require("./Config.cjs");
|
|
5
|
+
function _interopNamespaceDefault(e) {
|
|
6
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
+
if (e) {
|
|
8
|
+
for (const k in e) {
|
|
9
|
+
if (k !== "default") {
|
|
10
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: () => e[k]
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
n.default = e;
|
|
19
|
+
return Object.freeze(n);
|
|
20
|
+
}
|
|
21
|
+
const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
|
|
22
|
+
class VimeoConfigProcessor {
|
|
23
|
+
getProjectConfigSchema(slug) {
|
|
24
|
+
return Typesafe__namespace.union(
|
|
25
|
+
(input, path = []) => Typesafe__namespace.valueAt(input, ["vimeo", "token"]) === void 0 ? {} : Typesafe__namespace.fail(path),
|
|
26
|
+
Typesafe__namespace.object({
|
|
27
|
+
vimeo: Config.vimeoConfigSchema
|
|
28
|
+
})
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
prepareConfigTemplate(template, { env }) {
|
|
32
|
+
return {
|
|
33
|
+
...template,
|
|
34
|
+
projectDefaults: {
|
|
35
|
+
...template.projectDefaults,
|
|
36
|
+
vimeo: {
|
|
37
|
+
token: `%?project.secret.vimeo.token||project.env.VIMEO_TOKEN%`
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.VimeoConfigProcessor = VimeoConfigProcessor;
|
|
44
|
+
//# sourceMappingURL=VimeoConfigProcessor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoConfigProcessor.cjs","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoConfigProcessor.ts"],"sourcesContent":["import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins'\nimport * as Typesafe from '@contember/typesafe'\nimport { ProjectVimeoConfig, vimeoConfigSchema } from './Config'\n\nexport class VimeoConfigProcessor implements ConfigProcessor<ProjectVimeoConfig> {\n\tgetProjectConfigSchema?(slug: string): Typesafe.Type<ProjectVimeoConfig> {\n\t\treturn Typesafe.union(\n\t\t\t(input, path = []) => Typesafe.valueAt(input, ['vimeo', 'token']) === undefined ? {} : Typesafe.fail(path),\n\t\t\tTypesafe.object({\n\t\t\t\tvimeo: vimeoConfigSchema,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext) {\n\t\treturn {\n\t\t\t...template,\n\t\t\tprojectDefaults: {\n\t\t\t\t...template.projectDefaults,\n\t\t\t\tvimeo: {\n\t\t\t\t\ttoken: `%?project.secret.vimeo.token||project.env.VIMEO_TOKEN%`,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["Typesafe","vimeoConfigSchema"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,qBAAoE;AAAA,EAChF,uBAAwB,MAAiD;AACxE,WAAOA,oBAAS;AAAA,MACf,CAAC,OAAO,OAAO,CAAA,MAAOA,oBAAS,QAAQ,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,SAAY,CAAA,IAAKA,oBAAS,KAAK,IAAI;AAAA,MACzGA,oBAAS,OAAO;AAAA,QACf,OAAOC,OAAAA;AAAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEH;AAAA,EAEA,sBAAsB,UAA0B,EAAE,OAA8B;AAC/E,WAAO;AAAA,MACN,GAAG;AAAA,MACH,iBAAiB;AAAA,QAChB,GAAG,SAAS;AAAA,QACZ,OAAO;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAAA,EAEF;AACD;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as Typesafe from "@contember/typesafe";
|
|
2
|
+
import { vimeoConfigSchema } from "./Config.js";
|
|
3
|
+
class VimeoConfigProcessor {
|
|
4
|
+
getProjectConfigSchema(slug) {
|
|
5
|
+
return Typesafe.union(
|
|
6
|
+
(input, path = []) => Typesafe.valueAt(input, ["vimeo", "token"]) === void 0 ? {} : Typesafe.fail(path),
|
|
7
|
+
Typesafe.object({
|
|
8
|
+
vimeo: vimeoConfigSchema
|
|
9
|
+
})
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
prepareConfigTemplate(template, { env }) {
|
|
13
|
+
return {
|
|
14
|
+
...template,
|
|
15
|
+
projectDefaults: {
|
|
16
|
+
...template.projectDefaults,
|
|
17
|
+
vimeo: {
|
|
18
|
+
token: `%?project.secret.vimeo.token||project.env.VIMEO_TOKEN%`
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
VimeoConfigProcessor
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=VimeoConfigProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoConfigProcessor.js","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoConfigProcessor.ts"],"sourcesContent":["import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins'\nimport * as Typesafe from '@contember/typesafe'\nimport { ProjectVimeoConfig, vimeoConfigSchema } from './Config'\n\nexport class VimeoConfigProcessor implements ConfigProcessor<ProjectVimeoConfig> {\n\tgetProjectConfigSchema?(slug: string): Typesafe.Type<ProjectVimeoConfig> {\n\t\treturn Typesafe.union(\n\t\t\t(input, path = []) => Typesafe.valueAt(input, ['vimeo', 'token']) === undefined ? {} : Typesafe.fail(path),\n\t\t\tTypesafe.object({\n\t\t\t\tvimeo: vimeoConfigSchema,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext) {\n\t\treturn {\n\t\t\t...template,\n\t\t\tprojectDefaults: {\n\t\t\t\t...template.projectDefaults,\n\t\t\t\tvimeo: {\n\t\t\t\t\ttoken: `%?project.secret.vimeo.token||project.env.VIMEO_TOKEN%`,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,qBAAoE;AAAA,EAChF,uBAAwB,MAAiD;AACxE,WAAO,SAAS;AAAA,MACf,CAAC,OAAO,OAAO,CAAA,MAAO,SAAS,QAAQ,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,SAAY,CAAA,IAAK,SAAS,KAAK,IAAI;AAAA,MACzG,SAAS,OAAO;AAAA,QACf,OAAO;AAAA,MAAA,CACP;AAAA,IAAA;AAAA,EAEH;AAAA,EAEA,sBAAsB,UAA0B,EAAE,OAA8B;AAC/E,WAAO;AAAA,MACN,GAAG;AAAA,MACH,iBAAiB;AAAA,QAChB,GAAG,SAAS;AAAA,QACZ,OAAO;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,IACD;AAAA,EAEF;AACD;"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const graphql = require("graphql");
|
|
4
|
+
class VimeoSchemaContributor {
|
|
5
|
+
constructor(vimeoServiceFactory) {
|
|
6
|
+
this.vimeoServiceFactory = vimeoServiceFactory;
|
|
7
|
+
}
|
|
8
|
+
getCacheKey(context) {
|
|
9
|
+
return context.project.vimeo ? "yes" : "no";
|
|
10
|
+
}
|
|
11
|
+
createSchema(context) {
|
|
12
|
+
if (!context.project.vimeo) {
|
|
13
|
+
return void 0;
|
|
14
|
+
}
|
|
15
|
+
if (!context.identity.projectRoles.find(
|
|
16
|
+
(role) => context.schema.acl.roles[role]?.vimeo?.upload
|
|
17
|
+
)) {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
const uploadMutation = this.createMutation();
|
|
21
|
+
const mutation = {
|
|
22
|
+
generateVimeoUploadUrl: uploadMutation
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
mutation: new graphql.GraphQLObjectType({
|
|
26
|
+
name: "Mutation",
|
|
27
|
+
fields: () => mutation
|
|
28
|
+
}),
|
|
29
|
+
query: new graphql.GraphQLObjectType({
|
|
30
|
+
name: "Query",
|
|
31
|
+
fields: () => ({
|
|
32
|
+
vimeoDummyQuery: {
|
|
33
|
+
type: graphql.GraphQLString
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
createMutation() {
|
|
40
|
+
return {
|
|
41
|
+
type: new graphql.GraphQLNonNull(
|
|
42
|
+
new graphql.GraphQLObjectType({
|
|
43
|
+
name: "VimeoUploadResponse",
|
|
44
|
+
fields: {
|
|
45
|
+
ok: { type: new graphql.GraphQLNonNull(graphql.GraphQLBoolean) },
|
|
46
|
+
errors: {
|
|
47
|
+
type: new graphql.GraphQLNonNull(
|
|
48
|
+
new graphql.GraphQLList(
|
|
49
|
+
new graphql.GraphQLNonNull(
|
|
50
|
+
new graphql.GraphQLObjectType({
|
|
51
|
+
name: "VimeoUploadError",
|
|
52
|
+
fields: {
|
|
53
|
+
endUserMessage: { type: graphql.GraphQLString },
|
|
54
|
+
developerMessage: { type: graphql.GraphQLString },
|
|
55
|
+
code: { type: graphql.GraphQLInt }
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
)
|
|
59
|
+
)
|
|
60
|
+
)
|
|
61
|
+
},
|
|
62
|
+
result: {
|
|
63
|
+
type: new graphql.GraphQLObjectType({
|
|
64
|
+
name: "VimeoUploadResult",
|
|
65
|
+
fields: {
|
|
66
|
+
uploadUrl: { type: new graphql.GraphQLNonNull(graphql.GraphQLString) },
|
|
67
|
+
vimeoId: { type: new graphql.GraphQLNonNull(graphql.GraphQLString) }
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
),
|
|
74
|
+
args: {
|
|
75
|
+
size: {
|
|
76
|
+
type: new graphql.GraphQLNonNull(graphql.GraphQLInt)
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
resolve: async (parent, args, ctx) => {
|
|
80
|
+
if (!ctx.project.vimeo) {
|
|
81
|
+
throw new graphql.GraphQLError("Vimeo is not configured for this project");
|
|
82
|
+
}
|
|
83
|
+
const vimeoService = this.vimeoServiceFactory.create(ctx.project.vimeo);
|
|
84
|
+
return await vimeoService.getUploadUrl(args.size);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.VimeoSchemaContributor = VimeoSchemaContributor;
|
|
90
|
+
//# sourceMappingURL=VimeoSchemaContributor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoSchemaContributor.cjs","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoSchemaContributor.ts"],"sourcesContent":["import {\n\tGraphQLBoolean,\n\tGraphQLError,\n\tGraphQLFieldConfig,\n\tGraphQLInt,\n\tGraphQLList,\n\tGraphQLNonNull,\n\tGraphQLObjectType,\n\tGraphQLSchemaConfig,\n\tGraphQLString,\n} from 'graphql'\nimport { VimeoServiceFactory } from './VimeoService'\nimport { ProjectVimeoConfig } from './Config'\nimport { GraphQLSchemaContributor, GraphQLSchemaContributorContext } from '@contember/engine-plugins'\n\ninterface VimeoAcl {\n\tupload?: boolean\n}\n\nexport class VimeoSchemaContributor implements GraphQLSchemaContributor {\n\tconstructor(\n\t\tprivate readonly vimeoServiceFactory: VimeoServiceFactory,\n\t) {}\n\n\tgetCacheKey?(context: GraphQLSchemaContributorContext): string {\n\t\treturn context.project.vimeo ? 'yes' : 'no'\n\t}\n\n\tcreateSchema(context: GraphQLSchemaContributorContext): GraphQLSchemaConfig | undefined {\n\t\tif (!context.project.vimeo) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (\n\t\t\t!context.identity.projectRoles.find(\n\t\t\t\trole => (context.schema.acl.roles[role]?.vimeo as VimeoAcl | undefined)?.upload,\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst uploadMutation = this.createMutation()\n\t\tconst mutation = {\n\t\t\tgenerateVimeoUploadUrl: uploadMutation as GraphQLFieldConfig<any, any, any>,\n\t\t}\n\t\treturn {\n\t\t\tmutation: new GraphQLObjectType({\n\t\t\t\tname: 'Mutation',\n\t\t\t\tfields: () => mutation,\n\t\t\t}),\n\t\t\tquery: new GraphQLObjectType({\n\t\t\t\tname: 'Query',\n\t\t\t\tfields: () => ({\n\t\t\t\t\tvimeoDummyQuery: {\n\t\t\t\t\t\ttype: GraphQLString,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t}),\n\t\t}\n\t}\n\n\tprivate createMutation(): GraphQLFieldConfig<any, any, any> {\n\t\treturn {\n\t\t\ttype: new GraphQLNonNull(\n\t\t\t\tnew GraphQLObjectType({\n\t\t\t\t\tname: 'VimeoUploadResponse',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tok: { type: new GraphQLNonNull(GraphQLBoolean) },\n\t\t\t\t\t\terrors: {\n\t\t\t\t\t\t\ttype: new GraphQLNonNull(\n\t\t\t\t\t\t\t\tnew GraphQLList(\n\t\t\t\t\t\t\t\t\tnew GraphQLNonNull(\n\t\t\t\t\t\t\t\t\t\tnew GraphQLObjectType({\n\t\t\t\t\t\t\t\t\t\t\tname: 'VimeoUploadError',\n\t\t\t\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\t\t\t\tendUserMessage: { type: GraphQLString },\n\t\t\t\t\t\t\t\t\t\t\t\tdeveloperMessage: { type: GraphQLString },\n\t\t\t\t\t\t\t\t\t\t\t\tcode: { type: GraphQLInt },\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\ttype: new GraphQLObjectType({\n\t\t\t\t\t\t\t\tname: 'VimeoUploadResult',\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tuploadUrl: { type: new GraphQLNonNull(GraphQLString) },\n\t\t\t\t\t\t\t\t\tvimeoId: { type: new GraphQLNonNull(GraphQLString) },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\targs: {\n\t\t\t\tsize: {\n\t\t\t\t\ttype: new GraphQLNonNull(GraphQLInt),\n\t\t\t\t},\n\t\t\t},\n\t\t\tresolve: async (parent: any, args: { size: number }, ctx: { project: ProjectVimeoConfig }) => {\n\t\t\t\tif (!ctx.project.vimeo) {\n\t\t\t\t\tthrow new GraphQLError('Vimeo is not configured for this project')\n\t\t\t\t}\n\t\t\t\tconst vimeoService = this.vimeoServiceFactory.create(ctx.project.vimeo)\n\t\t\t\treturn await vimeoService.getUploadUrl(args.size)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["GraphQLObjectType","GraphQLString","GraphQLNonNull","GraphQLBoolean","GraphQLList","GraphQLInt","GraphQLError"],"mappings":";;;AAmBO,MAAM,uBAA2D;AAAA,EACvE,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAAA,EACf;AAAA,EAEH,YAAa,SAAkD;AAC9D,WAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,EACxC;AAAA,EAEA,aAAa,SAA2E;AACvF,QAAI,CAAC,QAAQ,QAAQ,OAAO;AAC3B,aAAO;AAAA,IACR;AAEA,QACC,CAAC,QAAQ,SAAS,aAAa;AAAA,MAC9B,UAAS,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAgC;AAAA,IAAA,GAEzE;AACD,aAAO;AAAA,IACR;AAEA,UAAM,iBAAiB,KAAK,eAAA;AAC5B,UAAM,WAAW;AAAA,MAChB,wBAAwB;AAAA,IAAA;AAEzB,WAAO;AAAA,MACN,UAAU,IAAIA,QAAAA,kBAAkB;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,MAAA,CACd;AAAA,MACD,OAAO,IAAIA,QAAAA,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN,QAAQ,OAAO;AAAA,UACd,iBAAiB;AAAA,YAChB,MAAMC,QAAAA;AAAAA,UAAA;AAAA,QACP;AAAA,MACD,CACA;AAAA,IAAA;AAAA,EAEH;AAAA,EAEQ,iBAAoD;AAC3D,WAAO;AAAA,MACN,MAAM,IAAIC,QAAAA;AAAAA,QACT,IAAIF,0BAAkB;AAAA,UACrB,MAAM;AAAA,UACN,QAAQ;AAAA,YACP,IAAI,EAAE,MAAM,IAAIE,QAAAA,eAAeC,QAAAA,cAAc,EAAA;AAAA,YAC7C,QAAQ;AAAA,cACP,MAAM,IAAID,QAAAA;AAAAA,gBACT,IAAIE,QAAAA;AAAAA,kBACH,IAAIF,QAAAA;AAAAA,oBACH,IAAIF,0BAAkB;AAAA,sBACrB,MAAM;AAAA,sBACN,QAAQ;AAAA,wBACP,gBAAgB,EAAE,MAAMC,sBAAA;AAAA,wBACxB,kBAAkB,EAAE,MAAMA,sBAAA;AAAA,wBAC1B,MAAM,EAAE,MAAMI,QAAAA,WAAA;AAAA,sBAAW;AAAA,oBAC1B,CACA;AAAA,kBAAA;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,YAED,QAAQ;AAAA,cACP,MAAM,IAAIL,QAAAA,kBAAkB;AAAA,gBAC3B,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACP,WAAW,EAAE,MAAM,IAAIE,QAAAA,eAAeD,QAAAA,aAAa,EAAA;AAAA,kBACnD,SAAS,EAAE,MAAM,IAAIC,QAAAA,eAAeD,QAAAA,aAAa,EAAA;AAAA,gBAAE;AAAA,cACpD,CACA;AAAA,YAAA;AAAA,UACF;AAAA,QACD,CACA;AAAA,MAAA;AAAA,MAEF,MAAM;AAAA,QACL,MAAM;AAAA,UACL,MAAM,IAAIC,QAAAA,eAAeG,QAAAA,UAAU;AAAA,QAAA;AAAA,MACpC;AAAA,MAED,SAAS,OAAO,QAAa,MAAwB,QAAyC;AAC7F,YAAI,CAAC,IAAI,QAAQ,OAAO;AACvB,gBAAM,IAAIC,QAAAA,aAAa,0CAA0C;AAAA,QAClE;AACA,cAAM,eAAe,KAAK,oBAAoB,OAAO,IAAI,QAAQ,KAAK;AACtE,eAAO,MAAM,aAAa,aAAa,KAAK,IAAI;AAAA,MACjD;AAAA,IAAA;AAAA,EAEF;AACD;;"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLError, GraphQLInt, GraphQLList, GraphQLBoolean } from "graphql";
|
|
2
|
+
class VimeoSchemaContributor {
|
|
3
|
+
constructor(vimeoServiceFactory) {
|
|
4
|
+
this.vimeoServiceFactory = vimeoServiceFactory;
|
|
5
|
+
}
|
|
6
|
+
getCacheKey(context) {
|
|
7
|
+
return context.project.vimeo ? "yes" : "no";
|
|
8
|
+
}
|
|
9
|
+
createSchema(context) {
|
|
10
|
+
if (!context.project.vimeo) {
|
|
11
|
+
return void 0;
|
|
12
|
+
}
|
|
13
|
+
if (!context.identity.projectRoles.find(
|
|
14
|
+
(role) => context.schema.acl.roles[role]?.vimeo?.upload
|
|
15
|
+
)) {
|
|
16
|
+
return void 0;
|
|
17
|
+
}
|
|
18
|
+
const uploadMutation = this.createMutation();
|
|
19
|
+
const mutation = {
|
|
20
|
+
generateVimeoUploadUrl: uploadMutation
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
mutation: new GraphQLObjectType({
|
|
24
|
+
name: "Mutation",
|
|
25
|
+
fields: () => mutation
|
|
26
|
+
}),
|
|
27
|
+
query: new GraphQLObjectType({
|
|
28
|
+
name: "Query",
|
|
29
|
+
fields: () => ({
|
|
30
|
+
vimeoDummyQuery: {
|
|
31
|
+
type: GraphQLString
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
})
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
createMutation() {
|
|
38
|
+
return {
|
|
39
|
+
type: new GraphQLNonNull(
|
|
40
|
+
new GraphQLObjectType({
|
|
41
|
+
name: "VimeoUploadResponse",
|
|
42
|
+
fields: {
|
|
43
|
+
ok: { type: new GraphQLNonNull(GraphQLBoolean) },
|
|
44
|
+
errors: {
|
|
45
|
+
type: new GraphQLNonNull(
|
|
46
|
+
new GraphQLList(
|
|
47
|
+
new GraphQLNonNull(
|
|
48
|
+
new GraphQLObjectType({
|
|
49
|
+
name: "VimeoUploadError",
|
|
50
|
+
fields: {
|
|
51
|
+
endUserMessage: { type: GraphQLString },
|
|
52
|
+
developerMessage: { type: GraphQLString },
|
|
53
|
+
code: { type: GraphQLInt }
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
)
|
|
59
|
+
},
|
|
60
|
+
result: {
|
|
61
|
+
type: new GraphQLObjectType({
|
|
62
|
+
name: "VimeoUploadResult",
|
|
63
|
+
fields: {
|
|
64
|
+
uploadUrl: { type: new GraphQLNonNull(GraphQLString) },
|
|
65
|
+
vimeoId: { type: new GraphQLNonNull(GraphQLString) }
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
),
|
|
72
|
+
args: {
|
|
73
|
+
size: {
|
|
74
|
+
type: new GraphQLNonNull(GraphQLInt)
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
resolve: async (parent, args, ctx) => {
|
|
78
|
+
if (!ctx.project.vimeo) {
|
|
79
|
+
throw new GraphQLError("Vimeo is not configured for this project");
|
|
80
|
+
}
|
|
81
|
+
const vimeoService = this.vimeoServiceFactory.create(ctx.project.vimeo);
|
|
82
|
+
return await vimeoService.getUploadUrl(args.size);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export {
|
|
88
|
+
VimeoSchemaContributor
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=VimeoSchemaContributor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoSchemaContributor.js","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoSchemaContributor.ts"],"sourcesContent":["import {\n\tGraphQLBoolean,\n\tGraphQLError,\n\tGraphQLFieldConfig,\n\tGraphQLInt,\n\tGraphQLList,\n\tGraphQLNonNull,\n\tGraphQLObjectType,\n\tGraphQLSchemaConfig,\n\tGraphQLString,\n} from 'graphql'\nimport { VimeoServiceFactory } from './VimeoService'\nimport { ProjectVimeoConfig } from './Config'\nimport { GraphQLSchemaContributor, GraphQLSchemaContributorContext } from '@contember/engine-plugins'\n\ninterface VimeoAcl {\n\tupload?: boolean\n}\n\nexport class VimeoSchemaContributor implements GraphQLSchemaContributor {\n\tconstructor(\n\t\tprivate readonly vimeoServiceFactory: VimeoServiceFactory,\n\t) {}\n\n\tgetCacheKey?(context: GraphQLSchemaContributorContext): string {\n\t\treturn context.project.vimeo ? 'yes' : 'no'\n\t}\n\n\tcreateSchema(context: GraphQLSchemaContributorContext): GraphQLSchemaConfig | undefined {\n\t\tif (!context.project.vimeo) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (\n\t\t\t!context.identity.projectRoles.find(\n\t\t\t\trole => (context.schema.acl.roles[role]?.vimeo as VimeoAcl | undefined)?.upload,\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst uploadMutation = this.createMutation()\n\t\tconst mutation = {\n\t\t\tgenerateVimeoUploadUrl: uploadMutation as GraphQLFieldConfig<any, any, any>,\n\t\t}\n\t\treturn {\n\t\t\tmutation: new GraphQLObjectType({\n\t\t\t\tname: 'Mutation',\n\t\t\t\tfields: () => mutation,\n\t\t\t}),\n\t\t\tquery: new GraphQLObjectType({\n\t\t\t\tname: 'Query',\n\t\t\t\tfields: () => ({\n\t\t\t\t\tvimeoDummyQuery: {\n\t\t\t\t\t\ttype: GraphQLString,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t}),\n\t\t}\n\t}\n\n\tprivate createMutation(): GraphQLFieldConfig<any, any, any> {\n\t\treturn {\n\t\t\ttype: new GraphQLNonNull(\n\t\t\t\tnew GraphQLObjectType({\n\t\t\t\t\tname: 'VimeoUploadResponse',\n\t\t\t\t\tfields: {\n\t\t\t\t\t\tok: { type: new GraphQLNonNull(GraphQLBoolean) },\n\t\t\t\t\t\terrors: {\n\t\t\t\t\t\t\ttype: new GraphQLNonNull(\n\t\t\t\t\t\t\t\tnew GraphQLList(\n\t\t\t\t\t\t\t\t\tnew GraphQLNonNull(\n\t\t\t\t\t\t\t\t\t\tnew GraphQLObjectType({\n\t\t\t\t\t\t\t\t\t\t\tname: 'VimeoUploadError',\n\t\t\t\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\t\t\t\tendUserMessage: { type: GraphQLString },\n\t\t\t\t\t\t\t\t\t\t\t\tdeveloperMessage: { type: GraphQLString },\n\t\t\t\t\t\t\t\t\t\t\t\tcode: { type: GraphQLInt },\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\ttype: new GraphQLObjectType({\n\t\t\t\t\t\t\t\tname: 'VimeoUploadResult',\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tuploadUrl: { type: new GraphQLNonNull(GraphQLString) },\n\t\t\t\t\t\t\t\t\tvimeoId: { type: new GraphQLNonNull(GraphQLString) },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\targs: {\n\t\t\t\tsize: {\n\t\t\t\t\ttype: new GraphQLNonNull(GraphQLInt),\n\t\t\t\t},\n\t\t\t},\n\t\t\tresolve: async (parent: any, args: { size: number }, ctx: { project: ProjectVimeoConfig }) => {\n\t\t\t\tif (!ctx.project.vimeo) {\n\t\t\t\t\tthrow new GraphQLError('Vimeo is not configured for this project')\n\t\t\t\t}\n\t\t\t\tconst vimeoService = this.vimeoServiceFactory.create(ctx.project.vimeo)\n\t\t\t\treturn await vimeoService.getUploadUrl(args.size)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";AAmBO,MAAM,uBAA2D;AAAA,EACvE,YACkB,qBAChB;AADgB,SAAA,sBAAA;AAAA,EACf;AAAA,EAEH,YAAa,SAAkD;AAC9D,WAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,EACxC;AAAA,EAEA,aAAa,SAA2E;AACvF,QAAI,CAAC,QAAQ,QAAQ,OAAO;AAC3B,aAAO;AAAA,IACR;AAEA,QACC,CAAC,QAAQ,SAAS,aAAa;AAAA,MAC9B,UAAS,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAgC;AAAA,IAAA,GAEzE;AACD,aAAO;AAAA,IACR;AAEA,UAAM,iBAAiB,KAAK,eAAA;AAC5B,UAAM,WAAW;AAAA,MAChB,wBAAwB;AAAA,IAAA;AAEzB,WAAO;AAAA,MACN,UAAU,IAAI,kBAAkB;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ,MAAM;AAAA,MAAA,CACd;AAAA,MACD,OAAO,IAAI,kBAAkB;AAAA,QAC5B,MAAM;AAAA,QACN,QAAQ,OAAO;AAAA,UACd,iBAAiB;AAAA,YAChB,MAAM;AAAA,UAAA;AAAA,QACP;AAAA,MACD,CACA;AAAA,IAAA;AAAA,EAEH;AAAA,EAEQ,iBAAoD;AAC3D,WAAO;AAAA,MACN,MAAM,IAAI;AAAA,QACT,IAAI,kBAAkB;AAAA,UACrB,MAAM;AAAA,UACN,QAAQ;AAAA,YACP,IAAI,EAAE,MAAM,IAAI,eAAe,cAAc,EAAA;AAAA,YAC7C,QAAQ;AAAA,cACP,MAAM,IAAI;AAAA,gBACT,IAAI;AAAA,kBACH,IAAI;AAAA,oBACH,IAAI,kBAAkB;AAAA,sBACrB,MAAM;AAAA,sBACN,QAAQ;AAAA,wBACP,gBAAgB,EAAE,MAAM,cAAA;AAAA,wBACxB,kBAAkB,EAAE,MAAM,cAAA;AAAA,wBAC1B,MAAM,EAAE,MAAM,WAAA;AAAA,sBAAW;AAAA,oBAC1B,CACA;AAAA,kBAAA;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,YAED,QAAQ;AAAA,cACP,MAAM,IAAI,kBAAkB;AAAA,gBAC3B,MAAM;AAAA,gBACN,QAAQ;AAAA,kBACP,WAAW,EAAE,MAAM,IAAI,eAAe,aAAa,EAAA;AAAA,kBACnD,SAAS,EAAE,MAAM,IAAI,eAAe,aAAa,EAAA;AAAA,gBAAE;AAAA,cACpD,CACA;AAAA,YAAA;AAAA,UACF;AAAA,QACD,CACA;AAAA,MAAA;AAAA,MAEF,MAAM;AAAA,QACL,MAAM;AAAA,UACL,MAAM,IAAI,eAAe,UAAU;AAAA,QAAA;AAAA,MACpC;AAAA,MAED,SAAS,OAAO,QAAa,MAAwB,QAAyC;AAC7F,YAAI,CAAC,IAAI,QAAQ,OAAO;AACvB,gBAAM,IAAI,aAAa,0CAA0C;AAAA,QAClE;AACA,cAAM,eAAe,KAAK,oBAAoB,OAAO,IAAI,QAAQ,KAAK;AACtE,eAAO,MAAM,aAAa,aAAa,KAAK,IAAI;AAAA,MACjD;AAAA,IAAA;AAAA,EAEF;AACD;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
class VimeoService {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
}
|
|
7
|
+
async getUploadUrl(filesize) {
|
|
8
|
+
const authorizationHeader = "Bearer " + this.config.token;
|
|
9
|
+
const response = await fetch("https://api.vimeo.com/me/videos?fields=uri,name,upload", {
|
|
10
|
+
method: "POST",
|
|
11
|
+
headers: {
|
|
12
|
+
"Content-Type": "application/json",
|
|
13
|
+
"Authorization": authorizationHeader
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
upload: {
|
|
17
|
+
approach: "tus",
|
|
18
|
+
size: filesize
|
|
19
|
+
}
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
if (response.status !== 200) {
|
|
23
|
+
const { error_code, developer_message, error } = await response.json();
|
|
24
|
+
return {
|
|
25
|
+
ok: false,
|
|
26
|
+
errors: [
|
|
27
|
+
{
|
|
28
|
+
code: error_code,
|
|
29
|
+
developerMessage: developer_message,
|
|
30
|
+
endUserMessage: error
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const data = await response.json();
|
|
36
|
+
if (!data.uri.startsWith("/videos/")) {
|
|
37
|
+
throw new Error(`Invalid vimeo response with following URI: ${data.uri}`);
|
|
38
|
+
}
|
|
39
|
+
const vimeoId = data.uri.substring(8);
|
|
40
|
+
return { ok: true, errors: [], result: { uploadUrl: data.upload.upload_link, vimeoId } };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
class VimeoServiceFactory {
|
|
44
|
+
create(config) {
|
|
45
|
+
return new VimeoService(config);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.VimeoService = VimeoService;
|
|
49
|
+
exports.VimeoServiceFactory = VimeoServiceFactory;
|
|
50
|
+
//# sourceMappingURL=VimeoService.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoService.cjs","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoService.ts"],"sourcesContent":["import { VimeoConfig } from './Config'\n\nexport class VimeoService {\n\tconstructor(public readonly config: VimeoConfig) {}\n\n\tpublic async getUploadUrl(filesize: number): Promise<{\n\t\tok: boolean\n\t\terrors: { code: number; endUserMessage: string; developerMessage: string }[]\n\t\tresult?: { uploadUrl: string; vimeoId: string }\n\t}> {\n\t\tconst authorizationHeader = 'Bearer ' + this.config.token\n\n\t\tconst response = await fetch('https://api.vimeo.com/me/videos?fields=uri,name,upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Authorization': authorizationHeader,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tupload: {\n\t\t\t\t\tapproach: 'tus',\n\t\t\t\t\tsize: filesize,\n\t\t\t\t},\n\t\t\t}),\n\t\t})\n\t\tif (response.status !== 200) {\n\t\t\tconst { error_code, developer_message, error } = (await response.json()) as any\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terrors: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: error_code,\n\t\t\t\t\t\tdeveloperMessage: developer_message,\n\t\t\t\t\t\tendUserMessage: error,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t}\n\t\tconst data: any = await response.json()\n\t\tif (!data.uri.startsWith('/videos/')) {\n\t\t\tthrow new Error(`Invalid vimeo response with following URI: ${data.uri}`)\n\t\t}\n\t\tconst vimeoId = data.uri.substring(8)\n\t\treturn { ok: true, errors: [], result: { uploadUrl: data.upload.upload_link, vimeoId } }\n\t}\n}\n\nexport class VimeoServiceFactory {\n\tpublic create(config: VimeoConfig) {\n\t\treturn new VimeoService(config)\n\t}\n}\n"],"names":[],"mappings":";;AAEO,MAAM,aAAa;AAAA,EACzB,YAA4B,QAAqB;AAArB,SAAA,SAAA;AAAA,EAAsB;AAAA,EAElD,MAAa,aAAa,UAIvB;AACF,UAAM,sBAAsB,YAAY,KAAK,OAAO;AAEpD,UAAM,WAAW,MAAM,MAAM,0DAA0D;AAAA,MACtF,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MAAA;AAAA,MAElB,MAAM,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA,QAAA;AAAA,MACP,CACA;AAAA,IAAA,CACD;AACD,QAAI,SAAS,WAAW,KAAK;AAC5B,YAAM,EAAE,YAAY,mBAAmB,UAAW,MAAM,SAAS,KAAA;AACjE,aAAO;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,kBAAkB;AAAA,YAClB,gBAAgB;AAAA,UAAA;AAAA,QACjB;AAAA,MACD;AAAA,IAEF;AACA,UAAM,OAAY,MAAM,SAAS,KAAA;AACjC,QAAI,CAAC,KAAK,IAAI,WAAW,UAAU,GAAG;AACrC,YAAM,IAAI,MAAM,8CAA8C,KAAK,GAAG,EAAE;AAAA,IACzE;AACA,UAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AACpC,WAAO,EAAE,IAAI,MAAM,QAAQ,CAAA,GAAI,QAAQ,EAAE,WAAW,KAAK,OAAO,aAAa,UAAQ;AAAA,EACtF;AACD;AAEO,MAAM,oBAAoB;AAAA,EACzB,OAAO,QAAqB;AAClC,WAAO,IAAI,aAAa,MAAM;AAAA,EAC/B;AACD;;;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
class VimeoService {
|
|
2
|
+
constructor(config) {
|
|
3
|
+
this.config = config;
|
|
4
|
+
}
|
|
5
|
+
async getUploadUrl(filesize) {
|
|
6
|
+
const authorizationHeader = "Bearer " + this.config.token;
|
|
7
|
+
const response = await fetch("https://api.vimeo.com/me/videos?fields=uri,name,upload", {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"Content-Type": "application/json",
|
|
11
|
+
"Authorization": authorizationHeader
|
|
12
|
+
},
|
|
13
|
+
body: JSON.stringify({
|
|
14
|
+
upload: {
|
|
15
|
+
approach: "tus",
|
|
16
|
+
size: filesize
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
});
|
|
20
|
+
if (response.status !== 200) {
|
|
21
|
+
const { error_code, developer_message, error } = await response.json();
|
|
22
|
+
return {
|
|
23
|
+
ok: false,
|
|
24
|
+
errors: [
|
|
25
|
+
{
|
|
26
|
+
code: error_code,
|
|
27
|
+
developerMessage: developer_message,
|
|
28
|
+
endUserMessage: error
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
if (!data.uri.startsWith("/videos/")) {
|
|
35
|
+
throw new Error(`Invalid vimeo response with following URI: ${data.uri}`);
|
|
36
|
+
}
|
|
37
|
+
const vimeoId = data.uri.substring(8);
|
|
38
|
+
return { ok: true, errors: [], result: { uploadUrl: data.upload.upload_link, vimeoId } };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class VimeoServiceFactory {
|
|
42
|
+
create(config) {
|
|
43
|
+
return new VimeoService(config);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
VimeoService,
|
|
48
|
+
VimeoServiceFactory
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=VimeoService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoService.js","sources":["../../../../packages/engine-vimeo-plugin/src/VimeoService.ts"],"sourcesContent":["import { VimeoConfig } from './Config'\n\nexport class VimeoService {\n\tconstructor(public readonly config: VimeoConfig) {}\n\n\tpublic async getUploadUrl(filesize: number): Promise<{\n\t\tok: boolean\n\t\terrors: { code: number; endUserMessage: string; developerMessage: string }[]\n\t\tresult?: { uploadUrl: string; vimeoId: string }\n\t}> {\n\t\tconst authorizationHeader = 'Bearer ' + this.config.token\n\n\t\tconst response = await fetch('https://api.vimeo.com/me/videos?fields=uri,name,upload', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t'Authorization': authorizationHeader,\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tupload: {\n\t\t\t\t\tapproach: 'tus',\n\t\t\t\t\tsize: filesize,\n\t\t\t\t},\n\t\t\t}),\n\t\t})\n\t\tif (response.status !== 200) {\n\t\t\tconst { error_code, developer_message, error } = (await response.json()) as any\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\terrors: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: error_code,\n\t\t\t\t\t\tdeveloperMessage: developer_message,\n\t\t\t\t\t\tendUserMessage: error,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t}\n\t\tconst data: any = await response.json()\n\t\tif (!data.uri.startsWith('/videos/')) {\n\t\t\tthrow new Error(`Invalid vimeo response with following URI: ${data.uri}`)\n\t\t}\n\t\tconst vimeoId = data.uri.substring(8)\n\t\treturn { ok: true, errors: [], result: { uploadUrl: data.upload.upload_link, vimeoId } }\n\t}\n}\n\nexport class VimeoServiceFactory {\n\tpublic create(config: VimeoConfig) {\n\t\treturn new VimeoService(config)\n\t}\n}\n"],"names":[],"mappings":"AAEO,MAAM,aAAa;AAAA,EACzB,YAA4B,QAAqB;AAArB,SAAA,SAAA;AAAA,EAAsB;AAAA,EAElD,MAAa,aAAa,UAIvB;AACF,UAAM,sBAAsB,YAAY,KAAK,OAAO;AAEpD,UAAM,WAAW,MAAM,MAAM,0DAA0D;AAAA,MACtF,QAAQ;AAAA,MACR,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MAAA;AAAA,MAElB,MAAM,KAAK,UAAU;AAAA,QACpB,QAAQ;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA,QAAA;AAAA,MACP,CACA;AAAA,IAAA,CACD;AACD,QAAI,SAAS,WAAW,KAAK;AAC5B,YAAM,EAAE,YAAY,mBAAmB,UAAW,MAAM,SAAS,KAAA;AACjE,aAAO;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ;AAAA,UACP;AAAA,YACC,MAAM;AAAA,YACN,kBAAkB;AAAA,YAClB,gBAAgB;AAAA,UAAA;AAAA,QACjB;AAAA,MACD;AAAA,IAEF;AACA,UAAM,OAAY,MAAM,SAAS,KAAA;AACjC,QAAI,CAAC,KAAK,IAAI,WAAW,UAAU,GAAG;AACrC,YAAM,IAAI,MAAM,8CAA8C,KAAK,GAAG,EAAE;AAAA,IACzE;AACA,UAAM,UAAU,KAAK,IAAI,UAAU,CAAC;AACpC,WAAO,EAAE,IAAI,MAAM,QAAQ,CAAA,GAAI,QAAQ,EAAE,WAAW,KAAK,OAAO,aAAa,UAAQ;AAAA,EACtF;AACD;AAEO,MAAM,oBAAoB;AAAA,EACzB,OAAO,QAAqB;AAClC,WAAO,IAAI,aAAa,MAAM;AAAA,EAC/B;AACD;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Typesafe from '@contember/typesafe';
|
|
2
|
+
export declare const vimeoConfigSchema: Typesafe.Type<{
|
|
3
|
+
readonly token: string;
|
|
4
|
+
}>;
|
|
5
|
+
export type VimeoConfig = ReturnType<typeof vimeoConfigSchema>;
|
|
6
|
+
export type ProjectVimeoConfig = {
|
|
7
|
+
vimeo?: VimeoConfig | undefined;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,eAAO,MAAM,iBAAiB;;EAE5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins';
|
|
2
|
+
import * as Typesafe from '@contember/typesafe';
|
|
3
|
+
import { ProjectVimeoConfig } from './Config';
|
|
4
|
+
export declare class VimeoConfigProcessor implements ConfigProcessor<ProjectVimeoConfig> {
|
|
5
|
+
getProjectConfigSchema?(slug: string): Typesafe.Type<ProjectVimeoConfig>;
|
|
6
|
+
prepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext): any;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=VimeoConfigProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoConfigProcessor.d.ts","sourceRoot":"","sources":["../../src/VimeoConfigProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClG,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAqB,MAAM,UAAU,CAAA;AAEhE,qBAAa,oBAAqB,YAAW,eAAe,CAAC,kBAAkB,CAAC;IAC/E,sBAAsB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;IASxE,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE,qBAAqB;CAW9E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GraphQLSchemaConfig } from 'graphql';
|
|
2
|
+
import { VimeoServiceFactory } from './VimeoService';
|
|
3
|
+
import { GraphQLSchemaContributor, GraphQLSchemaContributorContext } from '@contember/engine-plugins';
|
|
4
|
+
export declare class VimeoSchemaContributor implements GraphQLSchemaContributor {
|
|
5
|
+
private readonly vimeoServiceFactory;
|
|
6
|
+
constructor(vimeoServiceFactory: VimeoServiceFactory);
|
|
7
|
+
getCacheKey?(context: GraphQLSchemaContributorContext): string;
|
|
8
|
+
createSchema(context: GraphQLSchemaContributorContext): GraphQLSchemaConfig | undefined;
|
|
9
|
+
private createMutation;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=VimeoSchemaContributor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoSchemaContributor.d.ts","sourceRoot":"","sources":["../../src/VimeoSchemaContributor.ts"],"names":[],"mappings":"AAAA,OAAO,EAQN,mBAAmB,EAEnB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAMrG,qBAAa,sBAAuB,YAAW,wBAAwB;IAErE,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,mBAAmB;IAG1D,WAAW,CAAC,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM;IAI9D,YAAY,CAAC,OAAO,EAAE,+BAA+B,GAAG,mBAAmB,GAAG,SAAS;IAiCvF,OAAO,CAAC,cAAc;CAiDtB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { VimeoConfig } from './Config';
|
|
2
|
+
export declare class VimeoService {
|
|
3
|
+
readonly config: VimeoConfig;
|
|
4
|
+
constructor(config: VimeoConfig);
|
|
5
|
+
getUploadUrl(filesize: number): Promise<{
|
|
6
|
+
ok: boolean;
|
|
7
|
+
errors: {
|
|
8
|
+
code: number;
|
|
9
|
+
endUserMessage: string;
|
|
10
|
+
developerMessage: string;
|
|
11
|
+
}[];
|
|
12
|
+
result?: {
|
|
13
|
+
uploadUrl: string;
|
|
14
|
+
vimeoId: string;
|
|
15
|
+
};
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare class VimeoServiceFactory {
|
|
19
|
+
create(config: VimeoConfig): VimeoService;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=VimeoService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoService.d.ts","sourceRoot":"","sources":["../../src/VimeoService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,qBAAa,YAAY;aACI,MAAM,EAAE,WAAW;gBAAnB,MAAM,EAAE,WAAW;IAElC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QACpD,EAAE,EAAE,OAAO,CAAA;QACX,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;QAC5E,MAAM,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAC/C,CAAC;CAoCF;AAED,qBAAa,mBAAmB;IACxB,MAAM,CAAC,MAAM,EAAE,WAAW;CAGjC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Plugin } from '@contember/engine-plugins';
|
|
2
|
+
import { VimeoConfigProcessor } from './VimeoConfigProcessor';
|
|
3
|
+
import { VimeoSchemaContributor } from './VimeoSchemaContributor';
|
|
4
|
+
import { ProjectVimeoConfig } from './Config';
|
|
5
|
+
export * from './VimeoSchemaContributor';
|
|
6
|
+
export * from './VimeoService';
|
|
7
|
+
export default class VimeoPlugin implements Plugin<ProjectVimeoConfig> {
|
|
8
|
+
name: string;
|
|
9
|
+
getConfigProcessor(): VimeoConfigProcessor;
|
|
10
|
+
getSchemaContributor(): VimeoSchemaContributor;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAyB,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAE9B,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,MAAM,CAAC,kBAAkB,CAAC;IACrE,IAAI,SAAoB;IAExB,kBAAkB;IAIlB,oBAAoB;CAIpB"}
|