@stemy/backend 2.6.1 → 2.7.3

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.
Files changed (117) hide show
  1. package/README.md +2 -2
  2. package/bundles/stemy-backend.umd.js +5553 -5465
  3. package/bundles/stemy-backend.umd.js.map +1 -1
  4. package/bundles/stemy-backend.umd.min.js +1 -1
  5. package/bundles/stemy-backend.umd.min.js.map +1 -1
  6. package/common-types.d.ts +226 -214
  7. package/esm2015/common-types.js +18 -18
  8. package/esm2015/public_api.js +338 -338
  9. package/esm2015/rest-controllers/assets.controller.js +116 -116
  10. package/esm2015/rest-controllers/auth.controller.js +75 -75
  11. package/esm2015/rest-controllers/gallery.controller.js +37 -37
  12. package/esm2015/rest-controllers/progresses.controller.js +57 -57
  13. package/esm2015/rest-middlewares/container.middleware.js +32 -32
  14. package/esm2015/rest-middlewares/error-handler.middleware.js +83 -83
  15. package/esm2015/rest-middlewares/language.middleware.js +28 -28
  16. package/esm2015/rest-middlewares/request-ended.middleware.js +25 -25
  17. package/esm2015/rest-middlewares/request-started.middleware.js +24 -24
  18. package/esm2015/rest-openapi.js +44 -44
  19. package/esm2015/services/asset-processor.js +101 -101
  20. package/esm2015/services/asset-resolver.js +53 -53
  21. package/esm2015/services/assets.js +110 -110
  22. package/esm2015/services/backend-provider.js +32 -32
  23. package/esm2015/services/cache-processor.js +34 -34
  24. package/esm2015/services/cache.js +94 -94
  25. package/esm2015/services/configuration.js +55 -55
  26. package/esm2015/services/endpoint-provider.js +29 -29
  27. package/esm2015/services/entities/asset.js +166 -112
  28. package/esm2015/services/entities/lazy-asset.js +93 -93
  29. package/esm2015/services/entities/progress.js +181 -181
  30. package/esm2015/services/fixtures.js +45 -45
  31. package/esm2015/services/gallery-cache.js +36 -36
  32. package/esm2015/services/gallery-image.js +48 -48
  33. package/esm2015/services/gallery.js +138 -138
  34. package/esm2015/services/id-generator.js +63 -63
  35. package/esm2015/services/job-manager.js +203 -203
  36. package/esm2015/services/lazy-assets.js +74 -74
  37. package/esm2015/services/mail-sender.js +59 -59
  38. package/esm2015/services/memory-cache.js +84 -84
  39. package/esm2015/services/mongo-connector.js +61 -61
  40. package/esm2015/services/progresses.js +91 -91
  41. package/esm2015/services/template-renderer.js +89 -89
  42. package/esm2015/services/translation-provider.js +31 -31
  43. package/esm2015/services/translator.js +85 -85
  44. package/esm2015/services/user-manager.js +47 -47
  45. package/esm2015/socket-controllers/progress.controller.js +82 -82
  46. package/esm2015/socket-middlewares/compression.middleware.js +19 -19
  47. package/esm2015/static.js +33 -33
  48. package/esm2015/stemy-backend.js +4 -4
  49. package/esm2015/utilities/di-container.js +84 -84
  50. package/esm2015/utilities/lazy-asset-generator.js +40 -40
  51. package/esm2015/utilities/tree.js +111 -111
  52. package/esm2015/utils.js +618 -601
  53. package/esm2015/validators.js +51 -51
  54. package/fesm2015/stemy-backend.js +3656 -3585
  55. package/fesm2015/stemy-backend.js.map +1 -1
  56. package/package.json +1 -1
  57. package/public_api.d.ts +33 -33
  58. package/rest-controllers/assets.controller.d.ts +16 -16
  59. package/rest-controllers/auth.controller.d.ts +14 -14
  60. package/rest-controllers/gallery.controller.d.ts +7 -7
  61. package/rest-controllers/progresses.controller.d.ts +9 -9
  62. package/rest-middlewares/container.middleware.d.ts +8 -8
  63. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  64. package/rest-middlewares/language.middleware.d.ts +8 -8
  65. package/rest-middlewares/request-ended.middleware.d.ts +5 -5
  66. package/rest-middlewares/request-started.middleware.d.ts +5 -5
  67. package/rest-openapi.d.ts +3 -3
  68. package/services/asset-processor.d.ts +12 -12
  69. package/services/asset-resolver.d.ts +9 -9
  70. package/services/assets.d.ts +19 -19
  71. package/services/backend-provider.d.ts +11 -11
  72. package/services/cache-processor.d.ts +4 -4
  73. package/services/cache.d.ts +23 -23
  74. package/services/configuration.d.ts +10 -10
  75. package/services/endpoint-provider.d.ts +4 -4
  76. package/services/entities/asset.d.ts +25 -23
  77. package/services/entities/lazy-asset.d.ts +29 -29
  78. package/services/entities/progress.d.ts +49 -49
  79. package/services/fixtures.d.ts +6 -6
  80. package/services/gallery-cache.d.ts +9 -9
  81. package/services/gallery-image.d.ts +11 -11
  82. package/services/gallery.d.ts +13 -13
  83. package/services/id-generator.d.ts +11 -11
  84. package/services/job-manager.d.ts +27 -27
  85. package/services/lazy-assets.d.ts +19 -19
  86. package/services/mail-sender.d.ts +20 -20
  87. package/services/memory-cache.d.ts +10 -10
  88. package/services/mongo-connector.d.ts +14 -14
  89. package/services/progresses.d.ts +18 -18
  90. package/services/template-renderer.d.ts +14 -14
  91. package/services/translation-provider.d.ts +10 -10
  92. package/services/translator.d.ts +15 -15
  93. package/services/user-manager.d.ts +6 -6
  94. package/socket-controllers/progress.controller.d.ts +10 -10
  95. package/socket-middlewares/compression.middleware.d.ts +4 -4
  96. package/static.d.ts +2 -2
  97. package/stemy-backend.d.ts +4 -4
  98. package/stemy-backend.metadata.json +1 -1
  99. package/utilities/di-container.d.ts +43 -43
  100. package/utilities/lazy-asset-generator.d.ts +15 -15
  101. package/utilities/tree.d.ts +14 -14
  102. package/utils.d.ts +76 -73
  103. package/validators.d.ts +7 -7
  104. package/di-container.d.ts +0 -40
  105. package/esm2015/di-container.js +0 -75
  106. package/esm2015/models/lazy-asset.js +0 -12
  107. package/esm2015/models/progress.js +0 -23
  108. package/esm2015/rest-middlewares/injector.middleware.js +0 -26
  109. package/esm2015/services/lazy-asset-helper.js +0 -74
  110. package/esm2015/services/logger.js +0 -14
  111. package/esm2015/services/progress-helper.js +0 -168
  112. package/models/lazy-asset.d.ts +0 -45
  113. package/models/progress.d.ts +0 -56
  114. package/rest-middlewares/injector.middleware.d.ts +0 -8
  115. package/services/lazy-asset-helper.d.ts +0 -15
  116. package/services/logger.d.ts +0 -2
  117. package/services/progress-helper.d.ts +0 -37
@@ -1,44 +1,44 @@
1
- import { getMetadataArgsStorage } from "routing-controllers";
2
- import { routingControllersToSpec } from "routing-controllers-openapi";
3
- import { defaultMetadataStorage } from "class-transformer/storage";
4
- import { ValidationTypes } from "class-validator";
5
- import { validationMetadatasToSchemas } from "class-validator-jsonschema";
6
- import { isFunction } from "./utils";
7
- import { IsFile, IsObjectId } from "./validators";
8
- let apiDocs = null;
9
- export function getApiDocs(customValidation) {
10
- if (apiDocs)
11
- return apiDocs;
12
- const storage = getMetadataArgsStorage();
13
- const spec = routingControllersToSpec(storage);
14
- spec.basePath = "/api/";
15
- spec.definitions = validationMetadatasToSchemas({
16
- classTransformerMetadataStorage: defaultMetadataStorage,
17
- additionalConverters: {
18
- [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {
19
- const res = isFunction(customValidation) ? customValidation(meta, options) : customValidation;
20
- if (!!res)
21
- return res;
22
- const constraints = meta.constraints || [];
23
- if (meta.constraintCls === IsFile) {
24
- return {
25
- multi: constraints[0] || false,
26
- type: "file"
27
- };
28
- }
29
- if (meta.constraintCls === IsObjectId) {
30
- return {
31
- endpoint: constraints[0] || false,
32
- multi: constraints[1] || false,
33
- type: "list"
34
- };
35
- }
36
- return null;
37
- }
38
- }
39
- });
40
- spec.components.schemas = spec.definitions;
41
- apiDocs = JSON.stringify(spec);
42
- return apiDocs;
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1vcGVuYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jlc3Qtb3BlbmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFDL0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sNEJBQTRCLENBQUE7QUFFdkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVoRCxJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUM7QUFFM0IsTUFBTSxVQUFVLFVBQVUsQ0FBQyxnQkFBZ0Q7SUFDdkUsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDNUIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBa0Isd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztRQUM1QywrQkFBK0IsRUFBRSxzQkFBc0I7UUFDdkQsb0JBQW9CLEVBQUU7WUFDbEIsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzlGLElBQUksQ0FBQyxDQUFDLEdBQUc7b0JBQUUsT0FBTyxHQUFHLENBQUM7Z0JBQ3RCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFO29CQUMvQixPQUFPO3dCQUNILEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDOUIsSUFBSSxFQUFFLE1BQU07cUJBQ2YsQ0FBQTtpQkFDSjtnQkFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFO29CQUNuQyxPQUFPO3dCQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDakMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO3dCQUM5QixJQUFJLEVBQUUsTUFBTTtxQkFDZixDQUFBO2lCQUNKO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7U0FDSjtLQUNKLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDM0MsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2V0TWV0YWRhdGFBcmdzU3RvcmFnZX0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcbmltcG9ydCB7cm91dGluZ0NvbnRyb2xsZXJzVG9TcGVjfSBmcm9tIFwicm91dGluZy1jb250cm9sbGVycy1vcGVuYXBpXCI7XG5pbXBvcnQge09wZW5BUElPYmplY3QsIFNjaGVtYU9iamVjdH0gZnJvbSBcIm9wZW5hcGkzLXRzXCI7XG5pbXBvcnQge2RlZmF1bHRNZXRhZGF0YVN0b3JhZ2V9IGZyb20gXCJjbGFzcy10cmFuc2Zvcm1lci9zdG9yYWdlXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25UeXBlc30gZnJvbSBcImNsYXNzLXZhbGlkYXRvclwiXG5pbXBvcnQge3ZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXN9IGZyb20gXCJjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYVwiXG5pbXBvcnQge1NjaGVtYUNvbnZlcnRlcn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge2lzRnVuY3Rpb259IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge0lzRmlsZSwgSXNPYmplY3RJZH0gZnJvbSBcIi4vdmFsaWRhdG9yc1wiO1xuXG5sZXQgYXBpRG9jczogc3RyaW5nID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwaURvY3MoY3VzdG9tVmFsaWRhdGlvbjogU2NoZW1hQ29udmVydGVyIHwgU2NoZW1hT2JqZWN0KTogc3RyaW5nIHtcbiAgICBpZiAoYXBpRG9jcykgcmV0dXJuIGFwaURvY3M7XG4gICAgY29uc3Qgc3RvcmFnZSA9IGdldE1ldGFkYXRhQXJnc1N0b3JhZ2UoKTtcbiAgICBjb25zdCBzcGVjOiBPcGVuQVBJT2JqZWN0ID0gcm91dGluZ0NvbnRyb2xsZXJzVG9TcGVjKHN0b3JhZ2UpO1xuICAgIHNwZWMuYmFzZVBhdGggPSBcIi9hcGkvXCI7XG4gICAgc3BlYy5kZWZpbml0aW9ucyA9IHZhbGlkYXRpb25NZXRhZGF0YXNUb1NjaGVtYXMoe1xuICAgICAgICBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlOiBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlLFxuICAgICAgICBhZGRpdGlvbmFsQ29udmVydGVyczoge1xuICAgICAgICAgICAgW1ZhbGlkYXRpb25UeXBlcy5DVVNUT01fVkFMSURBVElPTl06IChtZXRhLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gaXNGdW5jdGlvbihjdXN0b21WYWxpZGF0aW9uKSA/IGN1c3RvbVZhbGlkYXRpb24obWV0YSwgb3B0aW9ucykgOiBjdXN0b21WYWxpZGF0aW9uO1xuICAgICAgICAgICAgICAgIGlmICghIXJlcykgcmV0dXJuIHJlcztcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IG1ldGEuY29uc3RyYWludHMgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKG1ldGEuY29uc3RyYWludENscyA9PT0gSXNGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aTogY29uc3RyYWludHNbMF0gfHwgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtZXRhLmNvbnN0cmFpbnRDbHMgPT09IElzT2JqZWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50OiBjb25zdHJhaW50c1swXSB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpOiBjb25zdHJhaW50c1sxXSB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwibGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBzcGVjLmNvbXBvbmVudHMuc2NoZW1hcyA9IHNwZWMuZGVmaW5pdGlvbnM7XG4gICAgYXBpRG9jcyA9IEpTT04uc3RyaW5naWZ5KHNwZWMpO1xuICAgIHJldHVybiBhcGlEb2NzO1xufVxuIl19
1
+ import { getMetadataArgsStorage } from "routing-controllers";
2
+ import { routingControllersToSpec } from "routing-controllers-openapi";
3
+ import { defaultMetadataStorage } from "class-transformer/storage";
4
+ import { ValidationTypes } from "class-validator";
5
+ import { validationMetadatasToSchemas } from "class-validator-jsonschema";
6
+ import { isFunction } from "./utils";
7
+ import { IsFile, IsObjectId } from "./validators";
8
+ let apiDocs = null;
9
+ export function getApiDocs(customValidation) {
10
+ if (apiDocs)
11
+ return apiDocs;
12
+ const storage = getMetadataArgsStorage();
13
+ const spec = routingControllersToSpec(storage);
14
+ spec.basePath = "/api/";
15
+ spec.definitions = validationMetadatasToSchemas({
16
+ classTransformerMetadataStorage: defaultMetadataStorage,
17
+ additionalConverters: {
18
+ [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {
19
+ const res = isFunction(customValidation) ? customValidation(meta, options) : customValidation;
20
+ if (!!res)
21
+ return res;
22
+ const constraints = meta.constraints || [];
23
+ if (meta.constraintCls === IsFile) {
24
+ return {
25
+ multi: constraints[0] || false,
26
+ type: "file"
27
+ };
28
+ }
29
+ if (meta.constraintCls === IsObjectId) {
30
+ return {
31
+ endpoint: constraints[0] || false,
32
+ multi: constraints[1] || false,
33
+ type: "list"
34
+ };
35
+ }
36
+ return null;
37
+ }
38
+ }
39
+ });
40
+ spec.components.schemas = spec.definitions;
41
+ apiDocs = JSON.stringify(spec);
42
+ return apiDocs;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1vcGVuYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jlc3Qtb3BlbmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFDL0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sNEJBQTRCLENBQUE7QUFFdkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUVoRCxJQUFJLE9BQU8sR0FBVyxJQUFJLENBQUM7QUFFM0IsTUFBTSxVQUFVLFVBQVUsQ0FBQyxnQkFBZ0Q7SUFDdkUsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDNUIsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBa0Isd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztRQUM1QywrQkFBK0IsRUFBRSxzQkFBc0I7UUFDdkQsb0JBQW9CLEVBQUU7WUFDbEIsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzlGLElBQUksQ0FBQyxDQUFDLEdBQUc7b0JBQUUsT0FBTyxHQUFHLENBQUM7Z0JBQ3RCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFO29CQUMvQixPQUFPO3dCQUNILEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDOUIsSUFBSSxFQUFFLE1BQU07cUJBQ2YsQ0FBQTtpQkFDSjtnQkFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFO29CQUNuQyxPQUFPO3dCQUNILFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDakMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO3dCQUM5QixJQUFJLEVBQUUsTUFBTTtxQkFDZixDQUFBO2lCQUNKO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7U0FDSjtLQUNKLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDM0MsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2V0TWV0YWRhdGFBcmdzU3RvcmFnZX0gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtyb3V0aW5nQ29udHJvbGxlcnNUb1NwZWN9IGZyb20gXCJyb3V0aW5nLWNvbnRyb2xsZXJzLW9wZW5hcGlcIjtcclxuaW1wb3J0IHtPcGVuQVBJT2JqZWN0LCBTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQge2RlZmF1bHRNZXRhZGF0YVN0b3JhZ2V9IGZyb20gXCJjbGFzcy10cmFuc2Zvcm1lci9zdG9yYWdlXCI7XHJcbmltcG9ydCB7VmFsaWRhdGlvblR5cGVzfSBmcm9tIFwiY2xhc3MtdmFsaWRhdG9yXCJcclxuaW1wb3J0IHt2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzfSBmcm9tIFwiY2xhc3MtdmFsaWRhdG9yLWpzb25zY2hlbWFcIlxyXG5pbXBvcnQge1NjaGVtYUNvbnZlcnRlcn0gZnJvbSBcIi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7aXNGdW5jdGlvbn0gZnJvbSBcIi4vdXRpbHNcIjtcclxuaW1wb3J0IHtJc0ZpbGUsIElzT2JqZWN0SWR9IGZyb20gXCIuL3ZhbGlkYXRvcnNcIjtcclxuXHJcbmxldCBhcGlEb2NzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwaURvY3MoY3VzdG9tVmFsaWRhdGlvbjogU2NoZW1hQ29udmVydGVyIHwgU2NoZW1hT2JqZWN0KTogc3RyaW5nIHtcclxuICAgIGlmIChhcGlEb2NzKSByZXR1cm4gYXBpRG9jcztcclxuICAgIGNvbnN0IHN0b3JhZ2UgPSBnZXRNZXRhZGF0YUFyZ3NTdG9yYWdlKCk7XHJcbiAgICBjb25zdCBzcGVjOiBPcGVuQVBJT2JqZWN0ID0gcm91dGluZ0NvbnRyb2xsZXJzVG9TcGVjKHN0b3JhZ2UpO1xyXG4gICAgc3BlYy5iYXNlUGF0aCA9IFwiL2FwaS9cIjtcclxuICAgIHNwZWMuZGVmaW5pdGlvbnMgPSB2YWxpZGF0aW9uTWV0YWRhdGFzVG9TY2hlbWFzKHtcclxuICAgICAgICBjbGFzc1RyYW5zZm9ybWVyTWV0YWRhdGFTdG9yYWdlOiBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlLFxyXG4gICAgICAgIGFkZGl0aW9uYWxDb252ZXJ0ZXJzOiB7XHJcbiAgICAgICAgICAgIFtWYWxpZGF0aW9uVHlwZXMuQ1VTVE9NX1ZBTElEQVRJT05dOiAobWV0YSwgb3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzID0gaXNGdW5jdGlvbihjdXN0b21WYWxpZGF0aW9uKSA/IGN1c3RvbVZhbGlkYXRpb24obWV0YSwgb3B0aW9ucykgOiBjdXN0b21WYWxpZGF0aW9uO1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhcmVzKSByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29uc3RyYWludHMgPSBtZXRhLmNvbnN0cmFpbnRzIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1ldGEuY29uc3RyYWludENscyA9PT0gSXNGaWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGk6IGNvbnN0cmFpbnRzWzBdIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChtZXRhLmNvbnN0cmFpbnRDbHMgPT09IElzT2JqZWN0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDogY29uc3RyYWludHNbMF0gfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpOiBjb25zdHJhaW50c1sxXSB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJsaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgc3BlYy5jb21wb25lbnRzLnNjaGVtYXMgPSBzcGVjLmRlZmluaXRpb25zO1xyXG4gICAgYXBpRG9jcyA9IEpTT04uc3RyaW5naWZ5KHNwZWMpO1xyXG4gICAgcmV0dXJuIGFwaURvY3M7XHJcbn1cclxuIl19
@@ -1,101 +1,101 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
- return new (P || (P = Promise))(function (resolve, reject) {
10
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
- step((generator = generator.apply(thisArg, _arguments || [])).next());
14
- });
15
- };
16
- var AssetProcessor_1;
17
- import { injectable, Lifecycle, scoped } from "tsyringe";
18
- import fontKit_ from "fontkit";
19
- import { fromBuffer } from "file-type";
20
- import sharp_ from "sharp";
21
- const sharp = sharp_;
22
- const fontKit = fontKit_;
23
- const fontTypes = [
24
- "application/font-woff", "application/font-woff2", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-datafork",
25
- "font/woff", "font/woff2", "font/otf", "font/ttf", "font/datafork"
26
- ];
27
- const imageTypes = ["image/jpeg", "image/jpg", "image/png"];
28
- const fontProps = [
29
- "postscriptName", "fullName", "familyName", "subfamilyName",
30
- "copyright", "version", "unitsPerEm", "ascent", "descent", "lineGap",
31
- "underlinePosition", "underlineThickness", "italicAngle", "capHeight",
32
- "xHeight", "numGlyphs", "characterSet", "availableFeatures"
33
- ];
34
- let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
35
- static getMimeType(buffer, mimeType) {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- try {
38
- mimeType = (yield fromBuffer(buffer)).mime;
39
- }
40
- catch (e) {
41
- if (!mimeType) {
42
- throw `Can't determine mime type`;
43
- }
44
- console.log(`Can't determine mime type`, e);
45
- }
46
- return mimeType;
47
- });
48
- }
49
- static extractFontFormat(font) {
50
- const name = font.constructor.name;
51
- const tag = font["directory"].tag;
52
- switch (name) {
53
- case "TTFFont":
54
- return tag === "OTTO" ? "opentype" : "truetype";
55
- case "WOFF2Font":
56
- return "woff2";
57
- case "WOFFFont":
58
- return "woff";
59
- case "DFont":
60
- return "datafork";
61
- }
62
- return null;
63
- }
64
- static isImage(contentType) {
65
- return imageTypes.indexOf(contentType) >= 0;
66
- }
67
- static copyImageMeta(buffer, metadata) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- const output = yield sharp(buffer).rotate().toBuffer({ resolveWithObject: true });
70
- Object.assign(metadata, output.info);
71
- return output.data;
72
- });
73
- }
74
- static isFont(contentType) {
75
- return fontTypes.indexOf(contentType) >= 0;
76
- }
77
- static copyFontMeta(buffer, metadata) {
78
- const font = fontKit.create(buffer);
79
- metadata.format = AssetProcessor_1.extractFontFormat(font);
80
- fontProps.forEach(prop => {
81
- metadata[prop] = font[prop];
82
- });
83
- }
84
- process(buffer, metadata, contentType) {
85
- return __awaiter(this, void 0, void 0, function* () {
86
- if (AssetProcessor_1.isImage(contentType)) {
87
- buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata);
88
- }
89
- if (AssetProcessor_1.isFont(contentType)) {
90
- AssetProcessor_1.copyFontMeta(buffer, metadata);
91
- }
92
- return buffer;
93
- });
94
- }
95
- };
96
- AssetProcessor = AssetProcessor_1 = __decorate([
97
- injectable(),
98
- scoped(Lifecycle.ContainerScoped)
99
- ], AssetProcessor);
100
- export { AssetProcessor };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sUUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFHM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUV6QixNQUFNLFNBQVMsR0FBRztJQUNkLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QjtJQUM5SSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZTtDQUNyRSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVELE1BQU0sU0FBUyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0lBQzNELFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUNwRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUNyRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUQsQ0FBQztJQUlXLGNBQWMsNEJBQWQsY0FBYztJQUV2QixNQUFNLENBQU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFpQjs7WUFDdEQsSUFBSTtnQkFDQSxRQUFRLEdBQUcsQ0FBQyxN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ZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IGZvbnRLaXRfLCB7Rm9udH0gZnJvbSBcImZvbnRraXRcIjtcbmltcG9ydCB7ZnJvbUJ1ZmZlcn0gZnJvbSBcImZpbGUtdHlwZVwiO1xuaW1wb3J0IHNoYXJwXyBmcm9tIFwic2hhcnBcIjtcbmltcG9ydCB7Rm9udEZvcm1hdCwgSUFzc2V0TWV0YX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuXG5jb25zdCBzaGFycCA9IHNoYXJwXztcbmNvbnN0IGZvbnRLaXQgPSBmb250S2l0XztcblxuY29uc3QgZm9udFR5cGVzID0gW1xuICAgIFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCIsIFwiYXBwbGljYXRpb24vZm9udC13b2ZmMlwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC1vcGVudHlwZVwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC10cnVldHlwZVwiLCBcImFwcGxpY2F0aW9uL3gtZm9udC1kYXRhZm9ya1wiLFxuICAgIFwiZm9udC93b2ZmXCIsIFwiZm9udC93b2ZmMlwiLCBcImZvbnQvb3RmXCIsIFwiZm9udC90dGZcIiwgXCJmb250L2RhdGFmb3JrXCJcbl07XG5cbmNvbnN0IGltYWdlVHlwZXMgPSBbXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvcG5nXCJdO1xuXG5jb25zdCBmb250UHJvcHMgPSBbXG4gICAgXCJwb3N0c2NyaXB0TmFtZVwiLCBcImZ1bGxOYW1lXCIsIFwiZmFtaWx5TmFtZVwiLCBcInN1YmZhbWlseU5hbWVcIixcbiAgICBcImNvcHlyaWdodFwiLCBcInZlcnNpb25cIiwgXCJ1bml0c1BlckVtXCIsIFwiYXNjZW50XCIsIFwiZGVzY2VudFwiLCBcImxpbmVHYXBcIixcbiAgICBcInVuZGVybGluZVBvc2l0aW9uXCIsIFwidW5kZXJsaW5lVGhpY2tuZXNzXCIsIFwiaXRhbGljQW5nbGVcIiwgXCJjYXBIZWlnaHRcIixcbiAgICBcInhIZWlnaHRcIiwgXCJudW1HbHlwaHNcIiwgXCJjaGFyYWN0ZXJTZXRcIiwgXCJhdmFpbGFibGVGZWF0dXJlc1wiXG5dO1xuXG5AaW5qZWN0YWJsZSgpXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXG5leHBvcnQgY2xhc3MgQXNzZXRQcm9jZXNzb3Ige1xuXG4gICAgc3RhdGljIGFzeW5jIGdldE1pbWVUeXBlKGJ1ZmZlcjogQnVmZmVyLCBtaW1lVHlwZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtaW1lVHlwZSA9IChhd2FpdCBmcm9tQnVmZmVyKGJ1ZmZlcikpLm1pbWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmICghbWltZVR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBgQ2FuJ3QgZGV0ZXJtaW5lIG1pbWUgdHlwZWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgZGV0ZXJtaW5lIG1pbWUgdHlwZWAsIGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW1lVHlwZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZXh0cmFjdEZvbnRGb3JtYXQoZm9udDogRm9udCk6IEZvbnRGb3JtYXQge1xuICAgICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSBmb250LmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIGNvbnN0IHRhZzogc3RyaW5nICA9IGZvbnRbXCJkaXJlY3RvcnlcIl0udGFnO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJUVEZGb250XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZyA9PT0gXCJPVFRPXCIgPyBcIm9wZW50eXBlXCIgOiBcInRydWV0eXBlXCI7XG4gICAgICAgICAgICBjYXNlIFwiV09GRjJGb250XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwid29mZjJcIjtcbiAgICAgICAgICAgIGNhc2UgXCJXT0ZGRm9udFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIndvZmZcIjtcbiAgICAgICAgICAgIGNhc2UgXCJERm9udFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImRhdGFmb3JrXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzSW1hZ2UoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW1hZ2VUeXBlcy5pbmRleE9mKGNvbnRlbnRUeXBlKSA+PSAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBjb3B5SW1hZ2VNZXRhKGJ1ZmZlcjogQnVmZmVyLCBtZXRhZGF0YTogSUFzc2V0TWV0YSk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNoYXJwKGJ1ZmZlcikucm90YXRlKCkudG9CdWZmZXIoe3Jlc29sdmVXaXRoT2JqZWN0OiB0cnVlfSk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24obWV0YWRhdGEsIG91dHB1dC5pbmZvKTtcbiAgICAgICAgcmV0dXJuIG91dHB1dC5kYXRhO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0ZvbnQoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZm9udFR5cGVzLmluZGV4T2YoY29udGVudFR5cGUpID49IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvcHlGb250TWV0YShidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9udDogRm9udCA9IGZvbnRLaXQuY3JlYXRlKGJ1ZmZlcik7XG4gICAgICAgIG1ldGFkYXRhLmZvcm1hdCA9IEFzc2V0UHJvY2Vzc29yLmV4dHJhY3RGb250Rm9ybWF0KGZvbnQpO1xuICAgICAgICBmb250UHJvcHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICAgIG1ldGFkYXRhW3Byb3BdID0gZm9udFtwcm9wXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcHJvY2VzcyhidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEsIGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICBpZiAoQXNzZXRQcm9jZXNzb3IuaXNJbWFnZShjb250ZW50VHlwZSkpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IGF3YWl0IEFzc2V0UHJvY2Vzc29yLmNvcHlJbWFnZU1ldGEoYnVmZmVyLCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFzc2V0UHJvY2Vzc29yLmlzRm9udChjb250ZW50VHlwZSkpIHtcbiAgICAgICAgICAgIEFzc2V0UHJvY2Vzc29yLmNvcHlGb250TWV0YShidWZmZXIsIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbn1cbiJdfQ==
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ var AssetProcessor_1;
17
+ import { injectable, Lifecycle, scoped } from "tsyringe";
18
+ import fontKit_ from "fontkit";
19
+ import { fromBuffer } from "file-type";
20
+ import sharp_ from "sharp";
21
+ const sharp = sharp_;
22
+ const fontKit = fontKit_;
23
+ const fontTypes = [
24
+ "application/font-woff", "application/font-woff2", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-datafork",
25
+ "font/woff", "font/woff2", "font/otf", "font/ttf", "font/datafork"
26
+ ];
27
+ const imageTypes = ["image/jpeg", "image/jpg", "image/png"];
28
+ const fontProps = [
29
+ "postscriptName", "fullName", "familyName", "subfamilyName",
30
+ "copyright", "version", "unitsPerEm", "ascent", "descent", "lineGap",
31
+ "underlinePosition", "underlineThickness", "italicAngle", "capHeight",
32
+ "xHeight", "numGlyphs", "characterSet", "availableFeatures"
33
+ ];
34
+ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
35
+ static getMimeType(buffer, mimeType) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ try {
38
+ mimeType = (yield fromBuffer(buffer)).mime;
39
+ }
40
+ catch (e) {
41
+ if (!mimeType) {
42
+ throw `Can't determine mime type`;
43
+ }
44
+ console.log(`Can't determine mime type`, e);
45
+ }
46
+ return mimeType;
47
+ });
48
+ }
49
+ static extractFontFormat(font) {
50
+ const name = font.constructor.name;
51
+ const tag = font["directory"].tag;
52
+ switch (name) {
53
+ case "TTFFont":
54
+ return tag === "OTTO" ? "opentype" : "truetype";
55
+ case "WOFF2Font":
56
+ return "woff2";
57
+ case "WOFFFont":
58
+ return "woff";
59
+ case "DFont":
60
+ return "datafork";
61
+ }
62
+ return null;
63
+ }
64
+ static isImage(contentType) {
65
+ return imageTypes.indexOf(contentType) >= 0;
66
+ }
67
+ static copyImageMeta(buffer, metadata) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const output = yield sharp(buffer).rotate().toBuffer({ resolveWithObject: true });
70
+ Object.assign(metadata, output.info);
71
+ return output.data;
72
+ });
73
+ }
74
+ static isFont(contentType) {
75
+ return fontTypes.indexOf(contentType) >= 0;
76
+ }
77
+ static copyFontMeta(buffer, metadata) {
78
+ const font = fontKit.create(buffer);
79
+ metadata.format = AssetProcessor_1.extractFontFormat(font);
80
+ fontProps.forEach(prop => {
81
+ metadata[prop] = font[prop];
82
+ });
83
+ }
84
+ process(buffer, metadata, contentType) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ if (AssetProcessor_1.isImage(contentType)) {
87
+ buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata);
88
+ }
89
+ if (AssetProcessor_1.isFont(contentType)) {
90
+ AssetProcessor_1.copyFontMeta(buffer, metadata);
91
+ }
92
+ return buffer;
93
+ });
94
+ }
95
+ };
96
+ AssetProcessor = AssetProcessor_1 = __decorate([
97
+ injectable(),
98
+ scoped(Lifecycle.ContainerScoped)
99
+ ], AssetProcessor);
100
+ export { AssetProcessor };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2Fzc2V0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sUUFBZ0IsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxPQUFPLENBQUM7QUFHM0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUV6QixNQUFNLFNBQVMsR0FBRztJQUNkLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QjtJQUM5SSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZTtDQUNyRSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVELE1BQU0sU0FBUyxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0lBQzNELFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUNwRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUNyRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUQsQ0FBQztJQUlXLGNBQWMsNEJBQWQsY0FBYztJQUV2QixNQUFNLENBQU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFpQjs7WUFDdEQsSUFBSTtnQkFDQSxRQUFRLEdBQUcsQ0FBQyxN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ZWN0YWJsZSwgTGlmZWN5Y2xlLCBzY29wZWR9IGZyb20gXCJ0c3lyaW5nZVwiO1xyXG5pbXBvcnQgZm9udEtpdF8sIHtGb250fSBmcm9tIFwiZm9udGtpdFwiO1xyXG5pbXBvcnQge2Zyb21CdWZmZXJ9IGZyb20gXCJmaWxlLXR5cGVcIjtcclxuaW1wb3J0IHNoYXJwXyBmcm9tIFwic2hhcnBcIjtcclxuaW1wb3J0IHtGb250Rm9ybWF0LCBJQXNzZXRNZXRhfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5jb25zdCBzaGFycCA9IHNoYXJwXztcclxuY29uc3QgZm9udEtpdCA9IGZvbnRLaXRfO1xyXG5cclxuY29uc3QgZm9udFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIiwgXCJhcHBsaWNhdGlvbi9mb250LXdvZmYyXCIsIFwiYXBwbGljYXRpb24veC1mb250LW9wZW50eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LXRydWV0eXBlXCIsIFwiYXBwbGljYXRpb24veC1mb250LWRhdGFmb3JrXCIsXHJcbiAgICBcImZvbnQvd29mZlwiLCBcImZvbnQvd29mZjJcIiwgXCJmb250L290ZlwiLCBcImZvbnQvdHRmXCIsIFwiZm9udC9kYXRhZm9ya1wiXHJcbl07XHJcblxyXG5jb25zdCBpbWFnZVR5cGVzID0gW1wiaW1hZ2UvanBlZ1wiLCBcImltYWdlL2pwZ1wiLCBcImltYWdlL3BuZ1wiXTtcclxuXHJcbmNvbnN0IGZvbnRQcm9wcyA9IFtcclxuICAgIFwicG9zdHNjcmlwdE5hbWVcIiwgXCJmdWxsTmFtZVwiLCBcImZhbWlseU5hbWVcIiwgXCJzdWJmYW1pbHlOYW1lXCIsXHJcbiAgICBcImNvcHlyaWdodFwiLCBcInZlcnNpb25cIiwgXCJ1bml0c1BlckVtXCIsIFwiYXNjZW50XCIsIFwiZGVzY2VudFwiLCBcImxpbmVHYXBcIixcclxuICAgIFwidW5kZXJsaW5lUG9zaXRpb25cIiwgXCJ1bmRlcmxpbmVUaGlja25lc3NcIiwgXCJpdGFsaWNBbmdsZVwiLCBcImNhcEhlaWdodFwiLFxyXG4gICAgXCJ4SGVpZ2h0XCIsIFwibnVtR2x5cGhzXCIsIFwiY2hhcmFjdGVyU2V0XCIsIFwiYXZhaWxhYmxlRmVhdHVyZXNcIlxyXG5dO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBBc3NldFByb2Nlc3NvciB7XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGdldE1pbWVUeXBlKGJ1ZmZlcjogQnVmZmVyLCBtaW1lVHlwZT86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWltZVR5cGUgPSAoYXdhaXQgZnJvbUJ1ZmZlcihidWZmZXIpKS5taW1lO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKCFtaW1lVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgYENhbid0IGRldGVybWluZSBtaW1lIHR5cGVgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDYW4ndCBkZXRlcm1pbmUgbWltZSB0eXBlYCwgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaW1lVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXh0cmFjdEZvbnRGb3JtYXQoZm9udDogRm9udCk6IEZvbnRGb3JtYXQge1xyXG4gICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGZvbnQuY29uc3RydWN0b3IubmFtZTtcclxuICAgICAgICBjb25zdCB0YWc6IHN0cmluZyAgPSBmb250W1wiZGlyZWN0b3J5XCJdLnRhZztcclxuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSBcIlRURkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWcgPT09IFwiT1RUT1wiID8gXCJvcGVudHlwZVwiIDogXCJ0cnVldHlwZVwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiV09GRjJGb250XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ3b2ZmMlwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiV09GRkZvbnRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIndvZmZcIjtcclxuICAgICAgICAgICAgY2FzZSBcIkRGb250XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkYXRhZm9ya1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGltYWdlVHlwZXMuaW5kZXhPZihjb250ZW50VHlwZSkgPj0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY29weUltYWdlTWV0YShidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHNoYXJwKGJ1ZmZlcikucm90YXRlKCkudG9CdWZmZXIoe3Jlc29sdmVXaXRoT2JqZWN0OiB0cnVlfSk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihtZXRhZGF0YSwgb3V0cHV0LmluZm8pO1xyXG4gICAgICAgIHJldHVybiBvdXRwdXQuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNGb250KGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gZm9udFR5cGVzLmluZGV4T2YoY29udGVudFR5cGUpID49IDA7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvcHlGb250TWV0YShidWZmZXI6IEJ1ZmZlciwgbWV0YWRhdGE6IElBc3NldE1ldGEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBmb250OiBGb250ID0gZm9udEtpdC5jcmVhdGUoYnVmZmVyKTtcclxuICAgICAgICBtZXRhZGF0YS5mb3JtYXQgPSBBc3NldFByb2Nlc3Nvci5leHRyYWN0Rm9udEZvcm1hdChmb250KTtcclxuICAgICAgICBmb250UHJvcHMuZm9yRWFjaChwcm9wID0+IHtcclxuICAgICAgICAgICAgbWV0YWRhdGFbcHJvcF0gPSBmb250W3Byb3BdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2Nlc3MoYnVmZmVyOiBCdWZmZXIsIG1ldGFkYXRhOiBJQXNzZXRNZXRhLCBjb250ZW50VHlwZTogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+IHtcclxuICAgICAgICBpZiAoQXNzZXRQcm9jZXNzb3IuaXNJbWFnZShjb250ZW50VHlwZSkpIHtcclxuICAgICAgICAgICAgYnVmZmVyID0gYXdhaXQgQXNzZXRQcm9jZXNzb3IuY29weUltYWdlTWV0YShidWZmZXIsIG1ldGFkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKEFzc2V0UHJvY2Vzc29yLmlzRm9udChjb250ZW50VHlwZSkpIHtcclxuICAgICAgICAgICAgQXNzZXRQcm9jZXNzb3IuY29weUZvbnRNZXRhKGJ1ZmZlciwgbWV0YWRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnVmZmVyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,53 +1,53 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
- import { injectable, Lifecycle, scoped } from "tsyringe";
20
- import { Assets } from "./assets";
21
- import { LazyAssets } from "./lazy-assets";
22
- let AssetResolver = class AssetResolver {
23
- constructor(assets, lazyAssets) {
24
- this.assets = assets;
25
- this.lazyAssets = lazyAssets;
26
- }
27
- resolve(id, lazy = false) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- let asset = null;
30
- if (lazy) {
31
- const lazyAsset = yield this.lazyAssets.read(id);
32
- if (!lazyAsset)
33
- return null;
34
- return lazyAsset.loadAsset();
35
- }
36
- asset = yield this.assets.read(id);
37
- if (!asset) {
38
- const lazyAsset = yield this.lazyAssets.read(id);
39
- if (!lazyAsset)
40
- return null;
41
- return lazyAsset.loadAsset();
42
- }
43
- return asset;
44
- });
45
- }
46
- };
47
- AssetResolver = __decorate([
48
- injectable(),
49
- scoped(Lifecycle.ContainerScoped),
50
- __metadata("design:paramtypes", [Assets, LazyAssets])
51
- ], AssetResolver);
52
- export { AssetResolver };
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYXNzZXQtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztJQUk1QixhQUFhLFNBQWIsYUFBYTtJQUV0QixZQUFxQixNQUFjLEVBQVcsVUFBc0I7UUFBL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFcEUsQ0FBQztJQUVLLE9BQU8sQ0FBQyxFQUFVLEVBQUUsT0FBZ0IsS0FBSzs7WUFDM0MsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDO1lBQ3pCLElBQUksSUFBSSxFQUFFO2dCQUNOLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUM1QixPQUFPLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNoQztZQUNELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFNBQVM7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQzVCLE9BQU8sU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2hDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQXJCWSxhQUFhO0lBRnpCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO3FDQUdELE1BQU0sRUFBdUIsVUFBVTtHQUYzRCxhQUFhLENBcUJ6QjtTQXJCWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQge0lBc3NldH0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xuaW1wb3J0IHtBc3NldHN9IGZyb20gXCIuL2Fzc2V0c1wiO1xuaW1wb3J0IHtMYXp5QXNzZXRzfSBmcm9tIFwiLi9sYXp5LWFzc2V0c1wiO1xuXG5AaW5qZWN0YWJsZSgpXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXG5leHBvcnQgY2xhc3MgQXNzZXRSZXNvbHZlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBhc3NldHM6IEFzc2V0cywgcmVhZG9ubHkgbGF6eUFzc2V0czogTGF6eUFzc2V0cykge1xuXG4gICAgfVxuXG4gICAgYXN5bmMgcmVzb2x2ZShpZDogc3RyaW5nLCBsYXp5OiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPElBc3NldD4ge1xuICAgICAgICBsZXQgYXNzZXQ6IElBc3NldCA9IG51bGw7XG4gICAgICAgIGlmIChsYXp5KSB7XG4gICAgICAgICAgICBjb25zdCBsYXp5QXNzZXQgPSBhd2FpdCB0aGlzLmxhenlBc3NldHMucmVhZChpZCk7XG4gICAgICAgICAgICBpZiAoIWxhenlBc3NldCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4gbGF6eUFzc2V0LmxvYWRBc3NldCgpO1xuICAgICAgICB9XG4gICAgICAgIGFzc2V0ID0gYXdhaXQgdGhpcy5hc3NldHMucmVhZChpZCk7XG4gICAgICAgIGlmICghYXNzZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhenlBc3NldCA9IGF3YWl0IHRoaXMubGF6eUFzc2V0cy5yZWFkKGlkKTtcbiAgICAgICAgICAgIGlmICghbGF6eUFzc2V0KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBsYXp5QXNzZXQubG9hZEFzc2V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzc2V0O1xuICAgIH1cbn1cbiJdfQ==
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
+ return new (P || (P = Promise))(function (resolve, reject) {
13
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17
+ });
18
+ };
19
+ import { injectable, Lifecycle, scoped } from "tsyringe";
20
+ import { Assets } from "./assets";
21
+ import { LazyAssets } from "./lazy-assets";
22
+ let AssetResolver = class AssetResolver {
23
+ constructor(assets, lazyAssets) {
24
+ this.assets = assets;
25
+ this.lazyAssets = lazyAssets;
26
+ }
27
+ resolve(id, lazy = false) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ let asset = null;
30
+ if (lazy) {
31
+ const lazyAsset = yield this.lazyAssets.read(id);
32
+ if (!lazyAsset)
33
+ return null;
34
+ return lazyAsset.loadAsset();
35
+ }
36
+ asset = yield this.assets.read(id);
37
+ if (!asset) {
38
+ const lazyAsset = yield this.lazyAssets.read(id);
39
+ if (!lazyAsset)
40
+ return null;
41
+ return lazyAsset.loadAsset();
42
+ }
43
+ return asset;
44
+ });
45
+ }
46
+ };
47
+ AssetResolver = __decorate([
48
+ injectable(),
49
+ scoped(Lifecycle.ContainerScoped),
50
+ __metadata("design:paramtypes", [Assets, LazyAssets])
51
+ ], AssetResolver);
52
+ export { AssetResolver };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYXNzZXQtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztJQUk1QixhQUFhLFNBQWIsYUFBYTtJQUV0QixZQUFxQixNQUFjLEVBQVcsVUFBc0I7UUFBL0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGVBQVUsR0FBVixVQUFVLENBQVk7SUFFcEUsQ0FBQztJQUVLLE9BQU8sQ0FBQyxFQUFVLEVBQUUsT0FBZ0IsS0FBSzs7WUFDM0MsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDO1lBQ3pCLElBQUksSUFBSSxFQUFFO2dCQUNOLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUM1QixPQUFPLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNoQztZQUNELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1IsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFNBQVM7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQzVCLE9BQU8sU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2hDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztLQUFBO0NBQ0osQ0FBQTtBQXJCWSxhQUFhO0lBRnpCLFVBQVUsRUFBRTtJQUNaLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO3FDQUdELE1BQU0sRUFBdUIsVUFBVTtHQUYzRCxhQUFhLENBcUJ6QjtTQXJCWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlLCBMaWZlY3ljbGUsIHNjb3BlZH0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCB7SUFzc2V0fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7QXNzZXRzfSBmcm9tIFwiLi9hc3NldHNcIjtcclxuaW1wb3J0IHtMYXp5QXNzZXRzfSBmcm9tIFwiLi9sYXp5LWFzc2V0c1wiO1xyXG5cclxuQGluamVjdGFibGUoKVxyXG5Ac2NvcGVkKExpZmVjeWNsZS5Db250YWluZXJTY29wZWQpXHJcbmV4cG9ydCBjbGFzcyBBc3NldFJlc29sdmVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBhc3NldHM6IEFzc2V0cywgcmVhZG9ubHkgbGF6eUFzc2V0czogTGF6eUFzc2V0cykge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXNvbHZlKGlkOiBzdHJpbmcsIGxhenk6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgbGV0IGFzc2V0OiBJQXNzZXQgPSBudWxsO1xyXG4gICAgICAgIGlmIChsYXp5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhenlBc3NldCA9IGF3YWl0IHRoaXMubGF6eUFzc2V0cy5yZWFkKGlkKTtcclxuICAgICAgICAgICAgaWYgKCFsYXp5QXNzZXQpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4gbGF6eUFzc2V0LmxvYWRBc3NldCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhc3NldCA9IGF3YWl0IHRoaXMuYXNzZXRzLnJlYWQoaWQpO1xyXG4gICAgICAgIGlmICghYXNzZXQpIHtcclxuICAgICAgICAgICAgY29uc3QgbGF6eUFzc2V0ID0gYXdhaXQgdGhpcy5sYXp5QXNzZXRzLnJlYWQoaWQpO1xyXG4gICAgICAgICAgICBpZiAoIWxhenlBc3NldCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybiBsYXp5QXNzZXQubG9hZEFzc2V0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhc3NldDtcclxuICAgIH1cclxufVxyXG4iXX0=