@s-hirano-ist/s-core 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +124 -0
- package/dist/articles/entities/article-entity.d.ts +75 -0
- package/dist/articles/entities/article-entity.d.ts.map +1 -0
- package/dist/articles/entities/article-entity.js +84 -0
- package/dist/articles/entities/article-entity.js.map +1 -0
- package/dist/articles/events/article-created-event.d.ts +12 -0
- package/dist/articles/events/article-created-event.d.ts.map +1 -0
- package/dist/articles/events/article-created-event.js +15 -0
- package/dist/articles/events/article-created-event.js.map +1 -0
- package/dist/articles/events/article-deleted-event.d.ts +9 -0
- package/dist/articles/events/article-deleted-event.d.ts.map +1 -0
- package/dist/articles/events/article-deleted-event.js +12 -0
- package/dist/articles/events/article-deleted-event.js.map +1 -0
- package/dist/articles/events/article-updated-event.d.ts +12 -0
- package/dist/articles/events/article-updated-event.d.ts.map +1 -0
- package/dist/articles/events/article-updated-event.js +15 -0
- package/dist/articles/events/article-updated-event.js.map +1 -0
- package/dist/articles/index.d.ts +12 -0
- package/dist/articles/index.d.ts.map +1 -0
- package/dist/articles/index.js +17 -0
- package/dist/articles/index.js.map +1 -0
- package/dist/articles/repositories/articles-command-repository.interface.d.ts +8 -0
- package/dist/articles/repositories/articles-command-repository.interface.d.ts.map +1 -0
- package/dist/articles/repositories/articles-command-repository.interface.js +2 -0
- package/dist/articles/repositories/articles-command-repository.interface.js.map +1 -0
- package/dist/articles/repositories/articles-query-repository.interface.d.ts +44 -0
- package/dist/articles/repositories/articles-query-repository.interface.d.ts.map +1 -0
- package/dist/articles/repositories/articles-query-repository.interface.js +2 -0
- package/dist/articles/repositories/articles-query-repository.interface.js.map +1 -0
- package/dist/articles/repositories/category-query-repository.interface.d.ts +9 -0
- package/dist/articles/repositories/category-query-repository.interface.d.ts.map +1 -0
- package/dist/articles/repositories/category-query-repository.interface.js +2 -0
- package/dist/articles/repositories/category-query-repository.interface.js.map +1 -0
- package/dist/articles/services/articles-domain-service.d.ts +18 -0
- package/dist/articles/services/articles-domain-service.d.ts.map +1 -0
- package/dist/articles/services/articles-domain-service.js +58 -0
- package/dist/articles/services/articles-domain-service.js.map +1 -0
- package/dist/articles/types/cache-strategy.d.ts +6 -0
- package/dist/articles/types/cache-strategy.d.ts.map +1 -0
- package/dist/articles/types/cache-strategy.js +2 -0
- package/dist/articles/types/cache-strategy.js.map +1 -0
- package/dist/articles/types/query-params.d.ts +23 -0
- package/dist/articles/types/query-params.d.ts.map +1 -0
- package/dist/articles/types/query-params.js +2 -0
- package/dist/articles/types/query-params.js.map +1 -0
- package/dist/articles/types/sort-order.d.ts +2 -0
- package/dist/articles/types/sort-order.d.ts.map +1 -0
- package/dist/articles/types/sort-order.js +2 -0
- package/dist/articles/types/sort-order.js.map +1 -0
- package/dist/books/entities/books-entity.d.ts +84 -0
- package/dist/books/entities/books-entity.d.ts.map +1 -0
- package/dist/books/entities/books-entity.js +71 -0
- package/dist/books/entities/books-entity.js.map +1 -0
- package/dist/books/events/book-created-event.d.ts +10 -0
- package/dist/books/events/book-created-event.d.ts.map +1 -0
- package/dist/books/events/book-created-event.js +13 -0
- package/dist/books/events/book-created-event.js.map +1 -0
- package/dist/books/events/book-deleted-event.d.ts +9 -0
- package/dist/books/events/book-deleted-event.d.ts.map +1 -0
- package/dist/books/events/book-deleted-event.js +12 -0
- package/dist/books/events/book-deleted-event.js.map +1 -0
- package/dist/books/events/book-updated-event.d.ts +10 -0
- package/dist/books/events/book-updated-event.d.ts.map +1 -0
- package/dist/books/events/book-updated-event.js +13 -0
- package/dist/books/events/book-updated-event.js.map +1 -0
- package/dist/books/index.d.ts +11 -0
- package/dist/books/index.d.ts.map +1 -0
- package/dist/books/index.js +16 -0
- package/dist/books/index.js.map +1 -0
- package/dist/books/repositories/books-command-repository.interface.d.ts +9 -0
- package/dist/books/repositories/books-command-repository.interface.d.ts.map +1 -0
- package/dist/books/repositories/books-command-repository.interface.js +2 -0
- package/dist/books/repositories/books-command-repository.interface.js.map +1 -0
- package/dist/books/repositories/books-query-repository.interface.d.ts +54 -0
- package/dist/books/repositories/books-query-repository.interface.d.ts.map +1 -0
- package/dist/books/repositories/books-query-repository.interface.js +2 -0
- package/dist/books/repositories/books-query-repository.interface.js.map +1 -0
- package/dist/books/services/books-domain-service.d.ts +18 -0
- package/dist/books/services/books-domain-service.d.ts.map +1 -0
- package/dist/books/services/books-domain-service.js +57 -0
- package/dist/books/services/books-domain-service.js.map +1 -0
- package/dist/books/types/cache-strategy.d.ts +6 -0
- package/dist/books/types/cache-strategy.d.ts.map +1 -0
- package/dist/books/types/cache-strategy.js +2 -0
- package/dist/books/types/cache-strategy.js.map +1 -0
- package/dist/books/types/query-params.d.ts +14 -0
- package/dist/books/types/query-params.d.ts.map +1 -0
- package/dist/books/types/query-params.js +2 -0
- package/dist/books/types/query-params.js.map +1 -0
- package/dist/books/types/sort-order.d.ts +2 -0
- package/dist/books/types/sort-order.d.ts.map +1 -0
- package/dist/books/types/sort-order.js +2 -0
- package/dist/books/types/sort-order.js.map +1 -0
- package/dist/common/entities/common-entity.d.ts +25 -0
- package/dist/common/entities/common-entity.d.ts.map +1 -0
- package/dist/common/entities/common-entity.js +38 -0
- package/dist/common/entities/common-entity.js.map +1 -0
- package/dist/common/events/base-domain-event.d.ts +15 -0
- package/dist/common/events/base-domain-event.d.ts.map +1 -0
- package/dist/common/events/base-domain-event.js +14 -0
- package/dist/common/events/base-domain-event.js.map +1 -0
- package/dist/common/events/domain-event.interface.d.ts +13 -0
- package/dist/common/events/domain-event.interface.d.ts.map +1 -0
- package/dist/common/events/domain-event.interface.js +2 -0
- package/dist/common/events/domain-event.interface.js.map +1 -0
- package/dist/common/events/system-error-event.d.ts +12 -0
- package/dist/common/events/system-error-event.d.ts.map +1 -0
- package/dist/common/events/system-error-event.js +15 -0
- package/dist/common/events/system-error-event.js.map +1 -0
- package/dist/common/events/system-warning-event.d.ts +12 -0
- package/dist/common/events/system-warning-event.d.ts.map +1 -0
- package/dist/common/events/system-warning-event.js +15 -0
- package/dist/common/events/system-warning-event.js.map +1 -0
- package/dist/common/index.d.ts +9 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +13 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/services/entity-factory.d.ts +2 -0
- package/dist/common/services/entity-factory.d.ts.map +1 -0
- package/dist/common/services/entity-factory.js +13 -0
- package/dist/common/services/entity-factory.js.map +1 -0
- package/dist/common/services/id-generator.d.ts +5 -0
- package/dist/common/services/id-generator.d.ts.map +1 -0
- package/dist/common/services/id-generator.js +4 -0
- package/dist/common/services/id-generator.js.map +1 -0
- package/dist/common/types/search-types.d.ts +31 -0
- package/dist/common/types/search-types.d.ts.map +1 -0
- package/dist/common/types/search-types.js +2 -0
- package/dist/common/types/search-types.js.map +1 -0
- package/dist/errors/error-classes.d.ts +16 -0
- package/dist/errors/error-classes.d.ts.map +1 -0
- package/dist/errors/error-classes.js +31 -0
- package/dist/errors/error-classes.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/images/entities/image-entity.d.ts +98 -0
- package/dist/images/entities/image-entity.d.ts.map +1 -0
- package/dist/images/entities/image-entity.js +90 -0
- package/dist/images/entities/image-entity.js.map +1 -0
- package/dist/images/events/image-created-event.d.ts +9 -0
- package/dist/images/events/image-created-event.d.ts.map +1 -0
- package/dist/images/events/image-created-event.js +12 -0
- package/dist/images/events/image-created-event.js.map +1 -0
- package/dist/images/events/image-deleted-event.d.ts +9 -0
- package/dist/images/events/image-deleted-event.d.ts.map +1 -0
- package/dist/images/events/image-deleted-event.js +12 -0
- package/dist/images/events/image-deleted-event.js.map +1 -0
- package/dist/images/events/image-updated-event.d.ts +10 -0
- package/dist/images/events/image-updated-event.d.ts.map +1 -0
- package/dist/images/events/image-updated-event.js +13 -0
- package/dist/images/events/image-updated-event.js.map +1 -0
- package/dist/images/index.d.ts +11 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +16 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/repositories/images-command-repository.interface.d.ts +9 -0
- package/dist/images/repositories/images-command-repository.interface.d.ts.map +1 -0
- package/dist/images/repositories/images-command-repository.interface.js +2 -0
- package/dist/images/repositories/images-command-repository.interface.js.map +1 -0
- package/dist/images/repositories/images-query-repository.interface.d.ts +26 -0
- package/dist/images/repositories/images-query-repository.interface.d.ts.map +1 -0
- package/dist/images/repositories/images-query-repository.interface.js +2 -0
- package/dist/images/repositories/images-query-repository.interface.js.map +1 -0
- package/dist/images/services/images-domain-service.d.ts +17 -0
- package/dist/images/services/images-domain-service.d.ts.map +1 -0
- package/dist/images/services/images-domain-service.js +42 -0
- package/dist/images/services/images-domain-service.js.map +1 -0
- package/dist/images/types/cache-strategy.d.ts +6 -0
- package/dist/images/types/cache-strategy.d.ts.map +1 -0
- package/dist/images/types/cache-strategy.js +2 -0
- package/dist/images/types/cache-strategy.js.map +1 -0
- package/dist/images/types/query-params.d.ts +14 -0
- package/dist/images/types/query-params.d.ts.map +1 -0
- package/dist/images/types/query-params.js +2 -0
- package/dist/images/types/query-params.js.map +1 -0
- package/dist/images/types/sort-order.d.ts +2 -0
- package/dist/images/types/sort-order.d.ts.map +1 -0
- package/dist/images/types/sort-order.js +2 -0
- package/dist/images/types/sort-order.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/notes/entities/note-entity.d.ts +43 -0
- package/dist/notes/entities/note-entity.d.ts.map +1 -0
- package/dist/notes/entities/note-entity.js +48 -0
- package/dist/notes/entities/note-entity.js.map +1 -0
- package/dist/notes/events/note-created-event.d.ts +10 -0
- package/dist/notes/events/note-created-event.d.ts.map +1 -0
- package/dist/notes/events/note-created-event.js +13 -0
- package/dist/notes/events/note-created-event.js.map +1 -0
- package/dist/notes/events/note-deleted-event.d.ts +9 -0
- package/dist/notes/events/note-deleted-event.d.ts.map +1 -0
- package/dist/notes/events/note-deleted-event.js +12 -0
- package/dist/notes/events/note-deleted-event.js.map +1 -0
- package/dist/notes/events/note-updated-event.d.ts +10 -0
- package/dist/notes/events/note-updated-event.d.ts.map +1 -0
- package/dist/notes/events/note-updated-event.js +13 -0
- package/dist/notes/events/note-updated-event.js.map +1 -0
- package/dist/notes/index.d.ts +11 -0
- package/dist/notes/index.d.ts.map +1 -0
- package/dist/notes/index.js +16 -0
- package/dist/notes/index.js.map +1 -0
- package/dist/notes/repositories/notes-command-repository.interface.d.ts +8 -0
- package/dist/notes/repositories/notes-command-repository.interface.d.ts.map +1 -0
- package/dist/notes/repositories/notes-command-repository.interface.js +2 -0
- package/dist/notes/repositories/notes-command-repository.interface.js.map +1 -0
- package/dist/notes/repositories/notes-query-repository.interface.d.ts +22 -0
- package/dist/notes/repositories/notes-query-repository.interface.d.ts.map +1 -0
- package/dist/notes/repositories/notes-query-repository.interface.js +2 -0
- package/dist/notes/repositories/notes-query-repository.interface.js.map +1 -0
- package/dist/notes/services/notes-domain-service.d.ts +15 -0
- package/dist/notes/services/notes-domain-service.d.ts.map +1 -0
- package/dist/notes/services/notes-domain-service.js +42 -0
- package/dist/notes/services/notes-domain-service.js.map +1 -0
- package/dist/notes/types/cache-strategy.d.ts +6 -0
- package/dist/notes/types/cache-strategy.d.ts.map +1 -0
- package/dist/notes/types/cache-strategy.js +2 -0
- package/dist/notes/types/cache-strategy.js.map +1 -0
- package/dist/notes/types/query-params.d.ts +14 -0
- package/dist/notes/types/query-params.d.ts.map +1 -0
- package/dist/notes/types/query-params.js +2 -0
- package/dist/notes/types/query-params.js.map +1 -0
- package/dist/notes/types/sort-order.d.ts +2 -0
- package/dist/notes/types/sort-order.d.ts.map +1 -0
- package/dist/notes/types/sort-order.js +2 -0
- package/dist/notes/types/sort-order.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-order.d.ts","sourceRoot":"","sources":["../../../books/types/sort-order.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-order.js","sourceRoot":"","sources":["../../../books/types/sort-order.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const Id: z.core.$ZodBranded<z.ZodDefault<z.ZodUUID>, "Id">;
|
|
3
|
+
export type Id = z.infer<typeof Id>;
|
|
4
|
+
export declare const makeId: (id?: string) => Id;
|
|
5
|
+
export declare const UserId: z.core.$ZodBranded<z.ZodString, "UserId">;
|
|
6
|
+
export type UserId = z.infer<typeof UserId>;
|
|
7
|
+
export declare const makeUserId: (v: string) => UserId;
|
|
8
|
+
export declare const CreatedAt: z.core.$ZodBranded<z.ZodDate, "CreatedAt">;
|
|
9
|
+
export type CreatedAt = z.infer<typeof CreatedAt>;
|
|
10
|
+
export declare const makeCreatedAt: (createdAt?: Date) => CreatedAt;
|
|
11
|
+
export declare const UnexportedStatus: z.ZodLiteral<"UNEXPORTED">;
|
|
12
|
+
export type UnexportedStatus = z.infer<typeof UnexportedStatus>;
|
|
13
|
+
export declare const makeUnexportedStatus: () => UnexportedStatus;
|
|
14
|
+
export declare const ExportedAt: z.core.$ZodBranded<z.ZodDate, "ExportedAt">;
|
|
15
|
+
export type ExportedAt = z.infer<typeof ExportedAt>;
|
|
16
|
+
export declare const makeExportedAt: (exportedAt?: Date) => ExportedAt;
|
|
17
|
+
export declare const ExportedStatus: z.ZodObject<{
|
|
18
|
+
status: z.ZodLiteral<"EXPORTED">;
|
|
19
|
+
exportedAt: z.core.$ZodBranded<z.ZodDate, "ExportedAt">;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
export type ExportedStatus = z.infer<typeof ExportedStatus>;
|
|
22
|
+
export declare const makeExportedStatus: () => ExportedStatus;
|
|
23
|
+
export type Status = UnexportedStatus | ExportedStatus["status"];
|
|
24
|
+
export declare const makeStatus: (status: "UNEXPORTED" | "EXPORTED") => Status;
|
|
25
|
+
//# sourceMappingURL=common-entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-entity.d.ts","sourceRoot":"","sources":["../../../common/entities/common-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,EAAE,mDAGA,CAAC;AAChB,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,KAAG,EAGpC,CAAC;AAEF,eAAO,MAAM,MAAM,2CAAkD,CAAC;AACtE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,MAAyB,CAAC;AAEjE,eAAO,MAAM,SAAS,4CAAgC,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAO,MAAM,aAAa,GAAI,YAAY,IAAI,KAAG,SAGhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,4BAA0B,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,eAAO,MAAM,oBAAoB,QAAO,gBACH,CAAC;AAEtC,eAAO,MAAM,UAAU,6CAAiC,CAAC;AACzD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAO,MAAM,cAAc,GAAI,aAAa,IAAI,KAAG,UAGlD,CAAC;AAEF,eAAO,MAAM,cAAc;;;iBAGzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,eAAO,MAAM,kBAAkB,QAAO,cAC+B,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAGjE,eAAO,MAAM,UAAU,GAAI,QAAQ,YAAY,GAAG,UAAU,KAAG,MAE9D,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { idGenerator } from "../services/id-generator";
|
|
3
|
+
// common value objects
|
|
4
|
+
export const Id = z
|
|
5
|
+
.uuid({ version: "v7" })
|
|
6
|
+
.default(() => idGenerator.uuidv7())
|
|
7
|
+
.brand();
|
|
8
|
+
export const makeId = (id) => {
|
|
9
|
+
if (!id)
|
|
10
|
+
return Id.parse(idGenerator.uuidv7());
|
|
11
|
+
return Id.parse(id);
|
|
12
|
+
};
|
|
13
|
+
export const UserId = z.string().min(1, "required").brand();
|
|
14
|
+
export const makeUserId = (v) => UserId.parse(v);
|
|
15
|
+
export const CreatedAt = z.date().brand();
|
|
16
|
+
export const makeCreatedAt = (createdAt) => {
|
|
17
|
+
if (!createdAt)
|
|
18
|
+
return CreatedAt.parse(new Date());
|
|
19
|
+
return CreatedAt.parse(createdAt);
|
|
20
|
+
};
|
|
21
|
+
export const UnexportedStatus = z.literal("UNEXPORTED");
|
|
22
|
+
export const makeUnexportedStatus = () => UnexportedStatus.parse("UNEXPORTED");
|
|
23
|
+
export const ExportedAt = z.date().brand();
|
|
24
|
+
export const makeExportedAt = (exportedAt) => {
|
|
25
|
+
if (!exportedAt)
|
|
26
|
+
return ExportedAt.parse(new Date());
|
|
27
|
+
return ExportedAt.parse(exportedAt);
|
|
28
|
+
};
|
|
29
|
+
export const ExportedStatus = z.object({
|
|
30
|
+
status: z.literal("EXPORTED"),
|
|
31
|
+
exportedAt: ExportedAt,
|
|
32
|
+
});
|
|
33
|
+
export const makeExportedStatus = () => ExportedStatus.parse({ status: "EXPORTED", exportedAt: new Date() });
|
|
34
|
+
// Legacy compatibility - will be removed in future
|
|
35
|
+
export const makeStatus = (status) => {
|
|
36
|
+
return status;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=common-entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-entity.js","sourceRoot":"","sources":["../../../common/entities/common-entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,uBAAuB;AAEvB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KACjB,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KACvB,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;KACnC,KAAK,EAAQ,CAAC;AAEhB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAW,EAAM,EAAE;IACzC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAY,CAAC;AAEtE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAe,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAgB,EAAa,EAAE;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAqB,EAAE,CAC1D,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAiB,EAAc,EAAE;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7B,UAAU,EAAE,UAAU;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAmB,EAAE,CACtD,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;AAItE,mDAAmD;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAiC,EAAU,EAAE;IACvE,OAAO,MAAgB,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DomainEvent } from "./domain-event.interface";
|
|
2
|
+
export declare abstract class BaseDomainEvent implements DomainEvent {
|
|
3
|
+
readonly eventType: string;
|
|
4
|
+
readonly payload: Record<string, unknown>;
|
|
5
|
+
readonly metadata: {
|
|
6
|
+
timestamp: Date;
|
|
7
|
+
caller: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
};
|
|
10
|
+
constructor(eventType: string, payload: Record<string, unknown>, metadata: {
|
|
11
|
+
caller: string;
|
|
12
|
+
userId: string;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=base-domain-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-domain-event.d.ts","sourceRoot":"","sources":["../../../common/events/base-domain-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,8BAAsB,eAAgB,YAAW,WAAW;IAC3D,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,SAAgB,QAAQ,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;gBAGD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KACf;CASF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class BaseDomainEvent {
|
|
2
|
+
eventType;
|
|
3
|
+
payload;
|
|
4
|
+
metadata;
|
|
5
|
+
constructor(eventType, payload, metadata) {
|
|
6
|
+
this.eventType = eventType;
|
|
7
|
+
this.payload = payload;
|
|
8
|
+
this.metadata = {
|
|
9
|
+
...metadata,
|
|
10
|
+
timestamp: new Date(),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=base-domain-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-domain-event.js","sourceRoot":"","sources":["../../../common/events/base-domain-event.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,eAAe;IACpB,SAAS,CAAS;IAClB,OAAO,CAA0B;IACjC,QAAQ,CAItB;IAEF,YACC,SAAiB,EACjB,OAAgC,EAChC,QAGC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG;YACf,GAAG,QAAQ;YACX,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type DomainEvent = {
|
|
2
|
+
eventType: string;
|
|
3
|
+
payload: Record<string, unknown>;
|
|
4
|
+
metadata: {
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
caller: string;
|
|
7
|
+
userId: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export type DomainEventHandler = {
|
|
11
|
+
handle(event: DomainEvent): Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=domain-event.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.interface.d.ts","sourceRoot":"","sources":["../../../common/events/domain-event.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE;QACT,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.interface.js","sourceRoot":"","sources":["../../../common/events/domain-event.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseDomainEvent } from "./base-domain-event";
|
|
2
|
+
export declare class SystemErrorEvent extends BaseDomainEvent {
|
|
3
|
+
constructor(data: {
|
|
4
|
+
message: string;
|
|
5
|
+
status: number;
|
|
6
|
+
caller: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
extraData?: unknown;
|
|
9
|
+
shouldNotify?: boolean;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=system-error-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-error-event.d.ts","sourceRoot":"","sources":["../../../common/events/system-error-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,eAAe;gBACxC,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB;CAeD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseDomainEvent } from "./base-domain-event";
|
|
2
|
+
export class SystemErrorEvent extends BaseDomainEvent {
|
|
3
|
+
constructor(data) {
|
|
4
|
+
super("system.error", {
|
|
5
|
+
message: data.message,
|
|
6
|
+
status: data.status,
|
|
7
|
+
extraData: data.extraData,
|
|
8
|
+
shouldNotify: data.shouldNotify ?? false,
|
|
9
|
+
}, {
|
|
10
|
+
caller: data.caller,
|
|
11
|
+
userId: data.userId ?? "system",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=system-error-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-error-event.js","sourceRoot":"","sources":["../../../common/events/system-error-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACpD,YAAY,IAOX;QACA,KAAK,CACJ,cAAc,EACd;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;SACxC,EACD;YACC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ;SAC/B,CACD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseDomainEvent } from "./base-domain-event";
|
|
2
|
+
export declare class SystemWarningEvent extends BaseDomainEvent {
|
|
3
|
+
constructor(data: {
|
|
4
|
+
message: string;
|
|
5
|
+
status: number;
|
|
6
|
+
caller: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
extraData?: unknown;
|
|
9
|
+
shouldNotify?: boolean;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=system-warning-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-warning-event.d.ts","sourceRoot":"","sources":["../../../common/events/system-warning-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,kBAAmB,SAAQ,eAAe;gBAC1C,IAAI,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB;CAeD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseDomainEvent } from "./base-domain-event";
|
|
2
|
+
export class SystemWarningEvent extends BaseDomainEvent {
|
|
3
|
+
constructor(data) {
|
|
4
|
+
super("system.warning", {
|
|
5
|
+
message: data.message,
|
|
6
|
+
status: data.status,
|
|
7
|
+
extraData: data.extraData,
|
|
8
|
+
shouldNotify: data.shouldNotify ?? false,
|
|
9
|
+
}, {
|
|
10
|
+
caller: data.caller,
|
|
11
|
+
userId: data.userId ?? "system",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=system-warning-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-warning-event.js","sourceRoot":"","sources":["../../../common/events/system-warning-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACtD,YAAY,IAOX;QACA,KAAK,CACJ,gBAAgB,EAChB;YACC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;SACxC,EACD;YACC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ;SAC/B,CACD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./entities/common-entity";
|
|
2
|
+
export * from "./events/base-domain-event";
|
|
3
|
+
export * from "./events/domain-event.interface";
|
|
4
|
+
export * from "./events/system-error-event";
|
|
5
|
+
export * from "./events/system-warning-event";
|
|
6
|
+
export * from "./services/entity-factory";
|
|
7
|
+
export * from "./services/id-generator";
|
|
8
|
+
export * from "./types/search-types";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../common/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAC;AAGzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAGxC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Entities
|
|
2
|
+
export * from "./entities/common-entity";
|
|
3
|
+
// Events
|
|
4
|
+
export * from "./events/base-domain-event";
|
|
5
|
+
export * from "./events/domain-event.interface";
|
|
6
|
+
export * from "./events/system-error-event";
|
|
7
|
+
export * from "./events/system-warning-event";
|
|
8
|
+
// Services
|
|
9
|
+
export * from "./services/entity-factory";
|
|
10
|
+
export * from "./services/id-generator";
|
|
11
|
+
// Types
|
|
12
|
+
export * from "./types/search-types";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../common/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,cAAc,0BAA0B,CAAC;AAEzC,SAAS;AACT,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAE9C,WAAW;AACX,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AAExC,QAAQ;AACR,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-factory.d.ts","sourceRoot":"","sources":["../../../common/services/entity-factory.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B,GAAI,CAAC,EAAE,SAAS,MAAM,CAAC,KAAG,CAOnE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ZodError } from "zod";
|
|
2
|
+
import { InvalidFormatError, UnexpectedError, } from "../../errors/error-classes";
|
|
3
|
+
export const createEntityWithErrorHandling = (factory) => {
|
|
4
|
+
try {
|
|
5
|
+
return factory();
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
if (error instanceof ZodError)
|
|
9
|
+
throw new InvalidFormatError();
|
|
10
|
+
throw new UnexpectedError();
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=entity-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-factory.js","sourceRoot":"","sources":["../../../common/services/entity-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EACN,kBAAkB,EAClB,eAAe,GACf,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAI,OAAgB,EAAK,EAAE;IACvE,IAAI,CAAC;QACJ,OAAO,OAAO,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAC9D,MAAM,IAAI,eAAe,EAAE,CAAC;IAC7B,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../../common/services/id-generator.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,QAAO,MAAc,CAAC;AAEzC,eAAO,MAAM,WAAW;kBAFE,MAAM;CAEK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../../common/services/id-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC,EAAE,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type ContentType = "articles" | "books" | "notes";
|
|
2
|
+
export type SearchResult = {
|
|
3
|
+
href: string;
|
|
4
|
+
contentType: ContentType;
|
|
5
|
+
title: string;
|
|
6
|
+
snippet: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
rating?: number | null;
|
|
9
|
+
tags?: string[];
|
|
10
|
+
category?: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type SearchQuery = {
|
|
16
|
+
query: string;
|
|
17
|
+
contentTypes?: ContentType[];
|
|
18
|
+
limit?: number;
|
|
19
|
+
};
|
|
20
|
+
export type SearchResultGroup = {
|
|
21
|
+
contentType: ContentType;
|
|
22
|
+
results: SearchResult[];
|
|
23
|
+
totalCount: number;
|
|
24
|
+
};
|
|
25
|
+
export type UnifiedSearchResults = {
|
|
26
|
+
results: SearchResult[];
|
|
27
|
+
groups: SearchResultGroup[];
|
|
28
|
+
totalCount: number;
|
|
29
|
+
query: string;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=search-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-types.d.ts","sourceRoot":"","sources":["../../../common/types/search-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-types.js","sourceRoot":"","sources":["../../../common/types/search-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PushoverError extends Error {
|
|
2
|
+
constructor();
|
|
3
|
+
}
|
|
4
|
+
export declare class UnexpectedError extends Error {
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
export declare class InvalidFormatError extends Error {
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
10
|
+
export declare class DuplicateError extends Error {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare class FileNotAllowedError extends Error {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=error-classes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-classes.d.ts","sourceRoot":"","sources":["../../errors/error-classes.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;;CAKvC;AAED,qBAAa,eAAgB,SAAQ,KAAK;;CAKzC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export class PushoverError extends Error {
|
|
2
|
+
constructor() {
|
|
3
|
+
super("pushoverSend");
|
|
4
|
+
this.name = "PushoverError";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class UnexpectedError extends Error {
|
|
8
|
+
constructor() {
|
|
9
|
+
super("unexpected");
|
|
10
|
+
this.name = "UnexpectedError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class InvalidFormatError extends Error {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("invalidFormat");
|
|
16
|
+
this.name = "InvalidFormatError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class DuplicateError extends Error {
|
|
20
|
+
constructor() {
|
|
21
|
+
super("duplicate");
|
|
22
|
+
this.name = "DuplicateError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class FileNotAllowedError extends Error {
|
|
26
|
+
constructor() {
|
|
27
|
+
super("invalidFileFormat");
|
|
28
|
+
this.name = "FileNotAllowedError";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=error-classes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-classes.js","sourceRoot":"","sources":["../../errors/error-classes.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACvC;QACC,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACzC;QACC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAC/B,CAAC;CACD;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC5C;QACC,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAClC,CAAC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACxC;QACC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC9B,CAAC;CACD;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC7C;QACC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACnC,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../errors/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../errors/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import sharp from "sharp";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { UserId } from "../../common/entities/common-entity";
|
|
4
|
+
export declare const Path: z.core.$ZodBranded<z.ZodString, "Path">;
|
|
5
|
+
export type Path = z.infer<typeof Path>;
|
|
6
|
+
export declare const makePath: (v: string, sanitizeAndUnique: boolean) => Path;
|
|
7
|
+
export declare const ContentType: z.core.$ZodBranded<z.ZodEnum<{
|
|
8
|
+
"image/jpeg": "image/jpeg";
|
|
9
|
+
"image/png": "image/png";
|
|
10
|
+
"image/gif": "image/gif";
|
|
11
|
+
jpeg: "jpeg";
|
|
12
|
+
png: "png";
|
|
13
|
+
}>, "ContentType">;
|
|
14
|
+
export type ContentType = z.infer<typeof ContentType>;
|
|
15
|
+
export declare const makeContentType: (v: string) => ContentType;
|
|
16
|
+
export declare const FileSize: z.core.$ZodBranded<z.ZodNumber, "FileSize">;
|
|
17
|
+
export type FileSize = z.infer<typeof FileSize>;
|
|
18
|
+
export declare const makeFileSize: (v: number) => FileSize;
|
|
19
|
+
export declare const Pixel: z.core.$ZodBranded<z.ZodOptional<z.ZodNumber>, "Pixel">;
|
|
20
|
+
export type Pixel = z.infer<typeof Pixel>;
|
|
21
|
+
export declare const makePixel: (v: number) => Pixel;
|
|
22
|
+
export declare const Tag: z.core.$ZodBranded<z.ZodString, "Tag">;
|
|
23
|
+
export type Tag = z.infer<typeof Tag>;
|
|
24
|
+
export declare const makeTag: (v: string) => Tag;
|
|
25
|
+
export declare const Description: z.core.$ZodBranded<z.ZodOptional<z.ZodString>, "Description">;
|
|
26
|
+
export type Description = z.infer<typeof Description>;
|
|
27
|
+
export declare const makeDescription: (v: string) => Description;
|
|
28
|
+
export declare const makeOriginalBuffer: (file: File) => Promise<Buffer<ArrayBuffer>>;
|
|
29
|
+
export declare const makeThumbnailBufferFromFile: (file: File) => Promise<Buffer<ArrayBufferLike>>;
|
|
30
|
+
export declare const makeThumbnailBufferFromBuffer: (buffer: Buffer) => Promise<Buffer<ArrayBufferLike>>;
|
|
31
|
+
export declare const makeMetadata: (buffer: Buffer) => Promise<sharp.Metadata>;
|
|
32
|
+
export declare const UnexportedImage: z.ZodObject<{
|
|
33
|
+
id: z.core.$ZodBranded<z.ZodDefault<z.ZodUUID>, "Id">;
|
|
34
|
+
userId: z.core.$ZodBranded<z.ZodString, "UserId">;
|
|
35
|
+
path: z.core.$ZodBranded<z.ZodString, "Path">;
|
|
36
|
+
contentType: z.core.$ZodBranded<z.ZodEnum<{
|
|
37
|
+
"image/jpeg": "image/jpeg";
|
|
38
|
+
"image/png": "image/png";
|
|
39
|
+
"image/gif": "image/gif";
|
|
40
|
+
jpeg: "jpeg";
|
|
41
|
+
png: "png";
|
|
42
|
+
}>, "ContentType">;
|
|
43
|
+
fileSize: z.core.$ZodBranded<z.ZodNumber, "FileSize">;
|
|
44
|
+
width: z.core.$ZodBranded<z.ZodOptional<z.ZodNumber>, "Pixel">;
|
|
45
|
+
height: z.core.$ZodBranded<z.ZodOptional<z.ZodNumber>, "Pixel">;
|
|
46
|
+
tags: z.ZodOptional<z.ZodArray<z.core.$ZodBranded<z.ZodString, "Tag">>>;
|
|
47
|
+
description: z.core.$ZodBranded<z.ZodOptional<z.ZodString>, "Description">;
|
|
48
|
+
createdAt: z.core.$ZodBranded<z.ZodDate, "CreatedAt">;
|
|
49
|
+
status: z.ZodLiteral<"UNEXPORTED">;
|
|
50
|
+
}, z.core.$strip>;
|
|
51
|
+
export type UnexportedImage = Readonly<z.infer<typeof UnexportedImage>>;
|
|
52
|
+
declare const ExportedImage: z.ZodObject<{
|
|
53
|
+
id: z.core.$ZodBranded<z.ZodDefault<z.ZodUUID>, "Id">;
|
|
54
|
+
userId: z.core.$ZodBranded<z.ZodString, "UserId">;
|
|
55
|
+
path: z.core.$ZodBranded<z.ZodString, "Path">;
|
|
56
|
+
contentType: z.core.$ZodBranded<z.ZodEnum<{
|
|
57
|
+
"image/jpeg": "image/jpeg";
|
|
58
|
+
"image/png": "image/png";
|
|
59
|
+
"image/gif": "image/gif";
|
|
60
|
+
jpeg: "jpeg";
|
|
61
|
+
png: "png";
|
|
62
|
+
}>, "ContentType">;
|
|
63
|
+
fileSize: z.core.$ZodBranded<z.ZodNumber, "FileSize">;
|
|
64
|
+
width: z.core.$ZodBranded<z.ZodOptional<z.ZodNumber>, "Pixel">;
|
|
65
|
+
height: z.core.$ZodBranded<z.ZodOptional<z.ZodNumber>, "Pixel">;
|
|
66
|
+
tags: z.ZodOptional<z.ZodArray<z.core.$ZodBranded<z.ZodString, "Tag">>>;
|
|
67
|
+
description: z.core.$ZodBranded<z.ZodOptional<z.ZodString>, "Description">;
|
|
68
|
+
createdAt: z.core.$ZodBranded<z.ZodDate, "CreatedAt">;
|
|
69
|
+
status: z.ZodLiteral<"EXPORTED">;
|
|
70
|
+
exportedAt: z.core.$ZodBranded<z.ZodDate, "ExportedAt">;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
type ExportedImage = Readonly<z.infer<typeof ExportedImage>>;
|
|
73
|
+
type CreateImageArgs = Readonly<{
|
|
74
|
+
userId: UserId;
|
|
75
|
+
path: Path;
|
|
76
|
+
contentType: ContentType;
|
|
77
|
+
fileSize: FileSize;
|
|
78
|
+
width?: Pixel;
|
|
79
|
+
height?: Pixel;
|
|
80
|
+
tags?: Array<Tag>;
|
|
81
|
+
description?: Description;
|
|
82
|
+
}>;
|
|
83
|
+
type UpdateImageArgs = Readonly<{
|
|
84
|
+
path?: Path;
|
|
85
|
+
contentType?: ContentType;
|
|
86
|
+
fileSize?: FileSize;
|
|
87
|
+
width?: Pixel;
|
|
88
|
+
height?: Pixel;
|
|
89
|
+
tags?: Array<Tag>;
|
|
90
|
+
description?: Description;
|
|
91
|
+
}>;
|
|
92
|
+
export declare const imageEntity: {
|
|
93
|
+
create: (args: CreateImageArgs) => UnexportedImage;
|
|
94
|
+
update: (image: UnexportedImage, args: UpdateImageArgs) => UnexportedImage;
|
|
95
|
+
export: (image: UnexportedImage) => ExportedImage;
|
|
96
|
+
};
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=image-entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-entity.d.ts","sourceRoot":"","sources":["../../../images/entities/image-entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import sharp from "sharp";
|
|
2
|
+
import z from "zod";
|
|
3
|
+
import { CreatedAt, ExportedStatus, Id, makeCreatedAt, makeExportedStatus, makeId, UnexportedStatus, UserId, } from "../../common/entities/common-entity";
|
|
4
|
+
import { createEntityWithErrorHandling } from "../../common/services/entity-factory";
|
|
5
|
+
import { idGenerator } from "../../common/services/id-generator";
|
|
6
|
+
// NOTE: sync with s-contents/update-db.ts
|
|
7
|
+
const THUMBNAIL_WIDTH = 192;
|
|
8
|
+
const THUMBNAIL_HEIGHT = 192;
|
|
9
|
+
// Value objects
|
|
10
|
+
export const Path = z.string().min(1).brand();
|
|
11
|
+
export const makePath = (v, sanitizeAndUnique) => {
|
|
12
|
+
if (sanitizeAndUnique) {
|
|
13
|
+
const sanitizedFileName = v.replaceAll(/[^a-zA-Z0-9._-]/g, "");
|
|
14
|
+
const path = `${idGenerator.uuidv7()}-${sanitizedFileName}`;
|
|
15
|
+
return Path.parse(path);
|
|
16
|
+
}
|
|
17
|
+
return Path.parse(v);
|
|
18
|
+
};
|
|
19
|
+
export const ContentType = z
|
|
20
|
+
.enum(["image/jpeg", "image/png", "image/gif", "jpeg", "png"])
|
|
21
|
+
.brand();
|
|
22
|
+
export const makeContentType = (v) => ContentType.parse(v);
|
|
23
|
+
export const FileSize = z
|
|
24
|
+
.number()
|
|
25
|
+
.int()
|
|
26
|
+
.nonnegative()
|
|
27
|
+
.max(100 * 1024 * 1024) // 100MB
|
|
28
|
+
.brand();
|
|
29
|
+
export const makeFileSize = (v) => FileSize.parse(v);
|
|
30
|
+
export const Pixel = z.number().int().positive().optional().brand();
|
|
31
|
+
export const makePixel = (v) => Pixel.parse(v);
|
|
32
|
+
export const Tag = z.string().min(1).brand();
|
|
33
|
+
export const makeTag = (v) => Tag.parse(v);
|
|
34
|
+
export const Description = z.string().min(1).optional().brand();
|
|
35
|
+
export const makeDescription = (v) => Description.parse(v);
|
|
36
|
+
export const makeOriginalBuffer = async (file) => {
|
|
37
|
+
return Buffer.from(await file.arrayBuffer());
|
|
38
|
+
};
|
|
39
|
+
export const makeThumbnailBufferFromFile = async (file) => {
|
|
40
|
+
const originalBuffer = Buffer.from(await file.arrayBuffer());
|
|
41
|
+
return await sharp(originalBuffer)
|
|
42
|
+
.resize(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT)
|
|
43
|
+
.toBuffer();
|
|
44
|
+
};
|
|
45
|
+
export const makeThumbnailBufferFromBuffer = async (buffer) => {
|
|
46
|
+
return await sharp(buffer)
|
|
47
|
+
.resize(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT)
|
|
48
|
+
.toBuffer();
|
|
49
|
+
};
|
|
50
|
+
export const makeMetadata = async (buffer) => {
|
|
51
|
+
return sharp(buffer).metadata();
|
|
52
|
+
};
|
|
53
|
+
// Entities
|
|
54
|
+
const Base = z.object({
|
|
55
|
+
id: Id,
|
|
56
|
+
userId: UserId,
|
|
57
|
+
path: Path,
|
|
58
|
+
contentType: ContentType,
|
|
59
|
+
fileSize: FileSize,
|
|
60
|
+
width: Pixel,
|
|
61
|
+
height: Pixel,
|
|
62
|
+
tags: z.array(Tag).optional(),
|
|
63
|
+
description: Description,
|
|
64
|
+
createdAt: CreatedAt,
|
|
65
|
+
});
|
|
66
|
+
export const UnexportedImage = Base.extend({ status: UnexportedStatus });
|
|
67
|
+
const ExportedImage = Base.extend(ExportedStatus.shape);
|
|
68
|
+
export const imageEntity = {
|
|
69
|
+
create: (args) => {
|
|
70
|
+
return createEntityWithErrorHandling(() => Object.freeze({
|
|
71
|
+
id: makeId(),
|
|
72
|
+
status: "UNEXPORTED",
|
|
73
|
+
createdAt: makeCreatedAt(),
|
|
74
|
+
...args,
|
|
75
|
+
}));
|
|
76
|
+
},
|
|
77
|
+
update: (image, args) => {
|
|
78
|
+
return createEntityWithErrorHandling(() => Object.freeze({ ...image, ...args }));
|
|
79
|
+
},
|
|
80
|
+
export: (image) => {
|
|
81
|
+
return createEntityWithErrorHandling(() => {
|
|
82
|
+
const exportedStatus = makeExportedStatus();
|
|
83
|
+
return Object.freeze({
|
|
84
|
+
...image,
|
|
85
|
+
...exportedStatus,
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=image-entity.js.map
|