@zlooks.cn/images-server 1.0.3 → 1.0.5

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 (104) hide show
  1. package/dist/assets/read-image-asset.d.ts.map +1 -1
  2. package/dist/assets/read-image-asset.js +7 -2
  3. package/dist/assets/read-image-asset.js.map +1 -1
  4. package/dist/assets/response-policy.d.ts.map +1 -1
  5. package/dist/assets/response-policy.js +10 -4
  6. package/dist/assets/response-policy.js.map +1 -1
  7. package/dist/command/index.js +2 -5
  8. package/dist/command/index.js.map +1 -1
  9. package/dist/domain/image-error.d.ts +5 -2
  10. package/dist/domain/image-error.d.ts.map +1 -1
  11. package/dist/domain/image-error.js.map +1 -1
  12. package/dist/domain/output-schema.d.ts +1 -62
  13. package/dist/domain/output-schema.d.ts.map +1 -1
  14. package/dist/domain/output-schema.js +1 -24
  15. package/dist/domain/output-schema.js.map +1 -1
  16. package/dist/domain/schema.d.ts +1 -68
  17. package/dist/domain/schema.d.ts.map +1 -1
  18. package/dist/domain/schema.js +1 -43
  19. package/dist/domain/schema.js.map +1 -1
  20. package/dist/events/image-domain-events.d.ts +9 -8
  21. package/dist/events/image-domain-events.d.ts.map +1 -1
  22. package/dist/events/image-domain-events.js +2 -2
  23. package/dist/events/image-domain-events.js.map +1 -1
  24. package/dist/identity.d.ts +1 -1
  25. package/dist/identity.d.ts.map +1 -1
  26. package/dist/identity.js +1 -1
  27. package/dist/identity.js.map +1 -1
  28. package/dist/mcp/provider.d.ts +2 -1
  29. package/dist/mcp/provider.d.ts.map +1 -1
  30. package/dist/mcp/provider.js +95 -51
  31. package/dist/mcp/provider.js.map +1 -1
  32. package/dist/messages/images/delete.msg.d.ts +52 -0
  33. package/dist/messages/images/delete.msg.d.ts.map +1 -0
  34. package/dist/messages/images/delete.msg.js +6 -0
  35. package/dist/messages/images/delete.msg.js.map +1 -0
  36. package/dist/messages/images/events.msg.d.ts +22 -0
  37. package/dist/messages/images/events.msg.d.ts.map +1 -0
  38. package/dist/messages/images/events.msg.js +6 -0
  39. package/dist/messages/images/events.msg.js.map +1 -0
  40. package/dist/messages/images/list.msg.d.ts +85 -0
  41. package/dist/messages/images/list.msg.d.ts.map +1 -0
  42. package/dist/messages/images/list.msg.js +6 -0
  43. package/dist/messages/images/list.msg.js.map +1 -0
  44. package/dist/messages/images/read.msg.d.ts +51 -0
  45. package/dist/messages/images/read.msg.d.ts.map +1 -0
  46. package/dist/messages/images/read.msg.js +6 -0
  47. package/dist/messages/images/read.msg.js.map +1 -0
  48. package/dist/messages/images/upload.msg.d.ts +57 -0
  49. package/dist/messages/images/upload.msg.d.ts.map +1 -0
  50. package/dist/messages/images/upload.msg.js +6 -0
  51. package/dist/messages/images/upload.msg.js.map +1 -0
  52. package/dist/messages/model-message.d.ts +8 -0
  53. package/dist/messages/model-message.d.ts.map +1 -0
  54. package/dist/messages/model-message.js +18 -0
  55. package/dist/messages/model-message.js.map +1 -0
  56. package/dist/migrations/index.d.ts +2 -0
  57. package/dist/migrations/index.d.ts.map +1 -1
  58. package/dist/migrations/index.js +6 -0
  59. package/dist/migrations/index.js.map +1 -1
  60. package/dist/models/delete-image.model.d.ts +1 -1
  61. package/dist/models/delete-image.model.js +14 -7
  62. package/dist/models/delete-image.model.js.map +1 -1
  63. package/dist/models/list-image.model.js +6 -3
  64. package/dist/models/list-image.model.js.map +1 -1
  65. package/dist/models/read-image-event-catalog.model.d.ts +3 -0
  66. package/dist/models/read-image-event-catalog.model.d.ts.map +1 -0
  67. package/dist/models/read-image-event-catalog.model.js +7 -0
  68. package/dist/models/read-image-event-catalog.model.js.map +1 -0
  69. package/dist/models/read-image.model.d.ts +1 -1
  70. package/dist/models/read-image.model.js +2 -2
  71. package/dist/models/read-image.model.js.map +1 -1
  72. package/dist/models/upload-image.model.d.ts +7 -3
  73. package/dist/models/upload-image.model.d.ts.map +1 -1
  74. package/dist/models/upload-image.model.js +8 -7
  75. package/dist/models/upload-image.model.js.map +1 -1
  76. package/dist/persistence/entities.d.ts +2 -1
  77. package/dist/persistence/entities.d.ts.map +1 -1
  78. package/dist/persistence/entities.js +85 -12
  79. package/dist/persistence/entities.js.map +1 -1
  80. package/dist/presentation/image-projection.d.ts +3 -17
  81. package/dist/presentation/image-projection.d.ts.map +1 -1
  82. package/dist/presentation/image-projection.js.map +1 -1
  83. package/dist/services/application.service.d.ts +6 -2
  84. package/dist/services/application.service.d.ts.map +1 -1
  85. package/dist/services/application.service.js +11 -4
  86. package/dist/services/application.service.js.map +1 -1
  87. package/dist/services/config.service.js +1 -1
  88. package/dist/services/config.service.js.map +1 -1
  89. package/dist/services/database.service.js +9 -1
  90. package/dist/services/database.service.js.map +1 -1
  91. package/dist/services/images-runtime.service.js +6 -2
  92. package/dist/services/images-runtime.service.js.map +1 -1
  93. package/dist/services/images.boot.js +3 -0
  94. package/dist/services/images.boot.js.map +1 -1
  95. package/dist/services/mcp-provider.service.js +3 -2
  96. package/dist/services/mcp-provider.service.js.map +1 -1
  97. package/dist/services/public-assets.service.js +5 -1
  98. package/dist/services/public-assets.service.js.map +1 -1
  99. package/dist/services/redis.service.js +12 -4
  100. package/dist/services/redis.service.js.map +1 -1
  101. package/dist/storage/local-storage.d.ts.map +1 -1
  102. package/dist/storage/local-storage.js +13 -5
  103. package/dist/storage/local-storage.js.map +1 -1
  104. package/package.json +21 -21
@@ -0,0 +1,18 @@
1
+ import { loadModel } from '@hile/model';
2
+ import { imageOperationFailureSchema } from '@zlooks.cn/images-shared';
3
+ import { ImageError } from '../domain/image-error.js';
4
+ export async function loadImageModel(model, input, invocation) {
5
+ try {
6
+ return await loadModel(model, input, invocation);
7
+ }
8
+ catch (error) {
9
+ if (!(error instanceof ImageError))
10
+ throw error;
11
+ return imageOperationFailureSchema.parse({
12
+ outcome: 'error',
13
+ code: error.code,
14
+ message: error.message,
15
+ });
16
+ }
17
+ }
18
+ //# sourceMappingURL=model-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-message.js","sourceRoot":"","sources":["../../src/messages/model-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAuC,EACvC,KAAa,EACb,UAA6B;IAE7B,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,MAAM,KAAK,CAAC;QAChD,OAAO,2BAA2B,CAAC,KAAK,CAAC;YACvC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import type { DatabaseMigration } from '@zlooks.cn/database-command';
2
+ import { type DataSource } from 'typeorm';
2
3
  export declare const imagesMigrations: readonly DatabaseMigration[];
4
+ export declare function prepareImagesSchema(dataSource: DataSource): Promise<void>;
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AA2CrE,eAAO,MAAM,gBAAgB,EAAE,SAAS,iBAAiB,EAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AA0C/D,eAAO,MAAM,gBAAgB,EAAE,SAAS,iBAAiB,EAA4B,CAAC;AAEtF,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/E"}
@@ -42,4 +42,10 @@ const backfillEventVersions = {
42
42
  },
43
43
  };
44
44
  export const imagesMigrations = [backfillEventVersions];
45
+ export async function prepareImagesSchema(dataSource) {
46
+ for (const migration of imagesMigrations) {
47
+ await migration.run(dataSource);
48
+ }
49
+ await dataSource.synchronize();
50
+ }
45
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAmB,MAAM,SAAS,CAAC;AAE/D,MAAM,qBAAqB,GAAsB;IAC/C,IAAI,EAAE,wCAAwC;IAC9C,KAAK,CAAC,GAAG,CAAC,UAAsB;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBAC/C,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxF,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;iBACtC,MAAM,CAAC,QAAQ,CAAC;iBAChB,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;iBACnB,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;iBAC5B,OAAO,EAAE,CAAC;YACb,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YACpD,qBAAqB,CAAC,UAAU,GAAG,KAAK,CAAC;YACzC,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;YACtE,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,mBAAmB;gBAAE,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAiC,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAmB,MAAM,SAAS,CAAC;AAE/D,MAAM,qBAAqB,GAAsB;IAC/C,IAAI,EAAE,wCAAwC;IAC9C,KAAK,CAAC,GAAG,CAAC,UAAsB;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;gBAC/C,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxF,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;iBACtC,MAAM,CAAC,QAAQ,CAAC;iBAChB,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;iBACnB,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;iBAC5B,OAAO,EAAE,CAAC;YACb,MAAM,qBAAqB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YACpD,qBAAqB,CAAC,UAAU,GAAG,KAAK,CAAC;YACzC,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;YACtE,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,mBAAmB;gBAAE,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACnE,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAiC,CAAC,qBAAqB,CAAC,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAsB;IAC9D,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC"}
@@ -6,7 +6,7 @@ declare const _default: import("@hile/model").ModelDefinition<{
6
6
  originalFilename: string | null;
7
7
  status: "deleted" | "deleting" | "failed" | "ready" | "uploading";
8
8
  url: string | null;
9
- mediaType: string | null;
9
+ mediaType: "image/avif" | "image/gif" | "image/jpeg" | "image/png" | "image/webp" | null;
10
10
  byteSize: number | null;
11
11
  width: number | null;
12
12
  height: number | null;
@@ -6,31 +6,38 @@ import { imageProjection } from '../presentation/image-projection.js';
6
6
  import imagesRuntimeService from '../services/images-runtime.service.js';
7
7
  export default defineModel(async (input, invocation) => {
8
8
  invocation.signal.throwIfAborted();
9
- const request = deleteImageSchema.parse(input);
9
+ const command = deleteImageSchema.parse(input);
10
10
  const { store, storage, origin } = await loadService(imagesRuntimeService);
11
11
  invocation.signal.throwIfAborted();
12
- const row = await store.read(request.id);
13
- if (row.sha256 !== request.expectedSha256)
12
+ const row = await store.read(command.id);
13
+ if (row.sha256 !== command.expectedSha256) {
14
14
  throw new ImageError('HASH_CONFLICT', '图片摘要不匹配,删除未执行');
15
+ }
15
16
  if (row.status === 'deleted')
16
17
  return imageProjection(row, origin());
17
- if (row.status !== 'ready' && row.status !== 'deleting')
18
+ if (row.status !== 'ready' && row.status !== 'deleting') {
18
19
  throw new ImageError('STATE_CONFLICT', '当前图片不可删除');
20
+ }
19
21
  invocation.signal.throwIfAborted();
20
- if (row.status === 'ready' && !await store.compareAndSet(row.id, 'ready', { status: 'deleting' }, invocation.signal)) {
22
+ const acquiredDeletion = row.status === 'ready'
23
+ ? await store.compareAndSet(row.id, 'ready', { status: 'deleting' }, invocation.signal)
24
+ : true;
25
+ if (!acquiredDeletion) {
21
26
  const current = await store.read(row.id);
22
27
  if (current.status === 'deleted')
23
28
  return imageProjection(current, origin());
24
- if (current.status !== 'deleting')
29
+ if (current.status !== 'deleting') {
25
30
  throw new ImageError('STATE_CONFLICT', '图片状态已改变,请重新读取');
31
+ }
26
32
  }
27
33
  // Once origin reads are disabled, finish cleanup even if the caller disconnects.
28
34
  if (row.relativePath)
29
35
  await storage.remove(row.relativePath);
30
36
  await store.compareAndSet(row.id, 'deleting', { status: 'deleted', deletedAt: new Date() });
31
37
  const deleted = await store.read(row.id);
32
- if (deleted.status !== 'deleted')
38
+ if (deleted.status !== 'deleted') {
33
39
  throw new ImageError('STATE_CONFLICT', '图片状态已改变,请重新读取');
40
+ }
34
41
  return imageProjection(deleted, origin());
35
42
  });
36
43
  //# sourceMappingURL=delete-image.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete-image.model.js","sourceRoot":"","sources":["../../src/models/delete-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAsB,MAAM,qCAAqC,CAAC;AAC1F,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CAAkC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IACtF,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3E,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,cAAc;QAAE,MAAM,IAAI,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAClG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC5G,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACrH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC7F,CAAC;IACD,iFAAiF;IACjF,IAAI,GAAG,CAAC,YAAY;QAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC1F,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"delete-image.model.js","sourceRoot":"","sources":["../../src/models/delete-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAsB,MAAM,qCAAqC,CAAC;AAC1F,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAC1B,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3E,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACxD,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO;QAC7C,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,CACzB,GAAG,CAAC,EAAE,EACN,OAAO,EACP,EAAE,MAAM,EAAE,UAAU,EAAE,EACtB,UAAU,CAAC,MAAM,CAClB;QACD,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,iFAAiF;IACjF,IAAI,GAAG,CAAC,YAAY;QAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,aAAa,CACvB,GAAG,CAAC,EAAE,EACN,UAAU,EACV,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAC7C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5C,CAAC,CACF,CAAC"}
@@ -5,11 +5,14 @@ import { imageProjection } from '../presentation/image-projection.js';
5
5
  import imagesRuntimeService from '../services/images-runtime.service.js';
6
6
  export default defineModel(async (input, invocation) => {
7
7
  invocation.signal.throwIfAborted();
8
- const request = listImageSchema.parse(input);
8
+ const query = listImageSchema.parse(input);
9
9
  const { store, origin } = await loadService(imagesRuntimeService);
10
10
  invocation.signal.throwIfAborted();
11
- const result = await store.list(request);
11
+ const result = await store.list(query);
12
12
  invocation.signal.throwIfAborted();
13
- return { ...result, items: result.items.map((row) => imageProjection(row, origin())) };
13
+ return {
14
+ ...result,
15
+ items: result.items.map((row) => imageProjection(row, origin())),
16
+ };
14
17
  });
15
18
  //# sourceMappingURL=list-image.model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-image.model.js","sourceRoot":"","sources":["../../src/models/list-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAyB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAkB,MAAM,qCAAqC,CAAC;AACtF,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CAA8B,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAClF,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AACzF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"list-image.model.js","sourceRoot":"","sources":["../../src/models/list-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAkB,MAAM,qCAAqC,CAAC;AACtF,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAC1B,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;KACjE,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@hile/model").ModelDefinition<Record<string, never>, import("@zlooks.cn/event-bus").EventCatalog>;
2
+ export default _default;
3
+ //# sourceMappingURL=read-image-event-catalog.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-image-event-catalog.model.d.ts","sourceRoot":"","sources":["../../src/models/read-image-event-catalog.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { defineModel } from '@hile/model';
2
+ import { IMAGES_EVENT_CATALOG } from '@zlooks.cn/images-shared';
3
+ export default defineModel(async (_input, invocation) => {
4
+ invocation.signal.throwIfAborted();
5
+ return IMAGES_EVENT_CATALOG;
6
+ });
7
+ //# sourceMappingURL=read-image-event-catalog.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-image-event-catalog.model.js","sourceRoot":"","sources":["../../src/models/read-image-event-catalog.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,eAAe,WAAW,CACxB,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAC3B,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CACF,CAAC"}
@@ -5,7 +5,7 @@ declare const _default: import("@hile/model").ModelDefinition<{
5
5
  originalFilename: string | null;
6
6
  status: "deleted" | "deleting" | "failed" | "ready" | "uploading";
7
7
  url: string | null;
8
- mediaType: string | null;
8
+ mediaType: "image/avif" | "image/gif" | "image/jpeg" | "image/png" | "image/webp" | null;
9
9
  byteSize: number | null;
10
10
  width: number | null;
11
11
  height: number | null;
@@ -5,10 +5,10 @@ import { imageProjection } from '../presentation/image-projection.js';
5
5
  import imagesRuntimeService from '../services/images-runtime.service.js';
6
6
  export default defineModel(async (input, invocation) => {
7
7
  invocation.signal.throwIfAborted();
8
- const request = readImageSchema.parse(input);
8
+ const query = readImageSchema.parse(input);
9
9
  const { store, origin } = await loadService(imagesRuntimeService);
10
10
  invocation.signal.throwIfAborted();
11
- const row = await store.read(request.id);
11
+ const row = await store.read(query.id);
12
12
  invocation.signal.throwIfAborted();
13
13
  return imageProjection(row, origin());
14
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"read-image.model.js","sourceRoot":"","sources":["../../src/models/read-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAsB,MAAM,qCAAqC,CAAC;AAC1F,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CAAgC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IACpF,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"read-image.model.js","sourceRoot":"","sources":["../../src/models/read-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAsB,MAAM,qCAAqC,CAAC;AAC1F,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAC1B,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAClE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC,CACF,CAAC"}
@@ -1,13 +1,17 @@
1
- import { type UploadImageInput } from '../domain/schema.js';
2
1
  declare const _default: import("@hile/model").ModelDefinition<{
3
2
  actor: string;
4
- request: UploadImageInput;
3
+ upload: {
4
+ idempotencyKey: string;
5
+ filename?: string | undefined;
6
+ source: "base64";
7
+ base64: string;
8
+ };
5
9
  }, {
6
10
  id: string;
7
11
  originalFilename: string | null;
8
12
  status: "deleted" | "deleting" | "failed" | "ready" | "uploading";
9
13
  url: string | null;
10
- mediaType: string | null;
14
+ mediaType: "image/avif" | "image/gif" | "image/jpeg" | "image/png" | "image/webp" | null;
11
15
  byteSize: number | null;
12
16
  width: number | null;
13
17
  height: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"upload-image.model.d.ts","sourceRoot":"","sources":["../../src/models/upload-image.model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;;WAO3C,MAAM;aAAW,gBAAgB"}
1
+ {"version":3,"file":"upload-image.model.d.ts","sourceRoot":"","sources":["../../src/models/upload-image.model.ts"],"names":[],"mappings":""}
@@ -1,8 +1,8 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { loadService } from '@hile/core';
3
3
  import { defineModel } from '@hile/model';
4
+ import { imageUploadCommandSchema } from '@zlooks.cn/images-shared';
4
5
  import { ImageError } from '../domain/image-error.js';
5
- import { uploadImageSchema } from '../domain/schema.js';
6
6
  import { inspectImage } from '../storage/inspect-image.js';
7
7
  import { imageRelativePath } from '../storage/image-path.js';
8
8
  import { readUploadBytes } from '../storage/read-upload-bytes.js';
@@ -10,12 +10,13 @@ import { imageProjection } from '../presentation/image-projection.js';
10
10
  import imagesRuntimeService from '../services/images-runtime.service.js';
11
11
  export default defineModel(async (input, invocation) => {
12
12
  invocation.signal.throwIfAborted();
13
- const request = uploadImageSchema.parse(input.request);
13
+ const command = imageUploadCommandSchema.parse(input);
14
+ const upload = command.upload;
14
15
  const { store, storage, origin } = await loadService(imagesRuntimeService);
15
16
  const signal = AbortSignal.any([invocation.signal, AbortSignal.timeout(45_000)]);
16
17
  signal.throwIfAborted();
17
- const hash = createHash('sha256').update(JSON.stringify(request)).digest('hex');
18
- const reserved = await store.reserve(input.actor, request.idempotencyKey, hash, request.filename ?? null);
18
+ const hash = createHash('sha256').update(JSON.stringify(upload)).digest('hex');
19
+ const reserved = await store.reserve(command.actor, upload.idempotencyKey, hash, upload.filename ?? null);
19
20
  if (!reserved.created) {
20
21
  if (reserved.row.status === 'ready')
21
22
  return imageProjection(reserved.row, origin());
@@ -23,7 +24,7 @@ export default defineModel(async (input, invocation) => {
23
24
  }
24
25
  const id = reserved.row.id;
25
26
  try {
26
- const bytes = await readUploadBytes(request, signal);
27
+ const bytes = await readUploadBytes(upload, signal);
27
28
  signal.throwIfAborted();
28
29
  const metadata = await inspectImage(bytes);
29
30
  signal.throwIfAborted();
@@ -35,13 +36,13 @@ export default defineModel(async (input, invocation) => {
35
36
  return imageProjection(await store.read(id), origin());
36
37
  }
37
38
  catch (error) {
38
- // Re-read before cleanup: a lost DB reply may conceal a successful ready commit.
39
39
  const current = await store.read(id);
40
40
  if (current.status === 'ready')
41
41
  return imageProjection(current, origin());
42
42
  if (current.status === 'uploading') {
43
43
  await store.transition(id, 'uploading', {
44
- status: 'failed', failureCode: error instanceof ImageError ? error.code : 'UPLOAD_FAILED',
44
+ status: 'failed',
45
+ failureCode: error instanceof ImageError ? error.code : 'UPLOAD_FAILED',
45
46
  });
46
47
  }
47
48
  if (current.relativePath)
@@ -1 +1 @@
1
- {"version":3,"file":"upload-image.model.js","sourceRoot":"","sources":["../../src/models/upload-image.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-image.model.js","sourceRoot":"","sources":["../../src/models/upload-image.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAA2B,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAsB,MAAM,qCAAqC,CAAC;AAC1F,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,eAAe,WAAW,CACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAC1B,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAClC,OAAO,CAAC,KAAK,EACb,MAAM,CAAC,cAAc,EACrB,IAAI,EACJ,MAAM,CAAC,QAAQ,IAAI,IAAI,CACxB,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,gCAAgC,CACjC,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,UAAU,CACpB,EAAE,EACF,WAAW,EACX,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,EACxC,MAAM,CACP,CAAC;QACF,OAAO,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;aACxE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,YAAY;YAAE,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { EntitySchema } from 'typeorm';
2
+ import type { ImageMetadata } from '@zlooks.cn/images-shared';
2
3
  export interface ImageRow {
3
4
  id: string;
4
5
  createdBy: string;
@@ -6,7 +7,7 @@ export interface ImageRow {
6
7
  uploadRequestFingerprint: string;
7
8
  status: 'uploading' | 'ready' | 'failed' | 'deleting' | 'deleted';
8
9
  originalFilename: string | null;
9
- mediaType: string | null;
10
+ mediaType: ImageMetadata['mediaType'];
10
11
  extension: string | null;
11
12
  byteSize: number | null;
12
13
  width: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/persistence/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAC;IAC9F,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACpF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,SAAS,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9D,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,eAAO,MAAM,WAAW,wBAmBtB,CAAC;AAEH,eAAO,MAAM,aAAa,mCAAyB,CAAC"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/persistence/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,WAAW,wBA4FtB,CAAC;AAEH,eAAO,MAAM,aAAa,mCAAyB,CAAC"}
@@ -1,23 +1,96 @@
1
1
  import { EntitySchema } from 'typeorm';
2
2
  export const ImageEntity = new EntitySchema({
3
- name: 'Image', tableName: 'images',
3
+ name: 'Image',
4
+ tableName: 'images',
4
5
  columns: {
5
- id: { type: 'uuid', primary: true }, createdBy: { name: 'created_by', type: 'varchar', length: 128 },
6
- uploadIdempotencyKey: { name: 'upload_idempotency_key', type: 'varchar', length: 128 },
7
- uploadRequestFingerprint: { name: 'upload_request_fingerprint', type: 'varchar', length: 64 },
8
- status: { type: 'varchar', length: 16 }, originalFilename: { name: 'original_filename', type: 'varchar', length: 200, nullable: true },
9
- mediaType: { name: 'media_type', type: 'varchar', length: 64, nullable: true }, extension: { type: 'varchar', length: 8, nullable: true },
10
- byteSize: { name: 'byte_size', type: 'integer', nullable: true }, width: { type: 'integer', nullable: true }, height: { type: 'integer', nullable: true },
11
- sha256: { type: 'varchar', length: 64, nullable: true }, relativePath: { name: 'relative_path', type: 'varchar', length: 128, nullable: true },
6
+ id: {
7
+ type: 'uuid',
8
+ primary: true,
9
+ },
10
+ createdBy: {
11
+ name: 'created_by',
12
+ type: 'varchar',
13
+ length: 128,
14
+ },
15
+ uploadIdempotencyKey: {
16
+ name: 'upload_idempotency_key',
17
+ type: 'varchar',
18
+ length: 128,
19
+ },
20
+ uploadRequestFingerprint: {
21
+ name: 'upload_request_fingerprint',
22
+ type: 'varchar',
23
+ length: 64,
24
+ },
25
+ status: {
26
+ type: 'varchar',
27
+ length: 16,
28
+ },
29
+ originalFilename: {
30
+ name: 'original_filename',
31
+ type: 'varchar',
32
+ length: 200,
33
+ nullable: true,
34
+ },
35
+ mediaType: {
36
+ name: 'media_type',
37
+ type: 'varchar',
38
+ length: 64,
39
+ nullable: true,
40
+ },
41
+ extension: {
42
+ type: 'varchar',
43
+ length: 8,
44
+ nullable: true,
45
+ },
46
+ byteSize: {
47
+ name: 'byte_size',
48
+ type: 'integer',
49
+ nullable: true,
50
+ },
51
+ width: {
52
+ type: 'integer',
53
+ nullable: true,
54
+ },
55
+ height: {
56
+ type: 'integer',
57
+ nullable: true,
58
+ },
59
+ sha256: {
60
+ type: 'varchar',
61
+ length: 64,
62
+ nullable: true,
63
+ },
64
+ relativePath: {
65
+ name: 'relative_path',
66
+ type: 'varchar',
67
+ length: 128,
68
+ nullable: true,
69
+ },
12
70
  failureCode: { name: 'failure_code', type: 'varchar', length: 64, nullable: true },
13
71
  createdAt: { name: 'created_at', type: 'timestamptz', precision: 3, createDate: true },
14
72
  readyAt: { name: 'ready_at', type: 'timestamptz', precision: 3, nullable: true },
15
73
  deletedAt: { name: 'deleted_at', type: 'timestamptz', precision: 3, nullable: true },
16
- version: { type: 'integer', version: true },
74
+ version: {
75
+ type: 'integer',
76
+ version: true,
77
+ default: 1,
78
+ },
17
79
  },
18
- uniques: [{ name: 'images_upload_actor_key', columns: ['createdBy', 'uploadIdempotencyKey'] }],
19
- checks: [{ name: 'chk_images_version', expression: `"version" > 0` }],
20
- indices: [{ columns: ['createdAt', 'id'] }, { columns: ['status', 'createdAt', 'id'] }, { columns: ['createdBy', 'createdAt', 'id'] }, { columns: ['sha256'] }],
80
+ uniques: [{
81
+ name: 'images_upload_actor_key',
82
+ columns: ['createdBy', 'uploadIdempotencyKey'],
83
+ }],
84
+ checks: [{
85
+ name: 'chk_images_version',
86
+ expression: `"version" > 0`,
87
+ }],
88
+ indices: [
89
+ { columns: ['createdAt', 'id'] },
90
+ { columns: ['status', 'createdAt', 'id'] },
91
+ { columns: ['createdBy', 'createdAt', 'id'] },
92
+ { columns: ['sha256'] },
93
+ ],
21
94
  });
22
95
  export const imageEntities = [ImageEntity];
23
96
  //# sourceMappingURL=entities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/persistence/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/persistence/entities.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,10 @@
1
+ import type { ImageMetadata } from '@zlooks.cn/images-shared';
1
2
  import type { ImageRow } from '../persistence/entities.js';
2
- export type ImageMetadata = ReturnType<typeof imageProjection>;
3
+ export type { ImageMetadata };
3
4
  export interface ImagePage {
4
5
  items: ImageMetadata[];
5
6
  hasMore: boolean;
6
7
  nextCursor: string | null;
7
8
  }
8
- export declare function imageProjection(row: ImageRow, origin: string): {
9
- id: string;
10
- originalFilename: string | null;
11
- status: "deleted" | "deleting" | "failed" | "ready" | "uploading";
12
- url: string | null;
13
- mediaType: string | null;
14
- byteSize: number | null;
15
- width: number | null;
16
- height: number | null;
17
- sha256: string | null;
18
- createdBy: string;
19
- createdAt: string;
20
- readyAt: string | null;
21
- deletedAt: string | null;
22
- failureCode: string | null;
23
- };
9
+ export declare function imageProjection(row: ImageRow, origin: string): ImageMetadata;
24
10
  //# sourceMappingURL=image-projection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-projection.d.ts","sourceRoot":"","sources":["../../src/presentation/image-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC/D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAEzD,EAAE;IACF,gBAAgB;IAChB,MAAM;IACN,GAAG;IACH,SAAS;IACT,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,WAAW;EAEd"}
1
+ {"version":3,"file":"image-projection.d.ts","sourceRoot":"","sources":["../../src/presentation/image-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,YAAY,EAAE,aAAa,EAAE,CAAC;AAC9B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAiB5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-projection.js","sourceRoot":"","sources":["../../src/presentation/image-projection.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,eAAe,CAAC,GAAa,EAAE,MAAc;IAC3D,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACrG,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI;QAC3C,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;QAC/C,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"image-projection.js","sourceRoot":"","sources":["../../src/presentation/image-projection.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,eAAe,CAAC,GAAa,EAAE,MAAc;IAC3D,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACrG,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI;QAC3C,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;QAC/C,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC"}
@@ -1,4 +1,8 @@
1
- import { Application } from '@hile/micro';
2
- declare const _default: import("@hile/core").ServiceRegisterProps<Application>;
1
+ import { Application, type MicroBinding } from '@hile/micro';
2
+ import { imagesMicroContract } from '@zlooks.cn/images-shared';
3
+ declare const _default: import("@hile/core").ServiceRegisterProps<Readonly<{
4
+ application: Application;
5
+ contractBinding: MicroBinding<typeof imagesMicroContract>;
6
+ }>>;
3
7
  export default _default;
4
8
  //# sourceMappingURL=application.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.service.d.ts","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"application.service.d.ts","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAqB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;;iBAMhD,WAAW;qBACP,YAAY,CAAC,OAAO,mBAAmB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { fileURLToPath } from 'node:url';
2
2
  import { defineService } from '@hile/core';
3
- import { Application } from '@hile/micro';
3
+ import { Application, loadMicroContract } from '@hile/micro';
4
+ import { imagesMicroContract } from '@zlooks.cn/images-shared';
4
5
  import { parseAdvertiseHost, parseRegistryBootstrap } from '@zlooks.cn/registry-config';
5
6
  import { detect } from 'detect-port';
6
7
  import { IMAGES_NAMESPACE } from '../identity.js';
@@ -15,8 +16,14 @@ export default defineService('zlooks.images.application', async (shutdown) => {
15
16
  registry,
16
17
  ...(advertiseHost ? { advertiseHost } : {}),
17
18
  });
18
- await application.load(fileURLToPath(new URL('../messages', import.meta.url)));
19
- shutdown(await application.listen(await detect()));
20
- return application;
19
+ const contractBinding = await loadMicroContract(application, imagesMicroContract, fileURLToPath(new URL('../messages', import.meta.url)));
20
+ try {
21
+ shutdown(await application.listen(await detect()));
22
+ return { application, contractBinding };
23
+ }
24
+ catch (error) {
25
+ await contractBinding.close();
26
+ throw error;
27
+ }
21
28
  });
22
29
  //# sourceMappingURL=application.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.service.js","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAe,aAAa,CAAC,2BAA2B,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACxC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACzC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,gBAAgB;QAC3B,QAAQ;QACR,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"application.service.js","sourceRoot":"","sources":["../../src/services/application.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAqB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOlD,eAAe,aAAa,CAC1B,2BAA2B,EAC3B,KAAK,EAAE,QAAQ,EAAE,EAAE;IACjB,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACtC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACxC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACzC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,gBAAgB;QAC3B,QAAQ;QACR,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAC7C,WAAW,EACX,mBAAmB,EACnB,aAAa,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CACvD,CAAC;IACF,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -4,7 +4,7 @@ import { parsePublicHostConfig, PUBLIC_HOST_CONFIG_TOPIC_KEY } from '@zlooks.cn/
4
4
  import { registryConfigTopic, subscribeRegistryConfig } from '@zlooks.cn/registry-config';
5
5
  import applicationService from './application.service.js';
6
6
  export default defineService('zlooks.images.config', async (shutdown) => {
7
- const application = await loadService(applicationService);
7
+ const { application } = await loadService(applicationService);
8
8
  const subscriber = await subscribeRegistryConfig(application, {
9
9
  sources: {
10
10
  redis: { topic: registryConfigTopic('redis'), parse: parseRedisConfig },
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,eAAe,aAAa,CAAC,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACtE,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE;QAC5D,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACvE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE;YAChF,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;SACvG;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KAC1H,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAE1D,eAAe,aAAa,CAAC,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACtE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE;QAC5D,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACvE,QAAQ,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE;YAChF,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;SACvG;QACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CACnB,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KACtG,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { defineService, loadService } from '@hile/core';
2
2
  import { createDataSource } from '@hile/typeorm';
3
+ import { prepareImagesSchema } from '../migrations/index.js';
3
4
  import { imageEntities } from '../persistence/entities.js';
4
5
  import configService from './config.service.js';
5
6
  export default defineService('zlooks.images.database', async (shutdown) => {
@@ -13,10 +14,17 @@ export default defineService('zlooks.images.database', async (shutdown) => {
13
14
  database: config.database,
14
15
  ssl: config.ssl,
15
16
  poolSize: config.poolSize,
16
- synchronize: true,
17
+ synchronize: false,
17
18
  migrationsRun: false,
18
19
  entities: [...imageEntities],
19
20
  });
21
+ try {
22
+ await prepareImagesSchema(database);
23
+ }
24
+ catch (error) {
25
+ await database.destroy();
26
+ throw error;
27
+ }
20
28
  shutdown(() => database.destroy());
21
29
  return database;
22
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/services/database.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,eAAe,aAAa,CAAC,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACxE,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;QACtC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC;KAC7B,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"database.service.js","sourceRoot":"","sources":["../../src/services/database.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,eAAe,aAAa,CAAC,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IACxE,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;QACtC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC;KAC7B,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}