@nx-ddd/notion 19.0.0-preview.9 → 19.1.1

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 (55) hide show
  1. package/fesm2022/nx-ddd-notion.mjs +540 -0
  2. package/fesm2022/nx-ddd-notion.mjs.map +1 -0
  3. package/index.d.ts +593 -6
  4. package/package.json +18 -12
  5. package/README.md +0 -11
  6. package/_testing/entity.d.ts +0 -20
  7. package/_testing/entity.js +0 -44
  8. package/_testing/entity.js.map +0 -1
  9. package/_testing/index.d.ts +0 -1
  10. package/_testing/index.js +0 -5
  11. package/_testing/index.js.map +0 -1
  12. package/converter/converter.d.ts +0 -7
  13. package/converter/converter.js +0 -37
  14. package/converter/converter.js.map +0 -1
  15. package/converter/index.d.ts +0 -1
  16. package/converter/index.js +0 -5
  17. package/converter/index.js.map +0 -1
  18. package/decorators/decorators.d.ts +0 -50
  19. package/decorators/decorators.js +0 -58
  20. package/decorators/decorators.js.map +0 -1
  21. package/decorators/index.d.ts +0 -1
  22. package/decorators/index.js +0 -5
  23. package/decorators/index.js.map +0 -1
  24. package/index.js +0 -10
  25. package/index.js.map +0 -1
  26. package/notion/index.d.ts +0 -1
  27. package/notion/index.js +0 -5
  28. package/notion/index.js.map +0 -1
  29. package/notion/notion.service.d.ts +0 -8
  30. package/notion/notion.service.impl.d.ts +0 -30
  31. package/notion/notion.service.impl.js +0 -142
  32. package/notion/notion.service.impl.js.map +0 -1
  33. package/notion/notion.service.js +0 -12
  34. package/notion/notion.service.js.map +0 -1
  35. package/query/index.d.ts +0 -1
  36. package/query/index.js +0 -5
  37. package/query/index.js.map +0 -1
  38. package/query/query.d.ts +0 -168
  39. package/query/query.js +0 -122
  40. package/query/query.js.map +0 -1
  41. package/query-builder/index.d.ts +0 -1
  42. package/query-builder/index.js +0 -5
  43. package/query-builder/index.js.map +0 -1
  44. package/query-builder/query-builder.d.ts +0 -27
  45. package/query-builder/query-builder.js +0 -30
  46. package/query-builder/query-builder.js.map +0 -1
  47. package/repository/index.d.ts +0 -1
  48. package/repository/index.js +0 -5
  49. package/repository/index.js.map +0 -1
  50. package/repository/repository.d.ts +0 -48
  51. package/repository/repository.js +0 -112
  52. package/repository/repository.js.map +0 -1
  53. package/utils.d.ts +0 -252
  54. package/utils.js +0 -184
  55. package/utils.js.map +0 -1
@@ -0,0 +1,540 @@
1
+ import dayjs from 'dayjs';
2
+ import { omitBy } from 'lodash-es';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, Injectable } from '@angular/core';
5
+ import { Client } from '@notionhq/client';
6
+ import { Repository } from '@nx-ddd/common/domain';
7
+
8
+ // | NotionCheckbox;
9
+ class NotionUtils {
10
+ static toNotionValue(value, annotation) {
11
+ switch (annotation.type) {
12
+ case 'title': return this.toNotionTitle(value);
13
+ case 'status': return this.toNotionStatus(value);
14
+ case 'relation':
15
+ if (annotation.options.multi) {
16
+ return this.toNotionRelationMulti(value);
17
+ }
18
+ else {
19
+ return this.toNotionRelation(value);
20
+ }
21
+ case 'formula': return this.toNotionFormula(value);
22
+ case 'rich_text': return this.toNotionRichText(value);
23
+ case 'rollup': return this.toNotionRollup(value);
24
+ case 'url': return this.toNotionUrl(value);
25
+ case 'date': return this.toNotionDate(value);
26
+ case 'select': return this.toNotionSelect(value);
27
+ case 'number': return this.toNotionNumber(value);
28
+ case 'phone_number': return this.toNotionPhoneNumber(value);
29
+ case 'email': return this.toNotionEmail(value);
30
+ }
31
+ }
32
+ static toNotionTitle(value) {
33
+ return value ? { type: 'title', title: [{ text: { content: value } }] } : undefined;
34
+ }
35
+ static toNotionStatus(value) {
36
+ return value ? { type: 'status', status: { name: value } } : undefined;
37
+ }
38
+ static toNotionRelationMulti(ids) {
39
+ return Array.isArray(ids) ? { type: 'relation', relation: (ids).map(id => ({ id })) } : undefined;
40
+ }
41
+ static toNotionRelation(value) {
42
+ return value ? this.toNotionRelationMulti([value]) : undefined;
43
+ }
44
+ static toNotionRichText(text) {
45
+ return text ? { type: 'rich_text', rich_text: [{ text: { content: text } }] } : undefined;
46
+ }
47
+ static toNotionFormula(value) {
48
+ return;
49
+ }
50
+ static toNotionRollup(value) {
51
+ return;
52
+ }
53
+ static toNotionUrl(value) {
54
+ return value ? { type: 'url', url: value } : undefined;
55
+ }
56
+ static toNotionDate(value) {
57
+ // TODO(nontangent): endも考慮する。
58
+ return value ? { type: 'date', date: { start: dayjs(value).format() } } : undefined;
59
+ }
60
+ static toNotionSelect(value) {
61
+ return value ? { type: 'select', select: { name: value } } : undefined;
62
+ }
63
+ static toNotionPhoneNumber(value) {
64
+ return value ? { type: 'phone_number', phone_number: value } : undefined;
65
+ }
66
+ static toNotionNumber(value) {
67
+ return value ? { type: 'number', number: value } : undefined;
68
+ }
69
+ static toNotionEmail(value) {
70
+ return value ? { type: 'email', email: value } : undefined;
71
+ }
72
+ static fromNotionValue(value, annotation) {
73
+ switch (value.type) {
74
+ case 'title': return this.fromNotionTitle(value);
75
+ case 'formula': return this.fromNotionFormula(value);
76
+ case 'relation':
77
+ if (annotation.options.multi) {
78
+ return this.fromNotionRelationMulti(value);
79
+ }
80
+ else {
81
+ return this.fromNotionRelation(value);
82
+ }
83
+ case 'rich_text': return this.fromNotionRichText(value);
84
+ case 'status': return this.fromNotionStatus(value);
85
+ case 'url': return this.fromNotionUrl(value);
86
+ case 'rollup':
87
+ if (annotation.options.multi) {
88
+ return this.fromNotionRollupMulti(value);
89
+ }
90
+ else {
91
+ return this.fromNotionRollup(value);
92
+ }
93
+ case 'created_time': return this.fromNotionCreatedTime(value);
94
+ case 'last_edited_time': return this.fromNotionLastEditedTime(value);
95
+ case 'date': return this.fromNotionDate(value);
96
+ case 'number': return this.fromNotionNumber(value);
97
+ case 'select': return this.fromNotionSelect(value);
98
+ case 'phone_number': return this.fromNotionPhoneNumber(value);
99
+ case 'email': return this.fromNotionEmail(value);
100
+ case 'unique_id': return this.fromNotionUniqueID(value);
101
+ }
102
+ }
103
+ static fromNotionTitle(notionTitle) {
104
+ return notionTitle?.title?.[0]?.text?.content ?? '';
105
+ }
106
+ static fromNotionUrl(notionUrl) {
107
+ return notionUrl.url;
108
+ }
109
+ static fromNotionRichText(notionRichText) {
110
+ return notionRichText.rich_text.map(({ plain_text }) => plain_text).join('') || null;
111
+ }
112
+ static fromNotionRelation(notionRelation) {
113
+ return this.fromNotionRelationMulti(notionRelation)?.[0] ?? null;
114
+ }
115
+ static fromNotionRelationMulti(notionRelation) {
116
+ return notionRelation.relation.map(r => r.id);
117
+ }
118
+ static fromNotionStatus(notionStatus) {
119
+ return notionStatus.status?.name ?? null;
120
+ }
121
+ static fromNotionFormula(notionFormula) {
122
+ switch (notionFormula.formula?.type) {
123
+ case 'string': return notionFormula.formula.string;
124
+ case 'number': return notionFormula.formula.number;
125
+ case 'date': return this.fromNotionDate(notionFormula.formula);
126
+ }
127
+ }
128
+ static fromNotionRollup(notionRollup) {
129
+ if (notionRollup.rollup.type === 'number') {
130
+ return this.fromNotionNumber(notionRollup.rollup);
131
+ }
132
+ return this.fromNotionRollupMulti(notionRollup)?.[0] ?? null;
133
+ }
134
+ static fromNotionRollupMulti(notionRollup) {
135
+ if (notionRollup.rollup.type === 'number') {
136
+ return [];
137
+ }
138
+ return (notionRollup.rollup.array ?? []).map(notionValue => {
139
+ if (notionValue.type === 'rich_text') {
140
+ return (notionValue.rich_text ?? []).map(text => text.plain_text).join();
141
+ }
142
+ else if (notionValue.type === 'number') {
143
+ return notionValue.number ?? null;
144
+ }
145
+ return [];
146
+ });
147
+ }
148
+ static fromNotionCreatedTime(notionCreatedTime) {
149
+ return dayjs(notionCreatedTime.created_time);
150
+ }
151
+ static fromNotionLastEditedTime(notionLastEditedTime) {
152
+ return dayjs(notionLastEditedTime.last_edited_time);
153
+ }
154
+ static fromNotionDate(notionDate) {
155
+ return notionDate.date?.start ? dayjs(notionDate.date?.start).toDate() : null;
156
+ }
157
+ static fromNotionNumber(notionNumber) {
158
+ return notionNumber.number ?? null;
159
+ }
160
+ static fromNotionSelect(notionSelect) {
161
+ return notionSelect.select?.name ?? null;
162
+ }
163
+ static fromNotionPhoneNumber(notionPhoneNumber) {
164
+ return notionPhoneNumber.phone_number ?? null;
165
+ }
166
+ static fromNotionEmail(notionEmail) {
167
+ return notionEmail.email ?? null;
168
+ }
169
+ static fromNotionUniqueID(value) {
170
+ return value.unique_id.number;
171
+ }
172
+ }
173
+
174
+ const NOTION_ANNOTATIONS = 'notion_annotations';
175
+ function createDecorator(type, defaultOptions) {
176
+ return (name, options) => {
177
+ return (target, propName) => {
178
+ const fieldName = name || propName;
179
+ const ANNOTATION = { type, fieldName, propName, options: { ...defaultOptions, ...options } };
180
+ target.constructor[NOTION_ANNOTATIONS] ??= [];
181
+ target.constructor[NOTION_ANNOTATIONS].push(ANNOTATION);
182
+ };
183
+ };
184
+ }
185
+ const Title = createDecorator('title');
186
+ const Url = createDecorator('url');
187
+ const RichText = createDecorator('rich_text');
188
+ const Relation = createDecorator('relation', { multi: false });
189
+ const Status = createDecorator('status');
190
+ const Formula = createDecorator('formula');
191
+ const Rollup = createDecorator('rollup', { multi: false });
192
+ const Timestamp = createDecorator('timestamp');
193
+ const Number = createDecorator('number');
194
+ const CreatedTime = createDecorator('created_time');
195
+ const LastEditedTime = createDecorator('last_edited_time');
196
+ const Date = createDecorator('date');
197
+ const Select = createDecorator('select');
198
+ const PhoneNumber = createDecorator('phone_number');
199
+ const Email = createDecorator('email');
200
+ const UniqueID = createDecorator('unique_id');
201
+ // Not implemented below props!
202
+ // export const Checkbox = createDecorator('checkbox');
203
+ // export const CreatedBy = createDecorator('created_by');
204
+ // export const Files = createDecorator('files');
205
+ // export const LastEditedBy = createDecorator('last_edited_by');
206
+ // export const MultiSelect = createDecorator('multi_select');
207
+ // export const People = createDecorator('people');
208
+ const Notion = {
209
+ Title,
210
+ Url,
211
+ RichText,
212
+ Relation,
213
+ Status,
214
+ Formula,
215
+ Rollup,
216
+ Timestamp,
217
+ Number,
218
+ CreatedTime,
219
+ LastEditedTime,
220
+ Date,
221
+ Select,
222
+ PhoneNumber,
223
+ Email,
224
+ UniqueID,
225
+ };
226
+
227
+ class NotionHelper {
228
+ static fromNotion(page, Entity) {
229
+ const annotations = Entity[NOTION_ANNOTATIONS] ?? [];
230
+ const obj = annotations.reduce((obj, annotation) => {
231
+ const value = page['properties'][annotation.fieldName]
232
+ ? NotionUtils.fromNotionValue(page['properties'][annotation.fieldName], annotation)
233
+ : undefined;
234
+ return { ...obj, [annotation.propName]: value };
235
+ }, { id: page.id });
236
+ return Entity.from(obj);
237
+ }
238
+ static toNotion(entity, Entity) {
239
+ const annotations = Entity[NOTION_ANNOTATIONS] ?? [];
240
+ const data = annotations.reduce((obj, annotation) => ({
241
+ ...obj,
242
+ [annotation.fieldName]: NotionUtils.toNotionValue(entity[annotation.propName], annotation),
243
+ }), {});
244
+ return omitBy(data, (value) => typeof value === 'undefined');
245
+ }
246
+ }
247
+ class NotionConverter {
248
+ fromNotion(page) {
249
+ return NotionHelper.fromNotion(page, this.Entity);
250
+ }
251
+ toNotion(entity) {
252
+ return NotionHelper.toNotion(entity, this.Entity);
253
+ }
254
+ }
255
+ function createConverter(Entity) {
256
+ class Converter extends NotionConverter {
257
+ Entity = Entity;
258
+ }
259
+ return new Converter();
260
+ }
261
+
262
+ const NOTION_SERVICE = new InjectionToken('NOTION_SERVICE');
263
+ const NOTION_CONFIG = new InjectionToken('NOTION_CONFIG');
264
+ function injectNotion() {
265
+ return inject(NOTION_SERVICE, { optional: true }) ?? null;
266
+ }
267
+
268
+ class N {
269
+ static RollupPropQuery(property, evaluation, value) {
270
+ return { property, rollup: { every: { rich_text: { equals: value } } } };
271
+ }
272
+ static FormulaQuery(property, evaluation, value) {
273
+ return { property, formula: {} };
274
+ }
275
+ static LastEditedTime(property, evaluation, value) {
276
+ const query = evaluation === '>' ? 'after'
277
+ : evaluation === '<' ? 'before'
278
+ : evaluation === '==' ? 'equals'
279
+ : evaluation === '<=' ? 'on_or_before'
280
+ : evaluation === '>=' ? 'on_or_after'
281
+ : evaluation === '!=' ? '' : '';
282
+ return { timestamp: 'last_edited_time', last_edited_time: { [query]: value } };
283
+ }
284
+ static Timestamp(property, evaluation, value) {
285
+ const query = evaluation === '>' ? 'after'
286
+ : evaluation === '<' ? 'before'
287
+ : evaluation === '==' ? 'equals'
288
+ : evaluation === '<=' ? 'on_or_before'
289
+ : evaluation === '>=' ? 'on_or_after'
290
+ : evaluation === '!=' ? '' : '';
291
+ return { property, timestamp: { [query]: value } };
292
+ }
293
+ static Status(property, evaluation, value) {
294
+ const query = evaluation === '==' ? 'equals' : '';
295
+ // TODO(nontangent): 'ステータス'を修正
296
+ return { property: 'ステータス', status: { [query]: value } };
297
+ }
298
+ static Relation(property, evaluation, value) {
299
+ const query = evaluation === 'in' ? 'contains' : '';
300
+ return { property, relation: { [query]: value } };
301
+ }
302
+ }
303
+ class NotionBaseQuery {
304
+ type;
305
+ }
306
+ class NotionFilter extends NotionBaseQuery {
307
+ propertyType;
308
+ propertyName;
309
+ evaluation;
310
+ value;
311
+ type = 'filter';
312
+ constructor(propertyType, propertyName, evaluation, value) {
313
+ super();
314
+ this.propertyType = propertyType;
315
+ this.propertyName = propertyName;
316
+ this.evaluation = evaluation;
317
+ this.value = value;
318
+ }
319
+ build() {
320
+ switch (this.propertyName) {
321
+ case 'last_edited_time': return N.LastEditedTime(this.propertyName, this.evaluation, this.value);
322
+ }
323
+ switch (this.propertyType) {
324
+ case 'rollup': return N.RollupPropQuery(this.propertyName, this.evaluation, this.value);
325
+ case 'formula': return N.FormulaQuery(this.propertyName, this.evaluation, this.value);
326
+ case 'status': return N.Status(this.propertyName, this.evaluation, this.value);
327
+ case 'relation': return N.Relation(this.propertyName, this.evaluation, this.value);
328
+ }
329
+ }
330
+ }
331
+ class NotionSort extends NotionBaseQuery {
332
+ property;
333
+ direction;
334
+ type = 'sort';
335
+ constructor(property, direction = 'asc') {
336
+ super();
337
+ this.property = property;
338
+ this.direction = direction;
339
+ }
340
+ build() {
341
+ return {
342
+ property: this.property,
343
+ direction: this.direction === 'asc' ? 'ascending' : 'descending',
344
+ };
345
+ }
346
+ }
347
+ class NotionAnd extends NotionBaseQuery {
348
+ type = 'and';
349
+ arr;
350
+ constructor(...filters) {
351
+ super();
352
+ this.arr = filters;
353
+ }
354
+ build() {
355
+ return { and: this.arr.map(filter => filter.build()) };
356
+ }
357
+ }
358
+ class NotionOr extends NotionBaseQuery {
359
+ type = 'or';
360
+ arr;
361
+ constructor(...filters) {
362
+ super();
363
+ this.arr = filters;
364
+ }
365
+ build() {
366
+ return { or: this.arr.map(filter => filter.build()) };
367
+ }
368
+ }
369
+ const Query = (Entity) => {
370
+ const Filter = (_propName, evaluation, value) => {
371
+ const annotation = Entity[NOTION_ANNOTATIONS].find(({ propName }) => propName === _propName);
372
+ // if(!annotation) {
373
+ // throw new Error(`NotionFilter: ${Entity} does not have ${_propName}.`);
374
+ // }
375
+ return new NotionFilter(annotation?.type, annotation?.fieldName ?? _propName, evaluation, value);
376
+ };
377
+ const OrderBy = (_propName, direction) => {
378
+ const annotation = Entity[NOTION_ANNOTATIONS].find(({ propName }) => propName === _propName);
379
+ return new NotionSort(annotation?.fieldName ?? _propName, direction);
380
+ };
381
+ const And = (...args) => new NotionAnd(...args);
382
+ const Or = (...args) => new NotionOr(...args);
383
+ return { Filter, OrderBy, And, Or };
384
+ };
385
+
386
+ class NotionQueryBuilder {
387
+ constructor() { }
388
+ build(filterQuery, sortQuery) {
389
+ return {
390
+ ...(filterQuery ? this.buildFilterQuery(filterQuery) : {}),
391
+ ...(sortQuery ? this.buildSortQuery(sortQuery) : {}),
392
+ };
393
+ }
394
+ buildSortQuery(query) {
395
+ if (query.type === 'sort') {
396
+ return { sorts: [query.build()] };
397
+ }
398
+ else {
399
+ return {};
400
+ }
401
+ }
402
+ buildFilterQuery(query) {
403
+ if (query.type === 'filter') {
404
+ return { filter: { and: [query.build()] } };
405
+ }
406
+ else if (['and', 'or'].includes(query.type)) {
407
+ return { filter: query.build() };
408
+ }
409
+ else {
410
+ return {};
411
+ }
412
+ }
413
+ }
414
+
415
+ const NOTION_ACCESS_TOKEN = new InjectionToken('[@nx-ddd/notion] Notion Access Token');
416
+ const NOTION_DATABASE_ID = new InjectionToken('[@nx-ddd/notion] Notion Database Id');
417
+ function provideNotionConfig(config) {
418
+ return { provide: NOTION_ACCESS_TOKEN, useValue: config.accessToken };
419
+ }
420
+ class NotionRepository extends Repository {
421
+ token = inject(NOTION_ACCESS_TOKEN);
422
+ client = new Client({ auth: this.token });
423
+ queryBuilder = new NotionQueryBuilder();
424
+ get parent() {
425
+ return { type: 'database_id', database_id: this.databaseId };
426
+ }
427
+ async query(filterQuery, sortQuery, startCursor, pageSize) {
428
+ try {
429
+ const obj = this.queryBuilder.build(filterQuery, sortQuery);
430
+ const res = await this.client.databases.query({
431
+ database_id: this.databaseId,
432
+ ...obj,
433
+ start_cursor: startCursor,
434
+ page_size: pageSize,
435
+ });
436
+ return {
437
+ results: res.results.map(result => this.converter.fromNotion(result)),
438
+ nextCursor: res.next_cursor,
439
+ hasMore: res.has_more,
440
+ };
441
+ }
442
+ catch (error) {
443
+ throw error;
444
+ }
445
+ }
446
+ async queryV2(args) {
447
+ try {
448
+ const res = await this.client.databases.query({
449
+ database_id: this.databaseId,
450
+ ...(args ?? {}),
451
+ });
452
+ return {
453
+ results: res.results.map(result => this.converter.fromNotion(result)),
454
+ nextCursor: res.next_cursor,
455
+ hasMore: res.has_more,
456
+ };
457
+ }
458
+ catch (error) {
459
+ throw error;
460
+ }
461
+ }
462
+ async list({ batchSize = 100, } = {}) {
463
+ const items = [];
464
+ let nextCursor;
465
+ let pageCount = 0;
466
+ console.log(`[NotionRepository] Starting pagination with batch size: ${batchSize}`);
467
+ // eslint-disable-next-line no-constant-condition
468
+ while (true) {
469
+ pageCount++;
470
+ const res = await this.query(undefined, undefined, nextCursor, batchSize);
471
+ console.log(`[NotionRepository] Page ${pageCount}: Retrieved ${res.results.length} items, hasMore: ${res.hasMore}, nextCursor: ${res.nextCursor ? 'present' : 'null'}`);
472
+ items.push(...res.results);
473
+ nextCursor = res.nextCursor;
474
+ if (!res.hasMore) {
475
+ console.log(`[NotionRepository] Pagination complete. Total items: ${items.length} from ${pageCount} pages`);
476
+ break;
477
+ }
478
+ }
479
+ return items;
480
+ }
481
+ listChanges() {
482
+ throw new Error('NotionRepository.listChanges() is not implemented');
483
+ }
484
+ async get({ id }) {
485
+ const data = await this.client.pages.retrieve({ page_id: id });
486
+ return this.converter.fromNotion(data);
487
+ }
488
+ async create(entity) {
489
+ try {
490
+ const res = await this.client.pages.create({
491
+ parent: this.parent,
492
+ properties: { ...this.converter.toNotion(entity) },
493
+ });
494
+ return this.converter.fromNotion(res);
495
+ }
496
+ catch (error) {
497
+ throw error;
498
+ }
499
+ }
500
+ async createMany(data) {
501
+ throw new Error('NotionRepository.createMany() is not implemented');
502
+ }
503
+ async update(entity) {
504
+ const data = {
505
+ page_id: entity.id,
506
+ properties: { ...this.converter.toNotion(entity) },
507
+ };
508
+ await this.client.pages.update(data);
509
+ }
510
+ async save(data) {
511
+ throw new Error('NotionRepository.save() is not implemented');
512
+ }
513
+ async saveMany(entities) {
514
+ throw new Error('NotionRepository.saveMany() is not implemented');
515
+ }
516
+ async updateMany(data) {
517
+ throw new Error('NotionRepository.updateMany() is not implemented');
518
+ }
519
+ async delete({ id }) {
520
+ throw new Error('NotionRepository.delete() is not implemented');
521
+ }
522
+ async deleteMany(params) {
523
+ throw new Error('NotionRepository.deleteMany() is not implemented');
524
+ }
525
+ async deleteAll() {
526
+ throw new Error('NotionRepository.deleteAll() is not implemented');
527
+ }
528
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: NotionRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
529
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: NotionRepository });
530
+ }
531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: NotionRepository, decorators: [{
532
+ type: Injectable
533
+ }] });
534
+
535
+ /**
536
+ * Generated bundle index. Do not edit.
537
+ */
538
+
539
+ export { CreatedTime, Date, Email, Formula, LastEditedTime, N, NOTION_ACCESS_TOKEN, NOTION_ANNOTATIONS, NOTION_CONFIG, NOTION_DATABASE_ID, NOTION_SERVICE, Notion, NotionAnd, NotionBaseQuery, NotionConverter, NotionFilter, NotionHelper, NotionOr, NotionQueryBuilder, NotionRepository, NotionSort, NotionUtils, Number, PhoneNumber, Query, Relation, RichText, Rollup, Select, Status, Timestamp, Title, UniqueID, Url, createConverter, injectNotion, provideNotionConfig };
540
+ //# sourceMappingURL=nx-ddd-notion.mjs.map