@nx-ddd/notion 19.0.0-preview.28 → 19.0.0-preview.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +11 -0
  2. package/_testing/entity.d.ts +20 -0
  3. package/_testing/entity.js +44 -0
  4. package/_testing/entity.js.map +1 -0
  5. package/_testing/index.d.ts +1 -0
  6. package/_testing/index.js +5 -0
  7. package/_testing/index.js.map +1 -0
  8. package/converter/converter.js +37 -0
  9. package/converter/converter.js.map +1 -0
  10. package/converter/index.js +5 -0
  11. package/converter/index.js.map +1 -0
  12. package/decorators/decorators.js +58 -0
  13. package/decorators/decorators.js.map +1 -0
  14. package/decorators/index.js +5 -0
  15. package/decorators/index.js.map +1 -0
  16. package/index.d.ts +0 -1
  17. package/index.js +10 -0
  18. package/index.js.map +1 -0
  19. package/notion/index.js +5 -0
  20. package/notion/index.js.map +1 -0
  21. package/notion/notion.service.impl.d.ts +0 -5
  22. package/notion/notion.service.impl.js +142 -0
  23. package/notion/notion.service.impl.js.map +1 -0
  24. package/notion/notion.service.js +12 -0
  25. package/notion/notion.service.js.map +1 -0
  26. package/package.json +12 -18
  27. package/query/index.js +5 -0
  28. package/query/index.js.map +1 -0
  29. package/query/query.js +122 -0
  30. package/query/query.js.map +1 -0
  31. package/query-builder/index.js +5 -0
  32. package/query-builder/index.js.map +1 -0
  33. package/query-builder/query-builder.js +30 -0
  34. package/query-builder/query-builder.js.map +1 -0
  35. package/repository/index.js +5 -0
  36. package/repository/index.js.map +1 -0
  37. package/repository/repository.d.ts +5 -17
  38. package/repository/repository.js +112 -0
  39. package/repository/repository.js.map +1 -0
  40. package/utils.js +184 -0
  41. package/utils.js.map +1 -0
  42. package/fesm2022/nx-ddd-notion.mjs +0 -525
  43. package/fesm2022/nx-ddd-notion.mjs.map +0 -1
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./query-builder"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/notion/src/lib/query-builder/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotionQueryBuilder = void 0;
4
+ class NotionQueryBuilder {
5
+ constructor() { }
6
+ build(filterQuery, sortQuery) {
7
+ return Object.assign(Object.assign({}, (filterQuery ? this.buildFilterQuery(filterQuery) : {})), (sortQuery ? this.buildSortQuery(sortQuery) : {}));
8
+ }
9
+ buildSortQuery(query) {
10
+ if (query.type === 'sort') {
11
+ return { sorts: [query.build()] };
12
+ }
13
+ else {
14
+ return {};
15
+ }
16
+ }
17
+ buildFilterQuery(query) {
18
+ if (query.type === 'filter') {
19
+ return { filter: { and: [query.build()] } };
20
+ }
21
+ else if (['and', 'or'].includes(query.type)) {
22
+ return { filter: query.build() };
23
+ }
24
+ else {
25
+ return {};
26
+ }
27
+ }
28
+ }
29
+ exports.NotionQueryBuilder = NotionQueryBuilder;
30
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/notion/src/lib/query-builder/query-builder.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IAC7B,gBAAgB,CAAC;IAEjB,KAAK,CAAC,WAA6B,EAAE,SAA2B;QAC9D,uCACK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GACvD,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACrD;IACH,CAAC;IAES,cAAc,CAAC,KAAsB;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAES,gBAAgB,CAAC,KAAsB;QAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA3BD,gDA2BC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./repository"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/notion/src/lib/repository/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B"}
@@ -1,12 +1,10 @@
1
1
  import { Client } from '@notionhq/client';
2
- import { Entity } from '@nx-ddd/common/domain';
3
- import { Repository } from '@nx-ddd/common/domain';
2
+ import { Entity } from '@nx-ddd/common/domain/models';
3
+ import { Repository } from '@nx-ddd/common/domain/repository';
4
4
  import { InjectionToken } from '@angular/core';
5
5
  import { NotionConverter } from '../converter';
6
6
  import { NotionBaseQuery } from '../query';
7
7
  import { NotionQueryBuilder } from '../query-builder';
8
- import { Observable } from 'rxjs';
9
- import * as i0 from "@angular/core";
10
8
  export declare const NOTION_ACCESS_TOKEN: InjectionToken<string>;
11
9
  export declare const NOTION_DATABASE_ID: InjectionToken<unknown>;
12
10
  export declare function provideNotionConfig(config: {
@@ -16,15 +14,16 @@ export declare function provideNotionConfig(config: {
16
14
  useValue: string;
17
15
  };
18
16
  export declare abstract class NotionRepository<E extends Entity> extends Repository<E> {
17
+ protected token: string;
19
18
  protected abstract databaseId: string;
20
19
  protected abstract converter: NotionConverter<E>;
21
- protected token: string;
22
20
  protected client: Client;
23
21
  protected queryBuilder: NotionQueryBuilder;
24
22
  protected get parent(): {
25
23
  type: 'database_id';
26
24
  database_id: string;
27
25
  };
26
+ constructor(token: string);
28
27
  query(filterQuery?: NotionBaseQuery, sortQuery?: NotionBaseQuery, startCursor?: string, pageSize?: number): Promise<{
29
28
  results: E[];
30
29
  nextCursor: string;
@@ -38,23 +37,12 @@ export declare abstract class NotionRepository<E extends Entity> extends Reposit
38
37
  list({ batchSize, }?: {
39
38
  batchSize?: number;
40
39
  }): Promise<E[]>;
41
- listChanges(): Observable<E[]>;
42
40
  get({ id }: {
43
41
  id: string;
44
42
  }): Promise<E>;
45
- create(entity: Omit<E, 'id' | 'createdAt' | 'updatedAt'> & Partial<Pick<E, 'id'>>): Promise<E>;
46
- createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]>;
43
+ create(entity: Partial<E>): Promise<E>;
47
44
  update(entity: Partial<E>): Promise<void>;
48
- save(data: Partial<E>): Promise<boolean | [E, boolean]>;
49
- saveMany(entities: E[]): Promise<void>;
50
- updateMany(data: Partial<E>[]): Promise<void>;
51
45
  delete({ id }: {
52
46
  id: string;
53
47
  }): Promise<void>;
54
- deleteMany(params: {
55
- id: string;
56
- }[]): Promise<number>;
57
- deleteAll(): Promise<void>;
58
- static ɵfac: i0.ɵɵFactoryDeclaration<NotionRepository<any>, never>;
59
- static ɵprov: i0.ɵɵInjectableDeclaration<NotionRepository<any>>;
60
48
  }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotionRepository = exports.NOTION_DATABASE_ID = exports.NOTION_ACCESS_TOKEN = void 0;
4
+ exports.provideNotionConfig = provideNotionConfig;
5
+ const tslib_1 = require("tslib");
6
+ const client_1 = require("@notionhq/client");
7
+ const repository_1 = require("@nx-ddd/common/domain/repository");
8
+ const core_1 = require("@angular/core");
9
+ const query_builder_1 = require("../query-builder");
10
+ exports.NOTION_ACCESS_TOKEN = new core_1.InjectionToken('[@nx-ddd/notion] Notion Access Token');
11
+ exports.NOTION_DATABASE_ID = new core_1.InjectionToken('[@nx-ddd/notion] Notion Database Id');
12
+ function provideNotionConfig(config) {
13
+ return { provide: exports.NOTION_ACCESS_TOKEN, useValue: config.accessToken };
14
+ }
15
+ let NotionRepository = class NotionRepository extends repository_1.Repository {
16
+ get parent() {
17
+ return { type: 'database_id', database_id: this.databaseId };
18
+ }
19
+ constructor(token) {
20
+ super();
21
+ this.token = token;
22
+ this.client = new client_1.Client({ auth: this.token });
23
+ this.queryBuilder = new query_builder_1.NotionQueryBuilder();
24
+ }
25
+ query(filterQuery, sortQuery, startCursor, pageSize) {
26
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
27
+ try {
28
+ const obj = this.queryBuilder.build(filterQuery, sortQuery);
29
+ const res = yield this.client.databases.query(Object.assign(Object.assign({ database_id: this.databaseId }, obj), { start_cursor: startCursor, page_size: pageSize }));
30
+ return {
31
+ results: res.results.map(result => this.converter.fromNotion(result)),
32
+ nextCursor: res.next_cursor,
33
+ hasMore: res.has_more,
34
+ };
35
+ }
36
+ catch (error) {
37
+ throw error;
38
+ }
39
+ });
40
+ }
41
+ queryV2(args) {
42
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
+ try {
44
+ const res = yield this.client.databases.query(Object.assign({ database_id: this.databaseId }, (args !== null && args !== void 0 ? args : {})));
45
+ return {
46
+ results: res.results.map(result => this.converter.fromNotion(result)),
47
+ nextCursor: res.next_cursor,
48
+ hasMore: res.has_more,
49
+ };
50
+ }
51
+ catch (error) {
52
+ throw error;
53
+ }
54
+ });
55
+ }
56
+ list() {
57
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ batchSize = 100, } = {}) {
58
+ const orders = [];
59
+ let nextCursor;
60
+ while (true) {
61
+ const res = yield this.query(undefined, undefined, nextCursor, batchSize);
62
+ console.debug(res.nextCursor);
63
+ orders.push(...res.results);
64
+ nextCursor = res.nextCursor;
65
+ if (!res.hasMore)
66
+ break;
67
+ }
68
+ return orders;
69
+ });
70
+ }
71
+ get(_a) {
72
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ id }) {
73
+ const data = yield this.client.pages.retrieve({ page_id: id });
74
+ return this.converter.fromNotion(data);
75
+ });
76
+ }
77
+ create(entity) {
78
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
79
+ try {
80
+ const res = yield this.client.pages.create({
81
+ parent: this.parent,
82
+ properties: Object.assign({}, this.converter.toNotion(entity)),
83
+ });
84
+ return this.converter.fromNotion(res);
85
+ }
86
+ catch (error) {
87
+ throw error;
88
+ }
89
+ });
90
+ }
91
+ update(entity) {
92
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
+ const data = {
94
+ page_id: entity.id,
95
+ properties: Object.assign({}, this.converter.toNotion(entity)),
96
+ };
97
+ yield this.client.pages.update(data);
98
+ });
99
+ }
100
+ delete(_a) {
101
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ id }) {
102
+ throw new Error('NotionRepository.delete() is not implemented');
103
+ });
104
+ }
105
+ };
106
+ exports.NotionRepository = NotionRepository;
107
+ exports.NotionRepository = NotionRepository = tslib_1.__decorate([
108
+ (0, core_1.Injectable)(),
109
+ tslib_1.__param(0, (0, core_1.Inject)(exports.NOTION_ACCESS_TOKEN)),
110
+ tslib_1.__metadata("design:paramtypes", [String])
111
+ ], NotionRepository);
112
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/notion/src/lib/repository/repository.ts"],"names":[],"mappings":"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"}
package/utils.js ADDED
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotionUtils = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
6
+ // | NotionCheckbox;
7
+ class NotionUtils {
8
+ static toNotionValue(value, annotation) {
9
+ switch (annotation.type) {
10
+ case 'title': return this.toNotionTitle(value);
11
+ case 'status': return this.toNotionStatus(value);
12
+ case 'relation':
13
+ if (annotation.options.multi) {
14
+ return this.toRelationMulti(value);
15
+ }
16
+ else {
17
+ return this.toRelation(value);
18
+ }
19
+ case 'formula': return this.toNotionFormula(value);
20
+ case 'rich_text': return this.toRichText(value);
21
+ case 'rollup': return this.toRollup(value);
22
+ case 'url': return this.toUrl(value);
23
+ case 'date': return this.toDate(value);
24
+ case 'select': return this.toSelect(value);
25
+ case 'number': return this.toNumber(value);
26
+ case 'phone_number': return this.toPhoneNumber(value);
27
+ case 'email': return this.toEmail(value);
28
+ }
29
+ }
30
+ static toNotionTitle(value) {
31
+ return value ? { type: 'title', title: [{ text: { content: value } }] } : undefined;
32
+ }
33
+ static toNotionStatus(value) {
34
+ return value ? { type: 'status', status: { name: value } } : undefined;
35
+ }
36
+ static toRelationMulti(ids) {
37
+ return Array.isArray(ids) ? { type: 'relation', relation: (ids).map(id => ({ id })) } : undefined;
38
+ }
39
+ static toRelation(value) {
40
+ return value ? this.toRelationMulti([value]) : undefined;
41
+ }
42
+ static toRichText(text) {
43
+ return text ? { type: 'rich_text', rich_text: [{ text: { content: text } }] } : undefined;
44
+ }
45
+ static toNotionFormula(value) {
46
+ return;
47
+ }
48
+ static toRollup(value) {
49
+ return;
50
+ }
51
+ static toUrl(value) {
52
+ return value ? { type: 'url', url: value } : undefined;
53
+ }
54
+ static toDate(value) {
55
+ // TODO(nontangent): endも考慮する。
56
+ return value ? { type: 'date', date: { start: value.format() } } : undefined;
57
+ }
58
+ static toSelect(value) {
59
+ return value ? { type: 'select', select: { name: value } } : undefined;
60
+ }
61
+ static toPhoneNumber(value) {
62
+ return value ? { type: 'phone_number', phone_number: value } : undefined;
63
+ }
64
+ static toNumber(value) {
65
+ return value ? { type: 'number', number: value } : undefined;
66
+ }
67
+ static toEmail(value) {
68
+ return value ? { type: 'email', email: value } : undefined;
69
+ }
70
+ static fromNotionValue(value, annotation) {
71
+ switch (value.type) {
72
+ case 'title': return this.fromTitle(value);
73
+ case 'formula': return this.fromFormula(value);
74
+ case 'relation':
75
+ if (annotation.options.multi) {
76
+ return this.fromRelationMulti(value);
77
+ }
78
+ else {
79
+ return this.fromRelation(value);
80
+ }
81
+ case 'rich_text': return this.fromRichText(value);
82
+ case 'status': return this.fromStatus(value);
83
+ case 'url': return this.fromUrl(value);
84
+ case 'rollup':
85
+ if (annotation.options.multi) {
86
+ return this.fromRollupMulti(value);
87
+ }
88
+ else {
89
+ return this.fromRollup(value);
90
+ }
91
+ case 'created_time': return this.fromCreatedTime(value);
92
+ case 'last_edited_time': return this.fromLastEditedTime(value);
93
+ case 'date': return this.fromDate(value);
94
+ case 'number': return this.fromNumber(value);
95
+ case 'select': return this.fromSelect(value);
96
+ case 'phone_number': return this.fromPhoneNumber(value);
97
+ case 'email': return this.fromEmail(value);
98
+ case 'unique_id': return this.fromUniqueID(value);
99
+ }
100
+ }
101
+ static fromTitle(notionTitle) {
102
+ var _a, _b, _c, _d;
103
+ return (_d = (_c = (_b = (_a = notionTitle === null || notionTitle === void 0 ? void 0 : notionTitle.title) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.text) === null || _c === void 0 ? void 0 : _c.content) !== null && _d !== void 0 ? _d : '';
104
+ }
105
+ static fromUrl(notionUrl) {
106
+ return notionUrl.url;
107
+ }
108
+ static fromRichText(notionRichText) {
109
+ return notionRichText.rich_text.map(({ plain_text }) => plain_text).join('') || null;
110
+ }
111
+ static fromRelation(notionRelation) {
112
+ var _a, _b;
113
+ return (_b = (_a = this.fromRelationMulti(notionRelation)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
114
+ }
115
+ static fromRelationMulti(notionRelation) {
116
+ return notionRelation.relation.map(r => r.id);
117
+ }
118
+ static fromStatus(notionStatus) {
119
+ var _a, _b;
120
+ return (_b = (_a = notionStatus.status) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : null;
121
+ }
122
+ static fromFormula(notionFormula) {
123
+ var _a;
124
+ switch ((_a = notionFormula.formula) === null || _a === void 0 ? void 0 : _a.type) {
125
+ case 'string': return notionFormula.formula.string;
126
+ case 'number': return notionFormula.formula.number;
127
+ case 'date': return this.fromDate(notionFormula.formula);
128
+ }
129
+ }
130
+ static fromRollup(notionRollup) {
131
+ var _a, _b;
132
+ if (notionRollup.rollup.type === 'number') {
133
+ return this.fromNumber(notionRollup.rollup);
134
+ }
135
+ return (_b = (_a = this.fromRollupMulti(notionRollup)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
136
+ }
137
+ static fromRollupMulti(notionRollup) {
138
+ var _a;
139
+ if (notionRollup.rollup.type === 'number') {
140
+ return [];
141
+ }
142
+ return ((_a = notionRollup.rollup.array) !== null && _a !== void 0 ? _a : []).map(notionValue => {
143
+ var _a, _b;
144
+ if (notionValue.type === 'rich_text') {
145
+ return ((_a = notionValue.rich_text) !== null && _a !== void 0 ? _a : []).map(text => text.plain_text).join();
146
+ }
147
+ else if (notionValue.type === 'number') {
148
+ return (_b = notionValue.number) !== null && _b !== void 0 ? _b : null;
149
+ }
150
+ return [];
151
+ });
152
+ }
153
+ static fromCreatedTime(notionCreatedTime) {
154
+ return (0, dayjs_1.default)(notionCreatedTime.created_time);
155
+ }
156
+ static fromLastEditedTime(notionLastEditedTime) {
157
+ return (0, dayjs_1.default)(notionLastEditedTime.last_edited_time);
158
+ }
159
+ static fromDate(notionDate) {
160
+ var _a, _b;
161
+ return ((_a = notionDate.date) === null || _a === void 0 ? void 0 : _a.start) ? (0, dayjs_1.default)((_b = notionDate.date) === null || _b === void 0 ? void 0 : _b.start) : null;
162
+ }
163
+ static fromNumber(notionNumber) {
164
+ var _a;
165
+ return (_a = notionNumber.number) !== null && _a !== void 0 ? _a : null;
166
+ }
167
+ static fromSelect(notionSelect) {
168
+ var _a, _b;
169
+ return (_b = (_a = notionSelect.select) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : null;
170
+ }
171
+ static fromPhoneNumber(notionPhoneNumber) {
172
+ var _a;
173
+ return (_a = notionPhoneNumber.phone_number) !== null && _a !== void 0 ? _a : null;
174
+ }
175
+ static fromEmail(notionEmail) {
176
+ var _a;
177
+ return (_a = notionEmail.email) !== null && _a !== void 0 ? _a : null;
178
+ }
179
+ static fromUniqueID(value) {
180
+ return value.unique_id.number;
181
+ }
182
+ }
183
+ exports.NotionUtils = NotionUtils;
184
+ //# sourceMappingURL=utils.js.map
package/utils.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/notion/src/lib/utils.ts"],"names":[],"mappings":"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"}