@nx-ddd/notion 19.51.0 → 19.81.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.
@@ -5,13 +5,6 @@ import { InjectionToken, inject, Injectable } from '@angular/core';
5
5
  import { Client } from '@notionhq/client';
6
6
  import { Repository } from '@nx-ddd/common/domain';
7
7
 
8
- /**
9
- * Notion API type definitions
10
- */
11
-
12
- /**
13
- * Converts a value to its Notion API representation based on annotation type
14
- */
15
8
  function toNotionValue(value, annotation) {
16
9
  switch (annotation.type) {
17
10
  case 'title': return toNotionTitle(value);
@@ -74,9 +67,6 @@ function toNotionEmail(value) {
74
67
  return value ? { type: 'email', email: value } : undefined;
75
68
  }
76
69
 
77
- /**
78
- * Converts a Notion API value to its JavaScript representation
79
- */
80
70
  function fromNotionValue(value, annotation) {
81
71
  switch (value.type) {
82
72
  case 'title': return fromNotionTitle(value);
@@ -179,13 +169,7 @@ function fromNotionUniqueID(value) {
179
169
  return value.unique_id.number;
180
170
  }
181
171
 
182
- // Re-export types for backward compatibility
183
- /**
184
- * NotionUtils class for backward compatibility
185
- * @deprecated Use individual functions from './to-notion' and './from-notion' instead
186
- */
187
172
  class NotionUtils {
188
- // toNotion methods
189
173
  static toNotionValue = toNotionValue;
190
174
  static toNotionTitle = toNotionTitle;
191
175
  static toNotionStatus = toNotionStatus;
@@ -200,7 +184,6 @@ class NotionUtils {
200
184
  static toNotionPhoneNumber = toNotionPhoneNumber;
201
185
  static toNotionNumber = toNotionNumber;
202
186
  static toNotionEmail = toNotionEmail;
203
- // fromNotion methods
204
187
  static fromNotionValue = fromNotionValue;
205
188
  static fromNotionTitle = fromNotionTitle;
206
189
  static fromNotionUrl = fromNotionUrl;
@@ -249,27 +232,11 @@ const Select = createDecorator('select');
249
232
  const PhoneNumber = createDecorator('phone_number');
250
233
  const Email = createDecorator('email');
251
234
  const UniqueID = createDecorator('unique_id');
252
- // Not implemented below props!
253
- // export const Checkbox = createDecorator('checkbox');
254
- // export const CreatedBy = createDecorator('created_by');
255
- // export const Files = createDecorator('files');
256
- // export const LastEditedBy = createDecorator('last_edited_by');
257
- // export const MultiSelect = createDecorator('multi_select');
258
- // export const People = createDecorator('people');
259
- /**
260
- * Class decorator to specify Notion database ID
261
- * @param databaseId - The Notion database ID
262
- */
263
235
  function Database(databaseId) {
264
236
  return (target) => {
265
237
  target[NOTION_DATABASE_ANNOTATION] = databaseId;
266
238
  };
267
239
  }
268
- /**
269
- * Get database ID from class decorator
270
- * @param target - Entity class with @Notion.Database decorator
271
- * @returns Database ID or undefined if not decorated
272
- */
273
240
  function getDatabaseId(target) {
274
241
  return target[NOTION_DATABASE_ANNOTATION];
275
242
  }
@@ -361,7 +328,6 @@ class N {
361
328
  }
362
329
  static Status(property, evaluation, value) {
363
330
  const query = evaluation === '==' ? 'equals' : '';
364
- // TODO(nontangent): 'ステータス'を修正
365
331
  return { property: 'ステータス', status: { [query]: value } };
366
332
  }
367
333
  static Relation(property, evaluation, value) {
@@ -438,9 +404,6 @@ class NotionOr extends NotionBaseQuery {
438
404
  const Query = (Entity) => {
439
405
  const Filter = (_propName, evaluation, value) => {
440
406
  const annotation = Entity[NOTION_ANNOTATIONS].find(({ propName }) => propName === _propName);
441
- // if(!annotation) {
442
- // throw new Error(`NotionFilter: ${Entity} does not have ${_propName}.`);
443
- // }
444
407
  return new NotionFilter(annotation?.type, annotation?.fieldName ?? _propName, evaluation, value);
445
408
  };
446
409
  const OrderBy = (_propName, direction) => {
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-notion.mjs","sources":["../../../../../packages/@nx-ddd/notion/src/lib/types.ts","../../../../../packages/@nx-ddd/notion/src/lib/to-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/from-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/utils.ts","../../../../../packages/@nx-ddd/notion/src/lib/decorators/decorators.ts","../../../../../packages/@nx-ddd/notion/src/lib/converter/converter.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.ts","../../../../../packages/@nx-ddd/notion/src/lib/query/query.ts","../../../../../packages/@nx-ddd/notion/src/lib/query-builder/query-builder.ts","../../../../../packages/@nx-ddd/notion/src/lib/repository/repository.ts","../../../../../packages/@nx-ddd/notion/src/lib/nx-ddd-notion.ts"],"sourcesContent":["/**\n * Notion API type definitions\n */\n\ntype NotionText = {\n type: 'text',\n text: { content: string },\n plain_text: string,\n}\n\ntype NotionArray = {\n type: 'array',\n array: (NotionRichText[] | NotionNumber[]),\n function: 'show_original'\n}\n\nexport type NotionTitle = {type: 'title', title: {text: {content: string}}[]};\nexport type NotionUrl = {id: string, type: 'url', url: string | null};\nexport type NotionRichText = {\n id: string,\n type: 'rich_text',\n rich_text: NotionText[]\n};\nexport type NotionNumber = {id: string, type: 'number', number: number};\nexport type NotionRelation = {id: string, type: 'relation', relation: {id: string}[], has_more: boolean};\nexport type NotionStatus = {id: string, type: 'status', status: {id: string, name: string, color: string}};\nexport type NotionFormula = {\n id: string,\n type: 'formula',\n formula: {\n type: 'string',\n string: string\n } | {\n type: 'number',\n number: number\n } | {\n type: 'date',\n date: {\n start: string,\n end: string,\n time_zone: null,\n }\n }\n};\nexport type NotionRollup = {id: string, type: 'rollup', rollup: NotionArray | NotionNumber};\n\nexport type NotionCreatedTime = {id: string, type: 'created_time', created_time: string};\nexport type NotionLastEditedTime = {id: string, type: 'last_edited_time', last_edited_time: string};\nexport type NotionDate = {id: string, type: 'date', date: any };\nexport type NotionSelect = {id: string, type: 'select', select: {id: string, name: string, color: string}};\n\nexport type NotionPhoneNumber = {id: string, type: 'phone_number', phone_number: string};\nexport type NotionEmail = {id: string, type: 'email', email: string};\nexport type NotionID = {id: string, type: 'unique_id', unique_id: {prefix: string | null, number: number}};\n\nexport type NotionValue = NotionTitle | NotionUrl | NotionRichText | NotionNumber\n | NotionRelation | NotionStatus | NotionFormula | NotionRollup\n | NotionCreatedTime | NotionLastEditedTime | NotionDate | NotionSelect\n | NotionPhoneNumber | NotionEmail | NotionID;\n","import dayjs from \"dayjs\";\nimport { NotionAnnotation } from \"./decorators\";\n\n/**\n * Converts a value to its Notion API representation based on annotation type\n */\nexport function toNotionValue(value: any, annotation: NotionAnnotation) {\n switch(annotation.type) {\n case 'title': return toNotionTitle(value);\n case 'status': return toNotionStatus(value);\n case 'relation':\n if ((annotation.options as any).multi) {\n return toNotionRelationMulti(value);\n } else {\n return toNotionRelation(value);\n }\n case 'formula': return toNotionFormula(value);\n case 'rich_text': return toNotionRichText(value);\n case 'rollup': return toNotionRollup(value);\n case 'url': return toNotionUrl(value);\n case 'date': return toNotionDate(value);\n case 'select': return toNotionSelect(value);\n case 'number': return toNotionNumber(value);\n case 'phone_number': return toNotionPhoneNumber(value);\n case 'email': return toNotionEmail(value);\n }\n}\n\nexport function toNotionTitle(value: string) {\n return value ? {type: 'title', title: [{text: {content: value}}]} : undefined;\n}\n\nexport function toNotionStatus(value: string) {\n return value ? {type: 'status', status: {name: value}} : undefined;\n}\n\nexport function toNotionRelationMulti(ids: string[]) {\n return Array.isArray(ids) ? {type: 'relation', relation: (ids).map(id => ({id}))} : undefined;\n}\n\nexport function toNotionRelation(value: string) {\n return value ? toNotionRelationMulti([value]) : undefined;\n}\n\nexport function toNotionRichText(text?: string) {\n return text ? {type: 'rich_text', rich_text: [{text: {content: text}}]} : undefined;\n}\n\nexport function toNotionFormula(value: string): void {\n return;\n}\n\nexport function toNotionRollup(value: string): void {\n return;\n}\n\nexport function toNotionUrl(value: string) {\n return value ? {type: 'url', url: value} : undefined;\n}\n\nexport function toNotionDate(value: Date) {\n return value ? {type: 'date', date: {start: dayjs(value).format() }} : undefined;\n}\n\nexport function toNotionSelect(value: string) {\n return value ? {type: 'select', select: {name: value}} : undefined;\n}\n\nexport function toNotionPhoneNumber(value: string) {\n return value ? {type: 'phone_number', phone_number: value} : undefined;\n}\n\nexport function toNotionNumber(value: number) {\n return value ? {type: 'number', number: value} : undefined;\n}\n\nexport function toNotionEmail(value: string) {\n return value ? {type: 'email', email: value} : undefined;\n}\n","import dayjs from \"dayjs\";\nimport { NotionAnnotation } from \"./decorators\";\nimport {\n NotionValue, NotionTitle, NotionUrl, NotionRichText, NotionRelation,\n NotionStatus, NotionFormula, NotionRollup, NotionCreatedTime,\n NotionLastEditedTime, NotionDate, NotionNumber, NotionSelect,\n NotionPhoneNumber, NotionEmail, NotionID\n} from \"./types\";\n\n/**\n * Converts a Notion API value to its JavaScript representation\n */\nexport function fromNotionValue(value: NotionValue, annotation: NotionAnnotation) {\n switch(value.type) {\n case 'title': return fromNotionTitle(value);\n case 'formula': return fromNotionFormula(value);\n case 'relation':\n if ((annotation.options as any).multi) {\n return fromNotionRelationMulti(value);\n } else {\n return fromNotionRelation(value);\n }\n case 'rich_text': return fromNotionRichText(value);\n case 'status': return fromNotionStatus(value);\n case 'url': return fromNotionUrl(value);\n case 'rollup':\n if ((annotation.options as any).multi) {\n return fromNotionRollupMulti(value);\n } else {\n return fromNotionRollup(value);\n }\n case 'created_time': return fromNotionCreatedTime(value);\n case 'last_edited_time': return fromNotionLastEditedTime(value);\n case 'date': return fromNotionDate(value);\n case 'number': return fromNotionNumber(value);\n case 'select': return fromNotionSelect(value);\n case 'phone_number': return fromNotionPhoneNumber(value);\n case 'email': return fromNotionEmail(value);\n case 'unique_id': return fromNotionUniqueID(value);\n }\n}\n\nexport function fromNotionTitle(notionTitle: NotionTitle): string {\n return notionTitle?.title?.[0]?.text?.content ?? '';\n}\n\nexport function fromNotionUrl(notionUrl: NotionUrl): string | null {\n return notionUrl.url;\n}\n\nexport function fromNotionRichText(notionRichText: NotionRichText): string | null {\n return notionRichText.rich_text.map(({plain_text}) => plain_text).join('') || null;\n}\n\nexport function fromNotionRelation(notionRelation: NotionRelation): string | null {\n return fromNotionRelationMulti(notionRelation)?.[0] ?? null;\n}\n\nexport function fromNotionRelationMulti(notionRelation: NotionRelation): string[] {\n return notionRelation.relation.map(r => r.id);\n}\n\nexport function fromNotionStatus(notionStatus: NotionStatus): string | null {\n return notionStatus.status?.name ?? null;\n}\n\nexport function fromNotionFormula(notionFormula: NotionFormula): string | number | Date | null {\n switch(notionFormula.formula?.type) {\n case 'string': return notionFormula.formula.string;\n case 'number': return notionFormula.formula.number;\n case 'date': return fromNotionDate(notionFormula.formula as any);\n default: return null;\n }\n}\n\nexport function fromNotionRollup(notionRollup: NotionRollup): string | number {\n if (notionRollup.rollup.type === 'number') {\n return fromNotionNumber(notionRollup.rollup);\n }\n return fromNotionRollupMulti(notionRollup)?.[0] ?? null;\n}\n\nexport function fromNotionRollupMulti(notionRollup: NotionRollup): string[] | number[] {\n if (notionRollup.rollup.type === 'number') {\n return [];\n }\n return (notionRollup.rollup.array ?? []).map(notionValue => {\n if (notionValue.type === 'rich_text') {\n return (notionValue.rich_text ?? []).map(text => text.plain_text).join();\n } else if (notionValue.type === 'number') {\n return notionValue.number ?? null;\n }\n return [];\n }) as unknown as string[] | number[];\n}\n\nexport function fromNotionCreatedTime(notionCreatedTime: NotionCreatedTime): dayjs.Dayjs {\n return dayjs(notionCreatedTime.created_time);\n}\n\nexport function fromNotionLastEditedTime(notionLastEditedTime: NotionLastEditedTime): dayjs.Dayjs {\n return dayjs(notionLastEditedTime.last_edited_time);\n}\n\nexport function fromNotionDate(notionDate: NotionDate): Date | null {\n return notionDate.date?.start ? dayjs(notionDate.date?.start).toDate() : null;\n}\n\nexport function fromNotionNumber(notionNumber: NotionNumber) {\n return notionNumber.number ?? null;\n}\n\nexport function fromNotionSelect(notionSelect: NotionSelect) {\n return notionSelect.select?.name ?? null;\n}\n\nexport function fromNotionPhoneNumber(notionPhoneNumber: NotionPhoneNumber) {\n return notionPhoneNumber.phone_number ?? null;\n}\n\nexport function fromNotionEmail(notionEmail: NotionEmail) {\n return notionEmail.email ?? null;\n}\n\nexport function fromNotionUniqueID(value: NotionID) {\n return value.unique_id.number;\n}\n","// Re-export types for backward compatibility\nexport * from './types';\n\n// Import functions for NotionUtils class\nimport * as toNotion from './to-notion';\nimport * as fromNotion from './from-notion';\n\n// Re-export individual functions\nexport * from './to-notion';\nexport * from './from-notion';\n\n/**\n * NotionUtils class for backward compatibility\n * @deprecated Use individual functions from './to-notion' and './from-notion' instead\n */\nexport class NotionUtils {\n // toNotion methods\n static toNotionValue = toNotion.toNotionValue;\n static toNotionTitle = toNotion.toNotionTitle;\n static toNotionStatus = toNotion.toNotionStatus;\n static toNotionRelationMulti = toNotion.toNotionRelationMulti;\n static toNotionRelation = toNotion.toNotionRelation;\n static toNotionRichText = toNotion.toNotionRichText;\n static toNotionFormula = toNotion.toNotionFormula;\n static toNotionRollup = toNotion.toNotionRollup;\n static toNotionUrl = toNotion.toNotionUrl;\n static toNotionDate = toNotion.toNotionDate;\n static toNotionSelect = toNotion.toNotionSelect;\n static toNotionPhoneNumber = toNotion.toNotionPhoneNumber;\n static toNotionNumber = toNotion.toNotionNumber;\n static toNotionEmail = toNotion.toNotionEmail;\n\n // fromNotion methods\n static fromNotionValue = fromNotion.fromNotionValue;\n static fromNotionTitle = fromNotion.fromNotionTitle;\n static fromNotionUrl = fromNotion.fromNotionUrl;\n static fromNotionRichText = fromNotion.fromNotionRichText;\n static fromNotionRelation = fromNotion.fromNotionRelation;\n static fromNotionRelationMulti = fromNotion.fromNotionRelationMulti;\n static fromNotionStatus = fromNotion.fromNotionStatus;\n static fromNotionFormula = fromNotion.fromNotionFormula;\n static fromNotionRollup = fromNotion.fromNotionRollup;\n static fromNotionRollupMulti = fromNotion.fromNotionRollupMulti;\n static fromNotionCreatedTime = fromNotion.fromNotionCreatedTime;\n static fromNotionLastEditedTime = fromNotion.fromNotionLastEditedTime;\n static fromNotionDate = fromNotion.fromNotionDate;\n static fromNotionNumber = fromNotion.fromNotionNumber;\n static fromNotionSelect = fromNotion.fromNotionSelect;\n static fromNotionPhoneNumber = fromNotion.fromNotionPhoneNumber;\n static fromNotionEmail = fromNotion.fromNotionEmail;\n static fromNotionUniqueID = fromNotion.fromNotionUniqueID;\n}\n","export const NOTION_ANNOTATIONS = 'notion_annotations';\nexport const NOTION_DATABASE_ANNOTATION = 'notion_database_annotation';\nexport type NotionFieldType = 'title' | 'url' | 'rich_text' \n | 'relation' | 'status' | 'formula' | 'rollup' | 'timestamp'\n | 'number' | 'created_time' | 'last_edited_time' | 'date' | 'select'\n | 'phone_number' | 'email' | 'checkbox' | 'created_by' | 'files'\n | 'last_edited_by' | 'multi_select' | 'people' | 'unique_id';\nexport interface NotionAnnotation<T extends object = Record<string, never>> {\n type: NotionFieldType;\n fieldName: string;\n propName: string;\n options?: T;\n}\n\nfunction createDecorator<T extends object = Record<string, never>>(type: NotionFieldType, defaultOptions?: T) {\n return (name?: string, options?: Partial<T>) => {\n return (target: any, propName: string) => {\n const fieldName = name || propName;\n const ANNOTATION: NotionAnnotation<T> = {type, fieldName, propName, options: {...defaultOptions, ...options} as T};\n target.constructor[NOTION_ANNOTATIONS] ??= [];\n target.constructor[NOTION_ANNOTATIONS].push(ANNOTATION);\n };\n };\n}\n\nexport const Title = createDecorator('title');\nexport const Url = createDecorator('url');\nexport const RichText = createDecorator('rich_text');\nexport const Relation = createDecorator<{multi: boolean}>('relation', {multi: false});\nexport const Status = createDecorator('status');\nexport const Formula = createDecorator('formula');\nexport const Rollup = createDecorator<{multi: boolean}>('rollup', {multi: false});\nexport const Timestamp = createDecorator('timestamp');\nexport const Number = createDecorator('number');\nexport const CreatedTime = createDecorator('created_time');\nexport const LastEditedTime = createDecorator('last_edited_time');\nexport const Date = createDecorator('date');\nexport const Select = createDecorator('select');\nexport const PhoneNumber = createDecorator('phone_number');\nexport const Email = createDecorator('email');\nexport const UniqueID = createDecorator('unique_id');\n// Not implemented below props!\n// export const Checkbox = createDecorator('checkbox');\n// export const CreatedBy = createDecorator('created_by');\n// export const Files = createDecorator('files');\n// export const LastEditedBy = createDecorator('last_edited_by');\n// export const MultiSelect = createDecorator('multi_select');\n// export const People = createDecorator('people');\n\n/**\n * Class decorator to specify Notion database ID\n * @param databaseId - The Notion database ID\n */\nfunction Database(databaseId: string) {\n return (target: any) => {\n target[NOTION_DATABASE_ANNOTATION] = databaseId;\n };\n}\n\n/**\n * Get database ID from class decorator\n * @param target - Entity class with @Notion.Database decorator\n * @returns Database ID or undefined if not decorated\n */\nexport function getDatabaseId(target: any): string | undefined {\n return target[NOTION_DATABASE_ANNOTATION];\n}\n\nexport const Notion = {\n Database,\n Title,\n Url,\n RichText,\n Relation,\n Status,\n Formula,\n Rollup,\n Timestamp,\n Number,\n CreatedTime,\n LastEditedTime,\n Date,\n Select,\n PhoneNumber,\n Email,\n UniqueID,\n};\n","import { PageObjectResponse, PartialPageObjectResponse, PartialDatabaseObjectResponse, DatabaseObjectResponse } from \"@notionhq/client/build/src/api-endpoints\";\nimport { NotionUtils } from \"../utils\";\nimport { NotionAnnotation, NOTION_ANNOTATIONS } from \"../decorators\";\nimport { omitBy } from \"lodash-es\";\nimport { Type } from \"@nx-ddd/common/domain\";\n\nexport class NotionHelper {\n static fromNotion<E>(\n page: PageObjectResponse | PartialPageObjectResponse | PartialDatabaseObjectResponse | DatabaseObjectResponse,\n Entity: Type<E>\n ): E {\n const annotations: NotionAnnotation[] = (Entity as any)[NOTION_ANNOTATIONS] ?? [];\n const obj = annotations.reduce((obj, annotation) => {\n const value = (page as any)['properties'][annotation.fieldName]\n ? NotionUtils.fromNotionValue((page as any)['properties'][annotation.fieldName], annotation)\n : undefined;\n return {...obj, [annotation.propName]: value};\n }, {id: page.id});\n return (Entity as any).from(obj);\n }\n\n static toNotion<E>(entity: Partial<E>, Entity: Type<E>): object {\n const annotations: NotionAnnotation[] = (Entity as any)[NOTION_ANNOTATIONS] ?? [];\n const data = annotations.reduce((obj, annotation) => ({\n ...obj,\n [annotation.fieldName]: NotionUtils.toNotionValue((entity as Record<string, any>)[annotation.propName], annotation),\n }), {});\n return omitBy(data, (value) => typeof value === 'undefined');\n }\n}\n\nexport abstract class NotionConverter<E> {\n protected abstract Entity: Type<E>;\n\n fromNotion(page: PageObjectResponse | PartialPageObjectResponse | PartialDatabaseObjectResponse | DatabaseObjectResponse): E {\n return NotionHelper.fromNotion<E>(page, this.Entity);\n }\n\n toNotion(entity: Partial<E>): object {\n return NotionHelper.toNotion<E>(entity, this.Entity);\n }\n}\n\nexport function createConverter<E = any>(Entity: any): NotionConverter<E> {\n class Converter extends NotionConverter<E> {\n protected Entity = Entity;\n }\n\n return new Converter();\n}\n","import { inject, InjectionToken } from \"@angular/core\";\nimport type { NotionService } from \"./notion.service.impl\";\n\nexport interface NotionConfig {\n token: string;\n}\n\nexport const NOTION_SERVICE = new InjectionToken<NotionService>('NOTION_SERVICE');\nexport const NOTION_CONFIG = new InjectionToken<NotionConfig>('NOTION_CONFIG');\n\nexport function injectNotion(): NotionService | null {\n return inject(NOTION_SERVICE, { optional: true }) ?? null;\n}\n","import { NotionAnnotation, NOTION_ANNOTATIONS } from \"../decorators\";\nimport { Entity } from \"@nx-ddd/common/domain\";\n\ntype Evaluation = '==' | '>' | '>=' | '<' | '<=' | '!=' | 'in';\n\nexport class N {\n static RollupPropQuery(property: string, evaluation: Evaluation, value: string | number) {\n return { property, rollup: { every: { rich_text: { equals: value } } } };\n }\n\n static FormulaQuery(property: string, evaluation: Evaluation, value: string | number) {\n return { property, formula: {}};\n }\n\n static LastEditedTime(property: string, evaluation: Evaluation, value: string | number) {\n const query = evaluation === '>' ? 'after' \n : evaluation === '<' ? 'before'\n : evaluation === '==' ? 'equals'\n : evaluation === '<=' ? 'on_or_before'\n : evaluation === '>=' ? 'on_or_after'\n : evaluation === '!=' ? '' : '';\n return { timestamp: 'last_edited_time', last_edited_time: {[query]: value} };\n }\n\n static Timestamp(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === '>' ? 'after' \n : evaluation === '<' ? 'before'\n : evaluation === '==' ? 'equals'\n : evaluation === '<=' ? 'on_or_before'\n : evaluation === '>=' ? 'on_or_after'\n : evaluation === '!=' ? '' : '';\n return { property, timestamp: {[query]: value} };\n }\n\n static Status(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === '==' ? 'equals' : '';\n // TODO(nontangent): 'ステータス'を修正\n return { property: 'ステータス', status: {[query]: value} };\n }\n \n static Relation(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === 'in' ? 'contains': '';\n return { property, relation: {[query]: value} };\n }\n}\n\nexport abstract class NotionBaseQuery {\n type!: 'and' | 'or' | 'filter' | 'sort';\n abstract build(): unknown;\n}\n\nexport class NotionFilter extends NotionBaseQuery {\n readonly type = 'filter' as const;\n\n constructor(\n public propertyType: any,\n public propertyName: string,\n public evaluation: Evaluation,\n public value: string | number,\n ) { super(); }\n\n build() {\n switch(this.propertyName) {\n case 'last_edited_time': return N.LastEditedTime(this.propertyName, this.evaluation, this.value);\n }\n\n switch(this.propertyType) {\n case 'rollup': return N.RollupPropQuery(this.propertyName, this.evaluation, this.value);\n case 'formula': return N.FormulaQuery(this.propertyName, this.evaluation, this.value);\n case 'status': return N.Status(this.propertyName, this.evaluation, this.value as string);\n case 'relation': return N.Relation(this.propertyName, this.evaluation, this.value as string);\n }\n }\n}\n\nexport class NotionSort extends NotionBaseQuery {\n readonly type = 'sort' as const;\n constructor(\n public property: string,\n public direction: 'asc' | 'desc' = 'asc',\n ) { super(); }\n\n build() {\n return {\n property: this.property,\n direction: this.direction === 'asc' ? 'ascending' : 'descending',\n };\n }\n}\n\nexport class NotionAnd extends NotionBaseQuery {\n readonly type = 'and' as const;\n arr: NotionFilter[];\n\n constructor(...filters: NotionFilter[]) {\n super();\n this.arr = filters;\n }\n\n build() {\n return {and: this.arr.map(filter => filter.build())};\n }\n}\n\nexport class NotionOr extends NotionBaseQuery {\n readonly type = 'or' as const;\n arr: NotionFilter[];\n\n constructor(...filters: NotionFilter[]) {\n super();\n this.arr = filters;\n }\n\n build() {\n return {or: this.arr.map(filter => filter.build())};\n }\n}\n\nexport const Query = <E = any>(Entity: E) => {\n const Filter = (_propName: string, evaluation: Evaluation, value: string | number): NotionFilter => {\n const annotation: NotionAnnotation = (Entity as Record<string, any>)[NOTION_ANNOTATIONS].find(({propName}: {propName: string}) => propName === _propName);\n\n // if(!annotation) {\n // throw new Error(`NotionFilter: ${Entity} does not have ${_propName}.`);\n // }\n\n return new NotionFilter(annotation?.type, annotation?.fieldName ?? _propName, evaluation, value);\n };\n const OrderBy = (_propName: string, direction: 'asc' | 'desc'): NotionSort => {\n const annotation: NotionAnnotation = (Entity as Record<string, any>)[NOTION_ANNOTATIONS].find(({propName}: {propName: string}) => propName === _propName);\n return new NotionSort(annotation?.fieldName ?? _propName, direction);\n };\n \n const And = (...args: NotionFilter[]): NotionAnd => new NotionAnd(...args);\n const Or = (...args: NotionFilter[]): NotionOr => new NotionOr(...args);\n\n return {Filter, OrderBy, And, Or};\n}\n","import { NotionBaseQuery } from \"../query\";\n\nexport class NotionQueryBuilder {\n constructor() { }\n\n build(filterQuery?: NotionBaseQuery, sortQuery?: NotionBaseQuery) {\n return {\n ...(filterQuery ? this.buildFilterQuery(filterQuery) : {}),\n ...(sortQuery ? this.buildSortQuery(sortQuery) : {}),\n }\n }\n\n protected buildSortQuery(query: NotionBaseQuery) {\n if (query.type === 'sort') {\n return { sorts: [query.build()]};\n } else {\n return {};\n }\n }\n\n protected buildFilterQuery(query: NotionBaseQuery) {\n if (query.type === 'filter') {\n return { filter: { and: [query.build()] } };\n } else if (['and', 'or'].includes(query.type)) {\n return { filter: query.build() };\n } else {\n return {};\n }\n }\n}\n","import { Client } from '@notionhq/client';\nimport { Entity } from '@nx-ddd/common/domain';\nimport { Repository } from '@nx-ddd/common/domain';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { NotionConverter } from '../converter';\nimport { NotionBaseQuery } from '../query';\nimport { NotionQueryBuilder } from '../query-builder';\nimport { Observable } from 'rxjs';\n\nexport const NOTION_ACCESS_TOKEN = new InjectionToken<string>('[@nx-ddd/notion] Notion Access Token');\nexport const NOTION_DATABASE_ID = new InjectionToken('[@nx-ddd/notion] Notion Database Id');\n\nexport function provideNotionConfig(config: {accessToken: string}) {\n return { provide: NOTION_ACCESS_TOKEN, useValue: config.accessToken };\n}\n\n@Injectable()\nexport abstract class NotionRepository<E extends Entity & {id: string}> extends Repository<E> {\n protected abstract databaseId: string;\n protected abstract converter: NotionConverter<E>;\n\n protected token: string = inject(NOTION_ACCESS_TOKEN);\n protected client = new Client({auth: this.token});\n protected queryBuilder = new NotionQueryBuilder();\n protected get parent(): {type: 'database_id', database_id: string} {\n return { type: 'database_id', database_id: this.databaseId };\n }\n\n async query(\n filterQuery?: NotionBaseQuery, \n sortQuery?: NotionBaseQuery,\n startCursor?: string,\n pageSize?: number,\n ) {\n try {\n const obj = this.queryBuilder.build(filterQuery, sortQuery);\n const res = await this.client.databases.query({\n database_id: this.databaseId,\n ...obj as any,\n start_cursor: startCursor,\n page_size: pageSize,\n });\n return {\n results: res.results.map(result => this.converter.fromNotion(result)),\n nextCursor: res.next_cursor,\n hasMore: res.has_more,\n }\n } catch (error) {\n throw error;\n }\n }\n\n async queryV2(args?: any) {\n try {\n const res = await this.client.databases.query({\n database_id: this.databaseId,\n ...(args ?? {}),\n });\n return {\n results: res.results.map(result => this.converter.fromNotion(result)),\n nextCursor: res.next_cursor,\n hasMore: res.has_more,\n }\n } catch (error) {\n throw error;\n }\n }\n\n async list({\n batchSize = 100,\n }: {\n batchSize?: number,\n } = {}): Promise<E[]> {\n const items: E[] = [];\n let nextCursor: string | undefined = undefined;\n let pageCount = 0;\n\n console.log(`[NotionRepository] Starting pagination with batch size: ${batchSize}`);\n\n // eslint-disable-next-line no-constant-condition\n while(true) {\n pageCount++;\n const res = await this.query(undefined, undefined, nextCursor, batchSize);\n console.log(`[NotionRepository] Page ${pageCount}: Retrieved ${res.results.length} items, hasMore: ${res.hasMore}, nextCursor: ${res.nextCursor ? 'present' : 'null'}`);\n\n items.push(...res.results);\n nextCursor = res.nextCursor ?? undefined;\n \n if (!res.hasMore) {\n console.log(`[NotionRepository] Pagination complete. Total items: ${items.length} from ${pageCount} pages`);\n break;\n }\n }\n \n return items;\n }\n\n listChanges(): Observable<E[]> {\n throw new Error('NotionRepository.listChanges() is not implemented');\n }\n\n async get({id}: {id: string}): Promise<E> {\n const data = await this.client.pages.retrieve({page_id: id});\n return this.converter.fromNotion(data);\n }\n\n async create(entity: Omit<E, 'id' | 'createdAt' | 'updatedAt'> & Partial<Pick<E, 'id'>>): Promise<E> {\n try {\n const res = await this.client.pages.create({\n parent: this.parent,\n properties: {...this.converter.toNotion(entity as E)},\n }); \n return this.converter.fromNotion(res);\n } catch (error) {\n throw error;\n }\n }\n\n async createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]> {\n throw new Error('NotionRepository.createMany() is not implemented');\n }\n\n async update(entity: Partial<E>) {\n const data = {\n page_id: (entity as any).id,\n properties: {...this.converter.toNotion(entity)},\n };\n await this.client.pages.update(data);\n }\n\n async save(data: Partial<E>): Promise<boolean | [E, boolean]> {\n throw new Error('NotionRepository.save() is not implemented');\n }\n\n async saveMany(entities: E[]): Promise<void> {\n throw new Error('NotionRepository.saveMany() is not implemented');\n }\n\n async updateMany(data: Partial<E>[]) {\n throw new Error('NotionRepository.updateMany() is not implemented');\n }\n\n async delete({id}: {id: string}) {\n throw new Error('NotionRepository.delete() is not implemented');\n }\n\n async deleteMany(params: { id: string; }[]): Promise<number> {\n throw new Error('NotionRepository.deleteMany() is not implemented');\n }\n\n async deleteAll(): Promise<void> {\n throw new Error('NotionRepository.deleteAll() is not implemented');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toNotion.toNotionValue","toNotion.toNotionTitle","toNotion.toNotionStatus","toNotion.toNotionRelationMulti","toNotion.toNotionRelation","toNotion.toNotionRichText","toNotion.toNotionFormula","toNotion.toNotionRollup","toNotion.toNotionUrl","toNotion.toNotionDate","toNotion.toNotionSelect","toNotion.toNotionPhoneNumber","toNotion.toNotionNumber","toNotion.toNotionEmail","fromNotion.fromNotionValue","fromNotion.fromNotionTitle","fromNotion.fromNotionUrl","fromNotion.fromNotionRichText","fromNotion.fromNotionRelation","fromNotion.fromNotionRelationMulti","fromNotion.fromNotionStatus","fromNotion.fromNotionFormula","fromNotion.fromNotionRollup","fromNotion.fromNotionRollupMulti","fromNotion.fromNotionCreatedTime","fromNotion.fromNotionLastEditedTime","fromNotion.fromNotionDate","fromNotion.fromNotionNumber","fromNotion.fromNotionSelect","fromNotion.fromNotionPhoneNumber","fromNotion.fromNotionEmail","fromNotion.fromNotionUniqueID"],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-notion.mjs","sources":["../../../../../packages/@nx-ddd/notion/src/lib/to-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/from-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/utils.ts","../../../../../packages/@nx-ddd/notion/src/lib/decorators/decorators.ts","../../../../../packages/@nx-ddd/notion/src/lib/converter/converter.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.ts","../../../../../packages/@nx-ddd/notion/src/lib/query/query.ts","../../../../../packages/@nx-ddd/notion/src/lib/query-builder/query-builder.ts","../../../../../packages/@nx-ddd/notion/src/lib/repository/repository.ts","../../../../../packages/@nx-ddd/notion/src/lib/nx-ddd-notion.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport { NotionAnnotation } from \"./decorators\";\n\n\nexport function toNotionValue(value: any, annotation: NotionAnnotation) {\n switch(annotation.type) {\n case 'title': return toNotionTitle(value);\n case 'status': return toNotionStatus(value);\n case 'relation':\n if ((annotation.options as any).multi) {\n return toNotionRelationMulti(value);\n } else {\n return toNotionRelation(value);\n }\n case 'formula': return toNotionFormula(value);\n case 'rich_text': return toNotionRichText(value);\n case 'rollup': return toNotionRollup(value);\n case 'url': return toNotionUrl(value);\n case 'date': return toNotionDate(value);\n case 'select': return toNotionSelect(value);\n case 'number': return toNotionNumber(value);\n case 'phone_number': return toNotionPhoneNumber(value);\n case 'email': return toNotionEmail(value);\n }\n}\n\nexport function toNotionTitle(value: string) {\n return value ? {type: 'title', title: [{text: {content: value}}]} : undefined;\n}\n\nexport function toNotionStatus(value: string) {\n return value ? {type: 'status', status: {name: value}} : undefined;\n}\n\nexport function toNotionRelationMulti(ids: string[]) {\n return Array.isArray(ids) ? {type: 'relation', relation: (ids).map(id => ({id}))} : undefined;\n}\n\nexport function toNotionRelation(value: string) {\n return value ? toNotionRelationMulti([value]) : undefined;\n}\n\nexport function toNotionRichText(text?: string) {\n return text ? {type: 'rich_text', rich_text: [{text: {content: text}}]} : undefined;\n}\n\nexport function toNotionFormula(value: string): void {\n return;\n}\n\nexport function toNotionRollup(value: string): void {\n return;\n}\n\nexport function toNotionUrl(value: string) {\n return value ? {type: 'url', url: value} : undefined;\n}\n\nexport function toNotionDate(value: Date) {\n return value ? {type: 'date', date: {start: dayjs(value).format() }} : undefined;\n}\n\nexport function toNotionSelect(value: string) {\n return value ? {type: 'select', select: {name: value}} : undefined;\n}\n\nexport function toNotionPhoneNumber(value: string) {\n return value ? {type: 'phone_number', phone_number: value} : undefined;\n}\n\nexport function toNotionNumber(value: number) {\n return value ? {type: 'number', number: value} : undefined;\n}\n\nexport function toNotionEmail(value: string) {\n return value ? {type: 'email', email: value} : undefined;\n}\n","import dayjs from \"dayjs\";\nimport { NotionAnnotation } from \"./decorators\";\nimport {\n NotionValue, NotionTitle, NotionUrl, NotionRichText, NotionRelation,\n NotionStatus, NotionFormula, NotionRollup, NotionCreatedTime,\n NotionLastEditedTime, NotionDate, NotionNumber, NotionSelect,\n NotionPhoneNumber, NotionEmail, NotionID\n} from \"./types\";\n\n\nexport function fromNotionValue(value: NotionValue, annotation: NotionAnnotation) {\n switch(value.type) {\n case 'title': return fromNotionTitle(value);\n case 'formula': return fromNotionFormula(value);\n case 'relation':\n if ((annotation.options as any).multi) {\n return fromNotionRelationMulti(value);\n } else {\n return fromNotionRelation(value);\n }\n case 'rich_text': return fromNotionRichText(value);\n case 'status': return fromNotionStatus(value);\n case 'url': return fromNotionUrl(value);\n case 'rollup':\n if ((annotation.options as any).multi) {\n return fromNotionRollupMulti(value);\n } else {\n return fromNotionRollup(value);\n }\n case 'created_time': return fromNotionCreatedTime(value);\n case 'last_edited_time': return fromNotionLastEditedTime(value);\n case 'date': return fromNotionDate(value);\n case 'number': return fromNotionNumber(value);\n case 'select': return fromNotionSelect(value);\n case 'phone_number': return fromNotionPhoneNumber(value);\n case 'email': return fromNotionEmail(value);\n case 'unique_id': return fromNotionUniqueID(value);\n }\n}\n\nexport function fromNotionTitle(notionTitle: NotionTitle): string {\n return notionTitle?.title?.[0]?.text?.content ?? '';\n}\n\nexport function fromNotionUrl(notionUrl: NotionUrl): string | null {\n return notionUrl.url;\n}\n\nexport function fromNotionRichText(notionRichText: NotionRichText): string | null {\n return notionRichText.rich_text.map(({plain_text}) => plain_text).join('') || null;\n}\n\nexport function fromNotionRelation(notionRelation: NotionRelation): string | null {\n return fromNotionRelationMulti(notionRelation)?.[0] ?? null;\n}\n\nexport function fromNotionRelationMulti(notionRelation: NotionRelation): string[] {\n return notionRelation.relation.map(r => r.id);\n}\n\nexport function fromNotionStatus(notionStatus: NotionStatus): string | null {\n return notionStatus.status?.name ?? null;\n}\n\nexport function fromNotionFormula(notionFormula: NotionFormula): string | number | Date | null {\n switch(notionFormula.formula?.type) {\n case 'string': return notionFormula.formula.string;\n case 'number': return notionFormula.formula.number;\n case 'date': return fromNotionDate(notionFormula.formula as any);\n default: return null;\n }\n}\n\nexport function fromNotionRollup(notionRollup: NotionRollup): string | number {\n if (notionRollup.rollup.type === 'number') {\n return fromNotionNumber(notionRollup.rollup);\n }\n return fromNotionRollupMulti(notionRollup)?.[0] ?? null;\n}\n\nexport function fromNotionRollupMulti(notionRollup: NotionRollup): string[] | number[] {\n if (notionRollup.rollup.type === 'number') {\n return [];\n }\n return (notionRollup.rollup.array ?? []).map(notionValue => {\n if (notionValue.type === 'rich_text') {\n return (notionValue.rich_text ?? []).map(text => text.plain_text).join();\n } else if (notionValue.type === 'number') {\n return notionValue.number ?? null;\n }\n return [];\n }) as unknown as string[] | number[];\n}\n\nexport function fromNotionCreatedTime(notionCreatedTime: NotionCreatedTime): dayjs.Dayjs {\n return dayjs(notionCreatedTime.created_time);\n}\n\nexport function fromNotionLastEditedTime(notionLastEditedTime: NotionLastEditedTime): dayjs.Dayjs {\n return dayjs(notionLastEditedTime.last_edited_time);\n}\n\nexport function fromNotionDate(notionDate: NotionDate): Date | null {\n return notionDate.date?.start ? dayjs(notionDate.date?.start).toDate() : null;\n}\n\nexport function fromNotionNumber(notionNumber: NotionNumber) {\n return notionNumber.number ?? null;\n}\n\nexport function fromNotionSelect(notionSelect: NotionSelect) {\n return notionSelect.select?.name ?? null;\n}\n\nexport function fromNotionPhoneNumber(notionPhoneNumber: NotionPhoneNumber) {\n return notionPhoneNumber.phone_number ?? null;\n}\n\nexport function fromNotionEmail(notionEmail: NotionEmail) {\n return notionEmail.email ?? null;\n}\n\nexport function fromNotionUniqueID(value: NotionID) {\n return value.unique_id.number;\n}\n","\nexport * from './types';\n\n\nimport * as toNotion from './to-notion';\nimport * as fromNotion from './from-notion';\n\n\nexport * from './to-notion';\nexport * from './from-notion';\n\n\nexport class NotionUtils {\n \n static toNotionValue = toNotion.toNotionValue;\n static toNotionTitle = toNotion.toNotionTitle;\n static toNotionStatus = toNotion.toNotionStatus;\n static toNotionRelationMulti = toNotion.toNotionRelationMulti;\n static toNotionRelation = toNotion.toNotionRelation;\n static toNotionRichText = toNotion.toNotionRichText;\n static toNotionFormula = toNotion.toNotionFormula;\n static toNotionRollup = toNotion.toNotionRollup;\n static toNotionUrl = toNotion.toNotionUrl;\n static toNotionDate = toNotion.toNotionDate;\n static toNotionSelect = toNotion.toNotionSelect;\n static toNotionPhoneNumber = toNotion.toNotionPhoneNumber;\n static toNotionNumber = toNotion.toNotionNumber;\n static toNotionEmail = toNotion.toNotionEmail;\n\n \n static fromNotionValue = fromNotion.fromNotionValue;\n static fromNotionTitle = fromNotion.fromNotionTitle;\n static fromNotionUrl = fromNotion.fromNotionUrl;\n static fromNotionRichText = fromNotion.fromNotionRichText;\n static fromNotionRelation = fromNotion.fromNotionRelation;\n static fromNotionRelationMulti = fromNotion.fromNotionRelationMulti;\n static fromNotionStatus = fromNotion.fromNotionStatus;\n static fromNotionFormula = fromNotion.fromNotionFormula;\n static fromNotionRollup = fromNotion.fromNotionRollup;\n static fromNotionRollupMulti = fromNotion.fromNotionRollupMulti;\n static fromNotionCreatedTime = fromNotion.fromNotionCreatedTime;\n static fromNotionLastEditedTime = fromNotion.fromNotionLastEditedTime;\n static fromNotionDate = fromNotion.fromNotionDate;\n static fromNotionNumber = fromNotion.fromNotionNumber;\n static fromNotionSelect = fromNotion.fromNotionSelect;\n static fromNotionPhoneNumber = fromNotion.fromNotionPhoneNumber;\n static fromNotionEmail = fromNotion.fromNotionEmail;\n static fromNotionUniqueID = fromNotion.fromNotionUniqueID;\n}\n","export const NOTION_ANNOTATIONS = 'notion_annotations';\nexport const NOTION_DATABASE_ANNOTATION = 'notion_database_annotation';\nexport type NotionFieldType = 'title' | 'url' | 'rich_text' \n | 'relation' | 'status' | 'formula' | 'rollup' | 'timestamp'\n | 'number' | 'created_time' | 'last_edited_time' | 'date' | 'select'\n | 'phone_number' | 'email' | 'checkbox' | 'created_by' | 'files'\n | 'last_edited_by' | 'multi_select' | 'people' | 'unique_id';\nexport interface NotionAnnotation<T extends object = Record<string, never>> {\n type: NotionFieldType;\n fieldName: string;\n propName: string;\n options?: T;\n}\n\nfunction createDecorator<T extends object = Record<string, never>>(type: NotionFieldType, defaultOptions?: T) {\n return (name?: string, options?: Partial<T>) => {\n return (target: any, propName: string) => {\n const fieldName = name || propName;\n const ANNOTATION: NotionAnnotation<T> = {type, fieldName, propName, options: {...defaultOptions, ...options} as T};\n target.constructor[NOTION_ANNOTATIONS] ??= [];\n target.constructor[NOTION_ANNOTATIONS].push(ANNOTATION);\n };\n };\n}\n\nexport const Title = createDecorator('title');\nexport const Url = createDecorator('url');\nexport const RichText = createDecorator('rich_text');\nexport const Relation = createDecorator<{multi: boolean}>('relation', {multi: false});\nexport const Status = createDecorator('status');\nexport const Formula = createDecorator('formula');\nexport const Rollup = createDecorator<{multi: boolean}>('rollup', {multi: false});\nexport const Timestamp = createDecorator('timestamp');\nexport const Number = createDecorator('number');\nexport const CreatedTime = createDecorator('created_time');\nexport const LastEditedTime = createDecorator('last_edited_time');\nexport const Date = createDecorator('date');\nexport const Select = createDecorator('select');\nexport const PhoneNumber = createDecorator('phone_number');\nexport const Email = createDecorator('email');\nexport const UniqueID = createDecorator('unique_id');\n\n\n\n\n\n\n\n\n\nfunction Database(databaseId: string) {\n return (target: any) => {\n target[NOTION_DATABASE_ANNOTATION] = databaseId;\n };\n}\n\n\nexport function getDatabaseId(target: any): string | undefined {\n return target[NOTION_DATABASE_ANNOTATION];\n}\n\nexport const Notion = {\n Database,\n Title,\n Url,\n RichText,\n Relation,\n Status,\n Formula,\n Rollup,\n Timestamp,\n Number,\n CreatedTime,\n LastEditedTime,\n Date,\n Select,\n PhoneNumber,\n Email,\n UniqueID,\n};\n","import { PageObjectResponse, PartialPageObjectResponse, PartialDatabaseObjectResponse, DatabaseObjectResponse } from \"@notionhq/client/build/src/api-endpoints\";\nimport { NotionUtils } from \"../utils\";\nimport { NotionAnnotation, NOTION_ANNOTATIONS } from \"../decorators\";\nimport { omitBy } from \"lodash-es\";\nimport { Type } from \"@nx-ddd/common/domain\";\n\nexport class NotionHelper {\n static fromNotion<E>(\n page: PageObjectResponse | PartialPageObjectResponse | PartialDatabaseObjectResponse | DatabaseObjectResponse,\n Entity: Type<E>\n ): E {\n const annotations: NotionAnnotation[] = (Entity as any)[NOTION_ANNOTATIONS] ?? [];\n const obj = annotations.reduce((obj, annotation) => {\n const value = (page as any)['properties'][annotation.fieldName]\n ? NotionUtils.fromNotionValue((page as any)['properties'][annotation.fieldName], annotation)\n : undefined;\n return {...obj, [annotation.propName]: value};\n }, {id: page.id});\n return (Entity as any).from(obj);\n }\n\n static toNotion<E>(entity: Partial<E>, Entity: Type<E>): object {\n const annotations: NotionAnnotation[] = (Entity as any)[NOTION_ANNOTATIONS] ?? [];\n const data = annotations.reduce((obj, annotation) => ({\n ...obj,\n [annotation.fieldName]: NotionUtils.toNotionValue((entity as Record<string, any>)[annotation.propName], annotation),\n }), {});\n return omitBy(data, (value) => typeof value === 'undefined');\n }\n}\n\nexport abstract class NotionConverter<E> {\n protected abstract Entity: Type<E>;\n\n fromNotion(page: PageObjectResponse | PartialPageObjectResponse | PartialDatabaseObjectResponse | DatabaseObjectResponse): E {\n return NotionHelper.fromNotion<E>(page, this.Entity);\n }\n\n toNotion(entity: Partial<E>): object {\n return NotionHelper.toNotion<E>(entity, this.Entity);\n }\n}\n\nexport function createConverter<E = any>(Entity: any): NotionConverter<E> {\n class Converter extends NotionConverter<E> {\n protected Entity = Entity;\n }\n\n return new Converter();\n}\n","import { inject, InjectionToken } from \"@angular/core\";\nimport type { NotionService } from \"./notion.service.impl\";\n\nexport interface NotionConfig {\n token: string;\n}\n\nexport const NOTION_SERVICE = new InjectionToken<NotionService>('NOTION_SERVICE');\nexport const NOTION_CONFIG = new InjectionToken<NotionConfig>('NOTION_CONFIG');\n\nexport function injectNotion(): NotionService | null {\n return inject(NOTION_SERVICE, { optional: true }) ?? null;\n}\n","import { NotionAnnotation, NOTION_ANNOTATIONS } from \"../decorators\";\nimport { Entity } from \"@nx-ddd/common/domain\";\n\ntype Evaluation = '==' | '>' | '>=' | '<' | '<=' | '!=' | 'in';\n\nexport class N {\n static RollupPropQuery(property: string, evaluation: Evaluation, value: string | number) {\n return { property, rollup: { every: { rich_text: { equals: value } } } };\n }\n\n static FormulaQuery(property: string, evaluation: Evaluation, value: string | number) {\n return { property, formula: {}};\n }\n\n static LastEditedTime(property: string, evaluation: Evaluation, value: string | number) {\n const query = evaluation === '>' ? 'after' \n : evaluation === '<' ? 'before'\n : evaluation === '==' ? 'equals'\n : evaluation === '<=' ? 'on_or_before'\n : evaluation === '>=' ? 'on_or_after'\n : evaluation === '!=' ? '' : '';\n return { timestamp: 'last_edited_time', last_edited_time: {[query]: value} };\n }\n\n static Timestamp(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === '>' ? 'after' \n : evaluation === '<' ? 'before'\n : evaluation === '==' ? 'equals'\n : evaluation === '<=' ? 'on_or_before'\n : evaluation === '>=' ? 'on_or_after'\n : evaluation === '!=' ? '' : '';\n return { property, timestamp: {[query]: value} };\n }\n\n static Status(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === '==' ? 'equals' : '';\n \n return { property: 'ステータス', status: {[query]: value} };\n }\n \n static Relation(property: string, evaluation: Evaluation, value: string) {\n const query = evaluation === 'in' ? 'contains': '';\n return { property, relation: {[query]: value} };\n }\n}\n\nexport abstract class NotionBaseQuery {\n type!: 'and' | 'or' | 'filter' | 'sort';\n abstract build(): unknown;\n}\n\nexport class NotionFilter extends NotionBaseQuery {\n readonly type = 'filter' as const;\n\n constructor(\n public propertyType: any,\n public propertyName: string,\n public evaluation: Evaluation,\n public value: string | number,\n ) { super(); }\n\n build() {\n switch(this.propertyName) {\n case 'last_edited_time': return N.LastEditedTime(this.propertyName, this.evaluation, this.value);\n }\n\n switch(this.propertyType) {\n case 'rollup': return N.RollupPropQuery(this.propertyName, this.evaluation, this.value);\n case 'formula': return N.FormulaQuery(this.propertyName, this.evaluation, this.value);\n case 'status': return N.Status(this.propertyName, this.evaluation, this.value as string);\n case 'relation': return N.Relation(this.propertyName, this.evaluation, this.value as string);\n }\n }\n}\n\nexport class NotionSort extends NotionBaseQuery {\n readonly type = 'sort' as const;\n constructor(\n public property: string,\n public direction: 'asc' | 'desc' = 'asc',\n ) { super(); }\n\n build() {\n return {\n property: this.property,\n direction: this.direction === 'asc' ? 'ascending' : 'descending',\n };\n }\n}\n\nexport class NotionAnd extends NotionBaseQuery {\n readonly type = 'and' as const;\n arr: NotionFilter[];\n\n constructor(...filters: NotionFilter[]) {\n super();\n this.arr = filters;\n }\n\n build() {\n return {and: this.arr.map(filter => filter.build())};\n }\n}\n\nexport class NotionOr extends NotionBaseQuery {\n readonly type = 'or' as const;\n arr: NotionFilter[];\n\n constructor(...filters: NotionFilter[]) {\n super();\n this.arr = filters;\n }\n\n build() {\n return {or: this.arr.map(filter => filter.build())};\n }\n}\n\nexport const Query = <E = any>(Entity: E) => {\n const Filter = (_propName: string, evaluation: Evaluation, value: string | number): NotionFilter => {\n const annotation: NotionAnnotation = (Entity as Record<string, any>)[NOTION_ANNOTATIONS].find(({propName}: {propName: string}) => propName === _propName);\n\n \n \n \n\n return new NotionFilter(annotation?.type, annotation?.fieldName ?? _propName, evaluation, value);\n };\n const OrderBy = (_propName: string, direction: 'asc' | 'desc'): NotionSort => {\n const annotation: NotionAnnotation = (Entity as Record<string, any>)[NOTION_ANNOTATIONS].find(({propName}: {propName: string}) => propName === _propName);\n return new NotionSort(annotation?.fieldName ?? _propName, direction);\n };\n \n const And = (...args: NotionFilter[]): NotionAnd => new NotionAnd(...args);\n const Or = (...args: NotionFilter[]): NotionOr => new NotionOr(...args);\n\n return {Filter, OrderBy, And, Or};\n}\n","import { NotionBaseQuery } from \"../query\";\n\nexport class NotionQueryBuilder {\n constructor() { }\n\n build(filterQuery?: NotionBaseQuery, sortQuery?: NotionBaseQuery) {\n return {\n ...(filterQuery ? this.buildFilterQuery(filterQuery) : {}),\n ...(sortQuery ? this.buildSortQuery(sortQuery) : {}),\n }\n }\n\n protected buildSortQuery(query: NotionBaseQuery) {\n if (query.type === 'sort') {\n return { sorts: [query.build()]};\n } else {\n return {};\n }\n }\n\n protected buildFilterQuery(query: NotionBaseQuery) {\n if (query.type === 'filter') {\n return { filter: { and: [query.build()] } };\n } else if (['and', 'or'].includes(query.type)) {\n return { filter: query.build() };\n } else {\n return {};\n }\n }\n}\n","import { Client } from '@notionhq/client';\nimport { Entity } from '@nx-ddd/common/domain';\nimport { Repository } from '@nx-ddd/common/domain';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { NotionConverter } from '../converter';\nimport { NotionBaseQuery } from '../query';\nimport { NotionQueryBuilder } from '../query-builder';\nimport { Observable } from 'rxjs';\n\nexport const NOTION_ACCESS_TOKEN = new InjectionToken<string>('[@nx-ddd/notion] Notion Access Token');\nexport const NOTION_DATABASE_ID = new InjectionToken('[@nx-ddd/notion] Notion Database Id');\n\nexport function provideNotionConfig(config: {accessToken: string}) {\n return { provide: NOTION_ACCESS_TOKEN, useValue: config.accessToken };\n}\n\n@Injectable()\nexport abstract class NotionRepository<E extends Entity & {id: string}> extends Repository<E> {\n protected abstract databaseId: string;\n protected abstract converter: NotionConverter<E>;\n\n protected token: string = inject(NOTION_ACCESS_TOKEN);\n protected client = new Client({auth: this.token});\n protected queryBuilder = new NotionQueryBuilder();\n protected get parent(): {type: 'database_id', database_id: string} {\n return { type: 'database_id', database_id: this.databaseId };\n }\n\n async query(\n filterQuery?: NotionBaseQuery, \n sortQuery?: NotionBaseQuery,\n startCursor?: string,\n pageSize?: number,\n ) {\n try {\n const obj = this.queryBuilder.build(filterQuery, sortQuery);\n const res = await this.client.databases.query({\n database_id: this.databaseId,\n ...obj as any,\n start_cursor: startCursor,\n page_size: pageSize,\n });\n return {\n results: res.results.map(result => this.converter.fromNotion(result)),\n nextCursor: res.next_cursor,\n hasMore: res.has_more,\n }\n } catch (error) {\n throw error;\n }\n }\n\n async queryV2(args?: any) {\n try {\n const res = await this.client.databases.query({\n database_id: this.databaseId,\n ...(args ?? {}),\n });\n return {\n results: res.results.map(result => this.converter.fromNotion(result)),\n nextCursor: res.next_cursor,\n hasMore: res.has_more,\n }\n } catch (error) {\n throw error;\n }\n }\n\n async list({\n batchSize = 100,\n }: {\n batchSize?: number,\n } = {}): Promise<E[]> {\n const items: E[] = [];\n let nextCursor: string | undefined = undefined;\n let pageCount = 0;\n\n console.log(`[NotionRepository] Starting pagination with batch size: ${batchSize}`);\n\n // eslint-disable-next-line no-constant-condition\n while(true) {\n pageCount++;\n const res = await this.query(undefined, undefined, nextCursor, batchSize);\n console.log(`[NotionRepository] Page ${pageCount}: Retrieved ${res.results.length} items, hasMore: ${res.hasMore}, nextCursor: ${res.nextCursor ? 'present' : 'null'}`);\n\n items.push(...res.results);\n nextCursor = res.nextCursor ?? undefined;\n \n if (!res.hasMore) {\n console.log(`[NotionRepository] Pagination complete. Total items: ${items.length} from ${pageCount} pages`);\n break;\n }\n }\n \n return items;\n }\n\n listChanges(): Observable<E[]> {\n throw new Error('NotionRepository.listChanges() is not implemented');\n }\n\n async get({id}: {id: string}): Promise<E> {\n const data = await this.client.pages.retrieve({page_id: id});\n return this.converter.fromNotion(data);\n }\n\n async create(entity: Omit<E, 'id' | 'createdAt' | 'updatedAt'> & Partial<Pick<E, 'id'>>): Promise<E> {\n try {\n const res = await this.client.pages.create({\n parent: this.parent,\n properties: {...this.converter.toNotion(entity as E)},\n }); \n return this.converter.fromNotion(res);\n } catch (error) {\n throw error;\n }\n }\n\n async createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]> {\n throw new Error('NotionRepository.createMany() is not implemented');\n }\n\n async update(entity: Partial<E>) {\n const data = {\n page_id: (entity as any).id,\n properties: {...this.converter.toNotion(entity)},\n };\n await this.client.pages.update(data);\n }\n\n async save(data: Partial<E>): Promise<boolean | [E, boolean]> {\n throw new Error('NotionRepository.save() is not implemented');\n }\n\n async saveMany(entities: E[]): Promise<void> {\n throw new Error('NotionRepository.saveMany() is not implemented');\n }\n\n async updateMany(data: Partial<E>[]) {\n throw new Error('NotionRepository.updateMany() is not implemented');\n }\n\n async delete({id}: {id: string}) {\n throw new Error('NotionRepository.delete() is not implemented');\n }\n\n async deleteMany(params: { id: string; }[]): Promise<number> {\n throw new Error('NotionRepository.deleteMany() is not implemented');\n }\n\n async deleteAll(): Promise<void> {\n throw new Error('NotionRepository.deleteAll() is not implemented');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toNotion.toNotionValue","toNotion.toNotionTitle","toNotion.toNotionStatus","toNotion.toNotionRelationMulti","toNotion.toNotionRelation","toNotion.toNotionRichText","toNotion.toNotionFormula","toNotion.toNotionRollup","toNotion.toNotionUrl","toNotion.toNotionDate","toNotion.toNotionSelect","toNotion.toNotionPhoneNumber","toNotion.toNotionNumber","toNotion.toNotionEmail","fromNotion.fromNotionValue","fromNotion.fromNotionTitle","fromNotion.fromNotionUrl","fromNotion.fromNotionRichText","fromNotion.fromNotionRelation","fromNotion.fromNotionRelationMulti","fromNotion.fromNotionStatus","fromNotion.fromNotionFormula","fromNotion.fromNotionRollup","fromNotion.fromNotionRollupMulti","fromNotion.fromNotionCreatedTime","fromNotion.fromNotionLastEditedTime","fromNotion.fromNotionDate","fromNotion.fromNotionNumber","fromNotion.fromNotionSelect","fromNotion.fromNotionPhoneNumber","fromNotion.fromNotionEmail","fromNotion.fromNotionUniqueID"],"mappings":";;;;;;;AAIM,SAAU,aAAa,CAAC,KAAU,EAAE,UAA4B,EAAA;AACpE,IAAA,QAAO,UAAU,CAAC,IAAI;QACpB,KAAK,OAAO,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC;QACzC,KAAK,QAAQ,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;AAC3C,QAAA,KAAK,UAAU;AACb,YAAA,IAAK,UAAU,CAAC,OAAe,CAAC,KAAK,EAAE;AACrC,gBAAA,OAAO,qBAAqB,CAAC,KAAK,CAAC;YACrC;iBAAO;AACL,gBAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC;YAChC;QACF,KAAK,SAAS,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;QAC7C,KAAK,WAAW,EAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAChD,KAAK,QAAQ,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;QAC3C,KAAK,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC;QACrC,KAAK,MAAM,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;QACvC,KAAK,QAAQ,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;QAC3C,KAAK,QAAQ,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;QAC3C,KAAK,cAAc,EAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC;QACtD,KAAK,OAAO,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC;;AAE7C;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;IACzC,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC,CAAC,EAAC,GAAG,SAAS;AAC/E;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;IAC1C,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAC,GAAG,SAAS;AACpE;AAEM,SAAU,qBAAqB,CAAC,GAAa,EAAA;AACjD,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG,SAAS;AAC/F;AAEM,SAAU,gBAAgB,CAAC,KAAa,EAAA;AAC5C,IAAA,OAAO,KAAK,GAAG,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;AAC3D;AAEM,SAAU,gBAAgB,CAAC,IAAa,EAAA;IAC5C,OAAO,IAAI,GAAG,EAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC,CAAC,EAAC,GAAG,SAAS;AACrF;AAEM,SAAU,eAAe,CAAC,KAAa,EAAA;IAC3C;AACF;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;IAC1C;AACF;AAEM,SAAU,WAAW,CAAC,KAAa,EAAA;AACvC,IAAA,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,GAAG,SAAS;AACtD;AAEM,SAAU,YAAY,CAAC,KAAW,EAAA;IACtC,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,EAAC,GAAG,SAAS;AAClF;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;IAC1C,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAC,GAAG,SAAS;AACpE;AAEM,SAAU,mBAAmB,CAAC,KAAa,EAAA;AAC/C,IAAA,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAC,GAAG,SAAS;AACxE;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,GAAG,SAAS;AAC5D;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;AACzC,IAAA,OAAO,KAAK,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,GAAG,SAAS;AAC1D;;AClEM,SAAU,eAAe,CAAC,KAAkB,EAAE,UAA4B,EAAA;AAC9E,IAAA,QAAO,KAAK,CAAC,IAAI;QACf,KAAK,OAAO,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3C,KAAK,SAAS,EAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC;AAC/C,QAAA,KAAK,UAAU;AACb,YAAA,IAAK,UAAU,CAAC,OAAe,CAAC,KAAK,EAAE;AACrC,gBAAA,OAAO,uBAAuB,CAAC,KAAK,CAAC;YACvC;iBAAO;AACL,gBAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;YAClC;QACF,KAAK,WAAW,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC;QAClD,KAAK,QAAQ,EAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAC7C,KAAK,KAAK,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC;AACvC,QAAA,KAAK,QAAQ;AACX,YAAA,IAAK,UAAU,CAAC,OAAe,CAAC,KAAK,EAAE;AACrC,gBAAA,OAAO,qBAAqB,CAAC,KAAK,CAAC;YACrC;iBAAO;AACL,gBAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC;YAChC;QACF,KAAK,cAAc,EAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC;QACxD,KAAK,kBAAkB,EAAE,OAAO,wBAAwB,CAAC,KAAK,CAAC;QAC/D,KAAK,MAAM,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC;QACzC,KAAK,QAAQ,EAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAC7C,KAAK,QAAQ,EAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAC7C,KAAK,cAAc,EAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC;QACxD,KAAK,OAAO,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3C,KAAK,WAAW,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC;;AAEtD;AAEM,SAAU,eAAe,CAAC,WAAwB,EAAA;AACtD,IAAA,OAAO,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;AACrD;AAEM,SAAU,aAAa,CAAC,SAAoB,EAAA;IAChD,OAAO,SAAS,CAAC,GAAG;AACtB;AAEM,SAAU,kBAAkB,CAAC,cAA8B,EAAA;IAC/D,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAC,UAAU,EAAC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI;AACpF;AAEM,SAAU,kBAAkB,CAAC,cAA8B,EAAA;IAC/D,OAAO,uBAAuB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;AAC7D;AAEM,SAAU,uBAAuB,CAAC,cAA8B,EAAA;AACpE,IAAA,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/C;AAEM,SAAU,gBAAgB,CAAC,YAA0B,EAAA;AACzD,IAAA,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI;AAC1C;AAEM,SAAU,iBAAiB,CAAC,aAA4B,EAAA;AAC5D,IAAA,QAAO,aAAa,CAAC,OAAO,EAAE,IAAI;QAChC,KAAK,QAAQ,EAAE,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM;QAClD,KAAK,QAAQ,EAAE,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM;QAClD,KAAK,MAAM,EAAE,OAAO,cAAc,CAAC,aAAa,CAAC,OAAc,CAAC;AAChE,QAAA,SAAS,OAAO,IAAI;;AAExB;AAEM,SAAU,gBAAgB,CAAC,YAA0B,EAAA;IACzD,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC;IAC9C;IACA,OAAO,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;AACzD;AAEM,SAAU,qBAAqB,CAAC,YAA0B,EAAA;IAC9D,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,WAAW,IAAG;AACzD,QAAA,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE;YACpC,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;QAC1E;AAAO,aAAA,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,WAAW,CAAC,MAAM,IAAI,IAAI;QACnC;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,CAAmC;AACtC;AAEM,SAAU,qBAAqB,CAAC,iBAAoC,EAAA;AACxE,IAAA,OAAO,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC;AAC9C;AAEM,SAAU,wBAAwB,CAAC,oBAA0C,EAAA;AACjF,IAAA,OAAO,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;AACrD;AAEM,SAAU,cAAc,CAAC,UAAsB,EAAA;IACnD,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI;AAC/E;AAEM,SAAU,gBAAgB,CAAC,YAA0B,EAAA;AACzD,IAAA,OAAO,YAAY,CAAC,MAAM,IAAI,IAAI;AACpC;AAEM,SAAU,gBAAgB,CAAC,YAA0B,EAAA;AACzD,IAAA,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI;AAC1C;AAEM,SAAU,qBAAqB,CAAC,iBAAoC,EAAA;AACxE,IAAA,OAAO,iBAAiB,CAAC,YAAY,IAAI,IAAI;AAC/C;AAEM,SAAU,eAAe,CAAC,WAAwB,EAAA;AACtD,IAAA,OAAO,WAAW,CAAC,KAAK,IAAI,IAAI;AAClC;AAEM,SAAU,kBAAkB,CAAC,KAAe,EAAA;AAChD,IAAA,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM;AAC/B;;MChHa,WAAW,CAAA;AAEtB,IAAA,OAAO,aAAa,GAAGA,aAAsB;AAC7C,IAAA,OAAO,aAAa,GAAGC,aAAsB;AAC7C,IAAA,OAAO,cAAc,GAAGC,cAAuB;AAC/C,IAAA,OAAO,qBAAqB,GAAGC,qBAA8B;AAC7D,IAAA,OAAO,gBAAgB,GAAGC,gBAAyB;AACnD,IAAA,OAAO,gBAAgB,GAAGC,gBAAyB;AACnD,IAAA,OAAO,eAAe,GAAGC,eAAwB;AACjD,IAAA,OAAO,cAAc,GAAGC,cAAuB;AAC/C,IAAA,OAAO,WAAW,GAAGC,WAAoB;AACzC,IAAA,OAAO,YAAY,GAAGC,YAAqB;AAC3C,IAAA,OAAO,cAAc,GAAGC,cAAuB;AAC/C,IAAA,OAAO,mBAAmB,GAAGC,mBAA4B;AACzD,IAAA,OAAO,cAAc,GAAGC,cAAuB;AAC/C,IAAA,OAAO,aAAa,GAAGC,aAAsB;AAG7C,IAAA,OAAO,eAAe,GAAGC,eAA0B;AACnD,IAAA,OAAO,eAAe,GAAGC,eAA0B;AACnD,IAAA,OAAO,aAAa,GAAGC,aAAwB;AAC/C,IAAA,OAAO,kBAAkB,GAAGC,kBAA6B;AACzD,IAAA,OAAO,kBAAkB,GAAGC,kBAA6B;AACzD,IAAA,OAAO,uBAAuB,GAAGC,uBAAkC;AACnE,IAAA,OAAO,gBAAgB,GAAGC,gBAA2B;AACrD,IAAA,OAAO,iBAAiB,GAAGC,iBAA4B;AACvD,IAAA,OAAO,gBAAgB,GAAGC,gBAA2B;AACrD,IAAA,OAAO,qBAAqB,GAAGC,qBAAgC;AAC/D,IAAA,OAAO,qBAAqB,GAAGC,qBAAgC;AAC/D,IAAA,OAAO,wBAAwB,GAAGC,wBAAmC;AACrE,IAAA,OAAO,cAAc,GAAGC,cAAyB;AACjD,IAAA,OAAO,gBAAgB,GAAGC,gBAA2B;AACrD,IAAA,OAAO,gBAAgB,GAAGC,gBAA2B;AACrD,IAAA,OAAO,qBAAqB,GAAGC,qBAAgC;AAC/D,IAAA,OAAO,eAAe,GAAGC,eAA0B;AACnD,IAAA,OAAO,kBAAkB,GAAGC,kBAA6B;;;AC/CpD,MAAM,kBAAkB,GAAG;AAC3B,MAAM,0BAA0B,GAAG;AAa1C,SAAS,eAAe,CAA2C,IAAqB,EAAE,cAAkB,EAAA;AAC1G,IAAA,OAAO,CAAC,IAAa,EAAE,OAAoB,KAAI;AAC7C,QAAA,OAAO,CAAC,MAAW,EAAE,QAAgB,KAAI;AACvC,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,QAAQ;AAClC,YAAA,MAAM,UAAU,GAAwB,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAC,GAAG,cAAc,EAAE,GAAG,OAAO,EAAM,EAAC;AAClH,YAAA,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAC7C,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACzD,QAAA,CAAC;AACH,IAAA,CAAC;AACH;MAEa,KAAK,GAAG,eAAe,CAAC,OAAO;MAC/B,GAAG,GAAG,eAAe,CAAC,KAAK;MAC3B,QAAQ,GAAG,eAAe,CAAC,WAAW;AAC5C,MAAM,QAAQ,GAAG,eAAe,CAAmB,UAAU,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC;MACvE,MAAM,GAAG,eAAe,CAAC,QAAQ;MACjC,OAAO,GAAG,eAAe,CAAC,SAAS;AACzC,MAAM,MAAM,GAAG,eAAe,CAAmB,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC;MACnE,SAAS,GAAG,eAAe,CAAC,WAAW;MACvC,MAAM,GAAG,eAAe,CAAC,QAAQ;MACjC,WAAW,GAAG,eAAe,CAAC,cAAc;MAC5C,cAAc,GAAG,eAAe,CAAC,kBAAkB;MACnD,IAAI,GAAG,eAAe,CAAC,MAAM;MAC7B,MAAM,GAAG,eAAe,CAAC,QAAQ;MACjC,WAAW,GAAG,eAAe,CAAC,cAAc;MAC5C,KAAK,GAAG,eAAe,CAAC,OAAO;MAC/B,QAAQ,GAAG,eAAe,CAAC,WAAW;AAUnD,SAAS,QAAQ,CAAC,UAAkB,EAAA;IAClC,OAAO,CAAC,MAAW,KAAI;AACrB,QAAA,MAAM,CAAC,0BAA0B,CAAC,GAAG,UAAU;AACjD,IAAA,CAAC;AACH;AAGM,SAAU,aAAa,CAAC,MAAW,EAAA;AACvC,IAAA,OAAO,MAAM,CAAC,0BAA0B,CAAC;AAC3C;AAEO,MAAM,MAAM,GAAG;IACpB,QAAQ;IACR,KAAK;IACL,GAAG;IACH,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,MAAM;IACN,WAAW;IACX,cAAc;IACd,IAAI;IACJ,MAAM;IACN,WAAW;IACX,KAAK;IACL,QAAQ;;;MCxEG,YAAY,CAAA;AACvB,IAAA,OAAO,UAAU,CACf,IAA6G,EAC7G,MAAe,EAAA;QAEf,MAAM,WAAW,GAAwB,MAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE;QACjF,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,KAAI;YACjD,MAAM,KAAK,GAAI,IAAY,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,SAAS;AAC5D,kBAAE,WAAW,CAAC,eAAe,CAAE,IAAY,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU;kBACzF,SAAS;AACb,YAAA,OAAO,EAAC,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,EAAC;QAC/C,CAAC,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC;AACjB,QAAA,OAAQ,MAAc,CAAC,IAAI,CAAC,GAAG,CAAC;IAClC;AAEA,IAAA,OAAO,QAAQ,CAAI,MAAkB,EAAE,MAAe,EAAA;QACpD,MAAM,WAAW,GAAwB,MAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE;AACjF,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,MAAM;AACpD,YAAA,GAAG,GAAG;AACN,YAAA,CAAC,UAAU,CAAC,SAAS,GAAG,WAAW,CAAC,aAAa,CAAE,MAA8B,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;SACpH,CAAC,EAAE,EAAE,CAAC;AACP,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,WAAW,CAAC;IAC9D;AACD;MAEqB,eAAe,CAAA;AAGnC,IAAA,UAAU,CAAC,IAA6G,EAAA;QACtH,OAAO,YAAY,CAAC,UAAU,CAAI,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IACtD;AAEA,IAAA,QAAQ,CAAC,MAAkB,EAAA;QACzB,OAAO,YAAY,CAAC,QAAQ,CAAI,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACtD;AACD;AAEK,SAAU,eAAe,CAAU,MAAW,EAAA;IAClD,MAAM,SAAU,SAAQ,eAAkB,CAAA;QAC9B,MAAM,GAAG,MAAM;AAC1B;IAED,OAAO,IAAI,SAAS,EAAE;AACxB;;MC1Ca,cAAc,GAAG,IAAI,cAAc,CAAgB,gBAAgB;MACnE,aAAa,GAAG,IAAI,cAAc,CAAe,eAAe;SAE7D,YAAY,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAC3D;;MCPa,CAAC,CAAA;AACZ,IAAA,OAAO,eAAe,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAsB,EAAA;AACrF,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;IAC1E;AAEA,IAAA,OAAO,YAAY,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAsB,EAAA;AAClF,QAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAC;IACjC;AAEA,IAAA,OAAO,cAAc,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAsB,EAAA;QACpF,MAAM,KAAK,GAAG,UAAU,KAAK,GAAG,GAAG;AACjC,cAAE,UAAU,KAAK,GAAG,GAAG;AACvB,kBAAE,UAAU,KAAK,IAAI,GAAG;AACxB,sBAAE,UAAU,KAAK,IAAI,GAAG;AACxB,0BAAE,UAAU,KAAK,IAAI,GAAG;AACxB,8BAAE,UAAU,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACjC,QAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,EAAC,CAAC,KAAK,GAAG,KAAK,EAAC,EAAE;IAC9E;AAEA,IAAA,OAAO,SAAS,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAa,EAAA;QACtE,MAAM,KAAK,GAAG,UAAU,KAAK,GAAG,GAAG;AACnC,cAAE,UAAU,KAAK,GAAG,GAAG;AACvB,kBAAE,UAAU,KAAK,IAAI,GAAG;AACxB,sBAAE,UAAU,KAAK,IAAI,GAAG;AACxB,0BAAE,UAAU,KAAK,IAAI,GAAG;AACxB,8BAAE,UAAU,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AAC/B,QAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAC,CAAC,KAAK,GAAG,KAAK,EAAC,EAAE;IAClD;AAEA,IAAA,OAAO,MAAM,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAa,EAAA;AACnE,QAAA,MAAM,KAAK,GAAG,UAAU,KAAK,IAAI,GAAG,QAAQ,GAAG,EAAE;AAEjD,QAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC,CAAC,KAAK,GAAG,KAAK,EAAC,EAAE;IACxD;AAEA,IAAA,OAAO,QAAQ,CAAC,QAAgB,EAAE,UAAsB,EAAE,KAAa,EAAA;AACrE,QAAA,MAAM,KAAK,GAAG,UAAU,KAAK,IAAI,GAAG,UAAU,GAAE,EAAE;AAClD,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,CAAC,KAAK,GAAG,KAAK,EAAC,EAAE;IACjD;AACD;MAEqB,eAAe,CAAA;AACnC,IAAA,IAAI;AAEL;AAEK,MAAO,YAAa,SAAQ,eAAe,CAAA;AAItC,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,UAAA;AACA,IAAA,KAAA;IANA,IAAI,GAAG,QAAiB;AAEjC,IAAA,WAAA,CACS,YAAiB,EACjB,YAAoB,EACpB,UAAsB,EACtB,KAAsB,EAAA;AAC3B,QAAA,KAAK,EAAE;QAJF,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,KAAK,GAAL,KAAK;IACD;IAEb,KAAK,GAAA;AACH,QAAA,QAAO,IAAI,CAAC,YAAY;YACtB,KAAK,kBAAkB,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;;AAGlG,QAAA,QAAO,IAAI,CAAC,YAAY;YACtB,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;YACvF,KAAK,SAAS,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;YACrF,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAe,CAAC;YACxF,KAAK,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAe,CAAC;;IAEhG;AACD;AAEK,MAAO,UAAW,SAAQ,eAAe,CAAA;AAGpC,IAAA,QAAA;AACA,IAAA,SAAA;IAHA,IAAI,GAAG,MAAe;IAC/B,WAAA,CACS,QAAgB,EAChB,SAAA,GAA4B,KAAK,EAAA;AACtC,QAAA,KAAK,EAAE;QAFF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,SAAS,GAAT,SAAS;IACL;IAEb,KAAK,GAAA;QACH,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY;SACjE;IACH;AACD;AAEK,MAAO,SAAU,SAAQ,eAAe,CAAA;IACnC,IAAI,GAAG,KAAc;AAC9B,IAAA,GAAG;AAEH,IAAA,WAAA,CAAY,GAAG,OAAuB,EAAA;AACpC,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAC;IACtD;AACD;AAEK,MAAO,QAAS,SAAQ,eAAe,CAAA;IAClC,IAAI,GAAG,IAAa;AAC7B,IAAA,GAAG;AAEH,IAAA,WAAA,CAAY,GAAG,OAAuB,EAAA;AACpC,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,EAAC;IACrD;AACD;AAEM,MAAM,KAAK,GAAG,CAAU,MAAS,KAAI;IAC1C,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,UAAsB,EAAE,KAAsB,KAAkB;QACjG,MAAM,UAAU,GAAsB,MAA8B,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,QAAQ,EAAqB,KAAK,QAAQ,KAAK,SAAS,CAAC;AAMzJ,QAAA,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,IAAI,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC;AAClG,IAAA,CAAC;AACD,IAAA,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,SAAyB,KAAgB;QAC3E,MAAM,UAAU,GAAsB,MAA8B,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,QAAQ,EAAqB,KAAK,QAAQ,KAAK,SAAS,CAAC;QACzJ,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,SAAS,IAAI,SAAS,EAAE,SAAS,CAAC;AACtE,IAAA,CAAC;AAED,IAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAoB,KAAgB,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC;AAC1E,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,IAAoB,KAAe,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEvE,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAC;AACnC;;MCvIa,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA,EAAgB;IAEhB,KAAK,CAAC,WAA6B,EAAE,SAA2B,EAAA;QAC9D,OAAO;AACL,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC1D,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;SACrD;IACH;AAEU,IAAA,cAAc,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACzB,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAC;QAClC;aAAO;AACL,YAAA,OAAO,EAAE;QACX;IACF;AAEU,IAAA,gBAAgB,CAAC,KAAsB,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7C;AAAO,aAAA,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE;QAClC;aAAO;AACL,YAAA,OAAO,EAAE;QACX;IACF;AACD;;MCpBY,mBAAmB,GAAG,IAAI,cAAc,CAAS,sCAAsC;MACvF,kBAAkB,GAAG,IAAI,cAAc,CAAC,qCAAqC;AAEpF,SAAU,mBAAmB,CAAC,MAA6B,EAAA;IAC/D,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;AACvE;AAGM,MAAgB,gBAAkD,SAAQ,UAAa,CAAA;AAIjF,IAAA,KAAK,GAAW,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,MAAM,GAAG,IAAI,MAAM,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC;AACvC,IAAA,YAAY,GAAG,IAAI,kBAAkB,EAAE;AACjD,IAAA,IAAc,MAAM,GAAA;QAClB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;IAC9D;IAEA,MAAM,KAAK,CACT,WAA6B,EAC7B,SAA2B,EAC3B,WAAoB,EACpB,QAAiB,EAAA;AAEjB,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5C,WAAW,EAAE,IAAI,CAAC,UAAU;AAC5B,gBAAA,GAAG,GAAU;AACb,gBAAA,YAAY,EAAE,WAAW;AACzB,gBAAA,SAAS,EAAE,QAAQ;AACpB,aAAA,CAAC;YACF,OAAO;AACL,gBAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACrE,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;aACtB;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,KAAK;QACb;IACF;IAEA,MAAM,OAAO,CAAC,IAAU,EAAA;AACtB,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5C,WAAW,EAAE,IAAI,CAAC,UAAU;AAC5B,gBAAA,IAAI,IAAI,IAAI,EAAE,CAAC;AAChB,aAAA,CAAC;YACF,OAAO;AACL,gBAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACrE,UAAU,EAAE,GAAG,CAAC,WAAW;gBAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;aACtB;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,KAAK;QACb;IACF;IAEA,MAAM,IAAI,CAAC,EACT,SAAS,GAAG,GAAG,MAGb,EAAE,EAAA;QACJ,MAAM,KAAK,GAAQ,EAAE;QACrB,IAAI,UAAU,GAAuB,SAAS;QAC9C,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,OAAO,CAAC,GAAG,CAAC,2DAA2D,SAAS,CAAA,CAAE,CAAC;;QAGnF,OAAM,IAAI,EAAE;AACV,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;AACzE,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,EAA2B,SAAS,CAAA,YAAA,EAAe,GAAG,CAAC,OAAO,CAAC,MAAM,CAAA,iBAAA,EAAoB,GAAG,CAAC,OAAO,CAAA,cAAA,EAAiB,GAAG,CAAC,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA,CAAE,CAAC;YAEvK,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AAC1B,YAAA,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,SAAS;AAExC,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,CAAA,qDAAA,EAAwD,KAAK,CAAC,MAAM,CAAA,MAAA,EAAS,SAAS,CAAA,MAAA,CAAQ,CAAC;gBAC3G;YACF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACtE;AAEA,IAAA,MAAM,GAAG,CAAC,EAAC,EAAE,EAAe,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;IACxC;IAEA,MAAM,MAAM,CAAC,MAA0E,EAAA;AACrF,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAW,CAAC,EAAC;AACtD,aAAA,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QACvC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,KAAK;QACb;IACF;IAEA,MAAM,UAAU,CAAC,IAAiD,EAAA;AAChE,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;IAEA,MAAM,MAAM,CAAC,MAAkB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG;YACX,OAAO,EAAG,MAAc,CAAC,EAAE;YAC3B,UAAU,EAAE,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC;SACjD;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACtC;IAEA,MAAM,IAAI,CAAC,IAAgB,EAAA;AACzB,QAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;IAC/D;IAEA,MAAM,QAAQ,CAAC,QAAa,EAAA;AAC1B,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACnE;IAEA,MAAM,UAAU,CAAC,IAAkB,EAAA;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AAEA,IAAA,MAAM,MAAM,CAAC,EAAC,EAAE,EAAe,EAAA;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;IACjE;IAEA,MAAM,UAAU,CAAC,MAAyB,EAAA;AACxC,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;IACrE;AAEA,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;IACpE;uGAvIoB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;AChBD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@nx-ddd/notion",
3
- "version": "19.51.0",
3
+ "version": "19.81.0",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
6
  "@notionhq/client": "^2.2.2",
7
- "@nx-ddd/common": "19.51.0",
7
+ "@nx-ddd/common": "19.81.0",
8
8
  "dayjs": "1.11.13",
9
9
  "lodash-es": "^4.17.15",
10
10
  "@angular/core": "19.1.4",
@@ -47,16 +47,7 @@ declare const Select: (name?: string, options?: Partial<Record<string, never>> |
47
47
  declare const PhoneNumber: (name?: string, options?: Partial<Record<string, never>> | undefined) => (target: any, propName: string) => void;
48
48
  declare const Email: (name?: string, options?: Partial<Record<string, never>> | undefined) => (target: any, propName: string) => void;
49
49
  declare const UniqueID: (name?: string, options?: Partial<Record<string, never>> | undefined) => (target: any, propName: string) => void;
50
- /**
51
- * Class decorator to specify Notion database ID
52
- * @param databaseId - The Notion database ID
53
- */
54
50
  declare function Database(databaseId: string): (target: any) => void;
55
- /**
56
- * Get database ID from class decorator
57
- * @param target - Entity class with @Notion.Database decorator
58
- * @returns Database ID or undefined if not decorated
59
- */
60
51
  declare function getDatabaseId(target: any): string | undefined;
61
52
  declare const Notion: {
62
53
  Database: typeof Database;
@@ -354,9 +345,6 @@ declare abstract class NotionRepository<E extends Entity & {
354
345
  static ɵprov: i0.ɵɵInjectableDeclaration<NotionRepository<any>>;
355
346
  }
356
347
 
357
- /**
358
- * Notion API type definitions
359
- */
360
348
  type NotionText = {
361
349
  type: 'text';
362
350
  text: {
@@ -476,9 +464,6 @@ type NotionID = {
476
464
  };
477
465
  type NotionValue = NotionTitle | NotionUrl | NotionRichText | NotionNumber | NotionRelation | NotionStatus | NotionFormula | NotionRollup | NotionCreatedTime | NotionLastEditedTime | NotionDate | NotionSelect | NotionPhoneNumber | NotionEmail | NotionID;
478
466
 
479
- /**
480
- * Converts a value to its Notion API representation based on annotation type
481
- */
482
467
  declare function toNotionValue(value: any, annotation: NotionAnnotation): void | {
483
468
  type: string;
484
469
  title: {
@@ -591,9 +576,6 @@ declare function toNotionEmail(value: string): {
591
576
  email: string;
592
577
  } | undefined;
593
578
 
594
- /**
595
- * Converts a Notion API value to its JavaScript representation
596
- */
597
579
  declare function fromNotionValue(value: NotionValue, annotation: NotionAnnotation): string | number | string[] | Date | dayjs.Dayjs | number[] | null;
598
580
  declare function fromNotionTitle(notionTitle: NotionTitle): string;
599
581
  declare function fromNotionUrl(notionUrl: NotionUrl): string | null;
@@ -613,10 +595,6 @@ declare function fromNotionPhoneNumber(notionPhoneNumber: NotionPhoneNumber): st
613
595
  declare function fromNotionEmail(notionEmail: NotionEmail): string;
614
596
  declare function fromNotionUniqueID(value: NotionID): number;
615
597
 
616
- /**
617
- * NotionUtils class for backward compatibility
618
- * @deprecated Use individual functions from './to-notion' and './from-notion' instead
619
- */
620
598
  declare class NotionUtils {
621
599
  static toNotionValue: typeof toNotionValue;
622
600
  static toNotionTitle: typeof toNotionTitle;
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-notion.d.ts","sources":["../../../../../packages/@nx-ddd/notion/src/lib/converter/converter.ts","../../../../../packages/@nx-ddd/notion/src/lib/decorators/decorators.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.impl.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.ts","../../../../../packages/@nx-ddd/notion/src/lib/query/query.ts","../../../../../packages/@nx-ddd/notion/src/lib/query-builder/query-builder.ts","../../../../../packages/@nx-ddd/notion/src/lib/repository/repository.ts","../../../../../packages/@nx-ddd/notion/src/lib/types.ts","../../../../../packages/@nx-ddd/notion/src/lib/to-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/from-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;AAMA;;AAeE;AAQD;AAED;;;;AAUC;AAED;;AC3CA;AACA;AACM;AAKA;;;;;AAKL;AAaD;AACA;AACA;AACA;;AAZY;AAaZ;AACA;AACA;;AAfY;AAgBZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;AAGG;AACH;AAMA;;;;AAIG;AACH;AAIA;;AArDiB;AAAA;AAAA;;;;AAAA;AAAA;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACiDjB;;;;;AAYQ;;;AAqBA;;AAgBA;;;;AAaP;;;;ACzHA;AAED;AACA;AAEA;;ACPA;AAEA;AACE;;;;;;;;;;AAIA;;;;AAIA;;;;;;AAUA;;;;;;AAUA;;;;;;AAMA;;;;;;AAID;AAED;;;AAGC;AAED;AAIW;AACA;AACA;;AALT;AAGS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBV;AAED;AAGW;;AAFT;AAES;;;;;AAUV;AAED;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWD;AAED;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWD;AAED;AAC6B;AASC;;;;;AC9H9B;;;;;;;;;;;;;;;AAUE;;;;;AAQA;;;;;AASD;;ACpBD;AACA;AAEA;;AAAiE;;;AAEhE;AAED;;AACsE;AACpE;;AAGA;;;;;;;AAOM;;;;;AAwBA;;;;;AAgBA;;AAIA;AAyBN;AAIM;;;;AAiBA;AAIA;AAQA;;AAQA;AAIA;;AAAyB;;;AAIS;AAIlC;;;AAGP;;ACzJD;;AAEG;AAEH;;AAEE;;;;;AAIF;;;;;AAMM;;AAAoC;AAAQ;;;AAAwB;;AACpE;;;AAA4C;;AAC5C;;;;;AAKA;;;;;AACA;;;AAAsD;;AAAsB;;;AAC5E;;;AAAkD;;;;;;AAClD;;;AAGJ;;;;;;;;AAQE;;;;;;;AAOE;;;AAAkD;;AAElD;;;;;AACA;;;;;AACA;;;;;AACA;;;AAAkD;;;;;;AAElD;;;;;AACA;;;;;AACA;;;AAAiD;AAAY;;;;AAE7D;;ACpDN;;AAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBC;AAED;;;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;;;AAEC;AAED;AAIA;AAIA;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;AAEC;AAED;;;AAEC;AAED;;;AAEC;;ACrED;;AAEG;AACH;AA8BA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AASA;AAOA;AAcA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;;ACjHA;;;AAGG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCC;;;"}
1
+ {"version":3,"file":"nx-ddd-notion.d.ts","sources":["../../../../../packages/@nx-ddd/notion/src/lib/converter/converter.ts","../../../../../packages/@nx-ddd/notion/src/lib/decorators/decorators.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.impl.ts","../../../../../packages/@nx-ddd/notion/src/lib/notion/notion.service.ts","../../../../../packages/@nx-ddd/notion/src/lib/query/query.ts","../../../../../packages/@nx-ddd/notion/src/lib/query-builder/query-builder.ts","../../../../../packages/@nx-ddd/notion/src/lib/repository/repository.ts","../../../../../packages/@nx-ddd/notion/src/lib/types.ts","../../../../../packages/@nx-ddd/notion/src/lib/to-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/from-notion.ts","../../../../../packages/@nx-ddd/notion/src/lib/utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;AAMA;;AAeE;AAQD;AAED;;;;AAUC;AAED;;AC3CA;AACA;AACM;AAKA;;;;;AAKL;AAaD;AACA;AACA;AACA;;AAZY;AAaZ;AACA;AACA;;AAfY;AAgBZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAOA;AAIA;;AA9CiB;AAAA;AAAA;;;;AAAA;AAAA;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACiDjB;;;;;AAYQ;;;AAqBA;;AAgBA;;;;AAaP;;;;ACzHA;AAED;AACA;AAEA;;ACPA;AAEA;AACE;;;;;;;;;;AAIA;;;;AAIA;;;;;;AAUA;;;;;;AAUA;;;;;;AAMA;;;;;;AAID;AAED;;;AAGC;AAED;AAIW;AACA;AACA;;AALT;AAGS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBV;AAED;AAGW;;AAFT;AAES;;;;;AAUV;AAED;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWD;AAED;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWD;AAED;AAC6B;AASC;;;;;AC9H9B;;;;;;;;;;;;;;;AAUE;;;;;AAQA;;;;;AASD;;ACpBD;AACA;AAEA;;AAAiE;;;AAEhE;AAED;;AACsE;AACpE;;AAGA;;;;;;;AAOM;;;;;AAwBA;;;;;AAgBA;;AAIA;AAyBN;AAIM;;;;AAiBA;AAIA;AAQA;;AAQA;AAIA;;AAAyB;;;AAIS;AAIlC;;;AAGP;;ACvJD;;AAEE;;;;;AAIF;;;;;AAMM;;AAAoC;AAAQ;;;AAAwB;;AACpE;;;AAA4C;;AAC5C;;;;;AAKA;;;;;AACA;;;AAAsD;;AAAsB;;;AAC5E;;;AAAkD;;;;;;AAClD;;;AAGJ;;;;;;;;AAQE;;;;;;;AAOE;;;AAAkD;;AAElD;;;;;AACA;;;;;AACA;;;;;AACA;;;AAAkD;;;;;;AAElD;;;;;AACA;;;;;AACA;;;AAAiD;AAAY;;;;AAE7D;;ACjDN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBC;AAED;;;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;;;;;AAEC;AAED;AAIA;AAIA;;;AAEC;AAED;;;;;AAEC;AAED;;;;;AAEC;AAED;;;AAEC;AAED;;;AAEC;AAED;;;AAEC;;AClED;AA8BA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AASA;AAOA;AAcA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;AAIA;;AC9GA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCC;;;"}